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 }.
| Hook | Devuelve |
|---|---|
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.