@reblu/site-contracts 1.1.0 → 1.2.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/CHANGELOG.md +20 -0
- package/dist/index.d.cts +4 -2
- package/dist/index.d.ts +4 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# @reblu/site-contracts
|
|
2
2
|
|
|
3
|
+
## 1.2.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 34b15c4: Expose the academy verification gate's field list on `AcademyCourseDetail` (REB-83).
|
|
8
|
+
|
|
9
|
+
`AcademyCourseDetail.validationFields` is a new field: an ordered array of
|
|
10
|
+
`AcademyValidationFieldPublic` (`{ key, label, required, maxLength? }`), the
|
|
11
|
+
tenant's OWN configured list of data points its access-validation gate asks
|
|
12
|
+
for (e.g. a colegiado number and a professional college), resolved server-side
|
|
13
|
+
from `AcademyConfig.validationFields` — or derived as a single legacy field
|
|
14
|
+
under the key `'validationField'` when the tenant has not configured a list
|
|
15
|
+
yet, so an already-integrated SITE keeps working unchanged. A SITE renders
|
|
16
|
+
its enrollment form from this array instead of a fixed field.
|
|
17
|
+
|
|
18
|
+
Additive: a new required field on the existing `AcademyCourseDetail` shape
|
|
19
|
+
(populated for every course, empty array when the gate does not apply) and a
|
|
20
|
+
new exported type. The existing `validationFieldLabel` field is unchanged and
|
|
21
|
+
still present for a SITE build that has not migrated to the new array yet.
|
|
22
|
+
|
|
3
23
|
## 1.1.0
|
|
4
24
|
|
|
5
25
|
### Minor Changes
|
package/dist/index.d.cts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
export type AcademyCategoryPublic = { id: string; name: string; slug: string; sortOrder: number;}
|
|
7
7
|
|
|
8
|
-
export type AcademyCourseDetail = { id: string; slug: string; title: string; shortDescription: string | null; coverUrl: string | null; priceCents: number; accessMode: "IMMEDIATE" | "DRIP" | "COHORT"; category: { id: string; name: string; slug: string; sortOrder: number; } | null; description: string | null; modules: { id: string; title: string; description: string | null; lessons: { id: string; slug: string; title: string; isFreePreview: boolean; durationSeconds: number | null; hasVideo: boolean; }[]; }[]; instructors: { id: string; firstName: string | null; lastName: string | null; avatarUrl: string | null; }[]; salesEnabled: boolean; requiresValidation: boolean; validationFieldLabel: string | null;}
|
|
8
|
+
export type AcademyCourseDetail = { id: string; slug: string; title: string; shortDescription: string | null; coverUrl: string | null; priceCents: number; accessMode: "IMMEDIATE" | "DRIP" | "COHORT"; category: { id: string; name: string; slug: string; sortOrder: number; } | null; description: string | null; modules: { id: string; title: string; description: string | null; lessons: { id: string; slug: string; title: string; isFreePreview: boolean; durationSeconds: number | null; hasVideo: boolean; }[]; }[]; instructors: { id: string; firstName: string | null; lastName: string | null; avatarUrl: string | null; }[]; salesEnabled: boolean; requiresValidation: boolean; validationFieldLabel: string | null; validationFields: { key: string; label: string; required: boolean; maxLength?: number | undefined; }[];}
|
|
9
9
|
|
|
10
10
|
export type AcademyCourseSort = "price_asc" | "price_desc" | "newest"
|
|
11
11
|
|
|
@@ -17,7 +17,9 @@ export type AcademyLessonPublic = { id: string; slug: string; title: st
|
|
|
17
17
|
|
|
18
18
|
export type AcademyModulePublic = { id: string; title: string; description: string | null; lessons: { id: string; slug: string; title: string; isFreePreview: boolean; durationSeconds: number | null; hasVideo: boolean; }[];}
|
|
19
19
|
|
|
20
|
-
export type
|
|
20
|
+
export type AcademyValidationFieldPublic = { key: string; label: string; required: boolean; maxLength?: number | undefined;}
|
|
21
|
+
|
|
22
|
+
export type Analytics = { gaId: string | null; clarityId: string | null; recaptchaSiteKey: string | null; contactFormMode: "NOT_CONFIGURED" | "DISABLED" | "DB_ONLY" | "WEBHOOK" | "RESEND"; metaPixelId: string | null; metaVerificationContent: string | null; googleVerificationContent: string | null; consentRequired: boolean; cookiePolicyVersion: string | null; cookieBanner: { enabled: boolean; title: string | null; body: string | null; acceptLabel: string | null; rejectLabel: string | null; manageLabel: string | null; policyUrl: string | null; }; cookieInventory: { vendor: string; category: "necessary" | "analytics" | "marketing"; }[];}
|
|
21
23
|
|
|
22
24
|
export type BlogAuthor = { firstName: string | null; lastName: string | null; avatarUrl: string | null;}
|
|
23
25
|
|
package/dist/index.d.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
export type AcademyCategoryPublic = { id: string; name: string; slug: string; sortOrder: number;}
|
|
7
7
|
|
|
8
|
-
export type AcademyCourseDetail = { id: string; slug: string; title: string; shortDescription: string | null; coverUrl: string | null; priceCents: number; accessMode: "IMMEDIATE" | "DRIP" | "COHORT"; category: { id: string; name: string; slug: string; sortOrder: number; } | null; description: string | null; modules: { id: string; title: string; description: string | null; lessons: { id: string; slug: string; title: string; isFreePreview: boolean; durationSeconds: number | null; hasVideo: boolean; }[]; }[]; instructors: { id: string; firstName: string | null; lastName: string | null; avatarUrl: string | null; }[]; salesEnabled: boolean; requiresValidation: boolean; validationFieldLabel: string | null;}
|
|
8
|
+
export type AcademyCourseDetail = { id: string; slug: string; title: string; shortDescription: string | null; coverUrl: string | null; priceCents: number; accessMode: "IMMEDIATE" | "DRIP" | "COHORT"; category: { id: string; name: string; slug: string; sortOrder: number; } | null; description: string | null; modules: { id: string; title: string; description: string | null; lessons: { id: string; slug: string; title: string; isFreePreview: boolean; durationSeconds: number | null; hasVideo: boolean; }[]; }[]; instructors: { id: string; firstName: string | null; lastName: string | null; avatarUrl: string | null; }[]; salesEnabled: boolean; requiresValidation: boolean; validationFieldLabel: string | null; validationFields: { key: string; label: string; required: boolean; maxLength?: number | undefined; }[];}
|
|
9
9
|
|
|
10
10
|
export type AcademyCourseSort = "price_asc" | "price_desc" | "newest"
|
|
11
11
|
|
|
@@ -17,7 +17,9 @@ export type AcademyLessonPublic = { id: string; slug: string; title: st
|
|
|
17
17
|
|
|
18
18
|
export type AcademyModulePublic = { id: string; title: string; description: string | null; lessons: { id: string; slug: string; title: string; isFreePreview: boolean; durationSeconds: number | null; hasVideo: boolean; }[];}
|
|
19
19
|
|
|
20
|
-
export type
|
|
20
|
+
export type AcademyValidationFieldPublic = { key: string; label: string; required: boolean; maxLength?: number | undefined;}
|
|
21
|
+
|
|
22
|
+
export type Analytics = { gaId: string | null; clarityId: string | null; recaptchaSiteKey: string | null; contactFormMode: "NOT_CONFIGURED" | "DISABLED" | "DB_ONLY" | "WEBHOOK" | "RESEND"; metaPixelId: string | null; metaVerificationContent: string | null; googleVerificationContent: string | null; consentRequired: boolean; cookiePolicyVersion: string | null; cookieBanner: { enabled: boolean; title: string | null; body: string | null; acceptLabel: string | null; rejectLabel: string | null; manageLabel: string | null; policyUrl: string | null; }; cookieInventory: { vendor: string; category: "necessary" | "analytics" | "marketing"; }[];}
|
|
21
23
|
|
|
22
24
|
export type BlogAuthor = { firstName: string | null; lastName: string | null; avatarUrl: string | null;}
|
|
23
25
|
|
package/package.json
CHANGED