
🙂 Looking for an issue? Welcome! This issue is open for contribution. If this is the first time you’re requesting an issue, please:
- Read Contributing guidelines carefully. Pay extra attention to Using generative AI. Pull requests and comments that don’t follow the guidelines won’t be answered.
- Confirm that you’ve read the guidelines in your comment.

Sub-issue of #5060.
Complexity: High
Summary
Remove Vuetify from the main navigation (top bar + user menu + side panel) in Channels:
Currently, AppBar that is built with several Vuetify components is used:
|
<AppBar v-else> |
|
<template |
|
v-if="loggedIn" |
|
#tabs |
|
> |
|
<VTab |
|
v-for="listType in lists" |
|
:key="listType.id" |
|
:to="getChannelLink(listType)" |
|
@click="trackTabClick(listType)" |
|
> |
|
<VBadge |
|
:value="invitationsByListCounts[listType]" |
|
color="black" |
|
> |
|
<template #badge> |
|
<span>{{ $formatNumber(invitationsByListCounts[listType]) }}</span> |
|
</template> |
|
<span>{{ translateConstant(listType) }}</span> |
|
</VBadge> |
|
</VTab> |
|
<VTab |
|
:to="catalogLink" |
|
@click="publicTabClick" |
|
> |
|
{{ $tr('catalog') }} |
|
</VTab> |
|
<VTab |
|
:to="channelSetLink" |
|
@click="channelSetsTabClick" |
|
> |
|
{{ $tr('channelSets') }} |
|
</VTab> |
|
</template> |
|
</AppBar> |
To remove these Vuetify dependencies:
- Build new components
frontend/shared/views/StudioNavigation.vue and frontend/shared/views/StudioNavigationTab.vue without Vuetify.
- For side panel, utilize existing
SidePanelModal
- Remove
VBadge in favor of a custom implementation.
There should be no changes in before / after user experience - examine AppBar and its sub-components for details of what features need to be re-implemented. (update Jan 15 by MisRob: there will be some changes - see Expected UI/UX changes)
Don't refactor AppBar, MainNavigationDrawer, other sub-components of AppBar, or any other areas of the codebase (StudioNavigation will be introduced to other plugins in the scope of upcoming issues).
How to get there
- Login as
a@a.com with password a
- Go to Channels
Guidance
- Read the project this issue is part of
- KDS components that will be handy:
KToolbar, KDropdownMenu, KButton, KRouterLink, KExternalLink, and possibly others
- Note that KDS
KTabs... components are not suitable for use as it's a different a11y pattern than the main navigation, e.g. keyboard navigation differs
- Use
shared/views/SidePanelModal for the side navigation - it contains backdrop as well as all important a11y patterns
- Kolibri has a very similar main navigation - there will likely be plenty of useful code, or can serve as reference
/kolibri/packages/kolibri/components/pages/AppBarPage/internal/AppBar.vue
- Also would be nice to have skip navigation-like functionality (
kolibri/packages/kolibri/components/SkipNavigationLink.vue)
Out of Scope
- Do not refactor
AppBar, MainNavigationDrawer, and other sub-components of AppBar
- Do not use the new
StudioNavigation in other plugins, such as Settings or Admin.
- Do not refactor any other areas of the codebase
Expected UI/UX changes
- Minor visual differences naturally stemming from the use of KDS
- Update Jan 15 by MisRob: we won't reproduce everything (e.g. animations, ripple effect, and more..) from the current implementation in favor of using the same experience as in Kolibri - consistency is preferred by designers, and also Kolibri's navigation pattern is agreed and robustly tested for ux, a11y, ...)
- Update Jan 15 by MisRob: Also experience on smaller screens will be different - we'll use dropdown as in Kolibri (where we intentionally moved away from scrolling):
Acceptance criteria
General
a11y and i18n
See the project's "Guidance" for useful references.
Unit tests
🙂 Looking for an issue? Welcome! This issue is open for contribution. If this is the first time you’re requesting an issue, please:
Sub-issue of #5060.
Complexity: High
Summary
Remove Vuetify from the main navigation (top bar + user menu + side panel) in Channels:
Currently,
AppBarthat is built with several Vuetify components is used:studio/contentcuration/contentcuration/frontend/channelList/views/ChannelListIndex.vue
Lines 30 to 64 in 0b06a91
To remove these Vuetify dependencies:
frontend/shared/views/StudioNavigation.vueandfrontend/shared/views/StudioNavigationTab.vuewithout Vuetify.SidePanelModalVBadgein favor of a custom implementation.There should be no changes in before / after user experience - examine(update Jan 15 by MisRob: there will be some changes - see Expected UI/UX changes)AppBarand its sub-components for details of what features need to be re-implemented.Don't refactor
AppBar,MainNavigationDrawer, other sub-components ofAppBar, or any other areas of the codebase (StudioNavigationwill be introduced to other plugins in the scope of upcoming issues).How to get there
a@a.comwith passwordaGuidance
KToolbar,KDropdownMenu,KButton,KRouterLink,KExternalLink, and possibly othersKTabs...components are not suitable for use as it's a different a11y pattern than the main navigation, e.g. keyboard navigation differsshared/views/SidePanelModalfor the side navigation - it contains backdrop as well as all important a11y patterns/kolibri/packages/kolibri/components/pages/AppBarPage/internal/AppBar.vuekolibri/packages/kolibri/components/SkipNavigationLink.vue)Out of Scope
AppBar,MainNavigationDrawer, and other sub-components ofAppBarStudioNavigationin other plugins, such as Settings or Admin.Expected UI/UX changes
Acceptance criteria
General
a11y and i18n
See the project's "Guidance" for useful references.
pnpm run devserversince:hotdoesn't render RTL properly)notranslateclass been added to elements that shouldn't be translated by Google Chrome's automatic translation feature (e.g. user-generated text)Unit tests
@vue/test-utilsapproach. Instead, use@testing-library/vue(Vue Testing Library).