Component & API Manifest

August 18, 2026 ยท View on GitHub

Quick-reference for every component, hook, and utility in the Satus starter kit.


UI Components

ComponentImportType
Accordion@/components/ui/accordionClient
AlertDialog@/components/ui/alert-dialogClient
Checkbox@/components/ui/checkboxClient
ErrorView@/components/ui/error-viewClient
Fold@/components/ui/foldClient
Form@/components/ui/formClient
Image@/components/ui/imageClient
Link@/components/ui/linkClient
Marquee@/components/ui/marqueeClient
Menu@/components/ui/menuClient
NotConfigured@/components/ui/not-configuredServer
NotFoundView@/components/ui/not-found-viewServer
RealViewport@/components/ui/real-viewportClient
SanityImage@/components/ui/sanity-imageServer
Scrollbar@/components/ui/scrollbarClient
Select@/components/ui/selectClient
Switch@/components/ui/switchClient
Tabs@/components/ui/tabsClient
Toast@/components/ui/toastClient
Tooltip@/components/ui/tooltipClient

Layout Components

ComponentImportType
Footer@/components/layout/footerServer
Header@/components/layout/headerClient
Lenis@/components/layout/lenisClient
Theme@/components/layout/themeClient
Wrapper@/components/layout/wrapperClient

Effect Components

ComponentImportType
Gsap@/components/effects/gsapClient
ProgressText@/components/effects/progress-textClient

Hooks

HookImportSignature
useDeviceDetection@/hooks/use-device-detection()
usePrefetch@/hooks/use-prefetch`(href: Route
useReveal@/hooks/use-reveal({ threshold = 0, rootMargin = '0px 0px -25% 0px', once = true, }: UseRevealOptions = {})
useOnlineStatus@/hooks/use-sync-external() => boolean
usePreferredColorScheme@/hooks/use-sync-external`() => 'light'
usePreferredReducedMotion@/hooks/use-sync-external() => boolean
useDocumentVisibility@/hooks/use-sync-external() => DocumentVisibilityState

Utilities

Assert-server-environment (@/utils/assert-server-environment)

ExportSignature
assertServerEnvironment(moduleName: string) => void

Fetch (@/utils/fetch)

ExportSignature
fetchWithTimeout(url: string, options: FetchWithTimeoutOptions = {}) => Promise<Response>
fetchJSON(url: string, options?: FetchWithTimeoutOptions) => Promise<JsonValue>
FetchWithTimeoutOptions

Form-action (@/utils/form-action)

ExportSignature
runFormAction({ rateLimitPrefix, schema, formData, rateLimitMessage = 'rate_limit_exceeded_', rateLimiter = rateLimiters.standard, turnstile = false, run, }: RunFormActionOptions<T>) => Promise<FormState>

Math (@/utils/math)

ExportSignature
clamp(min: number, input: number, max: number) => number
lerp(start: number, end: number, amount: number) => number
mapRange(inMin: number, inMax: number, input: number, outMin: number, outMax: number, shouldClamp = false) => number
truncate(value: number, decimals: number) => number
modulo(n: number, d: number) => number
roundTo(value: number, multiple: number) => number
degToRad(degrees: number) => number
radToDeg(radians: number) => number
distance(x1: number, y1: number, x2: number, y2: number) => number

Metadata (@/utils/metadata)

ExportSignature
truncateDescription`(text: string
generatePageMetadata(options: GenerateMetadataOptions) => Metadata
generateSanityMetadata(options: { // Fields are nullable to accept TypeGen query-result types directly // (projections type optional fields as T

Raf (@/utils/raf)

ExportSignature
mutate(fn: () => T) => Promise<T>

Rate-limit (@/utils/rate-limit)

ExportSignature
rateLimit(identifier: string, config: RateLimitConfig) => RateLimitResult
getIPFromHeaders(headers: Pick<Headers, 'get'>) => string
getClientIP(request: Request) => string
RateLimitConfig
RateLimitResult
rateLimiters{ readonly strict: { readonly limit: 5; readonly windowSeconds: 60; }; readon...

Strings (@/utils/strings)

ExportSignature
slugify(text: { toString: () => string })
lowerFirstChar(inputString: string)
capitalizeFirstLetter(inputString: string)
isEmptyArray`(arr: string
stripHtmlTags(input: string) => string

Validation (@/utils/validation)

ExportSignature
parseFormData`(schema: z.ZodType, formData: FormData) => FormState
zodToValidator(schema: z.ZodType) => (value: string) => boolean
parseApiResponse(schema: z.ZodType<T>, data: unknown, context?: string) => T
JsonValue`
emailSchemaZodEmail
phoneSchemaZodString
sanityEnvSchemaZodObject<{ NEXT_PUBLIC_SANITY_PROJECT_ID: ZodOptional<ZodString>; SANITY_STU...
shopifyEnvSchemaZodObject<{ SHOPIFY_STORE_DOMAIN: ZodString; SHOPIFY_STOREFRONT_ACCESS_TOKEN:...
hubspotEnvSchemaZodObject<{ HUBSPOT_ACCESS_TOKEN: ZodOptional<ZodString>; NEXT_PUBLIC_HUBSPOT...
hubspotFormsApiEnvSchemaZodObject<{ HUBSPOT_ACCESS_TOKEN: ZodString; }, $strip>
hubspotEmbedEnvSchemaZodObject<{ NEXT_PUBLIC_HUBSPOT_PORTAL_ID: ZodString; }, $strip>
mailchimpEnvSchemaZodObject<{ MAILCHIMP_API_KEY: ZodString; MAILCHIMP_SERVER_PREFIX: ZodString;...
turnstileEnvSchemaZodObject<{ NEXT_PUBLIC_CLOUDFLARE_TURNSTILE_SITE_KEY: ZodString; CLOUDFLARE_...
analyticsEnvSchemaZodObject<{ NEXT_PUBLIC_GOOGLE_ANALYTICS: ZodOptional<ZodString>; NEXT_PUBLIC...
coreEnvSchemaZodObject<{ NEXT_PUBLIC_BASE_URL: ZodOptional<ZodURL>; }, $strip>

WebGL Components

ComponentImportType
Canvas@/webgl/components/canvasClient
FlowmapProvider@/webgl/components/flowmap-providerServer
Image@/webgl/components/imageClient
Postprocessing@/webgl/components/postprocessingServer
Raf@/webgl/components/rafServer
Tunnel@/webgl/components/tunnelClient

Integration Registry (@/integrations/registry)

ExportSignature
isConfigured(id: IntegrationId) => boolean
hasCapability(id: Id, capability: CapabilityOf<Id> extends never ? string : CapabilityOf<Id>) => boolean
getConfiguredIds() => IntegrationId[]
getConfigured() => string[]
getUnconfigured() => string[]
CspDirective`
CspSourcesPartial<Record<CspDirective, string[]>>
IntegrationEntry
integrations{ readonly sanity: { readonly name: "Sanity"; readonly envSchema: ZodObject<{...
IntegrationIdkeyof typeof integrations
devOnlyRemovablesreadonly ["webgl", "theatre"]
RemovableId`IntegrationId
CapabilityOf(typeof integrations)[Id] extends { capabilities: Record<infer K, z.ZodType> ...

Import Path Aliases

AliasMaps To
@/*./*
@/hooks/*./lib/hooks/*
@/styles/*./lib/styles/*
@/integrations/*./lib/integrations/*
@/webgl/*./lib/webgl/*
@/utils/*./lib/utils/*
@/config./lib/styles/config.ts
@/dev./lib/dev
@/dev/*./lib/dev/*