@reblu/site-blocks 0.14.0 → 0.16.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/dist/index.d.cts CHANGED
@@ -1,4 +1,5 @@
1
- import { ShopErrorCode, PageDetail, PageListItem, ShopProductListItem, ShopProductTrustIcon, ShopProductTrustItem, BlockType, PageBlock, ResolvedEmbed, ShopFacets, ShopOrder, ShopBillingInput, ShopCheckoutInput, ShopOrderInvoice } from '@reblu/site-contracts';
1
+ import { ShopErrorCode, PageDetail, PageListItem, ShopProductListItem, ShopProductTrustIcon, ShopProductTrustItem, TrustBadgeType, TrustBadge, BlockType, PageBlock, ResolvedEmbed, ShopFacets, ShopOrder, ShopBillingInput, ShopCheckoutInput, ShopOrderInvoice } from '@reblu/site-contracts';
2
+ export { DATA_REQUEST_TYPES } from '@reblu/site-contracts';
2
3
  import { FaqItem } from './seo.cjs';
3
4
  export { FaqPageJsonLd, MarkdownToPlainTextOptions, buildFaqPageJsonLd, collectFaqItems, markdownToPlainText } from './seo.cjs';
4
5
  import * as react_jsx_runtime from 'react/jsx-runtime';
@@ -275,11 +276,17 @@ interface CourseDescriptionProps {
275
276
  * with a `heading` (so its `##` sits one level below it) and `0` without one.
276
277
  */
277
278
  headingOffset?: number;
278
- /** Classes for the outer element. */
279
+ /** Classes for the outer element (added to its `space-y-3` layout). */
279
280
  className?: string;
280
- /** Classes for the heading. */
281
+ /**
282
+ * Classes for the heading. When given, they REPLACE the default
283
+ * `text-xl font-semibold` (REB-997) — pass the full typography you want.
284
+ */
281
285
  headingClassName?: string;
282
- /** Classes for the rendered Markdown body. */
286
+ /**
287
+ * Classes for the rendered Markdown body. When given, they REPLACE the
288
+ * default `text-muted-foreground` (REB-997).
289
+ */
283
290
  contentClassName?: string;
284
291
  }
285
292
  declare function CourseDescription({ description, heading, headingLevel, headingId, headingOffset, className, headingClassName, contentClassName, }: CourseDescriptionProps): react_jsx_runtime.JSX.Element | null;
@@ -428,9 +435,13 @@ interface ProductTrustItemsProps {
428
435
  icons?: Partial<Record<ShopProductTrustIcon, TrustIconComponent>>;
429
436
  /** List element. Defaults to `ul`. */
430
437
  as?: 'ul' | 'ol';
431
- /** Classes for the list element. */
438
+ /** Classes for the list element (added to its `space-y-2.5` layout). */
432
439
  className?: string;
433
- /** Classes for each `<li>` row. */
440
+ /**
441
+ * Classes for each `<li>` row. When given, they REPLACE the default
442
+ * `text-sm text-muted-foreground` (REB-997); the row's `flex items-center
443
+ * gap-3` layout is kept.
444
+ */
434
445
  itemClassName?: string;
435
446
  }
436
447
  declare function ProductTrustItems({ items, icons, as: List, className, itemClassName, }: ProductTrustItemsProps): react_jsx_runtime.JSX.Element | null;
@@ -463,6 +474,80 @@ interface FaqAccordionProps {
463
474
  }
464
475
  declare function FaqAccordion({ items, heading, headingLevel, questionHeadingLevel, defaultOpen, className, }: FaqAccordionProps): react_jsx_runtime.JSX.Element | null;
465
476
 
