Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
103 commits
Select commit Hold shift + click to select a range
aa65fef
Mkaing the studionavigationtab
Prashant-thakur77 Dec 21, 2025
c928f12
Updated
Prashant-thakur77 Dec 21, 2025
54ac677
FIX: resolved the merge conflicts
Prashant-thakur77 Apr 13, 2026
a389d2a
Updated
Prashant-thakur77 Dec 21, 2025
337fac5
Updated
Prashant-thakur77 Dec 21, 2025
1dc17d7
Updated
Prashant-thakur77 Dec 21, 2025
b77bf6e
Update
Prashant-thakur77 Dec 23, 2025
ca26cd6
Update
Prashant-thakur77 Dec 23, 2025
1976faf
Update styles
Prashant-thakur77 Dec 23, 2025
6e16435
Updated sidepanel styles
Prashant-thakur77 Dec 25, 2025
e90db43
Updated sidepanel styles
Prashant-thakur77 Dec 25, 2025
3d373ba
Updated sidepanel styles
Prashant-thakur77 Dec 25, 2025
9e2141f
Updated sidepanel styles
Prashant-thakur77 Dec 25, 2025
84ab07e
Updated sidepanel styles
Prashant-thakur77 Dec 25, 2025
e3b7b1a
Updated sidepanel styles
Prashant-thakur77 Dec 25, 2025
f20ad6b
Updated sidepanel styles
Prashant-thakur77 Dec 25, 2025
7bf5c5c
Updated styles
Prashant-thakur77 Dec 26, 2025
dff36ab
Updated
Prashant-thakur77 Dec 27, 2025
3d2380a
Updated styles for tabs
Prashant-thakur77 Jan 13, 2026
f2a24d3
Updated styles for tabs
Prashant-thakur77 Jan 13, 2026
a7a6557
Updated styles for tabs
Prashant-thakur77 Jan 13, 2026
838ce74
Updated styles for tabs
Prashant-thakur77 Jan 13, 2026
7b18f88
Updated styles of sidepanel
Prashant-thakur77 Jan 13, 2026
57cda47
Updated styles of sidepanel
Prashant-thakur77 Jan 13, 2026
16281d1
Updated sidepanel styles
Prashant-thakur77 Jan 14, 2026
71ca32b
Updated sidepanel styles
Prashant-thakur77 Jan 14, 2026
7932532
Updated sidepanel styles
Prashant-thakur77 Jan 14, 2026
963e121
Updated sidepanel styles
Prashant-thakur77 Jan 14, 2026
9b2e1ad
Added scrollable funcality to tabs
Prashant-thakur77 Jan 14, 2026
9a0d4e3
Updated the link design
Prashant-thakur77 Jan 14, 2026
319f42d
Updated the link design
Prashant-thakur77 Jan 14, 2026
8ff2a48
Updated the link design
Prashant-thakur77 Jan 14, 2026
1720fd4
Updated the link design
Prashant-thakur77 Jan 14, 2026
5e32e1b
Updated the link design
Prashant-thakur77 Jan 14, 2026
00b7cce
Updated the link design
Prashant-thakur77 Jan 14, 2026
6ef271d
Updated the title styles
Prashant-thakur77 Jan 14, 2026
a3fd6c8
Updated the title styles
Prashant-thakur77 Jan 14, 2026
f3cb217
Updated the sliding indicator
Prashant-thakur77 Jan 14, 2026
5aad0d4
Updated the sliding indicator
Prashant-thakur77 Jan 14, 2026
9a7b09a
Updated class anmes
Prashant-thakur77 Jan 14, 2026
2b42af3
Updated the tabs container
Prashant-thakur77 Jan 15, 2026
32bb4cb
Sliding approach
Prashant-thakur77 Jan 15, 2026
a1344f7
Sliding approach
Prashant-thakur77 Jan 15, 2026
8b431fd
old approach after review
Prashant-thakur77 Jan 15, 2026
6a61c05
updated code for tabs
Prashant-thakur77 Jan 15, 2026
591b186
Updated menu styles
Prashant-thakur77 Jan 16, 2026
9cb20be
Added StudioPanelOption.vue
Prashant-thakur77 Jan 16, 2026
7ae64b0
Added StudioPanelOption.vue
Prashant-thakur77 Jan 16, 2026
22f7f86
Added StudioPanelOption.vue
Prashant-thakur77 Jan 16, 2026
9bfee50
Added StudioPanelOption.vue
Prashant-thakur77 Jan 16, 2026
33e6d5e
Added StudioPanelOption.vue
Prashant-thakur77 Jan 16, 2026
e8cefe5
Updated styles
Prashant-thakur77 Jan 16, 2026
03f4de0
Updated the skipnavigationlink functionality
Prashant-thakur77 Jan 16, 2026
ead0841
Removed the padding added to the sie panle modal and rather added tha…
Prashant-thakur77 Jan 16, 2026
79290ed
updatedstyles
Prashant-thakur77 Jan 16, 2026
d02965e
updatedstyles
Prashant-thakur77 Jan 16, 2026
394597e
Updated Catalogfiltercontent to handle padding wihout sidepanelmodal
Prashant-thakur77 Jan 16, 2026
31c946f
Updated boolean
Prashant-thakur77 Jan 16, 2026
e68dab5
Updated the tabtrack method to studionavigation
Prashant-thakur77 Jan 16, 2026
fd5d3e3
Updated the tabtrack method to studionavigation
Prashant-thakur77 Jan 16, 2026
ada5e5e
finalising
Prashant-thakur77 Jan 16, 2026
489626a
Test file updated
Prashant-thakur77 Jan 16, 2026
492d824
Test file created
Prashant-thakur77 Jan 17, 2026
533ade1
Updated test files
Prashant-thakur77 Jan 17, 2026
36f3ccb
Updated strings
Prashant-thakur77 Jan 17, 2026
bfd3abb
Test files
Prashant-thakur77 Jan 17, 2026
32ec1ac
Final updates
Prashant-thakur77 Jan 17, 2026
dd2ecdd
Final updates
Prashant-thakur77 Jan 17, 2026
251656c
Final updates
Prashant-thakur77 Jan 17, 2026
0f80c86
Updated class names
Prashant-thakur77 Jan 18, 2026
5a038c0
precommit
Prashant-thakur77 Jan 18, 2026
0d03d85
Added aria-label to the nav
Prashant-thakur77 Jan 20, 2026
a618088
Updated
Prashant-thakur77 Jan 23, 2026
e36c572
updated
Prashant-thakur77 Jan 23, 2026
d281fc6
resolving review
Prashant-thakur77 Feb 2, 2026
ce61aa0
used ktexttruncaotr
Prashant-thakur77 Feb 4, 2026
482aad7
aligned the ktexttruncator with ktoolbar
Prashant-thakur77 Feb 4, 2026
390931d
removed aria-live
Prashant-thakur77 Feb 4, 2026
74d420c
updated
Prashant-thakur77 Feb 4, 2026
fafbcdd
don
Prashant-thakur77 Feb 9, 2026
2f23a0c
decresd offsst
Prashant-thakur77 Feb 9, 2026
03dec67
updated
Prashant-thakur77 Feb 9, 2026
ceb8e12
vreated a diff file to sidepanel to manage codebas
Prashant-thakur77 Feb 9, 2026
9947cef
UPdated with reviews
Prashant-thakur77 Feb 9, 2026
b6ce72b
Removed magic stirngs
Prashant-thakur77 Feb 9, 2026
1426c39
done
Prashant-thakur77 Feb 9, 2026
aec064f
Made updates
Prashant-thakur77 Feb 9, 2026
9a6d4f5
Made updates
Prashant-thakur77 Feb 9, 2026
b58b2ba
Made updates
Prashant-thakur77 Feb 9, 2026
26f70b7
Made updates
Prashant-thakur77 Feb 9, 2026
5145e53
Made updates
Prashant-thakur77 Feb 9, 2026
d29a725
corrected test suits
Prashant-thakur77 Feb 9, 2026
6b381e0
[pre-commit.ci lite] apply automatic fixes
pre-commit-ci-lite[bot] Feb 9, 2026
fb4217e
FIX: Resolve merge conflicts and lint errors in ChannelListIndex.vue
Prashant-thakur77 Apr 13, 2026
70d6d6b
FEAT: Add notification indicators to StudioNavigation and SidePanel
Prashant-thakur77 Apr 13, 2026
e7d258c
FIX: Move NotificationsModal into explicit default slot
Prashant-thakur77 Apr 13, 2026
9080f8b
Resolved merge issues
Prashant-thakur77 Apr 13, 2026
091ee4e
Fix: Fixed kdropdown size
Prashant-thakur77 Apr 13, 2026
b6ea656
Fixing Kdropdown sizes
Prashant-thakur77 Apr 13, 2026
8531895
Fixing Kdropdown sizes
Prashant-thakur77 Apr 13, 2026
b6b0726
Fix: Resolved rtl issues in the red dot usage for notification
Prashant-thakur77 Apr 13, 2026
3870b87
Resolved some indentaion
Prashant-thakur77 Apr 13, 2026
27a1f42
Added transition to Vbadge
Prashant-thakur77 May 12, 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 @@ -725,6 +725,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