@designcrowd/library.brand-page 6.0.16 → 6.0.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.
Files changed (76) hide show
  1. package/lib/src/{CreatedOnBrandCrowd-de-de-QP8vMxvh.js → CreatedOnBrandCrowd-de-de-CRuM9pwt.js} +1 -1
  2. package/lib/src/{CreatedOnBrandCrowd-en-us-B527kdQs.js → CreatedOnBrandCrowd-en-us-DiV7Qndt.js} +1 -1
  3. package/lib/src/{CreatedOnBrandCrowd-es-es-quAczKTS.js → CreatedOnBrandCrowd-es-es-p3wHaNxy.js} +1 -1
  4. package/lib/src/{CreatedOnBrandCrowd-fr-fr-B0A8wewN.js → CreatedOnBrandCrowd-fr-ca-lBe3GAaV.js} +1 -1
  5. package/lib/src/{CreatedOnBrandCrowd-fr-ca-B0A8wewN.js → CreatedOnBrandCrowd-fr-fr-lBe3GAaV.js} +1 -1
  6. package/lib/src/{CreatedOnBrandCrowd-pt-pt-BsKk1W3M.js → CreatedOnBrandCrowd-pt-br-CYdNvtj_.js} +1 -1
  7. package/lib/src/{CreatedOnBrandCrowd-pt-br-BsKk1W3M.js → CreatedOnBrandCrowd-pt-pt-CYdNvtj_.js} +1 -1
  8. package/lib/src/{CreatedOnDcom-de-de-DT-1HnEc.js → CreatedOnDcom-de-de-CkkOK8P7.js} +1 -1
  9. package/lib/src/{CreatedOnDcom-en-us-on3DIzpS.js → CreatedOnDcom-en-us-vj6FbDx4.js} +1 -1
  10. package/lib/src/{CreatedOnDcom-es-es-DpOh7Vt9.js → CreatedOnDcom-es-es-CY73pZR2.js} +1 -1
  11. package/lib/src/{CreatedOnDcom-fr-ca-DfGGDCeZ.js → CreatedOnDcom-fr-ca-D6tw2qnx.js} +1 -1
  12. package/lib/src/{CreatedOnDcom-fr-fr-DubzmqD6.js → CreatedOnDcom-fr-fr-DbjyyrVQ.js} +1 -1
  13. package/lib/src/{CreatedOnDcom-pt-br-exgrytG3.js → CreatedOnDcom-pt-br-C604XK7d.js} +1 -1
  14. package/lib/src/{CreatedOnDcom-pt-pt-LrMFAaeB.js → CreatedOnDcom-pt-pt-CSQ9xpbn.js} +1 -1
  15. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.d.ts +0 -1
  16. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.js +0 -5
  17. package/lib/src/brand-page-maker/components/quick-link-bar/QuickLinkBar.mixin.d.ts +1 -1
  18. package/lib/src/brand-page-maker/components/quick-link-bar/QuickLinkBar.mixin.js +6 -4
  19. package/lib/src/{bundled-translations-2HkRBbBD.js → bundled-translations-Cbaxd_x-.js} +1 -1
  20. package/lib/src/bundled-translations.de-DE-z4PUgnja.js +177 -0
  21. package/lib/src/bundled-translations.es-ES-sqDF-i7N.js +177 -0
  22. package/lib/src/bundled-translations.fr-CA-CQvLC7Ws.js +177 -0
  23. package/lib/src/bundled-translations.fr-FR-BxL6wP_Y.js +177 -0
  24. package/lib/src/bundled-translations.pt-BR-ByhGrCnc.js +177 -0
  25. package/lib/src/bundled-translations.pt-PT-DkyVsn4P.js +177 -0
  26. package/lib/src/bundles/bundled-translations.de-DE.json +3 -3
  27. package/lib/src/bundles/bundled-translations.es-ES.json +3 -3
  28. package/lib/src/bundles/bundled-translations.fr-CA.json +3 -3
  29. package/lib/src/bundles/bundled-translations.fr-FR.json +3 -3
  30. package/lib/src/bundles/bundled-translations.json +2 -2
  31. package/lib/src/bundles/bundled-translations.pt-BR.json +3 -3
  32. package/lib/src/bundles/bundled-translations.pt-PT.json +3 -3
  33. package/lib/src/css/library.brand-page-brandCrowd.min.css +19 -16
  34. package/lib/src/css/library.brand-page-brandPage.min.css +19 -16
  35. package/lib/src/css/library.brand-page-designCom.min.css +19 -16
  36. package/lib/src/css/library.brand-page-preview.min.css +19 -16
  37. package/lib/src/index.mjs +1 -1
  38. package/lib/src/{lib-CC4tgn32.js → lib-A3BBQz0z.js} +10321 -10330
  39. package/package.json +1 -1
  40. package/src/brand-page/components/recaptcha-disclosure/RecaptchaDisclosure.vue.test.ts +55 -2
  41. package/src/brand-page/components/recaptcha-disclosure/i18n/recaptcha.de-DE.json +1 -1
  42. package/src/brand-page/components/recaptcha-disclosure/i18n/recaptcha.es-ES.json +1 -1
  43. package/src/brand-page/components/recaptcha-disclosure/i18n/recaptcha.fr-CA.json +1 -1
  44. package/src/brand-page/components/recaptcha-disclosure/i18n/recaptcha.fr-FR.json +1 -1
  45. package/src/brand-page/components/recaptcha-disclosure/i18n/recaptcha.pt-BR.json +1 -1
  46. package/src/brand-page/components/recaptcha-disclosure/i18n/recaptcha.pt-PT.json +1 -1
  47. package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.ts +0 -5
  48. package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.vue +2 -2
  49. package/src/brand-page-maker/components/device/Device.vue +1 -0
  50. package/src/brand-page-maker/components/quick-link-bar/QuickLinkBar.mixin.ts +7 -4
  51. package/src/bundles/bundled-translations.de-DE.json +3 -3
  52. package/src/bundles/bundled-translations.es-ES.json +3 -3
  53. package/src/bundles/bundled-translations.fr-CA.json +3 -3
  54. package/src/bundles/bundled-translations.fr-FR.json +3 -3
  55. package/src/bundles/bundled-translations.json +2 -2
  56. package/src/bundles/bundled-translations.pt-BR.json +3 -3
  57. package/src/bundles/bundled-translations.pt-PT.json +3 -3
  58. package/src/shared/content-settings/components/content-settings/i18n/content-settings.de-DE.json +2 -2
  59. package/src/shared/content-settings/components/content-settings/i18n/content-settings.es-ES.json +2 -2
  60. package/src/shared/content-settings/components/content-settings/i18n/content-settings.fr-CA.json +2 -2
  61. package/src/shared/content-settings/components/content-settings/i18n/content-settings.fr-FR.json +2 -2
  62. package/src/shared/content-settings/components/content-settings/i18n/content-settings.json +2 -2
  63. package/src/shared/content-settings/components/content-settings/i18n/content-settings.pt-BR.json +2 -2
  64. package/src/shared/content-settings/components/content-settings/i18n/content-settings.pt-PT.json +2 -2
  65. package/src/shared/page-settings/components/page-settings/PageElement.vue +0 -1
  66. package/src/shared/page-settings/components/page-settings/PageSettingMenu.vue +0 -4
  67. package/lib/src/brand-page-maker/composables/useQuickLinkBarVisibility.d.ts +0 -17
  68. package/lib/src/brand-page-maker/composables/useQuickLinkBarVisibility.js +0 -23
  69. package/lib/src/bundled-translations.de-DE-DmmZFmGP.js +0 -177
  70. package/lib/src/bundled-translations.es-ES-D7JmTUKc.js +0 -177
  71. package/lib/src/bundled-translations.fr-CA-LANZnNuX.js +0 -177
  72. package/lib/src/bundled-translations.fr-FR-BQybH6dF.js +0 -177
  73. package/lib/src/bundled-translations.pt-BR-DRAIsAdg.js +0 -177
  74. package/lib/src/bundled-translations.pt-PT-CEqBjj6N.js +0 -177
  75. package/src/brand-page-maker/composables/useQuickLinkBarVisibility.test.ts +0 -81
  76. package/src/brand-page-maker/composables/useQuickLinkBarVisibility.ts +0 -25
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@designcrowd/library.brand-page",
3
3
  "description": "A collection of Maker/Designer applications",
