/* [RFC-0106] Canonical SectionMotionConfig. Consumed by ; the shell emits data-motion-reveal / data-motion-stagger / data-parallax-speed attributes that the GSAP scripts pick up via selectors. Do not introduce app-specific runtime composition or deployment behavior into this reusable package source file. RFC-0133: backfilled MODULE_MAP and CHANGE_SUMMARY markers for compass.validate compliance. */ import { z } from "zod"; export const revealVariantSchema = z.enum(["fade", "fade-up", "fade-up-stagger"]); export type RevealVariant = z.infer; export const parallaxVariantSchema = z.enum(["subtle", "balanced", "dramatic"]); export type ParallaxVariant = z.infer; export const sectionMotionConfigSchema = z .object({ reveal: z .object({ variant: revealVariantSchema.optional(), once: z.boolean().optional(), threshold: z.number().min(0).max(1).optional(), }) .strict() .optional(), parallax: z .object({ variant: parallaxVariantSchema.optional(), speed: z.number().min(0).max(2).optional(), }) .strict() .optional(), stagger: z .object({ delay: z.number().min(0).max(2).optional(), childSelector: z.string().optional(), }) .strict() .optional(), off: z.boolean().optional(), }) .strict(); export type SectionMotionConfig = z.infer;