@designcrowd/library.brand-page 5.18.7-ast-padding-1 → 5.18.7

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 (132) hide show
  1. package/lib/src/{CreatedOnBrandCrowd-de-de-Cn8zNuGM.js → CreatedOnBrandCrowd-de-de-CZmqvsOT.js} +1 -1
  2. package/lib/src/{CreatedOnBrandCrowd-en-us-CP8xAFc-.js → CreatedOnBrandCrowd-en-us-5nTR1eLT.js} +1 -1
  3. package/lib/src/{CreatedOnBrandCrowd-es-es-Ds8NijwP.js → CreatedOnBrandCrowd-es-es-xLvoayrw.js} +1 -1
  4. package/lib/src/{CreatedOnBrandCrowd-fr-fr-BiVV_7lj.js → CreatedOnBrandCrowd-fr-ca-CN5n8X8v.js} +1 -1
  5. package/lib/src/{CreatedOnBrandCrowd-fr-ca-BiVV_7lj.js → CreatedOnBrandCrowd-fr-fr-CN5n8X8v.js} +1 -1
  6. package/lib/src/{CreatedOnBrandCrowd-pt-pt-CjjrYojo.js → CreatedOnBrandCrowd-pt-br-CdkYC12E.js} +1 -1
  7. package/lib/src/{CreatedOnBrandCrowd-pt-br-CjjrYojo.js → CreatedOnBrandCrowd-pt-pt-CdkYC12E.js} +1 -1
  8. package/lib/src/{CreatedOnDcom-de-de-ChR5jvlP.js → CreatedOnDcom-de-de-B8rV2rD7.js} +1 -1
  9. package/lib/src/{CreatedOnDcom-en-us-C4rO1BMA.js → CreatedOnDcom-en-us-C4WaRIpF.js} +1 -1
  10. package/lib/src/{CreatedOnDcom-es-es-DxGMS6JK.js → CreatedOnDcom-es-es-BPHPey0b.js} +1 -1
  11. package/lib/src/{CreatedOnDcom-fr-ca-n31u4t7u.js → CreatedOnDcom-fr-ca-xrMr4xlv.js} +1 -1
  12. package/lib/src/{CreatedOnDcom-fr-fr-gwdsX7YV.js → CreatedOnDcom-fr-fr-BEozL-o2.js} +1 -1
  13. package/lib/src/{CreatedOnDcom-pt-br-iZjFp--s.js → CreatedOnDcom-pt-br-CoN-ZhjG.js} +1 -1
  14. package/lib/src/{CreatedOnDcom-pt-pt-B3Z3-RLC.js → CreatedOnDcom-pt-pt-9vfUJ3ks.js} +1 -1
  15. package/lib/src/brand-page/components/contact-form/ContactForm.mixin.d.ts +0 -4
  16. package/lib/src/brand-page/components/contact-form/ContactForm.mixin.js +4 -8
  17. package/lib/src/brand-page/components/image-gallery/ImageGallery.mixin.d.ts +0 -4
  18. package/lib/src/brand-page/components/image-gallery/ImageGallery.mixin.js +0 -4
  19. package/lib/src/brand-page/components/mailing-list/MailingList.mixin.d.ts +0 -4
  20. package/lib/src/brand-page/components/mailing-list/MailingList.mixin.js +1 -4
  21. package/lib/src/brand-page/components/payment/request-payment/RequestPayment.mixin.d.ts +0 -4
  22. package/lib/src/brand-page/components/payment/request-payment/RequestPayment.mixin.js +0 -4
  23. package/lib/src/brand-page/components/payment/support-me/SupportMe.mixin.d.ts +0 -4
  24. package/lib/src/brand-page/components/payment/support-me/SupportMe.mixin.js +1 -4
  25. package/lib/src/brand-page/components/video/Video.mixin.d.ts +0 -4
  26. package/lib/src/brand-page/components/video/Video.mixin.js +0 -4
  27. package/lib/src/brand-page/constants/misc.constants.d.ts +0 -26
  28. package/lib/src/brand-page/constants/misc.constants.js +0 -42
  29. package/lib/src/brand-page/models/content.model.d.ts +0 -2
  30. package/lib/src/brand-page/utils/index.d.ts +0 -1
  31. package/lib/src/brand-page/utils/index.js +0 -1
  32. package/lib/src/brand-page/utils/migration.util.js +0 -10
  33. package/lib/src/brand-page-maker/components/admin-logo-settings/AdminLogoSettings.mixin.d.ts +0 -2
  34. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.d.ts +0 -12
  35. package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.d.ts +0 -14
  36. package/lib/src/brand-page-maker/constants/config-settings-constant.js +0 -38
  37. package/lib/src/brand-page-maker/convertors/about-display-style.convertor.js +1 -9
  38. package/lib/src/brand-page-maker/convertors/banner-align-display-style.convertor.js +1 -7
  39. package/lib/src/brand-page-maker/convertors/contact-layout-style.convertor.js +1 -6
  40. package/lib/src/brand-page-maker/models/content-settings.js +2 -36
  41. package/lib/src/brand-page-maker/stores/ai-checkpoint/ai-checkpoint-store.d.ts +0 -12
  42. package/lib/src/{bundled-translations-BUyt4scr.js → bundled-translations-D1q3rSEz.js} +9 -9
  43. package/lib/src/{bundled-translations.de-DE-DEw_OVai.js → bundled-translations.de-DE-BxqLLwbh.js} +1 -1
  44. package/lib/src/{bundled-translations.es-ES-CFKWmkgY.js → bundled-translations.es-ES-uh249NlJ.js} +17 -17
  45. package/lib/src/{bundled-translations.fr-CA-DCl5LJS4.js → bundled-translations.fr-CA-BEQmv2fX.js} +1 -1
  46. package/lib/src/{bundled-translations.fr-FR-B5BjgllA.js → bundled-translations.fr-FR-BnNuCojH.js} +1 -1
  47. package/lib/src/{bundled-translations.pt-BR-5PWpMPuM.js → bundled-translations.pt-BR-CJUOxVlq.js} +1 -1
  48. package/lib/src/{bundled-translations.pt-PT-B9_wN0HR.js → bundled-translations.pt-PT-Ds9cMEqK.js} +9 -9
  49. package/lib/src/bundles/bundled-translations.de-DE.json +0 -2
  50. package/lib/src/bundles/bundled-translations.es-ES.json +0 -2
  51. package/lib/src/bundles/bundled-translations.fr-CA.json +0 -2
  52. package/lib/src/bundles/bundled-translations.fr-FR.json +0 -2
  53. package/lib/src/bundles/bundled-translations.json +0 -2
  54. package/lib/src/bundles/bundled-translations.pt-BR.json +0 -2
  55. package/lib/src/bundles/bundled-translations.pt-PT.json +0 -2
  56. package/lib/src/css/library.brand-page-brandCrowd.min.css +116 -108
  57. package/lib/src/css/library.brand-page-brandPage.min.css +116 -108
  58. package/lib/src/css/library.brand-page-designCom.min.css +116 -108
  59. package/lib/src/css/library.brand-page-preview.min.css +116 -108
  60. package/lib/src/index.mjs +1 -1
  61. package/lib/src/{lib-CIj_C38s.js → lib-xHNclG2R.js} +19655 -19841
  62. package/lib/src/metadata-builder/builders/reorder-pages-builder.d.ts +13 -0
  63. package/lib/src/metadata-builder/builders/reorder-pages-builder.js +49 -0
  64. package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.d.ts +0 -14
  65. package/lib/src/shared/content-settings/components/content-settings/ReplaceImageSettingsForContent.mixin.d.ts +0 -14
  66. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.d.ts +0 -12
  67. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.d.ts +0 -12
  68. package/lib/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.mixin.d.ts +0 -12
  69. package/lib/src/shared/content-settings/components/slider-field/SliderField.mixin.js +0 -9
  70. package/lib/src/shared/content-settings/store/content-settings-store.d.ts +0 -12
  71. package/lib/src/shared/page-settings/components/page-settings/PageSettings.mixin.d.ts +0 -16
  72. package/lib/src/shared/page-settings/components/page-settings-section-styles/PageSettingsSectionStyles.mixin.d.ts +0 -14
  73. package/lib/src/utils/minify-brand-page-metadata.js +1 -11
  74. package/package.json +1 -1
  75. package/src/brand-page/components/about-section/AboutSection.vue +4 -10
  76. package/src/brand-page/components/banner-section/BannerSection.vue +4 -11
  77. package/src/brand-page/components/booking-section/BookingSection.vue +3 -11
  78. package/src/brand-page/components/contact-form/ContactForm.mixin.ts +6 -12
  79. package/src/brand-page/components/contact-form/ContactForm.vue +104 -105
  80. package/src/brand-page/components/image-gallery/ImageGallery.mixin.ts +0 -5
  81. package/src/brand-page/components/image-gallery/ImageGallery.vue +1 -1
  82. package/src/brand-page/components/mailing-list/MailingList.mixin.ts +1 -8
  83. package/src/brand-page/components/mailing-list/MailingList.vue +1 -1
  84. package/src/brand-page/components/map/Map.vue +1 -5
  85. package/src/brand-page/components/payment/request-payment/RequestPayment.mixin.ts +0 -5
  86. package/src/brand-page/components/payment/request-payment/RequestPayment.vue +0 -1
  87. package/src/brand-page/components/payment/support-me/SupportMe.mixin.ts +1 -8
  88. package/src/brand-page/components/payment/support-me/SupportMe.vue +0 -1
  89. package/src/brand-page/components/shop/Shop.vue +2 -7
  90. package/src/brand-page/components/social-links/SocialLinks.vue +3 -7
  91. package/src/brand-page/components/text/Text.vue +5 -12
  92. package/src/brand-page/components/text-media-section/TextMediaSection.vue +3 -11
  93. package/src/brand-page/components/video/Video.mixin.ts +0 -5
  94. package/src/brand-page/components/video/Video.vue +1 -1
  95. package/src/brand-page/constants/misc.constants.ts +0 -48
  96. package/src/brand-page/models/content.model.ts +0 -2
  97. package/src/brand-page/utils/__snapshots__/migration.util.test.ts.snap +3 -9
  98. package/src/brand-page/utils/index.ts +0 -1
  99. package/src/brand-page/utils/migration.util.test.ts +0 -195
  100. package/src/brand-page/utils/migration.util.ts +0 -11
  101. package/src/brand-page-maker/constants/config-settings-constant.ts +0 -44
  102. package/src/brand-page-maker/convertors/about-display-style.convertor.ts +0 -10
  103. package/src/brand-page-maker/convertors/banner-align-display-style.convertor.ts +0 -8
  104. package/src/brand-page-maker/convertors/contact-layout-style.convertor.ts +0 -8
  105. package/src/brand-page-maker/models/content-settings.ts +2 -38
  106. package/src/bundles/bundled-translations.de-DE.json +0 -2
  107. package/src/bundles/bundled-translations.es-ES.json +0 -2
  108. package/src/bundles/bundled-translations.fr-CA.json +0 -2
  109. package/src/bundles/bundled-translations.fr-FR.json +0 -2
  110. package/src/bundles/bundled-translations.json +0 -2
  111. package/src/bundles/bundled-translations.pt-BR.json +0 -2
  112. package/src/bundles/bundled-translations.pt-PT.json +0 -2
  113. package/src/metadata-builder/builders/reorder-pages-builder.ts +80 -0
  114. package/src/shared/content-settings/components/content-settings/i18n/content-settings.de-DE.json +0 -2
  115. package/src/shared/content-settings/components/content-settings/i18n/content-settings.es-ES.json +0 -2
  116. package/src/shared/content-settings/components/content-settings/i18n/content-settings.fr-CA.json +0 -2
  117. package/src/shared/content-settings/components/content-settings/i18n/content-settings.fr-FR.json +0 -2
  118. package/src/shared/content-settings/components/content-settings/i18n/content-settings.json +0 -2
  119. package/src/shared/content-settings/components/content-settings/i18n/content-settings.pt-BR.json +0 -2
  120. package/src/shared/content-settings/components/content-settings/i18n/content-settings.pt-PT.json +0 -2
  121. package/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.vue +1 -1
  122. package/src/shared/content-settings/components/focused-content-item-settings/FocusedContentItemSettings.vue +2 -2
  123. package/src/shared/content-settings/components/slider-field/SliderField.mixin.ts +0 -9
  124. package/src/utils/minify-brand-page-metadata.ts +1 -11
  125. package/lib/src/brand-page/utils/content-padding.util.d.ts +0 -13
  126. package/lib/src/brand-page/utils/content-padding.util.js +0 -10
  127. package/lib/src/brand-page/utils/migration/migration-17.d.ts +0 -2
  128. package/lib/src/brand-page/utils/migration/migration-17.js +0 -48
  129. package/src/brand-page/utils/content-padding.util.test.ts +0 -29
  130. package/src/brand-page/utils/content-padding.util.ts +0 -13
  131. package/src/brand-page/utils/migration/migration-17.ts +0 -65
  132. package/src/brand-page-maker/convertors/contact-layout-style.convertor.test.ts +0 -50
