Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
102 commits
Select commit Hold shift + click to select a range
e52bce9
Mkaing the studionavigationtab
Prashant-thakur77 Dec 21, 2025
0d54466
Updated
Prashant-thakur77 Dec 21, 2025
7967140
FIX: resolved the merge conflicts
Prashant-thakur77 Apr 13, 2026
2639864
Updated
Prashant-thakur77 Dec 21, 2025
ca5ee87
Updated
Prashant-thakur77 Dec 21, 2025
40fba77
Updated
Prashant-thakur77 Dec 21, 2025
f85eafb
Update
Prashant-thakur77 Dec 23, 2025
4093684
Update
Prashant-thakur77 Dec 23, 2025
0bdebdd
Update styles
Prashant-thakur77 Dec 23, 2025
10e84e5
Updated sidepanel styles
Prashant-thakur77 Dec 25, 2025
17aae8f
Updated sidepanel styles
Prashant-thakur77 Dec 25, 2025
6b5d5a8
Updated sidepanel styles
Prashant-thakur77 Dec 25, 2025
c5e78f2
Updated sidepanel styles
Prashant-thakur77 Dec 25, 2025
91cd63a
Updated sidepanel styles
Prashant-thakur77 Dec 25, 2025
e842db0
Updated sidepanel styles
Prashant-thakur77 Dec 25, 2025
444e68d
Updated sidepanel styles
Prashant-thakur77 Dec 25, 2025
7e679d3
Updated styles
Prashant-thakur77 Dec 26, 2025
5ce6de5
Updated
Prashant-thakur77 Dec 27, 2025
51169b0
Updated styles for tabs
Prashant-thakur77 Jan 13, 2026
4cfd440
Updated styles for tabs
Prashant-thakur77 Jan 13, 2026
1abdc2f
Updated styles for tabs
Prashant-thakur77 Jan 13, 2026
c7d1a4a
Updated styles for tabs
Prashant-thakur77 Jan 13, 2026
df5573d
Updated styles of sidepanel
Prashant-thakur77 Jan 13, 2026
f9dcc48
Updated styles of sidepanel
Prashant-thakur77 Jan 13, 2026
0d2cec5
Updated sidepanel styles
Prashant-thakur77 Jan 14, 2026
3961688
Updated sidepanel styles
Prashant-thakur77 Jan 14, 2026
69efb09
Updated sidepanel styles
Prashant-thakur77 Jan 14, 2026
c8213f5
Updated sidepanel styles
Prashant-thakur77 Jan 14, 2026
b12669e
Added scrollable funcality to tabs
Prashant-thakur77 Jan 14, 2026
58b6e21
Updated the link design
Prashant-thakur77 Jan 14, 2026
351a6ba
Updated the link design
Prashant-thakur77 Jan 14, 2026
632c82d
Updated the link design
Prashant-thakur77 Jan 14, 2026
7e74a38
Updated the link design
Prashant-thakur77 Jan 14, 2026
79bed41
Updated the link design
Prashant-thakur77 Jan 14, 2026
9b0daa6
Updated the link design
Prashant-thakur77 Jan 14, 2026
c443c66
Updated the title styles
Prashant-thakur77 Jan 14, 2026
a99d115
Updated the title styles
Prashant-thakur77 Jan 14, 2026
4cdcc00
Updated the sliding indicator
Prashant-thakur77 Jan 14, 2026
066843c
Updated the sliding indicator
Prashant-thakur77 Jan 14, 2026
799656e
Updated class anmes
Prashant-thakur77 Jan 14, 2026
0344e6d
Updated the tabs container
Prashant-thakur77 Jan 15, 2026
ccaa08b
Sliding approach
Prashant-thakur77 Jan 15, 2026
e574922
Sliding approach
Prashant-thakur77 Jan 15, 2026
056d06a
old approach after review
Prashant-thakur77 Jan 15, 2026
f121655
updated code for tabs
Prashant-thakur77 Jan 15, 2026
78c581c
Updated menu styles
Prashant-thakur77 Jan 16, 2026
94788df
Added StudioPanelOption.vue
Prashant-thakur77 Jan 16, 2026
1f19b61
Added StudioPanelOption.vue
Prashant-thakur77 Jan 16, 2026
8a0c2f5
Added StudioPanelOption.vue
Prashant-thakur77 Jan 16, 2026
999e2ce
Added StudioPanelOption.vue
Prashant-thakur77 Jan 16, 2026
133c4fb
Added StudioPanelOption.vue
Prashant-thakur77 Jan 16, 2026
b88c03e
Updated styles
Prashant-thakur77 Jan 16, 2026
ad11ae9
Updated the skipnavigationlink functionality
Prashant-thakur77 Jan 16, 2026
b452b66
Removed the padding added to the sie panle modal and rather added tha…
Prashant-thakur77 Jan 16, 2026
93f8eab
updatedstyles
Prashant-thakur77 Jan 16, 2026
ce24b5b
updatedstyles
Prashant-thakur77 Jan 16, 2026
016b543
Updated Catalogfiltercontent to handle padding wihout sidepanelmodal
Prashant-thakur77 Jan 16, 2026
608315f
Updated boolean
Prashant-thakur77 Jan 16, 2026
6798275
Updated the tabtrack method to studionavigation
Prashant-thakur77 Jan 16, 2026
7bf1b56
Updated the tabtrack method to studionavigation
Prashant-thakur77 Jan 16, 2026
1e743f9
finalising
Prashant-thakur77 Jan 16, 2026
b4c9a74
Test file updated
Prashant-thakur77 Jan 16, 2026
f480ccd
Test file created
Prashant-thakur77 Jan 17, 2026
1473e11
Updated test files
Prashant-thakur77 Jan 17, 2026
2af6db2
Updated strings
Prashant-thakur77 Jan 17, 2026
93fab27
Test files
Prashant-thakur77 Jan 17, 2026
adc5e26
Final updates
Prashant-thakur77 Jan 17, 2026
1a316ad
Final updates
Prashant-thakur77 Jan 17, 2026
bb66295
Final updates
Prashant-thakur77 Jan 17, 2026
8e8269e
Updated class names
Prashant-thakur77 Jan 18, 2026
111b0da
precommit
Prashant-thakur77 Jan 18, 2026
970976a
Added aria-label to the nav
Prashant-thakur77 Jan 20, 2026
cd4a4ed
Updated
Prashant-thakur77 Jan 23, 2026
2191395
updated
Prashant-thakur77 Jan 23, 2026
f8e0dee
resolving review
Prashant-thakur77 Feb 2, 2026
7d96d2e
used ktexttruncaotr
Prashant-thakur77 Feb 4, 2026
c0d98a6
aligned the ktexttruncator with ktoolbar
Prashant-thakur77 Feb 4, 2026
e9ada03
removed aria-live
Prashant-thakur77 Feb 4, 2026
c0e49f4
updated
Prashant-thakur77 Feb 4, 2026
43f30a8
don
Prashant-thakur77 Feb 9, 2026
0388aec
decresd offsst
Prashant-thakur77 Feb 9, 2026
c6e30ba
updated
Prashant-thakur77 Feb 9, 2026
157207a
vreated a diff file to sidepanel to manage codebas
Prashant-thakur77 Feb 9, 2026
07dadd1
UPdated with reviews
Prashant-thakur77 Feb 9, 2026
a0f7b74
Removed magic stirngs
Prashant-thakur77 Feb 9, 2026
1e51d58
done
Prashant-thakur77 Feb 9, 2026
9791254
Made updates
Prashant-thakur77 Feb 9, 2026
42cdf3c
Made updates
Prashant-thakur77 Feb 9, 2026
be62a2f
Made updates
Prashant-thakur77 Feb 9, 2026
d5efc68
Made updates
Prashant-thakur77 Feb 9, 2026
8032325
Made updates
Prashant-thakur77 Feb 9, 2026
51dbfd8
corrected test suits
Prashant-thakur77 Feb 9, 2026
b524296
[pre-commit.ci lite] apply automatic fixes
pre-commit-ci-lite[bot] Feb 9, 2026
921d621
FIX: Resolve merge conflicts and lint errors in ChannelListIndex.vue
Prashant-thakur77 Apr 13, 2026
e5442ac
FEAT: Add notification indicators to StudioNavigation and SidePanel
Prashant-thakur77 Apr 13, 2026
a94f78c
FIX: Move NotificationsModal into explicit default slot
Prashant-thakur77 Apr 13, 2026
1172afb
Resolved merge issues
Prashant-thakur77 Apr 13, 2026
288bac0
Fix: Fixed kdropdown size
Prashant-thakur77 Apr 13, 2026
aa6d820
Fixing Kdropdown sizes
Prashant-thakur77 Apr 13, 2026
97d94ab
Fixing Kdropdown sizes
Prashant-thakur77 Apr 13, 2026
e83f061
Fix: Resolved rtl issues in the red dot usage for notification
Prashant-thakur77 Apr 13, 2026
b70676f
Resolved some indentaion
Prashant-thakur77 Apr 13, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
</template>

