sitero 0.9.2 → 0.10.0

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 (145) hide show
  1. package/dist/src/cms/client/applications/ui/use-nav-items.js +4 -3
  2. package/dist/src/cms/client/infrastructure/i18n/intor-config.js +2 -1
  3. package/dist/src/cms/client/infrastructure/i18n/messages/index.js +3 -1
  4. package/dist/src/cms/client/infrastructure/i18n/messages/vi-VN/features/authentication/admin.js +132 -0
  5. package/dist/src/cms/client/infrastructure/i18n/messages/vi-VN/features/index.js +5 -0
  6. package/dist/src/cms/client/infrastructure/i18n/messages/vi-VN/index.js +8 -0
  7. package/dist/src/cms/client/infrastructure/i18n/messages/vi-VN/main/index.js +30 -0
  8. package/dist/src/cms/client/infrastructure/i18n/messages/vi-VN/resources/admin-refresh-token.js +18 -0
  9. package/dist/src/cms/client/infrastructure/i18n/messages/vi-VN/resources/admin.js +87 -0
  10. package/dist/src/cms/client/infrastructure/i18n/messages/vi-VN/resources/file.js +78 -0
  11. package/dist/src/cms/client/infrastructure/i18n/messages/vi-VN/resources/index.js +34 -0
  12. package/dist/src/cms/client/infrastructure/i18n/messages/vi-VN/resources/post.js +81 -0
  13. package/dist/src/cms/client/infrastructure/i18n/messages/vi-VN/resources/seo-metadata.js +11 -0
  14. package/dist/src/cms/client/infrastructure/i18n/messages/vi-VN/ui/index.js +186 -0
  15. package/dist/src/cms/client/interfaces/components/resources/admin/admin-table.js +1 -1
  16. package/dist/src/cms/client/interfaces/components/resources/config/config-edit-content.js +2 -1
  17. package/dist/src/cms/client/interfaces/components/resources/config/config-show-content.js +2 -1
  18. package/dist/src/cms/client/interfaces/components/resources/file/file-table.js +1 -1
  19. package/dist/src/cms/client/interfaces/components/resources/page/content/page-edit-content.js +2 -1
  20. package/dist/src/cms/client/interfaces/components/resources/page/content/page-show-content.js +2 -1
  21. package/dist/src/cms/client/interfaces/components/resources/post/category/category-card.js +5 -1
  22. package/dist/src/cms/client/interfaces/components/resources/post/category/category-table.js +6 -2
  23. package/dist/src/cms/client/interfaces/components/resources/post/content/post-create-content.js +3 -2
  24. package/dist/src/cms/client/interfaces/components/resources/post/content/post-edit-content.js +3 -2
  25. package/dist/src/cms/client/interfaces/components/resources/post/content/resolve-control-field-label.js +2 -4
  26. package/dist/src/cms/client/interfaces/components/resources/post/post-card.js +2 -1
  27. package/dist/src/cms/client/interfaces/components/resources/post/post-table.js +6 -2
  28. package/dist/src/cms/client/interfaces/components/resources/post/tag/tag-table.js +1 -1
  29. package/dist/src/cms/client/interfaces/components/ui/inputs/editor/base/base-editor.js +2 -1
  30. package/dist/src/cms/client/interfaces/components/ui/inputs/editor/resolve-editor-locale.js +6 -0
  31. package/dist/src/cms/client/interfaces/components/ui/layouts/navbar/i18n-selector.js +4 -5
  32. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicKey_/category/_id_/edit/page.js +2 -1
  33. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicKey_/category/_id_/page.js +2 -1
  34. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicKey_/category/create/page.js +2 -1
  35. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicKey_/page.js +2 -1
  36. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicKey_/post/_id_/edit/page.js +2 -1
  37. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicKey_/post/_id_/page.js +2 -1
  38. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicKey_/post/create/page.js +2 -1
  39. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicKey_/subcategory/_id_/edit/page.js +2 -1
  40. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicKey_/subcategory/_id_/page.js +2 -1
  41. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/_topicKey_/subcategory/create/page.js +2 -1
  42. package/dist/src/cms/client/interfaces/pages/dashboard/content/content-management/page.js +2 -1
  43. package/dist/src/cms/client/interfaces/pages/dashboard/system/storage/file/_id_/relations/page.js +3 -2
  44. package/dist/src/cms/client/interfaces/pages/dashboard/website/inquiry/_id_/page.js +9 -1
  45. package/dist/src/cms/client/interfaces/pages/dashboard/website/inquiry/page.js +2 -1
  46. package/dist/src/cms/client/interfaces/pages/dashboard/website/website-config/_slug_/edit/page.js +2 -1
  47. package/dist/src/cms/client/interfaces/pages/dashboard/website/website-config/_slug_/page.js +2 -1
  48. package/dist/src/cms/client/interfaces/pages/dashboard/website/website-config/page.js +2 -1
  49. package/dist/src/cms/client/interfaces/pages/dashboard/website/website-page/_slug_/edit/page.js +2 -1
  50. package/dist/src/cms/client/interfaces/pages/dashboard/website/website-page/_slug_/page.js +2 -1
  51. package/dist/src/cms/client/interfaces/pages/dashboard/website/website-page/page.js +2 -1
  52. package/dist/src/constants/cms-locale.js +2 -1
  53. package/dist/src/core/infrastructure/email/react-email-composer.js +2 -1
  54. package/dist/src/shared/resolve-cms-text.js +7 -0
  55. package/dist/types/export/index.d.ts +1 -1
  56. package/dist/types/export/index.d.ts.map +1 -1
  57. package/dist/types/src/cms/client/applications/ui/use-nav-items.d.ts.map +1 -1
  58. package/dist/types/src/cms/client/infrastructure/i18n/intor-config.d.ts.map +1 -1
  59. package/dist/types/src/cms/client/infrastructure/i18n/messages/index.d.ts +1060 -0
  60. package/dist/types/src/cms/client/infrastructure/i18n/messages/index.d.ts.map +1 -1
  61. package/dist/types/src/cms/client/infrastructure/i18n/messages/vi-VN/features/authentication/admin.d.ts +169 -0
  62. package/dist/types/src/cms/client/infrastructure/i18n/messages/vi-VN/features/authentication/admin.d.ts.map +1 -0
  63. package/dist/types/src/cms/client/infrastructure/i18n/messages/vi-VN/features/index.d.ts +173 -0
  64. package/dist/types/src/cms/client/infrastructure/i18n/messages/vi-VN/features/index.d.ts.map +1 -0
  65. package/dist/types/src/cms/client/infrastructure/i18n/messages/vi-VN/index.d.ts +1061 -0
  66. package/dist/types/src/cms/client/infrastructure/i18n/messages/vi-VN/index.d.ts.map +1 -0
  67. package/dist/types/src/cms/client/infrastructure/i18n/messages/vi-VN/main/index.d.ts +27 -0
  68. package/dist/types/src/cms/client/infrastructure/i18n/messages/vi-VN/main/index.d.ts.map +1 -0
  69. package/dist/types/src/cms/client/infrastructure/i18n/messages/vi-VN/resources/admin-refresh-token.d.ts +43 -0
  70. package/dist/types/src/cms/client/infrastructure/i18n/messages/vi-VN/resources/admin-refresh-token.d.ts.map +1 -0
  71. package/dist/types/src/cms/client/infrastructure/i18n/messages/vi-VN/resources/admin.d.ts +126 -0
  72. package/dist/types/src/cms/client/infrastructure/i18n/messages/vi-VN/resources/admin.d.ts.map +1 -0
  73. package/dist/types/src/cms/client/infrastructure/i18n/messages/vi-VN/resources/file.d.ts +153 -0
  74. package/dist/types/src/cms/client/infrastructure/i18n/messages/vi-VN/resources/file.d.ts.map +1 -0
  75. package/dist/types/src/cms/client/infrastructure/i18n/messages/vi-VN/resources/index.d.ts +525 -0
  76. package/dist/types/src/cms/client/infrastructure/i18n/messages/vi-VN/resources/index.d.ts.map +1 -0
  77. package/dist/types/src/cms/client/infrastructure/i18n/messages/vi-VN/resources/post.d.ts +142 -0
  78. package/dist/types/src/cms/client/infrastructure/i18n/messages/vi-VN/resources/post.d.ts.map +1 -0
  79. package/dist/types/src/cms/client/infrastructure/i18n/messages/vi-VN/resources/seo-metadata.d.ts +16 -0
  80. package/dist/types/src/cms/client/infrastructure/i18n/messages/vi-VN/resources/seo-metadata.d.ts.map +1 -0
  81. package/dist/types/src/cms/client/infrastructure/i18n/messages/vi-VN/ui/index.d.ts +337 -0
  82. package/dist/types/src/cms/client/infrastructure/i18n/messages/vi-VN/ui/index.d.ts.map +1 -0
  83. package/dist/types/src/cms/client/interfaces/components/resources/config/config-edit-content.d.ts.map +1 -1
  84. package/dist/types/src/cms/client/interfaces/components/resources/config/config-show-content.d.ts.map +1 -1
  85. package/dist/types/src/cms/client/interfaces/components/resources/page/content/page-edit-content.d.ts.map +1 -1
  86. package/dist/types/src/cms/client/interfaces/components/resources/page/content/page-show-content.d.ts.map +1 -1
  87. package/dist/types/src/cms/client/interfaces/components/resources/page/content/types.d.ts +2 -1
  88. package/dist/types/src/cms/client/interfaces/components/resources/page/content/types.d.ts.map +1 -1
  89. package/dist/types/src/cms/client/interfaces/components/resources/post/category/category-card.d.ts.map +1 -1
  90. package/dist/types/src/cms/client/interfaces/components/resources/post/category/category-table.d.ts.map +1 -1
  91. package/dist/types/src/cms/client/interfaces/components/resources/post/content/post-create-content.d.ts +2 -2
  92. package/dist/types/src/cms/client/interfaces/components/resources/post/content/post-create-content.d.ts.map +1 -1
  93. package/dist/types/src/cms/client/interfaces/components/resources/post/content/post-edit-content.d.ts +2 -2
  94. package/dist/types/src/cms/client/interfaces/components/resources/post/content/post-edit-content.d.ts.map +1 -1
  95. package/dist/types/src/cms/client/interfaces/components/resources/post/content/resolve-control-field-label.d.ts.map +1 -1
  96. package/dist/types/src/cms/client/interfaces/components/resources/post/content/types.d.ts +3 -2
  97. package/dist/types/src/cms/client/interfaces/components/resources/post/content/types.d.ts.map +1 -1
  98. package/dist/types/src/cms/client/interfaces/components/resources/post/post-card.d.ts.map +1 -1
  99. package/dist/types/src/cms/client/interfaces/components/resources/post/post-table.d.ts.map +1 -1
  100. package/dist/types/src/cms/client/interfaces/components/ui/inputs/editor/base/base-editor.d.ts.map +1 -1
  101. package/dist/types/src/cms/client/interfaces/components/ui/inputs/editor/resolve-editor-locale.d.ts +3 -0
  102. package/dist/types/src/cms/client/interfaces/components/ui/inputs/editor/resolve-editor-locale.d.ts.map +1 -0
  103. package/dist/types/src/cms/client/interfaces/components/ui/layouts/navbar/i18n-selector.d.ts.map +1 -1
  104. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicKey]/category/[id]/edit/page.d.ts.map +1 -1
  105. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicKey]/category/[id]/page.d.ts.map +1 -1
  106. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicKey]/category/create/page.d.ts.map +1 -1
  107. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicKey]/page.d.ts.map +1 -1
  108. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicKey]/post/[id]/edit/page.d.ts.map +1 -1
  109. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicKey]/post/[id]/page.d.ts.map +1 -1
  110. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicKey]/post/create/page.d.ts.map +1 -1
  111. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicKey]/subcategory/[id]/edit/page.d.ts.map +1 -1
  112. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicKey]/subcategory/[id]/page.d.ts.map +1 -1
  113. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/[topicKey]/subcategory/create/page.d.ts.map +1 -1
  114. package/dist/types/src/cms/client/interfaces/pages/dashboard/content/content-management/page.d.ts.map +1 -1
  115. package/dist/types/src/cms/client/interfaces/pages/dashboard/system/storage/file/[id]/relations/page.d.ts.map +1 -1
  116. package/dist/types/src/cms/client/interfaces/pages/dashboard/website/inquiry/[id]/page.d.ts.map +1 -1
  117. package/dist/types/src/cms/client/interfaces/pages/dashboard/website/inquiry/page.d.ts.map +1 -1
  118. package/dist/types/src/cms/client/interfaces/pages/dashboard/website/website-config/[slug]/edit/page.d.ts.map +1 -1
  119. package/dist/types/src/cms/client/interfaces/pages/dashboard/website/website-config/[slug]/page.d.ts.map +1 -1
  120. package/dist/types/src/cms/client/interfaces/pages/dashboard/website/website-config/page.d.ts.map +1 -1
  121. package/dist/types/src/cms/client/interfaces/pages/dashboard/website/website-page/[slug]/edit/page.d.ts.map +1 -1
  122. package/dist/types/src/cms/client/interfaces/pages/dashboard/website/website-page/[slug]/page.d.ts.map +1 -1
  123. package/dist/types/src/cms/client/interfaces/pages/dashboard/website/website-page/page.d.ts.map +1 -1
  124. package/dist/types/src/config/configs.d.ts +3 -3
  125. package/dist/types/src/config/configs.d.ts.map +1 -1
  126. package/dist/types/src/config/index.d.ts +1 -0
  127. package/dist/types/src/config/index.d.ts.map +1 -1
  128. package/dist/types/src/config/inquiry.d.ts +2 -2
  129. package/dist/types/src/config/inquiry.d.ts.map +1 -1
  130. package/dist/types/src/config/pages.d.ts +2 -2
  131. package/dist/types/src/config/pages.d.ts.map +1 -1
  132. package/dist/types/src/config/shared.d.ts +4 -0
  133. package/dist/types/src/config/shared.d.ts.map +1 -1
  134. package/dist/types/src/config/topics.d.ts +2 -2
  135. package/dist/types/src/config/topics.d.ts.map +1 -1
  136. package/dist/types/src/constants/cms-locale.d.ts +2 -1
  137. package/dist/types/src/constants/cms-locale.d.ts.map +1 -1
  138. package/dist/types/src/core/infrastructure/email/react-email-composer.d.ts.map +1 -1
  139. package/dist/types/src/shared/resolve-cms-text.d.ts +5 -0
  140. package/dist/types/src/shared/resolve-cms-text.d.ts.map +1 -0
  141. package/dist/types/src/web/server/seo/sitemap/get-category-items.d.ts.map +1 -1
  142. package/dist/types/src/web/server/seo/sitemap/get-page-items.d.ts.map +1 -1
  143. package/dist/types/src/web/server/seo/sitemap/get-post-items.d.ts.map +1 -1
  144. package/dist/types/src/web/server/seo/sitemap/get-subcategory-items.d.ts.map +1 -1
  145. package/package.json +4 -4
