The ComponentRegistry
Layered, namespaced UI primitives for modern South African digital products. Built on React and Tailwind, distributed via the shadcn registry — scoped per client, secured per token.
Then install any component
npx shadcn@latest add @keystonecore/spinnerThree layers. One registry.
A clean dependency direction — internal and client depend on core. Core never depends on either. Access is enforced per bearer token at the API gateway.
The core layer
Reusable, brand-agnostic primitives safe to ship as product IP. Generic enough for any client to consume — buttons, dialogs, data tables, layout shells, auth patterns.
Example registry names
core/buttoncore/spinnercore/data-tablecore/site-headercore/account-menu
Choose your scope
Each scope maps to a different namespace. Install scripts configure your components.json registry entry automatically — the right URL, the right alias, one command.
@keystonecore RestrictedKeystone Core components
1 · Setup registry
2 · Install components
@visitza RestrictedVisitza components
1 · Setup registry
2 · Install components
Building for a new client? Get in touch to provision a scoped registry and bearer token.
Themes
6Design tokens, typography, and color system
Teal Orange Theme
v1.0.0Balanced teal-and-orange palette with full sidebar token support.
Cool Teal Orange Theme
v1.0.0Cool-toned variant of the teal-orange palette with a dark sidebar.
Public
v1.0.0Warm editorial theme for Visitza's public-facing product: Jost sans-serif, Playfair Display serif, teal primary, terracotta accents.
Supplier
v1.0.0Professional cool-toned theme for Visitza's supplier portal: Inter, blue-grey primary.
Partner
v1.0.0Teal primary with orange secondary for Visitza's partner portal.
Admin
v1.0.0Indigo-blue primary with a dark sidebar for Visitza's internal admin dashboard.
Components
24Interactive UI primitives with variant support
Spinner
v1.0.0A phase-aware loading spinner that transitions through loading → filling → complete states, optionally revealing the South African flag on completion.
Logo
v1.0.0The Visitza wordmark logo with South African flag emblem. Supports full-colour and monotone rendering.
Emblem
v1.0.0The Visitza location-pin emblem with South African flag. Standalone version of the marker from the full Logo — ideal for favicons, avatars, and compact branding.
Icon Button
v1.0.0Minimal rounded icon-button primitive with overlay, ghost, and outline variants. Base component for SaveButton, ShareButton, and RecordButton.
Save Button
v1.0.0A reusable heart-toggle save button with overlay, ghost, and outline variants.
Share Button
v1.0.0A share-action icon button with a lift-off animation on click.
Record Button
v1.0.0A microphone-toggle record button with idle, recording, and confirmed states.
Mobile Nav
v1.0.0A composable fixed-bottom mobile navigation bar with asChild support.
Marquee Band
v1.0.0A composable infinite-scroll ticker strip with light and dark variants.
Product Card
v1.0.0A composable product display card with compound sub-components.
Reveal
v1.0.0A composable scroll-reveal primitive with shared IntersectionObserver.
Stay Card
v1.0.0An opinionated accommodation listing card built on ProductCard.
Sheet
v1.0.0A slide-out panel component for mobile navigation and side content.
Header Nav
v1.0.0Composable header navigation links with animated active indicators.
Account Menu
v1.0.0An auth-aware account dropdown with composable trigger variants.
Keystone Core Logo
v1.0.0Geometric dual-chevron emblem for the Keystone Core brand.
Testimonial Card
v1.0.0A composable testimonial card with star ratings, quote icon, avatar, and author details.
Chat
v1.0.0Platform-agnostic chat UI with theme variants (default, whatsapp, imessage, slack), composable compound components, and paste-to-parse input.
Camera UI
v1.0.0Client-only camera button and menu item components with SSR-safe capability detection.
Image Cropper
v1.0.0A 1:1 crop dialog with zoom, pan, and circular/square guide overlay.
Photo Capture Dialog
v1.0.0Camera capture dialog with front/back switching, capture preview, and file upload fallback.
Photo Upload
v1.0.0Composable photo upload with drag-drop, camera capture, image cropping, and preview — designed to compose with shadcn Avatar.
Admin Stat
v1.0.0A single metric card with label, large value, optional sub-text, icon, and trend indicator. Use independently or compose into AdminDashboard.
Admin Activity Feed
v1.0.0Timestamped event log with kind icons (token, client, registry). Use independently or compose into AdminDashboard.
Blocks
7Composable layout sections and patterns
Waitlist Hero
v1.0.0A dark-cinematic full-screen waitlist hero block with composable sub-components.
Site Header
v1.0.0A composable sticky header with scroll-driven transparent/solid transitions and mobile navigation support.
Footer 1
v1.0.0Composable multi-column footer with brand slot, link groups, socials, separator, and legal bar.
Testimonials Section
v1.0.0A composable testimonials section layout with responsive 3-column grid.
Registry Shell
v1.0.0Sidebar layout shell for internal Keystone Core tooling. Includes navigation, branding, and account menu slots.
Token Manager
v1.0.0Bearer token management UI. Create scoped tokens for client registry access, copy them on first generation, and revoke them with confirmation.
Admin Dashboard
v1.0.0Internal admin overview with registry stats, quick actions, and a recent activity feed. Composed from AdminStat, AdminActivityFeed, and AdminQuickAction.
Hooks
15Browser API hooks for progressive enhancement
usePrefersReducedMotion
v1.0.0SSR-safe React hook that returns true when the user has enabled 'Reduce motion' in their OS accessibility settings.
useWebShare
v1.0.0A React hook for sharing content using the Web Share API.
useGeolocation
v1.0.0A React hook for accessing the browser Geolocation API with one-shot and continuous watch modes.
useNetworkInformation
v1.0.0A React hook for accessing the Network Information API with real-time updates.
useVibration
v1.0.0A React hook for controlling device vibration via the Vibration API. SSR-safe.
useAudioRecorder
v1.0.0A comprehensive React hook for audio recording with real-time analysis.
useIndexedDB
v1.0.0A generic React hook for IndexedDB CRUD operations with automatic database initialisation. SSR-safe.
useLocalStorage
v1.0.0A React hook for managing localStorage with automatic JSON serialisation. SSR-safe.
useClientCapabilities
v1.0.0SSR-safe hook for detecting client capabilities (camera, mounted state) using useSyncExternalStore.
useAttachmentManager
v1.0.0Hook for managing file attachments with local preview, upload progress, and message linking.
useChatImport
v1.0.0Hook for managing chat import state with a parser function dependency.
formatPrice
v1.0.0Lightweight locale-aware price formatter using Intl.NumberFormat. Defaults to South African Rand (ZAR).
Chat Types
v1.0.0Platform-agnostic types for chat data (messages, participants, attachments) compatible with WhatsApp, Telegram, iMessage, and custom sources.
WhatsApp Parser
v1.0.0Parses WhatsApp chat exports into generic Chat format with attachment and file matching support.
Waitlist Email
v1.0.0Renders waitlist confirmation emails (HTML + plain text) for public, partner, and supplier products. Compatible with any email service.