- 
                Notifications
    
You must be signed in to change notification settings  - Fork 9
 
release/15_10_2025 #444
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
release/15_10_2025 #444
Changes from 12 commits
d52b3b1
              956f02b
              c8ace7e
              38ca2d3
              e97641f
              9329dcd
              0445dc3
              e0a2694
              5fccbda
              e957263
              18a4c96
              097903d
              44ba780
              102f365
              c04b42c
              6f217ab
              564f72d
              7d2e0d2
              1bc2613
              2764f48
              0323183
              e7281ca
              4b86026
              169c1cd
              6013a04
              097b62d
              1a57dc8
              File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -1,16 +1,17 @@ | ||||||||||||||||||||||||||||||||||||
| <a [routerLink]="['/', article().slug] | alLocalize"> | ||||||||||||||||||||||||||||||||||||
| <article | ||||||||||||||||||||||||||||||||||||
| class="h-full rounded-lg bg-cover bg-no-repeat transition-transform hover:scale-105 motion-reduce:transition-none motion-reduce:hover:scale-100" | ||||||||||||||||||||||||||||||||||||
| [style.background-image]=" | ||||||||||||||||||||||||||||||||||||
| 'url(' + | ||||||||||||||||||||||||||||||||||||
| (article().featuredImageUrl || 'assets/article-placeholder.webp') + | ||||||||||||||||||||||||||||||||||||
| ')' | ||||||||||||||||||||||||||||||||||||
| " | ||||||||||||||||||||||||||||||||||||
| class="relative h-full overflow-hidden rounded-lg bg-black bg-cover bg-no-repeat transition-transform hover:scale-105 motion-reduce:transition-none motion-reduce:hover:scale-100" | ||||||||||||||||||||||||||||||||||||
                
      
                  coderabbitai[bot] marked this conversation as resolved.
               
              
                Outdated
          
            Show resolved
            Hide resolved
         | 
||||||||||||||||||||||||||||||||||||
| [attr.aria-labelledby]="article().slug" | ||||||||||||||||||||||||||||||||||||
| > | ||||||||||||||||||||||||||||||||||||
| <div | ||||||||||||||||||||||||||||||||||||
| class="bg-al-background relative flex h-full flex-col justify-between opacity-85" | ||||||||||||||||||||||||||||||||||||
| > | ||||||||||||||||||||||||||||||||||||
| <img | ||||||||||||||||||||||||||||||||||||
| alt="Post featured image" | ||||||||||||||||||||||||||||||||||||
| class="absolute h-auto w-full bg-contain opacity-20" | ||||||||||||||||||||||||||||||||||||
| [ngSrc]="article().featuredImageUrl || 'assets/article-placeholder.webp'" | ||||||||||||||||||||||||||||||||||||
| [priority]="imagePriority()" | ||||||||||||||||||||||||||||||||||||
| width="1215" | ||||||||||||||||||||||||||||||||||||
| height="750" | ||||||||||||||||||||||||||||||||||||
| /> | ||||||||||||||||||||||||||||||||||||
                
       | 
||||||||||||||||||||||||||||||||||||
| <img | |
| alt="Post featured image" | |
| class="absolute h-auto w-full bg-contain opacity-20" | |
| [ngSrc]="article().featuredImageUrl || 'assets/article-placeholder.webp'" | |
| [priority]="imagePriority()" | |
| width="1215" | |
| height="750" | |
| /> | |
| <img | |
| alt="" | |
| aria-hidden="true" | |
| class="absolute inset-0 z-0 h-full w-full object-cover opacity-20" | |
| [ngSrc]="article().featuredImageUrl || 'assets/article-placeholder.webp'" | |
| [priority]="!!imagePriority()" | |
| width="1215" | |
| height="750" | |
| /> | 
🤖 Prompt for AI Agents
In
libs/blog/articles/ui-article-card/src/lib/components/article-compact-card/article-compact-card.component.html
around lines 6-13, the <img> is absolute but lacks positioning and uses a
background utility; change the Tailwind classes to include explicit positioning
(e.g. top-0 left-0 w-full h-full) and use an object-fit utility (object-cover or
object-contain object-center) instead of bg-contain; mark the image as purely
decorative by setting alt="" and aria-hidden="true" (or if you want it
informative bind alt to article().title instead), and make the priority binding
an explicit boolean (e.g. [priority]="!!imagePriority()" or
[priority]="imagePriority() === true") so NgOptimizedImage receives a boolean.
        
          
              
                Outdated
          
        
      There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Text color hard-coded; add stacking safety for content layer