477
+ /**
478
+ * `TrustBadges` — the tenant's trust badges (partners, insurers, funding,
479
+ * certifications, awards) configured in nexus and served by
480
+ * `client.trustBadges.list()` (REB-996). Drop it in a footer or an "about"
481
+ * section; switching a badge off or letting its validity date pass in nexus
482
+ * removes it from the SITE on the next revalidation, with no deploy.
483
+ *
484
+ * Server Component, RSC-safe: no hooks, no state, no `'use client'`.
485
+ *
486
+ * Semantics — the API is the only source of claims:
487
+ * - `null`, `undefined`, a non-array or `[]` render NOTHING.
488
+ * - An entry with an unknown `type` or an empty name is skipped; if nothing
489
+ * survives, nothing is rendered.
490
+ * - Badges are grouped by type (in {@link DEFAULT_TRUST_BADGE_TYPE_ORDER}, or
491
+ * the `types` prop), each group under an overridable heading, and ordered by
492
+ * `sortOrder` inside it.
493
+ * - A logo is an `<img>` whose `alt` is the badge name, rendered only when its
494
+ * URL is http(s) or root-relative (REB-1002); a badge without a usable logo
495
+ * shows its name as text.
496
+ * - `heading` (optional) wraps everything in a `<section>` labelled by it
497
+ * (`headingId`), with the group headings one level below — so a SITE keeps
498
+ * its `<section aria-labelledby>` landmark (REB-1002).
499
+ * - Consumer classNames follow the REB-997 slot rule: `headingClassName` and
500
+ * `sectionHeadingClassName` REPLACE that heading's default typography.
501
+ * - `url` links only when it is http(s), in a new window with
502
+ * `rel="noopener noreferrer"` and a visually hidden new-window hint.
503
+ */
504
+ /** Default group heading per badge type. Override any of them with `headings`. */
505
+ declare const DEFAULT_TRUST_BADGE_HEADINGS: Readonly<Record<TrustBadgeType, string>>;
506
+ /** Default order of the groups. */
507
+ declare const DEFAULT_TRUST_BADGE_TYPE_ORDER: readonly TrustBadgeType[];
508
+ interface TrustBadgesProps {
509
+ /** `client.trustBadges.list()`'s `data` as served — may be `null` / `undefined`. */
510
+ badges: readonly TrustBadge[] | null | undefined;
511
+ /** Per-type heading overrides; `null` renders that group without a heading. */
512
+ headings?: Partial<Record<TrustBadgeType, string | null>>;
513
+ /** Which groups to render, in this order. Defaults to every type. */
514
+ types?: readonly TrustBadgeType[];
515
+ /**
516
+ * Optional section title, e.g. «Nos avalan». When given, the root is a
517
+ * `<section aria-labelledby={headingId}>` and the group headings render one
518
+ * level below `headingLevel`.
519
+ */
520
+ heading?: ReactNode;
521
+ /** `id` of the section heading (the section's `aria-labelledby`). @default 'trust-badges-heading' */
522
+ headingId?: string;
523
+ /**
524
+ * Heading level of the section title when `heading` is given, otherwise of
525
+ * each group title. Defaults to `2`.
526
+ */
527
+ headingLevel?: HeadingLevel;
528
+ /** Visually hidden text appended to linked badges. */
529
+ newWindowLabel?: string;
530
+ /** Classes for the root element. */
531
+ className?: string;
532
+ /** Classes for each group. */
533
+ groupClassName?: string;
534
+ /**
535
+ * Classes for each group heading. When given, they REPLACE the default
536
+ * `text-sm font-semibold uppercase tracking-widest` (REB-997).
537
+ */
538
+ headingClassName?: string;
539
+ /**
540
+ * Classes for the section heading (only with `heading`). When given, they
541
+ * REPLACE the default `text-xl font-semibold` (REB-997).
542
+ */
543
+ sectionHeadingClassName?: string;
544
+ /** Classes for each group's `<ul>`. */
545
+ listClassName?: string;
546
+ /** Classes for each logo `<img>`. */
547
+ logoClassName?: string;
548
+ }
549
+ declare function TrustBadges({ badges, headings, types, heading, headingId, headingLevel, newWindowLabel, className, groupClassName, headingClassName, sectionHeadingClassName, listClassName, logoClassName, }: TrustBadgesProps): react_jsx_runtime.JSX.Element | null;
550
+
466
551
  /**
467
552
  * REB-850 — `PageBlocks`: the shared renderer for a page's registry blocks
468
553
  * (`PageDetail.blocks`, REB-75), so a SITE stops hand-writing its own.
@@ -1144,4 +1229,4 @@ interface OrderInvoiceLinkProps {
1144
1229
  }
1145
1230
  declare function OrderInvoiceLink({ invoice, labels, className }: OrderInvoiceLinkProps): react_jsx_runtime.JSX.Element | null;
1146
1231
 
1147
- export { ALLOWED_YOUTUBE_HOSTS, AddedToCartToast, type AddedToCartToastLabels, type AddedToCartToastProps, type AddedToCartToastStatus, type BlockRendererProps, type CanonicalBlockType, type CartAdjustmentLine, CartAdjustmentsNotice, type CartAdjustmentsNoticeLabels, type CartAdjustmentsNoticeProps, type CartLineItemView, CartLineList, type CartLineListLabels, type CartLineListProps, CartSummary, type CartSummaryLabels, type CartSummaryProps, type CheckoutAppliedDiscount, type CheckoutContactErrors, type CheckoutContactValues, CheckoutForm, type CheckoutFormLabels, type CheckoutFormProps, CheckoutLoginPrompt, type CheckoutLoginPromptLabels, type CheckoutLoginPromptProps, CourseDescription, type CourseDescriptionProps, DEFAULT_INVOICE_COUNTRIES, DEFAULT_SHOP_ERROR_FALLBACK_MESSAGE, DEFAULT_SHOP_ERROR_MESSAGES, DEFAULT_SHOP_PRICE_BANDS, DEFAULT_TRUST_ICONS, EMPTY_FULL_INVOICE_VALUE, FaqAccordion, type FaqAccordionProps, FaqItem, type FullInvoiceErrors, FullInvoiceFields, type FullInvoiceFieldsLabels, type FullInvoiceFieldsProps, type FullInvoiceIdType, type FullInvoiceValue, type HeadingLevel, MarkdownRenderer, type MarkdownRendererProps, OrderConfirmation, type OrderConfirmationLabels, type OrderConfirmationOrder, type OrderConfirmationProps, type OrderConfirmationStatus, OrderInvoiceLink, type OrderInvoiceLinkLabels, type OrderInvoiceLinkProps, PageBlocks, type PageBlocksComponents, type PageBlocksProps, PageCardGrid, type PageCardGridProps, ParentPage, type ParentPageProps, ProductCard, type ProductCardProps, ProductTrustItems, type ProductTrustItemsProps, ProfileCard, type ProfileCardProps, type RenderableBlock, SafeHtml, type SafeHtmlProps, type ShareUrls, type ShopFilterPriceBand, ShopFilters, type ShopFiltersActive, type ShopFiltersHrefs, type ShopFiltersLabels, type ShopFiltersProps, Specialty, type SpecialtyProps, Treatment, type TreatmentProps, type TrustIconComponent, type TrustIconProps, buildShareUrls, formatPrice, getShopErrorMessage, isAllowedYouTubeHost, isOverSimplifiedInvoiceCap, markdownToSafeHtml, readingTime, sanitizeHtml, shopIssuesInvoices, shouldRenderShopFilters, toCheckoutInvoiceFields };
1232
+ export { ALLOWED_YOUTUBE_HOSTS, AddedToCartToast, type AddedToCartToastLabels, type AddedToCartToastProps, type AddedToCartToastStatus, type BlockRendererProps, type CanonicalBlockType, type CartAdjustmentLine, CartAdjustmentsNotice, type CartAdjustmentsNoticeLabels, type CartAdjustmentsNoticeProps, type CartLineItemView, CartLineList, type CartLineListLabels, type CartLineListProps, CartSummary, type CartSummaryLabels, type CartSummaryProps, type CheckoutAppliedDiscount, type CheckoutContactErrors, type CheckoutContactValues, CheckoutForm, type CheckoutFormLabels, type CheckoutFormProps, CheckoutLoginPrompt, type CheckoutLoginPromptLabels, type CheckoutLoginPromptProps, CourseDescription, type CourseDescriptionProps, DEFAULT_INVOICE_COUNTRIES, DEFAULT_SHOP_ERROR_FALLBACK_MESSAGE, DEFAULT_SHOP_ERROR_MESSAGES, DEFAULT_SHOP_PRICE_BANDS, DEFAULT_TRUST_BADGE_HEADINGS, DEFAULT_TRUST_BADGE_TYPE_ORDER, DEFAULT_TRUST_ICONS, EMPTY_FULL_INVOICE_VALUE, FaqAccordion, type FaqAccordionProps, FaqItem, type FullInvoiceErrors, FullInvoiceFields, type FullInvoiceFieldsLabels, type FullInvoiceFieldsProps, type FullInvoiceIdType, type FullInvoiceValue, type HeadingLevel, MarkdownRenderer, type MarkdownRendererProps, OrderConfirmation, type OrderConfirmationLabels, type OrderConfirmationOrder, type OrderConfirmationProps, type OrderConfirmationStatus, OrderInvoiceLink, type OrderInvoiceLinkLabels, type OrderInvoiceLinkProps, PageBlocks, type PageBlocksComponents, type PageBlocksProps, PageCardGrid, type PageCardGridProps, ParentPage, type ParentPageProps, ProductCard, type ProductCardProps, ProductTrustItems, type ProductTrustItemsProps, ProfileCard, type ProfileCardProps, type RenderableBlock, SafeHtml, type SafeHtmlProps, type ShareUrls, type ShopFilterPriceBand, ShopFilters, type ShopFiltersActive, type ShopFiltersHrefs, type ShopFiltersLabels, type ShopFiltersProps, Specialty, type SpecialtyProps, Treatment, type TreatmentProps, TrustBadges, type TrustBadgesProps, type TrustIconComponent, type TrustIconProps, buildShareUrls, formatPrice, getShopErrorMessage, isAllowedYouTubeHost, isOverSimplifiedInvoiceCap, markdownToSafeHtml, readingTime, sanitizeHtml, shopIssuesInvoices, shouldRenderShopFilters, toCheckoutInvoiceFields };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- import { ShopErrorCode, PageDetail, PageListItem, ShopProductListItem, ShopProductTrustIcon, ShopProductTrustItem, BlockType, PageBlock, ResolvedEmbed, ShopFacets, ShopOrder, ShopBillingInput, ShopCheckoutInput, ShopOrderInvoice } from '@reblu/site-contracts';
1
+ import { ShopErrorCode, PageDetail, PageListItem, ShopProductListItem, ShopProductTrustIcon, ShopProductTrustItem, TrustBadgeType, TrustBadge, BlockType, PageBlock, ResolvedEmbed, ShopFacets, ShopOrder, ShopBillingInput, ShopCheckoutInput, ShopOrderInvoice } from '@reblu/site-contracts';
2
+ export { DATA_REQUEST_TYPES } from '@reblu/site-contracts';
2
3
  import { FaqItem } from './seo.js';
3
4
  export { FaqPageJsonLd, MarkdownToPlainTextOptions, buildFaqPageJsonLd, collectFaqItems, markdownToPlainText } from './seo.js';
4
5
  import * as react_jsx_runtime from 'react/jsx-runtime';
@@ -275,11 +276,17 @@ interface CourseDescriptionProps {
275
276
  * with a `heading` (so its `##` sits one level below it) and `0` without one.
276
277
  */
