Fix nesting errors

This commit is contained in:
Justin Edmund 2025-06-10 09:21:39 -07:00
parent 78ae1d0756
commit 204cba0e6d
2 changed files with 41 additions and 21 deletions

View file

@ -40,13 +40,16 @@
</script> </script>
{#if isClickable} {#if isClickable}
<a <div
href={projectUrl}
class="lab-card clickable" class="lab-card clickable"
bind:this={cardElement} bind:this={cardElement}
onmousemove={handleMouseMove} on:mousemove={handleMouseMove}
onmouseenter={handleMouseEnter} on:mouseenter={handleMouseEnter}
onmouseleave={handleMouseLeave} on:mouseleave={handleMouseLeave}
on:click={() => window.location.href = projectUrl}
on:keydown={(e) => e.key === 'Enter' && (window.location.href = projectUrl)}
role="button"
tabindex="0"
style:transform style:transform
> >
<div class="card-header"> <div class="card-header">
@ -62,7 +65,7 @@
target="_blank" target="_blank"
rel="noopener noreferrer" rel="noopener noreferrer"
iconPosition="right" iconPosition="right"
onclick={(e) => e.stopPropagation()} on:click={(e) => e.stopPropagation()}
> >
Visit site Visit site
<svg <svg
@ -105,14 +108,14 @@
<span>Password Protected</span> <span>Password Protected</span>
</div> </div>
{/if} {/if}
</a> </div>
{:else} {:else}
<article <article
class="lab-card" class="lab-card"
bind:this={cardElement} bind:this={cardElement}
onmousemove={handleMouseMove} on:mousemove={handleMouseMove}
onmouseenter={handleMouseEnter} on:mouseenter={handleMouseEnter}
onmouseleave={handleMouseLeave} on:mouseleave={handleMouseLeave}
style:transform style:transform
> >
<div class="card-header"> <div class="card-header">
@ -187,14 +190,12 @@
transform-style: preserve-3d; transform-style: preserve-3d;
will-change: transform; will-change: transform;
// Prevent overflow issues with 3D transforms // Remove mask-image to allow shadows to render properly
-webkit-mask-image: -webkit-radial-gradient(white, black);
mask-image: radial-gradient(white, black);
&:hover { &:hover {
box-shadow: box-shadow:
0 10px 30px rgba(0, 0, 0, 0.12), 0 10px 30px rgba(0, 0, 0, 0.1),
0 2px 10px rgba(0, 0, 0, 0.08); 0 1px 8px rgba(0, 0, 0, 0.06);
.project-title { .project-title {
color: $red-60; color: $red-60;
@ -203,6 +204,15 @@
&.clickable { &.clickable {
cursor: pointer; cursor: pointer;
&:focus {
outline: 2px solid $red-60;
outline-offset: 2px;
}
&:focus:not(:focus-visible) {
outline: none;
}
} }
@include breakpoint('phone') { @include breakpoint('phone') {

View file

@ -1,9 +1,19 @@
<script> <script lang="ts">
export let href = '' interface Props {
export let title = '' href?: string
export let sourceType = '' title?: string
export let date = '' sourceType?: string
export let source = '' date?: string
source?: string
}
let {
href = '',
title = '',
sourceType = '',
date = '',
source = ''
}: Props = $props()
</script> </script>
<li class="mention"> <li class="mention">