clases 1.1.3 → 1.1.4

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/dist/index.cjs CHANGED
@@ -18,11 +18,11 @@ function createCl(...plugins) {
18
18
  if (typeof value === "object") {
19
19
  return Object.entries(value).map(([nestedKey, nestedValue]) => {
20
20
  const isRegistered = registry[nestedKey] !== void 0;
21
- const nextKey = key === "base" ? nestedKey : isRegistered ? `${key}:${nestedKey}` : key;
21
+ const nextKey = isRegistered ? key ? `${key}:${nestedKey}` : nestedKey : key;
22
22
  return process(nextKey, nestedValue);
23
23
  }).join(" ");
24
24
  }
25
- const resolvedPrefix = key.split(":").map((part) => part === "base" ? null : registry[part] || null).filter(Boolean).join(":");
25
+ const resolvedPrefix = key.split(":").map((part) => registry[part] || null).filter(Boolean).join(":");
26
26
  if (typeof value === "string") {
27
27
  return value.split(/[,\s\n]+/).filter(Boolean).map((cls) => !resolvedPrefix ? cls : `${resolvedPrefix}:${cls}`).join(" ");
28
28
  }
@@ -33,8 +33,7 @@ function createCl(...plugins) {
33
33
  if (input !== null && typeof input === "object" && !Array.isArray(input)) {
34
34
  return Object.entries(input).map(([k, v]) => {
35
35
  if (v === true) return k;
36
- const isRegistered = registry[k] !== void 0;
37
- return process(isRegistered ? k : "base", v);
36
+ return process(registry[k] ? k : "", v);
38
37
  }).join(" ");
39
38
  }
40
39
  return input;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":["twMerge","clsx"],"mappings":";;;;;;;;;;AAGO,SAAS,YAAuD,OAAA,EAAmB;AACtF,EAAA,MAAM,WAAmC,MAAA,CAAO,MAAA,CAAO,EAAC,EAAG,GAAG,OAAO,CAAA;AAErE,EAAA,MAAM,OAAA,GAAU,CAAC,GAAA,EAAa,KAAA,KAAuB;AACjD,IAAA,IAAI,CAAC,OAAO,OAAO,EAAA;AAEnB,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACtB,MAAA,OAAO,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,KAAM,OAAA,CAAQ,GAAA,EAAK,CAAC,CAAC,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AAAA,IACrE;AAEA,IAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC3B,MAAA,OAAO,MAAA,CAAO,QAAQ,KAAK,CAAA,CACtB,IAAI,CAAC,CAAC,SAAA,EAAW,WAAW,CAAA,KAAM;AAC/B,QAAA,MAAM,YAAA,GAAe,QAAA,CAAS,SAAS,CAAA,KAAM,MAAA;AAK7C,QAAA,MAAM,OAAA,GAAU,QAAQ,MAAA,GAClB,SAAA,GACC,eAAe,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA,GAAK,GAAA;AAE9C,QAAA,OAAO,OAAA,CAAQ,SAAS,WAAW,CAAA;AAAA,MACvC,CAAC,CAAA,CACA,IAAA,CAAK,GAAG,CAAA;AAAA,IACjB;AAGA,IAAA,MAAM,cAAA,GAAiB,IAClB,KAAA,CAAM,GAAG,EACT,GAAA,CAAI,CAAC,SAAU,IAAA,KAAS,MAAA,GAAS,OAAQ,QAAA,CAAS,IAAI,KAAK,IAAM,CAAA,CACjE,OAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEb,IAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC3B,MAAA,OAAO,KAAA,CACF,MAAM,UAAU,CAAA,CAChB,OAAO,OAAO,CAAA,CACd,IAAI,CAAC,GAAA,KAAS,CAAC,cAAA,GAAiB,GAAA,GAAM,GAAG,cAAc,CAAA,CAAA,EAAI,GAAG,CAAA,CAAG,CAAA,CACjE,KAAK,GAAG,CAAA;AAAA,IACjB;AACA,IAAA,OAAO,EAAA;AAAA,EACX,CAAA;AAEA,EAAA,OAAO,IAAI,MAAA,KAAkB;AACzB,IAAA,MAAM,SAAA,GAAY,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,KAAU;AACpC,MAAA,IAAI,KAAA,KAAU,QAAQ,OAAO,KAAA,KAAU,YAAY,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACtE,QAAA,OAAO,MAAA,CAAO,QAAQ,KAAK,CAAA,CACtB,IAAI,CAAC,CAAC,CAAA,EAAG,CAAC,CAAA,KAAM;AACb,UAAA,IAAI,CAAA,KAAM,MAAM,OAAO,CAAA;AAGvB,UAAA,MAAM,YAAA,GAAe,QAAA,CAAS,CAAC,CAAA,KAAM,MAAA;AACrC,UAAA,OAAO,OAAA,CAAQ,YAAA,GAAe,CAAA,GAAI,MAAA,EAAQ,CAAC,CAAA;AAAA,QAC/C,CAAC,CAAA,CACA,IAAA,CAAK,GAAG,CAAA;AAAA,MACjB;AACA,MAAA,OAAO,KAAA;AAAA,IACX,CAAC,CAAA;AACD,IAAA,OAAOA,qBAAA,CAAQC,qBAAA,CAAK,SAAS,CAAC,CAAA;AAAA,EAClC,CAAA;AACJ","file":"index.cjs","sourcesContent":["import { twMerge } from 'tailwind-merge';\r\nimport clsx from 'clsx';\r\n\r\nexport function createCl<TPlugins extends Record<string, string>[]>(...plugins: TPlugins) {\r\n const registry: Record<string, string> = Object.assign({}, ...plugins);\r\n\r\n const process = (key: string, value: any): string => {\r\n if (!value) return '';\r\n\r\n if (Array.isArray(value)) {\r\n return value.map((v) => process(key, v)).filter(Boolean).join(' ');\r\n }\r\n\r\n if (typeof value === 'object') {\r\n return Object.entries(value)\r\n .map(([nestedKey, nestedValue]) => {\r\n const isRegistered = registry[nestedKey] !== undefined;\r\n \r\n // Si el padre es 'base', el hijo toma su lugar.\r\n // Si el hijo está registrado, se concatena.\r\n // Si no, heredamos el padre para mantener la transparencia.\r\n const nextKey = key === 'base' \r\n ? nestedKey \r\n : (isRegistered ? `${key}:${nestedKey}` : key);\r\n\r\n return process(nextKey, nestedValue);\r\n })\r\n .join(' ');\r\n }\r\n\r\n // RESOLUCIÓN: Solo permitimos partes que existan en el registry\r\n const resolvedPrefix = key\r\n .split(':')\r\n .map((part) => (part === 'base' ? null : (registry[part] || null)))\r\n .filter(Boolean)\r\n .join(':');\r\n\r\n if (typeof value === 'string') {\r\n return value\r\n .split(/[,\\s\\n]+/)\r\n .filter(Boolean)\r\n .map((cls) => (!resolvedPrefix ? cls : `${resolvedPrefix}:${cls}`))\r\n .join(' ');\r\n }\r\n return '';\r\n };\r\n\r\n return (...inputs: any[]) => {\r\n const processed = inputs.map((input) => {\r\n if (input !== null && typeof input === 'object' && !Array.isArray(input)) {\r\n return Object.entries(input)\r\n .map(([k, v]) => {\r\n if (v === true) return k;\r\n // SI LA LLAVE NO ESTÁ REGISTRADA (ej: 'variants'), \r\n // entramos como 'base' para que sea invisible.\r\n const isRegistered = registry[k] !== undefined;\r\n return process(isRegistered ? k : 'base', v);\r\n })\r\n .join(' ');\r\n }\r\n return input;\r\n });\r\n return twMerge(clsx(processed));\r\n };\r\n}\r\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":["twMerge","clsx"],"mappings":";;;;;;;;;;AAGO,SAAS,YAAuD,OAAA,EAAmB;AACtF,EAAA,MAAM,WAAmC,MAAA,CAAO,MAAA,CAAO,EAAC,EAAG,GAAG,OAAO,CAAA;AAErE,EAAA,MAAM,OAAA,GAAU,CAAC,GAAA,EAAa,KAAA,KAAuB;AACjD,IAAA,IAAI,CAAC,OAAO,OAAO,EAAA;AAEnB,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACtB,MAAA,OAAO,KAAA,CACF,GAAA,CAAI,CAAC,CAAA,KAAM,OAAA,CAAQ,GAAA,EAAK,CAAC,CAAC,CAAA,CAC1B,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAAA,IACjB;AAEA,IAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC3B,MAAA,OAAO,MAAA,CAAO,QAAQ,KAAK,CAAA,CACtB,IAAI,CAAC,CAAC,SAAA,EAAW,WAAW,CAAA,KAAM;AAC/B,QAAA,MAAM,YAAA,GAAe,QAAA,CAAS,SAAS,CAAA,KAAM,MAAA;AAG7C,QAAA,MAAM,OAAA,GAAU,eAAgB,GAAA,GAAM,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,SAAS,KAAK,SAAA,GAAa,GAAA;AAE3E,QAAA,OAAO,OAAA,CAAQ,SAAS,WAAW,CAAA;AAAA,MACvC,CAAC,CAAA,CACA,IAAA,CAAK,GAAG,CAAA;AAAA,IACjB;AAGA,IAAA,MAAM,iBAAiB,GAAA,CAClB,KAAA,CAAM,GAAG,CAAA,CACT,IAAI,CAAC,IAAA,KAAS,QAAA,CAAS,IAAI,KAAK,IAAI,CAAA,CACpC,OAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEb,IAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC3B,MAAA,OAAO,KAAA,CACF,MAAM,UAAU,CAAA,CAChB,OAAO,OAAO,CAAA,CACd,IAAI,CAAC,GAAA,KAAS,CAAC,cAAA,GAAiB,GAAA,GAAM,GAAG,cAAc,CAAA,CAAA,EAAI,GAAG,CAAA,CAAG,CAAA,CACjE,KAAK,GAAG,CAAA;AAAA,IACjB;AACA,IAAA,OAAO,EAAA;AAAA,EACX,CAAA;AAEA,EAAA,OAAO,IAAI,MAAA,KAAkB;AACzB,IAAA,MAAM,SAAA,GAAY,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,KAAU;AACpC,MAAA,IAAI,KAAA,KAAU,QAAQ,OAAO,KAAA,KAAU,YAAY,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACtE,QAAA,OAAO,MAAA,CAAO,QAAQ,KAAK,CAAA,CACtB,IAAI,CAAC,CAAC,CAAA,EAAG,CAAC,CAAA,KAAM;AACb,UAAA,IAAI,CAAA,KAAM,MAAM,OAAO,CAAA;AAEvB,UAAA,OAAO,QAAQ,QAAA,CAAS,CAAC,CAAA,GAAI,CAAA,GAAI,IAAI,CAAC,CAAA;AAAA,QAC1C,CAAC,CAAA,CACA,IAAA,CAAK,GAAG,CAAA;AAAA,MACjB;AACA,MAAA,OAAO,KAAA;AAAA,IACX,CAAC,CAAA;AACD,IAAA,OAAOA,qBAAA,CAAQC,qBAAA,CAAK,SAAS,CAAC,CAAA;AAAA,EAClC,CAAA;AACJ","file":"index.cjs","sourcesContent":["import { twMerge } from 'tailwind-merge';\r\nimport clsx from 'clsx';\r\n\r\nexport function createCl<TPlugins extends Record<string, string>[]>(...plugins: TPlugins) {\r\n const registry: Record<string, string> = Object.assign({}, ...plugins);\r\n\r\n const process = (key: string, value: any): string => {\r\n if (!value) return '';\r\n\r\n if (Array.isArray(value)) {\r\n return value\r\n .map((v) => process(key, v))\r\n .filter(Boolean)\r\n .join(' ');\r\n }\r\n\r\n if (typeof value === 'object') {\r\n return Object.entries(value)\r\n .map(([nestedKey, nestedValue]) => {\r\n const isRegistered = registry[nestedKey] !== undefined;\r\n // Si el hijo está registrado, añadimos al prefijo.\r\n // Si no, mantenemos el prefijo actual (transparencia).\r\n const nextKey = isRegistered ? (key ? `${key}:${nestedKey}` : nestedKey) : key;\r\n\r\n return process(nextKey, nestedValue);\r\n })\r\n .join(' ');\r\n }\r\n\r\n // RESOLUCIÓN: Solo lo que esté en el registro se convierte en prefijo.\r\n const resolvedPrefix = key\r\n .split(':')\r\n .map((part) => registry[part] || null)\r\n .filter(Boolean)\r\n .join(':');\r\n\r\n if (typeof value === 'string') {\r\n return value\r\n .split(/[,\\s\\n]+/)\r\n .filter(Boolean)\r\n .map((cls) => (!resolvedPrefix ? cls : `${resolvedPrefix}:${cls}`))\r\n .join(' ');\r\n }\r\n return '';\r\n };\r\n\r\n return (...inputs: any[]) => {\r\n const processed = inputs.map((input) => {\r\n if (input !== null && typeof input === 'object' && !Array.isArray(input)) {\r\n return Object.entries(input)\r\n .map(([k, v]) => {\r\n if (v === true) return k;\r\n // Si la llave raíz no está registrada, empezamos proceso con key vacía\r\n return process(registry[k] ? k : '', v);\r\n })\r\n .join(' ');\r\n }\r\n return input;\r\n });\r\n return twMerge(clsx(processed));\r\n };\r\n}\r\n"]}
package/dist/index.js CHANGED
@@ -12,11 +12,11 @@ function createCl(...plugins) {
12
12
  if (typeof value === "object") {
13
13
  return Object.entries(value).map(([nestedKey, nestedValue]) => {
14
14
  const isRegistered = registry[nestedKey] !== void 0;
15
- const nextKey = key === "base" ? nestedKey : isRegistered ? `${key}:${nestedKey}` : key;
15
+ const nextKey = isRegistered ? key ? `${key}:${nestedKey}` : nestedKey : key;
16
16
  return process(nextKey, nestedValue);
17
17
  }).join(" ");
18
18
  }
19
- const resolvedPrefix = key.split(":").map((part) => part === "base" ? null : registry[part] || null).filter(Boolean).join(":");
19
+ const resolvedPrefix = key.split(":").map((part) => registry[part] || null).filter(Boolean).join(":");
20
20
  if (typeof value === "string") {
21
21
  return value.split(/[,\s\n]+/).filter(Boolean).map((cls) => !resolvedPrefix ? cls : `${resolvedPrefix}:${cls}`).join(" ");
22
22
  }
@@ -27,8 +27,7 @@ function createCl(...plugins) {
27
27
  if (input !== null && typeof input === "object" && !Array.isArray(input)) {
28
28
  return Object.entries(input).map(([k, v]) => {
29
29
  if (v === true) return k;
30
- const isRegistered = registry[k] !== void 0;
31
- return process(isRegistered ? k : "base", v);
30
+ return process(registry[k] ? k : "", v);
32
31
  }).join(" ");
33
32
  }
34
33
  return input;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;AAGO,SAAS,YAAuD,OAAA,EAAmB;AACtF,EAAA,MAAM,WAAmC,MAAA,CAAO,MAAA,CAAO,EAAC,EAAG,GAAG,OAAO,CAAA;AAErE,EAAA,MAAM,OAAA,GAAU,CAAC,GAAA,EAAa,KAAA,KAAuB;AACjD,IAAA,IAAI,CAAC,OAAO,OAAO,EAAA;AAEnB,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACtB,MAAA,OAAO,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,KAAM,OAAA,CAAQ,GAAA,EAAK,CAAC,CAAC,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AAAA,IACrE;AAEA,IAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC3B,MAAA,OAAO,MAAA,CAAO,QAAQ,KAAK,CAAA,CACtB,IAAI,CAAC,CAAC,SAAA,EAAW,WAAW,CAAA,KAAM;AAC/B,QAAA,MAAM,YAAA,GAAe,QAAA,CAAS,SAAS,CAAA,KAAM,MAAA;AAK7C,QAAA,MAAM,OAAA,GAAU,QAAQ,MAAA,GAClB,SAAA,GACC,eAAe,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA,GAAK,GAAA;AAE9C,QAAA,OAAO,OAAA,CAAQ,SAAS,WAAW,CAAA;AAAA,MACvC,CAAC,CAAA,CACA,IAAA,CAAK,GAAG,CAAA;AAAA,IACjB;AAGA,IAAA,MAAM,cAAA,GAAiB,IAClB,KAAA,CAAM,GAAG,EACT,GAAA,CAAI,CAAC,SAAU,IAAA,KAAS,MAAA,GAAS,OAAQ,QAAA,CAAS,IAAI,KAAK,IAAM,CAAA,CACjE,OAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEb,IAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC3B,MAAA,OAAO,KAAA,CACF,MAAM,UAAU,CAAA,CAChB,OAAO,OAAO,CAAA,CACd,IAAI,CAAC,GAAA,KAAS,CAAC,cAAA,GAAiB,GAAA,GAAM,GAAG,cAAc,CAAA,CAAA,EAAI,GAAG,CAAA,CAAG,CAAA,CACjE,KAAK,GAAG,CAAA;AAAA,IACjB;AACA,IAAA,OAAO,EAAA;AAAA,EACX,CAAA;AAEA,EAAA,OAAO,IAAI,MAAA,KAAkB;AACzB,IAAA,MAAM,SAAA,GAAY,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,KAAU;AACpC,MAAA,IAAI,KAAA,KAAU,QAAQ,OAAO,KAAA,KAAU,YAAY,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACtE,QAAA,OAAO,MAAA,CAAO,QAAQ,KAAK,CAAA,CACtB,IAAI,CAAC,CAAC,CAAA,EAAG,CAAC,CAAA,KAAM;AACb,UAAA,IAAI,CAAA,KAAM,MAAM,OAAO,CAAA;AAGvB,UAAA,MAAM,YAAA,GAAe,QAAA,CAAS,CAAC,CAAA,KAAM,MAAA;AACrC,UAAA,OAAO,OAAA,CAAQ,YAAA,GAAe,CAAA,GAAI,MAAA,EAAQ,CAAC,CAAA;AAAA,QAC/C,CAAC,CAAA,CACA,IAAA,CAAK,GAAG,CAAA;AAAA,MACjB;AACA,MAAA,OAAO,KAAA;AAAA,IACX,CAAC,CAAA;AACD,IAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,SAAS,CAAC,CAAA;AAAA,EAClC,CAAA;AACJ","file":"index.js","sourcesContent":["import { twMerge } from 'tailwind-merge';\r\nimport clsx from 'clsx';\r\n\r\nexport function createCl<TPlugins extends Record<string, string>[]>(...plugins: TPlugins) {\r\n const registry: Record<string, string> = Object.assign({}, ...plugins);\r\n\r\n const process = (key: string, value: any): string => {\r\n if (!value) return '';\r\n\r\n if (Array.isArray(value)) {\r\n return value.map((v) => process(key, v)).filter(Boolean).join(' ');\r\n }\r\n\r\n if (typeof value === 'object') {\r\n return Object.entries(value)\r\n .map(([nestedKey, nestedValue]) => {\r\n const isRegistered = registry[nestedKey] !== undefined;\r\n \r\n // Si el padre es 'base', el hijo toma su lugar.\r\n // Si el hijo está registrado, se concatena.\r\n // Si no, heredamos el padre para mantener la transparencia.\r\n const nextKey = key === 'base' \r\n ? nestedKey \r\n : (isRegistered ? `${key}:${nestedKey}` : key);\r\n\r\n return process(nextKey, nestedValue);\r\n })\r\n .join(' ');\r\n }\r\n\r\n // RESOLUCIÓN: Solo permitimos partes que existan en el registry\r\n const resolvedPrefix = key\r\n .split(':')\r\n .map((part) => (part === 'base' ? null : (registry[part] || null)))\r\n .filter(Boolean)\r\n .join(':');\r\n\r\n if (typeof value === 'string') {\r\n return value\r\n .split(/[,\\s\\n]+/)\r\n .filter(Boolean)\r\n .map((cls) => (!resolvedPrefix ? cls : `${resolvedPrefix}:${cls}`))\r\n .join(' ');\r\n }\r\n return '';\r\n };\r\n\r\n return (...inputs: any[]) => {\r\n const processed = inputs.map((input) => {\r\n if (input !== null && typeof input === 'object' && !Array.isArray(input)) {\r\n return Object.entries(input)\r\n .map(([k, v]) => {\r\n if (v === true) return k;\r\n // SI LA LLAVE NO ESTÁ REGISTRADA (ej: 'variants'), \r\n // entramos como 'base' para que sea invisible.\r\n const isRegistered = registry[k] !== undefined;\r\n return process(isRegistered ? k : 'base', v);\r\n })\r\n .join(' ');\r\n }\r\n return input;\r\n });\r\n return twMerge(clsx(processed));\r\n };\r\n}\r\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;AAGO,SAAS,YAAuD,OAAA,EAAmB;AACtF,EAAA,MAAM,WAAmC,MAAA,CAAO,MAAA,CAAO,EAAC,EAAG,GAAG,OAAO,CAAA;AAErE,EAAA,MAAM,OAAA,GAAU,CAAC,GAAA,EAAa,KAAA,KAAuB;AACjD,IAAA,IAAI,CAAC,OAAO,OAAO,EAAA;AAEnB,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACtB,MAAA,OAAO,KAAA,CACF,GAAA,CAAI,CAAC,CAAA,KAAM,OAAA,CAAQ,GAAA,EAAK,CAAC,CAAC,CAAA,CAC1B,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAAA,IACjB;AAEA,IAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC3B,MAAA,OAAO,MAAA,CAAO,QAAQ,KAAK,CAAA,CACtB,IAAI,CAAC,CAAC,SAAA,EAAW,WAAW,CAAA,KAAM;AAC/B,QAAA,MAAM,YAAA,GAAe,QAAA,CAAS,SAAS,CAAA,KAAM,MAAA;AAG7C,QAAA,MAAM,OAAA,GAAU,eAAgB,GAAA,GAAM,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,SAAS,KAAK,SAAA,GAAa,GAAA;AAE3E,QAAA,OAAO,OAAA,CAAQ,SAAS,WAAW,CAAA;AAAA,MACvC,CAAC,CAAA,CACA,IAAA,CAAK,GAAG,CAAA;AAAA,IACjB;AAGA,IAAA,MAAM,iBAAiB,GAAA,CAClB,KAAA,CAAM,GAAG,CAAA,CACT,IAAI,CAAC,IAAA,KAAS,QAAA,CAAS,IAAI,KAAK,IAAI,CAAA,CACpC,OAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEb,IAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC3B,MAAA,OAAO,KAAA,CACF,MAAM,UAAU,CAAA,CAChB,OAAO,OAAO,CAAA,CACd,IAAI,CAAC,GAAA,KAAS,CAAC,cAAA,GAAiB,GAAA,GAAM,GAAG,cAAc,CAAA,CAAA,EAAI,GAAG,CAAA,CAAG,CAAA,CACjE,KAAK,GAAG,CAAA;AAAA,IACjB;AACA,IAAA,OAAO,EAAA;AAAA,EACX,CAAA;AAEA,EAAA,OAAO,IAAI,MAAA,KAAkB;AACzB,IAAA,MAAM,SAAA,GAAY,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,KAAU;AACpC,MAAA,IAAI,KAAA,KAAU,QAAQ,OAAO,KAAA,KAAU,YAAY,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACtE,QAAA,OAAO,MAAA,CAAO,QAAQ,KAAK,CAAA,CACtB,IAAI,CAAC,CAAC,CAAA,EAAG,CAAC,CAAA,KAAM;AACb,UAAA,IAAI,CAAA,KAAM,MAAM,OAAO,CAAA;AAEvB,UAAA,OAAO,QAAQ,QAAA,CAAS,CAAC,CAAA,GAAI,CAAA,GAAI,IAAI,CAAC,CAAA;AAAA,QAC1C,CAAC,CAAA,CACA,IAAA,CAAK,GAAG,CAAA;AAAA,MACjB;AACA,MAAA,OAAO,KAAA;AAAA,IACX,CAAC,CAAA;AACD,IAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,SAAS,CAAC,CAAA;AAAA,EAClC,CAAA;AACJ","file":"index.js","sourcesContent":["import { twMerge } from 'tailwind-merge';\r\nimport clsx from 'clsx';\r\n\r\nexport function createCl<TPlugins extends Record<string, string>[]>(...plugins: TPlugins) {\r\n const registry: Record<string, string> = Object.assign({}, ...plugins);\r\n\r\n const process = (key: string, value: any): string => {\r\n if (!value) return '';\r\n\r\n if (Array.isArray(value)) {\r\n return value\r\n .map((v) => process(key, v))\r\n .filter(Boolean)\r\n .join(' ');\r\n }\r\n\r\n if (typeof value === 'object') {\r\n return Object.entries(value)\r\n .map(([nestedKey, nestedValue]) => {\r\n const isRegistered = registry[nestedKey] !== undefined;\r\n // Si el hijo está registrado, añadimos al prefijo.\r\n // Si no, mantenemos el prefijo actual (transparencia).\r\n const nextKey = isRegistered ? (key ? `${key}:${nestedKey}` : nestedKey) : key;\r\n\r\n return process(nextKey, nestedValue);\r\n })\r\n .join(' ');\r\n }\r\n\r\n // RESOLUCIÓN: Solo lo que esté en el registro se convierte en prefijo.\r\n const resolvedPrefix = key\r\n .split(':')\r\n .map((part) => registry[part] || null)\r\n .filter(Boolean)\r\n .join(':');\r\n\r\n if (typeof value === 'string') {\r\n return value\r\n .split(/[,\\s\\n]+/)\r\n .filter(Boolean)\r\n .map((cls) => (!resolvedPrefix ? cls : `${resolvedPrefix}:${cls}`))\r\n .join(' ');\r\n }\r\n return '';\r\n };\r\n\r\n return (...inputs: any[]) => {\r\n const processed = inputs.map((input) => {\r\n if (input !== null && typeof input === 'object' && !Array.isArray(input)) {\r\n return Object.entries(input)\r\n .map(([k, v]) => {\r\n if (v === true) return k;\r\n // Si la llave raíz no está registrada, empezamos proceso con key vacía\r\n return process(registry[k] ? k : '', v);\r\n })\r\n .join(' ');\r\n }\r\n return input;\r\n });\r\n return twMerge(clsx(processed));\r\n };\r\n}\r\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clases",
3
- "version": "1.1.3",
3
+ "version": "1.1.4",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
package/src/index.ts CHANGED
@@ -8,30 +8,29 @@ export function createCl<TPlugins extends Record<string, string>[]>(...plugins:
8
8
  if (!value) return '';
9
9
 
10
10
  if (Array.isArray(value)) {
11
- return value.map((v) => process(key, v)).filter(Boolean).join(' ');
11
+ return value
12
+ .map((v) => process(key, v))
13
+ .filter(Boolean)
14
+ .join(' ');
12
15
  }
13
16
 
14
17
  if (typeof value === 'object') {
15
18
  return Object.entries(value)
16
19
  .map(([nestedKey, nestedValue]) => {
17
20
  const isRegistered = registry[nestedKey] !== undefined;
18
-
19
- // Si el padre es 'base', el hijo toma su lugar.
20
- // Si el hijo está registrado, se concatena.
21
- // Si no, heredamos el padre para mantener la transparencia.
22
- const nextKey = key === 'base'
23
- ? nestedKey
24
- : (isRegistered ? `${key}:${nestedKey}` : key);
21
+ // Si el hijo está registrado, añadimos al prefijo.
22
+ // Si no, mantenemos el prefijo actual (transparencia).
23
+ const nextKey = isRegistered ? (key ? `${key}:${nestedKey}` : nestedKey) : key;
25
24
 
26
25
  return process(nextKey, nestedValue);
27
26
  })
28
27
  .join(' ');
29
28
  }
30
29
 
31
- // RESOLUCIÓN: Solo permitimos partes que existan en el registry
30
+ // RESOLUCIÓN: Solo lo que esté en el registro se convierte en prefijo.
32
31
  const resolvedPrefix = key
33
32
  .split(':')
34
- .map((part) => (part === 'base' ? null : (registry[part] || null)))
33
+ .map((part) => registry[part] || null)
35
34
  .filter(Boolean)
36
35
  .join(':');
37
36
 
@@ -51,10 +50,8 @@ export function createCl<TPlugins extends Record<string, string>[]>(...plugins:
51
50
  return Object.entries(input)
52
51
  .map(([k, v]) => {
53
52
  if (v === true) return k;
54
- // SI LA LLAVE NO ESTÁ REGISTRADA (ej: 'variants'),
55
- // entramos como 'base' para que sea invisible.
56
- const isRegistered = registry[k] !== undefined;
57
- return process(isRegistered ? k : 'base', v);
53
+ // Si la llave raíz no está registrada, empezamos proceso con key vacía
54
+ return process(registry[k] ? k : '', v);
58
55
  })
59
56
  .join(' ');
60
57
  }