4
- "version": "6.0.16",
4
+ "version": "6.0.17",
5
5
  "author": "Design.com Eng",
6
6
  "license": "UNLICENSED",
7
7
  "type": "module",
@@ -1,10 +1,23 @@
1
1
  import { mount } from '@vue/test-utils';
2
- import { setLocaleAsync } from '@src/composables/useTranslate';
2
+ import i18next from 'i18next';
3
+ import {
4
+ setLocaleAsync,
5
+ type LocaleTypes,
6
+ } from '@src/composables/useTranslate';
3
7
  import RecaptchaDisclosure from './RecaptchaDisclosure.vue';
4
8
 
9
+ // `setLocaleAsync` only sets the active language via `init()` on its first call;
10
+ // later calls just register the resource bundle. Each app owns a fresh i18next
11
+ // instance in production, so this never matters there — but a multi-locale test
12
+ // against the shared singleton must switch the active language explicitly.
13
+ const useLocale = async (locale: LocaleTypes) => {
14
+ await setLocaleAsync(locale);
15
+ await i18next.changeLanguage(locale);
16
+ };
17
+
5
18
  describe('RecaptchaDisclosure', () => {
6
19
  test('renders the resolved disclosure copy after mount', async () => {
7
- await setLocaleAsync('en-US');
20
+ await useLocale('en-US');
8
21
 
9
22
  const wrapper = mount(RecaptchaDisclosure);
10
23
 
@@ -33,4 +46,44 @@ describe('RecaptchaDisclosure', () => {
33
46
 
34
47
  expect(el.attributes('style')).toContain('color: rgb(10, 20, 30)');
35
48
  });
49
+
50
+ // Regression (BP-5804-adjacent i18n fix): the translated disclosure copy was
51
+ // HTML-entity-escaped by the translation vendor (`<a ...>`), so v-html
52
+ // rendered the anchor markup as literal visible text instead of real links.
53
+ // Every non-English locale must render two working Privacy/Terms anchors.
54
+ const NON_ENGLISH_LOCALES: LocaleTypes[] = [
55
+ 'de-DE',
56
+ 'es-ES',
57
+ 'fr-FR',
58
+ 'fr-CA',
59
+ 'pt-BR',
60
+ 'pt-PT',
61
+ ];
62
+
63
+ test.each(NON_ENGLISH_LOCALES)(
64
+ 'renders real Privacy/Terms anchors (not escaped markup) for %s',
65
+ async (locale) => {
66
+ await useLocale(locale);
67
+
68
+ const wrapper = mount(RecaptchaDisclosure);
69
+
70
+ await wrapper.vm.$nextTick();
71
+
72
+ const el = wrapper.find('[data-component="recaptcha-disclosure"]');
73
+ const html = el.html();
74
+ const text = el.text();
75
+
76
+ // Two real anchor elements pointing at Google's Privacy Policy / Terms.
77
+ expect(el.findAll('a')).toHaveLength(2);
78
+ expect(html).toContain('href="https://policies.google.com/privacy"');
79
+ expect(html).toContain('href="https://policies.google.com/terms"');
80
+
81
+ // The raw key never leaks and the markup never surfaces as visible text.
82
+ expect(text).not.toContain('recaptcha.disclosure');
83
+ expect(text).not.toContain('<a');
84
+ expect(text).not.toContain('href=');
85
+ expect(html).not.toContain('&lt;');
86
+ expect(html).not.toContain('&quot;');
87
+ },
88
+ );
36
89
  });
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "recaptcha": {
3
- "disclosure": "Geschützt durch reCAPTCHA (&lt;a href=&quot;https://policies.google.com/privacy\" target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Datenschutz</a> / &lt;a href=&quot;https://policies.google.com/terms\" target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Nutzungsbedingungen</a>)"
3
+ "disclosure": "Geschützt durch reCAPTCHA (<a href=\"https://policies.google.com/privacy\" target=\"_blank\" rel=\"noopener noreferrer\">Datenschutz</a> / <a href=\"https://policies.google.com/terms\" target=\"_blank\" rel=\"noopener noreferrer\">Nutzungsbedingungen</a>)"
4
4
  }
5
5
  }
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "recaptcha": {
3
- "disclosure": "Protegido por reCAPTCHA (&lt;a href=&quot;https://policies.google.com/privacy\" target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Privacidad</a> / &lt;a href=&quot;https://policies.google.com/terms\" target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Términos</a>)"
3
+ "disclosure": "Protegido por reCAPTCHA (<a href=\"https://policies.google.com/privacy\" target=\"_blank\" rel=\"noopener noreferrer\">Privacidad</a> / <a href=\"https://policies.google.com/terms\" target=\"_blank\" rel=\"noopener noreferrer\">Términos</a>)"
4
4
  }
5
5
  }
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "recaptcha": {
3
- "disclosure": "Protégé par reCAPTCHA (&lt;a href=&quot;https://policies.google.com/privacy\" target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Confidentialité</a> / &lt;a href=&quot;https://policies.google.com/terms\" target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Conditions</a>)"
3
+ "disclosure": "Protégé par reCAPTCHA (<a href=\"https://policies.google.com/privacy\" target=\"_blank\" rel=\"noopener noreferrer\">Confidentialité</a> / <a href=\"https://policies.google.com/terms\" target=\"_blank\" rel=\"noopener noreferrer\">Conditions</a>)"
4
4
  }
