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
}