Cards cardproject
Project Task Card
Small card optimized for list-based project management.
Preview
Usage
Copy the full block below to use this component with its imports.
astro
---
import { ProjectTaskCard } from 'astro-component-kit';
---
<KanbanItemCard title="Update SEO" priority="Prio" tag="SEO" /> ---
import { ProjectTaskCard } from 'astro-component-kit';
---
<KanbanItemCard title="Update SEO" priority="Prio" tag="SEO" /> Manual Installation
If you are not using the npm package, create a new file src/components/lib/ProjectTaskCard.astro and paste the following code:
astro
---
/**
* KanbanItemCard — Small card optimized for list-based project management.
*
* @param {string} title - The description of the ticket/task.
* @param {string} priority - Priority level label (e.g. "Prio").
* @param {string} tag - Contextual label tag (e.g. "SEO", "Bug").
*/
interface Props {
title: string;
priority?: string;
tag?: string;
}
const { title, priority, tag } = Astro.props;
---
<div class="k-item">
<p class="k-item__title">{title}</p>
<div class="k-item__badges">
{priority && <span class="k-item__badge k-item__badge--prio">{priority}</span>}
{tag && <span class="k-item__badge k-item__badge--opt">{tag}</span>}
</div>
</div>
<style>
.k-item {
background: var(--c-bg-elev, #111);
border: 1px solid var(--c-border, #333);
padding: var(--sp-4, 1rem);
border-radius: var(--r-md, 8px);
cursor: pointer;
transition: 0.2s;
}
.k-item:hover {
border-color: var(--c-primary, #6366f1);
transform: scale(1.02);
box-shadow: 0 4px 12px rgba(0,0,0,0.1);
}
.k-item__title { margin: 0 0 0.75rem; font-size: 0.85rem; color: var(--c-text-1, #fff); font-weight: 500; line-height: 1.4; }
.k-item__badges { display: flex; gap: 4px; flex-wrap: wrap; }
.k-item__badge { font-size: 0.65rem; font-weight: 700; padding: 2px 6px; border-radius: 4px; text-transform: uppercase; }
.k-item__badge--prio { background: rgba(245,158,11,0.1); color: #fbbf24; }
.k-item__badge--opt { background: rgba(52,211,153,0.1); color: #34d399; }
</style> ---
/**
* KanbanItemCard — Small card optimized for list-based project management.
*
* @param {string} title - The description of the ticket/task.
* @param {string} priority - Priority level label (e.g. "Prio").
* @param {string} tag - Contextual label tag (e.g. "SEO", "Bug").
*/
interface Props {
title: string;
priority?: string;
tag?: string;
}
const { title, priority, tag } = Astro.props;
---
<div class="k-item">
<p class="k-item__title">{title}</p>
<div class="k-item__badges">
{priority && <span class="k-item__badge k-item__badge--prio">{priority}</span>}
{tag && <span class="k-item__badge k-item__badge--opt">{tag}</span>}
</div>
</div>
<style>
.k-item {
background: var(--c-bg-elev, #111);
border: 1px solid var(--c-border, #333);
padding: var(--sp-4, 1rem);
border-radius: var(--r-md, 8px);
cursor: pointer;
transition: 0.2s;
}
.k-item:hover {
border-color: var(--c-primary, #6366f1);
transform: scale(1.02);
box-shadow: 0 4px 12px rgba(0,0,0,0.1);
}
.k-item__title { margin: 0 0 0.75rem; font-size: 0.85rem; color: var(--c-text-1, #fff); font-weight: 500; line-height: 1.4; }
.k-item__badges { display: flex; gap: 4px; flex-wrap: wrap; }
.k-item__badge { font-size: 0.65rem; font-weight: 700; padding: 2px 6px; border-radius: 4px; text-transform: uppercase; }
.k-item__badge--prio { background: rgba(245,158,11,0.1); color: #fbbf24; }
.k-item__badge--opt { background: rgba(52,211,153,0.1); color: #34d399; }
</style>
Quick Info
- Category
- Cards
- Filename
ProjectTaskCard.astro- Dependencies
- None — pure Astro + CSS
- Tags
- cardproject