@wix/web5-core 1.58.0 → 1.59.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 (52) hide show
  1. package/dist/cjs/client/applyThemeOverrides.js +89 -0
  2. package/dist/cjs/client/applyThemeOverrides.js.map +1 -0
  3. package/dist/cjs/client/clientBundleUrl.js +43 -0
  4. package/dist/cjs/client/clientBundleUrl.js.map +1 -1
  5. package/dist/cjs/component/componentDefinitions/HeroEntitySectionDefinition.js +5 -2
  6. package/dist/cjs/component/componentDefinitions/HeroEntitySectionDefinition.js.map +1 -1
  7. package/dist/cjs/component/componentDefinitions/HeroSectionDefinition.js +4 -1
  8. package/dist/cjs/component/componentDefinitions/HeroSectionDefinition.js.map +1 -1
  9. package/dist/cjs/component/componentDefinitions/NextStepsSectionDefinition.js +35 -2
  10. package/dist/cjs/component/componentDefinitions/NextStepsSectionDefinition.js.map +1 -1
  11. package/dist/cjs/component/componentDefinitions/TextBlockSectionDefinition.js +27 -1
  12. package/dist/cjs/component/componentDefinitions/TextBlockSectionDefinition.js.map +1 -1
  13. package/dist/cjs/component/componentDefinitions/index.js +8 -1
  14. package/dist/cjs/component/componentDefinitions/index.js.map +1 -1
  15. package/dist/cjs/component/types.js.map +1 -1
  16. package/dist/cjs/hostScope.js.map +1 -1
  17. package/dist/cjs/index.js +11 -3
  18. package/dist/cjs/index.js.map +1 -1
  19. package/dist/esm/client/applyThemeOverrides.js +85 -0
  20. package/dist/esm/client/applyThemeOverrides.js.map +1 -0
  21. package/dist/esm/client/clientBundleUrl.js +39 -0
  22. package/dist/esm/client/clientBundleUrl.js.map +1 -1
  23. package/dist/esm/component/componentDefinitions/HeroEntitySectionDefinition.js +6 -3
  24. package/dist/esm/component/componentDefinitions/HeroEntitySectionDefinition.js.map +1 -1
  25. package/dist/esm/component/componentDefinitions/HeroSectionDefinition.js +5 -2
  26. package/dist/esm/component/componentDefinitions/HeroSectionDefinition.js.map +1 -1
  27. package/dist/esm/component/componentDefinitions/NextStepsSectionDefinition.js +36 -3
  28. package/dist/esm/component/componentDefinitions/NextStepsSectionDefinition.js.map +1 -1
  29. package/dist/esm/component/componentDefinitions/TextBlockSectionDefinition.js +27 -1
  30. package/dist/esm/component/componentDefinitions/TextBlockSectionDefinition.js.map +1 -1
  31. package/dist/esm/component/componentDefinitions/index.js +8 -1
  32. package/dist/esm/component/componentDefinitions/index.js.map +1 -1
  33. package/dist/esm/component/types.js.map +1 -1
  34. package/dist/esm/hostScope.js.map +1 -1
  35. package/dist/esm/index.js +2 -1
  36. package/dist/esm/index.js.map +1 -1
  37. package/dist/types/client/applyThemeOverrides.d.ts +19 -0
  38. package/dist/types/client/applyThemeOverrides.d.ts.map +1 -0
  39. package/dist/types/client/clientBundleUrl.d.ts +22 -0
  40. package/dist/types/client/clientBundleUrl.d.ts.map +1 -1
  41. package/dist/types/component/componentDefinitions/HeroEntitySectionDefinition.d.ts.map +1 -1
  42. package/dist/types/component/componentDefinitions/HeroSectionDefinition.d.ts.map +1 -1
  43. package/dist/types/component/componentDefinitions/NextStepsSectionDefinition.d.ts.map +1 -1
  44. package/dist/types/component/componentDefinitions/TextBlockSectionDefinition.d.ts.map +1 -1
  45. package/dist/types/component/componentDefinitions/index.d.ts.map +1 -1
  46. package/dist/types/component/types.d.ts +7 -0
  47. package/dist/types/component/types.d.ts.map +1 -1
  48. package/dist/types/hostScope.d.ts +11 -0
  49. package/dist/types/hostScope.d.ts.map +1 -1
  50. package/dist/types/index.d.ts +2 -1
  51. package/dist/types/index.d.ts.map +1 -1
  52. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"names":["_ComparisonSectionDefinition","require","exports","ComparisonSectionDefinition","_TextBlockSectionDefinition","TextBlockSectionDefinition","_HeroSectionDefinition","HeroSectionDefinition","_HeroEntitySectionDefinition","HeroEntitySectionDefinition","_KpiSectionDefinition","KpiSectionDefinition","_FeatureCardsSectionDefinition","FeatureCardsSectionDefinition","_EntitySectionDefinition","EntitySectionDefinition","_EntityCollectionSectionDefinition","EntityCollectionSectionDefinition","_CtaBannerSectionDefinition","CtaBannerSectionDefinition","_CalloutSectionDefinition","CalloutSectionDefinition","_NextStepsSectionDefinition","NextStepsSectionDefinition","_FeatureSection9PlusDefinition","FeatureSection9PlusDefinition","_listItemsSectionDefinition","ListItemsSectionDefinition","_SkipNodesSectionDefinition","SkipNodesSectionDefinition","_HtmlCommentSectionDefinition","HtmlCommentSectionDefinition","_SearchSectionDefinition","SearchSectionDefinition","_ErrorSectionDefinition","ErrorSectionDefinition","_FallbackSectionDefinition","FallbackSectionDefinition","_registry","createSdkRegistry","ComponentRegistry","register"],"sources":["../../../../src/component/componentDefinitions/index.ts"],"sourcesContent":["export type { SectionDefinition } from '../section-definition';\nexport { ComparisonSectionDefinition } from './ComparisonSectionDefinition';\nexport { TextBlockSectionDefinition } from './TextBlockSectionDefinition';\nexport { HeroSectionDefinition } from './HeroSectionDefinition';\nexport { HeroEntitySectionDefinition } from './HeroEntitySectionDefinition';\nexport { KpiSectionDefinition } from './KpiSectionDefinition';\nexport { FeatureCardsSectionDefinition } from './FeatureCardsSectionDefinition';\nexport { EntitySectionDefinition } from './EntitySectionDefinition';\nexport { EntityCollectionSectionDefinition } from './EntityCollectionSectionDefinition';\nexport { CtaBannerSectionDefinition } from './CtaBannerSectionDefinition';\nexport { CalloutSectionDefinition } from './CalloutSectionDefinition';\nexport { NextStepsSectionDefinition } from './NextStepsSectionDefinition';\nexport { FeatureSection9PlusDefinition } from './FeatureSection9PlusDefinition';\nexport { ListItemsSectionDefinition } from './listItemsSectionDefinition';\nexport { SkipNodesSectionDefinition } from './SkipNodesSectionDefinition';\nexport { HtmlCommentSectionDefinition } from './HtmlCommentSectionDefinition';\nexport { SearchSectionDefinition } from './SearchSectionDefinition';\nexport { ErrorSectionDefinition } from './ErrorSectionDefinition';\nexport { FallbackSectionDefinition } from './FallbackSectionDefinition';\n\nimport { ComponentRegistry } from '../../registry';\nimport { SkipNodesSectionDefinition } from './SkipNodesSectionDefinition';\nimport { SearchSectionDefinition } from './SearchSectionDefinition';\nimport { KpiSectionDefinition } from './KpiSectionDefinition';\nimport { NextStepsSectionDefinition } from './NextStepsSectionDefinition';\nimport { EntitySectionDefinition } from './EntitySectionDefinition';\nimport { EntityCollectionSectionDefinition } from './EntityCollectionSectionDefinition';\nimport { HeroEntitySectionDefinition } from './HeroEntitySectionDefinition';\nimport { HeroSectionDefinition } from './HeroSectionDefinition';\nimport { FeatureCardsSectionDefinition } from './FeatureCardsSectionDefinition';\nimport { FeatureSection9PlusDefinition } from './FeatureSection9PlusDefinition';\nimport { ListItemsSectionDefinition } from './listItemsSectionDefinition';\nimport { ComparisonSectionDefinition } from './ComparisonSectionDefinition';\nimport { HtmlCommentSectionDefinition } from './HtmlCommentSectionDefinition';\nimport { CtaBannerSectionDefinition } from './CtaBannerSectionDefinition';\nimport { CalloutSectionDefinition } from './CalloutSectionDefinition';\nimport { FallbackSectionDefinition } from './FallbackSectionDefinition';\nimport { ErrorSectionDefinition } from './ErrorSectionDefinition';\nimport { TextBlockSectionDefinition } from './TextBlockSectionDefinition';\n\n/**\n * Creates an SDK registry with all section definitions registered in the\n * same priority order as the app registry (createAppRegistry.ts).\n * Registration order determines evaluation priority — first match wins.\n */\nexport function createSdkRegistry(): ComponentRegistry<null> {\n return (\n new ComponentRegistry<null>(null)\n .register(new SkipNodesSectionDefinition())\n .register(new SearchSectionDefinition())\n .register(new KpiSectionDefinition())\n .register(new NextStepsSectionDefinition())\n // Collection entities are claimed by their own definition first — it is a\n // strictly narrower match than EntitySectionDefinition, which would\n // otherwise swallow collection, product and article blocks alike.\n .register(new EntityCollectionSectionDefinition())\n .register(new EntitySectionDefinition())\n .register(new HeroEntitySectionDefinition())\n .register(new HeroSectionDefinition())\n .register(new FeatureCardsSectionDefinition())\n .register(new TextBlockSectionDefinition())\n .register(new ListItemsSectionDefinition())\n .register(new FeatureSection9PlusDefinition())\n .register(new ComparisonSectionDefinition())\n .register(new HtmlCommentSectionDefinition())\n .register(new CtaBannerSectionDefinition())\n .register(new CalloutSectionDefinition())\n .register(new FallbackSectionDefinition())\n .register(new ErrorSectionDefinition())\n );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_ComparisonSectionDefinition","require","exports","ComparisonSectionDefinition","_TextBlockSectionDefinition","TextBlockSectionDefinition","_HeroSectionDefinition","HeroSectionDefinition","_HeroEntitySectionDefinition","HeroEntitySectionDefinition","_KpiSectionDefinition","KpiSectionDefinition","_FeatureCardsSectionDefinition","FeatureCardsSectionDefinition","_EntitySectionDefinition","EntitySectionDefinition","_EntityCollectionSectionDefinition","EntityCollectionSectionDefinition","_CtaBannerSectionDefinition","CtaBannerSectionDefinition","_CalloutSectionDefinition","CalloutSectionDefinition","_NextStepsSectionDefinition","NextStepsSectionDefinition","_FeatureSection9PlusDefinition","FeatureSection9PlusDefinition","_listItemsSectionDefinition","ListItemsSectionDefinition","_SkipNodesSectionDefinition","SkipNodesSectionDefinition","_HtmlCommentSectionDefinition","HtmlCommentSectionDefinition","_SearchSectionDefinition","SearchSectionDefinition","_ErrorSectionDefinition","ErrorSectionDefinition","_FallbackSectionDefinition","FallbackSectionDefinition","_registry","createSdkRegistry","ComponentRegistry","register"],"sources":["../../../../src/component/componentDefinitions/index.ts"],"sourcesContent":["export type { SectionDefinition } from '../section-definition';\nexport { ComparisonSectionDefinition } from './ComparisonSectionDefinition';\nexport { TextBlockSectionDefinition } from './TextBlockSectionDefinition';\nexport { HeroSectionDefinition } from './HeroSectionDefinition';\nexport { HeroEntitySectionDefinition } from './HeroEntitySectionDefinition';\nexport { KpiSectionDefinition } from './KpiSectionDefinition';\nexport { FeatureCardsSectionDefinition } from './FeatureCardsSectionDefinition';\nexport { EntitySectionDefinition } from './EntitySectionDefinition';\nexport { EntityCollectionSectionDefinition } from './EntityCollectionSectionDefinition';\nexport { CtaBannerSectionDefinition } from './CtaBannerSectionDefinition';\nexport { CalloutSectionDefinition } from './CalloutSectionDefinition';\nexport { NextStepsSectionDefinition } from './NextStepsSectionDefinition';\nexport { FeatureSection9PlusDefinition } from './FeatureSection9PlusDefinition';\nexport { ListItemsSectionDefinition } from './listItemsSectionDefinition';\nexport { SkipNodesSectionDefinition } from './SkipNodesSectionDefinition';\nexport { HtmlCommentSectionDefinition } from './HtmlCommentSectionDefinition';\nexport { SearchSectionDefinition } from './SearchSectionDefinition';\nexport { ErrorSectionDefinition } from './ErrorSectionDefinition';\nexport { FallbackSectionDefinition } from './FallbackSectionDefinition';\n\nimport { ComponentRegistry } from '../../registry';\nimport { SkipNodesSectionDefinition } from './SkipNodesSectionDefinition';\nimport { SearchSectionDefinition } from './SearchSectionDefinition';\nimport { KpiSectionDefinition } from './KpiSectionDefinition';\nimport { NextStepsSectionDefinition } from './NextStepsSectionDefinition';\nimport { EntitySectionDefinition } from './EntitySectionDefinition';\nimport { EntityCollectionSectionDefinition } from './EntityCollectionSectionDefinition';\nimport { HeroEntitySectionDefinition } from './HeroEntitySectionDefinition';\nimport { HeroSectionDefinition } from './HeroSectionDefinition';\nimport { FeatureCardsSectionDefinition } from './FeatureCardsSectionDefinition';\nimport { FeatureSection9PlusDefinition } from './FeatureSection9PlusDefinition';\nimport { ListItemsSectionDefinition } from './listItemsSectionDefinition';\nimport { ComparisonSectionDefinition } from './ComparisonSectionDefinition';\nimport { HtmlCommentSectionDefinition } from './HtmlCommentSectionDefinition';\nimport { CtaBannerSectionDefinition } from './CtaBannerSectionDefinition';\nimport { CalloutSectionDefinition } from './CalloutSectionDefinition';\nimport { FallbackSectionDefinition } from './FallbackSectionDefinition';\nimport { ErrorSectionDefinition } from './ErrorSectionDefinition';\nimport { TextBlockSectionDefinition } from './TextBlockSectionDefinition';\n\n/**\n * Creates an SDK registry with all section definitions registered in the\n * same priority order as the app registry (createAppRegistry.ts).\n * Registration order determines evaluation priority — first match wins.\n */\nexport function createSdkRegistry(): ComponentRegistry<null> {\n return (\n new ComponentRegistry<null>(null)\n .register(new SkipNodesSectionDefinition())\n .register(new SearchSectionDefinition())\n .register(new KpiSectionDefinition())\n .register(new NextStepsSectionDefinition())\n // Collection entities are claimed by their own definition first — it is a\n // strictly narrower match than EntitySectionDefinition, which would\n // otherwise swallow collection, product and article blocks alike.\n .register(new EntityCollectionSectionDefinition())\n .register(new EntitySectionDefinition())\n .register(new HeroEntitySectionDefinition())\n .register(new HeroSectionDefinition())\n .register(new FeatureCardsSectionDefinition())\n .register(new ListItemsSectionDefinition())\n .register(new FeatureSection9PlusDefinition())\n .register(new ComparisonSectionDefinition())\n .register(new HtmlCommentSectionDefinition())\n .register(new CtaBannerSectionDefinition())\n // textBlock comes after every definition whose block opens `h2 > t`\n // (entity, listItems, featureCards, ctaBanner, comparison, …). Its\n // trailing callout is optional, so its pattern also matches a bare\n // `h2 > t`, and a pattern matches a PREFIX of the block — registered\n // above those it would claim the heading + intro paragraph and strand\n // the list / links / table that follow in a separate section.\n .register(new TextBlockSectionDefinition())\n .register(new CalloutSectionDefinition())\n .register(new FallbackSectionDefinition())\n .register(new ErrorSectionDefinition())\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["../../../src/component/types.ts"],"sourcesContent":["import type { FC } from 'react';\nimport type { Callout } from '../types/callout';\n\n/** Props extracted from markdown (base layer). */\nexport interface BaseCompProps {}\nexport interface SlotCompProps extends BaseCompProps {\n callout?: Callout;\n}\n\nexport interface SectionCompProps extends BaseCompProps {\n callout?: Callout;\n}\n\n/** Section props with a slot. TSlot enforces which slot component this section accepts. */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface SectionCompPropsWithSlot<TSlot extends FC<any> = FC<any>>\n extends SectionCompProps {\n slot?: TSlot;\n}\n\n// ----------------------\n// Base Components\n// ----------------------\n\nexport interface TextCompProps extends BaseCompProps {\n content: string;\n variant?: 'h1' | 'h2' | 'body' | 'caption';\n}\n\nexport interface ButtonCompProps extends BaseCompProps {\n label: string;\n variant?: 'primary' | 'secondary' | 'ghost';\n onClick?: string;\n}\n\nexport interface ImageCompProps extends BaseCompProps {\n src: string;\n alt: string;\n ratio?: '16:9' | '4:3' | '1:1' | '9:16' | '3:4';\n}\n\nexport interface BadgeCompProps extends BaseCompProps {\n label: string;\n color?: 'primary' | 'secondary' | 'success' | 'warning' | 'error';\n}\n\n// ----------------------\n// Hero Button (aligned to HeroSection1Button)\n// ----------------------\n\nexport interface HeroButton {\n id: string;\n text: string;\n variant?: 'primary' | 'secondary';\n onClick?: string;\n}\n\n// ----------------------\n// Slot Components\n// ----------------------\n\nexport interface KpiItemCompProps extends SlotCompProps {\n title: string;\n description: string;\n icon?: string;\n}\n\n/** Feature item — aligned to web50-server-ui Feature interface */\nexport interface FeatureItemCompProps extends SlotCompProps {\n title?: string;\n description?: string;\n icon?: string;\n}\n\n/** Feature card — aligned to web50-server-ui FeatureCard */\nexport interface FeatureCardCompProps extends SlotCompProps {\n title: string;\n description: string;\n imageUrl?: string;\n imageFromText?: boolean;\n linkText?: string;\n linkHref?: string;\n callout?: Callout;\n}\n\n/** Resolved entity data (populated at runtime via useResolveGenericEntityData) */\nexport interface EntityItemData {\n url: string;\n title: string;\n type: string;\n description?: string;\n excerpt?: string;\n imageUrl?: string;\n date?: string;\n publishDate?: string;\n author?: string;\n cmsItemId?: string;\n usage?: number;\n tags?: string[];\n /** Product vendor / brand name (e.g. \"HOKA\") */\n vendor?: string;\n /** Formatted price string (e.g. \"542.00 NIS\") */\n price?: string;\n /** Secondary product image URL — shown on hover */\n secondaryImageUrl?: string;\n /** Available sizes for the product */\n sizes?: string[];\n /** Original price before discount (formatted, e.g. \"494.00 NIS\") — shown with strikethrough */\n compareAtPrice?: string;\n /** Discount percentage (e.g. \"30% OFF\") */\n discountPercent?: string;\n /** Product variants with IDs and availability — used for add-to-cart and size display */\n variants?: {\n label: string;\n variantId: string;\n available: boolean;\n selectedOptions?: { name: string; value: string }[];\n price?: string;\n compareAtPrice?: string;\n }[];\n /** All product image URLs (not just featured + secondary) */\n allImages?: string[];\n /** Product option groups (e.g. Size, Color) with their available values */\n options?: { name: string; values: string[] }[];\n}\n\n/** Single entity item within an entity section */\nexport interface EntityItem {\n entityId: string;\n linkText?: string;\n entityType: string;\n entityUrl: string;\n description?: string;\n imageUrl?: string;\n /** Per-item callout from a blockquote inside the list item */\n callout?: Callout;\n /** Resolved at runtime via useResolveGenericEntityData hook; not produced by parse() */\n data?: EntityItemData;\n}\n\n// ---------------------------------------------------------------------------\n// Deprecated aliases — kept for seed-components compilation\n// ---------------------------------------------------------------------------\n/** @deprecated Use EntityItemData */\nexport type GenericEntityData = EntityItemData;\n/** @deprecated Use EntityItemData */\nexport type SolutionEntityData = EntityItemData;\n/** @deprecated Use EntityItemData */\nexport type BlogEntityData = EntityItemData;\n/** @deprecated Use EntityItem */\nexport type GenericEntityCompProps = EntityItem;\n\n/** Comparison row — aligned to web50-server-ui ComparisonRow */\nexport interface ComparisonRow {\n feature: string;\n iconHint?: string;\n values: (boolean | string)[];\n}\n\nexport interface ComparisonColumn {\n label: string;\n href?: string;\n entityId?: string;\n entityType?: string;\n}\n\n/** @deprecated Use Callout from types/callout instead */\nexport interface AiNarrativeCompProps extends SlotCompProps {\n content: string;\n}\n\n// ----------------------\n// Section Components\n// ----------------------\n\n/** Hero — aligned to HeroSection1Props */\nexport interface HeroCompProps extends SectionCompProps {\n headline: string;\n badge?: string | { text: string; showIndicator?: boolean };\n content?: string;\n buttons?: HeroButton[];\n image?: string;\n trailingList?: string;\n leadingQuote?: string;\n}\n\n/**\n * Entity hero — a hero section whose body carries one or more web5 entity\n * links (`web5://entity/...`). Shares the hero framing fields with\n * {@link HeroCompProps} but, instead of CTA buttons, surfaces the entities as\n * resolvable {@link EntityItem}s for rich rendering.\n */\nexport interface HeroEntityCompProps extends SectionCompProps {\n headline: string;\n badge?: string | { text: string; showIndicator?: boolean };\n content?: string;\n image?: string;\n leadingQuote?: string;\n items: EntityItem[];\n}\n\n/** KPI — aligned to KpiSectionProps */\nexport interface KpiCompProps\n extends SectionCompPropsWithSlot<KpiItemComponent> {\n title: string;\n items: KpiItemCompProps[];\n}\n\n/** Feature cards — aligned to FeatureCardsSectionProps */\nexport interface FeatureCardsCompProps extends SectionCompProps {\n cards: FeatureCardCompProps[];\n}\n\n/** Unified entity section — replaces EntityCompProps, SolutionEntityCompProps, BlogEntityCompProps */\nexport interface EntityCompProps extends SectionCompProps {\n title: string;\n description?: string;\n items: EntityItem[];\n}\n\n/** Comparison — aligned to ComparisonSection1Props */\nexport interface ComparisonCompProps extends SectionCompProps {\n title: string;\n description?: string;\n columnLabels: string[];\n columns?: ComparisonColumn[];\n rows: ComparisonRow[];\n featureColumnLabel?: string;\n ctaText?: string;\n ctaHref?: string;\n}\n\n/** General text — aligned to GeneralTextSectionProps (used by Fallback) */\nexport interface GeneralTextCompProps extends SectionCompProps {\n markdown: string;\n}\n\n/** Callout — aligned to CalloutSectionProps */\nexport interface CalloutCompProps extends SectionCompProps {\n callouts: Callout[];\n title?: string;\n relatedLinks?: { text: string; url: string }[];\n}\n\n/** Next steps — aligned to NextStepsSectionProps */\nexport interface NextStepsCompProps extends SectionCompProps {\n title: string;\n body?: string;\n backgroundImage?: string;\n steps: { content: string; iconHint?: string }[];\n}\n\n/** Feature section 9+ — aligned to FeatureSection9PlusProps */\nexport interface FeatureSection9PlusCompProps extends SectionCompProps {\n title: string;\n description?: string;\n features: { title?: string; description: string; iconHint?: string }[];\n}\n\n/** List items section — title + a list of feature items. */\nexport interface ListItemsSectionCompProps extends SectionCompProps {\n title: string;\n features: { title?: string; description: string }[];\n}\n\nexport type ListItemsSectionComponent = FC<ListItemsSectionCompProps>;\n\n/** Error — aligned to ErrorSection */\nexport interface ErrorCompProps extends SectionCompProps {\n type: import('../errors/conversationErrorTypes').ConversationErrorType;\n}\n\n/** Skip/HTML/Search — null-component parsers */\nexport interface NullCompProps extends SectionCompProps {}\n\n/** @deprecated Use EntityCompProps */\nexport type SolutionEntityCompProps = EntityCompProps;\n/** @deprecated Use EntityCompProps */\nexport type BlogEntityCompProps = EntityCompProps;\n\n/** CTA Banner — dark purple gradient card with headline, description, and pill link buttons */\nexport interface CtaBannerCompProps extends SectionCompProps {\n headline: string;\n description?: string;\n links: { text: string; href: string }[];\n /** Contextual background image — resolved from allowed keywords during parse() */\n imageUrl?: string;\n imageFromText?: boolean;\n}\n\nexport type CtaBannerSectionComponent = FC<CtaBannerCompProps>;\n\n/** Text block — heading + body with an optional pullquote callout on the side */\nexport interface TextBlockCompProps extends SectionCompProps {\n title: string;\n description: string;\n}\n\n/** Personalized narrative — standalone section with no parse() definition */\nexport interface PersonalizedNarrativeCompProps extends SectionCompProps {\n title: string;\n content?: string;\n}\n\n// --------------------------------\n// Types of component - all components\n// --------------------------------\n\nexport type Component = BaseComponent | SlotComponent | SectionComponent;\n\nexport type BaseComponent = FC<BaseCompProps>;\nexport type SlotComponent = FC<SlotCompProps>;\nexport type SectionComponent = FC<SectionCompProps>;\n\n// Base Components\nexport type TextComponent = FC<TextCompProps>;\nexport type ButtonComponent = FC<ButtonCompProps>;\nexport type ImageComponent = FC<ImageCompProps>;\nexport type BadgeComponent = FC<BadgeCompProps>;\n\n// Slot Components\nexport type KpiItemComponent = FC<KpiItemCompProps>;\nexport type FeatureItemComponent = FC<FeatureItemCompProps>;\nexport type FeatureCardComponent = FC<FeatureCardCompProps>;\n/** @deprecated Use FC<EntityItem> */\nexport type GenericEntityComponent = FC<EntityItem>;\nexport type AiNarrativeComponent = FC<AiNarrativeCompProps>;\n\n// Section Components\nexport type ComparisonSectionComponent = FC<ComparisonCompProps>;\nexport type GeneralTextSectionComponent = FC<GeneralTextCompProps>;\nexport type TextBlockSectionComponent = FC<TextBlockCompProps>;\nexport type HeroSectionComponent = FC<HeroCompProps>;\nexport type HeroEntitySectionComponent = FC<HeroEntityCompProps>;\n\n// section components with slots\nexport type KpiSectionComponent = FC<KpiCompProps>;\nexport type FeatureCardsSectionComponent = FC<FeatureCardsCompProps>;\nexport type EntitySectionComponent = FC<EntityCompProps>;\n\n// New section component types for Phase 4\nexport type CalloutSectionComponent = FC<CalloutCompProps>;\nexport type NextStepsSectionComponent = FC<NextStepsCompProps>;\nexport type FeatureSection9PlusSectionComponent =\n FC<FeatureSection9PlusCompProps>;\nexport type NullSectionComponent = FC<NullCompProps>;\nexport type ErrorSectionComponent = FC<ErrorCompProps>;\nexport type SolutionEntitySectionComponent = FC<SolutionEntityCompProps>;\nexport type BlogEntitySectionComponent = FC<BlogEntityCompProps>;\nexport type PersonalizedNarrativeSectionComponent =\n FC<PersonalizedNarrativeCompProps>;\n\nexport type PropsOf<T> = T extends (props: infer P) => unknown ? P : never;\n\nexport interface SectionFixture<TProps> {\n markdown: string;\n expected: Partial<TProps>;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["../../../src/component/types.ts"],"sourcesContent":["import type { FC } from 'react';\nimport type { Callout } from '../types/callout';\n\n/** Props extracted from markdown (base layer). */\nexport interface BaseCompProps {}\nexport interface SlotCompProps extends BaseCompProps {\n callout?: Callout;\n}\n\nexport interface SectionCompProps extends BaseCompProps {\n callout?: Callout;\n}\n\n/** Section props with a slot. TSlot enforces which slot component this section accepts. */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface SectionCompPropsWithSlot<TSlot extends FC<any> = FC<any>>\n extends SectionCompProps {\n slot?: TSlot;\n}\n\n// ----------------------\n// Base Components\n// ----------------------\n\nexport interface TextCompProps extends BaseCompProps {\n content: string;\n variant?: 'h1' | 'h2' | 'body' | 'caption';\n}\n\nexport interface ButtonCompProps extends BaseCompProps {\n label: string;\n variant?: 'primary' | 'secondary' | 'ghost';\n onClick?: string;\n}\n\nexport interface ImageCompProps extends BaseCompProps {\n src: string;\n alt: string;\n ratio?: '16:9' | '4:3' | '1:1' | '9:16' | '3:4';\n}\n\nexport interface BadgeCompProps extends BaseCompProps {\n label: string;\n color?: 'primary' | 'secondary' | 'success' | 'warning' | 'error';\n}\n\n// ----------------------\n// Hero Button (aligned to HeroSection1Button)\n// ----------------------\n\nexport interface HeroButton {\n id: string;\n text: string;\n variant?: 'primary' | 'secondary';\n onClick?: string;\n}\n\n// ----------------------\n// Slot Components\n// ----------------------\n\nexport interface KpiItemCompProps extends SlotCompProps {\n title: string;\n description: string;\n icon?: string;\n}\n\n/** Feature item — aligned to web50-server-ui Feature interface */\nexport interface FeatureItemCompProps extends SlotCompProps {\n title?: string;\n description?: string;\n icon?: string;\n}\n\n/** Feature card — aligned to web50-server-ui FeatureCard */\nexport interface FeatureCardCompProps extends SlotCompProps {\n title: string;\n description: string;\n imageUrl?: string;\n imageFromText?: boolean;\n linkText?: string;\n linkHref?: string;\n callout?: Callout;\n}\n\n/** Resolved entity data (populated at runtime via useResolveGenericEntityData) */\nexport interface EntityItemData {\n url: string;\n title: string;\n type: string;\n description?: string;\n excerpt?: string;\n imageUrl?: string;\n date?: string;\n publishDate?: string;\n author?: string;\n cmsItemId?: string;\n usage?: number;\n tags?: string[];\n /** Product vendor / brand name (e.g. \"HOKA\") */\n vendor?: string;\n /** Formatted price string (e.g. \"542.00 NIS\") */\n price?: string;\n /** Secondary product image URL — shown on hover */\n secondaryImageUrl?: string;\n /** Available sizes for the product */\n sizes?: string[];\n /** Original price before discount (formatted, e.g. \"494.00 NIS\") — shown with strikethrough */\n compareAtPrice?: string;\n /** Discount percentage (e.g. \"30% OFF\") */\n discountPercent?: string;\n /** Product variants with IDs and availability — used for add-to-cart and size display */\n variants?: {\n label: string;\n variantId: string;\n available: boolean;\n selectedOptions?: { name: string; value: string }[];\n price?: string;\n compareAtPrice?: string;\n }[];\n /** All product image URLs (not just featured + secondary) */\n allImages?: string[];\n /** Product option groups (e.g. Size, Color) with their available values */\n options?: { name: string; values: string[] }[];\n}\n\n/** Single entity item within an entity section */\nexport interface EntityItem {\n entityId: string;\n linkText?: string;\n entityType: string;\n entityUrl: string;\n description?: string;\n imageUrl?: string;\n /** Per-item callout from a blockquote inside the list item */\n callout?: Callout;\n /** Resolved at runtime via useResolveGenericEntityData hook; not produced by parse() */\n data?: EntityItemData;\n}\n\n// ---------------------------------------------------------------------------\n// Deprecated aliases — kept for seed-components compilation\n// ---------------------------------------------------------------------------\n/** @deprecated Use EntityItemData */\nexport type GenericEntityData = EntityItemData;\n/** @deprecated Use EntityItemData */\nexport type SolutionEntityData = EntityItemData;\n/** @deprecated Use EntityItemData */\nexport type BlogEntityData = EntityItemData;\n/** @deprecated Use EntityItem */\nexport type GenericEntityCompProps = EntityItem;\n\n/** Comparison row — aligned to web50-server-ui ComparisonRow */\nexport interface ComparisonRow {\n feature: string;\n iconHint?: string;\n values: (boolean | string)[];\n}\n\nexport interface ComparisonColumn {\n label: string;\n href?: string;\n entityId?: string;\n entityType?: string;\n}\n\n/** @deprecated Use Callout from types/callout instead */\nexport interface AiNarrativeCompProps extends SlotCompProps {\n content: string;\n}\n\n// ----------------------\n// Section Components\n// ----------------------\n\n/** Hero — aligned to HeroSection1Props */\nexport interface HeroCompProps extends SectionCompProps {\n headline: string;\n badge?: string | { text: string; showIndicator?: boolean };\n content?: string;\n buttons?: HeroButton[];\n image?: string;\n trailingList?: string;\n leadingQuote?: string;\n}\n\n/**\n * Entity hero — a hero section whose body carries one or more web5 entity\n * links (`web5://entity/...`). Shares the hero framing fields with\n * {@link HeroCompProps} but, instead of CTA buttons, surfaces the entities as\n * resolvable {@link EntityItem}s for rich rendering.\n */\nexport interface HeroEntityCompProps extends SectionCompProps {\n headline: string;\n badge?: string | { text: string; showIndicator?: boolean };\n content?: string;\n image?: string;\n leadingQuote?: string;\n items: EntityItem[];\n}\n\n/** KPI — aligned to KpiSectionProps */\nexport interface KpiCompProps\n extends SectionCompPropsWithSlot<KpiItemComponent> {\n title: string;\n items: KpiItemCompProps[];\n}\n\n/** Feature cards — aligned to FeatureCardsSectionProps */\nexport interface FeatureCardsCompProps extends SectionCompProps {\n cards: FeatureCardCompProps[];\n}\n\n/** Unified entity section — replaces EntityCompProps, SolutionEntityCompProps, BlogEntityCompProps */\nexport interface EntityCompProps extends SectionCompProps {\n title: string;\n description?: string;\n items: EntityItem[];\n}\n\n/** Comparison — aligned to ComparisonSection1Props */\nexport interface ComparisonCompProps extends SectionCompProps {\n title: string;\n description?: string;\n columnLabels: string[];\n columns?: ComparisonColumn[];\n rows: ComparisonRow[];\n featureColumnLabel?: string;\n ctaText?: string;\n ctaHref?: string;\n}\n\n/** General text — aligned to GeneralTextSectionProps (used by Fallback) */\nexport interface GeneralTextCompProps extends SectionCompProps {\n markdown: string;\n}\n\n/** Callout — aligned to CalloutSectionProps */\nexport interface CalloutCompProps extends SectionCompProps {\n callouts: Callout[];\n title?: string;\n relatedLinks?: { text: string; url: string }[];\n}\n\n/** Next steps — aligned to NextStepsSectionProps */\nexport interface NextStepsCompProps extends SectionCompProps {\n title: string;\n body?: string;\n /**\n * True when the chips are already rendered inline inside `body`. Renderers\n * must show `body` alone in that case — listing `steps` as well repeats every\n * chip. `steps` stays populated either way; it is the machine-readable chip\n * list (the scroll chips under the answer are built from it).\n */\n chipsInlineInBody?: boolean;\n backgroundImage?: string;\n steps: { content: string; iconHint?: string }[];\n}\n\n/** Feature section 9+ — aligned to FeatureSection9PlusProps */\nexport interface FeatureSection9PlusCompProps extends SectionCompProps {\n title: string;\n description?: string;\n features: { title?: string; description: string; iconHint?: string }[];\n}\n\n/** List items section — title + a list of feature items. */\nexport interface ListItemsSectionCompProps extends SectionCompProps {\n title: string;\n features: { title?: string; description: string }[];\n}\n\nexport type ListItemsSectionComponent = FC<ListItemsSectionCompProps>;\n\n/** Error — aligned to ErrorSection */\nexport interface ErrorCompProps extends SectionCompProps {\n type: import('../errors/conversationErrorTypes').ConversationErrorType;\n}\n\n/** Skip/HTML/Search — null-component parsers */\nexport interface NullCompProps extends SectionCompProps {}\n\n/** @deprecated Use EntityCompProps */\nexport type SolutionEntityCompProps = EntityCompProps;\n/** @deprecated Use EntityCompProps */\nexport type BlogEntityCompProps = EntityCompProps;\n\n/** CTA Banner — dark purple gradient card with headline, description, and pill link buttons */\nexport interface CtaBannerCompProps extends SectionCompProps {\n headline: string;\n description?: string;\n links: { text: string; href: string }[];\n /** Contextual background image — resolved from allowed keywords during parse() */\n imageUrl?: string;\n imageFromText?: boolean;\n}\n\nexport type CtaBannerSectionComponent = FC<CtaBannerCompProps>;\n\n/** Text block — heading + body with an optional pullquote callout on the side */\nexport interface TextBlockCompProps extends SectionCompProps {\n title: string;\n description: string;\n}\n\n/** Personalized narrative — standalone section with no parse() definition */\nexport interface PersonalizedNarrativeCompProps extends SectionCompProps {\n title: string;\n content?: string;\n}\n\n// --------------------------------\n// Types of component - all components\n// --------------------------------\n\nexport type Component = BaseComponent | SlotComponent | SectionComponent;\n\nexport type BaseComponent = FC<BaseCompProps>;\nexport type SlotComponent = FC<SlotCompProps>;\nexport type SectionComponent = FC<SectionCompProps>;\n\n// Base Components\nexport type TextComponent = FC<TextCompProps>;\nexport type ButtonComponent = FC<ButtonCompProps>;\nexport type ImageComponent = FC<ImageCompProps>;\nexport type BadgeComponent = FC<BadgeCompProps>;\n\n// Slot Components\nexport type KpiItemComponent = FC<KpiItemCompProps>;\nexport type FeatureItemComponent = FC<FeatureItemCompProps>;\nexport type FeatureCardComponent = FC<FeatureCardCompProps>;\n/** @deprecated Use FC<EntityItem> */\nexport type GenericEntityComponent = FC<EntityItem>;\nexport type AiNarrativeComponent = FC<AiNarrativeCompProps>;\n\n// Section Components\nexport type ComparisonSectionComponent = FC<ComparisonCompProps>;\nexport type GeneralTextSectionComponent = FC<GeneralTextCompProps>;\nexport type TextBlockSectionComponent = FC<TextBlockCompProps>;\nexport type HeroSectionComponent = FC<HeroCompProps>;\nexport type HeroEntitySectionComponent = FC<HeroEntityCompProps>;\n\n// section components with slots\nexport type KpiSectionComponent = FC<KpiCompProps>;\nexport type FeatureCardsSectionComponent = FC<FeatureCardsCompProps>;\nexport type EntitySectionComponent = FC<EntityCompProps>;\n\n// New section component types for Phase 4\nexport type CalloutSectionComponent = FC<CalloutCompProps>;\nexport type NextStepsSectionComponent = FC<NextStepsCompProps>;\nexport type FeatureSection9PlusSectionComponent =\n FC<FeatureSection9PlusCompProps>;\nexport type NullSectionComponent = FC<NullCompProps>;\nexport type ErrorSectionComponent = FC<ErrorCompProps>;\nexport type SolutionEntitySectionComponent = FC<SolutionEntityCompProps>;\nexport type BlogEntitySectionComponent = FC<BlogEntityCompProps>;\nexport type PersonalizedNarrativeSectionComponent =\n FC<PersonalizedNarrativeCompProps>;\n\nexport type PropsOf<T> = T extends (props: infer P) => unknown ? P : never;\n\nexport interface SectionFixture<TProps> {\n markdown: string;\n expected: Partial<TProps>;\n}\n"],"mappings":"","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["WEB5_ROOT_ID","exports","WEB5_ROOT_CLASS","WEB5_SCOPES","WEB5_SCOPE","join","WEB5_GLOBAL_TOKENS"],"sources":["../../src/hostScope.ts"],"sourcesContent":["/**\n * The mount-scope contract.\n *\n * Several packages have to agree on where Web5 content begins in a host\n * document:\n *\n * - **web5-core** scopes its own CSS to it (`base-utilities.css` already\n * targets `#root`).\n * - **the client build** compiles every selector against it (`scopeCss` in\n * `web5-core/scripts/scope-css.ts`).\n * - **web50-server-ui** stamps `WEB5_ROOT_CLASS` on the element it mounts\n * into, and renders the debug panel into `.debug-view`.\n * - **embed-placement** mounts the *same* client bundle into\n * `[data-web5-placement]` slots on host pages.\n *\n * One home for the list, so those cannot drift.\n *\n * ## Why it is a list and not just `#root`\n *\n * A placement renders client components **outside** `#root`, on the merchant's\n * own PDP. A stylesheet scoped to `#root` alone leaves every placement — and the\n * debug panel — completely unstyled. `w5-client-circana` and\n * `w5-client-feature-com` each discovered this and each hardcoded their own\n * list; this constant is what replaces both.\n */\nexport const WEB5_ROOT_ID = 'root';\n\nexport const WEB5_ROOT_CLASS = 'w5-root';\n\n/**\n * Every place Web5 content can be mounted.\n *\n * `#root` is the id the host runtime has always created, kept so the compiled\n * stylesheet matches before any script runs. `.w5-root` is stamped at mount and\n * keeps the contract working if the host ever renames the element.\n */\nexport const WEB5_SCOPES = [\n `#${WEB5_ROOT_ID}`,\n `.${WEB5_ROOT_CLASS}`,\n '[data-web5-placement]',\n '.debug-view',\n] as const;\n\n/**\n * `:is()` takes the specificity of its most specific argument, so this is worth\n * (1,0,0) whichever branch matches — enough to outrank the (0,1,1) descendant\n * selectors host themes use for rich-text typography.\n */\nexport const WEB5_SCOPE = `:is(${WEB5_SCOPES.join(',')})`;\n\n/**\n * Custom properties the **host** sets on `:root` at runtime. Their declarations\n * must stay global: moved into the scope they would shadow the host's value for\n * our own subtree, which is precisely where it is needed.\n *\n * Kept in sync with what `web50-server-ui` and the host offset injectors write.\n */\nexport const WEB5_GLOBAL_TOKENS: readonly RegExp[] = [\n /^--web5-host-left-offset$/,\n /^--web5-host-right-offset$/,\n /^--web5-window-scroll-top-offset$/,\n];\n\n/**\n * Per-client overrides for the host adaptation web50-server-ui performs at\n * mount. Shared behaviour, client values — a client package supplies this on\n * `clientConfig.hostFit` and never forks the implementation.\n */\nexport interface HostFitConfig {\n /** Master switch. Default `true`. */\n enabled?: boolean;\n /**\n * What \"the full available width\" means on this site. Default\n * `'main, [role=\"main\"]'`; falls back to `<body>` when nothing matches.\n */\n containerSelector?: string;\n /**\n * Widen the page's content container to the host container's content box.\n * Default **`false`** — opt in per client.\n *\n * Off by default because widening changes the layout of hosts that are\n * already sized correctly; only a client whose host constrains it (a theme\n * that drops the mount into a narrow reading column) needs this.\n */\n bleed?: boolean;\n /**\n * Sticky-header height. `'auto'` (default) measures it; a number pins it.\n *\n * Prefer pinning where the host chrome is known. Circana's\n * `inject-host-nav-offset` measured side rails at runtime, hit false\n * positives in production (host layout containers and full-height nav panels\n * matched the filter), and was changed to static values — the same trap\n * applies to any measured host geometry.\n */\n topInset?: number | 'auto';\n /**\n * Hide the host's own page-title heading where it sits above the mount.\n * Default **`false`** — opt in per client.\n *\n * A Web5 page opens with its own hero `h1`, so on a host that also prints the\n * CMS page title the visitor reads the page name twice and the document ends\n * up with two `h1`s. Every standard Shopify theme does this on `/pages/*` —\n * Dawn as `h1.main-page-title` before the `.rte`, Horizon as a `text-block`\n * before the block we mount into — hence a shared switch and not a per-theme\n * fork.\n *\n * Off by default because a heading above us is only reliably *ours to remove*\n * when the mount owns the page. A placement, or a host that puts Web5 beside\n * real editorial content, must keep it.\n */\n hideHostTitle?: boolean;\n /**\n * Collapse the host's padding and margin above the mount. Default\n * **`false`** — opt in per client.\n *\n * Only dead space goes: the walk stops at the first ancestor with anything\n * visible rendering above us, so a host that does put content over the mount\n * keeps its separation. Pairs with {@link hideHostTitle}, which is what takes\n * the title's own row out of that walk.\n */\n flushTop?: boolean;\n}\n"],"mappings":";;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,YAAY,GAAAC,OAAA,CAAAD,YAAA,GAAG,MAAM;AAE3B,MAAME,eAAe,GAAAD,OAAA,CAAAC,eAAA,GAAG,SAAS;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,WAAW,GAAAF,OAAA,CAAAE,WAAA,GAAG,CACzB,IAAIH,YAAY,EAAE,EAClB,IAAIE,eAAe,EAAE,EACrB,uBAAuB,EACvB,aAAa,CACL;;AAEV;AACA;AACA;AACA;AACA;AACO,MAAME,UAAU,GAAAH,OAAA,CAAAG,UAAA,GAAG,OAAOD,WAAW,CAACE,IAAI,CAAC,GAAG,CAAC,GAAG;;AAEzD;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,kBAAqC,GAAAL,OAAA,CAAAK,kBAAA,GAAG,CACnD,2BAA2B,EAC3B,4BAA4B,EAC5B,mCAAmC,CACpC;;AAED;AACA;AACA;AACA;AACA","ignoreList":[]}
1
+ {"version":3,"names":["WEB5_ROOT_ID","exports","WEB5_ROOT_CLASS","WEB5_SCOPES","WEB5_SCOPE","join","WEB5_GLOBAL_TOKENS"],"sources":["../../src/hostScope.ts"],"sourcesContent":["/**\n * The mount-scope contract.\n *\n * Several packages have to agree on where Web5 content begins in a host\n * document:\n *\n * - **web5-core** scopes its own CSS to it (`base-utilities.css` already\n * targets `#root`).\n * - **the client build** compiles every selector against it (`scopeCss` in\n * `web5-core/scripts/scope-css.ts`).\n * - **web50-server-ui** stamps `WEB5_ROOT_CLASS` on the element it mounts\n * into, and renders the debug panel into `.debug-view`.\n * - **embed-placement** mounts the *same* client bundle into\n * `[data-web5-placement]` slots on host pages.\n *\n * One home for the list, so those cannot drift.\n *\n * ## Why it is a list and not just `#root`\n *\n * A placement renders client components **outside** `#root`, on the merchant's\n * own PDP. A stylesheet scoped to `#root` alone leaves every placement — and the\n * debug panel — completely unstyled. `w5-client-circana` and\n * `w5-client-feature-com` each discovered this and each hardcoded their own\n * list; this constant is what replaces both.\n */\nexport const WEB5_ROOT_ID = 'root';\n\nexport const WEB5_ROOT_CLASS = 'w5-root';\n\n/**\n * Every place Web5 content can be mounted.\n *\n * `#root` is the id the host runtime has always created, kept so the compiled\n * stylesheet matches before any script runs. `.w5-root` is stamped at mount and\n * keeps the contract working if the host ever renames the element.\n */\nexport const WEB5_SCOPES = [\n `#${WEB5_ROOT_ID}`,\n `.${WEB5_ROOT_CLASS}`,\n '[data-web5-placement]',\n '.debug-view',\n] as const;\n\n/**\n * `:is()` takes the specificity of its most specific argument, so this is worth\n * (1,0,0) whichever branch matches — enough to outrank the (0,1,1) descendant\n * selectors host themes use for rich-text typography.\n */\nexport const WEB5_SCOPE = `:is(${WEB5_SCOPES.join(',')})`;\n\n/**\n * Custom properties the **host** sets on `:root` at runtime. Their declarations\n * must stay global: moved into the scope they would shadow the host's value for\n * our own subtree, which is precisely where it is needed.\n *\n * Kept in sync with what `web50-server-ui` and the host offset injectors write.\n */\nexport const WEB5_GLOBAL_TOKENS: readonly RegExp[] = [\n /^--web5-host-left-offset$/,\n /^--web5-host-right-offset$/,\n /^--web5-window-scroll-top-offset$/,\n];\n\n/**\n * Per-client overrides for the host adaptation web50-server-ui performs at\n * mount. Shared behaviour, client values — a client package supplies this on\n * `clientConfig.hostFit` and never forks the implementation.\n */\nexport interface HostFitConfig {\n /** Master switch. Default `true`. */\n enabled?: boolean;\n /**\n * What \"the full available width\" means on this site. Default\n * `'main, [role=\"main\"]'`; falls back to `<body>` when nothing matches.\n */\n containerSelector?: string;\n /**\n * Widen the page's content container to the host container's content box.\n * Default **`false`** — opt in per client.\n *\n * Off by default because widening changes the layout of hosts that are\n * already sized correctly; only a client whose host constrains it (a theme\n * that drops the mount into a narrow reading column) needs this.\n */\n bleed?: boolean;\n /**\n * Sticky-header height. `'auto'` (default) measures it; a number pins it.\n *\n * Prefer pinning where the host chrome is known. Circana's\n * `inject-host-nav-offset` measured side rails at runtime, hit false\n * positives in production (host layout containers and full-height nav panels\n * matched the filter), and was changed to static values — the same trap\n * applies to any measured host geometry.\n */\n topInset?: number | 'auto';\n /**\n * Height of the chrome the host pins to the *bottom* of the viewport — a\n * cookie bar, a sticky add-to-cart bar, Shopify's storefront preview bar.\n * `'auto'` (default) measures it; a number pins it.\n *\n * The mirror of {@link topInset}, and it exists for the same reason: the\n * prompt input is `position: fixed; bottom: 0`, so anything the host pins\n * down there covers it. Same trap, too — prefer pinning where the host\n * chrome is known and constant.\n */\n bottomInset?: number | 'auto';\n /**\n * Hide the host's own page-title heading where it sits above the mount.\n * Default **`false`** — opt in per client.\n *\n * A Web5 page opens with its own hero `h1`, so on a host that also prints the\n * CMS page title the visitor reads the page name twice and the document ends\n * up with two `h1`s. Every standard Shopify theme does this on `/pages/*` —\n * Dawn as `h1.main-page-title` before the `.rte`, Horizon as a `text-block`\n * before the block we mount into — hence a shared switch and not a per-theme\n * fork.\n *\n * Off by default because a heading above us is only reliably *ours to remove*\n * when the mount owns the page. A placement, or a host that puts Web5 beside\n * real editorial content, must keep it.\n */\n hideHostTitle?: boolean;\n /**\n * Collapse the host's padding and margin above the mount. Default\n * **`false`** — opt in per client.\n *\n * Only dead space goes: the walk stops at the first ancestor with anything\n * visible rendering above us, so a host that does put content over the mount\n * keeps its separation. Pairs with {@link hideHostTitle}, which is what takes\n * the title's own row out of that walk.\n */\n flushTop?: boolean;\n}\n"],"mappings":";;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,YAAY,GAAAC,OAAA,CAAAD,YAAA,GAAG,MAAM;AAE3B,MAAME,eAAe,GAAAD,OAAA,CAAAC,eAAA,GAAG,SAAS;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,WAAW,GAAAF,OAAA,CAAAE,WAAA,GAAG,CACzB,IAAIH,YAAY,EAAE,EAClB,IAAIE,eAAe,EAAE,EACrB,uBAAuB,EACvB,aAAa,CACL;;AAEV;AACA;AACA;AACA;AACA;AACO,MAAME,UAAU,GAAAH,OAAA,CAAAG,UAAA,GAAG,OAAOD,WAAW,CAACE,IAAI,CAAC,GAAG,CAAC,GAAG;;AAEzD;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,kBAAqC,GAAAL,OAAA,CAAAK,kBAAA,GAAG,CACnD,2BAA2B,EAC3B,4BAA4B,EAC5B,mCAAmC,CACpC;;AAED;AACA;AACA;AACA;AACA","ignoreList":[]}
package/dist/cjs/index.js CHANGED
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
 
3
3
  exports.__esModule = true;
4
- exports.defaultExtractor = exports.decodeLinkText = exports.createWixAuthFetch = exports.createSdkRegistry = exports.createPageSection = exports.createFeatureToggleReader = exports.createErrorMarkdown = exports.convertToBlockElementsWithMapping = exports.convertToBlockElements = exports.computeContentBBox = exports.cn = exports.clearForwardStack = exports.buildProbeUrl = exports.buildPlacementDependencies = exports.buildImageSearchFilter = exports.backgroundFilter = exports.analyzeBackdrop = exports.addToCart = exports.Web5UrlType = exports.WEB5_USER_QUERY_EVENT = exports.WEB5_SCOPES = exports.WEB5_SCOPE = exports.WEB5_ROOT_ID = exports.WEB5_ROOT_CLASS = exports.WEB5_REDIRECT_EVENT = exports.WEB5_GLOBAL_TOKENS = exports.WEB5_ANSWER_UPDATED_EVENT = exports.UserQueryProvider = exports.UserQuery = exports.UnifiedMarkdownParser = exports.UnifiedLink = exports.TextBlockSectionDefinition = exports.TableRow = exports.TableHeader = exports.TableHead = exports.TableFooter = exports.TableCell = exports.TableCaption = exports.TableBody = exports.Table = exports.SmartIcon = exports.SkipNodesSectionDefinition = exports.ShopifyStorefrontClient = exports.SectionSkeleton = exports.SearchSectionDefinition = exports.SearchSection = exports.STREAMING_TIMEOUT_MS = exports.REFRESH_PROMPTS_WINDOW_MS = exports.REFRESH_PROMPTS_UNTIL_KEY = exports.PromptEntryEmptyState = exports.PlacementSmoothHeight = exports.PlacementResponseRenderer = exports.PlacementPayloadProvider = exports.PlacementLoader = exports.PRODUCT_BY_HANDLE_QUERY = exports.PRODUCT_BACK_SESSION_KEY = exports.OptimizedImage = exports.NextStepsSectionDefinition = exports.MarkdownText = exports.MATCH_DEBUG_QUERY_PARAM = exports.MATCH_DEBUG_KEY = exports.Loader = exports.ListItemsSectionDefinition = exports.LinkType = exports.LIST_ITEMS_ENDPOINT = exports.KpiSectionDefinition = exports.ImageSearchFilterToken = exports.HtmlCommentSectionDefinition = exports.HeroSectionDefinition = exports.HeroEntitySectionDefinition = exports.FeedbackBar = exports.FeatureToggleProvider = exports.FeatureSection9PlusDefinition = exports.FeatureCardsSectionDefinition = exports.FallbackSectionDefinition = exports.ErrorSectionDefinition = exports.EntitySectionDefinition = exports.EntityCollectionSectionDefinition = exports.EXPERIMENT_IDS = exports.ERROR_MARKDOWN = exports.Disclaimer = exports.DiagnosticsCollector = exports.DIAGNOSTIC_TYPES = exports.DEFAULT_ERROR_TEMPLATES = exports.DEFAULT_BACKEND_ENVIRONMENT = exports.CtaBannerSectionDefinition = exports.ComponentTracking = exports.ComponentRegistry = exports.ComponentDependenciesProvider = exports.ComparisonSectionDefinition = exports.ChipsProvider = exports.CalloutSectionDefinition = exports.CalloutBlock = exports.COLLECTION_BY_HANDLE_QUERY = exports.CLIENT_IDS = exports.CALLOUT_KINDS = exports.BottomContainer = exports.BACKEND_ENVIRONMENT_QUERY_PARAM = exports.BACKEND_ENVIRONMENT_KEY = exports.ARTICLE_BY_HANDLE_QUERY = void 0;
5
- exports.setMatchDebug = exports.setForwardStack = exports.setChatId = exports.setBackendEnvironment = exports.rgbToHsl = exports.resolveShopifyEntity = exports.resolveShopifyConfig = exports.resolveErrorTemplate = exports.resolveClientBundleUrl = exports.resetMatchDebugCache = exports.resetChatIdForTests = exports.registerEntityExtractor = exports.readProductBackHandoff = exports.pushToForwardStack = exports.pushPromptSubmit = exports.pushLinkClick = exports.pushExit = exports.pushEvent = exports.pushError = exports.pushEntityFiltered = exports.preprocessMarkdown = exports.popFromForwardStack = exports.parseWeb5Url = exports.parseMarkdownToComponents = exports.parseMarkdownToAst = exports.parseEntityLink = exports.parseAstToMarkdown = exports.normalizeImageUrl = exports.normalizeIconUrls = exports.nodesToParts = exports.mergeSectionsWithStableReferences = exports.mergeClientConfig = exports.matchMarkdown = exports.matchAllSections = exports.logMatchDebug = exports.loadImagePixels = exports.loadClientBundle = exports.loadBackdropAnalysis = exports.listEntityItems = exports.isWeb5Url = exports.isWeb5SearchUrl = exports.isWeb5ImageUrl = exports.isWeb5IconUrl = exports.isWeb5EntityUrl = exports.isWeb5AskUrl = exports.isWeb5ActionUrl = exports.isValidWeb5Url = exports.isValidLinkUrl = exports.isTrustedBundleHost = exports.isNavigableUrl = exports.isMatchDebugEnabled = exports.isLegacyUrl = exports.isHtmlComment = exports.isEntityLink = exports.hslToRgb = exports.hasImage = exports.hasAnalyticsConsent = exports.getSessionId = exports.getResizedImageUrl = exports.getRefreshPromptsExpiry = exports.getPartsByType = exports.getPartByRole = exports.getOrCreateSessionId = exports.getLinks = exports.getIntentFromMarkdown = exports.getImages = exports.getHeading = exports.getForwardStack = exports.getErrorTypeFromStatus = exports.getEntityExtractor = exports.getContextualImageFilename = exports.getClientBundleOverride = exports.getChatId = exports.getBackendEnvironment = exports.getAllByRole = exports.generateSectionId = exports.generateId = exports.fixMalformedLinks = exports.findKeywordsInContent = exports.findInvalidWeb5Links = exports.findImageInNode = exports.findImageInChildren = exports.fetchProductsByHandlesMap = exports.fetchProductsByHandles = exports.fetchEntityListData = exports.extractProtocol = exports.extractLinkMetadata = exports.extractIntentFromMarkdown = exports.extractContentMarkdown = exports.extractContent = exports.escapeWeb5Links = exports.ensureMinLightness = exports.enrichEntitiesFromPayload = exports.enableRefreshPrompts = exports.disableRefreshPrompts = exports.detectLinkType = exports.deriveRole = exports.deriveLightColor = exports.deriveDarkGradient = exports.deriveDarkColor = void 0;
6
- exports.writeProductBackHandoff = exports.validatePatternWithBlocks = exports.validatePatternSyntax = exports.validatePattern = exports.validateLinkUrl = exports.usesStagingBackend = exports.useWeb5Link = exports.useUserQuery = exports.useResolvedImageSources = exports.useResolveShopifyEntityData = exports.useResolveSearchSpringEntityData = exports.useResolveGenericEntityData = exports.usePlacementPayload = exports.useMarkdownUtils = exports.useFeatureToggles = exports.useFeatureToggle = exports.useEntityTransforms = exports.useDebugImageContext = exports.useConversation = exports.useComponentDependencies = exports.useChips = exports.tryParseComponent = exports.trimTrailingWhitespace = exports.transformToSolutionEntityData = exports.transformToGenericEntityData = exports.transformToBlogPostEntityData = exports.transformShopifyProduct = exports.transformShopifyEntityToItemData = exports.transformShopifyCollection = exports.transformShopifyArticle = exports.transformSSProductToEntityItemData = exports.toRgb = exports.stripMarkdown = exports.startNewChatId = exports.shouldRefreshPrompts = void 0;
4
+ exports.createPageSection = exports.createFeatureToggleReader = exports.createErrorMarkdown = exports.convertToBlockElementsWithMapping = exports.convertToBlockElements = exports.computeContentBBox = exports.cn = exports.clearForwardStack = exports.buildProbeUrl = exports.buildPlacementDependencies = exports.buildImageSearchFilter = exports.backgroundFilter = exports.applyThemeOverrides = exports.analyzeBackdrop = exports.addToCart = exports.Web5UrlType = exports.WEB5_USER_QUERY_EVENT = exports.WEB5_SCOPES = exports.WEB5_SCOPE = exports.WEB5_ROOT_ID = exports.WEB5_ROOT_CLASS = exports.WEB5_REDIRECT_EVENT = exports.WEB5_GLOBAL_TOKENS = exports.WEB5_ANSWER_UPDATED_EVENT = exports.UserQueryProvider = exports.UserQuery = exports.UnifiedMarkdownParser = exports.UnifiedLink = exports.TextBlockSectionDefinition = exports.TableRow = exports.TableHeader = exports.TableHead = exports.TableFooter = exports.TableCell = exports.TableCaption = exports.TableBody = exports.Table = exports.THEME_OVERRIDE_TOKENS = exports.TEMPLATES_MANIFEST_URL = exports.TEMPLATES_CDN_BASE = exports.SmartIcon = exports.SkipNodesSectionDefinition = exports.ShopifyStorefrontClient = exports.SectionSkeleton = exports.SearchSectionDefinition = exports.SearchSection = exports.STREAMING_TIMEOUT_MS = exports.REFRESH_PROMPTS_WINDOW_MS = exports.REFRESH_PROMPTS_UNTIL_KEY = exports.PromptEntryEmptyState = exports.PlacementSmoothHeight = exports.PlacementResponseRenderer = exports.PlacementPayloadProvider = exports.PlacementLoader = exports.PRODUCT_BY_HANDLE_QUERY = exports.PRODUCT_BACK_SESSION_KEY = exports.OptimizedImage = exports.NextStepsSectionDefinition = exports.MarkdownText = exports.MATCH_DEBUG_QUERY_PARAM = exports.MATCH_DEBUG_KEY = exports.Loader = exports.ListItemsSectionDefinition = exports.LinkType = exports.LIST_ITEMS_ENDPOINT = exports.KpiSectionDefinition = exports.ImageSearchFilterToken = exports.HtmlCommentSectionDefinition = exports.HeroSectionDefinition = exports.HeroEntitySectionDefinition = exports.FeedbackBar = exports.FeatureToggleProvider = exports.FeatureSection9PlusDefinition = exports.FeatureCardsSectionDefinition = exports.FallbackSectionDefinition = exports.ErrorSectionDefinition = exports.EntitySectionDefinition = exports.EntityCollectionSectionDefinition = exports.EXPERIMENT_IDS = exports.ERROR_MARKDOWN = exports.Disclaimer = exports.DiagnosticsCollector = exports.DIAGNOSTIC_TYPES = exports.DEFAULT_ERROR_TEMPLATES = exports.DEFAULT_BACKEND_ENVIRONMENT = exports.CtaBannerSectionDefinition = exports.ComponentTracking = exports.ComponentRegistry = exports.ComponentDependenciesProvider = exports.ComparisonSectionDefinition = exports.ChipsProvider = exports.CalloutSectionDefinition = exports.CalloutBlock = exports.COLLECTION_BY_HANDLE_QUERY = exports.CLIENT_IDS = exports.CALLOUT_KINDS = exports.BottomContainer = exports.BACKEND_ENVIRONMENT_QUERY_PARAM = exports.BACKEND_ENVIRONMENT_KEY = exports.ARTICLE_BY_HANDLE_QUERY = void 0;
5
+ exports.resolveErrorTemplate = exports.resolveClientBundleUrl = exports.resetMatchDebugCache = exports.resetChatIdForTests = exports.registerEntityExtractor = exports.readProductBackHandoff = exports.pushToForwardStack = exports.pushPromptSubmit = exports.pushLinkClick = exports.pushExit = exports.pushEvent = exports.pushError = exports.pushEntityFiltered = exports.preprocessMarkdown = exports.popFromForwardStack = exports.parseWeb5Url = exports.parseMarkdownToComponents = exports.parseMarkdownToAst = exports.parseEntityLink = exports.parseAstToMarkdown = exports.normalizeImageUrl = exports.normalizeIconUrls = exports.nodesToParts = exports.mergeSectionsWithStableReferences = exports.mergeClientConfig = exports.matchMarkdown = exports.matchAllSections = exports.logMatchDebug = exports.loadImagePixels = exports.loadClientBundle = exports.loadBackdropAnalysis = exports.listEntityItems = exports.isWeb5Url = exports.isWeb5SearchUrl = exports.isWeb5ImageUrl = exports.isWeb5IconUrl = exports.isWeb5EntityUrl = exports.isWeb5AskUrl = exports.isWeb5ActionUrl = exports.isValidWeb5Url = exports.isValidTemplateId = exports.isValidLinkUrl = exports.isTrustedBundleHost = exports.isTemplatePickerRequested = exports.isNavigableUrl = exports.isMatchDebugEnabled = exports.isLegacyUrl = exports.isHtmlComment = exports.isEntityLink = exports.hslToRgb = exports.hasImage = exports.hasAnalyticsConsent = exports.getTemplateOverride = exports.getSessionId = exports.getResizedImageUrl = exports.getRefreshPromptsExpiry = exports.getPartsByType = exports.getPartByRole = exports.getOrCreateSessionId = exports.getLinks = exports.getIntentFromMarkdown = exports.getImages = exports.getHeading = exports.getForwardStack = exports.getErrorTypeFromStatus = exports.getEntityExtractor = exports.getContextualImageFilename = exports.getClientBundleOverride = exports.getChatId = exports.getBackendEnvironment = exports.getAllByRole = exports.generateSectionId = exports.generateId = exports.fixMalformedLinks = exports.findKeywordsInContent = exports.findInvalidWeb5Links = exports.findImageInNode = exports.findImageInChildren = exports.fetchProductsByHandlesMap = exports.fetchProductsByHandles = exports.fetchEntityListData = exports.extractProtocol = exports.extractLinkMetadata = exports.extractIntentFromMarkdown = exports.extractContentMarkdown = exports.extractContent = exports.escapeWeb5Links = exports.ensureMinLightness = exports.enrichEntitiesFromPayload = exports.enableRefreshPrompts = exports.disableRefreshPrompts = exports.detectLinkType = exports.deriveRole = exports.deriveLightColor = exports.deriveDarkGradient = exports.deriveDarkColor = exports.defaultExtractor = exports.decodeLinkText = exports.createWixAuthFetch = exports.createSdkRegistry = void 0;
6
+ exports.writeProductBackHandoff = exports.validatePatternWithBlocks = exports.validatePatternSyntax = exports.validatePattern = exports.validateLinkUrl = exports.usesStagingBackend = exports.useWeb5Link = exports.useUserQuery = exports.useResolvedImageSources = exports.useResolveShopifyEntityData = exports.useResolveSearchSpringEntityData = exports.useResolveGenericEntityData = exports.usePlacementPayload = exports.useMarkdownUtils = exports.useFeatureToggles = exports.useFeatureToggle = exports.useEntityTransforms = exports.useDebugImageContext = exports.useConversation = exports.useComponentDependencies = exports.useChips = exports.tryParseComponent = exports.trimTrailingWhitespace = exports.transformToSolutionEntityData = exports.transformToGenericEntityData = exports.transformToBlogPostEntityData = exports.transformShopifyProduct = exports.transformShopifyEntityToItemData = exports.transformShopifyCollection = exports.transformShopifyArticle = exports.transformSSProductToEntityItemData = exports.toRgb = exports.stripMarkdown = exports.startNewChatId = exports.shouldRefreshPrompts = exports.setMatchDebug = exports.setForwardStack = exports.setChatId = exports.setBackendEnvironment = exports.rgbToHsl = exports.resolveShopifyEntity = exports.resolveShopifyConfig = void 0;
7
7
  var _clients = require("./clients");
8
8
  exports.CLIENT_IDS = _clients.CLIENT_IDS;
9
9
  exports.EXPERIMENT_IDS = _clients.EXPERIMENT_IDS;
@@ -241,9 +241,17 @@ var _clientBundleOverride = require("./client/clientBundleOverride");
241
241
  exports.getClientBundleOverride = _clientBundleOverride.getClientBundleOverride;
242
242
  exports.isTrustedBundleHost = _clientBundleOverride.isTrustedBundleHost;
243
243
  var _clientBundleUrl = require("./client/clientBundleUrl");
244
+ exports.TEMPLATES_CDN_BASE = _clientBundleUrl.TEMPLATES_CDN_BASE;
245
+ exports.TEMPLATES_MANIFEST_URL = _clientBundleUrl.TEMPLATES_MANIFEST_URL;
246
+ exports.getTemplateOverride = _clientBundleUrl.getTemplateOverride;
247
+ exports.isTemplatePickerRequested = _clientBundleUrl.isTemplatePickerRequested;
248
+ exports.isValidTemplateId = _clientBundleUrl.isValidTemplateId;
244
249
  exports.resolveClientBundleUrl = _clientBundleUrl.resolveClientBundleUrl;
245
250
  var _mergeClientConfig = require("./client/mergeClientConfig");
246
251
  exports.mergeClientConfig = _mergeClientConfig.mergeClientConfig;
252
+ var _applyThemeOverrides = require("./client/applyThemeOverrides");
253
+ exports.applyThemeOverrides = _applyThemeOverrides.applyThemeOverrides;
254
+ exports.THEME_OVERRIDE_TOKENS = _applyThemeOverrides.THEME_OVERRIDE_TOKENS;
247
255
  var _PlacementResponseRenderer = require("./components/placement/PlacementResponseRenderer");
248
256
  exports.PlacementResponseRenderer = _PlacementResponseRenderer.PlacementResponseRenderer;
249
257
  exports.PlacementSmoothHeight = _PlacementResponseRenderer.PlacementSmoothHeight;
@@ -1 +1 @@
1
- {"version":3,"names":["_clients","require","exports","CLIENT_IDS","EXPERIMENT_IDS","_FeatureToggleContext","createFeatureToggleReader","FeatureToggleProvider","useFeatureToggles","useFeatureToggle","_parts","getPartsByType","getPartByRole","getAllByRole","getHeading","getImages","getLinks","extractContent","extractContentMarkdown","deriveRole","_diagnosticTypes","DIAGNOSTIC_TYPES","_imageSearchFilterTypes","buildImageSearchFilter","_imageSearchFilters","ImageSearchFilterToken","backgroundFilter","_componentDefinitions","HeroSectionDefinition","HeroEntitySectionDefinition","KpiSectionDefinition","FeatureCardsSectionDefinition","EntitySectionDefinition","EntityCollectionSectionDefinition","ComparisonSectionDefinition","TextBlockSectionDefinition","CtaBannerSectionDefinition","CalloutSectionDefinition","NextStepsSectionDefinition","FeatureSection9PlusDefinition","ListItemsSectionDefinition","SkipNodesSectionDefinition","HtmlCommentSectionDefinition","SearchSectionDefinition","ErrorSectionDefinition","FallbackSectionDefinition","createSdkRegistry","_registry","ComponentRegistry","_patternValidator","validatePattern","validatePatternSyntax","validatePatternWithBlocks","_markdownBlocks","convertToBlockElements","convertToBlockElementsWithMapping","_linkTypes","Web5UrlType","isWeb5AskUrl","isWeb5EntityUrl","isWeb5ImageUrl","isWeb5IconUrl","isWeb5ActionUrl","isWeb5SearchUrl","isWeb5Url","isNavigableUrl","isValidLinkUrl","isLegacyUrl","_entityLinkParser","parseWeb5Url","isValidWeb5Url","validateLinkUrl","isEntityLink","parseEntityLink","extractProtocol","extractLinkMetadata","_web5LinkValidator","findInvalidWeb5Links","_nodeMatchers","hasImage","isHtmlComment","_match","matchMarkdown","matchAllSections","nodesToParts","_ComponentDependenciesContext","ComponentDependenciesProvider","useComponentDependencies","_UserQueryContext","UserQueryProvider","useUserQuery","_ChipsContext","ChipsProvider","useChips","_entity","defaultExtractor","enrichEntitiesFromPayload","fetchEntityListData","listEntityItems","LIST_ITEMS_ENDPOINT","getEntityExtractor","registerEntityExtractor","transformToSolutionEntityData","transformToBlogPostEntityData","transformToGenericEntityData","_callout","CALLOUT_KINDS","_useWeb5Link","useWeb5Link","_useConversation","useConversation","_useDebugImageContext","useDebugImageContext","_useResolvedImageSources","useResolvedImageSources","_useResolveGenericEntityData","useResolveGenericEntityData","_useEntityTransforms","useEntityTransforms","_useMarkdownUtils","useMarkdownUtils","_useResolveShopifyEntityData","useResolveShopifyEntityData","_useResolveSearchSpringEntityData","useResolveSearchSpringEntityData","_searchspring","fetchProductsByHandles","fetchProductsByHandlesMap","transformSSProductToEntityItemData","_cart","addToCart","_shopify","ShopifyStorefrontClient","resolveShopifyConfig","resolveShopifyEntity","transformShopifyProduct","transformShopifyCollection","transformShopifyArticle","transformShopifyEntityToItemData","PRODUCT_BY_HANDLE_QUERY","COLLECTION_BY_HANDLE_QUERY","ARTICLE_BY_HANDLE_QUERY","_utils","cn","_imageUtils","normalizeImageUrl","getResizedImageUrl","_imageBackdrop","analyzeBackdrop","computeContentBBox","buildProbeUrl","loadImagePixels","loadBackdropAnalysis","_parseUtils","stripMarkdown","_colorUtils","rgbToHsl","hslToRgb","ensureMinLightness","toRgb","deriveDarkColor","deriveDarkGradient","deriveLightColor","_analyticsEvents","pushEvent","pushPromptSubmit","pushLinkClick","pushError","pushExit","pushEntityFiltered","hasAnalyticsConsent","_errors","ERROR_MARKDOWN","getErrorTypeFromStatus","createErrorMarkdown","STREAMING_TIMEOUT_MS","DEFAULT_ERROR_TEMPLATES","resolveErrorTemplate","_navigationStack","getForwardStack","setForwardStack","clearForwardStack","pushToForwardStack","popFromForwardStack","_UserQuery","UserQuery","_productBackHandoff","PRODUCT_BACK_SESSION_KEY","writeProductBackHandoff","readProductBackHandoff","_PromptEntryEmptyState","PromptEntryEmptyState","_SearchSection","SearchSection","_FeedbackBar","FeedbackBar","_Disclaimer","Disclaimer","_BottomContainer","BottomContainer","_MarkdownText","MarkdownText","_CalloutBlock","CalloutBlock","_OptimizedImage","OptimizedImage","_SectionSkeleton","SectionSkeleton","_SmartIcon","SmartIcon","_Loader","Loader","_PlacementLoader","PlacementLoader","_UnifiedLink","UnifiedLink","detectLinkType","LinkType","_table","Table","TableHeader","TableBody","TableFooter","TableHead","TableRow","TableCell","TableCaption","_userQueryEvent","WEB5_USER_QUERY_EVENT","_answerUpdatedEvent","WEB5_ANSWER_UPDATED_EVENT","_redirectEvent","WEB5_REDIRECT_EVENT","_loadClientBundle","loadClientBundle","_clientBundleOverride","getClientBundleOverride","isTrustedBundleHost","_clientBundleUrl","resolveClientBundleUrl","_mergeClientConfig","mergeClientConfig","_PlacementResponseRenderer","PlacementResponseRenderer","PlacementSmoothHeight","_buildPlacementDependencies","buildPlacementDependencies","_PlacementPayloadContext","PlacementPayloadProvider","usePlacementPayload","_unifiedMarkdownParser","UnifiedMarkdownParser","parseMarkdownToAst","parseAstToMarkdown","_markdownPreprocessor","escapeWeb5Links","fixMalformedLinks","trimTrailingWhitespace","normalizeIconUrls","decodeLinkText","preprocessMarkdown","_componentTracking","ComponentTracking","_contentKeywordMatcher","findKeywordsInContent","getContextualImageFilename","_intentExtractor","extractIntentFromMarkdown","getIntentFromMarkdown","_propsExtractor","createPageSection","generateSectionId","generateId","findImageInNode","findImageInChildren","_diagnosticsCollector","DiagnosticsCollector","_refreshPrompts","REFRESH_PROMPTS_UNTIL_KEY","REFRESH_PROMPTS_WINDOW_MS","getRefreshPromptsExpiry","shouldRefreshPrompts","enableRefreshPrompts","disableRefreshPrompts","_backendEnvironment","BACKEND_ENVIRONMENT_KEY","BACKEND_ENVIRONMENT_QUERY_PARAM","DEFAULT_BACKEND_ENVIRONMENT","getBackendEnvironment","setBackendEnvironment","usesStagingBackend","_matchDebug","MATCH_DEBUG_KEY","MATCH_DEBUG_QUERY_PARAM","isMatchDebugEnabled","setMatchDebug","resetMatchDebugCache","logMatchDebug","_wixAuthFetch","createWixAuthFetch","_sessionManager","getOrCreateSessionId","getSessionId","getChatId","startNewChatId","setChatId","resetChatIdForTests","_componentParser","parseMarkdownToComponents","tryParseComponent","mergeSectionsWithStableReferences","_hostScope","WEB5_ROOT_ID","WEB5_ROOT_CLASS","WEB5_SCOPES","WEB5_SCOPE","WEB5_GLOBAL_TOKENS"],"sources":["../../src/index.ts"],"sourcesContent":["// Client IDs and experiment IDs\nexport { CLIENT_IDS, EXPERIMENT_IDS } from './clients';\n\nexport {\n type EmbedFeatureToggleResult,\n type FeatureToggleReader,\n createFeatureToggleReader,\n FeatureToggleProvider,\n useFeatureToggles,\n useFeatureToggle,\n} from './featureToggles/FeatureToggleContext';\n\n// Dev-only chrome injection contract for client packages\nexport type { DevEnvironment } from './client/devEnvironment';\n\n// Part types and helpers\nexport {\n type PartType,\n type Part,\n type HeadingPart,\n type ImagePart,\n type LinkPart,\n type ListPart,\n type ListItemPart,\n type KpiItemPart,\n type CardPart,\n type IconPart,\n type CalloutPart,\n type EntityPart,\n getPartsByType,\n getPartByRole,\n getAllByRole,\n getHeading,\n getImages,\n getLinks,\n extractContent,\n extractContentMarkdown,\n deriveRole,\n} from './parts/parts';\n\n// Component types\nexport type {\n BaseCompProps,\n SlotCompProps,\n SectionCompProps,\n SectionCompPropsWithSlot,\n TextCompProps,\n ButtonCompProps,\n ImageCompProps,\n BadgeCompProps,\n HeroButton,\n KpiItemCompProps,\n FeatureItemCompProps,\n FeatureCardCompProps,\n EntityItemData,\n EntityItem,\n GenericEntityData,\n GenericEntityCompProps,\n ComparisonRow,\n ComparisonColumn,\n AiNarrativeCompProps,\n HeroCompProps,\n HeroEntityCompProps,\n KpiCompProps,\n FeatureCardsCompProps,\n EntityCompProps,\n ComparisonCompProps,\n TextBlockCompProps,\n Component,\n BaseComponent,\n SlotComponent,\n SectionComponent,\n TextComponent,\n ButtonComponent,\n ImageComponent,\n BadgeComponent,\n KpiItemComponent,\n FeatureItemComponent,\n FeatureCardComponent,\n GenericEntityComponent,\n AiNarrativeComponent,\n ComparisonSectionComponent,\n TextBlockSectionComponent,\n HeroSectionComponent,\n HeroEntitySectionComponent,\n KpiSectionComponent,\n FeatureCardsSectionComponent,\n EntitySectionComponent,\n PropsOf,\n SectionFixture,\n CtaBannerCompProps,\n CtaBannerSectionComponent,\n CalloutCompProps,\n CalloutSectionComponent,\n NextStepsCompProps,\n NextStepsSectionComponent,\n FeatureSection9PlusCompProps,\n FeatureSection9PlusSectionComponent,\n ListItemsSectionCompProps,\n ListItemsSectionComponent,\n ErrorCompProps,\n ErrorSectionComponent,\n NullCompProps,\n NullSectionComponent,\n SolutionEntityCompProps,\n SolutionEntitySectionComponent,\n SolutionEntityData,\n BlogEntityCompProps,\n BlogEntitySectionComponent,\n BlogEntityData,\n GeneralTextCompProps,\n GeneralTextSectionComponent,\n PersonalizedNarrativeCompProps,\n PersonalizedNarrativeSectionComponent,\n} from './component/types';\n\n// Section definition\nexport type {\n SectionDefinition,\n ParseContext,\n ContextualImageResult,\n} from './component/section-definition';\n\n// Diagnostic types\nexport { DIAGNOSTIC_TYPES } from './component/diagnosticTypes';\nexport type { DiagnosticType } from './component/diagnosticTypes';\n\n// Image search filters\nexport {\n buildImageSearchFilter,\n type ImageSearchFilterString,\n} from './image/imageSearchFilterTypes';\nexport {\n ImageSearchFilterToken,\n backgroundFilter,\n} from './image/imageSearchFilters';\nexport type {\n ContextualImageAsset,\n ImageSourceInput,\n ResolvedImageSource,\n ResolvedImageSourceKind,\n} from './image/contextualImageTypes';\n\n// Section definition classes + createSdkRegistry\nexport {\n HeroSectionDefinition,\n HeroEntitySectionDefinition,\n KpiSectionDefinition,\n FeatureCardsSectionDefinition,\n EntitySectionDefinition,\n EntityCollectionSectionDefinition,\n ComparisonSectionDefinition,\n TextBlockSectionDefinition,\n CtaBannerSectionDefinition,\n CalloutSectionDefinition,\n NextStepsSectionDefinition,\n FeatureSection9PlusDefinition,\n ListItemsSectionDefinition,\n SkipNodesSectionDefinition,\n HtmlCommentSectionDefinition,\n SearchSectionDefinition,\n ErrorSectionDefinition,\n FallbackSectionDefinition,\n createSdkRegistry,\n} from './component/componentDefinitions';\n\n// Registry\nexport { ComponentRegistry } from './registry';\nexport type {\n SlotOptions,\n SectionOptions,\n SectionRegistration,\n SlotNode,\n SlotIntentNode,\n SectionIntentNode,\n SectionNode,\n SlotVariant,\n SectionVariant,\n RegistryCatalog,\n ActionResult,\n ActionHandler,\n} from './registry';\n\n// Pattern validator\nexport {\n validatePattern,\n validatePatternSyntax,\n validatePatternWithBlocks,\n type PatternValidationResult,\n type BlockElement,\n type EnrichedBlockElement,\n type LinkMetadata,\n type LinkAttribute,\n} from './patternValidator';\n\n// Markdown blocks\nexport {\n convertToBlockElements,\n convertToBlockElementsWithMapping,\n type BlockElementsWithMapping,\n} from './markdownBlocks';\n\n// Link types, enum & guards\nexport {\n Web5UrlType,\n type Web5AskUrl,\n type Web5EntityUrl,\n type Web5ImageUrl,\n type Web5IconUrl,\n type Web5ActionUrl,\n type Web5SearchUrl,\n type Web5Url,\n type HttpsUrl,\n type HttpUrl,\n type MailtoUrl,\n type RelativeUrl,\n type NavigableUrl,\n type ValidLinkUrl,\n type AnyKnownUrl,\n type LegacyUrl,\n isWeb5AskUrl,\n isWeb5EntityUrl,\n isWeb5ImageUrl,\n isWeb5IconUrl,\n isWeb5ActionUrl,\n isWeb5SearchUrl,\n isWeb5Url,\n isNavigableUrl,\n isValidLinkUrl,\n isLegacyUrl,\n} from './types/link-types';\n\n// Entity/URL parsing\nexport {\n parseWeb5Url,\n isValidWeb5Url,\n validateLinkUrl,\n type Web5UrlParsed,\n type Web5AskParsed,\n type Web5EntityParsed,\n type Web5ImageParsed,\n type Web5IconParsed,\n type Web5ActionParsed,\n type Web5SearchParsed,\n isEntityLink,\n parseEntityLink,\n extractProtocol,\n extractLinkMetadata,\n} from './utils/entityLinkParser';\n\n// Web5 link validation\nexport {\n findInvalidWeb5Links,\n type InvalidWeb5Link,\n} from './utils/web5LinkValidator';\n\n// Node matchers\nexport { hasImage, isHtmlComment } from './utils/nodeMatchers';\n\n// Match API\nexport {\n matchMarkdown,\n type MarkdownMatchResult,\n matchAllSections,\n type MatchAllSectionsResult,\n nodesToParts,\n} from './match';\n\n// ---------------------------------------------------------------------------\n// DI Infrastructure (moved from @wix/w5-client-circana)\n// ---------------------------------------------------------------------------\n\n// DI context and provider\nexport {\n ComponentDependenciesProvider,\n useComponentDependencies,\n type ComponentDependenciesProviderProps,\n} from './context/ComponentDependenciesContext';\n\n// Raw user query for the current response page\nexport {\n UserQueryProvider,\n useUserQuery,\n type UserQueryProviderProps,\n} from './context/UserQueryContext';\n\n// Chips context (suggestion chips shared between SearchSection and error states)\nexport {\n ChipsProvider,\n useChips,\n type SuggestionChip,\n} from './context/ChipsContext';\n\n// DI types\nexport type {\n ComponentDependencies,\n Web5LinkApi,\n ConversationApi,\n SendMessageTrackingOptions,\n SendMessageOptions,\n ComparisonSubmitPayload,\n ComparisonSelectedProduct,\n ProductComparisonSelectionState,\n ProductComparisonApi,\n EntityTransforms,\n MarkdownUtils,\n ResolveGenericEntityDataOptions,\n} from './types/dependencies';\nexport type {\n ApiPayloadItem,\n EntityTypeConfig,\n EntityConfig,\n EntityExtractionContext,\n} from './types/entity';\nexport {\n defaultExtractor,\n enrichEntitiesFromPayload,\n fetchEntityListData,\n listEntityItems,\n LIST_ITEMS_ENDPOINT,\n getEntityExtractor,\n registerEntityExtractor,\n transformToSolutionEntityData,\n transformToBlogPostEntityData,\n transformToGenericEntityData,\n} from './entity';\nexport type {\n EntityExtractor,\n FetchEntityListDataOptions,\n ListEntityItemsOptions,\n} from './entity';\nexport { CALLOUT_KINDS, type CalloutKind, type Callout } from './types/callout';\n\n// Wrapper hooks\nexport { useWeb5Link } from './hooks/useWeb5Link';\nexport { useConversation } from './hooks/useConversation';\nexport { useDebugImageContext } from './hooks/useDebugImageContext';\nexport { useResolvedImageSources } from './hooks/useResolvedImageSources';\nexport { useResolveGenericEntityData } from './hooks/useResolveGenericEntityData';\nexport { useEntityTransforms } from './hooks/useEntityTransforms';\nexport { useMarkdownUtils } from './hooks/useMarkdownUtils';\nexport { useResolveShopifyEntityData } from './hooks/useResolveShopifyEntityData';\nexport { useResolveSearchSpringEntityData } from './hooks/useResolveSearchSpringEntityData';\n\n// SearchSpring\nexport {\n fetchProductsByHandles,\n fetchProductsByHandlesMap,\n transformSSProductToEntityItemData,\n} from './services/searchspring';\nexport type {\n SearchSpringConfig,\n SSProduct,\n SSSearchResponse,\n SSSizeData,\n} from './services/searchspring';\n\n// Shopify Storefront API\n// Cart actions\nexport { addToCart } from './services/cart';\n\nexport {\n ShopifyStorefrontClient,\n resolveShopifyConfig,\n resolveShopifyEntity,\n transformShopifyProduct,\n transformShopifyCollection,\n transformShopifyArticle,\n transformShopifyEntityToItemData,\n PRODUCT_BY_HANDLE_QUERY,\n COLLECTION_BY_HANDLE_QUERY,\n ARTICLE_BY_HANDLE_QUERY,\n} from './services/shopify';\nexport type {\n ShopifyStorefrontConfig,\n ShopifyProduct,\n ShopifyCollection,\n ShopifyArticle,\n ShopifyImage,\n ShopifyMoneyV2,\n} from './services/shopify';\n\n// Utilities\nexport { cn } from './lib/utils';\nexport { normalizeImageUrl, getResizedImageUrl } from './utils/image-utils';\nexport {\n analyzeBackdrop,\n computeContentBBox,\n buildProbeUrl,\n loadImagePixels,\n loadBackdropAnalysis,\n type BackdropAnalysis,\n type ContentBBox,\n type ImagePixels,\n} from './utils/imageBackdrop';\nexport { stripMarkdown } from './component/componentDefinitions/parse-utils';\n\n// Color utilities\nexport {\n type RGB,\n rgbToHsl,\n hslToRgb,\n ensureMinLightness,\n toRgb,\n deriveDarkColor,\n deriveDarkGradient,\n deriveLightColor,\n} from './color/colorUtils';\n\n// Analytics\nexport {\n pushEvent,\n pushPromptSubmit,\n pushLinkClick,\n pushError,\n pushExit,\n pushEntityFiltered,\n hasAnalyticsConsent,\n type EntityFilteredReason,\n} from './utils/analyticsEvents';\n\n// Error handling types and utilities\nexport {\n type ConversationErrorType,\n ERROR_MARKDOWN,\n getErrorTypeFromStatus,\n createErrorMarkdown,\n STREAMING_TIMEOUT_MS,\n type ErrorActionType,\n type ErrorIconType,\n type ErrorTemplateButton,\n type ErrorTemplate,\n type ErrorTemplateOverrides,\n DEFAULT_ERROR_TEMPLATES,\n resolveErrorTemplate,\n} from './errors';\n\n// Navigation utilities\nexport {\n getForwardStack,\n setForwardStack,\n clearForwardStack,\n pushToForwardStack,\n popFromForwardStack,\n} from './utils/navigationStack';\n\n// UI components\nexport {\n UserQuery,\n type UserQueryProps,\n type ProductBackContext,\n} from './components/ui/UserQuery';\nexport {\n PRODUCT_BACK_SESSION_KEY,\n writeProductBackHandoff,\n readProductBackHandoff,\n type ProductBackHandoff,\n} from './utils/productBackHandoff';\nexport {\n PromptEntryEmptyState,\n type PromptEntryEmptyStateProps,\n} from './components/ui/PromptEntryEmptyState';\nexport {\n SearchSection,\n type SearchSectionProps,\n type SearchSectionHandle,\n type ScrollChip,\n} from './components/ui/SearchSection';\nexport {\n FeedbackBar,\n type FeedbackBarProps,\n type FeedbackCategoryOption,\n type FeedbackSentiment,\n type FeedbackSubmitInput,\n} from './components/ui/FeedbackBar';\nexport {\n Disclaimer,\n type DisclaimerProps,\n} from './components/ui/Disclaimer';\nexport {\n BottomContainer,\n type BottomContainerProps,\n} from './components/ui/BottomContainer';\nexport { MarkdownText } from './components/ui/MarkdownText';\nexport {\n CalloutBlock,\n type CalloutBlockProps,\n} from './components/ui/CalloutBlock';\nexport {\n OptimizedImage,\n type OptimizedImageProps,\n} from './components/ui/OptimizedImage';\nexport {\n SectionSkeleton,\n type SectionSkeletonProps,\n} from './components/ui/SectionSkeleton';\nexport { SmartIcon, type SmartIconProps } from './components/ui/SmartIcon';\nexport { Loader, type LoaderProps } from './components/ui/Loader';\nexport {\n PlacementLoader,\n type PlacementLoaderProps,\n} from './components/ui/PlacementLoader';\nexport {\n UnifiedLink,\n detectLinkType,\n type UnifiedLinkProps,\n LinkType,\n type LinkVariant,\n} from './components/ui/UnifiedLink';\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n} from './components/ui/table';\n\n// Placement (DL #088, DL #102 behavior declarations)\nexport type {\n PlacementBehaviorConfig,\n PlacementConfig,\n PlacementPrompts,\n} from './types/placement';\n\n// Cross-bundle user-query broadcast event (DL #097 D2)\nexport {\n WEB5_USER_QUERY_EVENT,\n type Web5UserQueryEventDetail,\n type Web5UserQueryEvent,\n} from './types/userQueryEvent';\n\n// Cross-bundle answer-updated broadcast event (B2B-4121)\nexport {\n WEB5_ANSWER_UPDATED_EVENT,\n type Web5AnswerUpdatedEventDetail,\n type Web5AnswerUpdatedEvent,\n} from './types/answerUpdatedEvent';\n\n// Cross-bundle redirect broadcast event (DL #098 D3)\nexport {\n WEB5_REDIRECT_EVENT,\n type Web5RedirectEventDetail,\n type Web5RedirectEvent,\n type Web5RedirectReason,\n} from './types/redirectEvent';\n// `placementFilter` was removed — hero/next-steps exclusion is the prompt's job\n// and placement-specific designs belong as `{ placement: true }` registry\n// variants (resolved automatically via `resolveSection(type, { placement: true })`).\n\n// Client bundle loader (DL #088 D3.3)\nexport { loadClientBundle } from './client/loadClientBundle';\n\n// `?clientBundleUrl=` dev override — shared by `web50-server-ui` and\n// `embed-placement` so the trusted-host gate can't drift between them.\nexport {\n getClientBundleOverride,\n isTrustedBundleHost,\n} from './client/clientBundleOverride';\n\n// Client-UMD URL resolution (DL #094 per-msid, DL #129 per-template) and the\n// universal bundle←backend config merge (DL #129 Q3/Q7) — shared by\n// `web50-server-ui` and `embed-placement`, the two client-bundle load sites.\nexport { resolveClientBundleUrl } from './client/clientBundleUrl';\nexport { mergeClientConfig, type DeepPartial } from './client/mergeClientConfig';\n\n// Placement renderer + DI helper (DL #088 D3.2, D3.4)\nexport {\n PlacementResponseRenderer,\n PlacementSmoothHeight,\n type PlacementResponseRendererProps,\n type PlacementSection,\n type PlacementVariant,\n} from './components/placement/PlacementResponseRenderer';\nexport {\n buildPlacementDependencies,\n type BuildPlacementDependenciesOptions,\n} from './components/placement/buildPlacementDependencies';\nexport {\n PlacementPayloadProvider,\n usePlacementPayload,\n type PlacementPayloadContextValue,\n} from './components/placement/PlacementPayloadContext';\n\n// Markdown parsing utilities — lifted from web50-server-ui (DL #088 B9.1)\nexport {\n UnifiedMarkdownParser,\n parseMarkdownToAst,\n parseAstToMarkdown,\n} from './utils/unifiedMarkdownParser';\nexport {\n escapeWeb5Links,\n fixMalformedLinks,\n trimTrailingWhitespace,\n normalizeIconUrls,\n decodeLinkText,\n preprocessMarkdown,\n type PreprocessorDiagnostic,\n type PreprocessResult,\n} from './utils/markdownPreprocessor';\nexport {\n ComponentTracking,\n type ComponentNodeRange,\n} from './utils/componentTracking';\nexport {\n findKeywordsInContent,\n getContextualImageFilename,\n} from './utils/contentKeywordMatcher';\nexport {\n extractIntentFromMarkdown,\n getIntentFromMarkdown,\n type IntentInfo,\n type IntentExtractionOptions,\n type ResponseState,\n} from './utils/intentExtractor';\nexport type { PageSection } from './types/page-section';\nexport {\n createPageSection,\n generateSectionId,\n generateId,\n findImageInNode,\n findImageInChildren,\n type Product,\n type ComparisonProduct,\n type ProductComparisonSectionProps,\n} from './utils/propsExtractor';\nexport {\n DiagnosticsCollector,\n type DiagnosticEntry,\n} from './utils/diagnosticsCollector';\nexport {\n REFRESH_PROMPTS_UNTIL_KEY,\n REFRESH_PROMPTS_WINDOW_MS,\n getRefreshPromptsExpiry,\n shouldRefreshPrompts,\n enableRefreshPrompts,\n disableRefreshPrompts,\n} from './utils/refreshPrompts';\nexport {\n type BackendEnvironment,\n BACKEND_ENVIRONMENT_KEY,\n BACKEND_ENVIRONMENT_QUERY_PARAM,\n DEFAULT_BACKEND_ENVIRONMENT,\n getBackendEnvironment,\n setBackendEnvironment,\n usesStagingBackend,\n} from './utils/backendEnvironment';\nexport {\n MATCH_DEBUG_KEY,\n MATCH_DEBUG_QUERY_PARAM,\n isMatchDebugEnabled,\n setMatchDebug,\n resetMatchDebugCache,\n logMatchDebug,\n} from './utils/matchDebug';\nexport { createWixAuthFetch } from './client/wixAuthFetch';\nexport {\n getOrCreateSessionId,\n getSessionId,\n getChatId,\n startNewChatId,\n setChatId,\n resetChatIdForTests,\n} from './utils/sessionManager';\n\n// Component parser orchestrator — lifted from web50-server-ui (DL #088 B9.5)\nexport {\n parseMarkdownToComponents,\n tryParseComponent,\n mergeSectionsWithStableReferences,\n type ParseMarkdownOptions,\n type ParseMarkdownResult,\n type ComponentMatch,\n type ParserContext,\n} from './component/componentParser';\nexport type {\n ParserClientConfig,\n EnrichEntityProps,\n} from './component/parser-types';\n\n// Host-mount scope contract — shared by web50-server-ui (which stamps the\n// class and mounts), embed-placement (which mounts the same bundle elsewhere),\n// and the client CDN build (which compiles every selector against it).\nexport {\n WEB5_ROOT_ID,\n WEB5_ROOT_CLASS,\n WEB5_SCOPES,\n WEB5_SCOPE,\n WEB5_GLOBAL_TOKENS,\n type HostFitConfig,\n} from './hostScope';\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_clients","require","exports","CLIENT_IDS","EXPERIMENT_IDS","_FeatureToggleContext","createFeatureToggleReader","FeatureToggleProvider","useFeatureToggles","useFeatureToggle","_parts","getPartsByType","getPartByRole","getAllByRole","getHeading","getImages","getLinks","extractContent","extractContentMarkdown","deriveRole","_diagnosticTypes","DIAGNOSTIC_TYPES","_imageSearchFilterTypes","buildImageSearchFilter","_imageSearchFilters","ImageSearchFilterToken","backgroundFilter","_componentDefinitions","HeroSectionDefinition","HeroEntitySectionDefinition","KpiSectionDefinition","FeatureCardsSectionDefinition","EntitySectionDefinition","EntityCollectionSectionDefinition","ComparisonSectionDefinition","TextBlockSectionDefinition","CtaBannerSectionDefinition","CalloutSectionDefinition","NextStepsSectionDefinition","FeatureSection9PlusDefinition","ListItemsSectionDefinition","SkipNodesSectionDefinition","HtmlCommentSectionDefinition","SearchSectionDefinition","ErrorSectionDefinition","FallbackSectionDefinition","createSdkRegistry","_registry","ComponentRegistry","_patternValidator","validatePattern","validatePatternSyntax","validatePatternWithBlocks","_markdownBlocks","convertToBlockElements","convertToBlockElementsWithMapping","_linkTypes","Web5UrlType","isWeb5AskUrl","isWeb5EntityUrl","isWeb5ImageUrl","isWeb5IconUrl","isWeb5ActionUrl","isWeb5SearchUrl","isWeb5Url","isNavigableUrl","isValidLinkUrl","isLegacyUrl","_entityLinkParser","parseWeb5Url","isValidWeb5Url","validateLinkUrl","isEntityLink","parseEntityLink","extractProtocol","extractLinkMetadata","_web5LinkValidator","findInvalidWeb5Links","_nodeMatchers","hasImage","isHtmlComment","_match","matchMarkdown","matchAllSections","nodesToParts","_ComponentDependenciesContext","ComponentDependenciesProvider","useComponentDependencies","_UserQueryContext","UserQueryProvider","useUserQuery","_ChipsContext","ChipsProvider","useChips","_entity","defaultExtractor","enrichEntitiesFromPayload","fetchEntityListData","listEntityItems","LIST_ITEMS_ENDPOINT","getEntityExtractor","registerEntityExtractor","transformToSolutionEntityData","transformToBlogPostEntityData","transformToGenericEntityData","_callout","CALLOUT_KINDS","_useWeb5Link","useWeb5Link","_useConversation","useConversation","_useDebugImageContext","useDebugImageContext","_useResolvedImageSources","useResolvedImageSources","_useResolveGenericEntityData","useResolveGenericEntityData","_useEntityTransforms","useEntityTransforms","_useMarkdownUtils","useMarkdownUtils","_useResolveShopifyEntityData","useResolveShopifyEntityData","_useResolveSearchSpringEntityData","useResolveSearchSpringEntityData","_searchspring","fetchProductsByHandles","fetchProductsByHandlesMap","transformSSProductToEntityItemData","_cart","addToCart","_shopify","ShopifyStorefrontClient","resolveShopifyConfig","resolveShopifyEntity","transformShopifyProduct","transformShopifyCollection","transformShopifyArticle","transformShopifyEntityToItemData","PRODUCT_BY_HANDLE_QUERY","COLLECTION_BY_HANDLE_QUERY","ARTICLE_BY_HANDLE_QUERY","_utils","cn","_imageUtils","normalizeImageUrl","getResizedImageUrl","_imageBackdrop","analyzeBackdrop","computeContentBBox","buildProbeUrl","loadImagePixels","loadBackdropAnalysis","_parseUtils","stripMarkdown","_colorUtils","rgbToHsl","hslToRgb","ensureMinLightness","toRgb","deriveDarkColor","deriveDarkGradient","deriveLightColor","_analyticsEvents","pushEvent","pushPromptSubmit","pushLinkClick","pushError","pushExit","pushEntityFiltered","hasAnalyticsConsent","_errors","ERROR_MARKDOWN","getErrorTypeFromStatus","createErrorMarkdown","STREAMING_TIMEOUT_MS","DEFAULT_ERROR_TEMPLATES","resolveErrorTemplate","_navigationStack","getForwardStack","setForwardStack","clearForwardStack","pushToForwardStack","popFromForwardStack","_UserQuery","UserQuery","_productBackHandoff","PRODUCT_BACK_SESSION_KEY","writeProductBackHandoff","readProductBackHandoff","_PromptEntryEmptyState","PromptEntryEmptyState","_SearchSection","SearchSection","_FeedbackBar","FeedbackBar","_Disclaimer","Disclaimer","_BottomContainer","BottomContainer","_MarkdownText","MarkdownText","_CalloutBlock","CalloutBlock","_OptimizedImage","OptimizedImage","_SectionSkeleton","SectionSkeleton","_SmartIcon","SmartIcon","_Loader","Loader","_PlacementLoader","PlacementLoader","_UnifiedLink","UnifiedLink","detectLinkType","LinkType","_table","Table","TableHeader","TableBody","TableFooter","TableHead","TableRow","TableCell","TableCaption","_userQueryEvent","WEB5_USER_QUERY_EVENT","_answerUpdatedEvent","WEB5_ANSWER_UPDATED_EVENT","_redirectEvent","WEB5_REDIRECT_EVENT","_loadClientBundle","loadClientBundle","_clientBundleOverride","getClientBundleOverride","isTrustedBundleHost","_clientBundleUrl","TEMPLATES_CDN_BASE","TEMPLATES_MANIFEST_URL","getTemplateOverride","isTemplatePickerRequested","isValidTemplateId","resolveClientBundleUrl","_mergeClientConfig","mergeClientConfig","_applyThemeOverrides","applyThemeOverrides","THEME_OVERRIDE_TOKENS","_PlacementResponseRenderer","PlacementResponseRenderer","PlacementSmoothHeight","_buildPlacementDependencies","buildPlacementDependencies","_PlacementPayloadContext","PlacementPayloadProvider","usePlacementPayload","_unifiedMarkdownParser","UnifiedMarkdownParser","parseMarkdownToAst","parseAstToMarkdown","_markdownPreprocessor","escapeWeb5Links","fixMalformedLinks","trimTrailingWhitespace","normalizeIconUrls","decodeLinkText","preprocessMarkdown","_componentTracking","ComponentTracking","_contentKeywordMatcher","findKeywordsInContent","getContextualImageFilename","_intentExtractor","extractIntentFromMarkdown","getIntentFromMarkdown","_propsExtractor","createPageSection","generateSectionId","generateId","findImageInNode","findImageInChildren","_diagnosticsCollector","DiagnosticsCollector","_refreshPrompts","REFRESH_PROMPTS_UNTIL_KEY","REFRESH_PROMPTS_WINDOW_MS","getRefreshPromptsExpiry","shouldRefreshPrompts","enableRefreshPrompts","disableRefreshPrompts","_backendEnvironment","BACKEND_ENVIRONMENT_KEY","BACKEND_ENVIRONMENT_QUERY_PARAM","DEFAULT_BACKEND_ENVIRONMENT","getBackendEnvironment","setBackendEnvironment","usesStagingBackend","_matchDebug","MATCH_DEBUG_KEY","MATCH_DEBUG_QUERY_PARAM","isMatchDebugEnabled","setMatchDebug","resetMatchDebugCache","logMatchDebug","_wixAuthFetch","createWixAuthFetch","_sessionManager","getOrCreateSessionId","getSessionId","getChatId","startNewChatId","setChatId","resetChatIdForTests","_componentParser","parseMarkdownToComponents","tryParseComponent","mergeSectionsWithStableReferences","_hostScope","WEB5_ROOT_ID","WEB5_ROOT_CLASS","WEB5_SCOPES","WEB5_SCOPE","WEB5_GLOBAL_TOKENS"],"sources":["../../src/index.ts"],"sourcesContent":["// Client IDs and experiment IDs\nexport { CLIENT_IDS, EXPERIMENT_IDS } from './clients';\n\nexport {\n type EmbedFeatureToggleResult,\n type FeatureToggleReader,\n createFeatureToggleReader,\n FeatureToggleProvider,\n useFeatureToggles,\n useFeatureToggle,\n} from './featureToggles/FeatureToggleContext';\n\n// Dev-only chrome injection contract for client packages\nexport type { DevEnvironment } from './client/devEnvironment';\n\n// Part types and helpers\nexport {\n type PartType,\n type Part,\n type HeadingPart,\n type ImagePart,\n type LinkPart,\n type ListPart,\n type ListItemPart,\n type KpiItemPart,\n type CardPart,\n type IconPart,\n type CalloutPart,\n type EntityPart,\n getPartsByType,\n getPartByRole,\n getAllByRole,\n getHeading,\n getImages,\n getLinks,\n extractContent,\n extractContentMarkdown,\n deriveRole,\n} from './parts/parts';\n\n// Component types\nexport type {\n BaseCompProps,\n SlotCompProps,\n SectionCompProps,\n SectionCompPropsWithSlot,\n TextCompProps,\n ButtonCompProps,\n ImageCompProps,\n BadgeCompProps,\n HeroButton,\n KpiItemCompProps,\n FeatureItemCompProps,\n FeatureCardCompProps,\n EntityItemData,\n EntityItem,\n GenericEntityData,\n GenericEntityCompProps,\n ComparisonRow,\n ComparisonColumn,\n AiNarrativeCompProps,\n HeroCompProps,\n HeroEntityCompProps,\n KpiCompProps,\n FeatureCardsCompProps,\n EntityCompProps,\n ComparisonCompProps,\n TextBlockCompProps,\n Component,\n BaseComponent,\n SlotComponent,\n SectionComponent,\n TextComponent,\n ButtonComponent,\n ImageComponent,\n BadgeComponent,\n KpiItemComponent,\n FeatureItemComponent,\n FeatureCardComponent,\n GenericEntityComponent,\n AiNarrativeComponent,\n ComparisonSectionComponent,\n TextBlockSectionComponent,\n HeroSectionComponent,\n HeroEntitySectionComponent,\n KpiSectionComponent,\n FeatureCardsSectionComponent,\n EntitySectionComponent,\n PropsOf,\n SectionFixture,\n CtaBannerCompProps,\n CtaBannerSectionComponent,\n CalloutCompProps,\n CalloutSectionComponent,\n NextStepsCompProps,\n NextStepsSectionComponent,\n FeatureSection9PlusCompProps,\n FeatureSection9PlusSectionComponent,\n ListItemsSectionCompProps,\n ListItemsSectionComponent,\n ErrorCompProps,\n ErrorSectionComponent,\n NullCompProps,\n NullSectionComponent,\n SolutionEntityCompProps,\n SolutionEntitySectionComponent,\n SolutionEntityData,\n BlogEntityCompProps,\n BlogEntitySectionComponent,\n BlogEntityData,\n GeneralTextCompProps,\n GeneralTextSectionComponent,\n PersonalizedNarrativeCompProps,\n PersonalizedNarrativeSectionComponent,\n} from './component/types';\n\n// Section definition\nexport type {\n SectionDefinition,\n ParseContext,\n ContextualImageResult,\n} from './component/section-definition';\n\n// Diagnostic types\nexport { DIAGNOSTIC_TYPES } from './component/diagnosticTypes';\nexport type { DiagnosticType } from './component/diagnosticTypes';\n\n// Image search filters\nexport {\n buildImageSearchFilter,\n type ImageSearchFilterString,\n} from './image/imageSearchFilterTypes';\nexport {\n ImageSearchFilterToken,\n backgroundFilter,\n} from './image/imageSearchFilters';\nexport type {\n ContextualImageAsset,\n ImageSourceInput,\n ResolvedImageSource,\n ResolvedImageSourceKind,\n} from './image/contextualImageTypes';\n\n// Section definition classes + createSdkRegistry\nexport {\n HeroSectionDefinition,\n HeroEntitySectionDefinition,\n KpiSectionDefinition,\n FeatureCardsSectionDefinition,\n EntitySectionDefinition,\n EntityCollectionSectionDefinition,\n ComparisonSectionDefinition,\n TextBlockSectionDefinition,\n CtaBannerSectionDefinition,\n CalloutSectionDefinition,\n NextStepsSectionDefinition,\n FeatureSection9PlusDefinition,\n ListItemsSectionDefinition,\n SkipNodesSectionDefinition,\n HtmlCommentSectionDefinition,\n SearchSectionDefinition,\n ErrorSectionDefinition,\n FallbackSectionDefinition,\n createSdkRegistry,\n} from './component/componentDefinitions';\n\n// Registry\nexport { ComponentRegistry } from './registry';\nexport type {\n SlotOptions,\n SectionOptions,\n SectionRegistration,\n SlotNode,\n SlotIntentNode,\n SectionIntentNode,\n SectionNode,\n SlotVariant,\n SectionVariant,\n RegistryCatalog,\n ActionResult,\n ActionHandler,\n} from './registry';\n\n// Pattern validator\nexport {\n validatePattern,\n validatePatternSyntax,\n validatePatternWithBlocks,\n type PatternValidationResult,\n type BlockElement,\n type EnrichedBlockElement,\n type LinkMetadata,\n type LinkAttribute,\n} from './patternValidator';\n\n// Markdown blocks\nexport {\n convertToBlockElements,\n convertToBlockElementsWithMapping,\n type BlockElementsWithMapping,\n} from './markdownBlocks';\n\n// Link types, enum & guards\nexport {\n Web5UrlType,\n type Web5AskUrl,\n type Web5EntityUrl,\n type Web5ImageUrl,\n type Web5IconUrl,\n type Web5ActionUrl,\n type Web5SearchUrl,\n type Web5Url,\n type HttpsUrl,\n type HttpUrl,\n type MailtoUrl,\n type RelativeUrl,\n type NavigableUrl,\n type ValidLinkUrl,\n type AnyKnownUrl,\n type LegacyUrl,\n isWeb5AskUrl,\n isWeb5EntityUrl,\n isWeb5ImageUrl,\n isWeb5IconUrl,\n isWeb5ActionUrl,\n isWeb5SearchUrl,\n isWeb5Url,\n isNavigableUrl,\n isValidLinkUrl,\n isLegacyUrl,\n} from './types/link-types';\n\n// Entity/URL parsing\nexport {\n parseWeb5Url,\n isValidWeb5Url,\n validateLinkUrl,\n type Web5UrlParsed,\n type Web5AskParsed,\n type Web5EntityParsed,\n type Web5ImageParsed,\n type Web5IconParsed,\n type Web5ActionParsed,\n type Web5SearchParsed,\n isEntityLink,\n parseEntityLink,\n extractProtocol,\n extractLinkMetadata,\n} from './utils/entityLinkParser';\n\n// Web5 link validation\nexport {\n findInvalidWeb5Links,\n type InvalidWeb5Link,\n} from './utils/web5LinkValidator';\n\n// Node matchers\nexport { hasImage, isHtmlComment } from './utils/nodeMatchers';\n\n// Match API\nexport {\n matchMarkdown,\n type MarkdownMatchResult,\n matchAllSections,\n type MatchAllSectionsResult,\n nodesToParts,\n} from './match';\n\n// ---------------------------------------------------------------------------\n// DI Infrastructure (moved from @wix/w5-client-circana)\n// ---------------------------------------------------------------------------\n\n// DI context and provider\nexport {\n ComponentDependenciesProvider,\n useComponentDependencies,\n type ComponentDependenciesProviderProps,\n} from './context/ComponentDependenciesContext';\n\n// Raw user query for the current response page\nexport {\n UserQueryProvider,\n useUserQuery,\n type UserQueryProviderProps,\n} from './context/UserQueryContext';\n\n// Chips context (suggestion chips shared between SearchSection and error states)\nexport {\n ChipsProvider,\n useChips,\n type SuggestionChip,\n} from './context/ChipsContext';\n\n// DI types\nexport type {\n ComponentDependencies,\n Web5LinkApi,\n ConversationApi,\n SendMessageTrackingOptions,\n SendMessageOptions,\n ComparisonSubmitPayload,\n ComparisonSelectedProduct,\n ProductComparisonSelectionState,\n ProductComparisonApi,\n EntityTransforms,\n MarkdownUtils,\n ResolveGenericEntityDataOptions,\n} from './types/dependencies';\nexport type {\n ApiPayloadItem,\n EntityTypeConfig,\n EntityConfig,\n EntityExtractionContext,\n} from './types/entity';\nexport {\n defaultExtractor,\n enrichEntitiesFromPayload,\n fetchEntityListData,\n listEntityItems,\n LIST_ITEMS_ENDPOINT,\n getEntityExtractor,\n registerEntityExtractor,\n transformToSolutionEntityData,\n transformToBlogPostEntityData,\n transformToGenericEntityData,\n} from './entity';\nexport type {\n EntityExtractor,\n FetchEntityListDataOptions,\n ListEntityItemsOptions,\n} from './entity';\nexport { CALLOUT_KINDS, type CalloutKind, type Callout } from './types/callout';\n\n// Wrapper hooks\nexport { useWeb5Link } from './hooks/useWeb5Link';\nexport { useConversation } from './hooks/useConversation';\nexport { useDebugImageContext } from './hooks/useDebugImageContext';\nexport { useResolvedImageSources } from './hooks/useResolvedImageSources';\nexport { useResolveGenericEntityData } from './hooks/useResolveGenericEntityData';\nexport { useEntityTransforms } from './hooks/useEntityTransforms';\nexport { useMarkdownUtils } from './hooks/useMarkdownUtils';\nexport { useResolveShopifyEntityData } from './hooks/useResolveShopifyEntityData';\nexport { useResolveSearchSpringEntityData } from './hooks/useResolveSearchSpringEntityData';\n\n// SearchSpring\nexport {\n fetchProductsByHandles,\n fetchProductsByHandlesMap,\n transformSSProductToEntityItemData,\n} from './services/searchspring';\nexport type {\n SearchSpringConfig,\n SSProduct,\n SSSearchResponse,\n SSSizeData,\n} from './services/searchspring';\n\n// Shopify Storefront API\n// Cart actions\nexport { addToCart } from './services/cart';\n\nexport {\n ShopifyStorefrontClient,\n resolveShopifyConfig,\n resolveShopifyEntity,\n transformShopifyProduct,\n transformShopifyCollection,\n transformShopifyArticle,\n transformShopifyEntityToItemData,\n PRODUCT_BY_HANDLE_QUERY,\n COLLECTION_BY_HANDLE_QUERY,\n ARTICLE_BY_HANDLE_QUERY,\n} from './services/shopify';\nexport type {\n ShopifyStorefrontConfig,\n ShopifyProduct,\n ShopifyCollection,\n ShopifyArticle,\n ShopifyImage,\n ShopifyMoneyV2,\n} from './services/shopify';\n\n// Utilities\nexport { cn } from './lib/utils';\nexport { normalizeImageUrl, getResizedImageUrl } from './utils/image-utils';\nexport {\n analyzeBackdrop,\n computeContentBBox,\n buildProbeUrl,\n loadImagePixels,\n loadBackdropAnalysis,\n type BackdropAnalysis,\n type ContentBBox,\n type ImagePixels,\n} from './utils/imageBackdrop';\nexport { stripMarkdown } from './component/componentDefinitions/parse-utils';\n\n// Color utilities\nexport {\n type RGB,\n rgbToHsl,\n hslToRgb,\n ensureMinLightness,\n toRgb,\n deriveDarkColor,\n deriveDarkGradient,\n deriveLightColor,\n} from './color/colorUtils';\n\n// Analytics\nexport {\n pushEvent,\n pushPromptSubmit,\n pushLinkClick,\n pushError,\n pushExit,\n pushEntityFiltered,\n hasAnalyticsConsent,\n type EntityFilteredReason,\n} from './utils/analyticsEvents';\n\n// Error handling types and utilities\nexport {\n type ConversationErrorType,\n ERROR_MARKDOWN,\n getErrorTypeFromStatus,\n createErrorMarkdown,\n STREAMING_TIMEOUT_MS,\n type ErrorActionType,\n type ErrorIconType,\n type ErrorTemplateButton,\n type ErrorTemplate,\n type ErrorTemplateOverrides,\n DEFAULT_ERROR_TEMPLATES,\n resolveErrorTemplate,\n} from './errors';\n\n// Navigation utilities\nexport {\n getForwardStack,\n setForwardStack,\n clearForwardStack,\n pushToForwardStack,\n popFromForwardStack,\n} from './utils/navigationStack';\n\n// UI components\nexport {\n UserQuery,\n type UserQueryProps,\n type ProductBackContext,\n} from './components/ui/UserQuery';\nexport {\n PRODUCT_BACK_SESSION_KEY,\n writeProductBackHandoff,\n readProductBackHandoff,\n type ProductBackHandoff,\n} from './utils/productBackHandoff';\nexport {\n PromptEntryEmptyState,\n type PromptEntryEmptyStateProps,\n} from './components/ui/PromptEntryEmptyState';\nexport {\n SearchSection,\n type SearchSectionProps,\n type SearchSectionHandle,\n type ScrollChip,\n} from './components/ui/SearchSection';\nexport {\n FeedbackBar,\n type FeedbackBarProps,\n type FeedbackCategoryOption,\n type FeedbackSentiment,\n type FeedbackSubmitInput,\n} from './components/ui/FeedbackBar';\nexport {\n Disclaimer,\n type DisclaimerProps,\n} from './components/ui/Disclaimer';\nexport {\n BottomContainer,\n type BottomContainerProps,\n} from './components/ui/BottomContainer';\nexport { MarkdownText } from './components/ui/MarkdownText';\nexport {\n CalloutBlock,\n type CalloutBlockProps,\n} from './components/ui/CalloutBlock';\nexport {\n OptimizedImage,\n type OptimizedImageProps,\n} from './components/ui/OptimizedImage';\nexport {\n SectionSkeleton,\n type SectionSkeletonProps,\n} from './components/ui/SectionSkeleton';\nexport { SmartIcon, type SmartIconProps } from './components/ui/SmartIcon';\nexport { Loader, type LoaderProps } from './components/ui/Loader';\nexport {\n PlacementLoader,\n type PlacementLoaderProps,\n} from './components/ui/PlacementLoader';\nexport {\n UnifiedLink,\n detectLinkType,\n type UnifiedLinkProps,\n LinkType,\n type LinkVariant,\n} from './components/ui/UnifiedLink';\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n} from './components/ui/table';\n\n// Placement (DL #088, DL #102 behavior declarations)\nexport type {\n PlacementBehaviorConfig,\n PlacementConfig,\n PlacementPrompts,\n} from './types/placement';\n\n// Cross-bundle user-query broadcast event (DL #097 D2)\nexport {\n WEB5_USER_QUERY_EVENT,\n type Web5UserQueryEventDetail,\n type Web5UserQueryEvent,\n} from './types/userQueryEvent';\n\n// Cross-bundle answer-updated broadcast event (B2B-4121)\nexport {\n WEB5_ANSWER_UPDATED_EVENT,\n type Web5AnswerUpdatedEventDetail,\n type Web5AnswerUpdatedEvent,\n} from './types/answerUpdatedEvent';\n\n// Cross-bundle redirect broadcast event (DL #098 D3)\nexport {\n WEB5_REDIRECT_EVENT,\n type Web5RedirectEventDetail,\n type Web5RedirectEvent,\n type Web5RedirectReason,\n} from './types/redirectEvent';\n// `placementFilter` was removed — hero/next-steps exclusion is the prompt's job\n// and placement-specific designs belong as `{ placement: true }` registry\n// variants (resolved automatically via `resolveSection(type, { placement: true })`).\n\n// Client bundle loader (DL #088 D3.3)\nexport { loadClientBundle } from './client/loadClientBundle';\n\n// `?clientBundleUrl=` dev override — shared by `web50-server-ui` and\n// `embed-placement` so the trusted-host gate can't drift between them.\nexport {\n getClientBundleOverride,\n isTrustedBundleHost,\n} from './client/clientBundleOverride';\n\n// Client-UMD URL resolution (DL #094 per-msid, DL #129 per-template) and the\n// universal bundle←backend config merge (DL #129 Q3/Q7) — shared by\n// `web50-server-ui` and `embed-placement`, the two client-bundle load sites.\nexport {\n TEMPLATES_CDN_BASE,\n TEMPLATES_MANIFEST_URL,\n getTemplateOverride,\n isTemplatePickerRequested,\n isValidTemplateId,\n resolveClientBundleUrl,\n} from './client/clientBundleUrl';\nexport { mergeClientConfig, type DeepPartial } from './client/mergeClientConfig';\nexport {\n applyThemeOverrides,\n THEME_OVERRIDE_TOKENS,\n type ThemeOverrideKey,\n type ThemeOverrides,\n} from './client/applyThemeOverrides';\n\n// Placement renderer + DI helper (DL #088 D3.2, D3.4)\nexport {\n PlacementResponseRenderer,\n PlacementSmoothHeight,\n type PlacementResponseRendererProps,\n type PlacementSection,\n type PlacementVariant,\n} from './components/placement/PlacementResponseRenderer';\nexport {\n buildPlacementDependencies,\n type BuildPlacementDependenciesOptions,\n} from './components/placement/buildPlacementDependencies';\nexport {\n PlacementPayloadProvider,\n usePlacementPayload,\n type PlacementPayloadContextValue,\n} from './components/placement/PlacementPayloadContext';\n\n// Markdown parsing utilities — lifted from web50-server-ui (DL #088 B9.1)\nexport {\n UnifiedMarkdownParser,\n parseMarkdownToAst,\n parseAstToMarkdown,\n} from './utils/unifiedMarkdownParser';\nexport {\n escapeWeb5Links,\n fixMalformedLinks,\n trimTrailingWhitespace,\n normalizeIconUrls,\n decodeLinkText,\n preprocessMarkdown,\n type PreprocessorDiagnostic,\n type PreprocessResult,\n} from './utils/markdownPreprocessor';\nexport {\n ComponentTracking,\n type ComponentNodeRange,\n} from './utils/componentTracking';\nexport {\n findKeywordsInContent,\n getContextualImageFilename,\n} from './utils/contentKeywordMatcher';\nexport {\n extractIntentFromMarkdown,\n getIntentFromMarkdown,\n type IntentInfo,\n type IntentExtractionOptions,\n type ResponseState,\n} from './utils/intentExtractor';\nexport type { PageSection } from './types/page-section';\nexport {\n createPageSection,\n generateSectionId,\n generateId,\n findImageInNode,\n findImageInChildren,\n type Product,\n type ComparisonProduct,\n type ProductComparisonSectionProps,\n} from './utils/propsExtractor';\nexport {\n DiagnosticsCollector,\n type DiagnosticEntry,\n} from './utils/diagnosticsCollector';\nexport {\n REFRESH_PROMPTS_UNTIL_KEY,\n REFRESH_PROMPTS_WINDOW_MS,\n getRefreshPromptsExpiry,\n shouldRefreshPrompts,\n enableRefreshPrompts,\n disableRefreshPrompts,\n} from './utils/refreshPrompts';\nexport {\n type BackendEnvironment,\n BACKEND_ENVIRONMENT_KEY,\n BACKEND_ENVIRONMENT_QUERY_PARAM,\n DEFAULT_BACKEND_ENVIRONMENT,\n getBackendEnvironment,\n setBackendEnvironment,\n usesStagingBackend,\n} from './utils/backendEnvironment';\nexport {\n MATCH_DEBUG_KEY,\n MATCH_DEBUG_QUERY_PARAM,\n isMatchDebugEnabled,\n setMatchDebug,\n resetMatchDebugCache,\n logMatchDebug,\n} from './utils/matchDebug';\nexport { createWixAuthFetch } from './client/wixAuthFetch';\nexport {\n getOrCreateSessionId,\n getSessionId,\n getChatId,\n startNewChatId,\n setChatId,\n resetChatIdForTests,\n} from './utils/sessionManager';\n\n// Component parser orchestrator — lifted from web50-server-ui (DL #088 B9.5)\nexport {\n parseMarkdownToComponents,\n tryParseComponent,\n mergeSectionsWithStableReferences,\n type ParseMarkdownOptions,\n type ParseMarkdownResult,\n type ComponentMatch,\n type ParserContext,\n} from './component/componentParser';\nexport type {\n ParserClientConfig,\n EnrichEntityProps,\n} from './component/parser-types';\n\n// Host-mount scope contract — shared by web50-server-ui (which stamps the\n// class and mounts), embed-placement (which mounts the same bundle elsewhere),\n// and the client CDN build (which compiles every selector against it).\nexport {\n WEB5_ROOT_ID,\n WEB5_ROOT_CLASS,\n WEB5_SCOPES,\n WEB5_SCOPE,\n WEB5_GLOBAL_TOKENS,\n type HostFitConfig,\n} from './hostScope';\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Runtime theme token injection (DL #131).
3
+ *
4
+ * `Configuration.themeOverrides` carries per-store CSS custom-property
5
+ * overrides (`--primary`, `--radius`, `--heading`, ...) computed from the
6
+ * store's own theme (e.g. the Shopify `settings_data.json` extractor). This
7
+ * applies them to the page so they win over the bundle's baked `theme.css`:
8
+ *
9
+ * - **Scoped, not `:root`**: the rule targets `WEB5_SCOPE`, the same
10
+ * `:is(#root, .w5-root, [data-web5-placement], .debug-view)` selector every
11
+ * compiled bundle stylesheet uses — host-page styling is never touched, and
12
+ * equal specificity + later document order makes the override win. Callers
13
+ * must therefore apply AFTER the client bundle's CSS is in the document.
14
+ * - **Open token set**: any sanely-shaped custom property is applied, so a
15
+ * template can grow new tokens without an FE or BE release. The mandatory
16
+ * `--` prefix means an override can only define custom properties — it can
17
+ * never set a real CSS property inside the scope. The server enforces the
18
+ * same shape (plus value sanitation) at write time.
19
+ * - **Values are inert**: entries are written with
20
+ * `CSSStyleDeclaration.setProperty`, never string-concatenated into CSS, so
21
+ * a hostile value cannot terminate the declaration or open a new rule.
22
+ * - **Idempotent**: one marker element per document, replaced wholesale on
23
+ * re-apply; empty/absent input removes it.
24
+ */
25
+ import { WEB5_SCOPE } from '../hostScope.js';
26
+
27
+ /** A themeOverrides key: always a CSS custom property. */
28
+
29
+ /**
30
+ * Writer-side shape for a theme override map. The catalog below documents
31
+ * the tokens the seed consumes today; the type stays open so new tokens
32
+ * flow end-to-end with no release anywhere but the seed.
33
+ */
34
+
35
+ /**
36
+ * The known token catalog — the CSS custom properties the seed's Tailwind
37
+ * bridge consumes today. GUIDANCE, NOT A GATE: writers (the Shopify theme
38
+ * extractor, admin tooling) should stick to these to produce visible effect,
39
+ * but `applyThemeOverrides` deliberately applies any well-formed custom
40
+ * property so the vocabulary can grow from the seed alone (matching the
41
+ * open-set validation on the server).
42
+ */
43
+ export const THEME_OVERRIDE_TOKENS = new Set(['--background', '--foreground', '--card', '--card-foreground', '--popover', '--popover-foreground', '--primary', '--primary-foreground', '--secondary', '--secondary-foreground', '--muted', '--muted-foreground', '--accent', '--accent-foreground', '--border', '--input', '--ring', '--radius', '--font-sans', '--font-display', '--heading']);
44
+
45
+ /** Mirrors the server's Consts.ThemeOverrideKeyPattern. */
46
+ const KEY_PATTERN = /^--[a-z][a-z0-9-]{0,62}$/;
47
+ const MARKER_ATTR = 'data-web5-theme-overrides';
48
+ export function applyThemeOverrides(overrides) {
49
+ if (typeof document === 'undefined') return;
50
+ const existing = document.head.querySelector(`style[${MARKER_ATTR}]`);
51
+ const entries = Object.entries(overrides ?? {}).filter(_ref => {
52
+ let [key] = _ref;
53
+ const wellFormed = KEY_PATTERN.test(key);
54
+ if (!wellFormed) {
55
+ console.warn(`[web5-theme] Skipping malformed theme override key: ${key}`);
56
+ }
57
+ return wellFormed;
58
+ });
59
+ if (entries.length === 0) {
60
+ existing == null || existing.remove();
61
+ return;
62
+ }
63
+ const style = document.createElement('style');
64
+ style.setAttribute(MARKER_ATTR, '');
65
+ document.head.appendChild(style);
66
+ const sheet = style.sheet;
67
+ if (!sheet) {
68
+ style.remove();
69
+ return;
70
+ }
71
+ sheet.insertRule(`${WEB5_SCOPE} {}`, 0);
72
+ const rule = sheet.cssRules[0];
73
+ for (const [key, value] of entries) {
74
+ try {
75
+ rule.style.setProperty(key, value);
76
+ } catch {
77
+ // An engine that rejects the value leaves the token at its baked
78
+ // default — degraded theming, never broken CSS.
79
+ }
80
+ }
81
+ // Replace-on-reapply: the fresh element is appended (so it stays last in
82
+ // document order) before the stale one is dropped.
83
+ existing == null || existing.remove();
84
+ }
85
+ //# sourceMappingURL=applyThemeOverrides.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["WEB5_SCOPE","THEME_OVERRIDE_TOKENS","Set","KEY_PATTERN","MARKER_ATTR","applyThemeOverrides","overrides","document","existing","head","querySelector","entries","Object","filter","_ref","key","wellFormed","test","console","warn","length","remove","style","createElement","setAttribute","appendChild","sheet","insertRule","rule","cssRules","value","setProperty"],"sources":["../../../src/client/applyThemeOverrides.ts"],"sourcesContent":["/**\n * Runtime theme token injection (DL #131).\n *\n * `Configuration.themeOverrides` carries per-store CSS custom-property\n * overrides (`--primary`, `--radius`, `--heading`, ...) computed from the\n * store's own theme (e.g. the Shopify `settings_data.json` extractor). This\n * applies them to the page so they win over the bundle's baked `theme.css`:\n *\n * - **Scoped, not `:root`**: the rule targets `WEB5_SCOPE`, the same\n * `:is(#root, .w5-root, [data-web5-placement], .debug-view)` selector every\n * compiled bundle stylesheet uses — host-page styling is never touched, and\n * equal specificity + later document order makes the override win. Callers\n * must therefore apply AFTER the client bundle's CSS is in the document.\n * - **Open token set**: any sanely-shaped custom property is applied, so a\n * template can grow new tokens without an FE or BE release. The mandatory\n * `--` prefix means an override can only define custom properties — it can\n * never set a real CSS property inside the scope. The server enforces the\n * same shape (plus value sanitation) at write time.\n * - **Values are inert**: entries are written with\n * `CSSStyleDeclaration.setProperty`, never string-concatenated into CSS, so\n * a hostile value cannot terminate the declaration or open a new rule.\n * - **Idempotent**: one marker element per document, replaced wholesale on\n * re-apply; empty/absent input removes it.\n */\nimport { WEB5_SCOPE } from '../hostScope';\n\n/** A themeOverrides key: always a CSS custom property. */\nexport type ThemeOverrideKey = `--${string}`;\n\n/**\n * Writer-side shape for a theme override map. The catalog below documents\n * the tokens the seed consumes today; the type stays open so new tokens\n * flow end-to-end with no release anywhere but the seed.\n */\nexport type ThemeOverrides = Record<ThemeOverrideKey, string>;\n\n/**\n * The known token catalog — the CSS custom properties the seed's Tailwind\n * bridge consumes today. GUIDANCE, NOT A GATE: writers (the Shopify theme\n * extractor, admin tooling) should stick to these to produce visible effect,\n * but `applyThemeOverrides` deliberately applies any well-formed custom\n * property so the vocabulary can grow from the seed alone (matching the\n * open-set validation on the server).\n */\nexport const THEME_OVERRIDE_TOKENS: ReadonlySet<string> = new Set([\n '--background', '--foreground',\n '--card', '--card-foreground',\n '--popover', '--popover-foreground',\n '--primary', '--primary-foreground',\n '--secondary', '--secondary-foreground',\n '--muted', '--muted-foreground',\n '--accent', '--accent-foreground',\n '--border', '--input', '--ring',\n '--radius',\n '--font-sans', '--font-display',\n '--heading',\n]);\n\n/** Mirrors the server's Consts.ThemeOverrideKeyPattern. */\nconst KEY_PATTERN = /^--[a-z][a-z0-9-]{0,62}$/;\n\nconst MARKER_ATTR = 'data-web5-theme-overrides';\n\nexport function applyThemeOverrides(\n overrides?: Record<string, string> | null,\n): void {\n if (typeof document === 'undefined') return;\n\n const existing = document.head.querySelector(`style[${MARKER_ATTR}]`);\n const entries = Object.entries(overrides ?? {}).filter(([key]) => {\n const wellFormed = KEY_PATTERN.test(key);\n if (!wellFormed) {\n console.warn(`[web5-theme] Skipping malformed theme override key: ${key}`);\n }\n return wellFormed;\n });\n\n if (entries.length === 0) {\n existing?.remove();\n return;\n }\n\n const style = document.createElement('style');\n style.setAttribute(MARKER_ATTR, '');\n document.head.appendChild(style);\n const sheet = style.sheet;\n if (!sheet) {\n style.remove();\n return;\n }\n sheet.insertRule(`${WEB5_SCOPE} {}`, 0);\n const rule = sheet.cssRules[0] as CSSStyleRule;\n for (const [key, value] of entries) {\n try {\n rule.style.setProperty(key, value);\n } catch {\n // An engine that rejects the value leaves the token at its baked\n // default — degraded theming, never broken CSS.\n }\n }\n // Replace-on-reapply: the fresh element is appended (so it stays last in\n // document order) before the stale one is dropped.\n existing?.remove();\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,UAAU,QAAQ,cAAc;;AAEzC;;AAGA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,qBAA0C,GAAG,IAAIC,GAAG,CAAC,CAChE,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,mBAAmB,EAC7B,WAAW,EAAE,sBAAsB,EACnC,WAAW,EAAE,sBAAsB,EACnC,aAAa,EAAE,wBAAwB,EACvC,SAAS,EAAE,oBAAoB,EAC/B,UAAU,EAAE,qBAAqB,EACjC,UAAU,EAAE,SAAS,EAAE,QAAQ,EAC/B,UAAU,EACV,aAAa,EAAE,gBAAgB,EAC/B,WAAW,CACZ,CAAC;;AAEF;AACA,MAAMC,WAAW,GAAG,0BAA0B;AAE9C,MAAMC,WAAW,GAAG,2BAA2B;AAE/C,OAAO,SAASC,mBAAmBA,CACjCC,SAAyC,EACnC;EACN,IAAI,OAAOC,QAAQ,KAAK,WAAW,EAAE;EAErC,MAAMC,QAAQ,GAAGD,QAAQ,CAACE,IAAI,CAACC,aAAa,CAAC,SAASN,WAAW,GAAG,CAAC;EACrE,MAAMO,OAAO,GAAGC,MAAM,CAACD,OAAO,CAACL,SAAS,IAAI,CAAC,CAAC,CAAC,CAACO,MAAM,CAACC,IAAA,IAAW;IAAA,IAAV,CAACC,GAAG,CAAC,GAAAD,IAAA;IAC3D,MAAME,UAAU,GAAGb,WAAW,CAACc,IAAI,CAACF,GAAG,CAAC;IACxC,IAAI,CAACC,UAAU,EAAE;MACfE,OAAO,CAACC,IAAI,CAAC,uDAAuDJ,GAAG,EAAE,CAAC;IAC5E;IACA,OAAOC,UAAU;EACnB,CAAC,CAAC;EAEF,IAAIL,OAAO,CAACS,MAAM,KAAK,CAAC,EAAE;IACxBZ,QAAQ,YAARA,QAAQ,CAAEa,MAAM,CAAC,CAAC;IAClB;EACF;EAEA,MAAMC,KAAK,GAAGf,QAAQ,CAACgB,aAAa,CAAC,OAAO,CAAC;EAC7CD,KAAK,CAACE,YAAY,CAACpB,WAAW,EAAE,EAAE,CAAC;EACnCG,QAAQ,CAACE,IAAI,CAACgB,WAAW,CAACH,KAAK,CAAC;EAChC,MAAMI,KAAK,GAAGJ,KAAK,CAACI,KAAK;EACzB,IAAI,CAACA,KAAK,EAAE;IACVJ,KAAK,CAACD,MAAM,CAAC,CAAC;IACd;EACF;EACAK,KAAK,CAACC,UAAU,CAAC,GAAG3B,UAAU,KAAK,EAAE,CAAC,CAAC;EACvC,MAAM4B,IAAI,GAAGF,KAAK,CAACG,QAAQ,CAAC,CAAC,CAAiB;EAC9C,KAAK,MAAM,CAACd,GAAG,EAAEe,KAAK,CAAC,IAAInB,OAAO,EAAE;IAClC,IAAI;MACFiB,IAAI,CAACN,KAAK,CAACS,WAAW,CAAChB,GAAG,EAAEe,KAAK,CAAC;IACpC,CAAC,CAAC,MAAM;MACN;MACA;IAAA;EAEJ;EACA;EACA;EACAtB,QAAQ,YAARA,QAAQ,CAAEa,MAAM,CAAC,CAAC;AACpB","ignoreList":[]}
@@ -17,6 +17,14 @@
17
17
  const CLIENT_BUNDLE_CDN = 'https://d13cktzsgh0qls.cloudfront.net';
18
18
  const CLIENT_BUNDLE_FILENAME = 'w5-components.umd.js';
19
19
 
20
+ /**
21
+ * The template catalog the onboarding gallery and the preview picker render —
22
+ * published by web5-seed-1's CI (`templates/manifest.json` + previews),
23
+ * CORS-open. Thumbnail paths inside are relative to `TEMPLATES_CDN_BASE`.
24
+ */
25
+ export const TEMPLATES_CDN_BASE = `${CLIENT_BUNDLE_CDN}/templates`;
26
+ export const TEMPLATES_MANIFEST_URL = `${TEMPLATES_CDN_BASE}/manifest.json`;
27
+
20
28
  /**
21
29
  * Template ids are kebab-case slugs from `templates/manifest.json`
22
30
  * (`web5-seed-1`). The id becomes a CDN path segment, so anything else is a
@@ -24,6 +32,37 @@ const CLIENT_BUNDLE_FILENAME = 'w5-components.umd.js';
24
32
  * store keeps rendering) rather than fetching a malformed URL.
25
33
  */
26
34
  const TEMPLATE_ID_PATTERN = /^[a-z0-9]+(-[a-z0-9]+)*$/;
35
+ export function isValidTemplateId(id) {
36
+ return id.length <= 64 && TEMPLATE_ID_PATTERN.test(id);
37
+ }
38
+
39
+ /**
40
+ * `?web5Template=<id>` — client-side template override (DL #129 Q10), the
41
+ * mechanism behind the live-preview picker: reload with the param and the page
42
+ * renders under that template's shared bundle, no Configuration write.
43
+ *
44
+ * Strictly narrower than `?clientBundleUrl=`: the value is a kebab-validated
45
+ * id interpolated into the fixed CDN template prefix, so it can only ever
46
+ * select one of our own template bundles — purely presentational, harmless if
47
+ * a visitor sets it by hand. Precedence at the call sites:
48
+ * `clientBundleUrl` override > this > `Configuration.templateId`.
49
+ */
50
+ export function getTemplateOverride(search) {
51
+ const value = new URLSearchParams(search).get('web5Template');
52
+ if (!value) {
53
+ return null;
54
+ }
55
+ if (!isValidTemplateId(value)) {
56
+ console.warn(`[web5-core] Ignoring malformed ?web5Template= override "${value}".`);
57
+ return null;
58
+ }
59
+ return value;
60
+ }
61
+
62
+ /** `?web5TemplatePicker=1` — should the preview picker overlay render? */
63
+ export function isTemplatePickerRequested(search) {
64
+ return new URLSearchParams(search).get('web5TemplatePicker') === '1';
65
+ }
27
66
  export function resolveClientBundleUrl(msid, templateId) {
28
67
  if (templateId) {
29
68
  if (TEMPLATE_ID_PATTERN.test(templateId)) {
@@ -1 +1 @@
1
- {"version":3,"names":["CLIENT_BUNDLE_CDN","CLIENT_BUNDLE_FILENAME","TEMPLATE_ID_PATTERN","resolveClientBundleUrl","msid","templateId","test","console","warn"],"sources":["../../../src/client/clientBundleUrl.ts"],"sourcesContent":["/**\n * Client-UMD URL resolution, shared between `web50-server-ui` (the main app)\n * and `embed-placement` (the storefront widget) — DL #094 (per-msid) + DL #129\n * (per-template). Centralized here for the same reason as\n * `clientBundleOverride.ts`: both callers must derive identical URLs, and\n * divergence on which bundle a tenant executes would be a real bug.\n *\n * Two tiers (DL #129):\n * - `templateId` present (DIY store) → the shared per-template bundle,\n * `<cdn>/templates/<id>/production/…`. Every store on a template runs the\n * same artifact; `production` is the promoted channel.\n * - `templateId` absent (customized tier: feature-com, circana, smallflower)\n * → the per-msid bundle at `<cdn>/<msid>/latest/…`, byte-identical to the\n * pre-template behavior.\n */\n\nconst CLIENT_BUNDLE_CDN = 'https://d13cktzsgh0qls.cloudfront.net';\nconst CLIENT_BUNDLE_FILENAME = 'w5-components.umd.js';\n\n/**\n * Template ids are kebab-case slugs from `templates/manifest.json`\n * (`web5-seed-1`). The id becomes a CDN path segment, so anything else is a\n * config error — resolve falls back to the per-msid path (fail-soft, and the\n * store keeps rendering) rather than fetching a malformed URL.\n */\nconst TEMPLATE_ID_PATTERN = /^[a-z0-9]+(-[a-z0-9]+)*$/;\n\nexport function resolveClientBundleUrl(\n msid: string,\n templateId?: string | null,\n): string {\n if (templateId) {\n if (TEMPLATE_ID_PATTERN.test(templateId)) {\n return `${CLIENT_BUNDLE_CDN}/templates/${templateId}/production/${CLIENT_BUNDLE_FILENAME}`;\n }\n console.warn(\n `[web5-core] Ignoring malformed templateId \"${templateId}\" — falling back to the per-msid bundle.`,\n );\n }\n return `${CLIENT_BUNDLE_CDN}/${msid}/latest/${CLIENT_BUNDLE_FILENAME}`;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMA,iBAAiB,GAAG,uCAAuC;AACjE,MAAMC,sBAAsB,GAAG,sBAAsB;;AAErD;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,mBAAmB,GAAG,0BAA0B;AAEtD,OAAO,SAASC,sBAAsBA,CACpCC,IAAY,EACZC,UAA0B,EAClB;EACR,IAAIA,UAAU,EAAE;IACd,IAAIH,mBAAmB,CAACI,IAAI,CAACD,UAAU,CAAC,EAAE;MACxC,OAAO,GAAGL,iBAAiB,cAAcK,UAAU,eAAeJ,sBAAsB,EAAE;IAC5F;IACAM,OAAO,CAACC,IAAI,CACV,8CAA8CH,UAAU,0CAC1D,CAAC;EACH;EACA,OAAO,GAAGL,iBAAiB,IAAII,IAAI,WAAWH,sBAAsB,EAAE;AACxE","ignoreList":[]}
1
+ {"version":3,"names":["CLIENT_BUNDLE_CDN","CLIENT_BUNDLE_FILENAME","TEMPLATES_CDN_BASE","TEMPLATES_MANIFEST_URL","TEMPLATE_ID_PATTERN","isValidTemplateId","id","length","test","getTemplateOverride","search","value","URLSearchParams","get","console","warn","isTemplatePickerRequested","resolveClientBundleUrl","msid","templateId"],"sources":["../../../src/client/clientBundleUrl.ts"],"sourcesContent":["/**\n * Client-UMD URL resolution, shared between `web50-server-ui` (the main app)\n * and `embed-placement` (the storefront widget) — DL #094 (per-msid) + DL #129\n * (per-template). Centralized here for the same reason as\n * `clientBundleOverride.ts`: both callers must derive identical URLs, and\n * divergence on which bundle a tenant executes would be a real bug.\n *\n * Two tiers (DL #129):\n * - `templateId` present (DIY store) → the shared per-template bundle,\n * `<cdn>/templates/<id>/production/…`. Every store on a template runs the\n * same artifact; `production` is the promoted channel.\n * - `templateId` absent (customized tier: feature-com, circana, smallflower)\n * → the per-msid bundle at `<cdn>/<msid>/latest/…`, byte-identical to the\n * pre-template behavior.\n */\n\nconst CLIENT_BUNDLE_CDN = 'https://d13cktzsgh0qls.cloudfront.net';\nconst CLIENT_BUNDLE_FILENAME = 'w5-components.umd.js';\n\n/**\n * The template catalog the onboarding gallery and the preview picker render —\n * published by web5-seed-1's CI (`templates/manifest.json` + previews),\n * CORS-open. Thumbnail paths inside are relative to `TEMPLATES_CDN_BASE`.\n */\nexport const TEMPLATES_CDN_BASE = `${CLIENT_BUNDLE_CDN}/templates`;\nexport const TEMPLATES_MANIFEST_URL = `${TEMPLATES_CDN_BASE}/manifest.json`;\n\n/**\n * Template ids are kebab-case slugs from `templates/manifest.json`\n * (`web5-seed-1`). The id becomes a CDN path segment, so anything else is a\n * config error — resolve falls back to the per-msid path (fail-soft, and the\n * store keeps rendering) rather than fetching a malformed URL.\n */\nconst TEMPLATE_ID_PATTERN = /^[a-z0-9]+(-[a-z0-9]+)*$/;\n\nexport function isValidTemplateId(id: string): boolean {\n return id.length <= 64 && TEMPLATE_ID_PATTERN.test(id);\n}\n\n/**\n * `?web5Template=<id>` — client-side template override (DL #129 Q10), the\n * mechanism behind the live-preview picker: reload with the param and the page\n * renders under that template's shared bundle, no Configuration write.\n *\n * Strictly narrower than `?clientBundleUrl=`: the value is a kebab-validated\n * id interpolated into the fixed CDN template prefix, so it can only ever\n * select one of our own template bundles — purely presentational, harmless if\n * a visitor sets it by hand. Precedence at the call sites:\n * `clientBundleUrl` override > this > `Configuration.templateId`.\n */\nexport function getTemplateOverride(search: string): string | null {\n const value = new URLSearchParams(search).get('web5Template');\n if (!value) {\n return null;\n }\n if (!isValidTemplateId(value)) {\n console.warn(\n `[web5-core] Ignoring malformed ?web5Template= override \"${value}\".`,\n );\n return null;\n }\n return value;\n}\n\n/** `?web5TemplatePicker=1` — should the preview picker overlay render? */\nexport function isTemplatePickerRequested(search: string): boolean {\n return new URLSearchParams(search).get('web5TemplatePicker') === '1';\n}\n\nexport function resolveClientBundleUrl(\n msid: string,\n templateId?: string | null,\n): string {\n if (templateId) {\n if (TEMPLATE_ID_PATTERN.test(templateId)) {\n return `${CLIENT_BUNDLE_CDN}/templates/${templateId}/production/${CLIENT_BUNDLE_FILENAME}`;\n }\n console.warn(\n `[web5-core] Ignoring malformed templateId \"${templateId}\" — falling back to the per-msid bundle.`,\n );\n }\n return `${CLIENT_BUNDLE_CDN}/${msid}/latest/${CLIENT_BUNDLE_FILENAME}`;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMA,iBAAiB,GAAG,uCAAuC;AACjE,MAAMC,sBAAsB,GAAG,sBAAsB;;AAErD;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,kBAAkB,GAAG,GAAGF,iBAAiB,YAAY;AAClE,OAAO,MAAMG,sBAAsB,GAAG,GAAGD,kBAAkB,gBAAgB;;AAE3E;AACA;AACA;AACA;AACA;AACA;AACA,MAAME,mBAAmB,GAAG,0BAA0B;AAEtD,OAAO,SAASC,iBAAiBA,CAACC,EAAU,EAAW;EACrD,OAAOA,EAAE,CAACC,MAAM,IAAI,EAAE,IAAIH,mBAAmB,CAACI,IAAI,CAACF,EAAE,CAAC;AACxD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASG,mBAAmBA,CAACC,MAAc,EAAiB;EACjE,MAAMC,KAAK,GAAG,IAAIC,eAAe,CAACF,MAAM,CAAC,CAACG,GAAG,CAAC,cAAc,CAAC;EAC7D,IAAI,CAACF,KAAK,EAAE;IACV,OAAO,IAAI;EACb;EACA,IAAI,CAACN,iBAAiB,CAACM,KAAK,CAAC,EAAE;IAC7BG,OAAO,CAACC,IAAI,CACV,2DAA2DJ,KAAK,IAClE,CAAC;IACD,OAAO,IAAI;EACb;EACA,OAAOA,KAAK;AACd;;AAEA;AACA,OAAO,SAASK,yBAAyBA,CAACN,MAAc,EAAW;EACjE,OAAO,IAAIE,eAAe,CAACF,MAAM,CAAC,CAACG,GAAG,CAAC,oBAAoB,CAAC,KAAK,GAAG;AACtE;AAEA,OAAO,SAASI,sBAAsBA,CACpCC,IAAY,EACZC,UAA0B,EAClB;EACR,IAAIA,UAAU,EAAE;IACd,IAAIf,mBAAmB,CAACI,IAAI,CAACW,UAAU,CAAC,EAAE;MACxC,OAAO,GAAGnB,iBAAiB,cAAcmB,UAAU,eAAelB,sBAAsB,EAAE;IAC5F;IACAa,OAAO,CAACC,IAAI,CACV,8CAA8CI,UAAU,0CAC1D,CAAC;EACH;EACA,OAAO,GAAGnB,iBAAiB,IAAIkB,IAAI,WAAWjB,sBAAsB,EAAE;AACxE","ignoreList":[]}