@myissue/vue-website-page-builder 3.3.65 → 3.3.68

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 (36) hide show
  1. package/README.md +70 -4
  2. package/dist/vue-website-page-builder.js +14959 -12086
  3. package/dist/vue-website-page-builder.umd.cjs +78 -57
  4. package/package.json +2 -1
  5. package/src/Components/PageBuilder/EditorMenu/Editables/BackgroundColorEditor.vue +2 -2
  6. package/src/Components/PageBuilder/EditorMenu/Editables/BorderRadius.vue +19 -13
  7. package/src/Components/PageBuilder/EditorMenu/Editables/Borders.vue +9 -7
  8. package/src/Components/PageBuilder/EditorMenu/Editables/ClassEditor.vue +8 -7
  9. package/src/Components/PageBuilder/EditorMenu/Editables/ManageBackgroundOpacity.vue +7 -3
  10. package/src/Components/PageBuilder/EditorMenu/Editables/ManageOpacity.vue +5 -3
  11. package/src/Components/PageBuilder/EditorMenu/Editables/Margin.vue +9 -5
  12. package/src/Components/PageBuilder/EditorMenu/Editables/OpacityEditor.vue +1 -1
  13. package/src/Components/PageBuilder/EditorMenu/Editables/Padding.vue +9 -5
  14. package/src/Components/PageBuilder/EditorMenu/Editables/StyleEditor.vue +8 -7
  15. package/src/Components/PageBuilder/EditorMenu/Editables/Typography.vue +25 -9
  16. package/src/Components/PageBuilder/EditorMenu/RightSidebarEditor.vue +9 -12
  17. package/src/Components/PageBuilder/Settings/PageBuilderSettings.vue +3 -3
  18. package/src/Components/PageBuilder/ToolbarOption/ToolbarOption.vue +4 -4
  19. package/src/PageBuilder/PageBuilder.vue +83 -5
  20. package/src/composables/builderInstance.ts +3 -2
  21. package/src/i18n.ts +28 -0
  22. package/src/locales/ar.json +136 -0
  23. package/src/locales/de.json +136 -0
  24. package/src/locales/en.json +136 -0
  25. package/src/locales/es.json +136 -0
  26. package/src/locales/fr.json +136 -0
  27. package/src/locales/hi.json +136 -0
  28. package/src/locales/ja.json +136 -0
  29. package/src/locales/pt.json +136 -0
  30. package/src/locales/ru.json +136 -0
  31. package/src/locales/zh-Hans.json +136 -0
  32. package/src/main.ts +10 -5
  33. package/src/services/PageBuilderService.ts +150 -29
  34. package/src/tests/PageBuilderTest.vue +24 -54
  35. package/src/tests/pageBuilderService.test.ts +7 -1
  36. package/src/types/index.ts +7 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@myissue/vue-website-page-builder",
3
- "version": "3.3.65",
3
+ "version": "3.3.68",
4
4
  "description": "Vue 3 page builder component with drag & drop functionality.",
5
5
  "type": "module",
6
6
  "main": "./dist/vue-website-page-builder.umd.cjs",
@@ -79,6 +79,7 @@
79
79
  "pinia": "^2.1.7",
80
80
  "uuid": "^9.0.0",
81
81
  "vue": "^3.5.13",
82
+ "vue-i18n": "^11.1.9",
82
83
  "vue-website-page-builder": "file:"
83
84
  },
