@designcrowd/library.brand-page 5.12.4 → 5.12.5-ast-booking

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 (110) hide show
  1. package/lib/src/{CreatedOnBrandCrowd-de-de-BXfAb_Ly.js → CreatedOnBrandCrowd-de-de-B5KouJJt.js} +1 -1
  2. package/lib/src/{CreatedOnBrandCrowd-en-us-BvCOvRuk.js → CreatedOnBrandCrowd-en-us-CDBIOkYS.js} +1 -1
  3. package/lib/src/{CreatedOnBrandCrowd-es-es-eAe6KBvm.js → CreatedOnBrandCrowd-es-es-B2uv6JJc.js} +1 -1
  4. package/lib/src/{CreatedOnBrandCrowd-fr-fr-DVSPg9Qi.js → CreatedOnBrandCrowd-fr-fr-DwFtmsuM.js} +1 -1
  5. package/lib/src/{CreatedOnBrandCrowd-pt-pt-W42s3fa-.js → CreatedOnBrandCrowd-pt-pt-Umqbw3cI.js} +1 -1
  6. package/lib/src/{CreatedOnDcom-de-de-B_S0e0e_.js → CreatedOnDcom-de-de-CzZVKMix.js} +1 -1
  7. package/lib/src/{CreatedOnDcom-en-us-Bi-x7Vfr.js → CreatedOnDcom-en-us-DewdA5AU.js} +1 -1
  8. package/lib/src/{CreatedOnDcom-es-es-BlLjTmrS.js → CreatedOnDcom-es-es-CZve73aI.js} +1 -1
  9. package/lib/src/{CreatedOnDcom-fr-fr-D2UQl6bI.js → CreatedOnDcom-fr-fr-BQlgLAmh.js} +1 -1
  10. package/lib/src/{CreatedOnDcom-pt-pt-D-x98ymB.js → CreatedOnDcom-pt-pt-BkShsjOl.js} +1 -1
  11. package/lib/src/brand-page/components/icon/Icon.mixin.d.ts +7 -0
  12. package/lib/src/brand-page/components/icon/Icon.mixin.js +14 -0
  13. package/lib/src/brand-page/models/content.model.d.ts +1 -0
  14. package/lib/src/brand-page/models/content.model.js +1 -0
  15. package/lib/src/brand-page/models/index.d.ts +16 -0
  16. package/lib/src/brand-page/utils/content-callback-util.d.ts +2 -1
  17. package/lib/src/brand-page/utils/content-callback-util.js +3 -0
  18. package/lib/src/brand-page/utils/style.util.js +1 -1
  19. package/lib/src/brand-page/utils/view-model.util.d.ts +3 -2
  20. package/lib/src/brand-page/utils/view-model.util.js +14 -0
  21. package/lib/src/brand-page/view-models.d.ts +6 -2
  22. package/lib/src/brand-page-maker/assessors/banner-section-description-visibility.assessor.d.ts +4 -4
  23. package/lib/src/brand-page-maker/assessors/banner-section-field.assessor.d.ts +4 -4
  24. package/lib/src/brand-page-maker/components/admin-logo-settings/AdminLogoSettings.mixin.d.ts +2 -2
  25. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.d.ts +18 -18
  26. package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.d.ts +20 -20
  27. package/lib/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.d.ts +3 -2
  28. package/lib/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.js +29 -2
  29. package/lib/src/brand-page-maker/composables/useEventTracker.d.ts +4 -0
  30. package/lib/src/brand-page-maker/composables/useEventTracker.js +4 -0
  31. package/lib/src/brand-page-maker/constants/config-settings-constant.d.ts +2 -1
  32. package/lib/src/brand-page-maker/constants/config-settings-constant.js +101 -1
  33. package/lib/src/brand-page-maker/models/content-settings.d.ts +2 -1
  34. package/lib/src/brand-page-maker/models/content-settings.js +28 -0
  35. package/lib/src/brand-page-maker/validators/section-button.validator.d.ts +3 -3
  36. package/lib/src/{bundled-translations-C4LWPXSH.js → bundled-translations-BZJKPEb9.js} +42 -40
  37. package/lib/src/{bundled-translations-yNXD14vd.js → bundled-translations-CD8h4dNr.js} +15 -13
  38. package/lib/src/{bundled-translations.de-DE-JcuQ3w62.js → bundled-translations.de-DE-djs407Ih.js} +5 -3
  39. package/lib/src/{bundled-translations.es-ES-CxAmhY4A.js → bundled-translations.es-ES-JjQoQaM7.js} +9 -7
  40. package/lib/src/{bundled-translations.fr-FR-ClTzpDVd.js → bundled-translations.fr-FR-rUuRWfsM.js} +5 -3
  41. package/lib/src/{bundled-translations.pt-PT-CaCaJJ12.js → bundled-translations.pt-PT-BiSQEFmA.js} +5 -3
  42. package/lib/src/bundles/bundled-translations.json +8 -1
  43. package/lib/src/composables/useTranslate.d.ts +2 -1
  44. package/lib/src/composables/useTranslate.js +2 -1
  45. package/lib/src/constants/brand-page-maker.js +7 -0
  46. package/lib/src/css/library.brand-page-brandCrowd.min.css +44 -39
  47. package/lib/src/css/library.brand-page-brandPage.min.css +44 -39
  48. package/lib/src/css/library.brand-page-designCom.min.css +44 -39
  49. package/lib/src/css/library.brand-page-preview.min.css +44 -39
  50. package/lib/src/index.mjs +176 -175
  51. package/lib/src/{lib-CmlX0vVm.js → lib-BTapaSjP.js} +26355 -25856
  52. package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.d.ts +20 -20
  53. package/lib/src/shared/content-settings/components/content-settings/ReplaceImageSettingsForContent.mixin.d.ts +21 -21
  54. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.d.ts +20 -20
  55. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.d.ts +18 -18
  56. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.js +1 -1
  57. package/lib/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.mixin.d.ts +18 -18
  58. package/lib/src/shared/content-settings/components/text-items-field/TextItemsField.mixin.d.ts +11 -0
  59. package/lib/src/shared/content-settings/components/text-items-field/TextItemsField.mixin.js +5 -0
  60. package/lib/src/shared/content-settings/components/url-field/UrlField.mixin.d.ts +39 -2
  61. package/lib/src/shared/content-settings/components/url-field/UrlField.mixin.js +32 -0
  62. package/lib/src/shared/content-settings/store/content-settings-store.d.ts +18 -18
  63. package/lib/src/shared/font-family-selector/FontFamilySelector.mixin.d.ts +3 -2
  64. package/lib/src/shared/font-family-selector/FontFamilySelector.mixin.js +17 -10
  65. package/lib/src/shared/page-settings/components/page-settings/PageSettings.mixin.d.ts +22 -22
  66. package/lib/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.d.ts +20 -20
  67. package/package.json +2 -2
  68. package/src/brand-page/components/booking-section/BookingSection.vue +240 -0
  69. package/src/brand-page/components/icon/Icon.mixin.ts +14 -0
  70. package/src/brand-page/components/icon/Icon.vue +7 -0
  71. package/src/brand-page/components/icon/icons/AppleMusic.vue +12 -0
  72. package/src/brand-page/components/icon/icons/Discord.vue +1 -1
  73. package/src/brand-page/components/icon/icons/Messenger.vue +14 -0
  74. package/src/brand-page/components/icon/icons/Patreon.vue +12 -0
  75. package/src/brand-page/components/icon/icons/Reddit.vue +5 -0
  76. package/src/brand-page/components/icon/icons/Substack.vue +12 -0
  77. package/src/brand-page/components/icon/icons/Telegram.vue +5 -0
  78. package/src/brand-page/components/icon/icons/Threads.vue +5 -0
  79. package/src/brand-page/components/icon/icons/Twitter.vue +1 -1
  80. package/src/brand-page/components/page/PageComponent.vue +2 -0
  81. package/src/brand-page/models/content.model.ts +1 -0
  82. package/src/brand-page/models/index.ts +17 -0
  83. package/src/brand-page/utils/content-callback-util.ts +7 -0
  84. package/src/brand-page/utils/style.util.ts +1 -1
  85. package/src/brand-page/utils/view-model.util.ts +27 -0
  86. package/src/brand-page/view-models.ts +10 -1
  87. package/src/brand-page-maker/assessors/banner-section-description-visibility.assessor.ts +7 -4
  88. package/src/brand-page-maker/assessors/banner-section-field.assessor.ts +7 -4
  89. package/src/brand-page-maker/components/rich-text-editor/RichTextEditor.vue +3 -1
  90. package/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.ts +37 -2
  91. package/src/brand-page-maker/composables/useEventTracker.ts +4 -0
  92. package/src/brand-page-maker/constants/config-settings-constant.ts +107 -0
  93. package/src/brand-page-maker/models/content-settings.ts +32 -0
  94. package/src/brand-page-maker/validators/section-button.validator.ts +7 -6
  95. package/src/bundles/bundled-translations.json +8 -1
  96. package/src/composables/useTranslate.ts +2 -0
  97. package/src/constants/brand-page-maker.ts +7 -0
  98. package/src/shared/content-settings/components/content-settings/i18n/content-settings.json +5 -1
  99. package/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.ts +1 -1
  100. package/src/shared/content-settings/components/text-field/TextField.vue +1 -0
  101. package/src/shared/content-settings/components/text-items-field/TextItemsField.mixin.ts +5 -0
  102. package/src/shared/content-settings/components/text-items-field/TextItemsField.vue +1 -0
  103. package/src/shared/content-settings/components/textarea-field/TextareaField.vue +1 -0
  104. package/src/shared/content-settings/components/url-field/UrlField.mixin.ts +38 -0
  105. package/src/shared/content-settings/components/url-field/UrlField.vue +12 -0
  106. package/src/shared/content-settings/components/url-field/i18n/url-field.json +5 -0
  107. package/src/shared/font-family-selector/FontFamilySelector.mixin.ts +22 -14
  108. package/src/brand-page/components/logo/test.json +0 -866
  109. package/src/brand-page/components/logo/test2.json +0 -765
  110. package/src/brand-page/components/logo/test3.json +0 -749