@@ -201,34 +201,6 @@ const SETTINGS_STYLE_FIElD_GROUPS = (): ContentSettingsFieldGroup[] => {
201
201
  ];
202
202
  };
203
203
 
204
- /**
205
- * Shared Top/Bottom padding sliders (BP-5687). Reuses the same `slider` control
206
- * as the Divider block (track + editable number box), range 0–100, continuous.
207
- * Spread into a block's `fields` to expose the Padding Control on that block.
208
- * Pass the Style field-group id for blocks that use grouped panels.
209
- */
210
- const PADDING_CONTROL_FIELDS = (
211
- groupId?: string,
212
- ): {
213
- topPadding: ContentSettingsField<Content>;
214
- bottomPadding: ContentSettingsField<Content>;
215
- } => ({
216
- topPadding: {
217
- type: 'slider',
218
- title: contentSettingsTr(`topPaddingTitle`),
219
- minLength: 0,
220
- maxLength: 100,
221
- groupId,
222
- },
223
- bottomPadding: {
224
- type: 'slider',
225
- title: contentSettingsTr(`bottomPaddingTitle`),
226
- minLength: 0,
227
- maxLength: 100,
228
- groupId,
229
- },
230
- });
231
-
232
204
  const DEFAULT_TITLE_STYLE_SETTINGS_FILED =
