From c59a09fd38f7017105dd8e33017a1ed0b0f15025 Mon Sep 17 00:00:00 2001 From: tischsoic Date: Tue, 10 Mar 2026 09:52:57 +0100 Subject: [PATCH 01/15] fix: Migrate account/profile/view.html.twig ibexa-tag to DS - Replace 1 non-removable ibexa-tag loop with Refs: IBX-11416 --- .../views/themes/admin/account/profile/view.html.twig | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/bundle/Resources/views/themes/admin/account/profile/view.html.twig b/src/bundle/Resources/views/themes/admin/account/profile/view.html.twig index 0f56a61756..0c179e5d48 100644 --- a/src/bundle/Resources/views/themes/admin/account/profile/view.html.twig +++ b/src/bundle/Resources/views/themes/admin/account/profile/view.html.twig @@ -91,11 +91,9 @@ {% for role_assigment in roles %} -
-
- {{ role_assigment.identifier }} -
-
+ + {{ role_assigment.identifier }} + {% endfor %} {% endif %} From 41b6069f7669dc7f1f1e1a121d4a57364355c37b Mon Sep 17 00:00:00 2001 From: tischsoic Date: Tue, 10 Mar 2026 09:53:18 +0100 Subject: [PATCH 02/15] fix: Migrate limitation/udw_limitation_value.html.twig ibexa-tag to DS - Replace 1 non-removable ibexa-tag ({% else %} branch only) with - include() calls to udw_limitation_value_list_item.html.twig left untouched (Phase 7) Refs: IBX-11416 --- .../admin/limitation/udw_limitation_value.html.twig | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/bundle/Resources/views/themes/admin/limitation/udw_limitation_value.html.twig b/src/bundle/Resources/views/themes/admin/limitation/udw_limitation_value.html.twig index 79d0021a7a..d0095dc4c4 100755 --- a/src/bundle/Resources/views/themes/admin/limitation/udw_limitation_value.html.twig +++ b/src/bundle/Resources/views/themes/admin/limitation/udw_limitation_value.html.twig @@ -37,11 +37,9 @@ }) }} {% else %}
  • -
    -
    - {{ "role.policy.limitation.location_deleted"|trans({}, 'ibexa_content_forms_role')|desc("Location deleted") }} -
    -
    + + {{ "role.policy.limitation.location_deleted"|trans({}, 'ibexa_content_forms_role')|desc("Location deleted") }} +
  • {% endif %} {% endfor %} From 0e729300320430a4d46938aa187ffba1396cbc82 Mon Sep 17 00:00:00 2001 From: tischsoic Date: Tue, 10 Mar 2026 09:53:39 +0100 Subject: [PATCH 03/15] fix: Migrate content_fields.html.twig ibexa-tag to DS - Replace multi-select
  • pattern: move ibexa-selection__item to
  • , wrap content in - Replace single-select attr|merge ibexa-tag injection + ibexa-tag__content wrapper with wrapping block('simple_block_field') Refs: IBX-11416 --- .../ui/field_type/preview/content_fields.html.twig | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/bundle/Resources/views/themes/admin/ui/field_type/preview/content_fields.html.twig b/src/bundle/Resources/views/themes/admin/ui/field_type/preview/content_fields.html.twig index f8e49d76ec..52cdfcf9c9 100644 --- a/src/bundle/Resources/views/themes/admin/ui/field_type/preview/content_fields.html.twig +++ b/src/bundle/Resources/views/themes/admin/ui/field_type/preview/content_fields.html.twig @@ -150,21 +150,21 @@ {% set attr = attr|merge({'class': (attr.class|default('') ~ ' ibexa-field-preview ibexa-field-preview--ibexa_selection-multiple')|trim}) %}
      {% for selectedIndex in field.value.selection %} -
    • -
      +
    • + {{ options[selectedIndex] }} - +
    • {% endfor %}
    {% elseif not fieldSettings.isMultiple %} - {% set attr = attr|merge({'class': (attr.class|default('') ~ ' ibexa-field-preview ibexa-field-preview--ibexa_selection-single ibexa-tag')|trim}) %} + {% set attr = attr|merge({'class': (attr.class|default('') ~ ' ibexa-field-preview ibexa-field-preview--ibexa_selection-single')|trim}) %} {% set field_value = options[field.value.selection|first]|escape %} -
    + {{ block( 'simple_block_field' ) }} -
    +
    {% endif %} {% endblock %} From 7217e7511a765f6b00b74f655ed17c4406556126 Mon Sep 17 00:00:00 2001 From: tischsoic Date: Tue, 10 Mar 2026 09:53:55 +0100 Subject: [PATCH 04/15] fix: Migrate criteria_tags.html.twig language tag to DS MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Replace inline ibexa-tag language filter with - Preserve ibexa-search-criteria-tags__tag companion class via class prop - search_tag.html.twig includes left untouched (Phase 6 — blocked) Refs: IBX-11416 --- .../themes/admin/ui/search/criteria_tags.html.twig | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/bundle/Resources/views/themes/admin/ui/search/criteria_tags.html.twig b/src/bundle/Resources/views/themes/admin/ui/search/criteria_tags.html.twig index 4bf8b8dd65..e5838a97a6 100644 --- a/src/bundle/Resources/views/themes/admin/ui/search/criteria_tags.html.twig +++ b/src/bundle/Resources/views/themes/admin/ui/search/criteria_tags.html.twig @@ -2,13 +2,11 @@
    {% if form.children.search_language.vars.value != '' %} -
    -
    - {{ 'search.in_language'|trans({ - '%search_language%': form.children.search_language.vars.data.name, - })|desc('in %search_language%')}} -
    -
    + + {{ 'search.in_language'|trans({ + '%search_language%': form.children.search_language.vars.data.name, + })|desc('in %search_language%')}} + {% endif %} {% if form.content_types.vars.data is not empty %} From c034a0d60f99764e90b0d6b4b7d2371954cce91d Mon Sep 17 00:00:00 2001 From: tischsoic Date: Tue, 10 Mar 2026 10:13:01 +0100 Subject: [PATCH 05/15] =?UTF-8?q?fix:=20Add=20TODO=20comment=20to=20tag.ht?= =?UTF-8?q?ml.twig=20=E2=80=94=20blocked=20on=20DS=20chip=20spinner=20supp?= =?UTF-8?q?ort?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Migration to deferred until DS chip supports loading/spinner state (ibexa-tag__spinner / is_loading_state) Refs: IBX-11416, IBX-11417 --- src/bundle/Resources/views/themes/admin/ui/tag.html.twig | 1 + 1 file changed, 1 insertion(+) diff --git a/src/bundle/Resources/views/themes/admin/ui/tag.html.twig b/src/bundle/Resources/views/themes/admin/ui/tag.html.twig index ef899db4ea..9003b07c4b 100644 --- a/src/bundle/Resources/views/themes/admin/ui/tag.html.twig +++ b/src/bundle/Resources/views/themes/admin/ui/tag.html.twig @@ -1,3 +1,4 @@ +{# TODO IBX-11417: Migrate to when DS chip supports a loading/spinner state (ibexa-tag__spinner / is_loading_state) #} {% import '@ibexadesign/ui/component/macros.html.twig' as html %} {% set is_deletable = is_deletable is defined ? is_deletable : true %} From b644877c531986cba340b0f27668560a263e4461 Mon Sep 17 00:00:00 2001 From: tischsoic Date: Tue, 10 Mar 2026 10:40:45 +0100 Subject: [PATCH 06/15] fix: Migrate page_title.html.twig {% block tag %} to DS - Replace ibexa-badge + tag_extra_classes pattern with - Preserve tag_extra_classes as class prop passthrough (supports --custom-colors callers) - Preserve tag_attr.style passthrough (supports payment/shipment custom-color callers) - Remove now-unused macros.html.twig import Refs: IBX-11416 --- .../views/themes/admin/ui/page_title.html.twig | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/src/bundle/Resources/views/themes/admin/ui/page_title.html.twig b/src/bundle/Resources/views/themes/admin/ui/page_title.html.twig index 7e66b6cd0b..e7276e2ce9 100644 --- a/src/bundle/Resources/views/themes/admin/ui/page_title.html.twig +++ b/src/bundle/Resources/views/themes/admin/ui/page_title.html.twig @@ -1,5 +1,3 @@ -{% import '@ibexadesign/ui/component/macros.html.twig' as html %} - {% if title is defined %}
    @@ -7,15 +5,13 @@ {{ title }} {% block tag %} {% if tag is defined %} - {% set attr = tag_attr|default({})|merge({ - class: (tag_attr.class|default('') - ~ ' ibexa-badge ' ~ tag_extra_classes|default('') - )|trim, - }) %} - -
    + {{ tag }} -
    + {% endif %} {% endblock %} From f83992b5702e233bb015a1b10e71d4e027e3e724 Mon Sep 17 00:00:00 2001 From: tischsoic Date: Wed, 11 Mar 2026 13:15:45 +0100 Subject: [PATCH 07/15] Revert "fix: Migrate page_title.html.twig {% block tag %} to DS " This reverts commit 122742ae24651b5364902c769b91caafb331b387. --- .../views/themes/admin/ui/page_title.html.twig | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/bundle/Resources/views/themes/admin/ui/page_title.html.twig b/src/bundle/Resources/views/themes/admin/ui/page_title.html.twig index e7276e2ce9..7e66b6cd0b 100644 --- a/src/bundle/Resources/views/themes/admin/ui/page_title.html.twig +++ b/src/bundle/Resources/views/themes/admin/ui/page_title.html.twig @@ -1,3 +1,5 @@ +{% import '@ibexadesign/ui/component/macros.html.twig' as html %} + {% if title is defined %}
    @@ -5,13 +7,15 @@ {{ title }} {% block tag %} {% if tag is defined %} - + {% set attr = tag_attr|default({})|merge({ + class: (tag_attr.class|default('') + ~ ' ibexa-badge ' ~ tag_extra_classes|default('') + )|trim, + }) %} + +
    {{ tag }} - +
    {% endif %} {% endblock %} From 094700eff601da5884ec82d0d208140606f8f665 Mon Sep 17 00:00:00 2001 From: tischsoic Date: Wed, 11 Mar 2026 13:44:59 +0100 Subject: [PATCH 08/15] fix: Restore DS tag in page_title with safe attributes --- .../views/themes/admin/ui/page_title.html.twig | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/src/bundle/Resources/views/themes/admin/ui/page_title.html.twig b/src/bundle/Resources/views/themes/admin/ui/page_title.html.twig index 7e66b6cd0b..46906cf721 100644 --- a/src/bundle/Resources/views/themes/admin/ui/page_title.html.twig +++ b/src/bundle/Resources/views/themes/admin/ui/page_title.html.twig @@ -1,5 +1,3 @@ -{% import '@ibexadesign/ui/component/macros.html.twig' as html %} - {% if title is defined %}
    @@ -7,15 +5,14 @@ {{ title }} {% block tag %} {% if tag is defined %} - {% set attr = tag_attr|default({})|merge({ - class: (tag_attr.class|default('') - ~ ' ibexa-badge ' ~ tag_extra_classes|default('') - )|trim, - }) %} - -
    + {% set tag_attr = tag_attr|default({}) %} + {{ tag }} -
    + {% endif %} {% endblock %} From 9d97220f38434a88d1fd89bfb9ac50d79d37a426 Mon Sep 17 00:00:00 2001 From: tischsoic Date: Thu, 12 Mar 2026 10:30:45 +0100 Subject: [PATCH 09/15] DST in composer.json --- composer.json | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 97beea181e..e34fc9058c 100644 --- a/composer.json +++ b/composer.json @@ -27,6 +27,7 @@ "ibexa/content-forms": "~6.0.x-dev", "ibexa/core": "~6.0.x-dev", "ibexa/design-engine": "~6.0.x-dev", + "ibexa/design-system-twig": "~6.0.x-dev", "ibexa/rest": "~6.0.x-dev", "ibexa/search": "~6.0.x-dev", "ibexa/twig-components": "~6.0.x-dev", @@ -97,5 +98,11 @@ "branch-alias": { "dev-main": "6.0.x-dev" } - } + }, + "repositories": [ + { + "type": "vcs", + "url": "https://github.com/ibexa/design-system-twig" + } + ] } From d7f1c613206fcde195b4532d51193728846bb8ae Mon Sep 17 00:00:00 2001 From: tischsoic Date: Mon, 16 Mar 2026 12:20:33 +0100 Subject: [PATCH 10/15] fix: Align page title tag spacing with DS tag --- src/bundle/Resources/public/scss/_page-title.scss | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/bundle/Resources/public/scss/_page-title.scss b/src/bundle/Resources/public/scss/_page-title.scss index 05780acda0..e01aa60f7e 100644 --- a/src/bundle/Resources/public/scss/_page-title.scss +++ b/src/bundle/Resources/public/scss/_page-title.scss @@ -28,7 +28,8 @@ white-space: nowrap; } - .ibexa-badge { + .ibexa-badge, + .ids-tag { margin-left: calculateRem(16px); font-family: $ibexa-font-family; } From be17350aa3e1cd4fa9f4593bfd36518c2aa41529 Mon Sep 17 00:00:00 2001 From: tischsoic Date: Mon, 16 Mar 2026 12:39:15 +0100 Subject: [PATCH 11/15] composer.json --- composer.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/composer.json b/composer.json index e34fc9058c..40ceed8f4f 100644 --- a/composer.json +++ b/composer.json @@ -3,6 +3,12 @@ "license": "(GPL-2.0-only or proprietary)", "type": "project", "description": "Ibexa Admin Ui", + "repositories": [ + { + "type": "vcs", + "url": "https://github.com/ibexa/design-system-twig" + } + ], "replace": { "ezsystems/ezplatform-admin-ui": "*" }, From 8dc8234fe57af2df238b240a92adc3a35f5095d9 Mon Sep 17 00:00:00 2001 From: tischsoic Date: Thu, 2 Apr 2026 23:40:22 +0200 Subject: [PATCH 12/15] remove duplicated repositories from compose.json --- composer.json | 6 ------ 1 file changed, 6 deletions(-) diff --git a/composer.json b/composer.json index 40ceed8f4f..e34fc9058c 100644 --- a/composer.json +++ b/composer.json @@ -3,12 +3,6 @@ "license": "(GPL-2.0-only or proprietary)", "type": "project", "description": "Ibexa Admin Ui", - "repositories": [ - { - "type": "vcs", - "url": "https://github.com/ibexa/design-system-twig" - } - ], "replace": { "ezsystems/ezplatform-admin-ui": "*" }, From 623683aa502dfc126849ee556fe852e744151a2d Mon Sep 17 00:00:00 2001 From: tischsoic Date: Wed, 15 Apr 2026 11:43:13 +0200 Subject: [PATCH 13/15] fix: Render selection preview block before DS tag --- .../admin/ui/field_type/preview/content_fields.html.twig | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/bundle/Resources/views/themes/admin/ui/field_type/preview/content_fields.html.twig b/src/bundle/Resources/views/themes/admin/ui/field_type/preview/content_fields.html.twig index 52cdfcf9c9..31fd9ad363 100644 --- a/src/bundle/Resources/views/themes/admin/ui/field_type/preview/content_fields.html.twig +++ b/src/bundle/Resources/views/themes/admin/ui/field_type/preview/content_fields.html.twig @@ -161,9 +161,12 @@ {% set attr = attr|merge({'class': (attr.class|default('') ~ ' ibexa-field-preview ibexa-field-preview--ibexa_selection-single')|trim}) %} {% set field_value = options[field.value.selection|first]|escape %} + {% set simple_block_field_content %} + {{ block( 'simple_block_field' ) }} + {% endset %} - {{ block( 'simple_block_field' ) }} + {{ simple_block_field_content }} {% endif %} {% endblock %} From bc0d585187cf674d97d55ce25aed0af8ae9e5675 Mon Sep 17 00:00:00 2001 From: tischsoic Date: Wed, 15 Apr 2026 12:03:05 +0200 Subject: [PATCH 14/15] css config --- src/bundle/Resources/encore/ibexa.css.config.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/bundle/Resources/encore/ibexa.css.config.js b/src/bundle/Resources/encore/ibexa.css.config.js index 62dfba962e..7fd3ddf71b 100644 --- a/src/bundle/Resources/encore/ibexa.css.config.js +++ b/src/bundle/Resources/encore/ibexa.css.config.js @@ -5,6 +5,7 @@ module.exports = (Encore) => { path.resolve(__dirname, '../public/scss/ibexa-bootstrap.scss'), path.resolve(__dirname, '../public/scss/ibexa.scss'), path.resolve(__dirname, '../public/scss/ui/ibexa-modules.scss'), + path.resolve('./vendor/ibexa/admin-ui-assets/src/bundle/Resources/public/vendors/ids-assets/dist/css/styles.css'), path.resolve('./vendor/ibexa/admin-ui-assets/src/bundle/Resources/public/vendors/flatpickr/dist/flatpickr.min.css'), path.resolve( './vendor/ibexa/admin-ui-assets/src/bundle/Resources/public/vendors/flatpickr/dist/plugins/confirmDate/confirmDate.css', @@ -18,6 +19,7 @@ module.exports = (Encore) => { ]) .addEntry('ibexa-admin-ui-security-base-css', [ path.resolve(__dirname, '../public/scss/ibexa-bootstrap.scss'), + path.resolve('./vendor/ibexa/admin-ui-assets/src/bundle/Resources/public/vendors/ids-assets/dist/css/styles.css'), path.resolve(__dirname, '../public/scss/ibexa.scss'), ]); }; From c59f69324346a8a7815c91311b0a810c9bd82674 Mon Sep 17 00:00:00 2001 From: katarzynazawada Date: Mon, 20 Apr 2026 09:07:12 +0200 Subject: [PATCH 15/15] [Behat] Adjusted tests --- src/lib/Behat/Page/ContentTypeUpdatePage.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/Behat/Page/ContentTypeUpdatePage.php b/src/lib/Behat/Page/ContentTypeUpdatePage.php index ec5e54673d..1ec274a561 100644 --- a/src/lib/Behat/Page/ContentTypeUpdatePage.php +++ b/src/lib/Behat/Page/ContentTypeUpdatePage.php @@ -37,10 +37,10 @@ public function expandLastFieldDefinition(): void 'lastFieldDefinition', 'div.ibexa-collapse__body-content div.ibexa-collapse--field-definition' ); - + $this->getHTMLPage()->setTimeout(10)->waitUntil(function () use ($fieldDefinitionLocator): bool { $fieldDefinition = $this->getHTMLPage()->findAll($fieldDefinitionLocator)->last(); - $fieldDefinition->click(); + $fieldDefinition->find(new VisibleCSSLocator('collapseButton', 'button.ibexa-collapse__toggle-btn'))->click(); $this->getHTMLPage()->setTimeout(3)->waitUntilCondition( new ElementNotExistsCondition( $fieldDefinition,