84
85
  "devDependencies": {
@@ -49,7 +49,7 @@ watch(
49
49
  class="pbx-aspect-square pbx-w-6 pbx-h-6 pbx-border pbx-border-gray-800 pbx-rounded-sm"
50
50
  :class="`pbx-bg-${backgroundColor?.replace('pbx-bg-', '')}`"
51
51
  ></div>
52
- <div>Background Color</div>
52
+ <div>{{ $t('backgroundColorEditor.label') }}</div>
53
53
  </div>
54
54
 
55
55
  <span v-if="globalPageLayout" class="material-symbols-outlined"> chevron_right </span>
@@ -99,7 +99,7 @@ watch(
99
99
  >
100
100
  <div v-if="color === 'none'" class="pbx-flex pbx-items-center">
101
101
  <span class="material-symbols-outlined"> ev_shadow </span>
102
- <span class="pbx-ml-3">Transparent</span>
102
+ <span class="pbx-ml-3">{{ $t('backgroundColorEditor.transparent') }}</span>
103
103
  </div>
104
104
  <div v-if="color !== 'none'" class="pbx-flex pbx-items-center">
105
105
  <div
@@ -73,18 +73,22 @@ watch(
73
73
 
74
74
  <template>
75
75
  <EditorAccordion>
76
- <template #title>Border Radius</template>
76
+ <template #title>{{ $t('borderRadius.title') }}</template>
77
77
  <template #content>
78
- <p class="pbx-myPrimaryParagraph pbx-font-medium pbx-py-0 pbx-my-4">Global</p>
78
+ <p class="pbx-myPrimaryParagraph pbx-font-medium pbx-py-0 pbx-my-4">
79
+ {{ $t('borderRadius.global') }}
80
+ </p>
79
81
  <div class="pbx-my-2 pbx-py-2">
80
- <label for="global-border-radius" class="pbx-myPrimaryInputLabel"> Border Radius </label>
82
+ <label for="global-border-radius" class="pbx-myPrimaryInputLabel">{{
83
+ $t('borderRadius.label')
84
+ }}</label>
81
85
  <select
82
86
  id="global-border-radius"
83
87
  v-model="borderRadiusGlobal"
84
88
  class="pbx-myPrimarySelect"
85
89
  @change="pageBuilderService.handleBorderRadiusGlobal(borderRadiusGlobal)"
86
90
  >
87
- <option disabled value="">Select</option>
91
+ <option disabled value="">{{ $t('borderRadius.select') }}</option>
88
92
  <option
89
93
  v-for="borderRadiusGlobal in tailwindBorderRadius.roundedGlobal"
90
94
  :key="borderRadiusGlobal"
@@ -93,10 +97,12 @@ watch(
93
97
  </option>
94
98
  </select>
95
99
  </div>
96
- <p class="pbx-myPrimaryParagraph pbx-font-medium pbx-py-0 pbx-my-4">Specific</p>
100
+ <p class="pbx-myPrimaryParagraph pbx-font-medium pbx-py-0 pbx-my-4">
101
+ {{ $t('borderRadius.specific') }}
102
+ </p>
97
103
  <div class="pbx-my-2 pbx-py-2">
98
104
  <label for="border-radius-top-left" class="pbx-myPrimaryInputLabel">
99
- Border Radius top left
105
+ {{ $t('borderRadius.topLeft') }}
100
106
  </label>
101
107
  <select
102
108
  id="border-radius-top-left"
@@ -104,7 +110,7 @@ watch(
104
110
  class="pbx-myPrimarySelect"
105
111
  @change="pageBuilderService.handleBorderRadiusTopLeft(borderRadiusTopLeft)"
106
112
  >
107
- <option disabled value="">Select</option>
113
+ <option disabled value="">{{ $t('borderRadius.select') }}</option>
108
114
  <option
109
115
  v-for="borderRadiusTopLeft in tailwindBorderRadius.roundedTopLeft"
110
116
  :key="borderRadiusTopLeft"
@@ -115,7 +121,7 @@ watch(
115
121
  </div>
116
122
  <div class="pbx-my-2 pbx-py-2">
117
123
  <label for="border-radius-top-right" class="pbx-myPrimaryInputLabel">
118
- Border Radius top right
124
+ {{ $t('borderRadius.topRight') }}
119
125
  </label>
120
126
  <select
121
127
  id="border-radius-top-right"
@@ -123,7 +129,7 @@ watch(
123
129
  class="pbx-myPrimarySelect"
124
130
  @change="pageBuilderService.handleBorderRadiusTopRight(borderRadiusTopRight)"
125
131
  >
126
- <option disabled value="">Select</option>
132
+ <option disabled value="">{{ $t('borderRadius.select') }}</option>
127
133
  <option
128
134
  v-for="borderRadiusTopRight in tailwindBorderRadius.roundedTopRight"
129
135
  :key="borderRadiusTopRight"
@@ -134,7 +140,7 @@ watch(
134
140
  </div>
135
141
  <div class="pbx-my-2 pbx-py-2">
136
142
  <label for="border-radius-bottom-left" class="pbx-myPrimaryInputLabel">
137
- Border Radius bottom left
143
+ {{ $t('borderRadius.bottomLeft') }}
138
144
  </label>
139
145
  <select
140
146
  id="border-radius-bottom-left"
@@ -142,7 +148,7 @@ watch(
142
148
  class="pbx-myPrimarySelect"
143
149
  @change="pageBuilderService.handleBorderRadiusBottomleft(borderRadiusBottomleft)"
144
150
  >
145
- <option disabled value="">Select</option>
151
+ <option disabled value="">{{ $t('borderRadius.select') }}</option>
146
152
  <option
147
153
  v-for="borderRadiusBottomleft in tailwindBorderRadius.roundedBottomLeft"
148
154
  :key="borderRadiusBottomleft"
@@ -153,7 +159,7 @@ watch(
153
159
  </div>
154
160
  <div class="pbx-my-2 pbx-py-2">
155
161
  <label for="border-radius-bottom-right" class="pbx-myPrimaryInputLabel">
156
- Border Radius bottom right
162
+ {{ $t('borderRadius.bottomRight') }}
157
163
  </label>
158
164
  <select
159
165
  id="border-radius-bottom-right"
@@ -161,7 +167,7 @@ watch(
161
167
  class="pbx-myPrimarySelect"
162
168
  @change="pageBuilderService.handleBorderRadiusBottomRight(borderRadiusBottomRight)"
163
169
  >
164
- <option disabled value="">Select</option>
170
+ <option disabled value="">{{ $t('borderRadius.select') }}</option>
165
171
  <option
166
172
  v-for="borderRadiusBottomRight in tailwindBorderRadius.roundedBottomRight"
167
173
  :key="borderRadiusBottomRight"
@@ -52,19 +52,21 @@ watch(
52
52
 
53
53
  <template>
54
54
  <EditorAccordion>
55
- <template #title>Border Style, Width & Color</template>
55
+ <template #title>{{ $t('borders.title') }}</template>
56
56
  <template #content>
57
- <p class="pbx-myPrimaryParagraph pbx-font-medium pbx-py-0 pbx-my-4">Border</p>
57
+ <p class="pbx-myPrimaryParagraph pbx-font-medium pbx-py-0 pbx-my-4">
58
+ {{ $t('borders.border') }}
59
+ </p>
58
60
 
59
61
  <div class="pbx-my-2 pbx-py-2">
60
- <label for="border-style" class="pbx-myPrimaryInputLabel"> Border Style </label>
62
+ <label for="border-style" class="pbx-myPrimaryInputLabel">{{ $t('borders.style') }}</label>
61
63
  <select
62
64
  id="border-style"
63
65
  v-model="borderStyle"
64
66
  class="pbx-myPrimarySelect"
65
67
  @change="pageBuilderService.handleBorderStyle(borderStyle)"
66
68
  >
67
- <option disabled value="">Select</option>
69
+ <option disabled value="">{{ $t('borders.select') }}</option>
68
70
  <option
69
71
  v-for="borderStyle in tailwindBorderStyleWidthPlusColor.borderStyle"
70
72
  :key="borderStyle"
@@ -74,14 +76,14 @@ watch(
74
76
  </select>
75
77
  </div>
76
78
  <div class="pbx-my-2 pbx-py-2">
77
- <label for="border-width" class="pbx-myPrimaryInputLabel"> Border Width </label>
79
+ <label for="border-width" class="pbx-myPrimaryInputLabel">{{ $t('borders.width') }}</label>
78
80
  <select
79
81
  id="border-width"
80
82
  v-model="borderWidth"
81
83
  class="pbx-myPrimarySelect"
82
84
  @change="pageBuilderService.handleBorderWidth(borderWidth)"
83
85
  >
84
- <option disabled value="">Select</option>
86
+ <option disabled value="">{{ $t('borders.select') }}</option>
85
87
  <option
86
88
  v-for="borderWidth in tailwindBorderStyleWidthPlusColor.borderWidth"
87
89
  :key="borderWidth"
@@ -91,7 +93,7 @@ watch(
91
93
  </select>
92
94
  </div>
93
95
 
94
- <label for="border-color" class="pbx-myPrimaryInputLabel"> Border Color </label>
96
+ <label for="border-color" class="pbx-myPrimaryInputLabel">{{ $t('borders.color') }}</label>
95
97
  <Listbox as="div" v-model="borderColor">
96
98
  <div class="pbx-relative pbx-mt-2">
97
99
  <ListboxButton class="pbx-myPrimarySelect" id="border-color">
@@ -50,11 +50,10 @@ const handleAddClasses = async () => {
50
50
 
51
51
  <template>
52
52
  <EditorAccordion>
53
- <template #title>Generated CSS</template>
53
+ <template #title>{{ $t('classEditor.title') }}</template>
54
54
  <template #content>
55
55
  <label class="pbx-myPrimaryInputLabel pbx-my-4">
56
- This is the CSS applied by the builder. Add your own CSS and press Enter to apply it to the
57
- selected element.
56
+ {{ $t('classEditor.info') }}
58
57
  </label>
59
58
 
60
59
  <div class="pbx-flex pbx-flex-row pbx-flex-wrap pbx-gap-2 pbx-mt-2 pbx-mb-4">
@@ -79,22 +78,24 @@ const handleAddClasses = async () => {
79
78
 
80
79
  <div>
81
80
  <label for="custom-css" class="pbx-myPrimaryInputLabel">
82
- Add your CSS.
81
+ {{ $t('classEditor.add') }}
83
82
  <br />
84
- The pbx- prefix is added automatically.
83
+ {{ $t('classEditor.prefix') }}
85
84
  </label>
86
85
  <div class="pbx-flex pbx-gap-2 pbx-item-center">
87
86
  <input
88
87
  id="custom-css"
89
88
  v-model="inputClass"
90
89
  type="text"
91
- placeholder="Type class"
90
+ :placeholder="$t('classEditor.placeholder')"
92
91
  @keydown.enter="handleAddClasses()"
93
92
  autocomplete="off"
94
93
  class="pbx-myPrimaryInput"
95
94
  />
96
95
 
97
- <button @click="handleAddClasses" type="button" class="pbx-myPrimaryButton">Add</button>
96
+ <button @click="handleAddClasses" type="button" class="pbx-myPrimaryButton">
97
+ {{ $t('classEditor.addButton') }}
98
+ </button>
98
99
  </div>
99
100
  </div>
100
101
  <p v-if="errorMessage" class="pbx-myPrimaryInputError">{{ errorMessage }}</p>
@@ -32,7 +32,9 @@ watch(
32
32
 
33
33
  <template>
34
34
  <div class="pbx-my-2 pbx-py-2">
35
- <label for="bg-opacity" class="pbx-myPrimaryInputLabel"> Background Opacity</label>
35
+ <label for="bg-opacity" class="pbx-myPrimaryInputLabel">{{
36
+ $t('backgroundOpacity.label')
37
+ }}</label>
36
38
 
37
39
  <Listbox as="div" v-model="opacityVueModel">
38
40
  <div class="pbx-relative">
@@ -51,7 +53,7 @@ watch(
51
53
  ></div>
52
54
 
53
55
  <span class="pbx-block pbx-truncate" :class="[opacityVueModel !== 'none' ? '' : '']">{{
54
- opacityVueModel === 'none' ? 'Transparent' : opacityVueModel
56
+ opacityVueModel === 'none' ? $t('backgroundOpacity.transparent') : opacityVueModel
55
57
  }}</span>
56
58
  </span>
57
59
  <span
@@ -97,7 +99,9 @@ watch(
97
99
  class="pbx-aspect-square pbx-w-6 pbx-h-6 pbx-bg-gray-950"
98
100
  :class="`${backgroundOpacity}`"
99
101
  ></div>
100
- <span v-if="backgroundOpacity === 'none'" class="pbx-ml-3">Transparent</span>
102
+ <span v-if="backgroundOpacity === 'none'" class="pbx-ml-3">{{
103
+ $t('backgroundOpacity.transparent')
104
+ }}</span>
101
105
  <span v-if="backgroundOpacity !== 'none'" class="pbx-ml-3">{{
102
106
  backgroundOpacity
103
107
  }}</span>
@@ -31,7 +31,7 @@ watch(
31
31
 
32
32
  <template>
33
33
  <div class="pbx-my-2 pbx-py-2">
34
- <label for="default-opacity" class="pbx-myPrimaryInputLabel"> Opacity</label>
34
+ <label for="default-opacity" class="pbx-myPrimaryInputLabel">{{ $t('opacity.label') }}</label>
35
35
 
36
36
  <Listbox as="div" v-model="opacityVueModel">
37
37
  <div class="pbx-relative">
@@ -50,7 +50,7 @@ watch(
50
50
  ></div>
51
51
 
52
52
  <span class="pbx-block pbx-truncate" :class="[opacityVueModel !== 'none' ? '' : '']">{{
53
- opacityVueModel === 'none' ? 'Transparent' : opacityVueModel
53
+ opacityVueModel === 'none' ? $t('opacity.transparent') : opacityVueModel
54
54
  }}</span>
55
55
  </span>
56
56
  <span
@@ -96,7 +96,9 @@ watch(
96
96
  class="pbx-aspect-square pbx-w-6 pbx-h-6 pbx-bg-gray-950"
97
97
  :class="`${elementOpacity}`"
98
98
  ></div>
99
- <span v-if="elementOpacity === 'none'" class="pbx-ml-3">Transparent</span>
99
+ <span v-if="elementOpacity === 'none'" class="pbx-ml-3">{{
100
+ $t('opacity.transparent')
101
+ }}</span>
100
102
  <span v-if="elementOpacity !== 'none'" class="pbx-ml-3">{{
101
103
  elementOpacity
102
104
  }}</span>
@@ -61,17 +61,19 @@ watch(
61
61
  </script>
62
62
  <template>
63
63
  <EditorAccordion>
64
- <template #title>Margin</template>
64
+ <template #title>{{ $t('margin.title') }}</template>
65
65
  <template #content>
66
66
  <div class="pbx-my-2 pbx-py-2">
67
- <label for="vertical-margin" class="pbx-myPrimaryInputLabel"> Vertical Margin </label>
67
+ <label for="vertical-margin" class="pbx-myPrimaryInputLabel">{{
68
+ $t('margin.vertical')
69
+ }}</label>
68
70
  <select
69
71
  id="vertical-margin"
70
72
  v-model="fontVerticalMargin"
71
73
  class="pbx-myPrimarySelect"
72
74
  @change="pageBuilderService.handleVerticalMargin(fontVerticalMargin)"
73
75
  >
74
- <option disabled value="">Select</option>
76
+ <option disabled value="">{{ $t('margin.select') }}</option>
75
77
  <option
76
78
  v-for="verticalMargin in tailwindPaddingPlusMargin.verticalMargin"
77
79
  :key="verticalMargin"
@@ -82,14 +84,16 @@ watch(
82
84
  </div>
83
85
  <hr />
84
86
  <div class="pbx-my-2 pbx-py-2">
85
- <label for="horizontal-margin" class="pbx-myPrimaryInputLabel"> Horizontal Margin </label>
87
+ <label for="horizontal-margin" class="pbx-myPrimaryInputLabel">{{
88
+ $t('margin.horizontal')
89
+ }}</label>
86
90
  <select
87
91
  id="horizontal-margin"
88
92
  v-model="fontHorizontalMargin"
89
93
  class="pbx-myPrimarySelect"
90
94
  @change="pageBuilderService.handleHorizontalMargin(fontHorizontalMargin)"
91
95
  >
92
- <option disabled value="">Select</option>
96
+ <option disabled value="">{{ $t('margin.select') }}</option>
93
97
  <option
94
98
  v-for="horizontalMargin in tailwindPaddingPlusMargin.horizontalMargin"
95
99
  :key="horizontalMargin"
@@ -6,7 +6,7 @@ import ManageOpacity from './ManageOpacity.vue'
6
6
 
7
7
  <template>
8
8
  <EditorAccordion>
9
- <template #title>Opacity & Transparency </template>
9
+ <template #title>{{ $t('opacityEditor.title') }}</template>
10
10
  <template #content>
11
11
  <ManageOpacity></ManageOpacity>
12
12
  <hr />
@@ -61,17 +61,19 @@ watch(
61
61
  </script>
62
62
  <template>
63
63
  <EditorAccordion>
64
- <template #title>Padding</template>
64
+ <template #title>{{ $t('padding.title') }}</template>
65
65
  <template #content>
66
66
  <div class="pbx-my-2 pbx-py-2">
67
- <label for="vertical-padding" class="pbx-myPrimaryInputLabel"> Vertical Padding </label>
67
+ <label for="vertical-padding" class="pbx-myPrimaryInputLabel">{{
68
+ $t('padding.vertical')
69
+ }}</label>
68
70
  <select
69
71
  id="vertical-padding"
70
72
  v-model="fontVerticalPadding"
71
73
  class="pbx-myPrimarySelect"
72
74
  @change="pageBuilderService.handleVerticalPadding(fontVerticalPadding)"
73
75
  >
74
- <option disabled value="">Select</option>
76
+ <option disabled value="">{{ $t('padding.select') }}</option>
75
77
  <option
76
78
  v-for="verticalPadding in tailwindPaddingPlusMargin.verticalPadding"
77
79
  :key="verticalPadding"
@@ -82,14 +84,16 @@ watch(
82
84
  </div>
83
85
  <hr />
84
86
  <div class="pbx-my-2 pbx-py-2">
85
- <label for="horizontal-padding" class="pbx-myPrimaryInputLabel"> Horizontal Padding </label>
87
+ <label for="horizontal-padding" class="pbx-myPrimaryInputLabel">{{
88
+ $t('padding.horizontal')
89
+ }}</label>
86
90
  <select
87
91
  id="horizontal-padding"
88
92
  v-model="fontHorizontalPadding"
89
93
  class="pbx-myPrimarySelect"
90
94
  @change="pageBuilderService.handleHorizontalPadding(fontHorizontalPadding)"
91
95
  >
92
- <option disabled value="">Select</option>
96
+ <option disabled value="">{{ $t('padding.select') }}</option>
93
97
  <option
94
98
  v-for="horizontalPadding in tailwindPaddingPlusMargin.horizontalPadding"
95
99
  :key="horizontalPadding"
@@ -56,11 +56,10 @@ const handleAddStyle = async () => {
56
56
 
57
57
  <template>
58
58
  <EditorAccordion>
59
- <template #title>Inline Styles</template>
59
+ <template #title>{{ $t('styleEditor.title') }}</template>
60
60
  <template #content>
61
61
  <label class="pbx-myPrimaryInputLabel pbx-my-4">
62
- These are the inline styles applied by the builder. Add your own styles and press Enter to
63
- apply them to the selected element.
62
+ {{ $t('styleEditor.info') }}
64
63
  </label>
65
64
 
66
65
  <div class="pbx-flex pbx-flex-row pbx-flex-wrap pbx-gap-2 pbx-mt-2 pbx-mb-4">
@@ -83,14 +82,14 @@ const handleAddStyle = async () => {
83
82
 
84
83
  <div>
85
84
  <label for="custom-style-property" class="pbx-myPrimaryInputLabel">
86
- Add your own style.
85
+ {{ $t('styleEditor.add') }}
87
86
  </label>
88
87
  <div class="pbx-flex pbx-gap-2 pbx-flex-col pbx-item-center">
89
88
  <input
90
89
  id="custom-style-property"
91
90
  v-model="inputProperty"
92
91
  type="text"
93
- placeholder="property"
92
+ :placeholder="$t('styleEditor.propertyPlaceholder')"
94
93
  @keydown.enter.prevent="handleEnterOnProperty"
95
94
  autocomplete="off"
96
95
  class="pbx-myPrimaryInput"
@@ -100,13 +99,15 @@ const handleAddStyle = async () => {
100
99
  ref="valueInputRef"
101
100
  v-model="inputValue"
102
101
  type="text"
103
- placeholder="value"
102
+ :placeholder="$t('styleEditor.valuePlaceholder')"
104
103
  @keydown.enter="handleAddStyle"
105
104
  autocomplete="off"
106
105
  class="pbx-myPrimaryInput"
107
106
  />
108
107
 
109
- <button @click="handleAddStyle" type="button" class="pbx-myPrimaryButton">Add</button>
108
+ <button @click="handleAddStyle" type="button" class="pbx-myPrimaryButton">
109
+ {{ $t('styleEditor.addButton') }}
110
+ </button>
110
111
  </div>
111
112
  </div>
112
113
  <p v-if="errorMessage" class="pbx-myPrimaryInputError">{{ errorMessage }}</p>
@@ -99,13 +99,17 @@ watch(
99
99
 
100
100
  <template>
101
101
  <EditorAccordion>
102
- <template #title> Typographies </template>
102
+ <template #title>{{ $t('typography.title') }}</template>
103
103
  <template #content>
104
104
  <!-- FONT SIZES -->
105
- <p class="pbx-myPrimaryParagraph pbx-font-medium pbx-py-0 pbx-my-4">Font Appearance</p>
105
+ <p class="pbx-myPrimaryParagraph pbx-font-medium pbx-py-0 pbx-my-4">
106
+ {{ $t('typography.appearance') }}
107
+ </p>
106
108
  <template v-if="false">
107
109
  <div class="pbx-my-2 pbx-py-2">
108
- <label for="font-base" class="pbx-myPrimaryInputLabel"> Font Size </label>
110
+ <label for="font-base" class="pbx-myPrimaryInputLabel">{{
111
+ $t('typography.fontSize')
112
+ }}</label>
109
113
  <select
110
114
  id="font-base"
111
115
  v-model="fontBase"
@@ -120,7 +124,9 @@ watch(
120
124
  </div>
121
125
  </template>
122
126
  <div class="pbx-my-2 pbx-py-2">
123
- <label for="font-desktop" class="pbx-myPrimaryInputLabel"> Font size </label>
127
+ <label for="font-desktop" class="pbx-myPrimaryInputLabel">{{
128
+ $t('typography.fontSize')
129
+ }}</label>
124
130
  <select
125
131
  id="font-desktop"
126
132
  v-model="fontDesktop"
@@ -135,7 +141,9 @@ watch(
135
141
  </div>
136
142
  <template v-if="false">
137
143
  <div class="pbx-my-2 pbx-py-2">
138
- <label for="font-tablet" class="pbx-myPrimaryInputLabel"> Font tablet size </label>
144
+ <label for="font-tablet" class="pbx-myPrimaryInputLabel">{{
145
+ $t('typography.fontTabletSize')
146
+ }}</label>
139
147
  <select
140
148
  id="font-tablet"
141
149
  v-model="fontTablet"
@@ -149,7 +157,9 @@ watch(
149
157
  </select>
150
158
  </div>
151
159
  <div class="pbx-my-2 pbx-py-2">
152
- <label for="font-mobile" class="pbx-myPrimaryInputLabel"> Font small screens </label>
160
+ <label for="font-mobile" class="pbx-myPrimaryInputLabel">{{
161
+ $t('typography.fontMobileSize')
162
+ }}</label>
153
163
  <select
154
164
  id="font-mobile"
155
165
  v-model="fontMobile"
@@ -166,7 +176,9 @@ watch(
166
176
  <hr />
167
177
 
168
178
  <div class="pbx-my-2 pbx-py-2">
169
- <label for="font-weight" class="pbx-myPrimaryInputLabel"> Font weight </label>
179
+ <label for="font-weight" class="pbx-myPrimaryInputLabel">{{
180
+ $t('typography.fontWeight')
181
+ }}</label>
170
182
  <select
171
183
  id="font-weight"
172
184
  v-model="fontWeight"
@@ -183,7 +195,9 @@ watch(
183
195
 
184
196
  <!-- FONT FAMILY -->
185
197
  <div class="pbx-my-2 pbx-py-2">
186
- <label for="font-family" class="pbx-myPrimaryInputLabel"> Font family </label>
198
+ <label for="font-family" class="pbx-myPrimaryInputLabel">{{
199
+ $t('typography.fontFamily')
200
+ }}</label>
187
201
  <select
188
202
  id="font-family"
189
203
  v-model="fontFamily"
@@ -199,7 +213,9 @@ watch(
199
213
  <hr />
200
214
 
201
215
  <div class="pbx-my-2 pbx-py-2">
202
- <label for="font-style" class="pbx-myPrimaryInputLabel"> Font Style </label>
216
+ <label for="font-style" class="pbx-myPrimaryInputLabel">{{
217
+ $t('typography.fontStyle')
218
+ }}</label>
203
219
  <select
204
220
  id="font-style"
205
221
  v-model="fontStyle"
@@ -133,7 +133,7 @@ const handleCloseGlobalPageStyles = async function () {
133
133
  <span class="material-symbols-outlined"> close </span>
134
134
  </button>
135
135
  <p class="pbx-font-medium pbx-text-sm">
136
- Editing
136
+ {{ $t('rightSidebar.editing') }}
137
137
  <span class="pbx-lowercase">&lt;{{ elementTag }}&gt;</span>
138
138
  </p>
139
139
  </div>
@@ -181,16 +181,15 @@ const handleCloseGlobalPageStyles = async function () {
181
181
  <!-- Global Page Styles -->
182
182
  <article class="pbx-my-1 pbx-bg-white">
183
183
  <EditorAccordion>
184
- <template #title>Global Page Styles</template>
184
+ <template #title>{{ $t('rightSidebar.globalPageStylesTitle') }}</template>
185
185
  <template #content>
186
186
  <label class="pbx-myPrimaryInputLabel pbx-my-4">
187
- Apply styles that affect the entire page. These settings include global font family,
188
- text color, background color, and other universal styles that apply to all sections.
187
+ {{ $t('rightSidebar.globalPageStylesDescription') }}
189
188
  </label>
190
189
 
191
190
  <div class="pbx-mt-4">
192
191
  <button @click="handleUpdatePageStyles" type="button" class="pbx-myPrimaryButton">
193
- Update Page Styles
192
+ {{ $t('rightSidebar.updatePageStyles') }}
194
193
  </button>
195
194
  </div>
196
195
  </template>
@@ -204,15 +203,14 @@ const handleCloseGlobalPageStyles = async function () {
204
203
  class="pbx-my-1 pbx-bg-white"
205
204
  >
206
205
  <EditorAccordion>
207
- <template #title>Download HTML</template>
206
+ <template #title>{{ $t('rightSidebar.downloadHtmlTitle') }}</template>
208
207
  <template #content>
209
208
  <label class="pbx-myPrimaryInputLabel pbx-my-4">
210
- Export the entire page as a standalone HTML file. This includes all sections, content,
211
- and applied styles, making it ready for use or integration elsewhere.
209
+ {{ $t('rightSidebar.downloadHtmlDescription') }}
212
210
  </label>
213
211
  <div class="pbx-mt-4">
214
212
  <button @click="handleDownloadHTML" type="button" class="pbx-myPrimaryButton">
215
- Download HTML file
213
+ {{ $t('rightSidebar.downloadHtmlButton') }}
216
214
  </button>
217
215
  </div>
218
216
  </template>
@@ -225,7 +223,7 @@ const handleCloseGlobalPageStyles = async function () {
225
223
  maxWidth="md"
226
224
  minHeight="pbx-min-h-[65vh] pbx-max-h-[65vh]"
227
225
  :showModalBuilder="showModalGlobalPageStyles"
228
- title="Global Page Styles"
226
+ :title="$t('rightSidebar.globalPageStylesTitle')"
229
227
  @closeMainModalBuilder="handleCloseGlobalPageStyles"
230
228
  >
231
229
  <div class="pbx-flex pbx-flex-col pbx-gap-2 pbx-pt-4 pbx-pb-2">
@@ -244,8 +242,7 @@ const handleCloseGlobalPageStyles = async function () {
244
242
  <div v-if="!isLoadingPageStyles && showModalGlobalPageStyles" class="pbx-pb-12">
245
243
  <div>
246
244
  <p class="pbx-myPrimaryParagraph">
247
- Apply styles that affect the entire page. These settings include global font family,
248
- text color, background color, and other universal styles that apply to all sections.
245
+ {{ $t('rightSidebar.globalPageStylesDescription') }}
249
246
  </p>
250
247
  <article class="pbx-my-1 pbx-bg-gray-100">
251
248
  <Typography></Typography>
@@ -299,7 +299,7 @@ const getPageBuilderConfig = computed(() => {
299
299
  class="pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-text-gray-500"
300
300
  >
301
301
  <div class="pbx-min-w-[30rem] pbx-w-max">
302
- {{ getPageBuilderConfig.userSettings.language }}
302
+ {{ getPageBuilderConfig.userSettings.language?.default }}
303
303
  </div>
304
304
  </td>
305
305
  </tr>
@@ -317,8 +317,8 @@ const getPageBuilderConfig = computed(() => {
317
317
  class="pbx-inline-flex pbx-items-center pbx-px-2.5 pbx-py-0.5 pbx-rounded-full pbx-text-xs pbx-font-medium"
318
318
  :class="
319
319
  getPageBuilderConfig.userSettings.autoSave
320
- ? 'bg-green-100 text-green-800'
321
- : 'bg-red-100 text-red-800'
320
+ ? 'pbx-bg-green-100 pbx-text-green-800'
321
+ : 'pbx-bg-red-100 pbx-text-red-800'
322
322
  "
323
323
  >
324
324
  {{