Skip to content

ShowcaseCard

Pre-built card component for manual projects. Displays project name, description, live link, tech stack, and tags in a single component.

Installation

bash
npx @manningworks/projex add showcase-card

Import

tsx
import { ShowcaseCard } from '@manningworks/projex'

Usage

Basic Usage

tsx
<ShowcaseCard project={project} />
tsx
<ShowcaseCard project={project}>
  <div className="mt-4">
    <button>View Case Study</button>
  </div>
</ShowcaseCard>

Props

ShowcaseCard (Root)

PropTypeRequiredDescription
projectProjexProjectNoProject data to display (renders children only if omitted)
childrenReact.ReactNodeNoContent to render in card footer

ShowcaseCard.Header

PropTypeRequiredDescription
projectProjexProjectYesProject data to display

ShowcaseCard.Description

PropTypeRequiredDescription
projectProjexProjectYesProject data to display

Returns null if project.description is empty.

ShowcaseCard.Tags

PropTypeRequiredDescription
projectProjexProjectYesProject data to display

Returns null if project.stack is empty.

ShowcaseCard.Stats

PropTypeRequiredDescription
projectProjexProjectYesProject data to display

Returns null if no stats are available.

ShowcaseCard.Status

PropTypeRequiredDescription
projectProjexProjectYesProject data to display
PropTypeRequiredDescription
projectProjexProjectYesProject data to display

Returns null if no links are available.

Supports link ordering via project.linkOrder array.

PropTypeRequiredDescription
childrenReact.ReactNodeNoContent to render in footer

Returns null if no children are provided.

Data Attributes

AttributeValueDescription
data-projex-card-Root card container
data-projex-card-header-Header section
data-projex-card-tagline-Tagline text
data-projex-card-description-Description section
data-projex-card-tags-Tags container
data-projex-card-stats-Stats container
data-projex-card-footer-Footer content container
data-projex-status-Status badge
data-projex-status-valueactive | shipped | ...Current status
data-projex-tag-Individual tag
data-projex-link-Link element
data-projex-link-typegithub | live | docs | demo | npm | product-hunt | app-store | play-store | customLink type
data-projex-link-labelstringCustom link label
data-projex-statstars | forks | downloads | version | upvotes | commentsStat type

Example

tsx
import { ShowcaseCard } from '@manningworks/projex'

function ManualProjects({ projects }) {
  return (
    <div className="grid grid-cols-3 gap-4">
      {projects
        .filter((p) => p.type === 'manual')
        .map((project) => (
          <ShowcaseCard key={project.id} project={project} />
        ))}
    </div>
  )
}

Customization

As a preset component, ShowcaseCard is copied to your project and can be freely modified:

tsx
// components/projex/ShowcaseCard/ShowcaseCard.tsx
function ShowcaseCard({ children }: { children?: ReactNode }) {
  // Your customizations here
}