@bailaya/react 1.0.9 → 1.0.11

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.
@@ -3,6 +3,8 @@ import type { Instructor } from '@bailaya/core';
3
3
  export interface InstructorListProps {
4
4
  /** Optional studio ID to override the default configured ID */
5
5
  overrideId?: string;
6
+ /** Locale code (e.g., "en", "es") for picking the description */
7
+ locale?: string;
6
8
  /** Root container wrapper */
7
9
  className?: string;
8
10
  /** Each instructor "card" wrapper */
@@ -15,7 +17,7 @@ export interface InstructorListProps {
15
17
  bodyClassName?: string;
16
18
  /** Instructor name heading */
17
19
  nameClassName?: string;
18
- /** Instructor bio paragraph */
20
+ /** Instructor bio paragraph(s) */
19
21
  bioClassName?: string;
20
22
  /**
21
23
  * Optional custom render function for each instructor.
@@ -1 +1 @@
1
- {"version":3,"file":"InstructorList.d.ts","sourceRoot":"","sources":["../../src/components/InstructorList.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGhD,MAAM,WAAW,mBAAmB;IAClC,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,qCAAqC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,+BAA+B;IAC/B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B,iCAAiC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,mCAAmC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,8BAA8B;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,+BAA+B;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,KAAK,CAAC,SAAS,CAAC;CACrD;AAED;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAqDxD,CAAC"}
1
+ {"version":3,"file":"InstructorList.d.ts","sourceRoot":"","sources":["../../src/components/InstructorList.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGhD,MAAM,WAAW,mBAAmB;IAChC,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,qCAAqC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,+BAA+B;IAC/B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B,iCAAiC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,mCAAmC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,8BAA8B;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,KAAK,CAAC,SAAS,CAAC;CACvD;AAED;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA+CxD,CAAC"}
@@ -15,15 +15,13 @@ const LoadingIcon_1 = require("./ui/LoadingIcon");
15
15
  * "cards." You can override any part of the styling via props
16
16
  * or completely replace the layout with `renderItem`.
17
17
  */
18
- const InstructorList = ({ overrideId, className = 'mt-6 md:mt-12 space-y-8', itemClassName = 'flex flex-col md:flex-row items-center rounded-lg border border-[#DCDCDC] shadow-lg overflow-hidden', imageWrapperClassName = 'w-full p-4 pb-0 md:pb-4 md:w-1/3 aspect-square', imageClassName = 'w-full h-full rounded-xl object-cover', bodyClassName = 'p-6 flex-1 text-left', nameClassName = 'text-xl md:text-3xl font-geologica font-semibold text-[#2A2343]', bioClassName = 'mt-2 text-xs md:text-xl font-sourcesans font-semibold text-[#464646]', renderItem, }) => {
18
+ const InstructorList = ({ overrideId, locale, className = 'mt-6 md:mt-12 space-y-8', itemClassName = 'flex flex-col md:flex-row items-center rounded-lg border border-[#DCDCDC] shadow-lg overflow-hidden', imageWrapperClassName = 'w-full p-4 pb-0 md:pb-4 md:w-1/3 aspect-square', imageClassName = 'w-full h-full rounded-xl object-cover', bodyClassName = 'p-6 flex-1 text-left', nameClassName = 'text-xl md:text-3xl font-geologica font-semibold text-[#2A2343]', bioClassName = 'mt-2 text-xs md:text-xl font-sourcesans font-semibold text-[#464646]', renderItem, }) => {
19
19
  const { data: instructors, loading: isLoading, error } = (0, useInstructors_1.useInstructors)(overrideId);
20
- if (isLoading) {
20
+ if (isLoading)
21
21
  return react_1.default.createElement("div", { className: className },
22
22
  react_1.default.createElement(LoadingIcon_1.LoadingIcon, null));
23
- }
24
- if (error) {
23
+ if (error)
25
24
  return react_1.default.createElement("div", { className: className }, error.message);
26
- }
27
25
  return (react_1.default.createElement("div", { className: className }, instructors === null || instructors === void 0 ? void 0 : instructors.map((instr) => {
28
26
  var _a;
29
27
  return renderItem ? (renderItem(instr)) : (react_1.default.createElement("div", { key: instr.id, className: itemClassName },
@@ -33,7 +31,31 @@ const InstructorList = ({ overrideId, className = 'mt-6 md:mt-12 space-y-8', ite
33
31
  react_1.default.createElement("h3", { className: nameClassName },
34
32
  instr.name,
35
33
  instr.lastname ? ` ${instr.lastname}` : ''),
36
- instr.bio && (react_1.default.createElement("p", { className: bioClassName }, Object.values(instr.bio)[0])))));
34
+ renderBio(instr.bio, locale, bioClassName))));
37
35
  })));
38
36
  };
39
37
  exports.InstructorList = InstructorList;
38
+ /** Safely render localized bio as multiple <p> paragraphs. */
39
+ function renderBio(bio, locale, paragraphClassName) {
40
+ const bioMap = (bio !== null && bio !== void 0 ? bio : {});
41
+ const locales = Object.keys(bioMap);
42
+ if (locales.length === 0)
43
+ return null;
44
+ const text = (locale && bioMap[locale]) ||
45
+ (locales.length ? bioMap[locales[0]] : '') ||
46
+ '';
47
+ const lines = splitMultiline(text);
48
+ if (lines.length === 0)
49
+ return null;
50
+ return (react_1.default.createElement("div", { className: "space-y-2" }, lines.map((line, i) => (react_1.default.createElement("p", { key: i, className: paragraphClassName }, line)))));
51
+ }
52
+ /** Convert <br> -> newlines, then split, trim, and filter empty lines */
53
+ function splitMultiline(text) {
54
+ if (!text)
55
+ return [];
56
+ const normalized = text.replace(/<br\s*\/?>/gi, '\n');
57
+ return normalized
58
+ .split(/\r?\n/)
59
+ .map((l) => l.trim())
60
+ .filter(Boolean);
61
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bailaya/react",
3
- "version": "1.0.9",
3
+ "version": "1.0.11",
4
4
  "description": "A React component library for the BailaYa public API",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",