Quick-reference for every component, hook, and utility in the Satus starter kit.
| Component | Import | Type |
|---|
| Accordion | @/components/ui/accordion | Client |
| AlertDialog | @/components/ui/alert-dialog | Client |
| Checkbox | @/components/ui/checkbox | Client |
| ErrorView | @/components/ui/error-view | Client |
| Fold | @/components/ui/fold | Client |
| Form | @/components/ui/form | Client |
| Image | @/components/ui/image | Client |
| Link | @/components/ui/link | Client |
| Marquee | @/components/ui/marquee | Client |
| Menu | @/components/ui/menu | Client |
| NotConfigured | @/components/ui/not-configured | Server |
| NotFoundView | @/components/ui/not-found-view | Server |
| RealViewport | @/components/ui/real-viewport | Client |
| SanityImage | @/components/ui/sanity-image | Server |
| Scrollbar | @/components/ui/scrollbar | Client |
| Select | @/components/ui/select | Client |
| Switch | @/components/ui/switch | Client |
| Tabs | @/components/ui/tabs | Client |
| Toast | @/components/ui/toast | Client |
| Tooltip | @/components/ui/tooltip | Client |
| Component | Import | Type |
|---|
| Footer | @/components/layout/footer | Server |
| Header | @/components/layout/header | Client |
| Lenis | @/components/layout/lenis | Client |
| Theme | @/components/layout/theme | Client |
| Wrapper | @/components/layout/wrapper | Client |
| Component | Import | Type |
|---|
| Gsap | @/components/effects/gsap | Client |
| ProgressText | @/components/effects/progress-text | Client |
| Hook | Import | Signature |
|---|
| 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 |
| Export | Signature |
|---|
| assertServerEnvironment | (moduleName: string) => void |
| Export | Signature |
|---|
| fetchWithTimeout | (url: string, options: FetchWithTimeoutOptions = {}) => Promise<Response> |
| fetchJSON | (url: string, options?: FetchWithTimeoutOptions) => Promise<JsonValue> |
| FetchWithTimeoutOptions | |
| Export | Signature |
|---|
| runFormAction | ({ rateLimitPrefix, schema, formData, rateLimitMessage = 'rate_limit_exceeded_', rateLimiter = rateLimiters.standard, turnstile = false, run, }: RunFormActionOptions<T>) => Promise<FormState> |
| Export | Signature |
|---|
| 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 |
| Export | Signature |
|---|
| 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 |
| Export | Signature |
|---|
| mutate | (fn: () => T) => Promise<T> |
| Export | Signature |
|---|
| 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... |
| Export | Signature |
|---|
| slugify | (text: { toString: () => string }) |
| lowerFirstChar | (inputString: string) |
| capitalizeFirstLetter | (inputString: string) |
| isEmptyArray | `(arr: string |
| stripHtmlTags | (input: string) => string |
| Export | Signature |
|---|
| 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 | ` |
| emailSchema | ZodEmail |
| phoneSchema | ZodString |
| sanityEnvSchema | ZodObject<{ NEXT_PUBLIC_SANITY_PROJECT_ID: ZodOptional<ZodString>; SANITY_STU... |
| shopifyEnvSchema | ZodObject<{ SHOPIFY_STORE_DOMAIN: ZodString; SHOPIFY_STOREFRONT_ACCESS_TOKEN:... |
| hubspotEnvSchema | ZodObject<{ HUBSPOT_ACCESS_TOKEN: ZodOptional<ZodString>; NEXT_PUBLIC_HUBSPOT... |
| hubspotFormsApiEnvSchema | ZodObject<{ HUBSPOT_ACCESS_TOKEN: ZodString; }, $strip> |
| hubspotEmbedEnvSchema | ZodObject<{ NEXT_PUBLIC_HUBSPOT_PORTAL_ID: ZodString; }, $strip> |
| mailchimpEnvSchema | ZodObject<{ MAILCHIMP_API_KEY: ZodString; MAILCHIMP_SERVER_PREFIX: ZodString;... |
| turnstileEnvSchema | ZodObject<{ NEXT_PUBLIC_CLOUDFLARE_TURNSTILE_SITE_KEY: ZodString; CLOUDFLARE_... |
| analyticsEnvSchema | ZodObject<{ NEXT_PUBLIC_GOOGLE_ANALYTICS: ZodOptional<ZodString>; NEXT_PUBLIC... |
| coreEnvSchema | ZodObject<{ NEXT_PUBLIC_BASE_URL: ZodOptional<ZodURL>; }, $strip> |
| Component | Import | Type |
|---|
| Canvas | @/webgl/components/canvas | Client |
| FlowmapProvider | @/webgl/components/flowmap-provider | Server |
| Image | @/webgl/components/image | Client |
| Postprocessing | @/webgl/components/postprocessing | Server |
| Raf | @/webgl/components/raf | Server |
| Tunnel | @/webgl/components/tunnel | Client |
| Export | Signature |
|---|
| isConfigured | (id: IntegrationId) => boolean |
| hasCapability | (id: Id, capability: CapabilityOf<Id> extends never ? string : CapabilityOf<Id>) => boolean |
| getConfiguredIds | () => IntegrationId[] |
| getConfigured | () => string[] |
| getUnconfigured | () => string[] |
| CspDirective | ` |
| CspSources | Partial<Record<CspDirective, string[]>> |
| IntegrationEntry | |
| integrations | { readonly sanity: { readonly name: "Sanity"; readonly envSchema: ZodObject<{... |
| IntegrationId | keyof typeof integrations |
| devOnlyRemovables | readonly ["webgl", "theatre"] |
| RemovableId | `IntegrationId |
| CapabilityOf | (typeof integrations)[Id] extends { capabilities: Record<infer K, z.ZodType> ... |
| Alias | Maps 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/* |