<template #default>
<div>
<div style="padding: 24px 32px 16px">
<component :is="showDraftMode ? 'KRadioButtonGroup' : 'div'">
<KRadioButton
v-if="showDraftMode"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -632,6 +632,7 @@
display: flex;
flex-direction: column;
gap: 16px;
padding: 24px 32px 16px;
margin-top: -24px;
line-height: 140%;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
alignment="left"
@closePanel="closeSidePanel"
>
<CatalogFilterPanelContent />
<CatalogFilterPanelContent :style="{ padding: '24px 32px 16px' }" />
</SidePanelModal>
</div>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,53 +27,21 @@
{{ isFAQPage ? $tr('frequentlyAskedQuestions') : $tr('libraryTitle') }}
</VToolbarTitle>
</VToolbar>
<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="communityLibraryLink"
@click="communityLibraryTabClick"
>
{{ communityLibraryLabel$() }}
</VTab>
<VTab
:to="channelSetLink"
@click="channelSetsTabClick"
>
{{ $tr('channelSets') }}
</VTab>
</template>
</AppBar>

<StudioNavigation
v-else
:tabs="navigationTabs"
/>

<VContent>
<StudioOfflineAlert
v-if="!isCatalogPage"
:offset="toolbarHeight"
/>
<VContainer
id="main"
role="main"
tabindex="-1"
fluid
class="main-container pa-0"
:style="`height: calc(100vh - ${contentOffset}px); margin-top: ${offline ? 48 : 0}px;`"
Expand Down Expand Up @@ -106,7 +74,7 @@
import { ChannelListTypes } from 'shared/constants';
import { constantsTranslationMixin, routerMixin } from 'shared/mixins';
import GlobalSnackbar from 'shared/views/GlobalSnackbar';
import AppBar from 'shared/views/AppBar';
import StudioNavigation from 'shared/views/StudioNavigation/StudioNavigation.vue';
import StudioOfflineAlert from 'shared/views/StudioOfflineAlert.vue';
import PolicyModals from 'shared/views/policies/PolicyModals';
import { communityChannelsStrings } from 'shared/strings/communityChannelsStrings';
Expand All @@ -129,7 +97,7 @@
export default {
name: 'ChannelListIndex',
components: {
AppBar,
StudioNavigation,
ChannelListAppError,
GlobalSnackbar,
PolicyModals,
Expand All @@ -148,6 +116,49 @@
}),
...mapGetters(['loggedIn']),
...mapGetters('channelList', ['invitations']),