@@ -18,6 +18,7 @@ import 'clsx';
18
18
  import 'tailwind-merge';
19
19
  import { ensureArray } from '../../../../../../../../../../shared/utils/ensure-array.js';
20
20
  import { joinUrl } from '../../../../../../../../../../shared/utils/join-url.js';
21
+ import { resolveCmsText } from '../../../../../../../../../../shared/resolve-cms-text.js';
21
22
  import { getControlMeta } from '../../../../../../../../applications/form/get-control-meta.js';
22
23
  import 'lucide-react';
23
24
  import { PageHeaderLayout } from '../../../../../../../components/ui/blocks/page-header/page-header-layout.js';
@@ -84,7 +85,7 @@ function createPostCreatePage({
84
85
  navigation: /* @__PURE__ */ jsx(ReturnButton, { useConfirm: true, href: returnHref }),
85
86
  titleProps: {
86
87
  title: t("resources.post.text"),
87
- leftChildren: /* @__PURE__ */ jsx(Badge, { children: topic?.title[defaultWebLocale] })
88
+ leftChildren: /* @__PURE__ */ jsx(Badge, { children: resolveCmsText(topic?.title, defaultWebLocale) })
88
89
  }
89
90
  }
90
91
  ),
@@ -15,6 +15,7 @@ import 'mime-types';
15
15
  import 'clsx';
