Saltar al contenido principal

SDK de React

@bailaya/react proporciona hooks y componentes listos para renderizar para React 17+.

Instalación

npm install @bailaya/react @bailaya/core

Configuración

Envuelve tu aplicación (o el subárbol que necesita datos de BailaYa) con BailayaProvider:

import { BailayaProvider } from '@bailaya/react';

export default function App({ children }) {
return (
<BailayaProvider config={{ studioId: 'your-studio-id' }}>
{children}
</BailayaProvider>
);
}

Hooks

Todos los hooks devuelven { data, loading, error, refetch }.

HookDevuelve
useStudioProfile(overrideId?)StudioProfile
useInstructors(overrideId?)Instructor[]
useClasses(from?, overrideId?)StudioClass[]
useClassesByType(typeName, from?, overrideId?)StudioClass[]
useEvents(from?, overrideId?)StudioEvent[]
usePackages(overrideId?)StudioPackage[]
usePrivateLessonInstructors(overrideId?)PrivateLessonInstructor[]
useUserProfile(userId)UserProfile
import { useClasses } from '@bailaya/react';

function Schedule() {
const { data: classes, loading, error } = useClasses();
if (loading) return <p>Cargando…</p>;
if (error) return <p>{error.message}</p>;
return <ul>{classes?.map(c => <li key={c.id}>{c.name}</li>)}</ul>;
}

Componentes

Componentes integrados que obtienen datos y se renderizan por sí mismos.

ClassSchedule

<ClassSchedule
locale="en"
currency="USD"
bookNowText="Book"
bookBaseUrl="https://www.bailaya.com/book/"
hideBookButton={false}
/>

ClassScheduleByType

<ClassScheduleByType typeName="Salsa" locale="en" currency="MXN" />

EventSchedule

<EventSchedule locale="es" currency="MXN" />

InstructorList

<InstructorList locale="en" />

StudioProfileCard

<StudioProfileCard locale="en" />

StudioDescription

<StudioDescription locale="es" />

StudioTypesList / StudioTypesGrid

<StudioTypesList locale="en" hrefPrefix="/classes/" />
<StudioTypesGrid locale="en" showDescription={false} />

UserProfileCard

<UserProfileCard userId="user_abc" locale="en" />

PrivateLessonList

<PrivateLessonList
locale="en"
bookBaseUrl="https://www.bailaya.com/en/book/private-lesson/"
labels={{ book: 'Book Now', availability: 'Availability', pricing: 'Pricing', minutes: 'min' }}
/>

PackageList

<PackageList locale="en" buyBaseUrl="https://www.bailaya.com/packages/" />

Personalización

Cada componente acepta props de nombres de clases CSS (ej. className, itemClassName, nameClassName) para que puedas estilizarlos con cualquier framework CSS. Pasa renderItem para reemplazar completamente el diseño predeterminado por elemento.