@tribe-nest/forge 3.48.0 → 3.52.0

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.
Files changed (38) hide show
  1. package/package.json +2 -2
  2. package/src/data/queries/useCohortEnrolment.ts +87 -0
  3. package/src/data/queries/useMembershipCalls.ts +58 -8
  4. package/src/i18n/de.json +46 -0
  5. package/src/i18n/en.json +46 -0
  6. package/src/index.ts +1 -0
  7. package/src/types/models.ts +78 -5
  8. package/src/ui/headless/cohort/useCohortCheckout.ts +180 -0
  9. package/src/ui/headless/memberHome/useMemberCalls.ts +13 -0
  10. package/src/ui/index.ts +10 -0
  11. package/src/ui/styled/BlogPost.tsx +1 -1
  12. package/src/ui/styled/ChatRoom.tsx +2 -2
  13. package/src/ui/styled/Checkout.tsx +125 -125
  14. package/src/ui/styled/CoachingBooking.tsx +1 -1
  15. package/src/ui/styled/CoachingDetail.tsx +4 -4
  16. package/src/ui/styled/CohortCheckout.tsx +450 -0
  17. package/src/ui/styled/CohortConfirmation.tsx +259 -0
  18. package/src/ui/styled/CohortPage.tsx +31 -1
  19. package/src/ui/styled/CourseAccess.tsx +19 -6
  20. package/src/ui/styled/CourseCallsSection.tsx +99 -0
  21. package/src/ui/styled/CourseDetail.tsx +4 -4
  22. package/src/ui/styled/EventDetail.tsx +4 -4
  23. package/src/ui/styled/FormRenderer.tsx +14 -4
  24. package/src/ui/styled/PaystackPayButton.tsx +1 -1
  25. package/src/ui/styled/PodcastEpisode.tsx +1 -1
  26. package/src/ui/styled/ProductDetail.tsx +4 -4
  27. package/src/ui/styled/_tests/CohortCheckout.spec.tsx +232 -0
  28. package/src/ui/styled/_tests/CourseCallsSection.spec.tsx +163 -0
  29. package/src/ui/styled/_tests/packagedCssIsCurrent.spec.ts +43 -0
  30. package/src/ui/styled/_tests/utilityPrefix.spec.ts +156 -0
  31. package/src/ui/styled/broadcast/BroadcastMoqStage.tsx +1 -1
  32. package/src/ui/styled/chat/ChatThreadPanel.tsx +1 -1
  33. package/src/ui/styled/forge-utilities.css +463 -731
  34. package/src/ui/styled/members/MemberCallsCalendar.tsx +21 -3
  35. package/src/ui/styled/members/MemberHomeLayout.tsx +4 -4
  36. package/src/ui/styled/members/MemberPostsFeed.tsx +1 -1
  37. package/src/ui/styled/members/PostCollectionsGrid.tsx +1 -1
  38. package/src/ui/styled/musicLinkStyles.tsx +4 -4
package/src/ui/index.ts CHANGED
@@ -197,7 +197,17 @@ export {
197
197
  export { ConfirmSubscription, type ConfirmSubscriptionProps } from "./styled/ConfirmSubscription";
198
198
  export { LeadMagnet, type LeadMagnetProps } from "./styled/LeadMagnet";
199
199
  export { CohortPage, type CohortPageProps } from "./styled/CohortPage";
200
+ export { CohortCheckout, type CohortCheckoutProps } from "./styled/CohortCheckout";
201
+ export { CohortConfirmation, type CohortConfirmationProps } from "./styled/CohortConfirmation";
202
+ export {
203
+ useCohortCheckout,
204
+ type UseCohortCheckoutOptions,
205
+ type CohortCheckoutStep,
206
+ } from "./headless/cohort/useCohortCheckout";
200
207
  export { CourseAccess, type CourseAccessProps } from "./styled/CourseAccess";
208
+ // A student's live calls, scoped to the course or cohort the page is standing
209
+ // on. A thin wrapper over `MemberCallsCalendar`, not a second calendar.
210
+ export { CourseCallsSection, type CourseCallsSectionProps } from "./styled/CourseCallsSection";
201
211
 
202
212
  // Films and series (Tier 2). `FilmWatch` owns the entitlement gate, the viewer
203
213
  // overlay, the episode switcher and the clock; it takes a `renderPlayer` prop
@@ -157,7 +157,7 @@ export function BlogPost({ slug, blogHref = "/i/blog", initialPost }: BlogPostPr
157
157
 
158
158
  {/* `rich-text` = shared baseline content styles (WYSIWYG with the editor),
159
159
  bundled with Forge via the ./rich-text.css import above. */}
160
- <div className="rich-text" dangerouslySetInnerHTML={{ __html: post.content || "" }} />
160
+ <div className="fg:rich-text" dangerouslySetInnerHTML={{ __html: post.content || "" }} />
161
161
  </article>
162
162
  );
163
163
  }
@@ -124,7 +124,7 @@ export function ChatRoom(_props: ChatRoomProps) {
124
124
  >
125
125
  {/* Channel list: full-width on mobile, fixed rail on desktop */}
126
126
  <aside
127
- className={`${showSidebar ? "flex" : "hidden"} md:flex w-full md:w-[260px] flex-col`}
127
+ className={`${showSidebar ? "fg:flex" : "fg:hidden"} fg:md:flex fg:w-full fg:md:w-[260px] fg:flex-col`}
128
128
  style={{ borderRight: border, overflowY: "auto" }}
129
129
  >
130
130
  <div
@@ -174,7 +174,7 @@ export function ChatRoom(_props: ChatRoomProps) {
174
174
  </aside>
175
175
 
176
176
  {/* Message panel */}
177
- <section className={`${showSidebar ? "hidden" : "flex"} md:flex flex-1 flex-col min-w-0`}>
177
+ <section className={`${showSidebar ? "fg:hidden" : "fg:flex"} fg:md:flex fg:flex-1 fg:flex-col fg:min-w-0`}>
178
178
  {room.selectedChannel ? (
179
179
  <MessagePanel room={room} onBack={() => setShowSidebar(true)} border={border} />
180
180
  ) : (