@duongthiu/onex-core 0.1.0 → 0.1.1

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 (190) hide show
  1. package/README.md +44 -65
  2. package/THEME_API.md +36 -33
  3. package/dist/api.js +14 -0
  4. package/dist/api.js.map +1 -0
  5. package/dist/api.mjs +5 -0
  6. package/dist/api.mjs.map +1 -0
  7. package/dist/auth.js +23 -0
  8. package/dist/auth.js.map +1 -0
  9. package/dist/auth.mjs +6 -0
  10. package/dist/auth.mjs.map +1 -0
  11. package/dist/blog.js +22 -0
  12. package/dist/blog.js.map +1 -0
  13. package/dist/blog.mjs +5 -0
  14. package/dist/blog.mjs.map +1 -0
  15. package/dist/cart.js +27 -0
  16. package/dist/cart.js.map +1 -0
  17. package/dist/cart.mjs +6 -0
  18. package/dist/cart.mjs.map +1 -0
  19. package/dist/chunk-2CSWHI3L.js +210 -0
  20. package/dist/chunk-2CSWHI3L.js.map +1 -0
  21. package/dist/chunk-2FGHIDUV.js +99 -0
  22. package/dist/chunk-2FGHIDUV.js.map +1 -0
  23. package/dist/chunk-2NMEKWO5.js +40 -0
  24. package/dist/chunk-2NMEKWO5.js.map +1 -0
  25. package/dist/chunk-43BVHGDT.mjs +131 -0
  26. package/dist/chunk-43BVHGDT.mjs.map +1 -0
  27. package/dist/chunk-4JVQJI3I.mjs +290 -0
  28. package/dist/chunk-4JVQJI3I.mjs.map +1 -0
  29. package/dist/chunk-5N2EKK5O.js +9550 -0
  30. package/dist/chunk-5N2EKK5O.js.map +1 -0
  31. package/dist/chunk-5T6NDVSN.js +76 -0
  32. package/dist/chunk-5T6NDVSN.js.map +1 -0
  33. package/dist/chunk-73AINNCI.mjs +201 -0
  34. package/dist/chunk-73AINNCI.mjs.map +1 -0
  35. package/dist/chunk-AIXBDAVP.mjs +61 -0
  36. package/dist/chunk-AIXBDAVP.mjs.map +1 -0
  37. package/dist/chunk-ALYN5HAC.js +210 -0
  38. package/dist/chunk-ALYN5HAC.js.map +1 -0
  39. package/dist/chunk-AREMJR3Q.js +36 -0
  40. package/dist/chunk-AREMJR3Q.js.map +1 -0
  41. package/dist/chunk-DXAI6XOI.mjs +33 -0
  42. package/dist/chunk-DXAI6XOI.mjs.map +1 -0
  43. package/dist/chunk-F5TFNWFJ.mjs +257 -0
  44. package/dist/chunk-F5TFNWFJ.mjs.map +1 -0
  45. package/dist/chunk-FQ7FWUZN.js +265 -0
  46. package/dist/chunk-FQ7FWUZN.js.map +1 -0
  47. package/dist/{chunk-3SZX6LHT.js → chunk-J27VGXJH.js} +2 -24
  48. package/dist/chunk-J27VGXJH.js.map +1 -0
  49. package/dist/chunk-JZ46LLTZ.js +121 -0
  50. package/dist/chunk-JZ46LLTZ.js.map +1 -0
  51. package/dist/chunk-K24UHN6G.mjs +76 -0
  52. package/dist/chunk-K24UHN6G.mjs.map +1 -0
  53. package/dist/chunk-KCQGGU5R.mjs +344 -0
  54. package/dist/chunk-KCQGGU5R.mjs.map +1 -0
  55. package/dist/chunk-MT22NYKT.mjs +117 -0
  56. package/dist/chunk-MT22NYKT.mjs.map +1 -0
  57. package/dist/chunk-NDD472IZ.js +85 -0
  58. package/dist/chunk-NDD472IZ.js.map +1 -0
  59. package/dist/chunk-NHOIGGYU.mjs +833 -0
  60. package/dist/chunk-NHOIGGYU.mjs.map +1 -0
  61. package/dist/chunk-O3XR7TW3.mjs +12 -0
  62. package/dist/chunk-O3XR7TW3.mjs.map +1 -0
  63. package/dist/chunk-OAPYSC2X.mjs +206 -0
  64. package/dist/chunk-OAPYSC2X.mjs.map +1 -0
  65. package/dist/{chunk-XE4EOKS4.mjs → chunk-ONJREDYY.mjs} +3 -23
  66. package/dist/chunk-ONJREDYY.mjs.map +1 -0
  67. package/dist/chunk-OVT2LUAM.js +197 -0
  68. package/dist/chunk-OVT2LUAM.js.map +1 -0
  69. package/dist/chunk-OWNGNGKL.js +331 -0
  70. package/dist/chunk-OWNGNGKL.js.map +1 -0
  71. package/dist/chunk-P7SXNZSV.js +298 -0
  72. package/dist/chunk-P7SXNZSV.js.map +1 -0
  73. package/dist/chunk-PFJOL3HI.mjs +71 -0
  74. package/dist/chunk-PFJOL3HI.mjs.map +1 -0
  75. package/dist/chunk-PPULMWJ6.js +295 -0
  76. package/dist/chunk-PPULMWJ6.js.map +1 -0
  77. package/dist/chunk-RGIVKACG.js +359 -0
  78. package/dist/chunk-RGIVKACG.js.map +1 -0
  79. package/dist/chunk-RPP5K2LP.js +870 -0
  80. package/dist/chunk-RPP5K2LP.js.map +1 -0
  81. package/dist/{chunk-7EON6Q4L.mjs → chunk-RUCHWUD7.mjs} +7651 -6370
  82. package/dist/chunk-RUCHWUD7.mjs.map +1 -0
  83. package/dist/chunk-SEVUIX4H.js +137 -0
  84. package/dist/chunk-SEVUIX4H.js.map +1 -0
  85. package/dist/chunk-SK2FSHFM.mjs +208 -0
  86. package/dist/chunk-SK2FSHFM.mjs.map +1 -0
  87. package/dist/chunk-T6EJ2GAV.mjs +294 -0
  88. package/dist/chunk-T6EJ2GAV.mjs.map +1 -0
  89. package/dist/chunk-ULBDOFZI.mjs +302 -0
  90. package/dist/chunk-ULBDOFZI.mjs.map +1 -0
  91. package/dist/chunk-V3JIELNV.js +241 -0
  92. package/dist/chunk-V3JIELNV.js.map +1 -0
  93. package/dist/chunk-V5E2KWMA.mjs +238 -0
  94. package/dist/chunk-V5E2KWMA.mjs.map +1 -0
  95. package/dist/chunk-VJA3ER6A.js +14 -0
  96. package/dist/chunk-VJA3ER6A.js.map +1 -0
  97. package/dist/chunk-VLI7ULX5.js +66 -0
  98. package/dist/chunk-VLI7ULX5.js.map +1 -0
  99. package/dist/chunk-WFGS5OFH.mjs +189 -0
  100. package/dist/chunk-WFGS5OFH.mjs.map +1 -0
  101. package/dist/chunk-WVC5GP24.mjs +96 -0
  102. package/dist/chunk-WVC5GP24.mjs.map +1 -0
  103. package/dist/chunk-YOSPWY5K.mjs +36 -0
  104. package/dist/chunk-YOSPWY5K.mjs.map +1 -0
  105. package/dist/chunk-ZFFXXLX7.js +205 -0
  106. package/dist/chunk-ZFFXXLX7.js.map +1 -0
  107. package/dist/client.js +512 -249
  108. package/dist/client.mjs +21 -2
  109. package/dist/components.js +393 -0
  110. package/dist/components.js.map +1 -0
  111. package/dist/components.mjs +8 -0
  112. package/dist/components.mjs.map +1 -0
  113. package/dist/config.js +17 -0
  114. package/dist/config.js.map +1 -0
  115. package/dist/config.mjs +4 -0
  116. package/dist/config.mjs.map +1 -0
  117. package/dist/contact.js +22 -0
  118. package/dist/contact.js.map +1 -0
  119. package/dist/contact.mjs +5 -0
  120. package/dist/contact.mjs.map +1 -0
  121. package/dist/contexts.js +51 -0
  122. package/dist/contexts.js.map +1 -0
  123. package/dist/contexts.mjs +6 -0
  124. package/dist/contexts.mjs.map +1 -0
  125. package/dist/finance.js +26 -0
  126. package/dist/finance.js.map +1 -0
  127. package/dist/finance.mjs +5 -0
  128. package/dist/finance.mjs.map +1 -0
  129. package/dist/icons.js +15 -0
  130. package/dist/icons.js.map +1 -0
  131. package/dist/icons.mjs +4 -0
  132. package/dist/icons.mjs.map +1 -0
  133. package/dist/index.js +512 -249
  134. package/dist/index.js.map +1 -1
  135. package/dist/index.mjs +21 -2
  136. package/dist/index.mjs.map +1 -1
  137. package/dist/internal.js +1437 -0
  138. package/dist/internal.js.map +1 -0
  139. package/dist/internal.mjs +1404 -0
  140. package/dist/internal.mjs.map +1 -0
  141. package/dist/motion.js +51 -0
  142. package/dist/motion.js.map +1 -0
  143. package/dist/motion.mjs +38 -0
  144. package/dist/motion.mjs.map +1 -0
  145. package/dist/orders.js +22 -0
  146. package/dist/orders.js.map +1 -0
  147. package/dist/orders.mjs +5 -0
  148. package/dist/orders.mjs.map +1 -0
  149. package/dist/products.js +27 -0
  150. package/dist/products.js.map +1 -0
  151. package/dist/products.mjs +6 -0
  152. package/dist/products.mjs.map +1 -0
  153. package/dist/registry.js +44 -0
  154. package/dist/registry.js.map +1 -0
  155. package/dist/registry.mjs +7 -0
  156. package/dist/registry.mjs.map +1 -0
  157. package/dist/renderers.js +51 -0
  158. package/dist/renderers.js.map +1 -0
  159. package/dist/renderers.mjs +6 -0
  160. package/dist/renderers.mjs.map +1 -0
  161. package/dist/server.js +11 -189
  162. package/dist/server.js.map +1 -1
  163. package/dist/server.mjs +3 -186
  164. package/dist/server.mjs.map +1 -1
  165. package/dist/types.js +37 -0
  166. package/dist/types.js.map +1 -0
  167. package/dist/types.mjs +4 -0
  168. package/dist/types.mjs.map +1 -0
  169. package/dist/utils.js +160 -0
  170. package/dist/utils.js.map +1 -0
  171. package/dist/utils.mjs +7 -0
  172. package/dist/utils.mjs.map +1 -0
  173. package/dist/wrappers.js +104 -0
  174. package/dist/wrappers.js.map +1 -0
  175. package/dist/wrappers.mjs +96 -0
  176. package/dist/wrappers.mjs.map +1 -0
  177. package/package.json +112 -9
  178. package/dist/api-vuL1Eg5L.d.mts +0 -2961
  179. package/dist/api-vuL1Eg5L.d.ts +0 -2961
  180. package/dist/chunk-3SZX6LHT.js.map +0 -1
  181. package/dist/chunk-7EON6Q4L.mjs.map +0 -1
  182. package/dist/chunk-WDY773GJ.js +0 -8308
  183. package/dist/chunk-WDY773GJ.js.map +0 -1
  184. package/dist/chunk-XE4EOKS4.mjs.map +0 -1
  185. package/dist/client.d.mts +0 -1461
  186. package/dist/client.d.ts +0 -1461
  187. package/dist/index.d.mts +0 -125
  188. package/dist/index.d.ts +0 -125
  189. package/dist/server.d.mts +0 -70
  190. package/dist/server.d.ts +0 -70
