// Convierte la nota de un item de pedido (opciones elegidas + nota libre, todo
// pegado con " · ") en grupos legibles para mostrarlos claros a quien recibe o
// cocina el pedido.
// Ej: "Elige tus proteínas (hasta 2): Carne, Pollo · Sin sal"
//  -> { grupos: [{ label: 'Proteínas', val: 'Carne, Pollo' }], libre: ['Sin sal'] }
//
// FUENTE CANONICA. El cerebrito lleva una copia identica en
// apps/cerebrito/src/comanda.ts (su exe no importa fuera de su src/); el test
// apps/cerebrito/test/test_copia_opciones.mjs revienta si las copias divergen.
export function parsearOpciones(nota: string | null | undefined): {
  grupos: { label: string; val: string }[];
  libre: string[];
} {
  const grupos: { label: string; val: string }[] = [];
  const libre: string[] = [];
  if (!nota) return { grupos, libre };
  for (const raw of nota.split('·')) {
    const p = raw.trim();
    if (!p) continue;
    const i = p.indexOf(':');
    if (i > 0) {
      let label = p
        .slice(0, i)
        .replace(/^elige\s+(tus?|tu)\s+/i, '')
        .replace(/\s*\([^)]*\)\s*$/, '')
        .trim();
      label = label.charAt(0).toUpperCase() + label.slice(1);
      grupos.push({ label, val: p.slice(i + 1).trim() });
    } else {
      libre.push(p);
    }
  }
  return { grupos, libre };
}
