@designcrowd/library.brand-page 6.2.9 → 6.2.10-ast-faq-2

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 (181) hide show
  1. package/lib/src/{CreatedOnBrandCrowd-de-de-9uC6t5HU.js → CreatedOnBrandCrowd-de-de-BZrMq1gI.js} +1 -1
  2. package/lib/src/{CreatedOnBrandCrowd-en-us-P6TzcklZ.js → CreatedOnBrandCrowd-en-us-DPC8TAr4.js} +1 -1
  3. package/lib/src/{CreatedOnBrandCrowd-es-es-DimkGb1_.js → CreatedOnBrandCrowd-es-es-B94gSf_i.js} +1 -1
  4. package/lib/src/{CreatedOnBrandCrowd-fr-fr-CL_iFuJw.js → CreatedOnBrandCrowd-fr-ca-DziGGjA1.js} +1 -1
  5. package/lib/src/{CreatedOnBrandCrowd-fr-ca-CL_iFuJw.js → CreatedOnBrandCrowd-fr-fr-DziGGjA1.js} +1 -1
  6. package/lib/src/{CreatedOnBrandCrowd-pt-pt-DSIjEoMv.js → CreatedOnBrandCrowd-pt-br-CfTCQ9nC.js} +1 -1
  7. package/lib/src/{CreatedOnBrandCrowd-pt-br-DSIjEoMv.js → CreatedOnBrandCrowd-pt-pt-CfTCQ9nC.js} +1 -1
  8. package/lib/src/{CreatedOnDcom-de-de-CKRvl9Ky.js → CreatedOnDcom-de-de-C22-PnKc.js} +1 -1
  9. package/lib/src/{CreatedOnDcom-en-us-ChplPDfS.js → CreatedOnDcom-en-us-CZqr71VB.js} +1 -1
  10. package/lib/src/{CreatedOnDcom-es-es-DCIXsW9X.js → CreatedOnDcom-es-es-BinRuIc_.js} +1 -1
  11. package/lib/src/{CreatedOnDcom-fr-ca-lakt1nLU.js → CreatedOnDcom-fr-ca-DYYBqMhv.js} +1 -1
  12. package/lib/src/{CreatedOnDcom-fr-fr-RsGK1y5g.js → CreatedOnDcom-fr-fr-3ytJgZBj.js} +1 -1
  13. package/lib/src/{CreatedOnDcom-pt-br-DyA4XodM.js → CreatedOnDcom-pt-br-D1UqN_eq.js} +1 -1
  14. package/lib/src/{CreatedOnDcom-pt-pt-BK51dTyw.js → CreatedOnDcom-pt-pt-BnIpbt_8.js} +1 -1
  15. package/lib/src/brand-page/constants/misc.constants.d.ts +8 -0
  16. package/lib/src/brand-page/constants/misc.constants.js +7 -0
  17. package/lib/src/brand-page/constants/styles.constants.d.ts +2 -0
  18. package/lib/src/brand-page/constants/styles.constants.js +2 -0
  19. package/lib/src/brand-page/models/content.model.d.ts +1 -0
  20. package/lib/src/brand-page/models/content.model.js +1 -0
  21. package/lib/src/brand-page/models/index.d.ts +22 -0
  22. package/lib/src/brand-page/utils/content-callback-util.d.ts +2 -1
  23. package/lib/src/brand-page/utils/content-callback-util.js +3 -0
  24. package/lib/src/brand-page/utils/view-model.util.js +22 -0
  25. package/lib/src/brand-page/view-models.d.ts +7 -2
  26. package/lib/src/brand-page-maker/assessors/faq-accordion-color-field-visibility.assessor.d.ts +3 -0
  27. package/lib/src/brand-page-maker/assessors/faq-accordion-color-field-visibility.assessor.js +4 -0
  28. package/lib/src/brand-page-maker/assessors/index.d.ts +1 -0
  29. package/lib/src/brand-page-maker/assessors/index.js +1 -0
  30. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.d.ts +9 -5
  31. package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.d.ts +9 -5
  32. package/lib/src/brand-page-maker/components/quick-link-bar/QuickLinkBar.mixin.d.ts +6 -5
  33. package/lib/src/brand-page-maker/components/seo-settings/SeoPageSettings.mixin.d.ts +7 -5
  34. package/lib/src/brand-page-maker/components/seo-settings/SeoPageSettings.mixin.js +5 -0
  35. package/lib/src/brand-page-maker/components/seo-settings/UrlSettings.mixin.d.ts +6 -5
  36. package/lib/src/brand-page-maker/components/seo-settings/UseExistingDomainModal.mixin.d.ts +6 -5
  37. package/lib/src/brand-page-maker/components/template-preview/TemplatePreview.mixin.d.ts +6 -5
  38. package/lib/src/brand-page-maker/components/upgrade-to-premium-button/UpgradeToPremiumButton.mixin.d.ts +6 -5
  39. package/lib/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.d.ts +13 -0
  40. package/lib/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.js +33 -12
  41. package/lib/src/brand-page-maker/constants/config-settings-constant.d.ts +2 -1
  42. package/lib/src/brand-page-maker/constants/config-settings-constant.js +103 -4
  43. package/lib/src/brand-page-maker/convertors/faq-display-style.convertor.d.ts +3 -0
  44. package/lib/src/brand-page-maker/convertors/faq-display-style.convertor.js +49 -0
  45. package/lib/src/brand-page-maker/models/content-settings-configs.d.ts +1 -0
  46. package/lib/src/brand-page-maker/models/content-settings-configs.js +1 -0
  47. package/lib/src/brand-page-maker/models/content-settings.d.ts +4 -1
  48. package/lib/src/brand-page-maker/models/content-settings.js +47 -1
  49. package/lib/src/brand-page-maker/stores/brandpage-container/brand-page-container-store.d.ts +7 -6
  50. package/lib/src/brand-page-maker/stores/brandpage-container/brand-page-container-store.js +52 -5
  51. package/lib/src/brand-page-maker/utils/apply-color-strategy.js +45 -17
  52. package/lib/src/brand-page-maker/utils/rich-text-editor.util.d.ts +6 -0
  53. package/lib/src/brand-page-maker/utils/rich-text-editor.util.js +24 -1
  54. package/lib/src/brand-page-maker/validators/field.validator.js +2 -0
  55. package/lib/src/{bundled-translations-zfiA5Tsw.js → bundled-translations-CUJ-udgD.js} +17 -17
  56. package/lib/src/{bundled-translations.de-DE-ChsdSyAP.js → bundled-translations.de-DE-Ch7Y_CCO.js} +22 -22
  57. package/lib/src/{bundled-translations.es-ES-DflsWQK0.js → bundled-translations.es-ES-B4CWkXkC.js} +30 -30
  58. package/lib/src/{bundled-translations.fr-CA-fpDRuZ52.js → bundled-translations.fr-CA-Drtb5hJ2.js} +9 -9
  59. package/lib/src/{bundled-translations.fr-FR-Bub73Zt-.js → bundled-translations.fr-FR-CImFpWT4.js} +29 -29
  60. package/lib/src/{bundled-translations.pt-BR-BlnWE9TB.js → bundled-translations.pt-BR-BHluaLc_.js} +15 -15
  61. package/lib/src/{bundled-translations.pt-PT-DmzXlnaS.js → bundled-translations.pt-PT-BxL2VvW4.js} +37 -37
  62. package/lib/src/bundles/bundled-translations.de-DE.json +13 -5
  63. package/lib/src/bundles/bundled-translations.es-ES.json +14 -6
  64. package/lib/src/bundles/bundled-translations.fr-CA.json +14 -6
  65. package/lib/src/bundles/bundled-translations.fr-FR.json +14 -6
  66. package/lib/src/bundles/bundled-translations.json +9 -1
  67. package/lib/src/bundles/bundled-translations.pt-BR.json +13 -5
  68. package/lib/src/bundles/bundled-translations.pt-PT.json +13 -5
  69. package/lib/src/composables/useTranslate.d.ts +1 -1
  70. package/lib/src/composables/useTranslate.js +1 -1
  71. package/lib/src/css/library.brand-page-brandCrowd.min.css +164 -53
  72. package/lib/src/css/library.brand-page-brandPage.min.css +164 -53
  73. package/lib/src/css/library.brand-page-designCom.min.css +164 -53
  74. package/lib/src/css/library.brand-page-preview.min.css +164 -53
  75. package/lib/src/index.mjs +161 -160
  76. package/lib/src/{lib-Ca7GMpcR.js → lib-nAkVtlza.js} +34006 -33265
  77. package/lib/src/metadata-builder/parsers/section-tool-arguments.d.ts +1 -1
  78. package/lib/src/shared/color-strategies/color-strategies.js +4 -0
  79. package/lib/src/shared/color-strategies/rte-field-pairs.d.ts +12 -0
  80. package/lib/src/shared/color-strategies/rte-field-pairs.js +10 -0
  81. package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.d.ts +3 -0
  82. package/lib/src/shared/content-settings/components/content-settings/ReplaceImageSettingsForContent.mixin.d.ts +4 -1
  83. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.d.ts +3 -0
  84. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.d.ts +3 -0
  85. package/lib/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.mixin.d.ts +3 -0
  86. package/lib/src/shared/content-settings/components/items-field/ItemsField.mixin.d.ts +12 -0
  87. package/lib/src/shared/content-settings/components/items-field/ItemsField.mixin.js +8 -0
  88. package/lib/src/shared/content-settings/components/payment-config-field/PaymentConfigField.mixin.d.ts +6 -5
  89. package/lib/src/shared/content-settings/components/textarea-field/TextareaField.mixin.d.ts +12 -0
  90. package/lib/src/shared/content-settings/components/textarea-field/TextareaField.mixin.js +5 -0
  91. package/lib/src/shared/content-settings/models.d.ts +6 -0
  92. package/lib/src/shared/content-settings/store/content-settings-store.d.ts +5 -1
  93. package/lib/src/shared/content-settings/store/content-settings-store.js +12 -0
  94. package/lib/src/shared/logo-settings/components/LogoSettings.mixin.d.ts +6 -5
  95. package/lib/src/shared/page-settings/components/page-settings/PageSettings.mixin.d.ts +9 -5
  96. package/lib/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.d.ts +9 -5
  97. package/lib/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.d.ts +6 -5
  98. package/lib/src/shared/side-bar/components/SideBar.mixin.d.ts +6 -5
  99. package/lib/src/shared/style-settings/components/StyleSettings.mixin.d.ts +6 -5
  100. package/package.json +2 -2
  101. package/src/brand-page/components/faq-section/FaqSection.test.ts +403 -0
  102. package/src/brand-page/components/faq-section/FaqSection.vue +315 -0
  103. package/src/brand-page/components/navigation/navigation-carousel/NavigationCarousel.vue +1 -0
  104. package/src/brand-page/components/page/PageComponent.vue +2 -0
  105. package/src/brand-page/constants/misc.constants.ts +12 -0
  106. package/src/brand-page/constants/styles.constants.ts +2 -0
  107. package/src/brand-page/models/content.model.ts +1 -0
  108. package/src/brand-page/models/index.ts +24 -0
  109. package/src/brand-page/utils/content-callback-util.ts +5 -0
  110. package/src/brand-page/utils/view-model.util.test.ts +102 -0
  111. package/src/brand-page/utils/view-model.util.ts +43 -0
  112. package/src/brand-page/view-models.ts +10 -1
  113. package/src/brand-page-maker/assessors/faq-accordion-color-field-visibility.assessor.ts +9 -0
  114. package/src/brand-page-maker/assessors/index.ts +1 -0
  115. package/src/brand-page-maker/components/brandpage-settings/BrandPageSettings.test.ts +323 -0
  116. package/src/brand-page-maker/components/brandpage-settings/BrandPageSettings.vue +3 -3
  117. package/src/brand-page-maker/components/rich-text-editor/RichTextEditor.test.ts +165 -0
  118. package/src/brand-page-maker/components/rich-text-editor/RichTextEditor.vue +11 -4
  119. package/src/brand-page-maker/components/sensitive-content/SensitiveContent.vue +23 -3
  120. package/src/brand-page-maker/components/seo-settings/SeoPageSettings.mixin.ts +5 -0
  121. package/src/brand-page-maker/components/seo-settings/SeoPageSettings.vue +2 -0
  122. package/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.ts +48 -12
  123. package/src/brand-page-maker/constants/config-settings-constant.ts +107 -1
  124. package/src/brand-page-maker/constants/faq-section-config.test.ts +108 -0
  125. package/src/brand-page-maker/convertors/faq-display-style.convertor.ts +61 -0
  126. package/src/brand-page-maker/convertors/i18n/converter.de-DE.json +23 -23
  127. package/src/brand-page-maker/convertors/i18n/converter.es-ES.json +23 -23
  128. package/src/brand-page-maker/convertors/i18n/converter.fr-CA.json +23 -23
  129. package/src/brand-page-maker/convertors/i18n/converter.fr-FR.json +23 -23
  130. package/src/brand-page-maker/convertors/i18n/converter.pt-BR.json +23 -23
  131. package/src/brand-page-maker/convertors/i18n/converter.pt-PT.json +23 -23
  132. package/src/brand-page-maker/models/content-settings-configs.ts +1 -0
  133. package/src/brand-page-maker/models/content-settings.ts +59 -0
  134. package/src/brand-page-maker/stores/brandpage-container/brand-page-container-store.save.test.ts +332 -1
  135. package/src/brand-page-maker/stores/brandpage-container/brand-page-container-store.ts +83 -5
  136. package/src/brand-page-maker/utils/__snapshots__/apply-color-strategy.golden.test.ts.snap +3820 -300
  137. package/src/brand-page-maker/utils/apply-color-strategy.test.ts +123 -2
  138. package/src/brand-page-maker/utils/apply-color-strategy.ts +73 -19
  139. package/src/brand-page-maker/utils/rich-text-editor.util.test.ts +110 -0
  140. package/src/brand-page-maker/utils/rich-text-editor.util.ts +66 -0
  141. package/src/brand-page-maker/validators/field.validator.ts +2 -0
  142. package/src/bundles/bundled-translations.de-DE.json +13 -5
  143. package/src/bundles/bundled-translations.es-ES.json +14 -6
  144. package/src/bundles/bundled-translations.fr-CA.json +14 -6
  145. package/src/bundles/bundled-translations.fr-FR.json +14 -6
  146. package/src/bundles/bundled-translations.json +9 -1
  147. package/src/bundles/bundled-translations.pt-BR.json +13 -5
  148. package/src/bundles/bundled-translations.pt-PT.json +13 -5
  149. package/src/composables/useTranslate.ts +2 -1
  150. package/src/metadata-builder/builders/item-id-utils.test.ts +24 -0
  151. package/src/metadata-builder/parsers/section-tool-arguments.ts +2 -1
  152. package/src/shared/color-picker/components/i18n/color-picker.de-DE.json +12 -11
  153. package/src/shared/color-picker/components/i18n/color-picker.es-ES.json +12 -11
  154. package/src/shared/color-picker/components/i18n/color-picker.fr-CA.json +12 -11
  155. package/src/shared/color-picker/components/i18n/color-picker.fr-FR.json +12 -11
  156. package/src/shared/color-picker/components/i18n/color-picker.pt-BR.json +12 -11
  157. package/src/shared/color-picker/components/i18n/color-picker.pt-PT.json +12 -11
  158. package/src/shared/color-strategies/color-strategies.ts +4 -0
  159. package/src/shared/color-strategies/rte-field-pairs.test.ts +2 -0
  160. package/src/shared/color-strategies/rte-field-pairs.ts +23 -0
  161. package/src/shared/content-settings/components/color-field/ColorField.test.ts +29 -0
  162. package/src/shared/content-settings/components/content-settings/i18n/content-settings.de-DE.json +10 -1
  163. package/src/shared/content-settings/components/content-settings/i18n/content-settings.es-ES.json +10 -1
  164. package/src/shared/content-settings/components/content-settings/i18n/content-settings.fr-CA.json +10 -1
  165. package/src/shared/content-settings/components/content-settings/i18n/content-settings.fr-FR.json +10 -1
  166. package/src/shared/content-settings/components/content-settings/i18n/content-settings.json +10 -1
  167. package/src/shared/content-settings/components/content-settings/i18n/content-settings.pt-BR.json +10 -1
  168. package/src/shared/content-settings/components/content-settings/i18n/content-settings.pt-PT.json +10 -1
  169. package/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.vue +2 -0
  170. package/src/shared/content-settings/components/faq-items-field/FaqItemsField.test.ts +357 -0
  171. package/src/shared/content-settings/components/faq-items-field/FaqItemsField.vue +274 -0
  172. package/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.vue +1 -0
  173. package/src/shared/content-settings/components/items-field/ItemsField.mixin.ts +8 -0
  174. package/src/shared/content-settings/components/items-field/ItemsField.test.ts +117 -0
  175. package/src/shared/content-settings/components/items-field/ItemsField.vue +9 -3
  176. package/src/shared/content-settings/components/textarea-field/TextareaField.mixin.ts +6 -0
  177. package/src/shared/content-settings/components/textarea-field/TextareaField.vue +1 -0
  178. package/src/shared/content-settings/models.ts +7 -0
  179. package/src/shared/content-settings/store/content-settings-store.test.ts +49 -0
  180. package/src/shared/content-settings/store/content-settings-store.ts +28 -0
  181. package/src/utils/minify-brand-page-metadata.test.ts +35 -0
