@@ -10,9 +10,10 @@ import {
1010 ExperienceComponentNode ,
1111 DisplaySettingsType ,
1212 ExperienceCompositionNode ,
13+ Infer ,
1314} from '../infer.js' ;
1415import { isComponentNode } from '../util/baseTypeUtil.js' ;
15- import { parseDisplaySettings } from '../model/displayTemplates.js' ;
16+ import { DisplayTemplate , parseDisplaySettings } from '../model/displayTemplates.js' ;
1617import { getDisplayTemplateTag } from '../model/displayTemplateRegistry.js' ;
1718import { isDev } from '../util/environment.js' ;
1819
@@ -70,7 +71,7 @@ export function initReactComponentRegistry(options: InitOptions) {
7071}
7172
7273/** Props for the {@linkcode OptimizelyComponent} component */
73- type OptimizelyComponentProps = {
74+ type OptimizelyComponentProps < T extends DisplayTemplate = DisplayTemplate > = {
7475 /** Data read from the CMS */
7576 opti : {
7677 /** Content type name */
@@ -87,7 +88,7 @@ type OptimizelyComponentProps = {
8788 __composition ?: ExperienceCompositionNode ;
8889 } ;
8990
90- displaySettings ?: Record < string , string > ;
91+ displaySettings ?: Partial < Infer < T > > ;
9192} ;
9293
9394export async function OptimizelyComponent ( {
@@ -127,16 +128,16 @@ export async function OptimizelyComponent({
127128 ) ;
128129}
129130
130- export type StructureContainerProps = {
131+ export type StructureContainerProps < T extends DisplayTemplate = DisplayTemplate > = {
131132 node : ExperienceStructureNode ;
132133 children : React . ReactNode ;
133134 index ?: number ;
134- displaySettings ?: Record < string , string > ;
135+ displaySettings ?: Partial < Infer < T > > ;
135136} ;
136- export type ComponentContainerProps = {
137+ export type ComponentContainerProps < T extends DisplayTemplate = DisplayTemplate > = {
137138 node : ExperienceComponentNode ;
138139 children : React . ReactNode ;
139- displaySettings ?: Record < string , string > ;
140+ displaySettings ?: Partial < Infer < T > > ;
140141} ;
141142export type StructureContainer = (
142143 props : StructureContainerProps
0 commit comments