Skip to content

IBX-11964: Add native app switcher (login rail and back office side panel) - #1997

Merged
GrabowskiM merged 8 commits into
6.0from
IBX-11964-app-switcher
Aug 18, 2026
Merged

GrabowskiM merged 8 commits into
6.0from
IBX-11964-app-switcher

Conversation

@tischsoic

@tischsoic tischsoic commented Aug 6, 2026 •

Copy link
Copy Markdown
Contributor

Note

Browser tests here stay red until the related PRs merge (the CI-only dependencies.json pin was removed for merge — CI was green with it, see comments). Delete the admin-ui-assets#IBX-11964-app-switcher branch after merging.

🎫 Issue IBX-11964

Related PRs:

Description:

App switcher redesign. One shared Twig partial renders the app list in two places:

  • Login pages — replaces the hardcoded brand sidebar with the new dark rail (bigger logos, Cohesivo highlighted as the current app). No JS.
  • Back office — new grid-dots button at the top-left of the header opens a white rail that pushes the content aside (never covers the main menu). Closes on the button, Esc or outside click; not remembered between page loads.

Two fixes to shared styles came out of this work:

  • .ibexa-main-header gets a gap — its columns previously had no minimum spacing.
  • Root font size: admin-ui declared html { font-size: 16px } while its own calculateRem() divides by 14px, so every rem-based size was 14.3% too big wherever that rule won the cascade — i.e. on the login/account pages (the back office was unaffected, ids-assets loads last there). The declaration is removed, leaving the design system's 14px root authoritative. Login/account pages now render at their declared sizes, i.e. ~12.5% smaller than before (inputs 40px not 45.7, logo 250px not 285.7) — please eyeball those pages.

The old Qntm widget (top-right) disappears when its package is dropped from the editions (ibexa/headless#298 + ibexa/engage#7); until then both switchers show.

For QA:

  • /admin/login and the other account pages (forgot/reset password, register): dark rail with the 6 brands, Cohesivo highlighted, links open in new tabs. Everything on these pages is now ~12.5% smaller (the root font-size fix) — check nothing looks cramped or clipped.
  • Any back-office page: click the dots button (top-left) — the rail slides in and shifts the menu and content right; the menu stays fully visible. Cohesivo goes to the dashboard, other apps open in new tabs. Close with the button, Esc, or a click outside.
  • Known and unrelated: the console error Cannot find module '.../design.system.provider' comes from the new-menu base combined with product-catalog 6.0.

Documentation:

Comment thread src/bundle/Resources/public/scss/_app-switcher.scss Outdated
Comment thread src/bundle/Resources/public/scss/_app-switcher.scss Outdated
{% set modifier = modifier|default('') %}
{% set active_app_name = active_app_name|default(null) %}
{% set active_app_href = active_app_href|default(null) %}
{% set apps = apps|default([

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

wouldn't it be better solution to get these from backend? instead of hardcoding them in twig

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that for now, we want to hardcode it - I think there should be later different switcher for all companies.

tischsoic and others added 3 commits August 17, 2026 11:34
…anel)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@tischsoic

Copy link
Copy Markdown
Contributor Author

Claude: All CI green ✅ before removing dependencies.json — combined-state regression: ibexa/commerce#1940 (only pre-existing TargetingBlock noise, also red on unrelated #1939).

tischsoic and others added 5 commits August 18, 2026 09:06
The dark design defines no hover state for the auth-pages app switcher;
the label color change was carried over from the old sidebar.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The reference defines no hover state for app-switcher links: neutralize the
Bootstrap a:hover underline ($link-hover-decoration is overridden to
underline in ibexa-bootstrap.scss) and drop the panel tile hover background.
The toggler keeps its hover background, as in the design.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Review follow-up: the panel label's letter-spacing duplicates the value
inherited from the ids root html rule, and prefers-reduced-motion guards
are not used anywhere else in the codebase.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
admin-ui declared html { font-size: 16px } while its own calculateRem()
divides by 14px, so every rem-based size was inflated by 14.3% wherever
that rule won the cascade — the login/account pages, where ibexa.scss is
loaded after the ids-assets stylesheet (the back office was unaffected
because ids-assets comes last there).

Removing the declaration leaves the ids-assets root rule (14px, the value
calculateRem is built on) authoritative in both bundles: login-page sizes
now render exactly as declared (app switcher rail 64px with 32px logos,
inputs 40px, logo 250px), matching the design.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Our brand SVGs have no internal margin, while the design's assets inset
the logo ~2px per side inside a 32px box — so the declared 32px made ours
render visibly larger than the reference.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@tischsoic
tischsoic force-pushed the IBX-11964-app-switcher branch from 8b95db1 to 3910117 Compare August 18, 2026 07:07
@sonarqubecloud

Copy link
Copy Markdown

@GrabowskiM
GrabowskiM merged commit 8908fdd into 6.0 Aug 18, 2026
27 of 28 checks passed
@GrabowskiM
GrabowskiM deleted the IBX-11964-app-switcher branch August 18, 2026 07:29
GrabowskiM pushed a commit to ibexa/headless that referenced this pull request Aug 18, 2026
The Qntm app switcher is superseded by the native one in ibexa/admin-ui
(ibexa/admin-ui#1997); the package is discontinued.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants