@odla-ai/chapter 0.35.0 → 0.37.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.
- package/README.md +106 -0
- package/dist/{chunk-UJIVBGL5.js → chunk-BIYWPPH6.js} +535 -240
- package/dist/chunk-BIYWPPH6.js.map +1 -0
- package/dist/{chunk-JAWTIROV.js → chunk-IAWBE5PX.js} +55 -1
- package/dist/chunk-IAWBE5PX.js.map +1 -0
- package/dist/{chunk-TXE5ZDI4.js → chunk-SI3JHSEX.js} +319 -65
- package/dist/chunk-SI3JHSEX.js.map +1 -0
- package/dist/{copy-context-c1tqPXOR.d.ts → copy-context-Pbs3keLx.d.ts} +179 -29
- package/dist/index.cjs +1262 -326
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +439 -30
- package/dist/index.d.ts +439 -30
- package/dist/index.js +1262 -326
- package/dist/index.js.map +1 -1
- package/dist/ui/admin/index.d.ts +34 -3
- package/dist/ui/admin/index.js +10 -2
- package/dist/ui/index.d.ts +3 -3
- package/dist/ui/index.js +17 -3
- package/dist/ui/member/index.d.ts +111 -7
- package/dist/ui/member/index.js +8 -2
- package/dist/worker/index.cjs +2623 -917
- package/dist/worker/index.cjs.map +1 -1
- package/dist/worker/index.d.cts +251 -29
- package/dist/worker/index.d.ts +251 -29
- package/dist/worker/index.js +2657 -951
- package/dist/worker/index.js.map +1 -1
- package/package.json +1 -1
- package/runbooks/greenfield.md +27 -0
- package/dist/chunk-JAWTIROV.js.map +0 -1
- package/dist/chunk-TXE5ZDI4.js.map +0 -1
- package/dist/chunk-UJIVBGL5.js.map +0 -1
package/dist/ui/admin/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as preact from 'preact';
|
|
2
2
|
import { ComponentChildren, JSX } from 'preact';
|
|
3
3
|
import { CrmClient, Crm, CrmRecord } from '@odla-ai/crm';
|
|
4
|
-
import { a as Chapter, b as ChapterCopy } from '../../copy-context-
|
|
5
|
-
export { C as ChapterCopyProvider, u as useChapterCopy } from '../../copy-context-
|
|
4
|
+
import { a as Chapter, b as ChapterCopy, M as MemberContentDocument, E as EffectiveMemberContent, c as MemberContentTierAuthority } from '../../copy-context-Pbs3keLx.js';
|
|
5
|
+
export { C as ChapterCopyProvider, u as useChapterCopy } from '../../copy-context-Pbs3keLx.js';
|
|
6
6
|
import { CrmLifecycleAdapter, CrmWorkspaceMasterContext, CrmWorkspaceRecordContext, RecordPanelTab } from '@odla-ai/crm/ui';
|
|
7
7
|
|
|
8
8
|
/** Normalized public auth configuration consumed by the Clerk gate. */
|
|
@@ -286,6 +286,37 @@ declare function LeaderNetworkOverview({ ctx }: {
|
|
|
286
286
|
ctx: AdminSectionContext;
|
|
287
287
|
}): preact.JSX.Element;
|
|
288
288
|
|
|
289
|
+
/** Audited Chapter-admin surface for local decisions and effective Parent rows. */
|
|
290
|
+
declare function AdmissionGrantsWorkspace(props: {
|
|
291
|
+
getToken: () => Promise<string | null>;
|
|
292
|
+
}): JSX.Element;
|
|
293
|
+
/** Create the standard Chapter admission workspace definition. */
|
|
294
|
+
declare function admissionGrantsWorkspace(label?: string): AdminWorkspace;
|
|
295
|
+
|
|
296
|
+
/** Admin-safe inventory of inherited content, local content, tiers, and composition state. */
|
|
297
|
+
interface AdminMemberContentData {
|
|
298
|
+
parent: {
|
|
299
|
+
revision: number;
|
|
300
|
+
digest: string;
|
|
301
|
+
document: MemberContentDocument;
|
|
302
|
+
} | null;
|
|
303
|
+
chapter: {
|
|
304
|
+
revision: number;
|
|
305
|
+
document: MemberContentDocument;
|
|
306
|
+
} | null;
|
|
307
|
+
effective: EffectiveMemberContent;
|
|
308
|
+
tiers: MemberContentTierAuthority[];
|
|
309
|
+
localAuthoring: boolean;
|
|
310
|
+
}
|
|
311
|
+
/** Agent-friendly editor with read-only inherited inventory and one local JSON contract. */
|
|
312
|
+
declare function MemberContentAdmin({ ctx, initialData, }: {
|
|
313
|
+
ctx: AdminSectionContext;
|
|
314
|
+
/** Exact preloaded state for package-identical previews and SSR tests. */
|
|
315
|
+
initialData?: AdminMemberContentData;
|
|
316
|
+
}): preact.JSX.Element;
|
|
317
|
+
/** Reusable nested admin section for the standard Settings workspace. */
|
|
318
|
+
declare function memberContentSection(): AdminSection;
|
|
319
|
+
|
|
289
320
|
/** Fetch a JSON `/api/admin/*` route with the admin bearer token. Throws on a
|
|
290
321
|
* non-2xx (the body's `error`, else the status). */
|
|
291
322
|
declare function adminFetch<T = unknown>(getToken: () => Promise<string | null>, path: string, init?: RequestInit): Promise<T>;
|
|
@@ -318,4 +349,4 @@ declare function AdminNote({ children }: {
|
|
|
318
349
|
children: ComponentChildren;
|
|
319
350
|
}): JSX.Element;
|
|
320
351
|
|
|
321
|
-
export { type AdminAccountMenuProps, type AdminChrome, AdminNote, AdminPage, type AdminResource, type AdminRouteState, type AdminRouteTarget, type AdminRouting, type AdminSection, type AdminSectionContext, type AdminWorkspace, type AdminWorkspaceNavProps, type AvailabilitySectionOptions, type BillingSectionOptions, ChapterAdmin, type ChapterAdminAuthAdapter, type ChapterAdminAuthConfig, type ChapterAdminAuthLoadContext, type ChapterAdminProps, type ChapterAdminUser, type CollectionSectionOptions, type DashboardSectionOptions, type EmailSectionOptions, LeaderNetworkOverview, type MeetingsSectionOptions, NetworkRecordsWorkspace, NetworkShareActions, type NetworkShareActionsProps, Panel, type PeopleSectionOptions, RecordActions, type RecordActionsProps, ThemeWarning, adminFetch, adminRouteFromUrl, adminRouteHref, adminSectionFromUrl, adminSectionHref, applicationLifecycleAdapter, availabilitySection, billingSection, collectionSection, dashboardSection, defaultAdminSections, defaultAdminWorkspaces, emailSection, loadChapterAdminConfig, loadChapterAdminUser, meetingsSection, networkRecordsWorkspace, peopleSection, useAdminResource };
|
|
352
|
+
export { type AdminAccountMenuProps, type AdminChrome, type AdminMemberContentData, AdminNote, AdminPage, type AdminResource, type AdminRouteState, type AdminRouteTarget, type AdminRouting, type AdminSection, type AdminSectionContext, type AdminWorkspace, type AdminWorkspaceNavProps, AdmissionGrantsWorkspace, type AvailabilitySectionOptions, type BillingSectionOptions, ChapterAdmin, type ChapterAdminAuthAdapter, type ChapterAdminAuthConfig, type ChapterAdminAuthLoadContext, type ChapterAdminProps, type ChapterAdminUser, type CollectionSectionOptions, type DashboardSectionOptions, type EmailSectionOptions, LeaderNetworkOverview, type MeetingsSectionOptions, MemberContentAdmin, NetworkRecordsWorkspace, NetworkShareActions, type NetworkShareActionsProps, Panel, type PeopleSectionOptions, RecordActions, type RecordActionsProps, ThemeWarning, adminFetch, adminRouteFromUrl, adminRouteHref, adminSectionFromUrl, adminSectionHref, admissionGrantsWorkspace, applicationLifecycleAdapter, availabilitySection, billingSection, collectionSection, dashboardSection, defaultAdminSections, defaultAdminWorkspaces, emailSection, loadChapterAdminConfig, loadChapterAdminUser, meetingsSection, memberContentSection, networkRecordsWorkspace, peopleSection, useAdminResource };
|
package/dist/ui/admin/index.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AdminNote,
|
|
3
3
|
AdminPage,
|
|
4
|
+
AdmissionGrantsWorkspace,
|
|
4
5
|
ChapterAdmin,
|
|
5
6
|
LeaderNetworkOverview,
|
|
7
|
+
MemberContentAdmin,
|
|
6
8
|
NetworkRecordsWorkspace,
|
|
7
9
|
NetworkShareActions,
|
|
8
10
|
Panel,
|
|
@@ -13,6 +15,7 @@ import {
|
|
|
13
15
|
adminRouteHref,
|
|
14
16
|
adminSectionFromUrl,
|
|
15
17
|
adminSectionHref,
|
|
18
|
+
admissionGrantsWorkspace,
|
|
16
19
|
applicationLifecycleAdapter,
|
|
17
20
|
availabilitySection,
|
|
18
21
|
billingSection,
|
|
@@ -24,20 +27,23 @@ import {
|
|
|
24
27
|
loadChapterAdminConfig,
|
|
25
28
|
loadChapterAdminUser,
|
|
26
29
|
meetingsSection,
|
|
30
|
+
memberContentSection,
|
|
27
31
|
networkRecordsWorkspace,
|
|
28
32
|
peopleSection,
|
|
29
33
|
useAdminResource
|
|
30
|
-
} from "../../chunk-
|
|
34
|
+
} from "../../chunk-SI3JHSEX.js";
|
|
31
35
|
import {
|
|
32
36
|
ChapterCopyProvider,
|
|
33
37
|
useChapterCopy
|
|
34
|
-
} from "../../chunk-
|
|
38
|
+
} from "../../chunk-IAWBE5PX.js";
|
|
35
39
|
export {
|
|
36
40
|
AdminNote,
|
|
37
41
|
AdminPage,
|
|
42
|
+
AdmissionGrantsWorkspace,
|
|
38
43
|
ChapterAdmin,
|
|
39
44
|
ChapterCopyProvider,
|
|
40
45
|
LeaderNetworkOverview,
|
|
46
|
+
MemberContentAdmin,
|
|
41
47
|
NetworkRecordsWorkspace,
|
|
42
48
|
NetworkShareActions,
|
|
43
49
|
Panel,
|
|
@@ -48,6 +54,7 @@ export {
|
|
|
48
54
|
adminRouteHref,
|
|
49
55
|
adminSectionFromUrl,
|
|
50
56
|
adminSectionHref,
|
|
57
|
+
admissionGrantsWorkspace,
|
|
51
58
|
applicationLifecycleAdapter,
|
|
52
59
|
availabilitySection,
|
|
53
60
|
billingSection,
|
|
@@ -59,6 +66,7 @@ export {
|
|
|
59
66
|
loadChapterAdminConfig,
|
|
60
67
|
loadChapterAdminUser,
|
|
61
68
|
meetingsSection,
|
|
69
|
+
memberContentSection,
|
|
62
70
|
networkRecordsWorkspace,
|
|
63
71
|
peopleSection,
|
|
64
72
|
useAdminResource,
|
package/dist/ui/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { AdminAccountMenuProps, AdminChrome, AdminNote, AdminPage, AdminResource, AdminRouteState, AdminRouteTarget, AdminRouting, AdminSection, AdminSectionContext, AdminWorkspace, AdminWorkspaceNavProps, AvailabilitySectionOptions, BillingSectionOptions, ChapterAdmin, ChapterAdminAuthAdapter, ChapterAdminAuthConfig, ChapterAdminAuthLoadContext, ChapterAdminProps, ChapterAdminUser, CollectionSectionOptions, DashboardSectionOptions, EmailSectionOptions, LeaderNetworkOverview, MeetingsSectionOptions, NetworkRecordsWorkspace, NetworkShareActions, NetworkShareActionsProps, Panel, PeopleSectionOptions, RecordActions, RecordActionsProps, ThemeWarning, adminFetch, adminRouteFromUrl, adminRouteHref, adminSectionFromUrl, adminSectionHref, applicationLifecycleAdapter, availabilitySection, billingSection, collectionSection, dashboardSection, defaultAdminSections, defaultAdminWorkspaces, emailSection, loadChapterAdminConfig, loadChapterAdminUser, meetingsSection, networkRecordsWorkspace, peopleSection, useAdminResource } from './admin/index.js';
|
|
2
|
-
export { C as ChapterCopyProvider, u as useChapterCopy } from '../copy-context-
|
|
3
|
-
export { ApiFn, BrandStyle, BrandStyleProps, JoinBookingSimulation, JoinConfig, JoinFlowState, JoinIsland, JoinIslandProps, JoinSimulation, JoinStepRenderContext, JoinSubmitRenderContext, JoinTier, JoinTierRenderContext, MEMBERSHIP_CARD_TOKEN_DEFAULTS, MemberProvisionalRenderContext, MembersArea, MembersAreaProps, MembershipCardTokenName, MembershipCards, MembershipCardsMode, MembershipCardsProps, PaymentPriceLines, PaymentStep, PaymentStepProps, PaymentStepSimulation, RescheduleProps, Rescheduler, Slot, SlotPicker, SlotPickerClasses, SlotPickerProps, TierPlaceholder, dayKey, dayLabel, fmtDate, fmtMoney, fullLabel, groupSlotsByDay, loadJoinResume, membershipApplicationHref, tierNeedsPayment, timeLabel, tzShort, useTierSelection } from './member/index.js';
|
|
1
|
+
export { AdminAccountMenuProps, AdminChrome, AdminMemberContentData, AdminNote, AdminPage, AdminResource, AdminRouteState, AdminRouteTarget, AdminRouting, AdminSection, AdminSectionContext, AdminWorkspace, AdminWorkspaceNavProps, AdmissionGrantsWorkspace, AvailabilitySectionOptions, BillingSectionOptions, ChapterAdmin, ChapterAdminAuthAdapter, ChapterAdminAuthConfig, ChapterAdminAuthLoadContext, ChapterAdminProps, ChapterAdminUser, CollectionSectionOptions, DashboardSectionOptions, EmailSectionOptions, LeaderNetworkOverview, MeetingsSectionOptions, MemberContentAdmin, NetworkRecordsWorkspace, NetworkShareActions, NetworkShareActionsProps, Panel, PeopleSectionOptions, RecordActions, RecordActionsProps, ThemeWarning, adminFetch, adminRouteFromUrl, adminRouteHref, adminSectionFromUrl, adminSectionHref, admissionGrantsWorkspace, applicationLifecycleAdapter, availabilitySection, billingSection, collectionSection, dashboardSection, defaultAdminSections, defaultAdminWorkspaces, emailSection, loadChapterAdminConfig, loadChapterAdminUser, meetingsSection, memberContentSection, networkRecordsWorkspace, peopleSection, useAdminResource } from './admin/index.js';
|
|
2
|
+
export { C as ChapterCopyProvider, u as useChapterCopy } from '../copy-context-Pbs3keLx.js';
|
|
3
|
+
export { ApiFn, BrandStyle, BrandStyleProps, GiftOfferCards, GiftOfferCardsMode, GiftOfferCardsProps, JoinBookingSimulation, JoinConfig, JoinFlowState, JoinIsland, JoinIslandProps, JoinSimulation, JoinStepRenderContext, JoinSubmitRenderContext, JoinTier, JoinTierRenderContext, MEMBERSHIP_CARD_TOKEN_DEFAULTS, MemberContentArea, MemberContentAreaProps, MemberGifts, MemberProvisionalRenderContext, MembersArea, MembersAreaProps, MembershipCardTokenName, MembershipCards, MembershipCardsMode, MembershipCardsProps, PaymentPriceLines, PaymentStep, PaymentStepProps, PaymentStepSimulation, RescheduleProps, Rescheduler, Slot, SlotPicker, SlotPickerClasses, SlotPickerProps, SubResponse, TierPlaceholder, dayKey, dayLabel, fmtDate, fmtMoney, fullLabel, groupSlotsByDay, loadJoinResume, membershipApplicationHref, tierNeedsPayment, timeLabel, tzShort, useTierSelection } from './member/index.js';
|
|
4
4
|
import 'preact';
|
|
5
5
|
import '@odla-ai/crm';
|
|
6
6
|
import '@odla-ai/crm/ui';
|
package/dist/ui/index.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
|
+
GiftOfferCards,
|
|
2
3
|
JoinIsland,
|
|
3
4
|
MEMBERSHIP_CARD_TOKEN_DEFAULTS,
|
|
5
|
+
MemberContentArea,
|
|
6
|
+
MemberGifts,
|
|
4
7
|
MembersArea,
|
|
5
8
|
MembershipCards,
|
|
6
9
|
PaymentStep,
|
|
@@ -19,12 +22,14 @@ import {
|
|
|
19
22
|
timeLabel,
|
|
20
23
|
tzShort,
|
|
21
24
|
useTierSelection
|
|
22
|
-
} from "../chunk-
|
|
25
|
+
} from "../chunk-BIYWPPH6.js";
|
|
23
26
|
import {
|
|
24
27
|
AdminNote,
|
|
25
28
|
AdminPage,
|
|
29
|
+
AdmissionGrantsWorkspace,
|
|
26
30
|
ChapterAdmin,
|
|
27
31
|
LeaderNetworkOverview,
|
|
32
|
+
MemberContentAdmin,
|
|
28
33
|
NetworkRecordsWorkspace,
|
|
29
34
|
NetworkShareActions,
|
|
30
35
|
Panel,
|
|
@@ -35,6 +40,7 @@ import {
|
|
|
35
40
|
adminRouteHref,
|
|
36
41
|
adminSectionFromUrl,
|
|
37
42
|
adminSectionHref,
|
|
43
|
+
admissionGrantsWorkspace,
|
|
38
44
|
applicationLifecycleAdapter,
|
|
39
45
|
availabilitySection,
|
|
40
46
|
billingSection,
|
|
@@ -46,25 +52,31 @@ import {
|
|
|
46
52
|
loadChapterAdminConfig,
|
|
47
53
|
loadChapterAdminUser,
|
|
48
54
|
meetingsSection,
|
|
55
|
+
memberContentSection,
|
|
49
56
|
networkRecordsWorkspace,
|
|
50
57
|
peopleSection,
|
|
51
58
|
useAdminResource
|
|
52
|
-
} from "../chunk-
|
|
59
|
+
} from "../chunk-SI3JHSEX.js";
|
|
53
60
|
import {
|
|
54
61
|
BrandStyle,
|
|
55
62
|
ChapterCopyProvider,
|
|
56
63
|
useChapterCopy
|
|
57
|
-
} from "../chunk-
|
|
64
|
+
} from "../chunk-IAWBE5PX.js";
|
|
58
65
|
import "../chunk-IVXVECKR.js";
|
|
59
66
|
export {
|
|
60
67
|
AdminNote,
|
|
61
68
|
AdminPage,
|
|
69
|
+
AdmissionGrantsWorkspace,
|
|
62
70
|
BrandStyle,
|
|
63
71
|
ChapterAdmin,
|
|
64
72
|
ChapterCopyProvider,
|
|
73
|
+
GiftOfferCards,
|
|
65
74
|
JoinIsland,
|
|
66
75
|
LeaderNetworkOverview,
|
|
67
76
|
MEMBERSHIP_CARD_TOKEN_DEFAULTS,
|
|
77
|
+
MemberContentAdmin,
|
|
78
|
+
MemberContentArea,
|
|
79
|
+
MemberGifts,
|
|
68
80
|
MembersArea,
|
|
69
81
|
MembershipCards,
|
|
70
82
|
NetworkRecordsWorkspace,
|
|
@@ -81,6 +93,7 @@ export {
|
|
|
81
93
|
adminRouteHref,
|
|
82
94
|
adminSectionFromUrl,
|
|
83
95
|
adminSectionHref,
|
|
96
|
+
admissionGrantsWorkspace,
|
|
84
97
|
applicationLifecycleAdapter,
|
|
85
98
|
availabilitySection,
|
|
86
99
|
billingSection,
|
|
@@ -99,6 +112,7 @@ export {
|
|
|
99
112
|
loadChapterAdminUser,
|
|
100
113
|
loadJoinResume,
|
|
101
114
|
meetingsSection,
|
|
115
|
+
memberContentSection,
|
|
102
116
|
membershipApplicationHref,
|
|
103
117
|
networkRecordsWorkspace,
|
|
104
118
|
peopleSection,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as preact from 'preact';
|
|
2
2
|
import { ComponentChildren, JSX } from 'preact';
|
|
3
|
-
import { b as ChapterCopy,
|
|
4
|
-
export { C as ChapterCopyProvider, u as useChapterCopy } from '../../copy-context-
|
|
3
|
+
import { d as MemberContentProjection, e as MemberContentPageProjection, b as ChapterCopy, f as ChapterBrand } from '../../copy-context-Pbs3keLx.js';
|
|
4
|
+
export { C as ChapterCopyProvider, u as useChapterCopy } from '../../copy-context-Pbs3keLx.js';
|
|
5
5
|
import '@odla-ai/crm';
|
|
6
6
|
|
|
7
7
|
/** A bookable slot: a start instant in epoch milliseconds. */
|
|
@@ -74,6 +74,8 @@ interface ApplicationSummary {
|
|
|
74
74
|
paid: boolean;
|
|
75
75
|
renewalAt: number | null;
|
|
76
76
|
canceled: boolean;
|
|
77
|
+
/** Server-authoritative membership tier selected on this application. */
|
|
78
|
+
tierId: string | null;
|
|
77
79
|
}
|
|
78
80
|
/** A summary plus the reconciled meeting fields — the `application` the member
|
|
79
81
|
* area renders. */
|
|
@@ -83,6 +85,27 @@ interface MemberApplication extends ApplicationSummary {
|
|
|
83
85
|
timezone: string;
|
|
84
86
|
}
|
|
85
87
|
|
|
88
|
+
/** Inputs for the stock authenticated member-content navigator. */
|
|
89
|
+
interface MemberContentAreaProps {
|
|
90
|
+
api: ApiFn;
|
|
91
|
+
/** Defaults to the package-owned `/api/member-content` projection. */
|
|
92
|
+
path?: string;
|
|
93
|
+
initialPageId?: string;
|
|
94
|
+
/** Exact preloaded projection for SSR, tests, or package-identical previews. */
|
|
95
|
+
initialData?: MemberContentProjection;
|
|
96
|
+
/** Return a host-owned upgrade URL. Omit to render an informational offer. */
|
|
97
|
+
upsellHref?: (tierId: string, page: MemberContentPageProjection) => string | undefined;
|
|
98
|
+
/** Optional action for a host-owned upgrade journey. */
|
|
99
|
+
onUpsell?: (tierId: string, page: MemberContentPageProjection) => void;
|
|
100
|
+
loadingContent?: ComponentChildren;
|
|
101
|
+
emptyContent?: ComponentChildren;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Render the exact server-filtered catalog. This component never receives a
|
|
105
|
+
* restricted body: locked access is a wire-level omission, not a CSS gate.
|
|
106
|
+
*/
|
|
107
|
+
declare function MemberContentArea(props: MemberContentAreaProps): preact.JSX.Element;
|
|
108
|
+
|
|
86
109
|
/** Props for {@link MembersArea}. */
|
|
87
110
|
interface MembersAreaProps {
|
|
88
111
|
api: ApiFn;
|
|
@@ -94,6 +117,8 @@ interface MembersAreaProps {
|
|
|
94
117
|
applyHref?: string;
|
|
95
118
|
/** What a full (non-provisional) member sees below the account header. */
|
|
96
119
|
memberContent?: ComponentChildren;
|
|
120
|
+
/** Opt into the standard server-filtered member-page navigator. */
|
|
121
|
+
memberPages?: true | Omit<MemberContentAreaProps, "api">;
|
|
97
122
|
/** Resolved member-area copy. */
|
|
98
123
|
copy?: ChapterCopy["members"];
|
|
99
124
|
/** Replace the provisional application card without replacing auth/data load. */
|
|
@@ -140,7 +165,12 @@ interface PaymentStepProps {
|
|
|
140
165
|
/** Refund-policy copy the applicant must acknowledge to start payment. */
|
|
141
166
|
refundPolicyText: string;
|
|
142
167
|
/** Called once the payment succeeds (or is processing) — advance to booking. */
|
|
143
|
-
onPaid: (
|
|
168
|
+
onPaid: (result: {
|
|
169
|
+
gift: boolean;
|
|
170
|
+
giftCode?: string;
|
|
171
|
+
}) => void;
|
|
172
|
+
/** Override checkout creation for authenticated member gift purchases. */
|
|
173
|
+
startCheckout?: () => Promise<SubResponse>;
|
|
144
174
|
/** Stripe Elements appearance passed through without Chapter reinterpretation. */
|
|
145
175
|
appearance?: Record<string, unknown>;
|
|
146
176
|
/** Stripe Elements custom-font descriptors. */
|
|
@@ -168,6 +198,14 @@ interface PaymentPriceLines {
|
|
|
168
198
|
interface PaymentStepSimulation {
|
|
169
199
|
lineItems: PaymentPriceLines;
|
|
170
200
|
}
|
|
201
|
+
/** Checkout setup response shared by membership and gift Payment Element flows. */
|
|
202
|
+
interface SubResponse {
|
|
203
|
+
clientSecret?: string;
|
|
204
|
+
publishableKey?: string | null;
|
|
205
|
+
lineItems?: PaymentPriceLines;
|
|
206
|
+
gift?: boolean;
|
|
207
|
+
giftCode?: string;
|
|
208
|
+
}
|
|
171
209
|
/** The card-entry step: acknowledge the refund policy → create the subscription
|
|
172
210
|
* → mount Stripe Elements → confirm. */
|
|
173
211
|
declare function PaymentStep(props: PaymentStepProps): preact.JSX.Element;
|
|
@@ -238,6 +276,32 @@ declare function TierPlaceholder(context: JoinTierRenderContext): ComponentChild
|
|
|
238
276
|
*/
|
|
239
277
|
declare function tierNeedsPayment(selected: JoinTier | null, paymentsReady: boolean): boolean;
|
|
240
278
|
|
|
279
|
+
/** Membership tier or standalone entitlement fulfilled by redemption. */
|
|
280
|
+
type GiftOfferTarget = {
|
|
281
|
+
type: "tier";
|
|
282
|
+
tierId: string;
|
|
283
|
+
} | {
|
|
284
|
+
type: "entitlement";
|
|
285
|
+
entitlementKey: string;
|
|
286
|
+
};
|
|
287
|
+
/** Server-authored gift SKU; provider identifiers never reach public config. */
|
|
288
|
+
interface GiftOffer {
|
|
289
|
+
id: string;
|
|
290
|
+
target: GiftOfferTarget;
|
|
291
|
+
billingMode: "one_time" | "subscription";
|
|
292
|
+
stripePriceId: string;
|
|
293
|
+
priceCents: number;
|
|
294
|
+
currency: string;
|
|
295
|
+
redemptionLifetimeHours: number;
|
|
296
|
+
activeFrom?: number;
|
|
297
|
+
activeUntil?: number;
|
|
298
|
+
title: string;
|
|
299
|
+
description: string;
|
|
300
|
+
ctaLabel: string;
|
|
301
|
+
}
|
|
302
|
+
/** Provider-free gift offer shape rendered by Chapter and exact CMS previews. */
|
|
303
|
+
type PublicGiftOffer = Omit<GiftOffer, "stripePriceId" | "target">;
|
|
304
|
+
|
|
241
305
|
/** The public join config (the shape `GET /api/join-config` returns). */
|
|
242
306
|
interface JoinConfig {
|
|
243
307
|
id: string;
|
|
@@ -249,6 +313,7 @@ interface JoinConfig {
|
|
|
249
313
|
tiers?: readonly JoinTier[];
|
|
250
314
|
/** Resolved copy for the packaged join flow. */
|
|
251
315
|
copy?: ChapterCopy["join"];
|
|
316
|
+
giftOffers?: readonly PublicGiftOffer[];
|
|
252
317
|
}
|
|
253
318
|
/** Server-validated state used to resume a join journey after a redirect. */
|
|
254
319
|
type JoinFlowState = {
|
|
@@ -262,6 +327,14 @@ type JoinFlowState = {
|
|
|
262
327
|
} | {
|
|
263
328
|
step: "booking";
|
|
264
329
|
applicationId: string;
|
|
330
|
+
} | {
|
|
331
|
+
step: "accepted";
|
|
332
|
+
applicationId: string;
|
|
333
|
+
} | {
|
|
334
|
+
step: "gift";
|
|
335
|
+
applicationId: string;
|
|
336
|
+
claimId?: string;
|
|
337
|
+
code?: string;
|
|
265
338
|
} | {
|
|
266
339
|
step: "done";
|
|
267
340
|
applicationId: string;
|
|
@@ -301,12 +374,24 @@ interface JoinIslandProps {
|
|
|
301
374
|
}> & {
|
|
302
375
|
membersHref: string;
|
|
303
376
|
}) => ComponentChildren;
|
|
377
|
+
/** Replace the no-interview acceptance card while retaining orchestration. */
|
|
378
|
+
renderAccepted?: (context: Extract<JoinFlowState, {
|
|
379
|
+
step: "accepted";
|
|
380
|
+
}> & {
|
|
381
|
+
membersHref: string;
|
|
382
|
+
}) => ComponentChildren;
|
|
383
|
+
/** Replace the one-time gift-code card while retaining capability recovery. */
|
|
384
|
+
renderGift?: (context: Extract<JoinFlowState, {
|
|
385
|
+
step: "gift";
|
|
386
|
+
}>) => ComponentChildren;
|
|
304
387
|
/** Replace the submit control without replacing the application form. */
|
|
305
388
|
renderSubmit?: (context: JoinSubmitRenderContext) => ComponentChildren;
|
|
306
389
|
/** Render the site's tier chooser; the fallback is intentionally unstyled. */
|
|
307
390
|
renderTiers?: (context: JoinTierRenderContext) => ComponentChildren;
|
|
308
391
|
/** Preselect a tier when it is offered. */
|
|
309
392
|
initialTierId?: string;
|
|
393
|
+
/** Preselect a gift offer instead of self-membership. */
|
|
394
|
+
initialGiftOfferId?: string;
|
|
310
395
|
/** Additional host validation gate for the submit action. */
|
|
311
396
|
submitDisabled?: boolean;
|
|
312
397
|
/** Stripe Elements presentation and site-owned payment content. */
|
|
@@ -326,9 +411,8 @@ interface JoinIslandProps {
|
|
|
326
411
|
|
|
327
412
|
/** Load canonical server state for a capability-bearing application id. */
|
|
328
413
|
declare function loadJoinResume(applicationId: string, fetcher?: typeof fetch): Promise<JoinFlowState>;
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
* chapter charges) and booking (when a calendar is connected) to confirmation. */
|
|
414
|
+
|
|
415
|
+
/** Signup island with stable retries and server-driven payment/booking continuation. */
|
|
332
416
|
declare function JoinIsland(props: JoinIslandProps): JSX.Element;
|
|
333
417
|
|
|
334
418
|
/** The first stable, shared Chapter membership-page renderer contract. */
|
|
@@ -417,6 +501,26 @@ declare function membershipApplicationHref(applicationPath: string | undefined,
|
|
|
417
501
|
*/
|
|
418
502
|
declare function MembershipCards(props: MembershipCardsProps): JSX.Element;
|
|
419
503
|
|
|
504
|
+
/** Interactive live selection or inert exact-preview rendering. */
|
|
505
|
+
type GiftOfferCardsMode = "select" | "preview";
|
|
506
|
+
/** Public provider-free offer-card renderer inputs. */
|
|
507
|
+
interface GiftOfferCardsProps {
|
|
508
|
+
offers: readonly PublicGiftOffer[];
|
|
509
|
+
mode?: GiftOfferCardsMode;
|
|
510
|
+
selectedOfferId?: string | null;
|
|
511
|
+
onSelect?: (offerId: string) => void;
|
|
512
|
+
ariaLabel?: string;
|
|
513
|
+
}
|
|
514
|
+
/** Exact Chapter gift-offer renderer shared by live signup, members, and CMS preview. */
|
|
515
|
+
declare function GiftOfferCards(props: GiftOfferCardsProps): JSX.Element;
|
|
516
|
+
|
|
517
|
+
/** Authenticated buyer ledger, checkout, code rotation, and beneficiary redemption. */
|
|
518
|
+
declare function MemberGifts(props: {
|
|
519
|
+
api: ApiFn;
|
|
520
|
+
copy: ChapterCopy["members"]["gifts"];
|
|
521
|
+
paymentCopy: ChapterCopy["join"]["payment"];
|
|
522
|
+
}): preact.JSX.Element | null;
|
|
523
|
+
|
|
420
524
|
/** Props for {@link BrandStyle}. */
|
|
421
525
|
interface BrandStyleProps {
|
|
422
526
|
brand: ChapterBrand | undefined;
|
|
@@ -427,4 +531,4 @@ interface BrandStyleProps {
|
|
|
427
531
|
* there is no brand to theme). */
|
|
428
532
|
declare function BrandStyle(props: BrandStyleProps): preact.JSX.Element | null;
|
|
429
533
|
|
|
430
|
-
export { type ApiFn, BrandStyle, type BrandStyleProps, type JoinBookingSimulation, type JoinConfig, type JoinFlowState, JoinIsland, type JoinIslandProps, type JoinSimulation, type JoinStepRenderContext, type JoinSubmitRenderContext, type JoinTier, type JoinTierRenderContext, MEMBERSHIP_CARD_TOKEN_DEFAULTS, type MemberProvisionalRenderContext, MembersArea, type MembersAreaProps, type MembershipCardTokenName, MembershipCards, type MembershipCardsMode, type MembershipCardsProps, type PaymentPriceLines, PaymentStep, type PaymentStepProps, type PaymentStepSimulation, type RescheduleProps, Rescheduler, type Slot, SlotPicker, type SlotPickerClasses, type SlotPickerProps, TierPlaceholder, dayKey, dayLabel, fmtDate, fmtMoney, fullLabel, groupSlotsByDay, loadJoinResume, membershipApplicationHref, tierNeedsPayment, timeLabel, tzShort, useTierSelection };
|
|
534
|
+
export { type ApiFn, BrandStyle, type BrandStyleProps, GiftOfferCards, type GiftOfferCardsMode, type GiftOfferCardsProps, type JoinBookingSimulation, type JoinConfig, type JoinFlowState, JoinIsland, type JoinIslandProps, type JoinSimulation, type JoinStepRenderContext, type JoinSubmitRenderContext, type JoinTier, type JoinTierRenderContext, MEMBERSHIP_CARD_TOKEN_DEFAULTS, MemberContentArea, type MemberContentAreaProps, MemberGifts, type MemberProvisionalRenderContext, MembersArea, type MembersAreaProps, type MembershipCardTokenName, MembershipCards, type MembershipCardsMode, type MembershipCardsProps, type PaymentPriceLines, PaymentStep, type PaymentStepProps, type PaymentStepSimulation, type RescheduleProps, Rescheduler, type Slot, SlotPicker, type SlotPickerClasses, type SlotPickerProps, type SubResponse, TierPlaceholder, dayKey, dayLabel, fmtDate, fmtMoney, fullLabel, groupSlotsByDay, loadJoinResume, membershipApplicationHref, tierNeedsPayment, timeLabel, tzShort, useTierSelection };
|
package/dist/ui/member/index.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
|
+
GiftOfferCards,
|
|
2
3
|
JoinIsland,
|
|
3
4
|
MEMBERSHIP_CARD_TOKEN_DEFAULTS,
|
|
5
|
+
MemberContentArea,
|
|
6
|
+
MemberGifts,
|
|
4
7
|
MembersArea,
|
|
5
8
|
MembershipCards,
|
|
6
9
|
PaymentStep,
|
|
@@ -19,18 +22,21 @@ import {
|
|
|
19
22
|
timeLabel,
|
|
20
23
|
tzShort,
|
|
21
24
|
useTierSelection
|
|
22
|
-
} from "../../chunk-
|
|
25
|
+
} from "../../chunk-BIYWPPH6.js";
|
|
23
26
|
import {
|
|
24
27
|
BrandStyle,
|
|
25
28
|
ChapterCopyProvider,
|
|
26
29
|
useChapterCopy
|
|
27
|
-
} from "../../chunk-
|
|
30
|
+
} from "../../chunk-IAWBE5PX.js";
|
|
28
31
|
import "../../chunk-IVXVECKR.js";
|
|
29
32
|
export {
|
|
30
33
|
BrandStyle,
|
|
31
34
|
ChapterCopyProvider,
|
|
35
|
+
GiftOfferCards,
|
|
32
36
|
JoinIsland,
|
|
33
37
|
MEMBERSHIP_CARD_TOKEN_DEFAULTS,
|
|
38
|
+
MemberContentArea,
|
|
39
|
+
MemberGifts,
|
|
34
40
|
MembersArea,
|
|
35
41
|
MembershipCards,
|
|
36
42
|
PaymentStep,
|