233
205
  (): ContentSettingsField<Content> => ({
234
206
  type: 'text-style',
@@ -1125,7 +1097,6 @@ export const IMAGE_GALLERY_CONTENT_SETTINGS_CONFIG = (): ContentSettingsConfig<
1125
1097
  defaultValue: false,
1126
1098
  visibilityAssessor: imageGalleryFieldVisibilityAssessor,
1127
1099
  },
1128
- ...PADDING_CONTROL_FIELDS(),
1129
1100
  },
1130
1101
  isEnabled: true,
1131
1102
  isLocked: (features) => !features.canAddImageContents,
@@ -1165,7 +1136,6 @@ export const VIDEO_CONTENT_SETTINGS_CONFIG = (): ContentSettingsConfig<
1165
1136
  label: contentSettingsTr(`muteLabel`),
1166
1137
  valueConvertor: videoContentStateConvertor,
1167
1138
  },
1168
- ...PADDING_CONTROL_FIELDS(),
1169
1139
  },
1170
1140
  isEnabled: true,
1171
1141
  isLocked: (features) => !features.canAddVideoContents,
@@ -1308,7 +1278,6 @@ export const TEXT_CONTENT_SETTINGS_CONFIG = (): ContentSettingsConfig<
1308
1278
  variant: 'icon',
1309
1279
  visibilityAssessor: brandSiteTypeVisibilityAssessor,
1310
1280
  },
1311
- ...PADDING_CONTROL_FIELDS(SETTINGS_STYLE_FIELD_GROUP_IDS.style),
1312
1281
  backgroundColor: {
1313
1282
  type: 'color',
1314
1283
  defaultValue: {},
@@ -1767,7 +1736,6 @@ export const MAP_CONTENT_SETTINGS_CONFIG =
1767
1736
  type: 'address',
1768
1737
  title: contentSettingsTr(`addressTitle`),
1769
1738
  },
1770
- ...PADDING_CONTROL_FIELDS(),
1771
1739
  },
1772
1740
  isEnabled: true,
1773
1741
  isLocked: (features) => !features.canAddMapContents,
@@ -1819,7 +1787,6 @@ export const MAILING_LIST_CONTENT_SETTINGS_CONFIG =
1819
1787
  },
1820
1788
  titleStyle: DEFAULT_TITLE_STYLE_SETTINGS_FILED_WITH_TITLE(),
1821
1789
  buttonTextStyle: DEFAULT_BUTTON_TEXT_STYLE_FIELD(),
1822
- ...PADDING_CONTROL_FIELDS(SETTINGS_STYLE_FIELD_GROUP_IDS.style),
1823
1790
  },
1824
1791
  isEnabled: true,
1825
1792
  isLocked: false,
@@ -2004,7 +1971,6 @@ export const REQUEST_PAYMENT_CONTENT_SETTINGS_CONFIG =
2004
1971
  defaultValue: {},
2005
1972
  label: contentSettingsTr(`buttonTextStyleLabel`),
2006
1973
  },
2007
- ...PADDING_CONTROL_FIELDS(REQUEST_PAYMENT_GROUPS.style),
2008
1974
  },