16
16
  import 'tailwind-merge';
17
17
  import { ensureArray } from '../../../../../../../../../../../shared/utils/ensure-array.js';
18
+ import { resolveCmsText } from '../../../../../../../../../../../shared/resolve-cms-text.js';
18
19
  import { getControlMeta } from '../../../../../../../../../applications/form/get-control-meta.js';
19
20
  import '../../../../../../../../../../../constants/paths/redirect.js';
20
21
  import '../../../../../../../../../../../constants/cms-locale.js';
@@ -90,7 +91,7 @@ function createSubcategoryEditPage({
90
91
  titleProps: {
91
92
  icon: Notebook,
92
93
  title: t("resources.subcategory.text"),
93
- leftChildren: /* @__PURE__ */ jsx(Badge, { children: topic?.title[locale] })
94
+ leftChildren: /* @__PURE__ */ jsx(Badge, { children: resolveCmsText(topic?.title, locale) })
94
95
  }
95
96
  }
96
97
  ),
@@ -18,6 +18,7 @@ import '@tanstack/react-query';
18
18
  import 'clsx';
19
19
  import 'tailwind-merge';
20
20
  import { joinUrl } from '../../../../../../../../../../shared/utils/join-url.js';
21
+ import { resolveCmsText } from '../../../../../../../../../../shared/resolve-cms-text.js';
21
22
  import 'next/link';
