motionwind-core 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +44 -0
- package/dist/adapter.cjs +31 -0
- package/dist/adapter.cjs.map +1 -0
- package/dist/adapter.d.cts +14 -0
- package/dist/adapter.d.ts +14 -0
- package/dist/adapter.js +3 -0
- package/dist/adapter.js.map +1 -0
- package/dist/chunk-A7EAMXLY.js +1098 -0
- package/dist/chunk-A7EAMXLY.js.map +1 -0
- package/dist/chunk-IJZCYKTO.js +352 -0
- package/dist/chunk-IJZCYKTO.js.map +1 -0
- package/dist/chunk-P6FC2RDE.js +25 -0
- package/dist/chunk-P6FC2RDE.js.map +1 -0
- package/dist/chunk-ULRTFOGX.js +28 -0
- package/dist/chunk-ULRTFOGX.js.map +1 -0
- package/dist/chunk-Z5I36REG.js +411 -0
- package/dist/chunk-Z5I36REG.js.map +1 -0
- package/dist/config.cjs +30 -0
- package/dist/config.cjs.map +1 -0
- package/dist/config.d.cts +1 -0
- package/dist/config.d.ts +1 -0
- package/dist/config.js +3 -0
- package/dist/config.js.map +1 -0
- package/dist/index.cjs +1970 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +18 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.js +60 -0
- package/dist/index.js.map +1 -0
- package/dist/parser.cjs +1690 -0
- package/dist/parser.cjs.map +1 -0
- package/dist/parser.d.cts +21 -0
- package/dist/parser.d.ts +21 -0
- package/dist/parser.js +6 -0
- package/dist/parser.js.map +1 -0
- package/dist/recipes.cjs +359 -0
- package/dist/recipes.cjs.map +1 -0
- package/dist/recipes.d.cts +19 -0
- package/dist/recipes.d.ts +19 -0
- package/dist/recipes.js +4 -0
- package/dist/recipes.js.map +1 -0
- package/dist/registry.cjs +421 -0
- package/dist/registry.cjs.map +1 -0
- package/dist/registry.d.cts +1 -0
- package/dist/registry.d.ts +1 -0
- package/dist/registry.js +3 -0
- package/dist/registry.js.map +1 -0
- package/dist/types-BYtWWSgh.d.cts +185 -0
- package/dist/types-BYtWWSgh.d.ts +185 -0
- package/llms.txt +77 -0
- package/package.json +96 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/registry.ts","../src/config.ts","../src/recipes.ts","../src/parser.ts","../src/adapter.ts","../src/analysis.ts"],"names":["config","n","property"],"mappings":"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","file":"index.cjs","sourcesContent":["import type { GestureKey } from \"./types.js\";\n\nexport type SyntaxCategory =\n | \"gesture\"\n | \"property\"\n | \"transition\"\n | \"viewport\"\n | \"scroll\"\n | \"drag\"\n | \"layout\"\n | \"variant\"\n | \"preset\"\n | \"modifier\";\n\nexport type Platform = \"react\" | \"vue\" | \"vanilla\" | \"react-native\";\n\n/** Machine-readable syntax metadata shared by docs, editors and diagnostics. */\nexport interface SyntaxDefinition {\n id: string;\n category: SyntaxCategory;\n label: string;\n snippet: string;\n description: string;\n motionKey?: string;\n platforms?: Platform[];\n}\n\nconst ALL: Platform[] = [\"react\", \"vue\", \"vanilla\", \"react-native\"];\nconst WEB: Platform[] = [\"react\", \"vue\", \"vanilla\"];\n\nconst gesture = (\n id: string,\n motionKey: GestureKey,\n description: string,\n): SyntaxDefinition => ({\n id: `gesture.${id}`,\n category: \"gesture\",\n label: `animate-${id}:`,\n snippet: `animate-${id}:`,\n description,\n motionKey,\n platforms: ALL,\n});\n\nexport const GESTURE_DEFINITIONS = [\n gesture(\"hover\", \"whileHover\", \"Animate while an element is hovered.\"),\n gesture(\"tap\", \"whileTap\", \"Animate while an element is pressed.\"),\n gesture(\"focus\", \"whileFocus\", \"Animate while an element has focus.\"),\n gesture(\"inview\", \"whileInView\", \"Animate while an element is in view.\"),\n gesture(\"drag\", \"whileDrag\", \"Animate while an element is dragged.\"),\n gesture(\"initial\", \"initial\", \"Set the state before an animation begins.\"),\n gesture(\"enter\", \"animate\", \"Animate to a state when an element enters.\"),\n gesture(\"exit\", \"exit\", \"Animate to a state when an element exits.\"),\n] as const satisfies readonly SyntaxDefinition[];\n\n/**\n * Modifier prefixes that wrap an inner class token and control conditional\n * application based on the user's motion preference media query.\n */\nexport const MODIFIER_DEFINITIONS: readonly SyntaxDefinition[] = [\n {\n id: \"modifier.motion-reduce\",\n category: \"modifier\",\n label: \"motion-reduce:\",\n snippet: \"motion-reduce:\",\n description:\n \"Apply the wrapped class only when `prefers-reduced-motion: reduce` is active.\",\n platforms: WEB,\n },\n {\n id: \"modifier.motion-safe\",\n category: \"modifier\",\n label: \"motion-safe:\",\n snippet: \"motion-safe:\",\n description:\n \"Apply the wrapped class only when `prefers-reduced-motion: no-preference` is active.\",\n platforms: WEB,\n },\n];\n\nconst property = (\n label: string,\n snippet: string,\n motionKey: string,\n description: string,\n platforms: Platform[] = ALL,\n): SyntaxDefinition => ({\n id: `property.${label.replace(/[^a-z0-9]+/gi, \"-\").replace(/^-|-$/g, \"\")}`,\n category: \"property\",\n label,\n snippet,\n motionKey,\n description,\n platforms,\n});\n\nexport const PROPERTY_DEFINITIONS = [\n property(\n \"scale-\",\n \"scale-${1:110}\",\n \"scale\",\n \"Scale (100 is the resting value).\",\n ),\n property(\"scale-x-\", \"scale-x-${1:110}\", \"scaleX\", \"Scale on the x axis.\"),\n property(\"scale-y-\", \"scale-y-${1:110}\", \"scaleY\", \"Scale on the y axis.\"),\n property(\n \"scale-z-\",\n \"scale-z-${1:110}\",\n \"scaleZ\",\n \"Scale on the z axis.\",\n WEB,\n ),\n property(\"rotate-\", \"rotate-${1:45}\", \"rotate\", \"Rotate in degrees.\"),\n property(\n \"rotate-x-\",\n \"rotate-x-${1:45}\",\n \"rotateX\",\n \"Rotate around the x axis.\",\n ),\n property(\n \"rotate-y-\",\n \"rotate-y-${1:45}\",\n \"rotateY\",\n \"Rotate around the y axis.\",\n ),\n property(\"x-\", \"x-${1:20}\", \"x\", \"Translate on the x axis.\"),\n property(\"y-\", \"y-${1:20}\", \"y\", \"Translate on the y axis.\"),\n property(\"z-\", \"z-${1:20}\", \"z\", \"Translate on the z axis.\", WEB),\n // z-{0,10,20,30,40,50,auto} maps to zIndex (Tailwind-standard values)\n {\n id: \"property.z-zIndex\",\n category: \"property\",\n label: \"z-\",\n snippet: \"z-${1|0,10,20,30,40,50,auto|}\",\n motionKey: \"zIndex\",\n description:\n \"Animate z-index (Tailwind values: 0, 10, 20, 30, 40, 50, auto). Non-standard values translate on the z axis instead.\",\n platforms: WEB,\n },\n property(\"skew-x-\", \"skew-x-${1:12}\", \"skewX\", \"Skew on the x axis.\"),\n property(\"skew-y-\", \"skew-y-${1:12}\", \"skewY\", \"Skew on the y axis.\"),\n property(\n \"origin-x-\",\n \"origin-x-${1:50}\",\n \"originX\",\n \"Set the x transform origin.\",\n WEB,\n ),\n property(\n \"origin-y-\",\n \"origin-y-${1:50}\",\n \"originY\",\n \"Set the y transform origin.\",\n WEB,\n ),\n property(\n \"perspective-\",\n \"perspective-${1:800}\",\n \"perspective\",\n \"Set 3D perspective.\",\n WEB,\n ),\n property(\"opacity-\", \"opacity-${1:0}\", \"opacity\", \"Animate opacity (0–100).\"),\n property(\"blur-\", \"blur-${1:10}\", \"filter\", \"Animate CSS blur.\", WEB),\n property(\n \"brightness-\",\n \"brightness-${1:120}\",\n \"filter\",\n \"Animate CSS brightness.\",\n WEB,\n ),\n property(\n \"contrast-\",\n \"contrast-${1:120}\",\n \"filter\",\n \"Animate CSS contrast.\",\n WEB,\n ),\n property(\n \"saturate-\",\n \"saturate-${1:120}\",\n \"filter\",\n \"Animate CSS saturation.\",\n WEB,\n ),\n property(\n \"grayscale-\",\n \"grayscale-${1:100}\",\n \"filter\",\n \"Animate CSS grayscale.\",\n WEB,\n ),\n property(\n \"backdrop-blur-\",\n \"backdrop-blur-${1:10}\",\n \"backdropFilter\",\n \"Animate backdrop blur.\",\n WEB,\n ),\n property(\"w-\", \"w-${1:100}\", \"width\", \"Animate width.\"),\n property(\"h-\", \"h-${1:100}\", \"height\", \"Animate height.\"),\n property(\n \"rounded-\",\n \"rounded-${1:12}\",\n \"borderRadius\",\n \"Animate border radius.\",\n ),\n property(\n \"rounded-tl-\",\n \"rounded-tl-${1:12}\",\n \"borderTopLeftRadius\",\n \"Animate top-left border radius.\",\n ),\n property(\n \"rounded-tr-\",\n \"rounded-tr-${1:12}\",\n \"borderTopRightRadius\",\n \"Animate top-right border radius.\",\n ),\n property(\n \"rounded-bl-\",\n \"rounded-bl-${1:12}\",\n \"borderBottomLeftRadius\",\n \"Animate bottom-left border radius.\",\n ),\n property(\n \"rounded-br-\",\n \"rounded-br-${1:12}\",\n \"borderBottomRightRadius\",\n \"Animate bottom-right border radius.\",\n ),\n property(\"top-\", \"top-${1:0}\", \"top\", \"Animate top position.\"),\n property(\"left-\", \"left-${1:0}\", \"left\", \"Animate left position.\"),\n property(\"right-\", \"right-${1:0}\", \"right\", \"Animate right position.\"),\n property(\"bottom-\", \"bottom-${1:0}\", \"bottom\", \"Animate bottom position.\"),\n property(\"p-\", \"p-${1:16}\", \"padding\", \"Animate padding.\"),\n property(\"m-\", \"m-${1:16}\", \"margin\", \"Animate margin.\"),\n property(\"gap-\", \"gap-${1:8}\", \"gap\", \"Animate gap.\"),\n property(\"text-size-\", \"text-size-${1:16}\", \"fontSize\", \"Animate font size.\"),\n property(\n \"tracking-\",\n \"tracking-${1:1}\",\n \"letterSpacing\",\n \"Animate letter spacing.\",\n ),\n property(\"leading-\", \"leading-${1:24}\", \"lineHeight\", \"Animate line height.\"),\n property(\n \"border-w-\",\n \"border-w-${1:2}\",\n \"borderWidth\",\n \"Animate border width.\",\n ),\n property(\n \"bg-#\",\n \"bg-#${1:c8ff2e}\",\n \"backgroundColor\",\n \"Animate background color.\",\n ),\n property(\"text-#\", \"text-#${1:ffffff}\", \"color\", \"Animate text color.\"),\n property(\n \"border-#\",\n \"border-#${1:c8ff2e}\",\n \"borderColor\",\n \"Animate border color.\",\n ),\n property(\n \"path-length-\",\n \"path-length-${1:1}\",\n \"pathLength\",\n \"Animate SVG path length.\",\n WEB,\n ),\n property(\n \"text-shadow-[\",\n \"text-shadow-[${1:value}]\",\n \"textShadow\",\n \"Animate text shadow (arbitrary value; underscores become spaces).\",\n WEB,\n ),\n property(\n \"[=]\",\n \"[${1:property}=${2:value}]\",\n \"arbitrary\",\n \"Animate an allow-listed arbitrary value.\",\n WEB,\n ),\n] as const satisfies readonly SyntaxDefinition[];\n\nconst config = (\n category: Exclude<SyntaxCategory, \"gesture\" | \"property\">,\n label: string,\n snippet: string,\n description: string,\n platforms: Platform[] = ALL,\n): SyntaxDefinition => ({\n id: `${category}.${label}`,\n category,\n label: `animate-${label}`,\n snippet: `animate-${snippet}`,\n description,\n platforms,\n});\n\nexport const CONFIG_DEFINITIONS = [\n config(\n \"transition\",\n \"duration-\",\n \"duration-${1:300}\",\n \"Duration in milliseconds.\",\n ),\n config(\"transition\", \"delay-\", \"delay-${1:100}\", \"Delay in milliseconds.\"),\n config(\"transition\", \"ease-in\", \"ease-in\", \"Ease into the animation.\"),\n config(\"transition\", \"ease-out\", \"ease-out\", \"Ease out of the animation.\"),\n config(\"transition\", \"ease-in-out\", \"ease-in-out\", \"Ease in and out.\"),\n config(\"transition\", \"ease-linear\", \"ease-linear\", \"Use linear easing.\"),\n config(\"transition\", \"spring\", \"spring\", \"Use spring physics.\"),\n config(\"transition\", \"stiffness-\", \"stiffness-${1:300}\", \"Spring stiffness.\"),\n config(\"transition\", \"damping-\", \"damping-${1:24}\", \"Spring damping.\"),\n config(\"transition\", \"bounce-\", \"bounce-${1:20}\", \"Spring bounce (0–100).\"),\n config(\"transition\", \"mass-\", \"mass-${1:10}\", \"Spring mass in tenths.\"),\n config(\"transition\", \"repeat-\", \"repeat-${1:2}\", \"Repeat count.\"),\n config(\"transition\", \"repeat-infinite\", \"repeat-infinite\", \"Repeat forever.\"),\n config(\n \"transition\",\n \"repeat-reverse\",\n \"repeat-reverse\",\n \"Reverse each repetition.\",\n ),\n config(\n \"transition\",\n \"stagger-\",\n \"stagger-${1:60}\",\n \"Stagger children in milliseconds.\",\n ),\n config(\n \"transition\",\n \"delay-children-\",\n \"delay-children-${1:100}\",\n \"Delay child animations.\",\n ),\n config(\"viewport\", \"once\", \"once\", \"Run an in-view animation once.\"),\n config(\"viewport\", \"amount-\", \"amount-${1:50}\", \"Required visible amount.\"),\n config(\n \"viewport\",\n \"margin-\",\n \"margin-${1:100}\",\n \"Viewport margin in pixels.\",\n ),\n config(\n \"scroll\",\n \"scroll-axis-x\",\n \"scroll-axis-x\",\n \"Use horizontal scroll progress.\",\n WEB,\n ),\n config(\n \"scroll\",\n \"scroll-container\",\n \"scroll-container\",\n \"Track the page scroll container.\",\n WEB,\n ),\n config(\"drag\", \"drag-x\", \"drag-x\", \"Enable horizontal drag.\", [\n \"react\",\n \"vue\",\n \"react-native\",\n ]),\n config(\"drag\", \"drag-y\", \"drag-y\", \"Enable vertical drag.\", [\n \"react\",\n \"vue\",\n \"react-native\",\n ]),\n config(\"drag\", \"drag-both\", \"drag-both\", \"Enable drag on both axes.\", [\n \"react\",\n \"vue\",\n \"react-native\",\n ]),\n config(\n \"drag\",\n \"drag-elastic-\",\n \"drag-elastic-${1:50}\",\n \"Set drag elasticity.\",\n [\"react\", \"vue\", \"react-native\"],\n ),\n config(\"drag\", \"drag-snap\", \"drag-snap\", \"Snap drag to its origin.\", [\n \"react\",\n \"vue\",\n \"react-native\",\n ]),\n config(\"layout\", \"layout\", \"layout\", \"Animate layout changes.\", [\n \"react\",\n \"vue\",\n ]),\n config(\n \"layout\",\n \"layout-position\",\n \"layout-position\",\n \"Animate layout position.\",\n [\"react\", \"vue\"],\n ),\n config(\"layout\", \"layout-size\", \"layout-size\", \"Animate layout size.\", [\n \"react\",\n \"vue\",\n ]),\n config(\n \"layout\",\n \"layout-id-\",\n \"layout-id-${1:shared}\",\n \"Set a shared layout id.\",\n [\"react\", \"vue\"],\n ),\n config(\n \"variant\",\n \"from-\",\n \"from-${1:hidden}\",\n \"Select the initial named variant.\",\n [\"react\", \"vue\", \"react-native\"],\n ),\n config(\n \"variant\",\n \"to-\",\n \"to-${1:visible}\",\n \"Select the active named variant.\",\n [\"react\", \"vue\", \"react-native\"],\n ),\n config(\n \"preset\",\n \"preset-\",\n \"preset-${1:button-press}\",\n \"Apply a configured animation preset.\",\n ),\n] as const satisfies readonly SyntaxDefinition[];\n\nexport const MOTIONWIND_SYNTAX_REGISTRY: readonly SyntaxDefinition[] = [\n ...GESTURE_DEFINITIONS,\n ...MODIFIER_DEFINITIONS,\n ...PROPERTY_DEFINITIONS,\n ...CONFIG_DEFINITIONS,\n];\n\nexport const GESTURE_MAP = Object.fromEntries(\n GESTURE_DEFINITIONS.map((definition) => [\n definition.label.slice(\"animate-\".length, -1),\n definition.motionKey,\n ]),\n) as Record<string, GestureKey>;\n\nexport const GESTURE_KEYS = new Set(Object.keys(GESTURE_MAP));\n\nexport const EASING_MAP: Record<string, string> = {\n \"ease-in\": \"easeIn\",\n \"ease-out\": \"easeOut\",\n \"ease-in-out\": \"easeInOut\",\n \"ease-linear\": \"linear\",\n \"ease-circ-in\": \"circIn\",\n \"ease-circ-out\": \"circOut\",\n \"ease-circ-in-out\": \"circInOut\",\n \"ease-back-in\": \"backIn\",\n \"ease-back-out\": \"backOut\",\n \"ease-back-in-out\": \"backInOut\",\n \"ease-anticipate\": \"anticipate\",\n};\n\nexport function getSyntaxDefinitions(\n category?: SyntaxCategory,\n): readonly SyntaxDefinition[] {\n return category\n ? MOTIONWIND_SYNTAX_REGISTRY.filter(\n (definition) => definition.category === category,\n )\n : MOTIONWIND_SYNTAX_REGISTRY;\n}\n","import type { ParsedResult } from \"./types.js\";\nimport type { SyntaxDefinition } from \"./registry.js\";\n\nexport type ReducedMotionPolicy = \"user\" | \"always\" | \"never\";\n\nexport interface SpringToken {\n stiffness?: number;\n damping?: number;\n bounce?: number;\n mass?: number;\n}\n\nexport interface MotionwindTokens {\n durations?: Record<string, number>;\n easings?: Record<string, string | number[]>;\n springs?: Record<string, SpringToken>;\n}\n\nexport interface MotionwindDiagnostic {\n code: string;\n message: string;\n severity: \"info\" | \"warning\" | \"error\";\n token?: string;\n plugin?: string;\n}\n\nexport interface MotionwindResultPatch {\n gestures?: ParsedResult[\"gestures\"];\n transition?: ParsedResult[\"transition\"];\n viewport?: ParsedResult[\"viewport\"];\n dragConfig?: ParsedResult[\"dragConfig\"];\n layoutConfig?: ParsedResult[\"layoutConfig\"];\n scroll?: Partial<ParsedResult[\"scroll\"]>;\n variants?: ParsedResult[\"variants\"];\n variantState?: ParsedResult[\"variantState\"];\n}\n\nexport interface MotionwindPluginContext {\n config: MotionwindConfig;\n}\n\nexport interface MotionwindPlugin {\n name: string;\n version: string;\n core?: string;\n presets?: Record<string, string | readonly string[]>;\n definitions?: readonly SyntaxDefinition[];\n transformToken?: (\n token: string,\n context: MotionwindPluginContext,\n ) => MotionwindResultPatch | null;\n diagnose?: (\n className: string,\n parsed: ParsedResult,\n context: MotionwindPluginContext,\n ) => readonly MotionwindDiagnostic[];\n}\n\nexport interface MotionwindConfig {\n adapter?: string;\n strict?: boolean;\n reducedMotion?: ReducedMotionPolicy;\n tokens?: MotionwindTokens;\n presets?: Record<string, string | readonly string[]>;\n plugins?: readonly MotionwindPlugin[];\n}\n\nexport function defineConfig<const T extends MotionwindConfig>(config: T): T {\n return config;\n}\n\nexport function defineMotionwindPlugin<const T extends MotionwindPlugin>(\n plugin: T,\n): T {\n if (!plugin.name.trim())\n throw new Error(\"[motionwind] Plugins require a name.\");\n if (!plugin.version.trim())\n throw new Error(\"[motionwind] Plugins require a version.\");\n return plugin;\n}\n\nexport function definePreset<const T extends string | readonly string[]>(\n preset: T,\n): T {\n return preset;\n}\n\nexport const DEFAULT_MOTIONWIND_CONFIG: Readonly<MotionwindConfig> =\n Object.freeze({\n strict: false,\n reducedMotion: \"user\",\n plugins: [],\n presets: {},\n tokens: {},\n });\n","import { definePreset } from \"./config.js\";\n\nexport interface MotionwindRecipe {\n id: string;\n name: string;\n description: string;\n category: \"interaction\" | \"entrance\" | \"layout\" | \"loading\" | \"scroll\";\n classes: string;\n accessibility: string;\n adapters: readonly (\"react\" | \"vue\" | \"vanilla\" | \"react-native\")[];\n maintainer: string;\n version: string;\n compatibleCore: string;\n bundleImpact: string;\n source: string;\n}\n\nconst COMMUNITY_METADATA = {\n maintainer: \"motionwind/core\",\n version: \"1.0.0\",\n compatibleCore: \">=2.0.0 <3\",\n bundleImpact: \"Preset only; no runtime code added.\",\n} as const;\n\nconst source = (id: string) =>\n `https://github.com/piyushzingade/motionwind/tree/main/registry/recipes/${id}.json`;\n\nexport const MOTIONWIND_RECIPES: readonly MotionwindRecipe[] = [\n {\n id: \"button-press\",\n name: \"Button press\",\n description: \"A compact spring response for primary actions.\",\n category: \"interaction\",\n classes:\n \"animate-hover:scale-105 animate-tap:scale-95 animate-spring animate-stiffness-420 animate-damping-24\",\n accessibility:\n \"Preserves keyboard focus and does not communicate state through motion alone.\",\n adapters: [\"react\", \"vue\", \"vanilla\", \"react-native\"],\n ...COMMUNITY_METADATA,\n source: source(\"button-press\"),\n },\n {\n id: \"dialog-enter\",\n name: \"Dialog entrance\",\n description: \"Fade and lift a dialog into place without excessive travel.\",\n category: \"entrance\",\n classes:\n \"animate-initial:opacity-0 animate-initial:y-12 animate-enter:opacity-100 animate-enter:y-0 animate-duration-240 animate-ease-out\",\n accessibility:\n \"Pair with a focus trap and disable transform movement for reduced-motion users.\",\n adapters: [\"react\", \"vue\", \"vanilla\", \"react-native\"],\n ...COMMUNITY_METADATA,\n source: source(\"dialog-enter\"),\n },\n {\n id: \"list-stagger\",\n name: \"List stagger\",\n description: \"A restrained stagger for newly revealed collections.\",\n category: \"entrance\",\n classes: \"animate-stagger-55 animate-delay-children-40 animate-when-before\",\n accessibility:\n \"Keep the list readable before and after animation; avoid repeated autoplay.\",\n adapters: [\"react\", \"vue\"],\n ...COMMUNITY_METADATA,\n source: source(\"list-stagger\"),\n },\n {\n id: \"page-reveal\",\n name: \"Page reveal\",\n description: \"A single-run opacity and vertical reveal for page sections.\",\n category: \"scroll\",\n classes:\n \"animate-initial:opacity-0 animate-initial:y-24 animate-inview:opacity-100 animate-inview:y-0 animate-once animate-duration-480 animate-ease-out\",\n accessibility:\n \"Content remains in document order and visible when reduced motion is requested.\",\n adapters: [\"react\", \"vue\", \"vanilla\"],\n ...COMMUNITY_METADATA,\n source: source(\"page-reveal\"),\n },\n {\n id: \"loading-orbit\",\n name: \"Loading orbit\",\n description:\n \"A continuous linear rotation for non-blocking progress indicators.\",\n category: \"loading\",\n classes:\n \"animate-enter:rotate-360 animate-repeat-infinite animate-duration-900 animate-ease-linear\",\n accessibility:\n \"Add an accessible status label and stop the loop when loading completes.\",\n adapters: [\"react\", \"vue\", \"vanilla\", \"react-native\"],\n ...COMMUNITY_METADATA,\n source: source(\"loading-orbit\"),\n },\n {\n id: \"menu-pop\",\n name: \"Menu pop\",\n description: \"A fast scale-and-fade entrance for contextual menus.\",\n category: \"entrance\",\n classes:\n \"animate-initial:opacity-0 animate-initial:scale-95 animate-enter:opacity-100 animate-enter:scale-100 animate-duration-160 animate-ease-out\",\n accessibility:\n \"Move focus into the menu, return it on close, and preserve arrow-key navigation.\",\n adapters: [\"react\", \"vue\", \"vanilla\", \"react-native\"],\n ...COMMUNITY_METADATA,\n source: source(\"menu-pop\"),\n },\n {\n id: \"accordion-reveal\",\n name: \"Accordion reveal\",\n description: \"A layout-aware reveal for expandable disclosure content.\",\n category: \"layout\",\n classes:\n \"animate-layout-size animate-initial:opacity-0 animate-enter:opacity-100 animate-duration-220 animate-ease-out\",\n accessibility:\n \"Use a native button with aria-expanded and keep content reachable without animation.\",\n adapters: [\"react\", \"vue\"],\n ...COMMUNITY_METADATA,\n source: source(\"accordion-reveal\"),\n },\n {\n id: \"tab-indicator\",\n name: \"Tab indicator\",\n description: \"A shared-layout spring for an active tab indicator.\",\n category: \"layout\",\n classes:\n \"animate-layout-id-active-tab animate-spring animate-stiffness-440 animate-damping-34\",\n accessibility:\n \"Pair with tablist semantics, roving focus, and an independent selected-state cue.\",\n adapters: [\"react\", \"vue\"],\n ...COMMUNITY_METADATA,\n source: source(\"tab-indicator\"),\n },\n {\n id: \"toast-enter\",\n name: \"Toast entrance\",\n description: \"A short horizontal slide for non-blocking notifications.\",\n category: \"entrance\",\n classes:\n \"animate-initial:opacity-0 animate-initial:x-24 animate-enter:opacity-100 animate-enter:x-0 animate-duration-240 animate-ease-out\",\n accessibility:\n \"Use an appropriate live region and provide enough time to read or dismiss the toast.\",\n adapters: [\"react\", \"vue\", \"vanilla\", \"react-native\"],\n ...COMMUNITY_METADATA,\n source: source(\"toast-enter\"),\n },\n {\n id: \"sortable-item\",\n name: \"Sortable item\",\n description:\n \"Layout animation and vertical drag feedback for reorderable lists.\",\n category: \"interaction\",\n classes:\n \"animate-layout-position animate-drag-y animate-drag-snap animate-drag:scale-103 animate-spring animate-stiffness-360 animate-damping-28\",\n accessibility:\n \"Provide keyboard reordering controls and announce the new item position.\",\n adapters: [\"react\", \"vue\"],\n ...COMMUNITY_METADATA,\n source: source(\"sortable-item\"),\n },\n {\n id: \"svg-line-loader\",\n name: \"SVG line loader\",\n description: \"Draw and repeat an SVG path for compact progress feedback.\",\n category: \"loading\",\n classes:\n \"animate-initial:path-length-0 animate-enter:path-length-1 animate-duration-900 animate-ease-in-out animate-repeat-infinite animate-repeat-reverse\",\n accessibility:\n \"Give the SVG a status label and stop repeating when the operation completes.\",\n adapters: [\"react\", \"vue\", \"vanilla\"],\n ...COMMUNITY_METADATA,\n source: source(\"svg-line-loader\"),\n },\n {\n id: \"scroll-progress\",\n name: \"Scroll progress\",\n description: \"Map page scroll progress to a horizontal scale indicator.\",\n category: \"scroll\",\n classes: \"animate-scroll:scaleX-[0,1] animate-scroll-container\",\n accessibility:\n \"Treat the indicator as supplemental; expose document progress in text when it matters.\",\n adapters: [\"react\", \"vanilla\"],\n ...COMMUNITY_METADATA,\n source: source(\"scroll-progress\"),\n },\n {\n id: \"flip-card\",\n name: \"Flip card\",\n description:\n \"A 3-D card that rotates 180 degrees around the Y axis on hover.\",\n category: \"interaction\",\n classes:\n \"animate-hover:rotate-y-180 animate-duration-480 animate-ease-in-out\",\n accessibility:\n \"Pair with a separate back face and keep both sides keyboard-accessible.\",\n adapters: [\"react\", \"vue\", \"vanilla\"],\n ...COMMUNITY_METADATA,\n source: source(\"flip-card\"),\n },\n {\n id: \"marquee\",\n name: \"Marquee\",\n description:\n \"A continuously looping horizontal scroll for text or image strips.\",\n category: \"entrance\",\n classes:\n \"animate-initial:x-100pct animate-enter:-x-100pct animate-repeat-infinite animate-ease-linear animate-duration-4000\",\n accessibility:\n \"Pause the marquee on focus or hover; do not convey critical information through motion alone.\",\n adapters: [\"react\", \"vue\", \"vanilla\"],\n ...COMMUNITY_METADATA,\n source: source(\"marquee\"),\n },\n {\n id: \"magnetic-button\",\n name: \"Magnetic button\",\n description:\n \"A subtle spring scale that draws attention on hover without moving the element.\",\n category: \"interaction\",\n classes:\n \"animate-hover:scale-103 animate-spring animate-stiffness-280 animate-damping-22\",\n accessibility:\n \"Do not use scale change as the only indicator of an interactive element.\",\n adapters: [\"react\", \"vue\", \"vanilla\"],\n ...COMMUNITY_METADATA,\n source: source(\"magnetic-button\"),\n },\n {\n id: \"drawer\",\n name: \"Drawer\",\n description:\n \"A side panel that slides in from the edge and returns on exit.\",\n category: \"entrance\",\n classes:\n \"animate-initial:x-100pct animate-enter:x-0 animate-exit:x-100pct animate-duration-320 animate-ease-out\",\n accessibility:\n \"Trap focus inside the drawer, return focus on close, and support Escape to dismiss.\",\n adapters: [\"react\", \"vue\", \"vanilla\", \"react-native\"],\n ...COMMUNITY_METADATA,\n source: source(\"drawer\"),\n },\n {\n id: \"tooltip-pop\",\n name: \"Tooltip pop\",\n description: \"A small scale-and-fade entrance for contextual tooltips.\",\n category: \"entrance\",\n classes:\n \"animate-initial:opacity-0 animate-initial:scale-75 animate-enter:opacity-100 animate-enter:scale-100 animate-duration-160 animate-ease-back-out\",\n accessibility:\n \"Use role='tooltip', aria-describedby, and ensure the tooltip is dismissible without a mouse.\",\n adapters: [\"react\", \"vue\", \"vanilla\", \"react-native\"],\n ...COMMUNITY_METADATA,\n source: source(\"tooltip-pop\"),\n },\n {\n id: \"skeleton-pulse\",\n name: \"Skeleton pulse\",\n description:\n \"A pulsing opacity loop for placeholder content while data loads.\",\n category: \"loading\",\n classes:\n \"animate-initial:opacity-100 animate-enter:opacity-40 animate-repeat-infinite animate-repeat-reverse animate-duration-800 animate-ease-in-out\",\n accessibility:\n \"Announce loading state with aria-busy; remove skeleton when content arrives.\",\n adapters: [\"react\", \"vue\", \"vanilla\", \"react-native\"],\n ...COMMUNITY_METADATA,\n source: source(\"skeleton-pulse\"),\n },\n {\n id: \"shimmer-load\",\n name: \"Shimmer load\",\n description:\n \"A left-to-right gradient shimmer applied to a loading overlay.\",\n category: \"loading\",\n classes:\n \"animate-initial:-x-100pct animate-enter:x-100pct animate-repeat-infinite animate-duration-1200 animate-ease-in-out\",\n accessibility:\n \"Place the shimmer on a decorative overlay; expose loading status through accessible text.\",\n adapters: [\"react\", \"vue\", \"vanilla\"],\n ...COMMUNITY_METADATA,\n source: source(\"shimmer-load\"),\n },\n {\n id: \"card-hover\",\n name: \"Card hover\",\n description:\n \"A spring lift and upward nudge for interactive cards on hover.\",\n category: \"interaction\",\n classes:\n \"animate-hover:scale-103 animate-hover:y--4 animate-spring animate-stiffness-380 animate-damping-26\",\n accessibility:\n \"Ensure focus styles are visible and the hover state is not the only interactive cue.\",\n adapters: [\"react\", \"vue\", \"vanilla\"],\n ...COMMUNITY_METADATA,\n source: source(\"card-hover\"),\n },\n {\n id: \"number-counter\",\n name: \"Number counter\",\n description:\n \"A fade and rise entrance for statistic values triggered when they scroll into view.\",\n category: \"scroll\",\n classes:\n \"animate-initial:opacity-0 animate-initial:y-12 animate-inview:opacity-100 animate-inview:y-0 animate-once animate-duration-400 animate-ease-out\",\n accessibility:\n \"Present the final value in document order and avoid conveying meaning through counting motion.\",\n adapters: [\"react\", \"vue\", \"vanilla\"],\n ...COMMUNITY_METADATA,\n source: source(\"number-counter\"),\n },\n {\n id: \"progress-bar\",\n name: \"Progress bar\",\n description:\n \"An animated width fill for a progress bar triggered on scroll into view.\",\n category: \"scroll\",\n classes:\n \"animate-initial:w-0 animate-inview:w-100pct animate-once animate-duration-800 animate-ease-out\",\n accessibility:\n \"Use a native progress element or role='progressbar' with aria-valuenow to expose state.\",\n adapters: [\"react\", \"vue\", \"vanilla\"],\n ...COMMUNITY_METADATA,\n source: source(\"progress-bar\"),\n },\n {\n id: \"ripple\",\n name: \"Ripple\",\n description:\n \"A radial scale-and-fade burst that emanates from a tap point.\",\n category: \"interaction\",\n classes:\n \"animate-initial:scale-0 animate-initial:opacity-100 animate-enter:scale-400 animate-enter:opacity-0 animate-duration-500 animate-ease-out\",\n accessibility:\n \"Use the ripple as a purely decorative effect and do not rely on it to communicate state.\",\n adapters: [\"react\", \"vue\", \"vanilla\"],\n ...COMMUNITY_METADATA,\n source: source(\"ripple\"),\n },\n {\n id: \"blob-morph\",\n name: \"Blob morph\",\n description:\n \"An organic border-radius keyframe loop for fluid decorative shapes.\",\n category: \"loading\",\n classes:\n \"animate-enter:rounded-[0,30,60,30,0] animate-repeat-infinite animate-duration-3000 animate-ease-in-out animate-repeat-reverse\",\n accessibility:\n \"Use only for decorative elements; apply aria-hidden to prevent interference with screen readers.\",\n adapters: [\"react\", \"vue\", \"vanilla\"],\n ...COMMUNITY_METADATA,\n source: source(\"blob-morph\"),\n },\n {\n id: \"ticker\",\n name: \"Ticker\",\n description:\n \"A stock- or news-style ticker where items enter from the right and exit to the left.\",\n category: \"entrance\",\n classes:\n \"animate-initial:x-100pct animate-enter:x-0 animate-exit:-x-100pct animate-duration-500 animate-ease-out animate-stagger-150\",\n accessibility:\n \"Provide a way to pause the ticker and make all content available in a static list.\",\n adapters: [\"react\", \"vue\", \"vanilla\"],\n ...COMMUNITY_METADATA,\n source: source(\"ticker\"),\n },\n {\n id: \"popover-reveal\",\n name: \"Popover reveal\",\n description:\n \"A short downward fade-in for anchored popovers and dropdowns.\",\n category: \"entrance\",\n classes:\n \"animate-initial:opacity-0 animate-initial:y--8 animate-enter:opacity-100 animate-enter:y-0 animate-duration-180 animate-ease-out\",\n accessibility:\n \"Move focus into the popover on open and return it to the trigger on close.\",\n adapters: [\"react\", \"vue\", \"vanilla\", \"react-native\"],\n ...COMMUNITY_METADATA,\n source: source(\"popover-reveal\"),\n },\n {\n id: \"stepper\",\n name: \"Stepper\",\n description: \"Sequential staggered entrances for step-indicator items.\",\n category: \"entrance\",\n classes:\n \"animate-initial:opacity-0 animate-initial:scale-80 animate-enter:opacity-100 animate-enter:scale-100 animate-stagger-80 animate-delay-children-100 animate-duration-200 animate-ease-back-out\",\n accessibility:\n \"Announce the current step and total steps; keep step content readable without animation.\",\n adapters: [\"react\", \"vue\", \"vanilla\", \"react-native\"],\n ...COMMUNITY_METADATA,\n source: source(\"stepper\"),\n },\n {\n id: \"notification-stack\",\n name: \"Notification stack\",\n description: \"Staggered upward entrances for stacked notification cards.\",\n category: \"entrance\",\n classes:\n \"animate-initial:opacity-0 animate-initial:y--20 animate-enter:opacity-100 animate-enter:y-0 animate-stagger-80 animate-duration-260 animate-ease-back-out\",\n accessibility:\n \"Use a live region with aria-live='polite' and provide enough time to read each notification.\",\n adapters: [\"react\", \"vue\", \"vanilla\", \"react-native\"],\n ...COMMUNITY_METADATA,\n source: source(\"notification-stack\"),\n },\n {\n id: \"drag-reorder\",\n name: \"Drag reorder\",\n description:\n \"Vertical drag with layout animation for reorderable list items.\",\n category: \"interaction\",\n classes:\n \"animate-drag-y animate-layout-position animate-drag:scale-102 animate-spring animate-stiffness-320 animate-damping-30\",\n accessibility:\n \"Provide keyboard controls for reordering and announce the new position after a drop.\",\n adapters: [\"react\", \"vue\"],\n ...COMMUNITY_METADATA,\n source: source(\"drag-reorder\"),\n },\n {\n id: \"parallax-scroll\",\n name: \"Parallax scroll\",\n description:\n \"Map scroll progress to a Y translation so a layer moves at a different speed.\",\n category: \"scroll\",\n classes: \"animate-scroll:y-[-50,50] animate-scroll-container\",\n accessibility:\n \"Respect prefers-reduced-motion; parallax depth cues must not convey meaning exclusively.\",\n adapters: [\"react\", \"vanilla\"],\n ...COMMUNITY_METADATA,\n source: source(\"parallax-scroll\"),\n },\n];\n\nexport const BUILT_IN_PRESETS = Object.fromEntries(\n MOTIONWIND_RECIPES.map((recipe) => [recipe.id, definePreset(recipe.classes)]),\n) as Record<string, string>;\n\nexport function getRecipe(id: string): MotionwindRecipe | undefined {\n return MOTIONWIND_RECIPES.find((recipe) => recipe.id === id);\n}\n","import type {\n AnimatableValues,\n GestureKey,\n ParsedResult,\n TransitionConfig,\n ViewportConfig,\n DragConfig,\n LayoutConfig,\n ScrollConfig,\n VariantMap,\n VariantState,\n} from \"./types.js\";\nimport { GESTURE_MAP, GESTURE_KEYS, EASING_MAP } from \"./constants.js\";\nimport type {\n MotionwindConfig,\n MotionwindDiagnostic,\n MotionwindResultPatch,\n} from \"./config.js\";\nimport { BUILT_IN_PRESETS } from \"./recipes.js\";\n\nconst CACHE_MAX = 1000;\nconst cache = new Map<string, ParsedResult>();\n\nfunction presetClasses(value: string | readonly string[]): string[] {\n return (typeof value === \"string\" ? value.split(/\\s+/) : [...value]).filter(\n Boolean,\n );\n}\n\nfunction availablePresets(\n config?: MotionwindConfig,\n): Record<string, string | readonly string[]> {\n const pluginPresets = Object.assign(\n {},\n ...(config?.plugins ?? []).map((plugin) => plugin.presets ?? {}),\n );\n return { ...BUILT_IN_PRESETS, ...pluginPresets, ...(config?.presets ?? {}) };\n}\n\nfunction expandConfiguredTokens(\n className: string,\n config: MotionwindConfig | undefined,\n diagnostics: MotionwindDiagnostic[],\n): string[] {\n const presets = availablePresets(config);\n const output: string[] = [];\n\n const expand = (token: string, stack: string[]) => {\n if (!token.startsWith(\"animate-preset-\")) {\n const durationName = token.startsWith(\"animate-duration-\")\n ? token.slice(\"animate-duration-\".length)\n : \"\";\n const duration = durationName\n ? config?.tokens?.durations?.[durationName]\n : undefined;\n if (duration !== undefined) {\n output.push(`animate-duration-${duration}`);\n return;\n }\n\n const easingName = token.startsWith(\"animate-ease-\")\n ? token.slice(\"animate-ease-\".length)\n : \"\";\n const easing = easingName\n ? config?.tokens?.easings?.[easingName]\n : undefined;\n if (Array.isArray(easing)) {\n output.push(`animate-ease-[${easing.join(\",\")}]`);\n return;\n }\n\n const springName = token.startsWith(\"animate-spring-\")\n ? token.slice(\"animate-spring-\".length)\n : \"\";\n const spring = springName\n ? config?.tokens?.springs?.[springName]\n : undefined;\n if (spring) {\n output.push(\"animate-spring\");\n if (spring.stiffness !== undefined)\n output.push(`animate-stiffness-${spring.stiffness}`);\n if (spring.damping !== undefined)\n output.push(`animate-damping-${spring.damping}`);\n if (spring.bounce !== undefined)\n output.push(`animate-bounce-${spring.bounce}`);\n if (spring.mass !== undefined)\n output.push(`animate-mass-${spring.mass}`);\n return;\n }\n\n output.push(token);\n return;\n }\n\n const name = token.slice(\"animate-preset-\".length);\n const preset = presets[name];\n if (!preset) {\n diagnostics.push({\n code: \"unknown-preset\",\n message: `Unknown motionwind preset \"${name}\".`,\n severity: config?.strict ? \"error\" : \"warning\",\n token,\n });\n output.push(token);\n return;\n }\n if (stack.includes(name) || stack.length >= 8) {\n diagnostics.push({\n code: \"circular-preset\",\n message: `Circular motionwind preset expansion: ${[...stack, name].join(\" → \")}.`,\n severity: \"error\",\n token,\n });\n return;\n }\n for (const expanded of presetClasses(preset))\n expand(expanded, [...stack, name]);\n };\n\n for (const token of className.split(/\\s+/).filter(Boolean)) expand(token, []);\n return output;\n}\n\nfunction mergePatch(\n patch: MotionwindResultPatch,\n gestures: Partial<Record<GestureKey, AnimatableValues>>,\n transition: TransitionConfig,\n viewport: ViewportConfig,\n dragConfig: DragConfig,\n layoutConfig: LayoutConfig,\n scroll: ScrollConfig,\n variants: VariantMap,\n variantState: VariantState,\n): void {\n for (const [key, values] of Object.entries(patch.gestures ?? {})) {\n gestures[key as GestureKey] = {\n ...(gestures[key as GestureKey] ?? {}),\n ...(values ?? {}),\n };\n }\n Object.assign(transition, patch.transition);\n Object.assign(viewport, patch.viewport);\n Object.assign(dragConfig, patch.dragConfig);\n Object.assign(layoutConfig, patch.layoutConfig);\n if (patch.scroll) {\n Object.assign(scroll, patch.scroll);\n if (patch.scroll.values)\n scroll.values = { ...scroll.values, ...patch.scroll.values };\n }\n for (const [name, values] of Object.entries(patch.variants ?? {})) {\n variants[name] = { ...(variants[name] ?? {}), ...values };\n }\n Object.assign(variantState, patch.variantState);\n}\n\n/** Tailwind CSS built-in animate-* classes to exclude from warnings */\nconst TAILWIND_ANIMATE_CLASSES = new Set([\n \"animate-spin\",\n \"animate-ping\",\n \"animate-pulse\",\n \"animate-bounce\",\n \"animate-none\",\n]);\n\n/** Evict oldest entries when cache exceeds max size */\nfunction cacheSet(key: string, value: ParsedResult): void {\n if (cache.size >= CACHE_MAX) {\n // Map iterates in insertion order — delete the first (oldest) key\n const firstKey = cache.keys().next().value;\n if (firstKey !== undefined) cache.delete(firstKey);\n }\n cache.set(key, value);\n}\n\n/** Unit suffix map for string-unit values: x-100pct → \"100%\" */\nconst UNIT_MAP: Record<string, string> = {\n pct: \"%\",\n px: \"px\",\n vh: \"vh\",\n vw: \"vw\",\n rem: \"rem\",\n em: \"em\",\n dvh: \"dvh\",\n svh: \"svh\",\n lvh: \"lvh\",\n};\n\n/**\n * Try to parse a numeric value with an optional unit suffix.\n * Returns the number if no unit, or a string like \"100%\" / \"50vh\" if unit present.\n * Returns null if not a valid number.\n */\nfunction parseNumericWithUnit(\n str: string,\n sign: number,\n): string | number | null {\n // Check for \"auto\" keyword\n if (str === \"auto\") return \"auto\";\n\n // Check for unit suffix: e.g. \"100pct\", \"50vh\", \"2rem\"\n for (const [suffix, unit] of Object.entries(UNIT_MAP)) {\n if (str.endsWith(suffix)) {\n const numPart = str.slice(0, -suffix.length);\n const n = Number(numPart);\n if (isNaN(n)) return null;\n return `${n * sign}${unit}`;\n }\n }\n\n // Plain number\n const n = Number(str);\n if (isNaN(n)) return null;\n return n * sign;\n}\n\n/** Allowed properties for arbitrary value syntax [key=value] */\nconst ARBITRARY_VALUE_ALLOWLIST = new Set([\n \"x\",\n \"y\",\n \"z\",\n \"scale\",\n \"scaleX\",\n \"scaleY\",\n \"scaleZ\",\n \"rotate\",\n \"rotateX\",\n \"rotateY\",\n \"rotateZ\",\n \"skew\",\n \"skewX\",\n \"skewY\",\n \"originX\",\n \"originY\",\n \"originZ\",\n \"perspective\",\n \"opacity\",\n \"filter\",\n \"backdropFilter\",\n \"clipPath\",\n \"width\",\n \"height\",\n \"top\",\n \"left\",\n \"right\",\n \"bottom\",\n \"padding\",\n \"margin\",\n \"gap\",\n \"borderRadius\",\n \"borderTopLeftRadius\",\n \"borderTopRightRadius\",\n \"borderBottomLeftRadius\",\n \"borderBottomRightRadius\",\n \"borderWidth\",\n \"fontSize\",\n \"letterSpacing\",\n \"lineHeight\",\n \"backgroundColor\",\n \"color\",\n \"borderColor\",\n \"boxShadow\",\n \"textShadow\",\n \"zIndex\",\n \"pathLength\",\n \"pathOffset\",\n \"pathSpacing\",\n]);\n\n/**\n * Parse a property-value string (e.g. \"scale-110\", \"x-20\", \"opacity-0\")\n * into a Motion-compatible key-value pair.\n */\nfunction parsePropertyValue(\n raw: string,\n): { key: string; value: string | number | (string | number)[] } | null {\n // Arbitrary value: [key=value]\n if (raw.startsWith(\"[\") && raw.endsWith(\"]\")) {\n const inner = raw.slice(1, -1);\n const eqIdx = inner.indexOf(\"=\");\n if (eqIdx === -1) return null;\n const key = inner.slice(0, eqIdx);\n if (!ARBITRARY_VALUE_ALLOWLIST.has(key)) return null;\n const val = inner.slice(eqIdx + 1);\n const num = Number(val);\n return { key, value: isNaN(num) ? val : num };\n }\n\n // Negative prefix\n let negative = false;\n let str = raw;\n if (str.startsWith(\"-\")) {\n negative = true;\n str = str.slice(1);\n }\n\n const sign = negative ? -1 : 1;\n\n // Keyframe array syntax: property-[v1,v2,v3] — supports numbers and unit values\n const keyframeMatch = str.match(/^(\\w+(?:-\\w+)?)-\\[([^\\]]+)\\]$/);\n if (keyframeMatch) {\n const propName = keyframeMatch[1]!;\n const valuesStr = keyframeMatch[2]!;\n const propKey = normalizePropertyName(propName);\n if (propKey) {\n const rawValues = valuesStr.split(\",\").reduce<string[]>((acc, v) => {\n const t = v.trim();\n if (t) acc.push(t);\n return acc;\n }, []);\n if (rawValues.length > 0) {\n const scaleProps = new Set([\n \"scale\",\n \"scaleX\",\n \"scaleY\",\n \"scaleZ\",\n \"opacity\",\n \"brightness\",\n \"contrast\",\n \"saturate\",\n ]);\n const parsed: (string | number)[] = [];\n let valid = true;\n for (const rv of rawValues) {\n const unitVal = parseNumericWithUnit(rv, 1);\n if (unitVal === null) {\n valid = false;\n break;\n }\n if (typeof unitVal === \"number\" && scaleProps.has(propKey)) {\n parsed.push(unitVal / 100);\n } else {\n parsed.push(unitVal);\n }\n }\n if (valid) {\n return { key: propKey, value: parsed };\n }\n }\n }\n // Fall through — may be shadow-[...] etc.\n }\n\n // --- Transform properties ---\n\n // scale-z-{n}\n if (str.startsWith(\"scale-z-\")) {\n const n = Number(str.slice(8));\n if (!isNaN(n)) return { key: \"scaleZ\", value: (n / 100) * sign };\n }\n\n // scale-x-{n}\n if (str.startsWith(\"scale-x-\")) {\n const n = Number(str.slice(8));\n if (!isNaN(n)) return { key: \"scaleX\", value: (n / 100) * sign };\n }\n if (str.startsWith(\"scale-y-\")) {\n const n = Number(str.slice(8));\n if (!isNaN(n)) return { key: \"scaleY\", value: (n / 100) * sign };\n }\n\n // scale-{n}\n if (str.startsWith(\"scale-\")) {\n const n = Number(str.slice(6));\n if (!isNaN(n)) return { key: \"scale\", value: (n / 100) * sign };\n }\n\n // rotate-x-{n} / rotate-y-{n}\n if (str.startsWith(\"rotate-x-\")) {\n const n = Number(str.slice(9));\n if (!isNaN(n)) return { key: \"rotateX\", value: n * sign };\n }\n if (str.startsWith(\"rotate-y-\")) {\n const n = Number(str.slice(9));\n if (!isNaN(n)) return { key: \"rotateY\", value: n * sign };\n }\n\n // rotate-{n}\n if (str.startsWith(\"rotate-\")) {\n const n = Number(str.slice(7));\n if (!isNaN(n)) return { key: \"rotate\", value: n * sign };\n }\n\n // skew-x-{n}\n if (str.startsWith(\"skew-x-\")) {\n const n = Number(str.slice(7));\n if (!isNaN(n)) return { key: \"skewX\", value: n * sign };\n }\n\n // skew-y-{n}\n if (str.startsWith(\"skew-y-\")) {\n const n = Number(str.slice(7));\n if (!isNaN(n)) return { key: \"skewY\", value: n * sign };\n }\n\n // skew-{n} (uniform)\n if (str.startsWith(\"skew-\")) {\n const n = Number(str.slice(5));\n if (!isNaN(n)) return { key: \"skew\", value: n * sign };\n }\n\n // origin-x-{n} (0-100 → 0-1)\n if (str.startsWith(\"origin-x-\")) {\n const n = Number(str.slice(9));\n if (!isNaN(n)) return { key: \"originX\", value: (n / 100) * sign };\n }\n\n // origin-y-{n}\n if (str.startsWith(\"origin-y-\")) {\n const n = Number(str.slice(9));\n if (!isNaN(n)) return { key: \"originY\", value: (n / 100) * sign };\n }\n\n // origin-z-{n}\n if (str.startsWith(\"origin-z-\")) {\n const n = Number(str.slice(9));\n if (!isNaN(n)) return { key: \"originZ\", value: n * sign };\n }\n\n // perspective-{n}\n if (str.startsWith(\"perspective-\")) {\n const n = Number(str.slice(12));\n if (!isNaN(n)) return { key: \"perspective\", value: n * sign };\n }\n\n // --- Translate with unit support: x-{n}, x-{n}pct, x-{n}vh, x-auto ---\n\n if (str.startsWith(\"x-\")) {\n const val = parseNumericWithUnit(str.slice(2), sign);\n if (val !== null) return { key: \"x\", value: val };\n }\n\n if (str.startsWith(\"y-\")) {\n const val = parseNumericWithUnit(str.slice(2), sign);\n if (val !== null) return { key: \"y\", value: val };\n }\n\n // z-{n} → zIndex for Tailwind-standard values (0, 10, 20, 30, 40, 50, auto).\n // Any other numeric value falls through to the z-translate handler below.\n if (str.startsWith(\"z-\")) {\n const suffix = str.slice(2);\n if (suffix === \"auto\") return { key: \"zIndex\", value: \"auto\" };\n const zn = Number(suffix);\n if (!isNaN(zn) && [0, 10, 20, 30, 40, 50].includes(zn))\n return { key: \"zIndex\", value: zn };\n }\n\n // z-{n} → z-translate (arbitrary values with optional unit)\n if (str.startsWith(\"z-\")) {\n const val = parseNumericWithUnit(str.slice(2), sign);\n if (val !== null) return { key: \"z\", value: val };\n }\n\n // --- Visual properties ---\n\n // opacity-{n}\n if (str.startsWith(\"opacity-\")) {\n const n = Number(str.slice(8));\n if (!isNaN(n)) return { key: \"opacity\", value: (n / 100) * sign };\n }\n\n // blur-{n} — clamped to 0 minimum (negative blur is invalid CSS)\n if (str.startsWith(\"blur-\")) {\n const n = Number(str.slice(5));\n if (!isNaN(n))\n return { key: \"filter\", value: `blur(${Math.max(0, n * sign)}px)` };\n }\n\n // brightness-{n} — clamped to 0 minimum\n if (str.startsWith(\"brightness-\")) {\n const n = Number(str.slice(11));\n if (!isNaN(n))\n return {\n key: \"filter\",\n value: `brightness(${Math.max(0, (n / 100) * sign)})`,\n };\n }\n\n // contrast-{n} — clamped to 0 minimum\n if (str.startsWith(\"contrast-\")) {\n const n = Number(str.slice(9));\n if (!isNaN(n))\n return {\n key: \"filter\",\n value: `contrast(${Math.max(0, (n / 100) * sign)})`,\n };\n }\n\n // saturate-{n} — clamped to 0 minimum\n if (str.startsWith(\"saturate-\")) {\n const n = Number(str.slice(9));\n if (!isNaN(n))\n return {\n key: \"filter\",\n value: `saturate(${Math.max(0, (n / 100) * sign)})`,\n };\n }\n\n // grayscale-{n} — 0-100 → 0-1, clamped to 0 minimum\n if (str.startsWith(\"grayscale-\")) {\n const n = Number(str.slice(10));\n if (!isNaN(n))\n return {\n key: \"filter\",\n value: `grayscale(${Math.max(0, (n / 100) * sign)})`,\n };\n }\n\n // sepia-{n} — 0-100 → 0-1, clamped to 0 minimum\n if (str.startsWith(\"sepia-\")) {\n const n = Number(str.slice(6));\n if (!isNaN(n))\n return {\n key: \"filter\",\n value: `sepia(${Math.max(0, (n / 100) * sign)})`,\n };\n }\n\n // invert-{n} — 0-100 → 0-1, clamped to 0 minimum\n if (str.startsWith(\"invert-\")) {\n const n = Number(str.slice(7));\n if (!isNaN(n))\n return {\n key: \"filter\",\n value: `invert(${Math.max(0, (n / 100) * sign)})`,\n };\n }\n\n // hue-rotate-{n} — degrees, supports negative values\n if (str.startsWith(\"hue-rotate-\")) {\n const n = Number(str.slice(11));\n if (!isNaN(n))\n return { key: \"filter\", value: `hue-rotate(${n * sign}deg)` };\n }\n\n // drop-shadow: drop-shadow-[value] — underscores become spaces (Tailwind convention)\n if (str.startsWith(\"drop-shadow-\")) {\n const val = str.slice(12);\n if (val.startsWith(\"[\") && val.endsWith(\"]\")) {\n return {\n key: \"filter\",\n value: `drop-shadow(${val.slice(1, -1).replace(/_/g, \" \")})`,\n };\n }\n }\n\n // backdrop-blur-{n} — clamped to 0 minimum\n if (str.startsWith(\"backdrop-blur-\")) {\n const n = Number(str.slice(14));\n if (!isNaN(n))\n return {\n key: \"backdropFilter\",\n value: `blur(${Math.max(0, n * sign)}px)`,\n };\n }\n\n // clip-path: clip-[value]\n if (str.startsWith(\"clip-\")) {\n const val = str.slice(5);\n if (val.startsWith(\"[\") && val.endsWith(\"]\")) {\n return { key: \"clipPath\", value: val.slice(1, -1) };\n }\n }\n\n // --- Dimensions with unit support ---\n\n // Per-corner border radius (must come before generic rounded- check)\n if (str.startsWith(\"rounded-tl-\")) {\n const n = Number(str.slice(11));\n if (!isNaN(n)) return { key: \"borderTopLeftRadius\", value: n * sign };\n }\n if (str.startsWith(\"rounded-tr-\")) {\n const n = Number(str.slice(11));\n if (!isNaN(n)) return { key: \"borderTopRightRadius\", value: n * sign };\n }\n if (str.startsWith(\"rounded-bl-\")) {\n const n = Number(str.slice(11));\n if (!isNaN(n)) return { key: \"borderBottomLeftRadius\", value: n * sign };\n }\n if (str.startsWith(\"rounded-br-\")) {\n const n = Number(str.slice(11));\n if (!isNaN(n)) return { key: \"borderBottomRightRadius\", value: n * sign };\n }\n\n // rounded-{n}\n if (str.startsWith(\"rounded-\")) {\n const n = Number(str.slice(8));\n if (!isNaN(n)) return { key: \"borderRadius\", value: n * sign };\n }\n\n // w-{n} / w-auto / w-{n}pct\n if (str.startsWith(\"w-\")) {\n const val = parseNumericWithUnit(str.slice(2), sign);\n if (val !== null) return { key: \"width\", value: val };\n }\n\n // h-{n} / h-auto / h-{n}pct\n if (str.startsWith(\"h-\")) {\n const val = parseNumericWithUnit(str.slice(2), sign);\n if (val !== null) return { key: \"height\", value: val };\n }\n\n // --- Position properties ---\n\n // top-{n} / top-{n}pct / top-auto\n if (str.startsWith(\"top-\")) {\n const val = parseNumericWithUnit(str.slice(4), sign);\n if (val !== null) return { key: \"top\", value: val };\n }\n\n // left-{n}\n if (str.startsWith(\"left-\")) {\n const val = parseNumericWithUnit(str.slice(5), sign);\n if (val !== null) return { key: \"left\", value: val };\n }\n\n // right-{n}\n if (str.startsWith(\"right-\")) {\n const val = parseNumericWithUnit(str.slice(6), sign);\n if (val !== null) return { key: \"right\", value: val };\n }\n\n // bottom-{n}\n if (str.startsWith(\"bottom-\")) {\n const val = parseNumericWithUnit(str.slice(7), sign);\n if (val !== null) return { key: \"bottom\", value: val };\n }\n\n // --- Spacing ---\n\n // p-{n} → padding\n if (str.startsWith(\"p-\")) {\n const val = parseNumericWithUnit(str.slice(2), sign);\n if (val !== null) return { key: \"padding\", value: val };\n }\n\n // m-{n} → margin\n if (str.startsWith(\"m-\")) {\n const val = parseNumericWithUnit(str.slice(2), sign);\n if (val !== null) return { key: \"margin\", value: val };\n }\n\n // gap-{n}\n if (str.startsWith(\"gap-\")) {\n const val = parseNumericWithUnit(str.slice(4), sign);\n if (val !== null) return { key: \"gap\", value: val };\n }\n\n // --- Typography ---\n\n // text-size-{n} → fontSize\n if (str.startsWith(\"text-size-\")) {\n const val = parseNumericWithUnit(str.slice(10), sign);\n if (val !== null) return { key: \"fontSize\", value: val };\n }\n\n // tracking-{n} → letterSpacing\n if (str.startsWith(\"tracking-\")) {\n const val = parseNumericWithUnit(str.slice(9), sign);\n if (val !== null) return { key: \"letterSpacing\", value: val };\n }\n\n // leading-{n} → lineHeight\n if (str.startsWith(\"leading-\")) {\n const val = parseNumericWithUnit(str.slice(8), sign);\n if (val !== null) return { key: \"lineHeight\", value: val };\n }\n\n // --- Border ---\n\n // border-w-{n} → borderWidth\n if (str.startsWith(\"border-w-\")) {\n const n = Number(str.slice(9));\n if (!isNaN(n)) return { key: \"borderWidth\", value: n * sign };\n }\n\n // --- SVG path properties ---\n\n if (str.startsWith(\"path-length-\")) {\n const n = Number(str.slice(12));\n if (!isNaN(n)) return { key: \"pathLength\", value: n * sign };\n }\n\n if (str.startsWith(\"path-offset-\")) {\n const n = Number(str.slice(12));\n if (!isNaN(n)) return { key: \"pathOffset\", value: n * sign };\n }\n\n if (str.startsWith(\"path-spacing-\")) {\n const n = Number(str.slice(13));\n if (!isNaN(n)) return { key: \"pathSpacing\", value: n * sign };\n }\n\n // --- Color properties ---\n\n if (str.startsWith(\"bg-\")) {\n const color = str.slice(3);\n if (isValidColor(color)) {\n return { key: \"backgroundColor\", value: color };\n }\n return null;\n }\n\n // text-shadow: text-shadow-[value] — underscores become spaces\n if (str.startsWith(\"text-shadow-\")) {\n const val = str.slice(12);\n if (val.startsWith(\"[\") && val.endsWith(\"]\")) {\n return {\n key: \"textShadow\",\n value: val.slice(1, -1).replace(/_/g, \" \"),\n };\n }\n }\n\n if (str.startsWith(\"text-\")) {\n const color = str.slice(5);\n if (isValidColor(color)) {\n return { key: \"color\", value: color };\n }\n // fall through — could be text-size which is handled above\n return null;\n }\n\n if (str.startsWith(\"border-\")) {\n const color = str.slice(7);\n if (isValidColor(color)) {\n return { key: \"borderColor\", value: color };\n }\n // fall through — could be border-w which is handled above\n return null;\n }\n\n // box-shadow: shadow-[value]\n if (str.startsWith(\"shadow-\")) {\n const val = str.slice(7);\n if (val.startsWith(\"[\") && val.endsWith(\"]\")) {\n return { key: \"boxShadow\", value: val.slice(1, -1) };\n }\n return null;\n }\n\n return null;\n}\n\n/** Validate that a color string is a plausible CSS color */\nconst HEX_COLOR_RE = /^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/;\nconst FUNC_COLOR_RE = /^(?:rgb|rgba|hsl|hsla)\\(.+\\)$/;\n\nfunction isValidColor(color: string): boolean {\n return HEX_COLOR_RE.test(color) || FUNC_COLOR_RE.test(color);\n}\n\n/** Map shorthand property names to Motion property keys */\nfunction normalizePropertyName(name: string): string | null {\n const map: Record<string, string> = {\n scale: \"scale\",\n \"scale-x\": \"scaleX\",\n \"scale-y\": \"scaleY\",\n \"scale-z\": \"scaleZ\",\n rotate: \"rotate\",\n \"rotate-x\": \"rotateX\",\n \"rotate-y\": \"rotateY\",\n x: \"x\",\n y: \"y\",\n z: \"z\",\n opacity: \"opacity\",\n \"skew-x\": \"skewX\",\n \"skew-y\": \"skewY\",\n skew: \"skew\",\n w: \"width\",\n h: \"height\",\n rounded: \"borderRadius\",\n \"rounded-tl\": \"borderTopLeftRadius\",\n \"rounded-tr\": \"borderTopRightRadius\",\n \"rounded-bl\": \"borderBottomLeftRadius\",\n \"rounded-br\": \"borderBottomRightRadius\",\n \"origin-x\": \"originX\",\n \"origin-y\": \"originY\",\n \"origin-z\": \"originZ\",\n perspective: \"perspective\",\n };\n return map[name] ?? null;\n}\n\n/** Normalize a scroll property name to a Motion style key. */\nfunction normalizeScrollProp(name: string): string | null {\n const n = name.toLowerCase().replace(/-/g, \"\");\n const map: Record<string, string> = {\n x: \"x\",\n y: \"y\",\n z: \"z\",\n opacity: \"opacity\",\n rotate: \"rotate\",\n rotatex: \"rotateX\",\n rotatey: \"rotateY\",\n scale: \"scale\",\n scalex: \"scaleX\",\n scaley: \"scaleY\",\n };\n return map[n] ?? null;\n}\n\n/**\n * Parse a scroll value token like \"y-[0,-200]\" or \"scaleX-[0,1]\" into a\n * Motion style key and a literal output range. Unlike gesture values, scroll\n * ranges are NOT rescaled (0.5 means 0.5, 200 means 200px).\n */\nfunction parseScrollValue(\n raw: string,\n): { key: string; value: number[] } | null {\n const m = raw.match(/^([\\w-]+?)-\\[([^\\]]+)\\]$/);\n if (!m) return null;\n const key = normalizeScrollProp(m[1]!);\n if (!key) return null;\n const parts = m[2]!.split(\",\").map((v) => Number(v.trim()));\n if (parts.length < 2 || parts.some((n) => isNaN(n))) return null;\n return { key, value: parts };\n}\n\n/**\n * Classify a single class token and update the result accordingly.\n * Returns true if the token was consumed (is a motionwind class).\n */\nfunction classifyToken(\n token: string,\n gestures: Partial<Record<GestureKey, AnimatableValues>>,\n transition: TransitionConfig,\n viewport: ViewportConfig,\n dragConfig: DragConfig,\n layoutConfig: LayoutConfig,\n scroll: ScrollConfig,\n variants: VariantMap,\n variantState: VariantState,\n): boolean {\n if (!token.startsWith(\"animate-\")) return false;\n\n const rest = token.slice(8);\n\n // --- Gesture prefix: animate-{gesture}:{property-value} ---\n const colonIdx = rest.indexOf(\":\");\n if (colonIdx !== -1) {\n const gesturePrefix = rest.slice(0, colonIdx);\n const propValueStr = rest.slice(colonIdx + 1);\n\n // Scroll-linked value: animate-scroll:{prop}-[from,to]\n if (gesturePrefix === \"scroll\") {\n const parsed = parseScrollValue(propValueStr);\n if (parsed) {\n scroll.values[parsed.key] = parsed.value;\n return true;\n }\n return false;\n }\n\n // Variant definition: animate-variant-{name}:{prop-value}\n if (gesturePrefix.startsWith(\"variant-\")) {\n const variantName = gesturePrefix.slice(8);\n const parsed = parsePropertyValue(propValueStr);\n if (variantName && parsed) {\n if (!variants[variantName]) variants[variantName] = {};\n const bucket = variants[variantName]!;\n if (\n (parsed.key === \"filter\" || parsed.key === \"backdropFilter\") &&\n typeof parsed.value === \"string\" &&\n typeof bucket[parsed.key] === \"string\"\n ) {\n bucket[parsed.key] += ` ${parsed.value}`;\n } else {\n bucket[parsed.key] = parsed.value;\n }\n return true;\n }\n return false;\n }\n\n if (GESTURE_KEYS.has(gesturePrefix)) {\n const gestureKey = GESTURE_MAP[gesturePrefix]!;\n const parsed = parsePropertyValue(propValueStr);\n if (parsed) {\n if (!gestures[gestureKey]) gestures[gestureKey] = {};\n // Combine multiple filter/backdropFilter functions\n if (\n (parsed.key === \"filter\" || parsed.key === \"backdropFilter\") &&\n typeof parsed.value === \"string\" &&\n typeof gestures[gestureKey]![parsed.key] === \"string\"\n ) {\n gestures[gestureKey]![parsed.key] += ` ${parsed.value}`;\n } else {\n if (\n process.env.NODE_ENV !== \"production\" &&\n gestures[gestureKey]![parsed.key] !== undefined\n ) {\n console.warn(\n `[motionwind] Duplicate property \"${parsed.key}\" in \"${gestureKey}\" ` +\n `(class \"${token}\"). The last value will be used.`,\n );\n }\n gestures[gestureKey]![parsed.key] = parsed.value;\n }\n return true;\n }\n }\n return false;\n }\n\n // --- Transition config tokens ---\n\n // duration\n if (rest.startsWith(\"duration-\")) {\n const ms = Number(rest.slice(9));\n if (!isNaN(ms)) {\n transition.duration = ms / 1000;\n return true;\n }\n }\n\n // delay-children (must come before delay)\n if (rest.startsWith(\"delay-children-\")) {\n const ms = Number(rest.slice(15));\n if (!isNaN(ms)) {\n transition.delayChildren = ms / 1000;\n return true;\n }\n }\n\n // delay\n if (rest.startsWith(\"delay-\")) {\n const ms = Number(rest.slice(6));\n if (!isNaN(ms)) {\n transition.delay = ms / 1000;\n return true;\n }\n }\n\n // ease-[n,n,n,n] — custom cubic-bezier\n if (rest.startsWith(\"ease-[\") && rest.endsWith(\"]\")) {\n const inner = rest.slice(6, -1);\n const values = inner.split(\",\").map((v) => Number(v.trim()));\n if (values.length === 4 && values.every((v) => !isNaN(v))) {\n transition.ease = values;\n return true;\n }\n }\n\n // ease-steps-{n}\n if (rest.startsWith(\"ease-steps-\")) {\n const n = Number(rest.slice(11));\n if (!isNaN(n) && n > 0) {\n transition.ease = `steps(${n})`;\n return true;\n }\n }\n\n // Named easing from EASING_MAP\n for (const [suffix, easeValue] of Object.entries(EASING_MAP)) {\n if (rest === suffix) {\n transition.ease = easeValue;\n return true;\n }\n }\n\n // spring\n if (rest === \"spring\") {\n transition.type = \"spring\";\n return true;\n }\n\n // stiffness\n if (rest.startsWith(\"stiffness-\")) {\n const n = Number(rest.slice(10));\n if (!isNaN(n)) {\n transition.stiffness = n;\n return true;\n }\n }\n\n // damping\n if (rest.startsWith(\"damping-\")) {\n const n = Number(rest.slice(8));\n if (!isNaN(n)) {\n transition.damping = n;\n return true;\n }\n }\n\n // bounce\n if (rest.startsWith(\"bounce-\")) {\n const n = Number(rest.slice(7));\n if (!isNaN(n)) {\n transition.bounce = n / 100;\n return true;\n }\n }\n\n // mass\n if (rest.startsWith(\"mass-\")) {\n const n = Number(rest.slice(5));\n if (!isNaN(n)) {\n transition.mass = n / 10;\n return true;\n }\n }\n\n // repeat-infinite\n if (rest === \"repeat-infinite\") {\n transition.repeat = Infinity;\n return true;\n }\n\n // repeat-reverse\n if (rest === \"repeat-reverse\") {\n transition.repeatType = \"reverse\";\n return true;\n }\n\n // repeat-mirror\n if (rest === \"repeat-mirror\") {\n transition.repeatType = \"mirror\";\n return true;\n }\n\n // repeat-delay-{ms}\n if (rest.startsWith(\"repeat-delay-\")) {\n const ms = Number(rest.slice(13));\n if (!isNaN(ms)) {\n transition.repeatDelay = ms / 1000;\n return true;\n }\n }\n\n // repeat-{n}\n if (rest.startsWith(\"repeat-\")) {\n const n = Number(rest.slice(7));\n if (!isNaN(n)) {\n transition.repeat = n;\n return true;\n }\n }\n\n // stagger-reverse\n if (rest === \"stagger-reverse\") {\n transition.staggerDirection = -1;\n return true;\n }\n\n // stagger-{ms}\n if (rest.startsWith(\"stagger-\")) {\n const ms = Number(rest.slice(8));\n if (!isNaN(ms)) {\n transition.staggerChildren = ms / 1000;\n return true;\n }\n }\n\n // when-before / when-after\n if (rest === \"when-before\") {\n transition.when = \"beforeChildren\";\n return true;\n }\n if (rest === \"when-after\") {\n transition.when = \"afterChildren\";\n return true;\n }\n\n // rest-speed-{n} (0.01 increments via hundredths)\n if (rest.startsWith(\"rest-speed-\")) {\n const n = Number(rest.slice(11));\n if (!isNaN(n)) {\n transition.restSpeed = n;\n return true;\n }\n }\n\n // rest-delta-{n}\n if (rest.startsWith(\"rest-delta-\")) {\n const n = Number(rest.slice(11));\n if (!isNaN(n)) {\n transition.restDelta = n;\n return true;\n }\n }\n\n // times-[0,0.5,1]\n if (rest.startsWith(\"times-[\") && rest.endsWith(\"]\")) {\n const inner = rest.slice(7, -1);\n const values = inner.split(\",\").map((v) => Number(v.trim()));\n if (!values.some(isNaN)) {\n transition.times = values;\n return true;\n }\n }\n\n // --- Viewport config tokens ---\n\n if (rest === \"once\") {\n viewport.once = true;\n return true;\n }\n\n if (rest === \"amount-all\") {\n viewport.amount = \"all\";\n return true;\n }\n\n if (rest.startsWith(\"amount-\")) {\n const n = Number(rest.slice(7));\n if (!isNaN(n)) {\n viewport.amount = n / 100;\n return true;\n }\n }\n\n if (rest.startsWith(\"margin-\")) {\n const n = Number(rest.slice(7));\n if (!isNaN(n)) {\n viewport.margin = `${n}px`;\n return true;\n }\n }\n\n // --- Scroll-linked config tokens ---\n\n if (rest === \"scroll-axis-x\") {\n scroll.axis = \"x\";\n return true;\n }\n if (rest === \"scroll-axis-y\") {\n scroll.axis = \"y\";\n return true;\n }\n if (rest === \"scroll-container\") {\n scroll.container = true;\n return true;\n }\n\n // scroll-offset-[start_end,end_start] — underscores become spaces\n if (rest.startsWith(\"scroll-offset-[\") && rest.endsWith(\"]\")) {\n const inner = rest.slice(15, -1);\n const parts = inner.split(\",\").map((p) => p.trim().replace(/_/g, \" \"));\n if (parts.length === 2) {\n scroll.offset = [parts[0]!, parts[1]!];\n return true;\n }\n }\n\n // --- Variant state selectors ---\n // animate-from-{name} → initial, animate-to-{name} → animate, animate-exit-{name} → exit\n if (rest.startsWith(\"from-\")) {\n const name = rest.slice(5);\n if (name && !/\\s/.test(name)) {\n variantState.initial = name;\n return true;\n }\n }\n if (rest.startsWith(\"to-\")) {\n const name = rest.slice(3);\n if (name && !/\\s/.test(name)) {\n variantState.animate = name;\n return true;\n }\n }\n if (rest.startsWith(\"exit-\")) {\n const name = rest.slice(5);\n if (name && !/\\s/.test(name)) {\n variantState.exit = name;\n return true;\n }\n }\n\n // --- Drag config tokens ---\n\n if (rest === \"drag-x\") {\n dragConfig.drag = \"x\";\n return true;\n }\n if (rest === \"drag-y\") {\n dragConfig.drag = \"y\";\n return true;\n }\n if (rest === \"drag-both\") {\n dragConfig.drag = true;\n return true;\n }\n\n if (rest.startsWith(\"drag-elastic-\")) {\n const n = Number(rest.slice(13));\n if (!isNaN(n)) {\n dragConfig.dragElastic = n / 100;\n return true;\n }\n }\n\n if (rest === \"drag-snap\") {\n dragConfig.dragSnapToOrigin = true;\n return true;\n }\n if (rest === \"drag-no-momentum\") {\n dragConfig.dragMomentum = false;\n return true;\n }\n if (rest === \"drag-lock\") {\n dragConfig.dragDirectionLock = true;\n return true;\n }\n\n // drag-constraint-{side}-{n}\n if (rest.startsWith(\"drag-constraint-\")) {\n const sub = rest.slice(16);\n const sides: Record<string, string> = {\n \"t-\": \"top\",\n \"l-\": \"left\",\n \"r-\": \"right\",\n \"b-\": \"bottom\",\n };\n for (const [prefix, side] of Object.entries(sides)) {\n if (sub.startsWith(prefix)) {\n const n = Number(sub.slice(2));\n if (!isNaN(n)) {\n if (!dragConfig.dragConstraints) dragConfig.dragConstraints = {};\n (dragConfig.dragConstraints as Record<string, number>)[side] = n;\n return true;\n }\n }\n }\n }\n\n // --- Layout config tokens ---\n\n if (rest === \"layout\") {\n layoutConfig.layout = true;\n return true;\n }\n if (rest === \"layout-position\") {\n layoutConfig.layout = \"position\";\n return true;\n }\n if (rest === \"layout-size\") {\n layoutConfig.layout = \"size\";\n return true;\n }\n if (rest === \"layout-preserve\") {\n layoutConfig.layout = \"preserve-aspect\";\n return true;\n }\n if (rest === \"layout-scroll\") {\n layoutConfig.layoutScroll = true;\n return true;\n }\n if (rest === \"layout-root\") {\n layoutConfig.layoutRoot = true;\n return true;\n }\n\n if (rest.startsWith(\"layout-id-\")) {\n const id = rest.slice(10);\n if (id && !/\\s/.test(id)) {\n layoutConfig.layoutId = id;\n return true;\n }\n return false;\n }\n\n return false;\n}\n\n/**\n * Parse a className string and extract motionwind classes into structured\n * Motion props. All non-motionwind classes pass through as tailwindClasses.\n *\n * Results are memoized by input string.\n */\nexport function parseMotionClasses(\n className: string,\n config?: MotionwindConfig,\n): ParsedResult {\n const cached = config ? undefined : cache.get(className);\n if (cached) return cached;\n\n const diagnostics: MotionwindDiagnostic[] = [];\n const tokens = expandConfiguredTokens(className, config, diagnostics);\n const tailwind: string[] = [];\n const gestures: Partial<Record<GestureKey, AnimatableValues>> = {};\n const transition: TransitionConfig = {};\n const viewport: ViewportConfig = {};\n const dragConfig: DragConfig = {};\n const layoutConfig: LayoutConfig = {};\n const scroll: ScrollConfig = { axis: \"y\", container: false, values: {} };\n const variants: VariantMap = {};\n const variantState: VariantState = {};\n let reducedMotionPolicy: \"reduce\" | \"safe\" | undefined = undefined;\n\n for (const token of tokens) {\n // Detect and strip motion-reduce:/motion-safe: prefixes.\n // The inner token is processed normally; the prefix sets reducedMotionPolicy.\n let innerToken = token;\n if (token.startsWith(\"motion-reduce:\")) {\n reducedMotionPolicy = \"reduce\";\n innerToken = token.slice(\"motion-reduce:\".length);\n } else if (token.startsWith(\"motion-safe:\")) {\n reducedMotionPolicy = \"safe\";\n innerToken = token.slice(\"motion-safe:\".length);\n }\n // Skip empty inner tokens (e.g. a bare \"motion-reduce:\" with nothing after)\n if (!innerToken) continue;\n\n let consumed = classifyToken(\n innerToken,\n gestures,\n transition,\n viewport,\n dragConfig,\n layoutConfig,\n scroll,\n variants,\n variantState,\n );\n\n if (!consumed) {\n const easingName = innerToken.startsWith(\"animate-ease-\")\n ? innerToken.slice(\"animate-ease-\".length)\n : \"\";\n const easing = easingName\n ? config?.tokens?.easings?.[easingName]\n : undefined;\n if (typeof easing === \"string\") {\n transition.ease = easing;\n consumed = true;\n }\n }\n\n if (!consumed) {\n for (const plugin of config?.plugins ?? []) {\n const patch = plugin.transformToken?.(innerToken, { config: config! });\n if (!patch) continue;\n mergePatch(\n patch,\n gestures,\n transition,\n viewport,\n dragConfig,\n layoutConfig,\n scroll,\n variants,\n variantState,\n );\n consumed = true;\n break;\n }\n }\n\n if (!consumed) {\n if (\n innerToken.startsWith(\"animate-\") &&\n !TAILWIND_ANIMATE_CLASSES.has(innerToken)\n ) {\n diagnostics.push({\n code: \"unknown-class\",\n message: `Unrecognized motionwind class \"${innerToken}\".`,\n severity: config?.strict ? \"error\" : \"warning\",\n token: innerToken,\n });\n }\n if (\n process.env.NODE_ENV !== \"production\" &&\n innerToken.startsWith(\"animate-\") &&\n !TAILWIND_ANIMATE_CLASSES.has(innerToken)\n ) {\n console.warn(\n `[motionwind] Unrecognized class \"${innerToken}\". ` +\n `It starts with \"animate-\" but doesn't match any known pattern.`,\n );\n }\n tailwind.push(innerToken);\n }\n }\n\n const hasMotion =\n Object.keys(gestures).length > 0 ||\n Object.keys(transition).length > 0 ||\n Object.keys(viewport).length > 0 ||\n Object.keys(dragConfig).length > 0 ||\n Object.keys(layoutConfig).length > 0 ||\n Object.keys(scroll.values).length > 0 ||\n Object.keys(variants).length > 0 ||\n Object.keys(variantState).length > 0;\n\n const result: ParsedResult = {\n tailwindClasses: tailwind.join(\" \"),\n gestures,\n transition,\n viewport,\n dragConfig,\n layoutConfig,\n scroll,\n variants,\n variantState,\n hasMotion,\n ...(reducedMotionPolicy !== undefined && { reducedMotionPolicy }),\n diagnostics,\n };\n\n for (const plugin of config?.plugins ?? []) {\n const pluginDiagnostics =\n plugin.diagnose?.(className, result, { config: config! }) ?? [];\n diagnostics.push(\n ...pluginDiagnostics.map((diagnostic) => ({\n ...diagnostic,\n plugin: plugin.name,\n })),\n );\n }\n\n if (!config) cacheSet(className, result);\n return result;\n}\n\n/** Clear the parser memoization cache */\nexport function clearParserCache(): void {\n cache.clear();\n}\n\n/** Category of a single class token, used by tooling (linting, sorting). */\nexport type MotionTokenCategory =\n | \"variant\"\n | \"gesture\"\n | \"transition\"\n | \"viewport\"\n | \"scroll\"\n | \"drag\"\n | \"layout\"\n | \"tailwind\"\n | \"unknown\";\n\n/** Build throwaway accumulators for single-token classification. */\nfunction freshAccumulators() {\n return {\n gestures: {} as Partial<Record<GestureKey, AnimatableValues>>,\n transition: {} as TransitionConfig,\n viewport: {} as ViewportConfig,\n dragConfig: {} as DragConfig,\n layoutConfig: {} as LayoutConfig,\n scroll: { axis: \"y\", container: false, values: {} } as ScrollConfig,\n variants: {} as VariantMap,\n variantState: {} as VariantState,\n };\n}\n\n/**\n * Classify a single class token into a motionwind category. Non-motionwind\n * classes are \"tailwind\"; `animate-*` classes that don't match any pattern are\n * \"unknown\". Reuses the real `classifyToken` so it never drifts from parsing.\n */\nexport function classifyMotionToken(\n token: string,\n config?: MotionwindConfig,\n): MotionTokenCategory {\n // Strip motion-reduce:/motion-safe: wrapper prefixes and classify the inner token.\n if (token.startsWith(\"motion-reduce:\") || token.startsWith(\"motion-safe:\")) {\n const inner = token.startsWith(\"motion-reduce:\")\n ? token.slice(\"motion-reduce:\".length)\n : token.slice(\"motion-safe:\".length);\n return inner ? classifyMotionToken(inner, config) : \"tailwind\";\n }\n if (!token.startsWith(\"animate-\")) return \"tailwind\";\n if (TAILWIND_ANIMATE_CLASSES.has(token)) return \"tailwind\";\n if (config || token.startsWith(\"animate-preset-\")) {\n const parsed = parseMotionClasses(token, config);\n if (!parsed.hasMotion) return \"unknown\";\n if (\n Object.keys(parsed.variantState).length ||\n Object.keys(parsed.variants).length\n )\n return \"variant\";\n if (Object.keys(parsed.gestures).length) return \"gesture\";\n if (Object.keys(parsed.viewport).length) return \"viewport\";\n if (Object.keys(parsed.scroll.values).length) return \"scroll\";\n if (Object.keys(parsed.dragConfig).length) return \"drag\";\n if (Object.keys(parsed.layoutConfig).length) return \"layout\";\n return \"transition\";\n }\n const a = freshAccumulators();\n const consumed = classifyToken(\n token,\n a.gestures,\n a.transition,\n a.viewport,\n a.dragConfig,\n a.layoutConfig,\n a.scroll,\n a.variants,\n a.variantState,\n );\n if (!consumed) return \"unknown\";\n if (token.startsWith(\"animate-scroll\")) return \"scroll\";\n if (token.startsWith(\"animate-variant-\")) return \"variant\";\n if (Object.keys(a.variantState).length) return \"variant\";\n if (Object.keys(a.gestures).length) return \"gesture\";\n if (Object.keys(a.viewport).length) return \"viewport\";\n if (Object.keys(a.dragConfig).length) return \"drag\";\n if (Object.keys(a.layoutConfig).length) return \"layout\";\n return \"transition\";\n}\n","import type { ParsedResult } from \"./types.js\";\n\nexport type MotionwindCapability =\n | \"gestures\"\n | \"scroll\"\n | \"layout\"\n | \"drag\"\n | \"variants\"\n | \"svg\"\n | \"reduced-motion\";\n\nexport type AdapterCapabilities = Readonly<\n Record<MotionwindCapability, boolean>\n>;\n\nexport interface MotionwindAdapter<TContext = unknown, TOutput = unknown> {\n name: string;\n version: string;\n capabilities: AdapterCapabilities;\n compile: (parsed: ParsedResult, context: TContext) => TOutput;\n}\n\nexport function defineMotionwindAdapter<\n TContext,\n TOutput,\n const T extends MotionwindAdapter<TContext, TOutput>,\n>(adapter: T): T {\n return adapter;\n}\n\nexport function unsupportedCapabilities(\n parsed: ParsedResult,\n capabilities: AdapterCapabilities,\n): MotionwindCapability[] {\n const unsupported: MotionwindCapability[] = [];\n if (Object.keys(parsed.gestures).length > 0 && !capabilities.gestures)\n unsupported.push(\"gestures\");\n if (Object.keys(parsed.scroll.values).length > 0 && !capabilities.scroll)\n unsupported.push(\"scroll\");\n if (Object.keys(parsed.layoutConfig).length > 0 && !capabilities.layout)\n unsupported.push(\"layout\");\n if (Object.keys(parsed.dragConfig).length > 0 && !capabilities.drag)\n unsupported.push(\"drag\");\n if (\n (Object.keys(parsed.variants).length > 0 ||\n Object.keys(parsed.variantState).length > 0) &&\n !capabilities.variants\n )\n unsupported.push(\"variants\");\n const svgProperties = new Set([\"pathLength\", \"pathOffset\", \"pathSpacing\"]);\n if (\n !capabilities.svg &&\n Object.values(parsed.gestures).some((values) =>\n Object.keys(values ?? {}).some((property) => svgProperties.has(property)),\n )\n ) {\n unsupported.push(\"svg\");\n }\n return unsupported;\n}\n","import {\n classifyMotionToken,\n parseMotionClasses,\n type MotionTokenCategory,\n} from \"./parser.js\";\nimport type { MotionwindConfig } from \"./config.js\";\n\nexport interface DuplicateProp {\n gesture: string;\n prop: string;\n}\n\nexport interface ClassNameAnalysis {\n unknown: string[];\n duplicates: DuplicateProp[];\n}\n\nconst COMBINABLE = new Set([\"filter\", \"backdropFilter\"]);\n\nexport function analyzeClassName(\n className: string,\n config?: MotionwindConfig,\n): ClassNameAnalysis {\n const tokens = className.split(/\\s+/).filter(Boolean);\n const unknown: string[] = [];\n const duplicates: DuplicateProp[] = [];\n const seen = new Set<string>();\n\n for (const token of tokens) {\n if (!token.startsWith(\"animate-\")) continue;\n const category = classifyMotionToken(token, config);\n if (category === \"tailwind\") continue;\n if (category === \"unknown\") {\n unknown.push(token);\n continue;\n }\n const parsed = parseMotionClasses(token, config);\n const record = (bucket: string, prop: string) => {\n if (COMBINABLE.has(prop)) return;\n const key = `${bucket}.${prop}`;\n if (seen.has(key)) duplicates.push({ gesture: bucket, prop });\n else seen.add(key);\n };\n for (const [gestureKey, values] of Object.entries(parsed.gestures)) {\n for (const prop of Object.keys(values)) record(gestureKey, prop);\n }\n for (const [name, values] of Object.entries(parsed.variants)) {\n for (const prop of Object.keys(values)) record(`variant-${name}`, prop);\n }\n }\n\n return { unknown, duplicates };\n}\n\nconst CATEGORY_RANK: Record<MotionTokenCategory, number> = {\n variant: 0,\n gesture: 1,\n transition: 2,\n viewport: 3,\n scroll: 4,\n drag: 5,\n layout: 6,\n unknown: 7,\n tailwind: 8,\n};\n\nexport function sortMotionClasses(\n className: string,\n config?: MotionwindConfig,\n): string {\n return className\n .split(/\\s+/)\n .filter(Boolean)\n .map((token, index) => ({\n token,\n rank: CATEGORY_RANK[classifyMotionToken(token, config)],\n index,\n }))\n .sort((a, b) => a.rank - b.rank || a.index - b.index)\n .map(({ token }) => token)\n .join(\" \");\n}\n"]}
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export { MotionTokenCategory, classifyMotionToken, clearParserCache, parseMotionClasses } from './parser.cjs';
|
|
2
|
+
import { M as MotionwindConfig } from './types-BYtWWSgh.cjs';
|
|
3
|
+
export { A as AnimatableValues, C as CONFIG_DEFINITIONS, D as DEFAULT_MOTIONWIND_CONFIG, a as DragConfig, E as EASING_MAP, G as GESTURE_DEFINITIONS, b as GESTURE_KEYS, c as GESTURE_MAP, d as GestureKey, L as LayoutConfig, e as MOTIONWIND_SYNTAX_REGISTRY, f as MotionwindDiagnostic, g as MotionwindPlugin, h as MotionwindResultPatch, i as MotionwindTokens, P as PROPERTY_DEFINITIONS, j as ParsedResult, k as Platform, R as ReducedMotionPolicy, S as ScrollConfig, l as SpringToken, m as SyntaxCategory, n as SyntaxDefinition, T as TransitionConfig, V as VariantMap, o as VariantState, p as ViewportConfig, q as defineConfig, r as defineMotionwindPlugin, s as definePreset, t as getSyntaxDefinitions } from './types-BYtWWSgh.cjs';
|
|
4
|
+
export { AdapterCapabilities, MotionwindAdapter, MotionwindCapability, defineMotionwindAdapter, unsupportedCapabilities } from './adapter.cjs';
|
|
5
|
+
export { BUILT_IN_PRESETS, MOTIONWIND_RECIPES, MotionwindRecipe, getRecipe } from './recipes.cjs';
|
|
6
|
+
|
|
7
|
+
interface DuplicateProp {
|
|
8
|
+
gesture: string;
|
|
9
|
+
prop: string;
|
|
10
|
+
}
|
|
11
|
+
interface ClassNameAnalysis {
|
|
12
|
+
unknown: string[];
|
|
13
|
+
duplicates: DuplicateProp[];
|
|
14
|
+
}
|
|
15
|
+
declare function analyzeClassName(className: string, config?: MotionwindConfig): ClassNameAnalysis;
|
|
16
|
+
declare function sortMotionClasses(className: string, config?: MotionwindConfig): string;
|
|
17
|
+
|
|
18
|
+
export { type ClassNameAnalysis, type DuplicateProp, MotionwindConfig, analyzeClassName, sortMotionClasses };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export { MotionTokenCategory, classifyMotionToken, clearParserCache, parseMotionClasses } from './parser.js';
|
|
2
|
+
import { M as MotionwindConfig } from './types-BYtWWSgh.js';
|
|
3
|
+
export { A as AnimatableValues, C as CONFIG_DEFINITIONS, D as DEFAULT_MOTIONWIND_CONFIG, a as DragConfig, E as EASING_MAP, G as GESTURE_DEFINITIONS, b as GESTURE_KEYS, c as GESTURE_MAP, d as GestureKey, L as LayoutConfig, e as MOTIONWIND_SYNTAX_REGISTRY, f as MotionwindDiagnostic, g as MotionwindPlugin, h as MotionwindResultPatch, i as MotionwindTokens, P as PROPERTY_DEFINITIONS, j as ParsedResult, k as Platform, R as ReducedMotionPolicy, S as ScrollConfig, l as SpringToken, m as SyntaxCategory, n as SyntaxDefinition, T as TransitionConfig, V as VariantMap, o as VariantState, p as ViewportConfig, q as defineConfig, r as defineMotionwindPlugin, s as definePreset, t as getSyntaxDefinitions } from './types-BYtWWSgh.js';
|
|
4
|
+
export { AdapterCapabilities, MotionwindAdapter, MotionwindCapability, defineMotionwindAdapter, unsupportedCapabilities } from './adapter.js';
|
|
5
|
+
export { BUILT_IN_PRESETS, MOTIONWIND_RECIPES, MotionwindRecipe, getRecipe } from './recipes.js';
|
|
6
|
+
|
|
7
|
+
interface DuplicateProp {
|
|
8
|
+
gesture: string;
|
|
9
|
+
prop: string;
|
|
10
|
+
}
|
|
11
|
+
interface ClassNameAnalysis {
|
|
12
|
+
unknown: string[];
|
|
13
|
+
duplicates: DuplicateProp[];
|
|
14
|
+
}
|
|
15
|
+
declare function analyzeClassName(className: string, config?: MotionwindConfig): ClassNameAnalysis;
|
|
16
|
+
declare function sortMotionClasses(className: string, config?: MotionwindConfig): string;
|
|
17
|
+
|
|
18
|
+
export { type ClassNameAnalysis, type DuplicateProp, MotionwindConfig, analyzeClassName, sortMotionClasses };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { classifyMotionToken, parseMotionClasses } from './chunk-A7EAMXLY.js';
|
|
2
|
+
export { classifyMotionToken, clearParserCache, parseMotionClasses } from './chunk-A7EAMXLY.js';
|
|
3
|
+
export { CONFIG_DEFINITIONS, EASING_MAP, GESTURE_DEFINITIONS, GESTURE_KEYS, GESTURE_MAP, MOTIONWIND_SYNTAX_REGISTRY, PROPERTY_DEFINITIONS, getSyntaxDefinitions } from './chunk-Z5I36REG.js';
|
|
4
|
+
export { defineMotionwindAdapter, unsupportedCapabilities } from './chunk-ULRTFOGX.js';
|
|
5
|
+
export { BUILT_IN_PRESETS, MOTIONWIND_RECIPES, getRecipe } from './chunk-IJZCYKTO.js';
|
|
6
|
+
export { DEFAULT_MOTIONWIND_CONFIG, defineConfig, defineMotionwindPlugin, definePreset } from './chunk-P6FC2RDE.js';
|
|
7
|
+
|
|
8
|
+
// src/analysis.ts
|
|
9
|
+
var COMBINABLE = /* @__PURE__ */ new Set(["filter", "backdropFilter"]);
|
|
10
|
+
function analyzeClassName(className, config) {
|
|
11
|
+
const tokens = className.split(/\s+/).filter(Boolean);
|
|
12
|
+
const unknown = [];
|
|
13
|
+
const duplicates = [];
|
|
14
|
+
const seen = /* @__PURE__ */ new Set();
|
|
15
|
+
for (const token of tokens) {
|
|
16
|
+
if (!token.startsWith("animate-")) continue;
|
|
17
|
+
const category = classifyMotionToken(token, config);
|
|
18
|
+
if (category === "tailwind") continue;
|
|
19
|
+
if (category === "unknown") {
|
|
20
|
+
unknown.push(token);
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
const parsed = parseMotionClasses(token, config);
|
|
24
|
+
const record = (bucket, prop) => {
|
|
25
|
+
if (COMBINABLE.has(prop)) return;
|
|
26
|
+
const key = `${bucket}.${prop}`;
|
|
27
|
+
if (seen.has(key)) duplicates.push({ gesture: bucket, prop });
|
|
28
|
+
else seen.add(key);
|
|
29
|
+
};
|
|
30
|
+
for (const [gestureKey, values] of Object.entries(parsed.gestures)) {
|
|
31
|
+
for (const prop of Object.keys(values)) record(gestureKey, prop);
|
|
32
|
+
}
|
|
33
|
+
for (const [name, values] of Object.entries(parsed.variants)) {
|
|
34
|
+
for (const prop of Object.keys(values)) record(`variant-${name}`, prop);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return { unknown, duplicates };
|
|
38
|
+
}
|
|
39
|
+
var CATEGORY_RANK = {
|
|
40
|
+
variant: 0,
|
|
41
|
+
gesture: 1,
|
|
42
|
+
transition: 2,
|
|
43
|
+
viewport: 3,
|
|
44
|
+
scroll: 4,
|
|
45
|
+
drag: 5,
|
|
46
|
+
layout: 6,
|
|
47
|
+
unknown: 7,
|
|
48
|
+
tailwind: 8
|
|
49
|
+
};
|
|
50
|
+
function sortMotionClasses(className, config) {
|
|
51
|
+
return className.split(/\s+/).filter(Boolean).map((token, index) => ({
|
|
52
|
+
token,
|
|
53
|
+
rank: CATEGORY_RANK[classifyMotionToken(token, config)],
|
|
54
|
+
index
|
|
55
|
+
})).sort((a, b) => a.rank - b.rank || a.index - b.index).map(({ token }) => token).join(" ");
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export { analyzeClassName, sortMotionClasses };
|
|
59
|
+
//# sourceMappingURL=index.js.map
|
|
60
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/analysis.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import {\n classifyMotionToken,\n parseMotionClasses,\n type MotionTokenCategory,\n} from \"./parser.js\";\nimport type { MotionwindConfig } from \"./config.js\";\n\nexport interface DuplicateProp {\n gesture: string;\n prop: string;\n}\n\nexport interface ClassNameAnalysis {\n unknown: string[];\n duplicates: DuplicateProp[];\n}\n\nconst COMBINABLE = new Set([\"filter\", \"backdropFilter\"]);\n\nexport function analyzeClassName(\n className: string,\n config?: MotionwindConfig,\n): ClassNameAnalysis {\n const tokens = className.split(/\\s+/).filter(Boolean);\n const unknown: string[] = [];\n const duplicates: DuplicateProp[] = [];\n const seen = new Set<string>();\n\n for (const token of tokens) {\n if (!token.startsWith(\"animate-\")) continue;\n const category = classifyMotionToken(token, config);\n if (category === \"tailwind\") continue;\n if (category === \"unknown\") {\n unknown.push(token);\n continue;\n }\n const parsed = parseMotionClasses(token, config);\n const record = (bucket: string, prop: string) => {\n if (COMBINABLE.has(prop)) return;\n const key = `${bucket}.${prop}`;\n if (seen.has(key)) duplicates.push({ gesture: bucket, prop });\n else seen.add(key);\n };\n for (const [gestureKey, values] of Object.entries(parsed.gestures)) {\n for (const prop of Object.keys(values)) record(gestureKey, prop);\n }\n for (const [name, values] of Object.entries(parsed.variants)) {\n for (const prop of Object.keys(values)) record(`variant-${name}`, prop);\n }\n }\n\n return { unknown, duplicates };\n}\n\nconst CATEGORY_RANK: Record<MotionTokenCategory, number> = {\n variant: 0,\n gesture: 1,\n transition: 2,\n viewport: 3,\n scroll: 4,\n drag: 5,\n layout: 6,\n unknown: 7,\n tailwind: 8,\n};\n\nexport function sortMotionClasses(\n className: string,\n config?: MotionwindConfig,\n): string {\n return className\n .split(/\\s+/)\n .filter(Boolean)\n .map((token, index) => ({\n token,\n rank: CATEGORY_RANK[classifyMotionToken(token, config)],\n index,\n }))\n .sort((a, b) => a.rank - b.rank || a.index - b.index)\n .map(({ token }) => token)\n .join(\" \");\n}\n"]}
|