@bailaya/react 1.0.38 → 1.0.40

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/README.md CHANGED
@@ -1,168 +1,168 @@
1
- # @bailaya/react
2
-
3
- > A React component library and hooks for the BailaYa public API
4
-
5
- ## Overview
6
-
7
- `@bailaya/react` builds on top of **@bailaya/core** to provide:
8
-
9
- * A **`BailayaProvider`** + **`useBailayaClient`** context
10
- * React **hooks** for fetching all core data (with `loading`, `error`, `data`, and `refetch`)
11
- * **Components** with sensible Tailwind defaults (and full styling slots)
12
- * Full TypeScript support, including localized text & date formatting
13
-
14
- > Works **with or without Tailwind**. If you don’t use Tailwind, just override the class props (or use the render props) to apply your own styling.
15
-
16
- ## Features
17
-
18
- * **Context + client** (`BailayaProvider` + `useBailayaClient`)
19
- * **Hooks** (all return `{ data, error, loading, refetch }`)
20
-
21
- * `useStudioProfile(overrideId?)`
22
- * `useUserProfile(userId)`
23
- * `useInstructors(overrideId?)`
24
- * `useClasses(from?, overrideId?)`
25
- * `useClassesByType(typeName, from?, overrideId?)`
26
- * `useEvents(from?, overrideId?)`
27
- * **Components** (all props overridable)
28
-
29
- * `<StudioProfileCard />`
30
- * `<UserProfileCard />`
31
- * `<InstructorList />`
32
- * `<ClassSchedule />`
33
- * `<ClassScheduleByType />`
34
- * `<EventSchedule />`
35
- * `<StudioDescription />`
36
-
37
- ## Installation
38
-
39
- ```bash
40
- npm install @bailaya/react
41
- ```
42
-
43
- or with Yarn:
44
-
45
- ```bash
46
- yarn add @bailaya/react
47
- ```
48
-
49
- > **Peer Dependencies**
50
- >
51
- > * `"react": ">=17"`
52
- > * `"react-dom": ">=17"`
53
-
54
- ---
55
-
56
- ## Quick Start
57
-
58
- First, wrap your app with **BailayaProvider**:
59
-
60
- ```tsx
61
- // App.tsx
62
- import React from "react";
63
- import { BailayaProvider } from "@bailaya/react";
64
-
65
- export default function App() {
66
- return (
67
- <BailayaProvider config={{ studioId: "YOUR_STUDIO_ID" }}>
68
- {/* ...your app */}
69
- </BailayaProvider>
70
- );
71
- }
72
- ```
73
-
74
- ### Using a Hook
75
-
76
- ```tsx
77
- import React from "react";
78
- import { useInstructors } from "@bailaya/react";
79
-
80
- export function TeamSection() {
81
- const { data: instructors, loading, error, refetch } = useInstructors();
82
-
83
- if (loading) return <p>Loading...</p>;
84
- if (error) return <p>Error: {error.message}</p>;
85
-
86
- return (
87
- <>
88
- <button onClick={refetch}>Refresh</button>
89
- <ul>
90
- {instructors?.map((i) => (
91
- <li key={i.id}>{i.name} {i.lastname}</li>
92
- ))}
93
- </ul>
94
- </>
95
- );
96
- }
97
- ```
98
-
99
- ### Using a Component
100
-
101
- ```tsx
102
- import React from "react";
103
- import { StudioProfileCard } from "@bailaya/react";
104
-
105
- export function Dashboard() {
106
- return (
107
- <div className="max-w-md mx-auto">
108
- <StudioProfileCard locale="en" />
109
- </div>
110
- );
111
- }
112
- ```
113
-
114
- ---
115
-
116
- ## API Reference
117
-
118
- ### `<BailayaProvider config>`
119
-
120
- Provides `useBailayaClient()` context.
121
-
122
- * `config.baseUrl?: string` – override default API URL
123
- * `config.studioId?: string` – default studio ID
124
-
125
- ### Hooks
126
-
127
- All hooks return:
128
-
129
- ```ts
130
- {
131
- data: T | null;
132
- error: Error | null;
133
- loading: boolean;
134
- refetch: () => Promise<void>;
135
- }
136
- ```
137
-
138
- | Hook | Description |
139
- |--------------------------------------------------|--------------------------------------------------------------|
140
- | `useStudioProfile(overrideId?)` | Fetch a studio’s profile. |
141
- | `useUserProfile(userId)` | Fetch a user’s profile / bio. |
142
- | `useInstructors(overrideId?)` | Fetch list of active instructors (owner, admin, instructor). |
143
- | `useClasses(from?, overrideId?)` | Fetch next 7 days of classes (all types). |
144
- | `useClassesByType(typeName, from?, overrideId?)` | Fetch next 7 days of classes filtered by `typeName`. |
145
- | `useEvents(from?, overrideId?)` | Fetch next 7 days of events. |
146
-
147
- ### Components
148
-
149
- All components share:
150
-
151
- * **Override props** for every styling slot
152
- * **`locale`** (where relevant)
153
- * **`labels`** object for custom text (e.g. instructor or business-hours labels)
154
- * **`renderItem`** for full JSX override
155
-
156
- | Component | Props |
157
- |---------------------------| --------------------------------------------------------------------------------------------------------------------------------- |
158
- | `<StudioProfileCard />` | `overrideId?`, `locale?`, `labels?`, `className?`, `nameClassName?`, `descriptionClassName?`, `labelClassName?`, `renderProfile?` |
159
- | `<UserProfileCard />` | `userId`, `locale?`, `labels?`, `className?`, `nameClassName?`, `bioClassName?`, `renderProfile?` |
160
- | `<InstructorList />` | `overrideId?`, `renderItem?`, plus styling slots: `className?`, `itemClassName?`, `imageWrapperClassName?`, etc. |
161
- | `<ClassSchedule />` | `from?`, `overrideId?`, `locale?`, `labels?`, `renderItem?`, plus slots: `className?`, `itemClassName?`, etc. |
162
- | `<ClassScheduleByType />` | `typeName`, `from?`, `overrideId?`, `locale?`, `labels?`, `renderItem?`, plus same styling slots as `<ClassSchedule />`. |
163
- | `<EventSchedule />` | `from?`, `overrideId?`, `locale?`, `labels?`, `renderItem?`, plus slots: `className?`, `itemClassName?`, etc. |
164
- | `<StudioDescription />` | `overrideId?`, `locale?`, `render?`, plus styling slots: `className?`, `paragraphClassName?` |
165
-
166
- ## License
167
-
168
- ISC
1
+ # @bailaya/react
2
+
3
+ > A React component library and hooks for the BailaYa public API
4
+
5
+ ## Overview
6
+
7
+ `@bailaya/react` builds on top of **@bailaya/core** to provide:
8
+
9
+ * A **`BailayaProvider`** + **`useBailayaClient`** context
10
+ * React **hooks** for fetching all core data (with `loading`, `error`, `data`, and `refetch`)
11
+ * **Components** with sensible Tailwind defaults (and full styling slots)
12
+ * Full TypeScript support, including localized text & date formatting
13
+
14
+ > Works **with or without Tailwind**. If you don’t use Tailwind, just override the class props (or use the render props) to apply your own styling.
15
+
16
+ ## Features
17
+
18
+ * **Context + client** (`BailayaProvider` + `useBailayaClient`)
19
+ * **Hooks** (all return `{ data, error, loading, refetch }`)
20
+
21
+ * `useStudioProfile(overrideId?)`
22
+ * `useUserProfile(userId)`
23
+ * `useInstructors(overrideId?)`
24
+ * `useClasses(from?, overrideId?)`
25
+ * `useClassesByType(typeName, from?, overrideId?)`
26
+ * `useEvents(from?, overrideId?)`
27
+ * **Components** (all props overridable)
28
+
29
+ * `<StudioProfileCard />`
30
+ * `<UserProfileCard />`
31
+ * `<InstructorList />`
32
+ * `<ClassSchedule />`
33
+ * `<ClassScheduleByType />`
34
+ * `<EventSchedule />`
35
+ * `<StudioDescription />`
36
+
37
+ ## Installation
38
+
39
+ ```bash
40
+ npm install @bailaya/react
41
+ ```
42
+
43
+ or with Yarn:
44
+
45
+ ```bash
46
+ yarn add @bailaya/react
47
+ ```
48
+
49
+ > **Peer Dependencies**
50
+ >
51
+ > * `"react": ">=17"`
52
+ > * `"react-dom": ">=17"`
53
+
54
+ ---
55
+
56
+ ## Quick Start
57
+
58
+ First, wrap your app with **BailayaProvider**:
59
+
60
+ ```tsx
61
+ // App.tsx
62
+ import React from "react";
63
+ import { BailayaProvider } from "@bailaya/react";
64
+
65
+ export default function App() {
66
+ return (
67
+ <BailayaProvider config={{ studioId: "YOUR_STUDIO_ID" }}>
68
+ {/* ...your app */}
69
+ </BailayaProvider>
70
+ );
71
+ }
72
+ ```
73
+
74
+ ### Using a Hook
75
+
76
+ ```tsx
77
+ import React from "react";
78
+ import { useInstructors } from "@bailaya/react";
79
+
80
+ export function TeamSection() {
81
+ const { data: instructors, loading, error, refetch } = useInstructors();
82
+
83
+ if (loading) return <p>Loading...</p>;
84
+ if (error) return <p>Error: {error.message}</p>;
85
+
86
+ return (
87
+ <>
88
+ <button onClick={refetch}>Refresh</button>
89
+ <ul>
90
+ {instructors?.map((i) => (
91
+ <li key={i.id}>{i.name} {i.lastname}</li>
92
+ ))}
93
+ </ul>
94
+ </>
95
+ );
96
+ }
97
+ ```
98
+
99
+ ### Using a Component
100
+
101
+ ```tsx
102
+ import React from "react";
103
+ import { StudioProfileCard } from "@bailaya/react";
104
+
105
+ export function Dashboard() {
106
+ return (
107
+ <div className="max-w-md mx-auto">
108
+ <StudioProfileCard locale="en" />
109
+ </div>
110
+ );
111
+ }
112
+ ```
113
+
114
+ ---
115
+
116
+ ## API Reference
117
+
118
+ ### `<BailayaProvider config>`
119
+
120
+ Provides `useBailayaClient()` context.
121
+
122
+ * `config.baseUrl?: string` – override default API URL
123
+ * `config.studioId?: string` – default studio ID
124
+
125
+ ### Hooks
126
+
127
+ All hooks return:
128
+
129
+ ```ts
130
+ {
131
+ data: T | null;
132
+ error: Error | null;
133
+ loading: boolean;
134
+ refetch: () => Promise<void>;
135
+ }
136
+ ```
137
+
138
+ | Hook | Description |
139
+ |--------------------------------------------------|--------------------------------------------------------------|
140
+ | `useStudioProfile(overrideId?)` | Fetch a studio’s profile. |
141
+ | `useUserProfile(userId)` | Fetch a user’s profile / bio. |
142
+ | `useInstructors(overrideId?)` | Fetch list of active instructors (owner, admin, instructor). |
143
+ | `useClasses(from?, overrideId?)` | Fetch next 7 days of classes (all types). |
144
+ | `useClassesByType(typeName, from?, overrideId?)` | Fetch next 7 days of classes filtered by `typeName`. |
145
+ | `useEvents(from?, overrideId?)` | Fetch next 7 days of events. |
146
+
147
+ ### Components
148
+
149
+ All components share:
150
+
151
+ * **Override props** for every styling slot
152
+ * **`locale`** (where relevant)
153
+ * **`labels`** object for custom text (e.g. instructor or business-hours labels)
154
+ * **`renderItem`** for full JSX override
155
+
156
+ | Component | Props |
157
+ |---------------------------| --------------------------------------------------------------------------------------------------------------------------------- |
158
+ | `<StudioProfileCard />` | `overrideId?`, `locale?`, `labels?`, `className?`, `nameClassName?`, `descriptionClassName?`, `labelClassName?`, `renderProfile?` |
159
+ | `<UserProfileCard />` | `userId`, `locale?`, `labels?`, `className?`, `nameClassName?`, `bioClassName?`, `renderProfile?` |
160
+ | `<InstructorList />` | `overrideId?`, `renderItem?`, plus styling slots: `className?`, `itemClassName?`, `imageWrapperClassName?`, etc. |
161
+ | `<ClassSchedule />` | `from?`, `overrideId?`, `locale?`, `labels?`, `renderItem?`, plus slots: `className?`, `itemClassName?`, etc. |
162
+ | `<ClassScheduleByType />` | `typeName`, `from?`, `overrideId?`, `locale?`, `labels?`, `renderItem?`, plus same styling slots as `<ClassSchedule />`. |
163
+ | `<EventSchedule />` | `from?`, `overrideId?`, `locale?`, `labels?`, `renderItem?`, plus slots: `className?`, `itemClassName?`, etc. |
164
+ | `<StudioDescription />` | `overrideId?`, `locale?`, `render?`, plus styling slots: `className?`, `paragraphClassName?` |
165
+
166
+ ## License
167
+
168
+ ISC
@@ -1 +1 @@
1
- {"version":3,"file":"ClassSchedule.d.ts","sourceRoot":"","sources":["../../src/components/ClassSchedule.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAIjD,MAAM,WAAW,kBAAkB;IAC/B,kEAAkE;IAClE,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6FAA6F;IAC7F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,kDAAkD;IAClD,MAAM,CAAC,EAAE;QACL,oEAAoE;QACpE,UAAU,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IAEF,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6CAA6C;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4BAA4B;IAC5B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,0CAA0C;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yBAAyB;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iCAAiC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kCAAkC;IAClC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,8BAA8B;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,8CAA8C;IAC9C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qBAAqB;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,oDAAoD;IACpD,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,KAAK,MAAM,CAAC;IAE1D;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;KAC7B,KAAK,KAAK,CAAC,SAAS,CAAC;IAEtB,iDAAiD;IACjD,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,KAAK,CAAC,SAAS,CAAC;CACtD;AAED;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAwHtD,CAAC"}
1
+ {"version":3,"file":"ClassSchedule.d.ts","sourceRoot":"","sources":["../../src/components/ClassSchedule.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAKjD,MAAM,WAAW,kBAAkB;IAC/B,kEAAkE;IAClE,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6FAA6F;IAC7F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,kDAAkD;IAClD,MAAM,CAAC,EAAE;QACL,oEAAoE;QACpE,UAAU,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IAEF,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6CAA6C;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4BAA4B;IAC5B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,0CAA0C;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yBAAyB;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iCAAiC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kCAAkC;IAClC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,8BAA8B;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,8CAA8C;IAC9C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qBAAqB;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,oDAAoD;IACpD,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,KAAK,MAAM,CAAC;IAE1D;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;KAC7B,KAAK,KAAK,CAAC,SAAS,CAAC;IAEtB,iDAAiD;IACjD,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,KAAK,CAAC,SAAS,CAAC;CACtD;AAED;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAkJtD,CAAC"}
@@ -1,14 +1,45 @@
1
1
  "use strict";
2
2
  "use client";
3
- var __importDefault = (this && this.__importDefault) || function (mod) {
4
- return (mod && mod.__esModule) ? mod : { "default": mod };
5
- };
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
6
36
  Object.defineProperty(exports, "__esModule", { value: true });
7
37
  exports.ClassSchedule = void 0;
8
- const react_1 = __importDefault(require("react"));
38
+ const react_1 = __importStar(require("react"));
9
39
  const useClasses_1 = require("../hooks/useClasses");
10
40
  const LoadingIcon_1 = require("./ui/LoadingIcon");
11
41
  const utils_1 = require("../lib/utils");
42
+ const useStudioProfile_1 = require("../hooks/useStudioProfile");
12
43
  /**
13
44
  * Displays an upcoming-class schedule for a studio:
14
45
  * - name + level
@@ -19,12 +50,17 @@ const utils_1 = require("../lib/utils");
19
50
  const ClassSchedule = ({ from, overrideId, locale, currency, labels = {}, className = "by-scheduleList", itemClassName = "by-scheduleItem", rowClassName = "by-scheduleRow", imageClassName = "by-scheduleImage", imageWrapperClassName = "by-scheduleImageWrapper", leftClassName = "by-scheduleLeft", nameClassName = "by-scheduleName", levelClassName = "by-scheduleLevel", detailsClassName = "by-scheduleMeta", instructorClassName = "by-scheduleInstructor", rightClassName = "by-scheduleRight", priceClassName = "by-schedulePrice", buttonClassName = "by-btn by-btnBook", bookNowText = "Book This Class", bookBaseUrl = "https://www.bailaya.com/book/", hideBookButton = false, formatPrice, renderLink, renderItem, }) => {
20
51
  var _a;
21
52
  const { data: classes, loading, error } = (0, useClasses_1.useClasses)(from, overrideId);
22
- const weekdayFmt = new Intl.DateTimeFormat(locale !== null && locale !== void 0 ? locale : "en", { weekday: "long", timeZone: "UTC" });
23
- const dateFmt = new Intl.DateTimeFormat(locale !== null && locale !== void 0 ? locale : "en", {
53
+ const { data: studio } = (0, useStudioProfile_1.useStudioProfile)(overrideId);
54
+ const studioTz = (studio === null || studio === void 0 ? void 0 : studio.timezone) || "UTC";
55
+ const weekdayFmt = (0, react_1.useMemo)(() => new Intl.DateTimeFormat(locale !== null && locale !== void 0 ? locale : "en", {
56
+ weekday: "long",
57
+ timeZone: studioTz, // ✅ studio tz
58
+ }), [locale, studioTz]);
59
+ const dateFmt = (0, react_1.useMemo)(() => new Intl.DateTimeFormat(locale !== null && locale !== void 0 ? locale : "en", {
24
60
  month: "short",
25
61
  day: "numeric",
26
- timeZone: "UTC"
27
- });
62
+ timeZone: studioTz,
63
+ }), [locale, studioTz]);
28
64
  const instructorLabel = (_a = labels === null || labels === void 0 ? void 0 : labels.instructor) !== null && _a !== void 0 ? _a : "Instructor:";
29
65
  if (loading) {
30
66
  return (react_1.default.createElement("ul", { className: className },
@@ -74,7 +110,7 @@ const ClassSchedule = ({ from, overrideId, locale, currency, labels = {}, classN
74
110
  cls.instructor.name,
75
111
  cls.instructor.lastname ? ` ${cls.instructor.lastname}` : "")))),
76
112
  react_1.default.createElement("div", { className: rightClassName },
77
- Number.isFinite(cls.price) && (react_1.default.createElement("div", { className: priceClassName }, priceText)),
113
+ Number.isFinite(cls.price) && cls.price > 0.0 && (react_1.default.createElement("div", { className: priceClassName }, priceText)),
78
114
  !hideBookButton &&
79
115
  (renderLink ? (renderLink({
80
116
  href,
@@ -1 +1 @@
1
- {"version":3,"file":"ClassScheduleByType.d.ts","sourceRoot":"","sources":["../../src/components/ClassScheduleByType.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGjD,MAAM,WAAW,wBAAwB;IACrC,0DAA0D;IAC1D,QAAQ,EAAE,MAAM,CAAC;IAEjB,kEAAkE;IAClE,IAAI,CAAC,EAAE,IAAI,CAAC;IAEZ,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,6FAA6F;IAC7F,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,oBAAoB;IACpB,MAAM,CAAC,EAAE;QACL,oEAAoE;QACpE,UAAU,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IAEF,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6CAA6C;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4BAA4B;IAC5B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,0CAA0C;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yBAAyB;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yDAAyD;IACzD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kCAAkC;IAClC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,8BAA8B;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,8CAA8C;IAC9C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qBAAqB;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,oDAAoD;IACpD,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,oDAAoD;IACpD,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,KAAK,MAAM,CAAC;IAE1D;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;KAC7B,KAAK,KAAK,CAAC,SAAS,CAAC;IAEtB;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,KAAK,CAAC,SAAS,CAAC;CACtD;AAED;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CA4HlE,CAAC"}
1
+ {"version":3,"file":"ClassScheduleByType.d.ts","sourceRoot":"","sources":["../../src/components/ClassScheduleByType.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAIjD,MAAM,WAAW,wBAAwB;IACrC,0DAA0D;IAC1D,QAAQ,EAAE,MAAM,CAAC;IAEjB,kEAAkE;IAClE,IAAI,CAAC,EAAE,IAAI,CAAC;IAEZ,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,6FAA6F;IAC7F,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,oBAAoB;IACpB,MAAM,CAAC,EAAE;QACL,oEAAoE;QACpE,UAAU,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IAEF,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6CAA6C;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4BAA4B;IAC5B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,0CAA0C;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yBAAyB;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yDAAyD;IACzD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kCAAkC;IAClC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,8BAA8B;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,8CAA8C;IAC9C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qBAAqB;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,oDAAoD;IACpD,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,oDAAoD;IACpD,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,KAAK,MAAM,CAAC;IAE1D;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;KAC7B,KAAK,KAAK,CAAC,SAAS,CAAC;IAEtB;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,KAAK,CAAC,SAAS,CAAC;CACtD;AAED;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAwJlE,CAAC"}
@@ -1,13 +1,44 @@
1
1
  "use strict";
2
2
  "use client";
3
- var __importDefault = (this && this.__importDefault) || function (mod) {
4
- return (mod && mod.__esModule) ? mod : { "default": mod };
5
- };
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
6
36
  Object.defineProperty(exports, "__esModule", { value: true });
7
37
  exports.ClassScheduleByType = void 0;
8
- const react_1 = __importDefault(require("react"));
38
+ const react_1 = __importStar(require("react"));
9
39
  const useClassesByType_1 = require("../hooks/useClassesByType");
10
40
  const utils_1 = require("../lib/utils");
41
+ const useStudioProfile_1 = require("../hooks/useStudioProfile");
11
42
  /**
12
43
  * Displays a schedule of upcoming classes of a specific dance type:
13
44
  * - name + level
@@ -18,35 +49,36 @@ const utils_1 = require("../lib/utils");
18
49
  const ClassScheduleByType = ({ typeName, from, overrideId, locale, currency, labels = {}, className = "by-scheduleList", itemClassName = "by-scheduleItem", rowClassName = "by-scheduleRow", imageClassName = "by-scheduleImage", imageWrapperClassName = "by-scheduleImageWrapper", leftClassName = "by-scheduleLeft", nameClassName = "by-scheduleName", levelClassName = "by-scheduleLevel", detailsClassName = "by-scheduleMeta", instructorClassName = "by-scheduleInstructor", rightClassName = "by-scheduleRight", priceClassName = "by-schedulePrice", buttonClassName = "by-btn by-btnBook", bookNowText = "Book This Class", bookBaseUrl = "https://www.bailaya.com/book/", hideBookButton = false, formatPrice, renderLink, renderItem, }) => {
19
50
  var _a;
20
51
  const { data: classes, loading, error } = (0, useClassesByType_1.useClassesByType)(typeName, from, overrideId);
21
- const weekdayFmt = new Intl.DateTimeFormat(locale !== null && locale !== void 0 ? locale : "en", {
52
+ const { data: studio } = (0, useStudioProfile_1.useStudioProfile)(overrideId);
53
+ const studioTz = (studio === null || studio === void 0 ? void 0 : studio.timezone) || "UTC";
54
+ const weekdayFmt = (0, react_1.useMemo)(() => new Intl.DateTimeFormat(locale !== null && locale !== void 0 ? locale : "en", {
22
55
  weekday: "long",
23
- timeZone: "UTC",
24
- });
25
- const dateFmt = new Intl.DateTimeFormat(locale !== null && locale !== void 0 ? locale : "en", {
56
+ timeZone: studioTz,
57
+ }), [locale, studioTz]);
58
+ const dateFmt = (0, react_1.useMemo)(() => new Intl.DateTimeFormat(locale !== null && locale !== void 0 ? locale : "en", {
26
59
  month: "short",
27
60
  day: "numeric",
28
- timeZone: "UTC",
29
- });
61
+ timeZone: studioTz,
62
+ }), [locale, studioTz]);
30
63
  const instructorLabel = (_a = labels === null || labels === void 0 ? void 0 : labels.instructor) !== null && _a !== void 0 ? _a : "Instructor:";
31
64
  if (loading) {
32
- return react_1.default.createElement("ul", { className: className },
65
+ return (react_1.default.createElement("ul", { className: className },
33
66
  react_1.default.createElement("li", null,
34
67
  "Loading ",
35
68
  typeName,
36
- " classes..."));
69
+ " classes...")));
37
70
  }
38
71
  if (error) {
39
- return react_1.default.createElement("ul", { className: className },
72
+ return (react_1.default.createElement("ul", { className: className },
40
73
  react_1.default.createElement("li", null,
41
74
  "Error: ",
42
- error.message));
75
+ error.message)));
43
76
  }
44
77
  return (react_1.default.createElement("ul", { className: className }, classes === null || classes === void 0 ? void 0 : classes.map((cls) => {
45
78
  var _a;
46
- const dateObj = cls.date;
47
- const weekday = weekdayFmt.format(dateObj).charAt(0).toUpperCase() +
48
- weekdayFmt.format(dateObj).slice(1);
49
- const dateStr = dateFmt.format(dateObj);
79
+ const dayName = weekdayFmt.format(cls.date).charAt(0).toUpperCase() +
80
+ weekdayFmt.format(cls.date).slice(1);
81
+ const shortDate = dateFmt.format(cls.date);
50
82
  if (renderItem) {
51
83
  return react_1.default.createElement("li", { key: cls.id }, renderItem(cls));
52
84
  }
@@ -67,9 +99,9 @@ const ClassScheduleByType = ({ typeName, from, overrideId, locale, currency, lab
67
99
  (0, utils_1.localizeLevel)(cls.level, locale),
68
100
  ")")),
69
101
  react_1.default.createElement("div", { className: detailsClassName },
70
- weekday,
102
+ dayName,
71
103
  ", ",
72
- dateStr,
104
+ shortDate,
73
105
  " \u2014 ",
74
106
  cls.startTime,
75
107
  "\u2013",
@@ -79,11 +111,9 @@ const ClassScheduleByType = ({ typeName, from, overrideId, locale, currency, lab
79
111
  " ",
80
112
  react_1.default.createElement("strong", null,
81
113
  cls.instructor.name,
82
- cls.instructor.lastname
83
- ? ` ${cls.instructor.lastname}`
84
- : "")))),
114
+ cls.instructor.lastname ? ` ${cls.instructor.lastname}` : "")))),
85
115
  react_1.default.createElement("div", { className: rightClassName },
86
- Number.isFinite(cls.price) && (react_1.default.createElement("div", { className: priceClassName }, priceText)),
116
+ Number.isFinite(cls.price) && cls.price > 0.0 && (react_1.default.createElement("div", { className: priceClassName }, priceText)),
87
117
  !hideBookButton &&
88
118
  (renderLink ? (renderLink({
89
119
  href,
@@ -1 +1 @@
1
- {"version":3,"file":"EventSchedule.d.ts","sourceRoot":"","sources":["../../src/components/EventSchedule.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAIjD,MAAM,WAAW,kBAAkB;IAC/B,kEAAkE;IAClE,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6FAA6F;IAC7F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,4CAA4C;IAC5C,MAAM,CAAC,EAAE;QACL,8DAA8D;QAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IAEF,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6CAA6C;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4BAA4B;IAC5B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,0CAA0C;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yBAAyB;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iCAAiC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kCAAkC;IAClC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,wBAAwB;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,8CAA8C;IAC9C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qBAAqB;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,oDAAoD;IACpD,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,KAAK,MAAM,CAAC;IAE1D;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;KAC7B,KAAK,KAAK,CAAC,SAAS,CAAC;IAEtB,iDAAiD;IACjD,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,KAAK,CAAC,SAAS,CAAC;CACtD;AAED;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAyHtD,CAAC"}
1
+ {"version":3,"file":"EventSchedule.d.ts","sourceRoot":"","sources":["../../src/components/EventSchedule.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAKjD,MAAM,WAAW,kBAAkB;IAC/B,kEAAkE;IAClE,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6FAA6F;IAC7F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,4CAA4C;IAC5C,MAAM,CAAC,EAAE;QACL,8DAA8D;QAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IAEF,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6CAA6C;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4BAA4B;IAC5B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,0CAA0C;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yBAAyB;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iCAAiC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kCAAkC;IAClC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,wBAAwB;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,8CAA8C;IAC9C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qBAAqB;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,oDAAoD;IACpD,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,KAAK,MAAM,CAAC;IAE1D;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;KAC7B,KAAK,KAAK,CAAC,SAAS,CAAC;IAEtB,iDAAiD;IACjD,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,KAAK,CAAC,SAAS,CAAC;CACtD;AAED;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAsJtD,CAAC"}
@@ -1,14 +1,45 @@
1
1
  "use strict";
2
2
  "use client";
3
- var __importDefault = (this && this.__importDefault) || function (mod) {
4
- return (mod && mod.__esModule) ? mod : { "default": mod };
5
- };
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
6
36
  Object.defineProperty(exports, "__esModule", { value: true });
7
37
  exports.EventSchedule = void 0;
8
- const react_1 = __importDefault(require("react"));
38
+ const react_1 = __importStar(require("react"));
9
39
  const useEvents_1 = require("../hooks/useEvents");
10
40
  const LoadingIcon_1 = require("./ui/LoadingIcon");
11
41
  const utils_1 = require("../lib/utils");
42
+ const useStudioProfile_1 = require("../hooks/useStudioProfile");
12
43
  /**
13
44
  * Displays an upcoming-event schedule for a studio:
14
45
  * - name + level
@@ -16,17 +47,22 @@ const utils_1 = require("../lib/utils");
16
47
  * - optional instructor
17
48
  * - RIGHT: price + "Book This Event" CTA
18
49
  */
19
- const EventSchedule = ({ from, overrideId, locale, currency, labels = {}, className = "by-scheduleList", itemClassName = "by-scheduleItem", rowClassName = "by-scheduleRow", imageClassName = "by-scheduleImage", imageWrapperClassName = "by-scheduleImageWrapper", leftClassName = "by-scheduleLeft", nameClassName = "by-scheduleName", levelClassName = "by-scheduleLevel", detailsClassName = "by-scheduleMeta", hostClassName = "by-scheduleInstructor", rightClassName = "by-scheduleRight", priceClassName = "by-schedulePrice", buttonClassName = "by-btn by-btnBook", bookNowText = "Book This Class", bookBaseUrl = "https://www.bailaya.com/book/", hideBookButton = false, formatPrice, renderLink, renderItem, }) => {
50
+ const EventSchedule = ({ from, overrideId, locale, currency, labels = {}, className = "by-scheduleList", itemClassName = "by-scheduleItem", rowClassName = "by-scheduleRow", imageClassName = "by-scheduleImage", imageWrapperClassName = "by-scheduleImageWrapper", leftClassName = "by-scheduleLeft", nameClassName = "by-scheduleName", levelClassName = "by-scheduleLevel", detailsClassName = "by-scheduleMeta", hostClassName = "by-scheduleInstructor", rightClassName = "by-scheduleRight", priceClassName = "by-schedulePrice", buttonClassName = "by-btn by-btnBook", bookNowText = "Book This Event", bookBaseUrl = "https://www.bailaya.com/book/", hideBookButton = false, formatPrice, renderLink, renderItem, }) => {
20
51
  var _a;
21
52
  const { data: events, loading, error } = (0, useEvents_1.useEvents)(from, overrideId);
22
- const weekdayFmt = new Intl.DateTimeFormat(locale !== null && locale !== void 0 ? locale : "en", { weekday: "long", timeZone: "UTC" });
23
- const dateFmt = new Intl.DateTimeFormat(locale !== null && locale !== void 0 ? locale : "en", {
53
+ const { data: studio } = (0, useStudioProfile_1.useStudioProfile)(overrideId);
54
+ const studioTz = (studio === null || studio === void 0 ? void 0 : studio.timezone) || "UTC";
55
+ const weekdayFmt = (0, react_1.useMemo)(() => new Intl.DateTimeFormat(locale !== null && locale !== void 0 ? locale : "en", {
56
+ weekday: "long",
57
+ timeZone: studioTz,
58
+ }), [locale, studioTz]);
59
+ const dateFmt = (0, react_1.useMemo)(() => new Intl.DateTimeFormat(locale !== null && locale !== void 0 ? locale : "en", {
24
60
  month: "short",
25
61
  day: "numeric",
26
- timeZone: "UTC",
27
- });
28
- const hostDefaultlabel = locale == "es" ? "Anfitrión:" : "Host:";
29
- const hostLabel = (_a = labels === null || labels === void 0 ? void 0 : labels.host) !== null && _a !== void 0 ? _a : hostDefaultlabel;
62
+ timeZone: studioTz,
63
+ }), [locale, studioTz]);
64
+ const hostDefaultLabel = locale === "es" ? "Anfitrión:" : "Host:";
65
+ const hostLabel = (_a = labels === null || labels === void 0 ? void 0 : labels.host) !== null && _a !== void 0 ? _a : hostDefaultLabel;
30
66
  if (loading) {
31
67
  return (react_1.default.createElement("ul", { className: className },
32
68
  react_1.default.createElement("li", null,
@@ -75,7 +111,7 @@ const EventSchedule = ({ from, overrideId, locale, currency, labels = {}, classN
75
111
  evt.host.name,
76
112
  evt.host.lastname ? ` ${evt.host.lastname}` : "")))),
77
113
  react_1.default.createElement("div", { className: rightClassName },
78
- Number.isFinite(evt.price) && (react_1.default.createElement("div", { className: priceClassName }, priceText)),
114
+ Number.isFinite(evt.price) && evt.price > 0.0 && (react_1.default.createElement("div", { className: priceClassName }, priceText)),
79
115
  !hideBookButton &&
80
116
  (renderLink ? (renderLink({
81
117
  href,
package/package.json CHANGED
@@ -1,39 +1,39 @@
1
- {
2
- "name": "@bailaya/react",
3
- "version": "1.0.38",
4
- "description": "A React component library for the BailaYa public API",
5
- "main": "dist/index.js",
6
- "types": "dist/index.d.ts",
7
- "exports": {
8
- ".": "./dist/index.js",
9
- "./styles.css": "./dist/styles.css"
10
- },
11
- "files": [
12
- "dist"
13
- ],
14
- "scripts": {
15
- "build": "tsc --build && npm run copy:css",
16
- "copy:css": "copyfiles -u 1 \"src/**/*.css\" dist",
17
- "test": "jest"
18
- },
19
- "peerDependencies": {
20
- "react": ">=17.0.0 <20.0.0",
21
- "react-dom": ">=17.0.0 <20.0.0"
22
- },
23
- "devDependencies": {
24
- "@types/jest": "^30.0.0",
25
- "@types/react": "^18.0.0",
26
- "@types/react-dom": "^18.0.0",
27
- "copyfiles": "^2.4.1",
28
- "jest": "^30.0.5",
29
- "react": "^18.2.0",
30
- "react-dom": "^18.2.0",
31
- "ts-jest": "^29.4.0",
32
- "typescript": "^5.8.3"
33
- },
34
- "dependencies": {
35
- "@bailaya/core": "^1.0.9",
36
- "lucide-react": "^0.536.0"
37
- },
38
- "license": "ISC"
39
- }
1
+ {
2
+ "name": "@bailaya/react",
3
+ "version": "1.0.40",
4
+ "description": "A React component library for the BailaYa public API",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "exports": {
8
+ ".": "./dist/index.js",
9
+ "./styles.css": "./dist/styles.css"
10
+ },
11
+ "files": [
12
+ "dist"
13
+ ],
14
+ "scripts": {
15
+ "build": "tsc --build && npm run copy:css",
16
+ "copy:css": "copyfiles -u 1 \"src/**/*.css\" dist",
17
+ "test": "jest"
18
+ },
19
+ "peerDependencies": {
20
+ "react": ">=17.0.0 <20.0.0",
21
+ "react-dom": ">=17.0.0 <20.0.0"
22
+ },
23
+ "devDependencies": {
24
+ "@types/jest": "^30.0.0",
25
+ "@types/react": "^18.0.0",
26
+ "@types/react-dom": "^18.0.0",
27
+ "copyfiles": "^2.4.1",
28
+ "jest": "^30.0.5",
29
+ "react": "^18.2.0",
30
+ "react-dom": "^18.2.0",
31
+ "ts-jest": "^29.4.0",
32
+ "typescript": "^5.8.3"
33
+ },
34
+ "dependencies": {
35
+ "@bailaya/core": "^1.0.10",
36
+ "lucide-react": "^0.536.0"
37
+ },
38
+ "license": "ISC"
39
+ }