navigationTabs() {
if (!this.loggedIn) return [];

const tabs = [];

this.lists.forEach(listType => {
tabs.push({
id: listType,
label: this.translateConstant(listType),
to: this.getChannelLink(listType),
badgeValue: this.invitationsByListCounts[listType] || 0,
analyticsLabel: ListTypeToAnalyticsLabel[listType],
});
});

tabs.push({
id: 'catalog',
label: this.$tr('catalog'),
to: this.catalogLink,
badgeValue: 0,
analyticsLabel: ChannelListTypes.PUBLIC,
});

tabs.push({
id: 'communityLibrary',
label: this.communityLibraryLabel$(),
to: this.communityLibraryLink,
badgeValue: 0,
analyticsLabel: 'COMMUNITY_LIBRARY',
});

tabs.push({
id: CHANNEL_SETS,
label: this.$tr('channelSets'),
to: this.channelSetLink,
badgeValue: 0,
analyticsLabel: CHANNEL_SETS,
});

return tabs;
},

fullPageError() {
return this.$store.state.errors.fullPageError;
},
Expand Down Expand Up @@ -193,15 +204,6 @@
homeLink() {
return this.libraryMode ? window.Urls.base() : window.Urls.channels();
},
publicTabClick() {
return this.trackTabClick.bind(this, ChannelListTypes.PUBLIC);
},
communityLibraryTabClick() {
return this.trackTabClick.bind(this, 'COMMUNITY_LIBRARY');
},
channelSetsTabClick() {
return this.trackTabClick.bind(this, CHANNEL_SETS);
},
},
watch: {
$route(route) {
Expand Down Expand Up @@ -260,9 +262,6 @@
this.updateTabTitle(title);
}
},
trackTabClick(list) {
this.$analytics.trackClick('channel_list', ListTypeToAnalyticsLabel[list]);
},
},
$trs: {
channelSets: 'Collections',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
<div
class="header-content"
:style="{
flexDirection: closeButtonIconType === 'close' ? 'row' : 'row-reverse',
flexDirection: headerFlexDirection,
}"
>
<div style="overflow: hidden">
Expand Down Expand Up @@ -104,6 +104,13 @@
return ['close', 'back'].includes(value);
},
},
closeButtonPosition: {
type: String,
required: false,
default: null,
validator: value => ['left', 'right'].includes(value),
},

