@nuskin/marketing-components 1.40.0 → 1.40.1

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 (130) hide show
  1. package/dist/index.d.mts +446 -0
  2. package/dist/index.d.ts +446 -11
  3. package/dist/index.js +1 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/index.mjs +1 -1
  6. package/dist/index.mjs.map +1 -1
  7. package/package.json +1 -1
  8. package/dist/button/Button.d.ts +0 -4
  9. package/dist/button/Button.stories.d.ts +0 -28
  10. package/dist/button/Button.styled.d.ts +0 -47
  11. package/dist/button/ButtonWrapper.d.ts +0 -9
  12. package/dist/button/helpers.d.ts +0 -59
  13. package/dist/button/index.d.ts +0 -3
  14. package/dist/button/specs/Button.spec.d.ts +0 -1
  15. package/dist/button/specs/ButtonWrapper.spec.d.ts +0 -1
  16. package/dist/button/types.d.ts +0 -42
  17. package/dist/bynder-media/BynderMedia.d.ts +0 -3
  18. package/dist/bynder-media/BynderMedia.styled.d.ts +0 -36
  19. package/dist/bynder-media/index.d.ts +0 -3
  20. package/dist/bynder-media/specs/bynder-utils.spec.d.ts +0 -1
  21. package/dist/bynder-media/specs/mockData.d.ts +0 -139
  22. package/dist/bynder-media/types.d.ts +0 -61
  23. package/dist/bynder-media/utils.d.ts +0 -3
  24. package/dist/carousel/Carousel.d.ts +0 -6
  25. package/dist/carousel/Carousel.stories.d.ts +0 -14
  26. package/dist/carousel/CarouselLayout.styled.d.ts +0 -50
  27. package/dist/carousel/hooks/useCarouselLayout.d.ts +0 -31
  28. package/dist/carousel/hooks/useCarouselResize.d.ts +0 -6
  29. package/dist/carousel/index.d.ts +0 -2
  30. package/dist/carousel/mocks/MockContentCard.d.ts +0 -20
  31. package/dist/carousel/mocks/MockHeroBanner.d.ts +0 -18
  32. package/dist/carousel/mocks/MockProductCard.d.ts +0 -9
  33. package/dist/carousel/mocks/index.d.ts +0 -7
  34. package/dist/carousel/mocks/mockAssets.d.ts +0 -15
  35. package/dist/carousel/shared.d.ts +0 -27
  36. package/dist/carousel/specs/Carousel.spec.d.ts +0 -1
  37. package/dist/carousel/specs/useCarouselResize.spec.d.ts +0 -1
  38. package/dist/carousel/specs/utils.spec.d.ts +0 -1
  39. package/dist/carousel/types.d.ts +0 -56
  40. package/dist/carousel/utils.d.ts +0 -47
  41. package/dist/column-control/ColumnControl.d.ts +0 -4
  42. package/dist/column-control/ColumnControl.stories.d.ts +0 -13
  43. package/dist/column-control/ColumnControl.styled.d.ts +0 -49
  44. package/dist/column-control/index.d.ts +0 -2
  45. package/dist/column-control/mocks/MockContentCard.d.ts +0 -13
  46. package/dist/column-control/mocks/MockProductCard.d.ts +0 -9
  47. package/dist/column-control/mocks/index.d.ts +0 -5
  48. package/dist/column-control/specs/ColumnControl.spec.d.ts +0 -1
  49. package/dist/column-control/specs/utils.spec.d.ts +0 -1
  50. package/dist/column-control/types.d.ts +0 -48
  51. package/dist/column-control/utils.d.ts +0 -24
  52. package/dist/content-card/ContentCard.d.ts +0 -4
  53. package/dist/content-card/ContentCard.stories.d.ts +0 -12
  54. package/dist/content-card/ContentCard.styled.d.ts +0 -35
  55. package/dist/content-card/constants.d.ts +0 -3
  56. package/dist/content-card/index.d.ts +0 -2
  57. package/dist/content-card/specs/ContentCard.spec.d.ts +0 -1
  58. package/dist/content-card/specs/helpers.spec.d.ts +0 -1
  59. package/dist/content-card/types.d.ts +0 -31
  60. package/dist/content-card/utils/helpers.d.ts +0 -20
  61. package/dist/hero-banner/HeroBanner.d.ts +0 -4
  62. package/dist/hero-banner/HeroBanner.stories.d.ts +0 -17
  63. package/dist/hero-banner/HeroBanner.styled.d.ts +0 -35
  64. package/dist/hero-banner/components/TypographyFields.d.ts +0 -13
  65. package/dist/hero-banner/constants.d.ts +0 -5
  66. package/dist/hero-banner/helpers.d.ts +0 -12
  67. package/dist/hero-banner/index.d.ts +0 -2
  68. package/dist/hero-banner/specs/HeroBanner.spec.d.ts +0 -1
  69. package/dist/hero-banner/specs/helpers.spec.d.ts +0 -1
  70. package/dist/hero-banner/types.d.ts +0 -26
  71. package/dist/hooks/index.d.ts +0 -3
  72. package/dist/hooks/use-toggle-font-color/useMainContrast.d.ts +0 -8
  73. package/dist/hooks/use-toggle-font-color/useMainContrast.spec.d.ts +0 -1
  74. package/dist/hooks/use-toggle-font-color/useToggleFontColor.d.ts +0 -8
  75. package/dist/hooks/use-toggle-font-color/useToggleFontColor.spec.d.ts +0 -1
  76. package/dist/hooks/useRouteReplacer.d.ts +0 -10
  77. package/dist/hooks/useRouteReplacer.spec.d.ts +0 -1
  78. package/dist/image/CsImage.d.ts +0 -4
  79. package/dist/image/CsImage.stories.d.ts +0 -7
  80. package/dist/image/CsImage.styled.d.ts +0 -8
  81. package/dist/image/index.d.ts +0 -1
  82. package/dist/image/specs/CsImage.spec.d.ts +0 -1
  83. package/dist/image/types.d.ts +0 -73
  84. package/dist/marketing-banner/MarketingBanner.d.ts +0 -7
  85. package/dist/marketing-banner/MarketingBanner.stories.d.ts +0 -206
  86. package/dist/marketing-banner/MarketingBanner.styled.d.ts +0 -62
  87. package/dist/marketing-banner/components/BannerText.d.ts +0 -7
  88. package/dist/marketing-banner/components/BannerText.styled.d.ts +0 -23
  89. package/dist/marketing-banner/components/index.d.ts +0 -1
  90. package/dist/marketing-banner/components/specs/BannerText.spec.d.ts +0 -5
  91. package/dist/marketing-banner/constants.d.ts +0 -22
  92. package/dist/marketing-banner/hooks/index.d.ts +0 -2
  93. package/dist/marketing-banner/hooks/useCarousel.d.ts +0 -14
  94. package/dist/marketing-banner/hooks/useReducedMotion.d.ts +0 -5
  95. package/dist/marketing-banner/index.d.ts +0 -3
  96. package/dist/marketing-banner/specs/MarketingBanner.spec.d.ts +0 -5
  97. package/dist/marketing-banner/specs/mockData.d.ts +0 -22
  98. package/dist/marketing-banner/specs/useCarousel.spec.d.ts +0 -5
  99. package/dist/marketing-banner/specs/utils.spec.d.ts +0 -1
  100. package/dist/marketing-banner/styles/mixins.d.ts +0 -53
  101. package/dist/marketing-banner/styles/theme.d.ts +0 -99
  102. package/dist/marketing-banner/types.d.ts +0 -57
  103. package/dist/marketing-banner/utils/index.d.ts +0 -1
  104. package/dist/marketing-banner/utils/utils.d.ts +0 -4
  105. package/dist/rich-text/RichText.d.ts +0 -27
  106. package/dist/rich-text/RichText.stories.d.ts +0 -8
  107. package/dist/rich-text/index.d.ts +0 -1
  108. package/dist/rich-text/specs/RichText.spec.d.ts +0 -1
  109. package/dist/spacing-divider/SpacingDivider.d.ts +0 -4
  110. package/dist/spacing-divider/SpacingDivider.stories.d.ts +0 -6
  111. package/dist/spacing-divider/SpacingDivider.styled.d.ts +0 -9
  112. package/dist/spacing-divider/index.d.ts +0 -2
  113. package/dist/spacing-divider/specs/SpacingDivider.spec.d.ts +0 -1
  114. package/dist/spacing-divider/types.d.ts +0 -26
  115. package/dist/spacing-divider/utils/specs/utils.spec.d.ts +0 -1
  116. package/dist/spacing-divider/utils/utils.d.ts +0 -13
  117. package/dist/text/CsText.d.ts +0 -15
  118. package/dist/text/CsText.stories.d.ts +0 -7
  119. package/dist/text/index.d.ts +0 -1
  120. package/dist/text/specs/CsText.spec.d.ts +0 -1
  121. package/dist/typography/Typography.d.ts +0 -18
  122. package/dist/typography/Typography.stories.d.ts +0 -6
  123. package/dist/typography/Typography.styled.d.ts +0 -80
  124. package/dist/typography/index.d.ts +0 -3
  125. package/dist/typography/specs/Typography.spec.d.ts +0 -1
  126. package/dist/typography/types.d.ts +0 -18
  127. package/dist/utils/deviceConstants.d.ts +0 -13
  128. package/dist/utils/route-utils.d.ts +0 -18
  129. package/dist/utils/specs/route-utils.spec.d.ts +0 -1
  130. package/dist/utils/viewportLayoutUtils.d.ts +0 -4