2009
1975
  isEnabled: (features) => features.canAddRequestPaymentContents,
2010
1976
  isLocked: false,
@@ -2072,7 +2038,6 @@ export const SUPPORT_ME_CONTENT_SETTINGS_CONFIG =
2072
2038
  label: contentSettingsTr(`itemStyleLabel`),
2073
2039
  },
2074
2040
  buttonTextStyle: DEFAULT_BUTTON_TEXT_STYLE_FIELD(),
2075
- ...PADDING_CONTROL_FIELDS(SETTINGS_STYLE_FIELD_GROUP_IDS.style),
2076
2041
  },
2077
2042
  isEnabled: (features) => features.canAddRequestPaymentContents,
2078
2043
  isLocked: false,
@@ -2205,7 +2170,6 @@ export const CONTACT_FORM_SETTINGS_CONFIG =
2205
2170
  variant: 'icon',
2206
2171
  visibilityAssessor: brandSiteTypeVisibilityAssessor,
2207
2172
  },
2208
- ...PADDING_CONTROL_FIELDS(CONTACT_FORM_GROUPS.style),
2209
2173
  titleStyle: DEFAULT_TITLE_STYLE_SETTINGS_FILED_WITH_TITLE(),
2210
2174
  descriptionStyle: DEFAULT_DESCRIPTION_STYLE_FILED(),
2211
2175
  buttonTextStyle: DEFAULT_BUTTON_TEXT_STYLE_FIELD(),
@@ -2265,7 +2229,6 @@ export const BANNER_SECTION_SETTINGS_CONFIG =
2265
2229
  groupId: SETTINGS_STYLE_FIELD_GROUP_IDS.style,
2266
2230
  variant: 'icon',
2267
2231
  },
2268
- ...PADDING_CONTROL_FIELDS(SETTINGS_STYLE_FIELD_GROUP_IDS.style),
2269
2232
  overlayColor: {
2270
2233
  type: 'color',
2271
2234
  title: contentSettingsTr(`overlayColorTitle`),
@@ -2544,7 +2507,6 @@ export const ABOUT_SECTION_SETTINGS_CONFIG =
2544
2507
  groupId: SETTINGS_STYLE_FIELD_GROUP_IDS.style,
2545
2508
  variant: 'icon',
2546
2509
  },
2547
- ...PADDING_CONTROL_FIELDS(SETTINGS_STYLE_FIELD_GROUP_IDS.style),
2548
2510
  titleStyle: DEFAULT_TITLE_STYLE_SETTINGS_FILED_WITH_TITLE(),
2549
2511
  paragraphStyle: {
2550
2512
  type: 'text-style',
@@ -2632,7 +2594,6 @@ export const IMAGES_SECTION_SETTINGS_CONFIG =
2632
2594
  ],
2633
2595
  fields: {
2634
2596
  displayStyle: TEXT_MEDIA_DISPLAY_STYLE_FIELD(MEDIA_TYPES.image),
2635
- ...PADDING_CONTROL_FIELDS(SETTINGS_STYLE_FIELD_GROUP_IDS.style),
2636
2597
  aspectRatio: {
2637
2598
  type: 'radio',
2638
2599
  role: 'multi',
@@ -2832,7 +2793,6 @@ export const SOCIAL_LINKS_SETTINGS_CONFIG =
2832
2793
  optionsConvertor: socialLinksIconDisplayStyleConvertor,
2833
2794
  variant: 'icon',
2834
2795
  },
2835
- ...PADDING_CONTROL_FIELDS(SOCIAL_LINKS_GROUPS.style),
2836
2796
  titleStyle: {
2837
2797
  type: 'text-style',
2838
2798
  groupId: SOCIAL_LINKS_GROUPS.style,
@@ -2945,7 +2905,6 @@ export const SHAPES_SECTION_SETTINGS_CONFIG =
2945
2905
  ],
2946
2906
  fields: {
2947
2907
  displayStyle: TEXT_MEDIA_DISPLAY_STYLE_FIELD(MEDIA_TYPES.shape),
2948
- ...PADDING_CONTROL_FIELDS(SETTINGS_STYLE_FIELD_GROUP_IDS.style),
2949
2908
  size: IMAGE_SIZE_FIELD(),
2950
2909
  title: TEXT_MEDIA_TITLE_FIELD(),
2951
2910
  description: TEXT_MEDIA_DESCRIPTION_FIELD(),
@@ -2983,7 +2942,6 @@ export const SHAPES_SECTION_SETTINGS_CONFIG =
2983
2942
  ? MAX_BS_MEDIA_AND_IMAGE_ITEMS
2984
2943
  : MAX_BP_MEDIA_AND_IMAGE_ITEMS,
2985
2944
  },
2986
- ...PADDING_CONTROL_FIELDS(SETTINGS_STYLE_FIELD_GROUP_IDS.style),
2987
2945
  },
2988
2946
  isEnabled: true,
2989
2947
  isLocked: false,
@@ -3045,7 +3003,6 @@ export const SHOP_SECTION_SETTINGS_CONFIG = (): ContentSettingsConfig<
3045
3003
  optionsConvertor: shopAspectRatioConvertor,
3046
3004
  visibilityAssessor: shopImageOptionVisibilityAssessor,
3047
3005
  },
3048
- ...PADDING_CONTROL_FIELDS(REQUEST_PAYMENT_GROUPS.style),
3049
3006
  title: {
3050
3007
  type: 'title',
3051
3008
  groupId: REQUEST_PAYMENT_GROUPS.settings,
@@ -3209,7 +3166,6 @@ export const BOOKING_SECTION_SETTINGS_CONFIG =
3209
3166
  visibilityAssessor: (c, b) =>
3210
3167
  personalisationOverrideVisibility(c, b, 'buttonText'),
3211
3168
  },