5
5
  }
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "recaptcha": {
3
- "disclosure": "Protégé par reCAPTCHA (&lt;a href=&quot;https://policies.google.com/privacy\" target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Confidentialité</a> / &lt;a href=&quot;https://policies.google.com/terms\" target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Conditions</a>)"
3
+ "disclosure": "Protégé par reCAPTCHA (<a href=\"https://policies.google.com/privacy\" target=\"_blank\" rel=\"noopener noreferrer\">Confidentialité</a> / <a href=\"https://policies.google.com/terms\" target=\"_blank\" rel=\"noopener noreferrer\">Conditions</a>)"
4
4
  }
5
5
  }
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "recaptcha": {
3
- "disclosure": "Protegido pelo reCAPTCHA (&lt;a href=&quot;https://policies.google.com/privacy\" target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Termos de</a> / &lt;a href=&quot;https://policies.google.com/terms\" target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Privacidade</a>)"
3
+ "disclosure": "Protegido pelo reCAPTCHA (<a href=\"https://policies.google.com/privacy\" target=\"_blank\" rel=\"noopener noreferrer\">Privacidade</a> / <a href=\"https://policies.google.com/terms\" target=\"_blank\" rel=\"noopener noreferrer\">Termos</a>)"
4
4
  }
5
5
  }
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "recaptcha": {
3
- "disclosure": "Protegido pelo reCAPTCHA (&lt;a href=&quot;https://policies.google.com/privacy\" target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Termos de </a> / &lt;a href=&quot;https://policies.google.com/terms\" target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Privacidade</a>)"
3
+ "disclosure": "Protegido pelo reCAPTCHA (<a href=\"https://policies.google.com/privacy\" target=\"_blank\" rel=\"noopener noreferrer\">Privacidade</a> / <a href=\"https://policies.google.com/terms\" target=\"_blank\" rel=\"noopener noreferrer\">Termos</a>)"
4
4
  }
5
5
  }
@@ -37,7 +37,6 @@ import {
37
37
  } from '@brand-page-maker/stores';
38
38
  import { useHistoryStore } from '@brand-page-maker/stores/history/history-store';
39
39
  import { useUndoRedoFlag } from '@brand-page-maker/composables/useUndoRedoFlag';
40
- import { useQuickLinkBarVisibility } from '@brand-page-maker/composables/useQuickLinkBarVisibility';
41
40
  import type { AdminPreviewLogoTemplateModel } from '@brand-page-maker/stores/admin-logo-settings';
42
41
  import { useUiContentSettingsStore } from '@shared/content-settings/store';
43
42
  import { useUiTemplateSettingsStore } from '@shared/template-settings/store';