22
23
  import '@radix-ui/react-avatar';
23
24
  import '../../../../../../../components/shadcn/badge.js';
@@ -103,7 +104,7 @@ function createSubcategoryShowPage({
103
104
  titleProps: {
104
105
  icon: Notebook,
105
106
  title: t("resources.subcategory.text"),
106
- leftChildren: /* @__PURE__ */ jsx(Badge, { children: topic?.title[locale] }),
107
+ leftChildren: /* @__PURE__ */ jsx(Badge, { children: resolveCmsText(topic?.title, locale) }),
107
108
  rightChildren: subcategory?.isLocked && /* @__PURE__ */ jsx(
108
109
  Lock,
109
110
  {
@@ -18,6 +18,7 @@ import 'clsx';
18
18
  import 'tailwind-merge';
19
19
  import { ensureArray } from '../../../../../../../../../../shared/utils/ensure-array.js';
20
20
  import { joinUrl } from '../../../../../../../../../../shared/utils/join-url.js';
21
+ import { resolveCmsText } from '../../../../../../../../../../shared/resolve-cms-text.js';
21
22
  import { getControlMeta } from '../../../../../../../../applications/form/get-control-meta.js';
22
23
  import 'lucide-react';
23
24
  import { PageHeaderLayout } from '../../../../../../../components/ui/blocks/page-header/page-header-layout.js';
@@ -79,7 +80,7 @@ function createSubcategoryCreatePage({
79
80
  navigation: /* @__PURE__ */ jsx(ReturnButton, { useConfirm: true, href: returnHref }),
80
81
  titleProps: {
81
82
  title: t("resources.subcategory.text"),
82
- leftChildren: /* @__PURE__ */ jsx(Badge, { children: topic?.title[locale] })
83
+ leftChildren: /* @__PURE__ */ jsx(Badge, { children: resolveCmsText(topic?.title, locale) })
83
84
  }
84
85
  }
85
86
  ),
@@ -15,6 +15,7 @@ import '@tanstack/react-query';
15
15
  import 'clsx';
16
16
  import 'tailwind-merge';
17
17
  import { joinUrl } from '../../../../../../../shared/utils/join-url.js';
18
+ import { resolveCmsText } from '../../../../../../../shared/resolve-cms-text.js';
18
19
  import { PageHeaderLayout } from '../../../../components/ui/blocks/page-header/page-header-layout.js';
19
20
  import '@radix-ui/react-avatar';
20
21
  import '../../../../components/shadcn/badge.js';
@@ -72,7 +73,7 @@ function createContentManagementPage({
72
73
  key
73
74
  ),
74
75
  icon: /* @__PURE__ */ jsx(topic.icon, {}),
75
- text: topic.title[locale]
76
+ text: resolveCmsText(topic.title, locale)
76
77
  },
77
78
  key
78
79
  )) }) })