@@ -0,0 +1,446 @@
1
+ import React$1, { ReactElement, ComponentProps } from 'react';
2
+ import * as react_jsx_runtime from 'react/jsx-runtime';
3
+
4
+ interface CsTextProps$1 {
5
+ full_width?: boolean;
6
+ container_background_color?: unknown;
7
+ alignment?: 'left' | 'center' | 'right';
8
+ text_editor: string;
9
+ font_color?: boolean;
10
+ $?: {
11
+ text_editor?: Record<string, unknown>;
12
+ };
13
+ }
14
+ declare const CsText: ({ full_width, container_background_color, alignment, text_editor, font_color, $ }: CsTextProps$1) => ReactElement | null;
15
+
16
+ type NsImageProps = {
17
+ alt: string;
18
+ className?: string;
19
+ fill?: boolean;
20
+ height?: number | string;
21
+ id?: string;
22
+ src: string;
23
+ variant?: 'product' | 'award' | 'icon' | 'fill';
24
+ width?: number | string;
25
+ full_width?: boolean;
26
+ };
27
+ interface CsImageProps extends Partial<NsImageProps> {
28
+ image_alignment?: 'left' | 'center' | 'right';
29
+ image?: string | {
30
+ image: CSImage[];
31
+ };
32
+ isEditing?: boolean;
33
+ parent$?: Record<string, unknown>;
34
+ $?: Record<string, unknown>;
35
+ }
36
+ type CSImage = {
37
+ previewUrls: string[];
38
+ selected: ImageFile;
39
+ isPublic: boolean;
40
+ type: 'IMAGE';
41
+ id: string;
42
+ files: {
43
+ transformBaseUrl: ImageFileMeta;
44
+ thumbnail: ImageFileMeta;
45
+ };
46
+ databaseId: string;
47
+ name: string;
48
+ description: string | null;
49
+ };
50
+ type ImageFile = {
51
+ url: string;
52
+ width: number | null;
53
+ height: number | null;
54
+ fileSize: number | null;
55
+ imageType: 'transformBaseUrl' | 'thumbnail';
56
+ altText: string;
57
+ type: 'IMAGE';
58
+ fit: 'cover' | 'contain';
59
+ position: string;
60
+ bgColor: string;
61
+ };
62
+ type ImageFileMeta = {
63
+ url: string;
64
+ width: number | null;
65
+ height: number | null;
66
+ fileSize: number | null;
67
+ };
68
+
69
+ declare const CsImage: (props: CsImageProps) => react_jsx_runtime.JSX.Element;
70
+
71
+ type LinkTarget = '_self' | '_blank';
72
+ type ButtonVariant = 'primary' | 'secondary' | 'link';
73
+ type ButtonSize = 'small' | 'medium' | 'large';
74
+ type ButtonAlignment = 'left' | 'center' | 'right';
75
+ type IconPosition = 'left' | 'right';
76
+ interface Button$ {
77
+ [key: string]: unknown;
78
+ $?: {
79
+ title?: Record<string, unknown>;
80
+ icon?: Record<string, unknown>;
81
+ };
82
+ }
83
+ type ButtonType = 'square' | 'rounded';
84
+ interface ButtonsEntry extends ButtonProps {
85
+ $?: Record<string, unknown>;
86
+ [key: string]: unknown;
87
+ }
88
+ interface ButtonsBlock$ {
89
+ [key: string]: unknown;
90
+ buttons__0?: Record<string, unknown>;
91
+ }
92
+ type ButtonsBlock = {
93
+ buttons?: ButtonsEntry[];
94
+ $?: ButtonsBlock$;
95
+ };
96
+ type ButtonBlockProp = ButtonProps | ButtonsBlock;
97
+ interface ButtonProps {
98
+ title?: string;
99
+ url?: string;
100
+ placeholder_text?: string;
101
+ open_in_new_tab?: 'Yes' | 'No' | null;
102
+ variant?: ButtonVariant;
103
+ button_size?: ButtonSize;
104
+ alignment?: ButtonAlignment;
105
+ buttontype?: string;
106
+ icon?: string;
107
+ iconposition?: IconPosition;
108
+ button_state?: boolean | string;
109
+ $?: Button$;
110
+ parent$?: Record<string, unknown>;
111
+ isEditing?: boolean;
112
+ }
113
+
114
+ type CSEditTags$1 = Record<string, any>;
115
+ type GradientDirection = 'leftToRight' | 'rightToLeft' | 'radial';
116
+ type GradientDepth$1 = 'sm' | 'md' | 'lg';
117
+ type ColorTheme = 'primary' | 'secondary';
118
+ type TextColor = 'white' | 'dark';
119
+ type MediaType = 'image' | 'gif' | 'video';
120
+ type BannerAlignment = 'left' | 'center' | 'right';
121
+ type TextAlignment = 'left' | 'center' | 'right';
122
+ interface BannerData {
123
+ header_text?: string;
124
+ title?: string;
125
+ subtitle?: string;
126
+ body_text?: string;
127
+ cta_button?: ButtonBlockProp;
128
+ bynder_media?: string;
129
+ position?: 'left' | 'center' | 'right';
130
+ text_color?: 'white' | 'dark';
131
+ gradient?: {
132
+ show_gradient?: boolean;
133
+ gradient_depth?: 'sm' | 'md' | 'lg';
134
+ $?: CSEditTags$1;
135
+ };
136
+ content_position?: 'left' | 'center' | 'right';
137
+ $?: CSEditTags$1;
138
+ isEditing?: boolean;
139
+ }
140
+ interface MarketingBannerData {
141
+ readonly banners: BannerData[];
142
+ readonly rotation_interval?: number;
143
+ }
144
+ interface MarketingBannerProps extends MarketingBannerData {
145
+ readonly isEditing?: boolean;
146
+ readonly $?: CSEditTags$1;
147
+ }
148
+ interface BannerTextProps {
149
+ readonly headerText?: string;
150
+ readonly title?: string;
151
+ readonly subtitle?: string;
152
+ readonly bodyText?: string;
153
+ readonly textColor?: string;
154
+ readonly textAlignment?: TextAlignment;
155
+ readonly testId?: string;
156
+ readonly $?: CSEditTags$1;
157
+ readonly isEditing?: boolean;
158
+ }
159
+ interface UseCarouselReturn {
160
+ currentIndex: number;
161
+ isPaused: boolean;
162
+ totalSlides: number;
163
+ goToNext: () => void;
164
+ goToPrevious: () => void;
165
+ goToSlide: (index: number) => void;
166
+ pause: () => void;
167
+ resume: () => void;
168
+ handleKeyDown: (event: React.KeyboardEvent) => void;
169
+ }
170
+
171
+ /**
172
+ * MarketingBanner Component
173
+ * Main component with single banner and automatic carousel mode
174
+ */
175
+
176
+ declare function MarketingBannerComponent(props: Readonly<MarketingBannerProps>): React$1.ReactElement;
177
+
178
+ /**
179
+ * Default Configurations
180
+ * Marketing Banner Component
181
+ */
182
+ declare const DEFAULT_BANNER_CONFIG: {
183
+ position: "left";
184
+ textColor: "white";
185
+ showGradient: boolean;
186
+ gradientDepth: "md";
187
+ mediaType: "image";
188
+ ctaVariant: "dark";
189
+ };
190
+ declare const DEFAULT_CAROUSEL_CONFIG: {
191
+ rotationInterval: number;
192
+ };
193
+ declare const DEFAULT_ROTATION_INTERVAL = 5000;
194
+ declare const PLACEHOLDER_VALUES: {
195
+ readonly header: "Enter Header";
196
+ readonly title: "Enter Title";
197
+ readonly subtitle: "Enter Subtitle";
198
+ readonly body: "Enter Body Text";
199
+ };
200
+
201
+ type PaddingScale = 'none' | 'small' | 'medium' | 'large';
202
+ type DividerStyle = 'solid' | 'dashed' | 'dotted' | 'none';
203
+ type DividerThickness = 'thin' | 'medium' | 'thick';
204
+ interface SpacingDividerProps {
205
+ vertical_padding?: PaddingScale;
206
+ divider_style?: DividerStyle;
207
+ divider_thickness?: DividerThickness;
208
+ divider_color?: string;
209
+ divider_gradient_preset?: 'none' | 'soft' | 'bold' | 'faint';
210
+ divider_width_percent?: number;
211
+ divider_alignment?: 'left' | 'center' | 'right';
212
+ }
213
+
214
+ declare const SpacingDivider: (props: SpacingDividerProps) => React$1.ReactElement | null;
215
+
216
+ /** Gap between columns/slides: preset name → px (none: 0, small: 8, medium: 12, large: 16) */
217
+ type GapPreset$1 = 'none' | 'small' | 'medium' | 'large';
218
+ type CarouselPreset = 'single-full' | 'two-equal' | 'two-small-large' | 'three-equal' | 'three-small-medium-large' | 'four-equal';
219
+ /** Render callback: consumer renders each slide from their data. */
220
+ type CarouselRenderSlide<T = unknown> = (slide: T, index: number) => React$1.ReactNode;
221
+ type CarouselProps<T = unknown> = Readonly<{
222
+ /** Slide data (CMS/consumer shape). Rendered via renderSlide. */
223
+ slides: T[];
224
+ /** Called to render each slide. Receives slide data and index. */
225
+ renderSlide: CarouselRenderSlide<T>;
226
+ preset?: CarouselPreset;
227
+ /** Convenience props that override autoplay.enabled */
228
+ autoplayEnabled?: boolean;
229
+ /** Autoplay interval in seconds (e.g. 3 = 3s). Passed to slider as ms internally. */
230
+ autoplayDuration?: number;
231
+ /** Convenience props that override navigation.showArrows */
232
+ showArrows?: boolean;
233
+ /** Convenience props that override navigation.showPagination */
234
+ showPagination?: boolean;
235
+ onSlideChange?: (index: number) => void;
236
+ className?: string;
237
+ slickSettings?: any;
238
+ /** Spacing between columns/slides: 'none'|'small'|'medium'|'large' (0,8,12,16px) or legacy number */
239
+ gap?: GapPreset$1 | number;
240
+ height?: string;
241
+ fullWidth?: boolean;
242
+ emptyBlockParentClass?: string;
243
+ /** Override empty placeholder label. Defaults: "Add items to the column control" (grid) or "Add items to the carousel" (carousel). */
244
+ emptyPlaceholderText?: string;
245
+ /** Position of slider dots: 'inside' overlays within the slider; 'outside' places them below as part of the height. Defaults to 'inside'. */
246
+ dotsPosition?: 'inside' | 'outside';
247
+ isEditing?: boolean;
248
+ parent$?: Record<string, unknown>;
249
+ $?: Record<string, unknown>;
250
+ }>;
251
+
252
+ /** Carousel layout: slider with arrows and dots. Uses shared hook and UI with carousel container. */
253
+ declare function Carousel<T = unknown>(props: CarouselProps<T>): react_jsx_runtime.JSX.Element;
254
+
255
+ /** Gap between columns/slides: preset name → px (none: 0, small: 8, medium: 12, large: 16) */
256
+ type GapPreset = 'none' | 'small' | 'medium' | 'large';
257
+ type ColumnControlGridLayout = '2x1' | '3x1' | '4x1' | '2x2' | '3x2' | '4x2';
258
+ type SlidePreset = 'single-full' | 'two-equal' | 'two-small-large' | 'three-equal' | 'three-small-medium-large' | 'four-equal';
259
+ /** Render callback: consumer renders each slide from their data. */
260
+ type RenderSlideCallback<T = unknown> = (slide: T, index: number) => React$1.ReactNode;
261
+ type ColumnControlProps<T = unknown> = Readonly<{
262
+ /** Slide data (CMS/consumer shape). Rendered via renderSlide. */
263
+ slides: T[];
264
+ /** Called to render each slide. Receives slide data and index. */
265
+ renderSlide: RenderSlideCallback<T>;
266
+ /** Preset-based sizing is deprecated. Use ColumnControl (grid) with layout. */
267
+ preset?: SlidePreset;
268
+ /** Grid layout for ColumnControl (grid) mode: "<columns>x<rows>" (e.g. "3x2"). */
269
+ layout?: ColumnControlGridLayout;
270
+ className?: string;
271
+ /** Spacing between columns/slides: 'none'|'small'|'medium'|'large' (0,8,12,16px) or legacy number */
272
+ gap?: GapPreset | number;
273
+ height?: string;
274
+ fullWidth?: boolean;
275
+ emptyBlockParentClass?: string;
276
+ /** Override empty placeholder label. Defaults: "Add items to the column control". */
277
+ emptyPlaceholderText?: string;
278
+ isEditing?: boolean;
279
+ parent$?: Record<string, unknown>;
280
+ $?: Record<string, unknown>;
281
+ }>;
282
+
283
+ declare const _default: React$1.FC<ColumnControlProps>;
284
+
285
+ type ContentAlignment$1 = 'left' | 'center' | 'right';
286
+ type CtaStyle = 'card' | 'button' | 'none';
287
+ interface ContentCardProps {
288
+ title?: string;
289
+ subtitle?: string;
290
+ body?: string;
291
+ media?: string;
292
+ cta?: ButtonBlockProp;
293
+ card_cta_group?: ButtonBlockProp;
294
+ button_cta_group?: ButtonBlockProp;
295
+ cta_style?: CtaStyle;
296
+ content_alignment?: ContentAlignment$1;
297
+ _metadata?: {
298
+ uid?: string;
299
+ };
300
+ max_height?: number;
301
+ background_color?: string;
302
+ text_color?: string;
303
+ border_radius?: string;
304
+ isEditing?: boolean;
305
+ parent$?: Record<string, unknown>;
306
+ $?: {
307
+ media?: Record<string, unknown>;
308
+ body?: Record<string, unknown>;
309
+ title?: Record<string, unknown>;
310
+ subtitle?: Record<string, unknown>;
311
+ button?: Record<string, unknown>;
312
+ };
313
+ }
314
+
315
+ declare const ContentCard: React$1.FC<ContentCardProps>;
316
+
317
+ type GradientDepth = 'sm' | 'md' | 'lg';
318
+
319
+ declare const Button: React$1.FC<ButtonProps>;
320
+
321
+ type ButtonWrapperProps = {
322
+ parent$?: Record<string, unknown>;
323
+ alignment?: ButtonProps['alignment'];
324
+ isEditing?: boolean;
325
+ } & Partial<ButtonBlockProp>;
326
+ declare const Buttons: React$1.FC<ButtonWrapperProps>;
327
+
328
+ type ContentAlignment = 'left' | 'center' | 'right';
329
+ type HeroBannerMediaType = 'image' | 'gif' | 'video';
330
+ interface HeroBanner$ {
331
+ [key: string]: unknown;
332
+ button?: Record<string, unknown>;
333
+ media?: Record<string, unknown>;
334
+ $?: Record<string, unknown>;
335
+ }
336
+ interface HeroBannerProps {
337
+ title?: string;
338
+ subtitle?: string;
339
+ body?: string;
340
+ brandcaption?: string;
341
+ button?: ButtonBlockProp;
342
+ media?: string;
343
+ class_name?: string;
344
+ content_alignment?: ContentAlignment;
345
+ gradient_enabled?: boolean;
346
+ gradient_depth?: GradientDepth;
347
+ text_color?: string;
348
+ $?: HeroBanner$;
349
+ parent$?: Record<string, unknown>;
350
+ isEditing?: boolean;
351
+ }
352
+
353
+ declare const HeroBanner: React$1.FC<HeroBannerProps>;
354
+
355
+ type CsTextProps = ComponentProps<typeof CsText>;
356
+ interface RichTextProps extends Omit<CsTextProps, 'text_editor' | 'font_color'> {
357
+ text_editor: string;
358
+ font_color?: 'Light' | 'Dark';
359
+ }
360
+ /**
361
+ * RichText Component
362
+ *
363
+ * Wrapper component that sanitizes Rich Text Editor content before passing to CsText.
364
+ * Uses DOMPurify to remove dangerous markup (scripts, styles, event handlers, etc.)
365
+ * while preserving allowed formatting tags and attributes.
366
+ *
367
+ * SECURITY FEATURES:
368
+ * - Removes script tags and event handlers
369
+ * - Strips dangerous attributes and tags
370
+ * - Allows only specified tags: p, div, span, a, br, strong, em, i, u, h1, h2, h3, ul, ol, li
371
+ * - Allows only specified attributes: href, target, rel, title, class, style, data-cslp
372
+ * - Sanitization is applied before rendering in CsText
373
+ *
374
+ * @param props - CsText component props with sanitizable text_editor content
375
+ * @returns Rendered component with sanitized content
376
+ */
377
+ declare const RichText: ({ text_editor, font_color, ...restProps }: RichTextProps) => ReactElement | null;
378
+
379
+ type BynderMediaType = 'image' | 'gif' | 'video';
380
+ type CSEditTags = Record<string, any>;
381
+ interface BynderMediaProps {
382
+ /** JSON string from Contentstack bynder_media field */
383
+ readonly bynder_media?: string;
384
+ /** Contentstack edit tags */
385
+ readonly $?: CSEditTags;
386
+ }
387
+ type BynderMediaExtracted = {
388
+ url: string;
389
+ type: BynderMediaType;
390
+ alt: string;
391
+ isResponsive?: boolean;
392
+ desktopUrl?: string;
393
+ mobileUrl?: string;
394
+ imageFit?: 'cover' | 'contain' | 'scale-down' | 'none' | 'fill' | null;
395
+ focusPoint?: {
396
+ x: number;
397
+ y: number;
398
+ };
399
+ objectPosition?: string;
400
+ bgColor?: string;
401
+ };
402
+ type BynderImageDataType = {
403
+ /** selected is manually added, using additionalInfo from bynder */
404
+ selected?: {
405
+ url: string;
406
+ fileSize: number | null;
407
+ width: number | null;
408
+ height: number | null;
409
+ imageType?: string;
410
+ type: 'VIDEO' | 'IMAGE';
411
+ altText?: string;
412
+ fit: 'cover' | 'contain' | 'scale-down' | 'none';
413
+ position: string;
414
+ bgColor: string;
415
+ };
416
+ isPublic: boolean;
417
+ __typename?: 'Image';
418
+ id: string;
419
+ name: string;
420
+ description: string | null;
421
+ databaseId: string;
422
+ originalUrl?: string;
423
+ type: 'VIDEO' | 'IMAGE' | 'DOCUMENT';
424
+ url?: string;
425
+ previewUrls?: string[];
426
+ extensions?: string[];
427
+ textMetaproperties?: ({
428
+ name: string;
429
+ value: string;
430
+ } | null)[];
431
+ files: {
432
+ [key: string]: {
433
+ url: string;
434
+ width: number | null;
435
+ height: number | null;
436
+ fileSize: number | null;
437
+ };
438
+ };
439
+ };
440
+
441
+ declare function BynderMedia({ bynder_media, $ }: Readonly<BynderMediaProps>): React$1.ReactElement | null;
442
+
443
+ declare function getMediaUrl(selected: BynderImageDataType['selected'], isPublic: boolean, previewUrls: BynderImageDataType['previewUrls']): string;
444
+ declare function extractBynderMedia(mediaJson?: string): BynderMediaExtracted | null;
445
+
446
+ export { type BannerAlignment, type BannerData, type BannerTextProps, Button, type Button$, type ButtonAlignment, type ButtonBlockProp, type ButtonProps, type ButtonSize, type ButtonType, type ButtonVariant, Buttons, type ButtonsBlock, type ButtonsBlock$, type ButtonsEntry, type BynderImageDataType, BynderMedia, type BynderMediaExtracted, type BynderMediaProps, type BynderMediaType, type CSEditTags$1 as CSEditTags, Carousel, type CarouselPreset, type CarouselProps, type CarouselRenderSlide, type ColorTheme, _default as ColumnControl, type ColumnControlProps, type ContentAlignment, ContentCard, type ContentCardProps, CsImage, CsText as CsTextComponent, DEFAULT_BANNER_CONFIG, DEFAULT_CAROUSEL_CONFIG, DEFAULT_ROTATION_INTERVAL, type GradientDepth$1 as GradientDepth, type GradientDirection, HeroBanner, type HeroBanner$, type HeroBannerMediaType, type HeroBannerProps, type IconPosition, type LinkTarget, MarketingBannerComponent as MarketingBanner, type MarketingBannerData, type MarketingBannerProps, type MediaType, PLACEHOLDER_VALUES, RichText as RichTextComponent, SpacingDivider, type SpacingDividerProps, type TextAlignment, type TextColor, type UseCarouselReturn, extractBynderMedia, getMediaUrl };