Skip to content

Conversation

@caybro
Copy link
Member

@caybro caybro commented Dec 18, 2025

What does the PR do

  • introduce PrimaryNavSidebar{Button} components
  • update the main sections SVG icons
  • added a basic QML test suite
  • add a SB page for the sidebar POC

Fixes #19593

Affected areas

Storybook only for now (AppMain later)

Architecture compliance

Screencapture of the functionality

primary-nav-sidebar-demo.mp4

Impact on end user

Better AppMain navigation UX

How to test

  • open SB, play around with the POC

Risk

  • low, just Storybook component POC (with UI tests)

@caybro caybro linked an issue Dec 18, 2025 that may be closed by this pull request
@status-im-auto
Copy link
Member

status-im-auto commented Dec 18, 2025

Jenkins Builds

Click to see older builds (80)
Commit #️⃣ Finished (UTC) Duration Platform Result
6f812f2 #1 2025-12-18 00:48:04 ~8 min macos/aarch64-nwaku 📄log
✖️ 6f812f2 #1 2025-12-18 00:51:40 ~12 min ios/aarch64 📱ipa
6f812f2 #1 2025-12-18 00:53:08 ~13 min tests/ui 📄log
✔️ 6f812f2 #1 2025-12-18 00:53:22 ~13 min tests/nim 📄log
6f812f2 #1 2025-12-18 00:54:58 ~15 min windows/x86_64 📄log
✔️ 6f812f2 #1 2025-12-18 00:55:16 ~15 min macos/aarch64 🍎dmg
✔️ 6f812f2 #1 2025-12-18 01:01:34 ~22 min linux/x86_64 📦tgz
✔️ 6f812f2 #1 2025-12-18 01:05:03 ~25 min linux/x86_64-nwaku 📦tgz
✔️ 6f812f2 pr19607 2025-12-18 01:18:32 ~16 min tests/e2e 📊rpt
✔️ 25882918 #1 2025-12-18 00:51:24 ~12 min android/arm64 🤖apk 📲
d0b8239 #2 2025-12-18 11:35:27 ~8 min macos/aarch64-nwaku 📄log
✔️ d0b8239 #2 2025-12-18 11:39:06 ~12 min tests/nim 📄log
✖️ d0b8239 #2 2025-12-18 11:39:14 ~12 min ios/aarch64 📱ipa
✔️ d0b8239 #2 2025-12-18 11:40:22 ~13 min tests/ui 📄log
d0b8239 #3 2025-12-18 11:41:46 ~14 min windows/x86_64 📄log
✔️ d0b8239 #2 2025-12-18 11:45:50 ~18 min macos/aarch64 🍎dmg
✔️ d0b8239 #2 2025-12-18 11:48:39 ~21 min linux/x86_64 📦tgz
✔️ d0b8239 #2 2025-12-18 11:52:03 ~25 min linux/x86_64-nwaku 📦tgz
✔️ d0b8239 pr19607 2025-12-18 12:06:33 ~17 min tests/e2e 📊rpt
✔️ 4a97a728 #2 2025-12-18 11:38:48 ~12 min android/arm64 🤖apk 📲
87dff99 #3 2025-12-18 12:26:45 ~8 min macos/aarch64-nwaku 📄log
✔️ 87dff99 #3 2025-12-18 12:30:18 ~12 min android/arm64 🤖apk 📲
✔️ 87dff99 #3 2025-12-18 12:30:30 ~12 min tests/nim 📄log
✖️ 87dff99 #3 2025-12-18 12:30:52 ~12 min ios/aarch64 📱ipa
✔️ 87dff99 #3 2025-12-18 12:31:38 ~13 min tests/ui 📄log
✔️ 87dff99 #3 2025-12-18 12:33:00 ~14 min macos/aarch64 🍎dmg
✔️ 87dff99 #3 2025-12-18 12:39:33 ~21 min linux/x86_64 📦tgz
✔️ 87dff99 #3 2025-12-18 12:42:25 ~24 min linux/x86_64-nwaku 📦tgz
✔️ 87dff99 #5 2025-12-18 12:50:18 ~31 min windows/x86_64 💿exe
87dff99 pr19607 2025-12-18 12:54:25 ~14 min tests/e2e 📄log
✔️ 87dff99 PR19607 2025-12-18 13:15:46 ~25 min tests/e2e-windows 📊rpt
307d9a8 #4 2025-12-18 16:41:20 ~8 min macos/aarch64-nwaku 📄log
✔️ 307d9a8 #4 2025-12-18 16:42:39 ~10 min tests/nim 📄log
✔️ 307d9a8 #4 2025-12-18 16:42:53 ~10 min android/arm64 🤖apk 📲
✖️ 307d9a8 #4 2025-12-18 16:45:16 ~12 min ios/aarch64 📱ipa
✔️ 307d9a8 #4 2025-12-18 16:46:50 ~14 min tests/ui 📄log
307d9a8 #6 2025-12-18 16:47:17 ~14 min windows/x86_64 📄log
✔️ 307d9a8 #4 2025-12-18 16:50:00 ~17 min macos/aarch64 🍎dmg
✔️ 307d9a8 #4 2025-12-18 16:53:16 ~20 min linux/x86_64 📦tgz
✔️ 307d9a8 #4 2025-12-18 16:55:29 ~22 min linux/x86_64-nwaku 📦tgz
✔️ 307d9a8 pr19607 2025-12-18 17:11:04 ~17 min tests/e2e 📊rpt
0f33878 #5 2025-12-18 17:34:50 ~8 min macos/aarch64-nwaku 📄log
✔️ 0f33878 #5 2025-12-18 17:37:53 ~11 min android/arm64 🤖apk 📲
✔️ 0f33878 #5 2025-12-18 17:38:40 ~12 min tests/nim 📄log
✖️ 0f33878 #5 2025-12-18 17:38:40 ~12 min ios/aarch64 📱ipa
✔️ 0f33878 #5 2025-12-18 17:40:12 ~13 min tests/ui 📄log
0f33878 #7 2025-12-18 17:42:05 ~15 min windows/x86_64 📄log
✔️ 0f33878 #5 2025-12-18 17:47:07 ~20 min linux/x86_64 📦tgz
✔️ 0f33878 #5 2025-12-18 17:48:56 ~22 min macos/aarch64 🍎dmg
✔️ 0f33878 #5 2025-12-18 17:51:03 ~24 min linux/x86_64-nwaku 📦tgz
✔️ 0f33878 pr19607 2025-12-18 18:02:17 ~15 min tests/e2e 📊rpt
✔️ 9bbdde2f #6 2025-12-19 05:30:38 ~12 min android/arm64 🤖apk 📲
d0bd89a #6 2025-12-19 12:59:40 ~8 min macos/aarch64-nwaku 📄log
✔️ d0bd89a #6 2025-12-19 13:01:21 ~10 min tests/nim 📄log
✖️ d0bd89a #6 2025-12-19 13:03:49 ~13 min ios/aarch64 📱ipa
✔️ d0bd89a #6 2025-12-19 13:05:52 ~15 min tests/ui 📄log
d0bd89a #8 2025-12-19 13:06:04 ~15 min windows/x86_64 📄log
✔️ d0bd89a #6 2025-12-19 13:10:48 ~19 min macos/aarch64 🍎dmg
✔️ d0bd89a #6 2025-12-19 13:12:29 ~21 min linux/x86_64 📦tgz
✔️ d0bd89a #6 2025-12-19 13:15:09 ~24 min linux/x86_64-nwaku 📦tgz
✔️ d0bd89a pr19607 2025-12-19 13:31:41 ~19 min tests/e2e 📊rpt
✔️ 3f814f19 #7 2025-12-19 13:01:07 ~10 min android/arm64 🤖apk 📲
6a83c6b #7 2025-12-19 13:46:49 ~8 min macos/aarch64-nwaku 📄log
✔️ 6a83c6b #8 2025-12-19 13:48:04 ~9 min android/arm64 🤖apk 📲
✔️ 6a83c6b #7 2025-12-19 13:48:36 ~10 min tests/nim 📄log
✖️ 6a83c6b #7 2025-12-19 13:50:22 ~12 min ios/aarch64 📱ipa
45e8f8b #8 2025-12-19 13:59:35 ~8 min macos/aarch64-nwaku 📄log
✔️ 45e8f8b #8 2025-12-19 14:01:14 ~10 min tests/nim 📄log
✔️ 45e8f8b #9 2025-12-19 14:01:51 ~10 min android/arm64 🤖apk 📲
✖️ 45e8f8b #8 2025-12-19 14:03:17 ~12 min ios/aarch64 📱ipa
✔️ 45e8f8b #8 2025-12-19 14:05:10 ~14 min tests/ui 📄log
45e8f8b #10 2025-12-19 14:06:11 ~15 min windows/x86_64 📄log
✔️ 45e8f8b #8 2025-12-19 14:06:43 ~15 min macos/aarch64 🍎dmg
✔️ 45e8f8b #8 2025-12-19 14:11:50 ~20 min linux/x86_64 📦tgz
✔️ 45e8f8b #8 2025-12-19 14:15:06 ~24 min linux/x86_64-nwaku 📦tgz
✔️ 45e8f8b pr19607 2025-12-19 14:26:54 ~14 min tests/e2e 📊rpt
45e8f8b #11 2025-12-19 15:15:57 ~14 min windows/x86_64 📄log
45e8f8b #12 2025-12-22 11:07:45 ~15 min windows/x86_64 📄log
✔️ 19ba4080 #10 2025-12-20 05:31:12 ~12 min android/arm64 🤖apk 📲
✔️ 422118ee #11 2025-12-22 05:30:52 ~12 min android/arm64 🤖apk 📲
Commit #️⃣ Finished (UTC) Duration Platform Result
c62972c #9 2025-12-22 14:29:26 ~8 min macos/aarch64-nwaku 📄log
✔️ c62972c #12 2025-12-22 14:30:47 ~10 min android/arm64 🤖apk 📲
✖️ c62972c #9 2025-12-22 14:34:34 ~13 min ios/aarch64 📱ipa
✔️ c62972c #9 2025-12-22 14:37:46 ~17 min tests/nim 📄log
c62972c #13 2025-12-22 14:39:28 ~18 min windows/x86_64 📄log
✔️ c62972c #9 2025-12-22 14:41:41 ~20 min tests/ui 📄log
✔️ c62972c #9 2025-12-22 14:44:10 ~23 min linux/x86_64-nwaku 📦tgz
✔️ c62972c #9 2025-12-22 14:45:04 ~24 min linux/x86_64 📦tgz
✔️ c62972c #9 2025-12-22 14:45:09 ~24 min macos/aarch64 🍎dmg
✔️ c62972c pr19607 2025-12-22 15:09:13 ~24 min tests/e2e 📊rpt
✔️ 53bd203d #13 2025-12-23 05:31:29 ~13 min android/arm64 🤖apk 📲