277
278
  headingOffset?: number;
278
- /** Classes for the outer element. */
279
+ /** Classes for the outer element (added to its `space-y-3` layout). */
279
280
  className?: string;
280
- /** Classes for the heading. */
281
+ /**
282
+ * Classes for the heading. When given, they REPLACE the default
283
+ * `text-xl font-semibold` (REB-997) — pass the full typography you want.
284
+ */
281
285
  headingClassName?: string;
282
- /** Classes for the rendered Markdown body. */
286
+ /**
287
+ * Classes for the rendered Markdown body. When given, they REPLACE the
288
+ * default `text-muted-foreground` (REB-997).
289
+ */
283
290
  contentClassName?: string;
284
291
  }
285
292
  declare function CourseDescription({ description, heading, headingLevel, headingId, headingOffset, className, headingClassName, contentClassName, }: CourseDescriptionProps): react_jsx_runtime.JSX.Element | null;
@@ -428,9 +435,13 @@ interface ProductTrustItemsProps {
428
435
  icons?: Partial<Record<ShopProductTrustIcon, TrustIconComponent>>;
429
436
  /** List element. Defaults to `ul`. */
430
437
  as?: 'ul' | 'ol';
431
- /** Classes for the list element. */
438
+ /** Classes for the list element (added to its `space-y-2.5` layout). */
432
439
  className?: string;
433
- /** Classes for each `<li>` row. */
440
+ /**
441
+ * Classes for each `<li>` row. When given, they REPLACE the default
442
+ * `text-sm text-muted-foreground` (REB-997); the row's `flex items-center
443
+ * gap-3` layout is kept.
444
+ */
434
445
  itemClassName?: string;
435
446
  }