/* Optionally override the default width of the side panel with valid CSS value */
sidePanelWidth: {
type: String,
Expand All @@ -118,6 +125,11 @@
return ['right', 'left'].includes(value);
},
},
fixedWidth: {
type: Boolean,
required: false,
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.

@MisRob This prop is added here to deal with the full width functionality of sidepanelmodel

default: false,
},
ariaLabel: {
type: String,
required: false,
Expand Down Expand Up @@ -151,7 +163,15 @@
[this.rtlAlignment]: 0,
};
},
headerFlexDirection() {
if (this.closeButtonPosition === 'left') return 'row-reverse';
if (this.closeButtonPosition === 'right') return 'row';
return this.closeButtonIconType === 'close' ? 'row' : 'row-reverse';
},
responsiveWidth() {
if (this.fixedWidth) {
return this.sidePanelWidth;
}
return this.isMobile ? '100vw' : this.sidePanelWidth;
},
/** Styling Properties */
Expand Down Expand Up @@ -252,7 +272,6 @@

.side-panel-content {
flex-grow: 1;
padding: 24px 32px 16px;
overflow-x: hidden;
overflow-y: auto;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
<template>

<div class="skip-nav-link">
<KButton
ref="button"
:style="linkStyles"
appearance="basic-link"
:text="$tr('skipToMainContentAction')"
@click="handleClickSkipLink"
/>
</div>

</template>


<script>

export default {
name: 'SkipNavigationLink',
computed: {
linkStyles() {
return {
backgroundColor: this.$themeTokens.surface + ' !important',
};
},
},
methods: {
handleClickSkipLink() {
// Every page where this is supposed to work needs to have a top-level
// element with 'role' and 'id' attribute equal to 'main' and 'tabindex= -1'.
// If it doesn't have one, clicking this link is a noop, but will re-focus itself
// as a convenience (in case main div is still loading).
const mainEl = document.getElementById('main');
if (mainEl) {
// If it exists, actually target and focus on the main header
const header = mainEl.querySelector('h1');
if (header) {
// HACK: Need to set its tabindex attribute on the fly to get tab behavior
header.setAttribute('tabindex', -1);
header.focus();
} else {
mainEl.focus();
}
} else {
// NOTE: the button retains focus, but loses :focus styling after hitting "Enter"
// TODO: look into theme input modality to see if we can get consistent
// styling when in keyboard modality
this.$refs.button.$el.focus();
}
},
},
$trs: {
skipToMainContentAction: {
message: 'Skip to main content',
context:
'Button label for the hamburger menu in the top left corner. Accessible only to those who use screen readers and other assistive technology (AT).',
},
},
};

</script>


<style lang="scss" scoped>

@import '~kolibri-design-system/lib/styles/definitions';

.skip-nav-link {
position: relative;
z-index: 2;
}

.skip-nav-link a {
@extend %dropshadow-2dp;

position: absolute;
left: -1000px;
padding: 8px 16px;
font-size: 14px;
outline-offset: 0 !important;

&:focus {
top: 8px;
left: 8px;
z-index: 2;
}
}

</style>
Loading
Loading