import { extendTailwindMerge } from "tailwind-merge" /** * `ease-standard` is ours, from the motion tokens — Tailwind ships * `ease-linear`/`ease-in`/`ease-out`/`ease-in-out` and knows nothing * about it. Without this it lands in no class group, so a caller * passing `ease-linear` would get BOTH and the winner would be decided * by stylesheet source order — exactly the bug this file now exists to * prevent, one utility further along. * * Nothing else needs registering. Verified empirically rather than * assumed: `toClassName.test.ts` asserts the merge is a no-op across * every class string in this package and every string * `getControlClassName` composes. */ const mergeClassNames = extendTailwindMerge({ extend: { classGroups: { ease: [{ ease: ["standard"] }] }, }, }) /** * Join a class list, and let a later class beat an earlier one that * targets the same CSS property. * * ### Why this is not a plain join any more * * It was, and that was a bug. `getControlClassName` assembles * `toClassName(CONTROL_BASE_CLASS, …, className)`, and * `CONTROL_BASE_CLASS` opens with `inline-flex`. A caller writing * * ```tsx *