Skip to content

Component Library

Interactive demos and documentation for VitePress components. This page serves as the inventory and entry point for all custom and third-party components.


Custom Components

Components built specifically for this project, inspired by Nuxt UI patterns.

Layout

Page Layout Components

Two-column layouts for feature sections, CTAs, and content blocks.
PageSection
Two-column hero/CTA layouts with slots
FeatureItem
Icon + title + description block
FeatureList
Renders array of feature items
Skeleton
Animated loading placeholder
Placeholder
Diagonal pattern visual placeholder
Visual Content

Display

Logo & Brand Components

Display partner logos, integrations, and supported tools with responsive grids and animations.
LogoGrid
Responsive grid with variants
LogoMarquee
Animated scrolling display
BrandIcon
Technology/vendor icons with fallback

Content

Content Library Components

Browse and display content items with filtering, search, and detail views.
ContentCard
Card for browse grid display
ContentFilters
Filter controls with fuzzy search
ContentDetail
Full detail page layout
ContentHero
Hero section for detail pages
PillarBadge
SAF pillar indicator badges
Content Preview

shadcn-vue Components

Pre-built accessible components from shadcn-vue.

Installed

Currently installed and available for use:

ComponentImportUse Case
Badge@/components/ui/badgeStatus indicators, tags
Button@/components/ui/buttonActions, CTAs, links
Card@/components/ui/cardContent containers (Card, CardHeader, CardTitle, CardContent, CardFooter)
Input@/components/ui/inputText input fields
Select@/components/ui/selectDropdown selection (Select, SelectTrigger, SelectContent, SelectItem, etc.)

Available (Install as Needed)

Key components available via pnpm dlx shadcn-vue@latest add <name>:

ComponentPurposePriority
dialogModal dialogs, confirmationsHigh
accordionCollapsible content sectionsHigh
tabsTabbed content organizationHigh
tableData tables with sortingMedium
dropdown-menuContext menus, action menusMedium
tooltipHover informationMedium
alertAlert messagesMedium
avatarUser/author avatarsLow
breadcrumbNavigation breadcrumbsLow
collapsibleSingle collapsible sectionLow
popoverFloating content panelsLow
sheetSide panel overlaysLow
skeletonLoading states (we have custom)-
toast / sonnerNotificationsLow
Full shadcn-vue Component List

accordion, alert, alert-dialog, aspect-ratio, avatar, badge, breadcrumb, button, button-group, calendar, card, carousel, checkbox, collapsible, combobox, command, context-menu, data-table, dialog, drawer, dropdown-menu, form, hover-card, input, label, menubar, navigation-menu, number-field, pagination, pin-input, popover, progress, radio-group, range-calendar, resizable, scroll-area, select, separator, sheet, skeleton, slider, sonner, switch, table, tabs, tags-input, textarea, toast, toggle, toggle-group, tooltip


Composables

Reusable logic extracted into composables:

ComposablePurposeTests
useContentDetailMetadata formatting, URL building for detail pages
useFilterOptionsExtract unique filter options from content
useFuzzySearchFuzzy text matching with Fuse.js

Quick Reference

All Custom Components

ComponentCategoryDemo
PageSectionLayout/test-page-section
FeatureItemLayout/test-page-section
FeatureListLayout/test-page-section
SkeletonLayout/test-page-section
PlaceholderLayout/test-page-section
LogoGridDisplay/test-logos
LogoMarqueeDisplay/test-logos
BrandIconDisplay/icon-test
ContentCardContent/content/
ContentFiltersContent/content/
ContentDetailContent/content/
ContentHeroContent-
PillarBadgeContent/content/
ActionButtonsContent-
FilterSelectContent-
MetadataPillContent-
MetadataStripContent-

Supporting Files

FilePurpose
lib/utils.tscn() class merging utility
lib/metadata.tsMetadata building helpers
lib/loader-utils.tsPocketbase data loading utilities
logos/types.tsShared LogoItem interface
logos/LogoItemRenderer.vueShared logo rendering

Planned Components

Components to build (inspired by Nuxt UI):

ComponentPurposeStatus
BlogPostBlog card with image, date, authorsTODO
BlogPostsGrid wrapper for blog postsTODO
KbdKeyboard shortcut displayTODO
UserAuthor avatar + nameTODO

Released under the Apache 2.0 License.