diff --git a/libs/ui/components/src/lib/channel-list-container/favorites-tab/favorites-tab.component.html b/libs/ui/components/src/lib/channel-list-container/favorites-tab/favorites-tab.component.html
new file mode 100644
index 000000000..97861373b
--- /dev/null
+++ b/libs/ui/components/src/lib/channel-list-container/favorites-tab/favorites-tab.component.html
@@ -0,0 +1,41 @@
+
+ @if (enrichedFavorites.length > 0) {
+ @for (
+ channel of enrichedFavorites;
+ track trackByFn($index, channel);
+ let i = $index
+ ) {
+
+ }
+ } @else {
+
+ {{ 'CHANNELS.NO_FAVORITES' | translate }}
+
+
+ {{ 'CHANNELS.USE_STAR_TO_FAVORITE' | translate }}
+
+ }
+
diff --git a/libs/ui/components/src/lib/channel-list-container/favorites-tab/favorites-tab.component.scss b/libs/ui/components/src/lib/channel-list-container/favorites-tab/favorites-tab.component.scss
new file mode 100644
index 000000000..9cbd2f7b0
--- /dev/null
+++ b/libs/ui/components/src/lib/channel-list-container/favorites-tab/favorites-tab.component.scss
@@ -0,0 +1,24 @@
+#favorites-list {
+ height: calc(100vh - 105px);
+ overflow-x: hidden;
+}
+
+.channel-list {
+ overflow-x: hidden;
+}
+
+.empty-favorites,
+.empty-favorites-hint {
+ padding: 16px 24px;
+ text-align: center;
+}
+
+.empty-favorites {
+ margin-top: 40px;
+ font-size: 1rem;
+}
+
+.empty-favorites-hint {
+ opacity: 0.7;
+ font-size: 0.9rem;
+}
diff --git a/libs/ui/components/src/lib/channel-list-container/favorites-tab/favorites-tab.component.ts b/libs/ui/components/src/lib/channel-list-container/favorites-tab/favorites-tab.component.ts
new file mode 100644
index 000000000..c345f73b0
--- /dev/null
+++ b/libs/ui/components/src/lib/channel-list-container/favorites-tab/favorites-tab.component.ts
@@ -0,0 +1,108 @@
+import {
+ CdkDragDrop,
+ DragDropModule,
+ moveItemInArray,
+} from '@angular/cdk/drag-drop';
+import {
+ ChangeDetectionStrategy,
+ Component,
+ input,
+ output,
+} from '@angular/core';
+import { TranslatePipe } from '@ngx-translate/core';
+import { Channel, EpgProgram } from 'shared-interfaces';
+import { ChannelListItemComponent } from '../channel-list-item/channel-list-item.component';
+import { EnrichedChannel } from '../all-channels-tab/all-channels-tab.component';
+
+@Component({
+ selector: 'app-favorites-tab',
+ templateUrl: './favorites-tab.component.html',
+ styleUrls: ['./favorites-tab.component.scss'],
+ changeDetection: ChangeDetectionStrategy.OnPush,
+ imports: [
+ ChannelListItemComponent,
+ DragDropModule,
+ TranslatePipe,
+ ],
+})
+export class FavoritesTabComponent {
+ /** Favorite channels */
+ readonly favorites = input.required();
+
+ /** EPG map for channel enrichment */
+ readonly channelEpgMap = input.required