@sd-angular/core 19.0.0-beta.1 → 19.0.0-beta.100

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 (796) hide show
  1. package/README.md +723 -64
  2. package/assets/scss/README.md +524 -0
  3. package/assets/scss/ckeditor5.scss +61 -4
  4. package/assets/scss/core/bootstrap.scss +0 -83
  5. package/assets/scss/core/form.scss +36 -16
  6. package/assets/scss/core/utilities/_base.scss +333 -0
  7. package/assets/scss/core/utilities/_border.scss +22 -0
  8. package/assets/scss/core/utilities/_display.scss +10 -0
  9. package/assets/scss/core/utilities/_elevation.scss +80 -0
  10. package/assets/scss/core/utilities/_flexbox.scss +54 -0
  11. package/assets/scss/core/utilities/_gap.scss +9 -0
  12. package/assets/scss/core/utilities/_grid.scss +142 -0
  13. package/assets/scss/core/utilities/_index.scss +17 -0
  14. package/assets/scss/core/utilities/_misc.scss +20 -0
  15. package/assets/scss/core/utilities/_overflow.scss +9 -0
  16. package/assets/scss/core/utilities/_position.scss +8 -0
  17. package/assets/scss/core/utilities/_sizing.scss +28 -0
  18. package/assets/scss/core/utilities/_spacing.scss +31 -0
  19. package/assets/scss/core/utilities/_typography.scss +99 -0
  20. package/assets/scss/sd-core.scss +8 -5
  21. package/assets/scss/themes/material-theme.scss +82 -40
  22. package/components/anchor/index.d.ts +1 -1
  23. package/components/anchor/src/components/anchor/anchor.component.d.ts +22 -0
  24. package/components/anchor/src/components/anchor-item/anchor-item.component.d.ts +9 -11
  25. package/components/anchor/src/components/anchor-nav/anchor-nav.component.d.ts +21 -0
  26. package/components/anchor/src/components/index.d.ts +1 -1
  27. package/components/anchor/src/models/index.d.ts +1 -0
  28. package/components/anchor/src/models/sd-anchor.model.d.ts +7 -0
  29. package/components/autoid-inspector/index.d.ts +8 -0
  30. package/components/autoid-inspector/src/autoid-inspector.component.d.ts +55 -0
  31. package/components/autoid-inspector/src/models/autoid-element.model.d.ts +55 -0
  32. package/components/autoid-inspector/src/models/autoid-export-format.model.d.ts +6 -0
  33. package/components/autoid-inspector/src/models/autoid-inspector-config.model.d.ts +8 -0
  34. package/components/autoid-inspector/src/services/autoid-audit.service.d.ts +19 -0
  35. package/components/autoid-inspector/src/services/autoid-export.service.d.ts +21 -0
  36. package/components/autoid-inspector/src/services/autoid-highlight.service.d.ts +12 -0
  37. package/components/autoid-inspector/src/services/autoid-scanner.service.d.ts +23 -0
  38. package/components/avatar/index.d.ts +1 -0
  39. package/components/avatar/src/avatar.component.d.ts +19 -0
  40. package/components/badge/src/badge.component.d.ts +74 -20
  41. package/components/button/src/button.component.d.ts +30 -28
  42. package/components/chart/index.d.ts +4 -0
  43. package/components/chart/src/bar-chart.component.d.ts +18 -0
  44. package/components/chart/src/doughnut-chart.component.d.ts +16 -0
  45. package/components/chart/src/line-chart.component.d.ts +18 -0
  46. package/components/chart/src/pie-chart.component.d.ts +16 -0
  47. package/components/code-editor/index.d.ts +1 -0
  48. package/components/code-editor/src/code-editor.component.d.ts +25 -0
  49. package/components/document-builder/index.d.ts +1 -0
  50. package/components/document-builder/src/components/header-footer-builder/header-footer-builder.component.d.ts +4 -1
  51. package/components/document-builder/src/document-builder.component.d.ts +14 -42
  52. package/components/document-builder/src/document-builder.config.d.ts +21 -0
  53. package/components/document-builder/src/document-builder.model.d.ts +22 -12
  54. package/components/document-builder/src/document-builder.utils.d.ts +10 -0
  55. package/components/document-builder/src/plugins/block-space/block-space.plugin.d.ts +9 -0
  56. package/components/document-builder/src/plugins/ck-comment/ck-comment.plugin.d.ts +44 -0
  57. package/components/document-builder/src/plugins/ck-comment/ck-comment.plugin.model.d.ts +57 -0
  58. package/components/document-builder/src/plugins/heading/heading.plugin.d.ts +5 -0
  59. package/components/document-builder/src/plugins/highlight-range/highlight-range.plugin.d.ts +4 -0
  60. package/components/document-builder/src/plugins/image-custom/image-custom.plugin.d.ts +31 -0
  61. package/components/document-builder/src/plugins/{image-upload.plugin.d.ts → image-upload/image-upload.plugin.d.ts} +0 -4
  62. package/components/document-builder/src/plugins/index.d.ts +11 -5
  63. package/components/document-builder/src/plugins/{page-orientation.plugin.d.ts → page-orientation/page-orientation.plugin.d.ts} +2 -2
  64. package/components/document-builder/src/plugins/paste-handler/filters/bookmark.d.ts +14 -0
  65. package/components/document-builder/src/plugins/paste-handler/filters/br.d.ts +15 -0
  66. package/components/document-builder/src/plugins/paste-handler/filters/image.d.ts +25 -0
  67. package/components/document-builder/src/plugins/paste-handler/filters/list.d.ts +29 -0
  68. package/components/document-builder/src/plugins/paste-handler/filters/parse.d.ts +35 -0
  69. package/components/document-builder/src/plugins/paste-handler/filters/removeboldwrapper.d.ts +15 -0
  70. package/components/document-builder/src/plugins/paste-handler/filters/removegooglesheetstag.d.ts +15 -0
  71. package/components/document-builder/src/plugins/paste-handler/filters/removeinvalidtablewidth.d.ts +15 -0
  72. package/components/document-builder/src/plugins/paste-handler/filters/removemsattributes.d.ts +15 -0
  73. package/components/document-builder/src/plugins/paste-handler/filters/removestyleblock.d.ts +15 -0
  74. package/components/document-builder/src/plugins/paste-handler/filters/removexmlns.d.ts +15 -0
  75. package/components/document-builder/src/plugins/paste-handler/filters/replacemsfootnotes.d.ts +54 -0
  76. package/components/document-builder/src/plugins/paste-handler/filters/replacetabswithinprewithspaces.d.ts +24 -0
  77. package/components/document-builder/src/plugins/paste-handler/filters/space.d.ts +27 -0
  78. package/components/document-builder/src/plugins/paste-handler/filters/table.d.ts +16 -0
  79. package/components/document-builder/src/plugins/paste-handler/filters/utils.d.ts +25 -0
  80. package/components/document-builder/src/plugins/paste-handler/index.d.ts +35 -0
  81. package/components/document-builder/src/plugins/paste-handler/normalizers/googledocsnormalizer.d.ts +31 -0
  82. package/components/document-builder/src/plugins/paste-handler/normalizers/googlesheetsnormalizer.d.ts +31 -0
  83. package/components/document-builder/src/plugins/paste-handler/normalizers/mswordnormalizer.d.ts +29 -0
  84. package/components/document-builder/src/plugins/paste-handler/types.d.ts +30 -0
  85. package/components/document-builder/src/plugins/table-custom/index.d.ts +34 -0
  86. package/components/document-builder/src/plugins/variable/variable.plugin.d.ts +51 -0
  87. package/components/editor/index.d.ts +3 -0
  88. package/components/editor/src/configurations/editor.configuration.d.ts +12 -0
  89. package/components/editor/src/configurations/index.d.ts +1 -0
  90. package/components/editor/src/editor.component.d.ts +52 -0
  91. package/components/editor/src/models/editor.model.d.ts +10 -0
  92. package/components/editor/src/models/image-upload.plugin.model.d.ts +51 -0
  93. package/components/editor/src/models/index.d.ts +2 -0
  94. package/components/editor/src/plugins/image-upload/image-upload.plugin.d.ts +22 -0
  95. package/components/editor/src/plugins/image-upload/utils/batch.utils.d.ts +14 -0
  96. package/components/editor/src/plugins/image-upload/utils/index.d.ts +3 -0
  97. package/components/editor/src/plugins/image-upload/utils/style.utils.d.ts +3 -0
  98. package/components/editor/src/plugins/image-upload/utils/validate.utils.d.ts +4 -0
  99. package/components/{workflow → form-generic}/src/components/form-builder/components/attribute-table/attribute-table.component.d.ts +6 -4
  100. package/components/{workflow → form-generic}/src/components/form-builder/components/attribute-template/attribute-template.component.d.ts +4 -4
  101. package/components/{workflow → form-generic}/src/components/form-builder/components/configure-validation/configure-validation.component.d.ts +4 -4
  102. package/components/{workflow → form-generic}/src/components/form-builder/components/expression-builder/expression-builder.component.d.ts +1 -1
  103. package/components/form-generic/src/components/form-builder/components/group/attribute/group-attribute.component.d.ts +23 -0
  104. package/components/form-generic/src/components/form-builder/components/group/index.d.ts +1 -0
  105. package/components/{workflow → form-generic}/src/components/form-builder/components/index.d.ts +1 -0
  106. package/components/{workflow → form-generic}/src/components/form-builder/components/table/control/table-control.component.d.ts +3 -0
  107. package/components/form-generic/src/components/form-builder/form-builder.component.d.ts +120 -0
  108. package/components/{workflow → form-generic}/src/components/form-render/form-render.component.d.ts +4 -4
  109. package/components/{workflow → form-generic}/src/components/sd-feel-expression/sd-feel-expression.component.d.ts +1 -1
  110. package/components/{workflow/src/configurations/workflow.configuration.d.ts → form-generic/src/configurations/form-generic.configuration.d.ts} +2 -2
  111. package/components/form-generic/src/configurations/index.d.ts +2 -0
  112. package/components/{workflow → form-generic}/src/models/form-generic-component.model.d.ts +27 -6
  113. package/components/{workflow → form-generic}/src/models/form-generic-expression.model.d.ts +1 -0
  114. package/components/{workflow → form-generic}/src/models/index.d.ts +1 -0
  115. package/components/{workflow → form-generic}/src/pipes/html.pipe.d.ts +4 -4
  116. package/components/{workflow → form-generic}/src/services/form-generic.service.d.ts +3 -3
  117. package/components/index.d.ts +9 -2
  118. package/components/mini-editor/index.d.ts +2 -0
  119. package/components/mini-editor/src/mini-editor.component.d.ts +91 -0
  120. package/components/mini-editor/src/mini-editor.model.d.ts +44 -0
  121. package/components/modal/index.d.ts +1 -1
  122. package/components/modal/src/modal.component.d.ts +29 -0
  123. package/components/preview/index.d.ts +3 -0
  124. package/components/preview/src/preview-image/preview-image.component.d.ts +84 -24
  125. package/components/preview/src/preview-image/preview-image.types.d.ts +53 -0
  126. package/components/preview/src/preview-pdf/preview-pdf.component.d.ts +186 -0
  127. package/components/preview/src/preview-pdf/preview-pdf.types.d.ts +84 -0
  128. package/components/quick-action/src/quick-action.component.d.ts +5 -6
  129. package/components/section/index.d.ts +1 -0
  130. package/components/section/src/section-item/section-item.component.d.ts +7 -0
  131. package/components/section/src/section.component.d.ts +11 -12
  132. package/components/side-drawer/src/side-drawer.component.d.ts +17 -26
  133. package/components/splitter/index.d.ts +3 -0
  134. package/components/splitter/src/splitter-handle/splitter-handle.component.d.ts +24 -0
  135. package/components/splitter/src/splitter-panel/splitter-panel.component.d.ts +16 -0
  136. package/components/splitter/src/splitter-state.service.d.ts +26 -0
  137. package/components/splitter/src/splitter.component.d.ts +28 -0
  138. package/components/splitter/src/splitter.models.d.ts +23 -0
  139. package/components/tab-router/src/components/tab-router-item/tab-router-item.component.d.ts +4 -1
  140. package/components/tab-router/src/components/tab-router-nav/tab-router-nav.component.d.ts +5 -6
  141. package/components/tab-router/src/components/tab-router-outlet/tab-router-outlet.component.d.ts +6 -17
  142. package/components/table/index.d.ts +3 -0
  143. package/components/table/src/components/column-title/column-title.component.d.ts +10 -0
  144. package/components/table/src/components/command/desktop-command.component.d.ts +14 -0
  145. package/components/table/src/components/command/pipes/command.pipe.d.ts +30 -0
  146. package/components/table/src/components/command/pipes/filter.pipe.d.ts +35 -0
  147. package/components/table/src/components/config/config.component.d.ts +7 -14
  148. package/components/table/src/components/desktop-cell/desktop-cell.component.d.ts +19 -12
  149. package/components/table/src/components/desktop-cell/view/view.component.d.ts +24 -0
  150. package/components/table/src/components/filter/column-filter/column-filter.component.d.ts +36 -0
  151. package/components/table/src/components/filter/external-filter/external-filter.component.d.ts +27 -0
  152. package/components/table/src/components/filter/index.d.ts +3 -0
  153. package/components/table/src/components/filter/mobile-filter/mobile-filter.component.d.ts +42 -0
  154. package/components/table/src/components/index.d.ts +2 -2
  155. package/components/table/src/components/selector-action/action-filter.pipe.d.ts +11 -10
  156. package/components/table/src/components/selector-action/selector-action.component.d.ts +7 -6
  157. package/components/table/src/directives/index.d.ts +5 -0
  158. package/components/table/src/directives/sd-column-resize.directive.d.ts +13 -0
  159. package/components/table/src/directives/sd-table-cell-def.directive.d.ts +4 -5
  160. package/components/table/src/directives/sd-table-column-filter-def.directive.d.ts +8 -0
  161. package/components/table/src/directives/sd-table-expand-def.directive.d.ts +3 -4
  162. package/components/table/src/directives/sd-table-filter-def.directive.d.ts +4 -6
  163. package/components/table/src/directives/sd-table-footer-def.directive.d.ts +2 -3
  164. package/components/table/src/directives/sd-table-title-def.directive.d.ts +8 -0
  165. package/components/table/src/directives/sticky-shadow.directive.d.ts +17 -0
  166. package/components/table/src/models/index.d.ts +1 -0
  167. package/components/table/src/models/table-column.model.d.ts +49 -40
  168. package/components/table/src/models/table-command.model.d.ts +7 -3
  169. package/components/table/src/models/table-item.model.d.ts +15 -3
  170. package/components/table/src/models/table-option-config.model.d.ts +5 -0
  171. package/components/table/src/models/table-option-export.model.d.ts +3 -2
  172. package/components/table/src/models/table-option-selector.model.d.ts +65 -10
  173. package/components/table/src/models/table-option-style.model.d.ts +6 -1
  174. package/components/table/src/models/table-option-tree.model.d.ts +12 -0
  175. package/components/table/src/models/table-option.model.d.ts +137 -8
  176. package/components/table/src/pipes/index.d.ts +1 -0
  177. package/components/table/src/pipes/sd-tree.pipe.d.ts +9 -0
  178. package/components/table/src/services/column-width.util.d.ts +7 -0
  179. package/components/table/src/services/config.service.d.ts +5 -0
  180. package/components/table/src/services/index.d.ts +3 -0
  181. package/components/table/src/services/table-export/table-export.service.d.ts +26 -0
  182. package/components/table/src/services/table-filter/table-filter.model.d.ts +6 -5
  183. package/components/table/src/services/table-format/table-format.service.d.ts +16 -0
  184. package/components/table/src/services/tree/tree.util.d.ts +14 -0
  185. package/components/table/src/table.component.d.ts +58 -57
  186. package/components/upload-file/src/configurations/upload-file.configuration.d.ts +34 -1
  187. package/components/upload-file/src/services/upload-file.service.d.ts +0 -1
  188. package/components/upload-file/src/upload-file.component.d.ts +58 -54
  189. package/components/view/index.d.ts +1 -0
  190. package/components/view/src/view.component.d.ts +16 -0
  191. package/configurations/src/sd-core.configuration.d.ts +2 -0
  192. package/directives/index.d.ts +2 -0
  193. package/directives/src/sd-href.directive.d.ts +9 -0
  194. package/directives/src/sd-tooltip.directive.d.ts +26 -0
  195. package/fesm2022/sd-angular-core-components-anchor.mjs +139 -214
  196. package/fesm2022/sd-angular-core-components-anchor.mjs.map +1 -1
  197. package/fesm2022/sd-angular-core-components-autoid-inspector.mjs +723 -0
  198. package/fesm2022/sd-angular-core-components-autoid-inspector.mjs.map +1 -0
  199. package/fesm2022/sd-angular-core-components-avatar.mjs +103 -0
  200. package/fesm2022/sd-angular-core-components-avatar.mjs.map +1 -0
  201. package/fesm2022/sd-angular-core-components-badge.mjs +102 -93
  202. package/fesm2022/sd-angular-core-components-badge.mjs.map +1 -1
  203. package/fesm2022/sd-angular-core-components-base.mjs +3 -3
  204. package/fesm2022/sd-angular-core-components-button.mjs +72 -98
  205. package/fesm2022/sd-angular-core-components-button.mjs.map +1 -1
  206. package/fesm2022/sd-angular-core-components-chart.mjs +290 -0
  207. package/fesm2022/sd-angular-core-components-chart.mjs.map +1 -0
  208. package/fesm2022/sd-angular-core-components-code-editor.mjs +128 -0
  209. package/fesm2022/sd-angular-core-components-code-editor.mjs.map +1 -0
  210. package/fesm2022/sd-angular-core-components-document-builder.mjs +4478 -813
  211. package/fesm2022/sd-angular-core-components-document-builder.mjs.map +1 -1
  212. package/fesm2022/sd-angular-core-components-editor.mjs +1078 -0
  213. package/fesm2022/sd-angular-core-components-editor.mjs.map +1 -0
  214. package/fesm2022/sd-angular-core-components-form-generic.mjs +6714 -0
  215. package/fesm2022/sd-angular-core-components-form-generic.mjs.map +1 -0
  216. package/fesm2022/sd-angular-core-components-history.mjs +9 -8
  217. package/fesm2022/sd-angular-core-components-history.mjs.map +1 -1
  218. package/fesm2022/sd-angular-core-components-import-excel.mjs +35 -33
  219. package/fesm2022/sd-angular-core-components-import-excel.mjs.map +1 -1
  220. package/fesm2022/sd-angular-core-components-mini-editor.mjs +332 -0
  221. package/fesm2022/sd-angular-core-components-mini-editor.mjs.map +1 -0
  222. package/fesm2022/sd-angular-core-components-modal.mjs +70 -93
  223. package/fesm2022/sd-angular-core-components-modal.mjs.map +1 -1
  224. package/fesm2022/sd-angular-core-components-preview.mjs +1963 -89
  225. package/fesm2022/sd-angular-core-components-preview.mjs.map +1 -1
  226. package/fesm2022/sd-angular-core-components-query-builder.mjs +3 -3
  227. package/fesm2022/sd-angular-core-components-quick-action.mjs +10 -21
  228. package/fesm2022/sd-angular-core-components-quick-action.mjs.map +1 -1
  229. package/fesm2022/sd-angular-core-components-section.mjs +42 -44
  230. package/fesm2022/sd-angular-core-components-section.mjs.map +1 -1
  231. package/fesm2022/sd-angular-core-components-side-drawer.mjs +91 -91
  232. package/fesm2022/sd-angular-core-components-side-drawer.mjs.map +1 -1
  233. package/fesm2022/sd-angular-core-components-splitter.mjs +646 -0
  234. package/fesm2022/sd-angular-core-components-splitter.mjs.map +1 -0
  235. package/fesm2022/sd-angular-core-components-tab-router.mjs +304 -288
  236. package/fesm2022/sd-angular-core-components-tab-router.mjs.map +1 -1
  237. package/fesm2022/sd-angular-core-components-table.mjs +2558 -1589
  238. package/fesm2022/sd-angular-core-components-table.mjs.map +1 -1
  239. package/fesm2022/sd-angular-core-components-upload-file.mjs +422 -463
  240. package/fesm2022/sd-angular-core-components-upload-file.mjs.map +1 -1
  241. package/fesm2022/sd-angular-core-components-view.mjs +45 -0
  242. package/fesm2022/sd-angular-core-components-view.mjs.map +1 -0
  243. package/fesm2022/sd-angular-core-components.mjs +9 -2
  244. package/fesm2022/sd-angular-core-components.mjs.map +1 -1
  245. package/fesm2022/sd-angular-core-configurations.mjs.map +1 -1
  246. package/fesm2022/sd-angular-core-directives.mjs +303 -40
  247. package/fesm2022/sd-angular-core-directives.mjs.map +1 -1
  248. package/fesm2022/sd-angular-core-forms-autocomplete.mjs +311 -347
  249. package/fesm2022/sd-angular-core-forms-autocomplete.mjs.map +1 -1
  250. package/fesm2022/sd-angular-core-forms-checkbox.mjs +14 -15
  251. package/fesm2022/sd-angular-core-forms-checkbox.mjs.map +1 -1
  252. package/fesm2022/sd-angular-core-forms-chip-calendar.mjs +195 -195
  253. package/fesm2022/sd-angular-core-forms-chip-calendar.mjs.map +1 -1
  254. package/fesm2022/sd-angular-core-forms-chip.mjs +202 -200
  255. package/fesm2022/sd-angular-core-forms-chip.mjs.map +1 -1
  256. package/fesm2022/sd-angular-core-forms-date-range.mjs +222 -258
  257. package/fesm2022/sd-angular-core-forms-date-range.mjs.map +1 -1
  258. package/fesm2022/sd-angular-core-forms-date.mjs +217 -273
  259. package/fesm2022/sd-angular-core-forms-date.mjs.map +1 -1
  260. package/fesm2022/sd-angular-core-forms-datetime.mjs +627 -307
  261. package/fesm2022/sd-angular-core-forms-datetime.mjs.map +1 -1
  262. package/fesm2022/sd-angular-core-forms-directives.mjs +12 -12
  263. package/fesm2022/sd-angular-core-forms-input-number.mjs +236 -326
  264. package/fesm2022/sd-angular-core-forms-input-number.mjs.map +1 -1
  265. package/fesm2022/sd-angular-core-forms-input.mjs +233 -286
  266. package/fesm2022/sd-angular-core-forms-input.mjs.map +1 -1
  267. package/fesm2022/sd-angular-core-forms-label.mjs +3 -3
  268. package/fesm2022/sd-angular-core-forms-models.mjs +65 -2
  269. package/fesm2022/sd-angular-core-forms-models.mjs.map +1 -1
  270. package/fesm2022/sd-angular-core-forms-radio.mjs +32 -17
  271. package/fesm2022/sd-angular-core-forms-radio.mjs.map +1 -1
  272. package/fesm2022/sd-angular-core-forms-select.mjs +411 -436
  273. package/fesm2022/sd-angular-core-forms-select.mjs.map +1 -1
  274. package/fesm2022/sd-angular-core-forms-switch.mjs +15 -21
  275. package/fesm2022/sd-angular-core-forms-switch.mjs.map +1 -1
  276. package/fesm2022/sd-angular-core-forms-textarea.mjs +211 -221
  277. package/fesm2022/sd-angular-core-forms-textarea.mjs.map +1 -1
  278. package/fesm2022/sd-angular-core-forms.mjs +4 -4
  279. package/fesm2022/sd-angular-core-handlers.mjs +10 -9
  280. package/fesm2022/sd-angular-core-handlers.mjs.map +1 -1
  281. package/fesm2022/sd-angular-core-i18n.mjs +2547 -0
  282. package/fesm2022/sd-angular-core-i18n.mjs.map +1 -0
  283. package/fesm2022/sd-angular-core-interceptors.mjs +37 -10
  284. package/fesm2022/sd-angular-core-interceptors.mjs.map +1 -1
  285. package/fesm2022/sd-angular-core-models.mjs +6 -0
  286. package/fesm2022/sd-angular-core-models.mjs.map +1 -0
  287. package/fesm2022/sd-angular-core-modules-auth.mjs +137 -0
  288. package/fesm2022/sd-angular-core-modules-auth.mjs.map +1 -0
  289. package/fesm2022/sd-angular-core-modules-authom.mjs +360 -0
  290. package/fesm2022/sd-angular-core-modules-authom.mjs.map +1 -0
  291. package/fesm2022/sd-angular-core-modules-keycloak.mjs +127 -0
  292. package/fesm2022/sd-angular-core-modules-keycloak.mjs.map +1 -0
  293. package/fesm2022/sd-angular-core-modules-layout.mjs +957 -516
  294. package/fesm2022/sd-angular-core-modules-layout.mjs.map +1 -1
  295. package/fesm2022/sd-angular-core-modules-permission.mjs +166 -80
  296. package/fesm2022/sd-angular-core-modules-permission.mjs.map +1 -1
  297. package/fesm2022/sd-angular-core-modules.mjs +3 -1
  298. package/fesm2022/sd-angular-core-modules.mjs.map +1 -1
  299. package/fesm2022/sd-angular-core-pipes.mjs +35 -16
  300. package/fesm2022/sd-angular-core-pipes.mjs.map +1 -1
  301. package/fesm2022/sd-angular-core-services-api.mjs +31 -51
  302. package/fesm2022/sd-angular-core-services-api.mjs.map +1 -1
  303. package/fesm2022/sd-angular-core-services-cache.mjs +3 -3
  304. package/fesm2022/sd-angular-core-services-confirm.mjs +83 -44
  305. package/fesm2022/sd-angular-core-services-confirm.mjs.map +1 -1
  306. package/fesm2022/sd-angular-core-services-docx.mjs +300 -0
  307. package/fesm2022/sd-angular-core-services-docx.mjs.map +1 -0
  308. package/fesm2022/sd-angular-core-services-excel.mjs +33 -27
  309. package/fesm2022/sd-angular-core-services-excel.mjs.map +1 -1
  310. package/fesm2022/sd-angular-core-services-license.mjs +3 -3
  311. package/fesm2022/sd-angular-core-services-loading.mjs +3 -3
  312. package/fesm2022/sd-angular-core-services-notify.mjs +24 -24
  313. package/fesm2022/sd-angular-core-services-notify.mjs.map +1 -1
  314. package/fesm2022/sd-angular-core-services-storage.mjs +8 -3
  315. package/fesm2022/sd-angular-core-services-storage.mjs.map +1 -1
  316. package/fesm2022/sd-angular-core-services.mjs +1 -0
  317. package/fesm2022/sd-angular-core-services.mjs.map +1 -1
  318. package/fesm2022/sd-angular-core-utilities-data-state.mjs +38 -0
  319. package/fesm2022/sd-angular-core-utilities-data-state.mjs.map +1 -0
  320. package/fesm2022/sd-angular-core-utilities-extensions.mjs +90 -792
  321. package/fesm2022/sd-angular-core-utilities-extensions.mjs.map +1 -1
  322. package/fesm2022/sd-angular-core-utilities-models.mjs +42 -105
  323. package/fesm2022/sd-angular-core-utilities-models.mjs.map +1 -1
  324. package/fesm2022/sd-angular-core-utilities.mjs +1 -0
  325. package/fesm2022/sd-angular-core-utilities.mjs.map +1 -1
  326. package/fesm2022/sd-angular-core.mjs +0 -1
  327. package/fesm2022/sd-angular-core.mjs.map +1 -1
  328. package/forms/autocomplete/src/autocomplete.component.d.ts +61 -52
  329. package/forms/checkbox/src/checkbox.component.d.ts +6 -3
  330. package/forms/chip/src/chip.component.d.ts +44 -41
  331. package/forms/chip-calendar/src/chip-calendar.component.d.ts +44 -39
  332. package/forms/date/src/date.component.d.ts +53 -45
  333. package/forms/date-range/src/date-range.component.d.ts +42 -38
  334. package/forms/datetime/src/datetime.component.d.ts +67 -49
  335. package/forms/datetime/src/popup/sd-datetime-picker.component.d.ts +37 -0
  336. package/forms/datetime/src/popup/sd-time-spinner.component.d.ts +41 -0
  337. package/forms/input/src/input.component.d.ts +64 -56
  338. package/forms/input-number/src/input-number.component.d.ts +59 -52
  339. package/forms/models/index.d.ts +1 -0
  340. package/forms/models/src/form-control-state.d.ts +23 -0
  341. package/forms/radio/src/radio.component.d.ts +11 -3
  342. package/forms/select/src/select.component.d.ts +74 -61
  343. package/forms/switch/src/switch.component.d.ts +9 -6
  344. package/forms/textarea/src/textarea.component.d.ts +49 -42
  345. package/i18n/index.d.ts +5 -0
  346. package/i18n/src/en.d.ts +442 -0
  347. package/i18n/src/i18n.messages.d.ts +2 -0
  348. package/i18n/src/i18n.pipe.d.ts +9 -0
  349. package/i18n/src/i18n.service.d.ts +14 -0
  350. package/i18n/src/i18n.token.d.ts +1 -0
  351. package/i18n/src/i18n.types.d.ts +31 -0
  352. package/i18n/src/ja.d.ts +2 -0
  353. package/i18n/src/ko.d.ts +2 -0
  354. package/i18n/src/vi.d.ts +2 -0
  355. package/i18n/src/zh.d.ts +2 -0
  356. package/interceptors/index.d.ts +1 -0
  357. package/interceptors/unauthorized/unauthorized.interceptor.d.ts +12 -0
  358. package/models/index.d.ts +1 -0
  359. package/models/src/language.model.d.ts +2 -0
  360. package/modules/auth/configurations/auth.configuration.d.ts +19 -0
  361. package/modules/auth/configurations/index.d.ts +1 -0
  362. package/modules/auth/guards/auth.guard.d.ts +11 -0
  363. package/modules/auth/guards/index.d.ts +2 -0
  364. package/modules/auth/guards/portal.guard.d.ts +11 -0
  365. package/modules/auth/index.d.ts +3 -0
  366. package/modules/auth/services/auth.model.d.ts +8 -0
  367. package/modules/auth/services/auth.service.d.ts +17 -0
  368. package/modules/auth/services/index.d.ts +2 -0
  369. package/modules/authom/authom.configuration.d.ts +17 -0
  370. package/modules/authom/authom.interceptor.d.ts +3 -0
  371. package/modules/authom/authom.module.d.ts +16 -0
  372. package/modules/authom/authom.service.d.ts +32 -0
  373. package/modules/authom/index.d.ts +35 -0
  374. package/modules/index.d.ts +3 -1
  375. package/modules/keycloak/index.d.ts +4 -0
  376. package/modules/keycloak/keycloak.configuration.d.ts +11 -0
  377. package/modules/keycloak/keycloak.interceptor.d.ts +2 -0
  378. package/modules/keycloak/keycloak.module.d.ts +18 -0
  379. package/modules/keycloak/keycloak.service.d.ts +14 -0
  380. package/modules/layout/components/index.d.ts +2 -0
  381. package/modules/layout/components/layout-main/layout-main.component.d.ts +8 -12
  382. package/modules/layout/components/page/page.component.d.ts +5 -7
  383. package/modules/layout/components/sidebar-mobile-v1/components/sidebar/sidebar.component.d.ts +35 -0
  384. package/modules/layout/components/sidebar-mobile-v1/components/user/user.component.d.ts +24 -0
  385. package/modules/layout/components/sidebar-mobile-v1/main.component.d.ts +21 -0
  386. package/modules/layout/components/sidebar-v1/components/sidebar/sidebar.component.d.ts +29 -29
  387. package/modules/layout/components/sidebar-v1/components/user/user.component.d.ts +11 -17
  388. package/modules/layout/components/sidebar-v1/main.component.d.ts +14 -14
  389. package/modules/layout/configurations/layout.configuration.d.ts +54 -3
  390. package/modules/layout/modules/forbidden/pages/root/root.component.d.ts +3 -8
  391. package/modules/layout/modules/home/components/home-page/home-page.component.d.ts +27 -5
  392. package/modules/layout/modules/not-found/pages/root/root.component.d.ts +3 -8
  393. package/modules/layout/pipes/high-light-search.pipe.d.ts +1 -1
  394. package/modules/layout/services/index.d.ts +1 -0
  395. package/modules/layout/services/layout.service.d.ts +10 -0
  396. package/modules/layout/services/menu/menu.model.d.ts +4 -1
  397. package/modules/layout/services/storage/storage.service.d.ts +2 -3
  398. package/modules/permission/src/configurations/permission.configuration.d.ts +56 -2
  399. package/modules/permission/src/directives/permission.directive.d.ts +5 -8
  400. package/modules/permission/src/guards/permission.guard.d.ts +2 -1
  401. package/modules/permission/src/services/permission.service.d.ts +6 -9
  402. package/package.json +118 -73
  403. package/pipes/index.d.ts +1 -0
  404. package/pipes/src/empty.pipe.d.ts +7 -0
  405. package/pipes/src/format-number.pipe.d.ts +1 -1
  406. package/public-api.d.ts +0 -1
  407. package/sd-angular-core-19.0.0-beta.100.tgz +0 -0
  408. package/services/api/src/api.model.d.ts +7 -1
  409. package/services/api/src/api.service.d.ts +3 -7
  410. package/services/api/src/interceptors/api.interceptor.d.ts +2 -4
  411. package/services/confirm/src/lib/components/dialog-confirm/dialog-confirm.component.d.ts +8 -0
  412. package/services/confirm/src/lib/confirm.service.d.ts +19 -0
  413. package/services/docx/index.d.ts +1 -0
  414. package/services/docx/src/lib/docx.model.d.ts +9 -0
  415. package/services/docx/src/lib/docx.service.d.ts +15 -0
  416. package/services/docx/src/lib/pandoc-core.d.ts +11 -0
  417. package/services/docx/src/public-api.d.ts +2 -0
  418. package/services/index.d.ts +1 -0
  419. package/services/notify/index.d.ts +1 -0
  420. package/services/notify/src/components/toast/toast.component.d.ts +3 -3
  421. package/services/notify/src/components/toast-container.component.d.ts +3 -4
  422. package/services/storage/src/storage.model.d.ts +1 -0
  423. package/utilities/data-state/index.d.ts +1 -0
  424. package/utilities/data-state/src/data-state.d.ts +11 -0
  425. package/utilities/extensions/index.d.ts +1 -0
  426. package/utilities/extensions/src/array.extension.d.ts +1 -7
  427. package/utilities/extensions/src/color.extension.d.ts +5 -0
  428. package/utilities/extensions/src/date.extension.d.ts +1 -18
  429. package/utilities/extensions/src/number.extension.d.ts +1 -10
  430. package/utilities/extensions/src/string.extension.d.ts +33 -2
  431. package/utilities/extensions/src/utility.extension.d.ts +7 -0
  432. package/utilities/index.d.ts +1 -0
  433. package/utilities/models/index.d.ts +3 -0
  434. package/utilities/models/src/color.model.d.ts +4 -1
  435. package/utilities/models/src/empty.model.d.ts +3 -0
  436. package/utilities/models/src/filter.model.d.ts +12 -11
  437. package/utilities/models/src/icon.model.d.ts +2 -0
  438. package/utilities/models/src/maybe-async.model.d.ts +10 -3
  439. package/utilities/models/src/nested-key-of.model.d.ts +4 -0
  440. package/utilities/models/src/operator.model.d.ts +9 -4
  441. package/utilities/models/src/order.model.d.ts +4 -4
  442. package/utilities/models/src/paging.model.d.ts +8 -15
  443. package/utilities/models/src/pattern.model.d.ts +16 -3
  444. package/utilities/models/src/size.model.d.ts +4 -1
  445. package/utilities/models/src/unwrap-signal.model.d.ts +6 -0
  446. package/assets/img/1D UX System.zip +0 -0
  447. package/assets/img/Popup/Vector.png +0 -0
  448. package/assets/img/empty.png +0 -0
  449. package/assets/img/empty.svg +0 -27
  450. package/assets/img/file-types/eps/001-file.eps +0 -143
  451. package/assets/img/file-types/eps/002-file-1.eps +0 -136
  452. package/assets/img/file-types/eps/003-file-2.eps +0 -130
  453. package/assets/img/file-types/eps/004-file-3.eps +0 -127
  454. package/assets/img/file-types/eps/005-file-4.eps +0 -120
  455. package/assets/img/file-types/eps/006-file-5.eps +0 -133
  456. package/assets/img/file-types/eps/007-file-6.eps +0 -133
  457. package/assets/img/file-types/eps/008-file-7.eps +0 -144
  458. package/assets/img/file-types/eps/009-file-8.eps +0 -150
  459. package/assets/img/file-types/eps/010-file-9.eps +0 -155
  460. package/assets/img/file-types/eps/011-file-10.eps +0 -124
  461. package/assets/img/file-types/eps/012-file-11.eps +0 -147
  462. package/assets/img/file-types/eps/013-file-12.eps +0 -125
  463. package/assets/img/file-types/eps/014-file-13.eps +0 -129
  464. package/assets/img/file-types/eps/015-file-14.eps +0 -143
  465. package/assets/img/file-types/eps/016-file-15.eps +0 -130
  466. package/assets/img/file-types/eps/017-file-16.eps +0 -197
  467. package/assets/img/file-types/eps/018-file-17.eps +0 -146
  468. package/assets/img/file-types/eps/019-file-18.eps +0 -131
  469. package/assets/img/file-types/eps/020-file-19.eps +0 -137
  470. package/assets/img/file-types/eps/021-file-20.eps +0 -134
  471. package/assets/img/file-types/eps/022-file-21.eps +0 -130
  472. package/assets/img/file-types/eps/023-file-22.eps +0 -161
  473. package/assets/img/file-types/eps/024-file-23.eps +0 -144
  474. package/assets/img/file-types/eps/025-file-24.eps +0 -164
  475. package/assets/img/file-types/eps/026-file-25.eps +0 -135
  476. package/assets/img/file-types/eps/027-file-26.eps +0 -124
  477. package/assets/img/file-types/eps/028-file-27.eps +0 -120
  478. package/assets/img/file-types/eps/029-file-28.eps +0 -141
  479. package/assets/img/file-types/eps/030-file-29.eps +0 -130
  480. package/assets/img/file-types/eps/031-file-30.eps +0 -157
  481. package/assets/img/file-types/eps/032-file-31.eps +0 -139
  482. package/assets/img/file-types/eps/033-file-32.eps +0 -139
  483. package/assets/img/file-types/eps/034-file-33.eps +0 -189
  484. package/assets/img/file-types/eps/035-file-34.eps +0 -162
  485. package/assets/img/file-types/eps/036-file-35.eps +0 -142
  486. package/assets/img/file-types/eps/037-file-36.eps +0 -123
  487. package/assets/img/file-types/eps/038-file-37.eps +0 -127
  488. package/assets/img/file-types/eps/039-file-38.eps +0 -146
  489. package/assets/img/file-types/eps/040-file-39.eps +0 -126
  490. package/assets/img/file-types/eps/041-file-40.eps +0 -117
  491. package/assets/img/file-types/eps/042-file-41.eps +0 -156
  492. package/assets/img/file-types/eps/043-file-42.eps +0 -118
  493. package/assets/img/file-types/eps/044-file-43.eps +0 -172
  494. package/assets/img/file-types/eps/045-file-44.eps +0 -201
  495. package/assets/img/file-types/eps/046-file-45.eps +0 -94
  496. package/assets/img/file-types/eps/047-file-46.eps +0 -176
  497. package/assets/img/file-types/eps/048-file-47.eps +0 -238
  498. package/assets/img/file-types/eps/049-file-48.eps +0 -187
  499. package/assets/img/file-types/eps/050-file-49.eps +0 -137
  500. package/assets/img/file-types/license/license.pdf +0 -0
  501. package/assets/img/file-types/png/3ds.png +0 -0
  502. package/assets/img/file-types/png/ai.png +0 -0
  503. package/assets/img/file-types/png/asp.png +0 -0
  504. package/assets/img/file-types/png/avi.png +0 -0
  505. package/assets/img/file-types/png/bin.png +0 -0
  506. package/assets/img/file-types/png/com.png +0 -0
  507. package/assets/img/file-types/png/css.png +0 -0
  508. package/assets/img/file-types/png/csv.png +0 -0
  509. package/assets/img/file-types/png/dbf.png +0 -0
  510. package/assets/img/file-types/png/dll.png +0 -0
  511. package/assets/img/file-types/png/doc.png +0 -0
  512. package/assets/img/file-types/png/docx.png +0 -0
  513. package/assets/img/file-types/png/dwg.png +0 -0
  514. package/assets/img/file-types/png/eml.png +0 -0
  515. package/assets/img/file-types/png/eps.png +0 -0
  516. package/assets/img/file-types/png/exe.png +0 -0
  517. package/assets/img/file-types/png/file.png +0 -0
  518. package/assets/img/file-types/png/fla.png +0 -0
  519. package/assets/img/file-types/png/gif.png +0 -0
  520. package/assets/img/file-types/png/htm.png +0 -0
  521. package/assets/img/file-types/png/ico.png +0 -0
  522. package/assets/img/file-types/png/ini.png +0 -0
  523. package/assets/img/file-types/png/iso.png +0 -0
  524. package/assets/img/file-types/png/jar.png +0 -0
  525. package/assets/img/file-types/png/jpg.png +0 -0
  526. package/assets/img/file-types/png/js.png +0 -0
  527. package/assets/img/file-types/png/mkv.png +0 -0
  528. package/assets/img/file-types/png/mov.png +0 -0
  529. package/assets/img/file-types/png/mp3.png +0 -0
  530. package/assets/img/file-types/png/mp4.png +0 -0
  531. package/assets/img/file-types/png/nfo.png +0 -0
  532. package/assets/img/file-types/png/obj.png +0 -0
  533. package/assets/img/file-types/png/otf.png +0 -0
  534. package/assets/img/file-types/png/pdf.png +0 -0
  535. package/assets/img/file-types/png/pkg.png +0 -0
  536. package/assets/img/file-types/png/png.png +0 -0
  537. package/assets/img/file-types/png/ppt.png +0 -0
  538. package/assets/img/file-types/png/pptx.png +0 -0
  539. package/assets/img/file-types/png/psd.png +0 -0
  540. package/assets/img/file-types/png/rtf.png +0 -0
  541. package/assets/img/file-types/png/svg.png +0 -0
  542. package/assets/img/file-types/png/tiff.png +0 -0
  543. package/assets/img/file-types/png/ttf.png +0 -0
  544. package/assets/img/file-types/png/txt.png +0 -0
  545. package/assets/img/file-types/png/vcf.png +0 -0
  546. package/assets/img/file-types/png/wav.png +0 -0
  547. package/assets/img/file-types/png/wmv.png +0 -0
  548. package/assets/img/file-types/png/xls.png +0 -0
  549. package/assets/img/file-types/png/xlsx.png +0 -0
  550. package/assets/img/file-types/png/xml.png +0 -0
  551. package/assets/img/file-types/png/zip.png +0 -0
  552. package/assets/img/file-types/psd/001-file.psd +0 -0
  553. package/assets/img/file-types/psd/002-file-1.psd +0 -0
  554. package/assets/img/file-types/psd/003-file-2.psd +0 -0
  555. package/assets/img/file-types/psd/004-file-3.psd +0 -0
  556. package/assets/img/file-types/psd/005-file-4.psd +0 -0
  557. package/assets/img/file-types/psd/006-file-5.psd +0 -0
  558. package/assets/img/file-types/psd/007-file-6.psd +0 -0
  559. package/assets/img/file-types/psd/008-file-7.psd +0 -0
  560. package/assets/img/file-types/psd/009-file-8.psd +0 -0
  561. package/assets/img/file-types/psd/010-file-9.psd +0 -0
  562. package/assets/img/file-types/psd/011-file-10.psd +0 -0
  563. package/assets/img/file-types/psd/012-file-11.psd +0 -0
  564. package/assets/img/file-types/psd/013-file-12.psd +0 -0
  565. package/assets/img/file-types/psd/014-file-13.psd +0 -0
  566. package/assets/img/file-types/psd/015-file-14.psd +0 -0
  567. package/assets/img/file-types/psd/016-file-15.psd +0 -0
  568. package/assets/img/file-types/psd/017-file-16.psd +0 -0
  569. package/assets/img/file-types/psd/018-file-17.psd +0 -0
  570. package/assets/img/file-types/psd/019-file-18.psd +0 -0
  571. package/assets/img/file-types/psd/020-file-19.psd +0 -0
  572. package/assets/img/file-types/psd/021-file-20.psd +0 -0
  573. package/assets/img/file-types/psd/022-file-21.psd +0 -0
  574. package/assets/img/file-types/psd/023-file-22.psd +0 -0
  575. package/assets/img/file-types/psd/024-file-23.psd +0 -0
  576. package/assets/img/file-types/psd/025-file-24.psd +0 -0
  577. package/assets/img/file-types/psd/026-file-25.psd +0 -0
  578. package/assets/img/file-types/psd/027-file-26.psd +0 -0
  579. package/assets/img/file-types/psd/028-file-27.psd +0 -0
  580. package/assets/img/file-types/psd/029-file-28.psd +0 -0
  581. package/assets/img/file-types/psd/030-file-29.psd +0 -0
  582. package/assets/img/file-types/psd/031-file-30.psd +0 -0
  583. package/assets/img/file-types/psd/032-file-31.psd +0 -0
  584. package/assets/img/file-types/psd/033-file-32.psd +0 -0
  585. package/assets/img/file-types/psd/034-file-33.psd +0 -0
  586. package/assets/img/file-types/psd/035-file-34.psd +0 -0
  587. package/assets/img/file-types/psd/036-file-35.psd +0 -0
  588. package/assets/img/file-types/psd/037-file-36.psd +0 -0
  589. package/assets/img/file-types/psd/038-file-37.psd +0 -0
  590. package/assets/img/file-types/psd/039-file-38.psd +0 -0
  591. package/assets/img/file-types/psd/040-file-39.psd +0 -0
  592. package/assets/img/file-types/psd/041-file-40.psd +0 -0
  593. package/assets/img/file-types/psd/042-file-41.psd +0 -0
  594. package/assets/img/file-types/psd/043-file-42.psd +0 -0
  595. package/assets/img/file-types/psd/044-file-43.psd +0 -0
  596. package/assets/img/file-types/psd/045-file-44.psd +0 -0
  597. package/assets/img/file-types/psd/046-file-45.psd +0 -0
  598. package/assets/img/file-types/psd/047-file-46.psd +0 -0
  599. package/assets/img/file-types/psd/048-file-47.psd +0 -0
  600. package/assets/img/file-types/psd/049-file-48.psd +0 -0
  601. package/assets/img/file-types/psd/050-file-49.psd +0 -0
  602. package/assets/img/file-types/svg/001-file.svg +0 -1
  603. package/assets/img/file-types/svg/002-file-1.svg +0 -1
  604. package/assets/img/file-types/svg/003-file-2.svg +0 -1
  605. package/assets/img/file-types/svg/004-file-3.svg +0 -1
  606. package/assets/img/file-types/svg/005-file-4.svg +0 -1
  607. package/assets/img/file-types/svg/006-file-5.svg +0 -1
  608. package/assets/img/file-types/svg/007-file-6.svg +0 -1
  609. package/assets/img/file-types/svg/008-file-7.svg +0 -1
  610. package/assets/img/file-types/svg/009-file-8.svg +0 -1
  611. package/assets/img/file-types/svg/010-file-9.svg +0 -1
  612. package/assets/img/file-types/svg/011-file-10.svg +0 -1
  613. package/assets/img/file-types/svg/012-file-11.svg +0 -1
  614. package/assets/img/file-types/svg/013-file-12.svg +0 -1
  615. package/assets/img/file-types/svg/014-file-13.svg +0 -1
  616. package/assets/img/file-types/svg/015-file-14.svg +0 -1
  617. package/assets/img/file-types/svg/016-file-15.svg +0 -1
  618. package/assets/img/file-types/svg/017-file-16.svg +0 -1
  619. package/assets/img/file-types/svg/018-file-17.svg +0 -1
  620. package/assets/img/file-types/svg/019-file-18.svg +0 -1
  621. package/assets/img/file-types/svg/020-file-19.svg +0 -1
  622. package/assets/img/file-types/svg/021-file-20.svg +0 -1
  623. package/assets/img/file-types/svg/022-file-21.svg +0 -1
  624. package/assets/img/file-types/svg/023-file-22.svg +0 -1
  625. package/assets/img/file-types/svg/024-file-23.svg +0 -1
  626. package/assets/img/file-types/svg/025-file-24.svg +0 -1
  627. package/assets/img/file-types/svg/026-file-25.svg +0 -1
  628. package/assets/img/file-types/svg/027-file-26.svg +0 -1
  629. package/assets/img/file-types/svg/028-file-27.svg +0 -1
  630. package/assets/img/file-types/svg/029-file-28.svg +0 -1
  631. package/assets/img/file-types/svg/030-file-29.svg +0 -1
  632. package/assets/img/file-types/svg/031-file-30.svg +0 -1
  633. package/assets/img/file-types/svg/032-file-31.svg +0 -1
  634. package/assets/img/file-types/svg/033-file-32.svg +0 -1
  635. package/assets/img/file-types/svg/034-file-33.svg +0 -1
  636. package/assets/img/file-types/svg/035-file-34.svg +0 -1
  637. package/assets/img/file-types/svg/036-file-35.svg +0 -1
  638. package/assets/img/file-types/svg/037-file-36.svg +0 -1
  639. package/assets/img/file-types/svg/038-file-37.svg +0 -1
  640. package/assets/img/file-types/svg/039-file-38.svg +0 -1
  641. package/assets/img/file-types/svg/040-file-39.svg +0 -1
  642. package/assets/img/file-types/svg/041-file-40.svg +0 -1
  643. package/assets/img/file-types/svg/042-file-41.svg +0 -1
  644. package/assets/img/file-types/svg/043-file-42.svg +0 -1
  645. package/assets/img/file-types/svg/044-file-43.svg +0 -1
  646. package/assets/img/file-types/svg/045-file-44.svg +0 -1
  647. package/assets/img/file-types/svg/046-file-45.svg +0 -1
  648. package/assets/img/file-types/svg/047-file-46.svg +0 -1
  649. package/assets/img/file-types/svg/048-file-47.svg +0 -1
  650. package/assets/img/file-types/svg/049-file-48.svg +0 -1
  651. package/assets/img/file-types/svg/050-file-49.svg +0 -1
  652. package/assets/img/plus-search-zoom-white.png +0 -0
  653. package/assets/scss/core/cursor.scss +0 -3
  654. package/assets/scss/core/elevation.scss +0 -57
  655. package/assets/scss/core/print.scss +0 -47
  656. package/assets/scss/core/typography.scss +0 -121
  657. package/components/anchor/src/components/anchor-horizontal/anchor-list/anchor-list.component.d.ts +0 -16
  658. package/components/anchor/src/components/anchor-vertical/anchor-list/anchor-list.component.d.ts +0 -17
  659. package/components/anchor/src/components/main/main.component.d.ts +0 -24
  660. package/components/anchor/src/models/anchor.model.d.ts +0 -5
  661. package/components/anchor/src/services/anchor.service.d.ts +0 -12
  662. package/components/anchor/src/services/index.d.ts +0 -1
  663. package/components/anchor-v2/index.d.ts +0 -1
  664. package/components/anchor-v2/src/components/anchor-item-v2/anchor-item-v2.component.d.ts +0 -12
  665. package/components/anchor-v2/src/components/anchor-v2/anchor-v2.component.d.ts +0 -25
  666. package/components/anchor-v2/src/components/anchor-vertical-v2/anchor-vertical-list-v2.component.d.ts +0 -17
  667. package/components/anchor-v2/src/components/index.d.ts +0 -2
  668. package/components/anchor-v2/src/models/index.d.ts +0 -1
  669. package/components/anchor-v2/src/models/sd-anchor-v2.model.d.ts +0 -7
  670. package/components/document-builder/src/plugins/comment.plugin.d.ts +0 -4
  671. package/components/document-builder/src/plugins/table-fit.plugin.d.ts +0 -4
  672. package/components/document-builder/src/plugins/variable.plugin.d.ts +0 -6
  673. package/components/modal/src/modal/modal.component.d.ts +0 -31
  674. package/components/table/src/components/column-filter/column-filter.component.d.ts +0 -40
  675. package/components/table/src/components/desktop-cell-view/desktop-cell-view.component.d.ts +0 -14
  676. package/components/table/src/components/desktop-command/desktop-command.component.d.ts +0 -15
  677. package/components/table/src/components/external-filter/external-filter.component.d.ts +0 -36
  678. package/components/table/src/pipes/command-disable.pipe.d.ts +0 -9
  679. package/components/table/src/pipes/command-filter.pipe.d.ts +0 -25
  680. package/components/table/src/pipes/command-title.pipe.d.ts +0 -9
  681. package/components/workflow/src/components/form-builder/form-builder.component.d.ts +0 -77
  682. package/components/workflow/src/configurations/index.d.ts +0 -1
  683. package/fesm2022/sd-angular-core-components-anchor-v2.mjs +0 -226
  684. package/fesm2022/sd-angular-core-components-anchor-v2.mjs.map +0 -1
  685. package/fesm2022/sd-angular-core-components-workflow.mjs +0 -6400
  686. package/fesm2022/sd-angular-core-components-workflow.mjs.map +0 -1
  687. package/fesm2022/sd-angular-core-guards-permission.mjs +0 -155
  688. package/fesm2022/sd-angular-core-guards-permission.mjs.map +0 -1
  689. package/fesm2022/sd-angular-core-guards.mjs +0 -6
  690. package/fesm2022/sd-angular-core-guards.mjs.map +0 -1
  691. package/fesm2022/sd-angular-core-modules-oidc.mjs +0 -127
  692. package/fesm2022/sd-angular-core-modules-oidc.mjs.map +0 -1
  693. package/fesm2022/sd-angular-core-services-firebase.mjs +0 -38
  694. package/fesm2022/sd-angular-core-services-firebase.mjs.map +0 -1
  695. package/guards/index.d.ts +0 -1
  696. package/guards/permission/index.d.ts +0 -4
  697. package/guards/permission/src/configurations/index.d.ts +0 -1
  698. package/guards/permission/src/configurations/permission.configuration.d.ts +0 -8
  699. package/guards/permission/src/directives/index.d.ts +0 -1
  700. package/guards/permission/src/directives/permission.directive.d.ts +0 -12
  701. package/guards/permission/src/guards/index.d.ts +0 -1
  702. package/guards/permission/src/guards/permission.guard.d.ts +0 -13
  703. package/guards/permission/src/services/index.d.ts +0 -1
  704. package/guards/permission/src/services/permission.service.d.ts +0 -15
  705. package/modules/oidc/dynamic-sts.loader.d.ts +0 -11
  706. package/modules/oidc/index.d.ts +0 -2
  707. package/modules/oidc/oidc.configuration.d.ts +0 -11
  708. package/modules/oidc/oidc.module.d.ts +0 -14
  709. package/services/firebase/index.d.ts +0 -2
  710. package/services/firebase/src/firebase.model.d.ts +0 -8
  711. package/services/firebase/src/firebase.service.d.ts +0 -14
  712. /package/components/{anchor-v2 → anchor}/src/index.d.ts +0 -0
  713. /package/components/{workflow → form-generic}/index.d.ts +0 -0
  714. /package/components/{workflow → form-generic}/src/components/form-builder/components/attribute-expression/attribute-expression.component.d.ts +0 -0
  715. /package/components/{workflow → form-generic}/src/components/form-builder/components/attribute-input/attribute-input.component.d.ts +0 -0
  716. /package/components/{workflow → form-generic}/src/components/form-builder/components/attribute-input-number/attribute-input-number.component.d.ts +0 -0
  717. /package/components/{workflow → form-generic}/src/components/form-builder/components/attribute-parameter/attribute-parameter.component.d.ts +0 -0
  718. /package/components/{workflow → form-generic}/src/components/form-builder/components/attribute-select/attribute-select.component.d.ts +0 -0
  719. /package/components/{workflow → form-generic}/src/components/form-builder/components/attribute-selection/attribute-selection.component.d.ts +0 -0
  720. /package/components/{workflow → form-generic}/src/components/form-builder/components/attribute-selection/components/build-queries/build-queries.component.d.ts +0 -0
  721. /package/components/{workflow → form-generic}/src/components/form-builder/components/attribute-selection/components/build-variables/build-variables.component.d.ts +0 -0
  722. /package/components/{workflow → form-generic}/src/components/form-builder/components/attribute-switch/attribute-switch.component.d.ts +0 -0
  723. /package/components/{workflow → form-generic}/src/components/form-builder/components/attribute-textarea/attribute-textarea.component.d.ts +0 -0
  724. /package/components/{workflow → form-generic}/src/components/form-builder/components/checkbox/attribute/checkbox-attribute.component.d.ts +0 -0
  725. /package/components/{workflow → form-generic}/src/components/form-builder/components/checkbox/control/checkbox-control.component.d.ts +0 -0
  726. /package/components/{workflow → form-generic}/src/components/form-builder/components/checkbox/index.d.ts +0 -0
  727. /package/components/{workflow → form-generic}/src/components/form-builder/components/chip-calendar/attribute/chip-calendar-attribute.component.d.ts +0 -0
  728. /package/components/{workflow → form-generic}/src/components/form-builder/components/chip-calendar/control/chip-calendar-control.component.d.ts +0 -0
  729. /package/components/{workflow → form-generic}/src/components/form-builder/components/chip-calendar/index.d.ts +0 -0
  730. /package/components/{workflow → form-generic}/src/components/form-builder/components/chip-string/attribute/chip-string-attribute.component.d.ts +0 -0
  731. /package/components/{workflow → form-generic}/src/components/form-builder/components/chip-string/control/chip-string-control.component.d.ts +0 -0
  732. /package/components/{workflow → form-generic}/src/components/form-builder/components/chip-string/index.d.ts +0 -0
  733. /package/components/{workflow → form-generic}/src/components/form-builder/components/datetime/attribute/datetime-attribute.component.d.ts +0 -0
  734. /package/components/{workflow → form-generic}/src/components/form-builder/components/datetime/control/datetime-control.component.d.ts +0 -0
  735. /package/components/{workflow → form-generic}/src/components/form-builder/components/datetime/index.d.ts +0 -0
  736. /package/components/{workflow → form-generic}/src/components/form-builder/components/html/attribute/components/build-queries/build-queries.component.d.ts +0 -0
  737. /package/components/{workflow → form-generic}/src/components/form-builder/components/html/attribute/html-attribute.component.d.ts +0 -0
  738. /package/components/{workflow → form-generic}/src/components/form-builder/components/html/control/html-control.component.d.ts +0 -0
  739. /package/components/{workflow → form-generic}/src/components/form-builder/components/html/index.d.ts +0 -0
  740. /package/components/{workflow → form-generic}/src/components/form-builder/components/number/attribute/number-attribute.component.d.ts +0 -0
  741. /package/components/{workflow → form-generic}/src/components/form-builder/components/number/control/number-control.component.d.ts +0 -0
  742. /package/components/{workflow → form-generic}/src/components/form-builder/components/number/index.d.ts +0 -0
  743. /package/components/{workflow → form-generic}/src/components/form-builder/components/radio/attribute/radio-attribute.component.d.ts +0 -0
  744. /package/components/{workflow → form-generic}/src/components/form-builder/components/radio/control/radio-control.component.d.ts +0 -0
  745. /package/components/{workflow → form-generic}/src/components/form-builder/components/radio/index.d.ts +0 -0
  746. /package/components/{workflow → form-generic}/src/components/form-builder/components/select/attribute/select-attribute.component.d.ts +0 -0
  747. /package/components/{workflow → form-generic}/src/components/form-builder/components/select/control/select-control.component.d.ts +0 -0
  748. /package/components/{workflow → form-generic}/src/components/form-builder/components/select/index.d.ts +0 -0
  749. /package/components/{workflow → form-generic}/src/components/form-builder/components/table/attribute/table-attribute.component.d.ts +0 -0
  750. /package/components/{workflow → form-generic}/src/components/form-builder/components/table/index.d.ts +0 -0
  751. /package/components/{workflow → form-generic}/src/components/form-builder/components/textarea/attribute/textarea-attribute.component.d.ts +0 -0
  752. /package/components/{workflow → form-generic}/src/components/form-builder/components/textarea/control/textarea-control.component.d.ts +0 -0
  753. /package/components/{workflow → form-generic}/src/components/form-builder/components/textarea/index.d.ts +0 -0
  754. /package/components/{workflow → form-generic}/src/components/form-builder/components/textfield/attribute/textfield-attribute.component.d.ts +0 -0
  755. /package/components/{workflow → form-generic}/src/components/form-builder/components/textfield/control/textfield-control.component.d.ts +0 -0
  756. /package/components/{workflow → form-generic}/src/components/form-builder/components/textfield/index.d.ts +0 -0
  757. /package/components/{workflow → form-generic}/src/components/form-builder/components/upload/attribute/upload-attribute.component.d.ts +0 -0
  758. /package/components/{workflow → form-generic}/src/components/form-builder/components/upload/control/upload-control.component.d.ts +0 -0
  759. /package/components/{workflow → form-generic}/src/components/form-builder/components/upload/index.d.ts +0 -0
  760. /package/components/{workflow → form-generic}/src/components/form-builder/services/builder.service.d.ts +0 -0
  761. /package/components/{workflow → form-generic}/src/components/form-builder/services/index.d.ts +0 -0
  762. /package/components/{workflow → form-generic}/src/components/form-render/components/index.d.ts +0 -0
  763. /package/components/{workflow → form-generic}/src/components/form-render/components/item/components/chip-calendar/chip-calendar.component.d.ts +0 -0
  764. /package/components/{workflow → form-generic}/src/components/form-render/components/item/components/chip-string/chip-string.component.d.ts +0 -0
  765. /package/components/{workflow → form-generic}/src/components/form-render/components/item/components/datetime/datetime.component.d.ts +0 -0
  766. /package/components/{workflow → form-generic}/src/components/form-render/components/item/components/html/html.component.d.ts +0 -0
  767. /package/components/{workflow → form-generic}/src/components/form-render/components/item/components/index.d.ts +0 -0
  768. /package/components/{workflow → form-generic}/src/components/form-render/components/item/components/number/number.component.d.ts +0 -0
  769. /package/components/{workflow → form-generic}/src/components/form-render/components/item/components/radio/radio.component.d.ts +0 -0
  770. /package/components/{workflow → form-generic}/src/components/form-render/components/item/components/select/select.component.d.ts +0 -0
  771. /package/components/{workflow → form-generic}/src/components/form-render/components/item/components/table/table.component.d.ts +0 -0
  772. /package/components/{workflow → form-generic}/src/components/form-render/components/item/components/textarea/textarea.component.d.ts +0 -0
  773. /package/components/{workflow → form-generic}/src/components/form-render/components/item/components/textfield/textfield.component.d.ts +0 -0
  774. /package/components/{workflow → form-generic}/src/components/form-render/components/item/components/upload/upload.component.d.ts +0 -0
  775. /package/components/{workflow → form-generic}/src/components/form-render/components/item/item.component.d.ts +0 -0
  776. /package/components/{workflow → form-generic}/src/components/form-render/components/variable/variable.component.d.ts +0 -0
  777. /package/components/{workflow → form-generic}/src/components/index.d.ts +0 -0
  778. /package/components/{workflow → form-generic}/src/configurations/form.configuration.d.ts +0 -0
  779. /package/components/{workflow → form-generic}/src/models/form-generic-definition-html.model.d.ts +0 -0
  780. /package/components/{workflow → form-generic}/src/models/form-generic-definition-selection.model.d.ts +0 -0
  781. /package/components/{workflow → form-generic}/src/models/form-generic-definition-table.model.d.ts +0 -0
  782. /package/components/{workflow → form-generic}/src/models/form-generic-template.model.d.ts +0 -0
  783. /package/components/{workflow → form-generic}/src/models/form-generic-validation.model.d.ts +0 -0
  784. /package/components/{workflow → form-generic}/src/models/form-generic.model.d.ts +0 -0
  785. /package/components/{workflow → form-generic}/src/models/form-render/form-render-args.model.d.ts +0 -0
  786. /package/components/{workflow → form-generic}/src/models/form-render/form-render-entity.model.d.ts +0 -0
  787. /package/components/{workflow → form-generic}/src/models/form-render/index.d.ts +0 -0
  788. /package/components/{workflow → form-generic}/src/pipes/component-viewed.pipe.d.ts +0 -0
  789. /package/components/{workflow → form-generic}/src/pipes/expression-feel.pipe.d.ts +0 -0
  790. /package/components/{workflow → form-generic}/src/pipes/expression-query.pipe.d.ts +0 -0
  791. /package/components/{workflow → form-generic}/src/pipes/expression-view.pipe.d.ts +0 -0
  792. /package/components/{workflow → form-generic}/src/pipes/hyperlink.pipe.d.ts +0 -0
  793. /package/components/{workflow → form-generic}/src/pipes/index.d.ts +0 -0
  794. /package/components/{workflow → form-generic}/src/pipes/when-expression.pipe.d.ts +0 -0
  795. /package/components/{workflow → form-generic}/src/services/form-render.service.d.ts +0 -0
  796. /package/components/{workflow → form-generic}/src/services/index.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sd-angular-core-i18n.mjs","sources":["../../../projects/sd-angular/i18n/src/i18n.token.ts","../../../projects/sd-angular/i18n/src/en.ts","../../../projects/sd-angular/i18n/src/ja.ts","../../../projects/sd-angular/i18n/src/ko.ts","../../../projects/sd-angular/i18n/src/vi.ts","../../../projects/sd-angular/i18n/src/zh.ts","../../../projects/sd-angular/i18n/src/i18n.messages.ts","../../../projects/sd-angular/i18n/src/i18n.service.ts","../../../projects/sd-angular/i18n/src/i18n.pipe.ts","../../../projects/sd-angular/i18n/sd-angular-core-i18n.ts"],"sourcesContent":["export const I18N_STORAGE_KEY = 'sd-core.language';\r\n","export const EN_MESSAGES = {\r\n 'core.common.cancel': 'Cancel',\r\n 'core.common.close': 'Close',\r\n 'core.common.reload': 'Reload page',\r\n 'core.test.greet': 'Hello {name}',\r\n\r\n // ---- Validators (VALIDATION_PATTERNS in @sdcorejs/utils/constants) ----\r\n 'core.validator.email.name': 'Email',\r\n 'core.validator.email.error': 'Invalid email',\r\n 'core.validator.phone.name': 'Phone',\r\n 'core.validator.phone.error': 'Invalid phone number',\r\n // Legacy aliases — pattern.model.ts cũ vẫn dùng các key này (phone-vn / cccd / id-vn)\r\n 'core.validator.phone-vn.name': 'VN phone',\r\n 'core.validator.phone-vn.error': 'Invalid Vietnamese phone number',\r\n 'core.validator.cccd.name': 'National ID',\r\n 'core.validator.cccd.error': 'Invalid national ID (12 digits)',\r\n 'core.validator.id-vn.name': 'National ID / Passport',\r\n 'core.validator.id-vn.error': 'Invalid national ID or passport',\r\n 'core.validator.vn-phone.name': 'VN phone',\r\n 'core.validator.vn-phone.error': 'Invalid Vietnamese phone number',\r\n 'core.validator.vn-id.name': 'National ID',\r\n 'core.validator.vn-id.error': 'Invalid national ID (12 digits)',\r\n 'core.validator.passport.name': 'Passport',\r\n 'core.validator.passport.error': 'Invalid passport (1 letter + 7 digits)',\r\n 'core.validator.vn-id-or-passport.name': 'National ID / Passport',\r\n 'core.validator.vn-id-or-passport.error': 'Invalid national ID or passport',\r\n 'core.validator.time.name': 'Time',\r\n 'core.validator.time.error': 'Invalid time (format HH:mm)',\r\n 'core.validator.url.name': 'URL',\r\n 'core.validator.url.error': 'Invalid URL',\r\n 'core.validator.domain.name': 'Domain',\r\n 'core.validator.domain.error': 'Invalid domain',\r\n 'core.validator.ipv4.name': 'IPv4',\r\n 'core.validator.ipv4.error': 'Invalid IPv4 address',\r\n 'core.validator.ipv6.name': 'IPv6',\r\n 'core.validator.ipv6.error': 'Invalid IPv6 address',\r\n 'core.validator.image-url.name': 'Image URL',\r\n 'core.validator.image-url.error': 'Invalid image URL',\r\n 'core.validator.slug.name': 'Slug',\r\n 'core.validator.slug.error': 'Invalid slug',\r\n 'core.validator.number.name': 'Number',\r\n 'core.validator.number.error': 'Invalid number',\r\n 'core.validator.integer.name': 'Integer',\r\n 'core.validator.integer.error': 'Invalid integer',\r\n 'core.validator.decimal.name': 'Decimal',\r\n 'core.validator.decimal.error': 'Invalid decimal number',\r\n 'core.validator.positive-number.name': 'Positive number',\r\n 'core.validator.positive-number.error': 'Must be a positive number',\r\n 'core.validator.uuid.name': 'UUID',\r\n 'core.validator.uuid.error': 'Invalid UUID',\r\n 'core.validator.code-16.name': '16-char code',\r\n 'core.validator.code-16.error': 'Invalid 16-character code',\r\n 'core.validator.code-32.name': '32-char code',\r\n 'core.validator.code-32.error': 'Invalid 32-character code',\r\n 'core.validator.hex-color.name': 'Hex color',\r\n 'core.validator.hex-color.error': 'Invalid hex color',\r\n 'core.validator.base64.name': 'Base64',\r\n 'core.validator.base64.error': 'Invalid Base64 string',\r\n\r\n // ---- Operators (operator.model.ts) ----\r\n 'core.operator.equal.display': 'Equal',\r\n 'core.operator.not-equal.display': 'Not equal',\r\n 'core.operator.greater-than.display': 'Greater than',\r\n 'core.operator.less-than.display': 'Less than',\r\n 'core.operator.greater-or-equal.display': 'Greater than or equal',\r\n 'core.operator.less-or-equal.display': 'Less than or equal',\r\n 'core.operator.contain.display': 'Contains',\r\n 'core.operator.not-contain.display': 'Does not contain',\r\n 'core.operator.start-with.display': 'Starts with',\r\n 'core.operator.end-with.display': 'Ends with',\r\n 'core.operator.in.display': 'In',\r\n 'core.operator.not-in.display': 'Not in',\r\n 'core.operator.null.display': 'Is empty',\r\n 'core.operator.not-null.display': 'Is not empty',\r\n\r\n // ---- Global error handler ----\r\n 'core.handler.global-error.update-title': 'A NEW SYSTEM UPDATE IS AVAILABLE',\r\n 'core.handler.global-error.update-body': 'The current version is outdated and could not load resources.\\nPlease press OK to reload the page.',\r\n\r\n // ---- Interceptor: no-internet ----\r\n 'core.interceptor.no-internet.offline': 'No network connection. Waiting for connection...',\r\n 'core.interceptor.no-internet.cors-error': 'Cannot connect to server (CORS or configuration error).',\r\n 'core.interceptor.no-internet.maintenance': 'Server is under maintenance. Please try again later.',\r\n 'core.interceptor.no-internet.restored': 'Connection restored.',\r\n\r\n // ---- Service: excel ----\r\n 'core.excel.cannot-read-file': 'Could not read file content',\r\n 'core.excel.no-sheet': 'Excel file has no data sheet',\r\n\r\n // ---- Service: docx ----\r\n 'core.docx.invalid-format': 'Invalid format. Please select a template in DOC or DOCX format',\r\n 'core.docx.size-exceeded': 'Template file size exceeds the supported limit. Please try again',\r\n 'core.docx.convert-error': 'An error occurred while converting the DOCX file',\r\n\r\n // ---- Service: notify (toast) ----\r\n 'core.notify.type.success': 'Success',\r\n 'core.notify.type.info': 'Information',\r\n 'core.notify.type.warning': 'Warning',\r\n 'core.notify.type.error': 'Error',\r\n 'core.notify.show-more': 'Show more ({count})',\r\n 'core.notify.show-less': 'Show less',\r\n\r\n // ---- Service: confirm ----\r\n 'core.confirm.title': 'Confirm',\r\n 'core.confirm.yes': 'OK',\r\n 'core.confirm.no': 'Cancel',\r\n 'core.confirm.yes-short': 'Yes',\r\n 'core.confirm.no-short': 'No',\r\n\r\n // ---- Directive: hover-copy ----\r\n 'core.directive.hover-copy.tooltip': 'Copy',\r\n\r\n // ---- Forms: input ----\r\n 'core.form.input.required': 'Please enter information',\r\n 'core.form.input.maxlength': 'Maximum characters: {max}',\r\n 'core.form.input.invalid-pattern': 'Invalid format',\r\n 'core.form.input.exceeded': 'Exceeded maximum characters',\r\n\r\n // ---- Forms: autocomplete ----\r\n 'core.form.autocomplete.required': 'Please enter information',\r\n\r\n // ---- Forms: chip ----\r\n 'core.form.chip.required': 'Please enter information',\r\n 'core.form.chip.minlength': 'Please enter at least {min} values',\r\n 'core.form.chip.maxlength': 'Please enter at most {max} values',\r\n\r\n // ---- Forms: chip-calendar ----\r\n 'core.form.chip-calendar.required': 'Please enter information',\r\n 'core.form.chip-calendar.minlength': 'Please enter at least {min} values',\r\n 'core.form.chip-calendar.maxlength': 'Please enter at most {max} values',\r\n\r\n // ---- Forms: date ----\r\n 'core.form.date.required': 'Please enter information',\r\n 'core.form.date.min-date': 'Minimum date: {date}',\r\n 'core.form.date.max-date': 'Maximum date: {date}',\r\n 'core.form.date.parse-error': 'Parse error: {text}',\r\n 'core.form.date.invalid-format': 'Invalid format',\r\n\r\n // ---- Forms: date-range ----\r\n 'core.form.date-range.required': 'Please enter information',\r\n 'core.form.date-range.invalid-min': 'Start date is invalid (below limit)',\r\n 'core.form.date-range.invalid-max': 'End date is invalid (above limit)',\r\n 'core.form.date-range.from': 'From',\r\n 'core.form.date-range.to': 'to',\r\n\r\n // ---- Forms: datetime ----\r\n 'core.form.datetime.required': 'Please enter information',\r\n 'core.form.datetime.min-date': 'Minimum date: {date}',\r\n 'core.form.datetime.max-date': 'Maximum date: {date}',\r\n 'core.form.datetime.invalid-format': 'Invalid format',\r\n 'core.form.datetime.now': 'Now',\r\n 'core.form.datetime.confirm': 'Confirm',\r\n\r\n // ---- Forms: time-spinner ----\r\n 'core.form.time-spinner.hour': 'Hour',\r\n 'core.form.time-spinner.minute': 'Minute',\r\n 'core.form.time-spinner.second': 'Second',\r\n 'core.form.time-spinner.increase-hour': 'Increase hour',\r\n 'core.form.time-spinner.decrease-hour': 'Decrease hour',\r\n 'core.form.time-spinner.increase-minute': 'Increase minute',\r\n 'core.form.time-spinner.decrease-minute': 'Decrease minute',\r\n 'core.form.time-spinner.increase-second': 'Increase second',\r\n 'core.form.time-spinner.decrease-second': 'Decrease second',\r\n\r\n // ---- Forms: input-number ----\r\n 'core.form.input-number.required': 'Please enter information',\r\n 'core.form.input-number.min': 'Value must not be less than {min}',\r\n 'core.form.input-number.max': 'Value must not be greater than {max}',\r\n\r\n // ---- Forms: radio ----\r\n 'core.form.radio.required': 'Please enter information',\r\n\r\n // ---- Forms: select ----\r\n 'core.form.select.required': 'Please enter information',\r\n\r\n // ---- Forms: textarea ----\r\n 'core.form.textarea.required': 'Please enter information',\r\n 'core.form.textarea.maxlength': 'Maximum characters: {max}',\r\n 'core.form.textarea.invalid-pattern': 'Invalid format',\r\n 'core.form.textarea.exceeded': 'Exceeded maximum characters',\r\n\r\n // ---- Component: editor ----\r\n 'core.component.editor.required': 'Please enter content',\r\n 'core.component.editor.maxlength': 'Maximum characters: {max}',\r\n 'core.component.editor.image.invalid-format': 'File format \".{format}\" is not allowed. Allowed formats: {allowed}',\r\n 'core.component.editor.image.size-exceeded': 'File size {sizeMB}MB exceeds the limit of {maxSizeMB}MB',\r\n 'core.component.editor.image.min-width': 'Image width {width}px is below the minimum of {min}px',\r\n 'core.component.editor.image.min-height': 'Image height {height}px is below the minimum of {min}px',\r\n 'core.component.editor.image.max-width': 'Image width {width}px exceeds the limit of {max}px',\r\n 'core.component.editor.image.max-height': 'Image height {height}px exceeds the limit of {max}px',\r\n 'core.component.editor.image.max-per-selection': 'You can select at most {max} images per selection',\r\n\r\n // ---- Component: document-builder ----\r\n 'core.component.document-builder.page-number.current': 'Current page number',\r\n 'core.component.document-builder.page-number.total': 'Total pages',\r\n 'core.component.document-builder.ck-comment.label': 'Comment',\r\n 'core.component.document-builder.ck-comment.text-too-long': 'Text too long ({length} characters). Maximum {max} characters.',\r\n 'core.component.document-builder.variable.not-allowed': 'Adding variable to the text is not allowed',\r\n 'core.component.document-builder.variable.invalid-data': 'Invalid variable data',\r\n\r\n // ---- Component: form-builder ----\r\n 'core.component.form-builder.field-key': 'Field key',\r\n 'core.component.form-builder.display': 'Display',\r\n 'core.component.form-builder.general': 'General',\r\n 'core.component.form-builder.visible-when': 'Visible when',\r\n 'core.component.form-builder.required': 'Required',\r\n 'core.component.form-builder.label': 'Label',\r\n 'core.component.form-builder.disabled': 'Disabled',\r\n 'core.component.form-builder.disabled-when': 'Disabled when',\r\n 'core.component.form-builder.hidden-when': 'Hidden when',\r\n 'core.component.form-builder.validation': 'Validation',\r\n 'core.component.form-builder.required-when': 'Required when',\r\n 'core.component.form-builder.confirm': 'Confirm',\r\n 'core.component.form-builder.delete': 'Delete',\r\n 'core.component.form-builder.save': 'Save',\r\n 'core.component.form-builder.hint': 'Hint',\r\n 'core.component.form-builder.parameter': 'Parameters',\r\n 'core.component.form-builder.add-field': 'Add field',\r\n 'core.component.form-builder.data': 'Data',\r\n 'core.component.form-builder.query-condition': 'Query condition',\r\n 'core.component.form-builder.set-query-value': 'Set query value',\r\n 'core.component.form-builder.value-source-field': 'Source field',\r\n 'core.component.form-builder.assign-parameter': 'Assign parameter',\r\n 'core.component.form-builder.template-data': 'Template data',\r\n 'core.component.form-builder.set-expression': 'Set expression',\r\n 'core.component.form-builder.condition-group': 'Condition group',\r\n 'core.component.form-builder.condition': 'Condition',\r\n 'core.component.form-builder.layout': 'Layout',\r\n 'core.component.form-builder.maxlength': 'Maximum characters',\r\n 'core.component.form-builder.assign-parameter-value': 'Assign parameter value',\r\n 'core.component.form-builder.parameter-name': 'Parameter name',\r\n 'core.component.form-builder.parameter-value': 'Parameter value',\r\n 'core.component.form-builder.assign-value': 'Assign value',\r\n 'core.component.form-builder.add-data': 'Add data',\r\n 'core.component.form-builder.data-api': 'API data',\r\n 'core.component.form-builder.data-static': 'Static data',\r\n 'core.component.form-builder.set-on-change-assign': 'Set value-on-change',\r\n 'core.component.form-builder.target-field': 'Target field',\r\n 'core.component.form-builder.target-value': 'Target value',\r\n 'core.component.form-builder.column-data': 'Column data',\r\n 'core.component.form-builder.add-column': 'Add column',\r\n 'core.component.form-builder.column-config': 'Column config',\r\n 'core.component.form-builder.column-name': 'Column name',\r\n 'core.component.form-builder.width': 'Width',\r\n 'core.component.form-builder.data-type': 'Data type',\r\n 'core.component.form-builder.show-when-true': 'Show when TRUE',\r\n 'core.component.form-builder.show-when-false': 'Show when FALSE',\r\n 'core.component.form-builder.column-list': 'Column list',\r\n 'core.component.form-builder.yes-no': 'Yes/No',\r\n 'core.component.form-builder.config-validation-error-warning': 'Configure validation error/warning',\r\n 'core.component.form-builder.message-type': 'Message type',\r\n 'core.component.form-builder.message-display': 'Display message',\r\n 'core.component.form-builder.condition-expression': 'Condition expression',\r\n 'core.component.form-builder.add-validation': 'Add validation',\r\n 'core.component.form-builder.expression': 'Expression',\r\n 'core.component.form-builder.available-methods': 'Available methods',\r\n 'core.component.form-builder.format': 'Format',\r\n 'core.component.form-builder.time': 'Time',\r\n 'core.component.form-builder.content': 'Content',\r\n 'core.component.form-builder.min': 'Minimum',\r\n 'core.component.form-builder.max': 'Maximum',\r\n 'core.component.form-builder.vertical': 'Vertical',\r\n 'core.component.form-builder.multiple': 'Multiple selection',\r\n 'core.component.form-builder.default-value': 'Default value',\r\n 'core.component.form-builder.type': 'Type',\r\n 'core.component.form-builder.file': 'File',\r\n 'core.component.form-builder.image': 'Image',\r\n 'core.component.form-builder.max-files': 'Max files/images',\r\n 'core.component.form-builder.size-mb': 'Size (MB)',\r\n 'core.component.form-builder.format-example': 'Format (e.g. png,jpg ...)',\r\n 'core.component.form-builder.source-mobile': 'Source (mobile)',\r\n 'core.component.form-builder.config-variable': 'Configure variables',\r\n 'core.component.form-builder.config-validation-warning-error': 'Configure validation warning/error',\r\n 'core.component.form-builder.back-to-design': 'Back to design',\r\n 'core.component.form-builder.preview': 'Preview',\r\n 'core.component.form-builder.drag-vertically': 'Drag up/down',\r\n 'core.component.form-builder.unset-readonly': 'Remove read-only',\r\n 'core.component.form-builder.set-readonly': 'Read-only',\r\n 'core.component.form-builder.duplicate': 'Duplicate',\r\n 'core.component.form-builder.show': 'Show',\r\n 'core.component.form-builder.hide': 'Hide',\r\n 'core.component.form-builder.flex': 'Flex',\r\n 'core.component.form-builder.display-label': 'Display label',\r\n 'core.component.form-builder.attribute': 'Attribute',\r\n 'core.component.form-builder.add-variable': 'Add variable',\r\n 'core.component.form-builder.add-new': 'Add new',\r\n 'core.component.form-builder.detail': 'Details',\r\n 'core.component.form-builder.create-update': 'Create/update',\r\n 'core.component.form-builder.default': 'Default',\r\n 'core.component.form-builder.show-more': 'Show more',\r\n 'core.component.form-builder.show-less': 'Show less',\r\n 'core.component.form-builder.row-overflow': 'Cannot move to this row because the total size exceeds 12 columns',\r\n 'core.component.form-builder.upload-source.all': 'All',\r\n 'core.component.form-builder.upload-source.photo-library': 'Pick from library',\r\n 'core.component.form-builder.upload-source.capture': 'Take photo',\r\n // Form-builder UI v2 (M3 redesign)\r\n 'core.component.form-builder.components': 'Components',\r\n 'core.component.form-builder.search-components': 'Search components…',\r\n 'core.component.form-builder.view-json': 'View JSON',\r\n 'core.component.form-builder.design': 'Design',\r\n 'core.component.form-builder.preview-runtime': 'Preview · Runtime',\r\n 'core.component.form-builder.cancel': 'Cancel',\r\n 'core.component.form-builder.submit': 'Submit',\r\n 'core.component.form-builder.empty-title': 'Drag components here to start',\r\n 'core.component.form-builder.empty-hint': 'Build your form by dragging fields from the left panel, or press',\r\n 'core.component.form-builder.conditional': 'Conditional',\r\n 'core.component.form-builder.group-drop-here': 'Drop a field here to add it to this group',\r\n 'core.component.form-builder.hidden': 'Hidden',\r\n 'core.component.form-builder.read-only': 'Read only',\r\n 'core.component.form-builder.untitled': 'Untitled',\r\n 'core.component.form-builder.no-selection-title': 'Nothing selected',\r\n 'core.component.form-builder.no-selection-hint': 'Select a component on the canvas to edit its attributes.',\r\n 'core.component.form-builder.group-children': 'Children',\r\n 'core.component.form-builder.group-icon': 'Icon',\r\n 'core.component.form-builder.group-accent-color': 'Accent color',\r\n 'core.component.form-builder.group-no-children': 'No fields yet. Add or drag fields into this group.',\r\n 'core.component.form-builder.break': 'Break',\r\n\r\n // ---- Component: code-editor ----\r\n 'core.component.code-editor.copied': 'Copied!',\r\n 'core.component.code-editor.copy': 'Copy code',\r\n\r\n // ---- Component: history ----\r\n 'core.component.history.by': 'By',\r\n\r\n // ---- Component: import-excel ----\r\n 'core.component.import-excel.title': 'Import Excel data',\r\n 'core.component.import-excel.see-all': 'See all',\r\n 'core.component.import-excel.valid-rows': 'Valid rows',\r\n 'core.component.import-excel.error-rows': 'Error rows',\r\n 'core.component.import-excel.warning-rows': 'Warning rows',\r\n 'core.component.import-excel.valid-data': 'Valid data',\r\n 'core.component.import-excel.download-template-tooltip': 'Click to download template',\r\n 'core.component.import-excel.upload': 'Upload',\r\n 'core.component.import-excel.download': 'Download',\r\n 'core.component.import-excel.confirm-save': 'Confirm & Save',\r\n 'core.component.import-excel.status': 'Status',\r\n 'core.component.import-excel.no-data-upload': 'No data uploaded',\r\n 'core.component.import-excel.click-here-template': 'Click here to download template',\r\n 'core.component.import-excel.no-data-in-file': 'File has no data',\r\n 'core.component.import-excel.row-limit': 'Upload limit is {limit} rows',\r\n 'core.component.import-excel.required': 'Required data',\r\n 'core.component.import-excel.min-length': 'Minimum string length: {min}',\r\n 'core.component.import-excel.max-length': 'Maximum string length: {max}',\r\n 'core.component.import-excel.not-a-number': '{value} is not a valid number',\r\n 'core.component.import-excel.below-min': '{value} is below the minimum value: {min}',\r\n 'core.component.import-excel.above-max': '{value} is above the maximum value: {max}',\r\n 'core.component.import-excel.invalid-bool': 'Please enter a valid value (true, false, 1, 0)',\r\n 'core.component.import-excel.invalid-value': 'Value {value} is invalid',\r\n 'core.component.import-excel.value-not-in-list': 'Value {value} is not in the allowed list [{list}]',\r\n 'core.component.import-excel.invalid-date-format': 'Date {value} does not match format {format}',\r\n 'core.component.import-excel.generic-error': 'An error occurred',\r\n 'core.component.import-excel.notify-title': 'Notification',\r\n 'core.component.import-excel.message-column': 'Message',\r\n 'core.component.import-excel.success': 'Success',\r\n\r\n // ---- Component: preview-image ----\r\n 'core.component.preview-image.no-image': 'No image information',\r\n 'core.component.preview-image.title': 'Preview image',\r\n 'core.component.preview-image.no-image-hint': 'There are no images to display',\r\n 'core.component.preview-image.load-error': 'Failed to load image',\r\n 'core.component.preview-image.load-error-hint': 'The image may have been deleted or the path is invalid',\r\n 'core.component.preview-image.retry': 'Retry',\r\n 'core.component.preview-image.close': 'Close',\r\n 'core.component.preview-image.prev': 'Previous image',\r\n 'core.component.preview-image.next': 'Next image',\r\n 'core.component.preview-image.zoom-in': 'Zoom in',\r\n 'core.component.preview-image.zoom-out': 'Zoom out',\r\n 'core.component.preview-image.fit': 'Fit to screen',\r\n 'core.component.preview-image.rotate': 'Rotate',\r\n 'core.component.preview-image.download': 'Download',\r\n 'core.component.preview-image.fullscreen': 'Fullscreen',\r\n 'core.component.preview-image.loading': 'Loading image...',\r\n 'core.component.preview-image.kbd-hint-nav': 'navigate',\r\n 'core.component.preview-image.kbd-hint-close': 'close',\r\n\r\n // ---- Component: preview-pdf ----\r\n 'core.component.preview-pdf.title': 'Preview document',\r\n 'core.component.preview-pdf.close': 'Close',\r\n 'core.component.preview-pdf.pages-count': '{count} pages',\r\n 'core.component.preview-pdf.tab.thumbnails': 'Pages',\r\n 'core.component.preview-pdf.tab.outline': 'Outline',\r\n 'core.component.preview-pdf.tab.search': 'Find',\r\n 'core.component.preview-pdf.first-page': 'First page',\r\n 'core.component.preview-pdf.prev-page': 'Previous page',\r\n 'core.component.preview-pdf.next-page': 'Next page',\r\n 'core.component.preview-pdf.last-page': 'Last page',\r\n 'core.component.preview-pdf.zoom-in': 'Zoom in',\r\n 'core.component.preview-pdf.zoom-out': 'Zoom out',\r\n 'core.component.preview-pdf.fit-page': 'Fit page',\r\n 'core.component.preview-pdf.fit-width': 'Fit width',\r\n 'core.component.preview-pdf.actual-size': 'Actual size',\r\n 'core.component.preview-pdf.rotate': 'Rotate',\r\n 'core.component.preview-pdf.scroll-page': 'Single page',\r\n 'core.component.preview-pdf.scroll-continuous': 'Continuous scroll',\r\n 'core.component.preview-pdf.print': 'Print',\r\n 'core.component.preview-pdf.download': 'Download',\r\n 'core.component.preview-pdf.fullscreen': 'Fullscreen',\r\n 'core.component.preview-pdf.toggle-sidebar': 'Toggle sidebar',\r\n 'core.component.preview-pdf.page-of': 'page {current} / {total}',\r\n 'core.component.preview-pdf.empty.title': 'No document',\r\n 'core.component.preview-pdf.empty.subtitle': 'No PDF file to display yet',\r\n 'core.component.preview-pdf.loading': 'Loading document...',\r\n 'core.component.preview-pdf.loading.page': 'Processing page {current} / {total}',\r\n 'core.component.preview-pdf.error.invalid.title': 'Failed to load document',\r\n 'core.component.preview-pdf.error.invalid.body': 'The PDF file may be corrupted. Please check the file.',\r\n 'core.component.preview-pdf.error.password.title': 'Document is protected',\r\n 'core.component.preview-pdf.error.password.body': 'This PDF file requires a password to open.',\r\n 'core.component.preview-pdf.error.network.title': 'Cannot connect',\r\n 'core.component.preview-pdf.error.network.body': 'Unable to load the file from the server. Please try again later.',\r\n 'core.component.preview-pdf.error.unknown.title': 'An error occurred',\r\n 'core.component.preview-pdf.error.unknown.body': 'Please retry or download the original file to view it.',\r\n 'core.component.preview-pdf.error.retry': 'Retry',\r\n 'core.component.preview-pdf.error.download-raw': 'Download original',\r\n 'core.component.preview-pdf.deferred.outline': 'Outline will be added in a future version.',\r\n 'core.component.preview-pdf.deferred.search': 'Search will be added in a future version.',\r\n 'core.component.preview-pdf.search': 'Search',\r\n 'core.component.preview-pdf.search-placeholder': 'Search in document...',\r\n 'core.component.preview-pdf.search-case': 'Match case',\r\n 'core.component.preview-pdf.search-whole': 'Whole word',\r\n 'core.component.preview-pdf.search-no-results': 'No results',\r\n 'core.component.preview-pdf.search-results-count': '{count} results for \"{term}\"',\r\n 'core.component.preview-pdf.search-prev': 'Previous match',\r\n 'core.component.preview-pdf.search-next': 'Next match',\r\n 'core.component.preview-pdf.search-close': 'Close search',\r\n\r\n // ---- Component: table ----\r\n 'core.component.table.setup': 'Table setup',\r\n 'core.component.table.column-header': 'Column header',\r\n 'core.component.table.width': 'Width',\r\n 'core.component.table.fixed': 'Fixed',\r\n 'core.component.table.char-limit': 'Character limit',\r\n 'core.component.table.skip': 'Skip',\r\n 'core.component.table.apply': 'Apply',\r\n 'core.component.table.filter': 'Filter',\r\n 'core.component.table.clear-selection': 'Clear selection',\r\n 'core.component.table.customize': 'Customize',\r\n 'core.component.table.search': 'Search',\r\n 'core.component.table.reload': 'Reload',\r\n 'core.component.table.setup-short': 'Setup',\r\n 'core.component.table.no-results': 'No results found',\r\n 'core.component.table.no-results-hint': 'Please search or filter with different criteria',\r\n 'core.component.table.choose-filter-hint': 'Please choose a filter to start',\r\n 'core.component.table.no-data': 'No data',\r\n 'core.component.table.export-excel': 'Export Excel',\r\n 'core.component.table.export-csv': 'Export CSV',\r\n 'core.component.table.showing': 'Showing:',\r\n 'core.component.table.paginator.first-page': 'First page',\r\n 'core.component.table.paginator.last-page': 'Last page',\r\n 'core.component.table.paginator.items-per-page': 'Showing',\r\n 'core.component.table.paginator.next-page': 'Next page',\r\n 'core.component.table.paginator.previous-page': 'Previous page',\r\n 'core.component.table.error-occurred': 'An error occurred',\r\n 'core.component.table.not-an-array': 'Data is not an array',\r\n 'core.component.table.config.confirm-reset': 'Confirm reset all settings to defaults',\r\n 'core.component.table.popup-export.select-columns': 'Please select columns to export',\r\n 'core.component.table.selector-action.default-msg': 'items selected',\r\n 'core.component.tab-router.too-many-tabs': 'You have opened too many tabs.',\r\n\r\n // ---- Component: upload-file ----\r\n 'core.component.upload-file.upload': 'Upload file',\r\n 'core.component.upload-file.error-occurred': 'An error occurred',\r\n 'core.component.upload-file.please-upload': 'Please upload a file/image',\r\n 'core.component.upload-file.desc-format-and-size': 'Format: {exts} and up to: {maxSize}MB',\r\n 'core.component.upload-file.desc-format': 'Format: {exts}',\r\n 'core.component.upload-file.desc-max-size': 'Up to: {maxSize}MB',\r\n 'core.component.upload-file.not-image': '[{name}] Uploaded file is not an image',\r\n 'core.component.upload-file.invalid-format': '[{name}] Uploaded file has invalid format: {exts}',\r\n 'core.component.upload-file.size-exceeded': '[{name}] Max file size: {maxSize} MB',\r\n 'core.component.upload-file.upload-failed': 'An error occurred during file upload',\r\n 'core.component.upload-file.too-many-files': 'You selected too many files. Please check the count',\r\n 'core.component.upload-file.confirm-delete-message': 'Do you want to delete this file? This action cannot be undone',\r\n 'core.component.upload-file.confirm-delete-title': 'Confirm delete?',\r\n 'core.component.upload-file.confirm-yes': 'Confirm',\r\n 'core.component.upload-file.confirm-no': 'Cancel',\r\n 'core.component.upload-file.no-configuration': 'Please inject SD_UPLOAD_FILE_CONFIGURATION or pass [upload] directly into the component',\r\n 'core.component.upload-file.no-configuration-key': 'No upload configuration found for key=\\'{key}\\'. Please check providers or pass [upload] directly',\r\n 'core.component.upload-file.preview-title': 'Preview image',\r\n\r\n // ---- Module: layout (sidebar / user menu) ----\r\n 'core.module.layout.user.change-password': 'Change password',\r\n 'core.module.layout.user.logout': 'Sign out',\r\n 'core.module.layout.sidebar.search': 'Search',\r\n\r\n // ---- Module: layout (greeting + weekday) ----\r\n 'core.module.layout.greeting.hello': 'Hello, {name}',\r\n 'core.module.layout.weekday.0': 'Sunday',\r\n 'core.module.layout.weekday.1': 'Monday',\r\n 'core.module.layout.weekday.2': 'Tuesday',\r\n 'core.module.layout.weekday.3': 'Wednesday',\r\n 'core.module.layout.weekday.4': 'Thursday',\r\n 'core.module.layout.weekday.5': 'Friday',\r\n 'core.module.layout.weekday.6': 'Saturday',\r\n 'core.module.layout.today-info.format': '{weekday}, {date}',\r\n\r\n // ---- Module: layout (forbidden page) ----\r\n 'core.module.layout.forbidden.title': 'Access denied',\r\n 'core.module.layout.forbidden.message': \"You don't have permission to access this page. Please contact your administrator or go back to the home page\",\r\n 'core.module.layout.forbidden.back-home': 'Back to home',\r\n\r\n // ---- Module: layout (not-found page) ----\r\n 'core.module.layout.not-found.title': '404 - Page not found',\r\n 'core.module.layout.not-found.message': \"The page you're looking for doesn't exist or has been removed. Please check the URL or go back to the home page to continue.\",\r\n 'core.module.layout.not-found.back': 'Go back',\r\n\r\n // ---- Module: layout (home page) ----\r\n 'core.module.layout.home.tab-name': 'Home',\r\n 'core.module.layout.home.feature.data': 'Data',\r\n 'core.module.layout.home.feature.reports': 'Reports',\r\n 'core.module.layout.home.feature.users': 'Users',\r\n 'core.module.layout.home.feature.workflow': 'Workflow',\r\n 'core.module.layout.home.feature.audit': 'Audit',\r\n 'core.module.layout.home.feature.integration': 'Integration',\r\n\r\n // ---- Module: layout (mock fallback when SD_LAYOUT_CONFIGURATION is not provided) ----\r\n 'core.module.layout.mock.user.full-name': 'Demo User',\r\n\r\n // ---- Module: generic (generic-select) ----\r\n 'core.module.generic.generic-select.detail-link': 'details',\r\n} as const;\r\n","import type { EN_MESSAGES } from './en';\r\n\r\nexport const JA_MESSAGES: Record<keyof typeof EN_MESSAGES, string> = {\r\n 'core.common.cancel': 'キャンセル',\r\n 'core.common.close': '閉じる',\r\n 'core.common.reload': 'ページを再読み込み',\r\n 'core.test.greet': 'こんにちは {name}さん',\r\n\r\n // ---- Validators (VALIDATION_PATTERNS in @sdcorejs/utils/constants) ----\r\n 'core.validator.email.name': 'メールアドレス',\r\n 'core.validator.email.error': 'メールアドレスの形式が正しくありません',\r\n 'core.validator.phone.name': '電話番号',\r\n 'core.validator.phone.error': '電話番号の形式が正しくありません',\r\n // Legacy aliases\r\n 'core.validator.phone-vn.name': 'VN電話番号',\r\n 'core.validator.phone-vn.error': 'ベトナムの電話番号の形式が正しくありません',\r\n 'core.validator.cccd.name': '個人番号',\r\n 'core.validator.cccd.error': '個人番号の形式が正しくありません(12桁)',\r\n 'core.validator.id-vn.name': '個人番号 / パスポート',\r\n 'core.validator.id-vn.error': '個人番号またはパスポート番号の形式が正しくありません',\r\n 'core.validator.vn-phone.name': 'VN電話番号',\r\n 'core.validator.vn-phone.error': 'ベトナムの電話番号の形式が正しくありません',\r\n 'core.validator.vn-id.name': '個人番号',\r\n 'core.validator.vn-id.error': '個人番号の形式が正しくありません(12桁)',\r\n 'core.validator.passport.name': 'パスポート',\r\n 'core.validator.passport.error': 'パスポート番号の形式が正しくありません(英字1文字 + 数字7桁)',\r\n 'core.validator.vn-id-or-passport.name': '個人番号 / パスポート',\r\n 'core.validator.vn-id-or-passport.error': '個人番号またはパスポート番号の形式が正しくありません',\r\n 'core.validator.time.name': '時刻',\r\n 'core.validator.time.error': '時刻の形式が正しくありません(HH:mm 形式)',\r\n 'core.validator.url.name': 'URL',\r\n 'core.validator.url.error': 'URLの形式が正しくありません',\r\n 'core.validator.domain.name': 'ドメイン',\r\n 'core.validator.domain.error': 'ドメインの形式が正しくありません',\r\n 'core.validator.ipv4.name': 'IPv4',\r\n 'core.validator.ipv4.error': 'IPv4アドレスの形式が正しくありません',\r\n 'core.validator.ipv6.name': 'IPv6',\r\n 'core.validator.ipv6.error': 'IPv6アドレスの形式が正しくありません',\r\n 'core.validator.image-url.name': '画像URL',\r\n 'core.validator.image-url.error': '画像URLの形式が正しくありません',\r\n 'core.validator.slug.name': 'スラッグ',\r\n 'core.validator.slug.error': 'スラッグの形式が正しくありません',\r\n 'core.validator.number.name': '数値',\r\n 'core.validator.number.error': '数値の形式が正しくありません',\r\n 'core.validator.integer.name': '整数',\r\n 'core.validator.integer.error': '整数の形式が正しくありません',\r\n 'core.validator.decimal.name': '小数',\r\n 'core.validator.decimal.error': '小数の形式が正しくありません',\r\n 'core.validator.positive-number.name': '正の数',\r\n 'core.validator.positive-number.error': '正の数を入力してください',\r\n 'core.validator.uuid.name': 'UUID',\r\n 'core.validator.uuid.error': 'UUIDの形式が正しくありません',\r\n 'core.validator.code-16.name': '16文字コード',\r\n 'core.validator.code-16.error': '16文字コードの形式が正しくありません',\r\n 'core.validator.code-32.name': '32文字コード',\r\n 'core.validator.code-32.error': '32文字コードの形式が正しくありません',\r\n 'core.validator.hex-color.name': 'HEXカラー',\r\n 'core.validator.hex-color.error': 'HEXカラーの形式が正しくありません',\r\n 'core.validator.base64.name': 'Base64',\r\n 'core.validator.base64.error': 'Base64文字列の形式が正しくありません',\r\n\r\n // ---- Operators (operator.model.ts) ----\r\n 'core.operator.equal.display': '等しい',\r\n 'core.operator.not-equal.display': '等しくない',\r\n 'core.operator.greater-than.display': 'より大きい',\r\n 'core.operator.less-than.display': 'より小さい',\r\n 'core.operator.greater-or-equal.display': '以上',\r\n 'core.operator.less-or-equal.display': '以下',\r\n 'core.operator.contain.display': '含む',\r\n 'core.operator.not-contain.display': '含まない',\r\n 'core.operator.start-with.display': 'で始まる',\r\n 'core.operator.end-with.display': 'で終わる',\r\n 'core.operator.in.display': 'いずれかに一致',\r\n 'core.operator.not-in.display': 'いずれにも一致しない',\r\n 'core.operator.null.display': '空である',\r\n 'core.operator.not-null.display': '空でない',\r\n\r\n // ---- Global error handler ----\r\n 'core.handler.global-error.update-title': '新しいシステムアップデートがあります',\r\n 'core.handler.global-error.update-body': '現在のバージョンが古いため、リソースを読み込めませんでした。\\nOKを押してページを再読み込みしてください。',\r\n\r\n // ---- Interceptor: no-internet ----\r\n 'core.interceptor.no-internet.offline': 'ネットワーク接続がありません。接続を待機中...',\r\n 'core.interceptor.no-internet.cors-error': 'サーバーに接続できません(CORSまたは設定エラー)。',\r\n 'core.interceptor.no-internet.maintenance': 'サーバーはメンテナンス中です。しばらくしてから再度お試しください。',\r\n 'core.interceptor.no-internet.restored': '接続が復旧しました。',\r\n\r\n // ---- Service: excel ----\r\n 'core.excel.cannot-read-file': 'ファイルの内容を読み取れませんでした',\r\n 'core.excel.no-sheet': 'Excelファイルにデータシートがありません',\r\n\r\n // ---- Service: docx ----\r\n 'core.docx.invalid-format': '形式が正しくありません。DOCまたはDOCX形式のテンプレートを選択してください',\r\n 'core.docx.size-exceeded': 'テンプレートファイルのサイズが上限を超えています。もう一度お試しください',\r\n 'core.docx.convert-error': 'DOCXファイルの変換中にエラーが発生しました',\r\n\r\n // ---- Service: notify (toast) ----\r\n 'core.notify.type.success': '成功',\r\n 'core.notify.type.info': '情報',\r\n 'core.notify.type.warning': '警告',\r\n 'core.notify.type.error': 'エラー',\r\n 'core.notify.show-more': 'もっと見る ({count})',\r\n 'core.notify.show-less': '折りたたむ',\r\n\r\n // ---- Service: confirm ----\r\n 'core.confirm.title': '確認',\r\n 'core.confirm.yes': 'OK',\r\n 'core.confirm.no': 'キャンセル',\r\n 'core.confirm.yes-short': 'はい',\r\n 'core.confirm.no-short': 'いいえ',\r\n\r\n // ---- Directive: hover-copy ----\r\n 'core.directive.hover-copy.tooltip': 'コピー',\r\n\r\n // ---- Forms: input ----\r\n 'core.form.input.required': '入力してください',\r\n 'core.form.input.maxlength': '最大文字数: {max}',\r\n 'core.form.input.invalid-pattern': '形式が正しくありません',\r\n 'core.form.input.exceeded': '最大文字数を超えています',\r\n\r\n // ---- Forms: autocomplete ----\r\n 'core.form.autocomplete.required': '入力してください',\r\n\r\n // ---- Forms: chip ----\r\n 'core.form.chip.required': '入力してください',\r\n 'core.form.chip.minlength': '{min}件以上入力してください',\r\n 'core.form.chip.maxlength': '{max}件以内で入力してください',\r\n\r\n // ---- Forms: chip-calendar ----\r\n 'core.form.chip-calendar.required': '入力してください',\r\n 'core.form.chip-calendar.minlength': '{min}件以上入力してください',\r\n 'core.form.chip-calendar.maxlength': '{max}件以内で入力してください',\r\n\r\n // ---- Forms: date ----\r\n 'core.form.date.required': '入力してください',\r\n 'core.form.date.min-date': '最小日付: {date}',\r\n 'core.form.date.max-date': '最大日付: {date}',\r\n 'core.form.date.parse-error': '解析エラー: {text}',\r\n 'core.form.date.invalid-format': '形式が正しくありません',\r\n\r\n // ---- Forms: date-range ----\r\n 'core.form.date-range.required': '入力してください',\r\n 'core.form.date-range.invalid-min': '開始日が無効です(下限を下回っています)',\r\n 'core.form.date-range.invalid-max': '終了日が無効です(上限を超えています)',\r\n 'core.form.date-range.from': '開始',\r\n 'core.form.date-range.to': '~',\r\n\r\n // ---- Forms: datetime ----\r\n 'core.form.datetime.required': '入力してください',\r\n 'core.form.datetime.min-date': '最小日付: {date}',\r\n 'core.form.datetime.max-date': '最大日付: {date}',\r\n 'core.form.datetime.invalid-format': '形式が正しくありません',\r\n 'core.form.datetime.now': '現在',\r\n 'core.form.datetime.confirm': '確定',\r\n\r\n // ---- Forms: time-spinner ----\r\n 'core.form.time-spinner.hour': '時',\r\n 'core.form.time-spinner.minute': '分',\r\n 'core.form.time-spinner.second': '秒',\r\n 'core.form.time-spinner.increase-hour': '時を増やす',\r\n 'core.form.time-spinner.decrease-hour': '時を減らす',\r\n 'core.form.time-spinner.increase-minute': '分を増やす',\r\n 'core.form.time-spinner.decrease-minute': '分を減らす',\r\n 'core.form.time-spinner.increase-second': '秒を増やす',\r\n 'core.form.time-spinner.decrease-second': '秒を減らす',\r\n\r\n // ---- Forms: input-number ----\r\n 'core.form.input-number.required': '入力してください',\r\n 'core.form.input-number.min': '{min}以上の値を入力してください',\r\n 'core.form.input-number.max': '{max}以下の値を入力してください',\r\n\r\n // ---- Forms: radio ----\r\n 'core.form.radio.required': '選択してください',\r\n\r\n // ---- Forms: select ----\r\n 'core.form.select.required': '選択してください',\r\n\r\n // ---- Forms: textarea ----\r\n 'core.form.textarea.required': '入力してください',\r\n 'core.form.textarea.maxlength': '最大文字数: {max}',\r\n 'core.form.textarea.invalid-pattern': '形式が正しくありません',\r\n 'core.form.textarea.exceeded': '最大文字数を超えています',\r\n\r\n // ---- Component: editor ----\r\n 'core.component.editor.required': '内容を入力してください',\r\n 'core.component.editor.maxlength': '最大文字数: {max}',\r\n 'core.component.editor.image.invalid-format': 'ファイル形式 \".{format}\" は許可されていません。許可される形式: {allowed}',\r\n 'core.component.editor.image.size-exceeded': 'ファイルサイズ {sizeMB}MB は上限の {maxSizeMB}MB を超えています',\r\n 'core.component.editor.image.min-width': '画像の幅 {width}px は最小値 {min}px を下回っています',\r\n 'core.component.editor.image.min-height': '画像の高さ {height}px は最小値 {min}px を下回っています',\r\n 'core.component.editor.image.max-width': '画像の幅 {width}px は上限 {max}px を超えています',\r\n 'core.component.editor.image.max-height': '画像の高さ {height}px は上限 {max}px を超えています',\r\n 'core.component.editor.image.max-per-selection': '一度に選択できる画像は最大{max}枚です',\r\n\r\n // ---- Component: document-builder ----\r\n 'core.component.document-builder.page-number.current': '現在のページ番号',\r\n 'core.component.document-builder.page-number.total': '総ページ数',\r\n 'core.component.document-builder.ck-comment.label': 'コメント',\r\n 'core.component.document-builder.ck-comment.text-too-long': 'テキストが長すぎます({length}文字)。最大{max}文字です。',\r\n 'core.component.document-builder.variable.not-allowed': 'テキストへの変数の追加は許可されていません',\r\n 'core.component.document-builder.variable.invalid-data': '変数データが正しくありません',\r\n\r\n // ---- Component: form-builder ----\r\n 'core.component.form-builder.field-key': 'フィールドキー',\r\n 'core.component.form-builder.display': '表示',\r\n 'core.component.form-builder.general': '一般',\r\n 'core.component.form-builder.visible-when': '表示条件',\r\n 'core.component.form-builder.required': '必須',\r\n 'core.component.form-builder.label': 'ラベル',\r\n 'core.component.form-builder.disabled': '無効',\r\n 'core.component.form-builder.disabled-when': '無効化条件',\r\n 'core.component.form-builder.hidden-when': '非表示条件',\r\n 'core.component.form-builder.validation': 'バリデーション',\r\n 'core.component.form-builder.required-when': '必須条件',\r\n 'core.component.form-builder.confirm': '確認',\r\n 'core.component.form-builder.delete': '削除',\r\n 'core.component.form-builder.save': '保存',\r\n 'core.component.form-builder.hint': 'ヒント',\r\n 'core.component.form-builder.parameter': 'パラメータ',\r\n 'core.component.form-builder.add-field': 'フィールドを追加',\r\n 'core.component.form-builder.data': 'データ',\r\n 'core.component.form-builder.query-condition': 'クエリ条件',\r\n 'core.component.form-builder.set-query-value': 'クエリ値を設定',\r\n 'core.component.form-builder.value-source-field': 'ソースフィールド',\r\n 'core.component.form-builder.assign-parameter': 'パラメータを割り当て',\r\n 'core.component.form-builder.template-data': 'テンプレートデータ',\r\n 'core.component.form-builder.set-expression': '式を設定',\r\n 'core.component.form-builder.condition-group': '条件グループ',\r\n 'core.component.form-builder.condition': '条件',\r\n 'core.component.form-builder.layout': 'レイアウト',\r\n 'core.component.form-builder.maxlength': '最大文字数',\r\n 'core.component.form-builder.assign-parameter-value': 'パラメータ値を割り当て',\r\n 'core.component.form-builder.parameter-name': 'パラメータ名',\r\n 'core.component.form-builder.parameter-value': 'パラメータ値',\r\n 'core.component.form-builder.assign-value': '値を割り当て',\r\n 'core.component.form-builder.add-data': 'データを追加',\r\n 'core.component.form-builder.data-api': 'APIデータ',\r\n 'core.component.form-builder.data-static': '静的データ',\r\n 'core.component.form-builder.set-on-change-assign': '変更時の割り当てを設定',\r\n 'core.component.form-builder.target-field': '対象フィールド',\r\n 'core.component.form-builder.target-value': '対象値',\r\n 'core.component.form-builder.column-data': '列データ',\r\n 'core.component.form-builder.add-column': '列を追加',\r\n 'core.component.form-builder.column-config': '列設定',\r\n 'core.component.form-builder.column-name': '列名',\r\n 'core.component.form-builder.width': '幅',\r\n 'core.component.form-builder.data-type': 'データ型',\r\n 'core.component.form-builder.show-when-true': 'TRUEのとき表示',\r\n 'core.component.form-builder.show-when-false': 'FALSEのとき表示',\r\n 'core.component.form-builder.column-list': '列一覧',\r\n 'core.component.form-builder.yes-no': 'はい/いいえ',\r\n 'core.component.form-builder.config-validation-error-warning': 'エラー/警告のバリデーションを設定',\r\n 'core.component.form-builder.message-type': 'メッセージ種別',\r\n 'core.component.form-builder.message-display': '表示メッセージ',\r\n 'core.component.form-builder.condition-expression': '条件式',\r\n 'core.component.form-builder.add-validation': 'バリデーションを追加',\r\n 'core.component.form-builder.expression': '式',\r\n 'core.component.form-builder.available-methods': '利用可能なメソッド',\r\n 'core.component.form-builder.format': 'フォーマット',\r\n 'core.component.form-builder.time': '時刻',\r\n 'core.component.form-builder.content': '内容',\r\n 'core.component.form-builder.min': '最小',\r\n 'core.component.form-builder.max': '最大',\r\n 'core.component.form-builder.vertical': '縦',\r\n 'core.component.form-builder.multiple': '複数選択',\r\n 'core.component.form-builder.default-value': 'デフォルト値',\r\n 'core.component.form-builder.type': '種別',\r\n 'core.component.form-builder.file': 'ファイル',\r\n 'core.component.form-builder.image': '画像',\r\n 'core.component.form-builder.max-files': 'ファイル/画像の最大数',\r\n 'core.component.form-builder.size-mb': 'サイズ (MB)',\r\n 'core.component.form-builder.format-example': 'フォーマット (例: png,jpg ...)',\r\n 'core.component.form-builder.source-mobile': 'ソース (モバイル)',\r\n 'core.component.form-builder.config-variable': '変数を設定',\r\n 'core.component.form-builder.config-validation-warning-error': '警告/エラーのバリデーションを設定',\r\n 'core.component.form-builder.back-to-design': 'デザインに戻る',\r\n 'core.component.form-builder.preview': 'プレビュー',\r\n 'core.component.form-builder.drag-vertically': '上下にドラッグ',\r\n 'core.component.form-builder.unset-readonly': '読み取り専用を解除',\r\n 'core.component.form-builder.set-readonly': '読み取り専用',\r\n 'core.component.form-builder.duplicate': '複製',\r\n 'core.component.form-builder.show': '表示',\r\n 'core.component.form-builder.hide': '非表示',\r\n 'core.component.form-builder.flex': 'フレックス',\r\n 'core.component.form-builder.display-label': '表示ラベル',\r\n 'core.component.form-builder.attribute': '属性',\r\n 'core.component.form-builder.add-variable': '変数を追加',\r\n 'core.component.form-builder.add-new': '新規追加',\r\n 'core.component.form-builder.detail': '詳細',\r\n 'core.component.form-builder.create-update': '作成/更新',\r\n 'core.component.form-builder.default': 'デフォルト',\r\n 'core.component.form-builder.show-more': 'もっと見る',\r\n 'core.component.form-builder.show-less': '折りたたむ',\r\n 'core.component.form-builder.row-overflow': '合計サイズが12列を超えるため、この行に移動できません',\r\n 'core.component.form-builder.upload-source.all': 'すべて',\r\n 'core.component.form-builder.upload-source.photo-library': 'ライブラリから選択',\r\n 'core.component.form-builder.upload-source.capture': '写真を撮影',\r\n // Form-builder UI v2 (M3 redesign)\r\n 'core.component.form-builder.components': 'コンポーネント',\r\n 'core.component.form-builder.search-components': 'コンポーネントを検索…',\r\n 'core.component.form-builder.view-json': 'JSONを表示',\r\n 'core.component.form-builder.design': 'デザイン',\r\n 'core.component.form-builder.preview-runtime': 'プレビュー · ランタイム',\r\n 'core.component.form-builder.cancel': 'キャンセル',\r\n 'core.component.form-builder.submit': '送信',\r\n 'core.component.form-builder.empty-title': 'コンポーネントをここにドラッグして開始',\r\n 'core.component.form-builder.empty-hint': '左パネルからフィールドをドラッグしてフォームを構築するか、次を押します:',\r\n 'core.component.form-builder.conditional': '条件付き',\r\n 'core.component.form-builder.group-drop-here': 'フィールドをここにドロップしてグループに追加',\r\n 'core.component.form-builder.hidden': '非表示',\r\n 'core.component.form-builder.read-only': '読み取り専用',\r\n 'core.component.form-builder.untitled': '無題',\r\n 'core.component.form-builder.no-selection-title': '選択なし',\r\n 'core.component.form-builder.no-selection-hint': 'キャンバスでコンポーネントを選択して属性を編集します。',\r\n 'core.component.form-builder.group-children': '子要素',\r\n 'core.component.form-builder.group-icon': 'アイコン',\r\n 'core.component.form-builder.group-accent-color': 'アクセントカラー',\r\n 'core.component.form-builder.group-no-children': 'フィールドがまだありません。このグループにフィールドを追加またはドラッグしてください。',\r\n 'core.component.form-builder.break': '改行',\r\n\r\n // ---- Component: code-editor ----\r\n 'core.component.code-editor.copied': 'コピーしました!',\r\n 'core.component.code-editor.copy': 'コードをコピー',\r\n\r\n // ---- Component: history ----\r\n 'core.component.history.by': '実行者',\r\n\r\n // ---- Component: import-excel ----\r\n 'core.component.import-excel.title': 'Excelデータをインポート',\r\n 'core.component.import-excel.see-all': 'すべて表示',\r\n 'core.component.import-excel.valid-rows': '有効な行数',\r\n 'core.component.import-excel.error-rows': 'エラー行数',\r\n 'core.component.import-excel.warning-rows': '警告行数',\r\n 'core.component.import-excel.valid-data': '有効なデータ',\r\n 'core.component.import-excel.download-template-tooltip': 'クリックしてテンプレートをダウンロード',\r\n 'core.component.import-excel.upload': 'アップロード',\r\n 'core.component.import-excel.download': 'ダウンロード',\r\n 'core.component.import-excel.confirm-save': '確認して保存',\r\n 'core.component.import-excel.status': 'ステータス',\r\n 'core.component.import-excel.no-data-upload': 'アップロードデータがありません',\r\n 'core.component.import-excel.click-here-template': 'ここをクリックしてテンプレートをダウンロード',\r\n 'core.component.import-excel.no-data-in-file': 'ファイルにデータがありません',\r\n 'core.component.import-excel.row-limit': 'アップロード上限は{limit}行です',\r\n 'core.component.import-excel.required': '必須データ',\r\n 'core.component.import-excel.min-length': '最小文字数: {min}',\r\n 'core.component.import-excel.max-length': '最大文字数: {max}',\r\n 'core.component.import-excel.not-a-number': '{value} は有効な数値ではありません',\r\n 'core.component.import-excel.below-min': '{value} は最小値 {min} を下回っています',\r\n 'core.component.import-excel.above-max': '{value} は最大値 {max} を超えています',\r\n 'core.component.import-excel.invalid-bool': '有効な値を入力してください (true, false, 1, 0)',\r\n 'core.component.import-excel.invalid-value': '値 {value} は正しくありません',\r\n 'core.component.import-excel.value-not-in-list': '値 {value} は許可されたリスト [{list}] に含まれていません',\r\n 'core.component.import-excel.invalid-date-format': '日付 {value} はフォーマット {format} と一致しません',\r\n 'core.component.import-excel.generic-error': 'エラーが発生しました',\r\n 'core.component.import-excel.notify-title': 'お知らせ',\r\n 'core.component.import-excel.message-column': 'メッセージ',\r\n 'core.component.import-excel.success': '成功',\r\n\r\n // ---- Component: preview-image ----\r\n 'core.component.preview-image.no-image': '画像情報がありません',\r\n 'core.component.preview-image.title': '画像プレビュー',\r\n 'core.component.preview-image.no-image-hint': '表示する画像がありません',\r\n 'core.component.preview-image.load-error': '画像を読み込めませんでした',\r\n 'core.component.preview-image.load-error-hint': '画像ファイルが削除されたか、パスが無効である可能性があります',\r\n 'core.component.preview-image.retry': '再試行',\r\n 'core.component.preview-image.close': '閉じる',\r\n 'core.component.preview-image.prev': '前の画像',\r\n 'core.component.preview-image.next': '次の画像',\r\n 'core.component.preview-image.zoom-in': '拡大',\r\n 'core.component.preview-image.zoom-out': '縮小',\r\n 'core.component.preview-image.fit': '画面に合わせる',\r\n 'core.component.preview-image.rotate': '回転',\r\n 'core.component.preview-image.download': 'ダウンロード',\r\n 'core.component.preview-image.fullscreen': '全画面表示',\r\n 'core.component.preview-image.loading': '画像を読み込み中...',\r\n 'core.component.preview-image.kbd-hint-nav': '画像切替',\r\n 'core.component.preview-image.kbd-hint-close': '閉じる',\r\n\r\n // ---- Component: preview-pdf ----\r\n 'core.component.preview-pdf.title': 'ドキュメントを表示',\r\n 'core.component.preview-pdf.close': '閉じる',\r\n 'core.component.preview-pdf.pages-count': '{count} ページ',\r\n 'core.component.preview-pdf.tab.thumbnails': 'ページ',\r\n 'core.component.preview-pdf.tab.outline': '目次',\r\n 'core.component.preview-pdf.tab.search': '検索',\r\n 'core.component.preview-pdf.first-page': '最初のページ',\r\n 'core.component.preview-pdf.prev-page': '前のページ',\r\n 'core.component.preview-pdf.next-page': '次のページ',\r\n 'core.component.preview-pdf.last-page': '最後のページ',\r\n 'core.component.preview-pdf.zoom-in': '拡大',\r\n 'core.component.preview-pdf.zoom-out': '縮小',\r\n 'core.component.preview-pdf.fit-page': 'ページに合わせる',\r\n 'core.component.preview-pdf.fit-width': '幅に合わせる',\r\n 'core.component.preview-pdf.actual-size': '実際のサイズ',\r\n 'core.component.preview-pdf.rotate': '回転',\r\n 'core.component.preview-pdf.scroll-page': '単ページ',\r\n 'core.component.preview-pdf.scroll-continuous': '連続スクロール',\r\n 'core.component.preview-pdf.print': '印刷',\r\n 'core.component.preview-pdf.download': 'ダウンロード',\r\n 'core.component.preview-pdf.fullscreen': '全画面',\r\n 'core.component.preview-pdf.toggle-sidebar': 'サイドバー表示切替',\r\n 'core.component.preview-pdf.page-of': '{current} / {total} ページ',\r\n 'core.component.preview-pdf.empty.title': 'ドキュメントがありません',\r\n 'core.component.preview-pdf.empty.subtitle': '表示する PDF ファイルがまだありません',\r\n 'core.component.preview-pdf.loading': 'ドキュメントを読み込み中...',\r\n 'core.component.preview-pdf.loading.page': 'ページ {current} / {total} を処理中',\r\n 'core.component.preview-pdf.error.invalid.title': 'ドキュメントを読み込めません',\r\n 'core.component.preview-pdf.error.invalid.body': 'PDF ファイルが破損している可能性があります。ファイルを確認してください。',\r\n 'core.component.preview-pdf.error.password.title': '保護されたドキュメント',\r\n 'core.component.preview-pdf.error.password.body': 'この PDF ファイルを開くにはパスワードが必要です。',\r\n 'core.component.preview-pdf.error.network.title': '接続できません',\r\n 'core.component.preview-pdf.error.network.body': 'サーバーからファイルを読み込めません。後でもう一度お試しください。',\r\n 'core.component.preview-pdf.error.unknown.title': 'エラーが発生しました',\r\n 'core.component.preview-pdf.error.unknown.body': 'もう一度試すか、元のファイルをダウンロードしてご覧ください。',\r\n 'core.component.preview-pdf.error.retry': '再試行',\r\n 'core.component.preview-pdf.error.download-raw': '元のファイルをダウンロード',\r\n 'core.component.preview-pdf.deferred.outline': '目次は今後のバージョンで追加されます。',\r\n 'core.component.preview-pdf.deferred.search': '検索機能は今後のバージョンで追加されます。',\r\n 'core.component.preview-pdf.search': '検索',\r\n 'core.component.preview-pdf.search-placeholder': 'ドキュメント内を検索...',\r\n 'core.component.preview-pdf.search-case': '大文字小文字を区別',\r\n 'core.component.preview-pdf.search-whole': '単語単位で一致',\r\n 'core.component.preview-pdf.search-no-results': '見つかりません',\r\n 'core.component.preview-pdf.search-results-count': '「{term}」の検索結果 {count} 件',\r\n 'core.component.preview-pdf.search-prev': '前の結果',\r\n 'core.component.preview-pdf.search-next': '次の結果',\r\n 'core.component.preview-pdf.search-close': '検索を閉じる',\r\n\r\n // ---- Component: table ----\r\n 'core.component.table.setup': 'テーブル設定',\r\n 'core.component.table.column-header': '列ヘッダー',\r\n 'core.component.table.width': '幅',\r\n 'core.component.table.fixed': '固定',\r\n 'core.component.table.char-limit': '文字数制限',\r\n 'core.component.table.skip': 'スキップ',\r\n 'core.component.table.apply': '適用',\r\n 'core.component.table.filter': 'フィルター',\r\n 'core.component.table.clear-selection': '選択を解除',\r\n 'core.component.table.customize': 'カスタマイズ',\r\n 'core.component.table.search': '検索',\r\n 'core.component.table.reload': '再読み込み',\r\n 'core.component.table.setup-short': '設定',\r\n 'core.component.table.no-results': '一致する結果がありません',\r\n 'core.component.table.no-results-hint': '別の条件で検索またはフィルターしてください',\r\n 'core.component.table.choose-filter-hint': 'まずフィルターを選択してください',\r\n 'core.component.table.no-data': 'データがありません',\r\n 'core.component.table.export-excel': 'Excelエクスポート',\r\n 'core.component.table.export-csv': 'CSVエクスポート',\r\n 'core.component.table.showing': '表示中:',\r\n 'core.component.table.paginator.first-page': '最初のページ',\r\n 'core.component.table.paginator.last-page': '最後のページ',\r\n 'core.component.table.paginator.items-per-page': '表示中',\r\n 'core.component.table.paginator.next-page': '次のページ',\r\n 'core.component.table.paginator.previous-page': '前のページ',\r\n 'core.component.table.error-occurred': 'エラーが発生しました',\r\n 'core.component.table.not-an-array': 'データが配列ではありません',\r\n 'core.component.table.config.confirm-reset': 'すべての設定をデフォルトに戻しますか',\r\n 'core.component.table.popup-export.select-columns': 'エクスポートする列を選択してください',\r\n 'core.component.table.selector-action.default-msg': '件選択中',\r\n 'core.component.tab-router.too-many-tabs': 'タブを開きすぎています。',\r\n\r\n // ---- Component: upload-file ----\r\n 'core.component.upload-file.upload': 'ファイルをアップロード',\r\n 'core.component.upload-file.error-occurred': 'エラーが発生しました',\r\n 'core.component.upload-file.please-upload': 'ファイル/画像をアップロードしてください',\r\n 'core.component.upload-file.desc-format-and-size': 'フォーマット: {exts}、最大: {maxSize}MB',\r\n 'core.component.upload-file.desc-format': 'フォーマット: {exts}',\r\n 'core.component.upload-file.desc-max-size': '最大: {maxSize}MB',\r\n 'core.component.upload-file.not-image': '[{name}] アップロードされたファイルは画像ではありません',\r\n 'core.component.upload-file.invalid-format': '[{name}] アップロードされたファイルの形式が正しくありません: {exts}',\r\n 'core.component.upload-file.size-exceeded': '[{name}] 最大ファイルサイズ: {maxSize} MB',\r\n 'core.component.upload-file.upload-failed': 'ファイルのアップロード中にエラーが発生しました',\r\n 'core.component.upload-file.too-many-files': 'ファイルの選択数が多すぎます。件数を確認してください',\r\n 'core.component.upload-file.confirm-delete-message': 'このファイルを削除しますか?この操作は取り消せません',\r\n 'core.component.upload-file.confirm-delete-title': '削除の確認',\r\n 'core.component.upload-file.confirm-yes': '確認',\r\n 'core.component.upload-file.confirm-no': 'キャンセル',\r\n 'core.component.upload-file.no-configuration': 'SD_UPLOAD_FILE_CONFIGURATION をインジェクトするか、コンポーネントに [upload] を直接渡してください',\r\n 'core.component.upload-file.no-configuration-key': 'key=\\'{key}\\' に対応するアップロード設定が見つかりません。プロバイダーを確認するか [upload] を直接渡してください',\r\n 'core.component.upload-file.preview-title': '画像プレビュー',\r\n\r\n // ---- Module: layout (sidebar / user menu) ----\r\n 'core.module.layout.user.change-password': 'パスワード変更',\r\n 'core.module.layout.user.logout': 'ログアウト',\r\n 'core.module.layout.sidebar.search': '検索',\r\n\r\n // ---- Module: layout (greeting + weekday) ----\r\n 'core.module.layout.greeting.hello': 'こんにちは、{name}さん',\r\n 'core.module.layout.weekday.0': '日曜日',\r\n 'core.module.layout.weekday.1': '月曜日',\r\n 'core.module.layout.weekday.2': '火曜日',\r\n 'core.module.layout.weekday.3': '水曜日',\r\n 'core.module.layout.weekday.4': '木曜日',\r\n 'core.module.layout.weekday.5': '金曜日',\r\n 'core.module.layout.weekday.6': '土曜日',\r\n 'core.module.layout.today-info.format': '{weekday}、{date}',\r\n\r\n // ---- Module: layout (forbidden page) ----\r\n 'core.module.layout.forbidden.title': 'アクセスが拒否されました',\r\n 'core.module.layout.forbidden.message': 'このページにアクセスする権限がありません。管理者にお問い合わせいただくか、ホームページに戻ってください',\r\n 'core.module.layout.forbidden.back-home': 'ホームに戻る',\r\n\r\n // ---- Module: layout (not-found page) ----\r\n 'core.module.layout.not-found.title': '404 - ページが見つかりません',\r\n 'core.module.layout.not-found.message': 'お探しのページは存在しないか、削除されました。URLを確認するか、ホームページに戻って続行してください。',\r\n 'core.module.layout.not-found.back': '戻る',\r\n\r\n // ---- Module: layout (home page) ----\r\n 'core.module.layout.home.tab-name': 'ホーム',\r\n 'core.module.layout.home.feature.data': 'データ',\r\n 'core.module.layout.home.feature.reports': 'レポート',\r\n 'core.module.layout.home.feature.users': 'ユーザー',\r\n 'core.module.layout.home.feature.workflow': 'ワークフロー',\r\n 'core.module.layout.home.feature.audit': '監査',\r\n 'core.module.layout.home.feature.integration': '連携',\r\n\r\n // ---- Module: layout (mock fallback when SD_LAYOUT_CONFIGURATION is not provided) ----\r\n 'core.module.layout.mock.user.full-name': 'デモユーザー',\r\n\r\n // ---- Module: generic (generic-select) ----\r\n 'core.module.generic.generic-select.detail-link': '詳細',\r\n};\r\n","import type { EN_MESSAGES } from './en';\r\n\r\nexport const KO_MESSAGES: Record<keyof typeof EN_MESSAGES, string> = {\r\n 'core.common.cancel': '취소',\r\n 'core.common.close': '닫기',\r\n 'core.common.reload': '페이지 새로고침',\r\n 'core.test.greet': '안녕하세요 {name}님',\r\n\r\n // ---- Validators (VALIDATION_PATTERNS in @sdcorejs/utils/constants) ----\r\n 'core.validator.email.name': '이메일',\r\n 'core.validator.email.error': '올바르지 않은 이메일 형식입니다',\r\n 'core.validator.phone.name': '전화번호',\r\n 'core.validator.phone.error': '올바르지 않은 전화번호 형식입니다',\r\n // Legacy aliases\r\n 'core.validator.phone-vn.name': 'VN 전화번호',\r\n 'core.validator.phone-vn.error': '올바르지 않은 베트남 전화번호 형식입니다',\r\n 'core.validator.cccd.name': '주민번호',\r\n 'core.validator.cccd.error': '올바르지 않은 주민번호 형식입니다 (12자리)',\r\n 'core.validator.id-vn.name': '주민번호 / 여권',\r\n 'core.validator.id-vn.error': '올바르지 않은 주민번호 또는 여권번호입니다',\r\n 'core.validator.vn-phone.name': 'VN 전화번호',\r\n 'core.validator.vn-phone.error': '올바르지 않은 베트남 전화번호 형식입니다',\r\n 'core.validator.vn-id.name': '주민번호',\r\n 'core.validator.vn-id.error': '올바르지 않은 주민번호 형식입니다 (12자리)',\r\n 'core.validator.passport.name': '여권',\r\n 'core.validator.passport.error': '올바르지 않은 여권번호입니다 (영문 1자 + 숫자 7자리)',\r\n 'core.validator.vn-id-or-passport.name': '주민번호 / 여권',\r\n 'core.validator.vn-id-or-passport.error': '올바르지 않은 주민번호 또는 여권번호입니다',\r\n 'core.validator.time.name': '시간',\r\n 'core.validator.time.error': '올바르지 않은 시간 형식입니다 (HH:mm 형식)',\r\n 'core.validator.url.name': 'URL',\r\n 'core.validator.url.error': '올바르지 않은 URL 형식입니다',\r\n 'core.validator.domain.name': '도메인',\r\n 'core.validator.domain.error': '올바르지 않은 도메인 형식입니다',\r\n 'core.validator.ipv4.name': 'IPv4',\r\n 'core.validator.ipv4.error': '올바르지 않은 IPv4 주소입니다',\r\n 'core.validator.ipv6.name': 'IPv6',\r\n 'core.validator.ipv6.error': '올바르지 않은 IPv6 주소입니다',\r\n 'core.validator.image-url.name': '이미지 URL',\r\n 'core.validator.image-url.error': '올바르지 않은 이미지 URL입니다',\r\n 'core.validator.slug.name': '슬러그',\r\n 'core.validator.slug.error': '올바르지 않은 슬러그 형식입니다',\r\n 'core.validator.number.name': '숫자',\r\n 'core.validator.number.error': '올바르지 않은 숫자 형식입니다',\r\n 'core.validator.integer.name': '정수',\r\n 'core.validator.integer.error': '올바르지 않은 정수 형식입니다',\r\n 'core.validator.decimal.name': '소수',\r\n 'core.validator.decimal.error': '올바르지 않은 소수 형식입니다',\r\n 'core.validator.positive-number.name': '양수',\r\n 'core.validator.positive-number.error': '양수여야 합니다',\r\n 'core.validator.uuid.name': 'UUID',\r\n 'core.validator.uuid.error': '올바르지 않은 UUID 형식입니다',\r\n 'core.validator.code-16.name': '16자 코드',\r\n 'core.validator.code-16.error': '올바르지 않은 16자 코드입니다',\r\n 'core.validator.code-32.name': '32자 코드',\r\n 'core.validator.code-32.error': '올바르지 않은 32자 코드입니다',\r\n 'core.validator.hex-color.name': 'HEX 색상',\r\n 'core.validator.hex-color.error': '올바르지 않은 HEX 색상 형식입니다',\r\n 'core.validator.base64.name': 'Base64',\r\n 'core.validator.base64.error': '올바르지 않은 Base64 문자열입니다',\r\n\r\n // ---- Operators (operator.model.ts) ----\r\n 'core.operator.equal.display': '같음',\r\n 'core.operator.not-equal.display': '같지 않음',\r\n 'core.operator.greater-than.display': '초과',\r\n 'core.operator.less-than.display': '미만',\r\n 'core.operator.greater-or-equal.display': '이상',\r\n 'core.operator.less-or-equal.display': '이하',\r\n 'core.operator.contain.display': '포함',\r\n 'core.operator.not-contain.display': '포함하지 않음',\r\n 'core.operator.start-with.display': '~로 시작',\r\n 'core.operator.end-with.display': '~로 끝',\r\n 'core.operator.in.display': '~중 하나',\r\n 'core.operator.not-in.display': '~중 하나가 아님',\r\n 'core.operator.null.display': '비어 있음',\r\n 'core.operator.not-null.display': '비어 있지 않음',\r\n\r\n // ---- Global error handler ----\r\n 'core.handler.global-error.update-title': '새로운 시스템 업데이트가 있습니다',\r\n 'core.handler.global-error.update-body': '현재 버전이 오래되어 리소스를 불러올 수 없습니다.\\n확인을 누르면 페이지가 새로고침됩니다.',\r\n\r\n // ---- Interceptor: no-internet ----\r\n 'core.interceptor.no-internet.offline': '네트워크 연결이 없습니다. 연결을 기다리는 중...',\r\n 'core.interceptor.no-internet.cors-error': '서버에 연결할 수 없습니다 (CORS 또는 설정 오류).',\r\n 'core.interceptor.no-internet.maintenance': '서버 점검 중입니다. 잠시 후 다시 시도해 주세요.',\r\n 'core.interceptor.no-internet.restored': '연결이 복구되었습니다.',\r\n\r\n // ---- Service: excel ----\r\n 'core.excel.cannot-read-file': '파일 내용을 읽을 수 없습니다',\r\n 'core.excel.no-sheet': 'Excel 파일에 데이터 시트가 없습니다',\r\n\r\n // ---- Service: docx ----\r\n 'core.docx.invalid-format': '형식이 올바르지 않습니다. DOC 또는 DOCX 형식의 템플릿을 선택해 주세요',\r\n 'core.docx.size-exceeded': '템플릿 파일 크기가 지원 한도를 초과했습니다. 다시 시도해 주세요',\r\n 'core.docx.convert-error': 'DOCX 파일 변환 중 오류가 발생했습니다',\r\n\r\n // ---- Service: notify (toast) ----\r\n 'core.notify.type.success': '성공',\r\n 'core.notify.type.info': '정보',\r\n 'core.notify.type.warning': '경고',\r\n 'core.notify.type.error': '오류',\r\n 'core.notify.show-more': '더 보기 ({count})',\r\n 'core.notify.show-less': '접기',\r\n\r\n // ---- Service: confirm ----\r\n 'core.confirm.title': '확인',\r\n 'core.confirm.yes': '확인',\r\n 'core.confirm.no': '취소',\r\n 'core.confirm.yes-short': '예',\r\n 'core.confirm.no-short': '아니오',\r\n\r\n // ---- Directive: hover-copy ----\r\n 'core.directive.hover-copy.tooltip': '복사',\r\n\r\n // ---- Forms: input ----\r\n 'core.form.input.required': '정보를 입력해 주세요',\r\n 'core.form.input.maxlength': '최대 글자수: {max}',\r\n 'core.form.input.invalid-pattern': '형식이 올바르지 않습니다',\r\n 'core.form.input.exceeded': '최대 글자수를 초과했습니다',\r\n\r\n // ---- Forms: autocomplete ----\r\n 'core.form.autocomplete.required': '정보를 입력해 주세요',\r\n\r\n // ---- Forms: chip ----\r\n 'core.form.chip.required': '정보를 입력해 주세요',\r\n 'core.form.chip.minlength': '최소 {min}개의 값을 입력해 주세요',\r\n 'core.form.chip.maxlength': '최대 {max}개의 값을 입력해 주세요',\r\n\r\n // ---- Forms: chip-calendar ----\r\n 'core.form.chip-calendar.required': '정보를 입력해 주세요',\r\n 'core.form.chip-calendar.minlength': '최소 {min}개의 값을 입력해 주세요',\r\n 'core.form.chip-calendar.maxlength': '최대 {max}개의 값을 입력해 주세요',\r\n\r\n // ---- Forms: date ----\r\n 'core.form.date.required': '정보를 입력해 주세요',\r\n 'core.form.date.min-date': '최소 날짜: {date}',\r\n 'core.form.date.max-date': '최대 날짜: {date}',\r\n 'core.form.date.parse-error': '구문 분석 오류: {text}',\r\n 'core.form.date.invalid-format': '형식이 올바르지 않습니다',\r\n\r\n // ---- Forms: date-range ----\r\n 'core.form.date-range.required': '정보를 입력해 주세요',\r\n 'core.form.date-range.invalid-min': '시작일이 올바르지 않습니다 (한도 미만)',\r\n 'core.form.date-range.invalid-max': '종료일이 올바르지 않습니다 (한도 초과)',\r\n 'core.form.date-range.from': '시작',\r\n 'core.form.date-range.to': '~',\r\n\r\n // ---- Forms: datetime ----\r\n 'core.form.datetime.required': '정보를 입력해 주세요',\r\n 'core.form.datetime.min-date': '최소 날짜: {date}',\r\n 'core.form.datetime.max-date': '최대 날짜: {date}',\r\n 'core.form.datetime.invalid-format': '형식이 올바르지 않습니다',\r\n 'core.form.datetime.now': '지금',\r\n 'core.form.datetime.confirm': '확인',\r\n\r\n // ---- Forms: time-spinner ----\r\n 'core.form.time-spinner.hour': '시',\r\n 'core.form.time-spinner.minute': '분',\r\n 'core.form.time-spinner.second': '초',\r\n 'core.form.time-spinner.increase-hour': '시 증가',\r\n 'core.form.time-spinner.decrease-hour': '시 감소',\r\n 'core.form.time-spinner.increase-minute': '분 증가',\r\n 'core.form.time-spinner.decrease-minute': '분 감소',\r\n 'core.form.time-spinner.increase-second': '초 증가',\r\n 'core.form.time-spinner.decrease-second': '초 감소',\r\n\r\n // ---- Forms: input-number ----\r\n 'core.form.input-number.required': '정보를 입력해 주세요',\r\n 'core.form.input-number.min': '값은 {min} 이상이어야 합니다',\r\n 'core.form.input-number.max': '값은 {max} 이하여야 합니다',\r\n\r\n // ---- Forms: radio ----\r\n 'core.form.radio.required': '선택해 주세요',\r\n\r\n // ---- Forms: select ----\r\n 'core.form.select.required': '선택해 주세요',\r\n\r\n // ---- Forms: textarea ----\r\n 'core.form.textarea.required': '정보를 입력해 주세요',\r\n 'core.form.textarea.maxlength': '최대 글자수: {max}',\r\n 'core.form.textarea.invalid-pattern': '형식이 올바르지 않습니다',\r\n 'core.form.textarea.exceeded': '최대 글자수를 초과했습니다',\r\n\r\n // ---- Component: editor ----\r\n 'core.component.editor.required': '내용을 입력해 주세요',\r\n 'core.component.editor.maxlength': '최대 글자수: {max}',\r\n 'core.component.editor.image.invalid-format': '파일 형식 \".{format}\" 은(는) 허용되지 않습니다. 허용 형식: {allowed}',\r\n 'core.component.editor.image.size-exceeded': '파일 크기 {sizeMB}MB가 한도 {maxSizeMB}MB를 초과합니다',\r\n 'core.component.editor.image.min-width': '이미지 너비 {width}px가 최소값 {min}px 미만입니다',\r\n 'core.component.editor.image.min-height': '이미지 높이 {height}px가 최소값 {min}px 미만입니다',\r\n 'core.component.editor.image.max-width': '이미지 너비 {width}px가 한도 {max}px를 초과합니다',\r\n 'core.component.editor.image.max-height': '이미지 높이 {height}px가 한도 {max}px를 초과합니다',\r\n 'core.component.editor.image.max-per-selection': '한 번에 최대 {max}장의 이미지를 선택할 수 있습니다',\r\n\r\n // ---- Component: document-builder ----\r\n 'core.component.document-builder.page-number.current': '현재 페이지 번호',\r\n 'core.component.document-builder.page-number.total': '전체 페이지 수',\r\n 'core.component.document-builder.ck-comment.label': '댓글',\r\n 'core.component.document-builder.ck-comment.text-too-long': '텍스트가 너무 깁니다 ({length}자). 최대 {max}자입니다.',\r\n 'core.component.document-builder.variable.not-allowed': '텍스트에 변수를 추가할 수 없습니다',\r\n 'core.component.document-builder.variable.invalid-data': '변수 데이터가 올바르지 않습니다',\r\n\r\n // ---- Component: form-builder ----\r\n 'core.component.form-builder.field-key': '필드 키',\r\n 'core.component.form-builder.display': '표시',\r\n 'core.component.form-builder.general': '일반',\r\n 'core.component.form-builder.visible-when': '표시 조건',\r\n 'core.component.form-builder.required': '필수',\r\n 'core.component.form-builder.label': '라벨',\r\n 'core.component.form-builder.disabled': '비활성',\r\n 'core.component.form-builder.disabled-when': '비활성 조건',\r\n 'core.component.form-builder.hidden-when': '숨김 조건',\r\n 'core.component.form-builder.validation': '유효성 검사',\r\n 'core.component.form-builder.required-when': '필수 조건',\r\n 'core.component.form-builder.confirm': '확인',\r\n 'core.component.form-builder.delete': '삭제',\r\n 'core.component.form-builder.save': '저장',\r\n 'core.component.form-builder.hint': '힌트',\r\n 'core.component.form-builder.parameter': '매개변수',\r\n 'core.component.form-builder.add-field': '필드 추가',\r\n 'core.component.form-builder.data': '데이터',\r\n 'core.component.form-builder.query-condition': '쿼리 조건',\r\n 'core.component.form-builder.set-query-value': '쿼리 값 설정',\r\n 'core.component.form-builder.value-source-field': '소스 필드',\r\n 'core.component.form-builder.assign-parameter': '매개변수 할당',\r\n 'core.component.form-builder.template-data': '템플릿 데이터',\r\n 'core.component.form-builder.set-expression': '식 설정',\r\n 'core.component.form-builder.condition-group': '조건 그룹',\r\n 'core.component.form-builder.condition': '조건',\r\n 'core.component.form-builder.layout': '레이아웃',\r\n 'core.component.form-builder.maxlength': '최대 글자수',\r\n 'core.component.form-builder.assign-parameter-value': '매개변수 값 할당',\r\n 'core.component.form-builder.parameter-name': '매개변수 이름',\r\n 'core.component.form-builder.parameter-value': '매개변수 값',\r\n 'core.component.form-builder.assign-value': '값 할당',\r\n 'core.component.form-builder.add-data': '데이터 추가',\r\n 'core.component.form-builder.data-api': 'API 데이터',\r\n 'core.component.form-builder.data-static': '정적 데이터',\r\n 'core.component.form-builder.set-on-change-assign': '변경 시 값 할당 설정',\r\n 'core.component.form-builder.target-field': '대상 필드',\r\n 'core.component.form-builder.target-value': '대상 값',\r\n 'core.component.form-builder.column-data': '열 데이터',\r\n 'core.component.form-builder.add-column': '열 추가',\r\n 'core.component.form-builder.column-config': '열 설정',\r\n 'core.component.form-builder.column-name': '열 이름',\r\n 'core.component.form-builder.width': '너비',\r\n 'core.component.form-builder.data-type': '데이터 유형',\r\n 'core.component.form-builder.show-when-true': 'TRUE일 때 표시',\r\n 'core.component.form-builder.show-when-false': 'FALSE일 때 표시',\r\n 'core.component.form-builder.column-list': '열 목록',\r\n 'core.component.form-builder.yes-no': '예/아니오',\r\n 'core.component.form-builder.config-validation-error-warning': '오류/경고 유효성 검사 설정',\r\n 'core.component.form-builder.message-type': '메시지 유형',\r\n 'core.component.form-builder.message-display': '표시 메시지',\r\n 'core.component.form-builder.condition-expression': '조건식',\r\n 'core.component.form-builder.add-validation': '유효성 검사 추가',\r\n 'core.component.form-builder.expression': '식',\r\n 'core.component.form-builder.available-methods': '사용 가능한 메서드',\r\n 'core.component.form-builder.format': '형식',\r\n 'core.component.form-builder.time': '시간',\r\n 'core.component.form-builder.content': '내용',\r\n 'core.component.form-builder.min': '최소',\r\n 'core.component.form-builder.max': '최대',\r\n 'core.component.form-builder.vertical': '세로',\r\n 'core.component.form-builder.multiple': '다중 선택',\r\n 'core.component.form-builder.default-value': '기본값',\r\n 'core.component.form-builder.type': '유형',\r\n 'core.component.form-builder.file': '파일',\r\n 'core.component.form-builder.image': '이미지',\r\n 'core.component.form-builder.max-files': '최대 파일/이미지 수',\r\n 'core.component.form-builder.size-mb': '크기 (MB)',\r\n 'core.component.form-builder.format-example': '형식 (예: png,jpg ...)',\r\n 'core.component.form-builder.source-mobile': '소스 (모바일)',\r\n 'core.component.form-builder.config-variable': '변수 설정',\r\n 'core.component.form-builder.config-validation-warning-error': '경고/오류 유효성 검사 설정',\r\n 'core.component.form-builder.back-to-design': '디자인으로 돌아가기',\r\n 'core.component.form-builder.preview': '미리보기',\r\n 'core.component.form-builder.drag-vertically': '위/아래로 드래그',\r\n 'core.component.form-builder.unset-readonly': '읽기 전용 해제',\r\n 'core.component.form-builder.set-readonly': '읽기 전용',\r\n 'core.component.form-builder.duplicate': '복제',\r\n 'core.component.form-builder.show': '표시',\r\n 'core.component.form-builder.hide': '숨기기',\r\n 'core.component.form-builder.flex': '플렉스',\r\n 'core.component.form-builder.display-label': '표시 라벨',\r\n 'core.component.form-builder.attribute': '속성',\r\n 'core.component.form-builder.add-variable': '변수 추가',\r\n 'core.component.form-builder.add-new': '새로 추가',\r\n 'core.component.form-builder.detail': '상세',\r\n 'core.component.form-builder.create-update': '생성/수정',\r\n 'core.component.form-builder.default': '기본',\r\n 'core.component.form-builder.show-more': '더 보기',\r\n 'core.component.form-builder.show-less': '접기',\r\n 'core.component.form-builder.row-overflow': '전체 크기가 12열을 초과하여 이 행으로 이동할 수 없습니다',\r\n 'core.component.form-builder.upload-source.all': '전체',\r\n 'core.component.form-builder.upload-source.photo-library': '라이브러리에서 선택',\r\n 'core.component.form-builder.upload-source.capture': '사진 촬영',\r\n // Form-builder UI v2 (M3 redesign)\r\n 'core.component.form-builder.components': '컴포넌트',\r\n 'core.component.form-builder.search-components': '컴포넌트 검색…',\r\n 'core.component.form-builder.view-json': 'JSON 보기',\r\n 'core.component.form-builder.design': '디자인',\r\n 'core.component.form-builder.preview-runtime': '미리보기 · 런타임',\r\n 'core.component.form-builder.cancel': '취소',\r\n 'core.component.form-builder.submit': '제출',\r\n 'core.component.form-builder.empty-title': '여기에 컴포넌트를 끌어다 놓아 시작',\r\n 'core.component.form-builder.empty-hint': '왼쪽 패널에서 필드를 드래그하여 양식을 만들거나 다음을 누르세요:',\r\n 'core.component.form-builder.conditional': '조건부',\r\n 'core.component.form-builder.group-drop-here': '필드를 여기에 놓아 이 그룹에 추가',\r\n 'core.component.form-builder.hidden': '숨김',\r\n 'core.component.form-builder.read-only': '읽기 전용',\r\n 'core.component.form-builder.untitled': '제목 없음',\r\n 'core.component.form-builder.no-selection-title': '선택 항목 없음',\r\n 'core.component.form-builder.no-selection-hint': '캔버스에서 컴포넌트를 선택하여 속성을 편집하세요.',\r\n 'core.component.form-builder.group-children': '하위 요소',\r\n 'core.component.form-builder.group-icon': '아이콘',\r\n 'core.component.form-builder.group-accent-color': '강조 색상',\r\n 'core.component.form-builder.group-no-children': '필드가 아직 없습니다. 이 그룹에 필드를 추가하거나 드래그하세요.',\r\n 'core.component.form-builder.break': '줄 바꿈',\r\n\r\n // ---- Component: code-editor ----\r\n 'core.component.code-editor.copied': '복사되었습니다!',\r\n 'core.component.code-editor.copy': '코드 복사',\r\n\r\n // ---- Component: history ----\r\n 'core.component.history.by': '작성자',\r\n\r\n // ---- Component: import-excel ----\r\n 'core.component.import-excel.title': 'Excel 데이터 가져오기',\r\n 'core.component.import-excel.see-all': '전체 보기',\r\n 'core.component.import-excel.valid-rows': '유효한 행',\r\n 'core.component.import-excel.error-rows': '오류 행',\r\n 'core.component.import-excel.warning-rows': '경고 행',\r\n 'core.component.import-excel.valid-data': '유효한 데이터',\r\n 'core.component.import-excel.download-template-tooltip': '클릭하여 템플릿 다운로드',\r\n 'core.component.import-excel.upload': '업로드',\r\n 'core.component.import-excel.download': '다운로드',\r\n 'core.component.import-excel.confirm-save': '확인 및 저장',\r\n 'core.component.import-excel.status': '상태',\r\n 'core.component.import-excel.no-data-upload': '업로드된 데이터가 없습니다',\r\n 'core.component.import-excel.click-here-template': '여기를 클릭하여 템플릿 다운로드',\r\n 'core.component.import-excel.no-data-in-file': '파일에 데이터가 없습니다',\r\n 'core.component.import-excel.row-limit': '업로드 한도는 {limit}행입니다',\r\n 'core.component.import-excel.required': '필수 데이터',\r\n 'core.component.import-excel.min-length': '최소 문자열 길이: {min}',\r\n 'core.component.import-excel.max-length': '최대 문자열 길이: {max}',\r\n 'core.component.import-excel.not-a-number': '{value} 은(는) 유효한 숫자가 아닙니다',\r\n 'core.component.import-excel.below-min': '{value} 은(는) 최소값 {min} 미만입니다',\r\n 'core.component.import-excel.above-max': '{value} 은(는) 최대값 {max} 초과입니다',\r\n 'core.component.import-excel.invalid-bool': '유효한 값을 입력해 주세요 (true, false, 1, 0)',\r\n 'core.component.import-excel.invalid-value': '값 {value} 이(가) 올바르지 않습니다',\r\n 'core.component.import-excel.value-not-in-list': '값 {value} 이(가) 허용 목록 [{list}]에 없습니다',\r\n 'core.component.import-excel.invalid-date-format': '날짜 {value} 이(가) 형식 {format} 과(와) 일치하지 않습니다',\r\n 'core.component.import-excel.generic-error': '오류가 발생했습니다',\r\n 'core.component.import-excel.notify-title': '알림',\r\n 'core.component.import-excel.message-column': '메시지',\r\n 'core.component.import-excel.success': '성공',\r\n\r\n // ---- Component: preview-image ----\r\n 'core.component.preview-image.no-image': '이미지 정보가 없습니다',\r\n 'core.component.preview-image.title': '이미지 미리보기',\r\n 'core.component.preview-image.no-image-hint': '표시할 이미지가 없습니다',\r\n 'core.component.preview-image.load-error': '이미지를 불러올 수 없습니다',\r\n 'core.component.preview-image.load-error-hint': '이미지 파일이 삭제되었거나 경로가 유효하지 않을 수 있습니다',\r\n 'core.component.preview-image.retry': '다시 시도',\r\n 'core.component.preview-image.close': '닫기',\r\n 'core.component.preview-image.prev': '이전 이미지',\r\n 'core.component.preview-image.next': '다음 이미지',\r\n 'core.component.preview-image.zoom-in': '확대',\r\n 'core.component.preview-image.zoom-out': '축소',\r\n 'core.component.preview-image.fit': '화면에 맞춤',\r\n 'core.component.preview-image.rotate': '회전',\r\n 'core.component.preview-image.download': '다운로드',\r\n 'core.component.preview-image.fullscreen': '전체 화면',\r\n 'core.component.preview-image.loading': '이미지를 불러오는 중...',\r\n 'core.component.preview-image.kbd-hint-nav': '이미지 이동',\r\n 'core.component.preview-image.kbd-hint-close': '닫기',\r\n\r\n // ---- Component: preview-pdf ----\r\n 'core.component.preview-pdf.title': '문서 보기',\r\n 'core.component.preview-pdf.close': '닫기',\r\n 'core.component.preview-pdf.pages-count': '{count} 페이지',\r\n 'core.component.preview-pdf.tab.thumbnails': '페이지',\r\n 'core.component.preview-pdf.tab.outline': '목차',\r\n 'core.component.preview-pdf.tab.search': '검색',\r\n 'core.component.preview-pdf.first-page': '첫 페이지',\r\n 'core.component.preview-pdf.prev-page': '이전 페이지',\r\n 'core.component.preview-pdf.next-page': '다음 페이지',\r\n 'core.component.preview-pdf.last-page': '마지막 페이지',\r\n 'core.component.preview-pdf.zoom-in': '확대',\r\n 'core.component.preview-pdf.zoom-out': '축소',\r\n 'core.component.preview-pdf.fit-page': '페이지에 맞춤',\r\n 'core.component.preview-pdf.fit-width': '너비에 맞춤',\r\n 'core.component.preview-pdf.actual-size': '실제 크기',\r\n 'core.component.preview-pdf.rotate': '회전',\r\n 'core.component.preview-pdf.scroll-page': '한 페이지',\r\n 'core.component.preview-pdf.scroll-continuous': '연속 스크롤',\r\n 'core.component.preview-pdf.print': '인쇄',\r\n 'core.component.preview-pdf.download': '다운로드',\r\n 'core.component.preview-pdf.fullscreen': '전체 화면',\r\n 'core.component.preview-pdf.toggle-sidebar': '사이드바 전환',\r\n 'core.component.preview-pdf.page-of': '페이지 {current} / {total}',\r\n 'core.component.preview-pdf.empty.title': '문서가 없습니다',\r\n 'core.component.preview-pdf.empty.subtitle': '아직 표시할 PDF 파일이 없습니다',\r\n 'core.component.preview-pdf.loading': '문서를 불러오는 중...',\r\n 'core.component.preview-pdf.loading.page': '페이지 {current} / {total} 처리 중',\r\n 'core.component.preview-pdf.error.invalid.title': '문서를 불러올 수 없습니다',\r\n 'core.component.preview-pdf.error.invalid.body': 'PDF 파일이 손상되었을 수 있습니다. 파일을 확인하세요.',\r\n 'core.component.preview-pdf.error.password.title': '보호된 문서',\r\n 'core.component.preview-pdf.error.password.body': '이 PDF 파일을 열려면 비밀번호가 필요합니다.',\r\n 'core.component.preview-pdf.error.network.title': '연결할 수 없습니다',\r\n 'core.component.preview-pdf.error.network.body': '서버에서 파일을 불러올 수 없습니다. 나중에 다시 시도하세요.',\r\n 'core.component.preview-pdf.error.unknown.title': '오류가 발생했습니다',\r\n 'core.component.preview-pdf.error.unknown.body': '다시 시도하거나 원본 파일을 다운로드하여 확인하세요.',\r\n 'core.component.preview-pdf.error.retry': '다시 시도',\r\n 'core.component.preview-pdf.error.download-raw': '원본 다운로드',\r\n 'core.component.preview-pdf.deferred.outline': '목차는 다음 버전에서 추가됩니다.',\r\n 'core.component.preview-pdf.deferred.search': '검색 기능은 다음 버전에서 추가됩니다.',\r\n 'core.component.preview-pdf.search': '검색',\r\n 'core.component.preview-pdf.search-placeholder': '문서에서 검색...',\r\n 'core.component.preview-pdf.search-case': '대소문자 구분',\r\n 'core.component.preview-pdf.search-whole': '단어 단위',\r\n 'core.component.preview-pdf.search-no-results': '결과 없음',\r\n 'core.component.preview-pdf.search-results-count': '\"{term}\"에 대한 결과 {count}개',\r\n 'core.component.preview-pdf.search-prev': '이전 결과',\r\n 'core.component.preview-pdf.search-next': '다음 결과',\r\n 'core.component.preview-pdf.search-close': '검색 닫기',\r\n\r\n // ---- Component: table ----\r\n 'core.component.table.setup': '테이블 설정',\r\n 'core.component.table.column-header': '열 머리글',\r\n 'core.component.table.width': '너비',\r\n 'core.component.table.fixed': '고정',\r\n 'core.component.table.char-limit': '글자수 제한',\r\n 'core.component.table.skip': '건너뛰기',\r\n 'core.component.table.apply': '적용',\r\n 'core.component.table.filter': '필터',\r\n 'core.component.table.clear-selection': '선택 해제',\r\n 'core.component.table.customize': '사용자 지정',\r\n 'core.component.table.search': '검색',\r\n 'core.component.table.reload': '새로고침',\r\n 'core.component.table.setup-short': '설정',\r\n 'core.component.table.no-results': '검색 결과가 없습니다',\r\n 'core.component.table.no-results-hint': '다른 조건으로 검색하거나 필터링해 주세요',\r\n 'core.component.table.choose-filter-hint': '시작하려면 필터를 선택해 주세요',\r\n 'core.component.table.no-data': '데이터가 없습니다',\r\n 'core.component.table.export-excel': 'Excel 내보내기',\r\n 'core.component.table.export-csv': 'CSV 내보내기',\r\n 'core.component.table.showing': '표시 중:',\r\n 'core.component.table.paginator.first-page': '첫 페이지',\r\n 'core.component.table.paginator.last-page': '마지막 페이지',\r\n 'core.component.table.paginator.items-per-page': '표시 중',\r\n 'core.component.table.paginator.next-page': '다음 페이지',\r\n 'core.component.table.paginator.previous-page': '이전 페이지',\r\n 'core.component.table.error-occurred': '오류가 발생했습니다',\r\n 'core.component.table.not-an-array': '데이터가 배열이 아닙니다',\r\n 'core.component.table.config.confirm-reset': '모든 설정을 기본값으로 초기화하시겠습니까',\r\n 'core.component.table.popup-export.select-columns': '내보낼 열을 선택해 주세요',\r\n 'core.component.table.selector-action.default-msg': '개 선택됨',\r\n 'core.component.tab-router.too-many-tabs': '너무 많은 탭이 열려 있습니다.',\r\n\r\n // ---- Component: upload-file ----\r\n 'core.component.upload-file.upload': '파일 업로드',\r\n 'core.component.upload-file.error-occurred': '오류가 발생했습니다',\r\n 'core.component.upload-file.please-upload': '파일/이미지를 업로드해 주세요',\r\n 'core.component.upload-file.desc-format-and-size': '형식: {exts}, 최대: {maxSize}MB',\r\n 'core.component.upload-file.desc-format': '형식: {exts}',\r\n 'core.component.upload-file.desc-max-size': '최대: {maxSize}MB',\r\n 'core.component.upload-file.not-image': '[{name}] 업로드한 파일이 이미지가 아닙니다',\r\n 'core.component.upload-file.invalid-format': '[{name}] 업로드한 파일의 형식이 올바르지 않습니다: {exts}',\r\n 'core.component.upload-file.size-exceeded': '[{name}] 최대 파일 크기: {maxSize} MB',\r\n 'core.component.upload-file.upload-failed': '파일 업로드 중 오류가 발생했습니다',\r\n 'core.component.upload-file.too-many-files': '파일을 너무 많이 선택했습니다. 개수를 확인해 주세요',\r\n 'core.component.upload-file.confirm-delete-message': '이 파일을 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다',\r\n 'core.component.upload-file.confirm-delete-title': '삭제 확인',\r\n 'core.component.upload-file.confirm-yes': '확인',\r\n 'core.component.upload-file.confirm-no': '취소',\r\n 'core.component.upload-file.no-configuration': 'SD_UPLOAD_FILE_CONFIGURATION 을 inject 하거나 컴포넌트에 [upload] 를 직접 전달해 주세요',\r\n 'core.component.upload-file.no-configuration-key': 'key=\\'{key}\\' 에 대한 업로드 설정을 찾을 수 없습니다. provider 를 확인하거나 [upload] 를 직접 전달해 주세요',\r\n 'core.component.upload-file.preview-title': '이미지 미리보기',\r\n\r\n // ---- Module: layout (sidebar / user menu) ----\r\n 'core.module.layout.user.change-password': '비밀번호 변경',\r\n 'core.module.layout.user.logout': '로그아웃',\r\n 'core.module.layout.sidebar.search': '검색',\r\n\r\n // ---- Module: layout (greeting + weekday) ----\r\n 'core.module.layout.greeting.hello': '안녕하세요, {name}님',\r\n 'core.module.layout.weekday.0': '일요일',\r\n 'core.module.layout.weekday.1': '월요일',\r\n 'core.module.layout.weekday.2': '화요일',\r\n 'core.module.layout.weekday.3': '수요일',\r\n 'core.module.layout.weekday.4': '목요일',\r\n 'core.module.layout.weekday.5': '금요일',\r\n 'core.module.layout.weekday.6': '토요일',\r\n 'core.module.layout.today-info.format': '{weekday}, {date}',\r\n\r\n // ---- Module: layout (forbidden page) ----\r\n 'core.module.layout.forbidden.title': '접근이 거부되었습니다',\r\n 'core.module.layout.forbidden.message': '이 페이지에 접근할 권한이 없습니다. 관리자에게 문의하거나 홈으로 돌아가 주세요',\r\n 'core.module.layout.forbidden.back-home': '홈으로 돌아가기',\r\n\r\n // ---- Module: layout (not-found page) ----\r\n 'core.module.layout.not-found.title': '404 - 페이지를 찾을 수 없습니다',\r\n 'core.module.layout.not-found.message': '찾으시는 페이지가 존재하지 않거나 삭제되었습니다. URL을 확인하거나 홈으로 돌아가 계속 진행해 주세요.',\r\n 'core.module.layout.not-found.back': '돌아가기',\r\n\r\n // ---- Module: layout (home page) ----\r\n 'core.module.layout.home.tab-name': '홈',\r\n 'core.module.layout.home.feature.data': '데이터',\r\n 'core.module.layout.home.feature.reports': '리포트',\r\n 'core.module.layout.home.feature.users': '사용자',\r\n 'core.module.layout.home.feature.workflow': '워크플로우',\r\n 'core.module.layout.home.feature.audit': '감사',\r\n 'core.module.layout.home.feature.integration': '연계',\r\n\r\n // ---- Module: layout (mock fallback when SD_LAYOUT_CONFIGURATION is not provided) ----\r\n 'core.module.layout.mock.user.full-name': '데모 사용자',\r\n\r\n // ---- Module: generic (generic-select) ----\r\n 'core.module.generic.generic-select.detail-link': '상세',\r\n};\r\n","import type { EN_MESSAGES } from './en';\r\n\r\nexport const VI_MESSAGES: Record<keyof typeof EN_MESSAGES, string> = {\r\n 'core.common.cancel': 'Hủy',\r\n 'core.common.close': 'Đóng',\r\n 'core.common.reload': 'Tải lại trang',\r\n 'core.test.greet': 'Xin chào {name}',\r\n\r\n // ---- Validators (VALIDATION_PATTERNS in @sdcorejs/utils/constants) ----\r\n 'core.validator.email.name': 'Email',\r\n 'core.validator.email.error': 'Email không hợp lệ',\r\n 'core.validator.phone.name': 'SĐT',\r\n 'core.validator.phone.error': 'Số điện thoại không hợp lệ',\r\n // Legacy aliases — pattern.model.ts cũ vẫn dùng các key này\r\n 'core.validator.phone-vn.name': 'SĐT VN',\r\n 'core.validator.phone-vn.error': 'SĐT Việt Nam không hợp lệ',\r\n 'core.validator.cccd.name': 'CCCD',\r\n 'core.validator.cccd.error': 'CCCD không hợp lệ (12 chữ số)',\r\n 'core.validator.id-vn.name': 'CCCD / Hộ chiếu',\r\n 'core.validator.id-vn.error': 'CCCD hoặc Hộ chiếu không hợp lệ',\r\n 'core.validator.vn-phone.name': 'SĐT VN',\r\n 'core.validator.vn-phone.error': 'SĐT Việt Nam không hợp lệ',\r\n 'core.validator.vn-id.name': 'CCCD',\r\n 'core.validator.vn-id.error': 'CCCD không hợp lệ (12 chữ số)',\r\n 'core.validator.passport.name': 'Hộ chiếu',\r\n 'core.validator.passport.error': 'Hộ chiếu không hợp lệ (1 chữ cái + 7 chữ số)',\r\n 'core.validator.vn-id-or-passport.name': 'CCCD / Hộ chiếu',\r\n 'core.validator.vn-id-or-passport.error': 'CCCD hoặc Hộ chiếu không hợp lệ',\r\n 'core.validator.time.name': 'Giờ',\r\n 'core.validator.time.error': 'Giờ không hợp lệ (định dạng HH:mm)',\r\n 'core.validator.url.name': 'URL',\r\n 'core.validator.url.error': 'URL không hợp lệ',\r\n 'core.validator.domain.name': 'Tên miền',\r\n 'core.validator.domain.error': 'Tên miền không hợp lệ',\r\n 'core.validator.ipv4.name': 'IPv4',\r\n 'core.validator.ipv4.error': 'Địa chỉ IPv4 không hợp lệ',\r\n 'core.validator.ipv6.name': 'IPv6',\r\n 'core.validator.ipv6.error': 'Địa chỉ IPv6 không hợp lệ',\r\n 'core.validator.image-url.name': 'URL ảnh',\r\n 'core.validator.image-url.error': 'URL ảnh không hợp lệ',\r\n 'core.validator.slug.name': 'Slug',\r\n 'core.validator.slug.error': 'Slug không hợp lệ',\r\n 'core.validator.number.name': 'Số',\r\n 'core.validator.number.error': 'Số không hợp lệ',\r\n 'core.validator.integer.name': 'Số nguyên',\r\n 'core.validator.integer.error': 'Số nguyên không hợp lệ',\r\n 'core.validator.decimal.name': 'Số thập phân',\r\n 'core.validator.decimal.error': 'Số thập phân không hợp lệ',\r\n 'core.validator.positive-number.name': 'Số dương',\r\n 'core.validator.positive-number.error': 'Phải là số dương',\r\n 'core.validator.uuid.name': 'UUID',\r\n 'core.validator.uuid.error': 'UUID không hợp lệ',\r\n 'core.validator.code-16.name': 'Mã 16 ký tự',\r\n 'core.validator.code-16.error': 'Mã 16 ký tự không hợp lệ',\r\n 'core.validator.code-32.name': 'Mã 32 ký tự',\r\n 'core.validator.code-32.error': 'Mã 32 ký tự không hợp lệ',\r\n 'core.validator.hex-color.name': 'Mã màu HEX',\r\n 'core.validator.hex-color.error': 'Mã màu HEX không hợp lệ',\r\n 'core.validator.base64.name': 'Base64',\r\n 'core.validator.base64.error': 'Chuỗi Base64 không hợp lệ',\r\n\r\n // ---- Operators (operator.model.ts) ----\r\n 'core.operator.equal.display': 'Bằng',\r\n 'core.operator.not-equal.display': 'Không bằng',\r\n 'core.operator.greater-than.display': 'Lớn hơn',\r\n 'core.operator.less-than.display': 'Nhỏ hơn',\r\n 'core.operator.greater-or-equal.display': 'Lớn hơn, hoặc bằng',\r\n 'core.operator.less-or-equal.display': 'Nhỏ hơn, hoặc bằng',\r\n 'core.operator.contain.display': 'Chứa',\r\n 'core.operator.not-contain.display': 'Không chứa',\r\n 'core.operator.start-with.display': 'Bắt đầu bởi',\r\n 'core.operator.end-with.display': 'Kết thúc bởi',\r\n 'core.operator.in.display': 'Nằm trong',\r\n 'core.operator.not-in.display': 'Không nằm trong',\r\n 'core.operator.null.display': 'Là rỗng',\r\n 'core.operator.not-null.display': 'Không rỗng',\r\n\r\n // ---- Global error handler ----\r\n 'core.handler.global-error.update-title': 'HỆ THỐNG CÓ BẢN CẬP NHẬT MỚI',\r\n 'core.handler.global-error.update-body': 'Phiên bản hiện tại đã cũ và không tải được tài nguyên.\\nVui lòng bấm OK để tải lại trang.',\r\n\r\n // ---- Interceptor: no-internet ----\r\n 'core.interceptor.no-internet.offline': 'Không có kết nối mạng. Đang chờ kết nối...',\r\n 'core.interceptor.no-internet.cors-error': 'Không thể kết nối đến máy chủ (Lỗi CORS hoặc cấu hình).',\r\n 'core.interceptor.no-internet.maintenance': 'Máy chủ đang bảo trì. Vui lòng thử lại sau!',\r\n 'core.interceptor.no-internet.restored': 'Kết nối đã được khôi phục!',\r\n\r\n // ---- Service: excel ----\r\n 'core.excel.cannot-read-file': 'Không đọc được nội dung file',\r\n 'core.excel.no-sheet': 'File Excel không có sheet dữ liệu',\r\n\r\n // ---- Service: docx ----\r\n 'core.docx.invalid-format': 'Định dạng không hợp lệ. Vui lòng chọn Mẫu có định dạng DOC hoặc DOCX',\r\n 'core.docx.size-exceeded': 'Kích thước tệp mẫu vượt quá tiêu chuẩn hỗ trợ của hệ thống. Vui lòng thử lại',\r\n 'core.docx.convert-error': 'Có lỗi xảy ra khi chuyển đổi file DOCX',\r\n\r\n // ---- Service: notify (toast) ----\r\n 'core.notify.type.success': 'Thành công',\r\n 'core.notify.type.info': 'Thông tin',\r\n 'core.notify.type.warning': 'Cảnh báo',\r\n 'core.notify.type.error': 'Lỗi',\r\n 'core.notify.show-more': 'Hiện thêm ({count})',\r\n 'core.notify.show-less': 'Thu gọn',\r\n\r\n // ---- Service: confirm ----\r\n 'core.confirm.title': 'Xác nhận',\r\n 'core.confirm.yes': 'Đồng ý',\r\n 'core.confirm.no': 'Hủy bỏ',\r\n 'core.confirm.yes-short': 'Có',\r\n 'core.confirm.no-short': 'Không',\r\n\r\n // ---- Directive: hover-copy ----\r\n 'core.directive.hover-copy.tooltip': 'Sao chép',\r\n\r\n // ---- Forms: input ----\r\n 'core.form.input.required': 'Vui lòng nhập thông tin',\r\n 'core.form.input.maxlength': 'Số ký tự tối đa: {max}',\r\n 'core.form.input.invalid-pattern': 'Định dạng không hợp lệ',\r\n 'core.form.input.exceeded': 'Vượt quá số ký tự tối đa',\r\n\r\n // ---- Forms: autocomplete ----\r\n 'core.form.autocomplete.required': 'Vui lòng nhập thông tin',\r\n\r\n // ---- Forms: chip ----\r\n 'core.form.chip.required': 'Vui lòng nhập thông tin',\r\n 'core.form.chip.minlength': 'Vui lòng nhập ít nhất {min} giá trị',\r\n 'core.form.chip.maxlength': 'Vui lòng nhập tối đa {max} giá trị',\r\n\r\n // ---- Forms: chip-calendar ----\r\n 'core.form.chip-calendar.required': 'Vui lòng nhập thông tin',\r\n 'core.form.chip-calendar.minlength': 'Vui lòng nhập ít nhất {min} giá trị',\r\n 'core.form.chip-calendar.maxlength': 'Vui lòng nhập tối đa {max} giá trị',\r\n\r\n // ---- Forms: date ----\r\n 'core.form.date.required': 'Vui lòng nhập thông tin',\r\n 'core.form.date.min-date': 'Ngày nhỏ nhất: {date}',\r\n 'core.form.date.max-date': 'Ngày lớn nhất: {date}',\r\n 'core.form.date.parse-error': 'Lỗi phân tích: {text}',\r\n 'core.form.date.invalid-format': 'Sai định dạng',\r\n\r\n // ---- Forms: date-range ----\r\n 'core.form.date-range.required': 'Vui lòng nhập thông tin',\r\n 'core.form.date-range.invalid-min': 'Ngày bắt đầu không hợp lệ (nhỏ hơn giới hạn)',\r\n 'core.form.date-range.invalid-max': 'Ngày kết thúc không hợp lệ (lớn hơn giới hạn)',\r\n 'core.form.date-range.from': 'Từ',\r\n 'core.form.date-range.to': 'đến',\r\n\r\n // ---- Forms: datetime ----\r\n 'core.form.datetime.required': 'Vui lòng nhập thông tin',\r\n 'core.form.datetime.min-date': 'Ngày nhỏ nhất: {date}',\r\n 'core.form.datetime.max-date': 'Ngày lớn nhất: {date}',\r\n 'core.form.datetime.invalid-format': 'Sai định dạng',\r\n 'core.form.datetime.now': 'Bây giờ',\r\n 'core.form.datetime.confirm': 'Xác nhận',\r\n\r\n // ---- Forms: time-spinner ----\r\n 'core.form.time-spinner.hour': 'Giờ',\r\n 'core.form.time-spinner.minute': 'Phút',\r\n 'core.form.time-spinner.second': 'Giây',\r\n 'core.form.time-spinner.increase-hour': 'Tăng giờ',\r\n 'core.form.time-spinner.decrease-hour': 'Giảm giờ',\r\n 'core.form.time-spinner.increase-minute': 'Tăng phút',\r\n 'core.form.time-spinner.decrease-minute': 'Giảm phút',\r\n 'core.form.time-spinner.increase-second': 'Tăng giây',\r\n 'core.form.time-spinner.decrease-second': 'Giảm giây',\r\n\r\n // ---- Forms: input-number ----\r\n 'core.form.input-number.required': 'Vui lòng nhập thông tin',\r\n 'core.form.input-number.min': 'Giá trị không được nhỏ hơn {min}',\r\n 'core.form.input-number.max': 'Giá trị không được lớn hơn {max}',\r\n\r\n // ---- Forms: radio ----\r\n 'core.form.radio.required': 'Vui lòng nhập thông tin',\r\n\r\n // ---- Forms: select ----\r\n 'core.form.select.required': 'Vui lòng nhập thông tin',\r\n\r\n // ---- Forms: textarea ----\r\n 'core.form.textarea.required': 'Vui lòng nhập thông tin',\r\n 'core.form.textarea.maxlength': 'Số ký tự tối đa: {max}',\r\n 'core.form.textarea.invalid-pattern': 'Định dạng không hợp lệ',\r\n 'core.form.textarea.exceeded': 'Vượt quá số ký tự tối đa',\r\n\r\n // ---- Component: editor ----\r\n 'core.component.editor.required': 'Vui lòng nhập nội dung',\r\n 'core.component.editor.maxlength': 'Số ký tự tối đa: {max}',\r\n 'core.component.editor.image.invalid-format': 'Định dạng file \".{format}\" không được phép. Các định dạng hợp lệ: {allowed}',\r\n 'core.component.editor.image.size-exceeded': 'Dung lượng file {sizeMB}MB vượt quá giới hạn {maxSizeMB}MB',\r\n 'core.component.editor.image.min-width': 'Chiều rộng ảnh {width}px nhỏ hơn giới hạn tối thiểu {min}px',\r\n 'core.component.editor.image.min-height': 'Chiều cao ảnh {height}px nhỏ hơn giới hạn tối thiểu {min}px',\r\n 'core.component.editor.image.max-width': 'Chiều rộng ảnh {width}px vượt quá giới hạn {max}px',\r\n 'core.component.editor.image.max-height': 'Chiều cao ảnh {height}px vượt quá giới hạn {max}px',\r\n 'core.component.editor.image.max-per-selection': 'Chỉ được phép chọn tối đa {max} ảnh mỗi lần',\r\n\r\n // ---- Component: document-builder ----\r\n 'core.component.document-builder.page-number.current': 'Số trang hiện tại',\r\n 'core.component.document-builder.page-number.total': 'Tổng số trang',\r\n 'core.component.document-builder.ck-comment.label': 'Bình luận',\r\n 'core.component.document-builder.ck-comment.text-too-long': 'Văn bản quá dài ({length} ký tự). Tối đa {max} ký tự.',\r\n 'core.component.document-builder.variable.not-allowed': 'Không cho phép thêm variable vào văn bản',\r\n 'core.component.document-builder.variable.invalid-data': 'Dữ liệu variable không hợp lệ',\r\n\r\n // ---- Component: form-builder ----\r\n 'core.component.form-builder.field-key': 'Trường dữ liệu',\r\n 'core.component.form-builder.display': 'Hiển thị',\r\n 'core.component.form-builder.general': 'Thông tin chung',\r\n 'core.component.form-builder.visible-when': 'Hiển thị khi',\r\n 'core.component.form-builder.required': 'Bắt buộc',\r\n 'core.component.form-builder.label': 'Tên hiển thị',\r\n 'core.component.form-builder.disabled': 'Vô hiệu',\r\n 'core.component.form-builder.disabled-when': 'Vô hiệu khi',\r\n 'core.component.form-builder.hidden-when': 'Ẩn khi',\r\n 'core.component.form-builder.validation': 'Ràng buộc',\r\n 'core.component.form-builder.required-when': 'Bắt buộc khi',\r\n 'core.component.form-builder.confirm': 'Xác nhận',\r\n 'core.component.form-builder.delete': 'Xóa',\r\n 'core.component.form-builder.save': 'Lưu',\r\n 'core.component.form-builder.hint': 'Gợi ý',\r\n 'core.component.form-builder.parameter': 'Tham số',\r\n 'core.component.form-builder.add-field': 'Thêm trường',\r\n 'core.component.form-builder.data': 'Dữ liệu',\r\n 'core.component.form-builder.query-condition': 'Điều kiện truy vấn',\r\n 'core.component.form-builder.set-query-value': 'Thiết lập giá trị truy vấn',\r\n 'core.component.form-builder.value-source-field': 'Trường lấy giá trị',\r\n 'core.component.form-builder.assign-parameter': 'Gán tham số',\r\n 'core.component.form-builder.template-data': 'Dữ liệu mẫu',\r\n 'core.component.form-builder.set-expression': 'Thiết lập biểu thức',\r\n 'core.component.form-builder.condition-group': 'Nhóm điều kiện',\r\n 'core.component.form-builder.condition': 'Điều kiện',\r\n 'core.component.form-builder.layout': 'Bố cục',\r\n 'core.component.form-builder.maxlength': 'Ký tự tối đa',\r\n 'core.component.form-builder.assign-parameter-value': 'Gán giá trị Tham số',\r\n 'core.component.form-builder.parameter-name': 'Tên tham số',\r\n 'core.component.form-builder.parameter-value': 'Giá trị tương ứng',\r\n 'core.component.form-builder.assign-value': 'Gán giá trị',\r\n 'core.component.form-builder.add-data': 'Thêm dữ liệu',\r\n 'core.component.form-builder.data-api': 'Dữ liệu API',\r\n 'core.component.form-builder.data-static': 'Dữ liệu tĩnh',\r\n 'core.component.form-builder.set-on-change-assign': 'Thiết lập gán giá trị khi thay đổi',\r\n 'core.component.form-builder.target-field': 'Trường muốn gán giá trị',\r\n 'core.component.form-builder.target-value': 'Giá trị muốn gán',\r\n 'core.component.form-builder.column-data': 'Dữ liệu cột',\r\n 'core.component.form-builder.add-column': 'Thêm cột',\r\n 'core.component.form-builder.column-config': 'Cấu hình cột',\r\n 'core.component.form-builder.column-name': 'Tên cột',\r\n 'core.component.form-builder.width': 'Chiều rộng',\r\n 'core.component.form-builder.data-type': 'Loại dữ liệu',\r\n 'core.component.form-builder.show-when-true': 'Hiển thị khi TRUE',\r\n 'core.component.form-builder.show-when-false': 'Hiển thị khi FALSE',\r\n 'core.component.form-builder.column-list': 'Danh sách cột',\r\n 'core.component.form-builder.yes-no': 'Có/Không',\r\n 'core.component.form-builder.config-validation-error-warning': 'Cấu hình xác thực lỗi/cảnh báo',\r\n 'core.component.form-builder.message-type': 'Loại thông báo',\r\n 'core.component.form-builder.message-display': 'Thông báo hiển thị',\r\n 'core.component.form-builder.condition-expression': 'Biểu thức điều kiện',\r\n 'core.component.form-builder.add-validation': 'Thêm xác thực',\r\n 'core.component.form-builder.expression': 'Biểu thức',\r\n 'core.component.form-builder.available-methods': 'Phương thức sẵn có',\r\n 'core.component.form-builder.format': 'Định dạng',\r\n 'core.component.form-builder.time': 'Thời điểm',\r\n 'core.component.form-builder.content': 'Nội dung',\r\n 'core.component.form-builder.min': 'Giá trị nhỏ nhất',\r\n 'core.component.form-builder.max': 'Giá trị lớn nhất',\r\n 'core.component.form-builder.vertical': 'Dọc',\r\n 'core.component.form-builder.multiple': 'Chọn nhiều',\r\n 'core.component.form-builder.default-value': 'Giá trị mặc định',\r\n 'core.component.form-builder.type': 'Loại',\r\n 'core.component.form-builder.file': 'Tệp',\r\n 'core.component.form-builder.image': 'Ảnh',\r\n 'core.component.form-builder.max-files': 'SL tệp/ảnh tối đa',\r\n 'core.component.form-builder.size-mb': 'Dung lượng (Mb)',\r\n 'core.component.form-builder.format-example': 'Định dạng (VD: png,jpg ...)',\r\n 'core.component.form-builder.source-mobile': 'Nguồn (mobile)',\r\n 'core.component.form-builder.config-variable': 'Cấu hình biến',\r\n 'core.component.form-builder.config-validation-warning-error': 'Cấu hình xác thực cảnh báo/lỗi',\r\n 'core.component.form-builder.back-to-design': 'Trở về thiết kế',\r\n 'core.component.form-builder.preview': 'Xem thử',\r\n 'core.component.form-builder.drag-vertically': 'Kéo lên / xuống',\r\n 'core.component.form-builder.unset-readonly': 'Bỏ chỉ xem',\r\n 'core.component.form-builder.set-readonly': 'Chỉ xem',\r\n 'core.component.form-builder.duplicate': 'Nhân bản',\r\n 'core.component.form-builder.show': 'Hiện',\r\n 'core.component.form-builder.hide': 'Ẩn',\r\n 'core.component.form-builder.flex': 'Co dãn',\r\n 'core.component.form-builder.display-label': 'Nhãn hiển thị',\r\n 'core.component.form-builder.attribute': 'Thuộc tính',\r\n 'core.component.form-builder.add-variable': 'Thêm biến',\r\n 'core.component.form-builder.add-new': 'Thêm mới',\r\n 'core.component.form-builder.detail': 'Chi tiết',\r\n 'core.component.form-builder.create-update': 'Tạo mới/cập nhật',\r\n 'core.component.form-builder.default': 'Mặc định',\r\n 'core.component.form-builder.show-more': 'Xem thêm',\r\n 'core.component.form-builder.show-less': 'Thu gọn',\r\n 'core.component.form-builder.row-overflow': 'Không thể di chuyển tới dòng này vì tổng kích thước vượt quá 12 cột',\r\n 'core.component.form-builder.upload-source.all': 'Tất cả',\r\n 'core.component.form-builder.upload-source.photo-library': 'Chọn từ thư viện',\r\n 'core.component.form-builder.upload-source.capture': 'Chụp ảnh',\r\n // Form-builder UI v2 (M3 redesign)\r\n 'core.component.form-builder.components': 'Components',\r\n 'core.component.form-builder.search-components': 'Tìm component…',\r\n 'core.component.form-builder.view-json': 'Xem JSON',\r\n 'core.component.form-builder.design': 'Thiết kế',\r\n 'core.component.form-builder.preview-runtime': 'Xem trước · Runtime',\r\n 'core.component.form-builder.cancel': 'Hủy',\r\n 'core.component.form-builder.submit': 'Gửi',\r\n 'core.component.form-builder.empty-title': 'Kéo component vào đây để bắt đầu',\r\n 'core.component.form-builder.empty-hint': 'Tạo form bằng cách kéo các trường từ panel bên trái, hoặc nhấn',\r\n 'core.component.form-builder.conditional': 'Có điều kiện',\r\n 'core.component.form-builder.group-drop-here': 'Kéo trường vào đây để thêm vào group',\r\n 'core.component.form-builder.hidden': 'Đã ẩn',\r\n 'core.component.form-builder.read-only': 'Chỉ đọc',\r\n 'core.component.form-builder.untitled': 'Chưa đặt tên',\r\n 'core.component.form-builder.no-selection-title': 'Chưa chọn component nào',\r\n 'core.component.form-builder.no-selection-hint': 'Chọn một component trên canvas để chỉnh sửa thuộc tính.',\r\n 'core.component.form-builder.group-children': 'Thành phần con',\r\n 'core.component.form-builder.group-icon': 'Icon',\r\n 'core.component.form-builder.group-accent-color': 'Màu nhấn',\r\n 'core.component.form-builder.group-no-children': 'Chưa có trường nào. Thêm hoặc kéo trường vào group này.',\r\n 'core.component.form-builder.break': 'Ngắt dòng',\r\n\r\n // ---- Component: code-editor ----\r\n 'core.component.code-editor.copied': 'Đã copy!',\r\n 'core.component.code-editor.copy': 'Copy code',\r\n\r\n // ---- Component: history ----\r\n 'core.component.history.by': 'Bởi',\r\n\r\n // ---- Component: import-excel ----\r\n 'core.component.import-excel.title': 'Nhập dữ liệu Excel',\r\n 'core.component.import-excel.see-all': 'Xem tất cả',\r\n 'core.component.import-excel.valid-rows': 'Số dòng dữ liệu hợp lệ',\r\n 'core.component.import-excel.error-rows': 'Số dòng dữ liệu có lỗi',\r\n 'core.component.import-excel.warning-rows': 'Số dòng dữ liệu có cảnh báo',\r\n 'core.component.import-excel.valid-data': 'Dữ liệu hợp lệ',\r\n 'core.component.import-excel.download-template-tooltip': 'Nhấn để tải tệp mẫu về máy',\r\n 'core.component.import-excel.upload': 'Tải lên',\r\n 'core.component.import-excel.download': 'Tải về',\r\n 'core.component.import-excel.confirm-save': 'Xác nhận & Lưu',\r\n 'core.component.import-excel.status': 'Trạng thái',\r\n 'core.component.import-excel.no-data-upload': 'Chưa có dữ liệu tải lên',\r\n 'core.component.import-excel.click-here-template': 'Nhấn vào đây để tải tệp mẫu',\r\n 'core.component.import-excel.no-data-in-file': 'Tệp tin không có dữ liệu',\r\n 'core.component.import-excel.row-limit': 'Giới hạn tải lên {limit} dòng',\r\n 'core.component.import-excel.required': 'Dữ liệu bắt buộc',\r\n 'core.component.import-excel.min-length': 'Độ dài chuỗi tối thiểu: {min}',\r\n 'core.component.import-excel.max-length': 'Độ dài chuỗi tối đa: {max}',\r\n 'core.component.import-excel.not-a-number': '{value} không phải số hợp lệ',\r\n 'core.component.import-excel.below-min': '{value} không thỏa giá trị tối thiểu: {min}',\r\n 'core.component.import-excel.above-max': '{value} không thỏa giá trị tối đa: {max}',\r\n 'core.component.import-excel.invalid-bool': 'Vui lòng nhập giá trị hợp lệ true, false, 1, 0',\r\n 'core.component.import-excel.invalid-value': 'Giá trị {value} không hợp lệ',\r\n 'core.component.import-excel.value-not-in-list': 'Giá trị {value} không thuộc danh sách cho phép [{list}]',\r\n 'core.component.import-excel.invalid-date-format': 'Ngày {value} không đúng định dạng {format}',\r\n 'core.component.import-excel.generic-error': 'Có lỗi xảy ra',\r\n 'core.component.import-excel.notify-title': 'Thông báo',\r\n 'core.component.import-excel.message-column': 'Thông báo',\r\n 'core.component.import-excel.success': 'Thành công',\r\n\r\n // ---- Component: preview-image ----\r\n 'core.component.preview-image.no-image': 'Không có thông tin ảnh',\r\n 'core.component.preview-image.title': 'Xem ảnh',\r\n 'core.component.preview-image.no-image-hint': 'Chưa có ảnh nào để hiển thị',\r\n 'core.component.preview-image.load-error': 'Không tải được ảnh',\r\n 'core.component.preview-image.load-error-hint': 'File ảnh có thể đã bị xóa hoặc đường dẫn không hợp lệ',\r\n 'core.component.preview-image.retry': 'Thử lại',\r\n 'core.component.preview-image.close': 'Đóng',\r\n 'core.component.preview-image.prev': 'Ảnh trước',\r\n 'core.component.preview-image.next': 'Ảnh tiếp theo',\r\n 'core.component.preview-image.zoom-in': 'Phóng to',\r\n 'core.component.preview-image.zoom-out': 'Thu nhỏ',\r\n 'core.component.preview-image.fit': 'Vừa khung',\r\n 'core.component.preview-image.rotate': 'Xoay',\r\n 'core.component.preview-image.download': 'Tải xuống',\r\n 'core.component.preview-image.fullscreen': 'Toàn màn hình',\r\n 'core.component.preview-image.loading': 'Đang tải ảnh...',\r\n 'core.component.preview-image.kbd-hint-nav': 'chuyển ảnh',\r\n 'core.component.preview-image.kbd-hint-close': 'đóng',\r\n\r\n // ---- Component: preview-pdf ----\r\n 'core.component.preview-pdf.title': 'Xem tài liệu',\r\n 'core.component.preview-pdf.close': 'Đóng',\r\n 'core.component.preview-pdf.pages-count': '{count} trang',\r\n 'core.component.preview-pdf.tab.thumbnails': 'Trang',\r\n 'core.component.preview-pdf.tab.outline': 'Mục lục',\r\n 'core.component.preview-pdf.tab.search': 'Tìm',\r\n 'core.component.preview-pdf.first-page': 'Trang đầu',\r\n 'core.component.preview-pdf.prev-page': 'Trang trước',\r\n 'core.component.preview-pdf.next-page': 'Trang tiếp',\r\n 'core.component.preview-pdf.last-page': 'Trang cuối',\r\n 'core.component.preview-pdf.zoom-in': 'Phóng to',\r\n 'core.component.preview-pdf.zoom-out': 'Thu nhỏ',\r\n 'core.component.preview-pdf.fit-page': 'Vừa trang',\r\n 'core.component.preview-pdf.fit-width': 'Vừa rộng',\r\n 'core.component.preview-pdf.actual-size': 'Kích thước thật',\r\n 'core.component.preview-pdf.rotate': 'Xoay',\r\n 'core.component.preview-pdf.scroll-page': 'Từng trang',\r\n 'core.component.preview-pdf.scroll-continuous': 'Cuộn liên tục',\r\n 'core.component.preview-pdf.print': 'In',\r\n 'core.component.preview-pdf.download': 'Tải xuống',\r\n 'core.component.preview-pdf.fullscreen': 'Toàn màn hình',\r\n 'core.component.preview-pdf.toggle-sidebar': 'Hiện/ẩn thanh bên',\r\n 'core.component.preview-pdf.page-of': 'trang {current} / {total}',\r\n 'core.component.preview-pdf.empty.title': 'Không có tài liệu',\r\n 'core.component.preview-pdf.empty.subtitle': 'Chưa có file PDF nào để hiển thị',\r\n 'core.component.preview-pdf.loading': 'Đang tải tài liệu...',\r\n 'core.component.preview-pdf.loading.page': 'Đang xử lý trang {current} / {total}',\r\n 'core.component.preview-pdf.error.invalid.title': 'Không tải được tài liệu',\r\n 'core.component.preview-pdf.error.invalid.body': 'File PDF có thể bị hỏng. Vui lòng kiểm tra lại file.',\r\n 'core.component.preview-pdf.error.password.title': 'Tài liệu được bảo vệ',\r\n 'core.component.preview-pdf.error.password.body': 'File PDF này yêu cầu mật khẩu để mở.',\r\n 'core.component.preview-pdf.error.network.title': 'Không kết nối được',\r\n 'core.component.preview-pdf.error.network.body': 'Không thể tải file từ máy chủ. Vui lòng thử lại sau.',\r\n 'core.component.preview-pdf.error.unknown.title': 'Đã có lỗi xảy ra',\r\n 'core.component.preview-pdf.error.unknown.body': 'Vui lòng thử lại hoặc tải file gốc về để xem.',\r\n 'core.component.preview-pdf.error.retry': 'Thử lại',\r\n 'core.component.preview-pdf.error.download-raw': 'Tải file gốc',\r\n 'core.component.preview-pdf.deferred.outline': 'Mục lục sẽ được bổ sung trong phiên bản kế tiếp.',\r\n 'core.component.preview-pdf.deferred.search': 'Tính năng tìm kiếm sẽ được bổ sung trong phiên bản kế tiếp.',\r\n 'core.component.preview-pdf.search': 'Tìm kiếm',\r\n 'core.component.preview-pdf.search-placeholder': 'Tìm trong tài liệu...',\r\n 'core.component.preview-pdf.search-case': 'Phân biệt hoa thường',\r\n 'core.component.preview-pdf.search-whole': 'Từ nguyên',\r\n 'core.component.preview-pdf.search-no-results': 'Không tìm thấy',\r\n 'core.component.preview-pdf.search-results-count': '{count} kết quả cho \"{term}\"',\r\n 'core.component.preview-pdf.search-prev': 'Kết quả trước',\r\n 'core.component.preview-pdf.search-next': 'Kết quả tiếp',\r\n 'core.component.preview-pdf.search-close': 'Đóng tìm kiếm',\r\n\r\n // ---- Component: table ----\r\n 'core.component.table.setup': 'Thiết lập bảng',\r\n 'core.component.table.column-header': 'Tiêu đề cột',\r\n 'core.component.table.width': 'Rộng',\r\n 'core.component.table.fixed': 'Cố định',\r\n 'core.component.table.char-limit': 'Giới hạn ký tự',\r\n 'core.component.table.skip': 'Bỏ qua',\r\n 'core.component.table.apply': 'Áp dụng',\r\n 'core.component.table.filter': 'Bộ lọc',\r\n 'core.component.table.clear-selection': 'Xóa lựa chọn',\r\n 'core.component.table.customize': 'Tùy chỉnh',\r\n 'core.component.table.search': 'Tìm kiếm',\r\n 'core.component.table.reload': 'Tải lại',\r\n 'core.component.table.setup-short': 'Thiết lập',\r\n 'core.component.table.no-results': 'Không có kết quả phù hợp',\r\n 'core.component.table.no-results-hint': 'Vui lòng tìm kiếm hoặc lọc theo tiêu chí khác',\r\n 'core.component.table.choose-filter-hint': 'Vui lòng chọn bộ lọc để bắt đầu',\r\n 'core.component.table.no-data': 'Chưa có dữ liệu',\r\n 'core.component.table.export-excel': 'Xuất excel',\r\n 'core.component.table.export-csv': 'Xuất CSV',\r\n 'core.component.table.showing': 'Đang hiển thị:',\r\n 'core.component.table.paginator.first-page': 'Trang đầu',\r\n 'core.component.table.paginator.last-page': 'Trang cuối',\r\n 'core.component.table.paginator.items-per-page': 'Đang hiển thị',\r\n 'core.component.table.paginator.next-page': 'Trang sau',\r\n 'core.component.table.paginator.previous-page': 'Trang trước',\r\n 'core.component.table.error-occurred': 'Có lỗi xảy ra',\r\n 'core.component.table.not-an-array': 'Dữ liệu không phải là một mảng',\r\n 'core.component.table.config.confirm-reset': 'Xác nhận đưa tất cả thiết lập về mặc định',\r\n 'core.component.table.popup-export.select-columns': 'Vui lòng chọn cột dữ liệu để xuất',\r\n 'core.component.table.selector-action.default-msg': 'dữ liệu được chọn',\r\n 'core.component.tab-router.too-many-tabs': 'Bạn đã mở quá nhiều tab.',\r\n\r\n // ---- Component: upload-file ----\r\n 'core.component.upload-file.upload': 'Tải file',\r\n 'core.component.upload-file.error-occurred': 'Có lỗi xảy ra',\r\n 'core.component.upload-file.please-upload': 'Vui lòng tải lên tệp/ảnh',\r\n 'core.component.upload-file.desc-format-and-size': 'Định dạng: {exts} và tối đa: {maxSize}MB',\r\n 'core.component.upload-file.desc-format': 'Định dạng: {exts}',\r\n 'core.component.upload-file.desc-max-size': 'Tối đa: {maxSize}MB',\r\n 'core.component.upload-file.not-image': '[{name}] Tệp tải lên không phải là ảnh',\r\n 'core.component.upload-file.invalid-format': '[{name}] Tệp tải lên không đúng định dạng: {exts}',\r\n 'core.component.upload-file.size-exceeded': '[{name}] Kích thước tệp tối đa: {maxSize} MB',\r\n 'core.component.upload-file.upload-failed': 'Có lỗi xảy ra trong quá trình tải lên tệp',\r\n 'core.component.upload-file.too-many-files': 'Bạn đã chọn quá nhiều file. Vui lòng kiểm tra lại số lượng',\r\n 'core.component.upload-file.confirm-delete-message': 'Bạn có muốn xóa file này không? Thao tác này không thể hoàn tác',\r\n 'core.component.upload-file.confirm-delete-title': 'Xác nhận xóa?',\r\n 'core.component.upload-file.confirm-yes': 'Xác nhận',\r\n 'core.component.upload-file.confirm-no': 'Hủy',\r\n 'core.component.upload-file.no-configuration': 'Vui lòng inject SD_UPLOAD_FILE_CONFIGURATION hoặc truyền [upload] trực tiếp vào component',\r\n 'core.component.upload-file.no-configuration-key': 'Không tìm thấy upload configuration theo key=\\'{key}\\'. Vui lòng kiểm tra providers hoặc truyền [upload] trực tiếp',\r\n 'core.component.upload-file.preview-title': 'Xem ảnh',\r\n\r\n // ---- Module: layout (sidebar / user menu) ----\r\n 'core.module.layout.user.change-password': 'Đổi mật khẩu',\r\n 'core.module.layout.user.logout': 'Đăng xuất',\r\n 'core.module.layout.sidebar.search': 'Tìm kiếm',\r\n\r\n // ---- Module: layout (greeting + weekday) ----\r\n 'core.module.layout.greeting.hello': 'Xin chào, {name}',\r\n 'core.module.layout.weekday.0': 'Chủ Nhật',\r\n 'core.module.layout.weekday.1': 'Thứ 2',\r\n 'core.module.layout.weekday.2': 'Thứ 3',\r\n 'core.module.layout.weekday.3': 'Thứ 4',\r\n 'core.module.layout.weekday.4': 'Thứ 5',\r\n 'core.module.layout.weekday.5': 'Thứ 6',\r\n 'core.module.layout.weekday.6': 'Thứ 7',\r\n 'core.module.layout.today-info.format': '{weekday}, ngày {date}',\r\n\r\n // ---- Module: layout (forbidden page) ----\r\n 'core.module.layout.forbidden.title': 'Không được phép truy cập',\r\n 'core.module.layout.forbidden.message': 'Bạn không có quyền truy cập vào trang này. Liên hệ với quản trị viên hoặc quay lại trang chủ',\r\n 'core.module.layout.forbidden.back-home': 'Quay lại trang chủ',\r\n\r\n // ---- Module: layout (not-found page) ----\r\n 'core.module.layout.not-found.title': '404 - Trang không tồn tại',\r\n 'core.module.layout.not-found.message': 'Trang bạn tìm không tồn tại hoặc đã bị xóa. Vui lòng kiểm tra lại địa chỉ URL hoặc quay lại trang chủ để tiếp tục.',\r\n 'core.module.layout.not-found.back': 'Quay trở lại',\r\n\r\n // ---- Module: layout (home page) ----\r\n 'core.module.layout.home.tab-name': 'Trang chủ',\r\n 'core.module.layout.home.feature.data': 'Dữ liệu',\r\n 'core.module.layout.home.feature.reports': 'Báo cáo',\r\n 'core.module.layout.home.feature.users': 'Người dùng',\r\n 'core.module.layout.home.feature.workflow': 'Quy trình',\r\n 'core.module.layout.home.feature.audit': 'Kiểm toán',\r\n 'core.module.layout.home.feature.integration': 'Tích hợp',\r\n\r\n // ---- Module: layout (mock fallback khi không provide SD_LAYOUT_CONFIGURATION) ----\r\n 'core.module.layout.mock.user.full-name': 'Người dùng demo',\r\n\r\n // ---- Module: generic (generic-select) ----\r\n 'core.module.generic.generic-select.detail-link': 'chi tiết',\r\n};\r\n","import type { EN_MESSAGES } from './en';\r\n\r\nexport const ZH_MESSAGES: Record<keyof typeof EN_MESSAGES, string> = {\r\n 'core.common.cancel': '取消',\r\n 'core.common.close': '关闭',\r\n 'core.common.reload': '重新加载页面',\r\n 'core.test.greet': '你好 {name}',\r\n\r\n // ---- Validators (VALIDATION_PATTERNS in @sdcorejs/utils/constants) ----\r\n 'core.validator.email.name': '邮箱',\r\n 'core.validator.email.error': '邮箱格式不正确',\r\n 'core.validator.phone.name': '电话',\r\n 'core.validator.phone.error': '电话号码格式不正确',\r\n // Legacy aliases\r\n 'core.validator.phone-vn.name': '越南电话',\r\n 'core.validator.phone-vn.error': '越南电话号码格式不正确',\r\n 'core.validator.cccd.name': '身份证号',\r\n 'core.validator.cccd.error': '身份证号格式不正确(12位数字)',\r\n 'core.validator.id-vn.name': '身份证 / 护照',\r\n 'core.validator.id-vn.error': '身份证或护照号码格式不正确',\r\n 'core.validator.vn-phone.name': '越南电话',\r\n 'core.validator.vn-phone.error': '越南电话号码格式不正确',\r\n 'core.validator.vn-id.name': '身份证号',\r\n 'core.validator.vn-id.error': '身份证号格式不正确(12位数字)',\r\n 'core.validator.passport.name': '护照',\r\n 'core.validator.passport.error': '护照号码格式不正确(1个字母 + 7位数字)',\r\n 'core.validator.vn-id-or-passport.name': '身份证 / 护照',\r\n 'core.validator.vn-id-or-passport.error': '身份证或护照号码格式不正确',\r\n 'core.validator.time.name': '时间',\r\n 'core.validator.time.error': '时间格式不正确(HH:mm 格式)',\r\n 'core.validator.url.name': 'URL',\r\n 'core.validator.url.error': 'URL 格式不正确',\r\n 'core.validator.domain.name': '域名',\r\n 'core.validator.domain.error': '域名格式不正确',\r\n 'core.validator.ipv4.name': 'IPv4',\r\n 'core.validator.ipv4.error': 'IPv4 地址格式不正确',\r\n 'core.validator.ipv6.name': 'IPv6',\r\n 'core.validator.ipv6.error': 'IPv6 地址格式不正确',\r\n 'core.validator.image-url.name': '图片 URL',\r\n 'core.validator.image-url.error': '图片 URL 格式不正确',\r\n 'core.validator.slug.name': 'Slug',\r\n 'core.validator.slug.error': 'Slug 格式不正确',\r\n 'core.validator.number.name': '数字',\r\n 'core.validator.number.error': '数字格式不正确',\r\n 'core.validator.integer.name': '整数',\r\n 'core.validator.integer.error': '整数格式不正确',\r\n 'core.validator.decimal.name': '小数',\r\n 'core.validator.decimal.error': '小数格式不正确',\r\n 'core.validator.positive-number.name': '正数',\r\n 'core.validator.positive-number.error': '必须为正数',\r\n 'core.validator.uuid.name': 'UUID',\r\n 'core.validator.uuid.error': 'UUID 格式不正确',\r\n 'core.validator.code-16.name': '16 位代码',\r\n 'core.validator.code-16.error': '16 位代码格式不正确',\r\n 'core.validator.code-32.name': '32 位代码',\r\n 'core.validator.code-32.error': '32 位代码格式不正确',\r\n 'core.validator.hex-color.name': 'HEX 颜色',\r\n 'core.validator.hex-color.error': 'HEX 颜色格式不正确',\r\n 'core.validator.base64.name': 'Base64',\r\n 'core.validator.base64.error': 'Base64 字符串格式不正确',\r\n\r\n // ---- Operators (operator.model.ts) ----\r\n 'core.operator.equal.display': '等于',\r\n 'core.operator.not-equal.display': '不等于',\r\n 'core.operator.greater-than.display': '大于',\r\n 'core.operator.less-than.display': '小于',\r\n 'core.operator.greater-or-equal.display': '大于或等于',\r\n 'core.operator.less-or-equal.display': '小于或等于',\r\n 'core.operator.contain.display': '包含',\r\n 'core.operator.not-contain.display': '不包含',\r\n 'core.operator.start-with.display': '开始于',\r\n 'core.operator.end-with.display': '结束于',\r\n 'core.operator.in.display': '属于',\r\n 'core.operator.not-in.display': '不属于',\r\n 'core.operator.null.display': '为空',\r\n 'core.operator.not-null.display': '不为空',\r\n\r\n // ---- Global error handler ----\r\n 'core.handler.global-error.update-title': '系统有新的更新',\r\n 'core.handler.global-error.update-body': '当前版本已过期,无法加载资源。\\n请点击确定重新加载页面。',\r\n\r\n // ---- Interceptor: no-internet ----\r\n 'core.interceptor.no-internet.offline': '没有网络连接,等待连接中...',\r\n 'core.interceptor.no-internet.cors-error': '无法连接到服务器(CORS 或配置错误)。',\r\n 'core.interceptor.no-internet.maintenance': '服务器正在维护中,请稍后再试。',\r\n 'core.interceptor.no-internet.restored': '网络连接已恢复。',\r\n\r\n // ---- Service: excel ----\r\n 'core.excel.cannot-read-file': '无法读取文件内容',\r\n 'core.excel.no-sheet': 'Excel 文件没有数据表',\r\n\r\n // ---- Service: docx ----\r\n 'core.docx.invalid-format': '格式不正确,请选择 DOC 或 DOCX 格式的模板',\r\n 'core.docx.size-exceeded': '模板文件大小超出支持范围,请重试',\r\n 'core.docx.convert-error': '转换 DOCX 文件时发生错误',\r\n\r\n // ---- Service: notify (toast) ----\r\n 'core.notify.type.success': '成功',\r\n 'core.notify.type.info': '信息',\r\n 'core.notify.type.warning': '警告',\r\n 'core.notify.type.error': '错误',\r\n 'core.notify.show-more': '显示更多 ({count})',\r\n 'core.notify.show-less': '收起',\r\n\r\n // ---- Service: confirm ----\r\n 'core.confirm.title': '确认',\r\n 'core.confirm.yes': '确定',\r\n 'core.confirm.no': '取消',\r\n 'core.confirm.yes-short': '是',\r\n 'core.confirm.no-short': '否',\r\n\r\n // ---- Directive: hover-copy ----\r\n 'core.directive.hover-copy.tooltip': '复制',\r\n\r\n // ---- Forms: input ----\r\n 'core.form.input.required': '请输入内容',\r\n 'core.form.input.maxlength': '最大字符数: {max}',\r\n 'core.form.input.invalid-pattern': '格式不正确',\r\n 'core.form.input.exceeded': '已超过最大字符数',\r\n\r\n // ---- Forms: autocomplete ----\r\n 'core.form.autocomplete.required': '请输入内容',\r\n\r\n // ---- Forms: chip ----\r\n 'core.form.chip.required': '请输入内容',\r\n 'core.form.chip.minlength': '请至少输入 {min} 个值',\r\n 'core.form.chip.maxlength': '最多输入 {max} 个值',\r\n\r\n // ---- Forms: chip-calendar ----\r\n 'core.form.chip-calendar.required': '请输入内容',\r\n 'core.form.chip-calendar.minlength': '请至少输入 {min} 个值',\r\n 'core.form.chip-calendar.maxlength': '最多输入 {max} 个值',\r\n\r\n // ---- Forms: date ----\r\n 'core.form.date.required': '请输入内容',\r\n 'core.form.date.min-date': '最小日期: {date}',\r\n 'core.form.date.max-date': '最大日期: {date}',\r\n 'core.form.date.parse-error': '解析错误: {text}',\r\n 'core.form.date.invalid-format': '格式不正确',\r\n\r\n // ---- Forms: date-range ----\r\n 'core.form.date-range.required': '请输入内容',\r\n 'core.form.date-range.invalid-min': '开始日期无效(低于限制)',\r\n 'core.form.date-range.invalid-max': '结束日期无效(高于限制)',\r\n 'core.form.date-range.from': '从',\r\n 'core.form.date-range.to': '至',\r\n\r\n // ---- Forms: datetime ----\r\n 'core.form.datetime.required': '请输入内容',\r\n 'core.form.datetime.min-date': '最小日期: {date}',\r\n 'core.form.datetime.max-date': '最大日期: {date}',\r\n 'core.form.datetime.invalid-format': '格式不正确',\r\n 'core.form.datetime.now': '现在',\r\n 'core.form.datetime.confirm': '确认',\r\n\r\n // ---- Forms: time-spinner ----\r\n 'core.form.time-spinner.hour': '时',\r\n 'core.form.time-spinner.minute': '分',\r\n 'core.form.time-spinner.second': '秒',\r\n 'core.form.time-spinner.increase-hour': '增加小时',\r\n 'core.form.time-spinner.decrease-hour': '减少小时',\r\n 'core.form.time-spinner.increase-minute': '增加分钟',\r\n 'core.form.time-spinner.decrease-minute': '减少分钟',\r\n 'core.form.time-spinner.increase-second': '增加秒',\r\n 'core.form.time-spinner.decrease-second': '减少秒',\r\n\r\n // ---- Forms: input-number ----\r\n 'core.form.input-number.required': '请输入内容',\r\n 'core.form.input-number.min': '值不能小于 {min}',\r\n 'core.form.input-number.max': '值不能大于 {max}',\r\n\r\n // ---- Forms: radio ----\r\n 'core.form.radio.required': '请选择',\r\n\r\n // ---- Forms: select ----\r\n 'core.form.select.required': '请选择',\r\n\r\n // ---- Forms: textarea ----\r\n 'core.form.textarea.required': '请输入内容',\r\n 'core.form.textarea.maxlength': '最大字符数: {max}',\r\n 'core.form.textarea.invalid-pattern': '格式不正确',\r\n 'core.form.textarea.exceeded': '已超过最大字符数',\r\n\r\n // ---- Component: editor ----\r\n 'core.component.editor.required': '请输入内容',\r\n 'core.component.editor.maxlength': '最大字符数: {max}',\r\n 'core.component.editor.image.invalid-format': '不允许的文件格式 \".{format}\"。允许的格式: {allowed}',\r\n 'core.component.editor.image.size-exceeded': '文件大小 {sizeMB}MB 超过限制 {maxSizeMB}MB',\r\n 'core.component.editor.image.min-width': '图片宽度 {width}px 低于最小值 {min}px',\r\n 'core.component.editor.image.min-height': '图片高度 {height}px 低于最小值 {min}px',\r\n 'core.component.editor.image.max-width': '图片宽度 {width}px 超过限制 {max}px',\r\n 'core.component.editor.image.max-height': '图片高度 {height}px 超过限制 {max}px',\r\n 'core.component.editor.image.max-per-selection': '每次最多选择 {max} 张图片',\r\n\r\n // ---- Component: document-builder ----\r\n 'core.component.document-builder.page-number.current': '当前页码',\r\n 'core.component.document-builder.page-number.total': '总页数',\r\n 'core.component.document-builder.ck-comment.label': '评论',\r\n 'core.component.document-builder.ck-comment.text-too-long': '文本过长({length} 字符)。最多 {max} 字符。',\r\n 'core.component.document-builder.variable.not-allowed': '不允许在文本中添加变量',\r\n 'core.component.document-builder.variable.invalid-data': '变量数据无效',\r\n\r\n // ---- Component: form-builder ----\r\n 'core.component.form-builder.field-key': '字段键',\r\n 'core.component.form-builder.display': '显示',\r\n 'core.component.form-builder.general': '常规',\r\n 'core.component.form-builder.visible-when': '显示条件',\r\n 'core.component.form-builder.required': '必填',\r\n 'core.component.form-builder.label': '标签',\r\n 'core.component.form-builder.disabled': '禁用',\r\n 'core.component.form-builder.disabled-when': '禁用条件',\r\n 'core.component.form-builder.hidden-when': '隐藏条件',\r\n 'core.component.form-builder.validation': '校验',\r\n 'core.component.form-builder.required-when': '必填条件',\r\n 'core.component.form-builder.confirm': '确认',\r\n 'core.component.form-builder.delete': '删除',\r\n 'core.component.form-builder.save': '保存',\r\n 'core.component.form-builder.hint': '提示',\r\n 'core.component.form-builder.parameter': '参数',\r\n 'core.component.form-builder.add-field': '添加字段',\r\n 'core.component.form-builder.data': '数据',\r\n 'core.component.form-builder.query-condition': '查询条件',\r\n 'core.component.form-builder.set-query-value': '设置查询值',\r\n 'core.component.form-builder.value-source-field': '取值字段',\r\n 'core.component.form-builder.assign-parameter': '分配参数',\r\n 'core.component.form-builder.template-data': '模板数据',\r\n 'core.component.form-builder.set-expression': '设置表达式',\r\n 'core.component.form-builder.condition-group': '条件组',\r\n 'core.component.form-builder.condition': '条件',\r\n 'core.component.form-builder.layout': '布局',\r\n 'core.component.form-builder.maxlength': '最大字符数',\r\n 'core.component.form-builder.assign-parameter-value': '分配参数值',\r\n 'core.component.form-builder.parameter-name': '参数名',\r\n 'core.component.form-builder.parameter-value': '参数值',\r\n 'core.component.form-builder.assign-value': '赋值',\r\n 'core.component.form-builder.add-data': '添加数据',\r\n 'core.component.form-builder.data-api': 'API 数据',\r\n 'core.component.form-builder.data-static': '静态数据',\r\n 'core.component.form-builder.set-on-change-assign': '设置变更时赋值',\r\n 'core.component.form-builder.target-field': '目标字段',\r\n 'core.component.form-builder.target-value': '目标值',\r\n 'core.component.form-builder.column-data': '列数据',\r\n 'core.component.form-builder.add-column': '添加列',\r\n 'core.component.form-builder.column-config': '列配置',\r\n 'core.component.form-builder.column-name': '列名',\r\n 'core.component.form-builder.width': '宽度',\r\n 'core.component.form-builder.data-type': '数据类型',\r\n 'core.component.form-builder.show-when-true': '为 TRUE 时显示',\r\n 'core.component.form-builder.show-when-false': '为 FALSE 时显示',\r\n 'core.component.form-builder.column-list': '列列表',\r\n 'core.component.form-builder.yes-no': '是/否',\r\n 'core.component.form-builder.config-validation-error-warning': '配置错误/警告校验',\r\n 'core.component.form-builder.message-type': '消息类型',\r\n 'core.component.form-builder.message-display': '显示消息',\r\n 'core.component.form-builder.condition-expression': '条件表达式',\r\n 'core.component.form-builder.add-validation': '添加校验',\r\n 'core.component.form-builder.expression': '表达式',\r\n 'core.component.form-builder.available-methods': '可用方法',\r\n 'core.component.form-builder.format': '格式',\r\n 'core.component.form-builder.time': '时间',\r\n 'core.component.form-builder.content': '内容',\r\n 'core.component.form-builder.min': '最小值',\r\n 'core.component.form-builder.max': '最大值',\r\n 'core.component.form-builder.vertical': '垂直',\r\n 'core.component.form-builder.multiple': '多选',\r\n 'core.component.form-builder.default-value': '默认值',\r\n 'core.component.form-builder.type': '类型',\r\n 'core.component.form-builder.file': '文件',\r\n 'core.component.form-builder.image': '图片',\r\n 'core.component.form-builder.max-files': '最大文件/图片数',\r\n 'core.component.form-builder.size-mb': '大小 (MB)',\r\n 'core.component.form-builder.format-example': '格式(例如: png,jpg ...)',\r\n 'core.component.form-builder.source-mobile': '来源(移动端)',\r\n 'core.component.form-builder.config-variable': '配置变量',\r\n 'core.component.form-builder.config-validation-warning-error': '配置警告/错误校验',\r\n 'core.component.form-builder.back-to-design': '返回设计',\r\n 'core.component.form-builder.preview': '预览',\r\n 'core.component.form-builder.drag-vertically': '上下拖动',\r\n 'core.component.form-builder.unset-readonly': '取消只读',\r\n 'core.component.form-builder.set-readonly': '只读',\r\n 'core.component.form-builder.duplicate': '复制',\r\n 'core.component.form-builder.show': '显示',\r\n 'core.component.form-builder.hide': '隐藏',\r\n 'core.component.form-builder.flex': '弹性',\r\n 'core.component.form-builder.display-label': '显示标签',\r\n 'core.component.form-builder.attribute': '属性',\r\n 'core.component.form-builder.add-variable': '添加变量',\r\n 'core.component.form-builder.add-new': '新增',\r\n 'core.component.form-builder.detail': '详情',\r\n 'core.component.form-builder.create-update': '新建/更新',\r\n 'core.component.form-builder.default': '默认',\r\n 'core.component.form-builder.show-more': '查看更多',\r\n 'core.component.form-builder.show-less': '收起',\r\n 'core.component.form-builder.row-overflow': '无法移动到该行,因为总宽度超过 12 列',\r\n 'core.component.form-builder.upload-source.all': '全部',\r\n 'core.component.form-builder.upload-source.photo-library': '从相册选择',\r\n 'core.component.form-builder.upload-source.capture': '拍照',\r\n // Form-builder UI v2 (M3 redesign)\r\n 'core.component.form-builder.components': '组件',\r\n 'core.component.form-builder.search-components': '搜索组件…',\r\n 'core.component.form-builder.view-json': '查看 JSON',\r\n 'core.component.form-builder.design': '设计',\r\n 'core.component.form-builder.preview-runtime': '预览 · 运行时',\r\n 'core.component.form-builder.cancel': '取消',\r\n 'core.component.form-builder.submit': '提交',\r\n 'core.component.form-builder.empty-title': '拖动组件到此处开始',\r\n 'core.component.form-builder.empty-hint': '从左侧面板拖动字段构建表单,或按',\r\n 'core.component.form-builder.conditional': '条件',\r\n 'core.component.form-builder.group-drop-here': '将字段拖到此处以添加到该分组',\r\n 'core.component.form-builder.hidden': '已隐藏',\r\n 'core.component.form-builder.read-only': '只读',\r\n 'core.component.form-builder.untitled': '未命名',\r\n 'core.component.form-builder.no-selection-title': '未选中任何项',\r\n 'core.component.form-builder.no-selection-hint': '在画布上选择一个组件以编辑其属性。',\r\n 'core.component.form-builder.group-children': '子项',\r\n 'core.component.form-builder.group-icon': '图标',\r\n 'core.component.form-builder.group-accent-color': '强调色',\r\n 'core.component.form-builder.group-no-children': '尚无字段。请向此分组添加或拖入字段。',\r\n 'core.component.form-builder.break': '换行',\r\n\r\n // ---- Component: code-editor ----\r\n 'core.component.code-editor.copied': '已复制!',\r\n 'core.component.code-editor.copy': '复制代码',\r\n\r\n // ---- Component: history ----\r\n 'core.component.history.by': '操作人',\r\n\r\n // ---- Component: import-excel ----\r\n 'core.component.import-excel.title': '导入 Excel 数据',\r\n 'core.component.import-excel.see-all': '查看全部',\r\n 'core.component.import-excel.valid-rows': '有效行数',\r\n 'core.component.import-excel.error-rows': '错误行数',\r\n 'core.component.import-excel.warning-rows': '警告行数',\r\n 'core.component.import-excel.valid-data': '有效数据',\r\n 'core.component.import-excel.download-template-tooltip': '点击下载模板',\r\n 'core.component.import-excel.upload': '上传',\r\n 'core.component.import-excel.download': '下载',\r\n 'core.component.import-excel.confirm-save': '确认并保存',\r\n 'core.component.import-excel.status': '状态',\r\n 'core.component.import-excel.no-data-upload': '未上传任何数据',\r\n 'core.component.import-excel.click-here-template': '点击此处下载模板',\r\n 'core.component.import-excel.no-data-in-file': '文件中没有数据',\r\n 'core.component.import-excel.row-limit': '上传上限为 {limit} 行',\r\n 'core.component.import-excel.required': '必填数据',\r\n 'core.component.import-excel.min-length': '最小字符串长度: {min}',\r\n 'core.component.import-excel.max-length': '最大字符串长度: {max}',\r\n 'core.component.import-excel.not-a-number': '{value} 不是有效的数字',\r\n 'core.component.import-excel.below-min': '{value} 低于最小值: {min}',\r\n 'core.component.import-excel.above-max': '{value} 高于最大值: {max}',\r\n 'core.component.import-excel.invalid-bool': '请输入有效值 (true, false, 1, 0)',\r\n 'core.component.import-excel.invalid-value': '值 {value} 无效',\r\n 'core.component.import-excel.value-not-in-list': '值 {value} 不在允许列表 [{list}] 中',\r\n 'core.component.import-excel.invalid-date-format': '日期 {value} 不符合格式 {format}',\r\n 'core.component.import-excel.generic-error': '发生错误',\r\n 'core.component.import-excel.notify-title': '通知',\r\n 'core.component.import-excel.message-column': '消息',\r\n 'core.component.import-excel.success': '成功',\r\n\r\n // ---- Component: preview-image ----\r\n 'core.component.preview-image.no-image': '没有图片信息',\r\n 'core.component.preview-image.title': '图片预览',\r\n 'core.component.preview-image.no-image-hint': '暂无可显示的图片',\r\n 'core.component.preview-image.load-error': '无法加载图片',\r\n 'core.component.preview-image.load-error-hint': '图片文件可能已被删除或路径无效',\r\n 'core.component.preview-image.retry': '重试',\r\n 'core.component.preview-image.close': '关闭',\r\n 'core.component.preview-image.prev': '上一张',\r\n 'core.component.preview-image.next': '下一张',\r\n 'core.component.preview-image.zoom-in': '放大',\r\n 'core.component.preview-image.zoom-out': '缩小',\r\n 'core.component.preview-image.fit': '适应屏幕',\r\n 'core.component.preview-image.rotate': '旋转',\r\n 'core.component.preview-image.download': '下载',\r\n 'core.component.preview-image.fullscreen': '全屏',\r\n 'core.component.preview-image.loading': '正在加载图片...',\r\n 'core.component.preview-image.kbd-hint-nav': '切换图片',\r\n 'core.component.preview-image.kbd-hint-close': '关闭',\r\n\r\n // ---- Component: preview-pdf ----\r\n 'core.component.preview-pdf.title': '查看文档',\r\n 'core.component.preview-pdf.close': '关闭',\r\n 'core.component.preview-pdf.pages-count': '{count} 页',\r\n 'core.component.preview-pdf.tab.thumbnails': '页面',\r\n 'core.component.preview-pdf.tab.outline': '目录',\r\n 'core.component.preview-pdf.tab.search': '查找',\r\n 'core.component.preview-pdf.first-page': '首页',\r\n 'core.component.preview-pdf.prev-page': '上一页',\r\n 'core.component.preview-pdf.next-page': '下一页',\r\n 'core.component.preview-pdf.last-page': '末页',\r\n 'core.component.preview-pdf.zoom-in': '放大',\r\n 'core.component.preview-pdf.zoom-out': '缩小',\r\n 'core.component.preview-pdf.fit-page': '适合页面',\r\n 'core.component.preview-pdf.fit-width': '适合宽度',\r\n 'core.component.preview-pdf.actual-size': '实际大小',\r\n 'core.component.preview-pdf.rotate': '旋转',\r\n 'core.component.preview-pdf.scroll-page': '单页',\r\n 'core.component.preview-pdf.scroll-continuous': '连续滚动',\r\n 'core.component.preview-pdf.print': '打印',\r\n 'core.component.preview-pdf.download': '下载',\r\n 'core.component.preview-pdf.fullscreen': '全屏',\r\n 'core.component.preview-pdf.toggle-sidebar': '切换侧边栏',\r\n 'core.component.preview-pdf.page-of': '第 {current} / {total} 页',\r\n 'core.component.preview-pdf.empty.title': '没有文档',\r\n 'core.component.preview-pdf.empty.subtitle': '尚无可显示的 PDF 文件',\r\n 'core.component.preview-pdf.loading': '正在加载文档...',\r\n 'core.component.preview-pdf.loading.page': '正在处理第 {current} / {total} 页',\r\n 'core.component.preview-pdf.error.invalid.title': '无法加载文档',\r\n 'core.component.preview-pdf.error.invalid.body': 'PDF 文件可能已损坏。请检查文件。',\r\n 'core.component.preview-pdf.error.password.title': '受保护的文档',\r\n 'core.component.preview-pdf.error.password.body': '此 PDF 文件需要密码才能打开。',\r\n 'core.component.preview-pdf.error.network.title': '无法连接',\r\n 'core.component.preview-pdf.error.network.body': '无法从服务器加载文件。请稍后再试。',\r\n 'core.component.preview-pdf.error.unknown.title': '发生错误',\r\n 'core.component.preview-pdf.error.unknown.body': '请重试或下载原始文件查看。',\r\n 'core.component.preview-pdf.error.retry': '重试',\r\n 'core.component.preview-pdf.error.download-raw': '下载原始文件',\r\n 'core.component.preview-pdf.deferred.outline': '目录功能将在后续版本中添加。',\r\n 'core.component.preview-pdf.deferred.search': '搜索功能将在后续版本中添加。',\r\n 'core.component.preview-pdf.search': '搜索',\r\n 'core.component.preview-pdf.search-placeholder': '在文档中搜索...',\r\n 'core.component.preview-pdf.search-case': '区分大小写',\r\n 'core.component.preview-pdf.search-whole': '全词匹配',\r\n 'core.component.preview-pdf.search-no-results': '未找到结果',\r\n 'core.component.preview-pdf.search-results-count': '关于 \"{term}\" 的 {count} 个结果',\r\n 'core.component.preview-pdf.search-prev': '上一个结果',\r\n 'core.component.preview-pdf.search-next': '下一个结果',\r\n 'core.component.preview-pdf.search-close': '关闭搜索',\r\n\r\n // ---- Component: table ----\r\n 'core.component.table.setup': '表格设置',\r\n 'core.component.table.column-header': '列标题',\r\n 'core.component.table.width': '宽度',\r\n 'core.component.table.fixed': '固定',\r\n 'core.component.table.char-limit': '字符限制',\r\n 'core.component.table.skip': '跳过',\r\n 'core.component.table.apply': '应用',\r\n 'core.component.table.filter': '筛选',\r\n 'core.component.table.clear-selection': '清除选择',\r\n 'core.component.table.customize': '自定义',\r\n 'core.component.table.search': '搜索',\r\n 'core.component.table.reload': '刷新',\r\n 'core.component.table.setup-short': '设置',\r\n 'core.component.table.no-results': '未找到匹配结果',\r\n 'core.component.table.no-results-hint': '请使用其他条件搜索或筛选',\r\n 'core.component.table.choose-filter-hint': '请先选择筛选条件',\r\n 'core.component.table.no-data': '暂无数据',\r\n 'core.component.table.export-excel': '导出 Excel',\r\n 'core.component.table.export-csv': '导出 CSV',\r\n 'core.component.table.showing': '显示:',\r\n 'core.component.table.paginator.first-page': '首页',\r\n 'core.component.table.paginator.last-page': '末页',\r\n 'core.component.table.paginator.items-per-page': '显示',\r\n 'core.component.table.paginator.next-page': '下一页',\r\n 'core.component.table.paginator.previous-page': '上一页',\r\n 'core.component.table.error-occurred': '发生错误',\r\n 'core.component.table.not-an-array': '数据不是数组',\r\n 'core.component.table.config.confirm-reset': '确认将所有设置恢复为默认值',\r\n 'core.component.table.popup-export.select-columns': '请选择要导出的列',\r\n 'core.component.table.selector-action.default-msg': '项已选择',\r\n 'core.component.tab-router.too-many-tabs': '您已打开过多标签页。',\r\n\r\n // ---- Component: upload-file ----\r\n 'core.component.upload-file.upload': '上传文件',\r\n 'core.component.upload-file.error-occurred': '发生错误',\r\n 'core.component.upload-file.please-upload': '请上传文件/图片',\r\n 'core.component.upload-file.desc-format-and-size': '格式: {exts},最大: {maxSize}MB',\r\n 'core.component.upload-file.desc-format': '格式: {exts}',\r\n 'core.component.upload-file.desc-max-size': '最大: {maxSize}MB',\r\n 'core.component.upload-file.not-image': '[{name}] 上传的文件不是图片',\r\n 'core.component.upload-file.invalid-format': '[{name}] 上传的文件格式不正确: {exts}',\r\n 'core.component.upload-file.size-exceeded': '[{name}] 最大文件大小: {maxSize} MB',\r\n 'core.component.upload-file.upload-failed': '文件上传过程中发生错误',\r\n 'core.component.upload-file.too-many-files': '所选文件数量过多,请检查数量',\r\n 'core.component.upload-file.confirm-delete-message': '是否要删除此文件?此操作无法撤销',\r\n 'core.component.upload-file.confirm-delete-title': '确认删除?',\r\n 'core.component.upload-file.confirm-yes': '确认',\r\n 'core.component.upload-file.confirm-no': '取消',\r\n 'core.component.upload-file.no-configuration': '请注入 SD_UPLOAD_FILE_CONFIGURATION 或将 [upload] 直接传入组件',\r\n 'core.component.upload-file.no-configuration-key': '未找到 key=\\'{key}\\' 对应的上传配置。请检查 providers 或直接传入 [upload]',\r\n 'core.component.upload-file.preview-title': '图片预览',\r\n\r\n // ---- Module: layout (sidebar / user menu) ----\r\n 'core.module.layout.user.change-password': '修改密码',\r\n 'core.module.layout.user.logout': '退出登录',\r\n 'core.module.layout.sidebar.search': '搜索',\r\n\r\n // ---- Module: layout (greeting + weekday) ----\r\n 'core.module.layout.greeting.hello': '你好,{name}',\r\n 'core.module.layout.weekday.0': '星期日',\r\n 'core.module.layout.weekday.1': '星期一',\r\n 'core.module.layout.weekday.2': '星期二',\r\n 'core.module.layout.weekday.3': '星期三',\r\n 'core.module.layout.weekday.4': '星期四',\r\n 'core.module.layout.weekday.5': '星期五',\r\n 'core.module.layout.weekday.6': '星期六',\r\n 'core.module.layout.today-info.format': '{weekday},{date}',\r\n\r\n // ---- Module: layout (forbidden page) ----\r\n 'core.module.layout.forbidden.title': '禁止访问',\r\n 'core.module.layout.forbidden.message': '您没有访问此页面的权限。请联系管理员或返回首页',\r\n 'core.module.layout.forbidden.back-home': '返回首页',\r\n\r\n // ---- Module: layout (not-found page) ----\r\n 'core.module.layout.not-found.title': '404 - 页面未找到',\r\n 'core.module.layout.not-found.message': '您正在查找的页面不存在或已被移除。请检查 URL 或返回首页继续。',\r\n 'core.module.layout.not-found.back': '返回',\r\n\r\n // ---- Module: layout (home page) ----\r\n 'core.module.layout.home.tab-name': '首页',\r\n 'core.module.layout.home.feature.data': '数据',\r\n 'core.module.layout.home.feature.reports': '报表',\r\n 'core.module.layout.home.feature.users': '用户',\r\n 'core.module.layout.home.feature.workflow': '流程',\r\n 'core.module.layout.home.feature.audit': '审计',\r\n 'core.module.layout.home.feature.integration': '集成',\r\n\r\n // ---- Module: layout (mock fallback when SD_LAYOUT_CONFIGURATION is not provided) ----\r\n 'core.module.layout.mock.user.full-name': '演示用户',\r\n\r\n // ---- Module: generic (generic-select) ----\r\n 'core.module.generic.generic-select.detail-link': '详情',\r\n};\r\n","import { EN_MESSAGES } from './en';\nimport { JA_MESSAGES } from './ja';\nimport { KO_MESSAGES } from './ko';\nimport { VI_MESSAGES } from './vi';\nimport { ZH_MESSAGES } from './zh';\nimport type { Language } from './i18n.types';\n\nexport const I18N_MESSAGES: Record<Language, Readonly<Record<string, string>>> = {\n vi: VI_MESSAGES,\n en: EN_MESSAGES,\n ja: JA_MESSAGES,\n ko: KO_MESSAGES,\n zh: ZH_MESSAGES,\n};\n","import { computed, inject, Injectable, signal, Signal, WritableSignal } from '@angular/core';\nimport { ISdCoreConfiguration, SD_CORE_CONFIGURATION } from '@sd-angular/core/configurations';\nimport { I18N_MESSAGES } from './i18n.messages';\nimport { I18N_STORAGE_KEY } from './i18n.token';\nimport { SUPPORTED_LANGUAGES, I18nParams, Language } from './i18n.types';\n\n@Injectable({ providedIn: 'root' })\nexport class I18nService {\n readonly #config = inject<ISdCoreConfiguration | null>(SD_CORE_CONFIGURATION, { optional: true });\n // Custom catalog (signal) — non-null khi user cấu hình `language: () => I18nCatalog`.\n // Khi non-null, `messages` computed sẽ ưu tiên trả về catalog này thay vì I18N_MESSAGES[lang].\n // PHẢI khai báo TRƯỚC `#language` vì `#resolveInitial()` chạy trong initializer của `#language`\n // và có thể gọi `this.#customMessages.set(...)` (sync custom catalog path).\n readonly #customMessages: WritableSignal<Readonly<Record<string, string>> | null> = signal(null);\n readonly #language: WritableSignal<Language> = signal(this.#resolveInitial());\n readonly #warned = new Set<string>();\n\n readonly language: Signal<Language> = this.#language.asReadonly();\n readonly messages: Signal<Readonly<Record<string, string>>> = computed(() => {\n const custom = this.#customMessages();\n if (custom) return custom;\n return I18N_MESSAGES[this.#language()];\n });\n\n // Đổi ngôn ngữ require reload trang (model \"reload trên đổi\"). Pipe `translate` là pure\n // nên không tự cập nhật runtime — phải reload để cache pipe được rebuild với messages mới.\n // Test có thể pass `{ reload: false }` để tránh reload page trong Karma.\n setLanguage(lang: Language, opts: { reload?: boolean } = { reload: true }): void {\n if (!SUPPORTED_LANGUAGES.includes(lang)) return;\n if (this.#language() === lang && !this.#customMessages()) return; // no-op if same and not in custom mode\n // User chọn 'vi'/'en' rõ ràng -> clear custom mode (override custom provider)\n this.#customMessages.set(null);\n try { localStorage.setItem(I18N_STORAGE_KEY, lang); } catch { /* ignore */ }\n this.#language.set(lang);\n if (opts.reload && typeof window !== 'undefined') {\n window.location.reload();\n }\n }\n\n t(key: string, params?: I18nParams): string {\n // Đọc từ computed `messages()` để hỗ trợ cả custom catalog lẫn built-in lang.\n const raw = this.messages()[key] ?? this.#fallback(key);\n return this.#interpolate(raw, params);\n }\n\n #fallback(key: string): string {\n const vi = I18N_MESSAGES.vi[key];\n if (vi !== undefined) {\n this.#warnOnce(`[I18n] Missing key in ${this.#language()}: ${key} (fallback to vi)`);\n return vi;\n }\n this.#warnOnce(`[I18n] Missing key: ${key}`);\n return key;\n }\n\n #interpolate(raw: string, params?: I18nParams): string {\n if (!params) return raw;\n return raw.replace(/\\{(\\w+)\\}/g, (m, name) => (name in params ? String(params[name]) : m));\n }\n\n #warnOnce(msg: string): void {\n if (this.#warned.has(msg)) return;\n this.#warned.add(msg);\n console.warn(msg);\n }\n\n #resolveInitial(): Language {\n // 1) localStorage (only 'vi'/'en' supported there) — luôn ưu tiên cao nhất\n try {\n const stored = localStorage.getItem(I18N_STORAGE_KEY) as Language | null;\n if (stored && SUPPORTED_LANGUAGES.includes(stored)) return stored;\n } catch { /* ignore */ }\n\n const configured = this.#config?.language;\n\n // 2) function — custom language provider (sync only)\n if (typeof configured === 'function') {\n this.#loadCustom(configured);\n return 'vi'; // language() vẫn báo 'vi' trong custom mode; messages() ưu tiên #customMessages\n }\n\n // 3) string — built-in lang\n if (configured && SUPPORTED_LANGUAGES.includes(configured as Language)) return configured as Language;\n\n // 4) default\n return 'vi';\n }\n\n #loadCustom(fn: () => Record<string, string>): void {\n try {\n const catalog = fn();\n this.#customMessages.set(catalog);\n } catch (err) {\n console.warn('[I18n] Custom language fn threw:', err);\n }\n }\n}\n","import { inject, Pipe, PipeTransform } from '@angular/core';\r\nimport { I18nService } from './i18n.service';\r\nimport { I18nParams } from './i18n.types';\r\n\r\n@Pipe({ name: 'translate', standalone: true })\r\nexport class TranslatePipe implements PipeTransform {\r\n readonly #i18n = inject(I18nService);\r\n\r\n transform(key: string, params?: I18nParams): string {\r\n return this.#i18n.t(key, params);\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}