@qite/tide-booking-component 1.4.60 → 1.4.62

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 (45) hide show
  1. package/build/build-cjs/index.js +131 -1
  2. package/build/build-cjs/src/content/components/image-with-text.d.ts +2 -1
  3. package/build/build-cjs/src/content/image-with-text-section/card.d.ts +4 -0
  4. package/build/build-cjs/src/content/image-with-text-section/index.d.ts +4 -0
  5. package/build/build-cjs/src/content/image-with-text-section/types.d.ts +19 -0
  6. package/build/build-cjs/src/content/navbar/placeholderData.d.ts +2 -0
  7. package/build/build-cjs/src/content/navbar/types.d.ts +4 -0
  8. package/build/build-cjs/src/index.d.ts +3 -1
  9. package/build/build-cjs/src/shared/utils/localization-util.d.ts +1 -0
  10. package/build/build-esm/index.js +129 -2
  11. package/build/build-esm/src/content/components/image-with-text.d.ts +2 -1
  12. package/build/build-esm/src/content/image-with-text-section/card.d.ts +4 -0
  13. package/build/build-esm/src/content/image-with-text-section/index.d.ts +4 -0
  14. package/build/build-esm/src/content/image-with-text-section/types.d.ts +19 -0
  15. package/build/build-esm/src/content/navbar/placeholderData.d.ts +2 -0
  16. package/build/build-esm/src/content/navbar/types.d.ts +4 -0
  17. package/build/build-esm/src/index.d.ts +3 -1
  18. package/build/build-esm/src/shared/utils/localization-util.d.ts +1 -0
  19. package/package.json +1 -1
  20. package/src/content/components/image-with-text.tsx +8 -6
  21. package/src/content/image-with-text-section/card.tsx +58 -0
  22. package/src/content/image-with-text-section/index.tsx +22 -0
  23. package/src/content/image-with-text-section/types.ts +20 -0
  24. package/src/content/navbar/index.tsx +38 -1
  25. package/src/content/navbar/placeholderData.tsx +15 -4
  26. package/src/content/navbar/types.ts +6 -0
  27. package/src/index.ts +3 -1
  28. package/src/shared/translations/ar-SA.json +1 -0
  29. package/src/shared/translations/da-DK.json +1 -0
  30. package/src/shared/translations/de-DE.json +1 -0
  31. package/src/shared/translations/en-GB.json +1 -0
  32. package/src/shared/translations/es-ES.json +1 -0
  33. package/src/shared/translations/fr-BE.json +1 -0
  34. package/src/shared/translations/fr-FR.json +1 -0
  35. package/src/shared/translations/is-IS.json +1 -0
  36. package/src/shared/translations/it-IT.json +1 -0
  37. package/src/shared/translations/ja-JP.json +1 -0
  38. package/src/shared/translations/nl-BE.json +1 -0
  39. package/src/shared/translations/nl-NL.json +1 -0
  40. package/src/shared/translations/no-NO.json +1 -0
  41. package/src/shared/translations/pl-PL.json +1 -0
  42. package/src/shared/translations/pt-PT.json +1 -0
  43. package/src/shared/translations/sv-SE.json +1 -0
  44. package/styles/components/_image-with-text.scss +31 -34
  45. package/styles/components/_navbar.scss +18 -0
