mirror of
https://github.com/LukeHagar/sveltesociety.dev.git
synced 2025-12-06 04:21:38 +00:00
* More tailwind classes * Add prettier-plugin-tailwindcss * More class replacement * Update Card.svelte * Remove tags from card * Update header link * Run format
98 lines
2.3 KiB
Svelte
98 lines
2.3 KiB
Svelte
<script lang="ts">
|
|
import Tag from '../Tag.svelte';
|
|
import { copyToClipboard } from '$lib/utils/clipboard';
|
|
import { packageManager as manager } from '$stores/packageManager';
|
|
import { relativeDate } from '$utils/relativeDate';
|
|
|
|
export let title: string;
|
|
export let description: string;
|
|
export let tags: string[];
|
|
export let stars: string;
|
|
export let npm = '';
|
|
export let repository = undefined;
|
|
export let date = undefined;
|
|
export let version = undefined;
|
|
|
|
let clipboardCopy = false;
|
|
|
|
const copy = () => {
|
|
copyToClipboard(`${packageManagers[$manager]} ${npm}`).then(() => (clipboardCopy = false));
|
|
clipboardCopy = true;
|
|
};
|
|
|
|
const packageManagers = {
|
|
npm: 'npm install',
|
|
pnpm: 'pnpm add',
|
|
yarn: 'yarn add'
|
|
};
|
|
</script>
|
|
|
|
<div class="card flex flex-col rounded-md p-3 text-base lg:text-lg" id="component-{title}">
|
|
<div class="flex justify-between align-top">
|
|
<div>
|
|
<h3 class="text-xl">
|
|
<a href="#component-{title}"># {title}</a>
|
|
</h3>
|
|
</div>
|
|
<div>
|
|
{#if repository.includes('github')}
|
|
<a
|
|
class="repo box-border flex aspect-square rounded-full border-none"
|
|
title="Go to the source code"
|
|
target="_blank"
|
|
href={repository}
|
|
>
|
|
<img style="display:inline" src="/images/github_logo.svg" alt="github logo" />
|
|
</a>
|
|
{:else if repository.includes('gitlab')}
|
|
<a
|
|
class="repo box-border flex aspect-square rounded-full border-none"
|
|
title="Go to the source code"
|
|
target="_blank"
|
|
href={repository}
|
|
>
|
|
<img style="display:inline" src="/images/gitlab_logo.svg" alt="gitlab logo" />
|
|
</a>
|
|
<!-- {:else} -->
|
|
{/if}
|
|
</div>
|
|
</div>
|
|
|
|
{#if npm}
|
|
<Tag
|
|
click={() => copy()}
|
|
variant="copy"
|
|
title={clipboardCopy ? 'copied!' : `${packageManagers[$manager]} ${npm}`}
|
|
/>
|
|
{/if}
|
|
<p class="flex-grow pb-6">{description}</p>
|
|
<div class="flex items-end justify-between">
|
|
<div>
|
|
{#if typeof stars !== 'undefined'}
|
|
★
|
|
<code>{stars}</code>
|
|
{/if}
|
|
</div>
|
|
{#if date && version}<span class="text-sm">Updated {relativeDate(date)} ({version})</span>{/if}
|
|
</div>
|
|
</div>
|
|
|
|
<style>
|
|
.card {
|
|
background: #f3f6f9;
|
|
}
|
|
.card:hover {
|
|
background: #e8f3fe;
|
|
}
|
|
.repo {
|
|
min-height: 26px;
|
|
padding: 4px;
|
|
margin: -4px;
|
|
background-color: rgba(0, 0, 0, 0);
|
|
transition: background-color 200ms ease-out;
|
|
}
|
|
.repo:hover {
|
|
background-color: rgba(0, 0, 0, 0.25);
|
|
}
|
|
</style>
|