Make the button-shaped links actual links
"Web oficial" did nothing when clicked, and it was not alone: six places wrapped `<pi-action-button>` in an `<a>`. That component renders a `<button>`, so each one was a button inside a link -- invalid HTML, and the button swallows the click. Besides "Web oficial" it covered Demo, Repositorio, the contact CTA on every detail page, the 404's way home and a call card's apply button. They become one `app-link-button`, which renders a real anchor. The click was only part of it: a link can also be opened in a new tab, middle-clicked, copied, tabbed to and followed by a crawler. Its look does not come from @pi/ui's button classes, and not for want of trying: those rules are scoped to the element (`html button:not(…)` in `_pi-button.scss`), so on an anchor they contribute nothing except `pi-color__primary` -- a *text* colour, which painted the label violet on a violet fill. The stylesheet reads the same `--pi-theme-button-*` tokens the library reads instead, so a change of shell or theme still moves these buttons and dark mode needs nothing of its own. Verified: the anchor reports href, target and a real navigation to the external site; no `<button>` inside an `<a>` remains on the page; and the rendered pill matches the header's button in radius, gradient fill, white text and weight, in both themes. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -16,6 +16,7 @@ import type { Copy } from '../core/copy';
|
||||
import type { Locale } from '../core/api';
|
||||
import type { PublicCall } from '../core/api.types';
|
||||
import { TechnologyChip } from './technology-chip';
|
||||
import { LinkButton } from './link-button';
|
||||
|
||||
@Component({
|
||||
selector: 'app-call-card',
|
||||
@@ -32,6 +33,7 @@ import { TechnologyChip } from './technology-chip';
|
||||
PiTextColorDirective,
|
||||
PiTextWeightBoldDirective,
|
||||
TechnologyChip,
|
||||
LinkButton,
|
||||
],
|
||||
template: `
|
||||
<pi-card
|
||||
@@ -96,15 +98,13 @@ import { TechnologyChip } from './technology-chip';
|
||||
<!-- To the call's own page and its form when it has one; to the
|
||||
landing's general form otherwise. -->
|
||||
@if (call().path; as path) {
|
||||
<a class="landing-card__button-link" [href]="path">
|
||||
<pi-action-button
|
||||
size="small"
|
||||
color="primary"
|
||||
appearance="outline"
|
||||
[hasIcon]="true"
|
||||
[text]="copy().labels.apply"
|
||||
/>
|
||||
</a>
|
||||
<app-link-button
|
||||
class="landing-card__button-link"
|
||||
size="small"
|
||||
appearance="outline"
|
||||
[href]="path"
|
||||
[text]="copy().labels.apply"
|
||||
/>
|
||||
} @else {
|
||||
<pi-action-button
|
||||
size="small"
|
||||
|
||||
Reference in New Issue
Block a user