@mobielnl/elements 0.7.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/elements.css +1 -1
- package/dist/elements.js +4 -16
- package/dist/elements.umd.cjs +229 -180
- package/dist/{index-C4M3Nf9p.js → index-B1z_p4Gk.js} +13503 -12982
- package/dist/{index-D-uHa1PI.js → index-Cbwf9tMX.js} +1 -1
- package/dist/index.d.ts +608 -576
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,15 +1,8 @@
|
|
|
1
|
-
import { Component } from 'react';
|
|
2
|
-
import { ErrorInfo } from 'react';
|
|
3
1
|
import { JSX } from 'react/jsx-runtime';
|
|
4
|
-
import { JSXElementConstructor } from 'react';
|
|
5
|
-
import { ReactElement } from 'react';
|
|
6
2
|
import { ReactNode } from 'react';
|
|
7
|
-
import { ReactPortal } from 'react';
|
|
8
3
|
import { z } from 'zod';
|
|
9
4
|
import * as z_2 from 'zod';
|
|
10
5
|
|
|
11
|
-
export declare function ActiveFilterChips({ activeFilters, filterOptions, onFilterRemove, classNames, }: ActiveFilterChipsProps): JSX.Element | null;
|
|
12
|
-
|
|
13
6
|
declare type ActiveFilterChipsClassNames = {
|
|
14
7
|
/** The container of the filter chips */
|
|
15
8
|
container?: string;
|
|
@@ -17,15 +10,177 @@ declare type ActiveFilterChipsClassNames = {
|
|
|
17
10
|
filterChip?: FilterChipClassNames;
|
|
18
11
|
};
|
|
19
12
|
|
|
20
|
-
declare type
|
|
21
|
-
/**
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
|
|
13
|
+
declare type AverageSectionClassNames = {
|
|
14
|
+
/** Container for the average per month section */
|
|
15
|
+
container?: string;
|
|
16
|
+
/** Header section with icon and title */
|
|
17
|
+
header?: string;
|
|
18
|
+
/** Container for icon and text */
|
|
19
|
+
headerContent?: string;
|
|
20
|
+
/** Icon container */
|
|
21
|
+
icon?: string;
|
|
22
|
+
/** Title text */
|
|
23
|
+
title?: string;
|
|
24
|
+
/** Subtitle/description text */
|
|
25
|
+
subtitle?: string;
|
|
26
|
+
/** Price display in header */
|
|
27
|
+
price?: string;
|
|
28
|
+
/** Container for monthly fees list */
|
|
29
|
+
monthlyFeesContainer?: string;
|
|
30
|
+
/** Individual monthly fee item */
|
|
31
|
+
monthlyFee?: MonthlyFeeClassNames;
|
|
32
|
+
/** One-time fee row */
|
|
33
|
+
oneTimeFee?: {
|
|
34
|
+
container?: string;
|
|
35
|
+
label?: string;
|
|
36
|
+
price?: string;
|
|
37
|
+
};
|
|
38
|
+
/** Activation fee row */
|
|
39
|
+
activationFee?: {
|
|
40
|
+
container?: string;
|
|
41
|
+
label?: string;
|
|
42
|
+
price?: string;
|
|
43
|
+
};
|
|
44
|
+
/** Installation fee row (for fixed products) */
|
|
45
|
+
installationFee?: {
|
|
46
|
+
container?: string;
|
|
47
|
+
label?: string;
|
|
48
|
+
price?: string;
|
|
49
|
+
};
|
|
50
|
+
/** Cashback row */
|
|
51
|
+
cashback?: {
|
|
52
|
+
container?: string;
|
|
53
|
+
label?: string;
|
|
54
|
+
price?: string;
|
|
55
|
+
};
|
|
56
|
+
/** Horizontal separator */
|
|
57
|
+
separator?: string;
|
|
58
|
+
/** Total costs row */
|
|
59
|
+
totalCosts?: {
|
|
60
|
+
container?: string;
|
|
61
|
+
label?: string;
|
|
62
|
+
price?: string;
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
declare type ChannelsClassNames = {
|
|
67
|
+
/** The base slot of the channels section, it is the container of the channels section */
|
|
68
|
+
base?: string;
|
|
69
|
+
/** The description text above the channels list */
|
|
70
|
+
description?: string;
|
|
71
|
+
/** The list container for channels */
|
|
72
|
+
list?: string;
|
|
73
|
+
/** Individual list item styles */
|
|
74
|
+
listItem?: string;
|
|
75
|
+
/** Container for channel name and HD badge */
|
|
76
|
+
channelContainer?: string;
|
|
77
|
+
/** HD icon */
|
|
78
|
+
hdIcon?: string;
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
declare type CombiDealModalClassNames = {
|
|
82
|
+
/** Modal dialog class styling slots - see type `ModalClassNames` */
|
|
83
|
+
modal?: ModalClassNames_3;
|
|
84
|
+
/** Header section containing icon and title */
|
|
85
|
+
header?: {
|
|
86
|
+
/** Container wrapping the header content */
|
|
87
|
+
container?: string;
|
|
88
|
+
/** Icon wrapper with background */
|
|
89
|
+
iconWrapper?: string;
|
|
90
|
+
/** Discount icon */
|
|
91
|
+
icon?: string;
|
|
92
|
+
/** Main title text */
|
|
93
|
+
title?: string;
|
|
94
|
+
/** Description text below title */
|
|
95
|
+
description?: string;
|
|
96
|
+
};
|
|
97
|
+
/** Home internet provider selection section */
|
|
98
|
+
providerSelection?: {
|
|
99
|
+
/** Home internet provider section title
|
|
100
|
+
* @example 'Thuis internet' */
|
|
101
|
+
title?: string;
|
|
102
|
+
/** Select component styling */
|
|
103
|
+
select?: {
|
|
104
|
+
/** Select label styling */
|
|
105
|
+
label?: string;
|
|
106
|
+
/** Select trigger button styling */
|
|
107
|
+
trigger?: string;
|
|
108
|
+
/** Provider item container in select */
|
|
109
|
+
itemContainer?: string;
|
|
110
|
+
/** Provider icon styling */
|
|
111
|
+
icon?: string;
|
|
112
|
+
};
|
|
113
|
+
};
|
|
114
|
+
/** Other subscriptions section */
|
|
115
|
+
otherSubscriptions?: {
|
|
116
|
+
/** Container for the section */
|
|
117
|
+
container?: string;
|
|
118
|
+
/** Section label */
|
|
119
|
+
label?: string;
|
|
120
|
+
/** Description text below label */
|
|
121
|
+
description?: string;
|
|
122
|
+
/** Listbox container wrapper */
|
|
123
|
+
listboxContainer?: string;
|
|
124
|
+
/** The slot for the listbox component. You can see this slot as the `ul` slot */
|
|
125
|
+
listboxList?: string;
|
|
126
|
+
/** Listbox item styling */
|
|
127
|
+
listboxItem?: {
|
|
128
|
+
/** The main slot for the listbox item. It wraps all the other slots */
|
|
129
|
+
base?: string;
|
|
130
|
+
/** The title and description wrapper */
|
|
131
|
+
wrapper?: string;
|
|
132
|
+
/** Provider image styling */
|
|
133
|
+
image?: string;
|
|
134
|
+
/** Provider name title text
|
|
135
|
+
* @example 'Odido' */
|
|
136
|
+
title?: string;
|
|
137
|
+
/** Provider description text
|
|
138
|
+
* @example 'Één of meer mobiele abonnementen' */
|
|
139
|
+
description?: string;
|
|
140
|
+
/** The selected icon slot. This is only visible when the item is selected */
|
|
141
|
+
selectedIcon?: string;
|
|
142
|
+
};
|
|
143
|
+
};
|
|
144
|
+
/** Submit button styling */
|
|
145
|
+
submitButton?: string;
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
declare type CostOverviewClassNames = {
|
|
149
|
+
/** The base container of the cost overview */
|
|
150
|
+
base?: string;
|
|
151
|
+
/** Container for the monthly fees section */
|
|
152
|
+
monthlySection?: string;
|
|
153
|
+
/** Monthly fees container */
|
|
154
|
+
monthlyFeesContainer?: string;
|
|
155
|
+
/** Main monthly price header */
|
|
156
|
+
monthlyPriceHeader?: {
|
|
157
|
+
container?: string;
|
|
158
|
+
label?: string;
|
|
159
|
+
price?: string;
|
|
160
|
+
};
|
|
161
|
+
/** Monthly fee transition row */
|
|
162
|
+
monthlyFeeTransition?: MonthlyFeeTransitionClassNames;
|
|
163
|
+
/** Lifetime fee row */
|
|
164
|
+
lifetimeFee?: MonthlyFeeTransitionClassNames;
|
|
165
|
+
/** Provider contract row */
|
|
166
|
+
providerContract?: PriceRowClassNames;
|
|
167
|
+
/** Bundle row */
|
|
168
|
+
bundle?: PriceRowClassNames;
|
|
169
|
+
/** Handset bundle row */
|
|
170
|
+
handsetBundle?: PriceRowClassNames;
|
|
171
|
+
/** Separator line */
|
|
172
|
+
separator?: string;
|
|
173
|
+
/** One-time payment section */
|
|
174
|
+
oneTimeSection?: {
|
|
175
|
+
header?: {
|
|
176
|
+
container?: string;
|
|
177
|
+
label?: string;
|
|
178
|
+
price?: string;
|
|
179
|
+
};
|
|
180
|
+
productRow?: PriceRowClassNames;
|
|
181
|
+
};
|
|
182
|
+
/** Proposition overview section */
|
|
183
|
+
propositionOverview?: PropositionOverviewClassNames;
|
|
29
184
|
};
|
|
30
185
|
|
|
31
186
|
declare type CreditInfoClassNames = {
|
|
@@ -60,22 +215,89 @@ declare type CreditInfoClassNames = {
|
|
|
60
215
|
descriptionLink?: string;
|
|
61
216
|
};
|
|
62
217
|
|
|
63
|
-
declare type
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
218
|
+
declare type CreditInfoClassNames_2 = {
|
|
219
|
+
/** The base container of the credit info section */
|
|
220
|
+
base?: string;
|
|
221
|
+
/** Table class names */
|
|
222
|
+
table?: TableClassNames_2;
|
|
223
|
+
/** Description text */
|
|
224
|
+
description?: string;
|
|
225
|
+
/** Links in the description */
|
|
226
|
+
descriptionLink?: string;
|
|
71
227
|
};
|
|
72
228
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
229
|
+
declare type DetailsModalClassNames = {
|
|
230
|
+
/** Modal class names */
|
|
231
|
+
modal?: ModalClassNames_5;
|
|
232
|
+
/** Proposition info section */
|
|
233
|
+
propositionInfo?: {
|
|
234
|
+
container?: string;
|
|
235
|
+
image?: string;
|
|
236
|
+
content?: string;
|
|
237
|
+
name?: string;
|
|
238
|
+
details?: string;
|
|
239
|
+
productName?: string;
|
|
240
|
+
productProperties?: string;
|
|
241
|
+
};
|
|
242
|
+
/** Tabs class names */
|
|
243
|
+
tabs?: TabsClassNames;
|
|
244
|
+
/** General tab content class names */
|
|
245
|
+
general?: GeneralClassNames;
|
|
246
|
+
/** Terms tab content class names */
|
|
247
|
+
terms?: TermsClassNames;
|
|
248
|
+
/** Channels tab content class names */
|
|
249
|
+
channels?: ChannelsClassNames;
|
|
250
|
+
/** Cost overview tab content class names */
|
|
251
|
+
costOverview?: CostOverviewClassNames;
|
|
252
|
+
};
|
|
253
|
+
|
|
254
|
+
declare type DiscountSectionClassNames = {
|
|
255
|
+
/** Container for the discount section */
|
|
256
|
+
container?: string;
|
|
257
|
+
/** Header section with icon and title */
|
|
258
|
+
header?: string;
|
|
259
|
+
/** Container for icon and text */
|
|
260
|
+
headerContent?: string;
|
|
261
|
+
/** Icon container */
|
|
262
|
+
icon?: string;
|
|
263
|
+
/** Title text */
|
|
264
|
+
title?: string;
|
|
265
|
+
/** Subtitle/description text */
|
|
266
|
+
subtitle?: string;
|
|
267
|
+
/** Price display in header */
|
|
268
|
+
price?: string;
|
|
269
|
+
/** Price without subscription row */
|
|
270
|
+
priceWithoutSubscription?: {
|
|
271
|
+
container?: string;
|
|
272
|
+
label?: string;
|
|
273
|
+
price?: string;
|
|
274
|
+
};
|
|
275
|
+
/** Price with subscription row */
|
|
276
|
+
priceWithSubscription?: {
|
|
277
|
+
container?: string;
|
|
278
|
+
label?: string;
|
|
279
|
+
price?: string;
|
|
280
|
+
};
|
|
281
|
+
/** Handset costs row */
|
|
282
|
+
handsetCosts?: {
|
|
283
|
+
container?: string;
|
|
284
|
+
label?: string;
|
|
285
|
+
price?: string;
|
|
286
|
+
};
|
|
287
|
+
/** One-time fee row */
|
|
288
|
+
oneTimeFee?: {
|
|
289
|
+
container?: string;
|
|
290
|
+
label?: string;
|
|
291
|
+
price?: string;
|
|
292
|
+
};
|
|
293
|
+
/** Horizontal separator */
|
|
294
|
+
separator?: string;
|
|
295
|
+
/** Total discount row */
|
|
296
|
+
totalDiscount?: {
|
|
297
|
+
container?: string;
|
|
298
|
+
label?: string;
|
|
299
|
+
price?: string;
|
|
300
|
+
};
|
|
79
301
|
};
|
|
80
302
|
|
|
81
303
|
export declare function ElementsRoot({ withShadowDOM, ...props }: ElementsRootProps): JSX.Element;
|
|
@@ -83,8 +305,8 @@ export declare function ElementsRoot({ withShadowDOM, ...props }: ElementsRootPr
|
|
|
83
305
|
export declare type ElementsRootProps = {
|
|
84
306
|
/** The content to be rendered within the ElementsRoot component */
|
|
85
307
|
children: ReactNode;
|
|
86
|
-
/**
|
|
87
|
-
|
|
308
|
+
/** Only class slot for styling */
|
|
309
|
+
className?: string;
|
|
88
310
|
/**
|
|
89
311
|
* Enable Shadow DOM wrapping for complete style isolation
|
|
90
312
|
* - When `undefinded` or `false`, no Shadow DOM is applied
|
|
@@ -101,29 +323,7 @@ export declare type ElementsRootProps = {
|
|
|
101
323
|
};
|
|
102
324
|
};
|
|
103
325
|
|
|
104
|
-
|
|
105
|
-
state: ErrorBoundaryState;
|
|
106
|
-
static getDerivedStateFromError(_error: Error): ErrorBoundaryState;
|
|
107
|
-
componentDidCatch(error: Error, _errorInfo: ErrorInfo): void;
|
|
108
|
-
render(): string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | ReactPortal | ReactElement<unknown, string | JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | JSX.Element | null | undefined;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
export declare type ErrorBoundaryProps = {
|
|
112
|
-
/** The content to be wrapped by the ErrorBoundary */
|
|
113
|
-
children: ReactNode;
|
|
114
|
-
/** Callback function called when an error is caught */
|
|
115
|
-
onError?: (error: Error) => void;
|
|
116
|
-
/** Custom fallback UI to render when an error occurs */
|
|
117
|
-
fallback?: ReactNode;
|
|
118
|
-
};
|
|
119
|
-
|
|
120
|
-
export declare type ErrorBoundaryState = {
|
|
121
|
-
hasError: boolean;
|
|
122
|
-
};
|
|
123
|
-
|
|
124
|
-
export declare function ErrorComponent({ classNames }: ErrorComponentProps): JSX.Element;
|
|
125
|
-
|
|
126
|
-
export declare type ErrorComponentClassNames = {
|
|
326
|
+
declare type ErrorAlertClassNames = {
|
|
127
327
|
/** Main wrapper container for the error component */
|
|
128
328
|
base?: string;
|
|
129
329
|
/** Alert component class styling slots */
|
|
@@ -147,13 +347,6 @@ export declare type ErrorComponentClassNames = {
|
|
|
147
347
|
button?: string;
|
|
148
348
|
};
|
|
149
349
|
|
|
150
|
-
export declare type ErrorComponentProps = {
|
|
151
|
-
/** Class slots for styling */
|
|
152
|
-
classNames?: ErrorComponentClassNames;
|
|
153
|
-
};
|
|
154
|
-
|
|
155
|
-
export declare function FilterChip({ filter, filterOption, onRemove, classNames, }: FilterChipProps): JSX.Element | null;
|
|
156
|
-
|
|
157
350
|
declare type FilterChipClassNames = {
|
|
158
351
|
/** The base slot of the chip, it is the container of the chip */
|
|
159
352
|
base?: string;
|
|
@@ -163,48 +356,10 @@ declare type FilterChipClassNames = {
|
|
|
163
356
|
closeButton?: string;
|
|
164
357
|
};
|
|
165
358
|
|
|
166
|
-
declare type FilterChipProps = {
|
|
167
|
-
/** Filter value */
|
|
168
|
-
filter: FilterValue;
|
|
169
|
-
/** Filter option */
|
|
170
|
-
filterOption: FilterOption;
|
|
171
|
-
/** Callback when the filter is removed */
|
|
172
|
-
onRemove: (filter: FilterValue) => void;
|
|
173
|
-
/** Class slots for styling */
|
|
174
|
-
classNames?: FilterChipClassNames;
|
|
175
|
-
};
|
|
176
|
-
|
|
177
|
-
export declare function FilterModal({ filterOptions, activeFilters, onFilterChange, classNames, }: FilterModalProps): JSX.Element;
|
|
178
|
-
|
|
179
|
-
/**
|
|
180
|
-
* ClassNames for styling different parts of the `FilterModal` component
|
|
181
|
-
*/
|
|
182
|
-
export declare type FilterModalClassNames = {
|
|
183
|
-
/** Trigger button that opens the modal
|
|
184
|
-
* @example "Filters" */
|
|
185
|
-
button?: string;
|
|
186
|
-
/** Modal dialog class styling slots - see type `ModalClassNames` */
|
|
187
|
-
modal?: ModalClassNames;
|
|
188
|
-
/** Filters component class styling slots - see type `FiltersClassNames` */
|
|
189
|
-
filters?: FiltersClassNames;
|
|
190
|
-
};
|
|
191
|
-
|
|
192
|
-
export declare type FilterModalProps = Omit<FiltersProps, 'classNames'> & {
|
|
193
|
-
/** Class slots for styling */
|
|
194
|
-
classNames?: FilterModalClassNames;
|
|
195
|
-
};
|
|
196
|
-
|
|
197
|
-
/**
|
|
198
|
-
* Configuration for a single filter option
|
|
199
|
-
*/
|
|
200
|
-
declare type FilterOption = NonNullable<GetPageByPathQuery['page']>['pageFilters'][number];
|
|
201
|
-
|
|
202
|
-
export declare function Filters({ filterOptions, activeFilters, onFilterChange, classNames, }: FiltersProps): JSX.Element | null;
|
|
203
|
-
|
|
204
359
|
/**
|
|
205
360
|
* ClassNames for styling different parts of the `Filters` component
|
|
206
361
|
*/
|
|
207
|
-
|
|
362
|
+
declare type FiltersClassNames = {
|
|
208
363
|
/** The foundational slot, encompassing all other slots and elements
|
|
209
364
|
*
|
|
210
365
|
* It serves as the primary container */
|
|
@@ -224,17 +379,6 @@ export declare type FiltersClassNames = {
|
|
|
224
379
|
radioFilter?: RadioFilterClassNames;
|
|
225
380
|
};
|
|
226
381
|
|
|
227
|
-
export declare type FiltersProps = {
|
|
228
|
-
/** Available filter options to display */
|
|
229
|
-
filterOptions: FilterOption[];
|
|
230
|
-
/** Currently active filter values */
|
|
231
|
-
activeFilters: FilterValue[];
|
|
232
|
-
/** Callback when a filter value changes */
|
|
233
|
-
onFilterChange: (filter: FilterValue) => void;
|
|
234
|
-
/** Class slots for styling */
|
|
235
|
-
classNames?: FiltersClassNames;
|
|
236
|
-
};
|
|
237
|
-
|
|
238
382
|
/**
|
|
239
383
|
* Represents an active filter value selected by the user
|
|
240
384
|
*/
|
|
@@ -251,47 +395,19 @@ declare type FilterValue = {
|
|
|
251
395
|
value: string | string[];
|
|
252
396
|
};
|
|
253
397
|
|
|
254
|
-
declare type
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
productCategory: string;
|
|
259
|
-
filter: string;
|
|
260
|
-
filterDefaults: string;
|
|
261
|
-
pageFilters: Array<{
|
|
262
|
-
__typename?: 'PageFilter';
|
|
263
|
-
id: string;
|
|
264
|
-
name: string;
|
|
265
|
-
shortName: string;
|
|
266
|
-
slug: string;
|
|
267
|
-
column: string;
|
|
268
|
-
type: string;
|
|
269
|
-
valueType: string;
|
|
270
|
-
dynamic: boolean;
|
|
271
|
-
min?: number | null;
|
|
272
|
-
max?: number | null;
|
|
273
|
-
rank: number;
|
|
274
|
-
operator: string;
|
|
275
|
-
url?: string | null;
|
|
276
|
-
formatType: string;
|
|
277
|
-
showCounts: boolean;
|
|
278
|
-
options: Array<{
|
|
279
|
-
__typename?: 'PageFilterOption';
|
|
280
|
-
name: string;
|
|
281
|
-
descriptiveName: string;
|
|
282
|
-
value: string;
|
|
283
|
-
}>;
|
|
284
|
-
aliases: Array<{
|
|
285
|
-
__typename?: 'PageFilterAlias';
|
|
286
|
-
name: string;
|
|
287
|
-
value: string;
|
|
288
|
-
}>;
|
|
289
|
-
}>;
|
|
290
|
-
} | null;
|
|
291
|
-
};
|
|
398
|
+
declare type GeneralClassNames = {
|
|
399
|
+
/** The base slot of the general section, it is the container of the general section */
|
|
400
|
+
base?: string;
|
|
401
|
+
} & SectionClassNames;
|
|
292
402
|
|
|
403
|
+
/**
|
|
404
|
+
* ClassNames for styling the `Label` component within `PropositionCard`
|
|
405
|
+
*/
|
|
293
406
|
declare type LabelClassNames = {
|
|
407
|
+
/** Base wrapper container for the label */
|
|
294
408
|
wrapper?: string;
|
|
409
|
+
/** Text for the label
|
|
410
|
+
* @example "Meest voordelig" */
|
|
295
411
|
text?: string;
|
|
296
412
|
};
|
|
297
413
|
|
|
@@ -303,9 +419,62 @@ declare type ListBoxClassNames = {
|
|
|
303
419
|
selectedIcon?: string;
|
|
304
420
|
};
|
|
305
421
|
|
|
306
|
-
|
|
422
|
+
/**
|
|
423
|
+
* ClassNames for styling the `MainImage` component within `PropositionCard`
|
|
424
|
+
*/
|
|
425
|
+
declare type MainImageClassNames = {
|
|
426
|
+
/** When phone image is the main image
|
|
427
|
+
*
|
|
428
|
+
* Only available for Smartphone Propositions when no phone is selected */
|
|
429
|
+
phoneImage?: {
|
|
430
|
+
/** Wrapper container for the phone image and stock indicator */
|
|
431
|
+
wrapper?: string;
|
|
432
|
+
/** Wrapper container for the phone image */
|
|
433
|
+
imageWrapper?: string;
|
|
434
|
+
/** Phone image element */
|
|
435
|
+
image?: string;
|
|
436
|
+
/** Stock indicator under the phone image
|
|
437
|
+
*
|
|
438
|
+
* Only available when the phone is in stock */
|
|
439
|
+
stockIndicator?: {
|
|
440
|
+
/** Wrapper container for the stock indicator */
|
|
441
|
+
wrapper?: string;
|
|
442
|
+
/** Stock indicator icon */
|
|
443
|
+
icon?: string;
|
|
444
|
+
/** Stock indicator text
|
|
445
|
+
* @example "Direct leverbaar" */
|
|
446
|
+
text?: string;
|
|
447
|
+
};
|
|
448
|
+
};
|
|
449
|
+
/** When Provider image is the main image
|
|
450
|
+
*
|
|
451
|
+
* Not available for Smartphone Propositions when no phone is selected */
|
|
452
|
+
providerImage?: {
|
|
453
|
+
/** Wrapper container for the provider image */
|
|
454
|
+
imageWrapper?: string;
|
|
455
|
+
/** Provider image element */
|
|
456
|
+
image?: string;
|
|
457
|
+
};
|
|
458
|
+
};
|
|
307
459
|
|
|
308
460
|
declare type ModalClassNames = {
|
|
461
|
+
/** The backdrop slot, it is displayed behind the modal */
|
|
462
|
+
backdrop?: string;
|
|
463
|
+
/** The wrapper slot of the modal. It wraps the base and the backdrop slots */
|
|
464
|
+
wrapper?: string;
|
|
465
|
+
/** The main slot of the modal content */
|
|
466
|
+
base?: string;
|
|
467
|
+
/** The header of the modal, it is displayed at the top of the modal */
|
|
468
|
+
header?: string;
|
|
469
|
+
/** The body of the modal, it is displayed in the middle of the modal */
|
|
470
|
+
body?: string;
|
|
471
|
+
/** The footer of the modal, it is displayed at the bottom of the modal */
|
|
472
|
+
footer?: string;
|
|
473
|
+
/** The close button (X) of the modal in top-right corner */
|
|
474
|
+
closeButton?: string;
|
|
475
|
+
};
|
|
476
|
+
|
|
477
|
+
declare type ModalClassNames_2 = {
|
|
309
478
|
/** The backdrop slot, it is displayed behind the modal */
|
|
310
479
|
backdrop?: string;
|
|
311
480
|
/** The wrapper slot of the modal. It wraps the base and the backdrop slots */
|
|
@@ -326,7 +495,7 @@ declare type ModalClassNames = {
|
|
|
326
495
|
primaryButton?: string;
|
|
327
496
|
};
|
|
328
497
|
|
|
329
|
-
declare type
|
|
498
|
+
declare type ModalClassNames_3 = {
|
|
330
499
|
/** The backdrop slot, it is displayed behind the modal */
|
|
331
500
|
backdrop?: string;
|
|
332
501
|
/** The wrapper slot of the modal. It wraps the base and the backdrop slots */
|
|
@@ -343,7 +512,7 @@ declare type ModalClassNames_2 = {
|
|
|
343
512
|
closeButton?: string;
|
|
344
513
|
};
|
|
345
514
|
|
|
346
|
-
declare type
|
|
515
|
+
declare type ModalClassNames_4 = {
|
|
347
516
|
/** The backdrop slot, it is displayed behind the modal */
|
|
348
517
|
backdrop?: string;
|
|
349
518
|
/** The wrapper slot of the modal. It wraps the base and the backdrop slots */
|
|
@@ -360,9 +529,46 @@ declare type ModalClassNames_3 = {
|
|
|
360
529
|
closeButton?: string;
|
|
361
530
|
};
|
|
362
531
|
|
|
532
|
+
declare type ModalClassNames_5 = {
|
|
533
|
+
/** The backdrop slot, it is displayed behind the modal */
|
|
534
|
+
backdrop?: string;
|
|
535
|
+
/** The wrapper slot of the modal. It wraps the base and the backdrop slots */
|
|
536
|
+
wrapper?: string;
|
|
537
|
+
/** The main slot of the modal content */
|
|
538
|
+
base?: string;
|
|
539
|
+
/** The header of the modal, it is displayed at the top of the modal */
|
|
540
|
+
header?: string;
|
|
541
|
+
/** The body of the modal, it is displayed in the middle of the modal */
|
|
542
|
+
body?: string;
|
|
543
|
+
/** The footer of the modal, it is displayed at the bottom of the modal */
|
|
544
|
+
footer?: string;
|
|
545
|
+
/** The close button (X) of the modal in top-right corner */
|
|
546
|
+
closeButton?: string;
|
|
547
|
+
};
|
|
548
|
+
|
|
549
|
+
declare type MonthlyFeeClassNames = {
|
|
550
|
+
/** Container for the monthly fee row */
|
|
551
|
+
container?: string;
|
|
552
|
+
/** Label text for the monthly fee */
|
|
553
|
+
label?: string;
|
|
554
|
+
/** Price value for the monthly fee */
|
|
555
|
+
price?: string;
|
|
556
|
+
};
|
|
557
|
+
|
|
558
|
+
declare type MonthlyFeeTransitionClassNames = {
|
|
559
|
+
/** Container for the transition row */
|
|
560
|
+
container?: string;
|
|
561
|
+
/** Label with icon */
|
|
562
|
+
label?: string;
|
|
563
|
+
/** Icon */
|
|
564
|
+
icon?: string;
|
|
565
|
+
/** Price */
|
|
566
|
+
price?: string;
|
|
567
|
+
};
|
|
568
|
+
|
|
363
569
|
declare type NumberPreservationModalClassNames = {
|
|
364
570
|
/** Modal dialog class styling slots - see type `ModalClassNames` */
|
|
365
|
-
modal?:
|
|
571
|
+
modal?: ModalClassNames_4;
|
|
366
572
|
/** Header section containing icon and title */
|
|
367
573
|
header?: {
|
|
368
574
|
/** Container wrapping the header content */
|
|
@@ -434,42 +640,6 @@ declare type NumberPreservationModalClassNames = {
|
|
|
434
640
|
submitButton?: string;
|
|
435
641
|
};
|
|
436
642
|
|
|
437
|
-
declare type PhoneListContainerClassNames = {
|
|
438
|
-
base?: string;
|
|
439
|
-
wrapper?: string;
|
|
440
|
-
title?: string;
|
|
441
|
-
description?: string;
|
|
442
|
-
selectedIcon?: string;
|
|
443
|
-
item?: string;
|
|
444
|
-
itemWrapper?: string;
|
|
445
|
-
itemContent?: string;
|
|
446
|
-
itemLabel?: string;
|
|
447
|
-
itemDescription?: string;
|
|
448
|
-
emptyContent?: string;
|
|
449
|
-
};
|
|
450
|
-
|
|
451
|
-
export declare function PhoneSelector({ onChange, classNames, disabled, productSlug: initialProductSlug, selectedDistinctProperties: initialSelectedDistinctProperties, }: PhoneSelectorProps): JSX.Element;
|
|
452
|
-
|
|
453
|
-
declare type PhoneSelectorClassNames = {
|
|
454
|
-
base?: string;
|
|
455
|
-
button?: string;
|
|
456
|
-
/** Filter modal class styling slots - see type `ModalClassNames` */
|
|
457
|
-
modal?: ModalClassNames;
|
|
458
|
-
brandTabs?: string;
|
|
459
|
-
phoneList?: PhoneListContainerClassNames;
|
|
460
|
-
variantList?: string;
|
|
461
|
-
confirmButton?: string;
|
|
462
|
-
};
|
|
463
|
-
|
|
464
|
-
declare type PhoneSelectorProps = {
|
|
465
|
-
onChange?: (productSlug: string, distinctProperties: VersionDistinctProperty[]) => void;
|
|
466
|
-
classNames?: PhoneSelectorClassNames;
|
|
467
|
-
disabled?: boolean;
|
|
468
|
-
placeholder?: string;
|
|
469
|
-
productSlug?: string;
|
|
470
|
-
selectedDistinctProperties?: VersionDistinctProperty[];
|
|
471
|
-
};
|
|
472
|
-
|
|
473
643
|
declare type PopoverContentClassNames = {
|
|
474
644
|
base?: string;
|
|
475
645
|
trigger?: string;
|
|
@@ -494,7 +664,7 @@ declare type PostcodeCheckLoadingClassNames = {
|
|
|
494
664
|
|
|
495
665
|
export declare type PostcodeCheckModalClassNames = {
|
|
496
666
|
/** Modal dialog class styling slots - see type `ModalClassNames` */
|
|
497
|
-
modal?:
|
|
667
|
+
modal?: ModalClassNames;
|
|
498
668
|
/** Header section containing icon and title */
|
|
499
669
|
header?: {
|
|
500
670
|
/** Container wrapping the header content */
|
|
@@ -525,12 +695,22 @@ export declare type PostcodeCheckModalClassNames = {
|
|
|
525
695
|
/** Input label styling */
|
|
526
696
|
label?: string;
|
|
527
697
|
};
|
|
528
|
-
/** Error message
|
|
529
|
-
|
|
530
|
-
/**
|
|
531
|
-
|
|
532
|
-
/**
|
|
533
|
-
|
|
698
|
+
/** Error alert message */
|
|
699
|
+
errorAlert?: {
|
|
700
|
+
/** Alert container */
|
|
701
|
+
base?: string;
|
|
702
|
+
/** Alert title text */
|
|
703
|
+
title?: string;
|
|
704
|
+
/** Alert description text */
|
|
705
|
+
description?: string;
|
|
706
|
+
/** Alert main content wrapper */
|
|
707
|
+
mainWrapper?: string;
|
|
708
|
+
/** Alert close button */
|
|
709
|
+
closeButton?: string;
|
|
710
|
+
/** Alert icon wrapper */
|
|
711
|
+
iconWrapper?: string;
|
|
712
|
+
/** Alert icon */
|
|
713
|
+
alertIcon?: string;
|
|
534
714
|
};
|
|
535
715
|
};
|
|
536
716
|
/** Provider selection section */
|
|
@@ -553,51 +733,53 @@ export declare type PostcodeCheckModalClassNames = {
|
|
|
553
733
|
submitButton?: string;
|
|
554
734
|
};
|
|
555
735
|
|
|
556
|
-
|
|
557
|
-
/**
|
|
558
|
-
|
|
559
|
-
/**
|
|
560
|
-
|
|
561
|
-
/**
|
|
562
|
-
|
|
563
|
-
/**
|
|
564
|
-
|
|
565
|
-
/**
|
|
566
|
-
|
|
736
|
+
declare type PriceRowClassNames = {
|
|
737
|
+
/** Container for the price row */
|
|
738
|
+
container?: string;
|
|
739
|
+
/** Label text */
|
|
740
|
+
label?: string;
|
|
741
|
+
/** Price container */
|
|
742
|
+
priceContainer?: string;
|
|
743
|
+
/** Original price (strikethrough) */
|
|
744
|
+
originalPrice?: string;
|
|
745
|
+
/** Current price */
|
|
746
|
+
currentPrice?: string;
|
|
567
747
|
};
|
|
568
748
|
|
|
569
749
|
/**
|
|
570
|
-
* ClassNames for styling the `
|
|
750
|
+
* ClassNames for styling the `Pricing` component within `PropositionCard`
|
|
571
751
|
*/
|
|
572
|
-
|
|
752
|
+
declare type PricingClassNames = {
|
|
573
753
|
/** Wrapper container for the pricing section */
|
|
574
|
-
|
|
575
|
-
/**
|
|
576
|
-
* @example "
|
|
577
|
-
|
|
578
|
-
/**
|
|
579
|
-
|
|
754
|
+
wrapper?: string;
|
|
755
|
+
/** Promotion text for monthly fee
|
|
756
|
+
* @example "12 mnd van 10,- voor:" */
|
|
757
|
+
promotionText?: string;
|
|
758
|
+
/** Wrapper container for the monthly fee */
|
|
759
|
+
monthlyFeeWrapper?: string;
|
|
580
760
|
/** Monthly fee value text (price per month)
|
|
581
761
|
* @example "10,-" */
|
|
582
762
|
monthlyFeeValue?: string;
|
|
583
763
|
/** Monthly fee label text
|
|
584
|
-
|
|
764
|
+
/* @example "/ maand" */
|
|
585
765
|
monthlyFeeLabel?: string;
|
|
586
|
-
/**
|
|
587
|
-
*
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
766
|
+
/** Product price text (one-time fee for phone)
|
|
767
|
+
*
|
|
768
|
+
* Only visible for Smartphone Propositions
|
|
769
|
+
* @example "+ 100,- eenmalig" */
|
|
770
|
+
oneTimeFee?: string;
|
|
771
|
+
/** Wrapper container for the average price */
|
|
772
|
+
averagePriceWrapper?: string;
|
|
773
|
+
/** Average price Icon */
|
|
774
|
+
averagePriceIcon?: string;
|
|
775
|
+
/** Average price value text (TCO per month)
|
|
776
|
+
* @example "gem. 54,- / maand" */
|
|
777
|
+
averagePriceValue?: string;
|
|
596
778
|
};
|
|
597
779
|
|
|
598
|
-
declare type ProductCategory = 'sim-only-proposition' | 'fixed-proposition' | 'smartphone-proposition' | 'smartphone-proposition-extended';
|
|
780
|
+
export declare type ProductCategory = 'sim-only-proposition' | 'fixed-proposition' | 'smartphone-proposition' | 'smartphone-proposition-extended';
|
|
599
781
|
|
|
600
|
-
export declare function ProductResults({
|
|
782
|
+
export declare function ProductResults({ classNames, initialSelectedFilters, initialProfile, onProfileChange, onError, ...props }: ProductResultsProps): JSX.Element;
|
|
601
783
|
|
|
602
784
|
/**
|
|
603
785
|
* ClassNames for styling different parts of the `ProductResults` component
|
|
@@ -614,13 +796,17 @@ export declare type ProductResultsClassNames = {
|
|
|
614
796
|
/** Filter button (only on mobile & tablet screens) */
|
|
615
797
|
filterButton?: string;
|
|
616
798
|
/** Filter modal class styling slots - see type `ModalClassNames` */
|
|
617
|
-
filterModal?:
|
|
799
|
+
filterModal?: ModalClassNames_2;
|
|
618
800
|
/** Postcode check modal class styling slots - see type `PostcodeCheckModalClassNames` */
|
|
619
801
|
postcodeCheckModal?: PostcodeCheckModalClassNames;
|
|
802
|
+
/** CombiDeal modal class styling slots - see type `CombiDealModalClassNames` */
|
|
803
|
+
combiDealModal?: CombiDealModalClassNames;
|
|
620
804
|
/** Number preservation modal class styling slots - see type `NumberPreservationModalClassNames` */
|
|
621
805
|
numberPreservationModal?: NumberPreservationModalClassNames;
|
|
622
|
-
/**
|
|
806
|
+
/** Proposition results class styling slots - see type `ResultsClassNames` */
|
|
623
807
|
results?: ResultsClassNames;
|
|
808
|
+
/** Error alert class styling slots - see type `ErrorAlertClassNames` */
|
|
809
|
+
errorAlert?: ErrorAlertClassNames;
|
|
624
810
|
};
|
|
625
811
|
|
|
626
812
|
export declare type ProductResultsProps = {
|
|
@@ -632,12 +818,15 @@ export declare type ProductResultsProps = {
|
|
|
632
818
|
showTopPropositions?: boolean;
|
|
633
819
|
/** Customize texts */
|
|
634
820
|
texts?: {
|
|
821
|
+
/** Title above profile buttons
|
|
822
|
+
* @default "Personaliseer" */
|
|
823
|
+
profileTitle?: string;
|
|
635
824
|
/** Title above top propositions (only shown when `showTopPropositions` is set to `true`)
|
|
636
825
|
* @default "Beste providers voor jou" */
|
|
637
|
-
topPropositionsTitle
|
|
826
|
+
topPropositionsTitle?: string;
|
|
638
827
|
/** Title above all propositions (only shown when `showTopPropositions` is set to `true`)
|
|
639
828
|
* @default "Alle providers op een rijtje" */
|
|
640
|
-
allPropositionsTitle
|
|
829
|
+
allPropositionsTitle?: string;
|
|
641
830
|
};
|
|
642
831
|
/** Initial selected filters */
|
|
643
832
|
initialSelectedFilters?: FilterValue[];
|
|
@@ -653,23 +842,6 @@ export declare type ProductResultsProps = {
|
|
|
653
842
|
onError?: (error: Error) => void;
|
|
654
843
|
};
|
|
655
844
|
|
|
656
|
-
/**
|
|
657
|
-
* ClassNames for styling the `ProductSection` component within `PropositionCard`
|
|
658
|
-
*/
|
|
659
|
-
export declare type ProductSectionClassNames = {
|
|
660
|
-
/** Wrapper container for the entire product section */
|
|
661
|
-
base?: string;
|
|
662
|
-
/** Image wrapper, it handles alignment, placement, and general appearance for the product image */
|
|
663
|
-
imageWrapper?: string;
|
|
664
|
-
/** Product image element */
|
|
665
|
-
image?: string;
|
|
666
|
-
/** Delivery Text Icon " */
|
|
667
|
-
deliveryTextIcon?: string;
|
|
668
|
-
/** Delivery Text
|
|
669
|
-
* @example "Direct leverbaar" */
|
|
670
|
-
deliveryText?: string;
|
|
671
|
-
};
|
|
672
|
-
|
|
673
845
|
declare type Profile = z.infer<typeof profileSchema>;
|
|
674
846
|
|
|
675
847
|
declare const profileSchema: z_2.ZodObject<{
|
|
@@ -696,9 +868,9 @@ declare const profileSchema: z_2.ZodObject<{
|
|
|
696
868
|
}, z_2.core.$strip>;
|
|
697
869
|
|
|
698
870
|
/**
|
|
699
|
-
* ClassNames for styling the `
|
|
871
|
+
* ClassNames for styling the `PromotionList` component within `PropositionCard`
|
|
700
872
|
*/
|
|
701
|
-
|
|
873
|
+
declare type PromotionListClassNames = {
|
|
702
874
|
/** Wrapper container for the promotions list */
|
|
703
875
|
base?: string;
|
|
704
876
|
/** Individual promotion item
|
|
@@ -706,201 +878,144 @@ export declare type PromotionsListClassNames = {
|
|
|
706
878
|
item?: string;
|
|
707
879
|
/** Checkmark icon for each promotion item */
|
|
708
880
|
promotionIcon?: string;
|
|
709
|
-
/** Urgent text chip
|
|
710
|
-
urgentChip?: string;
|
|
711
|
-
};
|
|
712
|
-
|
|
713
|
-
export declare type PromotionsListProps = {
|
|
714
|
-
/** Promotions to display */
|
|
715
|
-
promotions: string[];
|
|
716
|
-
/** Urgent text to display as a chip above promotions
|
|
881
|
+
/** Urgent text chip (only visible when promotion is urgent)
|
|
717
882
|
* @example "Actie nog 6 dagen" */
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
883
|
+
urgentChip?: {
|
|
884
|
+
/** The base slot of the chip, it is the container of the chip */
|
|
885
|
+
base?: string;
|
|
886
|
+
/** The content slot of the chip, it is the container of the text */
|
|
887
|
+
content?: string;
|
|
888
|
+
};
|
|
721
889
|
};
|
|
722
890
|
|
|
723
|
-
export declare function PropositionCard({ horizontal, ...props }: PropositionCardProps): JSX.Element;
|
|
724
|
-
|
|
725
891
|
/**
|
|
726
892
|
* ClassNames for styling different parts of the `PropositionCard` component
|
|
727
893
|
*/
|
|
728
|
-
|
|
729
|
-
/**
|
|
894
|
+
declare type PropositionCardClassNames = {
|
|
895
|
+
/** Base wrapper container for the label and proposition card
|
|
896
|
+
*
|
|
897
|
+
* Only available when there is a label */
|
|
898
|
+
cardWrapper?: string;
|
|
899
|
+
/** Label class styling slots - see type `LabelClassNames`
|
|
900
|
+
*
|
|
901
|
+
* Only available when there is a label */
|
|
902
|
+
label?: LabelClassNames;
|
|
903
|
+
/** Card container for the proposition card */
|
|
730
904
|
card?: string;
|
|
731
|
-
/**
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
905
|
+
/** Specific section wrapper styles for horizontal card layout */
|
|
906
|
+
horizontalCard?: {
|
|
907
|
+
/** Card header wrapper around `mainImage` */
|
|
908
|
+
header?: string;
|
|
909
|
+
/** Vertical divider between `header` and `body` */
|
|
910
|
+
divider?: string;
|
|
911
|
+
/** Card body wrapper around `propositionHeader` and `promotionList` */
|
|
912
|
+
body?: string;
|
|
913
|
+
/** Card footer wrapper around `pricing` and `button` */
|
|
914
|
+
footer?: string;
|
|
915
|
+
};
|
|
916
|
+
/** Specific section wrapper styles for vertical card layout */
|
|
917
|
+
verticalCard?: {
|
|
918
|
+
/** Card header wrapper around `mainImage` */
|
|
919
|
+
header?: string;
|
|
920
|
+
/** Card body wrapper around `propositionHeader` and `promotionList` */
|
|
921
|
+
body?: string;
|
|
922
|
+
/** Horizontal divider between `body` and `footer` */
|
|
923
|
+
divider?: string;
|
|
924
|
+
/** Card footer wrapper around `pricing` and `button` */
|
|
925
|
+
footer?: string;
|
|
926
|
+
};
|
|
927
|
+
/** Main image class styling slots - see type `MainImageClassNames`
|
|
928
|
+
*
|
|
929
|
+
* Within the `header` section */
|
|
930
|
+
mainImage?: MainImageClassNames;
|
|
931
|
+
/** Proposition header class styling slots - see type `PropositionHeaderClassNames`
|
|
738
932
|
*
|
|
739
|
-
*
|
|
740
|
-
imageWrapper?: string;
|
|
741
|
-
/** Proposition provider image (only on Horizontal card) */
|
|
742
|
-
image?: string;
|
|
743
|
-
/** Product section (only visible for smartphone propositions) class styling slots - see type `ProductSectionClassNames` */
|
|
744
|
-
productSection?: ProductSectionClassNames;
|
|
745
|
-
/** Proposition header class styling slots - see type `PropositionHeaderClassNames` */
|
|
933
|
+
* Within the `body` section */
|
|
746
934
|
propositionHeader?: PropositionHeaderClassNames;
|
|
747
|
-
/**
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
/**
|
|
752
|
-
*
|
|
753
|
-
*
|
|
754
|
-
|
|
755
|
-
* - "66 (60 HD)"
|
|
756
|
-
* - "Via TV app" */
|
|
757
|
-
specifications?: string;
|
|
758
|
-
/** Urgent text chip (only visible when promotion is urgent)
|
|
759
|
-
* @example "Actie nog 6 dagen" */
|
|
760
|
-
urgentChip?: string;
|
|
935
|
+
/** Promotion list class styling slots - see type `PromotionListClassNames`
|
|
936
|
+
*
|
|
937
|
+
* Within the `body` section */
|
|
938
|
+
promotionList?: PromotionListClassNames;
|
|
939
|
+
/** Pricing section class styling slots - see type `PricingClassNames`
|
|
940
|
+
*
|
|
941
|
+
* Within the `footer` section */
|
|
942
|
+
pricing?: PricingClassNames;
|
|
761
943
|
/** Call To Action button
|
|
944
|
+
*
|
|
945
|
+
* Within the `footer` section
|
|
762
946
|
* @example "Bekijk" */
|
|
763
947
|
button?: string;
|
|
764
|
-
/** Card wrapper (container for the label and card) */
|
|
765
|
-
cardWrapper?: string;
|
|
766
|
-
/** Label class styling slots - see type `LabelClassNames` */
|
|
767
|
-
label?: LabelClassNames;
|
|
768
|
-
};
|
|
769
|
-
|
|
770
|
-
export declare type PropositionCardProps = {
|
|
771
|
-
/** Click handler on the card */
|
|
772
|
-
onClick: (e: {
|
|
773
|
-
target: Element;
|
|
774
|
-
}) => void;
|
|
775
|
-
/** Click handler to open the details modal */
|
|
776
|
-
onInfoClick: (tab: 'general' | 'conditions' | 'channels' | 'costs') => void;
|
|
777
|
-
/** Whether the proposition is disabled */
|
|
778
|
-
disabled?: boolean;
|
|
779
|
-
/** Product title - should include brand + phone name
|
|
780
|
-
* @example "Apple iPhone 17" */
|
|
781
|
-
productTitle?: string;
|
|
782
|
-
/** Product image URL */
|
|
783
|
-
productImageUrl?: string;
|
|
784
|
-
/** Product image alt text */
|
|
785
|
-
productImageAlt?: string;
|
|
786
|
-
/** Product stock status
|
|
787
|
-
* @example "in_stock" */
|
|
788
|
-
productStockStatus?: string;
|
|
789
|
-
/** Product price
|
|
790
|
-
* @example "100,-" */
|
|
791
|
-
productPrice?: string;
|
|
792
|
-
/** Proposition title
|
|
793
|
-
* @example "30 GB" */
|
|
794
|
-
propositionTitle: string;
|
|
795
|
-
/** Proposition subtitle
|
|
796
|
-
* @example "Onbp min / sms" */
|
|
797
|
-
propositionSubtitle: string;
|
|
798
|
-
/** Proposition image URL */
|
|
799
|
-
propositionImageUrl: string;
|
|
800
|
-
/** Proposition image alt text */
|
|
801
|
-
propositionImageAlt: string;
|
|
802
|
-
/** Proposition specifications */
|
|
803
|
-
propositionSpecifications?: {
|
|
804
|
-
slug: string;
|
|
805
|
-
title: string;
|
|
806
|
-
}[];
|
|
807
|
-
/** Monthly fee for subscription
|
|
808
|
-
* @example "10,-" */
|
|
809
|
-
monthlyFee: string;
|
|
810
|
-
/** Average total cost per month
|
|
811
|
-
* @example "10,-" */
|
|
812
|
-
tcoPerMonth: string;
|
|
813
|
-
/** Special promotions
|
|
814
|
-
* @example ["Geen aansluitingskosten"] */
|
|
815
|
-
specialPromotions: string[];
|
|
816
|
-
/** Modification promotions
|
|
817
|
-
* @example ["€ 4,50 korting per maand"] */
|
|
818
|
-
modificationPromotions: string[];
|
|
819
|
-
/** Monthly fee promotion text
|
|
820
|
-
* @example "12 mnd van 10,- voor:" */
|
|
821
|
-
monthlyFeePromotionText?: string;
|
|
822
|
-
/** Device discount
|
|
823
|
-
* @example "100,-" */
|
|
824
|
-
deviceDiscount?: string;
|
|
825
|
-
/** Urgent text for urgent special promotion
|
|
826
|
-
* @example "Actie nog 6 dagen" */
|
|
827
|
-
urgentText?: string;
|
|
828
|
-
/** Label properties to display above the card */
|
|
829
|
-
label?: Pick<PropositionLabel, 'displayName' | 'color'>;
|
|
830
|
-
/** Class slots for styling */
|
|
831
|
-
classNames?: PropositionCardClassNames;
|
|
832
|
-
horizontal?: boolean;
|
|
833
948
|
};
|
|
834
949
|
|
|
835
950
|
/**
|
|
836
951
|
* ClassNames for styling the `PropositionHeader` component within `PropositionCard`
|
|
837
952
|
*/
|
|
838
|
-
|
|
953
|
+
declare type PropositionHeaderClassNames = {
|
|
839
954
|
/** Wrapper container for the proposition header */
|
|
840
955
|
base?: string;
|
|
841
|
-
/**
|
|
842
|
-
|
|
843
|
-
/**
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
/**
|
|
859
|
-
*
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
956
|
+
/** Wrapper container for the title, subtitle and optional provider image */
|
|
957
|
+
titleWrapper?: string;
|
|
958
|
+
/** Phone class styling slots
|
|
959
|
+
*
|
|
960
|
+
* Only available for Smartphone Propositions when no phone is selected */
|
|
961
|
+
phone?: {
|
|
962
|
+
/** Phone title text
|
|
963
|
+
* @example "Apple iPhone 16" */
|
|
964
|
+
title?: string;
|
|
965
|
+
/** Phone subtitle text
|
|
966
|
+
* @example "20 GB • Onbp min / sms" */
|
|
967
|
+
subtitle?: string;
|
|
968
|
+
/** Wrapper container for the provider image */
|
|
969
|
+
providerImageWrapper?: string;
|
|
970
|
+
/** Provider image element */
|
|
971
|
+
providerImage?: string;
|
|
972
|
+
};
|
|
973
|
+
/** Proposition class styling slots
|
|
974
|
+
*
|
|
975
|
+
* Not available for Smartphone Propositions when no phone is selected */
|
|
976
|
+
proposition?: {
|
|
977
|
+
/** Wrapper container for the proposition title and subtitle */
|
|
978
|
+
wrapper?: string;
|
|
979
|
+
/** Proposition title text
|
|
980
|
+
* @example "30 GB"
|
|
981
|
+
* @example "100 Mb/s" */
|
|
982
|
+
title?: string;
|
|
983
|
+
/** Proposition subtitle text
|
|
984
|
+
* @example "Onbp min / sms"
|
|
985
|
+
* @example "Glasvezel" */
|
|
986
|
+
subtitle?: string;
|
|
987
|
+
/** Specifications class styling slots */
|
|
988
|
+
specifications?: {
|
|
989
|
+
/** Wrapper container for the specifications */
|
|
990
|
+
wrapper?: string;
|
|
991
|
+
/** Specification item text
|
|
992
|
+
* @example "2 jaar"
|
|
993
|
+
* @example "350 / 400 Mb/s"
|
|
994
|
+
* @example "66 (60 HD)" */
|
|
995
|
+
item?: string;
|
|
996
|
+
/** Specification icon */
|
|
997
|
+
icon?: string;
|
|
998
|
+
};
|
|
999
|
+
};
|
|
885
1000
|
};
|
|
886
1001
|
|
|
887
|
-
declare type
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
1002
|
+
declare type PropositionOverviewClassNames = {
|
|
1003
|
+
/** The base container of the proposition overview */
|
|
1004
|
+
base?: string;
|
|
1005
|
+
/** Average per month section class names */
|
|
1006
|
+
averageSection?: AverageSectionClassNames;
|
|
1007
|
+
/** Discount section class names (for smartphone products) */
|
|
1008
|
+
discountSection?: DiscountSectionClassNames;
|
|
1009
|
+
/** Credit info label text */
|
|
1010
|
+
creditInfoLabel?: string;
|
|
1011
|
+
/** Credit info component class styling slots - see type `CreditInfoClassNames` */
|
|
1012
|
+
creditInfo?: CreditInfoClassNames_2;
|
|
892
1013
|
};
|
|
893
1014
|
|
|
894
|
-
declare type PropositionLabelColor = 'primary' | 'secondary' | 'default';
|
|
895
|
-
|
|
896
|
-
declare type PropositionLabelType = 'isRetention' | 'isCheapestPhone' | 'isBudget' | 'isBudgetFiber' | 'isCombi' | 'isFastestInternet' | 'isBudgetOwnNetwork' | 'isBudgetNetwork';
|
|
897
|
-
|
|
898
|
-
export declare function RadioFilter({ id, options, value, onChange, classNames, }: RadioFilterProps): JSX.Element;
|
|
899
|
-
|
|
900
1015
|
/**
|
|
901
1016
|
* ClassNames for styling different parts of the `RadioFilter` component
|
|
902
1017
|
*/
|
|
903
|
-
|
|
1018
|
+
declare type RadioFilterClassNames = {
|
|
904
1019
|
/** Radio group */
|
|
905
1020
|
radioGroup?: {
|
|
906
1021
|
/** Radio group root wrapper, it wraps the label and the wrapper */
|
|
@@ -933,21 +1048,6 @@ export declare type RadioFilterClassNames = {
|
|
|
933
1048
|
};
|
|
934
1049
|
};
|
|
935
1050
|
|
|
936
|
-
export declare type RadioFilterProps = {
|
|
937
|
-
/** Unique identifier for this filter */
|
|
938
|
-
id: string;
|
|
939
|
-
/** Available options to display as radio options */
|
|
940
|
-
options: FilterOption['options'];
|
|
941
|
-
/** Currently selected value */
|
|
942
|
-
value?: string;
|
|
943
|
-
/** Callback when selection changes */
|
|
944
|
-
onChange: (value: string) => void;
|
|
945
|
-
/** Class slots for styling */
|
|
946
|
-
classNames?: RadioFilterClassNames;
|
|
947
|
-
};
|
|
948
|
-
|
|
949
|
-
export declare function RangeFilter({ min, max, step, value, options, maxOptionValue, marks, formatType, onChange, classNames, }: SliderFilterProps): JSX.Element;
|
|
950
|
-
|
|
951
1051
|
declare type ResultsClassNames = {
|
|
952
1052
|
/** Title above top propositions (only shown when `showTopPropositions` is set to `true`)
|
|
953
1053
|
* @example "Beste providers voor jou" */
|
|
@@ -959,6 +1059,8 @@ declare type ResultsClassNames = {
|
|
|
959
1059
|
topPropositionsGrid?: string;
|
|
960
1060
|
/** Grid wrapper of the all propositions */
|
|
961
1061
|
allPropositionsGrid?: string;
|
|
1062
|
+
/** Skeleton card shown in the loading state */
|
|
1063
|
+
skeletonCard?: string;
|
|
962
1064
|
/** Results not found component class styling slots - see type `ResultsNotFoundClassNames` */
|
|
963
1065
|
resultsNotFound?: ResultsNotFoundClassNames;
|
|
964
1066
|
/** Credit info component class styling slots - see type `CreditInfoClassNames` */
|
|
@@ -969,6 +1071,8 @@ declare type ResultsClassNames = {
|
|
|
969
1071
|
propositionCard?: PropositionCardClassNames;
|
|
970
1072
|
/** PostcodeCheck loading card class styling slots (only for fixed propositions) - see type `PostcodeCheckLoadingClassNames` */
|
|
971
1073
|
postcodeCheckLoading?: PostcodeCheckLoadingClassNames;
|
|
1074
|
+
/** Details modal class styling slots - see type `DetailsModalClassNames` */
|
|
1075
|
+
detailsModal?: DetailsModalClassNames;
|
|
972
1076
|
};
|
|
973
1077
|
|
|
974
1078
|
declare type ResultsNotFoundClassNames = {
|
|
@@ -998,44 +1102,19 @@ declare type ResultsNotFoundClassNames = {
|
|
|
998
1102
|
};
|
|
999
1103
|
};
|
|
1000
1104
|
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
input: string;
|
|
1009
|
-
output: string;
|
|
1010
|
-
};
|
|
1011
|
-
Boolean: {
|
|
1012
|
-
input: boolean;
|
|
1013
|
-
output: boolean;
|
|
1014
|
-
};
|
|
1015
|
-
Int: {
|
|
1016
|
-
input: number;
|
|
1017
|
-
output: number;
|
|
1018
|
-
};
|
|
1019
|
-
Float: {
|
|
1020
|
-
input: number;
|
|
1021
|
-
output: number;
|
|
1022
|
-
};
|
|
1023
|
-
Json: {
|
|
1024
|
-
input: any;
|
|
1025
|
-
output: any;
|
|
1026
|
-
};
|
|
1027
|
-
Value: {
|
|
1028
|
-
input: any;
|
|
1029
|
-
output: any;
|
|
1030
|
-
};
|
|
1105
|
+
declare type SectionClassNames = {
|
|
1106
|
+
/** Link text value */
|
|
1107
|
+
link?: string;
|
|
1108
|
+
/** The title of the table section, it is the title of the table section */
|
|
1109
|
+
title?: string;
|
|
1110
|
+
/** Table class names */
|
|
1111
|
+
table?: TableClassNames;
|
|
1031
1112
|
};
|
|
1032
1113
|
|
|
1033
|
-
export declare function SelectFilter({ id, options, values, onChange, classNames, }: SelectFilterProps): JSX.Element;
|
|
1034
|
-
|
|
1035
1114
|
/**
|
|
1036
1115
|
* ClassNames for styling different parts of the `SelectFilter` component
|
|
1037
1116
|
*/
|
|
1038
|
-
|
|
1117
|
+
declare type SelectFilterClassNames = {
|
|
1039
1118
|
/** Checkbox group */
|
|
1040
1119
|
checkboxGroup?: {
|
|
1041
1120
|
/** Checkbox group root wrapper, it wraps the label and the wrapper */
|
|
@@ -1062,77 +1141,17 @@ export declare type SelectFilterClassNames = {
|
|
|
1062
1141
|
/** The text associated with the checkbox */
|
|
1063
1142
|
label?: string;
|
|
1064
1143
|
};
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
/** Available options to display as checkboxes */
|
|
1071
|
-
options: FilterOption['options'];
|
|
1072
|
-
/** Currently selected values */
|
|
1073
|
-
values?: string[];
|
|
1074
|
-
/** Callback when selection changes */
|
|
1075
|
-
onChange: (values: string[]) => void;
|
|
1076
|
-
/** Class slots for styling */
|
|
1077
|
-
classNames?: SelectFilterClassNames;
|
|
1078
|
-
};
|
|
1079
|
-
|
|
1080
|
-
export declare function Selector({ classNames, onClick, disabled, title, description, imageUrl, imageAlt, Icon, avatarName, selected, }: SelectorProps): JSX.Element;
|
|
1081
|
-
|
|
1082
|
-
/**
|
|
1083
|
-
* ClassNames for styling different parts of the `Selector` component
|
|
1084
|
-
*/
|
|
1085
|
-
export declare type SelectorClassNames = {
|
|
1086
|
-
/** Title text styling */
|
|
1087
|
-
title?: string;
|
|
1088
|
-
/** Description text styling */
|
|
1089
|
-
description?: string;
|
|
1090
|
-
/** Main button wrapper */
|
|
1091
|
-
button?: string;
|
|
1092
|
-
/** Badge component (visible when not selected) */
|
|
1093
|
-
badge?: string;
|
|
1094
|
-
/** Avatar component displaying the image or icon */
|
|
1095
|
-
avatar?: {
|
|
1096
|
-
/** Base wrapper styling for the avatar container */
|
|
1097
|
-
base?: string;
|
|
1098
|
-
/** Image element styling */
|
|
1099
|
-
img?: string;
|
|
1100
|
-
/** Name text styling (when displaying initials) */
|
|
1101
|
-
name?: string;
|
|
1102
|
-
/** Icon wrapper styling */
|
|
1103
|
-
icon?: string;
|
|
1104
|
-
/** Fallback content styling (when no image is available) */
|
|
1105
|
-
fallback?: string;
|
|
1106
|
-
};
|
|
1107
|
-
};
|
|
1108
|
-
|
|
1109
|
-
export declare type SelectorProps = {
|
|
1110
|
-
/** Class slots for styling */
|
|
1111
|
-
classNames?: SelectorClassNames;
|
|
1112
|
-
/** Main title text */
|
|
1113
|
-
title: string;
|
|
1114
|
-
/** Optional description text below the title */
|
|
1115
|
-
description?: string;
|
|
1116
|
-
/** Whether the selector is in selected state */
|
|
1117
|
-
selected?: boolean;
|
|
1118
|
-
/** Click handler for the selector */
|
|
1119
|
-
onClick: () => void;
|
|
1120
|
-
/** Icon component to display as fallback when no image is provided */
|
|
1121
|
-
Icon?: React.ElementType;
|
|
1122
|
-
/** Name to display as initials in the avatar when no image is available */
|
|
1123
|
-
avatarName?: string;
|
|
1124
|
-
/** Image URL for the avatar */
|
|
1125
|
-
imageUrl?: string | null;
|
|
1126
|
-
/** Alt text for the image */
|
|
1127
|
-
imageAlt?: string | null;
|
|
1128
|
-
/** Whether the selector is disabled */
|
|
1129
|
-
disabled?: boolean;
|
|
1144
|
+
/** Link to collapse the options
|
|
1145
|
+
* @example "Bekijk meer (2)"
|
|
1146
|
+
* @example "Bekijk minder"
|
|
1147
|
+
*/
|
|
1148
|
+
collapseLink?: string;
|
|
1130
1149
|
};
|
|
1131
1150
|
|
|
1132
1151
|
/**
|
|
1133
1152
|
* ClassNames for styling different parts of the `RangeFilter`, `MinFilter` and `MaxFilter` component
|
|
1134
1153
|
*/
|
|
1135
|
-
|
|
1154
|
+
declare type SliderFilterClassNames = {
|
|
1136
1155
|
/** The foundational slot, encompassing all other slots and elements
|
|
1137
1156
|
*
|
|
1138
1157
|
* It serves as the primary container */
|
|
@@ -1162,42 +1181,6 @@ export declare type SliderFilterClassNames = {
|
|
|
1162
1181
|
thumb?: string;
|
|
1163
1182
|
};
|
|
1164
1183
|
|
|
1165
|
-
export declare type SliderFilterProps = {
|
|
1166
|
-
/** Unique identifier for this filter */
|
|
1167
|
-
id: string;
|
|
1168
|
-
/** Minimum value of the range */
|
|
1169
|
-
min: number;
|
|
1170
|
-
/** Maximum value of the range */
|
|
1171
|
-
max: number;
|
|
1172
|
-
/** Step increment for the slider
|
|
1173
|
-
* @example 5 */
|
|
1174
|
-
step: number;
|
|
1175
|
-
/** Available fixed values within the slider
|
|
1176
|
-
* @example "[0,100,150,200,400,UNLIMITED]" // from 0 to Unlimited */
|
|
1177
|
-
options: number[];
|
|
1178
|
-
/** The maximum value of the slider, calculated from the options and step */
|
|
1179
|
-
maxOptionValue: number;
|
|
1180
|
-
/** Currently selected value
|
|
1181
|
-
* @example "150-400" // Range: from 150 to 400
|
|
1182
|
-
* @example "150-" // Min: from 150
|
|
1183
|
-
* @example "-400" // Max: up to 400
|
|
1184
|
-
*/
|
|
1185
|
-
value?: string;
|
|
1186
|
-
/** The marks to display on the Slider's steps. */
|
|
1187
|
-
marks: {
|
|
1188
|
-
/** The value corresponding to the mark */
|
|
1189
|
-
value: number;
|
|
1190
|
-
/** The label text of the mark */
|
|
1191
|
-
label: string;
|
|
1192
|
-
}[];
|
|
1193
|
-
/** Format type for the filter value */
|
|
1194
|
-
formatType?: FilterOption['formatType'];
|
|
1195
|
-
/** Callback when value changes */
|
|
1196
|
-
onChange: (value: string) => void;
|
|
1197
|
-
/** Class slots for styling */
|
|
1198
|
-
classNames?: SliderFilterClassNames;
|
|
1199
|
-
};
|
|
1200
|
-
|
|
1201
1184
|
declare type SortSelectClassNames = {
|
|
1202
1185
|
description?: string;
|
|
1203
1186
|
errorMessage?: string;
|
|
@@ -1217,11 +1200,60 @@ declare type SortSelectClassNames = {
|
|
|
1217
1200
|
endWrapper?: string;
|
|
1218
1201
|
};
|
|
1219
1202
|
|
|
1220
|
-
declare type
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1203
|
+
declare type TableClassNames = {
|
|
1204
|
+
/** Defines a flexible column layout and relative positioning for the table component */
|
|
1205
|
+
base?: string;
|
|
1206
|
+
/** Applies to the outermost wrapper, providing padding, flexible layout, relative positioning, visual styles, and scrollable overflow handling */
|
|
1207
|
+
wrapper?: string;
|
|
1208
|
+
/** Sets the table to have a full minimum width and auto-adjusting height */
|
|
1209
|
+
table?: string;
|
|
1210
|
+
/** Specifies rounded corners for the first child row in the table header */
|
|
1211
|
+
thead?: string;
|
|
1212
|
+
/** No specific styles are applied to the body of the table */
|
|
1213
|
+
tbody?: string;
|
|
1214
|
+
/** Styles for table rows including group focus, outline properties, and a set of undefined focus-visible classes */
|
|
1215
|
+
tr?: string;
|
|
1216
|
+
/** Styles for table headers, including padding, text alignment, font properties, and special styles for sortable columns */
|
|
1217
|
+
th?: string;
|
|
1218
|
+
/** Applies to table cells, with properties for padding, alignment, and relative positioning, plus special styles for first child elements, selection indication, and disabled cells */
|
|
1219
|
+
td?: string;
|
|
1220
|
+
};
|
|
1221
|
+
|
|
1222
|
+
declare type TableClassNames_2 = {
|
|
1223
|
+
/** Defines a flexible column layout and relative positioning for the table component */
|
|
1224
|
+
base?: string;
|
|
1225
|
+
/** Applies to the outermost wrapper, providing padding, flexible layout, relative positioning, visual styles, and scrollable overflow handling */
|
|
1226
|
+
wrapper?: string;
|
|
1227
|
+
/** Sets the table to have a full minimum width and auto-adjusting height */
|
|
1228
|
+
table?: string;
|
|
1229
|
+
/** Specifies rounded corners for the first child row in the table header */
|
|
1230
|
+
thead?: string;
|
|
1231
|
+
/** No specific styles are applied to the body of the table */
|
|
1232
|
+
tbody?: string;
|
|
1233
|
+
/** Styles for table rows including group focus, outline properties, and a set of undefined focus-visible classes */
|
|
1234
|
+
tr?: string;
|
|
1235
|
+
/** Styles for table headers, including padding, text alignment, font properties, and special styles for sortable columns */
|
|
1236
|
+
th?: string;
|
|
1237
|
+
/** Applies to table cells, with properties for padding, alignment, and relative positioning, plus special styles for first child elements, selection indication, and disabled cells */
|
|
1238
|
+
td?: string;
|
|
1225
1239
|
};
|
|
1226
1240
|
|
|
1241
|
+
declare type TabsClassNames = {
|
|
1242
|
+
/** The base slot of the tabs component */
|
|
1243
|
+
base?: string;
|
|
1244
|
+
/** The tab list container */
|
|
1245
|
+
tabList?: string;
|
|
1246
|
+
/** Individual tab */
|
|
1247
|
+
tab?: string;
|
|
1248
|
+
/** Tab panel */
|
|
1249
|
+
panel?: string;
|
|
1250
|
+
/** Tab cursor (active indicator) */
|
|
1251
|
+
cursor?: string;
|
|
1252
|
+
};
|
|
1253
|
+
|
|
1254
|
+
declare type TermsClassNames = {
|
|
1255
|
+
/** The base slot of the terms section, it is the container of the terms section */
|
|
1256
|
+
base?: string;
|
|
1257
|
+
} & SectionClassNames;
|
|
1258
|
+
|
|
1227
1259
|
export { }
|