Hacktron Design System

EmptyState

The message a page or section shows when it has no data yet, with an optional action.

Create a repository

Connect a repository to start scanning it for vulnerabilities.

<template>  <EmptyState    icon="i-lucide-folder-plus"    title="Create a repository"    description="Connect a repository to start scanning it for vulnerabilities."  >    <template #action>      <Button variant="primary">Connect repository</Button>    </template>  </EmptyState></template>

Props

Name Type Default
iconstring-
titlestring-
descriptionstring-

Slots

Name Description
titleEscape hatch: replaces the `title` prop's plain text.
descriptionEscape hatch: replaces the `description` prop's plain text.
actionOptional primary call-to-action, e.g. a single <Button>. Only one - this isn't an actions row.

Guidelines

Do

  • Use it for a presentational, feature-education empty state - a page or section with genuinely no data yet, where the goal is to get the user to create the first one.
  • Write title as an active instruction ("Create a repository", "Connect an integration"), not a passive status.
  • Pass the action slot a single primary <Button> when there's a clear next step.

Don't

  • Don't use it for a table's zero-results state - use TableEmptyRow instead (via Table's own emptyTitle/emptyDescription props); this component's icon+centered layout is for a page/section owning its own space, not a row inside an existing table.
  • Don't write a passive title like "No repositories found" - that reads as a dead end, not an invitation.
  • Don't put more than one action in the action slot - this isn't an actions row.
  • Don't add your own min-h-*/page-centering wrapper around it - that's the caller's layout concern, not something this component should assume.