@@ -15,6 +15,7 @@ import '@tanstack/react-query';
15
15
  import 'clsx';
16
16
  import 'tailwind-merge';
17
17
  import { joinUrl } from '../../../../../../../../../../shared/utils/join-url.js';
18
+ import { resolveCmsText } from '../../../../../../../../../../shared/resolve-cms-text.js';
18
19
  import 'zod';
19
20
  import 'sonner';
20
21
  import { useCmsQuery } from '../../../../../../../../infrastructure/operation-result/use-cms-query.js';
@@ -230,7 +231,7 @@ function createFileRelationsPage({
230
231
  ),
231
232
  openNewTab: true
232
233
  },
233
- title: staticPages?.[key]?.title[locale] ?? key,
234
+ title: resolveCmsText(staticPages?.[key]?.title, locale) ?? key,
234
235
  secondary: key,
235
236
  style: { width: "200px" }
236
237
  },
@@ -261,7 +262,7 @@ function createFileRelationsPage({
261
262
  openNewTab: true
262
263
  },
263
264
  identity: { icon: /* @__PURE__ */ jsx(Settings, {}) },
264
- title: config?.title[locale] ?? slug,
265
+ title: resolveCmsText(config?.title, locale) ?? slug,
265
266
  secondary: slug,
266
267
  style: { width: "200px" }
267
268
  },
@@ -15,6 +15,7 @@ import { CMS_PATHS } from '../../../../../../../../constants/paths/cms-paths.js'
15
15
  import '../../../../../../../../constants/paths/redirect.js';
16
16
  import { DATE_FORMAT_OPTIONS } from '../../../../../../../../constants/date.js';
17
17
  import '../../../../../../../../constants/cms-locale.js';
18
+ import { resolveCmsText } from '../../../../../../../../shared/resolve-cms-text.js';
18
19
  import { PageHeaderLayout } from '../../../../../components/ui/blocks/page-header/page-header-layout.js';
19
20
  import '@radix-ui/react-avatar';
20
21
  import 'mime-types';