@@ -0,0 +1,1404 @@
1
+ "use client";
2
+ import { useFinance } from './chunk-PFJOL3HI.mjs';
3
+ import { useContact } from './chunk-MT22NYKT.mjs';
4
+ import { useBlog } from './chunk-OAPYSC2X.mjs';
5
+ import { useAuth } from './chunk-V5E2KWMA.mjs';
6
+ import './chunk-YOSPWY5K.mjs';
7
+
8
+ // src/app-stubs.ts
9
+ function ensureHeaderComponents(section) {
10
+ if (section.components && section.components.length > 0) {
11
+ return section.components;
12
+ }
13
+ const { settings } = section;
14
+ return [
15
+ {
16
+ id: "header-logo",
17
+ type: "heading",
18
+ order: 0,
19
+ content: {
20
+ text: String((settings == null ? void 0 : settings.logoText) || "VTECH FILM"),
21
+ tag: "span"
22
+ },
23
+ style: {
24
+ fontSize: "2xl",
25
+ fontWeight: "bold",
26
+ color: "#F07E22",
27
+ fontFamily: "Montserrat, sans-serif"
28
+ },
29
+ enabled: true
30
+ },
31
+ {
32
+ id: "header-tagline",
33
+ type: "paragraph",
34
+ order: 1,
35
+ content: {
36
+ text: String((settings == null ? void 0 : settings.tagline) || "L\xC0M M\xC1T CHO NG\u01AF\u1EDCI VI\u1EC6T")
37
+ },
38
+ style: {
39
+ fontSize: "xs",
40
+ fontWeight: "medium",
41
+ color: "#6B7280",
42
+ textTransform: "uppercase",
43
+ letterSpacing: "0.05em"
44
+ },
45
+ enabled: true
46
+ },
47
+ {
48
+ id: "header-cta",
49
+ type: "button",
50
+ order: 2,
51
+ content: {
52
+ text: String((settings == null ? void 0 : settings.ctaText) || "Li\xEAn h\u1EC7"),
53
+ href: String((settings == null ? void 0 : settings.ctaLink) || "#contact")
54
+ },
55
+ style: {
56
+ fontSize: "sm",
57
+ fontWeight: "medium",
58
+ color: "#FFFFFF",
59
+ backgroundColor: "#F07E22",
60
+ padding: "0.5rem 1rem",
61
+ borderRadius: "0.375rem"
62
+ },
63
+ enabled: true
64
+ }
65
+ ];
66
+ }
67
+ function ensureFeaturesComponents(section) {
68
+ if (section.components && section.components.length > 0) {
69
+ return section.components;
70
+ }
71
+ const { settings } = section;
72
+ return [
73
+ {
74
+ id: "features-heading",
75
+ type: "heading",
76
+ order: 0,
77
+ content: {
78
+ text: String((settings == null ? void 0 : settings.heading) || "T\xEDnh n\u0103ng n\u1ED5i b\u1EADt"),
79
+ tag: "h2"
80
+ },
81
+ style: {
82
+ fontSize: "3xl",
83
+ fontWeight: "bold",
84
+ color: "#09090B",
85
+ marginBottom: "1rem",
86
+ fontFamily: "Montserrat, sans-serif"
87
+ },
88
+ enabled: true
89
+ },
90
+ {
91
+ id: "features-description",
92
+ type: "paragraph",
93
+ order: 1,
94
+ content: {
95
+ text: String(
96
+ (settings == null ? void 0 : settings.description) || "VTech Film mang \u0111\u1EBFn nh\u1EEFng t\xEDnh n\u0103ng v\u01B0\u1EE3t tr\u1ED9i cho kh\xF4ng gian c\u1EE7a b\u1EA1n"
97
+ )
98
+ },
99
+ style: {
100
+ fontSize: "base",
101
+ color: "#71717A",
102
+ maxWidth: "42rem",
103
+ margin: "0 auto"
104
+ },
105
+ enabled: true
106
+ }
107
+ ];
108
+ }
109
+ function ensureFooterComponents(section) {
110
+ if (section.components && section.components.length > 0) {
111
+ return section.components;
112
+ }
113
+ const { settings } = section;
114
+ return [
115
+ {
116
+ id: "footer-company-name",
117
+ type: "heading",
118
+ order: 0,
119
+ content: {
120
+ text: String((settings == null ? void 0 : settings.companyName) || "VTECH FILM"),
121
+ tag: "h3"
122
+ },
123
+ style: {
124
+ fontSize: "2xl",
125
+ fontWeight: "bold",
126
+ color: "#F07E22",
127
+ fontFamily: "Montserrat, sans-serif"
128
+ },
129
+ enabled: true
130
+ },
131
+ {
132
+ id: "footer-tagline",
133
+ type: "paragraph",
134
+ order: 1,
135
+ content: {
136
+ text: String((settings == null ? void 0 : settings.tagline) || "L\xC0M M\xC1T CHO NG\u01AF\u1EDCI VI\u1EC6T")
137
+ },
138
+ style: {
139
+ fontSize: "sm",
140
+ fontWeight: "medium",
141
+ color: "#9CA3AF",
142
+ textTransform: "uppercase",
143
+ letterSpacing: "0.05em"
144
+ },
145
+ enabled: true
146
+ },
147
+ {
148
+ id: "footer-description",
149
+ type: "paragraph",
150
+ order: 2,
151
+ content: {
152
+ text: String(
153
+ (settings == null ? void 0 : settings.description) || "Chuy\xEAn cung c\u1EA5p phim c\xE1ch nhi\u1EC7t cao c\u1EA5p cho \xF4 t\xF4 v\xE0 c\xF4ng tr\xECnh. Ch\u1EA5t l\u01B0\u1EE3ng - Uy t\xEDn - Chuy\xEAn nghi\u1EC7p."
154
+ )
155
+ },
156
+ style: {
157
+ fontSize: "sm",
158
+ color: "#9CA3AF",
159
+ lineHeight: "1.625"
160
+ },
161
+ enabled: true
162
+ },
163
+ {
164
+ id: "footer-products-title",
165
+ type: "heading",
166
+ order: 3,
167
+ content: {
168
+ text: String((settings == null ? void 0 : settings.productsColumnTitle) || "S\u1EA3n ph\u1EA9m"),
169
+ tag: "h4"
170
+ },
171
+ style: {
172
+ fontSize: "lg",
173
+ fontWeight: "semibold",
174
+ color: "#FFFFFF"
175
+ },
176
+ enabled: true
177
+ },
178
+ {
179
+ id: "footer-company-title",
180
+ type: "heading",
181
+ order: 4,
182
+ content: {
183
+ text: String((settings == null ? void 0 : settings.companyColumnTitle) || "C\xF4ng ty"),
184
+ tag: "h4"
185
+ },
186
+ style: {
187
+ fontSize: "lg",
188
+ fontWeight: "semibold",
189
+ color: "#FFFFFF"
190
+ },
191
+ enabled: true
192
+ },
193
+ {
194
+ id: "footer-contact-title",
195
+ type: "heading",
196
+ order: 5,
197
+ content: {
198
+ text: String((settings == null ? void 0 : settings.contactColumnTitle) || "Li\xEAn h\u1EC7"),
199
+ tag: "h4"
200
+ },
201
+ style: {
202
+ fontSize: "lg",
203
+ fontWeight: "semibold",
204
+ color: "#FFFFFF"
205
+ },
206
+ enabled: true
207
+ },
208
+ {
209
+ id: "footer-social-title",
210
+ type: "heading",
211
+ order: 6,
212
+ content: {
213
+ text: String((settings == null ? void 0 : settings.socialMediaTitle) || "Theo d\xF5i ch\xFAng t\xF4i"),
214
+ tag: "h4"
215
+ },
216
+ style: {
217
+ fontSize: "lg",
218
+ fontWeight: "semibold",
219
+ color: "#FFFFFF"
220
+ },
221
+ enabled: true
222
+ },
223
+ {
224
+ id: "footer-copyright",
225
+ type: "paragraph",
226
+ order: 7,
227
+ content: {
228
+ text: `\xA9 ${(/* @__PURE__ */ new Date()).getFullYear()} ${String((settings == null ? void 0 : settings.copyrightText) || "VTech Film. B\u1EA3n quy\u1EC1n thu\u1ED9c v\u1EC1 VTech Film.")}`
229
+ },
230
+ style: {
231
+ fontSize: "sm",
232
+ color: "#6B7280"
233
+ },
234
+ enabled: true
235
+ }
236
+ ];
237
+ }
238
+ function ensureCategoriesComponents(section) {
239
+ if (section.components && section.components.length > 0) {
240
+ return section.components;
241
+ }
242
+ const { settings } = section;
243
+ return [
244
+ {
245
+ id: "categories-heading",
246
+ type: "heading",
247
+ order: 0,
248
+ content: {
249
+ text: String((settings == null ? void 0 : settings.heading) || "Danh m\u1EE5c s\u1EA3n ph\u1EA9m"),
250
+ tag: "h2"
251
+ },
252
+ style: {
253
+ fontSize: "3xl",
254
+ fontWeight: "bold",
255
+ color: "#09090B",
256
+ textAlign: "center",
257
+ marginBottom: "3rem",
258
+ fontFamily: "Montserrat, sans-serif"
259
+ },
260
+ enabled: true
261
+ }
262
+ ];
263
+ }
264
+ function ensureHeaderBlocks(section) {
265
+ if (section.blocks && section.blocks.length > 0) {
266
+ return section.blocks;
267
+ }
268
+ const { settings } = section;
269
+ let navItems = [];
270
+ try {
271
+ const navigationItemsStr = settings == null ? void 0 : settings.navigationItems;
272
+ if (navigationItemsStr) {
273
+ navItems = JSON.parse(navigationItemsStr);
274
+ }
275
+ } catch (e) {
276
+ navItems = [
277
+ { label: "Trang ch\u1EE7", href: "/" },
278
+ { label: "Gi\u1EDBi thi\u1EC7u", href: "/about" },
279
+ { label: "S\u1EA3n ph\u1EA9m", href: "/products" },
280
+ { label: "Tin t\u1EE9c", href: "/blog" }
281
+ ];
282
+ }
283
+ const navLinkComponents = navItems.map((item, index) => ({
284
+ id: `header-nav-link-${index}`,
285
+ type: "link",
286
+ order: index,
287
+ content: {
288
+ text: item.label,
289
+ href: item.href
290
+ },
291
+ style: {
292
+ fontSize: "sm",
293
+ fontWeight: "medium",
294
+ color: "#374151"
295
+ // text-gray-700
296
+ },
297
+ enabled: true
298
+ }));
299
+ return [
300
+ {
301
+ id: "header-navigation",
302
+ type: "navigation-links-block",
303
+ order: 0,
304
+ enabled: true,
305
+ settings: {
306
+ layout: "horizontal",
307
+ textSize: "sm",
308
+ textWeight: "medium",
309
+ spacing: "normal",
310
+ hoverEffect: "color"
311
+ },
312
+ components: navLinkComponents
313
+ }
314
+ ];
315
+ }
316
+ function ensureHeroComponents(section) {
317
+ if (section.components && section.components.length > 0) {
318
+ return section.components;
319
+ }
320
+ const { settings } = section;
321
+ const buttonStyleSetting = String((settings == null ? void 0 : settings.buttonStyle) || "filled");
322
+ const buttonBgColor = String((settings == null ? void 0 : settings.buttonBgColor) || "#002951");
323
+ const buttonTextColor = String((settings == null ? void 0 : settings.buttonTextColor) || "#FFFFFF");
324
+ const buttonBorderColor = String(
325
+ (settings == null ? void 0 : settings.buttonBorderColor) || buttonBgColor
326
+ );
327
+ return [
328
+ {
329
+ id: "hero-heading",
330
+ type: "heading",
331
+ order: 0,
332
+ content: {
333
+ text: String((settings == null ? void 0 : settings.heading) || ""),
334
+ tag: "h1"
335
+ },
336
+ style: {
337
+ fontSize: "sm",
338
+ fontWeight: "black",
339
+ textTransform: "uppercase",
340
+ color: "#FFFFFF"
341
+ },
342
+ enabled: true
343
+ },
344
+ {
345
+ id: "hero-subheading",
346
+ type: "heading",
347
+ order: 1,
348
+ content: {
349
+ text: String((settings == null ? void 0 : settings.subheading) || ""),
350
+ tag: "h2"
351
+ },
352
+ style: {
353
+ fontSize: "base",
354
+ fontWeight: "black",
355
+ textTransform: "uppercase",
356
+ color: "#FCE5D3"
357
+ },
358
+ enabled: true
359
+ },
360
+ {
361
+ id: "hero-description",
362
+ type: "paragraph",
363
+ order: 2,
364
+ content: {
365
+ text: String((settings == null ? void 0 : settings.description) || "")
366
+ },
367
+ style: {
368
+ fontSize: "xs",
369
+ fontWeight: "medium",
370
+ color: "#FFFFFF",
371
+ padding: "0 1rem"
372
+ },
373
+ enabled: true
374
+ },
375
+ ...(settings == null ? void 0 : settings.description2) ? [
376
+ {
377
+ id: "hero-description2",
378
+ type: "paragraph",
379
+ order: 3,
380
+ content: {
381
+ text: String(settings.description2)
382
+ },
383
+ style: {
384
+ fontSize: "xs",
385
+ fontWeight: "medium",
386
+ color: "#FFFFFF",
387
+ padding: "0 1rem"
388
+ },
389
+ styleMode: "advanced",
390
+ enabled: true
391
+ }
392
+ ] : [],
393
+ {
394
+ id: "hero-cta-button",
395
+ type: "button",
396
+ order: (settings == null ? void 0 : settings.description2) ? 4 : 3,
397
+ content: {
398
+ text: String((settings == null ? void 0 : settings.ctaText) || ""),
399
+ href: String((settings == null ? void 0 : settings.ctaUrl) || "")
400
+ },
401
+ style: {
402
+ padding: "0.75rem 1.5rem",
403
+ fontSize: "0.875rem",
404
+ color: buttonTextColor,
405
+ backgroundColor: buttonStyleSetting === "outline" ? "transparent" : buttonBgColor,
406
+ borderColor: buttonBorderColor,
407
+ borderWidth: buttonStyleSetting === "outline" ? "1px" : void 0,
408
+ borderStyle: buttonStyleSetting === "outline" ? "solid" : void 0,
409
+ borderRadius: "0.75rem"
410
+ },
411
+ enabled: true
412
+ }
413
+ ];
414
+ }
415
+ function ensureVideoComponents(section) {
416
+ if (section.components && section.components.length > 0) {
417
+ return section.components;
418
+ }
419
+ const { settings } = section;
420
+ const videoUrl = String((settings == null ? void 0 : settings.videoUrl) || "");
421
+ const detectVideoType = (url) => {
422
+ if (url.includes("youtube.com") || url.includes("youtu.be"))
423
+ return "youtube";
424
+ if (url.includes("vimeo.com")) return "vimeo";
425
+ return "hosted";
426
+ };
427
+ return [
428
+ {
429
+ id: "video-player",
430
+ type: "video",
431
+ order: 0,
432
+ content: {
433
+ videoType: detectVideoType(videoUrl),
434
+ videoUrl,
435
+ title: String((settings == null ? void 0 : settings.title) || "VTech Film Video"),
436
+ autoplay: Boolean(settings == null ? void 0 : settings.autoplay),
437
+ controls: true
438
+ },
439
+ style: {
440
+ aspectRatio: String((settings == null ? void 0 : settings.aspectRatio) || "16/9"),
441
+ width: "100%",
442
+ boxShadow: "none"
443
+ },
444
+ enabled: true
445
+ }
446
+ ];
447
+ }
448
+ function ensureBlogProjectsComponents(section) {
449
+ if (section.components && section.components.length > 0) {
450
+ return section.components;
451
+ }
452
+ const { settings } = section;
453
+ return [
454
+ {
455
+ id: "blog-projects-heading",
456
+ type: "heading",
457
+ order: 0,
458
+ content: {
459
+ text: String(
460
+ (settings == null ? void 0 : settings.heading) || "Ch\u1EA5t l\u01B0\u1EE3ng \u0111\u01B0\u1EE3c ch\u1EE9ng minh qua c\xF4ng tr\xECnh & xe Vtech Film"
461
+ ),
462
+ tag: "h2"
463
+ },
464
+ style: {
465
+ fontSize: "2xl",
466
+ fontWeight: "bold",
467
+ color: "#301907",
468
+ lineHeight: "1.3",
469
+ padding: "0 1rem"
470
+ },
471
+ enabled: true
472
+ },
473
+ {
474
+ id: "blog-projects-image",
475
+ type: "image",
476
+ order: 1,
477
+ content: {
478
+ src: String(
479
+ (settings == null ? void 0 : settings.projectImage) || "/assets/backgrounds/hero-background.jpg"
480
+ ),
481
+ alt: String((settings == null ? void 0 : settings.projectTitle) || "D\u1EF1 \xE1n phim c\xE1ch nhi\u1EC7t cao c\u1EA5p")
482
+ },
483
+ style: {
484
+ width: "100%",
485
+ height: "100%",
486
+ objectFit: "cover",
487
+ borderRadius: "0.75rem"
488
+ },
489
+ enabled: true
490
+ },
491
+ {
492
+ id: "blog-projects-title",
493
+ type: "heading",
494
+ order: 2,
495
+ content: {
496
+ text: String((settings == null ? void 0 : settings.projectTitle) || "D\u1EF1 \xE1n phim c\xE1ch nhi\u1EC7t cao c\u1EA5p"),
497
+ tag: "h3"
498
+ },
499
+ style: {
500
+ fontSize: "lg",
501
+ fontWeight: "black",
502
+ color: "#111827",
503
+ lineHeight: "1.2",
504
+ letterSpacing: "-0.48px"
505
+ },
506
+ enabled: true
507
+ },
508
+ {
509
+ id: "blog-projects-excerpt",
510
+ type: "paragraph",
511
+ order: 3,
512
+ content: {
513
+ text: String(
514
+ (settings == null ? void 0 : settings.projectExcerpt) || "Thi c\xF4ng phim c\xE1ch nhi\u1EC7t chuy\xEAn nghi\u1EC7p cho v\u0103n ph\xF2ng v\xE0 nh\xE0 k\xEDnh"
515
+ )
516
+ },
517
+ style: {
518
+ fontSize: "sm",
519
+ color: "#111827",
520
+ lineHeight: "1.2"
521
+ },
522
+ enabled: true
523
+ }
524
+ ];
525
+ }
526
+ function ensureContentCtaComponents(section) {
527
+ if (section.components && section.components.length > 0) {
528
+ return section.components;
529
+ }
530
+ const { settings } = section;
531
+ return [
532
+ {
533
+ id: "content-cta-heading",
534
+ type: "heading",
535
+ order: 0,
536
+ content: {
537
+ text: String((settings == null ? void 0 : settings.heading) || "Li\xEAn h\u1EC7 ngay h\xF4m nay"),
538
+ tag: "h2"
539
+ },
540
+ style: {
541
+ fontSize: "3xl",
542
+ fontWeight: "bold",
543
+ textAlign: "center",
544
+ color: "#FFFFFF"
545
+ },
546
+ enabled: true
547
+ }
548
+ ];
549
+ }
550
+ function ensureTestimonialsComponents(section) {
551
+ if (section.components && section.components.length > 0) {
552
+ return section.components;
553
+ }
554
+ const { settings } = section;
555
+ return [
556
+ {
557
+ id: "testimonials-heading",
558
+ type: "heading",
559
+ order: 0,
560
+ content: {
561
+ text: String((settings == null ? void 0 : settings.heading) || "\u0110\xE1nh gi\xE1 kh\xE1ch h\xE0ng"),
562
+ tag: "h2"
563
+ },
564
+ style: {
565
+ fontSize: "3xl",
566
+ fontWeight: "bold",
567
+ color: "#09090B",
568
+ textAlign: "center",
569
+ marginBottom: "1rem",
570
+ fontFamily: "Montserrat, sans-serif"
571
+ },
572
+ enabled: true
573
+ },
574
+ {
575
+ id: "testimonials-description",
576
+ type: "paragraph",
577
+ order: 1,
578
+ content: {
579
+ text: String(
580
+ (settings == null ? void 0 : settings.description) || "Nh\u1EEFng \u0111\xE1nh gi\xE1 t\u1EEB kh\xE1ch h\xE0ng c\u1EE7a ch\xFAng t\xF4i"
581
+ )
582
+ },
583
+ style: {
584
+ fontSize: "base",
585
+ color: "#6B7280",
586
+ textAlign: "center",
587
+ marginBottom: "3rem"
588
+ },
589
+ enabled: true
590
+ }
591
+ ];
592
+ }
593
+ function ensureContactComponents(section) {
594
+ if (section.components && section.components.length > 0) {
595
+ return section.components;
596
+ }
597
+ const { settings } = section;
598
+ return [
599
+ {
600
+ id: "contact-heading",
601
+ type: "heading",
602
+ order: 0,
603
+ content: {
604
+ text: String((settings == null ? void 0 : settings.heading) || "Li\xEAn h\u1EC7 v\u1EDBi ch\xFAng t\xF4i"),
605
+ tag: "h2"
606
+ },
607
+ style: {
608
+ fontSize: "3xl",
609
+ fontWeight: "bold",
610
+ color: "#09090B",
611
+ textAlign: "center",
612
+ marginBottom: "1rem",
613
+ fontFamily: "Montserrat, sans-serif"
614
+ },
615
+ enabled: true
616
+ },
617
+ {
618
+ id: "contact-description",
619
+ type: "paragraph",
620
+ order: 1,
621
+ content: {
622
+ text: String(
623
+ (settings == null ? void 0 : settings.description) || "Ch\xFAng t\xF4i lu\xF4n s\u1EB5n s\xE0ng h\u1ED7 tr\u1EE3 b\u1EA1n"
624
+ )
625
+ },
626
+ style: {
627
+ fontSize: "base",
628
+ color: "#6B7280",
629
+ textAlign: "center",
630
+ marginBottom: "3rem"
631
+ },
632
+ enabled: true
633
+ }
634
+ ];
635
+ }
636
+ function ensureBrandStoryComponents(section) {
637
+ if (section.components && section.components.length > 0) {
638
+ return section.components;
639
+ }
640
+ const { settings } = section;
641
+ const defaultStoryContent = `Ch\xFAng t\xF4i b\u1EAFt \u0111\u1EA7u h\xE0nh tr\xECnh t\u1EEB n\u0103m 1995, v\u1EDBi mong mu\u1ED1n b\u1EA3o t\u1ED3n v\xE0 ph\xE1t tri\u1EC3n ngh\u1EC7 thu\u1EADt th\u1EE7 c\xF4ng truy\u1EC1n th\u1ED1ng Vi\u1EC7t Nam. T\u1EEB m\u1ED9t x\u01B0\u1EDFng nh\u1ECF \u1EDF H\xE0 N\u1ED9i, ch\xFAng t\xF4i \u0111\xE3 ph\xE1t tri\u1EC3n th\xE0nh m\u1ED9t c\u1ED9ng \u0111\u1ED3ng g\u1ED3m h\u01A1n 200 ngh\u1EC7 nh\xE2n t\u1EEB c\xE1c l\xE0ng ngh\u1EC1 n\u1ED5i ti\u1EBFng nh\u01B0 B\xE1t Tr\xE0ng, Ph\xFA Vinh, H\u1EA1 Th\xE1i.
642
+
643
+ M\u1ED7i s\u1EA3n ph\u1EA9m c\u1EE7a ch\xFAng t\xF4i kh\xF4ng ch\u1EC9 l\xE0 m\u1ED9t m\xF3n \u0111\u1ED3, m\xE0 l\xE0 m\u1ED9t c\xE2u chuy\u1EC7n \u2013 c\xE2u chuy\u1EC7n v\u1EC1 tay ngh\u1EC1, v\u1EC1 v\u0103n h\xF3a, v\u1EC1 t\xECnh y\xEAu v\u1EDBi ngh\u1EC1 th\u1EE7 c\xF4ng. Ch\xFAng t\xF4i tin r\u1EB1ng, qua nh\u1EEFng s\u1EA3n ph\u1EA9m n\xE0y, di s\u1EA3n v\u0103n h\xF3a Vi\u1EC7t Nam s\u1EBD \u0111\u01B0\u1EE3c g\xECn gi\u1EEF v\xE0 lan t\u1ECFa \u0111\u1EBFn th\u1EBF gi\u1EDBi.
644
+
645
+ S\u1EE9 m\u1EC7nh c\u1EE7a ch\xFAng t\xF4i l\xE0 k\u1EBFt n\u1ED1i ng\u01B0\u1EDDi y\xEAu ngh\u1EC7 thu\u1EADt v\u1EDBi nh\u1EEFng t\xE1c ph\u1EA9m th\u1EE7 c\xF4ng cao c\u1EA5p, \u0111\u1ED3ng th\u1EDDi t\u1EA1o ra thu nh\u1EADp b\u1EC1n v\u1EEFng cho c\xE1c ngh\u1EC7 nh\xE2n v\xE0 gi\u1EEF g\xECn l\xE0ng ngh\u1EC1 truy\u1EC1n th\u1ED1ng.`;
646
+ return [
647
+ {
648
+ id: "brand-story-heading",
649
+ type: "heading",
650
+ order: 0,
651
+ content: {
652
+ text: String((settings == null ? void 0 : settings.heading) || "C\xE2u Chuy\u1EC7n Th\u01B0\u01A1ng Hi\u1EC7u"),
653
+ tag: "h2"
654
+ },
655
+ style: {
656
+ fontSize: "4xl",
657
+ fontWeight: "normal",
658
+ color: "#722F37",
659
+ fontStyle: "italic",
660
+ fontFamily: "serif",
661
+ textAlign: "center"
662
+ },
663
+ enabled: true
664
+ },
665
+ {
666
+ id: "brand-story-description",
667
+ type: "paragraph",
668
+ order: 1,
669
+ content: {
670
+ text: String(
671
+ (settings == null ? void 0 : settings.description) || "T\u1EEB nh\u1EEFng l\xE0ng ngh\u1EC1 truy\u1EC1n th\u1ED1ng, ch\xFAng t\xF4i mang \u0111\u1EBFn th\u1EBF gi\u1EDBi v\u1EBB \u0111\u1EB9p c\u1EE7a ngh\u1EC7 thu\u1EADt th\u1EE7 c\xF4ng Vi\u1EC7t Nam"
672
+ )
673
+ },
674
+ style: {
675
+ fontSize: "base",
676
+ color: "#6B5344",
677
+ textAlign: "center"
678
+ },
679
+ enabled: true
680
+ },
681
+ {
682
+ id: "brand-story-content",
683
+ type: "paragraph",
684
+ order: 2,
685
+ content: {
686
+ text: String((settings == null ? void 0 : settings.storyContent) || defaultStoryContent)
687
+ },
688
+ style: {
689
+ fontSize: "sm",
690
+ color: "#3D2314",
691
+ lineHeight: "1.625"
692
+ },
693
+ enabled: true
694
+ },
695
+ {
696
+ id: "brand-story-mission-title",
697
+ type: "heading",
698
+ order: 4,
699
+ content: {
700
+ text: String((settings == null ? void 0 : settings.missionTitle) || "S\u1EE9 M\u1EC7nh C\u1EE7a Ch\xFAng T\xF4i"),
701
+ tag: "h3"
702
+ },
703
+ style: {
704
+ fontSize: "lg",
705
+ fontWeight: "normal",
706
+ color: "#722F37",
707
+ fontFamily: "serif"
708
+ },
709
+ enabled: true
710
+ },
711
+ {
712
+ id: "brand-story-mission-text",
713
+ type: "paragraph",
714
+ order: 5,
715
+ content: {
716
+ text: String(
717
+ (settings == null ? void 0 : settings.missionText) || "G\xECn gi\u1EEF v\xE0 ph\xE1t huy gi\xE1 tr\u1ECB v\u0103n h\xF3a truy\u1EC1n th\u1ED1ng Vi\u1EC7t Nam th\xF4ng qua ngh\u1EC7 thu\u1EADt th\u1EE7 c\xF4ng, \u0111\u1ED3ng th\u1EDDi t\u1EA1o ra cu\u1ED9c s\u1ED1ng t\u1ED1t \u0111\u1EB9p h\u01A1n cho c\xE1c ngh\u1EC7 nh\xE2n v\xE0 c\u1ED9ng \u0111\u1ED3ng l\xE0ng ngh\u1EC1."
718
+ )
719
+ },
720
+ style: {
721
+ fontSize: "sm",
722
+ color: "#3D2314",
723
+ fontStyle: "italic",
724
+ fontFamily: "serif"
725
+ },
726
+ enabled: true
727
+ },
728
+ // Feature Card 1
729
+ {
730
+ id: "brand-story-feature-1-title",
731
+ type: "heading",
732
+ order: 6,
733
+ content: {
734
+ text: String((settings == null ? void 0 : settings.feature1Title) || "T\xE2m Huy\u1EBFt Ngh\u1EC7 Nh\xE2n"),
735
+ tag: "h4"
736
+ },
737
+ style: {
738
+ fontSize: "base",
739
+ fontWeight: "semibold",
740
+ color: "#3D2314"
741
+ },
742
+ enabled: true
743
+ },
744
+ {
745
+ id: "brand-story-feature-1-desc",
746
+ type: "paragraph",
747
+ order: 7,
748
+ content: {
749
+ text: String(
750
+ (settings == null ? void 0 : settings.feature1Desc) || "S\u1EA3n ph\u1EA9m l\xE0 t\xE2m huy\u1EBFt c\u1EE7a ngh\u1EC7 nh\xE2n, l\xE0m b\u1EB1ng t\xECnh y\xEAu v\xE0 \u0111am m\xEA v\u1EDBi ngh\u1EC1."
751
+ )
752
+ },
753
+ style: {
754
+ fontSize: "sm",
755
+ color: "#6B5344"
756
+ },
757
+ enabled: true
758
+ },
759
+ // Feature Card 2
760
+ {
761
+ id: "brand-story-feature-2-title",
762
+ type: "heading",
763
+ order: 8,
764
+ content: {
765
+ text: String((settings == null ? void 0 : settings.feature2Title) || "H\u1ED7 Tr\u1EE3 C\u1ED9ng \u0110\u1ED3ng"),
766
+ tag: "h4"
767
+ },
768
+ style: {
769
+ fontSize: "base",
770
+ fontWeight: "semibold",
771
+ color: "#3D2314"
772
+ },
773
+ enabled: true
774
+ },
775
+ {
776
+ id: "brand-story-feature-2-desc",
777
+ type: "paragraph",
778
+ order: 9,
779
+ content: {
780
+ text: String(
781
+ (settings == null ? void 0 : settings.feature2Desc) || "Ch\xFAng t\xF4i l\xE0m vi\u1EC7c tr\u1EF1c ti\u1EBFp v\u1EDBi c\xE1c l\xE0ng ngh\u1EC1, t\u1EA1o vi\u1EC7c l\xE0m b\u1EC1n v\u1EEFng v\xE0 b\u1EA3o t\u1ED3n di s\u1EA3n v\u0103n h\xF3a Vi\u1EC7t Nam."
782
+ )
783
+ },
784
+ style: {
785
+ fontSize: "sm",
786
+ color: "#6B5344"
787
+ },
788
+ enabled: true
789
+ },
790
+ // Feature Card 3
791
+ {
792
+ id: "brand-story-feature-3-title",
793
+ type: "heading",
794
+ order: 10,
795
+ content: {
796
+ text: String((settings == null ? void 0 : settings.feature3Title) || "Ch\u1EA5t L\u01B0\u1EE3ng Cao C\u1EA5p"),
797
+ tag: "h4"
798
+ },
799
+ style: {
800
+ fontSize: "base",
801
+ fontWeight: "semibold",
802
+ color: "#3D2314"
803
+ },
804
+ enabled: true
805
+ },
806
+ {
807
+ id: "brand-story-feature-3-desc",
808
+ type: "paragraph",
809
+ order: 11,
810
+ content: {
811
+ text: String(
812
+ (settings == null ? void 0 : settings.feature3Desc) || "Cam k\u1EBFt ch\u1EA5t l\u01B0\u1EE3ng v\u1EDBi nguy\xEAn li\u1EC7u t\u1EF1 nhi\xEAn, quy tr\xECnh ki\u1EC3m so\xE1t nghi\xEAm ng\u1EB7t v\xE0 b\u1EA3o h\xE0nh tr\u1ECDn \u0111\u1EDDi."
813
+ )
814
+ },
815
+ style: {
816
+ fontSize: "sm",
817
+ color: "#6B5344"
818
+ },
819
+ enabled: true
820
+ },
821
+ // Feature Card 4
822
+ {
823
+ id: "brand-story-feature-4-title",
824
+ type: "heading",
825
+ order: 12,
826
+ content: {
827
+ text: String((settings == null ? void 0 : settings.feature4Title) || "Th\xE2n Thi\u1EC7n M\xF4i Tr\u01B0\u1EDDng"),
828
+ tag: "h4"
829
+ },
830
+ style: {
831
+ fontSize: "base",
832
+ fontWeight: "semibold",
833
+ color: "#3D2314"
834
+ },
835
+ enabled: true
836
+ },
837
+ {
838
+ id: "brand-story-feature-4-desc",
839
+ type: "paragraph",
840
+ order: 13,
841
+ content: {
842
+ text: String(
843
+ (settings == null ? void 0 : settings.feature4Desc) || "S\u1EED d\u1EE5ng nguy\xEAn li\u1EC7u t\u1EF1 nhi\xEAn, quy tr\xECnh s\u1EA3n xu\u1EA5t th\u1EE7 c\xF4ng, kh\xF4ng g\xE2y h\u1EA1i cho m\xF4i tr\u01B0\u1EDDng."
844
+ )
845
+ },
846
+ style: {
847
+ fontSize: "sm",
848
+ color: "#6B5344"
849
+ },
850
+ enabled: true
851
+ }
852
+ ];
853
+ }
854
+ function ensureFeaturedProductsComponents(section) {
855
+ if (section.components && section.components.length > 0) {
856
+ return section.components;
857
+ }
858
+ const { settings } = section;
859
+ return [
860
+ {
861
+ id: "featured-products-heading",
862
+ type: "heading",
863
+ order: 0,
864
+ content: {
865
+ text: String((settings == null ? void 0 : settings.heading) || "S\u1EA3n ph\u1EA9m n\u1ED5i b\u1EADt"),
866
+ tag: "h2"
867
+ },
868
+ style: {
869
+ fontSize: "4xl",
870
+ fontWeight: "normal",
871
+ color: "#722F37",
872
+ fontStyle: "italic",
873
+ fontFamily: "serif",
874
+ textAlign: "center"
875
+ },
876
+ enabled: true
877
+ },
878
+ {
879
+ id: "featured-products-description",
880
+ type: "paragraph",
881
+ order: 1,
882
+ content: {
883
+ text: String(
884
+ (settings == null ? void 0 : settings.description) || "Kh\xE1m ph\xE1 c\xE1c s\u1EA3n ph\u1EA9m cao c\u1EA5p \u0111\u01B0\u1EE3c ch\u1EBF t\xE1c th\u1EE7 c\xF4ng b\u1EDFi ngh\u1EC7 nh\xE2n Vi\u1EC7t Nam"
885
+ )
886
+ },
887
+ style: {
888
+ fontSize: "base",
889
+ color: "#6B5344",
890
+ textAlign: "center"
891
+ },
892
+ enabled: true
893
+ }
894
+ ];
895
+ }
896
+ function ensureCollectionsComponents(section) {
897
+ if (section.components && section.components.length > 0) {
898
+ return section.components;
899
+ }
900
+ const { settings } = section;
901
+ return [
902
+ {
903
+ id: "collections-title-1",
904
+ type: "heading",
905
+ order: 0,
906
+ content: {
907
+ text: String((settings == null ? void 0 : settings.collection1Title) || "B\u1ED9 s\u01B0u t\u1EADp T\u1EBFt"),
908
+ tag: "h3"
909
+ },
910
+ style: {
911
+ fontSize: "3xl",
912
+ fontWeight: "normal",
913
+ color: "#722F37",
914
+ fontFamily: "serif"
915
+ },
916
+ enabled: true
917
+ },
918
+ {
919
+ id: "collections-desc-1",
920
+ type: "paragraph",
921
+ order: 1,
922
+ content: {
923
+ text: String(
924
+ (settings == null ? void 0 : settings.collection1Description) || "S\u1EAFc xu\xE2n r\u1EF1c r\u1EE1 trong t\u1EEBng thi\u1EBFt k\u1EBF s\u01A1n m\xE0i, mang l\u1EDDi ch\xFAc an khang \u2013 \u0111o\xE0n vi\xEAn."
925
+ )
926
+ },
927
+ style: {
928
+ fontSize: "sm",
929
+ color: "#6B5344"
930
+ },
931
+ enabled: true
932
+ },
933
+ {
934
+ id: "collections-title-2",
935
+ type: "heading",
936
+ order: 2,
937
+ content: {
938
+ text: String((settings == null ? void 0 : settings.collection2Title) || "B\u1ED9 s\u01B0u t\u1EADp Decor"),
939
+ tag: "h3"
940
+ },
941
+ style: {
942
+ fontSize: "3xl",
943
+ fontWeight: "normal",
944
+ color: "#722F37",
945
+ fontFamily: "serif"
946
+ },
947
+ enabled: true
948
+ },
949
+ {
950
+ id: "collections-desc-2",
951
+ type: "paragraph",
952
+ order: 3,
953
+ content: {
954
+ text: String(
955
+ (settings == null ? void 0 : settings.collection2Description) || "Nh\u1EEFng s\u1EA3n ph\u1EA9m decor s\u01A1n m\xE0i tinh t\u1EBF, t\u1EA1o \u0111i\u1EC3m nh\u1EA5n sang tr\u1ECDng cho kh\xF4ng gian."
956
+ )
957
+ },
958
+ style: {
959
+ fontSize: "sm",
960
+ color: "#6B5344"
961
+ },
962
+ enabled: true
963
+ }
964
+ ];
965
+ }
966
+ function ensureBestSellersComponents(section) {
967
+ if (section.components && section.components.length > 0) {
968
+ return section.components;
969
+ }
970
+ const { settings } = section;
971
+ return [
972
+ {
973
+ id: "best-sellers-heading",
974
+ type: "heading",
975
+ order: 0,
976
+ content: {
977
+ text: String((settings == null ? void 0 : settings.heading) || "S\u1EA3n Ph\u1EA9m B\xE1n Ch\u1EA1y"),
978
+ tag: "h2"
979
+ },
980
+ style: {
981
+ fontSize: "4xl",
982
+ fontWeight: "normal",
983
+ color: "#722F37",
984
+ fontStyle: "italic",
985
+ fontFamily: "serif",
986
+ textAlign: "center"
987
+ },
988
+ enabled: true
989
+ },
990
+ {
991
+ id: "best-sellers-description",
992
+ type: "paragraph",
993
+ order: 1,
994
+ content: {
995
+ text: String(
996
+ (settings == null ? void 0 : settings.description) || "Nh\u1EEFng s\u1EA3n ph\u1EA9m \u0111\u01B0\u1EE3c y\xEAu th\xEDch nh\u1EA5t t\u1EEB c\xE1c ngh\u1EC7 nh\xE2n h\xE0ng \u0111\u1EA7u"
997
+ )
998
+ },
999
+ style: {
1000
+ fontSize: "base",
1001
+ color: "#6B5344",
1002
+ textAlign: "center"
1003
+ },
1004
+ enabled: true
1005
+ }
1006
+ ];
1007
+ }
1008
+ function ensureCraftingProcessComponents(section) {
1009
+ if (section.components && section.components.length > 0) {
1010
+ return section.components;
1011
+ }
1012
+ const { settings } = section;
1013
+ return [
1014
+ {
1015
+ id: "crafting-process-heading",
1016
+ type: "heading",
1017
+ order: 0,
1018
+ content: {
1019
+ text: String((settings == null ? void 0 : settings.heading) || "Quy Tr\xECnh Ch\u1EBF T\xE1c"),
1020
+ tag: "h2"
1021
+ },
1022
+ style: {
1023
+ fontSize: "4xl",
1024
+ fontWeight: "normal",
1025
+ color: "#722F37",
1026
+ fontStyle: "italic",
1027
+ fontFamily: "serif",
1028
+ textAlign: "center"
1029
+ },
1030
+ enabled: true
1031
+ },
1032
+ {
1033
+ id: "crafting-process-description",
1034
+ type: "paragraph",
1035
+ order: 1,
1036
+ content: {
1037
+ text: String(
1038
+ (settings == null ? void 0 : settings.description) || "M\u1ED7i s\u1EA3n ph\u1EA9m tr\u1EA3i qua h\xE0ng ch\u1EE5c c\xF4ng \u0111o\u1EA1n, t\u1EEB tay ngh\u1EC1 c\u1EE7a ngh\u1EC7 nh\xE2n v\u1EDBi h\u01A1n 30 n\u0103m kinh nghi\u1EC7m"
1039
+ )
1040
+ },
1041
+ style: {
1042
+ fontSize: "base",
1043
+ color: "#6B5344",
1044
+ textAlign: "center"
1045
+ },
1046
+ enabled: true
1047
+ },
1048
+ // Step titles and descriptions
1049
+ {
1050
+ id: "crafting-process-step-1-title",
1051
+ type: "heading",
1052
+ order: 2,
1053
+ content: {
1054
+ text: String((settings == null ? void 0 : settings.step1Title) || "Ch\u1ECDn Nguy\xEAn Li\u1EC7u"),
1055
+ tag: "h3"
1056
+ },
1057
+ style: { fontSize: "lg", fontWeight: "semibold", color: "#C9A962" },
1058
+ enabled: true
1059
+ },
1060
+ {
1061
+ id: "crafting-process-step-1-desc",
1062
+ type: "paragraph",
1063
+ order: 3,
1064
+ content: {
1065
+ text: String(
1066
+ (settings == null ? void 0 : settings.step1Description) || "G\u1ED7 t\u1EF1 nhi\xEAn, s\u01A1n thi\xEAn nhi\xEAn, v\xE0ng l\xE1 \u0111\u01B0\u1EE3c tuy\u1EC3n ch\u1ECDn k\u1EF9 l\u01B0\u1EE1ng"
1067
+ )
1068
+ },
1069
+ style: { fontSize: "sm", color: "#FFFFFF" },
1070
+ enabled: true
1071
+ },
1072
+ {
1073
+ id: "crafting-process-step-2-title",
1074
+ type: "heading",
1075
+ order: 4,
1076
+ content: {
1077
+ text: String((settings == null ? void 0 : settings.step2Title) || "Ch\u1EBF T\xE1c"),
1078
+ tag: "h3"
1079
+ },
1080
+ style: { fontSize: "lg", fontWeight: "semibold", color: "#C9A962" },
1081
+ enabled: true
1082
+ },
1083
+ {
1084
+ id: "crafting-process-step-2-desc",
1085
+ type: "paragraph",
1086
+ order: 5,
1087
+ content: {
1088
+ text: String(
1089
+ (settings == null ? void 0 : settings.step2Description) || "Ngh\u1EC7 nh\xE2n d\xE0y c\xF4ng m\xE0i d\u0169a, kh\u1EAFc h\u1ECDa ti\u1EBFt t\u1EEBng chi ti\u1EBFt t\u1EC9 m\u1EC9"
1090
+ )
1091
+ },
1092
+ style: { fontSize: "sm", color: "#FFFFFF" },
1093
+ enabled: true
1094
+ },
1095
+ {
1096
+ id: "crafting-process-step-3-title",
1097
+ type: "heading",
1098
+ order: 6,
1099
+ content: {
1100
+ text: String((settings == null ? void 0 : settings.step3Title) || "Ph\u1EE7 S\u01A1n M\xE0i"),
1101
+ tag: "h3"
1102
+ },
1103
+ style: { fontSize: "lg", fontWeight: "semibold", color: "#C9A962" },
1104
+ enabled: true
1105
+ },
1106
+ {
1107
+ id: "crafting-process-step-3-desc",
1108
+ type: "paragraph",
1109
+ order: 7,
1110
+ content: {
1111
+ text: String(
1112
+ (settings == null ? void 0 : settings.step3Description) || "12-16 l\u1EDBp s\u01A1n m\xE0i \u0111\u01B0\u1EE3c ph\u1EE7 v\xE0 \u0111\xE1nh b\xF3ng"
1113
+ )
1114
+ },
1115
+ style: { fontSize: "sm", color: "#FFFFFF" },
1116
+ enabled: true
1117
+ },
1118
+ {
1119
+ id: "crafting-process-step-4-title",
1120
+ type: "heading",
1121
+ order: 8,
1122
+ content: {
1123
+ text: String((settings == null ? void 0 : settings.step4Title) || "\u1EE6 & Ho\xE0n Thi\u1EC7n"),
1124
+ tag: "h3"
1125
+ },
1126
+ style: { fontSize: "lg", fontWeight: "semibold", color: "#C9A962" },
1127
+ enabled: true
1128
+ },
1129
+ {
1130
+ id: "crafting-process-step-4-desc",
1131
+ type: "paragraph",
1132
+ order: 9,
1133
+ content: {
1134
+ text: String(
1135
+ (settings == null ? void 0 : settings.step4Description) || "S\u1EA3n ph\u1EA9m \u0111\u01B0\u1EE3c \u1EE7 30-45 ng\xE0y \u0111\u1EC3 \u0111\u1EA1t \u0111\u1ED9 b\xF3ng v\xE0 b\u1EC1n v\u1EEFng cao nh\u1EA5t"
1136
+ )
1137
+ },
1138
+ style: { fontSize: "sm", color: "#FFFFFF" },
1139
+ enabled: true
1140
+ }
1141
+ ];
1142
+ }
1143
+ function ensureTinanTestimonialsComponents(section) {
1144
+ if (section.components && section.components.length > 0) {
1145
+ return section.components;
1146
+ }
1147
+ const { settings } = section;
1148
+ return [
1149
+ {
1150
+ id: "tinan-testimonials-heading",
1151
+ type: "heading",
1152
+ order: 0,
1153
+ content: {
1154
+ text: String((settings == null ? void 0 : settings.heading) || "Kh\xE1ch h\xE0ng n\xF3i v\u1EC1 ch\xFAng t\xF4i"),
1155
+ tag: "h2"
1156
+ },
1157
+ style: {
1158
+ fontSize: "4xl",
1159
+ fontWeight: "normal",
1160
+ color: "#722F37",
1161
+ fontStyle: "italic",
1162
+ fontFamily: "serif",
1163
+ textAlign: "center"
1164
+ },
1165
+ enabled: true
1166
+ },
1167
+ {
1168
+ id: "tinan-testimonials-description",
1169
+ type: "paragraph",
1170
+ order: 1,
1171
+ content: {
1172
+ text: String(
1173
+ (settings == null ? void 0 : settings.description) || "Kh\xE1m ph\xE1 nh\u1EEFng c\xE2u chuy\u1EC7n, ki\u1EBFn th\u1EE9c v\xE0 c\u1EADp nh\u1EADt m\u1EDBi nh\u1EA5t v\u1EC1 ngh\u1EC7 thu\u1EADt s\u01A1n m\xE0i"
1174
+ )
1175
+ },
1176
+ style: {
1177
+ fontSize: "base",
1178
+ color: "#6B5344",
1179
+ textAlign: "center"
1180
+ },
1181
+ enabled: true
1182
+ }
1183
+ ];
1184
+ }
1185
+ function ensureTinanContactCtaComponents(section) {
1186
+ if (section.components && section.components.length > 0) {
1187
+ return section.components;
1188
+ }
1189
+ const { settings } = section;
1190
+ return [
1191
+ {
1192
+ id: "contact-cta-heading",
1193
+ type: "heading",
1194
+ order: 0,
1195
+ content: {
1196
+ text: String((settings == null ? void 0 : settings.heading) || "Li\xEAn h\u1EC7 ngay cho ch\xFAng t\xF4i"),
1197
+ tag: "h2"
1198
+ },
1199
+ style: {
1200
+ fontSize: "4xl",
1201
+ fontWeight: "bold",
1202
+ color: "#FFFFFF",
1203
+ fontStyle: "italic"
1204
+ },
1205
+ enabled: true
1206
+ },
1207
+ {
1208
+ id: "contact-cta-description",
1209
+ type: "paragraph",
1210
+ order: 1,
1211
+ content: {
1212
+ text: String(
1213
+ (settings == null ? void 0 : settings.description) || "\u0110\u1EC3 l\u1EA1i th\xF4ng tin \u0111\u1EC3 \u0111\u01B0\u1EE3c t\u01B0 v\u1EA5n v\xE0 s\u1EAFp x\u1EBFp thi c\xF4ng nhanh ch\xF3ng, thu\u1EADn ti\u1EC7n"
1214
+ )
1215
+ },
1216
+ style: {
1217
+ fontSize: "base",
1218
+ color: "rgba(255,255,255,0.9)"
1219
+ },
1220
+ enabled: true
1221
+ }
1222
+ ];
1223
+ }
1224
+ function ensureArtCornerComponents(section) {
1225
+ if (section.components && section.components.length > 0) {
1226
+ return section.components;
1227
+ }
1228
+ const { settings } = section;
1229
+ return [
1230
+ {
1231
+ id: "art-corner-heading",
1232
+ type: "heading",
1233
+ order: 0,
1234
+ content: {
1235
+ text: String((settings == null ? void 0 : settings.heading) || "G\xF3c Ngh\u1EC7 Thu\u1EADt"),
1236
+ tag: "h2"
1237
+ },
1238
+ style: {
1239
+ fontSize: "3xl",
1240
+ fontWeight: "normal",
1241
+ color: "#722F37",
1242
+ fontFamily: "serif",
1243
+ textAlign: "center"
1244
+ },
1245
+ enabled: true
1246
+ },
1247
+ {
1248
+ id: "art-corner-description",
1249
+ type: "paragraph",
1250
+ order: 1,
1251
+ content: {
1252
+ text: String(
1253
+ (settings == null ? void 0 : settings.description) || "Kh\xE1m ph\xE1 nh\u1EEFng c\xE2u chuy\u1EC7n, ki\u1EBFn th\u1EE9c v\xE0 c\u1EA3m h\u1EE9ng t\u1EEB ngh\u1EC7 thu\u1EADt s\u01A1n m\xE0i truy\u1EC1n th\u1ED1ng Vi\u1EC7t Nam."
1254
+ )
1255
+ },
1256
+ style: {
1257
+ fontSize: "base",
1258
+ color: "#6B5344",
1259
+ textAlign: "center"
1260
+ },
1261
+ enabled: true
1262
+ }
1263
+ ];
1264
+ }
1265
+
1266
+ // src/compat.ts
1267
+ function useLogout() {
1268
+ const { logout, isLoading } = useAuth();
1269
+ return {
1270
+ handleLogout: logout,
1271
+ loading: isLoading
1272
+ };
1273
+ }
1274
+ function getAuthToken() {
1275
+ if (typeof window === "undefined") return null;
1276
+ const token = localStorage.getItem("auth_token");
1277
+ if (!token) return null;
1278
+ try {
1279
+ const userData = localStorage.getItem("user_data");
1280
+ if (userData) {
1281
+ const user = JSON.parse(userData);
1282
+ return {
1283
+ Token: token,
1284
+ Username: user.email || user.name || "",
1285
+ UserAttributes: user
1286
+ };
1287
+ }
1288
+ return { Token: token };
1289
+ } catch (e) {
1290
+ return { Token: token };
1291
+ }
1292
+ }
1293
+ var authApi = {
1294
+ async getInfo(accessToken, idToken, username) {
1295
+ console.warn(
1296
+ "[OneX Compat] authApi.getInfo is deprecated. Use useAuth instead."
1297
+ );
1298
+ const userData = typeof window !== "undefined" ? localStorage.getItem("user_data") : null;
1299
+ if (userData) {
1300
+ return JSON.parse(userData);
1301
+ }
1302
+ return {
1303
+ name: username,
1304
+ email: username
1305
+ };
1306
+ }
1307
+ };
1308
+ var contactApi = {
1309
+ async submit(payload) {
1310
+ console.warn(
1311
+ "[OneX Compat] contactApi.submit is deprecated. Use useContact instead."
1312
+ );
1313
+ const { submitContactForm } = useContact.getState();
1314
+ return await submitContactForm(payload);
1315
+ }
1316
+ };
1317
+ var blogApi = {
1318
+ async getById(blogId) {
1319
+ console.warn(
1320
+ "[OneX Compat] blogApi.getById is deprecated. Use useBlog instead."
1321
+ );
1322
+ const { fetchBlogById } = useBlog.getState();
1323
+ await fetchBlogById(blogId);
1324
+ return useBlog.getState().currentBlog;
1325
+ },
1326
+ async getBySlug(slug) {
1327
+ console.warn(
1328
+ "[OneX Compat] blogApi.getBySlug is deprecated. Use useBlog instead."
1329
+ );
1330
+ const { fetchBlogBySlug } = useBlog.getState();
1331
+ await fetchBlogBySlug(slug);
1332
+ return useBlog.getState().currentBlog;
1333
+ }
1334
+ };
1335
+ var financeApi = {
1336
+ async createQrCode(payload) {
1337
+ console.warn(
1338
+ "[OneX Compat] financeApi.createQrCode is deprecated. Use useFinance instead."
1339
+ );
1340
+ const { createQrCode } = useFinance.getState();
1341
+ return await createQrCode(payload);
1342
+ }
1343
+ };
1344
+ var config = {
1345
+ get apiUrl() {
1346
+ console.warn(
1347
+ "[OneX Compat] config.apiUrl is deprecated. Pass config to initializeOnex instead."
1348
+ );
1349
+ return process.env.NEXT_PUBLIC_API_URL || "";
1350
+ },
1351
+ get companyId() {
1352
+ console.warn(
1353
+ "[OneX Compat] config.companyId is deprecated. Pass config to initializeOnex instead."
1354
+ );
1355
+ return process.env.NEXT_PUBLIC_API_COMPANY_ID || "";
1356
+ },
1357
+ get apiCompanyId() {
1358
+ return this.companyId;
1359
+ },
1360
+ get baseUrl() {
1361
+ return this.apiUrl;
1362
+ }
1363
+ };
1364
+
1365
+ // src/stubs.ts
1366
+ async function payOrder(_orderId, _paymentData) {
1367
+ console.warn(
1368
+ "[OneX Stub] payOrder is a temporary stub. Use useOrders().payOrder() instead."
1369
+ );
1370
+ throw new Error(
1371
+ "payOrder not yet implemented. Use useOrders().payOrder() instead."
1372
+ );
1373
+ }
1374
+ function useLocations() {
1375
+ console.warn("[OneX Stub] useLocations is not yet implemented.");
1376
+ return {
1377
+ locations: [],
1378
+ isLoading: false,
1379
+ error: null
1380
+ };
1381
+ }
1382
+ function useCheckInventory(_options) {
1383
+ console.warn("[OneX Stub] useCheckInventory is not yet implemented.");
1384
+ return {
1385
+ checkInventory: async () => ({ available: true, quantity: 0 }),
1386
+ isVariantAvailable: (_variant) => true,
1387
+ getAvailableStock: (_variant) => 0,
1388
+ checkIsOutOfStock: () => false,
1389
+ findMatchingVariant: (_option1, _option2) => null,
1390
+ getFirstAvailableVariant: () => null,
1391
+ isLoading: false,
1392
+ error: null
1393
+ };
1394
+ }
1395
+ function ProductsList(_props) {
1396
+ console.warn("[OneX Stub] ProductsList is not yet implemented.");
1397
+ return null;
1398
+ }
1399
+ var sen_data = [];
1400
+ var sen_data_up = [];
1401
+
1402
+ export { ProductsList, authApi, blogApi, config, contactApi, ensureArtCornerComponents, ensureBestSellersComponents, ensureBlogProjectsComponents, ensureBrandStoryComponents, ensureCategoriesComponents, ensureCollectionsComponents, ensureContactComponents, ensureContentCtaComponents, ensureCraftingProcessComponents, ensureFeaturedProductsComponents, ensureFeaturesComponents, ensureFooterComponents, ensureHeaderBlocks, ensureHeaderComponents, ensureHeroComponents, ensureTestimonialsComponents, ensureTinanContactCtaComponents, ensureTinanTestimonialsComponents, ensureVideoComponents, financeApi, getAuthToken, payOrder, sen_data, sen_data_up, useCheckInventory, useLocations, useLogout };
1403
+ //# sourceMappingURL=internal.mjs.map
1404
+ //# sourceMappingURL=internal.mjs.map