{"version":3,"file":"cx.cjs","sources":["../src/cx.js"],"sourcesContent":["/**\n * CX - Conditional Class Name Builder\n * \n * A lightweight utility for conditionally joining Tailwind class names.\n * Similar to `clsx`/`classnames` but designed specifically for tailwind-to-style.\n * \n * @module cx\n */\n\n/**\n * Conditionally join class names into a single string.\n * \n * Accepts strings, objects (key=className, value=condition), arrays, and nested combinations.\n * Falsy values (null, undefined, false, 0, '') are ignored.\n * \n * @param {...(string|Object|Array|boolean|null|undefined)} args - Class name inputs\n * @returns {string} Joined class names string\n * \n * @example\n * // Strings\n * cx('bg-blue-500', 'text-white')\n * // → 'bg-blue-500 text-white'\n * \n * @example\n * // Conditionals\n * cx('p-4', isActive && 'bg-blue-500', isDisabled && 'opacity-50')\n * // → 'p-4 bg-blue-500' (if isActive=true, isDisabled=false)\n * \n * @example\n * // Object syntax\n * cx('p-4', { 'bg-blue-500': isActive, 'opacity-50': isDisabled, 'cursor-pointer': true })\n * // → 'p-4 bg-blue-500 cursor-pointer'\n * \n * @example\n * // Arrays (nested)\n * cx(['p-4', 'bg-white'], isActive && ['ring-2', 'ring-blue-500'])\n * // → 'p-4 bg-white ring-2 ring-blue-500'\n * \n * @example\n * // Mixed\n * cx(\n *   'base-class',\n *   condition && 'conditional-class',\n *   { 'object-class': true, 'ignored-class': false },\n *   ['array-class-1', 'array-class-2']\n * )\n */\nexport function cx(...args) {\n  const classes = [];\n\n  for (let i = 0; i < args.length; i++) {\n    const arg = args[i];\n\n    // Skip falsy values\n    if (!arg) continue;\n\n    const type = typeof arg;\n\n    if (type === \"string\") {\n      classes.push(arg);\n    } else if (Array.isArray(arg)) {\n      // Recursively process arrays\n      const inner = cx(...arg);\n      if (inner) classes.push(inner);\n    } else if (type === \"object\") {\n      // Object: keys are class names, values are conditions\n      const keys = Object.keys(arg);\n      for (let j = 0; j < keys.length; j++) {\n        if (arg[keys[j]]) {\n          classes.push(keys[j]);\n        }\n      }\n    }\n  }\n\n  return classes.join(\" \");\n}\n\nexport default cx;\n"],"names":["cx","classes","i","arguments","length","arg","undefined","type","push","Array","isArray","inner","keys","Object","j","join"],"mappings":";;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,EAAEA,GAAU;EAC1B,MAAMC,OAAO,GAAG,EAAE;AAElB,EAAA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGC,SAAA,CAAKC,MAAM,EAAEF,CAAC,EAAE,EAAE;AACpC,IAAA,MAAMG,GAAG,GAAQH,CAAC,GAAA,CAAA,IAAAC,SAAA,CAAAC,MAAA,IAADF,CAAC,GAAAI,SAAA,GAAAH,SAAA,CAADD,CAAC,CAAC;;AAEnB;IACA,IAAI,CAACG,GAAG,EAAE;IAEV,MAAME,IAAI,GAAG,OAAOF,GAAG;IAEvB,IAAIE,IAAI,KAAK,QAAQ,EAAE;AACrBN,MAAAA,OAAO,CAACO,IAAI,CAACH,GAAG,CAAC;IACnB,CAAC,MAAM,IAAII,KAAK,CAACC,OAAO,CAACL,GAAG,CAAC,EAAE;AAC7B;AACA,MAAA,MAAMM,KAAK,GAAGX,EAAE,CAAC,GAAGK,GAAG,CAAC;AACxB,MAAA,IAAIM,KAAK,EAAEV,OAAO,CAACO,IAAI,CAACG,KAAK,CAAC;AAChC,IAAA,CAAC,MAAM,IAAIJ,IAAI,KAAK,QAAQ,EAAE;AAC5B;AACA,MAAA,MAAMK,IAAI,GAAGC,MAAM,CAACD,IAAI,CAACP,GAAG,CAAC;AAC7B,MAAA,KAAK,IAAIS,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,IAAI,CAACR,MAAM,EAAEU,CAAC,EAAE,EAAE;AACpC,QAAA,IAAIT,GAAG,CAACO,IAAI,CAACE,CAAC,CAAC,CAAC,EAAE;AAChBb,UAAAA,OAAO,CAACO,IAAI,CAACI,IAAI,CAACE,CAAC,CAAC,CAAC;AACvB,QAAA;AACF,MAAA;AACF,IAAA;AACF,EAAA;AAEA,EAAA,OAAOb,OAAO,CAACc,IAAI,CAAC,GAAG,CAAC;AAC1B;;;;;"}