@if (articleDetails().anchors.length) {
diff --git a/libs/blog/articles/feature-article/src/lib/article-details/article-details.component.ts b/libs/blog/articles/feature-article/src/lib/article-details/article-details.component.ts
index f6265db2..b4f3edf8 100644
--- a/libs/blog/articles/feature-article/src/lib/article-details/article-details.component.ts
+++ b/libs/blog/articles/feature-article/src/lib/article-details/article-details.component.ts
@@ -2,11 +2,12 @@ import { DatePipe, NgClass } from '@angular/common';
 import {
   ChangeDetectionStrategy,
   Component,
+  inject,
   input,
-  signal,
 } from '@angular/core';
 import { FastSvgComponent } from '@push-based/ngx-fast-svg';
 
+import { AdBannerStore } from '@angular-love/blog/ad-banner/data-access';
 import { GiscusCommentsComponent } from '@angular-love/blog/articles/feature-comments';
 import { RelatedArticlesComponent } from '@angular-love/blog/articles/feature-related-articles';
 import { ArticleCompactCardSkeletonComponent } from '@angular-love/blog/articles/ui-article-card';
@@ -57,5 +58,5 @@ import { ArticleShareIconsComponent } from '../article-share-icons/article-share
 })
 export class ArticleDetailsComponent {
   readonly articleDetails = input.required
();
-  protected readonly adBannerStoreVisible = signal(false);
+  protected readonly bannerStore = inject(AdBannerStore);
 }
diff --git a/libs/blog/articles/feature-latest-articles/src/lib/feature-latest-articles/feature-latest-articles.component.html b/libs/blog/articles/feature-latest-articles/src/lib/feature-latest-articles/feature-latest-articles.component.html
index 940fa856..bf0b091c 100644
--- a/libs/blog/articles/feature-latest-articles/src/lib/feature-latest-articles/feature-latest-articles.component.html
+++ b/libs/blog/articles/feature-latest-articles/src/lib/feature-latest-articles/feature-latest-articles.component.html
@@ -28,12 +28,21 @@
     } @else {
       
     }
-    
-      
-    
+
+    @if (cardBanner(); as cardBanner) {
+      
+    } @else {
+      
+        
+      
+    }
   
 
   
diff --git a/libs/blog/articles/feature-latest-articles/src/lib/feature-latest-articles/feature-latest-articles.component.ts b/libs/blog/articles/feature-latest-articles/src/lib/feature-latest-articles/feature-latest-articles.component.ts
index 5663766e..965d235f 100644
--- a/libs/blog/articles/feature-latest-articles/src/lib/feature-latest-articles/feature-latest-articles.component.ts
+++ b/libs/blog/articles/feature-latest-articles/src/lib/feature-latest-articles/feature-latest-articles.component.ts
@@ -9,15 +9,18 @@ import {
 import { RouterLink } from '@angular/router';
 import { TranslocoDirective } from '@jsverse/transloco';
 
+import { AdBannerStore } from '@angular-love/blog/ad-banner/data-access';
 import { ArticleListStore } from '@angular-love/blog/articles/data-access';
 import {
   ArticleRegularCardSkeletonComponent,
   UiArticleCardComponent,
 } from '@angular-love/blog/articles/ui-article-card';
 import { NewsletterComponent } from '@angular-love/blog/newsletter';
+import { AlNewsletterBannerComponent } from '@angular-love/blog/shared/ad-banner';
 import { ButtonComponent } from '@angular-love/blog/shared/ui-button';
 import {
   CardComponent,
+  CardContentDirective,
   GradientCardDirective,
 } from '@angular-love/blog/shared/ui-card';
 import { PillDirective } from '@angular-love/blog/shared/ui-pill';
@@ -34,15 +37,16 @@ import { CategoryListItem, injectCategories } from './categories.const';
     UiArticleCardComponent,
     NewsletterComponent,
     CardComponent,
-    GradientCardDirective,
     NgClass,
     TranslocoDirective,
     ArticleRegularCardSkeletonComponent,
-    CardComponent,
     RepeatDirective,
+    CardContentDirective,
+    AlNewsletterBannerComponent,
     RouterLink,
     ButtonComponent,
     PillDirective,
+    GradientCardDirective,
   ],
   host: {
     'data-testid': 'latest-articles-container',
@@ -61,13 +65,19 @@ export class FeatureLatestArticlesComponent {
   readonly take = 8;
 
   private readonly _articleListStore = inject(ArticleListStore);
+  private readonly _bannerStore = inject(AdBannerStore);
 
+  // todo: remove this once the card banner is implemented
+  protected readonly cardBanner = computed(() => {
+    this._bannerStore.banners();
+    return {
+      url: 'https://img.freepik.com/free-psd/banner-template-black-friday-clearance_23-2148745448.jpg',
+      alt: 'Card Banner Example',
+      navigateTo: '/',
+    };
+  });
   readonly isFetchArticleListLoading =
     this._articleListStore.isFetchArticleListLoading;
-
-  readonly isFetchArticleListError =
-    this._articleListStore.isFetchArticleListError;
-
   readonly articles = this._articleListStore.articles;
 
   constructor() {
diff --git a/libs/blog/articles/ui-article-card/src/lib/components/article-horizontal-card/article-horizontal-card.component.html b/libs/blog/articles/ui-article-card/src/lib/components/article-horizontal-card/article-horizontal-card.component.html
index 5e6de07f..21ab022f 100644
--- a/libs/blog/articles/ui-article-card/src/lib/components/article-horizontal-card/article-horizontal-card.component.html
+++ b/libs/blog/articles/ui-article-card/src/lib/components/article-horizontal-card/article-horizontal-card.component.html
@@ -1,6 +1,6 @@
 
   
     ![]() +
+    
     
+      @if (topBanner(); as topBanner) {
+        
+      }
       
(() =>
-    this.sliderStore.slider()?.slides.map((slide) => ({
-      url: slide.url,
-      alt: slide.alt,
+    this.bannerStore.banners()?.slider?.slides.map((slide) => ({
+      url: slide.url!,
+      alt: slide.alt!,
       action: {
         type: 'url',
         url: slide.navigateTo,
@@ -68,7 +82,10 @@ export class RootShellComponent {
     })),
   );
   protected readonly msPerSlide = computed(
-    () => this.sliderStore.slider()?.slideDisplayTimeMs,
+    () => this.bannerStore.banners()?.slider?.slideDisplayTimeMs,
+  );
+  protected readonly topBanner = computed(
+    () => this.bannerStore.banners()?.topBanner,
   );
 
   readonly translocoService = inject(TranslocoService);
@@ -94,13 +111,7 @@ export class RootShellComponent {
     );
   }
 
-  constructor(viewport: ViewportScroller) {
-    // todo: temporary solution to keep in mind how banner influence the layout
-    effect(() => {
-      this.adBannerVisible()
-        ? viewport.setOffset([0, 160])
-        : viewport.setOffset([0, 80]);
-    });
-    this.sliderStore.getData();
+  constructor() {
+    this.bannerStore.getData();
   }
 }