@@ -102,7 +103,14 @@ function createInquiryShowPage({
102
103
  ),
103
104
  /* @__PURE__ */ jsx(ContentContainer, { isNotFound, children: /* @__PURE__ */ jsxs(FieldsContainer, { children: [
104
105
  /* @__PURE__ */ jsx(MainFields, { children: /* @__PURE__ */ jsx(Fragment, { children: Object.entries(staticInquiry.fields).map(([key, field]) => {
105
- return /* @__PURE__ */ jsx(Field, { label: field.title[locale], children: /* @__PURE__ */ jsx(FieldBody, { isLoading: isFetching, children: inquiry?.[key] }) }, key);
106
+ return /* @__PURE__ */ jsx(
107
+ Field,
108
+ {
109
+ label: resolveCmsText(field.title, locale),
110
+ children: /* @__PURE__ */ jsx(FieldBody, { isLoading: isFetching, children: inquiry?.[key] })
111
+ },
112
+ key
113
+ );
106
114
  }) }) }),
107
115
  /* @__PURE__ */ jsx(SideFields, { children: /* @__PURE__ */ jsx(Field, { label: t("resources.admin.created-at.text"), children: /* @__PURE__ */ jsx(FieldBody, { isLoading: isFetching, children: inquiry?.createdAt && format.date(
108
116
  new Date(inquiry?.createdAt),
@@ -5,6 +5,7 @@ import { Inbox } from 'lucide-react';
5
5
  import { CMS_PATHS } from '../../../../../../../constants/paths/cms-paths.js';
6
6
  import '../../../../../../../constants/paths/redirect.js';
7
7
  import '../../../../../../../constants/cms-locale.js';
8
+ import { resolveCmsText } from '../../../../../../../shared/resolve-cms-text.js';
8
9
  import { PageHeaderLayout } from '../../../../components/ui/blocks/page-header/page-header-layout.js';
9
10
  import 'react';
10
11
  import 'ua-parser-js';
@@ -77,7 +78,7 @@ function createInquiryIndexPage({
77
78
  locale
78
79
  }) {
79
80
  const Icon = staticInquiry.fields[key]?.icon;
80
- const title = staticInquiry.fields[key]?.title?.[locale];
81
+ const title = resolveCmsText(staticInquiry.fields[key]?.title, locale);
81
82
  return /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
82
83
  /* @__PURE__ */ jsx("div", { className: "text-muted-foreground text-sm whitespace-nowrap", children: Icon ? /* @__PURE__ */ jsx(Icon, { className: "size-4" }) : /* @__PURE__ */ jsxs("p", { children: [
83
84
  title,
@@ -9,6 +9,7 @@ import 'ua-parser-js';
9
9
  import '../../../../../../../../../shared/client/react-query/client.js';
10
10
  import '@tanstack/react-query';
11
11
  import { useCmsQuery } from '../../../../../../../infrastructure/operation-result/use-cms-query.js';
12
+ import { resolveCmsText } from '../../../../../../../../../shared/resolve-cms-text.js';
12
13
  import { ConfigEditContent } from '../../../../../../components/resources/config/config-edit-content.js';
13
14
  import { PageHeaderLayout } from '../../../../../../components/ui/blocks/page-header/page-header-layout.js';
14
15
  import 'lucide-react';
@@ -70,7 +71,7 @@ function createWebsiteConfigEditPage({
70
71
  navigation: /* @__PURE__ */ jsx(ReturnButton, { useConfirm: true, replaceParent: true }),
71
72
  titleProps: {
72
73
  icon: staticConfigs[slug]?.icon,
73
- title: staticConfigs[slug]?.title[locale]
74
+ title: resolveCmsText(staticConfigs[slug]?.title, locale)
74
75
  }
75
76
  }
76
77
  ),
@@ -10,6 +10,7 @@ import 'ua-parser-js';
10
10
  import '../../../../../../../../shared/client/react-query/client.js';
11
11
  import '@tanstack/react-query';
12
12
  import { useCmsQuery } from '../../../../../../infrastructure/operation-result/use-cms-query.js';
13
+ import { resolveCmsText } from '../../../../../../../../shared/resolve-cms-text.js';
13
14
  import { ConfigShowContent } from '../../../../../components/resources/config/config-show-content.js';
14
15
  import { PageHeaderLayout } from '../../../../../components/ui/blocks/page-header/page-header-layout.js';
15
16
  import '@radix-ui/react-avatar';
@@ -68,7 +69,7 @@ function createWebsiteConfigShowPage({
68
69
  navigation: /* @__PURE__ */ jsx(ReturnButton, { pushToParent: true }),
69
70
  titleProps: {
70
71
  icon: staticConfigs[slug]?.icon,
71
- title: staticConfigs[slug]?.title[locale]
72
+ title: resolveCmsText(staticConfigs[slug]?.title, locale)
72
73
  },
73
74
  actions: /* @__PURE__ */ jsx(
74
75
  LinkButton,
@@ -17,6 +17,7 @@ import 'tailwind-merge';
17
17
  import { ensureArray } from '../../../../../../../shared/utils/ensure-array.js';
18
18
  import { joinUrl } from '../../../../../../../shared/utils/join-url.js';
19
19
  import { normalizeUnorderedCacheKey } from '../../../../../../../shared/utils/normalize-unordered-cache-key.js';
20
+ import { resolveCmsText } from '../../../../../../../shared/resolve-cms-text.js';
20
21
  import { PageHeaderLayout } from '../../../../components/ui/blocks/page-header/page-header-layout.js';
21
22
  import '@radix-ui/react-avatar';
22
23
  import '../../../../components/shadcn/badge.js';
@@ -81,7 +82,7 @@ function createWebsiteConfigPage({
81
82
  {
82
83
  href,
83
84
  icon: staticConfig?.icon && /* @__PURE__ */ jsx(staticConfig.icon, {}),
84
- text: staticConfig?.title[locale]
85
+ text: resolveCmsText(staticConfig?.title, locale)
85
86
  },
86
87
  index
87
88
  );
@@ -9,6 +9,7 @@ import 'ua-parser-js';
9
9
  import '../../../../../../../../../shared/client/react-query/client.js';
10
10
  import '@tanstack/react-query';
11
11
  import { useCmsQuery } from '../../../../../../../infrastructure/operation-result/use-cms-query.js';
12
+ import { resolveCmsText } from '../../../../../../../../../shared/resolve-cms-text.js';
12
13
  import { resolvePageFields, createAllowPageField } from '../../../../../../components/resources/page/content/types.js';
13
14
  import { PageHeaderLayout } from '../../../../../../components/ui/blocks/page-header/page-header-layout.js';
14
15
  import 'lucide-react';
@@ -75,7 +76,7 @@ function createWebsitePageEditPage({
75
76
  navigation: /* @__PURE__ */ jsx(ReturnButton, { useConfirm: true, replaceParent: true }),
76
77
  titleProps: {
77
78
  icon: staticPages[slug]?.icon,
78
- title: staticPages[slug]?.title[locale]
79
+ title: resolveCmsText(staticPages[slug]?.title, locale)
79
80
  }
80
81
  }
81
82
  ),
@@ -10,6 +10,7 @@ import 'ua-parser-js';
10
10
  import '../../../../../../../../shared/client/react-query/client.js';
11
11
  import '@tanstack/react-query';
12
12
  import { useCmsQuery } from '../../../../../../infrastructure/operation-result/use-cms-query.js';
13
+ import { resolveCmsText } from '../../../../../../../../shared/resolve-cms-text.js';
13
14
  import { resolvePageFields, createAllowPageField } from '../../../../../components/resources/page/content/types.js';
14
15
  import { PageHeaderLayout } from '../../../../../components/ui/blocks/page-header/page-header-layout.js';
15
16
  import '@radix-ui/react-avatar';
@@ -80,7 +81,7 @@ function createWebsitePageShowPage({
80
81
  navigation: /* @__PURE__ */ jsx(ReturnButton, { pushToParent: true }),
81
82
  titleProps: {
82
83
  icon: staticPages[slug]?.icon,
83
- title: staticPages[slug]?.title[locale]
84
+ title: resolveCmsText(staticPages[slug]?.title, locale)
84
85
  },
85
86
  actions: /* @__PURE__ */ jsx(
86
87
  LinkButton,
@@ -16,6 +16,7 @@ import 'clsx';
16
16
  import 'tailwind-merge';
17
17
  import { ensureArray } from '../../../../../../../shared/utils/ensure-array.js';
18
18
  import { joinUrl } from '../../../../../../../shared/utils/join-url.js';
19
+ import { resolveCmsText } from '../../../../../../../shared/resolve-cms-text.js';
19
20
  import { PageHeaderLayout } from '../../../../components/ui/blocks/page-header/page-header-layout.js';
20
21
  import '@radix-ui/react-avatar';
21
22
  import '../../../../components/shadcn/badge.js';
@@ -79,7 +80,7 @@ function createWebsitePagePage({
79
80
  {
80
81
  href,
81
82
  icon: staticPage?.icon && /* @__PURE__ */ jsx(staticPage.icon, {}),
82
- text: staticPage?.title[locale]
83
+ text: resolveCmsText(staticPage?.title, locale)
83
84
  },
84
85
  index
85
86
  );
@@ -1,6 +1,7 @@
1
1
  const CMS_LOCALES_MAP = {
2
2
  ZhTW: "zh-TW",
3
- EnUS: "en-US"
3
+ EnUS: "en-US",
4
+ ViVN: "vi-VN"
4
5
  };
5
6
  const CMS_LOCALES_ARRAY = Object.values(CMS_LOCALES_MAP);
6
7
  const CMS_DEFAULT_LOCALE = CMS_LOCALES_MAP.ZhTW;
@@ -18,7 +18,8 @@ function createReactEmailComposer({
18
18
  }) {
19
19
  try {
20
20
  const resolved = resolveEmailLocaleDefinition(catalog, key, locale);
21
- const name = siteName[resolved.locale] ?? siteName[resolved.definition.fallbackLocale];
21
+ const localizedName = siteName[resolved.locale];
22
+ const name = localizedName?.trim() ? localizedName : siteName[resolved.definition.fallbackLocale];
22
23
  if (!name?.trim())
23
24
  throw new Error(
24
25
  `Email site name missing for locale: ${resolved.locale}`
@@ -0,0 +1,7 @@
1
+ function resolveCmsText(text, locale) {
2
+ if (!text) return void 0;
3
+ const localized = text[locale];
4
+ return localized?.trim() ? localized : text["en-US"];
5
+ }
6
+
7
+ export { resolveCmsText };
@@ -1,6 +1,6 @@
1
1
  export * from "sitero-domain";
2
2
  export { type RuntimePublicEnv, getServerPublicEnv, getRuntimePublicEnv, publicEnv, RuntimePublicEnvScript, } from "../src/env";
3
- export { type StaticAdmins, type AdminField, type StaticTopics, deriveContentUiCapabilities, type ContentUiCapabilities, type ContentUiFlags, getTopicCategories, getTopicPosts, getTopicProducts, getTopicSubcategories, hasTopicRole, isContentTopic, isProductTopic, type StaticPages, type StaticInquiry, type StaticConfigs, type SeoMetadataField, type PostField, type PageField, type PostCustomStateField, type SiteConfig, EMAIL_DEFINITION_KEYS, type EmailRenderContext, type EmailCatalog, type EmailDefinition, type EmailDefinitionKey, type EmailLocaleDefinition, } from "../src/config";
3
+ export { type CmsLocalizedText, type StaticAdmins, type AdminField, type StaticTopics, deriveContentUiCapabilities, type ContentUiCapabilities, type ContentUiFlags, getTopicCategories, getTopicPosts, getTopicProducts, getTopicSubcategories, hasTopicRole, isContentTopic, isProductTopic, type StaticPages, type StaticInquiry, type StaticConfigs, type SeoMetadataField, type PostField, type PageField, type PostCustomStateField, type SiteConfig, EMAIL_DEFINITION_KEYS, type EmailRenderContext, type EmailCatalog, type EmailDefinition, type EmailDefinitionKey, type EmailLocaleDefinition, } from "../src/config";
4
4
  export type { AdminDetail, AdminListCard, ConfigDetail, FileCard, FileDetail, PostListCard, PostDetail, PostReference, } from "sitero-server";
5
5
  export { CMS_PATHS, API_PATHS, NEW_TAB_REL, NEW_TAB_TARGET, DATE_FORMAT_OPTIONS, CMS_LOCALES_MAP, CMS_LOCALES_ARRAY, CMS_DEFAULT_LOCALE, } from "../src/constants";
6
6
  export { findTranslation, createBuildTranslations, cn, debounce, ensureArray, joinUrl, normalizeSlug, parsePositiveInt, toIsoTime, localeToFlagEmoji, createVersion, normalizeUnorderedCacheKey, dateToUi, deepMerge, TIME, type ListItemStates, DO_NOT_FETCH_KEY, } from "../src/shared";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../export/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAK9B,OAAO,EACL,KAAK,gBAAgB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,SAAS,EACT,sBAAsB,GACvB,MAAM,YAAY,CAAC;AAKpB,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,2BAA2B,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,kBAAkB,EAClB,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,YAAY,EACZ,cAAc,EACd,cAAc,EACd,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,oBAAoB,EACzB,KAAK,UAAU,EACf,qBAAqB,EACrB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,GAC3B,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,WAAW,EACX,aAAa,EACb,YAAY,EAEZ,QAAQ,EACR,UAAU,EAEV,YAAY,EACZ,UAAU,EACV,aAAa,GACd,MAAM,eAAe,CAAC;AAKvB,OAAO,EACL,SAAS,EACT,SAAS,EACT,WAAW,EACX,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAK1B,OAAO,EAEL,eAAe,EACf,uBAAuB,EAGvB,EAAE,EACF,QAAQ,EACR,WAAW,EACX,OAAO,EACP,aAAa,EACb,gBAAgB,EAChB,SAAS,EACT,iBAAiB,EACjB,aAAa,EACb,0BAA0B,EAC1B,QAAQ,EACR,SAAS,EAGT,IAAI,EAGJ,KAAK,cAAc,EACnB,gBAAgB,GACjB,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../export/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAK9B,OAAO,EACL,KAAK,gBAAgB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,SAAS,EACT,sBAAsB,GACvB,MAAM,YAAY,CAAC;AAKpB,OAAO,EACL,KAAK,gBAAgB,EAErB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,2BAA2B,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,kBAAkB,EAClB,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,YAAY,EACZ,cAAc,EACd,cAAc,EACd,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,oBAAoB,EACzB,KAAK,UAAU,EACf,qBAAqB,EACrB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,GAC3B,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,WAAW,EACX,aAAa,EACb,YAAY,EAEZ,QAAQ,EACR,UAAU,EAEV,YAAY,EACZ,UAAU,EACV,aAAa,GACd,MAAM,eAAe,CAAC;AAKvB,OAAO,EACL,SAAS,EACT,SAAS,EACT,WAAW,EACX,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAK1B,OAAO,EAEL,eAAe,EACf,uBAAuB,EAGvB,EAAE,EACF,QAAQ,EACR,WAAW,EACX,OAAO,EACP,aAAa,EACb,gBAAgB,EAChB,SAAS,EACT,iBAAiB,EACjB,aAAa,EACb,0BAA0B,EAC1B,QAAQ,EACR,SAAS,EAGT,IAAI,EAGJ,KAAK,cAAc,EACnB,gBAAgB,GACjB,MAAM,eAAe,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-nav-items.d.ts","sourceRoot":"","sources":["../../../../../../../src/cms/client/applications/ui/use-nav-items.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,WAAW,EACX,YAAY,EACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AACxF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AACpF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAC;AAoBtE,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,OAAO,EACP,kBAAkB,EAClB,KAAK,EACL,MAAM,EACN,oBAAoB,EACpB,kBAAkB,GACnB,EAAE;IACD,QAAQ,EAAE;QAAE,GAAG,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAC7C,OAAO,EAAE,aAAa,CAAC;IACvB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,YAAY,CAAC;IACrB,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,kBAAkB,EAAE,kBAAkB,CAAC;CACxC;;EA6KA"}
1
+ {"version":3,"file":"use-nav-items.d.ts","sourceRoot":"","sources":["../../../../../../../src/cms/client/applications/ui/use-nav-items.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,WAAW,EACX,YAAY,EACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AACxF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AACpF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAC;AAqBtE,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,OAAO,EACP,kBAAkB,EAClB,KAAK,EACL,MAAM,EACN,oBAAoB,EACpB,kBAAkB,GACnB,EAAE;IACD,QAAQ,EAAE;QAAE,GAAG,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAC7C,OAAO,EAAE,aAAa,CAAC;IACvB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,YAAY,CAAC;IACrB,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,kBAAkB,EAAE,kBAAkB,CAAC;CACxC;;EA6KA"}
@@ -1 +1 @@
1
- {"version":3,"file":"intor-config.d.ts","sourceRoot":"","sources":["../../../../../../../src/cms/client/infrastructure/i18n/intor-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAS9D,wBAAgB,0BAA0B,CAAC,EACzC,OAAO,EACP,QAAQ,GACT,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,SAAS,CAAC;CACtD,uCAiBA"}
1
+ {"version":3,"file":"intor-config.d.ts","sourceRoot":"","sources":["../../../../../../../src/cms/client/infrastructure/i18n/intor-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAS9D,wBAAgB,0BAA0B,CAAC,EACzC,OAAO,EACP,QAAQ,GACT,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,SAAS,CAAC;CACtD,uCAkBA"}