Skip to content

Components ​

Sixty-eight components, each with live examples you can interact with and the API read off the source.

Every page here follows the same shape: a live preview, the usage, the examples, the props, emits and slots, what the component does for accessibility, and where to go next. The Preview and the Code tabs are the same file, so what you read is what is running.

What is not here ​

The shadcn-vue primitives under src/shared/components/ui/ are not documented on this site. They are regenerable from the shadcn-vue CLI and the template does not modify them; see the shadcn-vue docs for those.

A handful of shell pieces are documented where they belong rather than as components of their own: the theme customizer and its trigger in Theme customizer, the responsive preview and the pinned menu in Global config and Navigation, and the confirm host in Confirm dialog. The five skeleton loaders sit with Spinner, and the empty-state illustrations with Empty state.

Form inputs ​

ComponentWhat it is
ComboboxA single-select that opens a searchable list.
Multi-selectThe same, with removable chips inside the field.
Date pickerA date field over a themed calendar, holding YYYY-MM-DD.
Date and time pickerOne field for a day and a time, holding a Date.
Time pickerHour and minute columns, holding HH:mm.
Color inputA swatch that opens the system picker, with a hex box.
OTP inputA segmented one-time code that fills from a paste.
Password inputA password field with a reveal toggle out of the tab order.
RatingStars, fractional when read-only.
File uploadA drop zone with previews, validation and progress.
Human verificationA verify-you-are-human widget with the whole flow.

Data display ​

ComponentWhat it is
DataTableSorting, selection, row actions, inline editing, export, cards on a phone.
List groupThe list of rows that is not a table.
CarouselScroll-snap slides, with arrows, dots, autoplay and a cross-fade.

Stats and dashboard widgets ​

Stats and dashboard widgets covers sixteen on one page: StatsSimple, StatsComparison, StatsProgress, StatsChart, Sparkline, StatCard, HeroCard, SectionCard, DashboardGreeting, ActivityTimeline, AssetRows, FunnelBars, Leaderboard, ProjectRows, RecordRows and UpcomingList.

Charts ​

ComponentWhat it is
Bar chartVertical bars for one or two series.
Donut chartA ring with a legend and an optional center label.
Radial gaugeProgress toward a target.
Ranked listA top-N list with proportional bars, and no chart library.

Feedback ​

ComponentWhat it is
AlertAn inline status message, soft or solid.
SpinnerIndeterminate loading, plus the five skeletons.
Empty stateAn illustrated placeholder for a list with nothing in it.
Error boundaryCatches a render error and shows a fallback.
Confirm dialogA controlled yes-or-no, or an awaited promise.
Destructive confirmType the name to enable the button.
Multi-step confirmAcknowledge, then confirm again.
Offline bannerAppears when the network goes, confirms when it returns.
ToastsShort confirmations and failures, raised from anywhere.

Overlays and dialogs ​

ComponentWhat it is
Schema form dialogA create or edit form in a modal, from the same field list.
Two-factor setup dialogScan or copy the key, then type the code.
Command paletteFuzzy search over every registered command.
Shortcut cheat sheetEvery shortcut that works right now, grouped.
Tour spotlightA guided tour that cuts a hole in a dimmed page.
Notification centerThe navbar bell, with a count and a filter.

Page layouts ​

ComponentWhat it is
Page headerBreadcrumb, title, description, actions, and a pin.
Smart breadcrumbBuilt from the matched route records.
List page layoutHeader, filters, table, footer.
Detail page layoutHeader, tabs, and a two-column body.
Form page layoutThe shell every add and edit page uses.
Dashboard page layoutA stats row, a chart pair and a free-form slot.
Error page layoutOne shell for 404, 403, 500 and the rest.
Legal document layoutTerms and privacy, from data.

Brand and utility ​

ComponentWhat it is
LogoThe brand mark, following the theme color.
FlagThe circular flag for a locale.
Card brandA payment-brand logo on its own chip.
Export buttonThe dashboard Export action, gating itself on its flag.
Print buttonOpens the print dialog and stays off the page.
Export column pickerChoose which columns go into the file.

Backgrounds ​

Backgrounds covers six: SaBackground and the five patterns, PatternDots, PatternGrid, PatternWaves, PatternGeometric and PatternGradientMesh.

Conventions ​

  • Imports are absolute, through the template's aliases:

    ts
    import DataTable from '@shared/components/common/DataTable/DataTable.vue'
    import EmptyState from '@shared/components/feedback/EmptyState.vue'
  • Event names are camelCase in the source and kebab-case where you bind them. The lint rule requires the first, and Vue maps the second, so a component declaring rowClick is listened to as @row-click.

  • Defaults in the tables come from the component's own withDefaults call. A default that looks like 'common.save' is a translation key, resolved at render, so it follows the language switcher and a string you pass wins over it.

  • Figures you pass are already formatted, except where a type says number. The component cannot know whether 1200 is money, a count or a duration.

Where to go next ​

  • Schema — the field list behind the forms and the tables.
  • Forms — the form engine.
  • DataTable — how the table's pieces fit together.
  • Theming — where the colors come from.