// // resources/js/form-stepper.js
// export function formStepper(totalSteps = 4, labels = []) {
//   return {
//     step: 1,
//     total: totalSteps,
//     labels: labels.length ? labels : Array.from({ length: totalSteps }, (_, i) => `Paso ${i+1}`),

//     validateSection(sectionEl) {
//       const fields = sectionEl.querySelectorAll('input, select, textarea');
//       for (const el of fields) {
//         el.classList.remove('ring-2','ring-red-400');
//         if (!el.checkValidity()) {
//           el.reportValidity();
//           el.classList.add('ring-2','ring-red-400');
//           el.focus();
//           return false;
//         }
//       }
//       return true;
//     },

//     // Valida sin mostrar mensajes (para pintar el stepper)
//     validateSilent(sectionEl) {
//       const fields = sectionEl.querySelectorAll('input, select, textarea');
//       for (const el of fields) {
//         if (!el.checkValidity()) return false;
//       }
//       return true;
//     },

//     sectionValid(i) {
//       const ref = this.$refs['step' + i];
//       if (!ref) return false;
//       return this.validateSilent(ref);
//     },

//     next() {
//       const current = this.$refs['step' + this.step];
//       if (!this.validateSection(current)) return;
//       if (this.step < this.total) this.step++;
//     },

//     back() {
//       if (this.step > 1) this.step--;
//     },

//     // Ir a un paso por clic, solo si todos los previos son válidos
//     goTo(i) {
//       for (let k = 1; k < i; k++) {
//         if (!this.sectionValid(k)) {
//           this.step = k;
//           // Muestra qué falta en el primero inválido
//           this.validateSection(this.$refs['step' + k]);
//           return;
//         }
//       }
//       this.step = i;
//     },

//     onSubmit() {
//       for (let i = 1; i <= this.total; i++) {
//         const section = this.$refs['step' + i];
//         if (!this.validateSection(section)) {
//           this.step = i;
//           return;
//         }
//       }
//       this.$refs.form.submit();
//     },
//   };
// }