@@ -5,11 +5,11 @@ import type { DebounceHandle } from 'lodash.debounce';
5
5
  declare const _default: import("vue").DefineComponent<{}, {
6
6
  items: import("vue").ComputedRef<{
7
7
  id: string;
8
- type: "website" | "image" | "facebook" | "twitter" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section";
8
+ type: "website" | "image" | "facebook" | "twitter" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
9
9
  settings: {
10
10
  content: {
11
11
  id: string;
12
- type: "website" | "image" | "facebook" | "twitter" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section";
12
+ type: "website" | "image" | "facebook" | "twitter" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
13
13
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
14
14
  imageUrlOverride?: string | undefined;
15
15
  imageUrlsOverride?: string | undefined;
@@ -73,7 +73,7 @@ declare const _default: import("vue").DefineComponent<{}, {
73
73
  contentErrorCount(): number;
74
74
  getContent(state: {
75
75
  addContentOptions: {
76
- type: "website" | "image" | "facebook" | "twitter" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section";
76
+ type: "website" | "image" | "facebook" | "twitter" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
77
77
  category: string;
78
78
  createInitialContent: (options: import("../../../shared/content-settings/models").CreateInitialContentOptions) => Content;
79
79
  displayName: string;
@@ -84,11 +84,11 @@ declare const _default: import("vue").DefineComponent<{}, {
84
84
  }[];
85
85
  items: {
86
86
  id: string;
87
- type: "website" | "image" | "facebook" | "twitter" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section";
87
+ type: "website" | "image" | "facebook" | "twitter" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
88
88
  settings: {
89
89
  content: {
90
90
  id: string;
91
- type: "website" | "image" | "facebook" | "twitter" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section";
91
+ type: "website" | "image" | "facebook" | "twitter" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
92
92
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
93
93
  imageUrlOverride?: string | undefined;
94
94
  imageUrlsOverride?: string | undefined;
@@ -122,7 +122,7 @@ declare const _default: import("vue").DefineComponent<{}, {
122
122
  } & import("pinia").PiniaCustomStateProperties<import("../../../shared/content-settings/store").ContentSettingsState>): (id: string) => Content | undefined;
123
123
  getFieldSettings(state: {
124
124
  addContentOptions: {
125
- type: "website" | "image" | "facebook" | "twitter" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section";
125
+ type: "website" | "image" | "facebook" | "twitter" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
126
126
  category: string;
127
127
  createInitialContent: (options: import("../../../shared/content-settings/models").CreateInitialContentOptions) => Content;
128
128
  displayName: string;
@@ -133,11 +133,11 @@ declare const _default: import("vue").DefineComponent<{}, {
133
133
  }[];
134
134
  items: {
135
135
  id: string;
136
- type: "website" | "image" | "facebook" | "twitter" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section";
136
+ type: "website" | "image" | "facebook" | "twitter" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
137
137
  settings: {
138
138
  content: {
139
139
  id: string;
140
- type: "website" | "image" | "facebook" | "twitter" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section";
140
+ type: "website" | "image" | "facebook" | "twitter" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
141
141
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
142
142
  imageUrlOverride?: string | undefined;
143
143
  imageUrlsOverride?: string | undefined;
@@ -171,7 +171,7 @@ declare const _default: import("vue").DefineComponent<{}, {
171
171
  } & import("pinia").PiniaCustomStateProperties<import("../../../shared/content-settings/store").ContentSettingsState>): (id: string, fieldName: string) => import("../../../shared/content-settings/models").ContentItemFieldSettings | undefined;
172
172
  getItem(state: {
173
173
  addContentOptions: {
174
- type: "website" | "image" | "facebook" | "twitter" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section";
174
+ type: "website" | "image" | "facebook" | "twitter" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
175
175
  category: string;
176
176
  createInitialContent: (options: import("../../../shared/content-settings/models").CreateInitialContentOptions) => Content;
177
177
  displayName: string;
@@ -182,11 +182,11 @@ declare const _default: import("vue").DefineComponent<{}, {
182
182
  }[];
183
183
  items: {
184
184
  id: string;
185
- type: "website" | "image" | "facebook" | "twitter" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section";
185
+ type: "website" | "image" | "facebook" | "twitter" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
186
186
  settings: {
187
187
  content: {
188
188
  id: string;
189
- type: "website" | "image" | "facebook" | "twitter" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section";
189
+ type: "website" | "image" | "facebook" | "twitter" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
190
190
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
191
191
  imageUrlOverride?: string | undefined;
192
192
  imageUrlsOverride?: string | undefined;
@@ -220,7 +220,7 @@ declare const _default: import("vue").DefineComponent<{}, {
220
220
  } & import("pinia").PiniaCustomStateProperties<import("../../../shared/content-settings/store").ContentSettingsState>): (id: string) => ContentItem<any> | undefined;
221
221
  getValue(state: {
222
222
  addContentOptions: {
223
- type: "website" | "image" | "facebook" | "twitter" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section";
223
+ type: "website" | "image" | "facebook" | "twitter" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
224
224
  category: string;
225
225
  createInitialContent: (options: import("../../../shared/content-settings/models").CreateInitialContentOptions) => Content;
226
226
  displayName: string;
@@ -231,11 +231,11 @@ declare const _default: import("vue").DefineComponent<{}, {
231
231
  }[];
232
232
  items: {
233
233
  id: string;
234
- type: "website" | "image" | "facebook" | "twitter" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section";
234
+ type: "website" | "image" | "facebook" | "twitter" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
235
235
  settings: {
236
236
  content: {
237
237
  id: string;
238
- type: "website" | "image" | "facebook" | "twitter" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section";
238
+ type: "website" | "image" | "facebook" | "twitter" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
239
239
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
240
240
  imageUrlOverride?: string | undefined;
241
241
  imageUrlsOverride?: string | undefined;
@@ -269,7 +269,7 @@ declare const _default: import("vue").DefineComponent<{}, {
269
269
  } & import("pinia").PiniaCustomStateProperties<import("../../../shared/content-settings/store").ContentSettingsState>): (id: string, fieldName: string) => string | Content | undefined;
270
270
  getItemState(state: {
271
271
  addContentOptions: {
272
- type: "website" | "image" | "facebook" | "twitter" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section";
272
+ type: "website" | "image" | "facebook" | "twitter" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
273
273
  category: string;
274
274
  createInitialContent: (options: import("../../../shared/content-settings/models").CreateInitialContentOptions) => Content;
275
275
  displayName: string;
@@ -280,11 +280,11 @@ declare const _default: import("vue").DefineComponent<{}, {
280
280
  }[];
281
281
  items: {
282
282
  id: string;
283
- type: "website" | "image" | "facebook" | "twitter" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section";
283
+ type: "website" | "image" | "facebook" | "twitter" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
284
284
  settings: {
285
285
  content: {
286
286
  id: string;
287
- type: "website" | "image" | "facebook" | "twitter" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section";
287
+ type: "website" | "image" | "facebook" | "twitter" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
288
288
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
289
289
  imageUrlOverride?: string | undefined;
290
290
  imageUrlsOverride?: string | undefined;
@@ -318,7 +318,7 @@ declare const _default: import("vue").DefineComponent<{}, {
318
318
  } & import("pinia").PiniaCustomStateProperties<import("../../../shared/content-settings/store").ContentSettingsState>): (id: string) => import("../../../shared/content-settings/models").ContentSettingsItemState;
319
319
  getItemGroupState(state: {
320
320
  addContentOptions: {
321
- type: "website" | "image" | "facebook" | "twitter" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section";
321
+ type: "website" | "image" | "facebook" | "twitter" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
322
322
  category: string;
323
323
  createInitialContent: (options: import("../../../shared/content-settings/models").CreateInitialContentOptions) => Content;
324
324
  displayName: string;
@@ -329,11 +329,11 @@ declare const _default: import("vue").DefineComponent<{}, {
329
329
  }[];
330
330
  items: {
331
331
  id: string;
332
- type: "website" | "image" | "facebook" | "twitter" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section";
332
+ type: "website" | "image" | "facebook" | "twitter" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
333
333
  settings: {
334
334
  content: {
335
335
  id: string;
336
- type: "website" | "image" | "facebook" | "twitter" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section";
336
+ type: "website" | "image" | "facebook" | "twitter" | "email" | "phone" | "logo" | "general-link" | "profile" | "video" | "text" | "instagram" | "youtube" | "linkedin" | "pinterest" | "twitch" | "tiktok" | "map" | "image-gallery" | "mailing-list" | "request-payment" | "support-me" | "contact-form" | "banner-section" | "about-section" | "divider-section" | "images-section" | "testimonial-section" | "social-links" | "shapes-section" | "shop-section" | "booking-section";
337
337
  personalisationRole?: "website" | "email" | "phone" | "profile" | "about" | "information" | "media" | undefined;
338
338
  imageUrlOverride?: string | undefined;
339
339
  imageUrlsOverride?: string | undefined;
@@ -1,7 +1,7 @@
1
1
  import { type ModelRef, type ComputedRef, type Ref, type WritableComputedRef } from 'vue';
2
2
  import { Editor } from '@tiptap/vue-3';
3
3
  import type { StyleTextFontFamilyOption } from '../../../shared/style-settings/models';
4
- import type { TextStyles } from '../../../brand-page';
4
+ import type { HyperlinkType, TextStyles } from '../../../brand-page';
5
5
  import { type TextItem, type TextStyleDeclaration } from '../../../brand-page';
6
6
  import type { ButtonGroupOption } from '../../../brand-page-maker/models/button-group.model';
7
7
  interface UseRichTextEditorReturn {
@@ -70,6 +70,7 @@ export declare const useRichTextEditor: (model: ModelRef<any>, props: {
70
70
  placeholder: string;
71
71
  textItemIndex: number;
72
72
  item: TextItem;
73
+ contentType: string;
73
74
  }, emit: (event: 'focus' | 'blur' | 'update:modelValue', ...args: any[]) => void, fontSettings: {
74
75
  selectedTextStyle: string;
75
76
  selectedFont: string;
@@ -77,5 +78,5 @@ export declare const useRichTextEditor: (model: ModelRef<any>, props: {
77
78
  selectedFontSizePx: number;
78
79
  selectedTextColor: string;
79
80
  selectedBackgroundColor: string;
80
- }, fontStyleDropdownRef: Ref<DropdownInstance | undefined, DropdownInstance | undefined>, selectedGlobalTextStyles: WritableComputedRef<TextStyles, string>, onSelectTextStyleType: (option: ButtonGroupOption) => void, updateRichTextEditor: Ref<boolean>, textStyleTypeOptions: ButtonGroupOption[], markedText: Ref<string>, isHyperlinkPopupOpen: Ref<boolean>) => UseRichTextEditorReturn;
81
+ }, fontStyleDropdownRef: Ref<DropdownInstance | undefined, DropdownInstance | undefined>, selectedGlobalTextStyles: WritableComputedRef<TextStyles, string>, onSelectTextStyleType: (option: ButtonGroupOption) => void, updateRichTextEditor: Ref<boolean>, textStyleTypeOptions: ButtonGroupOption[], markedText: Ref<string>, isHyperlinkPopupOpen: Ref<boolean>, selectedLinkTypeValue: Ref<HyperlinkType>) => UseRichTextEditorReturn;
81
82
  export {};
@@ -18,7 +18,7 @@ import { useFont } from './font';
18
18
  import { useSpacing } from './spacing';
19
19
  import Color from 'color';
20
20
  import { buildInitialMarks, emToPx, isStyleChanged, pxToEm, sanitiseClientSideRTE, skipStyleDetection, } from '../../../brand-page-maker/utils';
21
- import {} from '../../../brand-page';
21
+ import { HYPERLINK_TYPE, } from '../../../brand-page';
22
22
  import { letterSpacingValueConvertor, colorConvertor, backgroundColorConvertor, } from '../../../brand-page-maker/convertors';
23
23
  import { useUiContentSettingsStore } from '../../../shared/content-settings/store';
24
24
  import { AllSelection } from 'prosemirror-state';
@@ -27,6 +27,7 @@ import { AutoLink } from './extensions/AutoLink';
27
27
  import { useHyperlink } from './hyperlink';
28
28
  import { useBubbleMenu } from './bubbleMenu';
29
29
  import { hasLogoColorVar, isLogoColor, getRTEColor, } from '../../utils/rich-text-editor.util';
30
+ import { useEventTracker, EVENTS } from '../useEventTracker';
30
31
  export const useExternalRichTextEditor = () => {
31
32
  const externalEditor = new Editor({
32
33
  editable: false,
@@ -69,7 +70,7 @@ export const useExternalRichTextEditor = () => {
69
70
  externalEditor,
70
71
  };
71
72
  };
72
- export const useRichTextEditor = (model, props, emit, fontSettings, fontStyleDropdownRef, selectedGlobalTextStyles, onSelectTextStyleType, updateRichTextEditor, textStyleTypeOptions, markedText, isHyperlinkPopupOpen) => {
73
+ export const useRichTextEditor = (model, props, emit, fontSettings, fontStyleDropdownRef, selectedGlobalTextStyles, onSelectTextStyleType, updateRichTextEditor, textStyleTypeOptions, markedText, isHyperlinkPopupOpen, selectedLinkTypeValue) => {
73
74
  const editor = new Editor({
74
75
  content: model.value ?? '',
75
76
  editable: !props.readOnly,
@@ -206,6 +207,7 @@ export const useRichTextEditor = (model, props, emit, fontSettings, fontStyleDro
206
207
  },
207
208
  });
208
209
  const contentSettingStore = useUiContentSettingsStore();
210
+ const eventTracker = useEventTracker();
209
211
  const { toggleBold, toggleItalic, toggleUnderline, toggleStrike, toggleTextColor, toggleBackgroundColor, toggleBoldAll, toggleItalicAll, toggleUnderlineAll, toggleStrikeAll, toggleTextColorAll, unsetAllMarks, } = createFormattingActions(editor);
210
212
  const { currentAlignment, toggleTextAlign, idx: currentAlignmentIndex, keys: alignmentKeys, } = useTextAlign(editor);
211
213
  const { selectedFont, toggleFont, toggleFontSize, toggleFontAll, toggleFontSizeAll, } = useFont(editor, fontSettings, fontStyleDropdownRef);
@@ -505,8 +507,18 @@ export const useRichTextEditor = (model, props, emit, fontSettings, fontStyleDro
505
507
  emit('blur');
506
508
  };
507
509
  const handleHyperlink = (action, data) => {
510
+ const linkType = selectedLinkTypeValue.value === HYPERLINK_TYPE.page
511
+ ? 'internal_link'
512
+ : 'external_link';
508
513
  switch (action) {
509
514
  case 'toggle':
515
+ eventTracker.sendWebsiteEvent({
516
+ eventName: EVENTS.WEBSITE_MAKER_HYPERLINK_CLICK,
517
+ eventProps: {
518
+ link_type: linkType,
519
+ content_type: props.contentType,
520
+ },
521
+ });
510
522
  isHyperlinkPopupOpen.value = !isHyperlinkPopupOpen.value;
511
523
  if (isHyperlinkPopupOpen.value) {
512
524
  if (data?.href && data?.text) {
@@ -534,6 +546,14 @@ export const useRichTextEditor = (model, props, emit, fontSettings, fontStyleDro
534
546
  }
535
547
  break;
536
548
  case 'apply':
549
+ // Track Mixpanel event for hyperlink attachment
550
+ eventTracker.sendWebsiteEvent({
551
+ eventName: EVENTS.WEBSITE_MAKER_HYPERLINK_ADD,
552
+ eventProps: {
553
+ link_type: linkType,
554
+ content_type: props.contentType,
555
+ },
556
+ });
537
557
  const url = hyperlinkValue.value.value;
538
558
  const text = markedText.value;
539
559
  if (!url.trim()) {
@@ -548,6 +568,13 @@ export const useRichTextEditor = (model, props, emit, fontSettings, fontStyleDro
548
568
  isHyperlinkPopupOpen.value = false;
549
569
  break;
550
570
  case 'remove':
571
+ eventTracker.sendWebsiteEvent({
572
+ eventName: EVENTS.WEBSITE_MAKER_HYPERLINK_REMOVE,
573
+ eventProps: {
574
+ link_type: linkType,
575
+ content_type: props.contentType,
576
+ },
577
+ });
551
578
  removeHyperlinkFromComposable();
552
579
  isHyperlinkPopupOpen.value = false;
553
580
  break;
@@ -32,6 +32,10 @@ export declare const EVENTS: {
32
32
  WEBSITE_MAKER_TEMPLATE_SELECT: string;
33
33
  WEBSITE_MAKER_TEMPLATE_CATEGORY_SELECT: string;
34
34
  WEBSITE_SIDEBAR_TAB_CLICKED: string;
35
+ WEBSITE_MAKER_HYPERLINK_ADD: string;
36
+ WEBSITE_MAKER_HYPERLINK_REMOVE: string;
37
+ WEBSITE_MAKER_HYPERLINK_CLICK: string;
38
+ WEBSITE_MAKER_HYPERLINK_EDIT: string;
35
39
  };
36
40
  export declare const SELECT_LOCATIONS: {
37
41
  MAKER_PREVIEW: string;
@@ -15,6 +15,10 @@ export const EVENTS = {
15
15
  WEBSITE_MAKER_TEMPLATE_SELECT: 'website_maker_template_select',
16
16
  WEBSITE_MAKER_TEMPLATE_CATEGORY_SELECT: 'website_maker_template_category_select',
17
17
  WEBSITE_SIDEBAR_TAB_CLICKED: 'website_sidebar_tab_clicked',
18
+ WEBSITE_MAKER_HYPERLINK_ADD: 'website_maker_hyperlink_add',
19
+ WEBSITE_MAKER_HYPERLINK_REMOVE: 'website_maker_hyperlink_remove',
20
+ WEBSITE_MAKER_HYPERLINK_CLICK: 'website_maker_hyperlink_click',
21
+ WEBSITE_MAKER_HYPERLINK_EDIT: 'website_maker_hyperlink_edit',
18
22
  };
19
23
  export const SELECT_LOCATIONS = {
20
24
  MAKER_PREVIEW: 'maker_preview',
@@ -1,4 +1,4 @@
1
- import type { LogoContent, FacebookContent, GeneralLinkContent, PhoneContent, EmailContent, ImageContent, InstagramContent, LinkedInContent, PinterestContent, ProfileContent, TextContent, TiktokContent, TwitchContent, TwitterContent, VideoContent, WebsiteContent, YoutubeContent, ContentType, MapContent, ImageGalleryContent, MailingListContent, RequestPaymentContent, SupportMeContent, ContactFormContent, BannerSectionContent, SocialLinksContent, ImagesSectionContent, TestimonialSectionContent, AboutSectionContent, DividerSectionContent, ShapesSectionContent, ShopContent } from '../../brand-page';
1
+ import type { LogoContent, FacebookContent, GeneralLinkContent, PhoneContent, EmailContent, ImageContent, InstagramContent, LinkedInContent, PinterestContent, ProfileContent, TextContent, TiktokContent, TwitchContent, TwitterContent, VideoContent, WebsiteContent, YoutubeContent, ContentType, MapContent, ImageGalleryContent, MailingListContent, RequestPaymentContent, SupportMeContent, ContactFormContent, BannerSectionContent, SocialLinksContent, ImagesSectionContent, TestimonialSectionContent, AboutSectionContent, DividerSectionContent, ShapesSectionContent, ShopContent, BookingSectionContent } from '../../brand-page';
2
2
  import type { ContentSettingsConfig, ContentSettingsField, ContentSettingsMultiField } from '../models';
3
3
  export declare const LOGO_SETTINGS_CONFIG: () => ContentSettingsConfig<Omit<LogoContent, 'version' | 'logoVariation' | 'logoImageHeight' | 'logoImageWidth' | 'logoLastUpdate' | 'logoImageBase64Url'>>;
4
4
  export declare const GENERAL_LINK_CONTENT_SETTINGS_CONFIG: () => ContentSettingsConfig<GeneralLinkContent>;
@@ -47,4 +47,5 @@ export declare const SHAPES_SECTION_SETTINGS_CONFIG: () => ContentSettingsConfig
47
47
  export declare const SHOP_SECTION_SETTINGS_CONFIG: () => ContentSettingsConfig<ShopContent, {
48
48
  paymentConfig: any;
49
49
  }>;
50
+ export declare const BOOKING_SECTION_SETTINGS_CONFIG: () => ContentSettingsConfig<BookingSectionContent>;
50
51
  export declare const CONTENT_SETTINGS_CONFIGS: () => Record<ContentType, ContentSettingsConfig<any>>;
@@ -1,5 +1,5 @@
1
1
  import { SOCIAL_LINKS_ICON_DISPLAY_STYLES, BRAND_PAGE_TYPES, DIVIDER_STYLES, MEDIA_TYPES, BUTTON_LINK_TYPE, FONT_SIZE_BODY, LINE_HEIGHT_BODY, MIN_TEXT_SIZE_PX, MAX_TEXT_SIZE_PX, TEXT_COLUMNS, DEFAULT_SHAPE_SIZE, PAYMENT_OPTION_DISPLAY_TYPES, PAYMENT_OPTION_IMAGE_TYPES, } from '../../brand-page';
2
- import { createInitialButtonContent, createInitialImageContent, createInitialProfileContent, createInitialTextContent, createInitialVideoContent, createInitialLogoContent, createInitialMapContent, createInitialImageGalleryContent, createInitialGeneralLinkContent, createInitialMailingListContent, createInitialRequestPaymentContent, createInitialSupportMeContent, createInitialContactFormContent, CONTENT_SETTINGS_DISPLAY_MODES, createInitialBannerSectionContent, createInitialSocialLinksContent, createInitialImagesSectionContent, createInitialTestimonialSectionContent, createInitialAboutSectionContent, createInitialDividerSectionContent, createInitialShapesSectionContent, VARIANT_DISPLAY_MODES, createInitialShopContent, } from '../models';
2
+ import { createInitialButtonContent, createInitialImageContent, createInitialProfileContent, createInitialTextContent, createInitialVideoContent, createInitialLogoContent, createInitialMapContent, createInitialImageGalleryContent, createInitialGeneralLinkContent, createInitialMailingListContent, createInitialRequestPaymentContent, createInitialSupportMeContent, createInitialContactFormContent, CONTENT_SETTINGS_DISPLAY_MODES, createInitialBannerSectionContent, createInitialSocialLinksContent, createInitialImagesSectionContent, createInitialTestimonialSectionContent, createInitialAboutSectionContent, createInitialDividerSectionContent, createInitialShapesSectionContent, VARIANT_DISPLAY_MODES, createInitialShopContent, createInitialBookingSectionContent, } from '../models';
3
3
  import { colorConvertor, backgroundColorConvertor, borderColorConvertor, displayStyleConvertor, galleryTypeConvertor, imageAspectRatioConvertor, textAlignmentOptionsConvertor, videoContentStateConvertor, fillColorConvertor, bannerAlignDisplayStyleConvertor, aboutDisplayStyleConvertor, dividerStyleConvertor, shapeSizeOptionsConvertor, buttonLinkStyleConvertor, textSizeValueConvertor, textColumnStyleConvertor, contactLayoutStyleConvertor, paymentLinkDisplayStyleConvertor, shopDisplayConvertor, shopAspectRatioConvertor, } from '../convertors';
4
4
  import { ALIGN_CENTERED, DISPLAY_STYLE_COLLAPSED, DISPLAY_STYLE_PREVIEW, } from '../../brand-page';
5
5
  import { imageFieldVisibilityAssessor, imageOptionVisibilityAssessor, imageGalleryFieldVisibilityAssessor, cardFillVisibilityAssessor, mediaSectionItemsFieldTypeAssessor, dividerToggleFieldVisibilityAssessor, shapeSectionItemsFieldTypeAssessor, colorReplacementVisibilityTypeAssessor, colorReplacementProfileVisibilityTypeAssessor, colorReplacementIconVisibilityTypeAssessor, imagesSectionCardStyleVisibilityAssessor, contactBackgroundDisplayTypeVisibilityAssessor, contactCardDisplayTypeVisibilityAssessor, imageUrlVisibilityAssessor, displayTypeVisibilityAssessor, logoFieldVisibilityAssessor, shapesSectionCardStyleVisibilityAssessor, shopImageOptionVisibilityAssessor, shopItemColorVisibility, personalisationOverrideVisibility, } from '../assessors';
@@ -2560,6 +2560,105 @@ export const SHOP_SECTION_SETTINGS_CONFIG = () => ({
2560
2560
  isLocked: false,
2561
2561
  type: 'shop-section',
2562
2562
  });
2563
+ export const BOOKING_SECTION_SETTINGS_CONFIG = () => ({
2564
+ type: 'booking-section',
2565
+ category: 'sections',
2566
+ createInitialContent: createInitialBookingSectionContent,
2567
+ displayMode: CONTENT_SETTINGS_DISPLAY_MODES.focused,
2568
+ defaultIconName: 'calendar',
2569
+ displayName: contentSettingsTr(`bookingSectionDisplayName`),
2570
+ fieldGroups: [
2571
+ {
2572
+ id: SETTINGS_STYLE_FIELD_GROUP_IDS.settings,
2573
+ displayName: contentSettingsTr(`settingsDisplayName`),
2574
+ isCollapsed: false,
2575
+ },
2576
+ {
2577
+ id: SETTINGS_STYLE_FIELD_GROUP_IDS.style,
2578
+ displayName: contentSettingsTr(`styleDisplayName`),
2579
+ isCollapsed: true,
2580
+ },
2581
+ ],
2582
+ fields: {
2583
+ titleStyle: DEFAULT_TITLE_STYLE_SETTINGS_FILED_WITH_TITLE(),
2584
+ descriptionStyle: DEFAULT_DESCRIPTION_STYLE_FILED(),
2585
+ buttonTextStyle: DEFAULT_BUTTON_TEXT_STYLE_FIELD(),
2586
+ title: {
2587
+ type: 'text',
2588
+ placeholder: contentSettingsTr(`titlePlaceholder`),
2589
+ title: contentSettingsTr(`titleTitle`),
2590
+ groupId: SETTINGS_STYLE_FIELD_GROUP_IDS.settings,
2591
+ maxLength: 200,
2592
+ },
2593
+ titleOverride: {
2594
+ type: 'personalisation-override',
2595
+ groupId: SETTINGS_STYLE_FIELD_GROUP_IDS.settings,
2596
+ visibilityAssessor: (c, b) => personalisationOverrideVisibility(c, b, 'title'),
2597
+ },
2598
+ description: {
2599
+ type: 'textarea',
2600
+ placeholder: contentSettingsTr(`descriptionPlaceholder`),
2601
+ title: contentSettingsTr(`descriptionTitle`),
2602
+ groupId: SETTINGS_STYLE_FIELD_GROUP_IDS.settings,
2603
+ maxLength: 1000,
2604
+ },
2605
+ descriptionOverride: {
2606
+ type: 'personalisation-override',
2607
+ groupId: SETTINGS_STYLE_FIELD_GROUP_IDS.settings,
2608
+ visibilityAssessor: (c, b) => personalisationOverrideVisibility(c, b, 'description'),
2609
+ },
2610
+ buttonText: {
2611
+ type: 'text',
2612
+ placeholder: contentSettingsTr(`getStartedPlaceholder`),
2613
+ title: contentSettingsTr(`buttonTitle`),
2614
+ groupId: SETTINGS_STYLE_FIELD_GROUP_IDS.settings,
2615
+ maxLength: 60,
2616
+ },
2617
+ buttonTextOverride: {
2618
+ type: 'personalisation-override',
2619
+ groupId: SETTINGS_STYLE_FIELD_GROUP_IDS.settings,
2620
+ visibilityAssessor: (c, b) => personalisationOverrideVisibility(c, b, 'buttonText'),
2621
+ },
2622
+ backgroundStyle: {
2623
+ type: 'color',
2624
+ groupId: SETTINGS_STYLE_FIELD_GROUP_IDS.style,
2625
+ defaultValue: {},
2626
+ isInline: true,
2627
+ showToggle: false,
2628
+ title: contentSettingsTr(`backgroundColorTitle`),
2629
+ valueConvertor: backgroundColorConvertor,
2630
+ },
2631
+ buttonLinkType: {
2632
+ type: 'radio',
2633
+ role: 'multi',
2634
+ defaultValue: BUTTON_LINK_TYPE.url,
2635
+ title: contentSettingsTr(`buttonLinkTitle`),
2636
+ groupId: SETTINGS_STYLE_FIELD_GROUP_IDS.settings,
2637
+ optionsConvertor: buttonLinkStyleConvertor,
2638
+ visibilityAssessor: bannerLinkTypeVisibilityAssessor,
2639
+ },
2640
+ pageSlug: {
2641
+ type: 'page-dropdown',
2642
+ placeholder: contentSettingsTr(`selectAPagePlaceholder`),
2643
+ groupId: SETTINGS_STYLE_FIELD_GROUP_IDS.settings,
2644
+ visibilityAssessor: bannerSectionPageVisibilityAssessor,
2645
+ validator: pageValidator,
2646
+ defaultValue: '',
2647
+ },
2648
+ url: {
2649
+ type: 'url',
2650
+ groupId: SETTINGS_STYLE_FIELD_GROUP_IDS.settings,
2651
+ fieldTypeAssessor: bannerSectionFieldTypeAssessor,
2652
+ roleAssessor: bannerSectionRoleTypeAssessor,
2653
+ placeholderAssessor: bannerPlaceholderFieldTypeAssessor,
2654
+ visibilityAssessor: bannerSectionUrlVisibilityAssessor,
2655
+ validator: urlValidator,
2656
+ defaultValue: '',
2657
+ },
2658
+ },
2659
+ isEnabled: true,
2660
+ isLocked: false,
2661
+ });
2563
2662
  export const CONTENT_SETTINGS_CONFIGS = () => ({
2564
2663
  logo: LOGO_SETTINGS_CONFIG(),
2565
2664
  'general-link': GENERAL_LINK_CONTENT_SETTINGS_CONFIG(),
@@ -2592,4 +2691,5 @@ export const CONTENT_SETTINGS_CONFIGS = () => ({
2592
2691
  'divider-section': DIVIDER_SECTION_SETTINGS_CONFIG(),
2593
2692
  'shapes-section': SHAPES_SECTION_SETTINGS_CONFIG(),
2594
2693
  'shop-section': SHOP_SECTION_SETTINGS_CONFIG(),
2694
+ 'booking-section': BOOKING_SECTION_SETTINGS_CONFIG(),
2595
2695
  });
@@ -1,5 +1,5 @@
1
1
  import { BrandPageModel } from '../../brand-page';
2
- import type { ButtonContent, ContentType, ImageContent, ProfileContent, TextContent, VideoContent, LogoContent, LogoTheme, MapContent, ImageGalleryContent, GeneralLinkContent, MailingListContent, RequestPaymentContent, ContactFormContent, BannerSectionContent, SocialLinksContent, ImagesSectionContent, TestimonialSectionContent, AboutSectionContent, DividerSectionContent, ShapesSectionContent, BrandPageType, SupportMeContent, ShopContent } from '../../brand-page';
2
+ import type { ButtonContent, ContentType, ImageContent, ProfileContent, TextContent, VideoContent, LogoContent, LogoTheme, MapContent, ImageGalleryContent, GeneralLinkContent, MailingListContent, RequestPaymentContent, ContactFormContent, BannerSectionContent, SocialLinksContent, ImagesSectionContent, TestimonialSectionContent, AboutSectionContent, DividerSectionContent, ShapesSectionContent, BrandPageType, SupportMeContent, ShopContent, BookingSectionContent } from '../../brand-page';
3
3
  import type { CreateInitialContentFunction } from './content-settings-configs';
4
4
  import type { CreateInitialContentOptions } from '../../shared/content-settings/models';
5
5
  export declare const createInitialButtonContent: (type: ContentType, iconUrl: string, options?: CreateInitialContentOptions) => () => ButtonContent;
@@ -17,6 +17,7 @@ export declare const createInitialShopContent: (options?: CreateInitialContentOp
17
17
  export declare const createInitialSupportMeContent: (options?: CreateInitialContentOptions) => SupportMeContent;
18
18
  export declare const createInitialContactFormContent: CreateInitialContentFunction<ContactFormContent>;
19
19
  export declare const createInitialBannerSectionContent: CreateInitialContentFunction<BannerSectionContent>;
20
+ export declare const createInitialBookingSectionContent: CreateInitialContentFunction<BookingSectionContent>;
20
21
  export declare const createInitialImagesSectionContent: CreateInitialContentFunction<ImagesSectionContent>;
21
22
  export declare const createInitialTestimonialSectionContent: CreateInitialContentFunction<TestimonialSectionContent>;
22
23
  export declare const createInitialAboutSectionContent: CreateInitialContentFunction<AboutSectionContent>;
@@ -418,6 +418,34 @@ export const createInitialBannerSectionContent = (options) => {
418
418
  overlayOpacity: 50,
419
419
  };
420
420
  };
421
+ export const createInitialBookingSectionContent = (options) => {
422
+ return {
423
+ id: uuid.v4(),
424
+ title: contentSettingsTr(`defaultBookingTitle`),
425
+ description: contentSettingsTr(`defaultBookingDescription`),
426
+ buttonText: contentSettingsTr(`bookNowLabel`),
427
+ url: '',
428
+ type: 'booking-section',
429
+ descriptionStyle: {
430
+ applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
431
+ textStyleType: TEXT_STYLE_TYPES.paragraphs,
432
+ textAlign: 'center',
433
+ },
434
+ titleStyle: {
435
+ applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
436
+ textStyleType: TEXT_STYLE_TYPES.titles,
437
+ textAlign: 'center',
438
+ },
439
+ backgroundStyle: {},
440
+ pageSlug: '',
441
+ buttonLinkType: BUTTON_LINK_TYPE.url,
442
+ buttonTextStyle: {
443
+ applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
444
+ textStyleType: TEXT_STYLE_TYPES.buttons,
445
+ textAlign: 'center',
446
+ },
447
+ };
448
+ };
421
449
  export const createInitialImagesSectionContent = (options) => {
422
450
  return {
423
451
  id: uuid.v4(),
@@ -1,5 +1,5 @@
1
- import { type BannerSectionContent } from '../../brand-page/models';
1
+ import { type BannerSectionContent, type BookingSectionContent } from '../../brand-page/models';
2
2
  import type { ContentValidator } from '../models';
3
3
  export declare const textValidator: ContentValidator<BannerSectionContent>;
4
- export declare const urlValidator: ContentValidator<BannerSectionContent>;
5
- export declare const pageValidator: ContentValidator<BannerSectionContent>;
4
+ export declare const urlValidator: ContentValidator<BannerSectionContent | BookingSectionContent>;
5
+ export declare const pageValidator: ContentValidator<BannerSectionContent | BookingSectionContent>;