@@ -1,5 +1,5 @@
1
1
  import { openBlock as e, createElementBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-Ca7GMpcR.js";
2
+ import { _ as t } from "./lib-nAkVtlza.js";
3
3
  const i = {}, h = {
4
4
  width: "275",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as e, createElementBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-Ca7GMpcR.js";
2
+ import { _ as t } from "./lib-nAkVtlza.js";
3
3
  const i = {}, h = {
4
4
  width: "251",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as e, createElementBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-Ca7GMpcR.js";
2
+ import { _ as t } from "./lib-nAkVtlza.js";
3
3
  const i = {}, h = {
4
4
  width: "250",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as e, createElementBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-Ca7GMpcR.js";
2
+ import { _ as t } from "./lib-nAkVtlza.js";
3
3
  const i = {}, h = {
4
4
  width: "237",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as e, createElementBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-Ca7GMpcR.js";
2
+ import { _ as t } from "./lib-nAkVtlza.js";
3
3
  const i = {}, h = {
4
4
  width: "237",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as e, createElementBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-Ca7GMpcR.js";
2
+ import { _ as t } from "./lib-nAkVtlza.js";
3
3
  const i = {}, h = {
4
4
  width: "263",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as e, createElementBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-Ca7GMpcR.js";
2
+ import { _ as t } from "./lib-nAkVtlza.js";
3
3
  const i = {}, h = {
4
4
  width: "263",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as H, createElementBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as e } from "./lib-Ca7GMpcR.js";
2
+ import { _ as e } from "./lib-nAkVtlza.js";
3
3
  const M = {}, Z = {
4
4
  width: "242",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as H, createElementBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as e } from "./lib-Ca7GMpcR.js";
2
+ import { _ as e } from "./lib-nAkVtlza.js";
3
3
  const i = {}, M = {
4
4
  width: "231",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as H, createElementBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as e } from "./lib-Ca7GMpcR.js";
2
+ import { _ as e } from "./lib-nAkVtlza.js";
3
3
  const M = {}, Z = {
4
4
  width: "230",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as H, createElementBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as e } from "./lib-Ca7GMpcR.js";
2
+ import { _ as e } from "./lib-nAkVtlza.js";
3
3
  const i = {}, l = {
4
4
  width: "216",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as H, createElementBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as e } from "./lib-Ca7GMpcR.js";
2
+ import { _ as e } from "./lib-nAkVtlza.js";
3
3
  const i = {}, l = {
4
4
  width: "216",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as H, createElementBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as M } from "./lib-Ca7GMpcR.js";
2
+ import { _ as M } from "./lib-nAkVtlza.js";
3
3
  const Z = {}, e = {
4
4
  width: "232",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { openBlock as H, createElementBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as M } from "./lib-Ca7GMpcR.js";
2
+ import { _ as M } from "./lib-nAkVtlza.js";
3
3
  const Z = {}, e = {
4
4
  width: "232",
5
5
  height: "36",
@@ -77,6 +77,14 @@ export declare const IMAGE_RESOLUTION_PRESETS: {
77
77
  readonly ULTRA_HD: "q=80&w=2160";
78
78
  };
79
79
  export type ImagesSectionContentDisplayStyle = (typeof IMAGES_SECTION_CONTENT_DISPLAY_STYLES)[number];
80
+ /** Centered and split are accordions; grid shows every answer. */
81
+ export declare const FAQ_DISPLAY_STYLES: Readonly<{
82
+ readonly centered: "faq-centered";
83
+ readonly split: "faq-split";
84
+ readonly grid: "faq-grid";
85
+ }>;
86
+ export type FaqDisplayStyle = (typeof FAQ_DISPLAY_STYLES)[keyof typeof FAQ_DISPLAY_STYLES];
87
+ export declare const FAQ_MAX_ITEMS = 6;
80
88
  export declare const HEADER_CSRF_TOKEN = "csrf-token";
81
89
  export declare const STYLE_THEME_KEYS: Readonly<{
82
90
  LogoTextColor: "logo-text-color";
@@ -103,6 +103,13 @@ export const IMAGE_RESOLUTION_PRESETS = {
103
103
  FULL_HD: 'q=80&w=1080',
104
104
  ULTRA_HD: 'q=80&w=2160',
105
105
  };
106
+ /** Centered and split are accordions; grid shows every answer. */
107
+ export const FAQ_DISPLAY_STYLES = Object.freeze({
108
+ centered: 'faq-centered',
109
+ split: 'faq-split',
110
+ grid: 'faq-grid',
111
+ });
112
+ export const FAQ_MAX_ITEMS = 6;
106
113
  export const HEADER_CSRF_TOKEN = 'csrf-token';
107
114
  export const STYLE_THEME_KEYS = Object.freeze({
108
115
  LogoTextColor: 'logo-text-color',
@@ -33,5 +33,7 @@ export declare const CONTENT_TEXT_STYLE_PROPERTY_KEYS: {
33
33
  readonly buttonTextStyle: "buttonTextStyle";
34
34
  readonly copyrightStyle: "copyrightStyle";
35
35
  readonly successMessageStyle: "successMessageStyle";
36
+ readonly questionStyle: "questionStyle";
37
+ readonly answerStyle: "answerStyle";
36
38
  };
37
39
  export type ContentTextStylePropertyKey = keyof typeof CONTENT_TEXT_STYLE_PROPERTY_KEYS;
@@ -35,4 +35,6 @@ export const CONTENT_TEXT_STYLE_PROPERTY_KEYS = {
35
35
  buttonTextStyle: 'buttonTextStyle',
36
36
  copyrightStyle: 'copyrightStyle',
37
37
  successMessageStyle: 'successMessageStyle',
38
+ questionStyle: 'questionStyle',
39
+ answerStyle: 'answerStyle',
38
40
  };
@@ -31,6 +31,7 @@ export declare const CONTENT_TYPES: {
31
31
  readonly 'shapes-section': "shapes-section";
32
32
  readonly 'shop-section': "shop-section";
33
33
  readonly 'booking-section': "booking-section";
34
+ readonly 'faq-section': "faq-section";
34
35
  };
35
36
  export type ContentType = keyof typeof CONTENT_TYPES;
36
37
  export declare const PERSONALISATION_ROLES: {
@@ -31,6 +31,7 @@ export const CONTENT_TYPES = {
31
31
  'shapes-section': 'shapes-section',
32
32
  'shop-section': 'shop-section',
33
33
  'booking-section': 'booking-section',
34
+ 'faq-section': 'faq-section',
34
35
  };
35
36
  export const PERSONALISATION_ROLES = {
36
37
  profile: 'profile',
@@ -478,6 +478,28 @@ export interface BookingSectionContent extends Content {
478
478
  buttonLinkType: ButtonLinkType;
479
479
  buttonTextStyle: TextStyleDeclaration;
480
480
  }
481
+ export interface FaqItem {
482
+ /** Stable per-item identifier. See ImageItem.id. */
483
+ id: string;
484
+ question: RichTextValue;
485
+ questionStyle: TextStyleDeclaration;
486
+ answer: RichTextValue;
487
+ answerStyle: TextStyleDeclaration;
488
+ }
489
+ export interface FaqSectionContent extends Content {
490
+ type: 'faq-section';
491
+ title: RichTextValue;
492
+ description: RichTextValue;
493
+ displayStyle: string;
494
+ items: FaqItem[];
495
+ titleStyle: TextStyleDeclaration;
496
+ descriptionStyle: TextStyleDeclaration;
497
+ backgroundStyle: BrandPageCssStyle;
498
+ /** `{ color }` for the +/- toggle. */
499
+ iconColor: BrandPageCssStyle;
500
+ /** `{ backgroundColor }`, the Divider section's shape. `'transparent'` hides the line. */
501
+ dividerColor: BrandPageCssStyle;
502
+ }
481
503
  export declare class PageModel {
482
504
  title: string;
483
505
  contents: Content[];
@@ -1,4 +1,4 @@
1
- import type { ProfileContent, TextContent, ContactFormContent, ImageContent, BannerSectionContent, SocialLinksContent, ImageGalleryContent, TestimonialSectionContent, AboutSectionContent, ImagesSectionContent, MailingListContent, SupportMeContent, RequestPaymentContent, ShapesSectionContent, ShopContent, ButtonContent, PageModel, BookingSectionContent } from '../models';
1
+ import type { ProfileContent, TextContent, ContactFormContent, ImageContent, BannerSectionContent, SocialLinksContent, ImageGalleryContent, TestimonialSectionContent, AboutSectionContent, ImagesSectionContent, MailingListContent, SupportMeContent, RequestPaymentContent, ShapesSectionContent, ShopContent, ButtonContent, PageModel, BookingSectionContent, FaqSectionContent } from '../models';
2
2
  export type ContentCallback = {
3
3
  profileContentCallback: (content: ProfileContent) => void;
4
4
  textContentCallback: (content: TextContent) => void;
@@ -17,5 +17,6 @@ export type ContentCallback = {
17
17
  shopSectionContentCallback: (content: ShopContent) => void;
18
18
  buttonContentCallback: (content: ButtonContent) => void;
19
19
  bookingSectionContentCallback: (content: BookingSectionContent) => void;
20
+ faqSectionContentCallback: (content: FaqSectionContent) => void;
20
21
  };
21
22
  export declare const forEachPageCallContentCallback: (page: PageModel, callbacks: ContentCallback) => void;
@@ -49,6 +49,9 @@ export const forEachPageCallContentCallback = (page, callbacks) => {
49
49
  case 'booking-section':
50
50
  callbacks.bookingSectionContentCallback(content);
51
51
  break;
52
+ case 'faq-section':
53
+ callbacks.faqSectionContentCallback(content);
54
+ break;
52
55
  case 'general-link':
53
56
  case 'website':
54
57
  case 'email':
@@ -611,6 +611,26 @@ const mapToTestimonialSectionViewModel = (content, styles) => {
611
611
  isFullWidth: true,
612
612
  }, styles);
613
613
  };
614
+ // An item's question/answer styles are CONTENT_TEXT_STYLE_PROPERTY_KEYS, so the section
615
+ // resolver handles them when handed the item.
616
+ const mapFaqItem = (item, styles) => applyViewModelTextStyles({
617
+ ...item,
618
+ questionStyle: { ...item.questionStyle },
619
+ answerStyle: { ...item.answerStyle },
620
+ }, styles);
621
+ const mapToFaqSectionViewModel = (content, styles, brandPageType) => {
622
+ return applyViewModelTextStyles({
623
+ ...content,
624
+ role: content.type,
625
+ type: 'faq-section',
626
+ // No `color` pre-seed, as in the testimonial mapper: it would read as an override.
627
+ titleStyle: { ...content.titleStyle },
628
+ descriptionStyle: { ...content.descriptionStyle },
629
+ items: (content.items ?? []).map((item) => mapFaqItem(item, styles)),
630
+ isFullWidth: true,
631
+ isStacked: brandPageType !== BRAND_PAGE_TYPES.brandSite,
632
+ }, styles);
633
+ };
614
634
  const mapToSocialLinksViewModel = (content, styles, brandPageType) => {
615
635
  return applyViewModelTextStyles({
616
636
  ...content,
@@ -872,6 +892,8 @@ export const mapToViewModel = (styles, brandPageType, options) => (content) => {
872
892
  return mapToBannerSectionViewModel(content, styles, options);
873
893
  case 'booking-section':
874
894
  return mapToBookingSectionViewModel(content, styles);
895
+ case 'faq-section':
896
+ return mapToFaqSectionViewModel(content, styles, brandPageType);
875
897
  case 'about-section':
876
898
  return mapToAboutSectionViewModel(content, styles);
877
899
  case 'images-section':
@@ -1,6 +1,6 @@
1
- import type { ButtonWithModalContent, ProfileContent, TextContent, VideoContent, ImageContent, ContentType, ButtonStyles, LogoStyles, MapContent, ImageGalleryContent, GalleryStyles, MailingListContent, RequestPaymentContent, ShopContent, SupportMeContent, ContactFormContent, BannerSectionContent, BrandPageType, SocialLinksContent, TestimonialSectionContent, AboutSectionContent, DividerSectionContent, ShapesSectionContent, ButtonLinkType, PageHeaderMobile, PageHeaderDesktop, PageFooterMobile, PageFooterDesktop, TextMediaItem, TextShapeItem, TextStyleDeclaration, AspectRatio, LogoImageModel, LogoTemplateImageModel, CookieOptions, BookingSectionContent, MediaTypes, TextStyles, BackgroundStyle, BackgroundShape, PersonalisationRole, SaveContactOptions, ColorItem, RichTextValue } from './models';
1
+ import type { ButtonWithModalContent, ProfileContent, TextContent, VideoContent, ImageContent, ContentType, ButtonStyles, LogoStyles, MapContent, ImageGalleryContent, GalleryStyles, MailingListContent, RequestPaymentContent, ShopContent, SupportMeContent, ContactFormContent, BannerSectionContent, BrandPageType, SocialLinksContent, TestimonialSectionContent, AboutSectionContent, DividerSectionContent, ShapesSectionContent, ButtonLinkType, PageHeaderMobile, PageHeaderDesktop, PageFooterMobile, PageFooterDesktop, TextMediaItem, TextShapeItem, TextStyleDeclaration, AspectRatio, LogoImageModel, LogoTemplateImageModel, CookieOptions, BookingSectionContent, FaqSectionContent, MediaTypes, TextStyles, BackgroundStyle, BackgroundShape, PersonalisationRole, SaveContactOptions, ColorItem, RichTextValue } from './models';
2
2
  import type { ImagesSectionContentDisplayStyle } from './constants';
3
- export type ViewModelType = 'button' | 'image' | 'image-gallery' | 'logo' | 'map' | 'mailing-list' | 'profile' | 'support-me' | 'request-payment' | 'text' | 'video' | 'contact-form' | 'banner-section' | 'images-section' | 'about-section' | 'divider-section' | 'testimonial-section' | 'social-links' | 'shapes-section' | 'shop-section' | 'booking-section';
3
+ export type ViewModelType = 'button' | 'image' | 'image-gallery' | 'logo' | 'map' | 'mailing-list' | 'profile' | 'support-me' | 'request-payment' | 'text' | 'video' | 'contact-form' | 'banner-section' | 'images-section' | 'about-section' | 'divider-section' | 'testimonial-section' | 'social-links' | 'shapes-section' | 'shop-section' | 'booking-section' | 'faq-section';
4
4
  export interface ContentViewModel {
5
5
  id: string;
6
6
  type: ViewModelType;
@@ -132,6 +132,11 @@ export interface BookingSectionViewModel extends ContentViewModel, Omit<BookingS
132
132
  buttonViewModel: ButtonViewModel;
133
133
  isFullWidth: boolean;
134
134
  }
135
+ export interface FaqSectionViewModel extends ContentViewModel, Omit<FaqSectionContent, 'type'> {
136
+ isFullWidth: boolean;
137
+ /** brand.page / brand.contact: split and grid always use their stacked layout. */
138
+ isStacked: boolean;
139
+ }
135
140
  export interface PageHeaderViewModel extends Omit<PageHeaderDesktop | PageHeaderMobile, 'logoImage' | 'logoImageStyle' | 'isLogoOptional' | 'viewport' | 'isLogoVisible' | 'logoTemplateImage' | 'logoImageHeight' | 'logoImageWidth' | 'headerButton' | 'backgroundStyle'> {
136
141
  logo: LogoViewModel;
137
142
  pages: PageViewModel[];
@@ -0,0 +1,3 @@
1
+ import type { FaqSectionContent } from '@brand-page';
2
+ import type { VisibilityAssessor } from '../models';
3
+ export declare const faqAccordionColorFieldVisibilityAssessor: VisibilityAssessor<FaqSectionContent | undefined>;
@@ -0,0 +1,4 @@
1
+ import { FAQ_DISPLAY_STYLES } from '@brand-page/constants';
2
+ // Icon and divider colours paint the accordion toggle and its item dividers;
3
+ // grid shows neither, so the fields have nothing to colour there.
4
+ export const faqAccordionColorFieldVisibilityAssessor = (content) => content?.displayStyle !== FAQ_DISPLAY_STYLES.grid;
@@ -8,6 +8,7 @@ export * from './media-section-items-field.assessor';
8
8
  export * from './shape-section-items-field.assessor';
9
9
  export * from './shape-size-visibility.assessor';
10
10
  export * from './divider-toggle-field-visibility.assessor';
11
+ export * from './faq-accordion-color-field-visibility.assessor';
11
12
  export * from './color-replacement-visibility.assessor';
12
13
  export * from './color-replacement-profile-visibility.assessor';
13
14
  export * from './color-replacement-icon-visibility.assessor';
@@ -8,6 +8,7 @@ export * from './media-section-items-field.assessor';
8
8
  export * from './shape-section-items-field.assessor';
9
9
  export * from './shape-size-visibility.assessor';
10
10
  export * from './divider-toggle-field-visibility.assessor';
11
+ export * from './faq-accordion-color-field-visibility.assessor';
11
12
  export * from './color-replacement-visibility.assessor';
12
13
  export * from './color-replacement-profile-visibility.assessor';
13
14
  export * from './color-replacement-icon-visibility.assessor';
@@ -552,13 +552,14 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
552
552
  startBrandPageSlugEditMode(): void;
553
553
  triggerLockedContentClickedEvent(contentType: string): Promise<void>;
554
554
  unpublishBrandPage(): Promise<void>;
555
- updateBrandPageSettings({ description, title }: {
556
- description: any;
557
- title: any;
555
+ updateBrandPageSettings(payload: {
556
+ description: string;
557
+ title: string;
558
558
  }): Promise<void>;
559
- updateSensitiveContent({ sensitiveContent }: {
560
- sensitiveContent: any;
559
+ updateSensitiveContent(payload: {
560
+ sensitiveContent: import("@brand-page").SensitiveContent;
561
561
  }): Promise<void>;
562
+ saveSiteBeforeFirstSettingsWrite(): Promise<boolean>;
562
563
  createBrandPageCustomDomain({ domainName }: {
563
564
  domainName: any;
564
565
  }): Promise<false | undefined>;
@@ -950,6 +951,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
950
951
  }): void;
951
952
  updateTextItemTextStyleType({ id, name, value, index, isHydrationWrite, }: import("../../../shared/content-settings/models").UpdateMultipleItemValuesPayload<any>): void;
952
953
  updateTextItemTextStyleTypeWithStyles({ id, name, value, index, isHydrationWrite, }: import("../../../shared/content-settings/models").UpdateMultipleItemValuesPayload<any>): void;
954
+ updateListItemTextStyles({ id, name, value, target, isHydrationWrite, }: Omit<import("../../../shared/content-settings/models").UpdateMultipleItemValuesPayload<any>, "index"> & {
955
+ target: import("../../../shared/content-settings/models").RteItemStyleTarget;
956
+ }): void;
953
957
  _setActiveCategoryTab({ activeCategoryTab, }: {
954
958
  activeCategoryTab: import("@brand-page-maker/models").ItemCategory;
955
959
  }): void;
@@ -413,6 +413,9 @@ declare const _default: import("vue").DefineComponent<{}, {
413
413
  }): void;
414
414
  updateTextItemTextStyleType({ id, name, value, index, isHydrationWrite, }: import("@shared/content-settings/models").UpdateMultipleItemValuesPayload<any>): void;
415
415
  updateTextItemTextStyleTypeWithStyles({ id, name, value, index, isHydrationWrite, }: import("@shared/content-settings/models").UpdateMultipleItemValuesPayload<any>): void;
416
+ updateListItemTextStyles({ id, name, value, target, isHydrationWrite, }: Omit<import("@shared/content-settings/models").UpdateMultipleItemValuesPayload<any>, "index"> & {
417
+ target: import("@shared/content-settings/models").RteItemStyleTarget;
418
+ }): void;
416
419
  _setActiveCategoryTab({ activeCategoryTab, }: {
417
420
  activeCategoryTab: import("../../models").ItemCategory;
418
421
  }): void;
@@ -966,13 +969,14 @@ declare const _default: import("vue").DefineComponent<{}, {
966
969
  startBrandPageSlugEditMode(): void;
967
970
  triggerLockedContentClickedEvent(contentType: string): Promise<void>;
968
971
  unpublishBrandPage(): Promise<void>;
969
- updateBrandPageSettings({ description, title }: {
970
- description: any;
971
- title: any;
972
+ updateBrandPageSettings(payload: {
973
+ description: string;
974
+ title: string;
972
975
  }): Promise<void>;
973
- updateSensitiveContent({ sensitiveContent }: {
974
- sensitiveContent: any;
976
+ updateSensitiveContent(payload: {
977
+ sensitiveContent: import("@brand-page").SensitiveContent;
975
978
  }): Promise<void>;
979
+ saveSiteBeforeFirstSettingsWrite(): Promise<boolean>;
976
980
  createBrandPageCustomDomain({ domainName }: {
977
981
  domainName: any;
978
982
  }): Promise<false | undefined>;
@@ -338,13 +338,14 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
338
338
  startBrandPageSlugEditMode(): void;
339
339
  triggerLockedContentClickedEvent(contentType: string): Promise<void>;
340
340
  unpublishBrandPage(): Promise<void>;
341
- updateBrandPageSettings({ description, title }: {
342
- description: any;
343
- title: any;
341
+ updateBrandPageSettings(payload: {
342
+ description: string;
343
+ title: string;
344
344
  }): Promise<void>;
345
- updateSensitiveContent({ sensitiveContent }: {
346
- sensitiveContent: any;
345
+ updateSensitiveContent(payload: {
346
+ sensitiveContent: import("../../../brand-page").SensitiveContent;
347
347
  }): Promise<void>;
348
+ saveSiteBeforeFirstSettingsWrite(): Promise<boolean>;
348
349
  createBrandPageCustomDomain({ domainName }: {
349
350
  domainName: any;
350
351
  }): Promise<false | undefined>;
@@ -354,13 +354,14 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
354
354
  startBrandPageSlugEditMode(): void;
355
355
  triggerLockedContentClickedEvent(contentType: string): Promise<void>;
356
356
  unpublishBrandPage(): Promise<void>;
357
- updateBrandPageSettings({ description, title }: {
358
- description: any;
359
- title: any;
357
+ updateBrandPageSettings(payload: {
358
+ description: string;
359
+ title: string;
360
360
  }): Promise<void>;
361
- updateSensitiveContent({ sensitiveContent }: {
362
- sensitiveContent: any;
361
+ updateSensitiveContent(payload: {
362
+ sensitiveContent: import("../../../brand-page").SensitiveContent;
363
363
  }): Promise<void>;
364
+ saveSiteBeforeFirstSettingsWrite(): Promise<boolean>;
364
365
  createBrandPageCustomDomain({ domainName }: {
365
366
  domainName: any;
366
367
  }): Promise<false | undefined>;
@@ -542,6 +543,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
542
543
  descriptionError(): any;
543
544
  metaKeywordsError(): any;
544
545
  isPublishing(): any;
546
+ isSaving(): boolean;
545
547
  isUpdateButtonEnabled(): any;
546
548
  isDirty(): boolean;
547
549
  }, {
@@ -89,11 +89,16 @@ export default defineComponent({
89
89
  isPublishing() {
90
90
  return this.brandPageContainerStore.isPublishing;
91
91
  },
92
+ // Scoped to isMaker: the Manage page's save must never gate on the maker's own in-flight state.
93
+ isSaving() {
94
+ return this.isMaker && this.brandPageContainerStore.isSaving;
95
+ },
92
96
  isUpdateButtonEnabled() {
93
97
  return ((this.myPageDescription?.length ?? 0) <=
94
98
  BRANDPAGE_DESCRIPTION_CHARACTER_LIMIT &&
95
99
  (this.myPageTitle?.length ?? 0) <= BRANDPAGE_TITLE_CHARACTER_LIMIT &&
96
100
  !this.brandPageContainerStore.isPublishing &&
101
+ !this.isSaving &&
97
102
  this.isDirty &&
98
103
  this.isInternalDescriptionValid &&
99
104
  this.isInternalTitleValid);
@@ -359,13 +359,14 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
359
359
  startBrandPageSlugEditMode(): void;
360
360
  triggerLockedContentClickedEvent(contentType: string): Promise<void>;
361
361
  unpublishBrandPage(): Promise<void>;
362
- updateBrandPageSettings({ description, title }: {
363
- description: any;
364
- title: any;
362
+ updateBrandPageSettings(payload: {
363
+ description: string;
364
+ title: string;
365
365
  }): Promise<void>;
366
- updateSensitiveContent({ sensitiveContent }: {
367
- sensitiveContent: any;
366
+ updateSensitiveContent(payload: {
367
+ sensitiveContent: import("../../../brand-page").SensitiveContent;
368
368
  }): Promise<void>;
369
+ saveSiteBeforeFirstSettingsWrite(): Promise<boolean>;
369
370
  createBrandPageCustomDomain({ domainName }: {
370
371
  domainName: any;
371
372
  }): Promise<false | undefined>;
@@ -340,13 +340,14 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
340
340
  startBrandPageSlugEditMode(): void;
341
341
  triggerLockedContentClickedEvent(contentType: string): Promise<void>;
342
342
  unpublishBrandPage(): Promise<void>;
343
- updateBrandPageSettings({ description, title }: {
344
- description: any;
345
- title: any;
343
+ updateBrandPageSettings(payload: {
344
+ description: string;
345
+ title: string;
346
346
  }): Promise<void>;
347
- updateSensitiveContent({ sensitiveContent }: {
348
- sensitiveContent: any;
347
+ updateSensitiveContent(payload: {
348
+ sensitiveContent: import("../../../brand-page").SensitiveContent;
349
349
  }): Promise<void>;
350
+ saveSiteBeforeFirstSettingsWrite(): Promise<boolean>;
350
351
  createBrandPageCustomDomain({ domainName }: {
351
352
  domainName: any;
352
353
  }): Promise<false | undefined>;
@@ -408,13 +408,14 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
408
408
  startBrandPageSlugEditMode(): void;
409
409
  triggerLockedContentClickedEvent(contentType: string): Promise<void>;
410
410
  unpublishBrandPage(): Promise<void>;
411
- updateBrandPageSettings({ description, title }: {
412
- description: any;
413
- title: any;
411
+ updateBrandPageSettings(payload: {
412
+ description: string;
413
+ title: string;
414
414
  }): Promise<void>;
415
- updateSensitiveContent({ sensitiveContent }: {
416
- sensitiveContent: any;
415
+ updateSensitiveContent(payload: {
416
+ sensitiveContent: import("@brand-page").SensitiveContent;
417
417
  }): Promise<void>;
418
+ saveSiteBeforeFirstSettingsWrite(): Promise<boolean>;
418
419
  createBrandPageCustomDomain({ domainName }: {
419
420
  domainName: any;
420
421
  }): Promise<false | undefined>;
@@ -335,13 +335,14 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
335
335
  startBrandPageSlugEditMode(): void;
336
336
  triggerLockedContentClickedEvent(contentType: string): Promise<void>;
337
337
  unpublishBrandPage(): Promise<void>;
338
- updateBrandPageSettings({ description, title }: {
339
- description: any;
340
- title: any;
338
+ updateBrandPageSettings(payload: {
339
+ description: string;
340
+ title: string;
341
341
  }): Promise<void>;
342
- updateSensitiveContent({ sensitiveContent }: {
343
- sensitiveContent: any;
342
+ updateSensitiveContent(payload: {
343
+ sensitiveContent: import("../../../brand-page").SensitiveContent;
344
344
  }): Promise<void>;
345
+ saveSiteBeforeFirstSettingsWrite(): Promise<boolean>;
345
346
  createBrandPageCustomDomain({ domainName }: {
346
347
  domainName: any;
347
348
  }): Promise<false | undefined>;
@@ -4,6 +4,8 @@ import type { StyleTextFontFamilyOption } from '@shared/style-settings/models';
4
4
  import type { HyperlinkType, TextStyleOption } 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
+ import { useUiContentSettingsStore } from '@shared/content-settings/store';
8
+ import type { RteItemStyleTarget } from '@shared/content-settings/models';
7
9
  interface UseRichTextEditorReturn {
8
10
  editor: Editor;
9
11
  onFocus: () => void;
@@ -55,6 +57,16 @@ interface EditorOptionType {
55
57
  export declare const useExternalRichTextEditor: () => {
56
58
  externalEditor: Editor;
57
59
  };
60
+ /**
61
+ * Saves a field's style. An editor bound to a list item (`itemStyleTarget`) saves to that
62
+ * item's own style instead of the section's `${name}Style`.
63
+ */
64
+ export declare const updateFieldTextStyles: (store: ReturnType<typeof useUiContentSettingsStore>, itemStyleTarget: RteItemStyleTarget | undefined, payload: {
65
+ id: string;
66
+ name: string;
67
+ value: TextStyleDeclaration;
68
+ isHydrationWrite?: boolean;
69
+ }) => void;
58
70
  export declare const useRichTextEditor: (model: ModelRef<any>, props: {
59
71
  id: string;
60
72
  name: string;
@@ -66,6 +78,7 @@ export declare const useRichTextEditor: (model: ModelRef<any>, props: {
66
78
  textItemIndex: number;
67
79
  item: TextItem;
68
80
  contentType: string;
81
+ itemStyleTarget?: RteItemStyleTarget;
69
82
  }, emit: (event: "focus" | "blur" | "update:modelValue", ...args: any[]) => void, fontSettings: {
70
83
  selectedTextStyle: string;
71
84
  selectedFont: string;