|
|
|
@ -4,20 +4,23 @@ |
|
|
|
|
|
|
|
export let title |
|
|
|
export let subtitle |
|
|
|
export let footer |
|
|
|
export let description |
|
|
|
export let imageURL |
|
|
|
export let quiet |
|
|
|
export let linkURL |
|
|
|
export let horizontal |
|
|
|
|
|
|
|
const { styleable } = getContext("sdk") |
|
|
|
const { styleable, linkable } = getContext("sdk") |
|
|
|
const component = getContext("component") |
|
|
|
|
|
|
|
$: external = linkURL && !linkURL.startsWith("/") |
|
|
|
</script> |
|
|
|
|
|
|
|
<div |
|
|
|
use:styleable={$component.styles} |
|
|
|
class="spectrum-Card" |
|
|
|
class:spectrum-Card--quiet={quiet} |
|
|
|
tabindex="0" |
|
|
|
role="figure" |
|
|
|
class:horizontal |
|
|
|
> |
|
|
|
{#if imageURL} |
|
|
|
<div |
|
|
|
@ -25,30 +28,91 @@ |
|
|
|
style="background-image: url({imageURL})" |
|
|
|
/> |
|
|
|
{/if} |
|
|
|
<div class="spectrum-Card-body"> |
|
|
|
<div class="spectrum-Card-header"> |
|
|
|
<div |
|
|
|
class="spectrum-Card-title spectrum-Heading spectrum-Heading--sizeXS" |
|
|
|
> |
|
|
|
{title || "Card Title"} |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
{#if subtitle} |
|
|
|
<div class="spectrum-Card-content"> |
|
|
|
<div class="spectrum-Card-container"> |
|
|
|
<div class="spectrum-Card-body"> |
|
|
|
<div class="spectrum-Card-header"> |
|
|
|
<div |
|
|
|
class="spectrum-Card-subtitle spectrum-Detail spectrum-Detail--sizeS" |
|
|
|
class="spectrum-Card-title spectrum-Heading spectrum-Heading--sizeXS" |
|
|
|
> |
|
|
|
{subtitle} |
|
|
|
{#if linkURL} |
|
|
|
{#if external} |
|
|
|
<a href={linkURL}>{title || "Card Title"}</a> |
|
|
|
{:else} |
|
|
|
<a use:linkable href={linkURL}>{title || "Card Title"}</a> |
|
|
|
{/if} |
|
|
|
{:else} |
|
|
|
{title || "Card Title"} |
|
|
|
{/if} |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
{#if subtitle} |
|
|
|
<div class="spectrum-Card-content"> |
|
|
|
<div |
|
|
|
class="spectrum-Card-subtitle spectrum-Detail spectrum-Detail--sizeS" |
|
|
|
> |
|
|
|
{subtitle} |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
{/if} |
|
|
|
</div> |
|
|
|
{#if description} |
|
|
|
<div class="spectrum-Card-footer"> |
|
|
|
{description} |
|
|
|
</div> |
|
|
|
{/if} |
|
|
|
</div> |
|
|
|
{#if footer} |
|
|
|
<div class="spectrum-Card-footer">{footer}</div> |
|
|
|
{/if} |
|
|
|
</div> |
|
|
|
|
|
|
|
<style> |
|
|
|
.spectrum-Card { |
|
|
|
width: 240px; |
|
|
|
border-color: var(--spectrum-global-color-gray-300) !important; |
|
|
|
display: flex; |
|
|
|
flex-direction: column; |
|
|
|
justify-content: flex-start; |
|
|
|
align-items: stretch; |
|
|
|
} |
|
|
|
.spectrum-Card.horizontal { |
|
|
|
flex-direction: row; |
|
|
|
width: 420px; |
|
|
|
} |
|
|
|
.spectrum-Card-title :global(a) { |
|
|
|
text-overflow: ellipsis; |
|
|
|
overflow: hidden; |
|
|
|
white-space: nowrap; |
|
|
|
width: 100%; |
|
|
|
} |
|
|
|
.spectrum-Card-subtitle { |
|
|
|
text-overflow: ellipsis; |
|
|
|
overflow: hidden; |
|
|
|
white-space: nowrap; |
|
|
|
} |
|
|
|
.spectrum-Card-footer { |
|
|
|
word-wrap: anywhere; |
|
|
|
} |
|
|
|
a { |
|
|
|
transition: color 130ms ease-in-out; |
|
|
|
color: var(--spectrum-alias-text-color); |
|
|
|
} |
|
|
|
a:hover { |
|
|
|
color: var(--spectrum-global-color-blue-600); |
|
|
|
} |
|
|
|
|
|
|
|
.horizontal .spectrum-Card-coverPhoto { |
|
|
|
flex: 0 0 160px; |
|
|
|
height: auto; |
|
|
|
border-bottom-left-radius: calc( |
|
|
|
var(--spectrum-alias-border-radius-regular) - 1px |
|
|
|
); |
|
|
|
border-top-right-radius: 0; |
|
|
|
} |
|
|
|
.horizontal .spectrum-Card-container { |
|
|
|
width: 0; |
|
|
|
flex: 1 1 auto; |
|
|
|
} |
|
|
|
.spectrum-Card-footer { |
|
|
|
border-top: none; |
|
|
|
padding-top: 0; |
|
|
|
margin-top: -8px; |
|
|
|
} |
|
|
|
</style> |
|
|
|
|