@caybro caybro force-pushed the 19593-adaptive-navigation-primary-nav-sidebar-poc branch from 6f812f2 to d0b8239 Compare December 18, 2025 11:26
Copy link
Member

@micieslak micieslak left a comment

Choose a reason for hiding this comment

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

Nice work, looks promising!

Some suggestions regarding code structure in comments.

I played a bit with Theme, and it seems that some adjustments are needed:

Screencast.from.18.12.2025.12.25.18.webm

IMO, there is some space for visual improvements regarding boundaries of the scrollables. Maybe we could apply some shadow there or at least hide behind the separator, not earlier (for the bottom one). On top maybe some separator would help as well.

Image

ProfileButton {
objectName: "statusProfileNavBarTabButton"
Layout.alignment: Qt.AlignHCenter
name: root.profileStore.name
Copy link
Member

Choose a reason for hiding this comment

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

I'd love to find a good way to separate the nav bar component from the dependency of all that stuff needed by profile menu. It may require refactoring ProfileButton as well. That button could just emit request to open menu, probably passing location as an argument.

Copy link
Member Author

Choose a reason for hiding this comment

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

Yeah... I was thinking the same but didn't want to do it here as part of the POC; file a separate issue?

readonly property int containerBgRadius: Theme.padding // 16

// models
readonly property var sectionsModelInternal: SortFilterProxyModel {
Copy link
Member

Choose a reason for hiding this comment

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

Following the rule that UI components just display data limiting transformation to minimum I think we should externalize those transformation. That component displays 3 models and therefore it could just take tree models from outside.

Copy link
Member

Choose a reason for hiding this comment

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

Other detail - instead of creating sectionsModelInternal property in d we could define that SFPM at top level directly and set id sectionsModelInternal. It's still private with no access from outside and reduces indentation.

Copy link
Member Author

Choose a reason for hiding this comment

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

Yeah... the plan was to exclude the data transformation to an adaptor at a later stage

@caybro
Copy link
Member Author

caybro commented Dec 18, 2025

IMO, there is some space for visual improvements regarding boundaries of the scrollables. Maybe we could apply some shadow there or at least hide behind the separator, not earlier (for the bottom one). On top maybe some separator would help as well.

Yup, the designs are still not final; I asked that same question regarding the overall scroll situation:

image

@caybro
Copy link
Member Author

caybro commented Dec 18, 2025

Some suggestions regarding code structure in comments.

I played a bit with Theme, and it seems that some adjustments are needed:

Haha yeah, I tied the icon width/height to Theme.padding iirc :) was a bad idea maybe, but I need something scalable; ideally we'd have Theme.dp(px) function that would scale any arbitrary number, just like we do with font sizes

@caybro caybro force-pushed the 19593-adaptive-navigation-primary-nav-sidebar-poc branch 2 times, most recently from 87dff99 to 307d9a8 Compare December 18, 2025 16:32
@caybro caybro marked this pull request as ready for review December 18, 2025 16:32
@caybro caybro requested review from a team, alexjba and noeliaSD as code owners December 18, 2025 16:32
@caybro caybro force-pushed the 19593-adaptive-navigation-primary-nav-sidebar-poc branch 4 times, most recently from 6a83c6b to 45e8f8b Compare December 19, 2025 13:50
@caybro caybro requested a review from jrainville December 19, 2025 15:06
Copy link
Member

@jrainville jrainville left a comment

Choose a reason for hiding this comment

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

LGTM, but I'll let actual UI experts approve 😄

@jrainville
Copy link
Member

Nav bar looks very good in the videos though 💯

- introduce `PrimaryNavSidebar{Button}` components
- update the main sections SVG icons
- added a basic QML test suite
- add a SB page for the sidebar POC

Fixes #19593
@caybro caybro force-pushed the 19593-adaptive-navigation-primary-nav-sidebar-poc branch from 45e8f8b to c62972c Compare December 22, 2025 14:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Adaptive navigation] Primary nav sidebar POC

4 participants