@designcrowd/library.brand-page 6.2.16 → 6.2.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/src/{CreatedOnBrandCrowd-de-de-B_-PPZBi.js → CreatedOnBrandCrowd-de-de-mBnhRDDT.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-en-us-BO1Kj3iA.js → CreatedOnBrandCrowd-en-us-B5G4jAq0.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-es-es-BoDJWRn2.js → CreatedOnBrandCrowd-es-es-lY-bpYf9.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-fr-fr-DUJZmdAy.js → CreatedOnBrandCrowd-fr-ca-BI42Y9Ma.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-fr-ca-DUJZmdAy.js → CreatedOnBrandCrowd-fr-fr-BI42Y9Ma.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-pt-pt-pIlAG13E.js → CreatedOnBrandCrowd-pt-br-DMVo-znd.js} +1 -1
- package/lib/src/{CreatedOnBrandCrowd-pt-br-pIlAG13E.js → CreatedOnBrandCrowd-pt-pt-DMVo-znd.js} +1 -1
- package/lib/src/{CreatedOnDcom-de-de-BNJtDtvi.js → CreatedOnDcom-de-de-DFqX__oC.js} +1 -1
- package/lib/src/{CreatedOnDcom-en-us-uL6WU_1S.js → CreatedOnDcom-en-us-r5Q6gn-F.js} +1 -1
- package/lib/src/{CreatedOnDcom-es-es-DGZQISoF.js → CreatedOnDcom-es-es-DQxdtDnN.js} +1 -1
- package/lib/src/{CreatedOnDcom-fr-ca-CvYWKqNh.js → CreatedOnDcom-fr-ca-Cn4oM5Ez.js} +1 -1
- package/lib/src/{CreatedOnDcom-fr-fr-CpohVgCR.js → CreatedOnDcom-fr-fr-BHMJkd5G.js} +1 -1
- package/lib/src/{CreatedOnDcom-pt-br-CaKS-48n.js → CreatedOnDcom-pt-br-Bv10ZJkf.js} +1 -1
- package/lib/src/{CreatedOnDcom-pt-pt-D4g-iecQ.js → CreatedOnDcom-pt-pt-DYNSS7Sw.js} +1 -1
- package/lib/src/about-CnI37uir.js +13 -0
- package/lib/src/add-page-DZqEIZ92.js +13 -0
- package/lib/src/ai-Dns_W9Yl.js +13 -0
- package/lib/src/align-center-C8q0p_UL.js +14 -0
- package/lib/src/align-justify-YW2zg_2Y.js +14 -0
- package/lib/src/align-left-BguHad0Z.js +14 -0
- package/lib/src/align-right-CFj2kC1H.js +14 -0
- package/lib/src/animate-fgHgaIDQ.js +14 -0
- package/lib/src/annotate-heart-GSDjTZnx.js +14 -0
- package/lib/src/arrow-down-5rpHAcDi.js +13 -0
- package/lib/src/arrow-left-Br85wi65.js +14 -0
- package/lib/src/arrow-right-hjoz-eJq.js +14 -0
- package/lib/src/arrow-top-right-DXcJkzfH.js +13 -0
- package/lib/src/arrow-up-B3d3lRC8.js +14 -0
- package/lib/src/arrow-up-underline-xGZLTmZB.js +14 -0
- package/lib/src/attach-BrJXX9gd.js +13 -0
- package/lib/src/auth-facebook-CrlpBUXn.js +16 -0
- package/lib/src/auth-facebook-white-D2eQHsVC.js +24 -0
- package/lib/src/auth-google-xagNyHUi.js +16 -0
- package/lib/src/award-DCPQbK9Y.js +14 -0
- package/lib/src/background-BJ2BpD_C.js +14 -0
- package/lib/src/badge-u-tAqeFJ.js +15 -0
- package/lib/src/ban-BlvjZvlc.js +10 -0
- package/lib/src/banner-centered-0oVEiMkv.js +28 -0
- package/lib/src/banner-left-d3UFgw86.js +28 -0
- package/lib/src/banner-q9q8zRad.js +14 -0
- package/lib/src/bar-DyldgIxC.js +31 -0
- package/lib/src/bc-mast-BC6Ft93u.js +14 -0
- package/lib/src/bezier-curve-Bu9TMDs-.js +14 -0
- package/lib/src/bezier-curve-outline-Dd_YnimO.js +14 -0
- package/lib/src/bold-Bsa366H0.js +14 -0
- package/lib/src/brand-page/constants/misc.constants.d.ts +7 -0
- package/lib/src/brand-page/constants/misc.constants.js +7 -0
- package/lib/src/brand-page/constants/styles.constants.d.ts +2 -0
- package/lib/src/brand-page/constants/styles.constants.js +2 -0
- package/lib/src/brand-page/models/content.model.d.ts +1 -0
- package/lib/src/brand-page/models/content.model.js +1 -0
- package/lib/src/brand-page/models/index.d.ts +26 -0
- package/lib/src/brand-page/utils/container-text-color.util.js +12 -0
- package/lib/src/brand-page/utils/content-callback-util.d.ts +2 -1
- package/lib/src/brand-page/utils/content-callback-util.js +3 -0
- package/lib/src/brand-page/utils/view-model.util.js +16 -0
- package/lib/src/brand-page/view-models.d.ts +5 -2
- package/lib/src/brand-page-maker/assessors/faq-accordion-color-field-visibility.assessor.d.ts +3 -0
- package/lib/src/brand-page-maker/assessors/faq-accordion-color-field-visibility.assessor.js +4 -0
- package/lib/src/brand-page-maker/assessors/index.d.ts +1 -0
- package/lib/src/brand-page-maker/assessors/index.js +1 -0
- package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.d.ts +1 -0
- package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.d.ts +1 -0
- package/lib/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.js +2 -0
- package/lib/src/brand-page-maker/constants/config-settings-constant.d.ts +2 -1
- package/lib/src/brand-page-maker/constants/config-settings-constant.js +116 -4
- package/lib/src/brand-page-maker/constants/personalisation.constant.d.ts +2 -2
- package/lib/src/brand-page-maker/constants/personalisation.constant.js +3 -2
- package/lib/src/brand-page-maker/convertors/faq-display-style.convertor.d.ts +3 -0
- package/lib/src/brand-page-maker/convertors/faq-display-style.convertor.js +49 -0
- package/lib/src/brand-page-maker/models/content-settings-configs.d.ts +1 -0
- package/lib/src/brand-page-maker/models/content-settings-configs.js +1 -0
- package/lib/src/brand-page-maker/models/content-settings.d.ts +2 -1
- package/lib/src/brand-page-maker/models/content-settings.js +46 -1
- package/lib/src/brand-page-maker/utils/apply-color-strategy.js +41 -17
- package/lib/src/brand-page-maker/utils/rte-authoring.util.js +9 -1
- package/lib/src/brand-page-maker/validators/field.validator.js +2 -0
- package/lib/src/briefcase-DWCD6pl-.js +14 -0
- package/lib/src/browser-CNvqg9Kx.js +14 -0
- package/lib/src/brush-DA2t0g6e.js +13 -0
- package/lib/src/building-BRO0N47t.js +10 -0
- package/lib/src/bulb-D30qpqcp.js +14 -0
- package/lib/src/{bundled-translations-yGrvPE5i.js → bundled-translations-LMpZwTQ3.js} +15 -15
- package/lib/src/{bundled-translations.de-DE-L4Znf8Hs.js → bundled-translations.de-DE-Dz0bbwo3.js} +35 -35
- package/lib/src/{bundled-translations.es-ES-D6iticrK.js → bundled-translations.es-ES-DxFSGNeu.js} +21 -21
- package/lib/src/{bundled-translations.fr-CA-BgAVE-9k.js → bundled-translations.fr-CA-CArr9KG-.js} +33 -33
- package/lib/src/{bundled-translations.fr-FR-B8GbyqxQ.js → bundled-translations.fr-FR-Ci7-8b_w.js} +9 -9
- package/lib/src/{bundled-translations.pt-BR-DjPU3Db7.js → bundled-translations.pt-BR-BmPWrJ7g.js} +31 -31
- package/lib/src/{bundled-translations.pt-PT-BaepaDpr.js → bundled-translations.pt-PT-DS8g_MFC.js} +31 -31
- package/lib/src/bundles/bundled-translations.de-DE.json +9 -1
- package/lib/src/bundles/bundled-translations.es-ES.json +9 -1
- package/lib/src/bundles/bundled-translations.fr-CA.json +9 -1
- package/lib/src/bundles/bundled-translations.fr-FR.json +9 -1
- package/lib/src/bundles/bundled-translations.json +9 -1
- package/lib/src/bundles/bundled-translations.pt-BR.json +9 -1
- package/lib/src/bundles/bundled-translations.pt-PT.json +9 -1
- package/lib/src/business-CkH9A-wX.js +13 -0
- package/lib/src/business-card-filled-DZQTpyPW.js +10 -0
- package/lib/src/button-arrow-BJ_qLnj6.js +19 -0
- package/lib/src/button-arrow-left-BHGR969U.js +19 -0
- package/lib/src/button-arrow-right-DILRPO8A.js +19 -0
- package/lib/src/button-brushstroke-hTDM9O94.js +21 -0
- package/lib/src/button-brushstroke-left-B6nKq2IC.js +14 -0
- package/lib/src/button-brushstroke-right-KaJVSc96.js +14 -0
- package/lib/src/button-dashed-oval-CGfIefIv.js +25 -0
- package/lib/src/button-dashed-rectangle-qA-4J2dc.js +24 -0
- package/lib/src/button-dashed-rounded-8zbmM63r.js +25 -0
- package/lib/src/button-doubleline-oval-DIe0t-WR.js +23 -0
- package/lib/src/button-doubleline-rectangle-vzBwnBQX.js +29 -0
- package/lib/src/button-doubleline-rounded-BIlEcbW4.js +23 -0
- package/lib/src/button-fi42to0Q.js +15 -0
- package/lib/src/button-justified-rhTu-8br.js +33 -0
- package/lib/src/button-paper-BUCQjsgW.js +16 -0
- package/lib/src/button-paper-bottom-Cld4xVl7.js +12 -0
- package/lib/src/button-paper-top-BQPrE3n5.js +12 -0
- package/lib/src/button-softshadow-oval-B4oALkUA.js +16 -0
- package/lib/src/button-softshadow-rectangle-BJgqwLFj.js +16 -0
- package/lib/src/button-softshadow-rounded-B68qal6q.js +16 -0
- package/lib/src/calculator-BI2uBJyQ.js +10 -0
- package/lib/src/calendar-AM3XaEXf.js +10 -0
- package/lib/src/callout-error-BPQ8t825.js +13 -0
- package/lib/src/callout-info-B5h6Q8_3.js +13 -0
- package/lib/src/callout-success-Cjit0tKH.js +13 -0
- package/lib/src/callout-warning-CJ7narSy.js +13 -0
- package/lib/src/cap-B52seKty.js +27 -0
- package/lib/src/card-D8jURN1j.js +19 -0
- package/lib/src/card-vertical-NG94U01Q.js +14 -0
- package/lib/src/cart-empty-bWNAg1CI.js +16 -0
- package/lib/src/chart-CR8rzy-z.js +12 -0
- package/lib/src/chart-bar-B-bzTwmn.js +16 -0
- package/lib/src/chart-column-qcK4xgPY.js +16 -0
- package/lib/src/chart-line-CiawAlyw.js +14 -0
- package/lib/src/chart-pie-D5sho8Lh.js +14 -0
- package/lib/src/check-BoUKe8Nd.js +13 -0
- package/lib/src/check-circle-light-C1sJemq2.js +14 -0
- package/lib/src/check-rounded-COQkWiNr.js +14 -0
- package/lib/src/check-thin-CRTPGQlt.js +14 -0
- package/lib/src/chevron-down-DC3fDa4H.js +14 -0
- package/lib/src/chevron-left-f1U0paMV.js +14 -0
- package/lib/src/chevron-right-DUklJm44.js +13 -0
- package/lib/src/chevron-right-wide-Dkl58AKv.js +10 -0
- package/lib/src/chevron-up-Dnq2_9gl.js +14 -0
- package/lib/src/clipboard-check-ZAGuzfFh.js +14 -0
- package/lib/src/clock-Bq0QC70L.js +10 -0
- package/lib/src/close-Ca7hFdTE.js +13 -0
- package/lib/src/coins-sparkle-Df6v6y5Y.js +21 -0
- package/lib/src/column-1-D1JJ6E1G.js +23 -0
- package/lib/src/column-2-C6-LowDg.js +29 -0
- package/lib/src/column-3-v9pOMIEU.js +35 -0
- package/lib/src/column-4-8NJDpLt9.js +41 -0
- package/lib/src/community-CEKKhXZh.js +10 -0
- package/lib/src/contact-message-D4bE1gVF.js +13 -0
- package/lib/src/content-CdplIZ1H.js +14 -0
- package/lib/src/copy-Dxz4YY2s.js +13 -0
- package/lib/src/crop-DlK9cZrn.js +13 -0
- package/lib/src/crown-DE7faDOy.js +13 -0
- package/lib/src/crown-alt-B6XeXAnE.js +10 -0
- package/lib/src/css/library.brand-page-brandCrowd.min.css +272 -71
- package/lib/src/css/library.brand-page-brandPage.min.css +273 -72
- package/lib/src/css/library.brand-page-designCom.min.css +272 -71
- package/lib/src/css/library.brand-page-preview.min.css +272 -71
- package/lib/src/custom-landscape-Ca5RqK9Q.js +10 -0
- package/lib/src/delete-C9NrBiRG.js +13 -0
- package/lib/src/designs-B6Bh2RpR.js +13 -0
- package/lib/src/desktop-CHHMtnvY.js +14 -0
- package/lib/src/desktop-hamburger-display-style-1-BmNvEx7f.js +31 -0
- package/lib/src/desktop-hamburger-display-style-2-HwKC3T1-.js +31 -0
- package/lib/src/desktop-hamburger-display-style-with-button-1-B7MAosA2.js +16 -0
- package/lib/src/desktop-hamburger-display-style-with-button-2-C12XZ7Fu.js +16 -0
- package/lib/src/desktop-tab-display-style-1-B_hlYXm6.js +31 -0
- package/lib/src/desktop-tab-display-style-2-ChDda6S4.js +31 -0
- package/lib/src/desktop-tab-display-style-3-u60OeCRQ.js +27 -0
- package/lib/src/desktop-tab-display-style-4-Bz4-CXm2.js +27 -0
- package/lib/src/desktop-tab-display-style-5-B0KLuZOi.js +31 -0
- package/lib/src/desktop-tab-display-style-6-Cg_kS-1c.js +31 -0
- package/lib/src/desktop-tab-display-style-7-D9ka6kTG.js +35 -0
- package/lib/src/desktop-tab-display-style-8-Dwpw4vpU.js +31 -0
- package/lib/src/desktop-tab-display-style-with-button-1-D49ggWOe.js +35 -0
- package/lib/src/desktop-tab-display-style-with-button-2-DRolvRRN.js +35 -0
- package/lib/src/desktop-tab-display-style-with-button-3-BMsP0TCG.js +35 -0
- package/lib/src/desktop-tab-display-style-with-button-4-BvEiHQoJ.js +31 -0
- package/lib/src/desktop-tab-display-style-with-button-5-C4pkR3HA.js +16 -0
- package/lib/src/desktop-tab-display-style-with-button-6-CBpwzTw0.js +16 -0
- package/lib/src/diamond-SXVjl4S0.js +14 -0
- package/lib/src/digital-business-card-filled-CBaI7EoL.js +33 -0
- package/lib/src/display-style-1-Cy58_xSc.js +39 -0
- package/lib/src/display-style-1-S76foJNv.js +31 -0
- package/lib/src/display-style-1-h_dFTtxI.js +16 -0
- package/lib/src/display-style-2-BRmlzz5s.js +16 -0
- package/lib/src/display-style-2-CKWpa-Dt.js +31 -0
- package/lib/src/display-style-2-DeGzooDt.js +27 -0
- package/lib/src/display-style-3-msgPBp4B.js +31 -0
- package/lib/src/display-style-4-yIhlKV5Z.js +31 -0
- package/lib/src/display-style-about-1-CHpJ5qpI.js +31 -0
- package/lib/src/display-style-about-2-CMtfl0ol.js +31 -0
- package/lib/src/display-style-about-3-kBwuQNql.js +31 -0
- package/lib/src/display-style-about-4-GcOPZOtv.js +16 -0
- package/lib/src/display-style-about-5-DSpvTp2Q.js +15 -0
- package/lib/src/display-style-about-6-kP_au_kx.js +15 -0
- package/lib/src/display-style-banner-1-DPzGEUpm.js +31 -0
- package/lib/src/display-style-banner-10-C6NcDH47.js +31 -0
- package/lib/src/display-style-banner-11-Bub_JNGG.js +31 -0
- package/lib/src/display-style-banner-12-DbbwXA8b.js +31 -0
- package/lib/src/display-style-banner-13-BlwxH9BR.js +32 -0
- package/lib/src/display-style-banner-14-brWMH6d6.js +33 -0
- package/lib/src/display-style-banner-15--zR6siv-.js +33 -0
- package/lib/src/display-style-banner-2-zrjDU9b9.js +31 -0
- package/lib/src/display-style-banner-3-CHh7gKhT.js +31 -0
- package/lib/src/display-style-banner-4-zivr-xd4.js +31 -0
- package/lib/src/display-style-banner-5-DD1GFPlm.js +31 -0
- package/lib/src/display-style-banner-6-BbeRW0Ps.js +16 -0
- package/lib/src/display-style-banner-7-OAfk00GO.js +16 -0
- package/lib/src/display-style-banner-8-BAwIbke-.js +31 -0
- package/lib/src/display-style-banner-9-8Jj2JpbS.js +31 -0
- package/lib/src/display-style-contact-1-B3cGIzKo.js +16 -0
- package/lib/src/display-style-contact-2-D75wCQtZ.js +16 -0
- package/lib/src/display-style-contact-4-DsCtgjPN.js +16 -0
- package/lib/src/display-style-contact-5-CRKOvT9F.js +16 -0
- package/lib/src/display-style-contact-6-BYasGUeL.js +16 -0
- package/lib/src/display-style-faq-1-Cw8I6iVf.js +16 -0
- package/lib/src/display-style-faq-2-DR_YSONz.js +16 -0
- package/lib/src/display-style-faq-3-s6tdZ9BV.js +16 -0
- package/lib/src/display-style-images-1-zi9VlSTl.js +16 -0
- package/lib/src/display-style-images-2-8JUqIipU.js +16 -0
- package/lib/src/display-style-images-3-Dw2t-G4s.js +16 -0
- package/lib/src/display-style-images-4-L1Y9NPID.js +27 -0
- package/lib/src/display-style-images-5-BWBcsp1s.js +16 -0
- package/lib/src/display-style-images-6-BysJhQVW.js +16 -0
- package/lib/src/divider-DUqeexLY.js +14 -0
- package/lib/src/divider-thick-DOpnsgpC.js +23 -0
- package/lib/src/divider-thin-0jk0MJ9W.js +23 -0
- package/lib/src/donate-D9ykv0zR.js +13 -0
- package/lib/src/download-g0I3gsrl.js +14 -0
- package/lib/src/duplicate-Cu3SuEYo.js +13 -0
- package/lib/src/edit-4q5f2nYo.js +13 -0
- package/lib/src/edit-line-pJ3kAwQt.js +16 -0
- package/lib/src/ellipsis-C9MDg_6Q.js +13 -0
- package/lib/src/email-BO1uNcOp.js +10 -0
- package/lib/src/email-symbol-CQrZdzKo.js +10 -0
- package/lib/src/envelope-email-Cj9pNGlg.js +16 -0
- package/lib/src/eraser-9w1-rJ4P.js +10 -0
- package/lib/src/error-BBiB5Tlc.js +13 -0
- package/lib/src/etsy-Jo67P3Gl.js +10 -0
- package/lib/src/external-link-CKFq3VRK.js +10 -0
- package/lib/src/eye-crossed-6zqb50Gv.js +14 -0
- package/lib/src/eye-open-19ZZxXd3.js +24 -0
- package/lib/src/facebook-uRyq0o0i.js +10 -0
- package/lib/src/favicon-C4D7FdoA.js +14 -0
- package/lib/src/fees-C7kQOtOf.js +13 -0
- package/lib/src/file-box-DL8WZYoR.js +13 -0
- package/lib/src/file-empty-D3sH29HM.js +14 -0
- package/lib/src/file-zDnCpksX.js +14 -0
- package/lib/src/filter-C52Ks-M6.js +14 -0
- package/lib/src/filter-CQovjzx2.js +13 -0
- package/lib/src/filters-DcTKclYY.js +13 -0
- package/lib/src/flag-Dnjqvqq8.js +16 -0
- package/lib/src/flip-horizontal-BIZr1vpq.js +14 -0
- package/lib/src/flip-vertical-DEb0itBF.js +14 -0
- package/lib/src/flyer-Bys-HIC3.js +14 -0
- package/lib/src/folder-CL5KVqdq.js +13 -0
- package/lib/src/font-sYr58s_H.js +14 -0
- package/lib/src/footer-centered-BqMBNIGz.js +35 -0
- package/lib/src/footer-left-Ccp2ULen.js +35 -0
- package/lib/src/form-D7N4tMOT.js +10 -0
- package/lib/src/form-message-DbO0C-gP.js +13 -0
- package/lib/src/fullscreen-BmIyHNIW.js +10 -0
- package/lib/src/fullscreen-exit-1gcHbNB4.js +10 -0
- package/lib/src/gift-certificate-pzLDGZhy.js +10 -0
- package/lib/src/globe-BDXo0cOb.js +13 -0
- package/lib/src/globe-BL8reMFV.js +10 -0
- package/lib/src/globe-C20Cq6jl.js +13 -0
- package/lib/src/group-B-0N6UzE.js +13 -0
- package/lib/src/hamburger-1-CKItj3vm.js +17 -0
- package/lib/src/hamburger-2-Dpur2d56.js +19 -0
- package/lib/src/hamburger-3-BI2RkTRX.js +19 -0
- package/lib/src/hamburger-4-B1Jz6kZC.js +15 -0
- package/lib/src/hamburger-BUFlrUAV.js +31 -0
- package/lib/src/hamburger-DIu8wreU.js +19 -0
- package/lib/src/hamburger-display-style-no-logo-1-LGyAZh2r.js +27 -0
- package/lib/src/hamburger-display-style-no-logo-2-CFW3b5ep.js +27 -0
- package/lib/src/hamburger-display-style-no-logo-3-D8BdxhKz.js +27 -0
- package/lib/src/headphones-DdDMjtWq.js +14 -0
- package/lib/src/heart-DhiUsjT5.js +14 -0
- package/lib/src/history-Ds5StoNa.js +41 -0
- package/lib/src/home-D5CM-18a.js +13 -0
- package/lib/src/home-DnJDV34r.js +14 -0
- package/lib/src/home-outline-DHwkwQ8H.js +13 -0
- package/lib/src/icon-style-circle-bg-eueVCqP6.js +29 -0
- package/lib/src/icon-style-no-bg-Bm0n136m.js +23 -0
- package/lib/src/icon-style-square-bg-PjimqOKL.js +29 -0
- package/lib/src/image-B6CdzFNb.js +14 -0
- package/lib/src/image-aTbRfIye.js +14 -0
- package/lib/src/image-gallery-carousel-CeDdnPD1.js +22 -0
- package/lib/src/image-gallery-grid-C1GMg9Gl.js +32 -0
- package/lib/src/image-gallery-masonry-BxhDtpzE.js +26 -0
- package/lib/src/images-CCpkSySQ.js +14 -0
- package/lib/src/images-gallery-BvYPXZPT.js +10 -0
- package/lib/src/index.mjs +164 -163
- package/lib/src/info-ChfLUrQt.js +21 -0
- package/lib/src/infographics-Dewgf4iV.js +10 -0
- package/lib/src/instagram-wsTJWPeU.js +14 -0
- package/lib/src/invitation-CaYB86pH.js +10 -0
- package/lib/src/invoice-vtBL5SP2.js +10 -0
- package/lib/src/italic-BdUC-A7M.js +14 -0
- package/lib/src/jobs-B370Mmg9.js +13 -0
- package/lib/src/layer-Ds-Buemp.js +13 -0
- package/lib/src/layer-bring-front-DnB9LWFk.js +13 -0
- package/lib/src/layer-send-back-CGrxFmn6.js +13 -0
- package/lib/src/layout-BHK1BaA9.js +10 -0
- package/lib/src/layout-icon-bottom-normal-text-center-normal-B9FqgR-v.js +35 -0
- package/lib/src/layout-icon-bottom-normal-text-center-small-D3w4JbDB.js +35 -0
- package/lib/src/layout-icon-bottom-small-text-center-normal-D6MWRGOG.js +35 -0
- package/lib/src/layout-icon-center-normal-curved-text-bottom-DV1RSxdT.js +33 -0
- package/lib/src/layout-icon-center-normal-curved-text-circle-prEv3x-E.js +26 -0
- package/lib/src/layout-icon-center-normal-curved-text-top-C5o-VQll.js +33 -0
- package/lib/src/layout-icon-left-normal-text-center-normal-B7F9B7wu.js +35 -0
- package/lib/src/layout-icon-left-normal-text-justify-normal-CWSe9jHg.js +35 -0
- package/lib/src/layout-icon-left-normal-text-left-normal-HcOn2p71.js +35 -0
- package/lib/src/layout-icon-left-small-text-left-normal-_xbmTGfP.js +35 -0
- package/lib/src/layout-icon-right-normal-text-center-normal-Cei718Uj.js +35 -0
- package/lib/src/layout-icon-right-normal-text-justify-normal-DrXgBU_t.js +35 -0
- package/lib/src/layout-icon-right-normal-text-right-normal-CJds9J9_.js +35 -0
- package/lib/src/layout-icon-right-small-text-right-normal-B0-ivJke.js +35 -0
- package/lib/src/layout-icon-top-normal-text-center-normal-Dmq-Y0u7.js +35 -0
- package/lib/src/layout-icon-top-normal-text-center-small-BtBe5fGK.js +35 -0
- package/lib/src/layout-icon-top-normal-text-justify-normal-DYoDdVC-.js +35 -0
- package/lib/src/layout-icon-top-small-text-center-normal-CTXOiabZ.js +35 -0
- package/lib/src/letterhead-filled-DBu50uYq.js +10 -0
- package/lib/src/{lib-DwDFHSzX.js → lib-vHQ3PSie.js} +34702 -39973
- package/lib/src/lightning-5ADYjnFL.js +14 -0
- package/lib/src/link-C3HnGy4o.js +13 -0
- package/lib/src/link-C_Lh5Jan.js +14 -0
- package/lib/src/link-in-bio-filled-B8RuhBme.js +33 -0
- package/lib/src/linkedin-Dlg5fAaU.js +14 -0
- package/lib/src/list-bullet-DmBZCkM7.js +18 -0
- package/lib/src/list-numbered-BGrezA_n.js +26 -0
- package/lib/src/location-yh3Xfuga.js +13 -0
- package/lib/src/lock-Cu_dcYhc.js +13 -0
- package/lib/src/log-out-C5hfDL2n.js +14 -0
- package/lib/src/logo-CL5m5BWX.js +10 -0
- package/lib/src/logo-EKc7Pjwr.js +14 -0
- package/lib/src/mac-command-CpxA6pTu.js +15 -0
- package/lib/src/map-Dui__0Ec.js +13 -0
- package/lib/src/media-BBoSZjaF.js +10 -0
- package/lib/src/menu-CbxHZmO4.js +10 -0
- package/lib/src/message-DPMrMEK5.js +13 -0
- package/lib/src/metadata-builder/parsers/section-tool-arguments.d.ts +1 -1
- package/lib/src/microphone-Ulm-DZ9e.js +10 -0
- package/lib/src/microphone-bold---tnFcZw.js +14 -0
- package/lib/src/minus-RKoA-v7m.js +13 -0
- package/lib/src/minus-circle-light-DVmQ8wb4.js +14 -0
- package/lib/src/mobile-Cuh5LHRF.js +10 -0
- package/lib/src/mobile-hamburger-display-style-1-BOllFoYV.js +31 -0
- package/lib/src/mobile-hamburger-display-style-2-Bl_kYi2k.js +31 -0
- package/lib/src/mobile-hamburger-display-style-3-CofdK6hQ.js +31 -0
- package/lib/src/mobile-hamburger-display-style-4-BynvHkLX.js +31 -0
- package/lib/src/mobile-tab-display-style-1-BQhQczsO.js +31 -0
- package/lib/src/mobile-tab-display-style-2-CpvC1Kdh.js +31 -0
- package/lib/src/mobile-tab-display-style-with-button-1-jtm_oP8o.js +16 -0
- package/lib/src/mobile-tab-display-style-with-button-2-jkXhV45J.js +16 -0
- package/lib/src/mug-CZlWo8xS.js +35 -0
- package/lib/src/opacity-CtF3qrBX.js +13 -0
- package/lib/src/other-Rc3vvDCz.js +29 -0
- package/lib/src/page-blank-R4s0mnRQ.js +13 -0
- package/lib/src/page-buttons-CmXeHP0R.js +18 -0
- package/lib/src/page-hamburger-B7Lk-3ZF.js +37 -0
- package/lib/src/page-tabs-MjO1JBWs.js +39 -0
- package/lib/src/pages-CJlytYHc.js +13 -0
- package/lib/src/paint-brush-FcK9fjBb.js +10 -0
- package/lib/src/palette-4SUWhjbq.js +14 -0
- package/lib/src/palette-outline-C7r-M93I.js +14 -0
- package/lib/src/pause-91-IaU2Y.js +10 -0
- package/lib/src/pause-Ctxbpymr.js +10 -0
- package/lib/src/payment-BkD8iKZW.js +21 -0
- package/lib/src/payments-featured-Bbh08Qjq.js +27 -0
- package/lib/src/payments-textonly-BTmHmYL0.js +40 -0
- package/lib/src/payments-thumbnail-BPTVIUV-.js +29 -0
- package/lib/src/pen-BwBOCbPm.js +14 -0
- package/lib/src/pen-outline-CvdifQK5.js +14 -0
- package/lib/src/pen-sparkle-Box2OjVT.js +26 -0
- package/lib/src/pen-tool-CdofztVF.js +14 -0
- package/lib/src/phone-Bzf9u7XL.js +13 -0
- package/lib/src/phone-CcHHxJyq.js +10 -0
- package/lib/src/pinterest-LH9q082w.js +10 -0
- package/lib/src/play-fq91XbWs.js +10 -0
- package/lib/src/plus-C3-SVt99.js +10 -0
- package/lib/src/plus-circle-haGZutJ1.js +14 -0
- package/lib/src/plus-circle-light-DXgDGKPn.js +15 -0
- package/lib/src/plus-light-BxlUuR3I.js +14 -0
- package/lib/src/poll-b7sgInUR.js +10 -0
- package/lib/src/portfolio-BY_vB67Z.js +13 -0
- package/lib/src/postcard-DMhujcts.js +10 -0
- package/lib/src/poster-D5jYbk1G.js +14 -0
- package/lib/src/premium-content-CTnweAK0.js +21 -0
- package/lib/src/preview-BHD4xFsj.js +13 -0
- package/lib/src/printing-CfJbnRgn.js +13 -0
- package/lib/src/processing-DqEt82cw.js +10 -0
- package/lib/src/profile-CgLR9SYs.js +10 -0
- package/lib/src/qrcode-BRFeSDHI.js +10 -0
- package/lib/src/question-DVh4waO2.js +21 -0
- package/lib/src/question-alt-hJ1o_Q_V.js +29 -0
- package/lib/src/question-circle-filled-CFs8UyHM.js +14 -0
- package/lib/src/quote-de6tAUMn.js +12 -0
- package/lib/src/ratio-1-1-zHjUStOP.js +15 -0
- package/lib/src/ratio-16-9-BFb8CamZ.js +15 -0
- package/lib/src/ratio-2-3-C1bykLds.js +15 -0
- package/lib/src/ratio-3-2-DTvfuwth.js +15 -0
- package/lib/src/ratio-3-4-0hG9lP6D.js +15 -0
- package/lib/src/ratio-4-3-hAz54s--.js +15 -0
- package/lib/src/ratio-9-16-BbUCV5m5.js +15 -0
- package/lib/src/ratio-circle-D6demlJH.js +15 -0
- package/lib/src/ratio-original-BvkJVUky.js +23 -0
- package/lib/src/redo--Ifx7f2f.js +13 -0
- package/lib/src/refresh-DjHReUDY.js +13 -0
- package/lib/src/reload-DT8EwyWF.js +13 -0
- package/lib/src/reorderable-DYPqA4mP.js +10 -0
- package/lib/src/request-payment-1uQZiFVG.js +13 -0
- package/lib/src/reset-BJ4wGF4t.js +13 -0
- package/lib/src/resize-Bkz3CVYj.js +25 -0
- package/lib/src/roller-brush-BKDdH5q1.js +10 -0
- package/lib/src/save-CyvtIUOH.js +13 -0
- package/lib/src/search-Bn0oVn01.js +14 -0
- package/lib/src/secure-BUbQFh_w.js +14 -0
- package/lib/src/select-all-Bm7KzAg1.js +24 -0
- package/lib/src/send-DxZKgW4U.js +23 -0
- package/lib/src/services-BlIg0gbZ.js +12 -0
- package/lib/src/settings-Bxc3dhgh.js +15 -0
- package/lib/src/shape-BUIXdfkB.js +10 -0
- package/lib/src/share-Ck2PdAbb.js +17 -0
- package/lib/src/shared/color-strategies/color-strategies.js +4 -0
- package/lib/src/shared/color-strategies/rte-field-pairs.d.ts +10 -0
- package/lib/src/shared/color-strategies/rte-field-pairs.js +22 -0
- package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.d.ts +1 -0
- package/lib/src/shared/content-settings/components/content-settings/ReplaceImageSettingsForContent.mixin.d.ts +2 -1
- package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.d.ts +1 -0
- package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.d.ts +1 -0
- package/lib/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.mixin.d.ts +1 -0
- package/lib/src/shared/content-settings/components/items-field/ItemsField.mixin.d.ts +1 -0
- package/lib/src/shared/content-settings/components/items-field/ItemsField.mixin.js +3 -0
- package/lib/src/shared/content-settings/components/text-style-field/TextStyleField.mixin.d.ts +2 -0
- package/lib/src/shared/content-settings/store/content-settings-store.d.ts +2 -0
- package/lib/src/shared/content-settings/store/content-settings-store.js +23 -3
- package/lib/src/shared/page-settings/components/page-settings/PageSettings.mixin.d.ts +1 -0
- package/lib/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.d.ts +1 -0
- package/lib/src/shield-tick-BqesXT6U.js +13 -0
- package/lib/src/shop-rT0JkEba.js +13 -0
- package/lib/src/size-auto-CWZU3SNg.js +10 -0
- package/lib/src/size-landscape-DN0ZUbG1.js +10 -0
- package/lib/src/size-portrait-BCDQOCQP.js +10 -0
- package/lib/src/size-square-Dk0ywIEw.js +10 -0
- package/lib/src/sms-DgS07IDl.js +10 -0
- package/lib/src/snapchat-B9mEk1WD.js +10 -0
- package/lib/src/social-facebook-BYeLY-QL.js +13 -0
- package/lib/src/social-facebook-DHTz-GCi.js +10 -0
- package/lib/src/social-facebook-color-Cp9va_WX.js +25 -0
- package/lib/src/social-google-BihuqlwB.js +10 -0
- package/lib/src/social-google-CMG-PaBh.js +13 -0
- package/lib/src/social-instagram-CYuFeEC8.js +13 -0
- package/lib/src/social-instagram-color-BEuzfTt4.js +62 -0
- package/lib/src/social-linkedin-color-DnLJtP_K.js +21 -0
- package/lib/src/social-share-BBuGIZLF.js +12 -0
- package/lib/src/social-twitter-DQlhcmO_.js +13 -0
- package/lib/src/social-twitter-color-D6glrrz_.js +25 -0
- package/lib/src/social-youtube-ehBXYyXY.js +13 -0
- package/lib/src/sort-dsDk3cJy.js +10 -0
- package/lib/src/soundcloud-FXItloDZ.js +14 -0
- package/lib/src/spacing-CLXSY0a3.js +27 -0
- package/lib/src/sparkle-square-B8_DUO64.js +31 -0
- package/lib/src/squares-Bh501gE7.js +14 -0
- package/lib/src/star-filled-DCJ1kr1k.js +13 -0
- package/lib/src/star-hollow-1P0edhe4.js +13 -0
- package/lib/src/sticker-DO_FPV66.js +35 -0
- package/lib/src/stop-CHfUQAYZ.js +10 -0
- package/lib/src/strikethrough-Q-Cjrlrq.js +14 -0
- package/lib/src/styles-BNMPa-i9.js +10 -0
- package/lib/src/submit-BuhaLla8.js +10 -0
- package/lib/src/t-shirt-CpqpjALA.js +39 -0
- package/lib/src/tab-display-style-no-logo-1-V5sgWAS1.js +27 -0
- package/lib/src/tab-display-style-no-logo-2-DjOBOyRA.js +27 -0
- package/lib/src/tab-display-style-no-logo-3-CsQU2RQG.js +27 -0
- package/lib/src/templates-BhYZOvN1.js +14 -0
- package/lib/src/testimonial-big-image-BJgG59uO.js +36 -0
- package/lib/src/testimonial-centered-SVJu3v9h.js +32 -0
- package/lib/src/testimonial-columns-Cqe3BnaX.js +40 -0
- package/lib/src/text-B3U_w6jH.js +14 -0
- package/lib/src/text-CmNuVy9M.js +14 -0
- package/lib/src/text-background-color-Z9NZCfeS.js +21 -0
- package/lib/src/text-color-DIt0vljx.js +23 -0
- package/lib/src/text-image-C1i9QEkX.js +44 -0
- package/lib/src/text-image-center-EmnA0ghU.js +28 -0
- package/lib/src/text-image-justified-F2-n0Zlg.js +35 -0
- package/lib/src/text-image-left-BZ3_S9OW.js +29 -0
- package/lib/src/text-image-only-Bo1hDo-_.js +21 -0
- package/lib/src/text-image-right-Y1GTFFDk.js +29 -0
- package/lib/src/thankyou-card-4IR09ojS.js +10 -0
- package/lib/src/thumbs-up-Ctl0ZuDo.js +10 -0
- package/lib/src/tiktok-CyGJ9TpC.js +10 -0
- package/lib/src/time-BoZe-_gU.js +13 -0
- package/lib/src/tools-PGAS66bO.js +10 -0
- package/lib/src/tooltip-bottom-Du7utXai.js +12 -0
- package/lib/src/tooltip-left-DhcpWIXG.js +12 -0
- package/lib/src/tooltip-right-C3YM_L_e.js +12 -0
- package/lib/src/tooltip-top-DEVGBKWp.js +12 -0
- package/lib/src/transition-CFYiHwQg.js +27 -0
- package/lib/src/tumblr-DuJo2Ku6.js +10 -0
- package/lib/src/twitch-BIWCnc9w.js +14 -0
- package/lib/src/twitter-CB4llYeJ.js +10 -0
- package/lib/src/underline-D8DpHTwA.js +14 -0
- package/lib/src/undo-CpE_xDEa.js +13 -0
- package/lib/src/upgrade-alt-DAl1NqA6.js +14 -0
- package/lib/src/upgrade-oh0lvPP4.js +16 -0
- package/lib/src/upgrade-to-add-page-Dj5IeWUB.js +57 -0
- package/lib/src/upgrade-to-contact-form-ByBYHR1w.js +95 -0
- package/lib/src/upgrade-to-google-ad-CtHChyB-.js +129 -0
- package/lib/src/upgrade-to-maps-w3LVao8K.js +56 -0
- package/lib/src/upgrade-to-publish-DQ_Cf7OY.js +119 -0
- package/lib/src/upgrade-to-remove-watermark-BUeT0ret.js +108 -0
- package/lib/src/upgrade-to-videos-BtssuzXy.js +54 -0
- package/lib/src/upload-DBmX5U1T.js +10 -0
- package/lib/src/upload-arrow-BUDuxXPO.js +10 -0
- package/lib/src/uppercase-Df-wYy_q.js +24 -0
- package/lib/src/user-accounts-B5KphoEO.js +10 -0
- package/lib/src/user-headset-D4Br9KDU.js +57 -0
- package/lib/src/users-2-DQdjQahr.js +15 -0
- package/lib/src/users-T7iBUemv.js +14 -0
- package/lib/src/video-DsoO5Y5b.js +10 -0
- package/lib/src/volume-muted-DhMSv_dG.js +10 -0
- package/lib/src/volume-npTikHfN.js +10 -0
- package/lib/src/watchlist-filled-CbBhwRcY.js +24 -0
- package/lib/src/watchlist-hollow-B395lGfZ.js +13 -0
- package/lib/src/watchlist-hollow-alt-Djk6RIK9.js +24 -0
- package/lib/src/website-BNoGr6cM.js +13 -0
- package/lib/src/website-filled-D0MFpZU7.js +10 -0
- package/lib/src/whatsapp-DkpDY9MO.js +14 -0
- package/lib/src/wholesale-Cach3yo9.js +13 -0
- package/lib/src/wrap-text-Iqd-3_xm.js +15 -0
- package/lib/src/youtube-D8mXT3Ho.js +10 -0
- package/lib/src/zoom-C50O2YhZ.js +16 -0
- package/lib/src/zoom-in-lmqi7IM_.js +10 -0
- package/lib/src/zoom-out-CRkgtd46.js +10 -0
- package/lib/src/zoom-w74FIjVh.js +10 -0
- package/package.json +2 -2
- package/src/brand-page/components/faq-section/FaqSection.test.ts +196 -0
- package/src/brand-page/components/faq-section/FaqSection.vue +315 -0
- package/src/brand-page/components/page/PageComponent.vue +2 -0
- package/src/brand-page/constants/misc.constants.ts +9 -0
- package/src/brand-page/constants/styles.constants.ts +2 -0
- package/src/brand-page/models/content.model.ts +1 -0
- package/src/brand-page/models/index.ts +29 -0
- package/src/brand-page/utils/container-text-color.util.test.ts +126 -0
- package/src/brand-page/utils/container-text-color.util.ts +16 -0
- package/src/brand-page/utils/content-callback-util.ts +5 -0
- package/src/brand-page/utils/personalisation.util.test.ts +53 -0
- package/src/brand-page/utils/view-model.util.ts +26 -0
- package/src/brand-page/view-models.ts +8 -1
- package/src/brand-page-maker/assessors/faq-accordion-color-field-visibility.assessor.ts +9 -0
- package/src/brand-page-maker/assessors/index.ts +1 -0
- package/src/brand-page-maker/composables/rich-text-editor/useRichTextEditor.ts +2 -0
- package/src/brand-page-maker/constants/config-settings-constant.ts +122 -1
- package/src/brand-page-maker/constants/faq-section-config.test.ts +22 -0
- package/src/brand-page-maker/constants/personalisation.constant.ts +5 -3
- package/src/brand-page-maker/convertors/faq-display-style.convertor.ts +61 -0
- package/src/brand-page-maker/models/content-settings-configs.ts +1 -0
- package/src/brand-page-maker/models/content-settings.test.ts +6 -0
- package/src/brand-page-maker/models/content-settings.ts +51 -0
- package/src/brand-page-maker/utils/__snapshots__/apply-color-strategy.golden.test.ts.snap +2940 -300
- package/src/brand-page-maker/utils/apply-color-strategy.test.ts +93 -2
- package/src/brand-page-maker/utils/apply-color-strategy.ts +69 -19
- package/src/brand-page-maker/utils/rte-authoring.util.test.ts +30 -0
- package/src/brand-page-maker/utils/rte-authoring.util.ts +14 -0
- package/src/brand-page-maker/validators/field.validator.ts +2 -0
- package/src/bundles/bundled-translations.de-DE.json +9 -1
- package/src/bundles/bundled-translations.es-ES.json +9 -1
- package/src/bundles/bundled-translations.fr-CA.json +9 -1
- package/src/bundles/bundled-translations.fr-FR.json +9 -1
- package/src/bundles/bundled-translations.json +9 -1
- package/src/bundles/bundled-translations.pt-BR.json +9 -1
- package/src/bundles/bundled-translations.pt-PT.json +9 -1
- package/src/metadata-builder/parsers/section-tool-arguments.ts +2 -1
- package/src/shared/color-strategies/color-strategies.ts +4 -0
- package/src/shared/color-strategies/rte-field-pairs.test.ts +2 -0
- package/src/shared/color-strategies/rte-field-pairs.ts +34 -0
- package/src/shared/content-settings/components/content-settings/i18n/content-settings.de-DE.json +10 -1
- package/src/shared/content-settings/components/content-settings/i18n/content-settings.es-ES.json +10 -1
- package/src/shared/content-settings/components/content-settings/i18n/content-settings.fr-CA.json +10 -1
- package/src/shared/content-settings/components/content-settings/i18n/content-settings.fr-FR.json +10 -1
- package/src/shared/content-settings/components/content-settings/i18n/content-settings.json +10 -1
- package/src/shared/content-settings/components/content-settings/i18n/content-settings.pt-BR.json +10 -1
- package/src/shared/content-settings/components/content-settings/i18n/content-settings.pt-PT.json +10 -1
- package/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.vue +2 -0
- package/src/shared/content-settings/components/faq-items-field/FaqItemsField.test.ts +162 -0
- package/src/shared/content-settings/components/faq-items-field/FaqItemsField.vue +287 -0
- package/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.vue +1 -0
- package/src/shared/content-settings/components/items-field/ItemsField.mixin.ts +3 -0
- package/src/shared/content-settings/components/items-field/ItemsField.vue +13 -3
- package/src/shared/content-settings/store/content-settings-store.test.ts +86 -0
- package/src/shared/content-settings/store/content-settings-store.ts +39 -4
|
@@ -14,6 +14,7 @@ import {
|
|
|
14
14
|
STYLE_FIELDS_OUTSIDE_CONFIG,
|
|
15
15
|
} from '@shared/color-strategies/color-strategies';
|
|
16
16
|
import { pageStrategyAnchors } from '@shared/color-strategies/page-anchors';
|
|
17
|
+
import { RTE_ITEM_FIELD_PAIRS } from '@shared/color-strategies/rte-field-pairs';
|
|
17
18
|
import type { ColorStrategy } from '@shared/color-strategies/models';
|
|
18
19
|
|
|
19
20
|
const backgroundConvertor = {
|
|
@@ -1830,12 +1831,102 @@ describe('every colour field is bound or deliberately unbound (BP-5886)', () =>
|
|
|
1830
1831
|
// `successMessageStyle` is a content-model field with no settings-config
|
|
1831
1832
|
// entry. The applier reaches it only through `STYLE_FIELDS_OUTSIDE_CONFIG`
|
|
1832
1833
|
// (payment and shop); the contact form's stays unwritten. This pins that the
|
|
1833
|
-
// phantom set never grows silently.
|
|
1834
|
+
// phantom set never grows silently. Item-level styles (each FAQ item's
|
|
1835
|
+
// `questionStyle`) are declared by RTE_ITEM_FIELD_PAIRS, not by a config field.
|
|
1836
|
+
const itemStyleFields = new Set(
|
|
1837
|
+
Object.values(RTE_ITEM_FIELD_PAIRS).flatMap((pairs) =>
|
|
1838
|
+
pairs.map((pair) => pair.styleField),
|
|
1839
|
+
),
|
|
1840
|
+
);
|
|
1834
1841
|
const phantoms = [
|
|
1835
1842
|
...Object.keys(FIELD_SLOT_MAP),
|
|
1836
1843
|
...Object.values(SECTION_RAISED_LAYER).flatMap((layer) => layer.content),
|
|
1837
|
-
].filter(
|
|
1844
|
+
].filter(
|
|
1845
|
+
(name) => !configColourFields.has(name) && !itemStyleFields.has(name),
|
|
1846
|
+
);
|
|
1838
1847
|
|
|
1839
1848
|
expect(new Set(phantoms)).toEqual(new Set(['successMessageStyle']));
|
|
1840
1849
|
});
|
|
1841
1850
|
});
|
|
1851
|
+
|
|
1852
|
+
describe('buildColorStrategyValues — FAQ section', () => {
|
|
1853
|
+
const doc = (text: string) => ({
|
|
1854
|
+
type: 'doc',
|
|
1855
|
+
content: [
|
|
1856
|
+
{
|
|
1857
|
+
type: 'paragraph',
|
|
1858
|
+
content: [
|
|
1859
|
+
{
|
|
1860
|
+
type: 'text',
|
|
1861
|
+
text,
|
|
1862
|
+
marks: [{ type: 'textStyle', attrs: { color: '#123456' } }],
|
|
1863
|
+
},
|
|
1864
|
+
],
|
|
1865
|
+
},
|
|
1866
|
+
],
|
|
1867
|
+
});
|
|
1868
|
+
|
|
1869
|
+
const faq = () => ({
|
|
1870
|
+
type: 'faq-section',
|
|
1871
|
+
displayStyle: 'faq-centered',
|
|
1872
|
+
backgroundStyle: {},
|
|
1873
|
+
titleStyle: {},
|
|
1874
|
+
descriptionStyle: {},
|
|
1875
|
+
questionStyle: { textStyleType: 'heading5', backgroundColor: '#fff' },
|
|
1876
|
+
answerStyle: { textStyleType: 'paragraph2' },
|
|
1877
|
+
items: [
|
|
1878
|
+
{ id: 'q1', question: doc('Q1'), answer: 'Plain answer' },
|
|
1879
|
+
{ id: 'q2', question: 'Plain question', answer: doc('A2') },
|
|
1880
|
+
],
|
|
1881
|
+
});
|
|
1882
|
+
|
|
1883
|
+
it('repaints the shared question and answer styles and every rich-text document', () => {
|
|
1884
|
+
const config = CONTENT_SETTINGS_CONFIGS()['faq-section'];
|
|
1885
|
+
const content = faq();
|
|
1886
|
+
const values: Record<string, any> = buildColorStrategyValues(
|
|
1887
|
+
config,
|
|
1888
|
+
content,
|
|
1889
|
+
'duotone',
|
|
1890
|
+
);
|
|
1891
|
+
const [q1, q2] = values.items;
|
|
1892
|
+
const questionRef = values.questionStyle.color;
|
|
1893
|
+
|
|
1894
|
+
expect(values.backgroundStyle).toBeDefined();
|
|
1895
|
+
expect(questionRef).toMatch(/^var\(--palette-\d\)$/);
|
|
1896
|
+
expect(values.answerStyle.color).toMatch(/^var\(--palette-\d\)$/);
|
|
1897
|
+
// Text on the band never takes the band's own role.
|
|
1898
|
+
expect(questionRef).not.toBe(values.backgroundStyle?.backgroundColor);
|
|
1899
|
+
// The strategy owns the text treatment: background cleared, typography kept.
|
|
1900
|
+
expect('backgroundColor' in values.questionStyle).toBe(false);
|
|
1901
|
+
expect(values.questionStyle.textStyleType).toBe('heading5');
|
|
1902
|
+
// RTE documents take the colour in their marks; plain text is left as text.
|
|
1903
|
+
expect(JSON.stringify(q1.question)).toContain(questionRef);
|
|
1904
|
+
expect(JSON.stringify(q1.question)).not.toContain('#123456');
|
|
1905
|
+
expect(q1.answer).toBe('Plain answer');
|
|
1906
|
+
expect(JSON.stringify(q2.answer)).toContain(values.answerStyle.color);
|
|
1907
|
+
// A new list — never the stored one mutated.
|
|
1908
|
+
expect(values.items).not.toBe(content.items);
|
|
1909
|
+
expect(content.questionStyle.backgroundColor).toBe('#fff');
|
|
1910
|
+
});
|
|
1911
|
+
|
|
1912
|
+
it('asks the live editors to re-seed when an item document was replaced', () => {
|
|
1913
|
+
const updateItemValue = vi.fn();
|
|
1914
|
+
const markRteResync = vi.fn();
|
|
1915
|
+
|
|
1916
|
+
applyColorStrategyToItem(
|
|
1917
|
+
{ updateItemValue },
|
|
1918
|
+
{
|
|
1919
|
+
id: 'faq-1',
|
|
1920
|
+
config: CONTENT_SETTINGS_CONFIGS()['faq-section'],
|
|
1921
|
+
content: faq(),
|
|
1922
|
+
strategyId: 'duotone',
|
|
1923
|
+
markRteResync,
|
|
1924
|
+
},
|
|
1925
|
+
);
|
|
1926
|
+
|
|
1927
|
+
expect(updateItemValue).toHaveBeenCalledWith(
|
|
1928
|
+
expect.objectContaining({ name: 'items' }),
|
|
1929
|
+
);
|
|
1930
|
+
expect(markRteResync).toHaveBeenCalledTimes(1);
|
|
1931
|
+
});
|
|
1932
|
+
});
|
|
@@ -11,12 +11,16 @@ import {
|
|
|
11
11
|
type DisableTransparent,
|
|
12
12
|
} from '@shared/content-settings/disable-transparent.util';
|
|
13
13
|
import { setRteTextColor } from '@shared/color-strategies/rte-color';
|
|
14
|
+
import { isTiptapDocument } from '@shared/rte-shape.util';
|
|
14
15
|
import type {
|
|
15
16
|
ColorStrategyId,
|
|
16
17
|
SectionLayers,
|
|
17
18
|
StrategyAnchors,
|
|
18
19
|
} from '@shared/color-strategies/models';
|
|
19
|
-
import {
|
|
20
|
+
import {
|
|
21
|
+
pairedRteTextField,
|
|
22
|
+
RTE_ITEM_FIELD_PAIRS,
|
|
23
|
+
} from '@shared/color-strategies/rte-field-pairs';
|
|
20
24
|
import { isCanonicalTextStyleType } from '@brand-page/models/styles.model';
|
|
21
25
|
|
|
22
26
|
// A section colour field, narrowed to what the macro reads. Config is declared `<any>`,
|
|
@@ -147,6 +151,23 @@ const sectionLayers = (
|
|
|
147
151
|
};
|
|
148
152
|
};
|
|
149
153
|
|
|
154
|
+
/**
|
|
155
|
+
* The strategy's text treatment for one text-style field: `color` set, text background
|
|
156
|
+
* cleared (matching the highlight strip in `setRteTextColor` — the toolbar writes both).
|
|
157
|
+
* The key is deleted rather than set undefined so `'backgroundColor' in style` checks
|
|
158
|
+
* downstream stay honest.
|
|
159
|
+
*/
|
|
160
|
+
const withStrategyTextStyle = (
|
|
161
|
+
current: Record<string, unknown> | undefined,
|
|
162
|
+
ref: string,
|
|
163
|
+
): Record<string, unknown> => {
|
|
164
|
+
const nextStyle: Record<string, unknown> = { ...(current ?? {}), color: ref };
|
|
165
|
+
|
|
166
|
+
delete nextStyle.backgroundColor;
|
|
167
|
+
|
|
168
|
+
return nextStyle;
|
|
169
|
+
};
|
|
170
|
+
|
|
150
171
|
/**
|
|
151
172
|
* Build the per-field colour writes a strategy stamps onto a section. Pure — reads the
|
|
152
173
|
* section config + current content and returns a `{ fieldName: value }` partial. Each
|
|
@@ -201,18 +222,7 @@ export const buildColorStrategyValues = (
|
|
|
201
222
|
| Record<string, unknown>
|
|
202
223
|
| undefined;
|
|
203
224
|
|
|
204
|
-
|
|
205
|
-
...(current ?? {}),
|
|
206
|
-
color: ref,
|
|
207
|
-
};
|
|
208
|
-
|
|
209
|
-
// A strategy owns the text treatment, so it clears the text background colour
|
|
210
|
-
// too — matching the highlight strip in `setRteTextColor` (the toolbar writes
|
|
211
|
-
// both). Delete the key rather than set it undefined so `'backgroundColor' in
|
|
212
|
-
// style` checks downstream stay honest.
|
|
213
|
-
delete nextStyle.backgroundColor;
|
|
214
|
-
|
|
215
|
-
values[name] = nextStyle;
|
|
225
|
+
values[name] = withStrategyTextStyle(current, ref);
|
|
216
226
|
|
|
217
227
|
// Also stamp the colour into the paired RTE document, if this field drives one.
|
|
218
228
|
// `setRteTextColor` returns undefined for a plain string or legacy HTML RTE, so
|
|
@@ -251,6 +261,40 @@ export const buildColorStrategyValues = (
|
|
|
251
261
|
values[name] = field.valueConvertor.convertBack(ref);
|
|
252
262
|
});
|
|
253
263
|
|
|
264
|
+
// Item-level RTE fields (each FAQ question) share the section's style but carry their own
|
|
265
|
+
// document, and neither is a settings field, so the loop above never sees them.
|
|
266
|
+
const itemPairs =
|
|
267
|
+
typeof contentRecord.type === 'string'
|
|
268
|
+
? (RTE_ITEM_FIELD_PAIRS[contentRecord.type] ?? [])
|
|
269
|
+
: [];
|
|
270
|
+
|
|
271
|
+
itemPairs.forEach((pair) => {
|
|
272
|
+
const ref = strategyRoleRefForField(
|
|
273
|
+
strategyId,
|
|
274
|
+
pair.styleField,
|
|
275
|
+
content,
|
|
276
|
+
context,
|
|
277
|
+
layers,
|
|
278
|
+
anchors,
|
|
279
|
+
);
|
|
280
|
+
const items = (values[pair.itemsField] ??
|
|
281
|
+
contentRecord[pair.itemsField]) as Record<string, unknown>[] | undefined;
|
|
282
|
+
|
|
283
|
+
if (!ref || !Array.isArray(items)) {
|
|
284
|
+
return;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
values[pair.styleField] = withStrategyTextStyle(
|
|
288
|
+
contentRecord[pair.styleField] as Record<string, unknown> | undefined,
|
|
289
|
+
ref,
|
|
290
|
+
);
|
|
291
|
+
values[pair.itemsField] = items.map((item) => {
|
|
292
|
+
const nextDoc = setRteTextColor(item[pair.textField], ref);
|
|
293
|
+
|
|
294
|
+
return nextDoc ? { ...item, [pair.textField]: nextDoc } : item;
|
|
295
|
+
});
|
|
296
|
+
});
|
|
297
|
+
|
|
254
298
|
return values;
|
|
255
299
|
};
|
|
256
300
|
|
|
@@ -306,14 +350,20 @@ export const applyColorStrategyToItem = (
|
|
|
306
350
|
store.updateItemValue({ id, name, value });
|
|
307
351
|
});
|
|
308
352
|
|
|
309
|
-
// A recoloured RTE field is emitted as a whole Tiptap document
|
|
310
|
-
//
|
|
311
|
-
// to re-seed, so signal it just
|
|
353
|
+
// A recoloured RTE field is emitted as a whole Tiptap document (at the top level,
|
|
354
|
+
// or inside a rewritten item list); the paired style-object writes are plain
|
|
355
|
+
// objects. Only the former needs the live editor to re-seed, so signal it just
|
|
356
|
+
// when a doc was among the writes.
|
|
312
357
|
const replacedRteDoc = Object.values(values).some(
|
|
313
358
|
(value) =>
|
|
314
|
-
|
|
315
|
-
value
|
|
316
|
-
|
|
359
|
+
isTiptapDocument(value) ||
|
|
360
|
+
(Array.isArray(value) &&
|
|
361
|
+
value.some(
|
|
362
|
+
(item) =>
|
|
363
|
+
typeof item === 'object' &&
|
|
364
|
+
item !== null &&
|
|
365
|
+
Object.values(item).some(isTiptapDocument),
|
|
366
|
+
)),
|
|
317
367
|
);
|
|
318
368
|
|
|
319
369
|
if (replacedRteDoc) {
|
|
@@ -242,3 +242,33 @@ describe('authorContentRteFields — enriching a factory-authored doc', () => {
|
|
|
242
242
|
expect(fields.titleStyle.color).toBe('var(--palette-0)');
|
|
243
243
|
});
|
|
244
244
|
});
|
|
245
|
+
|
|
246
|
+
describe('list items (FAQ) are authored from the shared section style', () => {
|
|
247
|
+
it('every item gets the shared colour in its marks, and the shared style keeps it', () => {
|
|
248
|
+
const content = asContent({
|
|
249
|
+
type: 'faq-section',
|
|
250
|
+
title: 'T',
|
|
251
|
+
titleStyle: { textStyleType: 'heading4' },
|
|
252
|
+
questionStyle: { textStyleType: 'heading5', color: 'var(--palette-1)' },
|
|
253
|
+
answerStyle: { textStyleType: 'paragraph2', textAlign: 'left' },
|
|
254
|
+
items: [
|
|
255
|
+
{ id: 'q1', question: 'Q1?', answer: rteDoc('A1.') },
|
|
256
|
+
{ id: 'q2', question: 'Q2?', answer: rteDoc('A2.') },
|
|
257
|
+
],
|
|
258
|
+
});
|
|
259
|
+
|
|
260
|
+
authorContentRteFields(content);
|
|
261
|
+
|
|
262
|
+
const { items, questionStyle } = content as unknown as {
|
|
263
|
+
items: Record<string, any>[];
|
|
264
|
+
questionStyle: { color?: string };
|
|
265
|
+
};
|
|
266
|
+
|
|
267
|
+
expect(items.map((item) => firstRunMarkColor(item.question))).toEqual([
|
|
268
|
+
'var(--palette-1)',
|
|
269
|
+
'var(--palette-1)',
|
|
270
|
+
]);
|
|
271
|
+
expect(questionStyle.color).toBe('var(--palette-1)');
|
|
272
|
+
expect(items[1].answer.content[0].attrs.textAlign).toBe('left');
|
|
273
|
+
});
|
|
274
|
+
});
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { JSONContent } from '@tiptap/vue-3';
|
|
2
2
|
import type { Content, TextStyleOptions, TextStyleType } from '@brand-page';
|
|
3
3
|
import {
|
|
4
|
+
forEachRteItemField,
|
|
4
5
|
rteStyleFieldsFor,
|
|
5
6
|
pairedRteTextField,
|
|
6
7
|
} from '@shared/color-strategies/rte-field-pairs';
|
|
@@ -157,6 +158,19 @@ export const authorContentRteFields = (
|
|
|
157
158
|
if (doc) fields[textField] = doc;
|
|
158
159
|
}
|
|
159
160
|
|
|
161
|
+
// List items (each FAQ question and answer) share the section's style. Each is authored from a
|
|
162
|
+
// copy, as authoring moves the colour off the style it is given.
|
|
163
|
+
forEachRteItemField(content.type, content, (item, pair) => {
|
|
164
|
+
const style = fields[pair.styleField] as AuthoredStyle;
|
|
165
|
+
const doc = authorRteDoc(
|
|
166
|
+
item[pair.textField],
|
|
167
|
+
{ ...style },
|
|
168
|
+
roleStyleFor(textStyleOptions, style?.textStyleType),
|
|
169
|
+
);
|
|
170
|
+
|
|
171
|
+
if (doc) item[pair.textField] = doc;
|
|
172
|
+
});
|
|
173
|
+
|
|
160
174
|
const textItems = fields.textItems as
|
|
161
175
|
| { text?: unknown; textStyle?: AuthoredStyle }[]
|
|
162
176
|
| undefined;
|
|
@@ -161,6 +161,7 @@ export const validatorDict: Record<ItemFieldType, Validator> = {
|
|
|
161
161
|
'color-replacements': dummyValidator,
|
|
162
162
|
'testimonial-items': dummyValidator,
|
|
163
163
|
'text-items': dummyValidator,
|
|
164
|
+
'faq-items': dummyValidator,
|
|
164
165
|
'page-dropdown': dummyValidator,
|
|
165
166
|
shape: dummyValidator,
|
|
166
167
|
'logo-selection': dummyValidator,
|
|
@@ -204,6 +205,7 @@ export const adminValidatorsDict: Record<ItemFieldType, Validator> = {
|
|
|
204
205
|
'color-replacements': dummyValidator,
|
|
205
206
|
'testimonial-items': dummyValidator,
|
|
206
207
|
'text-items': dummyValidator,
|
|
208
|
+
'faq-items': dummyValidator,
|
|
207
209
|
'page-dropdown': dummyValidator,
|
|
208
210
|
shape: dummyValidator,
|
|
209
211
|
'logo-selection': dummyValidator,
|
|
@@ -1650,7 +1650,15 @@
|
|
|
1650
1650
|
"enterTextHerePlaceholder": "Text hier eingeben ...",
|
|
1651
1651
|
"bookNowLabel": "Jetzt buchen",
|
|
1652
1652
|
"shippingLabel": "Lieferadresse aktivieren",
|
|
1653
|
-
"shippingPlaceholder": "Fordern Sie Kunden auf, während des Bezahlvorgangs eine Lieferadresse einzugeben."
|
|
1653
|
+
"shippingPlaceholder": "Fordern Sie Kunden auf, während des Bezahlvorgangs eine Lieferadresse einzugeben.",
|
|
1654
|
+
"faqSectionDisplayName": "FAQ",
|
|
1655
|
+
"faqItemsDisplayName": "Artikel",
|
|
1656
|
+
"defaultFaqTitle": "Häufig gestellte Fragen",
|
|
1657
|
+
"defaultFaqDescription": "Finden Sie Antworten auf häufig gestellte Fragen zu unseren Produkten, Dienstleistungen oder unserem Unternehmen",
|
|
1658
|
+
"defaultFaqQuestion": "Welche Dienstleistungen bieten Sie an?",
|
|
1659
|
+
"defaultFaqAnswer": "Wir bieten eine Reihe von Produkten und Dienstleistungen, die auf Ihre Bedürfnisse zugeschnitten sind. Kontaktieren Sie uns, um mehr darüber zu erfahren, wie wir Ihnen helfen können.",
|
|
1660
|
+
"faqQuestionTitle": "Frage",
|
|
1661
|
+
"faqAnswerTitle": "Antwort"
|
|
1654
1662
|
},
|
|
1655
1663
|
"formFields": {
|
|
1656
1664
|
"field": "Feld",
|
|
@@ -1650,7 +1650,15 @@
|
|
|
1650
1650
|
"enterTextHerePlaceholder": "Introduce el texto aquí...",
|
|
1651
1651
|
"bookNowLabel": "Reserva ahora",
|
|
1652
1652
|
"shippingLabel": "Habilitar dirección de envío",
|
|
1653
|
-
"shippingPlaceholder": "Exigir a los clientes que introduzcan una dirección de envío al finalizar la compra."
|
|
1653
|
+
"shippingPlaceholder": "Exigir a los clientes que introduzcan una dirección de envío al finalizar la compra.",
|
|
1654
|
+
"faqSectionDisplayName": "Preguntas frecuentes",
|
|
1655
|
+
"faqItemsDisplayName": "Artículos",
|
|
1656
|
+
"defaultFaqTitle": "Preguntas frecuentes",
|
|
1657
|
+
"defaultFaqDescription": "Encuentra respuestas a preguntas comunes sobre nuestros productos, servicios o negocio",
|
|
1658
|
+
"defaultFaqQuestion": "¿Qué servicios ofreces?",
|
|
1659
|
+
"defaultFaqAnswer": "Ofrecemos una variedad de productos y servicios adaptados a tus necesidades. Ponte en contacto con nosotros para obtener más información sobre cómo podemos ayudarte.",
|
|
1660
|
+
"faqQuestionTitle": "Pregunta",
|
|
1661
|
+
"faqAnswerTitle": "Respuesta"
|
|
1654
1662
|
},
|
|
1655
1663
|
"formFields": {
|
|
1656
1664
|
"field": "Campo",
|
|
@@ -1650,7 +1650,15 @@
|
|
|
1650
1650
|
"enterTextHerePlaceholder": "Saisir le texte ici...",
|
|
1651
1651
|
"bookNowLabel": "Prendre RDV",
|
|
1652
1652
|
"shippingLabel": "Activer l'adresse de livraison",
|
|
1653
|
-
"shippingPlaceholder": "Exigez des clients qu'ils saisissent une adresse de livraison lors de la validation de leur commande."
|
|
1653
|
+
"shippingPlaceholder": "Exigez des clients qu'ils saisissent une adresse de livraison lors de la validation de leur commande.",
|
|
1654
|
+
"faqSectionDisplayName": "FAQ",
|
|
1655
|
+
"faqItemsDisplayName": "Articles",
|
|
1656
|
+
"defaultFaqTitle": "Questions fréquemment posées",
|
|
1657
|
+
"defaultFaqDescription": "Trouvez des réponses aux questions fréquentes sur nos produits, nos services ou notre entreprise",
|
|
1658
|
+
"defaultFaqQuestion": "Quels services offrez-vous?",
|
|
1659
|
+
"defaultFaqAnswer": "Nous offrons une gamme de produits et services adaptés à vos besoins. Contactez-nous pour en savoir plus sur la façon dont nous pouvons vous aider.",
|
|
1660
|
+
"faqQuestionTitle": "Question",
|
|
1661
|
+
"faqAnswerTitle": "Réponse"
|
|
1654
1662
|
},
|
|
1655
1663
|
"formFields": {
|
|
1656
1664
|
"field": "Champ",
|
|
@@ -1650,7 +1650,15 @@
|
|
|
1650
1650
|
"enterTextHerePlaceholder": "Saisir le texte ici...",
|
|
1651
1651
|
"bookNowLabel": "Prendre RDV",
|
|
1652
1652
|
"shippingLabel": "Activer l'adresse de livraison",
|
|
1653
|
-
"shippingPlaceholder": "Exigez des clients qu'ils saisissent une adresse de livraison lors de la validation de leur commande."
|
|
1653
|
+
"shippingPlaceholder": "Exigez des clients qu'ils saisissent une adresse de livraison lors de la validation de leur commande.",
|
|
1654
|
+
"faqSectionDisplayName": "FAQ",
|
|
1655
|
+
"faqItemsDisplayName": "Articles",
|
|
1656
|
+
"defaultFaqTitle": "Questions fréquemment posées",
|
|
1657
|
+
"defaultFaqDescription": "Trouvez des réponses aux questions fréquentes sur nos produits, nos services, ou notre entreprise",
|
|
1658
|
+
"defaultFaqQuestion": "Quels services proposez-vous ?",
|
|
1659
|
+
"defaultFaqAnswer": "Nous proposons une gamme de produits et services adaptés à vos besoins. Contactez-nous pour en savoir plus sur la façon dont nous pouvons vous aider.",
|
|
1660
|
+
"faqQuestionTitle": "Question",
|
|
1661
|
+
"faqAnswerTitle": "Réponse"
|
|
1654
1662
|
},
|
|
1655
1663
|
"formFields": {
|
|
1656
1664
|
"field": "Champ",
|
|
@@ -1650,7 +1650,15 @@
|
|
|
1650
1650
|
"enterTextHerePlaceholder": "Enter text here...",
|
|
1651
1651
|
"bookNowLabel": "Book Now",
|
|
1652
1652
|
"shippingLabel": "Enable Shipping Address",
|
|
1653
|
-
"shippingPlaceholder": "Require customers to enter a shipping address during checkout."
|
|
1653
|
+
"shippingPlaceholder": "Require customers to enter a shipping address during checkout.",
|
|
1654
|
+
"faqSectionDisplayName": "FAQ",
|
|
1655
|
+
"faqItemsDisplayName": "Items",
|
|
1656
|
+
"defaultFaqTitle": "Frequently Asked Questions",
|
|
1657
|
+
"defaultFaqDescription": "Find answers to common questions about our products, services, or business",
|
|
1658
|
+
"defaultFaqQuestion": "What services do you offer?",
|
|
1659
|
+
"defaultFaqAnswer": "We provide a range of products and services tailored to meet your needs. Contact us to learn more about how we can help.",
|
|
1660
|
+
"faqQuestionTitle": "Question",
|
|
1661
|
+
"faqAnswerTitle": "Answer"
|
|
1654
1662
|
},
|
|
1655
1663
|
"formFields": {
|
|
1656
1664
|
"field": "Field",
|
|
@@ -1650,7 +1650,15 @@
|
|
|
1650
1650
|
"enterTextHerePlaceholder": "Insira o texto aqui...",
|
|
1651
1651
|
"bookNowLabel": "Reserve agora",
|
|
1652
1652
|
"shippingLabel": "Ativar endereço para envio",
|
|
1653
|
-
"shippingPlaceholder": "Exija que os clientes informem um endereço para envio na finalização da compra."
|
|
1653
|
+
"shippingPlaceholder": "Exija que os clientes informem um endereço para envio na finalização da compra.",
|
|
1654
|
+
"faqSectionDisplayName": "Perguntas frequentes",
|
|
1655
|
+
"faqItemsDisplayName": "Itens",
|
|
1656
|
+
"defaultFaqTitle": "Perguntas frequentes",
|
|
1657
|
+
"defaultFaqDescription": "Encontre respostas para perguntas comuns sobre nossos produtos, serviços ou empresa",
|
|
1658
|
+
"defaultFaqQuestion": "Quais serviços você oferece?",
|
|
1659
|
+
"defaultFaqAnswer": "Oferecemos uma variedade de produtos e serviços personalizados para atender às suas necessidades. Entre em contato conosco para saber mais sobre como podemos ajudar.",
|
|
1660
|
+
"faqQuestionTitle": "Pergunta",
|
|
1661
|
+
"faqAnswerTitle": "Resposta"
|
|
1654
1662
|
},
|
|
1655
1663
|
"formFields": {
|
|
1656
1664
|
"field": "Campo",
|
|
@@ -1650,7 +1650,15 @@
|
|
|
1650
1650
|
"enterTextHerePlaceholder": "Introduza o texto aqui...",
|
|
1651
1651
|
"bookNowLabel": "Reservar já",
|
|
1652
1652
|
"shippingLabel": "Ativar morada de envio",
|
|
1653
|
-
"shippingPlaceholder": "Exija que os clientes introduzam uma morada de envio durante o processo de finalização da compra."
|
|
1653
|
+
"shippingPlaceholder": "Exija que os clientes introduzam uma morada de envio durante o processo de finalização da compra.",
|
|
1654
|
+
"faqSectionDisplayName": "Perguntas frequentes",
|
|
1655
|
+
"faqItemsDisplayName": "Itens",
|
|
1656
|
+
"defaultFaqTitle": "Perguntas frequentes",
|
|
1657
|
+
"defaultFaqDescription": "Encontre respostas a perguntas frequentes sobre os nossos produtos, serviços ou empresa",
|
|
1658
|
+
"defaultFaqQuestion": "Que serviços oferece?",
|
|
1659
|
+
"defaultFaqAnswer": "Disponibilizamos uma variedade de produtos e serviços adaptados para satisfazer as suas necessidades. Contacte-nos para saber mais sobre como podemos ajudar.",
|
|
1660
|
+
"faqQuestionTitle": "Pergunta",
|
|
1661
|
+
"faqAnswerTitle": "Resposta"
|
|
1654
1662
|
},
|
|
1655
1663
|
"formFields": {
|
|
1656
1664
|
"field": "Campo",
|
|
@@ -272,6 +272,10 @@ export const FIELD_SLOT_MAP: Record<string, ColorSlot> = {
|
|
|
272
272
|
nameStyle: 'onSurface',
|
|
273
273
|
positionStyle: 'onSurface',
|
|
274
274
|
testimonialStyle: 'onSurface',
|
|
275
|
+
// FAQ items and their +/- toggle sit on the section band; there is no raised card.
|
|
276
|
+
questionStyle: 'onSurface',
|
|
277
|
+
answerStyle: 'onSurface',
|
|
278
|
+
iconColor: 'onSurface',
|
|
275
279
|
};
|
|
276
280
|
|
|
277
281
|
/**
|
|
@@ -13,6 +13,8 @@ describe('pairedRteTextField', () => {
|
|
|
13
13
|
['about-section', 'paragraphStyle', 'paragraph'],
|
|
14
14
|
['contact-form', 'successMessageStyle', 'successMessage'],
|
|
15
15
|
['profile', 'nameStyle', 'name'],
|
|
16
|
+
['faq-section', 'titleStyle', 'title'],
|
|
17
|
+
['faq-section', 'descriptionStyle', 'description'],
|
|
16
18
|
])('%s / %s → %s', (sectionType, styleField, expected) => {
|
|
17
19
|
expect(pairedRteTextField(sectionType, styleField)).toBe(expected);
|
|
18
20
|
});
|
|
@@ -24,6 +24,10 @@ export const RTE_SECTION_FIELD_PAIRS: Record<string, RTEFieldPair[]> = {
|
|
|
24
24
|
{ textField: 'title', styleField: 'titleStyle' },
|
|
25
25
|
{ textField: 'description', styleField: 'descriptionStyle' },
|
|
26
26
|
],
|
|
27
|
+
'faq-section': [
|
|
28
|
+
{ textField: 'title', styleField: 'titleStyle' },
|
|
29
|
+
{ textField: 'description', styleField: 'descriptionStyle' },
|
|
30
|
+
],
|
|
27
31
|
'images-section': [
|
|
28
32
|
{ textField: 'title', styleField: 'titleStyle' },
|
|
29
33
|
{ textField: 'description', styleField: 'descriptionStyle' },
|
|
@@ -63,6 +67,36 @@ export const RTE_SECTION_FIELD_PAIRS: Record<string, RTEFieldPair[]> = {
|
|
|
63
67
|
],
|
|
64
68
|
};
|
|
65
69
|
|
|
70
|
+
/** RTE fields on each entry of an item list; `styleField` is the section's style they all share. */
|
|
71
|
+
export interface RTEItemFieldPair extends RTEFieldPair {
|
|
72
|
+
itemsField: string;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export const RTE_ITEM_FIELD_PAIRS: Record<string, RTEItemFieldPair[]> = {
|
|
76
|
+
'faq-section': [
|
|
77
|
+
{ itemsField: 'items', textField: 'question', styleField: 'questionStyle' },
|
|
78
|
+
{ itemsField: 'items', textField: 'answer', styleField: 'answerStyle' },
|
|
79
|
+
],
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Visit every list item's RTE field for a section, with the item and its pair. Birth authoring and
|
|
84
|
+
* "Apply changes to all" use it to reach the item docs, which the section-level style keys never see.
|
|
85
|
+
*/
|
|
86
|
+
export const forEachRteItemField = (
|
|
87
|
+
sectionType: string,
|
|
88
|
+
content: unknown,
|
|
89
|
+
visit: (item: Record<string, unknown>, pair: RTEItemFieldPair) => void,
|
|
90
|
+
): void => {
|
|
91
|
+
for (const pair of RTE_ITEM_FIELD_PAIRS[sectionType] ?? []) {
|
|
92
|
+
const items = (content as Record<string, unknown>)?.[pair.itemsField];
|
|
93
|
+
|
|
94
|
+
if (Array.isArray(items)) {
|
|
95
|
+
items.forEach((item) => visit(item as Record<string, unknown>, pair));
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
|
|
66
100
|
/**
|
|
67
101
|
* The `text` section is absent from the map above: on brandSite its RTE lives
|
|
68
102
|
* per-item in `textItems[]`, which the editor walks separately. On
|
package/src/shared/content-settings/components/content-settings/i18n/content-settings.de-DE.json
CHANGED
|
@@ -206,6 +206,15 @@
|
|
|
206
206
|
"enterTextHerePlaceholder": "Text hier eingeben ...",
|
|
207
207
|
"bookNowLabel": "Jetzt buchen",
|
|
208
208
|
"shippingLabel": "Lieferadresse aktivieren",
|
|
209
|
-
"shippingPlaceholder": "Fordern Sie Kunden auf, während des Bezahlvorgangs eine Lieferadresse einzugeben."
|
|
209
|
+
"shippingPlaceholder": "Fordern Sie Kunden auf, während des Bezahlvorgangs eine Lieferadresse einzugeben.",
|
|
210
|
+
|
|
211
|
+
"faqSectionDisplayName": "FAQ",
|
|
212
|
+
"faqItemsDisplayName": "Artikel",
|
|
213
|
+
"defaultFaqTitle": "Häufig gestellte Fragen",
|
|
214
|
+
"defaultFaqDescription": "Finden Sie Antworten auf häufig gestellte Fragen zu unseren Produkten, Dienstleistungen oder unserem Unternehmen",
|
|
215
|
+
"defaultFaqQuestion": "Welche Dienstleistungen bieten Sie an?",
|
|
216
|
+
"defaultFaqAnswer": "Wir bieten eine Reihe von Produkten und Dienstleistungen, die auf Ihre Bedürfnisse zugeschnitten sind. Kontaktieren Sie uns, um mehr darüber zu erfahren, wie wir Ihnen helfen können.",
|
|
217
|
+
"faqQuestionTitle": "Frage",
|
|
218
|
+
"faqAnswerTitle": "Antwort"
|
|
210
219
|
}
|
|
211
220
|
}
|
package/src/shared/content-settings/components/content-settings/i18n/content-settings.es-ES.json
CHANGED
|
@@ -206,6 +206,15 @@
|
|
|
206
206
|
"enterTextHerePlaceholder": "Introduce el texto aquí...",
|
|
207
207
|
"bookNowLabel": "Reserva ahora",
|
|
208
208
|
"shippingLabel": "Habilitar dirección de envío",
|
|
209
|
-
"shippingPlaceholder": "Exigir a los clientes que introduzcan una dirección de envío al finalizar la compra."
|
|
209
|
+
"shippingPlaceholder": "Exigir a los clientes que introduzcan una dirección de envío al finalizar la compra.",
|
|
210
|
+
|
|
211
|
+
"faqSectionDisplayName": "Preguntas frecuentes",
|
|
212
|
+
"faqItemsDisplayName": "Artículos",
|
|
213
|
+
"defaultFaqTitle": "Preguntas frecuentes",
|
|
214
|
+
"defaultFaqDescription": "Encuentra respuestas a preguntas comunes sobre nuestros productos, servicios o negocio",
|
|
215
|
+
"defaultFaqQuestion": "¿Qué servicios ofreces?",
|
|
216
|
+
"defaultFaqAnswer": "Ofrecemos una variedad de productos y servicios adaptados a tus necesidades. Ponte en contacto con nosotros para obtener más información sobre cómo podemos ayudarte.",
|
|
217
|
+
"faqQuestionTitle": "Pregunta",
|
|
218
|
+
"faqAnswerTitle": "Respuesta"
|
|
210
219
|
}
|
|
211
220
|
}
|
package/src/shared/content-settings/components/content-settings/i18n/content-settings.fr-CA.json
CHANGED
|
@@ -206,6 +206,15 @@
|
|
|
206
206
|
"enterTextHerePlaceholder": "Saisir le texte ici...",
|
|
207
207
|
"bookNowLabel": "Prendre RDV",
|
|
208
208
|
"shippingLabel": "Activer l'adresse de livraison",
|
|
209
|
-
"shippingPlaceholder": "Exigez des clients qu'ils saisissent une adresse de livraison lors de la validation de leur commande."
|
|
209
|
+
"shippingPlaceholder": "Exigez des clients qu'ils saisissent une adresse de livraison lors de la validation de leur commande.",
|
|
210
|
+
|
|
211
|
+
"faqSectionDisplayName": "FAQ",
|
|
212
|
+
"faqItemsDisplayName": "Articles",
|
|
213
|
+
"defaultFaqTitle": "Questions fréquemment posées",
|
|
214
|
+
"defaultFaqDescription": "Trouvez des réponses aux questions fréquentes sur nos produits, nos services ou notre entreprise",
|
|
215
|
+
"defaultFaqQuestion": "Quels services offrez-vous?",
|
|
216
|
+
"defaultFaqAnswer": "Nous offrons une gamme de produits et services adaptés à vos besoins. Contactez-nous pour en savoir plus sur la façon dont nous pouvons vous aider.",
|
|
217
|
+
"faqQuestionTitle": "Question",
|
|
218
|
+
"faqAnswerTitle": "Réponse"
|
|
210
219
|
}
|
|
211
220
|
}
|
package/src/shared/content-settings/components/content-settings/i18n/content-settings.fr-FR.json
CHANGED
|
@@ -206,6 +206,15 @@
|
|
|
206
206
|
"enterTextHerePlaceholder": "Saisir le texte ici...",
|
|
207
207
|
"bookNowLabel": "Prendre RDV",
|
|
208
208
|
"shippingLabel": "Activer l'adresse de livraison",
|
|
209
|
-
"shippingPlaceholder": "Exigez des clients qu'ils saisissent une adresse de livraison lors de la validation de leur commande."
|
|
209
|
+
"shippingPlaceholder": "Exigez des clients qu'ils saisissent une adresse de livraison lors de la validation de leur commande.",
|
|
210
|
+
|
|
211
|
+
"faqSectionDisplayName": "FAQ",
|
|
212
|
+
"faqItemsDisplayName": "Articles",
|
|
213
|
+
"defaultFaqTitle": "Questions fréquemment posées",
|
|
214
|
+
"defaultFaqDescription": "Trouvez des réponses aux questions fréquentes sur nos produits, nos services, ou notre entreprise",
|
|
215
|
+
"defaultFaqQuestion": "Quels services proposez-vous ?",
|
|
216
|
+
"defaultFaqAnswer": "Nous proposons une gamme de produits et services adaptés à vos besoins. Contactez-nous pour en savoir plus sur la façon dont nous pouvons vous aider.",
|
|
217
|
+
"faqQuestionTitle": "Question",
|
|
218
|
+
"faqAnswerTitle": "Réponse"
|
|
210
219
|
}
|
|
211
220
|
}
|
|
@@ -206,6 +206,15 @@
|
|
|
206
206
|
"enterTextHerePlaceholder": "Enter text here...",
|
|
207
207
|
"bookNowLabel": "Book Now",
|
|
208
208
|
"shippingLabel": "Enable Shipping Address",
|
|
209
|
-
"shippingPlaceholder": "Require customers to enter a shipping address during checkout."
|
|
209
|
+
"shippingPlaceholder": "Require customers to enter a shipping address during checkout.",
|
|
210
|
+
|
|
211
|
+
"faqSectionDisplayName": "FAQ",
|
|
212
|
+
"faqItemsDisplayName": "Items",
|
|
213
|
+
"defaultFaqTitle": "Frequently Asked Questions",
|
|
214
|
+
"defaultFaqDescription": "Find answers to common questions about our products, services, or business",
|
|
215
|
+
"defaultFaqQuestion": "What services do you offer?",
|
|
216
|
+
"defaultFaqAnswer": "We provide a range of products and services tailored to meet your needs. Contact us to learn more about how we can help.",
|
|
217
|
+
"faqQuestionTitle": "Question",
|
|
218
|
+
"faqAnswerTitle": "Answer"
|
|
210
219
|
}
|
|
211
220
|
}
|
package/src/shared/content-settings/components/content-settings/i18n/content-settings.pt-BR.json
CHANGED
|
@@ -206,6 +206,15 @@
|
|
|
206
206
|
"enterTextHerePlaceholder": "Insira o texto aqui...",
|
|
207
207
|
"bookNowLabel": "Reserve agora",
|
|
208
208
|
"shippingLabel": "Ativar endereço para envio",
|
|
209
|
-
"shippingPlaceholder": "Exija que os clientes informem um endereço para envio na finalização da compra."
|
|
209
|
+
"shippingPlaceholder": "Exija que os clientes informem um endereço para envio na finalização da compra.",
|
|
210
|
+
|
|
211
|
+
"faqSectionDisplayName": "Perguntas frequentes",
|
|
212
|
+
"faqItemsDisplayName": "Itens",
|
|
213
|
+
"defaultFaqTitle": "Perguntas frequentes",
|
|
214
|
+
"defaultFaqDescription": "Encontre respostas para perguntas comuns sobre nossos produtos, serviços ou empresa",
|
|
215
|
+
"defaultFaqQuestion": "Quais serviços você oferece?",
|
|
216
|
+
"defaultFaqAnswer": "Oferecemos uma variedade de produtos e serviços personalizados para atender às suas necessidades. Entre em contato conosco para saber mais sobre como podemos ajudar.",
|
|
217
|
+
"faqQuestionTitle": "Pergunta",
|
|
218
|
+
"faqAnswerTitle": "Resposta"
|
|
210
219
|
}
|
|
211
220
|
}
|