436
447
  declare function ProductTrustItems({ items, icons, as: List, className, itemClassName, }: ProductTrustItemsProps): react_jsx_runtime.JSX.Element | null;
@@ -463,6 +474,80 @@ interface FaqAccordionProps {
463
474
  }
464
475
  declare function FaqAccordion({ items, heading, headingLevel, questionHeadingLevel, defaultOpen, className, }: FaqAccordionProps): react_jsx_runtime.JSX.Element | null;
465
476
 
477
+ /**
478
+ * `TrustBadges` — the tenant's trust badges (partners, insurers, funding,
479
+ * certifications, awards) configured in nexus and served by
480
+ * `client.trustBadges.list()` (REB-996). Drop it in a footer or an "about"
481
+ * section; switching a badge off or letting its validity date pass in nexus
482
+ * removes it from the SITE on the next revalidation, with no deploy.
483
+ *
484
+ * Server Component, RSC-safe: no hooks, no state, no `'use client'`.
485
+ *
486
+ * Semantics — the API is the only source of claims:
487
+ * - `null`, `undefined`, a non-array or `[]` render NOTHING.
488
+ * - An entry with an unknown `type` or an empty name is skipped; if nothing
489
+ * survives, nothing is rendered.
490
+ * - Badges are grouped by type (in {@link DEFAULT_TRUST_BADGE_TYPE_ORDER}, or
491
+ * the `types` prop), each group under an overridable heading, and ordered by
492
+ * `sortOrder` inside it.
493
+ * - A logo is an `<img>` whose `alt` is the badge name, rendered only when its
494
+ * URL is http(s) or root-relative (REB-1002); a badge without a usable logo
495
+ * shows its name as text.
496
+ * - `heading` (optional) wraps everything in a `<section>` labelled by it
497
+ * (`headingId`), with the group headings one level below — so a SITE keeps
498
+ * its `<section aria-labelledby>` landmark (REB-1002).
499
+ * - Consumer classNames follow the REB-997 slot rule: `headingClassName` and
500
+ * `sectionHeadingClassName` REPLACE that heading's default typography.
501
+ * - `url` links only when it is http(s), in a new window with
502
+ * `rel="noopener noreferrer"` and a visually hidden new-window hint.
503
+ */
504
+ /** Default group heading per badge type. Override any of them with `headings`. */
505
+ declare const DEFAULT_TRUST_BADGE_HEADINGS: Readonly<Record<TrustBadgeType, string>>;
506
+ /** Default order of the groups. */
507
+ declare const DEFAULT_TRUST_BADGE_TYPE_ORDER: readonly TrustBadgeType[];
508
+ interface TrustBadgesProps {
509
+ /** `client.trustBadges.list()`'s `data` as served — may be `null` / `undefined`. */
510
+ badges: readonly TrustBadge[] | null | undefined;
511
+ /** Per-type heading overrides; `null` renders that group without a heading. */
512
+ headings?: Partial<Record<TrustBadgeType, string | null>>;
513
+ /** Which groups to render, in this order. Defaults to every type. */
514
+ types?: readonly TrustBadgeType[];
515
+ /**
516
+ * Optional section title, e.g. «Nos avalan». When given, the root is a
517
+ * `<section aria-labelledby={headingId}>` and the group headings render one
518
+ * level below `headingLevel`.
519
+ */
520
+ heading?: ReactNode;
521
+ /** `id` of the section heading (the section's `aria-labelledby`). @default 'trust-badges-heading' */
522
+ headingId?: string;
523
+ /**
524
+ * Heading level of the section title when `heading` is given, otherwise of
525
+ * each group title. Defaults to `2`.
526
+ */
527
+ headingLevel?: HeadingLevel;
528
+ /** Visually hidden text appended to linked badges. */
529
+ newWindowLabel?: string;
530
+ /** Classes for the root element. */
531
+ className?: string;
532
+ /** Classes for each group. */
533
+ groupClassName?: string;
534
+ /**
535
+ * Classes for each group heading. When given, they REPLACE the default
536
+ * `text-sm font-semibold uppercase tracking-widest` (REB-997).
537
+ */
538
+ headingClassName?: string;
539
+ /**
540
+ * Classes for the section heading (only with `heading`). When given, they
541
+ * REPLACE the default `text-xl font-semibold` (REB-997).
542
+ */
543
+ sectionHeadingClassName?: string;
544
+ /** Classes for each group's `<ul>`. */
545
+ listClassName?: string;
546
+ /** Classes for each logo `<img>`. */
547
+ logoClassName?: string;
548
+ }
549
+ declare function TrustBadges({ badges, headings, types, heading, headingId, headingLevel, newWindowLabel, className, groupClassName, headingClassName, sectionHeadingClassName, listClassName, logoClassName, }: TrustBadgesProps): react_jsx_runtime.JSX.Element | null;
550
+
466
551
  /**
467
552
  * REB-850 — `PageBlocks`: the shared renderer for a page's registry blocks
468
553
  * (`PageDetail.blocks`, REB-75), so a SITE stops hand-writing its own.
@@ -1144,4 +1229,4 @@ interface OrderInvoiceLinkProps {
1144
1229
  }
1145
1230
  declare function OrderInvoiceLink({ invoice, labels, className }: OrderInvoiceLinkProps): react_jsx_runtime.JSX.Element | null;
1146
1231
 
1147
- export { ALLOWED_YOUTUBE_HOSTS, AddedToCartToast, type AddedToCartToastLabels, type AddedToCartToastProps, type AddedToCartToastStatus, type BlockRendererProps, type CanonicalBlockType, type CartAdjustmentLine, CartAdjustmentsNotice, type CartAdjustmentsNoticeLabels, type CartAdjustmentsNoticeProps, type CartLineItemView, CartLineList, type CartLineListLabels, type CartLineListProps, CartSummary, type CartSummaryLabels, type CartSummaryProps, type CheckoutAppliedDiscount, type CheckoutContactErrors, type CheckoutContactValues, CheckoutForm, type CheckoutFormLabels, type CheckoutFormProps, CheckoutLoginPrompt, type CheckoutLoginPromptLabels, type CheckoutLoginPromptProps, CourseDescription, type CourseDescriptionProps, DEFAULT_INVOICE_COUNTRIES, DEFAULT_SHOP_ERROR_FALLBACK_MESSAGE, DEFAULT_SHOP_ERROR_MESSAGES, DEFAULT_SHOP_PRICE_BANDS, DEFAULT_TRUST_ICONS, EMPTY_FULL_INVOICE_VALUE, FaqAccordion, type FaqAccordionProps, FaqItem, type FullInvoiceErrors, FullInvoiceFields, type FullInvoiceFieldsLabels, type FullInvoiceFieldsProps, type FullInvoiceIdType, type FullInvoiceValue, type HeadingLevel, MarkdownRenderer, type MarkdownRendererProps, OrderConfirmation, type OrderConfirmationLabels, type OrderConfirmationOrder, type OrderConfirmationProps, type OrderConfirmationStatus, OrderInvoiceLink, type OrderInvoiceLinkLabels, type OrderInvoiceLinkProps, PageBlocks, type PageBlocksComponents, type PageBlocksProps, PageCardGrid, type PageCardGridProps, ParentPage, type ParentPageProps, ProductCard, type ProductCardProps, ProductTrustItems, type ProductTrustItemsProps, ProfileCard, type ProfileCardProps, type RenderableBlock, SafeHtml, type SafeHtmlProps, type ShareUrls, type ShopFilterPriceBand, ShopFilters, type ShopFiltersActive, type ShopFiltersHrefs, type ShopFiltersLabels, type ShopFiltersProps, Specialty, type SpecialtyProps, Treatment, type TreatmentProps, type TrustIconComponent, type TrustIconProps, buildShareUrls, formatPrice, getShopErrorMessage, isAllowedYouTubeHost, isOverSimplifiedInvoiceCap, markdownToSafeHtml, readingTime, sanitizeHtml, shopIssuesInvoices, shouldRenderShopFilters, toCheckoutInvoiceFields };
1232
+ export { ALLOWED_YOUTUBE_HOSTS, AddedToCartToast, type AddedToCartToastLabels, type AddedToCartToastProps, type AddedToCartToastStatus, type BlockRendererProps, type CanonicalBlockType, type CartAdjustmentLine, CartAdjustmentsNotice, type CartAdjustmentsNoticeLabels, type CartAdjustmentsNoticeProps, type CartLineItemView, CartLineList, type CartLineListLabels, type CartLineListProps, CartSummary, type CartSummaryLabels, type CartSummaryProps, type CheckoutAppliedDiscount, type CheckoutContactErrors, type CheckoutContactValues, CheckoutForm, type CheckoutFormLabels, type CheckoutFormProps, CheckoutLoginPrompt, type CheckoutLoginPromptLabels, type CheckoutLoginPromptProps, CourseDescription, type CourseDescriptionProps, DEFAULT_INVOICE_COUNTRIES, DEFAULT_SHOP_ERROR_FALLBACK_MESSAGE, DEFAULT_SHOP_ERROR_MESSAGES, DEFAULT_SHOP_PRICE_BANDS, DEFAULT_TRUST_BADGE_HEADINGS, DEFAULT_TRUST_BADGE_TYPE_ORDER, DEFAULT_TRUST_ICONS, EMPTY_FULL_INVOICE_VALUE, FaqAccordion, type FaqAccordionProps, FaqItem, type FullInvoiceErrors, FullInvoiceFields, type FullInvoiceFieldsLabels, type FullInvoiceFieldsProps, type FullInvoiceIdType, type FullInvoiceValue, type HeadingLevel, MarkdownRenderer, type MarkdownRendererProps, OrderConfirmation, type OrderConfirmationLabels, type OrderConfirmationOrder, type OrderConfirmationProps, type OrderConfirmationStatus, OrderInvoiceLink, type OrderInvoiceLinkLabels, type OrderInvoiceLinkProps, PageBlocks, type PageBlocksComponents, type PageBlocksProps, PageCardGrid, type PageCardGridProps, ParentPage, type ParentPageProps, ProductCard, type ProductCardProps, ProductTrustItems, type ProductTrustItemsProps, ProfileCard, type ProfileCardProps, type RenderableBlock, SafeHtml, type SafeHtmlProps, type ShareUrls, type ShopFilterPriceBand, ShopFilters, type ShopFiltersActive, type ShopFiltersHrefs, type ShopFiltersLabels, type ShopFiltersProps, Specialty, type SpecialtyProps, Treatment, type TreatmentProps, TrustBadges, type TrustBadgesProps, type TrustIconComponent, type TrustIconProps, buildShareUrls, formatPrice, getShopErrorMessage, isAllowedYouTubeHost, isOverSimplifiedInvoiceCap, markdownToSafeHtml, readingTime, sanitizeHtml, shopIssuesInvoices, shouldRenderShopFilters, toCheckoutInvoiceFields };