@mobielnl/elements 0.9.1 → 0.10.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.
package/dist/index.d.ts CHANGED
@@ -1,10 +1,10 @@
1
+ import { ElementType } from 'react';
1
2
  import { JSX } from 'react/jsx-runtime';
2
3
  import { ReactNode } from 'react';
3
- import { z } from 'zod';
4
- import * as z_2 from 'zod';
4
+ import * as z from 'zod';
5
5
 
6
6
  /** Union type of all action events */
7
- declare type ActionEvent = FiltersChangedEvent | SortChangedEvent | ProfileChangedEvent | DealSelectedEvent | DetailsViewedEvent;
7
+ export declare type ActionEvent = FiltersChangedEvent | SortChangedEvent | ProfileChangedEvent | DealSelectedEvent | DetailsViewedEvent;
8
8
 
9
9
  declare type ActiveFilterChipsClassNames = {
10
10
  /** The container of the filter chips */
@@ -13,6 +13,16 @@ declare type ActiveFilterChipsClassNames = {
13
13
  filterChip?: FilterChipClassNames;
14
14
  };
15
15
 
16
+ export declare type Address = z.infer<typeof addressSchema>;
17
+
18
+ declare const addressSchema: z.ZodObject<{
19
+ postcode: z.ZodString;
20
+ number: z.ZodString;
21
+ numberAddon: z.ZodPipe<z.ZodOptional<z.ZodString>, z.ZodTransform<string | undefined, string | undefined>>;
22
+ street: z.ZodString;
23
+ city: z.ZodString;
24
+ }, z.core.$strip>;
25
+
16
26
  declare type AverageSectionClassNames = {
17
27
  /** Container for the average per month section */
18
28
  container?: string;
@@ -66,6 +76,11 @@ declare type AverageSectionClassNames = {
66
76
  };
67
77
  };
68
78
 
79
+ export declare type Block = {
80
+ scope: string;
81
+ amount: number;
82
+ };
83
+
69
84
  declare type ChannelsClassNames = {
70
85
  /** The base slot of the channels section, it is the container of the channels section */
71
86
  base?: string;
@@ -230,7 +245,7 @@ declare type CreditInfoClassNames_2 = {
230
245
  };
231
246
 
232
247
  /** Event fired when a deal/proposition is selected (clicked) */
233
- declare type DealSelectedEvent = {
248
+ export declare type DealSelectedEvent = {
234
249
  type: 'deal_selected';
235
250
  /** The full proposition data */
236
251
  proposition: ProductCardPropositionFragment;
@@ -264,7 +279,7 @@ declare type DetailsModalClassNames = {
264
279
  declare type DetailsModalTab = 'general' | 'conditions' | 'channels' | 'costs';
265
280
 
266
281
  /** Event fired when proposition details are viewed */
267
- declare type DetailsViewedEvent = {
282
+ export declare type DetailsViewedEvent = {
268
283
  type: 'details_viewed';
269
284
  /** The full proposition data */
270
285
  proposition: ProductCardPropositionFragment;
@@ -342,6 +357,51 @@ export declare type ElementsRootProps = {
342
357
  css?: string;
343
358
  cssUrl?: string;
344
359
  };
360
+ /**
361
+ * Translations per locale for customizing copy/tone of voice
362
+ *
363
+ * @example
364
+ * translations={{
365
+ * // Locale 'nl' can be partial as undefined values fallback to default 'nl' translations
366
+ * nl: {
367
+ * common: {
368
+ * yes: 'Ja',
369
+ * },
370
+ * },
371
+ * // Locale 'en' can be partial as undefined values fallback to default 'en' translations
372
+ * en: {
373
+ * common: {
374
+ * yes: 'Yes',
375
+ * },
376
+ * },
377
+ * // Other locales require complete translations
378
+ * de: {
379
+ * common: {
380
+ * yes: 'Ja',
381
+ * no: 'Nein',
382
+ * confirm: 'Bestätigen',
383
+ * cancel: 'Abbrechen',
384
+ * loading: 'Laden...',
385
+ * close: 'Schließen',
386
+ * next: 'Weiter',
387
+ * previous: 'Zurück',
388
+ * select: 'Auswählen',
389
+ * save: 'Speichern',
390
+ * back: 'Zurück',
391
+ * },
392
+ * numberPreservation: {
393
+ * ...
394
+ * },
395
+ * ... // complete Translations object
396
+ * }}
397
+ */
398
+ translations?: LocalizedTranslations;
399
+ /**
400
+ * Current locale for the UI
401
+ * @default 'nl'
402
+ * @example locale="en"
403
+ */
404
+ locale?: Locale;
345
405
  };
346
406
 
347
407
  declare type ErrorAlertClassNames = {
@@ -377,8 +437,13 @@ declare type FilterChipClassNames = {
377
437
  closeButton?: string;
378
438
  };
379
439
 
440
+ /**
441
+ * Configuration for a single filter option
442
+ */
443
+ export declare type FilterOption = NonNullable<PageByPathQuery['page']>['pageFilters'][number];
444
+
380
445
  /** Event fired when filter values change */
381
- declare type FiltersChangedEvent = {
446
+ export declare type FiltersChangedEvent = {
382
447
  type: 'filters_changed';
383
448
  /** The filter that was changed */
384
449
  filter: {
@@ -416,7 +481,7 @@ declare type FiltersClassNames = {
416
481
  /**
417
482
  * Represents an active filter value selected by the user
418
483
  */
419
- declare type FilterValue = {
484
+ export declare type FilterValue = {
420
485
  /** Identifier slug matching the corresponding `FilterOption.slug` */
421
486
  slug: string;
422
487
  /** The selected value(s) - type depends on filter type:
@@ -429,6 +494,15 @@ declare type FilterValue = {
429
494
  value: string | string[];
430
495
  };
431
496
 
497
+ export declare type FixedBlock = {
498
+ scope: string;
499
+ provider: {
500
+ name: string;
501
+ imageUrl: string;
502
+ rank: number;
503
+ };
504
+ };
505
+
432
506
  declare type GeneralClassNames = {
433
507
  /** The base slot of the general section, it is the container of the general section */
434
508
  base?: string;
@@ -453,6 +527,19 @@ declare type ListBoxClassNames = {
453
527
  selectedIcon?: string;
454
528
  };
455
529
 
530
+ export declare type Locale = 'nl' | 'en' | string;
531
+
532
+ export declare type LocalizedTranslations = {
533
+ /** Can be partial as undefined values fallback to default 'nl' translations */
534
+ nl: PartialTranslations;
535
+ } | {
536
+ /** Can be partial as undefined values fallback to default 'en' translations */
537
+ en: PartialTranslations;
538
+ } | {
539
+ /** Complete Translations object as there is no fallback object for other locales */
540
+ [locale: string]: Translations;
541
+ };
542
+
456
543
  /**
457
544
  * ClassNames for styling the `MainImage` component within `PropositionCard`
458
545
  */
@@ -476,7 +563,9 @@ declare type MainImageClassNames = {
476
563
  /** Stock indicator icon */
477
564
  icon?: string;
478
565
  /** Stock indicator text
479
- * @example "Direct leverbaar" */
566
+ * @example "Direct leverbaar"
567
+ * @example "Pre-order"
568
+ * @example "In bestelling" */
480
569
  text?: string;
481
570
  };
482
571
  };
@@ -498,7 +587,8 @@ declare type ModalClassNames = {
498
587
  wrapper?: string;
499
588
  /** The main slot of the modal content */
500
589
  base?: string;
501
- /** The header of the modal, it is displayed at the top of the modal */
590
+ /** The header of the modal, it is displayed at the top of the modal
591
+ * @example "Filters" */
502
592
  header?: string;
503
593
  /** The body of the modal, it is displayed in the middle of the modal */
504
594
  body?: string;
@@ -506,6 +596,9 @@ declare type ModalClassNames = {
506
596
  footer?: string;
507
597
  /** The close button (X) of the modal in top-right corner */
508
598
  closeButton?: string;
599
+ /** The primary button of the modal, it is displayed at the bottom of the modal
600
+ * @example "Toon resultaten" */
601
+ primaryButton?: string;
509
602
  };
510
603
 
511
604
  declare type ModalClassNames_2 = {
@@ -515,8 +608,7 @@ declare type ModalClassNames_2 = {
515
608
  wrapper?: string;
516
609
  /** The main slot of the modal content */
517
610
  base?: string;
518
- /** The header of the modal, it is displayed at the top of the modal
519
- * @example "Filters" */
611
+ /** The header of the modal, it is displayed at the top of the modal */
520
612
  header?: string;
521
613
  /** The body of the modal, it is displayed in the middle of the modal */
522
614
  body?: string;
@@ -524,9 +616,6 @@ declare type ModalClassNames_2 = {
524
616
  footer?: string;
525
617
  /** The close button (X) of the modal in top-right corner */
526
618
  closeButton?: string;
527
- /** The primary button of the modal, it is displayed at the bottom of the modal
528
- * @example "Toon resultaten" */
529
- primaryButton?: string;
530
619
  };
531
620
 
532
621
  declare type ModalClassNames_3 = {
@@ -680,6 +769,49 @@ declare type NumberPreservationModalClassNames = {
680
769
  submitButton?: string;
681
770
  };
682
771
 
772
+ declare type PageByPathQuery = {
773
+ __typename?: 'RootQueryType';
774
+ page?: {
775
+ __typename?: 'Page';
776
+ productCategory: string;
777
+ filter: string;
778
+ filterDefaults: string;
779
+ pageFilters: Array<{
780
+ __typename?: 'PageFilter';
781
+ id: string;
782
+ name: string;
783
+ shortName: string;
784
+ slug: string;
785
+ column: string;
786
+ type: string;
787
+ valueType: string;
788
+ dynamic: boolean;
789
+ min?: number | null;
790
+ max?: number | null;
791
+ rank: number;
792
+ operator: string;
793
+ url?: string | null;
794
+ formatType: string;
795
+ showCounts: boolean;
796
+ options: Array<{
797
+ __typename?: 'PageFilterOption';
798
+ name: string;
799
+ descriptiveName: string;
800
+ value: string;
801
+ }>;
802
+ aliases: Array<{
803
+ __typename?: 'PageFilterAlias';
804
+ name: string;
805
+ value: string;
806
+ }>;
807
+ }>;
808
+ } | null;
809
+ };
810
+
811
+ export declare type PartialTranslations = Partial<{
812
+ [key in keyof Translations]: Partial<Translations[key]>;
813
+ }>;
814
+
683
815
  declare type PopoverContentClassNames = {
684
816
  base?: string;
685
817
  trigger?: string;
@@ -702,9 +834,9 @@ declare type PostcodeCheckLoadingClassNames = {
702
834
  addressText?: string;
703
835
  };
704
836
 
705
- export declare type PostcodeCheckModalClassNames = {
837
+ declare type PostcodeCheckModalClassNames = {
706
838
  /** Modal dialog class styling slots - see type `ModalClassNames` */
707
- modal?: ModalClassNames;
839
+ modal?: ModalClassNames_2;
708
840
  /** Header section containing icon and title */
709
841
  header?: {
710
842
  /** Container wrapping the header content */
@@ -1038,16 +1170,24 @@ export declare function ProductResults({ classNames, initialSelectedFilters, ini
1038
1170
  export declare type ProductResultsClassNames = {
1039
1171
  /** Wrapper container for the entire product results */
1040
1172
  base?: string;
1173
+ /** Wrapper container for the header section above the results
1174
+ * - Wraps on mobile+tablet the `filterButton` and `sortSelect`
1175
+ * - Wraps on desktop the `activeFilterChips` and `sortSelect` */
1176
+ headerWrapper?: string;
1041
1177
  /** Active filters component class styling slots - see type `ActiveFilterChipsClassNames` */
1042
1178
  activeFilterChips?: ActiveFilterChipsClassNames;
1043
1179
  /** SortSelect component class styling slots - see type `SortSelectClassNames` */
1044
1180
  sortSelect?: SortSelectClassNames;
1181
+ /** Profile buttons component class styling slots - see type `SelectorClassNames` */
1182
+ profileButton?: SelectorClassNames;
1183
+ /** Phone selector button component class styling slots - see type `SelectorClassNames` */
1184
+ phoneSelectorButton?: SelectorClassNames;
1045
1185
  /** Filters component class styling slots (both filters in sidebar and in modal) - see type `FiltersClassNames` */
1046
1186
  filters?: FiltersClassNames;
1047
1187
  /** Filter button (only on mobile & tablet screens) */
1048
1188
  filterButton?: string;
1049
1189
  /** Filter modal class styling slots - see type `ModalClassNames` */
1050
- filterModal?: ModalClassNames_2;
1190
+ filterModal?: ModalClassNames;
1051
1191
  /** Postcode check modal class styling slots - see type `PostcodeCheckModalClassNames` */
1052
1192
  postcodeCheckModal?: PostcodeCheckModalClassNames;
1053
1193
  /** CombiDeal modal class styling slots - see type `CombiDealModalClassNames` */
@@ -1067,18 +1207,33 @@ export declare type ProductResultsProps = {
1067
1207
  *
1068
1208
  * Not available for smartphone propositions when no phone is selected */
1069
1209
  showTopPropositions?: boolean;
1070
- /** Customize texts */
1071
- texts?: {
1072
- /** Title above profile buttons
1073
- * @default "Personaliseer" */
1074
- profileTitle?: string;
1075
- /** Title above top propositions (only shown when `showTopPropositions` is set to `true`)
1076
- * @default "Beste providers voor jou" */
1077
- topPropositionsTitle?: string;
1078
- /** Title above all propositions (only shown when `showTopPropositions` is set to `true`)
1079
- * @default "Alle providers op een rijtje" */
1080
- allPropositionsTitle?: string;
1081
- };
1210
+ /** Configure the color of the labels for the propositions
1211
+ *
1212
+ * @example color: 'primary' | 'secondary' | 'default' | 'success' | 'warning' | 'danger'
1213
+ * @default 'primary'
1214
+ *
1215
+ * @example
1216
+ * {
1217
+ * isRetention: 'primary',
1218
+ * isCheapestPhone: 'secondary',
1219
+ * isBudget: 'default',
1220
+ * isBudgetFiber: 'success',
1221
+ * isCombi: 'warning',
1222
+ * isFastestInternet: 'danger',
1223
+ * isBudgetOwnNetwork: 'success',
1224
+ * isBudgetNetwork: 'success'
1225
+ * }
1226
+ *
1227
+ * It is possible to configure a selection of the label types
1228
+ * The other label types will default to 'primary'
1229
+ *
1230
+ * @example
1231
+ * {
1232
+ * isRetention: 'danger',
1233
+ * isCombi: 'warning'
1234
+ * }
1235
+ */
1236
+ labelColorConfig?: Partial<Record<PropositionLabel['type'], PropositionLabel['color']>>;
1082
1237
  /** Initial selected filters */
1083
1238
  initialSelectedFilters?: FilterValue[];
1084
1239
  /** Limit the number of propositions to display */
@@ -1089,7 +1244,7 @@ export declare type ProductResultsProps = {
1089
1244
  initialProfile?: Partial<Profile>;
1090
1245
  /** Callback function to handle profile changes */
1091
1246
  onProfileChange?: (profile: Partial<Profile>) => void;
1092
- /** Callback function to add search params for the click-out URL on the proposition cards */
1247
+ /** Callback function to add search params for the click-out URL */
1093
1248
  addClickoutSearchParams?: (searchParams: URLSearchParams) => URLSearchParams;
1094
1249
  /** Callback function called when an error occurs */
1095
1250
  onError?: (error: Error) => void;
@@ -1137,37 +1292,37 @@ declare enum ProductVersionStatusEnum {
1137
1292
  Unavailable = "UNAVAILABLE"
1138
1293
  }
1139
1294
 
1140
- declare type Profile = z.infer<typeof profileSchema>;
1295
+ export declare type Profile = z.infer<typeof profileSchema>;
1141
1296
 
1142
1297
  /** Event fired when user profile changes */
1143
- declare type ProfileChangedEvent = {
1298
+ export declare type ProfileChangedEvent = {
1144
1299
  type: 'profile_changed';
1145
1300
  from: Partial<Profile>;
1146
1301
  to: Partial<Profile>;
1147
1302
  };
1148
1303
 
1149
- declare const profileSchema: z_2.ZodObject<{
1150
- keepCurrentMsisdn: z_2.ZodOptional<z_2.ZodBoolean>;
1151
- currentMsisdn: z_2.ZodOptional<z_2.ZodString>;
1152
- currentSubscriptionType: z_2.ZodOptional<z_2.ZodEnum<{
1304
+ declare const profileSchema: z.ZodObject<{
1305
+ keepCurrentMsisdn: z.ZodOptional<z.ZodBoolean>;
1306
+ currentMsisdn: z.ZodOptional<z.ZodString>;
1307
+ currentSubscriptionType: z.ZodOptional<z.ZodEnum<{
1153
1308
  subscription: "subscription";
1154
1309
  prepaid: "prepaid";
1155
1310
  }>>;
1156
- currentProviderSlug: z_2.ZodOptional<z_2.ZodString>;
1157
- currentFixedProviderScope: z_2.ZodOptional<z_2.ZodString>;
1158
- currentMobileProviders: z_2.ZodOptional<z_2.ZodArray<z_2.ZodObject<{
1159
- scope: z_2.ZodString;
1160
- value: z_2.ZodString;
1161
- }, z_2.core.$strip>>>;
1162
- customerSegment: z_2.ZodOptional<z_2.ZodNullable<z_2.ZodString>>;
1163
- address: z_2.ZodOptional<z_2.ZodObject<{
1164
- postcode: z_2.ZodString;
1165
- number: z_2.ZodString;
1166
- numberAddon: z_2.ZodPipe<z_2.ZodOptional<z_2.ZodString>, z_2.ZodTransform<string | undefined, string | undefined>>;
1167
- street: z_2.ZodString;
1168
- city: z_2.ZodString;
1169
- }, z_2.core.$strip>>;
1170
- }, z_2.core.$strip>;
1311
+ currentProviderSlug: z.ZodOptional<z.ZodString>;
1312
+ currentFixedProviderScope: z.ZodOptional<z.ZodString>;
1313
+ currentMobileProviders: z.ZodOptional<z.ZodArray<z.ZodObject<{
1314
+ scope: z.ZodString;
1315
+ value: z.ZodString;
1316
+ }, z.core.$strip>>>;
1317
+ customerSegment: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1318
+ address: z.ZodOptional<z.ZodObject<{
1319
+ postcode: z.ZodString;
1320
+ number: z.ZodString;
1321
+ numberAddon: z.ZodPipe<z.ZodOptional<z.ZodString>, z.ZodTransform<string | undefined, string | undefined>>;
1322
+ street: z.ZodString;
1323
+ city: z.ZodString;
1324
+ }, z.core.$strip>>;
1325
+ }, z.core.$strip>;
1171
1326
 
1172
1327
  /**
1173
1328
  * ClassNames for styling the `PromotionList` component within `PropositionCard`
@@ -1301,6 +1456,17 @@ declare type PropositionHeaderClassNames = {
1301
1456
  };
1302
1457
  };
1303
1458
 
1459
+ export declare type PropositionLabel = {
1460
+ type: PropositionLabelType;
1461
+ displayName: string;
1462
+ rank: number;
1463
+ color: PropositionLabelColor;
1464
+ };
1465
+
1466
+ export declare type PropositionLabelColor = 'primary' | 'secondary' | 'default' | 'success' | 'warning' | 'danger';
1467
+
1468
+ export declare type PropositionLabelType = 'isRetention' | 'isCheapestPhone' | 'isBudget' | 'isBudgetFiber' | 'isCombi' | 'isFastestInternet' | 'isBudgetOwnNetwork' | 'isBudgetNetwork';
1469
+
1304
1470
  declare type PropositionOverviewClassNames = {
1305
1471
  /** The base container of the proposition overview */
1306
1472
  base?: string;
@@ -1314,6 +1480,13 @@ declare type PropositionOverviewClassNames = {
1314
1480
  creditInfo?: CreditInfoClassNames_2;
1315
1481
  };
1316
1482
 
1483
+ export declare type ProviderOption = {
1484
+ slug: string;
1485
+ name: string;
1486
+ imageUrl: string | undefined;
1487
+ Icon?: ElementType;
1488
+ };
1489
+
1317
1490
  /**
1318
1491
  * ClassNames for styling different parts of the `RadioFilter` component
1319
1492
  */
@@ -1450,6 +1623,35 @@ declare type SelectFilterClassNames = {
1450
1623
  collapseLink?: string;
1451
1624
  };
1452
1625
 
1626
+ /**
1627
+ * ClassNames for styling different parts of the `Selector` component
1628
+ */
1629
+ declare type SelectorClassNames = {
1630
+ /** Title text styling */
1631
+ title?: string;
1632
+ /** Description text styling */
1633
+ description?: string;
1634
+ /** Main button wrapper */
1635
+ button?: string;
1636
+ /** Icon component styling - chevron/edit icon */
1637
+ icon?: string;
1638
+ /** Badge component (visible when not selected) */
1639
+ badge?: string;
1640
+ /** Avatar component displaying the image or icon */
1641
+ avatar?: {
1642
+ /** Base wrapper styling for the avatar container */
1643
+ base?: string;
1644
+ /** Image element styling */
1645
+ img?: string;
1646
+ /** Name text styling (when displaying initials) */
1647
+ name?: string;
1648
+ /** Icon wrapper styling */
1649
+ icon?: string;
1650
+ /** Fallback content styling (when no image is available) */
1651
+ fallback?: string;
1652
+ };
1653
+ };
1654
+
1453
1655
  /**
1454
1656
  * ClassNames for styling different parts of the `RangeFilter`, `MinFilter` and `MaxFilter` component
1455
1657
  */
@@ -1484,7 +1686,7 @@ declare type SliderFilterClassNames = {
1484
1686
  };
1485
1687
 
1486
1688
  /** Event fired when sort option changes */
1487
- declare type SortChangedEvent = {
1689
+ export declare type SortChangedEvent = {
1488
1690
  type: 'sort_changed';
1489
1691
  from: string | undefined;
1490
1692
  to: string;
@@ -1565,4 +1767,325 @@ declare type TermsClassNames = {
1565
1767
  base?: string;
1566
1768
  } & SectionClassNames;
1567
1769
 
1770
+ export declare type Translations = {
1771
+ common: {
1772
+ yes: string;
1773
+ no: string;
1774
+ confirm: string;
1775
+ cancel: string;
1776
+ loading: string;
1777
+ close: string;
1778
+ next: string;
1779
+ previous: string;
1780
+ select: string;
1781
+ save: string;
1782
+ back: string;
1783
+ };
1784
+ numberPreservation: {
1785
+ title: string;
1786
+ description: string;
1787
+ keepCurrentNumber: string;
1788
+ newNumber: string;
1789
+ currentProvider: string;
1790
+ selectProvider: string;
1791
+ invalidNumber: string;
1792
+ subscription: string;
1793
+ prepaid: string;
1794
+ otherProvider: string;
1795
+ };
1796
+ combiDeal: {
1797
+ title: string;
1798
+ description: string;
1799
+ selectHomeProvider: string;
1800
+ selectOtherSubscriptionsOnAddress: string;
1801
+ customerBenefit: string;
1802
+ homeInternet: string;
1803
+ selectOtherSubscriptions: string;
1804
+ otherSubscriptionsDescription: string;
1805
+ otherSubscriptions: string;
1806
+ movingOption: string;
1807
+ otherProvider: string;
1808
+ };
1809
+ postcodeCheck: {
1810
+ loading: string;
1811
+ invalidAddressError: string;
1812
+ title: string;
1813
+ description: string;
1814
+ postalCode: string;
1815
+ houseNumber: string;
1816
+ houseNumberAddition: string;
1817
+ selectProvider: string;
1818
+ homeInternet: string;
1819
+ };
1820
+ profile: {
1821
+ personalizeTitle: string;
1822
+ postcodeCheck: string;
1823
+ enterPostcode: string;
1824
+ numberPreservation: string;
1825
+ askNumberPreservation: string;
1826
+ newNumber: string;
1827
+ customerBenefit: string;
1828
+ };
1829
+ format: {
1830
+ unlimited: string;
1831
+ /** Short version of `unlimited` */
1832
+ unlimited_short: string;
1833
+ gigabyte: string;
1834
+ minutes: string;
1835
+ /** Short version of `minutes` */
1836
+ minutes_short: string;
1837
+ sms: string;
1838
+ year: string;
1839
+ /** Plural of `year` */
1840
+ year_other: string;
1841
+ oneTime: string;
1842
+ month: string;
1843
+ /** Plural of `month` */
1844
+ month_other: string;
1845
+ /** Short version of `month` */
1846
+ month_short: string;
1847
+ /** Plural of `month_short` */
1848
+ month_short_other: string;
1849
+ monthly: string;
1850
+ firstMonth: string;
1851
+ /** Plural of `firstMonth` */
1852
+ firstMonth_other: string;
1853
+ thenMonth: string;
1854
+ /** Plural of `thenMonth` */
1855
+ thenMonth_other: string;
1856
+ afterMonth: string;
1857
+ /** Plural of `afterMonth` */
1858
+ afterMonth_other: string;
1859
+ hour: string;
1860
+ /** Plural of `hour` */
1861
+ hour_other: string;
1862
+ inch: string;
1863
+ centimeter: string;
1864
+ milliampere: string;
1865
+ megabitPerSecond: string;
1866
+ internet: string;
1867
+ from: string;
1868
+ startingFrom: string;
1869
+ to: string;
1870
+ for: string;
1871
+ or: string;
1872
+ average: string;
1873
+ /** Short version of `average` */
1874
+ average_short: string;
1875
+ maximum: string;
1876
+ };
1877
+ labels: {
1878
+ /** Renew with {{providerName}} */
1879
+ renewWith: string;
1880
+ /** Cheapest phone */
1881
+ cheapestPhone: string;
1882
+ /** Budget */
1883
+ budget: string;
1884
+ /** Most affordable with fiber */
1885
+ budgetFiber: string;
1886
+ /** Customer benefits with {{providerName}} */
1887
+ combi: string;
1888
+ /** Customer benefits */
1889
+ combiGeneric: string;
1890
+ /** Fastest internet */
1891
+ fastestInternet: string;
1892
+ /** Most affordable with own network */
1893
+ budgetOwnNetwork: string;
1894
+ /** Most affordable on {{network}}-network */
1895
+ budgetNetwork: string;
1896
+ /** Most affordable on network */
1897
+ budgetNetworkGeneric: string;
1898
+ };
1899
+ propositionCard: {
1900
+ availableStockStatus: string;
1901
+ backorderedStockStatus: string;
1902
+ preOrderStockStatus: string;
1903
+ oneTimeFee: string;
1904
+ deviceDiscount: string;
1905
+ urgentText: string;
1906
+ /** Plural of `urgentText` */
1907
+ urgentText_other: string;
1908
+ cta: string;
1909
+ };
1910
+ fixedInternet: {
1911
+ /** Fiber */
1912
+ 'glasvezel-internet': string;
1913
+ /** Cable */
1914
+ 'kabel-internet': string;
1915
+ /** DSL */
1916
+ 'dsl-internet': string;
1917
+ /** 5G */
1918
+ '5g-internet': string;
1919
+ };
1920
+ filters: {
1921
+ title: string;
1922
+ resetFilters: string;
1923
+ applyFilters: string;
1924
+ chosenFilters: string;
1925
+ sort: string;
1926
+ sortBy: string;
1927
+ show: string;
1928
+ showMore: string;
1929
+ showLess: string;
1930
+ };
1931
+ filterOptions: {
1932
+ brand: string;
1933
+ internal_storage: string;
1934
+ color: string;
1935
+ data: string;
1936
+ minutes: string;
1937
+ credit_fee: string;
1938
+ provider: string;
1939
+ contract_term: string;
1940
+ package: string;
1941
+ data_speed_down: string;
1942
+ data_speed_up: string;
1943
+ monthly_fee: string;
1944
+ price: string;
1945
+ tags_netwerk: string;
1946
+ tags_verbinding: string;
1947
+ tags_esim: string;
1948
+ receivers: string;
1949
+ network_generation: string;
1950
+ };
1951
+ sortOptions: {
1952
+ /** Relevance */
1953
+ top: string;
1954
+ /** Relevance */
1955
+ relevantie: string;
1956
+ /** Best-selling */
1957
+ 'best-verkocht': string;
1958
+ /** Price low-high */
1959
+ 'meest-voordelig': string;
1960
+ /** Download speed */
1961
+ downloadsnelheid: string;
1962
+ /** Upload speed */
1963
+ uploadsnelheid: string;
1964
+ };
1965
+ productResults: {
1966
+ loadMore: string;
1967
+ showMoreOffers: string;
1968
+ noResultsTitle: string;
1969
+ noResultsDescription: string;
1970
+ sortBy: string;
1971
+ topPropositionsTitle: string;
1972
+ allPropositionsTitle: string;
1973
+ };
1974
+ creditInfo: {
1975
+ exampleTitle: string;
1976
+ creditBundleTitle: string;
1977
+ offer: string;
1978
+ totalDeviceCost: string;
1979
+ oneTimeFee: string;
1980
+ totalCreditAmount: string;
1981
+ monthlyPayment: string;
1982
+ contractTerm: string;
1983
+ fixedInterest: string;
1984
+ generalDescription: string;
1985
+ creditBundleDescription: string;
1986
+ };
1987
+ detailsModal: {
1988
+ title: string;
1989
+ renewal: string;
1990
+ chooseTab: string;
1991
+ general: string;
1992
+ bundles: string;
1993
+ conditions: string;
1994
+ channels: string;
1995
+ costs: string;
1996
+ specifications: string;
1997
+ monthlyFee: string;
1998
+ oneTimeFee: string;
1999
+ totalCost: string;
2000
+ provider: string;
2001
+ network: string;
2002
+ networkCoverage: string;
2003
+ networkAdministrator: string;
2004
+ networkType: string;
2005
+ subscriptionType: string;
2006
+ internet: string;
2007
+ calling: string;
2008
+ sms: string;
2009
+ extras: string;
2010
+ television: string;
2011
+ networkGeneration: string;
2012
+ downloadSpeed: string;
2013
+ uploadSpeed: string;
2014
+ contractTerm: string;
2015
+ contractTermTerminable: string;
2016
+ subscription: string;
2017
+ bundle: string;
2018
+ bundleSpeed: string;
2019
+ termsAndConditions: string;
2020
+ maximumDownloadSpeed: string;
2021
+ maximumUploadSpeed: string;
2022
+ numberOfChannels: string;
2023
+ numberOfReceivers: string;
2024
+ outsideBundle: string;
2025
+ subscriptionFlexibility: string;
2026
+ abroad: string;
2027
+ insideEu: string;
2028
+ outsideEu: string;
2029
+ minutesToEu: string;
2030
+ upgradeBundle: string;
2031
+ downgradeBundle: string;
2032
+ dataExceedance: string;
2033
+ bundleExceedanceRates: string;
2034
+ bundleExceedanceRateCeiling: string;
2035
+ bundleExceedanceWarning: string;
2036
+ bundleExceedanceMinutesRounding: string;
2037
+ channelsDescription: string;
2038
+ moreInformation: string;
2039
+ deviceBundle: string;
2040
+ installationFee: string;
2041
+ activationFee: string;
2042
+ cashback: string;
2043
+ priceWithoutSubscription: string;
2044
+ priceWithSubscription: string;
2045
+ devicePrice: string;
2046
+ costPerContractTermTitle: string;
2047
+ costPerContractTermSubtitle: string;
2048
+ deviceDiscountTitle: string;
2049
+ deviceDiscountSubtitle: string;
2050
+ totalCostsOverTerm: string;
2051
+ /** Plural of `totalCostsOverTerm` */
2052
+ totalCostsOverTerm_other: string;
2053
+ totalDeviceDiscount: string;
2054
+ };
2055
+ phoneSelector: {
2056
+ phone: string;
2057
+ selectPhone: string;
2058
+ selectBrand: string;
2059
+ searchPlaceholder: string;
2060
+ popular: string;
2061
+ allBrands: string;
2062
+ selectVersion: string;
2063
+ selectColor: string;
2064
+ };
2065
+ modificationBlocks: {
2066
+ /** One or more mobile subscriptions */
2067
+ 'mobile/odido': string;
2068
+ /** One or more mobile subscriptions */
2069
+ 'mobile/vodafone': string;
2070
+ /** I am younger than 28 years old */
2071
+ 'segment/vodafone/young': string;
2072
+ /** Vodafone Unlimited subscription at my address */
2073
+ 'segment/vodafone/unlimited': string;
2074
+ /** Another mobile subscription from KPN */
2075
+ 'mobile/kpn': string;
2076
+ /** One or more mobile subscriptions */
2077
+ 'mobile/ben': string;
2078
+ /** One or more mobile subscriptions */
2079
+ 'mobile/50plusmobiel': string;
2080
+ /** One or more mobile subscriptions */
2081
+ 'mobile/hollandsnieuwe': string;
2082
+ /** One or more mobile subscriptions */
2083
+ 'mobile/budget': string;
2084
+ /** One or more mobile subscriptions */
2085
+ 'mobile/youfone': string;
2086
+ /** One or more mobile subscriptions */
2087
+ 'mobile/delta': string;
2088
+ };
2089
+ };
2090
+
1568
2091
  export { }