-
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 10 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