diff --git a/Build/Sources/Sass/_legacy.scss b/Build/Sources/Sass/_legacy.scss index f455ead7ef4b6bc4d59b0b7c383c7a3de5583833..a412c3edbba74a897937af0b7db8242a846b905b 100644 --- a/Build/Sources/Sass/_legacy.scss +++ b/Build/Sources/Sass/_legacy.scss @@ -52,18 +52,6 @@ $input-height-base: ($line-height-computed + ($padding-base-vertical * 2) + 2) ! display: none !important; } -// nav fallback -// todo add ".nav-item" and ".nav-link" classes to markup -.nav.nav-tabs { - > li:not(.nav-item) { - @extend .nav-item !optional; - - > a:not(.nav-link) { - @extend .nav-link !optional; - } - } -} - .page-header { padding: .625rem 1rem; margin: 2rem 0 1rem; diff --git a/Build/Sources/Sass/_minimal.scss b/Build/Sources/Sass/_minimal.scss index 70a650ba51477e0388350f29cdc83e3a33e71a36..1551ccae5340d6fe82eaef4274019a8793f01c62 100644 --- a/Build/Sources/Sass/_minimal.scss +++ b/Build/Sources/Sass/_minimal.scss @@ -37,7 +37,7 @@ @import "../../node_modules/bootstrap/scss/transitions"; @import "../../node_modules/bootstrap/scss/dropdown"; @import "../../node_modules/bootstrap/scss/button-group"; -@import "../../node_modules/bootstrap/scss/nav"; +// @import "../../node_modules/bootstrap/scss/nav"; @import "../../node_modules/bootstrap/scss/navbar"; // @import "../../node_modules/bootstrap/scss/card"; // @import "../../node_modules/bootstrap/scss/accordion"; @@ -102,4 +102,3 @@ @import "component/panel"; @import "component/table"; @import "component/simpletable"; -@import "component/tabs"; diff --git a/Build/Sources/Sass/backend.scss b/Build/Sources/Sass/backend.scss index 7e584764c169e27dd8a11b020d9540b22a441b9d..1fc8b62a7e1d382b456d92c0c724900d977bf335 100644 --- a/Build/Sources/Sass/backend.scss +++ b/Build/Sources/Sass/backend.scss @@ -71,7 +71,6 @@ @import "typo3/element_page_position"; @import "typo3/element_page_position_map"; @import "typo3/element_slider"; -@import "typo3/element_tab"; @import "typo3/element_tceforms"; @import "typo3/element_tree"; @import "typo3/element_uiblock"; diff --git a/Build/Sources/Sass/component/_elementbrowser.scss b/Build/Sources/Sass/component/_elementbrowser.scss index dcd410cefd12f73336d11d4b47d386624be5c25e..b6fdc5ce3cd2cec01c35a4687944b8274a69ba85 100644 --- a/Build/Sources/Sass/component/_elementbrowser.scss +++ b/Build/Sources/Sass/component/_elementbrowser.scss @@ -16,7 +16,7 @@ // </div> // </div> // <div class="element-browser-tabs"> -// <ul class="nav nav-tabs" role="tablist"> +// <ul class="nav nav-pills" role="tablist"> // <li class="active"><a href="#">Page 1</a></li> // <li class="active"><a href="#">Page 2</a></li> // <li class="active"><a href="#">Page 3</a></li> diff --git a/Build/Sources/Sass/component/_nav.scss b/Build/Sources/Sass/component/_nav.scss index c6f00fe53bb25528d7a1505d5896aafb8d249e5d..892ffa8e7e82b61dd24a54a46b20a28869fd37bb 100644 --- a/Build/Sources/Sass/component/_nav.scss +++ b/Build/Sources/Sass/component/_nav.scss @@ -1,9 +1,191 @@ // // Nav -// === -// -// Bugfixes for Bootstrap to support RTL // .nav { + --typo3-nav-link-padding-x: 1rem; + --typo3-nav-link-padding-y: .5rem; + --typo3-nav-link-font-size: var(--typo3-font-size); + --typo3-nav-link-font-weight: normal; + --typo3-nav-link-color: var(--typo3-text-color-link); + --typo3-nav-link-hover-color: var(--typo3-text-color-link); + --typo3-nav-link-disabled-color: var(--typo3-text-color-variant); + --typo3-nav-link-focusring-base-color: var(--typo3-nav-link-color); + display: flex; + gap: 1px; + flex-wrap: wrap; padding-inline: 0; + margin-bottom: 0; + list-style: none; + font-size: var(--typo3-nav-link-font-size); +} + +.nav-link { + display: block; + padding: var(--typo3-nav-link-padding-y) var(--typo3-nav-link-padding-x); + font-size: var(--typo3-nav-link-font-size); + font-weight: var(--typo3-nav-link-font-weight); + color: var(--typo3-nav-link-color); + background: none; + border: 0; + transition: + color .2s ease-in-out, + background-color .2s ease-in-out, + border-color .2s ease-in-out; + outline-offset: 0; + + &:hover, + &:focus { + color: var(--typo3-nav-link-hover-color); + text-decoration: underline; + } + + &:focus-visible { + outline: .25rem solid color-mix(in srgb, var(--typo3-nav-link-focusring-base-color), transparent 25%); + } + + // Disabled state lightens text + &.disabled, + &:disabled { + color: var(--typo3-nav-link-disabled-color); + pointer-events: none; + cursor: default; + } +} + +// +// Tabs +// +.nav-tabs { + --typo3-nav-tabs-color: var(--typo3-component-color); + --typo3-nav-tabs-bg: var(--typo3-component-bg); + --typo3-nav-tabs-border-color: color-mix(in srgb, var(--typo3-nav-tabs-bg), var(--typo3-nav-tabs-color) 15%); + --typo3-nav-tabs-border-width: var(--typo3-component-border-width); + --typo3-nav-tabs-border-radius: var(--typo3-component-border-radius); + position: relative; + gap: 2px 1px; + z-index: 1; + border-bottom: var(--typo3-nav-tabs-border-width) solid var(--typo3-nav-tabs-border-color); + + .nav-link { + --typo3-nav-tabs-link-state-color: initial; + --typo3-nav-tabs-link-state-bg: initial; + --typo3-nav-tabs-link-color: var(--typo3-nav-tabs-link-state-color, var(--typo3-nav-tabs-color)); + --typo3-nav-tabs-link-bg: var(--typo3-nav-tabs-link-state-bg, var(--typo3-nav-tabs-bg)); + --typo3-nav-tabs-link-border-color: color-mix(in srgb, var(--typo3-nav-tabs-link-bg), var(--typo3-nav-tabs-link-color) 15%); + --typo3-nav-tabs-link-active-color: var(--typo3-nav-tabs-color); + --typo3-nav-tabs-link-active-bg: var(--typo3-nav-tabs-bg); + --typo3-nav-tabs-link-danger-color: var(--typo3-surface-container-danger-text); + --typo3-nav-tabs-link-danger-bg: var(--typo3-surface-container-danger); + --typo3-nav-tabs-link-danger-active-color: var(--typo3-nav-tabs-link-active-color); + --typo3-nav-tabs-link-danger-active-bg: var(--typo3-nav-tabs-link-active-bg); + --typo3-nav-link-focusring-base-color: var(--typo3-nav-tabs-link-border-color); + position: relative; + color: var(--typo3-nav-tabs-link-color); + background-color: var(--typo3-nav-tabs-link-bg); + margin-bottom: calc(-1 * var(--typo3-nav-tabs-border-width)); + border: var(--typo3-nav-tabs-border-width) solid var(--typo3-nav-tabs-link-border-color); + border-start-start-radius: var(--typo3-nav-tabs-border-radius); + border-start-end-radius: var(--typo3-nav-tabs-border-radius); + + &:focus, + &:hover { + text-decoration: none; + isolation: isolate; + } + + &:hover { + background: color-mix(in srgb, var(--typo3-nav-tabs-link-bg), var(--typo3-nav-tabs-link-color) 6%); + } + } + + .nav-link.active, + .nav-item.show .nav-link { + &, + &:hover { + --typo3-nav-tabs-link-state-color: var(--typo3-nav-tabs-link-active-color); + --typo3-nav-tabs-link-state-bg: var(--typo3-nav-tabs-link-active-bg); + background-color: var(--typo3-nav-tabs-link-bg); + border-bottom-color: var(--typo3-nav-tabs-link-bg); + } + } + + .nav-item.has-validation-error .nav-link { + --typo3-nav-tabs-link-state-color: var(--typo3-nav-tabs-link-danger-color); + --typo3-nav-tabs-link-state-bg: var(--typo3-nav-tabs-link-danger-bg); + padding-inline-start: calc(var(--typo3-nav-link-padding-x) + 16px + .25rem); + + &.active { + --typo3-nav-tabs-link-state-color: var(--typo3-nav-tabs-link-danger-active-color); + --typo3-nav-tabs-link-state-bg: var(--typo3-nav-tabs-link-danger-active-bg); + } + + &:before, + &:after { + content: ''; + position: absolute; + top: 50%; + inset-inline: var(--typo3-nav-link-padding-x); + transform: translate(0, -50%); + border-radius: 50%; + width: 16px; + height: 16px; + } + + &:before { + background-color: var(--typo3-state-danger-bg); + } + + &:after { + background-color: var(--typo3-state-danger-color); + mask-repeat: no-repeat; + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cg fill='%23fff'%3e%3ccircle cx='8' cy='11' r='1'/%3e%3cpath d='M8.5 9h-1l-.445-4.45A.5.5 0 0 1 7.552 4h.896a.5.5 0 0 1 .497.55L8.5 9z'/%3e%3c/g%3e%3c/svg%3e"); + mask-position: center center; + mask-size: contain; + } + } +} + +// +// Pills +// +.nav-pills { + --typo3-nav-pills-border-radius: var(--typo3-component-border-radius); + --typo3-nav-pills-link-active-color: var(--typo3-state-primary-color); + --typo3-nav-pills-link-active-bg: var(--typo3-state-primary-bg); + + .nav-link { + border-radius: var(--typo3-nav-pills-border-radius); + } + + .nav-link.active, + .show > .nav-link { + --typo3-nav-link-focusring-base-color: var(--typo3-nav-pills-link-active-bg); + background-color: var(--typo3-nav-pills-link-active-bg); + color: var(--typo3-nav-pills-link-active-color); + text-decoration: none; + } +} + +// +// Tabs +// +.tab-content { + > .tab-pane { + display: none; + } + + > .active { + display: block; + } +} + +.tab-pane { + > .panel { + --typo3-panel-border-radius-top: 0; + } + + > .visually-hidden:first-child + .form-section, + > *:first-child { + border-top: none; + } } diff --git a/Build/Sources/Sass/component/_tabs.scss b/Build/Sources/Sass/component/_tabs.scss deleted file mode 100644 index 141d1e88049be99dbfde3e3e3e5177a7f3ae39ac..0000000000000000000000000000000000000000 --- a/Build/Sources/Sass/component/_tabs.scss +++ /dev/null @@ -1,15 +0,0 @@ -// -// Tab Pane -// -.tab-pane { - > .panel { - --typo3-panel-bg: #{$nav-tabs-active-link-bg}; - --typo3-panel-border-color: #{$nav-tabs-active-link-hover-border-color}; - --typo3-panel-border-radius: 0; - } - - > .visually-hidden:first-child + .form-section, - > *:first-child { - border-top: none; - } -} diff --git a/Build/Sources/Sass/component/forms/_form-validation.scss b/Build/Sources/Sass/component/forms/_form-validation.scss index 95ae13b25a02e14a104b4ad30bf7d8355440516c..3af85dc61e3c6d48fbf0ed7f6f90640dbed574bf 100644 --- a/Build/Sources/Sass/component/forms/_form-validation.scss +++ b/Build/Sources/Sass/component/forms/_form-validation.scss @@ -1,21 +1,20 @@ // // Form Validation // -.is-invalid, -.has-error { - --typo3-input-color: var(--typo3-surface-container-danger-text); - --typo3-input-bg: var(--typo3-surface-container-danger); +.has-change { + --typo3-input-color: var(--typo3-surface-container-info-text); + --typo3-input-bg: var(--typo3-surface-container-info); --typo3-input-group-addon-bg: color-mix(in srgb, var(--typo3-input-bg), var(--typo3-input-color) 10%); - --typo3-input-border-color: var(--typo3-state-danger-border-color); + --typo3-input-border-color: var(--typo3-state-info-border-color); --typo3-input-hover-color: var(--typo3-input-color); --typo3-input-hover-bg: var(--typo3-input-bg); - --typo3-input-hover-border-color: var(--typo3-state-danger-hover-border-color); + --typo3-input-hover-border-color: var(--typo3-state-info-hover-border-color); --typo3-input-focus-color: var(--typo3-input-color); --typo3-input-focus-bg: var(--typo3-input-bg); - --typo3-input-focus-border-color: var(--typo3-state-danger-focus-border-color); + --typo3-input-focus-border-color: var(--typo3-state-info-focus-border-color); .form-label:before { - @include icon-background($icon-actions-exclamation-circle, var(--typo3-text-color-danger)); + @include icon-background($icon-actions-exclamation-circle, var(--typo3-text-color-info)); width: calc(16 / 12 * 1em); height: calc(16 / 12 * 1em); } @@ -41,39 +40,40 @@ } } -.has-change { - --typo3-input-color: var(--typo3-surface-container-info-text); - --typo3-input-bg: var(--typo3-surface-container-info); +.has-warning { + --typo3-input-color: var(--typo3-surface-container-warning-text); + --typo3-input-bg: var(--typo3-surface-container-warning); --typo3-input-group-addon-bg: color-mix(in srgb, var(--typo3-input-bg), var(--typo3-input-color) 10%); - --typo3-input-border-color: var(--typo3-state-info-border-color); + --typo3-input-border-color: var(--typo3-state-warning-border-color); --typo3-input-hover-color: var(--typo3-input-color); --typo3-input-hover-bg: var(--typo3-input-bg); - --typo3-input-hover-border-color: var(--typo3-state-info-hover-border-color); + --typo3-input-hover-border-color: var(--typo3-state-warning-hover-border-color); --typo3-input-focus-color: var(--typo3-input-color); --typo3-input-focus-bg: var(--typo3-input-bg); - --typo3-input-focus-border-color: var(--typo3-state-info-focus-border-color); + --typo3-input-focus-border-color: var(--typo3-state-warning-focus-border-color); .form-label:before { - @include icon-background($icon-actions-exclamation-circle, var(--typo3-text-color-info)); + @include icon-background($icon-actions-exclamation-triangle, var(--typo3-text-color-warning)); width: calc(16 / 12 * 1em); height: calc(16 / 12 * 1em); } } -.has-warning { - --typo3-input-color: var(--typo3-surface-container-warning-text); - --typo3-input-bg: var(--typo3-surface-container-warning); +.is-invalid, +.has-error { + --typo3-input-color: var(--typo3-surface-container-danger-text); + --typo3-input-bg: var(--typo3-surface-container-danger); --typo3-input-group-addon-bg: color-mix(in srgb, var(--typo3-input-bg), var(--typo3-input-color) 10%); - --typo3-input-border-color: var(--typo3-state-warning-border-color); + --typo3-input-border-color: var(--typo3-state-danger-border-color); --typo3-input-hover-color: var(--typo3-input-color); --typo3-input-hover-bg: var(--typo3-input-bg); - --typo3-input-hover-border-color: var(--typo3-state-warning-hover-border-color); + --typo3-input-hover-border-color: var(--typo3-state-danger-hover-border-color); --typo3-input-focus-color: var(--typo3-input-color); --typo3-input-focus-bg: var(--typo3-input-bg); - --typo3-input-focus-border-color: var(--typo3-state-warning-focus-border-color); + --typo3-input-focus-border-color: var(--typo3-state-danger-focus-border-color); .form-label:before { - @include icon-background($icon-actions-exclamation-triangle, var(--typo3-text-color-warning)); + @include icon-background($icon-actions-exclamation-circle, var(--typo3-text-color-danger)); width: calc(16 / 12 * 1em); height: calc(16 / 12 * 1em); } diff --git a/Build/Sources/Sass/typo3/_element_tab.scss b/Build/Sources/Sass/typo3/_element_tab.scss deleted file mode 100644 index f9b43cae5d16283437c94588bc1e3ac66212d6e7..0000000000000000000000000000000000000000 --- a/Build/Sources/Sass/typo3/_element_tab.scss +++ /dev/null @@ -1,71 +0,0 @@ -// -// Tab menu -// -.nav-tabs { - border-radius: $border-radius $border-radius 0 0; - background-color: darken($nav-tabs-active-link-bg, 5%); - - > li { - + li { - margin-inline-start: 2px; - } - - > a.nav-link { - margin-inline-end: 0; - - @include transition(all .25s ease-in-out); - - &:focus, - &:hover { - border-color: $nav-tabs-link-hover-border-color $nav-tabs-link-hover-border-color $nav-tabs-border-color; - background: $nav-tabs-link-hover-bg; - } - - &.active { - border: 1px solid $nav-tabs-active-link-hover-border-color; - border-bottom-color: $nav-tabs-active-link-bg; - background-color: $nav-tabs-active-link-bg; - } - } - - &[class*='has-'] > a.nav-link { - &:before { - @include transition(all .25s ease-in-out); - } - } - // Has error state - &.has-validation-error { - > a.nav-link { - background-color: $danger; - border-color: darken($danger, 10%); - color: #fff; - - &:focus, - &:hover { - color: #fff; - background-color: lighten($danger, 5%); - border-color: darken($danger, 5%); - } - - &:before { - @include icon-background($icon-actions-exclamation-circle, $white); - border-radius: 50%; - width: 14px; - height: 14px; - } - - &.active { - color: inherit; - border: 1px solid $nav-tabs-active-link-hover-border-color; - border-bottom-color: $nav-tabs-active-link-bg; - background-color: $nav-tabs-active-link-bg; - - &:before { - background-color: $danger; - color: #fff; - } - } - } - } - } -} diff --git a/Build/Sources/Sass/typo3/_element_tceforms.scss b/Build/Sources/Sass/typo3/_element_tceforms.scss index e6e5ccba6553fd53ca88b91144eba274b1c7d840..ad0466663888a40c9ce94be277c56ea3d8d7c2f3 100644 --- a/Build/Sources/Sass/typo3/_element_tceforms.scss +++ b/Build/Sources/Sass/typo3/_element_tceforms.scss @@ -1,9 +1,12 @@ // // TCEforms // - .typo3-TCEforms { width: 100%; + + .nav-tabs { + --typo3-nav-tabs-bg: var(--typo3-surface-container-low); + } } .sortableHandle { diff --git a/Build/Sources/Sass/typo3/_main_form.scss b/Build/Sources/Sass/typo3/_main_form.scss index 8d8c3af81a736a1708b5bc8461fe83fd1dbd4169..b1eec0cc70a0a95e77d0b54930ab5840ee98c06f 100644 --- a/Build/Sources/Sass/typo3/_main_form.scss +++ b/Build/Sources/Sass/typo3/_main_form.scss @@ -100,7 +100,7 @@ textarea { .multi-record-selection-actions-wrapper { // Calculation of min height for the multi record selection actions, based on the fact that btn-sm is used - min-height: floor(2px + ($padding-small-vertical * 2) + ($font-size-small * $line-height-small)); + min-height: floor(.125rem + ($padding-small-vertical * 2) + ($font-size-small * $line-height-small)); // Consistent space between actions and listing margin: .5rem 0; } diff --git a/Build/Sources/Sass/variables/_main.scss b/Build/Sources/Sass/variables/_main.scss index 4abfe61800a6b5876b631e4a2a9bbd3736c54aef..b22b3b733bab18e3632a09a09e0b5fe2fc853ab2 100644 --- a/Build/Sources/Sass/variables/_main.scss +++ b/Build/Sources/Sass/variables/_main.scss @@ -105,10 +105,10 @@ $link-hover-decoration: underline; // Typography $font-family-sans-serif: Verdana, Arial, Helvetica, sans-serif; $font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; -$font-size-root: 16px; -$font-size-base: 12px; -$font-size-large: 16px; -$font-size-small: 11px; +$font-size-root: 1rem; +$font-size-base: .75rem; +$font-size-large: 1rem; +$font-size-small: .6875rem; $h1-font-size: 28px; $h2-font-size: 20px; $h3-font-size: 16px; @@ -119,14 +119,14 @@ $headings-margin-bottom: calc(var(--typo3-spacing) / 2); $paragraph-margin-bottom: var(--typo3-spacing); // Components -$padding-base-vertical: 6px; -$padding-base-horizontal: 6px; -$padding-large-vertical: 12px; -$padding-large-horizontal: 12px; -$padding-small-vertical: 4px; -$padding-small-horizontal: 4px; -$padding-xs-vertical: 2px; -$padding-xs-horizontal: 4px; +$padding-base-vertical: .375rem; +$padding-base-horizontal: .375rem; +$padding-large-vertical: .75rem; +$padding-large-horizontal: .75rem; +$padding-small-vertical: .25rem; +$padding-small-horizontal: .25rem; +$padding-xs-vertical: .125rem; +$padding-xs-horizontal: .25rem; $line-height-large: 1.3333333; $line-height-small: 1.5; $border-radius: .125rem; @@ -160,24 +160,6 @@ $navbar-inverse-link-active-bg: $navbar-inverse-link-hover-bg; $navbar-inverse-link-disabled-color: darken($navbar-inverse-color, 30%); $navbar-inverse-link-disabled-bg: darken($navbar-inverse-bg, 20%); -// Navs -$nav-open-link-hover-color: #fff; -$nav-link-padding-y: 6px; -$nav-link-padding-x: 12px; -$nav-disabled-link-hover-color: $gray-700; - -// Tabs -$nav-tabs-border-color: #ccc; -$nav-tabs-link-hover-bg: darken(#fafafa, 10%); -$nav-tabs-link-hover-border-color: $gray-300; -$nav-tabs-active-link-bg: #fafafa; -$nav-tabs-active-link-hover-bg: $body-bg; -$nav-tabs-active-link-hover-color: #000; -$nav-tabs-active-link-hover-border-color: #ccc; -$nav-tabs-active-link-hover-bg: darken(#fafafa, 5%); -$nav-tabs-justified-link-border-color: #ccc; -$nav-tabs-justified-active-link-border-color: $nav-tabs-border-color; - // Panels $panel-default-border: #ccc; $panel-default-heading-bg: #ddd; diff --git a/Build/Sources/Sass/workspace.scss b/Build/Sources/Sass/workspace.scss index bd75b2d124d0d490cc06fa48af981182d3bed782..415d5b4159b3f20cd866e46711d55f97779e63af 100644 --- a/Build/Sources/Sass/workspace.scss +++ b/Build/Sources/Sass/workspace.scss @@ -77,40 +77,6 @@ $workspace-topbar-logo-width: 22px; vertical-align: top; } -.typo3-topbar-tabs { - margin-inline-end: 2em; - float: var(--typo3-position-start); - position: relative; - - .nav-tabs { - overflow: hidden; - border-radius: 2px; - border: none; - background: none; - - > li { - + li { - margin-inline-start: 0; - border-inline-start: 1px solid rgba(0, 0, 0, .5); - } - margin-bottom: 0; - - &.active > a { - background-color: #fff; - } - - > a { - padding-top: 0; - padding-bottom: 0; - line-height: $workspace-topbar-line-height; - background-color: #ccc; - border: none !important; - border-radius: 0; - } - } - } -} - .typo3-topbar-workspace-actions { clear: none; float: var(--typo3-position-start); diff --git a/Build/Sources/TypeScript/backend/form-engine-validation.ts b/Build/Sources/TypeScript/backend/form-engine-validation.ts index a2811b669a0d1c2d87eec583203ac14057bf0d98..552118881ae454c37254958aafab0a5d77a21444 100644 --- a/Build/Sources/TypeScript/backend/form-engine-validation.ts +++ b/Build/Sources/TypeScript/backend/form-engine-validation.ts @@ -613,7 +613,7 @@ export default (function() { const id = pane.id; formEngineFormElement - .querySelector('a[href="#' + id + '"]') + .querySelector('[data-bs-target="#' + id + '"]') .closest('.t3js-tabmenu-item') .classList.toggle('has-validation-error', !isValid); }); diff --git a/Build/Sources/TypeScript/backend/tabs.ts b/Build/Sources/TypeScript/backend/tabs.ts index cc19b3dec3bd60f11bb86e43d863bacf6aa0f38d..f77803c4a76894d87fc97847f664e1e701547e24 100644 --- a/Build/Sources/TypeScript/backend/tabs.ts +++ b/Build/Sources/TypeScript/backend/tabs.ts @@ -27,14 +27,17 @@ class Tabs { tabContainers.forEach((tabContainer: HTMLElement): void => { const currentActiveTab = Tabs.receiveActiveTab(tabContainer.id); if (currentActiveTab) { - new Tab(document.querySelector('a[href="' + currentActiveTab + '"]')).show(); + const tabButton = document.querySelector('[data-bs-target="#' + currentActiveTab + '"]'); + if (tabButton) { + new Tab(tabButton).show(); + } } const storeLastActiveTab = tabContainer.dataset.storeLastTab === '1'; if (storeLastActiveTab) { tabContainer.addEventListener('show.bs.tab', (e: Event): void => { const id = (e.currentTarget as HTMLElement).id; - const tabTarget = (e.target as HTMLAnchorElement).hash; + const tabTarget = (e.target as HTMLButtonElement).dataset.bsTarget.slice(1); Tabs.storeActiveTab(id, tabTarget); }); } diff --git a/Build/Sources/TypeScript/workspaces/renderable/record-information.ts b/Build/Sources/TypeScript/workspaces/renderable/record-information.ts index e6db035010d5ca67e1ba9c6f5447a356c61b0252..95b7649b257c137c3139ca46d68339887b1a7d93 100644 --- a/Build/Sources/TypeScript/workspaces/renderable/record-information.ts +++ b/Build/Sources/TypeScript/workspaces/renderable/record-information.ts @@ -90,14 +90,17 @@ export class RecordInformationElement extends LitElement { protected renderNavLink(text: string, target: string, count: number = 0) { return html` <li class="nav-item" role="presentation"> - <a class="nav-link" - data-bs-toggle="tab" - href="${target}" - role="tab" - aria-controls="${target}"> + <button + type="button" + class="nav-link" + data-bs-toggle="tab" + data-bs-target="${target}" + aria-controls="${target}" + role="tab" + > ${text} ${count > 0 ? html`<span class="badge">${count}</span>` : nothing} - </a> + </button> </li> `; } diff --git a/typo3/sysext/adminpanel/Resources/Public/Css/adminpanel.css b/typo3/sysext/adminpanel/Resources/Public/Css/adminpanel.css index e51f3413d689a1c3b5d33bc9ff0d14fb76f2c282..eb29a824dfaa7a31b76fb5532200292280b54585 100644 --- a/typo3/sysext/adminpanel/Resources/Public/Css/adminpanel.css +++ b/typo3/sysext/adminpanel/Resources/Public/Css/adminpanel.css @@ -12,7 +12,7 @@ */ body.typo3-adminPanel-noscroll{overflow:hidden} #TSFE_ADMIN_PANEL_FORM.typo3-kidjls9dksoje.typo3-adminPanel{z-index:99990} -#TSFE_ADMIN_PANEL_FORM.typo3-kidjls9dksoje.typo3-adminPanel :not([class*=sf-]){background:0 0;border:0;box-shadow:none;box-sizing:border-box;vertical-align:baseline;letter-spacing:normal;width:auto;height:auto;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:12px;font-weight:400;white-space:normal;margin:0;padding:0} +#TSFE_ADMIN_PANEL_FORM.typo3-kidjls9dksoje.typo3-adminPanel :not([class*=sf-]){background:0 0;border:0;box-shadow:none;box-sizing:border-box;vertical-align:baseline;letter-spacing:normal;width:auto;height:auto;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:.75rem;font-weight:400;white-space:normal;margin:0;padding:0} #TSFE_ADMIN_PANEL_FORM.typo3-kidjls9dksoje.typo3-adminPanel :not([class*=sf-]),#TSFE_ADMIN_PANEL_FORM.typo3-kidjls9dksoje.typo3-adminPanel :not([class*=sf-]):active,#TSFE_ADMIN_PANEL_FORM.typo3-kidjls9dksoje.typo3-adminPanel :not([class*=sf-]):focus,#TSFE_ADMIN_PANEL_FORM.typo3-kidjls9dksoje.typo3-adminPanel :not([class*=sf-]):hover{outline:0} #TSFE_ADMIN_PANEL_FORM.typo3-kidjls9dksoje.typo3-adminPanel :root{--icon-color-primary:currentColor;--icon-size-small:16px;--icon-size-medium:32px;--icon-size-large:48px;--icon-size-mega:64px;--icon-unify-modifier:0.86;--icon-opacity-disabled:0.5} #TSFE_ADMIN_PANEL_FORM.typo3-kidjls9dksoje.typo3-adminPanel .icon{position:relative;display:inline-flex;overflow:hidden;white-space:nowrap;color:var(--icon-color-primary);height:var(--icon-size,1em);width:var(--icon-size,1em);line-height:var(--icon-size,1em);flex-shrink:0} @@ -219,9 +219,9 @@ body.typo3-adminPanel-noscroll{overflow:hidden} #TSFE_ADMIN_PANEL_FORM.typo3-kidjls9dksoje.typo3-adminPanel .typo3-adminPanel-sql-query-ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis} #TSFE_ADMIN_PANEL_FORM.typo3-kidjls9dksoje.typo3-adminPanel>.typo3-adminPanel-sql-panel{border-bottom:1px dashed #d7d7d7} #TSFE_ADMIN_PANEL_FORM.typo3-kidjls9dksoje.typo3-adminPanel>.typo3-adminPanel-sql-panel:nth-child(2n+1){background:#f5f5f5} -#TSFE_ADMIN_PANEL_FORM.typo3-kidjls9dksoje.typo3-adminPanel .typo3-adminPanel-bar{display:flex;height:auto;font-size:11px} +#TSFE_ADMIN_PANEL_FORM.typo3-kidjls9dksoje.typo3-adminPanel .typo3-adminPanel-bar{display:flex;height:auto;font-size:.6875rem} #TSFE_ADMIN_PANEL_FORM.typo3-kidjls9dksoje.typo3-adminPanel .typo3-adminPanel-bar .typo3-adminPanel-bar-value{display:flex;flex-direction:column;justify-content:center;color:#1e1e1e;text-align:left;white-space:nowrap;background-color:#fff;transition:all .5s ease;width:0} -#TSFE_ADMIN_PANEL_FORM.typo3-kidjls9dksoje.typo3-adminPanel .typo3-adminPanel-sql-statement{margin:1em 0;padding:.75em 1em;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;background:#f2f2f2;font-size:11px} +#TSFE_ADMIN_PANEL_FORM.typo3-kidjls9dksoje.typo3-adminPanel .typo3-adminPanel-sql-statement{margin:1em 0;padding:.75em 1em;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;background:#f2f2f2;font-size:.6875rem} #TSFE_ADMIN_PANEL_FORM.typo3-kidjls9dksoje.typo3-adminPanel .typo3-adminPanel-sql-backtrace{margin:1em 0} #TSFE_ADMIN_PANEL_FORM.typo3-kidjls9dksoje.typo3-adminPanel .typo3-adminPanel-sql-backtrace-item{margin:1px 0;padding:.75em 1em;background-color:#f2f2f2;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;word-break:break-word} #TSFE_ADMIN_PANEL_FORM.typo3-kidjls9dksoje.typo3-adminPanel .typo3-adminPanel-sql-backtrace-item-file,#TSFE_ADMIN_PANEL_FORM.typo3-kidjls9dksoje.typo3-adminPanel .typo3-adminPanel-sql-backtrace-item-function{display:block} diff --git a/typo3/sysext/backend/Resources/Private/Partials/ModuleTemplate/Tabs.html b/typo3/sysext/backend/Resources/Private/Partials/ModuleTemplate/Tabs.html index 521512df56fc0e427cc77f47deee112d936cfe62..46abcf19652bf8bb9f5700d28ec9db733ef8eab3 100644 --- a/typo3/sysext/backend/Resources/Private/Partials/ModuleTemplate/Tabs.html +++ b/typo3/sysext/backend/Resources/Private/Partials/ModuleTemplate/Tabs.html @@ -8,7 +8,15 @@ <f:for each="{items}" as="item" iteration="iteration"> <f:if condition="{item.content}"> <li role="presentation" class="t3js-tabmenu-item nav-item"> - <a href="#{id}-{iteration.cycle}" class="nav-link {f:if(condition: '{iteration.cycle} == {defaultTabIndex}', then: ' active')}" title="{item.linkTitle}" aria-controls="{id}-{iteration.cycle}" role="tab" data-bs-toggle="tab"> + <button + type="button" + class="nav-link {f:if(condition: '{iteration.cycle} == {defaultTabIndex}', then: ' active')}" + title="{item.linkTitle}" + data-bs-toggle="tab" + data-bs-target="#{id}-{iteration.cycle}" + aria-controls="{id}-{iteration.cycle}" + role="tab" + > <f:if condition="{item.icon}"> <f:format.raw>{item.icon}</f:format.raw> </f:if> @@ -19,7 +27,7 @@ <f:if condition="{item.stateIcon}"> <f:render partial="ModuleTemplate/StateIcon" arguments="{item: item}" /> </f:if> - </a> + </button> </li> </f:if> </f:for> diff --git a/typo3/sysext/backend/Resources/Public/Css/backend.css b/typo3/sysext/backend/Resources/Public/Css/backend.css index 33f818c8ce249e926a9a8d812479845aa059b4d0..131c9007986a5f4969a6ac5083765314afbf4e8d 100644 --- a/typo3/sysext/backend/Resources/Public/Css/backend.css +++ b/typo3/sysext/backend/Resources/Public/Css/backend.css @@ -11,7 +11,7 @@ * The TYPO3 project - inspiring people to share! */ @charset "UTF-8"; -:root,[data-bs-theme=light]{--bs-blue:#05c;--bs-indigo:#6610f2;--bs-purple:#5e4db2;--bs-pink:#c6398f;--bs-red:#d13a2e;--bs-orange:#ee6d11;--bs-yellow:#fc3;--bs-green:#247554;--bs-teal:#abdced;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:rgb(115, 115, 115);--bs-gray-dark:rgb(51, 51, 51);--bs-gray-100:rgb(245, 245, 245);--bs-gray-200:rgb(238, 238, 238);--bs-gray-300:rgb(215, 215, 215);--bs-gray-400:rgb(204, 204, 204);--bs-gray-500:rgb(187, 187, 187);--bs-gray-600:rgb(115, 115, 115);--bs-gray-700:rgb(90, 90, 90);--bs-gray-800:rgb(51, 51, 51);--bs-gray-900:rgb(30, 30, 30);--bs-primary:#05c;--bs-secondary:rgb(115, 115, 115);--bs-success:#247554;--bs-info:#abdced;--bs-warning:#fc3;--bs-danger:#d13a2e;--bs-light:rgb(245, 245, 245);--bs-default:rgb(245, 245, 245);--bs-notice:rgb(51, 51, 51);--bs-dark:rgb(30, 30, 30);--bs-primary-rgb:0,85,204;--bs-secondary-rgb:115,115,115;--bs-success-rgb:36,117,84;--bs-info-rgb:171,220,237;--bs-warning-rgb:255,204,51;--bs-danger-rgb:209,58,46;--bs-light-rgb:245,245,245;--bs-default-rgb:245,245,245;--bs-notice-rgb:51,51,51;--bs-dark-rgb:30,30,30;--bs-primary-text-emphasis:#002252;--bs-secondary-text-emphasis:#2e2e2e;--bs-success-text-emphasis:#0e2f22;--bs-info-text-emphasis:#44585f;--bs-warning-text-emphasis:#665214;--bs-danger-text-emphasis:#541712;--bs-light-text-emphasis:rgb(90, 90, 90);--bs-dark-text-emphasis:rgb(90, 90, 90);--bs-primary-bg-subtle:#ccddf5;--bs-secondary-bg-subtle:#e3e3e3;--bs-success-bg-subtle:#d3e3dd;--bs-info-bg-subtle:#eef8fb;--bs-warning-bg-subtle:#fff5d6;--bs-danger-bg-subtle:#f6d8d5;--bs-light-bg-subtle:#fafafa;--bs-dark-bg-subtle:rgb(204, 204, 204);--bs-primary-border-subtle:#99bbeb;--bs-secondary-border-subtle:#c7c7c7;--bs-success-border-subtle:#a7c8bb;--bs-info-border-subtle:#ddf1f8;--bs-warning-border-subtle:#ffebad;--bs-danger-border-subtle:#edb0ab;--bs-light-border-subtle:rgb(238, 238, 238);--bs-dark-border-subtle:rgb(187, 187, 187);--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-font-sans-serif:Verdana,Arial,Helvetica,sans-serif;--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-root-font-size:16px;--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:0.75rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#000;--bs-body-color-rgb:0,0,0;--bs-body-bg:#fff;--bs-body-bg-rgb:255,255,255;--bs-emphasis-color:#000;--bs-emphasis-color-rgb:0,0,0;--bs-secondary-color:rgba(0, 0, 0, 0.75);--bs-secondary-color-rgb:0,0,0;--bs-secondary-bg:rgb(238, 238, 238);--bs-secondary-bg-rgb:238,238,238;--bs-tertiary-color:rgba(0, 0, 0, 0.5);--bs-tertiary-color-rgb:0,0,0;--bs-tertiary-bg:rgb(245, 245, 245);--bs-tertiary-bg-rgb:245,245,245;--bs-heading-color:inherit;--bs-link-color:#212424;--bs-link-color-rgb:33,36,36;--bs-link-decoration:none;--bs-link-hover-color:#1a1d1d;--bs-link-hover-color-rgb:26,29,29;--bs-link-hover-decoration:underline;--bs-code-color:#c6398f;--bs-highlight-color:#000;--bs-highlight-bg:#fff5d6;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:rgb(215, 215, 215);--bs-border-color-translucent:rgba(0, 0, 0, 0.175);--bs-border-radius:0.125rem;--bs-border-radius-sm:0.125rem;--bs-border-radius-lg:0.125rem;--bs-border-radius-xl:1rem;--bs-border-radius-xxl:2rem;--bs-border-radius-2xl:var(--bs-border-radius-xxl);--bs-border-radius-pill:50rem;--bs-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-box-shadow-sm:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-box-shadow-lg:0 1rem 3rem rgba(0, 0, 0, 0.175);--bs-box-shadow-inset:inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-focus-ring-width:0.25rem;--bs-focus-ring-opacity:0.25;--bs-focus-ring-color:rgba(0, 85, 204, 0.25);--bs-form-valid-color:#247554;--bs-form-valid-border-color:#247554;--bs-form-invalid-color:#d13a2e;--bs-form-invalid-border-color:#d13a2e} +:root,[data-bs-theme=light]{--bs-blue:#05c;--bs-indigo:#6610f2;--bs-purple:#5e4db2;--bs-pink:#c6398f;--bs-red:#d13a2e;--bs-orange:#ee6d11;--bs-yellow:#fc3;--bs-green:#247554;--bs-teal:#abdced;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:rgb(115, 115, 115);--bs-gray-dark:rgb(51, 51, 51);--bs-gray-100:rgb(245, 245, 245);--bs-gray-200:rgb(238, 238, 238);--bs-gray-300:rgb(215, 215, 215);--bs-gray-400:rgb(204, 204, 204);--bs-gray-500:rgb(187, 187, 187);--bs-gray-600:rgb(115, 115, 115);--bs-gray-700:rgb(90, 90, 90);--bs-gray-800:rgb(51, 51, 51);--bs-gray-900:rgb(30, 30, 30);--bs-primary:#05c;--bs-secondary:rgb(115, 115, 115);--bs-success:#247554;--bs-info:#abdced;--bs-warning:#fc3;--bs-danger:#d13a2e;--bs-light:rgb(245, 245, 245);--bs-default:rgb(245, 245, 245);--bs-notice:rgb(51, 51, 51);--bs-dark:rgb(30, 30, 30);--bs-primary-rgb:0,85,204;--bs-secondary-rgb:115,115,115;--bs-success-rgb:36,117,84;--bs-info-rgb:171,220,237;--bs-warning-rgb:255,204,51;--bs-danger-rgb:209,58,46;--bs-light-rgb:245,245,245;--bs-default-rgb:245,245,245;--bs-notice-rgb:51,51,51;--bs-dark-rgb:30,30,30;--bs-primary-text-emphasis:#002252;--bs-secondary-text-emphasis:#2e2e2e;--bs-success-text-emphasis:#0e2f22;--bs-info-text-emphasis:#44585f;--bs-warning-text-emphasis:#665214;--bs-danger-text-emphasis:#541712;--bs-light-text-emphasis:rgb(90, 90, 90);--bs-dark-text-emphasis:rgb(90, 90, 90);--bs-primary-bg-subtle:#ccddf5;--bs-secondary-bg-subtle:#e3e3e3;--bs-success-bg-subtle:#d3e3dd;--bs-info-bg-subtle:#eef8fb;--bs-warning-bg-subtle:#fff5d6;--bs-danger-bg-subtle:#f6d8d5;--bs-light-bg-subtle:#fafafa;--bs-dark-bg-subtle:rgb(204, 204, 204);--bs-primary-border-subtle:#99bbeb;--bs-secondary-border-subtle:#c7c7c7;--bs-success-border-subtle:#a7c8bb;--bs-info-border-subtle:#ddf1f8;--bs-warning-border-subtle:#ffebad;--bs-danger-border-subtle:#edb0ab;--bs-light-border-subtle:rgb(238, 238, 238);--bs-dark-border-subtle:rgb(187, 187, 187);--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-font-sans-serif:Verdana,Arial,Helvetica,sans-serif;--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-root-font-size:1rem;--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:0.75rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#000;--bs-body-color-rgb:0,0,0;--bs-body-bg:#fff;--bs-body-bg-rgb:255,255,255;--bs-emphasis-color:#000;--bs-emphasis-color-rgb:0,0,0;--bs-secondary-color:rgba(0, 0, 0, 0.75);--bs-secondary-color-rgb:0,0,0;--bs-secondary-bg:rgb(238, 238, 238);--bs-secondary-bg-rgb:238,238,238;--bs-tertiary-color:rgba(0, 0, 0, 0.5);--bs-tertiary-color-rgb:0,0,0;--bs-tertiary-bg:rgb(245, 245, 245);--bs-tertiary-bg-rgb:245,245,245;--bs-heading-color:inherit;--bs-link-color:#212424;--bs-link-color-rgb:33,36,36;--bs-link-decoration:none;--bs-link-hover-color:#1a1d1d;--bs-link-hover-color-rgb:26,29,29;--bs-link-hover-decoration:underline;--bs-code-color:#c6398f;--bs-highlight-color:#000;--bs-highlight-bg:#fff5d6;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:rgb(215, 215, 215);--bs-border-color-translucent:rgba(0, 0, 0, 0.175);--bs-border-radius:0.125rem;--bs-border-radius-sm:0.125rem;--bs-border-radius-lg:0.125rem;--bs-border-radius-xl:1rem;--bs-border-radius-xxl:2rem;--bs-border-radius-2xl:var(--bs-border-radius-xxl);--bs-border-radius-pill:50rem;--bs-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-box-shadow-sm:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-box-shadow-lg:0 1rem 3rem rgba(0, 0, 0, 0.175);--bs-box-shadow-inset:inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-focus-ring-width:0.25rem;--bs-focus-ring-opacity:0.25;--bs-focus-ring-color:rgba(0, 85, 204, 0.25);--bs-form-valid-color:#247554;--bs-form-valid-border-color:#247554;--bs-form-invalid-color:#d13a2e;--bs-form-invalid-border-color:#d13a2e} [data-bs-theme=dark]{color-scheme:dark;--bs-body-color:rgb(215, 215, 215);--bs-body-color-rgb:215,215,215;--bs-body-bg:rgb(30, 30, 30);--bs-body-bg-rgb:30,30,30;--bs-emphasis-color:#fff;--bs-emphasis-color-rgb:255,255,255;--bs-secondary-color:rgba(215, 215, 215, 0.75);--bs-secondary-color-rgb:215,215,215;--bs-secondary-bg:rgb(51, 51, 51);--bs-secondary-bg-rgb:51,51,51;--bs-tertiary-color:rgba(215, 215, 215, 0.5);--bs-tertiary-color-rgb:215,215,215;--bs-tertiary-bg:#292929;--bs-tertiary-bg-rgb:41,41,41;--bs-primary-text-emphasis:#6699e0;--bs-secondary-text-emphasis:#ababab;--bs-success-text-emphasis:#7cac98;--bs-info-text-emphasis:#cdeaf4;--bs-warning-text-emphasis:#ffe085;--bs-danger-text-emphasis:#e38982;--bs-light-text-emphasis:rgb(245, 245, 245);--bs-dark-text-emphasis:rgb(215, 215, 215);--bs-primary-bg-subtle:#001129;--bs-secondary-bg-subtle:#171717;--bs-success-bg-subtle:#071711;--bs-info-bg-subtle:#222c2f;--bs-warning-bg-subtle:#33290a;--bs-danger-bg-subtle:#2a0c09;--bs-light-bg-subtle:rgb(51, 51, 51);--bs-dark-bg-subtle:#1a1a1a;--bs-primary-border-subtle:#00337a;--bs-secondary-border-subtle:#454545;--bs-success-border-subtle:#164632;--bs-info-border-subtle:#67848e;--bs-warning-border-subtle:#997a1f;--bs-danger-border-subtle:#7d231c;--bs-light-border-subtle:rgb(90, 90, 90);--bs-dark-border-subtle:rgb(51, 51, 51);--bs-heading-color:inherit;--bs-link-color:#6699e0;--bs-link-hover-color:#85ade6;--bs-link-color-rgb:102,153,224;--bs-link-hover-color-rgb:133,173,230;--bs-code-color:#dd88bc;--bs-highlight-color:rgb(215, 215, 215);--bs-highlight-bg:#665214;--bs-border-color:rgb(90, 90, 90);--bs-border-color-translucent:rgba(255, 255, 255, 0.15);--bs-form-valid-color:#7cac98;--bs-form-valid-border-color:#7cac98;--bs-form-invalid-color:#e38982;--bs-form-invalid-border-color:#e38982} *,::after,::before{box-sizing:border-box} :root{font-size:var(--bs-root-font-size)} @@ -525,39 +525,14 @@ progress{vertical-align:baseline} .btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:calc(var(--bs-border-width) * -1)} .btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0} .btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0} -.nav{--bs-nav-link-padding-x:12px;--bs-nav-link-padding-y:6px;--bs-nav-link-color:var(--bs-link-color);--bs-nav-link-hover-color:var(--bs-link-hover-color);--bs-nav-link-disabled-color:var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none} -.nav-link,.nav.nav-tabs>li:not(.nav-item)>a:not(.nav-link){display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);background:0 0;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out} -@media (prefers-reduced-motion:reduce){ -.nav-link,.nav.nav-tabs>li:not(.nav-item)>a:not(.nav-link){transition:none} -} -.nav-link:focus,.nav-link:hover,.nav.nav-tabs>li:not(.nav-item)>a:focus:not(.nav-link),.nav.nav-tabs>li:not(.nav-item)>a:hover:not(.nav-link){color:var(--bs-nav-link-hover-color);text-decoration:none} -.nav-link:focus-visible,.nav.nav-tabs>li:not(.nav-item)>a:focus-visible:not(.nav-link){outline:0;box-shadow:0 0 0 .25rem rgba(0,85,204,.25)} -.nav-link.disabled,.nav-link:disabled,.nav.nav-tabs>li:not(.nav-item)>a.disabled:not(.nav-link),.nav.nav-tabs>li:not(.nav-item)>a:disabled:not(.nav-link){color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default} -.nav-tabs{--bs-nav-tabs-border-width:var(--bs-border-width);--bs-nav-tabs-border-color:#ccc;--bs-nav-tabs-border-radius:var(--bs-border-radius);--bs-nav-tabs-link-hover-border-color:rgb(215, 215, 215);--bs-nav-tabs-link-active-color:var(--bs-emphasis-color);--bs-nav-tabs-link-active-bg:var(--bs-body-bg);--bs-nav-tabs-link-active-border-color:var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg);border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)} -.nav-tabs .nav-link,.nav.nav-tabs>li:not(.nav-item)>a:not(.nav-link){margin-bottom:calc(-1 * var(--bs-nav-tabs-border-width));border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)} -.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover,.nav.nav-tabs>li:not(.nav-item)>a:focus:not(.nav-link),.nav.nav-tabs>li:not(.nav-item)>a:hover:not(.nav-link){isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)} -.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-item.show .nav.nav-tabs>li:not(.nav-item)>a:not(.nav-link),.nav-tabs .nav-link.active,.nav.nav-tabs>li.show:not(.nav-item) .nav-link,.nav.nav-tabs>li.show:not(.nav-item) .nav.nav-tabs>li:not(.nav-item)>a:not(.nav-link),.nav.nav-tabs>li:not(.nav-item)>a.active:not(.nav-link){color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)} -.nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0} -.nav-pills{--bs-nav-pills-border-radius:var(--bs-border-radius);--bs-nav-pills-link-active-color:#fff;--bs-nav-pills-link-active-bg:#05c} -.nav-pills .nav-link,.nav-pills .nav.nav-tabs>li:not(.nav-item)>a:not(.nav-link){border-radius:var(--bs-nav-pills-border-radius)} -.nav-pills .nav-link.active,.nav-pills .nav.nav-tabs>li.show:not(.nav-item)>a:not(.nav-link),.nav-pills .nav.nav-tabs>li:not(.nav-item)>a.active:not(.nav-link),.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)} -.nav-underline{--bs-nav-underline-gap:1rem;--bs-nav-underline-border-width:0.125rem;--bs-nav-underline-link-active-color:var(--bs-emphasis-color);gap:var(--bs-nav-underline-gap)} -.nav-underline .nav-link,.nav-underline .nav.nav-tabs>li:not(.nav-item)>a:not(.nav-link){padding-right:0;padding-left:0;border-bottom:var(--bs-nav-underline-border-width) solid transparent} -.nav-underline .nav-link:focus,.nav-underline .nav-link:hover,.nav-underline .nav.nav-tabs>li:not(.nav-item)>a:focus:not(.nav-link),.nav-underline .nav.nav-tabs>li:not(.nav-item)>a:hover:not(.nav-link){border-bottom-color:currentcolor} -.nav-underline .nav-link.active,.nav-underline .nav.nav-tabs>li.show:not(.nav-item)>a:not(.nav-link),.nav-underline .nav.nav-tabs>li:not(.nav-item)>a.active:not(.nav-link),.nav-underline .show>.nav-link{font-weight:700;color:var(--bs-nav-underline-link-active-color);border-bottom-color:currentcolor} -.nav-fill .nav-item,.nav-fill .nav.nav-tabs>li:not(.nav-item),.nav-fill>.nav-link,.nav.nav-tabs>li.nav-fill:not(.nav-item)>a:not(.nav-link){flex:1 1 auto;text-align:center} -.nav-justified .nav-item,.nav-justified .nav.nav-tabs>li:not(.nav-item),.nav-justified>.nav-link,.nav.nav-tabs>li.nav-justified:not(.nav-item)>a:not(.nav-link){flex-basis:0;flex-grow:1;text-align:center} -.nav-fill .nav-item .nav-link,.nav-fill .nav.nav-tabs>li:not(.nav-item) .nav-link,.nav-fill .nav.nav-tabs>li:not(.nav-item)>a:not(.nav-link),.nav-justified .nav-item .nav-link,.nav-justified .nav.nav-tabs>li:not(.nav-item) .nav-link,.nav-justified .nav.nav-tabs>li:not(.nav-item)>a:not(.nav-link){width:100%} -.tab-content>.tab-pane{display:none} -.tab-content>.active{display:block} -.navbar{--bs-navbar-padding-x:0;--bs-navbar-padding-y:0.5rem;--bs-navbar-color:rgba(var(--bs-emphasis-color-rgb), 0.65);--bs-navbar-hover-color:rgba(var(--bs-emphasis-color-rgb), 0.8);--bs-navbar-disabled-color:rgba(var(--bs-emphasis-color-rgb), 0.3);--bs-navbar-active-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-padding-y:3.75px;--bs-navbar-brand-margin-end:1rem;--bs-navbar-brand-font-size:15px;--bs-navbar-brand-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-hover-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-nav-link-padding-x:0.5rem;--bs-navbar-toggler-padding-y:0.25rem;--bs-navbar-toggler-padding-x:0.75rem;--bs-navbar-toggler-font-size:15px;--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color:rgba(var(--bs-emphasis-color-rgb), 0.15);--bs-navbar-toggler-border-radius:var(--bs-border-radius);--bs-navbar-toggler-focus-width:0.25rem;--bs-navbar-toggler-transition:box-shadow 0.15s ease-in-out;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)} +.navbar{--bs-navbar-padding-x:0;--bs-navbar-padding-y:0.5rem;--bs-navbar-color:rgba(var(--bs-emphasis-color-rgb), 0.65);--bs-navbar-hover-color:rgba(var(--bs-emphasis-color-rgb), 0.8);--bs-navbar-disabled-color:rgba(var(--bs-emphasis-color-rgb), 0.3);--bs-navbar-active-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-padding-y:0.359375rem;--bs-navbar-brand-margin-end:1rem;--bs-navbar-brand-font-size:0.9375rem;--bs-navbar-brand-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-hover-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-nav-link-padding-x:0.5rem;--bs-navbar-toggler-padding-y:0.25rem;--bs-navbar-toggler-padding-x:0.75rem;--bs-navbar-toggler-font-size:0.9375rem;--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color:rgba(var(--bs-emphasis-color-rgb), 0.15);--bs-navbar-toggler-border-radius:var(--bs-border-radius);--bs-navbar-toggler-focus-width:0.25rem;--bs-navbar-toggler-transition:box-shadow 0.15s ease-in-out;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)} .navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between} .navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);white-space:nowrap} .navbar-brand:focus,.navbar-brand:hover{color:var(--bs-navbar-brand-hover-color);text-decoration:none} -.navbar-nav{--bs-nav-link-padding-x:0;--bs-nav-link-padding-y:6px;--bs-nav-link-color:var(--bs-navbar-color);--bs-nav-link-hover-color:var(--bs-navbar-hover-color);--bs-nav-link-disabled-color:var(--bs-navbar-disabled-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none} -.navbar-nav .nav-link.active,.navbar-nav .nav-link.show,.navbar-nav .nav.nav-tabs>li:not(.nav-item)>a.active:not(.nav-link),.navbar-nav .nav.nav-tabs>li:not(.nav-item)>a.show:not(.nav-link){color:var(--bs-navbar-active-color)} +.navbar-nav{--bs-nav-link-padding-x:0;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-color:var(--bs-navbar-color);--bs-nav-link-hover-color:var(--bs-navbar-hover-color);--bs-nav-link-disabled-color:var(--bs-navbar-disabled-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none} +.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)} .navbar-nav .dropdown-menu{position:static} -.navbar-text{padding-top:6px;padding-bottom:6px;color:var(--bs-navbar-color)} +.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)} .navbar-text a,.navbar-text a:focus,.navbar-text a:hover{color:var(--bs-navbar-active-color)} .navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center} .navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)} @@ -572,7 +547,7 @@ progress{vertical-align:baseline} .navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start} .navbar-expand-sm .navbar-nav{flex-direction:row} .navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute} -.navbar-expand-sm .navbar-nav .nav-link,.navbar-expand-sm .navbar-nav .nav.nav-tabs>li:not(.nav-item)>a:not(.nav-link){padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)} +.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)} .navbar-expand-sm .navbar-nav-scroll{overflow:visible} .navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto} .navbar-expand-sm .navbar-toggler{display:none} @@ -584,7 +559,7 @@ progress{vertical-align:baseline} .navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start} .navbar-expand-md .navbar-nav{flex-direction:row} .navbar-expand-md .navbar-nav .dropdown-menu{position:absolute} -.navbar-expand-md .navbar-nav .nav-link,.navbar-expand-md .navbar-nav .nav.nav-tabs>li:not(.nav-item)>a:not(.nav-link){padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)} +.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)} .navbar-expand-md .navbar-nav-scroll{overflow:visible} .navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto} .navbar-expand-md .navbar-toggler{display:none} @@ -596,7 +571,7 @@ progress{vertical-align:baseline} .navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start} .navbar-expand-lg .navbar-nav{flex-direction:row} .navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute} -.navbar-expand-lg .navbar-nav .nav-link,.navbar-expand-lg .navbar-nav .nav.nav-tabs>li:not(.nav-item)>a:not(.nav-link){padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)} +.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)} .navbar-expand-lg .navbar-nav-scroll{overflow:visible} .navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto} .navbar-expand-lg .navbar-toggler{display:none} @@ -608,7 +583,7 @@ progress{vertical-align:baseline} .navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start} .navbar-expand-xl .navbar-nav{flex-direction:row} .navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute} -.navbar-expand-xl .navbar-nav .nav-link,.navbar-expand-xl .navbar-nav .nav.nav-tabs>li:not(.nav-item)>a:not(.nav-link){padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)} +.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)} .navbar-expand-xl .navbar-nav-scroll{overflow:visible} .navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto} .navbar-expand-xl .navbar-toggler{display:none} @@ -620,7 +595,7 @@ progress{vertical-align:baseline} .navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start} .navbar-expand-xxl .navbar-nav{flex-direction:row} .navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute} -.navbar-expand-xxl .navbar-nav .nav-link,.navbar-expand-xxl .navbar-nav .nav.nav-tabs>li:not(.nav-item)>a:not(.nav-link){padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)} +.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)} .navbar-expand-xxl .navbar-nav-scroll{overflow:visible} .navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto} .navbar-expand-xxl .navbar-toggler{display:none} @@ -631,7 +606,7 @@ progress{vertical-align:baseline} .navbar-expand{flex-wrap:nowrap;justify-content:flex-start} .navbar-expand .navbar-nav{flex-direction:row} .navbar-expand .navbar-nav .dropdown-menu{position:absolute} -.navbar-expand .navbar-nav .nav-link,.navbar-expand .navbar-nav .nav.nav-tabs>li:not(.nav-item)>a:not(.nav-link){padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)} +.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)} .navbar-expand .navbar-nav-scroll{overflow:visible} .navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto} .navbar-expand .navbar-toggler{display:none} @@ -2467,7 +2442,7 @@ button[aria-expanded=true]:not(:disabled) .modulemenu-indicator:after{transform: .scaffold-modulemenu-expanded .modulemenu-indicator{display:block!important} .scaffold-modulemenu-expanded .modulemenu-name{position:static;margin:0;margin-inline-start:1em;width:auto;height:auto} :root{--token-color-neutral-base:#000;--token-color-neutral-0:white;--token-color-neutral-3:#f7f7f7;--token-color-neutral-4:whitesmoke;--token-color-neutral-5:#f2f2f2;--token-color-neutral-10:#e6e6e6;--token-color-neutral-15:#d9d9d9;--token-color-neutral-20:#cccccc;--token-color-neutral-25:#bfbfbf;--token-color-neutral-30:#b3b3b3;--token-color-neutral-35:#a6a6a6;--token-color-neutral-40:#999999;--token-color-neutral-45:#8c8c8c;--token-color-neutral-50:gray;--token-color-neutral-55:#737373;--token-color-neutral-60:#666666;--token-color-neutral-65:#595959;--token-color-neutral-70:#4d4d4d;--token-color-neutral-75:#404040;--token-color-neutral-80:#333333;--token-color-neutral-85:#262626;--token-color-neutral-90:#1a1a1a;--token-color-neutral-95:#0d0d0d;--token-color-neutral-96:#0a0a0a;--token-color-neutral-97:#080808;--token-color-neutral-100:black;--token-color-blue-base:#05c;--token-color-blue-3:#f0f6ff;--token-color-blue-4:#ebf3ff;--token-color-blue-5:#e6f0ff;--token-color-blue-10:#cce1ff;--token-color-blue-15:#b3d2ff;--token-color-blue-20:#99c4ff;--token-color-blue-25:#80b5ff;--token-color-blue-30:#66a6ff;--token-color-blue-35:#4d97ff;--token-color-blue-40:#3388ff;--token-color-blue-45:#1a79ff;--token-color-blue-50:#006aff;--token-color-blue-55:#0060e6;--token-color-blue-60:#0055cc;--token-color-blue-65:#004ab3;--token-color-blue-70:#004099;--token-color-blue-75:#003580;--token-color-blue-80:#002b66;--token-color-blue-85:#00204d;--token-color-blue-90:#001533;--token-color-blue-95:#000b1a;--token-color-blue-96:#000914;--token-color-blue-97:#00060f;--token-color-purple-base:#5e4db2;--token-color-purple-3:#f5f4fa;--token-color-purple-4:#f2f1f9;--token-color-purple-5:#efedf7;--token-color-purple-10:#dfdbf0;--token-color-purple-15:#cfcae8;--token-color-purple-20:#bfb8e0;--token-color-purple-25:#afa6d9;--token-color-purple-30:#9e94d1;--token-color-purple-35:#8e82c9;--token-color-purple-40:#7e71c1;--token-color-purple-45:#6e5fba;--token-color-purple-50:#5e4db2;--token-color-purple-55:#5545a0;--token-color-purple-60:#4b3e8e;--token-color-purple-65:#42367d;--token-color-purple-70:#382e6b;--token-color-purple-75:#2f2759;--token-color-purple-80:#261f47;--token-color-purple-85:#1c1735;--token-color-purple-90:#130f24;--token-color-purple-95:#090812;--token-color-purple-96:#08060e;--token-color-purple-97:#06050b;--token-color-teal-base:#abdced;--token-color-teal-3:#f2fafc;--token-color-teal-4:#eef8fb;--token-color-teal-5:#eaf6fb;--token-color-teal-10:#d5eef6;--token-color-teal-15:#c0e5f2;--token-color-teal-20:#abdced;--token-color-teal-25:#96d3e9;--token-color-teal-30:#81cbe4;--token-color-teal-35:#6cc2e0;--token-color-teal-40:#57b9db;--token-color-teal-45:#42b0d7;--token-color-teal-50:#2da8d2;--token-color-teal-55:#2997bd;--token-color-teal-60:#2486a8;--token-color-teal-65:#207593;--token-color-teal-70:#1b657e;--token-color-teal-75:#175469;--token-color-teal-80:#124354;--token-color-teal-85:#0e323f;--token-color-teal-90:#09222a;--token-color-teal-95:#051115;--token-color-teal-96:#040d11;--token-color-teal-97:#030a0d;--token-color-green-base:#247554;--token-color-green-3:#f3fbf8;--token-color-green-4:#effaf6;--token-color-green-5:#ecf9f4;--token-color-green-10:#d8f3e8;--token-color-green-15:#c5eddd;--token-color-green-20:#b1e7d1;--token-color-green-25:#9ee1c6;--token-color-green-30:#8adbba;--token-color-green-35:#77d5af;--token-color-green-40:#63cfa3;--token-color-green-45:#50c998;--token-color-green-50:#3cc38c;--token-color-green-55:#36b07e;--token-color-green-60:#309c70;--token-color-green-65:#2a8962;--token-color-green-70:#247554;--token-color-green-75:#1e6246;--token-color-green-80:#184e38;--token-color-green-85:#123b2a;--token-color-green-90:#0c271c;--token-color-green-95:#06140e;--token-color-green-96:#05100b;--token-color-green-97:#040c08;--token-color-magenta-base:#c6398f;--token-color-magenta-3:#fcf3f8;--token-color-magenta-4:#faeff6;--token-color-magenta-5:#f9ebf4;--token-color-magenta-10:#f4d7e9;--token-color-magenta-15:#eec4dd;--token-color-magenta-20:#e8b0d2;--token-color-magenta-25:#e39cc7;--token-color-magenta-30:#dd88bc;--token-color-magenta-35:#d774b1;--token-color-magenta-40:#d161a5;--token-color-magenta-45:#cc4d9a;--token-color-magenta-50:#c6398f;--token-color-magenta-55:#b23381;--token-color-magenta-60:#9e2e72;--token-color-magenta-65:#8b2864;--token-color-magenta-70:#772256;--token-color-magenta-75:#631d48;--token-color-magenta-80:#4f1739;--token-color-magenta-85:#3b112b;--token-color-magenta-90:#280b1d;--token-color-magenta-95:#14060e;--token-color-magenta-96:#10050b;--token-color-magenta-97:#0c0309;--token-color-yellow-base:#fc3;--token-color-yellow-3:#fffbf0;--token-color-yellow-4:#fffaeb;--token-color-yellow-5:#fff9e6;--token-color-yellow-10:#fff2cc;--token-color-yellow-15:#ffecb3;--token-color-yellow-20:#ffe699;--token-color-yellow-25:#ffdf80;--token-color-yellow-30:#ffd966;--token-color-yellow-35:#ffd24d;--token-color-yellow-40:#ffcc33;--token-color-yellow-45:#ffc61a;--token-color-yellow-50:#ffbf00;--token-color-yellow-55:#e6ac00;--token-color-yellow-60:#cc9900;--token-color-yellow-65:#b38600;--token-color-yellow-70:#997300;--token-color-yellow-75:#806000;--token-color-yellow-80:#664d00;--token-color-yellow-85:#4d3900;--token-color-yellow-90:#332600;--token-color-yellow-95:#1a1300;--token-color-yellow-96:#140f00;--token-color-yellow-97:#0f0b00;--token-color-orange-base:#ee6d11;--token-color-orange-3:#fef6f1;--token-color-orange-4:#fef3ec;--token-color-orange-5:#fdf0e7;--token-color-orange-10:#fce2cf;--token-color-orange-15:#fad3b8;--token-color-orange-20:#f8c5a0;--token-color-orange-25:#f7b688;--token-color-orange-30:#f5a770;--token-color-orange-35:#f39958;--token-color-orange-40:#f18a41;--token-color-orange-45:#f07c29;--token-color-orange-50:#ee6d11;--token-color-orange-55:#d6620f;--token-color-orange-60:#be570e;--token-color-orange-65:#a74c0c;--token-color-orange-70:#8f410a;--token-color-orange-75:#773709;--token-color-orange-80:#5f2c07;--token-color-orange-85:#472105;--token-color-orange-90:#301603;--token-color-orange-95:#180b02;--token-color-orange-96:#130901;--token-color-orange-97:#0e0701;--token-color-red-base:#d13a2e;--token-color-red-3:#fcf3f2;--token-color-red-4:#fbefee;--token-color-red-5:#faebea;--token-color-red-10:#f6d8d5;--token-color-red-15:#f1c4c0;--token-color-red-20:#edb0ab;--token-color-red-25:#e89d97;--token-color-red-30:#e38982;--token-color-red-35:#df756d;--token-color-red-40:#da6158;--token-color-red-45:#d64e43;--token-color-red-50:#d13a2e;--token-color-red-55:#bc3429;--token-color-red-60:#a72e25;--token-color-red-65:#922920;--token-color-red-70:#7d231c;--token-color-red-75:#691d17;--token-color-red-80:#541712;--token-color-red-85:#3f110e;--token-color-red-90:#2a0c09;--token-color-red-95:#150605;--token-color-red-96:#110504;--token-color-red-97:#0d0303} -:root{color-scheme:only light;scroll-behavior:smooth;--typo3-font-size:12px;--typo3-font-size-small:11px;--typo3-font-family-sans-serif:Verdana,Arial,Helvetica,sans-serif;--typo3-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;--typo3-font-family:var(--typo3-font-family-sans-serif);--typo3-font-family-code:var(--typo3-font-family-monospace);--typo3-spacing:1rem;--typo3-header-font-family:"Source Sans 3",sans-serif;--typo3-text-color-base:light-dark(var(--token-color-neutral-90), var(--token-color-neutral-10));--typo3-text-color-link:var(--typo3-text-color-base);--typo3-text-color-variant:light-dark(var(--token-color-neutral-60), var(--token-color-neutral-30));--typo3-text-color-primary:light-dark(var(--token-color-blue-60), var(--token-color-blue-30));--typo3-text-color-secondary:light-dark(var(--token-color-neutral-70), var(--token-color-neutral-35));--typo3-text-color-info:light-dark(var(--token-color-teal-70), var(--token-color-teal-40));--typo3-text-color-success:light-dark(var(--token-color-green-70), var(--token-color-green-50));--typo3-text-color-warning:light-dark(var(--token-color-yellow-80), var(--token-color-yellow-40));--typo3-text-color-danger:light-dark(var(--token-color-red-60), var(--token-color-red-40));--typo3-text-color-code:light-dark(var(--token-color-magenta-60), var(--token-color-magenta-35));--typo3-text-color-notice:light-dark(var(--token-color-neutral-75), var(--token-color-neutral-40));--typo3-text-color-default:var(--typo3-text-color-base);--typo3-surface-dim:light-dark(var(--token-color-neutral-15), var(--token-color-neutral-96));--typo3-surface-base:light-dark(var(--token-color-neutral-4), var(--token-color-neutral-96));--typo3-surface-bright:light-dark(var(--token-color-neutral-4), var(--token-color-neutral-85));--typo3-surface-container-lowest:light-dark(var(--token-color-neutral-0), var(--token-color-neutral-100));--typo3-surface-container-low:light-dark(var(--token-color-neutral-3), var(--token-color-neutral-97));--typo3-surface-container-base:light-dark(var(--token-color-neutral-5), var(--token-color-neutral-95));--typo3-surface-container-high:light-dark(var(--token-color-neutral-10), var(--token-color-neutral-90));--typo3-surface-container-highest:light-dark(var(--token-color-neutral-15), var(--token-color-neutral-85));--typo3-surface-primary:light-dark(var(--token-color-blue-60), var(--token-color-blue-70));--typo3-surface-primary-text:light-dark(var(--token-color-neutral-0), var(--token-color-neutral-0));--typo3-surface-container-primary:light-dark(var(--token-color-blue-10), var(--token-color-blue-90));--typo3-surface-container-primary-text:light-dark(var(--token-color-blue-90), var(--token-color-blue-10));--typo3-surface-secondary:light-dark(var(--token-color-neutral-70), var(--token-color-neutral-70));--typo3-surface-secondary-text:light-dark(var(--token-color-neutral-0), var(--token-color-neutral-0));--typo3-surface-container-secondary:light-dark(var(--token-color-neutral-10), var(--token-color-neutral-90));--typo3-surface-container-secondary-text:light-dark(var(--token-color-neutral-90), var(--token-color-neutral-10));--typo3-surface-info:light-dark(var(--token-color-teal-20), var(--token-color-teal-70));--typo3-surface-info-text:light-dark(var(--token-color-neutral-90), var(--token-color-neutral-0));--typo3-surface-container-info:light-dark(var(--token-color-teal-10), var(--token-color-teal-90));--typo3-surface-container-info-text:light-dark(var(--token-color-teal-90), var(--token-color-teal-10));--typo3-surface-success:light-dark(var(--token-color-green-70), var(--token-color-green-80));--typo3-surface-success-text:light-dark(var(--token-color-neutral-0), var(--token-color-neutral-0));--typo3-surface-container-success:light-dark(var(--token-color-green-10), var(--token-color-green-90));--typo3-surface-container-success-text:light-dark(var(--token-color-green-90), var(--token-color-green-10));--typo3-surface-warning:light-dark(var(--token-color-yellow-40), var(--token-color-yellow-80));--typo3-surface-warning-text:light-dark(var(--token-color-neutral-90), var(--token-color-neutral-0));--typo3-surface-container-warning:light-dark(var(--token-color-yellow-10), var(--token-color-yellow-90));--typo3-surface-container-warning-text:light-dark(var(--token-color-yellow-90), var(--token-color-yellow-10));--typo3-surface-danger:light-dark(var(--token-color-red-50), var(--token-color-red-70));--typo3-surface-danger-text:light-dark(var(--token-color-neutral-0), var(--token-color-neutral-0));--typo3-surface-container-danger:light-dark(var(--token-color-red-10), var(--token-color-red-90));--typo3-surface-container-danger-text:light-dark(var(--token-color-red-90), var(--token-color-red-10));--typo3-surface-notice:light-dark(var(--token-color-neutral-75), var(--token-color-neutral-85));--typo3-surface-notice-text:light-dark(var(--token-color-neutral-0), var(--token-color-neutral-0));--typo3-surface-container-notice:light-dark(var(--token-color-neutral-10), var(--token-color-neutral-90));--typo3-surface-container-notice-text:light-dark(var(--token-color-neutral-95), var(--token-color-neutral-0));--typo3-surface-default:light-dark(var(--token-color-neutral-5), var(--token-color-neutral-95));--typo3-surface-default-text:light-dark(var(--token-color-neutral-90), var(--token-color-neutral-0));--typo3-surface-container-default:light-dark(var(--token-color-neutral-5), var(--token-color-neutral-95));--typo3-surface-container-default-text:light-dark(var(--token-color-neutral-90), var(--token-color-neutral-0));--typo3-state-default-color:light-dark(var(--token-color-neutral-90), var(--token-color-neutral-0));--typo3-state-default-bg:light-dark(var(--token-color-neutral-5), var(--token-color-neutral-90));--typo3-state-default-border-color:light-dark(var(--token-color-neutral-25), var(--token-color-neutral-80));--typo3-state-default-hover-color:var(--typo3-state-default-color);--typo3-state-default-hover-bg:light-dark(var(--token-color-neutral-10), var(--token-color-neutral-85));--typo3-state-default-hover-border-color:light-dark(var(--token-color-neutral-35), var(--token-color-neutral-75));--typo3-state-default-focus-color:var(--typo3-state-default-color);--typo3-state-default-focus-bg:light-dark(var(--token-color-neutral-15), var(--token-color-neutral-80));--typo3-state-default-focus-border-color:light-dark(var(--token-color-neutral-40), var(--token-color-neutral-70));--typo3-state-default-disabled-color:var(--typo3-state-default-color);--typo3-state-default-disabled-bg:var(--typo3-state-default-bg);--typo3-state-default-disabled-border-color:var(--typo3-state-default-border-color);--typo3-state-primary-color:light-dark(var(--token-color-neutral-0), var(--token-color-neutral-0));--typo3-state-primary-bg:light-dark(var(--token-color-blue-60), var(--token-color-blue-70));--typo3-state-primary-border-color:light-dark(var(--token-color-blue-65), var(--token-color-blue-65));--typo3-state-primary-hover-color:var(--typo3-state-primary-color);--typo3-state-primary-hover-bg:light-dark(var(--token-color-blue-65), var(--token-color-blue-65));--typo3-state-primary-hover-border-color:light-dark(var(--token-color-blue-70), var(--token-color-blue-60));--typo3-state-primary-focus-color:var(--typo3-state-primary-color);--typo3-state-primary-focus-bg:light-dark(var(--token-color-blue-70), var(--token-color-blue-60));--typo3-state-primary-focus-border-color:light-dark(var(--token-color-blue-75), var(--token-color-blue-55));--typo3-state-primary-disabled-color:var(--typo3-state-primary-color);--typo3-state-primary-disabled-bg:var(--typo3-state-primary-bg);--typo3-state-primary-disabled-border-color:var(--typo3-state-default-primary-color);--typo3-state-secondary-color:light-dark(var(--token-color-neutral-0), var(--token-color-neutral-0));--typo3-state-secondary-bg:light-dark(var(--token-color-neutral-70), var(--token-color-neutral-70));--typo3-state-secondary-border-color:light-dark(var(--token-color-neutral-75), var(--token-color-neutral-65));--typo3-state-secondary-hover-color:var(--typo3-state-secondary-color);--typo3-state-secondary-hover-bg:light-dark(var(--token-color-neutral-75), var(--token-color-neutral-65));--typo3-state-secondary-hover-border-color:light-dark(var(--token-color-neutral-80), var(--token-color-neutral-60));--typo3-state-secondary-focus-color:var(--typo3-state-secondary-color);--typo3-state-secondary-focus-bg:light-dark(var(--token-color-neutral-80), var(--token-color-neutral-60));--typo3-state-secondary-focus-border-color:light-dark(var(--token-color-neutral-85), var(--token-color-neutral-55));--typo3-state-secondary-disabled-color:var(--typo3-state-secondary-color);--typo3-state-secondary-disabled-bg:var(--typo3-state-secondary-bg);--typo3-state-secondary-disabled-border-color:var(--typo3-state-default-secondary-color);--typo3-state-success-color:light-dark(var(--token-color-neutral-0), var(--token-color-neutral-0));--typo3-state-success-bg:light-dark(var(--token-color-green-70), var(--token-color-green-80));--typo3-state-success-border-color:light-dark(var(--token-color-green-75), var(--token-color-green-75));--typo3-state-success-hover-color:var(--typo3-state-success-color);--typo3-state-success-hover-bg:light-dark(var(--token-color-green-75), var(--token-color-green-75));--typo3-state-success-hover-border-color:light-dark(var(--token-color-green-80), var(--token-color-green-70));--typo3-state-success-focus-color:var(--typo3-state-success-color);--typo3-state-success-focus-bg:light-dark(var(--token-color-green-80), var(--token-color-green-70));--typo3-state-success-focus-border-color:light-dark(var(--token-color-green-85), var(--token-color-green-65));--typo3-state-success-disabled-color:var(--typo3-state-success-color);--typo3-state-success-disabled-bg:var(--typo3-state-success-bg);--typo3-state-success-disabled-border-color:var(--typo3-state-default-success-color);--typo3-state-warning-color:light-dark(var(--token-color-neutral-90), var(--token-color-neutral-0));--typo3-state-warning-bg:light-dark(var(--token-color-yellow-40), var(--token-color-yellow-80));--typo3-state-warning-border-color:light-dark(var(--token-color-yellow-45), var(--token-color-yellow-75));--typo3-state-warning-hover-color:var(--typo3-state-warning-color);--typo3-state-warning-hover-bg:light-dark(var(--token-color-yellow-45), var(--token-color-yellow-75));--typo3-state-warning-hover-border-color:light-dark(var(--token-color-yellow-50), var(--token-color-yellow-70));--typo3-state-warning-focus-color:var(--typo3-state-warning-color);--typo3-state-warning-focus-bg:light-dark(var(--token-color-yellow-50), var(--token-color-yellow-70));--typo3-state-warning-focus-border-color:light-dark(var(--token-color-yellow-55), var(--token-color-yellow-65));--typo3-state-warning-disabled-color:var(--typo3-state-warning-color);--typo3-state-warning-disabled-bg:var(--typo3-state-warning-bg);--typo3-state-warning-disabled-border-color:var(--typo3-state-warning-border-color);--typo3-state-danger-color:light-dark(var(--token-color-neutral-0), var(--token-color-neutral-0));--typo3-state-danger-bg:light-dark(var(--token-color-red-50), var(--token-color-red-70));--typo3-state-danger-border-color:light-dark(var(--token-color-red-55), var(--token-color-red-65));--typo3-state-danger-hover-color:var(--typo3-state-danger-color);--typo3-state-danger-hover-bg:light-dark(var(--token-color-red-55), var(--token-color-red-65));--typo3-state-danger-hover-border-color:light-dark(var(--token-color-red-60), var(--token-color-red-60));--typo3-state-danger-focus-color:var(--typo3-state-danger-color);--typo3-state-danger-focus-bg:light-dark(var(--token-color-red-60), var(--token-color-red-60));--typo3-state-danger-focus-border-color:light-dark(var(--token-color-red-65), var(--token-color-red-55));--typo3-state-danger-disabled-color:var(--typo3-state-danger-color);--typo3-state-danger-disabled-bg:var(--typo3-state-danger-bg);--typo3-state-danger-disabled-border-color:var(--typo3-state-danger-border-color);--typo3-state-info-color:light-dark(var(--token-color-neutral-90), var(--token-color-neutral-0));--typo3-state-info-bg:light-dark(var(--token-color-teal-20), var(--token-color-teal-70));--typo3-state-info-border-color:light-dark(var(--token-color-teal-25), var(--token-color-teal-65));--typo3-state-info-hover-color:var(--typo3-state-info-color);--typo3-state-info-hover-bg:light-dark(var(--token-color-teal-25), var(--token-color-teal-65));--typo3-state-info-hover-border-color:light-dark(var(--token-color-teal-30), var(--token-color-teal-60));--typo3-state-info-focus-color:var(--typo3-state-info-color);--typo3-state-info-focus-bg:light-dark(var(--token-color-teal-30), var(--token-color-teal-60));--typo3-state-info-focus-border-color:light-dark(var(--token-color-teal-35), var(--token-color-teal-55));--typo3-state-info-disabled-color:var(--typo3-state-info-color);--typo3-state-info-disabled-bg:var(--typo3-state-info-bg);--typo3-state-info-disabled-border-color:var(--typo3-state-info-border-color);--typo3-state-notice-color:light-dark(var(--token-color-neutral-0), var(--token-color-neutral-0));--typo3-state-notice-bg:light-dark(var(--token-color-neutral-75), var(--token-color-neutral-85));--typo3-state-notice-border-color:light-dark(var(--token-color-neutral-80), var(--token-color-neutral-80));--typo3-state-notice-hover-color:var(--typo3-state-notice-color);--typo3-state-notice-hover-bg:light-dark(var(--token-color-neutral-80), var(--token-color-neutral-80));--typo3-state-notice-hover-border-color:light-dark(var(--token-color-neutral-85), var(--token-color-neutral-75));--typo3-state-notice-focus-color:var(--typo3-state-notice-color);--typo3-state-notice-focus-bg:light-dark(var(--token-color-neutral-85), var(--token-color-neutral-75));--typo3-state-notice-focus-border-color:light-dark(var(--token-color-neutral-90), var(--token-color-neutral-70));--typo3-state-notice-disabled-color:var(--typo3-state-notice-color);--typo3-state-notice-disabled-bg:var(--typo3-state-notice-bg);--typo3-state-notice-disabled-border-color:var(--typo3-state-notice-border-color);--typo3-shadow-2:0 1px 2px light-dark(rgba(0, 0, 0, 0.12), rgba(0, 0, 0, 0.2)),0 1px 2px light-dark(rgba(0, 0, 0, 0.14), rgba(0, 0, 0, 0.28));--typo3-shadow-4:0 2px 4px light-dark(rgba(0, 0, 0, 0.12), rgba(0, 0, 0, 0.2)),0 2px 4px light-dark(rgba(0, 0, 0, 0.14), rgba(0, 0, 0, 0.28));--typo3-shadow-8:0 4px 8px light-dark(rgba(0, 0, 0, 0.12), rgba(0, 0, 0, 0.2)),0 4px 8px light-dark(rgba(0, 0, 0, 0.14), rgba(0, 0, 0, 0.28));--typo3-shadow-16:0 8px 16px light-dark(rgba(0, 0, 0, 0.12), rgba(0, 0, 0, 0.2)),0 8px 16px light-dark(rgba(0, 0, 0, 0.14), rgba(0, 0, 0, 0.28));--typo3-shadow-28:0 14px 28px light-dark(rgba(0, 0, 0, 0.12), rgba(0, 0, 0, 0.2)),0 14px 28px light-dark(rgba(0, 0, 0, 0.14), rgba(0, 0, 0, 0.28));--typo3-shadow-64:0 0 4px light-dark(rgba(0, 0, 0, 0.12), rgba(0, 0, 0, 0.2)),0 32px 64px light-dark(rgba(0, 0, 0, 0.14), rgba(0, 0, 0, 0.28));--typo3-component-color:var(--typo3-text-color-base);--typo3-component-variant-color:var(--typo3-text-color-variant);--typo3-component-primary-color:var(--typo3-text-color-primary);--typo3-component-secondary-color:var(--typo3-text-color-secondary);--typo3-component-match-highlight-color:inherit;--typo3-component-match-highlight-bg:rgba(234, 92, 0, .33);--typo3-component-bg:var(--typo3-surface-container-lowest);--typo3-component-link-color:light-dark(#05c, #6699e0);--typo3-component-link-hover-color:light-dark(#1a66d1, #80aae6);--typo3-component-font-size:12px;--typo3-component-line-height:1.5;--typo3-component-border-radius:4px;--typo3-component-border-width:1px;--typo3-component-border-color:light-dark(rgb(215, 215, 215), rgb(51, 51, 51));--typo3-component-padding-y:.75rem;--typo3-component-padding-x:1rem;--typo3-component-box-shadow:var(--typo3-shadow-2);--typo3-component-box-shadow-strong:var(--typo3-shadow-4);--typo3-component-box-shadow-tooltip:var(--typo3-shadow-8);--typo3-component-box-shadow-flyout:var(--typo3-shadow-16);--typo3-component-box-shadow-dialog:var(--typo3-shadow-28);--typo3-component-box-shadow-window:var(--typo3-shadow-64);--typo3-component-hover-color:var(--typo3-component-color);--typo3-component-hover-bg:light-dark(#f2f7fc, rgb(51, 51, 51));--typo3-component-hover-border-color:light-dark(#d9e6f7, rgb(90, 90, 90));--typo3-component-focus-color:var(--typo3-component-color);--typo3-component-focus-bg:light-dark(#f2f7fc, #002b66);--typo3-component-focus-border-color:light-dark(#3377d6, #00337a);--typo3-component-active-color:#fff;--typo3-component-active-bg:light-dark(#3377d6, #0048ad);--typo3-component-active-border-color:light-dark(#3377d6, #0044a3);--typo3-component-disabled-color:rgb(115, 115, 115);--typo3-component-disabled-bg:transparent;--typo3-component-disabled-border-color:transparent;--typo3-component-spacing:2rem;--typo3-list-item-padding-y:.5rem;--typo3-list-item-padding-x:.75rem;--typo3-list-item-hover-color:var(--typo3-component-hover-color);--typo3-list-item-hover-bg:var(--typo3-component-hover-bg);--typo3-list-item-hover-border-color:var(--typo3-component-hover-border-color);--typo3-list-item-focus-color:var(--typo3-component-focus-color);--typo3-list-item-focus-bg:var(--typo3-component-focus-bg);--typo3-list-item-focus-border-color:var(--typo3-component-focus-border-color);--typo3-list-item-active-color:var(--typo3-list-item-focus-color);--typo3-list-item-active-bg:var(--typo3-list-item-focus-bg);--typo3-list-item-active-border-color:var(--typo3-list-item-focus-border-color);--typo3-list-item-disabled-color:var(--typo3-component-disabled-color);--typo3-list-item-disabled-bg:var(--typo3-component-disabled-bg);--typo3-list-item-disabled-border-color:var(--typo3-component-disabled-border-color);--typo3-legend-font-weight:600;--typo3-input-font-size:.75rem;--typo3-input-line-height:1.5;--typo3-input-padding-y:.5rem;--typo3-input-padding-x:.75rem;--typo3-input-sm-padding-y:.3125rem;--typo3-input-sm-padding-x:.5rem;--typo3-input-sm-font-size:.6875rem;--typo3-input-border-width:1px;--typo3-input-border-radius:var(--typo3-component-border-radius);--typo3-input-color:var(--typo3-text-color-base);--typo3-input-placeholder-color:color-mix(in srgb, var(--typo3-input-color), transparent 30%);--typo3-input-bg:var(--typo3-surface-container-lowest);--typo3-input-group-addon-bg:color-mix(in srgb, var(--typo3-input-bg), var(--typo3-input-color) 10%);--typo3-input-border-color:var(--typo3-state-default-border-color);--typo3-input-hover-color:var(--typo3-input-color);--typo3-input-hover-bg:var(--typo3-input-bg);--typo3-input-hover-border-color:var(--typo3-state-default-hover-border-color);--typo3-input-focus-color:var(--typo3-input-color);--typo3-input-focus-bg:var(--typo3-input-bg);--typo3-input-focus-border-color:var(--typo3-state-primary-focus-border-color);--typo3-input-active-color:var(--typo3-state-primary-color);--typo3-input-active-bg:var(--typo3-state-primary-bg);--typo3-input-active-border-color:var(--typo3-state-primary-focus-border-color);--typo3-input-disabled-color:var(--typo3-state-default-disabled-color);--typo3-input-disabled-bg:var(--typo3-state-default-disabled-bg);--typo3-input-disabled-border-color:var(--typo3-state-default-disabled-border-color);--typo3-input-disabled-opacity:.65} +:root{color-scheme:only light;scroll-behavior:smooth;--typo3-font-size:12px;--typo3-font-size-small:11px;--typo3-font-family-sans-serif:Verdana,Arial,Helvetica,sans-serif;--typo3-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;--typo3-font-family:var(--typo3-font-family-sans-serif);--typo3-font-family-code:var(--typo3-font-family-monospace);--typo3-spacing:1rem;--typo3-header-font-family:"Source Sans 3",sans-serif;--typo3-text-color-base:light-dark(var(--token-color-neutral-90), var(--token-color-neutral-10));--typo3-text-color-link:var(--typo3-text-color-base);--typo3-text-color-variant:light-dark(var(--token-color-neutral-60), var(--token-color-neutral-30));--typo3-text-color-primary:light-dark(var(--token-color-blue-60), var(--token-color-blue-30));--typo3-text-color-secondary:light-dark(var(--token-color-neutral-70), var(--token-color-neutral-35));--typo3-text-color-info:light-dark(var(--token-color-teal-70), var(--token-color-teal-40));--typo3-text-color-success:light-dark(var(--token-color-green-70), var(--token-color-green-50));--typo3-text-color-warning:light-dark(var(--token-color-yellow-80), var(--token-color-yellow-40));--typo3-text-color-danger:light-dark(var(--token-color-red-60), var(--token-color-red-40));--typo3-text-color-code:light-dark(var(--token-color-magenta-60), var(--token-color-magenta-35));--typo3-text-color-notice:light-dark(var(--token-color-neutral-75), var(--token-color-neutral-40));--typo3-text-color-default:var(--typo3-text-color-base);--typo3-surface-dim:light-dark(var(--token-color-neutral-15), var(--token-color-neutral-96));--typo3-surface-base:light-dark(var(--token-color-neutral-4), var(--token-color-neutral-96));--typo3-surface-bright:light-dark(var(--token-color-neutral-4), var(--token-color-neutral-85));--typo3-surface-container-lowest:light-dark(var(--token-color-neutral-0), var(--token-color-neutral-100));--typo3-surface-container-low:light-dark(var(--token-color-neutral-3), var(--token-color-neutral-97));--typo3-surface-container-base:light-dark(var(--token-color-neutral-5), var(--token-color-neutral-95));--typo3-surface-container-high:light-dark(var(--token-color-neutral-10), var(--token-color-neutral-90));--typo3-surface-container-highest:light-dark(var(--token-color-neutral-15), var(--token-color-neutral-85));--typo3-surface-primary:light-dark(var(--token-color-blue-60), var(--token-color-blue-70));--typo3-surface-primary-text:light-dark(var(--token-color-neutral-0), var(--token-color-neutral-0));--typo3-surface-container-primary:light-dark(var(--token-color-blue-10), var(--token-color-blue-90));--typo3-surface-container-primary-text:light-dark(var(--token-color-blue-90), var(--token-color-blue-10));--typo3-surface-secondary:light-dark(var(--token-color-neutral-70), var(--token-color-neutral-70));--typo3-surface-secondary-text:light-dark(var(--token-color-neutral-0), var(--token-color-neutral-0));--typo3-surface-container-secondary:light-dark(var(--token-color-neutral-10), var(--token-color-neutral-90));--typo3-surface-container-secondary-text:light-dark(var(--token-color-neutral-90), var(--token-color-neutral-10));--typo3-surface-info:light-dark(var(--token-color-teal-20), var(--token-color-teal-70));--typo3-surface-info-text:light-dark(var(--token-color-neutral-90), var(--token-color-neutral-0));--typo3-surface-container-info:light-dark(var(--token-color-teal-10), var(--token-color-teal-90));--typo3-surface-container-info-text:light-dark(var(--token-color-teal-90), var(--token-color-teal-10));--typo3-surface-success:light-dark(var(--token-color-green-70), var(--token-color-green-80));--typo3-surface-success-text:light-dark(var(--token-color-neutral-0), var(--token-color-neutral-0));--typo3-surface-container-success:light-dark(var(--token-color-green-10), var(--token-color-green-90));--typo3-surface-container-success-text:light-dark(var(--token-color-green-90), var(--token-color-green-10));--typo3-surface-warning:light-dark(var(--token-color-yellow-40), var(--token-color-yellow-80));--typo3-surface-warning-text:light-dark(var(--token-color-neutral-90), var(--token-color-neutral-0));--typo3-surface-container-warning:light-dark(var(--token-color-yellow-10), var(--token-color-yellow-90));--typo3-surface-container-warning-text:light-dark(var(--token-color-yellow-90), var(--token-color-yellow-10));--typo3-surface-danger:light-dark(var(--token-color-red-50), var(--token-color-red-70));--typo3-surface-danger-text:light-dark(var(--token-color-neutral-0), var(--token-color-neutral-0));--typo3-surface-container-danger:light-dark(var(--token-color-red-10), var(--token-color-red-90));--typo3-surface-container-danger-text:light-dark(var(--token-color-red-90), var(--token-color-red-10));--typo3-surface-notice:light-dark(var(--token-color-neutral-75), var(--token-color-neutral-85));--typo3-surface-notice-text:light-dark(var(--token-color-neutral-0), var(--token-color-neutral-0));--typo3-surface-container-notice:light-dark(var(--token-color-neutral-10), var(--token-color-neutral-90));--typo3-surface-container-notice-text:light-dark(var(--token-color-neutral-95), var(--token-color-neutral-0));--typo3-surface-default:light-dark(var(--token-color-neutral-5), var(--token-color-neutral-95));--typo3-surface-default-text:light-dark(var(--token-color-neutral-90), var(--token-color-neutral-0));--typo3-surface-container-default:light-dark(var(--token-color-neutral-5), var(--token-color-neutral-95));--typo3-surface-container-default-text:light-dark(var(--token-color-neutral-90), var(--token-color-neutral-0));--typo3-state-default-color:light-dark(var(--token-color-neutral-90), var(--token-color-neutral-0));--typo3-state-default-bg:light-dark(var(--token-color-neutral-5), var(--token-color-neutral-90));--typo3-state-default-border-color:light-dark(var(--token-color-neutral-25), var(--token-color-neutral-80));--typo3-state-default-hover-color:var(--typo3-state-default-color);--typo3-state-default-hover-bg:light-dark(var(--token-color-neutral-10), var(--token-color-neutral-85));--typo3-state-default-hover-border-color:light-dark(var(--token-color-neutral-35), var(--token-color-neutral-75));--typo3-state-default-focus-color:var(--typo3-state-default-color);--typo3-state-default-focus-bg:light-dark(var(--token-color-neutral-15), var(--token-color-neutral-80));--typo3-state-default-focus-border-color:light-dark(var(--token-color-neutral-40), var(--token-color-neutral-70));--typo3-state-default-disabled-color:var(--typo3-state-default-color);--typo3-state-default-disabled-bg:var(--typo3-state-default-bg);--typo3-state-default-disabled-border-color:var(--typo3-state-default-border-color);--typo3-state-primary-color:light-dark(var(--token-color-neutral-0), var(--token-color-neutral-0));--typo3-state-primary-bg:light-dark(var(--token-color-blue-60), var(--token-color-blue-70));--typo3-state-primary-border-color:light-dark(var(--token-color-blue-65), var(--token-color-blue-65));--typo3-state-primary-hover-color:var(--typo3-state-primary-color);--typo3-state-primary-hover-bg:light-dark(var(--token-color-blue-65), var(--token-color-blue-65));--typo3-state-primary-hover-border-color:light-dark(var(--token-color-blue-70), var(--token-color-blue-60));--typo3-state-primary-focus-color:var(--typo3-state-primary-color);--typo3-state-primary-focus-bg:light-dark(var(--token-color-blue-70), var(--token-color-blue-60));--typo3-state-primary-focus-border-color:light-dark(var(--token-color-blue-75), var(--token-color-blue-55));--typo3-state-primary-disabled-color:var(--typo3-state-primary-color);--typo3-state-primary-disabled-bg:var(--typo3-state-primary-bg);--typo3-state-primary-disabled-border-color:var(--typo3-state-default-primary-color);--typo3-state-secondary-color:light-dark(var(--token-color-neutral-0), var(--token-color-neutral-0));--typo3-state-secondary-bg:light-dark(var(--token-color-neutral-70), var(--token-color-neutral-70));--typo3-state-secondary-border-color:light-dark(var(--token-color-neutral-75), var(--token-color-neutral-65));--typo3-state-secondary-hover-color:var(--typo3-state-secondary-color);--typo3-state-secondary-hover-bg:light-dark(var(--token-color-neutral-75), var(--token-color-neutral-65));--typo3-state-secondary-hover-border-color:light-dark(var(--token-color-neutral-80), var(--token-color-neutral-60));--typo3-state-secondary-focus-color:var(--typo3-state-secondary-color);--typo3-state-secondary-focus-bg:light-dark(var(--token-color-neutral-80), var(--token-color-neutral-60));--typo3-state-secondary-focus-border-color:light-dark(var(--token-color-neutral-85), var(--token-color-neutral-55));--typo3-state-secondary-disabled-color:var(--typo3-state-secondary-color);--typo3-state-secondary-disabled-bg:var(--typo3-state-secondary-bg);--typo3-state-secondary-disabled-border-color:var(--typo3-state-default-secondary-color);--typo3-state-success-color:light-dark(var(--token-color-neutral-0), var(--token-color-neutral-0));--typo3-state-success-bg:light-dark(var(--token-color-green-70), var(--token-color-green-80));--typo3-state-success-border-color:light-dark(var(--token-color-green-75), var(--token-color-green-75));--typo3-state-success-hover-color:var(--typo3-state-success-color);--typo3-state-success-hover-bg:light-dark(var(--token-color-green-75), var(--token-color-green-75));--typo3-state-success-hover-border-color:light-dark(var(--token-color-green-80), var(--token-color-green-70));--typo3-state-success-focus-color:var(--typo3-state-success-color);--typo3-state-success-focus-bg:light-dark(var(--token-color-green-80), var(--token-color-green-70));--typo3-state-success-focus-border-color:light-dark(var(--token-color-green-85), var(--token-color-green-65));--typo3-state-success-disabled-color:var(--typo3-state-success-color);--typo3-state-success-disabled-bg:var(--typo3-state-success-bg);--typo3-state-success-disabled-border-color:var(--typo3-state-default-success-color);--typo3-state-warning-color:light-dark(var(--token-color-neutral-90), var(--token-color-neutral-0));--typo3-state-warning-bg:light-dark(var(--token-color-yellow-40), var(--token-color-yellow-80));--typo3-state-warning-border-color:light-dark(var(--token-color-yellow-45), var(--token-color-yellow-75));--typo3-state-warning-hover-color:var(--typo3-state-warning-color);--typo3-state-warning-hover-bg:light-dark(var(--token-color-yellow-45), var(--token-color-yellow-75));--typo3-state-warning-hover-border-color:light-dark(var(--token-color-yellow-50), var(--token-color-yellow-70));--typo3-state-warning-focus-color:var(--typo3-state-warning-color);--typo3-state-warning-focus-bg:light-dark(var(--token-color-yellow-50), var(--token-color-yellow-70));--typo3-state-warning-focus-border-color:light-dark(var(--token-color-yellow-55), var(--token-color-yellow-65));--typo3-state-warning-disabled-color:var(--typo3-state-warning-color);--typo3-state-warning-disabled-bg:var(--typo3-state-warning-bg);--typo3-state-warning-disabled-border-color:var(--typo3-state-warning-border-color);--typo3-state-danger-color:light-dark(var(--token-color-neutral-0), var(--token-color-neutral-0));--typo3-state-danger-bg:light-dark(var(--token-color-red-50), var(--token-color-red-70));--typo3-state-danger-border-color:light-dark(var(--token-color-red-55), var(--token-color-red-65));--typo3-state-danger-hover-color:var(--typo3-state-danger-color);--typo3-state-danger-hover-bg:light-dark(var(--token-color-red-55), var(--token-color-red-65));--typo3-state-danger-hover-border-color:light-dark(var(--token-color-red-60), var(--token-color-red-60));--typo3-state-danger-focus-color:var(--typo3-state-danger-color);--typo3-state-danger-focus-bg:light-dark(var(--token-color-red-60), var(--token-color-red-60));--typo3-state-danger-focus-border-color:light-dark(var(--token-color-red-65), var(--token-color-red-55));--typo3-state-danger-disabled-color:var(--typo3-state-danger-color);--typo3-state-danger-disabled-bg:var(--typo3-state-danger-bg);--typo3-state-danger-disabled-border-color:var(--typo3-state-danger-border-color);--typo3-state-info-color:light-dark(var(--token-color-neutral-90), var(--token-color-neutral-0));--typo3-state-info-bg:light-dark(var(--token-color-teal-20), var(--token-color-teal-70));--typo3-state-info-border-color:light-dark(var(--token-color-teal-25), var(--token-color-teal-65));--typo3-state-info-hover-color:var(--typo3-state-info-color);--typo3-state-info-hover-bg:light-dark(var(--token-color-teal-25), var(--token-color-teal-65));--typo3-state-info-hover-border-color:light-dark(var(--token-color-teal-30), var(--token-color-teal-60));--typo3-state-info-focus-color:var(--typo3-state-info-color);--typo3-state-info-focus-bg:light-dark(var(--token-color-teal-30), var(--token-color-teal-60));--typo3-state-info-focus-border-color:light-dark(var(--token-color-teal-35), var(--token-color-teal-55));--typo3-state-info-disabled-color:var(--typo3-state-info-color);--typo3-state-info-disabled-bg:var(--typo3-state-info-bg);--typo3-state-info-disabled-border-color:var(--typo3-state-info-border-color);--typo3-state-notice-color:light-dark(var(--token-color-neutral-0), var(--token-color-neutral-0));--typo3-state-notice-bg:light-dark(var(--token-color-neutral-75), var(--token-color-neutral-85));--typo3-state-notice-border-color:light-dark(var(--token-color-neutral-80), var(--token-color-neutral-80));--typo3-state-notice-hover-color:var(--typo3-state-notice-color);--typo3-state-notice-hover-bg:light-dark(var(--token-color-neutral-80), var(--token-color-neutral-80));--typo3-state-notice-hover-border-color:light-dark(var(--token-color-neutral-85), var(--token-color-neutral-75));--typo3-state-notice-focus-color:var(--typo3-state-notice-color);--typo3-state-notice-focus-bg:light-dark(var(--token-color-neutral-85), var(--token-color-neutral-75));--typo3-state-notice-focus-border-color:light-dark(var(--token-color-neutral-90), var(--token-color-neutral-70));--typo3-state-notice-disabled-color:var(--typo3-state-notice-color);--typo3-state-notice-disabled-bg:var(--typo3-state-notice-bg);--typo3-state-notice-disabled-border-color:var(--typo3-state-notice-border-color);--typo3-shadow-2:0 1px 2px light-dark(rgba(0, 0, 0, 0.12), rgba(0, 0, 0, 0.2)),0 1px 2px light-dark(rgba(0, 0, 0, 0.14), rgba(0, 0, 0, 0.28));--typo3-shadow-4:0 2px 4px light-dark(rgba(0, 0, 0, 0.12), rgba(0, 0, 0, 0.2)),0 2px 4px light-dark(rgba(0, 0, 0, 0.14), rgba(0, 0, 0, 0.28));--typo3-shadow-8:0 4px 8px light-dark(rgba(0, 0, 0, 0.12), rgba(0, 0, 0, 0.2)),0 4px 8px light-dark(rgba(0, 0, 0, 0.14), rgba(0, 0, 0, 0.28));--typo3-shadow-16:0 8px 16px light-dark(rgba(0, 0, 0, 0.12), rgba(0, 0, 0, 0.2)),0 8px 16px light-dark(rgba(0, 0, 0, 0.14), rgba(0, 0, 0, 0.28));--typo3-shadow-28:0 14px 28px light-dark(rgba(0, 0, 0, 0.12), rgba(0, 0, 0, 0.2)),0 14px 28px light-dark(rgba(0, 0, 0, 0.14), rgba(0, 0, 0, 0.28));--typo3-shadow-64:0 0 4px light-dark(rgba(0, 0, 0, 0.12), rgba(0, 0, 0, 0.2)),0 32px 64px light-dark(rgba(0, 0, 0, 0.14), rgba(0, 0, 0, 0.28));--typo3-component-color:var(--typo3-text-color-base);--typo3-component-variant-color:var(--typo3-text-color-variant);--typo3-component-primary-color:var(--typo3-text-color-primary);--typo3-component-secondary-color:var(--typo3-text-color-secondary);--typo3-component-match-highlight-color:inherit;--typo3-component-match-highlight-bg:rgba(234, 92, 0, .33);--typo3-component-bg:var(--typo3-surface-container-lowest);--typo3-component-link-color:light-dark(#05c, #6699e0);--typo3-component-link-hover-color:light-dark(#1a66d1, #80aae6);--typo3-component-font-size:0.75rem;--typo3-component-line-height:1.5;--typo3-component-border-radius:4px;--typo3-component-border-width:1px;--typo3-component-border-color:light-dark(rgb(215, 215, 215), rgb(51, 51, 51));--typo3-component-padding-y:.75rem;--typo3-component-padding-x:1rem;--typo3-component-box-shadow:var(--typo3-shadow-2);--typo3-component-box-shadow-strong:var(--typo3-shadow-4);--typo3-component-box-shadow-tooltip:var(--typo3-shadow-8);--typo3-component-box-shadow-flyout:var(--typo3-shadow-16);--typo3-component-box-shadow-dialog:var(--typo3-shadow-28);--typo3-component-box-shadow-window:var(--typo3-shadow-64);--typo3-component-hover-color:var(--typo3-component-color);--typo3-component-hover-bg:light-dark(#f2f7fc, rgb(51, 51, 51));--typo3-component-hover-border-color:light-dark(#d9e6f7, rgb(90, 90, 90));--typo3-component-focus-color:var(--typo3-component-color);--typo3-component-focus-bg:light-dark(#f2f7fc, #002b66);--typo3-component-focus-border-color:light-dark(#3377d6, #00337a);--typo3-component-active-color:#fff;--typo3-component-active-bg:light-dark(#3377d6, #0048ad);--typo3-component-active-border-color:light-dark(#3377d6, #0044a3);--typo3-component-disabled-color:rgb(115, 115, 115);--typo3-component-disabled-bg:transparent;--typo3-component-disabled-border-color:transparent;--typo3-component-spacing:2rem;--typo3-list-item-padding-y:.5rem;--typo3-list-item-padding-x:.75rem;--typo3-list-item-hover-color:var(--typo3-component-hover-color);--typo3-list-item-hover-bg:var(--typo3-component-hover-bg);--typo3-list-item-hover-border-color:var(--typo3-component-hover-border-color);--typo3-list-item-focus-color:var(--typo3-component-focus-color);--typo3-list-item-focus-bg:var(--typo3-component-focus-bg);--typo3-list-item-focus-border-color:var(--typo3-component-focus-border-color);--typo3-list-item-active-color:var(--typo3-list-item-focus-color);--typo3-list-item-active-bg:var(--typo3-list-item-focus-bg);--typo3-list-item-active-border-color:var(--typo3-list-item-focus-border-color);--typo3-list-item-disabled-color:var(--typo3-component-disabled-color);--typo3-list-item-disabled-bg:var(--typo3-component-disabled-bg);--typo3-list-item-disabled-border-color:var(--typo3-component-disabled-border-color);--typo3-legend-font-weight:600;--typo3-input-font-size:.75rem;--typo3-input-line-height:1.5;--typo3-input-padding-y:.5rem;--typo3-input-padding-x:.75rem;--typo3-input-sm-padding-y:.3125rem;--typo3-input-sm-padding-x:.5rem;--typo3-input-sm-font-size:.6875rem;--typo3-input-border-width:1px;--typo3-input-border-radius:var(--typo3-component-border-radius);--typo3-input-color:var(--typo3-text-color-base);--typo3-input-placeholder-color:color-mix(in srgb, var(--typo3-input-color), transparent 30%);--typo3-input-bg:var(--typo3-surface-container-lowest);--typo3-input-group-addon-bg:color-mix(in srgb, var(--typo3-input-bg), var(--typo3-input-color) 10%);--typo3-input-border-color:var(--typo3-state-default-border-color);--typo3-input-hover-color:var(--typo3-input-color);--typo3-input-hover-bg:var(--typo3-input-bg);--typo3-input-hover-border-color:var(--typo3-state-default-hover-border-color);--typo3-input-focus-color:var(--typo3-input-color);--typo3-input-focus-bg:var(--typo3-input-bg);--typo3-input-focus-border-color:var(--typo3-state-primary-focus-border-color);--typo3-input-active-color:var(--typo3-state-primary-color);--typo3-input-active-bg:var(--typo3-state-primary-bg);--typo3-input-active-border-color:var(--typo3-state-primary-focus-border-color);--typo3-input-disabled-color:var(--typo3-state-default-disabled-color);--typo3-input-disabled-bg:var(--typo3-state-default-disabled-bg);--typo3-input-disabled-border-color:var(--typo3-state-default-disabled-border-color);--typo3-input-disabled-opacity:.65} [data-color-scheme=auto]{color-scheme:light dark} [data-color-scheme=dark]{color-scheme:only dark} [data-color-scheme=light]{color-scheme:only light} @@ -2502,7 +2477,28 @@ a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-d .order-7{order:7} .order-8{order:8} .order-9{order:9} -.nav{padding-inline:0} +.nav{--typo3-nav-link-padding-x:1rem;--typo3-nav-link-padding-y:.5rem;--typo3-nav-link-font-size:var(--typo3-font-size);--typo3-nav-link-font-weight:normal;--typo3-nav-link-color:var(--typo3-text-color-link);--typo3-nav-link-hover-color:var(--typo3-text-color-link);--typo3-nav-link-disabled-color:var(--typo3-text-color-variant);--typo3-nav-link-focusring-base-color:var(--typo3-nav-link-color);display:flex;gap:1px;flex-wrap:wrap;padding-inline:0;margin-bottom:0;list-style:none;font-size:var(--typo3-nav-link-font-size)} +.nav-link{display:block;padding:var(--typo3-nav-link-padding-y) var(--typo3-nav-link-padding-x);font-size:var(--typo3-nav-link-font-size);font-weight:var(--typo3-nav-link-font-weight);color:var(--typo3-nav-link-color);background:0 0;border:0;transition:color .2s ease-in-out,background-color .2s ease-in-out,border-color .2s ease-in-out;outline-offset:0} +.nav-link:focus,.nav-link:hover{color:var(--typo3-nav-link-hover-color);text-decoration:underline} +.nav-link:focus-visible{outline:.25rem solid color-mix(in srgb,var(--typo3-nav-link-focusring-base-color),transparent 25%)} +.nav-link.disabled,.nav-link:disabled{color:var(--typo3-nav-link-disabled-color);pointer-events:none;cursor:default} +.nav-tabs{--typo3-nav-tabs-color:var(--typo3-component-color);--typo3-nav-tabs-bg:var(--typo3-component-bg);--typo3-nav-tabs-border-color:color-mix(in srgb, var(--typo3-nav-tabs-bg), var(--typo3-nav-tabs-color) 15%);--typo3-nav-tabs-border-width:var(--typo3-component-border-width);--typo3-nav-tabs-border-radius:var(--typo3-component-border-radius);position:relative;gap:2px 1px;z-index:1;border-bottom:var(--typo3-nav-tabs-border-width) solid var(--typo3-nav-tabs-border-color)} +.nav-tabs .nav-link{--typo3-nav-tabs-link-state-color:initial;--typo3-nav-tabs-link-state-bg:initial;--typo3-nav-tabs-link-color:var(--typo3-nav-tabs-link-state-color, var(--typo3-nav-tabs-color));--typo3-nav-tabs-link-bg:var(--typo3-nav-tabs-link-state-bg, var(--typo3-nav-tabs-bg));--typo3-nav-tabs-link-border-color:color-mix(in srgb, var(--typo3-nav-tabs-link-bg), var(--typo3-nav-tabs-link-color) 15%);--typo3-nav-tabs-link-active-color:var(--typo3-nav-tabs-color);--typo3-nav-tabs-link-active-bg:var(--typo3-nav-tabs-bg);--typo3-nav-tabs-link-danger-color:var(--typo3-surface-container-danger-text);--typo3-nav-tabs-link-danger-bg:var(--typo3-surface-container-danger);--typo3-nav-tabs-link-danger-active-color:var(--typo3-nav-tabs-link-active-color);--typo3-nav-tabs-link-danger-active-bg:var(--typo3-nav-tabs-link-active-bg);--typo3-nav-link-focusring-base-color:var(--typo3-nav-tabs-link-border-color);position:relative;color:var(--typo3-nav-tabs-link-color);background-color:var(--typo3-nav-tabs-link-bg);margin-bottom:calc(-1 * var(--typo3-nav-tabs-border-width));border:var(--typo3-nav-tabs-border-width) solid var(--typo3-nav-tabs-link-border-color);border-start-start-radius:var(--typo3-nav-tabs-border-radius);border-start-end-radius:var(--typo3-nav-tabs-border-radius)} +.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{text-decoration:none;isolation:isolate} +.nav-tabs .nav-link:hover{background:color-mix(in srgb,var(--typo3-nav-tabs-link-bg),var(--typo3-nav-tabs-link-color) 6%)} +.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-item.show .nav-link:hover,.nav-tabs .nav-link.active,.nav-tabs .nav-link.active:hover{--typo3-nav-tabs-link-state-color:var(--typo3-nav-tabs-link-active-color);--typo3-nav-tabs-link-state-bg:var(--typo3-nav-tabs-link-active-bg);background-color:var(--typo3-nav-tabs-link-bg);border-bottom-color:var(--typo3-nav-tabs-link-bg)} +.nav-tabs .nav-item.has-validation-error .nav-link{--typo3-nav-tabs-link-state-color:var(--typo3-nav-tabs-link-danger-color);--typo3-nav-tabs-link-state-bg:var(--typo3-nav-tabs-link-danger-bg);padding-inline-start:calc(var(--typo3-nav-link-padding-x) + 16px + .25rem)} +.nav-tabs .nav-item.has-validation-error .nav-link.active{--typo3-nav-tabs-link-state-color:var(--typo3-nav-tabs-link-danger-active-color);--typo3-nav-tabs-link-state-bg:var(--typo3-nav-tabs-link-danger-active-bg)} +.nav-tabs .nav-item.has-validation-error .nav-link:after,.nav-tabs .nav-item.has-validation-error .nav-link:before{content:"";position:absolute;top:50%;inset-inline:var(--typo3-nav-link-padding-x);transform:translate(0,-50%);border-radius:50%;width:16px;height:16px} +.nav-tabs .nav-item.has-validation-error .nav-link:before{background-color:var(--typo3-state-danger-bg)} +.nav-tabs .nav-item.has-validation-error .nav-link:after{background-color:var(--typo3-state-danger-color);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cg fill='%23fff'%3e%3ccircle cx='8' cy='11' r='1'/%3e%3cpath d='M8.5 9h-1l-.445-4.45A.5.5 0 0 1 7.552 4h.896a.5.5 0 0 1 .497.55L8.5 9z'/%3e%3c/g%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cg fill='%23fff'%3e%3ccircle cx='8' cy='11' r='1'/%3e%3cpath d='M8.5 9h-1l-.445-4.45A.5.5 0 0 1 7.552 4h.896a.5.5 0 0 1 .497.55L8.5 9z'/%3e%3c/g%3e%3c/svg%3e");-webkit-mask-position:center center;mask-position:center center;-webkit-mask-size:contain;mask-size:contain} +.nav-pills{--typo3-nav-pills-border-radius:var(--typo3-component-border-radius);--typo3-nav-pills-link-active-color:var(--typo3-state-primary-color);--typo3-nav-pills-link-active-bg:var(--typo3-state-primary-bg)} +.nav-pills .nav-link{border-radius:var(--typo3-nav-pills-border-radius)} +.nav-pills .nav-link.active,.nav-pills .show>.nav-link{--typo3-nav-link-focusring-base-color:var(--typo3-nav-pills-link-active-bg);background-color:var(--typo3-nav-pills-link-active-bg);color:var(--typo3-nav-pills-link-active-color);text-decoration:none} +.tab-content>.tab-pane{display:none} +.tab-content>.active{display:block} +.tab-pane>.panel{--typo3-panel-border-radius-top:0} +.tab-pane>.visually-hidden:first-child+.form-section,.tab-pane>:first-child{border-top:none} :root{--icon-color-primary:currentColor;--icon-size-small:16px;--icon-size-medium:32px;--icon-size-large:48px;--icon-size-mega:64px;--icon-unify-modifier:0.86;--icon-opacity-disabled:0.5} .icon{position:relative;display:inline-flex;overflow:hidden;white-space:nowrap;color:var(--icon-color-primary);height:var(--icon-size,1em);width:var(--icon-size,1em);line-height:var(--icon-size,1em);flex-shrink:0} .icon img,.icon svg{display:block;height:100%;width:100%} @@ -2713,14 +2709,14 @@ typo3-backend-formengine-suggest-result-item .formengine-suggest-result-item-lab .form-check.form-check-size-input{margin-top:calc(var(--typo3-spacing)/ 2);margin-bottom:calc(var(--typo3-spacing)/ 2)} .form-text{margin-top:calc(var(--typo3-spacing) * .25)} .form-description{color:var(--typo3-text-color-variant);margin-bottom:calc(var(--typo3-spacing) * .25)} -.has-error,.is-invalid{--typo3-input-color:var(--typo3-surface-container-danger-text);--typo3-input-bg:var(--typo3-surface-container-danger);--typo3-input-group-addon-bg:color-mix(in srgb, var(--typo3-input-bg), var(--typo3-input-color) 10%);--typo3-input-border-color:var(--typo3-state-danger-border-color);--typo3-input-hover-color:var(--typo3-input-color);--typo3-input-hover-bg:var(--typo3-input-bg);--typo3-input-hover-border-color:var(--typo3-state-danger-hover-border-color);--typo3-input-focus-color:var(--typo3-input-color);--typo3-input-focus-bg:var(--typo3-input-bg);--typo3-input-focus-border-color:var(--typo3-state-danger-focus-border-color)} -.has-error .form-label:before,.is-invalid .form-label:before{content:"";vertical-align:middle;-webkit-mask:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' viewBox='0 0 16 16'%3e%3cg fill='currentColor'%3e%3cpath d='M8 2c3.3 0 6 2.7 6 6s-2.7 6-6 6-6-2.7-6-6 2.7-6 6-6m0-1C4.1 1 1 4.1 1 8s3.1 7 7 7 7-3.1 7-7-3.1-7-7-7z'/%3e%3ccircle cx='8' cy='11' r='1'/%3e%3cpath d='M8.5 9h-1l-.445-4.45A.5.5 0 0 1 7.552 4h.896a.5.5 0 0 1 .497.55L8.5 9z'/%3e%3c/g%3e%3c/svg%3e");mask:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' viewBox='0 0 16 16'%3e%3cg fill='currentColor'%3e%3cpath d='M8 2c3.3 0 6 2.7 6 6s-2.7 6-6 6-6-2.7-6-6 2.7-6 6-6m0-1C4.1 1 1 4.1 1 8s3.1 7 7 7 7-3.1 7-7-3.1-7-7-7z'/%3e%3ccircle cx='8' cy='11' r='1'/%3e%3cpath d='M8.5 9h-1l-.445-4.45A.5.5 0 0 1 7.552 4h.896a.5.5 0 0 1 .497.55L8.5 9z'/%3e%3c/g%3e%3c/svg%3e");background-color:var(--typo3-text-color-danger);background-size:contain;display:inline-block;width:1.3333333333em;height:1.3333333333em} -.has-success,.is-valid{--typo3-input-color:var(--typo3-surface-container-success-text);--typo3-input-bg:var(--typo3-surface-container-success);--typo3-input-group-addon-bg:color-mix(in srgb, var(--typo3-input-bg), var(--typo3-input-color) 10%);--typo3-input-border-color:var(--typo3-state-success-border-color);--typo3-input-hover-color:var(--typo3-input-color);--typo3-input-hover-bg:var(--typo3-input-bg);--typo3-input-hover-border-color:var(--typo3-state-success-hover-border-color);--typo3-input-focus-color:var(--typo3-input-color);--typo3-input-focus-bg:var(--typo3-input-bg);--typo3-input-focus-border-color:var(--typo3-state-success-focus-border-color)} -.has-success .form-label:before,.is-valid .form-label:before{content:"";vertical-align:middle;-webkit-mask:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' viewBox='0 0 16 16'%3e%3cg fill='currentColor'%3e%3cpath d='m12.1 5.3-.4-.3c-.1-.1-.3-.1-.4 0L6.6 9.8l-2-2c-.1-.1-.3-.1-.4 0l-.3.4c-.1.1-.1.3 0 .4L6 10.7l.4.3c.1.1.3.1.4 0l.4-.4 4.9-4.9c.1-.1.1-.3 0-.4z'/%3e%3cpath d='M8 2c3.3 0 6 2.7 6 6s-2.7 6-6 6-6-2.7-6-6 2.7-6 6-6m0-1C4.1 1 1 4.1 1 8s3.1 7 7 7 7-3.1 7-7-3.1-7-7-7z'/%3e%3c/g%3e%3c/svg%3e");mask:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' viewBox='0 0 16 16'%3e%3cg fill='currentColor'%3e%3cpath d='m12.1 5.3-.4-.3c-.1-.1-.3-.1-.4 0L6.6 9.8l-2-2c-.1-.1-.3-.1-.4 0l-.3.4c-.1.1-.1.3 0 .4L6 10.7l.4.3c.1.1.3.1.4 0l.4-.4 4.9-4.9c.1-.1.1-.3 0-.4z'/%3e%3cpath d='M8 2c3.3 0 6 2.7 6 6s-2.7 6-6 6-6-2.7-6-6 2.7-6 6-6m0-1C4.1 1 1 4.1 1 8s3.1 7 7 7 7-3.1 7-7-3.1-7-7-7z'/%3e%3c/g%3e%3c/svg%3e");background-color:var(--typo3-text-color-success);background-size:contain;display:inline-block;width:1.3333333333em;height:1.3333333333em} .has-change{--typo3-input-color:var(--typo3-surface-container-info-text);--typo3-input-bg:var(--typo3-surface-container-info);--typo3-input-group-addon-bg:color-mix(in srgb, var(--typo3-input-bg), var(--typo3-input-color) 10%);--typo3-input-border-color:var(--typo3-state-info-border-color);--typo3-input-hover-color:var(--typo3-input-color);--typo3-input-hover-bg:var(--typo3-input-bg);--typo3-input-hover-border-color:var(--typo3-state-info-hover-border-color);--typo3-input-focus-color:var(--typo3-input-color);--typo3-input-focus-bg:var(--typo3-input-bg);--typo3-input-focus-border-color:var(--typo3-state-info-focus-border-color)} .has-change .form-label:before{content:"";vertical-align:middle;-webkit-mask:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' viewBox='0 0 16 16'%3e%3cg fill='currentColor'%3e%3cpath d='M8 2c3.3 0 6 2.7 6 6s-2.7 6-6 6-6-2.7-6-6 2.7-6 6-6m0-1C4.1 1 1 4.1 1 8s3.1 7 7 7 7-3.1 7-7-3.1-7-7-7z'/%3e%3ccircle cx='8' cy='11' r='1'/%3e%3cpath d='M8.5 9h-1l-.445-4.45A.5.5 0 0 1 7.552 4h.896a.5.5 0 0 1 .497.55L8.5 9z'/%3e%3c/g%3e%3c/svg%3e");mask:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' viewBox='0 0 16 16'%3e%3cg fill='currentColor'%3e%3cpath d='M8 2c3.3 0 6 2.7 6 6s-2.7 6-6 6-6-2.7-6-6 2.7-6 6-6m0-1C4.1 1 1 4.1 1 8s3.1 7 7 7 7-3.1 7-7-3.1-7-7-7z'/%3e%3ccircle cx='8' cy='11' r='1'/%3e%3cpath d='M8.5 9h-1l-.445-4.45A.5.5 0 0 1 7.552 4h.896a.5.5 0 0 1 .497.55L8.5 9z'/%3e%3c/g%3e%3c/svg%3e");background-color:var(--typo3-text-color-info);background-size:contain;display:inline-block;width:1.3333333333em;height:1.3333333333em} +.has-success,.is-valid{--typo3-input-color:var(--typo3-surface-container-success-text);--typo3-input-bg:var(--typo3-surface-container-success);--typo3-input-group-addon-bg:color-mix(in srgb, var(--typo3-input-bg), var(--typo3-input-color) 10%);--typo3-input-border-color:var(--typo3-state-success-border-color);--typo3-input-hover-color:var(--typo3-input-color);--typo3-input-hover-bg:var(--typo3-input-bg);--typo3-input-hover-border-color:var(--typo3-state-success-hover-border-color);--typo3-input-focus-color:var(--typo3-input-color);--typo3-input-focus-bg:var(--typo3-input-bg);--typo3-input-focus-border-color:var(--typo3-state-success-focus-border-color)} +.has-success .form-label:before,.is-valid .form-label:before{content:"";vertical-align:middle;-webkit-mask:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' viewBox='0 0 16 16'%3e%3cg fill='currentColor'%3e%3cpath d='m12.1 5.3-.4-.3c-.1-.1-.3-.1-.4 0L6.6 9.8l-2-2c-.1-.1-.3-.1-.4 0l-.3.4c-.1.1-.1.3 0 .4L6 10.7l.4.3c.1.1.3.1.4 0l.4-.4 4.9-4.9c.1-.1.1-.3 0-.4z'/%3e%3cpath d='M8 2c3.3 0 6 2.7 6 6s-2.7 6-6 6-6-2.7-6-6 2.7-6 6-6m0-1C4.1 1 1 4.1 1 8s3.1 7 7 7 7-3.1 7-7-3.1-7-7-7z'/%3e%3c/g%3e%3c/svg%3e");mask:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' viewBox='0 0 16 16'%3e%3cg fill='currentColor'%3e%3cpath d='m12.1 5.3-.4-.3c-.1-.1-.3-.1-.4 0L6.6 9.8l-2-2c-.1-.1-.3-.1-.4 0l-.3.4c-.1.1-.1.3 0 .4L6 10.7l.4.3c.1.1.3.1.4 0l.4-.4 4.9-4.9c.1-.1.1-.3 0-.4z'/%3e%3cpath d='M8 2c3.3 0 6 2.7 6 6s-2.7 6-6 6-6-2.7-6-6 2.7-6 6-6m0-1C4.1 1 1 4.1 1 8s3.1 7 7 7 7-3.1 7-7-3.1-7-7-7z'/%3e%3c/g%3e%3c/svg%3e");background-color:var(--typo3-text-color-success);background-size:contain;display:inline-block;width:1.3333333333em;height:1.3333333333em} .has-warning{--typo3-input-color:var(--typo3-surface-container-warning-text);--typo3-input-bg:var(--typo3-surface-container-warning);--typo3-input-group-addon-bg:color-mix(in srgb, var(--typo3-input-bg), var(--typo3-input-color) 10%);--typo3-input-border-color:var(--typo3-state-warning-border-color);--typo3-input-hover-color:var(--typo3-input-color);--typo3-input-hover-bg:var(--typo3-input-bg);--typo3-input-hover-border-color:var(--typo3-state-warning-hover-border-color);--typo3-input-focus-color:var(--typo3-input-color);--typo3-input-focus-bg:var(--typo3-input-bg);--typo3-input-focus-border-color:var(--typo3-state-warning-focus-border-color)} .has-warning .form-label:before{content:"";vertical-align:middle;-webkit-mask:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' viewBox='0 0 16 16'%3e%3cg fill='currentColor'%3e%3ccircle cx='8' cy='12' r='1'/%3e%3cpath d='M8.5 10h-1l-.445-4.45A.5.5 0 0 1 7.552 5h.896a.5.5 0 0 1 .497.55L8.5 10z'/%3e%3cpath d='M8 2.008a.98.98 0 0 1 .875.515l5.536 9.992a.983.983 0 0 1-.013.993.983.983 0 0 1-.862.492H2.464a.983.983 0 0 1-.862-.492.983.983 0 0 1-.013-.993l5.536-9.992A.98.98 0 0 1 8 2.008m0-1a1.98 1.98 0 0 0-1.75 1.03L.715 12.032C-.024 13.364.94 15 2.464 15h11.072c1.524 0 2.488-1.636 1.75-2.97L9.749 2.04A1.98 1.98 0 0 0 8 1.009z'/%3e%3c/g%3e%3c/svg%3e");mask:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' viewBox='0 0 16 16'%3e%3cg fill='currentColor'%3e%3ccircle cx='8' cy='12' r='1'/%3e%3cpath d='M8.5 10h-1l-.445-4.45A.5.5 0 0 1 7.552 5h.896a.5.5 0 0 1 .497.55L8.5 10z'/%3e%3cpath d='M8 2.008a.98.98 0 0 1 .875.515l5.536 9.992a.983.983 0 0 1-.013.993.983.983 0 0 1-.862.492H2.464a.983.983 0 0 1-.862-.492.983.983 0 0 1-.013-.993l5.536-9.992A.98.98 0 0 1 8 2.008m0-1a1.98 1.98 0 0 0-1.75 1.03L.715 12.032C-.024 13.364.94 15 2.464 15h11.072c1.524 0 2.488-1.636 1.75-2.97L9.749 2.04A1.98 1.98 0 0 0 8 1.009z'/%3e%3c/g%3e%3c/svg%3e");background-color:var(--typo3-text-color-warning);background-size:contain;display:inline-block;width:1.3333333333em;height:1.3333333333em} +.has-error,.is-invalid{--typo3-input-color:var(--typo3-surface-container-danger-text);--typo3-input-bg:var(--typo3-surface-container-danger);--typo3-input-group-addon-bg:color-mix(in srgb, var(--typo3-input-bg), var(--typo3-input-color) 10%);--typo3-input-border-color:var(--typo3-state-danger-border-color);--typo3-input-hover-color:var(--typo3-input-color);--typo3-input-hover-bg:var(--typo3-input-bg);--typo3-input-hover-border-color:var(--typo3-state-danger-hover-border-color);--typo3-input-focus-color:var(--typo3-input-color);--typo3-input-focus-bg:var(--typo3-input-bg);--typo3-input-focus-border-color:var(--typo3-state-danger-focus-border-color)} +.has-error .form-label:before,.is-invalid .form-label:before{content:"";vertical-align:middle;-webkit-mask:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' viewBox='0 0 16 16'%3e%3cg fill='currentColor'%3e%3cpath d='M8 2c3.3 0 6 2.7 6 6s-2.7 6-6 6-6-2.7-6-6 2.7-6 6-6m0-1C4.1 1 1 4.1 1 8s3.1 7 7 7 7-3.1 7-7-3.1-7-7-7z'/%3e%3ccircle cx='8' cy='11' r='1'/%3e%3cpath d='M8.5 9h-1l-.445-4.45A.5.5 0 0 1 7.552 4h.896a.5.5 0 0 1 .497.55L8.5 9z'/%3e%3c/g%3e%3c/svg%3e");mask:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' viewBox='0 0 16 16'%3e%3cg fill='currentColor'%3e%3cpath d='M8 2c3.3 0 6 2.7 6 6s-2.7 6-6 6-6-2.7-6-6 2.7-6 6-6m0-1C4.1 1 1 4.1 1 8s3.1 7 7 7 7-3.1 7-7-3.1-7-7-7z'/%3e%3ccircle cx='8' cy='11' r='1'/%3e%3cpath d='M8.5 9h-1l-.445-4.45A.5.5 0 0 1 7.552 4h.896a.5.5 0 0 1 .497.55L8.5 9z'/%3e%3c/g%3e%3c/svg%3e");background-color:var(--typo3-text-color-danger);background-size:contain;display:inline-block;width:1.3333333333em;height:1.3333333333em} .form-hint{--typo3-formhint-color:inherit;--typo3-formhint-bg:inherit;--typo3-formhint-border-color:transparent;--typo3-formhint-border-width:var(--typo3-input-border-width);--typo3-formhint-border-radius:var(--typo3-input-border-radius);--typo3-formhint-box-shadow:none;font-size:.625rem;color:var(--typo3-formhint-color);padding:calc(var(--typo3-input-padding-y)/ 2) var(--typo3-input-padding-x);background-color:var(--typo3-formhint-bg);border:var(--typo3-formhint-border-width) solid var(--typo3-formhint-border-color);border-radius:var(--typo3-formhint-border-radius);box-shadow:var(--typo3-formhint-box-shadow)} .form-hint--primary{--typo3-formhint-color:var(--typo3-state-primary-color);--typo3-formhint-bg:var(--typo3-state-primary-bg);--typo3-formhint-border-color:var(--typo3-state-primary-border-color)} .form-hint--secondary{--typo3-formhint-color:var(--typo3-state-secondary-color);--typo3-formhint-bg:var(--typo3-state-secondary-bg);--typo3-formhint-border-color:var(--typo3-state-secondary-border-color)} @@ -3050,8 +3046,6 @@ td .table-fit{margin-bottom:0} .simpletable td,.simpletable th{padding:.25em 1em} .simpletable td:first-child,.simpletable th:first-child{padding-inline-start:0} .simpletable td:last-child,.simpletable th:last-child{padding-inline-end:0} -.tab-pane>.panel{--typo3-panel-bg:#fafafa;--typo3-panel-border-color:#ccc;--typo3-panel-border-radius:0} -.tab-pane>.visually-hidden:first-child+.form-section,.tab-pane>:first-child{border-top:none} select-pure{--typo3-form-selectpure-border-radius:var(--typo3-input-border-radius);--typo3-form-selectpure-border-width:var(--typo3-input-border-width);--typo3-form-selectpure-border-color:var(--typo3-input-border-color);--typo3-form-selectpure-padding-x:var(--typo3-input-padding-x);--typo3-form-selectpure-padding-y:var(--typo3-input-padding-y);--typo3-form-selectpure-font-size:var(--typo3-input-font-size);--typo3-form-selectpure-line-height:var(--typo3-input-line-height);--typo3-form-selectpure-color:var(--typo3-input-color);--typo3-form-selectpure-bg:var(--typo3-input-bg);--typo3-form-selectpure-hover-color:var(--typo3-input-hover-color);--typo3-form-selectpure-hover-bg:var(--typo3-input-hover-bg);--typo3-form-selectpure-focus-border-color:var(--typo3-input-focus-border-color);--typo3-form-selectpure-disabled-color:var(--typo3-input-disabled-color);--typo3-form-selectpure-disabled-bg:var(--typo3-input-disabled-bg);--font-size:var(--typo3-form-selectpure-font-size);--font-family:inherit;--font-weight:400;--border-radius:var(--typo3-form-selectpure-border-radius);--border-width:var(--typo3-form-selectpure-border-width);--border-color:var(--typo3-form-selectpure-border-color);--padding:calc(var(--typo3-form-selectpure-padding-y) - 4px) var(--typo3-form-selectpure-padding-x);--select-height:calc(var(--typo3-form-selectpure-padding-y) * 2 + var(--typo3-form-selectpure-font-size) * var(--typo3-form-selectpure-line-height) + var(--typo3-form-selectpure-border-width) * 2);--select-width:100%;--color:var(--typo3-form-selectpure-color);--background-color:var(--typo3-form-selectpure-bg);--hover-color:var(--typo3-form-selectpure-hover-color);--hover-background-color:var(--typo3-form-selectpure-hover-bg);--disabled-color:var(--typo3-form-selectpure-disabled-color);--disabled-background-color:var(--typo3-form-selectpure-disabled-bg);--select-outline:.25rem solid color-mix(in srgb, var(--typo3-form-selectpure-focus-border-color), transparent 25%);--selected-background-color:var(--typo3-component-active-bg);--selected-color:var(--typo3-component-active-color);--dropdown-gap:calc(var(--typo3-spacing) * .5);--dropdown-items:5;--dropdown-z-index:2} .input-group>select-pure{position:relative;flex:1 1 auto} .cropper-container{position:relative;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none} @@ -3331,8 +3325,8 @@ typo3-backend-form-selecttree-toolbar{display:block} .element-browser-nav{padding:calc(var(--typo3-spacing)/ 2) var(--typo3-spacing);background-color:var(--module-docheader-bg);border-bottom:1px solid var(--module-docheader-border-color)} .element-browser-header+.element-browser-nav{padding-top:0} .element-browser-nav .nav{gap:2px} -.element-browser-nav .nav-link,.element-browser-nav .nav.nav-tabs>li:not(.nav-item)>a:not(.nav-link){box-shadow:inset 0 0 0 1px rgba(0,0,0,.15)} -.element-browser-nav .nav-link:focus-visible,.element-browser-nav .nav.nav-tabs>li:not(.nav-item)>a:focus-visible:not(.nav-link){box-shadow:rgba(0,120,230,.25) 0 0 0 .25rem} +.element-browser-nav .nav-link{box-shadow:inset 0 0 0 1px rgba(0,0,0,.15)} +.element-browser-nav .nav-link:focus-visible{box-shadow:rgba(0,120,230,.25) 0 0 0 .25rem} .element-browser-body{overflow:unset;padding:var(--typo3-spacing)} .element-browser-body>:first-child{margin-top:0} .element-browser-body>:last-child{margin-bottom:0} @@ -3803,20 +3797,20 @@ typo3-rte-ckeditor-ckeditor5 .ck.ck-style-panel .ck-style-grid .ck-style-grid__b .page-position-map .page-position-grid ul{padding:0;list-style:none} .page-position-map .page-position-grid .page-position-action{text-align:center} .page-position-map .page-position-grid .page-position-record{border:1px solid var(--page-position-element-bg);background-color:var(--page-position-element-bg);border-radius:var(--page-position-element-border-radius);box-shadow:var(--typo3-component-box-shadow-strong);margin:var(--page-position-grid-spacing) var(--page-position-grid-inner-spacing);padding:var(--page-position-element-spacing);overflow:hidden} -input[type=range].slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:0;display:inline-block;position:relative;width:210px;height:32px;background:0 0;margin:0 6px} -input[type=range].slider::-webkit-slider-thumb{margin-top:20px;-webkit-appearance:none;appearance:none;border:1px solid #959595;border-radius:.125rem;height:20px;width:16px;margin-top:-4px;cursor:grab;box-shadow:inset 0 calc(20px / 4 * -1) 0 0 #eee,inset 0 calc(20px / 4) 0 0 #eee;background-color:#eee;background-image:linear-gradient(90deg,#eee 30%,#333 30%,#333 40%,#eee 40%,#eee 60%,#333 60%,#333 70%,#eee 70%,#eee)} +input[type=range].slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:0;display:inline-block;position:relative;width:210px;height:3.75rem;background:0 0;margin:0 .375rem} +input[type=range].slider::-webkit-slider-thumb{margin-top:3rem;-webkit-appearance:none;appearance:none;border:1px solid #959595;border-radius:.125rem;height:3rem;width:2rem;margin-top:-.5rem;cursor:grab;box-shadow:inset 0 calc(3rem / 4 * -1) 0 0 #eee,inset 0 calc(3rem / 4) 0 0 #eee;background-color:#eee;background-image:linear-gradient(90deg,#eee 30%,#333 30%,#333 40%,#eee 40%,#eee 60%,#333 60%,#333 70%,#eee 70%,#eee)} input[type=range].slider::-webkit-slider-thumb:active,input[type=range].slider::-webkit-slider-thumb:focus,input[type=range].slider::-webkit-slider-thumb:hover{background-color:#d5d5d5;border-color:#767676} input[type=range].slider::-webkit-slider-thumb:active{cursor:grabbing} -input[type=range].slider::-webkit-slider-runnable-track{height:12px;background:#ddd;border-radius:.125rem;box-sizing:border-box;box-shadow:inset 0 0 2px rgba(0,0,0,.25)} -input[type=range].slider::-moz-range-thumb{-moz-appearance:none;appearance:none;border:1px solid #959595;border-radius:.125rem;height:20px;width:16px;margin-top:-4px;cursor:grab;box-shadow:inset 0 calc(20px / 4 * -1) 0 0 #eee,inset 0 calc(20px / 4) 0 0 #eee;background-color:#eee;background-image:linear-gradient(90deg,#eee 30%,#333 30%,#333 40%,#eee 40%,#eee 60%,#333 60%,#333 70%,#eee 70%,#eee)} +input[type=range].slider::-webkit-slider-runnable-track{height:2rem;background:#ddd;border-radius:.125rem;box-sizing:border-box;box-shadow:inset 0 0 2px rgba(0,0,0,.25)} +input[type=range].slider::-moz-range-thumb{-moz-appearance:none;appearance:none;border:1px solid #959595;border-radius:.125rem;height:3rem;width:2rem;margin-top:-.5rem;cursor:grab;box-shadow:inset 0 calc(3rem / 4 * -1) 0 0 #eee,inset 0 calc(3rem / 4) 0 0 #eee;background-color:#eee;background-image:linear-gradient(90deg,#eee 30%,#333 30%,#333 40%,#eee 40%,#eee 60%,#333 60%,#333 70%,#eee 70%,#eee)} input[type=range].slider::-moz-range-thumb:active,input[type=range].slider::-moz-range-thumb:focus,input[type=range].slider::-moz-range-thumb:hover{background-color:#d5d5d5;border-color:#767676} input[type=range].slider::-moz-range-thumb:active{cursor:grabbing} -input[type=range].slider::-moz-range-track{height:12px;background:#ddd;border-radius:.125rem;box-sizing:border-box;box-shadow:inset 0 0 2px rgba(0,0,0,.25);width:100%} +input[type=range].slider::-moz-range-track{height:2rem;background:#ddd;border-radius:.125rem;box-sizing:border-box;box-shadow:inset 0 0 2px rgba(0,0,0,.25);width:100%} input[type=range].slider::-moz-range-progress{background:#999} -input[type=range].slider::-ms-thumb{appearance:none;border:1px solid #959595;border-radius:.125rem;height:20px;width:16px;margin-top:-4px;cursor:grab;box-shadow:inset 0 calc(20px / 4 * -1) 0 0 #eee,inset 0 calc(20px / 4) 0 0 #eee;background-color:#eee;background-image:linear-gradient(90deg,#eee 30%,#333 30%,#333 40%,#eee 40%,#eee 60%,#333 60%,#333 70%,#eee 70%,#eee);margin-top:inherit} +input[type=range].slider::-ms-thumb{appearance:none;border:1px solid #959595;border-radius:.125rem;height:3rem;width:2rem;margin-top:-.5rem;cursor:grab;box-shadow:inset 0 calc(3rem / 4 * -1) 0 0 #eee,inset 0 calc(3rem / 4) 0 0 #eee;background-color:#eee;background-image:linear-gradient(90deg,#eee 30%,#333 30%,#333 40%,#eee 40%,#eee 60%,#333 60%,#333 70%,#eee 70%,#eee);margin-top:inherit} input[type=range].slider::-ms-thumb:active,input[type=range].slider::-ms-thumb:focus,input[type=range].slider::-ms-thumb:hover{background-color:#d5d5d5;border-color:#767676} input[type=range].slider::-ms-thumb:active{cursor:grabbing} -input[type=range].slider::-ms-track{height:12px;background:#ddd;border-radius:.125rem;box-sizing:border-box;box-shadow:inset 0 0 2px rgba(0,0,0,.25)} +input[type=range].slider::-ms-track{height:2rem;background:#ddd;border-radius:.125rem;box-sizing:border-box;box-shadow:inset 0 0 2px rgba(0,0,0,.25)} input[type=range].slider::-ms-fill-lower{background:#999;border-radius:.125rem;box-sizing:border-box} input[type=range].slider::-ms-fill-upper{background:0 0;border-radius:.125rem;box-sizing:border-box} input[type=range].slider[disabled]::-webkit-slider-thumb{cursor:not-allowed;background-color:#d13a2e;border:1px solid #922920} @@ -3831,28 +3825,12 @@ input[type=range].slider[disabled]::-ms-thumb{cursor:not-allowed;background-colo input[type=range].slider[disabled]::-ms-thumb:active,input[type=range].slider[disabled]::-ms-thumb:focus,input[type=range].slider[disabled]::-ms-thumb:hover{background-color:#a72e25;border-color:#601b15} input[type=range].slider[disabled]::-ms-thumb:after,input[type=range].slider[disabled]::-ms-thumb:before{background-color:#fff} input[type=range].slider[disabled]::-ms-track{cursor:not-allowed} -.form-wizards-items>input[type=range].slider.slider-horizontal{margin-left:8px;margin-right:8px} +.form-wizards-items>input[type=range].slider.slider-horizontal{margin-left:.9375rem;margin-right:.9375rem} .slider-wrapper{display:flex;align-items:center} -.slider-wrapper.slider-vertical{width:auto;margin-bottom:calc(100% - 32px);transform-origin:top left;transform:rotate(-90deg) translate(-100%)} -.slider-wrapper.slider-vertical .slider{margin:6px 0} -.nav-tabs{border-radius:.125rem .125rem 0 0;background-color:#ededed} -.nav-tabs>li+li{margin-inline-start:2px} -.nav-tabs>li>a.nav-link,.nav.nav-tabs>li:not(.nav-item)>a:not(.nav-link){margin-inline-end:0;transition:all .25s ease-in-out} -@media (prefers-reduced-motion:reduce){ -.nav-tabs>li>a.nav-link,.nav.nav-tabs>li:not(.nav-item)>a:not(.nav-link){transition:none} -} -.nav-tabs>li>a.nav-link:focus,.nav-tabs>li>a.nav-link:hover,.nav.nav-tabs>li:not(.nav-item)>a:focus:not(.nav-link),.nav.nav-tabs>li:not(.nav-item)>a:hover:not(.nav-link){border-color:#d7d7d7 #d7d7d7 #ccc;background:#e1e1e1} -.nav-tabs>li>a.nav-link.active,.nav.nav-tabs>li:not(.nav-item)>a.active:not(.nav-link){border:1px solid #ccc;border-bottom-color:#fafafa;background-color:#fafafa} -.nav-tabs>li[class*=has-]>a.nav-link:before,.nav.nav-tabs>li[class*=has-]:not(.nav-item)>a:not(.nav-link):before{transition:all .25s ease-in-out} -@media (prefers-reduced-motion:reduce){ -.nav-tabs>li[class*=has-]>a.nav-link:before,.nav.nav-tabs>li[class*=has-]:not(.nav-item)>a:not(.nav-link):before{transition:none} -} -.nav-tabs>li.has-validation-error>a.nav-link,.nav.nav-tabs>li.has-validation-error:not(.nav-item)>a:not(.nav-link){background-color:#d13a2e;border-color:#a72e25;color:#fff} -.nav-tabs>li.has-validation-error>a.nav-link:focus,.nav-tabs>li.has-validation-error>a.nav-link:hover,.nav.nav-tabs>li.has-validation-error:not(.nav-item)>a:focus:not(.nav-link),.nav.nav-tabs>li.has-validation-error:not(.nav-item)>a:hover:not(.nav-link){color:#fff;background-color:#d64e43;border-color:#bc3429} -.nav-tabs>li.has-validation-error>a.nav-link:before,.nav.nav-tabs>li.has-validation-error:not(.nav-item)>a:not(.nav-link):before{content:"";vertical-align:middle;-webkit-mask:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' viewBox='0 0 16 16'%3e%3cg fill='currentColor'%3e%3cpath d='M8 2c3.3 0 6 2.7 6 6s-2.7 6-6 6-6-2.7-6-6 2.7-6 6-6m0-1C4.1 1 1 4.1 1 8s3.1 7 7 7 7-3.1 7-7-3.1-7-7-7z'/%3e%3ccircle cx='8' cy='11' r='1'/%3e%3cpath d='M8.5 9h-1l-.445-4.45A.5.5 0 0 1 7.552 4h.896a.5.5 0 0 1 .497.55L8.5 9z'/%3e%3c/g%3e%3c/svg%3e");mask:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' viewBox='0 0 16 16'%3e%3cg fill='currentColor'%3e%3cpath d='M8 2c3.3 0 6 2.7 6 6s-2.7 6-6 6-6-2.7-6-6 2.7-6 6-6m0-1C4.1 1 1 4.1 1 8s3.1 7 7 7 7-3.1 7-7-3.1-7-7-7z'/%3e%3ccircle cx='8' cy='11' r='1'/%3e%3cpath d='M8.5 9h-1l-.445-4.45A.5.5 0 0 1 7.552 4h.896a.5.5 0 0 1 .497.55L8.5 9z'/%3e%3c/g%3e%3c/svg%3e");background-color:#fff;background-size:contain;display:inline-block;border-radius:50%;width:14px;height:14px} -.nav-tabs>li.has-validation-error>a.nav-link.active,.nav.nav-tabs>li.has-validation-error:not(.nav-item)>a.active:not(.nav-link){color:inherit;border:1px solid #ccc;border-bottom-color:#fafafa;background-color:#fafafa} -.nav-tabs>li.has-validation-error>a.nav-link.active:before,.nav.nav-tabs>li.has-validation-error:not(.nav-item)>a.active:not(.nav-link):before{background-color:#d13a2e;color:#fff} +.slider-wrapper.slider-vertical{width:auto;margin-bottom:calc(100% - 3.75rem);transform-origin:top left;transform:rotate(-90deg) translate(-100%)} +.slider-wrapper.slider-vertical .slider{margin:.375rem 0} .typo3-TCEforms{width:100%} +.typo3-TCEforms .nav-tabs{--typo3-nav-tabs-bg:var(--typo3-surface-container-low)} .sortableHandle{cursor:move!important} img.t3-tceforms-sysfile-imagepreview{float:var(--typo3-position-start);margin-inline-end:10px;margin-bottom:10px} .typo3-TCEforms span.typo3-TCEforms-newToken{color:#900;font-weight:700} @@ -4026,8 +4004,8 @@ textarea.formengine-textarea{resize:none} .sticky-form-actions{position:sticky;top:0;z-index:2;padding:calc(1rem / 2) 1rem;background:#fff} .modal-body .sticky-form-actions{margin-inline:calc(var(--bs-modal-padding) * -1);margin-bottom:var(--bs-modal-padding);padding:calc(var(--bs-modal-padding)/ 2) var(--bs-modal-padding);border-bottom:var(--bs-modal-border-width) solid var(--bs-modal-border-color)} .modal-body .sticky-form-actions:first-child{transform:translateY(calc(var(--bs-modal-padding) * -1));margin-bottom:0} -.multi-record-selection-actions-wrapper{min-height:26px;margin:.5rem 0} -.localization-wizard .option{margin-bottom:4px} +.multi-record-selection-actions-wrapper{min-height:1rem;margin:.5rem 0} +.localization-wizard .option{margin-bottom:.25rem} .localization-fieldset{display:grid;gap:calc(var(--typo3-spacing)/ 4)} .localization-fieldset+.localization-fieldset{margin-top:var(--typo3-spacing)} .t3-filelist-info-container{display:flex;min-height:300px;flex-direction:column;justify-content:center;align-items:center;margin-top:-2rem} @@ -4175,8 +4153,8 @@ td.permission-column-group{padding-inline-start:0;width:200px;white-space:nowrap .t3-page-ce-dropzone.active.t3-page-ce-dropzone-possible{--pagemodule-dropzone-bg:var(--pagemodule-dropzone-possible-bg);z-index:298} .element-preview a{color:inherit} .element-preview-header:empty{display:none} -.element-preview-header-status{font-size:10.5px;opacity:.5} -.element-preview-header-date{font-size:10.5px} +.element-preview-header-status{font-size:.65625rem;opacity:.5} +.element-preview-header-date{font-size:.65625rem} .element-preview-header-header{font-weight:700} .element-preview-header-subheader{font-weight:700} .element-preview-header+.element-preview-content{margin-top:.5rem} diff --git a/typo3/sysext/backend/Resources/Public/JavaScript/form-engine-validation.js b/typo3/sysext/backend/Resources/Public/JavaScript/form-engine-validation.js index 94a81af2382640918cecbed81b3a6957393f6baf..aee8e2456a3f86b2ec213744bb02cff94834418e 100644 --- a/typo3/sysext/backend/Resources/Public/JavaScript/form-engine-validation.js +++ b/typo3/sysext/backend/Resources/Public/JavaScript/form-engine-validation.js @@ -10,4 +10,4 @@ * * The TYPO3 project - inspiring people to share! */ -import $ from"jquery";import{DateTime}from"luxon";import Md5 from"@typo3/backend/hashing/md5.js";import Modal from"@typo3/backend/modal.js";import Severity from"@typo3/backend/severity.js";import Utility from"@typo3/backend/utility.js";import RegularEvent from"@typo3/core/event/regular-event.js";import DomHelper from"@typo3/backend/utility/dom-helper.js";import{selector}from"@typo3/core/literals.js";import SubmitInterceptor from"@typo3/backend/form/submit-interceptor.js";export default(function(){const FormEngineValidation={rulesSelector:"[data-formengine-validation-rules]",inputSelector:"[data-formengine-input-params]",markerSelector:".t3js-formengine-validation-marker",groupFieldHiddenElement:".t3js-formengine-field-group input[type=hidden]",relatedFieldSelector:"[data-relatedfieldname]",errorClass:"has-error",lastYear:0,lastDate:0,lastTime:0,passwordDummy:"********"};let formEngineFormElement;const customEvaluations=new Map;return FormEngineValidation.initialize=function(e){formEngineFormElement=e,formEngineFormElement.querySelectorAll("."+FormEngineValidation.errorClass).forEach((e=>e.classList.remove(FormEngineValidation.errorClass))),FormEngineValidation.initializeInputFields(),new RegularEvent("change",((e,n)=>{FormEngineValidation.validateField(n),FormEngineValidation.markFieldAsChanged(n)})).delegateTo(formEngineFormElement,FormEngineValidation.rulesSelector),FormEngineValidation.registerSubmitCallback(),FormEngineValidation.validate()},FormEngineValidation.initializeInputFields=function(){formEngineFormElement.querySelectorAll(FormEngineValidation.inputSelector).forEach((e=>{const n=JSON.parse(e.dataset.formengineInputParams).field,t=formEngineFormElement.querySelector(selector`[name="${n}"]`);"formengineInputInitialized"in e.dataset||(t.dataset.config=e.dataset.formengineInputParams,FormEngineValidation.initializeInputField(n))}))},FormEngineValidation.initializeInputField=function(e){const n=formEngineFormElement.querySelector(selector`[name="${e}"]`),t=formEngineFormElement.querySelector(selector`[data-formengine-input-name="${e}"]`);if(void 0!==n.dataset.config){const e=JSON.parse(n.dataset.config),a=FormEngineValidation.formatByEvals(e,n.value);a.length&&(t.value=a)}new RegularEvent("change",(()=>{FormEngineValidation.updateInputField(t.dataset.formengineInputName)})).bindTo(t),t.dataset.formengineInputInitialized="true"},FormEngineValidation.registerCustomEvaluation=function(e,n){customEvaluations.has(e)||customEvaluations.set(e,n)},FormEngineValidation.formatByEvals=function(e,n){if(void 0!==e.evalList){const t=Utility.trimExplode(",",e.evalList);for(const e of t)n=FormEngineValidation.formatValue(e,n)}return n},FormEngineValidation.formatValue=function(e,n){let t="";switch(e){case"date":case"datetime":case"time":case"timesec":if(""===n||"0"===n)return"";const e=DateTime.fromISO(String(n),{zone:"utc"});if(e.isValid)return e.toISO({suppressMilliseconds:!0});const a="number"==typeof n?n:parseInt(n,10);if(isNaN(a))t="";else{t=DateTime.fromSeconds(a,{zone:"utc"}).toISO({suppressMilliseconds:!0})}break;case"password":t=n?FormEngineValidation.passwordDummy:"";break;default:t=n.toString()}return t},FormEngineValidation.updateInputField=function(e){const n=formEngineFormElement.querySelector(selector`[name="${e}"]`),t=formEngineFormElement.querySelector(selector`[data-formengine-input-name="${e}"]`);if(void 0!==n.dataset.config){const e=JSON.parse(n.dataset.config),a=FormEngineValidation.processByEvals(e,t.value),i=FormEngineValidation.formatByEvals(e,a);n.value!==a&&(n.disabled&&n.dataset.enableOnModification&&(n.disabled=!1),n.value=a,n.dispatchEvent(new Event("change")),t.value=i)}},FormEngineValidation.validateField=function(e,n){if(e instanceof $&&(console.warn("Passing a jQuery element to FormEngineValidation.validateField() is deprecated and will be removed in TYPO3 v14."),console.trace(),e=e.get(0)),!(e instanceof HTMLElement))return n;if(n=n||e.value||"",void 0===e.dataset.formengineValidationRules)return n;const t=JSON.parse(e.dataset.formengineValidationRules);let a=!1,i=0;const o=n;let r,l,s;Array.isArray(n)||(n=n.trimStart());for(const o of t){if(a)break;switch(o.type){case"required":""===n&&(a=!0,e.closest(FormEngineValidation.markerSelector).classList.add(FormEngineValidation.errorClass));break;case"range":if(""!==n){if((o.minItems||o.maxItems)&&(r=formEngineFormElement.querySelector(selector`[name="${e.dataset.relatedfieldname}"]`),i=null!==r?Utility.trimExplode(",",r.value).length:parseInt(e.value,10),void 0!==o.minItems&&(l=1*o.minItems,!isNaN(l)&&i<l&&(a=!0)),void 0!==o.maxItems&&(s=1*o.maxItems,!isNaN(s)&&i>s&&(a=!0))),void 0!==o.lower){const e=1*o.lower;!isNaN(e)&&parseInt(n,10)<e&&(a=!0)}if(void 0!==o.upper){const e=1*o.upper;!isNaN(e)&&parseInt(n,10)>e&&(a=!0)}}break;case"select":case"category":(o.minItems||o.maxItems)&&(r=formEngineFormElement.querySelector(selector`[name="${e.dataset.relatedfieldname}"]`),i=null!==r?Utility.trimExplode(",",r.value).length:e instanceof HTMLSelectElement?e.querySelectorAll("option:checked").length:e.querySelectorAll("input[value]:checked").length,void 0!==o.minItems&&(l=1*o.minItems,!isNaN(l)&&i<l&&(a=!0)),void 0!==o.maxItems&&(s=1*o.maxItems,!isNaN(s)&&i>s&&(a=!0)));break;case"group":case"folder":case"inline":(o.minItems||o.maxItems)&&(i=Utility.trimExplode(",",e.value).length,void 0!==o.minItems&&(l=1*o.minItems,!isNaN(l)&&i<l&&(a=!0)),void 0!==o.maxItems&&(s=1*o.maxItems,!isNaN(s)&&i>s&&(a=!0)));break;case"min":(e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement)&&e.value.length>0&&e.value.length<e.minLength&&(a=!0)}}const m=!a,c=e.closest(FormEngineValidation.markerSelector);return null!==c&&c.classList.toggle(FormEngineValidation.errorClass,!m),FormEngineValidation.markParentTab(e,m),formEngineFormElement.dispatchEvent(new CustomEvent("t3-formengine-postfieldvalidation",{cancelable:!1,bubbles:!0})),o},FormEngineValidation.processByEvals=function(e,n){if(void 0!==e.evalList){const t=Utility.trimExplode(",",e.evalList);for(const a of t)n=FormEngineValidation.processValue(a,n,e)}return n},FormEngineValidation.processValue=function(e,n,t){let a="",i="",o=0,r=n;switch(e){case"alpha":case"num":case"alphanum":case"alphanum_x":for(a="",o=0;o<n.length;o++){const t=n.substr(o,1);let i="_"===t||"-"===t,r=t>="a"&&t<="z"||t>="A"&&t<="Z",l=t>="0"&&t<="9";switch(e){case"alphanum":i=!1;break;case"alpha":l=!1,i=!1;break;case"num":r=!1,i=!1}(r||l||i)&&(a+=t)}a!==n&&(r=a);break;case"is_in":if(t.is_in){i=""+n,t.is_in=t.is_in.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&");const e=new RegExp("[^"+t.is_in+"]+","g");a=i.replace(e,"")}else a=i;r=a;break;case"nospace":r=(""+n).replace(/ /g,"");break;case"md5":""!==n&&(r=Md5.hash(n));break;case"upper":r=n.toUpperCase();break;case"lower":r=n.toLowerCase();break;case"integer":""!==n&&(r=FormEngineValidation.parseInt(n));break;case"decimal":""!==n&&(r=FormEngineValidation.parseDouble(n));break;case"trim":r=String(n).trim();break;case"time":case"timesec":if(""!==n){r=DateTime.fromISO(n,{zone:"utc"}).set({year:1970,month:1,day:1}).toISO({suppressMilliseconds:!0})}break;case"year":if(""!==n){let e=parseInt(n,10);isNaN(e)&&(e=(new Date).getUTCFullYear()),r=e.toString(10)}break;case"null":case"password":break;default:customEvaluations.has(e)?r=customEvaluations.get(e).call(null,n):"object"==typeof TBE_EDITOR&&void 0!==TBE_EDITOR.customEvalFunctions&&"function"==typeof TBE_EDITOR.customEvalFunctions[e]&&(r=TBE_EDITOR.customEvalFunctions[e](n))}return r},FormEngineValidation.validate=function(e){(void 0===e||e instanceof Document)&&formEngineFormElement.querySelectorAll(FormEngineValidation.markerSelector+", .t3js-tabmenu-item").forEach((e=>{e.classList.remove(FormEngineValidation.errorClass,"has-validation-error")}));const n=e||document;for(const e of n.querySelectorAll(FormEngineValidation.rulesSelector))if(null===e.closest(".t3js-flex-section-deleted, .t3js-inline-record-deleted, .t3js-file-reference-deleted")){let n=!1;const t=e.value,a=FormEngineValidation.validateField(e,t);if(Array.isArray(a)&&Array.isArray(t)){if(a.length!==t.length)n=!0;else for(let e=0;e<a.length;e++)if(a[e]!==t[e]){n=!0;break}}else a.length&&t!==a&&(n=!0);n&&(e.disabled&&e.dataset.enableOnModification&&(e.disabled=!1),e.value=a)}},FormEngineValidation.markFieldAsChanged=function(e){if(e instanceof $&&(console.warn("Passing a jQuery element to FormEngineValidation.markFieldAsChanged() is deprecated and will be removed in TYPO3 v14."),console.trace(),e=e.get(0)),!(e instanceof HTMLElement))return;const n=e.closest(".t3js-formengine-palette-field");null!==n&&n.classList.add("has-change")},FormEngineValidation.parseInt=function(e){if(!e)return 0;const n=parseInt(""+e,10);return isNaN(n)?0:n},FormEngineValidation.parseDouble=function(e,n=2){let t=""+e;t=t.replace(/[^0-9,.-]/g,"");const a=t.startsWith("-");t=t.replace(/-/g,""),t=t.replace(/,/g,"."),-1===t.indexOf(".")&&(t+=".0");const i=t.split("."),o=i.pop();let r=Number(i.join("")+"."+o);return a&&(r*=-1),t=r.toFixed(n),t},FormEngineValidation.pol=function(foreign,value){return eval(("-"==foreign?"-":"")+value)},FormEngineValidation.markParentTab=function(e,n){DomHelper.parents(e,".tab-pane").forEach((e=>{n&&(n=null===e.querySelector(".has-error"));const t=e.id;formEngineFormElement.querySelector('a[href="#'+t+'"]').closest(".t3js-tabmenu-item").classList.toggle("has-validation-error",!n)}))},FormEngineValidation.registerSubmitCallback=function(){new SubmitInterceptor(formEngineFormElement).addPreSubmitCallback((()=>{if(null===document.querySelector("."+FormEngineValidation.errorClass))return!0;const e=Modal.confirm(TYPO3.lang.alert||"Alert",TYPO3.lang["FormEngine.fieldsMissing"],Severity.error,[{text:TYPO3.lang["button.ok"]||"OK",active:!0,btnClass:"btn-default",name:"ok"}]);return e.addEventListener("button.clicked",(()=>e.hideModal())),!1}))},FormEngineValidation}()); \ No newline at end of file +import $ from"jquery";import{DateTime}from"luxon";import Md5 from"@typo3/backend/hashing/md5.js";import Modal from"@typo3/backend/modal.js";import Severity from"@typo3/backend/severity.js";import Utility from"@typo3/backend/utility.js";import RegularEvent from"@typo3/core/event/regular-event.js";import DomHelper from"@typo3/backend/utility/dom-helper.js";import{selector}from"@typo3/core/literals.js";import SubmitInterceptor from"@typo3/backend/form/submit-interceptor.js";export default(function(){const FormEngineValidation={rulesSelector:"[data-formengine-validation-rules]",inputSelector:"[data-formengine-input-params]",markerSelector:".t3js-formengine-validation-marker",groupFieldHiddenElement:".t3js-formengine-field-group input[type=hidden]",relatedFieldSelector:"[data-relatedfieldname]",errorClass:"has-error",lastYear:0,lastDate:0,lastTime:0,passwordDummy:"********"};let formEngineFormElement;const customEvaluations=new Map;return FormEngineValidation.initialize=function(e){formEngineFormElement=e,formEngineFormElement.querySelectorAll("."+FormEngineValidation.errorClass).forEach((e=>e.classList.remove(FormEngineValidation.errorClass))),FormEngineValidation.initializeInputFields(),new RegularEvent("change",((e,n)=>{FormEngineValidation.validateField(n),FormEngineValidation.markFieldAsChanged(n)})).delegateTo(formEngineFormElement,FormEngineValidation.rulesSelector),FormEngineValidation.registerSubmitCallback(),FormEngineValidation.validate()},FormEngineValidation.initializeInputFields=function(){formEngineFormElement.querySelectorAll(FormEngineValidation.inputSelector).forEach((e=>{const n=JSON.parse(e.dataset.formengineInputParams).field,t=formEngineFormElement.querySelector(selector`[name="${n}"]`);"formengineInputInitialized"in e.dataset||(t.dataset.config=e.dataset.formengineInputParams,FormEngineValidation.initializeInputField(n))}))},FormEngineValidation.initializeInputField=function(e){const n=formEngineFormElement.querySelector(selector`[name="${e}"]`),t=formEngineFormElement.querySelector(selector`[data-formengine-input-name="${e}"]`);if(void 0!==n.dataset.config){const e=JSON.parse(n.dataset.config),a=FormEngineValidation.formatByEvals(e,n.value);a.length&&(t.value=a)}new RegularEvent("change",(()=>{FormEngineValidation.updateInputField(t.dataset.formengineInputName)})).bindTo(t),t.dataset.formengineInputInitialized="true"},FormEngineValidation.registerCustomEvaluation=function(e,n){customEvaluations.has(e)||customEvaluations.set(e,n)},FormEngineValidation.formatByEvals=function(e,n){if(void 0!==e.evalList){const t=Utility.trimExplode(",",e.evalList);for(const e of t)n=FormEngineValidation.formatValue(e,n)}return n},FormEngineValidation.formatValue=function(e,n){let t="";switch(e){case"date":case"datetime":case"time":case"timesec":if(""===n||"0"===n)return"";const e=DateTime.fromISO(String(n),{zone:"utc"});if(e.isValid)return e.toISO({suppressMilliseconds:!0});const a="number"==typeof n?n:parseInt(n,10);if(isNaN(a))t="";else{t=DateTime.fromSeconds(a,{zone:"utc"}).toISO({suppressMilliseconds:!0})}break;case"password":t=n?FormEngineValidation.passwordDummy:"";break;default:t=n.toString()}return t},FormEngineValidation.updateInputField=function(e){const n=formEngineFormElement.querySelector(selector`[name="${e}"]`),t=formEngineFormElement.querySelector(selector`[data-formengine-input-name="${e}"]`);if(void 0!==n.dataset.config){const e=JSON.parse(n.dataset.config),a=FormEngineValidation.processByEvals(e,t.value),i=FormEngineValidation.formatByEvals(e,a);n.value!==a&&(n.disabled&&n.dataset.enableOnModification&&(n.disabled=!1),n.value=a,n.dispatchEvent(new Event("change")),t.value=i)}},FormEngineValidation.validateField=function(e,n){if(e instanceof $&&(console.warn("Passing a jQuery element to FormEngineValidation.validateField() is deprecated and will be removed in TYPO3 v14."),console.trace(),e=e.get(0)),!(e instanceof HTMLElement))return n;if(n=n||e.value||"",void 0===e.dataset.formengineValidationRules)return n;const t=JSON.parse(e.dataset.formengineValidationRules);let a=!1,i=0;const o=n;let r,l,s;Array.isArray(n)||(n=n.trimStart());for(const o of t){if(a)break;switch(o.type){case"required":""===n&&(a=!0,e.closest(FormEngineValidation.markerSelector).classList.add(FormEngineValidation.errorClass));break;case"range":if(""!==n){if((o.minItems||o.maxItems)&&(r=formEngineFormElement.querySelector(selector`[name="${e.dataset.relatedfieldname}"]`),i=null!==r?Utility.trimExplode(",",r.value).length:parseInt(e.value,10),void 0!==o.minItems&&(l=1*o.minItems,!isNaN(l)&&i<l&&(a=!0)),void 0!==o.maxItems&&(s=1*o.maxItems,!isNaN(s)&&i>s&&(a=!0))),void 0!==o.lower){const e=1*o.lower;!isNaN(e)&&parseInt(n,10)<e&&(a=!0)}if(void 0!==o.upper){const e=1*o.upper;!isNaN(e)&&parseInt(n,10)>e&&(a=!0)}}break;case"select":case"category":(o.minItems||o.maxItems)&&(r=formEngineFormElement.querySelector(selector`[name="${e.dataset.relatedfieldname}"]`),i=null!==r?Utility.trimExplode(",",r.value).length:e instanceof HTMLSelectElement?e.querySelectorAll("option:checked").length:e.querySelectorAll("input[value]:checked").length,void 0!==o.minItems&&(l=1*o.minItems,!isNaN(l)&&i<l&&(a=!0)),void 0!==o.maxItems&&(s=1*o.maxItems,!isNaN(s)&&i>s&&(a=!0)));break;case"group":case"folder":case"inline":(o.minItems||o.maxItems)&&(i=Utility.trimExplode(",",e.value).length,void 0!==o.minItems&&(l=1*o.minItems,!isNaN(l)&&i<l&&(a=!0)),void 0!==o.maxItems&&(s=1*o.maxItems,!isNaN(s)&&i>s&&(a=!0)));break;case"min":(e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement)&&e.value.length>0&&e.value.length<e.minLength&&(a=!0)}}const m=!a,c=e.closest(FormEngineValidation.markerSelector);return null!==c&&c.classList.toggle(FormEngineValidation.errorClass,!m),FormEngineValidation.markParentTab(e,m),formEngineFormElement.dispatchEvent(new CustomEvent("t3-formengine-postfieldvalidation",{cancelable:!1,bubbles:!0})),o},FormEngineValidation.processByEvals=function(e,n){if(void 0!==e.evalList){const t=Utility.trimExplode(",",e.evalList);for(const a of t)n=FormEngineValidation.processValue(a,n,e)}return n},FormEngineValidation.processValue=function(e,n,t){let a="",i="",o=0,r=n;switch(e){case"alpha":case"num":case"alphanum":case"alphanum_x":for(a="",o=0;o<n.length;o++){const t=n.substr(o,1);let i="_"===t||"-"===t,r=t>="a"&&t<="z"||t>="A"&&t<="Z",l=t>="0"&&t<="9";switch(e){case"alphanum":i=!1;break;case"alpha":l=!1,i=!1;break;case"num":r=!1,i=!1}(r||l||i)&&(a+=t)}a!==n&&(r=a);break;case"is_in":if(t.is_in){i=""+n,t.is_in=t.is_in.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&");const e=new RegExp("[^"+t.is_in+"]+","g");a=i.replace(e,"")}else a=i;r=a;break;case"nospace":r=(""+n).replace(/ /g,"");break;case"md5":""!==n&&(r=Md5.hash(n));break;case"upper":r=n.toUpperCase();break;case"lower":r=n.toLowerCase();break;case"integer":""!==n&&(r=FormEngineValidation.parseInt(n));break;case"decimal":""!==n&&(r=FormEngineValidation.parseDouble(n));break;case"trim":r=String(n).trim();break;case"time":case"timesec":if(""!==n){r=DateTime.fromISO(n,{zone:"utc"}).set({year:1970,month:1,day:1}).toISO({suppressMilliseconds:!0})}break;case"year":if(""!==n){let e=parseInt(n,10);isNaN(e)&&(e=(new Date).getUTCFullYear()),r=e.toString(10)}break;case"null":case"password":break;default:customEvaluations.has(e)?r=customEvaluations.get(e).call(null,n):"object"==typeof TBE_EDITOR&&void 0!==TBE_EDITOR.customEvalFunctions&&"function"==typeof TBE_EDITOR.customEvalFunctions[e]&&(r=TBE_EDITOR.customEvalFunctions[e](n))}return r},FormEngineValidation.validate=function(e){(void 0===e||e instanceof Document)&&formEngineFormElement.querySelectorAll(FormEngineValidation.markerSelector+", .t3js-tabmenu-item").forEach((e=>{e.classList.remove(FormEngineValidation.errorClass,"has-validation-error")}));const n=e||document;for(const e of n.querySelectorAll(FormEngineValidation.rulesSelector))if(null===e.closest(".t3js-flex-section-deleted, .t3js-inline-record-deleted, .t3js-file-reference-deleted")){let n=!1;const t=e.value,a=FormEngineValidation.validateField(e,t);if(Array.isArray(a)&&Array.isArray(t)){if(a.length!==t.length)n=!0;else for(let e=0;e<a.length;e++)if(a[e]!==t[e]){n=!0;break}}else a.length&&t!==a&&(n=!0);n&&(e.disabled&&e.dataset.enableOnModification&&(e.disabled=!1),e.value=a)}},FormEngineValidation.markFieldAsChanged=function(e){if(e instanceof $&&(console.warn("Passing a jQuery element to FormEngineValidation.markFieldAsChanged() is deprecated and will be removed in TYPO3 v14."),console.trace(),e=e.get(0)),!(e instanceof HTMLElement))return;const n=e.closest(".t3js-formengine-palette-field");null!==n&&n.classList.add("has-change")},FormEngineValidation.parseInt=function(e){if(!e)return 0;const n=parseInt(""+e,10);return isNaN(n)?0:n},FormEngineValidation.parseDouble=function(e,n=2){let t=""+e;t=t.replace(/[^0-9,.-]/g,"");const a=t.startsWith("-");t=t.replace(/-/g,""),t=t.replace(/,/g,"."),-1===t.indexOf(".")&&(t+=".0");const i=t.split("."),o=i.pop();let r=Number(i.join("")+"."+o);return a&&(r*=-1),t=r.toFixed(n),t},FormEngineValidation.pol=function(foreign,value){return eval(("-"==foreign?"-":"")+value)},FormEngineValidation.markParentTab=function(e,n){DomHelper.parents(e,".tab-pane").forEach((e=>{n&&(n=null===e.querySelector(".has-error"));const t=e.id;formEngineFormElement.querySelector('[data-bs-target="#'+t+'"]').closest(".t3js-tabmenu-item").classList.toggle("has-validation-error",!n)}))},FormEngineValidation.registerSubmitCallback=function(){new SubmitInterceptor(formEngineFormElement).addPreSubmitCallback((()=>{if(null===document.querySelector("."+FormEngineValidation.errorClass))return!0;const e=Modal.confirm(TYPO3.lang.alert||"Alert",TYPO3.lang["FormEngine.fieldsMissing"],Severity.error,[{text:TYPO3.lang["button.ok"]||"OK",active:!0,btnClass:"btn-default",name:"ok"}]);return e.addEventListener("button.clicked",(()=>e.hideModal())),!1}))},FormEngineValidation}()); \ No newline at end of file diff --git a/typo3/sysext/backend/Resources/Public/JavaScript/tabs.js b/typo3/sysext/backend/Resources/Public/JavaScript/tabs.js index 1b296150c70b17d64d24495947c5596a30870263..43571b28a87b717370099156804cbd6f8fd19afe 100644 --- a/typo3/sysext/backend/Resources/Public/JavaScript/tabs.js +++ b/typo3/sysext/backend/Resources/Public/JavaScript/tabs.js @@ -10,4 +10,4 @@ * * The TYPO3 project - inspiring people to share! */ -import{Tab}from"bootstrap";import BrowserSession from"@typo3/backend/storage/browser-session.js";import Client from"@typo3/backend/storage/client.js";import DocumentService from"@typo3/core/document-service.js";class Tabs{constructor(){DocumentService.ready().then((()=>{document.querySelectorAll(".t3js-tabs").forEach((e=>{const t=Tabs.receiveActiveTab(e.id);t&&new Tab(document.querySelector('a[href="'+t+'"]')).show();"1"===e.dataset.storeLastTab&&e.addEventListener("show.bs.tab",(e=>{const t=e.currentTarget.id,r=e.target.hash;Tabs.storeActiveTab(t,r)}))}))})),Client.unsetByPrefix("tabs-")}static receiveActiveTab(e){return BrowserSession.get(e)||""}static storeActiveTab(e,t){BrowserSession.set(e,t)}}export default new Tabs; \ No newline at end of file +import{Tab}from"bootstrap";import BrowserSession from"@typo3/backend/storage/browser-session.js";import Client from"@typo3/backend/storage/client.js";import DocumentService from"@typo3/core/document-service.js";class Tabs{constructor(){DocumentService.ready().then((()=>{document.querySelectorAll(".t3js-tabs").forEach((e=>{const t=Tabs.receiveActiveTab(e.id);if(t){const e=document.querySelector('[data-bs-target="#'+t+'"]');e&&new Tab(e).show()}"1"===e.dataset.storeLastTab&&e.addEventListener("show.bs.tab",(e=>{const t=e.currentTarget.id,r=e.target.dataset.bsTarget.slice(1);Tabs.storeActiveTab(t,r)}))}))})),Client.unsetByPrefix("tabs-")}static receiveActiveTab(e){return BrowserSession.get(e)||""}static storeActiveTab(e,t){BrowserSession.set(e,t)}}export default new Tabs; \ No newline at end of file diff --git a/typo3/sysext/core/Tests/Acceptance/Application/Impexp/ExportCest.php b/typo3/sysext/core/Tests/Acceptance/Application/Impexp/ExportCest.php index c88539412444e0c6da8491fc6d01732cfe954014..29d9fcaec663a04b8136b3823571953a64584a2e 100644 --- a/typo3/sysext/core/Tests/Acceptance/Application/Impexp/ExportCest.php +++ b/typo3/sysext/core/Tests/Acceptance/Application/Impexp/ExportCest.php @@ -115,7 +115,7 @@ final class ExportCest extends AbstractCest $pageTitle = 'staticdata'; $exportPageTitle = 'Export pagetree configuration'; $pageIcon = '//*[text()=\'' . $pageTitle . '\']/../../*[contains(@class, \'node-icon\')]'; - $tabExport = 'a[href="#export-filepreset"]'; + $tabExport = 'button[data-bs-target="#export-filepreset"]'; $contentExport = '#export-filepreset'; $presetTitle = 'My First Preset'; $inputPresetTitle = 'input[name="tx_impexp[preset][title]"]'; @@ -168,7 +168,7 @@ final class ExportCest extends AbstractCest $pageTitle = 'staticdata'; $exportPageTitle = 'Export pagetree configuration'; $pageIcon = '//*[text()=\'' . $pageTitle . '\']/../../*[contains(@class, \'node-icon\')]'; - $tabExport = 'a[href="#export-filepreset"]'; + $tabExport = 'button[data-bs-target="#export-filepreset"]'; $contentExport = '#export-filepreset'; $buttonSaveToFile = 'tx_impexp[save_export]'; @@ -200,7 +200,7 @@ final class ExportCest extends AbstractCest $beUsergroupTableTitle = 'Backend usergroup'; $listModuleHeader = '.module-docheader'; $listModuleBtnExport = 'a[title="Export"]'; - $tabExport = 'a[href="#export-filepreset"]'; + $tabExport = 'button[data-bs-target="#export-filepreset"]'; $contentExport = '#export-filepreset'; $buttonSaveToFile = 'tx_impexp[save_export]'; @@ -235,7 +235,7 @@ final class ExportCest extends AbstractCest $rootPageTitle = 'New TYPO3 site'; $sysLanguageTable = '#recordlist-be_groups'; $sysLanguageIcon = 'tr:first-child button[data-contextmenu-trigger]'; - $tabExport = 'a[href="#export-filepreset"]'; + $tabExport = 'button[data-bs-target="#export-filepreset"]'; $contentExport = '#export-filepreset'; $buttonSaveToFile = 'tx_impexp[save_export]'; diff --git a/typo3/sysext/core/Tests/Acceptance/Application/Impexp/ImportCest.php b/typo3/sysext/core/Tests/Acceptance/Application/Impexp/ImportCest.php index c337096351c4663345ce1cfcfa431dfe9d3a81f0..c505b965b9e34d191934db49bd5bd521016ddf7f 100644 --- a/typo3/sysext/core/Tests/Acceptance/Application/Impexp/ImportCest.php +++ b/typo3/sysext/core/Tests/Acceptance/Application/Impexp/ImportCest.php @@ -35,8 +35,8 @@ final class ImportCest extends AbstractCest private string $inFlashMessages = '.typo3-messages'; private string $contextMenuMore = '#contentMenu0 li.context-menu-item-submenu'; private string $contextMenuImport = '#contentMenu1 li.context-menu-item[data-callback-action=importT3d]'; - private string $tabUpload = 'a[href="#import-upload"]'; - private string $tabMessages = 'a[href="#import-errors"]'; + private string $tabUpload = 'button[data-bs-target="#import-upload"]'; + private string $tabMessages = 'button[data-bs-target="#import-errors"]'; private string $inputUploadFile = 'input[type=file]'; private string $checkboxOverwriteFile = 'input#checkOverwriteExistingFiles'; private string $buttonUploadFile = '_upload'; diff --git a/typo3/sysext/core/Tests/Acceptance/Application/Impexp/UsersCest.php b/typo3/sysext/core/Tests/Acceptance/Application/Impexp/UsersCest.php index 055379584ba4c25e4645c8525b65dedcabf6c488..6808b530f5fa296f0f696e73ffe20fd41bca3aa7 100644 --- a/typo3/sysext/core/Tests/Acceptance/Application/Impexp/UsersCest.php +++ b/typo3/sysext/core/Tests/Acceptance/Application/Impexp/UsersCest.php @@ -33,7 +33,7 @@ final class UsersCest extends AbstractCest private string $contextMenuExport = '#contentMenu1 li.context-menu-item[data-callback-action=exportT3d]'; private string $contextMenuImport = '#contentMenu1 li.context-menu-item[data-callback-action=importT3d]'; private string $buttonViewPage = 'span[data-identifier="actions-view-page"]'; - private string $tabUpload = 'a[href="#import-upload"]'; + private string $tabUpload = 'button[data-bs-target="#import-upload"]'; private string $checkboxForceAllUids = 'input#checkForce_all_UIDS'; public function _before(ApplicationTester $I): void @@ -199,7 +199,7 @@ final class UsersCest extends AbstractCest $I->waitForText('Backend user groups'); $I->click('//table/tbody/tr[descendant::button[@data-contextmenu-uid="' . $userGroupId . '"]]/td[2]/a'); $I->waitForElementVisible('#EditDocumentController'); - $I->click('//form[@id="EditDocumentController"]//ul/li[3]/a'); + $I->click('//form[@id="EditDocumentController"]//ul/li[3]/button'); foreach ($modAccessByName as $modName => $modAccess) { if ((bool)$modAccess) { @@ -232,7 +232,7 @@ final class UsersCest extends AbstractCest $I->waitForElement('#typo3-backend-user-list'); $I->click('//table[@id="typo3-backend-user-list"]/tbody/tr[descendant::button[@data-contextmenu-uid="' . $userId . '"]]//a[@title="Edit"]'); $I->waitForElement('#EditDocumentController'); - $I->click('//form[@id="EditDocumentController"]//ul/li[5]/a'); + $I->click('//form[@id="EditDocumentController"]//ul/li[5]/button'); $I->waitForElementVisible($codeMirrorSelector); $I->executeJS("document.querySelector('" . $codeMirrorSelector . "').setContent('" . $userTsConfig . "')"); $I->click($this->inModuleHeader . ' .btn[title="Save"]'); diff --git a/typo3/sysext/core/Tests/Acceptance/Application/RecordList/RecordDownloadWithPresetCest.php b/typo3/sysext/core/Tests/Acceptance/Application/RecordList/RecordDownloadWithPresetCest.php index ab7fcd916edeb1101294351efb66c78ae782cd41..1c42925af5676d1e70f2ab4e0cadc88967a565f4 100644 --- a/typo3/sysext/core/Tests/Acceptance/Application/RecordList/RecordDownloadWithPresetCest.php +++ b/typo3/sysext/core/Tests/Acceptance/Application/RecordList/RecordDownloadWithPresetCest.php @@ -97,7 +97,7 @@ final class RecordDownloadWithPresetCest $I->click('//table[@id="typo3-backend-user-list"]/tbody/tr[descendant::button[@data-contextmenu-uid="' . $userId . '"]]//a[@title="Edit"]'); $I->waitForElement('#EditDocumentController'); // This was "li[5]" in UsersCest. Don't know why, for me the TSconfig is on the third tab... - $I->click('//form[@id="EditDocumentController"]//ul/li[3]/a'); + $I->click('//form[@id="EditDocumentController"]//ul/li[3]/button'); $I->waitForElementVisible($codeMirrorSelector); $I->executeJS("document.querySelector('" . $codeMirrorSelector . "').setContent('" . $userTsConfig . "')"); $I->click($this->inModuleHeader . ' .btn[title="Save"]'); diff --git a/typo3/sysext/impexp/Resources/Private/Templates/Export.html b/typo3/sysext/impexp/Resources/Private/Templates/Export.html index 9cd85669d5864f73e1d7b4a93b8c569d23eab028..2a5ece9ab35f4b0d6e050c0ff65735fd7e38c8a4 100644 --- a/typo3/sysext/impexp/Resources/Private/Templates/Export.html +++ b/typo3/sysext/impexp/Resources/Private/Templates/Export.html @@ -30,26 +30,54 @@ <input type="hidden" name="id" value="{id}" /> <ul class="nav nav-tabs" role="tablist"> <li role="presentation" class="nav-item"> - <a class="nav-link text-capitalize active" href="#export-configuration" aria-controls="export-configuration" role="tab" data-bs-toggle="tab"> + <button + type="button" + class="nav-link active" + data-bs-toggle="tab" + data-bs-target="#export-configuration" + aria-controls="export-configuration" + role="tab" + > <f:translate key="LLL:EXT:impexp/Resources/Private/Language/locallang.xlf:tableselec_configuration" /> - </a> + </button> </li> <li role="presentation" class="nav-item"> - <a class="nav-link text-capitalize" href="#export-filepreset" aria-controls="export-filepreset" role="tab" data-bs-toggle="tab"> + <button + type="button" + class="nav-link" + data-bs-toggle="tab" + data-bs-target="#export-filepreset" + aria-controls="export-filepreset" + role="tab" + > <f:translate key="LLL:EXT:impexp/Resources/Private/Language/locallang.xlf:exportdata_filePreset" /> - </a> + </button> </li> <li role="presentation" class="nav-item"> - <a class="nav-link text-capitalize" href="#export-advancedoptions" aria-controls="export-advancedoptions" role="tab" data-bs-toggle="tab"> + <button + type="button" + class="nav-link" + data-bs-toggle="tab" + data-bs-target="#export-advancedoptions" + aria-controls="export-advancedoptions" + role="tab" + > <f:translate key="LLL:EXT:impexp/Resources/Private/Language/locallang.xlf:exportdata_advancedOptions" /> - </a> + </button> </li> <f:if condition="{errors -> f:count()} > 0"> <li role="presentation" class="nav-item"> - <a class="nav-link text-capitalize" href="#export-errors" aria-controls="export-errors" role="tab" data-bs-toggle="tab"> + <button + type="button" + class="nav-link" + data-bs-toggle="tab" + data-bs-target="#export-errors" + aria-controls="export-errors" + role="tab" + > <f:translate key="LLL:EXT:impexp/Resources/Private/Language/locallang.xlf:exportdata_messages" /> <core:icon identifier="status-dialog-warning" /> - </a> + </button> </li> </f:if> </ul> diff --git a/typo3/sysext/impexp/Resources/Private/Templates/Import.html b/typo3/sysext/impexp/Resources/Private/Templates/Import.html index bd1a487f6ca90433e6365bd60369e01ba74cd1f4..87cd99ae0af1f0964e8e5d3c9d3500c8b3ca3955 100644 --- a/typo3/sysext/impexp/Resources/Private/Templates/Import.html +++ b/typo3/sysext/impexp/Resources/Private/Templates/Import.html @@ -30,30 +30,58 @@ <input type="hidden" name="id" value="{id}" /> <ul class="nav nav-tabs" role="tablist"> <li role="presentation" class="nav-item"> - <a class="nav-link text-capitalize active" href="#import-import" aria-controls="import-import" role="tab" data-bs-toggle="tab"> + <button + type="button" + class="nav-link active" + data-bs-toggle="tab" + data-bs-target="#import-import" + aria-controls="import-import" + role="tab" + > <f:translate key="LLL:EXT:impexp/Resources/Private/Language/locallang.xlf:importdata_import" /> - </a> + </button> </li> <f:if condition="{importFolder}"> <li role="presentation" class="nav-item"> - <a class="nav-link text-capitalize" href="#import-upload" aria-controls="import-upload" role="tab" data-bs-toggle="tab"> + <button + type="button" + class="nav-link" + data-bs-toggle="tab" + data-bs-target="#import-upload" + aria-controls="import-upload" + role="tab" + > <f:translate key="LLL:EXT:impexp/Resources/Private/Language/locallang.xlf:importdata_upload" /> - </a> + </button> </li> </f:if> <f:if condition="{import.metaData}"> <li role="presentation" class="nav-item"> - <a class="nav-link text-capitalize" href="#import-metadata" aria-controls="import-metadata" role="tab" data-bs-toggle="tab"> + <button + type="button" + class="nav-link" + data-bs-toggle="tab" + data-bs-target="#import-metadata" + aria-controls="import-metadata" + role="tab" + > <f:translate key="LLL:EXT:impexp/Resources/Private/Language/locallang.xlf:importdata_metaData_1387" /> - </a> + </button> </li> </f:if> <f:if condition="{errors -> f:count()} > 0"> <li role="presentation" class="nav-item"> - <a class="nav-link text-capitalize" href="#import-errors" aria-controls="import-errors" role="tab" data-bs-toggle="tab"> + <button + type="button" + class="nav-link" + data-bs-toggle="tab" + data-bs-target="#import-errors" + aria-controls="import-errors" + role="tab" + > <f:translate key="LLL:EXT:impexp/Resources/Private/Language/locallang.xlf:importdata_messages" /> <core:icon identifier="status-dialog-warning" /> - </a> + </button> </li> </f:if> </ul> diff --git a/typo3/sysext/install/Resources/Private/Partials/Settings/ExtensionConfiguration/ExtensionForm.html b/typo3/sysext/install/Resources/Private/Partials/Settings/ExtensionConfiguration/ExtensionForm.html index b3ec8c79c9ad17961e61275581e143b9fd399bda..89552b7c144374556d7d9844fd6165106c4525c2 100644 --- a/typo3/sysext/install/Resources/Private/Partials/Settings/ExtensionConfiguration/ExtensionForm.html +++ b/typo3/sysext/install/Resources/Private/Partials/Settings/ExtensionConfiguration/ExtensionForm.html @@ -30,7 +30,16 @@ <f:for each="{extensionData}" as="category" key="categoryName" iteration="iteration"> <f:if condition="{categoryName}"> <li role="presentation" class="nav-item"> - <a class="nav-link text-capitalize {f:if(condition:'{iteration.isFirst}', then:'active')}" href="#{i:format.noSpace(value:'category-{extensionKey}-{categoryName}')}" aria-controls="category-{extensionKey}-{categoryName}" role="tab" data-bs-toggle="tab">{categoryName}</a> + <button + type="button" + class="nav-link{f:if(condition:'{iteration.isFirst}', then:' active')}" + data-bs-toggle="tab" + data-bs-target="#{i:format.noSpace(value:'category-{extensionKey}-{categoryName}')}" + aria-controls="category-{extensionKey}-{categoryName}" + role="tab" + > + {categoryName} + </button> </li> </f:if> </f:for> diff --git a/typo3/sysext/setup/Resources/Private/Templates/Main.html b/typo3/sysext/setup/Resources/Private/Templates/Main.html index db12d09204710b6f5fb72806ff921b5cf85f1a04..d1c5b5ad950ed3095d74639d84447eb92bb631b0 100644 --- a/typo3/sysext/setup/Resources/Private/Templates/Main.html +++ b/typo3/sysext/setup/Resources/Private/Templates/Main.html @@ -36,9 +36,16 @@ <f:for each="{menuItems}" as="item" iteration="iteration"> <f:if condition="{item.content}"> <li role="presentation" class="t3js-tabmenu-item nav-item"> - <a href="#{menuId}-{iteration.cycle}" class="nav-link {f:if(condition: '{iteration.cycle} == 1', then: ' active')}" aria-controls="{menuId}-{iteration.cycle}" role="tab" data-bs-toggle="tab"> + <button + type="button" + class="nav-link {f:if(condition: '{iteration.cycle} == 1', then: ' active')}" + data-bs-toggle="tab" + data-bs-target="#{menuId}-{iteration.cycle}" + aria-controls="{menuId}-{iteration.cycle}" + role="tab" + > {item.label} - </a> + </button> </li> </f:if> </f:for> diff --git a/typo3/sysext/styleguide/Classes/Controller/ComponentsController.php b/typo3/sysext/styleguide/Classes/Controller/ComponentsController.php index 822495d04c00f8ff4e374ffa10fafb96485086b7..74853df222955c11b30ce1a2676626835ec0d8fc 100644 --- a/typo3/sysext/styleguide/Classes/Controller/ComponentsController.php +++ b/typo3/sysext/styleguide/Classes/Controller/ComponentsController.php @@ -54,6 +54,7 @@ final class ComponentsController 'infobox', 'input', 'modal', + 'navs', 'notifications', 'pagination', 'panels', @@ -91,6 +92,7 @@ final class ComponentsController 'infobox' => $this->renderInfoboxView($request), 'input' => $this->renderInputView($request), 'modal' => $this->renderModalView($request), + 'navs' => $this->renderNavsView($request), 'notifications' => $this->renderNotificationsView($request), 'pagination' => $this->renderPaginationView($request), 'panels' => $this->renderPanelsView($request), @@ -254,6 +256,17 @@ final class ComponentsController return $view->renderResponse('Backend/Components/Modal'); } + private function renderNavsView(ServerRequestInterface $request): ResponseInterface + { + $view = $this->createModuleTemplate($request, 'navs'); + $view->assignMultiple([ + 'actions' => $this->allowedActions, + 'currentAction' => 'navs', + 'routeIdentifier' => 'styleguide_components', + ]); + return $view->renderResponse('Backend/Components/Navs'); + } + private function renderNotificationsView(ServerRequestInterface $request): ResponseInterface { $view = $this->createModuleTemplate($request, 'notifications'); diff --git a/typo3/sysext/styleguide/Resources/Private/Language/locallang.xlf b/typo3/sysext/styleguide/Resources/Private/Language/locallang.xlf index fd3704b87f6208d28fa06aff792ff3fa97c8fbd0..0cb873ee1bbeef989af4be827ccbd4219a8ae354 100644 --- a/typo3/sysext/styleguide/Resources/Private/Language/locallang.xlf +++ b/typo3/sysext/styleguide/Resources/Private/Language/locallang.xlf @@ -88,6 +88,9 @@ <trans-unit id="action.modal" resname="action.modal"> <source>Modal</source> </trans-unit> + <trans-unit id="action.navs" resname="action.navs"> + <source>Navs</source> + </trans-unit> <trans-unit id="action.notifications" resname="action.notifications"> <source>Notifications</source> </trans-unit> @@ -459,6 +462,24 @@ <source>Severity</source> </trans-unit> + <!-- Component: Navs --> + <trans-unit id="component.navs.headline" resname="component.navs.headline"> + <source>Navs</source> + </trans-unit> + <trans-unit id="component.navs.basic.headline" resname="component.navs.basic.headline"> + <source>Basic</source> + </trans-unit> + <trans-unit id="component.navs.flat.headline" resname="component.navs.flat.headline"> + <source>Flat</source> + </trans-unit> + <trans-unit id="component.navs.pills.headline" resname="component.navs.pills.headline"> + <source>Pills</source> + </trans-unit> + <trans-unit id="component.navs.tabs.headline" resname="component.navs.tabs.headline"> + <source>Tabs</source> + </trans-unit> + + <!-- Component: Notification --> <trans-unit id="component.notification.headline" resname="component.notification.headline"> <source>Notifications</source> diff --git a/typo3/sysext/styleguide/Resources/Private/Templates/Backend/Components/Navs.html b/typo3/sysext/styleguide/Resources/Private/Templates/Backend/Components/Navs.html new file mode 100644 index 0000000000000000000000000000000000000000..20efb09cb534688b516ff1f946ebd92b735ee6ba --- /dev/null +++ b/typo3/sysext/styleguide/Resources/Private/Templates/Backend/Components/Navs.html @@ -0,0 +1,129 @@ +<html + xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" + xmlns:core="http://typo3.org/ns/TYPO3/CMS/Core/ViewHelpers" + xmlns:sg="http://typo3.org/ns/TYPO3/CMS/Styleguide/ViewHelpers" + data-namespace-typo3-fluid="true" +> + +<f:layout name="Module" /> + +<f:section name="Content"> + + <f:render + partial="Backend/Navigation" + arguments="{ + currentAction: currentAction, + actions: actions, + route: routeIdentifier + }" + /> + + <div class="styleguide-content"> + + <h1><f:translate key="LLL:EXT:styleguide/Resources/Private/Language/locallang.xlf:component.navs.headline" /></h1> + + <h2><f:translate key="LLL:EXT:styleguide/Resources/Private/Language/locallang.xlf:component.navs.basic.headline" /></h2> + <sg:example codePreview="true" codeLanguage="html"> + <ul class="nav"> + <li class="nav-item"> + <a class="nav-link active" aria-current="page" href="#">Active</a> + </li> + <li class="nav-item"> + <a class="nav-link" href="#">Link</a> + </li> + <li class="nav-item"> + <a class="nav-link" href="#">Link</a> + </li> + <li class="nav-item"> + <a class="nav-link disabled" aria-disabled="true">Disabled</a> + </li> + </ul> + </sg:example> + + <h2><f:translate key="LLL:EXT:styleguide/Resources/Private/Language/locallang.xlf:component.navs.flat.headline" /></h2> + <sg:example codePreview="true" codeLanguage="html"> + <nav class="nav"> + <a class="nav-link active" aria-current="page" href="#">Active</a> + <a class="nav-link" href="#">Link</a> + <a class="nav-link" href="#">Link</a> + <a class="nav-link disabled" aria-disabled="true">Disabled</a> + </nav> + </sg:example> + + <h2><f:translate key="LLL:EXT:styleguide/Resources/Private/Language/locallang.xlf:component.navs.tabs.headline" /></h2> + <sg:example codePreview="true" codeLanguage="html"> + <div role="tabpanel"> + <ul class="nav nav-tabs" role="tablist"> + <li role="presentation"> + <button + type="button" + class="nav-link active" + title="Tab 1" + data-bs-toggle="tab" + data-bs-target="#panel-1-<UNIQUEID>" + aria-controls="panel-1-<UNIQUEID>" + role="tab" + > + Tab 1 + </button> + </li> + <li role="presentation"> + <button + type="button" + class="nav-link" + title="Tab 2" + data-bs-toggle="tab" + data-bs-target="#panel-2-<UNIQUEID>" + aria-controls="panel-2-<UNIQUEID>" + role="tab" + > + Tab 2 + </button> + </li> + </ul> + <div class="tab-content"> + <div role="tabpanel" class="tab-pane active" id="panel-1-<UNIQUEID>"> + <div class="panel"> + <div class="panel-body"> + Lorem ipsum dolor sit amet, consetetur sadipscing elitr, + sed diam nonumy eirmod tempor invidunt ut labore et dolore + magna aliquyam erat, sed diam voluptua. At vero eos et + accusam et justo duo dolores. + </div> + </div> + </div> + <div role="tabpanel" class="tab-pane" id="panel-2-<UNIQUEID>"> + <div class="panel"> + <div class="panel-body"> + In venenatis consequat tellus, vel luctus nisi sollicitudin + ut. Interdum et malesuada fames ac ante ipsum primis in + faucibus. Integer dapibus enim viverra quam placerat, eu + varius libero elementum. Duis vitae dictum velit. + </div> + </div> + </div> + </div> + </div> + </sg:example> + + <h2><f:translate key="LLL:EXT:styleguide/Resources/Private/Language/locallang.xlf:component.navs.pills.headline" /></h2> + <sg:example codePreview="true" codeLanguage="html"> + <ul class="nav nav-pills"> + <li class="nav-item"> + <a class="nav-link active" aria-current="page" href="#">Active</a> + </li> + <li class="nav-item"> + <a class="nav-link" href="#">Link</a> + </li> + <li class="nav-item"> + <a class="nav-link" href="#">Link</a> + </li> + <li class="nav-item"> + <a class="nav-link disabled" aria-disabled="true">Disabled</a> + </li> + </ul> + </sg:example> + + </div> + +</f:section> diff --git a/typo3/sysext/styleguide/Resources/Private/Templates/Backend/Components/Tab.html b/typo3/sysext/styleguide/Resources/Private/Templates/Backend/Components/Tab.html index 3390f9c8c7da25b241b8173dfc070f4b8424462e..b93bcc293996534cd836d1d2c3a9063fe7225a31 100644 --- a/typo3/sysext/styleguide/Resources/Private/Templates/Backend/Components/Tab.html +++ b/typo3/sysext/styleguide/Resources/Private/Templates/Backend/Components/Tab.html @@ -48,8 +48,6 @@ </div> </sg:example> - <hr> - <h2><f:translate key="LLL:EXT:styleguide/Resources/Private/Language/locallang.xlf:section.frontend.headline" /></h2> <h3><f:translate key="LLL:EXT:styleguide/Resources/Private/Language/locallang.xlf:section.colorScheme.headline" /></h3> @@ -93,10 +91,17 @@ </f:section> <f:section name="tabNavigationItem"> - <li role="presentation" class="t3js-tabmenu-item"> - <a href="#{identifier}-{iterator}"{f:if(condition: '{iterator} == 1', then: ' class="active"')} title="" aria-controls="{identifier}-{iterator}" role="tab" data-bs-toggle="tab"> + <li role="presentation" class="nav-item t3js-tabmenu-item"> + <button + type="button" + class="nav-link{f:if(condition: '{iterator} == 1', then: ' active')}" + data-bs-toggle="tab" + data-bs-target="#{identifier}-{iterator}" + aria-controls="{identifier}-{iterator}" + role="tab" + > Tab {iterator} - </a> + </button> </li> </f:section> diff --git a/typo3/sysext/workspaces/Resources/Public/Css/preview.css b/typo3/sysext/workspaces/Resources/Public/Css/preview.css index 2f447ae2f9c11aa822f5a3ff43f3a07f3634ac51..3f1b9f234d21cc1dd38206bd47d68229ce939d2a 100644 --- a/typo3/sysext/workspaces/Resources/Public/Css/preview.css +++ b/typo3/sysext/workspaces/Resources/Public/Css/preview.css @@ -20,12 +20,6 @@ .typo3-topbar-site-logo{padding-top:1px;padding-inline-end:.25em;display:inline-block;vertical-align:top} .typo3-topbar-site-logo img{display:block;height:22px;width:22px} .typo3-topbar-site-name{vertical-align:top} -.typo3-topbar-tabs{margin-inline-end:2em;float:var(--typo3-position-start);position:relative} -.typo3-topbar-tabs .nav-tabs{overflow:hidden;border-radius:2px;border:none;background:0 0} -.typo3-topbar-tabs .nav-tabs>li{margin-bottom:0} -.typo3-topbar-tabs .nav-tabs>li+li{margin-inline-start:0;border-inline-start:1px solid rgba(0,0,0,.5)} -.typo3-topbar-tabs .nav-tabs>li.active>a{background-color:#fff} -.typo3-topbar-tabs .nav-tabs>li>a{padding-top:0;padding-bottom:0;line-height:26px;background-color:#ccc;border:none!important;border-radius:0} .typo3-topbar-workspace-actions{clear:none;float:var(--typo3-position-start)} .typo3-topbar-workspace-actions .workspace-action{margin-top:0;margin-bottom:0;float:var(--typo3-position-start);margin-inline-end:2em} @media (max-width:920px){ diff --git a/typo3/sysext/workspaces/Resources/Public/JavaScript/renderable/record-information.js b/typo3/sysext/workspaces/Resources/Public/JavaScript/renderable/record-information.js index 95ef7b405f7e5a65bf3c6c5128305e2f335cd816..b4fb2a58e38320022f6d00d262cf5b05ed0fe3d8 100644 --- a/typo3/sysext/workspaces/Resources/Public/JavaScript/renderable/record-information.js +++ b/typo3/sysext/workspaces/Resources/Public/JavaScript/renderable/record-information.js @@ -10,7 +10,7 @@ * * The TYPO3 project - inspiring people to share! */ -var __decorate=function(e,t,r,o){var s,n=arguments.length,i=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,o);else for(var a=e.length-1;a>=0;a--)(s=e[a])&&(i=(n<3?s(i):n>3?s(t,r,i):s(t,r))||i);return n>3&&i&&Object.defineProperty(t,r,i),i};import{customElement,property}from"lit/decorators.js";import{html,LitElement,nothing}from"lit";import{unsafeHTML}from"lit/directives/unsafe-html.js";import"@typo3/workspaces/renderable/diff-view.js";import"@typo3/workspaces/renderable/comment-view.js";import"@typo3/workspaces/renderable/history-view.js";let RecordInformationElement=class extends LitElement{constructor(){super(...arguments),this.TYPO3lang=null}createRenderRoot(){return this}render(){return html` +var __decorate=function(e,t,r,o){var s,n=arguments.length,a=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,o);else for(var i=e.length-1;i>=0;i--)(s=e[i])&&(a=(n<3?s(a):n>3?s(t,r,a):s(t,r))||a);return n>3&&a&&Object.defineProperty(t,r,a),a};import{customElement,property}from"lit/decorators.js";import{html,LitElement,nothing}from"lit";import{unsafeHTML}from"lit/directives/unsafe-html.js";import"@typo3/workspaces/renderable/diff-view.js";import"@typo3/workspaces/renderable/comment-view.js";import"@typo3/workspaces/renderable/history-view.js";let RecordInformationElement=class extends LitElement{constructor(){super(...arguments),this.TYPO3lang=null}createRenderRoot(){return this}render(){return html` <div> <p>${unsafeHTML(this.TYPO3lang.path.replace("{0}",this.record.path_Live))}</p> <p>${unsafeHTML(this.TYPO3lang.current_step.replace("{0}",this.record.label_Stage).replace("{1}",this.record.stage_position).replace("{2}",this.record.stage_count))}</p> @@ -45,13 +45,16 @@ var __decorate=function(e,t,r,o){var s,n=arguments.length,i=n<3?t:null===o?o=Obj </div> `}renderNavLink(e,t,r=0){return html` <li class="nav-item" role="presentation"> - <a class="nav-link" - data-bs-toggle="tab" - href="${t}" - role="tab" - aria-controls="${t}"> + <button + type="button" + class="nav-link" + data-bs-toggle="tab" + data-bs-target="${t}" + aria-controls="${t}" + role="tab" + > ${e} ${r>0?html`<span class="badge">${r}</span>`:nothing} - </a> + </button> </li> `}firstUpdated(){this.renderRoot.querySelector(".nav-link").classList.add("active"),this.renderRoot.querySelector(".tab-pane").classList.add("active")}};__decorate([property({type:Object})],RecordInformationElement.prototype,"record",void 0),__decorate([property({type:Object})],RecordInformationElement.prototype,"TYPO3lang",void 0),RecordInformationElement=__decorate([customElement("typo3-workspaces-record-information")],RecordInformationElement);export{RecordInformationElement}; \ No newline at end of file