@@ -138,10 +137,6 @@ export default defineComponent({
138
137
  isSaving: computed(() => brandPageMakerStore.isSaving),
139
138
  isPublishing: computed(() => brandPageMakerStore.isPublishing),
140
139
  isPublished: computed(() => brandPageMakerStore.isPublished),
141
- // Whether the QuickLinkBar renders — used to offset the preview (Device)
142
- // and SideBar clear of the fixed bar on mobile. Must match the bar's own
143
- // render condition, so it shares the same predicate.
144
- shouldShowQuickLinkBar: useQuickLinkBarVisibility(),
145
140
  isBrandPageOrIsBrandContact: computed(
146
141
  () => brandPageMakerStore.isBrandPageOrIsBrandContact,
147
142
  ),
@@ -90,7 +90,7 @@
90
90
  :is-mobile-device="isMobileDevice"
91
91
  :is-design-com="isDesignCom"
92
92
  :container="previewContainer"
93
- :has-quick-links="shouldShowQuickLinkBar"
93
+ :has-quick-links="isPublished"
94
94
  >
95
95
  <div ref="previewContent" class="tw-h-full">
96
96
  <PreviewWithState :device-mode="deviceMode" />
@@ -127,7 +127,7 @@
127
127
  <SideBar
128
128
  :mobile-tab-name="SideBarTabNames.PREVIEW"
129
129
  :is-mobile-screen-size="isMobileScreenSize"
130
- :has-quick-links="shouldShowQuickLinkBar"
130
+ :has-quick-links="isPublished"
131
131
  >
132
132
  <template #tab>
133
133
  <component
@@ -11,6 +11,7 @@
11
11
  'tw-opacity-0': !visible,
12
12
  'tw-pt-8': !hasQuickLinks && isMobileDevice,
13
13
  'tw-pt-20 lg:tw-pt-8': hasQuickLinks && isMobileDevice,
14
+ 'tw-pt-10': hasQuickLinks && isMobileDevice,
14
15
  }"
15
16
  tabindex="0"
16
17
  >
@@ -5,7 +5,6 @@ import {
5
5
  useEventManagerStore,
6
6
  } from '@brand-page-maker/stores';
7
7
  import { useUndoRedoFlag } from '@brand-page-maker/composables/useUndoRedoFlag';
8
- import { useQuickLinkBarVisibility } from '@brand-page-maker/composables/useQuickLinkBarVisibility';
9
8
  import { quickLinkBarTr } from '@src/composables/useTranslate';
10
9
 
11
10
  export default defineComponent({
@@ -24,9 +23,6 @@ export default defineComponent({
24
23
  brandPageContainerStore: useBrandPageContainerStore(),
25
24
  eventManagerStore: useEventManagerStore(),
26
25
  undoRedoEnabled: useUndoRedoFlag(),
27
- // Single source of truth for whether the bar renders — shared with the
28
- // layout components (Device, SideBar) that offset content clear of it.
29
- shouldShowBar: useQuickLinkBarVisibility(),
30
26
  };
31
27
  },
32
28
  data() {
@@ -39,6 +35,13 @@ export default defineComponent({
39
35
  return this.brandPageContainerStore.isPublished;
40
36
  },
41
37
 
38
+ // Only render the bar when at least one inner cluster has something to
39
+ // show. Otherwise we'd render an empty white strip — e.g. on an
40
+ // unpublished page with the undo flag off.
41
+ shouldShowBar(): boolean {
42
+ return Boolean(this.undoRedoEnabled) || this.isPublished;
43
+ },
44
+
42
45
  brandPageUrl(): string {
43
46
  if (
44
47
  this.brandPageContainerStore.isCustomDomainEnabled &&
@@ -57,7 +57,7 @@
57
57
  "invalidEmailMessage": "Bitte geben Sie eine gültige E-Mail-Adresse ein"
58
58
  },
59
59
  "recaptcha": {
60
- "disclosure": "Geschützt durch reCAPTCHA (&lt;a href=&quot;https://policies.google.com/privacy\" target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Datenschutz</a> / &lt;a href=&quot;https://policies.google.com/terms\" target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Nutzungsbedingungen</a>)"
60
+ "disclosure": "Geschützt durch reCAPTCHA (<a href=\"https://policies.google.com/privacy\" target=\"_blank\" rel=\"noopener noreferrer\">Datenschutz</a> / <a href=\"https://policies.google.com/terms\" target=\"_blank\" rel=\"noopener noreferrer\">Nutzungsbedingungen</a>)"
61
61
  },
62
62
  "saveContactWidget": {
63
63
  "saveContactButton": "Kontakt speichern",
@@ -1457,7 +1457,7 @@
1457
1457
  "testimonialDisplayName": "Testimonial",
1458
1458
  "imageDisplayName": "Bild",
1459
1459
  "imageSectionDisplayName": "Bilder",
1460
- "imageGalleryDisplayName": "Galerie",
1460
+ "imageGalleryDisplayName": "Bildergalerie",
1461
1461
  "videoDisplayName": "Video",
1462
1462
  "mapDisplayName": "Karte",
1463
1463
  "mailingListDisplayName": "Mailingliste",
@@ -1471,7 +1471,7 @@
1471
1471
  "tiktokDisplayName": "Tiktok",
1472
1472
  "supportMeDisplayName": "Trinkgeld",
1473
1473
  "requestPaymentDisplayName": "Zahlungen",
1474
- "contactFormDisplayName": "Kontakt",
1474
+ "contactFormDisplayName": "Kontaktformular",
1475
1475
  "bannerSectionDisplayName": "Banner",
1476
1476
  "testimonialSectionDisplayName": "Testimonials",
1477
1477
  "aboutSectionDisplayName": "Über",
@@ -57,7 +57,7 @@
57
57
  "invalidEmailMessage": "Introduce una dirección de correo electrónico válida"
58
58
  },
59
59
  "recaptcha": {
60
- "disclosure": "Protegido por reCAPTCHA (&lt;a href=&quot;https://policies.google.com/privacy\" target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Privacidad</a> / &lt;a href=&quot;https://policies.google.com/terms\" target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Términos</a>)"
60
+ "disclosure": "Protegido por reCAPTCHA (<a href=\"https://policies.google.com/privacy\" target=\"_blank\" rel=\"noopener noreferrer\">Privacidad</a> / <a href=\"https://policies.google.com/terms\" target=\"_blank\" rel=\"noopener noreferrer\">Términos</a>)"
61
61
  },
62
62
  "saveContactWidget": {
63
63
  "saveContactButton": "Guardar contacto",
@@ -1457,7 +1457,7 @@
1457
1457
  "testimonialDisplayName": "Testimonio",
1458
1458
  "imageDisplayName": "Imagen",
1459
1459
  "imageSectionDisplayName": "Imágenes",
1460
- "imageGalleryDisplayName": "Galería",
1460
+ "imageGalleryDisplayName": "Galería de imágenes",
1461
1461
  "videoDisplayName": "Vídeo",
1462
1462
  "mapDisplayName": "Mapa",
1463
1463
  "mailingListDisplayName": "Lista de correo",
@@ -1471,7 +1471,7 @@
1471
1471
  "tiktokDisplayName": "Tiktok",
1472
1472
  "supportMeDisplayName": "Propinas",
1473
1473
  "requestPaymentDisplayName": "Pagos",
1474
- "contactFormDisplayName": "Contacto",
1474
+ "contactFormDisplayName": "Formulario de contacto",
1475
1475
  "bannerSectionDisplayName": "Banner",
1476
1476
  "testimonialSectionDisplayName": "Testimonios",
1477
1477
  "aboutSectionDisplayName": "Acerca de",
@@ -57,7 +57,7 @@
57
57
  "invalidEmailMessage": "Veuillez entrer une adresse e-mail valide"
58
58
  },
59
59
  "recaptcha": {
60
- "disclosure": "Protégé par reCAPTCHA (&lt;a href=&quot;https://policies.google.com/privacy\" target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Confidentialité</a> / &lt;a href=&quot;https://policies.google.com/terms\" target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Conditions</a>)"
60
+ "disclosure": "Protégé par reCAPTCHA (<a href=\"https://policies.google.com/privacy\" target=\"_blank\" rel=\"noopener noreferrer\">Confidentialité</a> / <a href=\"https://policies.google.com/terms\" target=\"_blank\" rel=\"noopener noreferrer\">Conditions</a>)"
61
61
  },
62
62
  "saveContactWidget": {
63
63
  "saveContactButton": "Enregistrer le contact",
@@ -1457,7 +1457,7 @@
1457
1457
  "testimonialDisplayName": "Témoignage",
1458
1458
  "imageDisplayName": "Image",
1459
1459
  "imageSectionDisplayName": "Images",
1460
- "imageGalleryDisplayName": "Galerie",
1460
+ "imageGalleryDisplayName": "Galerie d’images",
1461
1461
  "videoDisplayName": "Vidéo",
1462
1462
  "mapDisplayName": "Carte",
1463
1463
  "mailingListDisplayName": "Liste de diffusion",
@@ -1471,7 +1471,7 @@
1471
1471
  "tiktokDisplayName": "Tiktok",
1472
1472
  "supportMeDisplayName": "Don",
1473
1473
  "requestPaymentDisplayName": "Paiements",
1474
- "contactFormDisplayName": "Contact",
1474
+ "contactFormDisplayName": "Formulaire de contact",
1475
1475
  "bannerSectionDisplayName": "Bannière",
1476
1476
  "testimonialSectionDisplayName": "Témoignages",
1477
1477
  "aboutSectionDisplayName": "À propos",
@@ -57,7 +57,7 @@
57
57
  "invalidEmailMessage": "Veuillez entrer une adresse e-mail valide"
58
58
  },
59
59
  "recaptcha": {
60
- "disclosure": "Protégé par reCAPTCHA (&lt;a href=&quot;https://policies.google.com/privacy\" target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Confidentialité</a> / &lt;a href=&quot;https://policies.google.com/terms\" target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Conditions</a>)"
60
+ "disclosure": "Protégé par reCAPTCHA (<a href=\"https://policies.google.com/privacy\" target=\"_blank\" rel=\"noopener noreferrer\">Confidentialité</a> / <a href=\"https://policies.google.com/terms\" target=\"_blank\" rel=\"noopener noreferrer\">Conditions</a>)"
61
61
  },
62
62
  "saveContactWidget": {
63
63
  "saveContactButton": "Enregistrer le contact",
@@ -1457,7 +1457,7 @@
1457
1457
  "testimonialDisplayName": "Témoignage",
1458
1458
  "imageDisplayName": "Image",
1459
1459
  "imageSectionDisplayName": "Images",
1460
- "imageGalleryDisplayName": "Galerie",
1460
+ "imageGalleryDisplayName": "Galerie d’images",
1461
1461
  "videoDisplayName": "Vidéo",
1462
1462
  "mapDisplayName": "Carte",
1463
1463
  "mailingListDisplayName": "Liste de diffusion",
@@ -1471,7 +1471,7 @@
1471
1471
  "tiktokDisplayName": "Tiktok",
1472
1472
  "supportMeDisplayName": "Don",
1473
1473
  "requestPaymentDisplayName": "Paiements",
1474
- "contactFormDisplayName": "Contact",
1474
+ "contactFormDisplayName": "Formulaire de contact",
1475
1475
  "bannerSectionDisplayName": "Bannière",
1476
1476
  "testimonialSectionDisplayName": "Témoignages",
1477
1477
  "aboutSectionDisplayName": "À propos",
@@ -1457,7 +1457,7 @@
1457
1457
  "testimonialDisplayName": "Testimonial",
1458
1458
  "imageDisplayName": "Image",
1459
1459
  "imageSectionDisplayName": "Images",
1460
- "imageGalleryDisplayName": "Gallery",
1460
+ "imageGalleryDisplayName": "Image Gallery",
1461
1461
  "videoDisplayName": "Video",
1462
1462
  "mapDisplayName": "Map",
1463
1463
  "mailingListDisplayName": "Mailing list",
@@ -1471,7 +1471,7 @@
1471
1471
  "tiktokDisplayName": "Tiktok",
1472
1472
  "supportMeDisplayName": "Tipping",
1473
1473
  "requestPaymentDisplayName": "Payments",
1474
- "contactFormDisplayName": "Contact",
1474
+ "contactFormDisplayName": "Contact Form",
1475
1475
  "bannerSectionDisplayName": "Banner",
1476
1476
  "testimonialSectionDisplayName": "Testimonials",
1477
1477
  "aboutSectionDisplayName": "About",
@@ -57,7 +57,7 @@
57
57
  "invalidEmailMessage": "Por favor, insira um endereço de e-mail válido"
58
58
  },
59
59
  "recaptcha": {
60
- "disclosure": "Protegido pelo reCAPTCHA (&lt;a href=&quot;https://policies.google.com/privacy\" target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Termos de</a> / &lt;a href=&quot;https://policies.google.com/terms\" target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Privacidade</a>)"
60
+ "disclosure": "Protegido pelo reCAPTCHA (<a href=\"https://policies.google.com/privacy\" target=\"_blank\" rel=\"noopener noreferrer\">Privacidade</a> / <a href=\"https://policies.google.com/terms\" target=\"_blank\" rel=\"noopener noreferrer\">Termos</a>)"
61
61
  },
62
62
  "saveContactWidget": {
63
63
  "saveContactButton": "Salvar contato",
@@ -1457,7 +1457,7 @@
1457
1457
  "testimonialDisplayName": "Depoimento",
1458
1458
  "imageDisplayName": "Imagem",
1459
1459
  "imageSectionDisplayName": "Imagens",
1460
- "imageGalleryDisplayName": "Galeria",
1460
+ "imageGalleryDisplayName": "Galeria de imagens",
1461
1461
  "videoDisplayName": "Vídeo",
1462
1462
  "mapDisplayName": "Mapa",
1463
1463
  "mailingListDisplayName": "Lista de e-mails",
@@ -1471,7 +1471,7 @@
1471
1471
  "tiktokDisplayName": "TikTok",
1472
1472
  "supportMeDisplayName": "Dar gorjeta",
1473
1473
  "requestPaymentDisplayName": "Pagamentos",
1474
- "contactFormDisplayName": "Contato",
1474
+ "contactFormDisplayName": "Formulário de contato",
1475
1475
  "bannerSectionDisplayName": "Banner",
1476
1476
  "testimonialSectionDisplayName": "Depoimentos",
1477
1477
  "aboutSectionDisplayName": "Sobre",
@@ -57,7 +57,7 @@
57
57
  "invalidEmailMessage": "Por favor, introduza um endereço de e-mail válido"
58
58
  },
59
59
  "recaptcha": {
60
- "disclosure": "Protegido pelo reCAPTCHA (&lt;a href=&quot;https://policies.google.com/privacy\" target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Termos de </a> / &lt;a href=&quot;https://policies.google.com/terms\" target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Privacidade</a>)"
60
+ "disclosure": "Protegido pelo reCAPTCHA (<a href=\"https://policies.google.com/privacy\" target=\"_blank\" rel=\"noopener noreferrer\">Privacidade</a> / <a href=\"https://policies.google.com/terms\" target=\"_blank\" rel=\"noopener noreferrer\">Termos</a>)"
61
61
  },
62
62
  "saveContactWidget": {
63
63
  "saveContactButton": "Guardar contacto",
@@ -1457,7 +1457,7 @@
1457
1457
  "testimonialDisplayName": "Testemunho",
1458
1458
  "imageDisplayName": "Imagem",
1459
1459
  "imageSectionDisplayName": "Imagens",
1460
- "imageGalleryDisplayName": "Galeria",
1460
+ "imageGalleryDisplayName": "Galeria de Imagens",
1461
1461
  "videoDisplayName": "Vídeo",
1462
1462
  "mapDisplayName": "Mapa",
1463
1463
  "mailingListDisplayName": "Lista de correio",
@@ -1471,7 +1471,7 @@
1471
1471
  "tiktokDisplayName": "TikTok",
1472
1472
  "supportMeDisplayName": "Dar gorjeta",
1473
1473
  "requestPaymentDisplayName": "Pagamentos",
1474
- "contactFormDisplayName": "Contacto",
1474
+ "contactFormDisplayName": "Formulário de Contacto",
1475
1475
  "bannerSectionDisplayName": "Banner",
1476
1476
  "testimonialSectionDisplayName": "Testemunhos",
1477
1477
  "aboutSectionDisplayName": "Sobre",
@@ -17,7 +17,7 @@
17
17
  "testimonialDisplayName": "Testimonial",
18
18
  "imageDisplayName": "Bild",
19
19
  "imageSectionDisplayName": "Bilder",
20
- "imageGalleryDisplayName": "Galerie",
20
+ "imageGalleryDisplayName": "Bildergalerie",
21
21
  "videoDisplayName": "Video",
22
22
  "mapDisplayName": "Karte",
23
23
  "mailingListDisplayName": "Mailingliste",
@@ -31,7 +31,7 @@
31
31
  "tiktokDisplayName": "Tiktok",
32
32
  "supportMeDisplayName": "Trinkgeld",
33
33
  "requestPaymentDisplayName": "Zahlungen",
34
- "contactFormDisplayName": "Kontakt",
34
+ "contactFormDisplayName": "Kontaktformular",
35
35
  "bannerSectionDisplayName": "Banner",
36
36
  "testimonialSectionDisplayName": "Testimonials",
37
37
  "aboutSectionDisplayName": "Über",
@@ -17,7 +17,7 @@
17
17
  "testimonialDisplayName": "Testimonio",
18
18
  "imageDisplayName": "Imagen",
19
19
  "imageSectionDisplayName": "Imágenes",
20
- "imageGalleryDisplayName": "Galería",
20
+ "imageGalleryDisplayName": "Galería de imágenes",
21
21
  "videoDisplayName": "Vídeo",
22
22
  "mapDisplayName": "Mapa",
23
23
  "mailingListDisplayName": "Lista de correo",
@@ -31,7 +31,7 @@
31
31
  "tiktokDisplayName": "Tiktok",
32
32
  "supportMeDisplayName": "Propinas",
33
33
  "requestPaymentDisplayName": "Pagos",
34
- "contactFormDisplayName": "Contacto",
34
+ "contactFormDisplayName": "Formulario de contacto",
35
35
  "bannerSectionDisplayName": "Banner",
36
36
  "testimonialSectionDisplayName": "Testimonios",
37
37
  "aboutSectionDisplayName": "Acerca de",
@@ -17,7 +17,7 @@
17
17
  "testimonialDisplayName": "Témoignage",
18
18
  "imageDisplayName": "Image",
19
19
  "imageSectionDisplayName": "Images",
20
- "imageGalleryDisplayName": "Galerie",
20
+ "imageGalleryDisplayName": "Galerie d’images",
21
21
  "videoDisplayName": "Vidéo",
22
22
  "mapDisplayName": "Carte",
23
23
  "mailingListDisplayName": "Liste de diffusion",
@@ -31,7 +31,7 @@
31
31
  "tiktokDisplayName": "Tiktok",
32
32
  "supportMeDisplayName": "Don",
33
33
  "requestPaymentDisplayName": "Paiements",
34
- "contactFormDisplayName": "Contact",
34
+ "contactFormDisplayName": "Formulaire de contact",
35
35
  "bannerSectionDisplayName": "Bannière",
36
36
  "testimonialSectionDisplayName": "Témoignages",
37
37
  "aboutSectionDisplayName": "À propos",
@@ -17,7 +17,7 @@
17
17
  "testimonialDisplayName": "Témoignage",
18
18
  "imageDisplayName": "Image",
19
19
  "imageSectionDisplayName": "Images",
20
- "imageGalleryDisplayName": "Galerie",
20
+ "imageGalleryDisplayName": "Galerie d’images",
21
21
  "videoDisplayName": "Vidéo",
22
22
  "mapDisplayName": "Carte",
23
23
  "mailingListDisplayName": "Liste de diffusion",
@@ -31,7 +31,7 @@
31
31
  "tiktokDisplayName": "Tiktok",
32
32
  "supportMeDisplayName": "Don",
33
33
  "requestPaymentDisplayName": "Paiements",
34
- "contactFormDisplayName": "Contact",
34
+ "contactFormDisplayName": "Formulaire de contact",
35
35
  "bannerSectionDisplayName": "Bannière",
36
36
  "testimonialSectionDisplayName": "Témoignages",
37
37
  "aboutSectionDisplayName": "À propos",
@@ -17,7 +17,7 @@
17
17
  "testimonialDisplayName": "Testimonial",
18
18
  "imageDisplayName": "Image",
19
19
  "imageSectionDisplayName": "Images",
20
- "imageGalleryDisplayName": "Gallery",
20
+ "imageGalleryDisplayName": "Image Gallery",
21
21
  "videoDisplayName": "Video",
22
22
  "mapDisplayName": "Map",
23
23
  "mailingListDisplayName": "Mailing list",
@@ -31,7 +31,7 @@
31
31
  "tiktokDisplayName": "Tiktok",
32
32
  "supportMeDisplayName": "Tipping",
33
33
  "requestPaymentDisplayName": "Payments",
34
- "contactFormDisplayName": "Contact",
34
+ "contactFormDisplayName": "Contact Form",
35
35
  "bannerSectionDisplayName": "Banner",
36
36
  "testimonialSectionDisplayName": "Testimonials",
37
37
  "aboutSectionDisplayName": "About",
@@ -17,7 +17,7 @@
17
17
  "testimonialDisplayName": "Depoimento",
18
18
  "imageDisplayName": "Imagem",
19
19
  "imageSectionDisplayName": "Imagens",
20
- "imageGalleryDisplayName": "Galeria",
20
+ "imageGalleryDisplayName": "Galeria de imagens",
21
21
  "videoDisplayName": "Vídeo",
22
22
  "mapDisplayName": "Mapa",
23
23
  "mailingListDisplayName": "Lista de e-mails",
@@ -31,7 +31,7 @@
31
31
  "tiktokDisplayName": "TikTok",
32
32
  "supportMeDisplayName": "Dar gorjeta",
33
33
  "requestPaymentDisplayName": "Pagamentos",
34
- "contactFormDisplayName": "Contato",
34
+ "contactFormDisplayName": "Formulário de contato",
35
35
  "bannerSectionDisplayName": "Banner",
36
36
  "testimonialSectionDisplayName": "Depoimentos",
37
37
  "aboutSectionDisplayName": "Sobre",
@@ -17,7 +17,7 @@
17
17
  "testimonialDisplayName": "Testemunho",
18
18
  "imageDisplayName": "Imagem",
19
19
  "imageSectionDisplayName": "Imagens",
20
- "imageGalleryDisplayName": "Galeria",
20
+ "imageGalleryDisplayName": "Galeria de Imagens",
21
21
  "videoDisplayName": "Vídeo",
22
22
  "mapDisplayName": "Mapa",
23
23
  "mailingListDisplayName": "Lista de correio",
@@ -31,7 +31,7 @@
31
31
  "tiktokDisplayName": "TikTok",
32
32
  "supportMeDisplayName": "Dar gorjeta",
33
33
  "requestPaymentDisplayName": "Pagamentos",
34
- "contactFormDisplayName": "Contacto",
34
+ "contactFormDisplayName": "Formulário de Contacto",
35
35
  "bannerSectionDisplayName": "Banner",
36
36
  "testimonialSectionDisplayName": "Testemunhos",
37
37
  "aboutSectionDisplayName": "Sobre",
@@ -2,7 +2,6 @@
2
2
  <div
3
3
  :key="`page-item-${index}`"
4
4
  data-component="page-element"
5
- :data-test-tag="`page-element-${index}`"
6
5
  :class="['tw-mb-3 tw-text-secondary-500', { 'tw-ml-6': !isRootPage }]"
7
6
  >
8
7
  <div class="tw-flex tw-items-center">
@@ -7,7 +7,6 @@
7
7
  <Icon
8
8
  name="ellipsis"
9
9
  size="sm"
10
- data-test-tag="page-menu-trigger"
11
10
  :class="'tw-rounded tw-cursor-pointer tw-text-grayscale-600 tw-pt-1'"
12
11
  :should-display-title="false"
13
12
  @click="toggleMenu"
@@ -20,7 +19,6 @@
20
19
  >
21
20
  <li
22
21
  v-if="isRootPage"
23
- data-test-tag="add-subpage"
24
22
  class="tw-cursor-pointer tw-flex tw-gap-2 tw-items-center tw-px-5 hover:tw-bg-grayscale-400"
25
23
  @click="onAddSubPageClick"
26
24
  >
@@ -31,7 +29,6 @@
31
29
  </li>
32
30
  <li
33
31
  v-if="props.index !== 0"
34
- data-test-tag="toggle-page-visibility"
35
32
  class="tw-cursor-pointer tw-flex tw-gap-2 tw-items-center tw-px-5 hover:tw-bg-grayscale-400 tw-mt-3"
36
33
  @click="onChangePageVisibility"
37
34
  >
@@ -46,7 +43,6 @@
46
43
 
47
44
  <li
48
45
  v-if="!props.hasSubPages && totalPages > 1 && props.index !== 0"
49
- data-test-tag="delete-page"
50
46
  class="tw-cursor-pointer tw-flex tw-gap-2 tw-items-center tw-px-5 hover:tw-bg-grayscale-400 tw-mt-3"
51
47
  @click="onDeleteClick"
52
48
  >
@@ -1,17 +0,0 @@
1
- import { type ComputedRef } from 'vue';
2
- /**
3
- * Whether the QuickLinkBar is rendered in the maker.
4
- *
5
- * The bar shows when at least one of its inner clusters has something to
6
- * display: the undo/redo controls (flag on, non-admin — see
7
- * {@link useUndoRedoFlag}) OR the published-URL cluster (page published).
8
- *
9
- * This is the single source of truth shared by the bar itself
10
- * (`QuickLinkBar`) and the layout components that offset their content to sit
11
- * clear of the fixed bar on mobile (`Device`, `SideBar`). Keeping the offset
12
- * bound to the same predicate the bar renders on prevents the two from
13
- * drifting — a drift where the bar showed for the undo/redo reason but the
14
- * offset only accounted for the published reason caused the bar to overlap
15
- * the mobile preview.
16
- */
17
- export declare function useQuickLinkBarVisibility(): ComputedRef<boolean>;
@@ -1,23 +0,0 @@
1
- import { computed } from 'vue';
2
- import { useBrandPageContainerStore } from '@brand-page-maker/stores';
3
- import { useUndoRedoFlag } from './useUndoRedoFlag';
4
- /**
5
- * Whether the QuickLinkBar is rendered in the maker.
6
- *
7
- * The bar shows when at least one of its inner clusters has something to
8
- * display: the undo/redo controls (flag on, non-admin — see
9
- * {@link useUndoRedoFlag}) OR the published-URL cluster (page published).
10
- *
11
- * This is the single source of truth shared by the bar itself
12
- * (`QuickLinkBar`) and the layout components that offset their content to sit
13
- * clear of the fixed bar on mobile (`Device`, `SideBar`). Keeping the offset
14
- * bound to the same predicate the bar renders on prevents the two from
15
- * drifting — a drift where the bar showed for the undo/redo reason but the
16
- * offset only accounted for the published reason caused the bar to overlap
17
- * the mobile preview.
18
- */
19
- export function useQuickLinkBarVisibility() {
20
- const containerStore = useBrandPageContainerStore();
21
- const undoRedoEnabled = useUndoRedoFlag();
22
- return computed(() => undoRedoEnabled.value || containerStore.isPublished);
23
- }