3212
- ...PADDING_CONTROL_FIELDS(SETTINGS_STYLE_FIELD_GROUP_IDS.style),
3213
3169
  backgroundStyle: {
3214
3170
  type: 'color',
3215
3171
  groupId: SETTINGS_STYLE_FIELD_GROUP_IDS.style,
@@ -6,7 +6,6 @@ import {
6
6
  ALIGN_RIGHT_ALIGNED,
7
7
  ALIGN_RIGHT_FULL_IMAGE,
8
8
  TEXT_ONLY,
9
- ABOUT_DEFAULT_PADDING,
10
9
  } from '@brand-page/constants';
11
10
 
12
11
  import type { AboutSectionContent } from '@brand-page';
@@ -77,18 +76,11 @@ export const aboutDisplayStyleConvertor: ValueConvertor<
77
76
  convertBack(config: ButtonGroupConfig): Partial<AboutSectionContent> {
78
77
  const selectedOption = config.options.find((v) => v.isSelected);
79
78
 
80
- // Switching display style adopts that style's canonical look — like the
81
- // textAlign reset below — including its default block padding (a flat 32
82
- // for every About style).
83
- const padding = ABOUT_DEFAULT_PADDING;
84
-
85
79
  if (!selectedOption || selectedOption.value === ALIGN_CENTERED) {
86
80
  const textAlign = 'center';
87
81
 
88
82
  return {
89
83
  displayStyle: selectedOption?.value,
90
- topPadding: padding,
91
- bottomPadding: padding,
92
84
  titleStyle: {
93
85
  textAlign,
94
86
  },
@@ -102,8 +94,6 @@ export const aboutDisplayStyleConvertor: ValueConvertor<
102
94
 
103
95
  return {
104
96
  displayStyle: selectedOption?.value,
105
- topPadding: padding,
106
- bottomPadding: padding,
107
97
  titleStyle: {
108
98
  textAlign,
109
99
  },
@@ -15,7 +15,6 @@ import {
15
15
  ALIGN_TOP_FULL_IMAGE,
16
16
  ALIGN_BOTTOM_FULL_IMAGE,
17
17
  ALIGN_MIDDLE_FULL_IMAGE,
18
- bannerDisplayStyleDefaultPadding,
19
18
  } from '@brand-page/constants';
20
19
  import type { BannerSectionContent } from '@brand-page';
21
20
 
@@ -173,15 +172,8 @@ export const bannerAlignDisplayStyleConvertor: ValueConvertor<
173
172
  textAlign = 'center';
174
173
  }
175
174
 
176
- // Switching display style adopts that style's canonical look — like the
177
- // textAlign resets above — including its default block padding. Full-bleed
178
- // image styles default to 0 (image flush to the edges); the rest to 32.
179
- const padding = bannerDisplayStyleDefaultPadding(selectedOption?.value);
180
-
181
175
  return {
182
176
  displayStyle: selectedOption?.value,
183
- topPadding: padding,
184
- bottomPadding: padding,
185
177
  titleStyle: {
186
178
  textAlign,
187
179
  },
@@ -6,7 +6,6 @@ import {
6
6
  ALIGN_CARD_CENTER_IMAGE,
7
7
  TEXT_ONLY,
8
8
  ALIGN_CARD_CENTER,
9
- CONTACT_FORM_LAYOUT_DEFAULT_PADDING,
10
9
  } from '@brand-page/constants';
11
10
  import type { ContactFormContent } from '@brand-page';
12
11
 
@@ -85,15 +84,8 @@ export const contactLayoutStyleConvertor: ValueConvertor<
85
84
  textAlign = 'left';
86
85
  }
87
86
 
88
- // Switching layout adopts that layout's canonical look — same as the
89
- // textAlign resets below — including its default block padding.
90
- const padding =
91
- CONTACT_FORM_LAYOUT_DEFAULT_PADDING[selectedOption?.value ?? ''] ?? 0;
92
-
93
87
  return {
94
88
  layoutStyle: selectedOption?.value,
95
- topPadding: padding,
96
- bottomPadding: padding,
97
89
  titleStyle: {
98
90
  textAlign,
99
91
  },
@@ -24,7 +24,6 @@ import {
24
24
  EMPTY_LOGO_IMAGE_MODEL,
25
25
  BRAND_PAGE_TYPES,
26
26
  SENSITIVE_CONTENT_TYPES,
27
- CONTACT_FORM_LAYOUT_DEFAULT_PADDING,
28
27
  } from '@brand-page';
29
28
  import type {
30
29
  ButtonContent,
@@ -172,8 +171,6 @@ export const createInitialImageGalleryContent = (): ImageGalleryContent => {
172
171
  galleryStyles: {
173
172
  galleryType: 'grid',
174
173
  },
175
- topPadding: 0,
176
- bottomPadding: 0,
177
174
  };
178
175
  };
179
176
 
@@ -185,8 +182,6 @@ export const createInitialVideoContent = (): VideoContent => {
185
182
  displayStyle: DISPLAY_STYLE_PREVIEW,
186
183
  mute: false,
187
184
  videoUrl: '',
188
- topPadding: 0,
189
- bottomPadding: 0,
190
185
  };
191
186
  };
192
187
 
@@ -244,8 +239,6 @@ export const createInitialTextContent = (
244
239
  ]
245
240
  : undefined,
246
241
  type: 'text',
247
- topPadding: 12,
248
- bottomPadding: 12,
249
242
  textSize: {
250
243
  fontSize: FONT_SIZE_BODY,
251
244
  lineHeight: LINE_HEIGHT_BODY,
@@ -289,8 +282,6 @@ export const createInitialMapContent = (): MapContent => {
289
282
  formattedAddress: '',
290
283
  placeId: '',
291
284
  },
292
- topPadding: 0,
293
- bottomPadding: 0,
294
285
  };
295
286
  };
296
287
 
@@ -300,8 +291,6 @@ export const createInitialMailingListContent = (
300
291
  return {
301
292
  id: uuid.v4(),
302
293
  type: 'mailing-list',
303
- topPadding: 0,
304
- bottomPadding: 0,
305
294
  title: contentSettingsTr(`mailingListTitle`),
306
295
  buttonText: contentSettingsTr(`subscribePlaceholder`),
307
296
  acceptedFields: 'emailOnly',
@@ -335,8 +324,6 @@ export const createInitialRequestPaymentContent = (
335
324
  successMessage: '',
336
325
  title: contentSettingsTr(`buyNowTitle`),
337
326
  type: 'request-payment',
338
- topPadding: 0,
339
- bottomPadding: 0,
340
327
  fillColor: {},
341
328
  defaultBorderColor: {},
342
329
  selectedBorderColor: {},
@@ -369,8 +356,6 @@ export const createInitialShopContent = (
369
356
  return {
370
357
  id: uuid.v4(),
371
358
  description: '',
372
- topPadding: 16,
373
- bottomPadding: 16,
374
359
  products: [],
375
360
  displayStyle: PAYMENT_OPTION_DISPLAY_TYPES.thumbnail,
376
361
  aspectRatio: PAYMENT_OPTION_IMAGE_TYPES.auto,
@@ -430,8 +415,6 @@ export const createInitialSupportMeContent = (
430
415
  successMessage: contentSettingsTr(`successSupportPlaceholder`),
431
416
  description: contentSettingsTr(`makeADonationDescription`),
432
417
  type: 'support-me',
433
- topPadding: 0,
434
- bottomPadding: 0,
435
418
  titleStyle: {
436
419
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
437
420
  textStyleType: TEXT_STYLE_TYPES.headings,
@@ -470,21 +453,14 @@ export const createInitialContactFormContent: CreateInitialContentFunction<
470
453
  console.error('userState.emailAddress should not be undefined');
471
454
  }
472
455
 
473
- // New blocks inherit the padding their initial layout previously had
474
- // hard-coded — same source as the migration backfill for existing pages.
475
- const layoutStyle =
476
- options?.brandPageType === 'brandSite' ? 'center-card-aligned' : '';
477
- const padding = CONTACT_FORM_LAYOUT_DEFAULT_PADDING[layoutStyle] ?? 0;
478
-
479
456
  return {
480
457
  id: uuid.v4(),
481
458
  title: contentSettingsTr(`contactUsTitle`),
482
459
  description: '',
483
460
  buttonText: contentSettingsTr(`sendPlaceholder`),
484
461
  displayStyle: DISPLAY_STYLE_PREVIEW,
485
- layoutStyle,
486
- topPadding: padding,
487
- bottomPadding: padding,
462
+ layoutStyle:
463
+ options?.brandPageType === 'brandSite' ? 'center-card-aligned' : '',
488
464
  imageUrl: '',
489
465
  fields: [
490
466
  {
@@ -577,8 +553,6 @@ export const createInitialBannerSectionContent: CreateInitialContentFunction<
577
553
  > = (options?: CreateInitialContentOptions) => {
578
554
  return {
579
555
  id: uuid.v4(),
580
- topPadding: 32,
581
- bottomPadding: 32,
582
556
  imageUrl: '',
583
557
  title: contentSettingsTr(`thisIsABannerTitle`),
584
558
  description: '',
@@ -625,8 +599,6 @@ export const createInitialBookingSectionContent: CreateInitialContentFunction<
625
599
  buttonText: contentSettingsTr(`bookNowLabel`),
626
600
  url: '',
627
601
  type: 'booking-section',
628
- topPadding: 32,
629
- bottomPadding: 32,
630
602
  descriptionStyle: {
631
603
  applyAutoScale: options?.brandPageType === BRAND_PAGE_TYPES.brandSite,
632
604
  textStyleType: TEXT_STYLE_TYPES.paragraphs,
@@ -656,8 +628,6 @@ export const createInitialImagesSectionContent: CreateInitialContentFunction<
656
628
  title: contentSettingsTr(`imagesTitle`),
657
629
  description: '',
658
630
  type: 'images-section',
659
- topPadding: 32,
660
- bottomPadding: 32,
661
631
  displayStyle: 'centered',
662
632
  aspectRatio: 'Default',
663
633
  areImagesFullWidth: false,
@@ -761,8 +731,6 @@ export const createInitialAboutSectionContent: CreateInitialContentFunction<
761
731
  textAlign: 'center',
762
732
  },
763
733
  backgroundStyle: {},
764
- topPadding: 32,
765
- bottomPadding: 32,
766
734
  };
767
735
  };
768
736
 
@@ -825,8 +793,6 @@ export const createInitialSocialLinksContent = (
825
793
  return {
826
794
  id: uuid.v4(),
827
795
  type: 'social-links',
828
- topPadding: 32,
829
- bottomPadding: 32,
830
796
  title: contentSettingsTr(`followUsOnTitle`),
831
797
  links: [
832
798
  {
@@ -880,8 +846,6 @@ export const createInitialShapesSectionContent: CreateInitialContentFunction<
880
846
  title: contentSettingsTr(`shapesTitle`),
881
847
  description: '',
882
848
  type: 'shapes-section',
883
- topPadding: 32,
884
- bottomPadding: 32,
885
849
  displayStyle: 'centered',
886
850
  items: [
887
851
  {
@@ -1529,8 +1529,6 @@
1529
1529
  "iconFillColorTitle": "Farbe der Symbolfüllung",
1530
1530
  "iconBackgroundColorTitle": "Symbolhintergrundfarbe",
1531
1531
  "paddingTitle": "Polsterung",
1532
- "topPaddingTitle": "Polsterung oben",
1533
- "bottomPaddingTitle": "Polsterung unten",
1534
1532
  "dividerStyleTitle": "Trennlinienstil",
1535
1533
  "dividerColorTitle": "Trennlinienfarbe",
1536
1534
  "addItemTitle": "Artikel hinzufügen",
@@ -1529,8 +1529,6 @@
1529
1529
  "iconFillColorTitle": "Color de relleno del icono",
1530
1530
  "iconBackgroundColorTitle": "Color de fondo del icono",
1531
1531
  "paddingTitle": "Relleno",
1532
- "topPaddingTitle": "Relleno superior",
1533
- "bottomPaddingTitle": "Relleno inferior",
1534
1532
  "dividerStyleTitle": "Estilo del divisor",
1535
1533
  "dividerColorTitle": "Color del separador",
1536
1534
  "addItemTitle": "Añadir artículo",
@@ -1529,8 +1529,6 @@
1529
1529
  "iconFillColorTitle": "Couleur de remplissage de l’icône",
1530
1530
  "iconBackgroundColorTitle": "Couleur d’arrière-plan de l’icône",
1531
1531
  "paddingTitle": "Marges intérieures",
1532
- "topPaddingTitle": "Marge intérieure supérieure",
1533
- "bottomPaddingTitle": "Marges intérieures inférieures",
1534
1532
  "dividerStyleTitle": "Style de séparateur",
1535
1533
  "dividerColorTitle": "Couleur du séparateur",
1536
1534
  "addItemTitle": "Ajouter un article",
@@ -1529,8 +1529,6 @@
1529
1529
  "iconFillColorTitle": "Couleur de remplissage de l’icône",
1530
1530
  "iconBackgroundColorTitle": "Couleur d’arrière-plan de l’icône",
1531
1531
  "paddingTitle": "Marges intérieures",
1532
- "topPaddingTitle": "Marges intérieures supérieures",
1533
- "bottomPaddingTitle": "Marges intérieures inférieures",
1534
1532
  "dividerStyleTitle": "Style de séparateur",
1535
1533
  "dividerColorTitle": "Couleur du séparateur",
1536
1534
  "addItemTitle": "Ajouter un article",
@@ -1529,8 +1529,6 @@
1529
1529
  "iconFillColorTitle": "Icon fill color",
1530
1530
  "iconBackgroundColorTitle": "Icon background color",
1531
1531
  "paddingTitle": "Padding",
1532
- "topPaddingTitle": "Top padding",
1533
- "bottomPaddingTitle": "Bottom padding",
1534
1532
  "dividerStyleTitle": "Divider Style",
1535
1533
  "dividerColorTitle": "Divider color",
1536
1534
  "addItemTitle": "Add Item",
@@ -1529,8 +1529,6 @@
1529
1529
  "iconFillColorTitle": "Cor de preenchimento do ícone",
1530
1530
  "iconBackgroundColorTitle": "Cor de fundo do ícone",
1531
1531
  "paddingTitle": "Preenchimento",
1532
- "topPaddingTitle": "Preenchimento superior",
1533
- "bottomPaddingTitle": "Preenchimento inferior",
1534
1532
  "dividerStyleTitle": "Estilo do separador",
1535
1533
  "dividerColorTitle": "Cor do separador",
1536
1534
  "addItemTitle": "Adicionar item",
@@ -1529,8 +1529,6 @@
1529
1529
  "iconFillColorTitle": "Cor de preenchimento do ícone",
1530
1530
  "iconBackgroundColorTitle": "Cor de fundo do ícone",
1531
1531
  "paddingTitle": "Preenchimento",
1532
- "topPaddingTitle": "Preenchimento superior",
1533
- "bottomPaddingTitle": "Preenchimento inferior",
1534
1532
  "dividerStyleTitle": "Estilo do separador",
1535
1533
  "dividerColorTitle": "Cor do separador",
1536
1534
  "addItemTitle": "Adicionar Item",
@@ -0,0 +1,80 @@
1
+ import type { BrandPageModel, NavOrder } from '../../brand-page/models';
2
+ import {
3
+ BaseMetadataBuilder,
4
+ type BuilderResult,
5
+ type MetadataBuilderRequest,
6
+ } from '../models';
7
+ import type { Logger } from '../logger';
8
+
9
+ export interface ReorderPagesPayload {
10
+ pageOrder: string[];
11
+ }
12
+
13
+ export class ReorderPagesBuilder extends BaseMetadataBuilder<ReorderPagesPayload> {
14
+ constructor(
15
+ request: MetadataBuilderRequest<ReorderPagesPayload>,
16
+ logger?: Logger,
17
+ ) {
18
+ super(request, logger);
19
+ }
20
+
21
+ async validateAsync(): Promise<{ errors: string[] }> {
22
+ const errors: string[] = [];
23
+ const payload = this.request.payload;
24
+
25
+ if (!payload?.pageOrder?.length) {
26
+ errors.push('page_order is required for reorder_pages');
27
+ }
28
+
29
+ return { errors };
30
+ }
31
+
32
+ async buildAsync(model: BrandPageModel): Promise<BuilderResult> {
33
+ this.log('Build called');
34
+
35
+ const validation = await this.validateAsync();
36
+
37
+ if (validation.errors.length) {
38
+ return { request: this.request, model, errors: validation.errors };
39
+ }
40
+
41
+ const { pageOrder } = this.request.payload!;
42
+
43
+ // Build pageId → routeId lookup from nav.routes
44
+ const pageIdToRouteId = new Map<string, string>();
45
+
46
+ for (const route of model.nav.routes) {
47
+ pageIdToRouteId.set(route.pageId, route.id);
48
+ }
49
+
50
+ // Build new nav.orders from the flat page_order (array of pageIds)
51
+ const newOrders: NavOrder[] = [];
52
+ const seenRouteIds = new Set<string>();
53
+
54
+ for (const pageId of pageOrder) {
55
+ const routeId = pageIdToRouteId.get(pageId);
56
+
57
+ if (!routeId) continue;
58
+
59
+ newOrders.push({ routeId, subRoutes: [] });
60
+ seenRouteIds.add(routeId);
61
+ }
62
+
63
+ // Safety: append any routes not mentioned (don't lose pages)
64
+ for (const route of model.nav.routes) {
65
+ const routeId = pageIdToRouteId.get(route.pageId);
66
+
67
+ if (routeId && !seenRouteIds.has(routeId)) {
68
+ newOrders.push({ routeId, subRoutes: [] });
69
+ }
70
+ }
71
+
72
+ model.nav.orders = newOrders;
73
+
74
+ this.log({
75
+ message: `Reordered pages: ${pageOrder.join(', ')}`,
76
+ });
77
+
78
+ return { request: this.request, model };
79
+ }
80
+ }
@@ -113,8 +113,6 @@
113
113
  "iconFillColorTitle": "Farbe der Symbolfüllung",
114
114
  "iconBackgroundColorTitle": "Symbolhintergrundfarbe",
115
115
  "paddingTitle": "Polsterung",
116
- "topPaddingTitle": "Polsterung oben",
117
- "bottomPaddingTitle": "Polsterung unten",
118
116
  "dividerStyleTitle": "Trennlinienstil",
119
117
  "dividerColorTitle": "Trennlinienfarbe",
120
118
  "addItemTitle": "Artikel hinzufügen",
@@ -113,8 +113,6 @@
113
113
  "iconFillColorTitle": "Color de relleno del icono",
114
114
  "iconBackgroundColorTitle": "Color de fondo del icono",
115
115
  "paddingTitle": "Relleno",
116
- "topPaddingTitle": "Relleno superior",
117
- "bottomPaddingTitle": "Relleno inferior",
118
116
  "dividerStyleTitle": "Estilo del divisor",
119
117
  "dividerColorTitle": "Color del separador",
120
118
  "addItemTitle": "Añadir artículo",
@@ -113,8 +113,6 @@
113
113
  "iconFillColorTitle": "Couleur de remplissage de l’icône",
114
114
  "iconBackgroundColorTitle": "Couleur d’arrière-plan de l’icône",
115
115
  "paddingTitle": "Marges intérieures",
116
- "topPaddingTitle": "Marge intérieure supérieure",
117
- "bottomPaddingTitle": "Marges intérieures inférieures",
118
116
  "dividerStyleTitle": "Style de séparateur",
119
117
  "dividerColorTitle": "Couleur du séparateur",
120
118
  "addItemTitle": "Ajouter un article",
@@ -113,8 +113,6 @@
113
113
  "iconFillColorTitle": "Couleur de remplissage de l’icône",
114
114
  "iconBackgroundColorTitle": "Couleur d’arrière-plan de l’icône",
115
115
  "paddingTitle": "Marges intérieures",
116
- "topPaddingTitle": "Marges intérieures supérieures",
117
- "bottomPaddingTitle": "Marges intérieures inférieures",
118
116
  "dividerStyleTitle": "Style de séparateur",
119
117
  "dividerColorTitle": "Couleur du séparateur",
120
118
  "addItemTitle": "Ajouter un article",
@@ -113,8 +113,6 @@
113
113
  "iconFillColorTitle": "Icon fill color",
114
114
  "iconBackgroundColorTitle": "Icon background color",
115
115
  "paddingTitle": "Padding",
116
- "topPaddingTitle": "Top padding",
117
- "bottomPaddingTitle": "Bottom padding",
118
116
  "dividerStyleTitle": "Divider Style",
119
117
  "dividerColorTitle": "Divider color",
120
118
  "addItemTitle": "Add Item",
@@ -113,8 +113,6 @@
113
113
  "iconFillColorTitle": "Cor de preenchimento do ícone",
114
114
  "iconBackgroundColorTitle": "Cor de fundo do ícone",
115
115
  "paddingTitle": "Preenchimento",
116
- "topPaddingTitle": "Preenchimento superior",
117
- "bottomPaddingTitle": "Preenchimento inferior",
118
116
  "dividerStyleTitle": "Estilo do separador",
119
117
  "dividerColorTitle": "Cor do separador",
120
118
  "addItemTitle": "Adicionar item",
@@ -113,8 +113,6 @@
113
113
  "iconFillColorTitle": "Cor de preenchimento do ícone",
114
114
  "iconBackgroundColorTitle": "Cor de fundo do ícone",
115
115
  "paddingTitle": "Preenchimento",
116
- "topPaddingTitle": "Preenchimento superior",
117
- "bottomPaddingTitle": "Preenchimento inferior",
118
116
  "dividerStyleTitle": "Estilo do separador",
119
117
  "dividerColorTitle": "Cor do separador",
120
118
  "addItemTitle": "Adicionar Item",
@@ -56,7 +56,7 @@
56
56
  >
57
57
  <li
58
58
  v-for="(field, index) in fields"
59
- :key="`content-settings-item-field-${id}-${field.name}`"
59
+ :key="`content-settings-item-field-${id}-${index}`"
60
60
  class="tw-cursor-pointer"
61
61
  :class="{
62
62
  'tw-mb-3': index !== fields.length - 1,
@@ -25,8 +25,8 @@
25
25
  >
26
26
  <ul>
27
27
  <li
28
- v-for="field in group.fields"
29
- :key="`content-settings-item-group-field-${id}-${group.id}-${field.name}`"
28
+ v-for="(field, fieldIndex) in group.fields"
29
+ :key="`content-settings-item-group-field-${id}-${group.id}-${fieldIndex}`"
30
30
  >
31
31
  <ContentSettingsItemField
32
32
  v-if="
@@ -45,15 +45,6 @@ export default defineComponent({
45
45
  sliderValue: value,
46
46
  };
47
47
  },
48
- watch: {
49
- // The value can change outside the slider (e.g. a layout switch
50
- // re-applying default padding, or undo) — keep the display in sync.
51
- value(newValue: string | undefined) {
52
- this.sliderValue = this.valueConvertor
53
- ? this.valueConvertor.convert(newValue as any)
54
- : newValue;
55
- },
56
- },
57
48
  computed: {
58
49
  innerMinLength(): number {
59
50
  return this.minLength ?? 0;