- text-[#fff] bypasses theme tokens and may clash in light mode.
 - Ensure content is layered above the overlay/image explicitly.
 
Apply this diff to enforce stacking (and drop hard-coded hex if tokens exist):
-    <div class="relative flex h-full flex-col justify-between text-[#fff]">
+    <div class="relative z-20 flex h-full flex-col justify-between text-al-foreground">If text-al-foreground is unavailable, use your theme variant equivalents (e.g., text-gray-900 [data-theme=dark]:text-white).
Additionally, update the overlay (outside this range) to sit between image and content and ignore pointer events:
<!-- Line 16 update example -->
<div class="absolute inset-0 z-10 h-full w-full pointer-events-none hover:bg-al-bottom-radial-gradient"></div>| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
| @@ -1,6 +1,6 @@ | ||||||
| <a [routerLink]="['/', article().slug] | alLocalize"> | ||||||
| <article | ||||||
| class="bg-al-card md:hover:shadow-al-primary group relative h-full w-full rounded-lg border border-transparent shadow-none transition-transform motion-reduce:transition-none lg:hover:scale-105 lg:motion-reduce:hover:scale-100" | ||||||
| class="bg-al-card md:hover:shadow-al-primary group relative h-full w-full rounded-lg border shadow-none transition-transform motion-reduce:transition-none lg:hover:scale-105 lg:motion-reduce:hover:scale-100 dark:border-transparent" | ||||||
                
       | 
||||||
| class="bg-al-card md:hover:shadow-al-primary group relative h-full w-full rounded-lg border shadow-none transition-transform motion-reduce:transition-none lg:hover:scale-105 lg:motion-reduce:hover:scale-100 dark:border-transparent" | |
| class="bg-al-card md:hover:shadow-al-primary group relative h-full w-full rounded-lg border-al-border shadow-none transition-transform motion-reduce:transition-none lg:hover:scale-105 lg:motion-reduce:hover:scale-100" | 
🤖 Prompt for AI Agents
In
libs/blog/articles/ui-article-card/src/lib/components/article-regular-card/article-regular-card.component.html
around line 3, the element uses Tailwind's generic border class plus
dark:border-transparent which conflicts with the theme-scoped border variable;
replace the hard-coded border classes with the theme-aware border variable
approach (use the --border CSS variable for border color/width via an
appropriate utility or inline style and remove the dark: override) so both light
and dark themes rely on the main.scss --border value; ensure the element no
longer uses the plain "border" and "dark:border-transparent" classes and instead
applies the border using the --border variable consistent with the rest of the
app.
| Original file line number | Diff line number | Diff line change | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| @@ -1,4 +1,4 @@ | ||||||||||
| import { Component } from '@angular/core'; | ||||||||||
| import { Component, computed, input } from '@angular/core'; | ||||||||||
| 
     | 
||||||||||
| import { | ||||||||||
| CardComponent, | ||||||||||
| 
        
          
        
         | 
    @@ -13,29 +13,43 @@ import { | |||||||||
| class: 'block @container', | ||||||||||
| }, | ||||||||||
| template: ` | ||||||||||
| <al-card alGradientCard> | ||||||||||
| <al-card alGradientCard [hideGradient]="hideGradient()"> | ||||||||||
| <div alCardContent> | ||||||||||
| <div | ||||||||||
| class="@3xl:flex-row @3xl:border-none flex w-full flex-col items-center rounded-lg border" | ||||||||||
| class="flex w-full flex-col items-center rounded-lg border" | ||||||||||
| [class]="cardWrapper()" | ||||||||||
| > | ||||||||||
| <div | ||||||||||
| class="@3xl:border @3xl:!bg-al-radial-gradient @3xl:bg-al-background @3xl:min-w-[260px] min-w-fit rounded-lg pb-4 pt-6" | ||||||||||
| class="min-w-fit rounded-lg pt-6 md:min-w-[260px]" | ||||||||||
| [class]="authorInfoCardClass()" | ||||||||||
| > | ||||||||||
| <div | ||||||||||
| class="@3xl:max-w-[360px] flex w-full flex-col items-center gap-4" | ||||||||||
| class="flex w-full flex-col items-center gap-4 md:max-w-[360px]" | ||||||||||
| Expand | ||||||||||
| Down | ||||||||||
| > | ||||||||||
                
      
                  dmaduzia marked this conversation as resolved.
               
              
                Outdated
          
            Show resolved
            Hide resolved
         | 
||||||||||
| <ng-content select="[author-info-card]"></ng-content> | ||||||||||
| </div> | ||||||||||
| </div> | ||||||||||
| 
     | 
||||||||||
| <div | ||||||||||
| class="@3xl:pt-6 w-full flex-1 hyphens-auto break-words p-6 pt-0" | ||||||||||
| > | ||||||||||
| <div class="w-full flex-1 hyphens-auto break-words p-6 pt-0 md:pt-6"> | ||||||||||
| <ng-content select="[author-info-description]"></ng-content> | ||||||||||
| </div> | ||||||||||
| </div> | ||||||||||
| </div> | ||||||||||
| </al-card> | ||||||||||
| `, | ||||||||||
| }) | ||||||||||
| export class AuthorCardTemplateComponent {} | ||||||||||
| export class AuthorCardTemplateComponent { | ||||||||||
| readonly hideGradient = input<boolean>(true); | ||||||||||
| readonly articleCard = input<boolean>(false); | ||||||||||
| 
         
      Comment on lines
    
      +41
     to 
      +42
    
   
  There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Inconsistent default values between parent and template components. The  Align the defaults to match the parent component: -  readonly hideGradient = input<boolean>(true);
+  readonly hideGradient = input<boolean>(false);📝 Committable suggestion
 
        Suggested change
       
    
 🤖 Prompt for AI Agents | 
||||||||||
| 
     | 
||||||||||
| protected readonly cardWrapper = computed(() => | ||||||||||
| !this.articleCard() ? 'md:flex-row md:border-none' : '', | ||||||||||
| ); | ||||||||||
| 
     | 
||||||||||
| protected readonly authorInfoCardClass = computed(() => | ||||||||||
| !this.articleCard() | ||||||||||
| ? 'md:border dark:!bg-al-radial-gradient dark:bg-al-background md:light:bg-[#f2f2f2] pb-6' | ||||||||||
| : '', | ||||||||||
| ); | ||||||||||
| 
         
      Comment on lines
    
      +48
     to 
      +52
    
   
  There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion | 🟠 Major 🧩 Analysis chainVerify Tailwind configuration for light mode variant and avoid !important. Line 50 contains two potential issues: 
 Run the following script to check your Tailwind configuration: Additionally, search the web to confirm whether  🏁 Script executed: #!/bin/bash
# Description: Check Tailwind configuration for light mode variant
# Search for Tailwind config files
fd -e js -e ts 'tailwind.config'
# Search for light mode variant configuration
rg -nP --type=ts --type=js -C5 'variant.*light|darkMode|class.*strategy' 
# Check if light: is used elsewhere in the codebase
rg -nP --type=ts --type=html 'light:' -g '!node_modules'Length of output: 1856 🌐 Web query: 💡 Result: Short answer: No — Tailwind does not include a built‑in light: variant. Tailwind exposes a dark: variant (and the unprefixed classes act as the “light” / default styles). Configure dark mode with darkMode: 'media' or darkMode: 'class' and toggle by adding/removing a .dark parent (commonly on ). Example: 
 If you want an explicit light: variant, add a custom variant (Tailwind v4 supports @custom-variant) or use a selector like html:not(.dark) with an arbitrary selector utility. Example custom variant pattern shown in community answers: 
 Sources: Tailwind dark mode docs and community examples. [1][2] References: Avoid !important and define or remove light: variant 🤖 Prompt for AI Agents | 
||||||||||
| } | ||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
can be private