@@ -516,6 +516,7 @@ var LOGIN$f = {
516
516
  PASSWORD_REQUIRED: 'كلمة المرور مطلوبة.',
517
517
  INVALID_CREDENTIALS: 'البريد الإلكتروني أو كلمة المرور غير صحيحة.',
518
518
  LOGIN: 'تسجيل الدخول',
519
+ LOGOUT: 'تسجيل الخروج',
519
520
  FORGOT_PASSWORD: 'هل نسيت كلمة المرور؟',
520
521
  LOGGING_IN: 'جاري تسجيل الدخول...',
521
522
  WELCOME_X: 'مرحبًا، ',
@@ -913,6 +914,7 @@ var LOGIN$e = {
913
914
  PASSWORD_REQUIRED: 'Adgangskode er påkrævet.',
914
915
  INVALID_CREDENTIALS: 'Ugyldig e-mail eller adgangskode.',
915
916
  LOGIN: 'Log ind',
917
+ LOGOUT: 'Log ud',
916
918
  FORGOT_PASSWORD: 'Glemt adgangskode?',
917
919
  LOGGING_IN: 'Logger ind...',
918
920
  WELCOME_X: 'Velkommen, ',
@@ -1311,6 +1313,7 @@ var LOGIN$d = {
1311
1313
  PASSWORD_REQUIRED: 'Passwort ist erforderlich.',
1312
1314
  INVALID_CREDENTIALS: 'Ungültige E-Mail oder Passwort.',
1313
1315
  LOGIN: 'Anmelden',
1316
+ LOGOUT: 'Abmelden',
1314
1317
  FORGOT_PASSWORD: 'Passwort vergessen?',
1315
1318
  LOGGING_IN: 'Anmeldung läuft...',
1316
1319
  WELCOME_X: 'Willkommen, ',
@@ -1712,6 +1715,7 @@ var LOGIN$c = {
1712
1715
  PASSWORD_REQUIRED: 'Password is required.',
1713
1716
  INVALID_CREDENTIALS: 'Invalid email or password.',
1714
1717
  LOGIN: 'Login',
1718
+ LOGOUT: 'Logout',
1715
1719
  FORGOT_PASSWORD: 'Forgot password?',
1716
1720
  LOGGING_IN: 'Logging in...',
1717
1721
  WELCOME_X: 'Welcome, ',
@@ -2110,6 +2114,7 @@ var LOGIN$b = {
2110
2114
  PASSWORD_REQUIRED: 'La contraseña es obligatoria.',
2111
2115
  INVALID_CREDENTIALS: 'Correo electrónico o contraseña no válidos.',
2112
2116
  LOGIN: 'Iniciar sesión',
2117
+ LOGOUT: 'Cerrar sesión',
2113
2118
  FORGOT_PASSWORD: '¿Olvidaste tu contraseña?',
2114
2119
  LOGGING_IN: 'Iniciando sesión...',
2115
2120
  WELCOME_X: 'Bienvenido, ',
@@ -2512,6 +2517,7 @@ var LOGIN$a = {
2512
2517
  PASSWORD_REQUIRED: 'Le mot de passe est requis.',
2513
2518
  INVALID_CREDENTIALS: 'Email ou mot de passe invalide.',
2514
2519
  LOGIN: 'Se connecter',
2520
+ LOGOUT: 'Se déconnecter',
2515
2521
  FORGOT_PASSWORD: 'Mot de passe oublié ?',
2516
2522
  LOGGING_IN: 'Connexion...',
2517
2523
  WELCOME_X: 'Bienvenue, ',
@@ -2909,6 +2915,7 @@ var LOGIN$9 = {
2909
2915
  PASSWORD_REQUIRED: 'Le mot de passe est requis.',
2910
2916
  INVALID_CREDENTIALS: 'Email ou mot de passe invalide.',
2911
2917
  LOGIN: 'Se connecter',
2918
+ LOGOUT: 'Se déconnecter',
2912
2919
  FORGOT_PASSWORD: 'Mot de passe oublié ?',
2913
2920
  LOGGING_IN: 'Connexion...',
2914
2921
  WELCOME_X: 'Bienvenue, ',
@@ -3306,6 +3313,7 @@ var LOGIN$8 = {
3306
3313
  PASSWORD_REQUIRED: 'Lykilorð er nauðsynlegt.',
3307
3314
  INVALID_CREDENTIALS: 'Ógilt netfang eða lykilorð.',
3308
3315
  LOGIN: 'Skrá inn',
3316
+ LOGOUT: 'Skrá út',
3309
3317
  FORGOT_PASSWORD: 'Gleymt lykilorð?',
3310
3318
  LOGGING_IN: 'Skrái inn...',
3311
3319
  WELCOME_X: 'Velkomin, ',
@@ -3704,6 +3712,7 @@ var LOGIN$7 = {
3704
3712
  PASSWORD_REQUIRED: 'La password è obbligatoria.',
3705
3713
  INVALID_CREDENTIALS: 'Email o password non validi.',
3706
3714
  LOGIN: 'Accedi',
3715
+ LOGOUT: 'Esci',
3707
3716
  FORGOT_PASSWORD: 'Password dimenticata?',
3708
3717
  LOGGING_IN: 'Accesso in corso...',
3709
3718
  WELCOME_X: 'Benvenuto, ',
@@ -4106,6 +4115,7 @@ var LOGIN$6 = {
4106
4115
  PASSWORD_REQUIRED: 'Wachtwoord is verplicht.',
4107
4116
  INVALID_CREDENTIALS: 'Ongeldig e-mailadres of wachtwoord.',
4108
4117
  LOGIN: 'Inloggen',
4118
+ LOGOUT: 'Uitloggen',
4109
4119
  FORGOT_PASSWORD: 'Wachtwoord vergeten?',
4110
4120
  LOGGING_IN: 'Bezig met inloggen...',
4111
4121
  WELCOME_X: 'Welkom, ',
@@ -4504,6 +4514,7 @@ var LOGIN$5 = {
4504
4514
  PASSWORD_REQUIRED: 'Wachtwoord is verplicht.',
4505
4515
  INVALID_CREDENTIALS: 'Ongeldig e-mailadres of wachtwoord.',
4506
4516
  LOGIN: 'Inloggen',
4517
+ LOGOUT: 'Uitloggen',
4507
4518
  FORGOT_PASSWORD: 'Wachtwoord vergeten?',
4508
4519
  LOGGING_IN: 'Bezig met inloggen...',
4509
4520
  WELCOME_X: 'Welkom, ',
@@ -4902,6 +4913,7 @@ var LOGIN$4 = {
4902
4913
  PASSWORD_REQUIRED: 'Passord er påkrevd.',
4903
4914
  INVALID_CREDENTIALS: 'Ugyldig e-post eller passord.',
4904
4915
  LOGIN: 'Logg inn',
4916
+ LOGOUT: 'Logg ut',
4905
4917
  FORGOT_PASSWORD: 'Glemt passord?',
4906
4918
  LOGGING_IN: 'Logger inn...',
4907
4919
  WELCOME_X: 'Velkommen, ',
@@ -5300,6 +5312,7 @@ var LOGIN$3 = {
5300
5312
  PASSWORD_REQUIRED: 'Hasło jest wymagane.',
5301
5313
  INVALID_CREDENTIALS: 'Nieprawidłowy adres e-mail lub hasło.',
5302
5314
  LOGIN: 'Zaloguj się',
5315
+ LOGOUT: 'Wyloguj się',
5303
5316
  FORGOT_PASSWORD: 'Zapomniałeś hasła?',
5304
5317
  LOGGING_IN: 'Logowanie...',
5305
5318
  WELCOME_X: 'Witaj, ',
@@ -5698,6 +5711,7 @@ var LOGIN$2 = {
5698
5711
  PASSWORD_REQUIRED: 'A palavra-passe é obrigatória.',
5699
5712
  INVALID_CREDENTIALS: 'Email ou palavra-passe inválidos.',
5700
5713
  LOGIN: 'Iniciar sessão',
5714
+ LOGOUT: 'Terminar sessão',
5701
5715
  FORGOT_PASSWORD: 'Esqueceu a palavra-passe?',
5702
5716
  LOGGING_IN: 'A iniciar sessão...',
5703
5717
  WELCOME_X: 'Bem-vindo, ',
@@ -6096,6 +6110,7 @@ var LOGIN$1 = {
6096
6110
  PASSWORD_REQUIRED: 'Lösenord krävs.',
6097
6111
  INVALID_CREDENTIALS: 'Ogiltig e-post eller lösenord.',
6098
6112
  LOGIN: 'Logga in',
6113
+ LOGOUT: 'Logga ut',
6099
6114
  FORGOT_PASSWORD: 'Glömt lösenord?',
6100
6115
  LOGGING_IN: 'Loggar in...',
6101
6116
  WELCOME_X: 'Välkommen, ',
@@ -6492,6 +6507,7 @@ var LOGIN = {
6492
6507
  PASSWORD_REQUIRED: 'パスワードは必須です。',
6493
6508
  INVALID_CREDENTIALS: 'メールアドレスまたはパスワードが無効です。',
6494
6509
  LOGIN: 'ログイン',
6510
+ LOGOUT: 'ログアウト',
6495
6511
  FORGOT_PASSWORD: 'パスワードをお忘れですか?',
6496
6512
  LOGGING_IN: 'ログイン中...',
6497
6513
  WELCOME_X: 'ようこそ、',
@@ -29669,7 +29685,10 @@ var Navbar = function (_a) {
29669
29685
  language = _a.language,
29670
29686
  languages = _a.languages,
29671
29687
  onLanguageChange = _a.onLanguageChange,
29672
- onSearch = _a.onSearch;
29688
+ onSearch = _a.onSearch,
29689
+ member = _a.member,
29690
+ onLogin = _a.onLogin,
29691
+ onLogout = _a.onLogout;
29673
29692
  var _c = React.useState(false),
29674
29693
  menuOpen = _c[0],
29675
29694
  setMenuOpen = _c[1];
@@ -29897,6 +29916,18 @@ var Navbar = function (_a) {
29897
29916
  )
29898
29917
  );
29899
29918
  };
29919
+ var handleLogout = function (event) {
29920
+ event.preventDefault();
29921
+ if (onLogout) {
29922
+ onLogout();
29923
+ }
29924
+ };
29925
+ var handleLogin = function (event) {
29926
+ event.preventDefault();
29927
+ if (onLogin) {
29928
+ onLogin();
29929
+ }
29930
+ };
29900
29931
  return React__default['default'].createElement(
29901
29932
  React__default['default'].Fragment,
29902
29933
  null,
@@ -29909,6 +29940,20 @@ var Navbar = function (_a) {
29909
29940
  React__default['default'].createElement(
29910
29941
  'div',
29911
29942
  { className: 'nav__subnav__links' },
29943
+ member && React__default['default'].createElement('span', { className: 'nav__subnav__member' }, translations.LOGIN.WELCOME_X, member.name),
29944
+ member
29945
+ ? React__default['default'].createElement(
29946
+ React__default['default'].Fragment,
29947
+ null,
29948
+ onLogout &&
29949
+ React__default['default'].createElement('a', { href: '#', className: 'nav__subnav__link', onClick: handleLogout }, translations.LOGIN.LOGOUT)
29950
+ )
29951
+ : React__default['default'].createElement(
29952
+ React__default['default'].Fragment,
29953
+ null,
29954
+ onLogin &&
29955
+ React__default['default'].createElement('a', { href: '#', className: 'nav__subnav__link', onClick: handleLogin }, translations.LOGIN.LOGIN)
29956
+ ),
29912
29957
  React__default['default'].createElement(LanguageSwitcher, {
29913
29958
  value: language.code,
29914
29959
  languages: languages,
@@ -44864,6 +44909,90 @@ var Login = function (_a) {
44864
44909
  );
44865
44910
  };
44866
44911
 
44912
+ var ImageWithTextCard = function (_a) {
44913
+ var noCard = _a.noCard,
44914
+ fullImage = _a.fullImage,
44915
+ reverse = _a.reverse,
44916
+ imageSrc = _a.imageSrc,
44917
+ imageAlt = _a.imageAlt,
44918
+ title = _a.title,
44919
+ activityTitle = _a.activityTitle,
44920
+ activityText = _a.activityText,
44921
+ detailsTitle = _a.detailsTitle,
44922
+ detailsText = _a.detailsText,
44923
+ buttonText = _a.buttonText,
44924
+ onButtonClick = _a.onButtonClick;
44925
+ var cardClassName = 'image-with-text__card';
44926
+ if (noCard) {
44927
+ cardClassName += ' image-with-text__card--no-card';
44928
+ }
44929
+ if (fullImage) {
44930
+ cardClassName += ' image-with-text__card--full-image';
44931
+ }
44932
+ if (reverse) {
44933
+ cardClassName += ' image-with-text__card--reverse';
44934
+ }
44935
+ return React__default['default'].createElement(
44936
+ 'div',
44937
+ { className: cardClassName },
44938
+ React__default['default'].createElement(
44939
+ 'div',
44940
+ { className: 'image-with-text__card__image__wrapper' },
44941
+ React__default['default'].createElement('img', { src: imageSrc, alt: imageAlt, className: 'image-with-text__card__image' })
44942
+ ),
44943
+ React__default['default'].createElement(
44944
+ 'div',
44945
+ { className: 'image-with-text__card__content' },
44946
+ React__default['default'].createElement('h3', { className: 'image-with-text__card__title' }, title),
44947
+ React__default['default'].createElement(
44948
+ 'div',
44949
+ { className: 'image-with-text__card__description' },
44950
+ React__default['default'].createElement('h5', { className: 'image-with-text__card__description__title' }, activityTitle),
44951
+ React__default['default'].createElement('p', { className: 'image-with-text__card__description__text' }, activityText)
44952
+ ),
44953
+ React__default['default'].createElement(
44954
+ 'div',
44955
+ { className: 'image-with-text__card__description' },
44956
+ React__default['default'].createElement('h5', { className: 'image-with-text__card__description__title' }, detailsTitle),
44957
+ React__default['default'].createElement('p', { className: 'image-with-text__card__description__text' }, detailsText)
44958
+ ),
44959
+ React__default['default'].createElement(
44960
+ 'div',
44961
+ { className: 'image-with-text__card__btn' },
44962
+ React__default['default'].createElement('button', { type: 'button', className: 'cta cta--select', onClick: onButtonClick }, buttonText)
44963
+ )
44964
+ )
44965
+ );
44966
+ };
44967
+
44968
+ var ImageWithTextSection = function (_a) {
44969
+ var title = _a.title,
44970
+ hasBackground = _a.hasBackground,
44971
+ cards = _a.cards;
44972
+ var className = 'image-with-text '.concat(hasBackground ? 'image-with-text--background' : '');
44973
+ return React__default['default'].createElement(
44974
+ 'div',
44975
+ { className: className },
44976
+ React__default['default'].createElement(
44977
+ 'div',
44978
+ { className: 'image-with-text__container' },
44979
+ React__default['default'].createElement(
44980
+ 'div',
44981
+ { className: 'image-with-text__title__row' },
44982
+ React__default['default'].createElement('h2', { className: 'image-with-text__title' }, title)
44983
+ ),
44984
+ React__default['default'].createElement(
44985
+ 'div',
44986
+ { className: 'image-with-text__card__wrapper' },
44987
+ !lodash.isEmpty(cards) &&
44988
+ cards.map(function (card, index) {
44989
+ return React__default['default'].createElement(ImageWithTextCard, __assign({ key: index }, card));
44990
+ })
44991
+ )
44992
+ )
44993
+ );
44994
+ };
44995
+
44867
44996
  var signalR$1 = {};
44868
44997
 
44869
44998
  var jqueryDeferred$1 = { exports: {} };
@@ -48763,6 +48892,7 @@ exports.BookingWizard = BookingWizard;
48763
48892
  exports.Footer = Footer;
48764
48893
  exports.Header = Header;
48765
48894
  exports.ImageCardGrid = ImageCardGrid;
48895
+ exports.ImageWithTextSection = ImageWithTextSection;
48766
48896
  exports.Login = Login;
48767
48897
  exports.Navbar = Navbar;
48768
48898
  exports.QSM = QSM;
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
- type Variant = 'image-with-text--no-card' | 'image-with-text--full-img';
2
+ type Variant = 'image-with-text__card--no-card' | 'image-with-text__card--full-img';
3
3
  interface ImageWithTextCardProps {
4
+ variant?: Variant;
4
5
  reverse?: boolean;
5
6
  imageSrc: string;
6
7
  imageAlt: string;
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { ImageWithTextCardProps } from './types';
3
+ declare const ImageWithTextCard: React.FC<ImageWithTextCardProps>;
4
+ export default ImageWithTextCard;
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { ImageWithTextSectionProps } from './types';
3
+ declare const ImageWithTextSection: React.FC<ImageWithTextSectionProps>;
4
+ export default ImageWithTextSection;
@@ -0,0 +1,19 @@
1
+ export interface ImageWithTextSectionProps {
2
+ title: string;
3
+ hasBackground?: boolean;
4
+ cards: ImageWithTextCardProps[];
5
+ }
6
+ export interface ImageWithTextCardProps {
7
+ noCard?: boolean;
8
+ fullImage?: boolean;
9
+ reverse?: boolean;
10
+ imageSrc: string;
11
+ imageAlt: string;
12
+ title: string;
13
+ activityTitle: string;
14
+ activityText: string;
15
+ detailsTitle: string;
16
+ detailsText: string;
17
+ buttonText: string;
18
+ onButtonClick?: () => void;
19
+ }
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import { Language, NavItem } from './types';
3
+ import { MemberInfo } from '@qite/tide-client';
3
4
  export declare const language: Language;
4
5
  export declare const languages: Language[];
5
6
  export declare const topLinks: {
@@ -8,3 +9,4 @@ export declare const topLinks: {
8
9
  }[];
9
10
  export declare const navItems: NavItem[];
10
11
  export declare const TideLogo: () => React.JSX.Element;
12
+ export declare const placeholderMember: MemberInfo;
@@ -1,3 +1,4 @@
1
+ import { MemberInfo } from '@qite/tide-client';
1
2
  export interface Language {
2
3
  code: string;
3
4
  label: string;
@@ -24,4 +25,7 @@ export interface NavbarProps {
24
25
  languages: Language[];
25
26
  onLanguageChange: (lang: string) => void;
26
27
  onSearch: (query: string) => void;
28
+ member?: MemberInfo;
29
+ onLogin?: () => void;
30
+ onLogout?: () => void;
27
31
  }
@@ -7,12 +7,14 @@ import QSM from './qsm';
7
7
  import SearchResults from './search-results';
8
8
  import ImageCardGrid from './content/image-card-grid';
9
9
  import Login from './content/login';
10
+ import ImageWithTextSection from './content/image-with-text-section';
10
11
  export * from './content/navbar/types';
11
12
  export * from './content/header/types';
12
13
  export * from './content/footer/types';
13
14
  export * from './content/image-card-grid/types';
14
15
  export * from './content/login/types';
16
+ export * from './content/image-with-text-section/types';
15
17
  export * from './search-results/types';
16
18
  export * from './qsm/types';
17
19
  export * from './shared/types';
18
- export { BookingProduct, BookingWizard, QSM, SearchResults, Navbar, Header, Footer, ImageCardGrid, Login };
20
+ export { BookingProduct, BookingWizard, QSM, SearchResults, Navbar, Header, Footer, ImageCardGrid, Login, ImageWithTextSection };
@@ -273,6 +273,7 @@ export declare const getTranslations: (language: string) => {
273
273
  PASSWORD_REQUIRED: string;
274
274
  INVALID_CREDENTIALS: string;
275
275
  LOGIN: string;
276
+ LOGOUT: string;
276
277
  FORGOT_PASSWORD: string;
277
278
  LOGGING_IN: string;
278
279
  WELCOME_X: string;
@@ -547,6 +547,7 @@ var LOGIN$f = {
547
547
  PASSWORD_REQUIRED: 'كلمة المرور مطلوبة.',
548
548
  INVALID_CREDENTIALS: 'البريد الإلكتروني أو كلمة المرور غير صحيحة.',
549
549
  LOGIN: 'تسجيل الدخول',
550
+ LOGOUT: 'تسجيل الخروج',
550
551
  FORGOT_PASSWORD: 'هل نسيت كلمة المرور؟',
551
552
  LOGGING_IN: 'جاري تسجيل الدخول...',
552
553
  WELCOME_X: 'مرحبًا، ',
@@ -944,6 +945,7 @@ var LOGIN$e = {
944
945
  PASSWORD_REQUIRED: 'Adgangskode er påkrævet.',
945
946
  INVALID_CREDENTIALS: 'Ugyldig e-mail eller adgangskode.',
946
947
  LOGIN: 'Log ind',
948
+ LOGOUT: 'Log ud',
947
949
  FORGOT_PASSWORD: 'Glemt adgangskode?',
948
950
  LOGGING_IN: 'Logger ind...',
949
951
  WELCOME_X: 'Velkommen, ',
@@ -1342,6 +1344,7 @@ var LOGIN$d = {
1342
1344
  PASSWORD_REQUIRED: 'Passwort ist erforderlich.',
1343
1345
  INVALID_CREDENTIALS: 'Ungültige E-Mail oder Passwort.',
1344
1346
  LOGIN: 'Anmelden',
1347
+ LOGOUT: 'Abmelden',
1345
1348
  FORGOT_PASSWORD: 'Passwort vergessen?',
1346
1349
  LOGGING_IN: 'Anmeldung läuft...',
1347
1350
  WELCOME_X: 'Willkommen, ',
@@ -1743,6 +1746,7 @@ var LOGIN$c = {
1743
1746
  PASSWORD_REQUIRED: 'Password is required.',
1744
1747
  INVALID_CREDENTIALS: 'Invalid email or password.',
1745
1748
  LOGIN: 'Login',
1749
+ LOGOUT: 'Logout',
1746
1750
  FORGOT_PASSWORD: 'Forgot password?',
1747
1751
  LOGGING_IN: 'Logging in...',
1748
1752
  WELCOME_X: 'Welcome, ',
@@ -2141,6 +2145,7 @@ var LOGIN$b = {
2141
2145
  PASSWORD_REQUIRED: 'La contraseña es obligatoria.',
2142
2146
  INVALID_CREDENTIALS: 'Correo electrónico o contraseña no válidos.',
2143
2147
  LOGIN: 'Iniciar sesión',
2148
+ LOGOUT: 'Cerrar sesión',
2144
2149
  FORGOT_PASSWORD: '¿Olvidaste tu contraseña?',
2145
2150
  LOGGING_IN: 'Iniciando sesión...',
2146
2151
  WELCOME_X: 'Bienvenido, ',
@@ -2543,6 +2548,7 @@ var LOGIN$a = {
2543
2548
  PASSWORD_REQUIRED: 'Le mot de passe est requis.',
2544
2549
  INVALID_CREDENTIALS: 'Email ou mot de passe invalide.',
2545
2550
  LOGIN: 'Se connecter',
2551
+ LOGOUT: 'Se déconnecter',
2546
2552
  FORGOT_PASSWORD: 'Mot de passe oublié ?',
2547
2553
  LOGGING_IN: 'Connexion...',
2548
2554
  WELCOME_X: 'Bienvenue, ',
@@ -2940,6 +2946,7 @@ var LOGIN$9 = {
2940
2946
  PASSWORD_REQUIRED: 'Le mot de passe est requis.',
2941
2947
  INVALID_CREDENTIALS: 'Email ou mot de passe invalide.',
2942
2948
  LOGIN: 'Se connecter',
2949
+ LOGOUT: 'Se déconnecter',
2943
2950
  FORGOT_PASSWORD: 'Mot de passe oublié ?',
2944
2951
  LOGGING_IN: 'Connexion...',
2945
2952
  WELCOME_X: 'Bienvenue, ',
@@ -3337,6 +3344,7 @@ var LOGIN$8 = {
3337
3344
  PASSWORD_REQUIRED: 'Lykilorð er nauðsynlegt.',
3338
3345
  INVALID_CREDENTIALS: 'Ógilt netfang eða lykilorð.',
3339
3346
  LOGIN: 'Skrá inn',
3347
+ LOGOUT: 'Skrá út',
3340
3348
  FORGOT_PASSWORD: 'Gleymt lykilorð?',
3341
3349
  LOGGING_IN: 'Skrái inn...',
3342
3350
  WELCOME_X: 'Velkomin, ',
@@ -3735,6 +3743,7 @@ var LOGIN$7 = {
3735
3743
  PASSWORD_REQUIRED: 'La password è obbligatoria.',
3736
3744
  INVALID_CREDENTIALS: 'Email o password non validi.',
3737
3745
  LOGIN: 'Accedi',
3746
+ LOGOUT: 'Esci',
3738
3747
  FORGOT_PASSWORD: 'Password dimenticata?',
3739
3748
  LOGGING_IN: 'Accesso in corso...',
3740
3749
  WELCOME_X: 'Benvenuto, ',
@@ -4137,6 +4146,7 @@ var LOGIN$6 = {
4137
4146
  PASSWORD_REQUIRED: 'Wachtwoord is verplicht.',
4138
4147
  INVALID_CREDENTIALS: 'Ongeldig e-mailadres of wachtwoord.',
4139
4148
  LOGIN: 'Inloggen',
4149
+ LOGOUT: 'Uitloggen',
4140
4150
  FORGOT_PASSWORD: 'Wachtwoord vergeten?',
4141
4151
  LOGGING_IN: 'Bezig met inloggen...',
4142
4152
  WELCOME_X: 'Welkom, ',
@@ -4535,6 +4545,7 @@ var LOGIN$5 = {
4535
4545
  PASSWORD_REQUIRED: 'Wachtwoord is verplicht.',
4536
4546
  INVALID_CREDENTIALS: 'Ongeldig e-mailadres of wachtwoord.',
4537
4547
  LOGIN: 'Inloggen',
4548
+ LOGOUT: 'Uitloggen',
4538
4549
  FORGOT_PASSWORD: 'Wachtwoord vergeten?',
4539
4550
  LOGGING_IN: 'Bezig met inloggen...',
4540
4551
  WELCOME_X: 'Welkom, ',
@@ -4933,6 +4944,7 @@ var LOGIN$4 = {
4933
4944
  PASSWORD_REQUIRED: 'Passord er påkrevd.',
4934
4945
  INVALID_CREDENTIALS: 'Ugyldig e-post eller passord.',
4935
4946
  LOGIN: 'Logg inn',
4947
+ LOGOUT: 'Logg ut',
4936
4948
  FORGOT_PASSWORD: 'Glemt passord?',
4937
4949
  LOGGING_IN: 'Logger inn...',
4938
4950
  WELCOME_X: 'Velkommen, ',
@@ -5331,6 +5343,7 @@ var LOGIN$3 = {
5331
5343
  PASSWORD_REQUIRED: 'Hasło jest wymagane.',
5332
5344
  INVALID_CREDENTIALS: 'Nieprawidłowy adres e-mail lub hasło.',
5333
5345
  LOGIN: 'Zaloguj się',
5346
+ LOGOUT: 'Wyloguj się',
5334
5347
  FORGOT_PASSWORD: 'Zapomniałeś hasła?',
5335
5348
  LOGGING_IN: 'Logowanie...',
5336
5349
  WELCOME_X: 'Witaj, ',
@@ -5729,6 +5742,7 @@ var LOGIN$2 = {
5729
5742
  PASSWORD_REQUIRED: 'A palavra-passe é obrigatória.',
5730
5743
  INVALID_CREDENTIALS: 'Email ou palavra-passe inválidos.',
5731
5744
  LOGIN: 'Iniciar sessão',
5745
+ LOGOUT: 'Terminar sessão',
5732
5746
  FORGOT_PASSWORD: 'Esqueceu a palavra-passe?',
5733
5747
  LOGGING_IN: 'A iniciar sessão...',
5734
5748
  WELCOME_X: 'Bem-vindo, ',
@@ -6127,6 +6141,7 @@ var LOGIN$1 = {
6127
6141
  PASSWORD_REQUIRED: 'Lösenord krävs.',
6128
6142
  INVALID_CREDENTIALS: 'Ogiltig e-post eller lösenord.',
6129
6143
  LOGIN: 'Logga in',
6144
+ LOGOUT: 'Logga ut',
6130
6145
  FORGOT_PASSWORD: 'Glömt lösenord?',
6131
6146
  LOGGING_IN: 'Loggar in...',
6132
6147
  WELCOME_X: 'Välkommen, ',
@@ -6523,6 +6538,7 @@ var LOGIN = {
6523
6538
  PASSWORD_REQUIRED: 'パスワードは必須です。',
6524
6539
  INVALID_CREDENTIALS: 'メールアドレスまたはパスワードが無効です。',
6525
6540
  LOGIN: 'ログイン',
6541
+ LOGOUT: 'ログアウト',
6526
6542
  FORGOT_PASSWORD: 'パスワードをお忘れですか?',
6527
6543
  LOGGING_IN: 'ログイン中...',
6528
6544
  WELCOME_X: 'ようこそ、',
@@ -29558,7 +29574,10 @@ var Navbar = function (_a) {
29558
29574
  language = _a.language,
29559
29575
  languages = _a.languages,
29560
29576
  onLanguageChange = _a.onLanguageChange,
29561
- onSearch = _a.onSearch;
29577
+ onSearch = _a.onSearch,
29578
+ member = _a.member,
29579
+ onLogin = _a.onLogin,
29580
+ onLogout = _a.onLogout;
29562
29581
  var _c = useState(false),
29563
29582
  menuOpen = _c[0],
29564
29583
  setMenuOpen = _c[1];
@@ -29786,6 +29805,18 @@ var Navbar = function (_a) {
29786
29805
  )
29787
29806
  );
29788
29807
  };
29808
+ var handleLogout = function (event) {
29809
+ event.preventDefault();
29810
+ if (onLogout) {
29811
+ onLogout();
29812
+ }
29813
+ };
29814
+ var handleLogin = function (event) {
29815
+ event.preventDefault();
29816
+ if (onLogin) {
29817
+ onLogin();
29818
+ }
29819
+ };
29789
29820
  return React__default.createElement(
29790
29821
  React__default.Fragment,
29791
29822
  null,
@@ -29798,6 +29829,18 @@ var Navbar = function (_a) {
29798
29829
  React__default.createElement(
29799
29830
  'div',
29800
29831
  { className: 'nav__subnav__links' },
29832
+ member && React__default.createElement('span', { className: 'nav__subnav__member' }, translations.LOGIN.WELCOME_X, member.name),
29833
+ member
29834
+ ? React__default.createElement(
29835
+ React__default.Fragment,
29836
+ null,
29837
+ onLogout && React__default.createElement('a', { href: '#', className: 'nav__subnav__link', onClick: handleLogout }, translations.LOGIN.LOGOUT)
29838
+ )
29839
+ : React__default.createElement(
29840
+ React__default.Fragment,
29841
+ null,
29842
+ onLogin && React__default.createElement('a', { href: '#', className: 'nav__subnav__link', onClick: handleLogin }, translations.LOGIN.LOGIN)
29843
+ ),
29801
29844
  React__default.createElement(LanguageSwitcher, {
29802
29845
  value: language.code,
29803
29846
  languages: languages,
@@ -44574,6 +44617,90 @@ var Login = function (_a) {
44574
44617
  );
44575
44618
  };
44576
44619
 
44620
+ var ImageWithTextCard = function (_a) {
44621
+ var noCard = _a.noCard,
44622
+ fullImage = _a.fullImage,
44623
+ reverse = _a.reverse,
44624
+ imageSrc = _a.imageSrc,
44625
+ imageAlt = _a.imageAlt,
44626
+ title = _a.title,
44627
+ activityTitle = _a.activityTitle,
44628
+ activityText = _a.activityText,
44629
+ detailsTitle = _a.detailsTitle,
44630
+ detailsText = _a.detailsText,
44631
+ buttonText = _a.buttonText,
44632
+ onButtonClick = _a.onButtonClick;
44633
+ var cardClassName = 'image-with-text__card';
44634
+ if (noCard) {
44635
+ cardClassName += ' image-with-text__card--no-card';
44636
+ }
44637
+ if (fullImage) {
44638
+ cardClassName += ' image-with-text__card--full-image';
44639
+ }
44640
+ if (reverse) {
44641
+ cardClassName += ' image-with-text__card--reverse';
44642
+ }
44643
+ return React__default.createElement(
44644
+ 'div',
44645
+ { className: cardClassName },
44646
+ React__default.createElement(
44647
+ 'div',
44648
+ { className: 'image-with-text__card__image__wrapper' },
44649
+ React__default.createElement('img', { src: imageSrc, alt: imageAlt, className: 'image-with-text__card__image' })
44650
+ ),
44651
+ React__default.createElement(
44652
+ 'div',
44653
+ { className: 'image-with-text__card__content' },
44654
+ React__default.createElement('h3', { className: 'image-with-text__card__title' }, title),
44655
+ React__default.createElement(
44656
+ 'div',
44657
+ { className: 'image-with-text__card__description' },
44658
+ React__default.createElement('h5', { className: 'image-with-text__card__description__title' }, activityTitle),
44659
+ React__default.createElement('p', { className: 'image-with-text__card__description__text' }, activityText)
44660
+ ),
44661
+ React__default.createElement(
44662
+ 'div',
44663
+ { className: 'image-with-text__card__description' },
44664
+ React__default.createElement('h5', { className: 'image-with-text__card__description__title' }, detailsTitle),
44665
+ React__default.createElement('p', { className: 'image-with-text__card__description__text' }, detailsText)
44666
+ ),
44667
+ React__default.createElement(
44668
+ 'div',
44669
+ { className: 'image-with-text__card__btn' },
44670
+ React__default.createElement('button', { type: 'button', className: 'cta cta--select', onClick: onButtonClick }, buttonText)
44671
+ )
44672
+ )
44673
+ );
44674
+ };
44675
+
44676
+ var ImageWithTextSection = function (_a) {
44677
+ var title = _a.title,
44678
+ hasBackground = _a.hasBackground,
44679
+ cards = _a.cards;
44680
+ var className = 'image-with-text '.concat(hasBackground ? 'image-with-text--background' : '');
44681
+ return React__default.createElement(
44682
+ 'div',
44683
+ { className: className },
44684
+ React__default.createElement(
44685
+ 'div',
44686
+ { className: 'image-with-text__container' },
44687
+ React__default.createElement(
44688
+ 'div',
44689
+ { className: 'image-with-text__title__row' },
44690
+ React__default.createElement('h2', { className: 'image-with-text__title' }, title)
44691
+ ),
44692
+ React__default.createElement(
44693
+ 'div',
44694
+ { className: 'image-with-text__card__wrapper' },
44695
+ !isEmpty(cards) &&
44696
+ cards.map(function (card, index) {
44697
+ return React__default.createElement(ImageWithTextCard, __assign({ key: index }, card));
44698
+ })
44699
+ )
44700
+ )
44701
+ );
44702
+ };
44703
+
44577
44704
  var signalR$1 = {};
44578
44705
 
44579
44706
  var jqueryDeferred$1 = { exports: {} };
@@ -48468,4 +48595,4 @@ var signalR = /*#__PURE__*/ _mergeNamespaces(
48468
48595
  [signalR$1]
48469
48596
  );
48470
48597
 
48471
- export { BookingProduct, BookingWizard, DepartureRange, Footer, Header, ImageCardGrid, Login, Navbar, QSM, SearchResults };
48598
+ export { BookingProduct, BookingWizard, DepartureRange, Footer, Header, ImageCardGrid, ImageWithTextSection, Login, Navbar, QSM, SearchResults };
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
- type Variant = 'image-with-text--no-card' | 'image-with-text--full-img';
2
+ type Variant = 'image-with-text__card--no-card' | 'image-with-text__card--full-img';
3
3
  interface ImageWithTextCardProps {
4
+ variant?: Variant;
4
5
  reverse?: boolean;
5
6
  imageSrc: string;
6
7
  imageAlt: string;
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { ImageWithTextCardProps } from './types';
3
+ declare const ImageWithTextCard: React.FC<ImageWithTextCardProps>;
4
+ export default ImageWithTextCard;
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { ImageWithTextSectionProps } from './types';
3
+ declare const ImageWithTextSection: React.FC<ImageWithTextSectionProps>;
4
+ export default ImageWithTextSection;
@@ -0,0 +1,19 @@
1
+ export interface ImageWithTextSectionProps {
2
+ title: string;
3
+ hasBackground?: boolean;
4
+ cards: ImageWithTextCardProps[];
5
+ }
6
+ export interface ImageWithTextCardProps {
7
+ noCard?: boolean;
8
+ fullImage?: boolean;
9
+ reverse?: boolean;
10
+ imageSrc: string;
11
+ imageAlt: string;
12
+ title: string;
13
+ activityTitle: string;
14
+ activityText: string;
15
+ detailsTitle: string;
16
+ detailsText: string;
17
+ buttonText: string;
18
+ onButtonClick?: () => void;
19
+ }