@cyberskill/design 1.1.1 → 1.3.8

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 (481) hide show
  1. package/DESIGN.md +28 -5
  2. package/README.md +23 -22
  3. package/SKILL.md +7 -7
  4. package/THIRD-PARTY-NOTICES.md +35 -0
  5. package/VERSION +1 -1
  6. package/_ds_bundle.js +1495 -1733
  7. package/_ds_manifest.json +1 -1
  8. package/_esm/cs.mjs +18 -4
  9. package/_esm/react.d.ts +2 -0
  10. package/_esm/react.mjs +7 -1
  11. package/_vendor/NOTICE.md +16 -0
  12. package/_vendor/babel/README.md +7 -0
  13. package/_vendor/babel/babel.min.js +4 -0
  14. package/_vendor/react/README.md +3 -0
  15. package/_vendor/react/react-dom.production.min.js +1 -0
  16. package/_vendor/react/react.production.min.js +1 -0
  17. package/assets/aurora-hoa.webp +0 -0
  18. package/assets/aurora-kim.webp +0 -0
  19. package/assets/aurora-moc.webp +0 -0
  20. package/assets/aurora-tho.webp +0 -0
  21. package/assets/aurora-thuy.webp +0 -0
  22. package/base/a11y.css +18 -0
  23. package/base/ai.css +9 -4
  24. package/base/collections.css +18 -7
  25. package/base/components.css +16 -4
  26. package/base/controls.css +116 -66
  27. package/base/data.css +4 -4
  28. package/base/feedback.css +14 -2
  29. package/base/forms.css +10 -4
  30. package/base/glass.css +7 -1
  31. package/base/interaction.css +6 -2
  32. package/base/navigation.css +9 -3
  33. package/base/reset.css +7 -1
  34. package/base/responsive.css +38 -12
  35. package/base/shell.css +15 -3
  36. package/components/_i18n/i18n.js +41 -4
  37. package/components/_i18n/strings.js +89 -22
  38. package/components/ai/ChatMessage.d.ts +2 -0
  39. package/components/ai/ChatMessage.jsx +8 -4
  40. package/components/ai/ConfidenceMeter.d.ts +2 -0
  41. package/components/ai/ConfidenceMeter.jsx +8 -6
  42. package/components/ai/HumanReviewGate.d.ts +2 -0
  43. package/components/ai/PromptInput.d.ts +2 -0
  44. package/components/ai/TypingIndicator.d.ts +2 -0
  45. package/components/ai/ai-conversation.card.html +3 -3
  46. package/components/ai/ai-lumi.card.html +3 -3
  47. package/components/ai/ai.card.html +3 -3
  48. package/components/brand/brand.card.html +3 -3
  49. package/components/button/buttons.card.html +3 -3
  50. package/components/data/Image.jsx +18 -2
  51. package/components/data/Sortable.d.ts +5 -1
  52. package/components/data/Sortable.jsx +42 -9
  53. package/components/data/Sortable.prompt.md +4 -2
  54. package/components/data/Terminal.jsx +3 -2
  55. package/components/data/Tooltip.d.ts +2 -0
  56. package/components/data/Tooltip.jsx +6 -3
  57. package/components/data/Tree.d.ts +2 -1
  58. package/components/data/Tree.jsx +137 -16
  59. package/components/data/Tree.prompt.md +1 -1
  60. package/components/data/Watermark.jsx +11 -3
  61. package/components/data/collections.card.html +3 -3
  62. package/components/data/data.card.html +3 -3
  63. package/components/datatable/DataGrid.jsx +10 -1
  64. package/components/datatable/DataTable.d.ts +24 -1
  65. package/components/datatable/DataTable.jsx +78 -5
  66. package/components/datatable/DataTable.prompt.md +2 -1
  67. package/components/datatable/datatable.card.html +20 -16
  68. package/components/dialog/Dialog.jsx +13 -45
  69. package/components/dialog/dialog.card.html +3 -3
  70. package/components/feedback/Alert.d.ts +2 -0
  71. package/components/feedback/Alert.jsx +8 -2
  72. package/components/feedback/EmptyState.d.ts +2 -0
  73. package/components/feedback/EmptyState.jsx +6 -3
  74. package/components/feedback/ProgressBar.d.ts +2 -0
  75. package/components/feedback/ProgressBar.jsx +9 -4
  76. package/components/feedback/Toast.jsx +15 -1
  77. package/components/feedback/Toast.prompt.md +2 -1
  78. package/components/feedback/feedback-2.card.html +3 -3
  79. package/components/feedback/feedback.card.html +3 -3
  80. package/components/forms/Cascader.jsx +76 -8
  81. package/components/forms/Editor.jsx +37 -2
  82. package/components/forms/FileUpload.d.ts +2 -0
  83. package/components/forms/FileUpload.jsx +22 -8
  84. package/components/forms/Form.d.ts +3 -1
  85. package/components/forms/Form.jsx +9 -1
  86. package/components/forms/Form.prompt.md +1 -1
  87. package/components/forms/Mentions.d.ts +1 -1
  88. package/components/forms/Mentions.jsx +59 -7
  89. package/components/forms/Mentions.prompt.md +3 -1
  90. package/components/forms/Rating.d.ts +3 -2
  91. package/components/forms/Rating.jsx +34 -3
  92. package/components/forms/Rating.prompt.md +1 -1
  93. package/components/forms/Select.d.ts +2 -0
  94. package/components/forms/Select.jsx +6 -2
  95. package/components/forms/Slider.d.ts +2 -0
  96. package/components/forms/Slider.jsx +5 -2
  97. package/components/forms/Switch.d.ts +2 -0
  98. package/components/forms/Switch.jsx +15 -3
  99. package/components/forms/TimePicker.jsx +3 -1
  100. package/components/forms/Toggle.d.ts +2 -0
  101. package/components/forms/Toggle.jsx +14 -2
  102. package/components/forms/forms-2.card.html +3 -3
  103. package/components/forms/forms.card.html +3 -3
  104. package/components/icon/Icon.d.ts +1 -1
  105. package/components/icon/Icon.jsx +1 -0
  106. package/components/icon/Icon.prompt.md +1 -1
  107. package/components/icon/icon.card.html +3 -3
  108. package/components/logo/logo.card.html +3 -3
  109. package/components/navigation/CommandPalette.d.ts +2 -0
  110. package/components/navigation/CommandPalette.jsx +22 -7
  111. package/components/navigation/Menu.d.ts +2 -0
  112. package/components/navigation/Menu.jsx +60 -6
  113. package/components/navigation/Steps.d.ts +2 -0
  114. package/components/navigation/Steps.jsx +6 -3
  115. package/components/navigation/Tabs.d.ts +2 -0
  116. package/components/navigation/Tabs.jsx +6 -3
  117. package/components/navigation/Toolbar.d.ts +3 -2
  118. package/components/navigation/Toolbar.jsx +119 -12
  119. package/components/navigation/Toolbar.prompt.md +1 -1
  120. package/components/navigation/navigation.card.html +3 -3
  121. package/components/navigation/shell.card.html +3 -3
  122. package/components/overlays/AlertDialog.jsx +19 -49
  123. package/components/overlays/ContextMenu.d.ts +2 -0
  124. package/components/overlays/ContextMenu.jsx +6 -3
  125. package/components/overlays/Drawer.d.ts +2 -0
  126. package/components/overlays/Drawer.jsx +24 -20
  127. package/components/overlays/OverlayManager.d.ts +40 -0
  128. package/components/overlays/OverlayManager.jsx +214 -0
  129. package/components/overlays/OverlayManager.prompt.md +12 -0
  130. package/components/overlays/Tour.jsx +14 -7
  131. package/components/overlays/alertdialog.card.html +3 -3
  132. package/components/overlays/overlays.card.html +3 -3
  133. package/components/textfield/textfield.card.html +3 -3
  134. package/dist/styles.min.css +2252 -0
  135. package/docs/benchmark-rubric.md +1 -1
  136. package/docs/ci-cd.md +19 -12
  137. package/docs/consumer-grant.md +3 -0
  138. package/docs/consuming.md +13 -13
  139. package/docs/contrast-report.md +79 -1
  140. package/docs/conventions.md +21 -8
  141. package/docs/decisions.md +45 -7
  142. package/docs/deploy.md +17 -6
  143. package/docs/design-styles.md +2 -2
  144. package/docs/quality-gates.md +35 -15
  145. package/docs/release-notes.md +2 -2
  146. package/docs/release-runbook.md +78 -0
  147. package/docs/sync.md +2 -2
  148. package/docs/vi/benchmark-rubric.md +1 -1
  149. package/docs/vi/ci-cd.md +17 -12
  150. package/docs/vi/consumer-grant.md +3 -0
  151. package/docs/vi/consuming.md +13 -13
  152. package/docs/vi/contrast-report.md +79 -1
  153. package/docs/vi/conventions.md +20 -7
  154. package/docs/vi/decisions.md +43 -6
  155. package/docs/vi/deploy.md +17 -6
  156. package/docs/vi/quality-gates.md +34 -15
  157. package/docs/vi/release-notes.md +2 -2
  158. package/docs/vi/release-runbook.md +78 -0
  159. package/docs/vi/sync.md +2 -2
  160. package/docs/viewer.html +2 -2
  161. package/fonts/OFL.txt +98 -0
  162. package/guidelines/atomic-view.html +13 -9
  163. package/guidelines/brand-imagery.html +1 -1
  164. package/guidelines/elements-variants.html +5 -5
  165. package/guidelines/spacing-breakpoints.html +2 -1
  166. package/guidelines/surfaces-glass.html +1 -1
  167. package/llms.txt +5 -5
  168. package/package.json +38 -10
  169. package/templates/_ds-base.canonical.js +55 -0
  170. package/templates/ai-cluster-demo.html +2 -2
  171. package/templates/app-shell/AppShell.dc.html +7 -5
  172. package/templates/app-shell/content-schema.json +7 -0
  173. package/templates/app-shell/ds-base.js +33 -1
  174. package/templates/app-shell/support.js +13 -20
  175. package/templates/article/Article.dc.html +7 -3
  176. package/templates/article/content-schema.json +7 -0
  177. package/templates/article/ds-base.js +33 -1
  178. package/templates/article/support.js +13 -20
  179. package/templates/auth/Auth.dc.html +33 -12
  180. package/templates/auth/content-schema.json +37 -0
  181. package/templates/auth/ds-base.js +33 -1
  182. package/templates/auth/support.js +13 -20
  183. package/templates/bod-deck/BodDeck.dc.html +11 -10
  184. package/templates/bod-deck/ds-base.js +33 -1
  185. package/templates/bod-deck/support.js +13 -20
  186. package/templates/bod-investor-update/BodInvestorUpdate.dc.html +4 -3
  187. package/templates/bod-investor-update/ds-base.js +33 -1
  188. package/templates/bod-investor-update/support.js +13 -20
  189. package/templates/bod-memo/BodMemo.dc.html +6 -5
  190. package/templates/bod-memo/ds-base.js +33 -1
  191. package/templates/bod-memo/support.js +13 -20
  192. package/templates/bod-minutes/BodMinutes.dc.html +2 -1
  193. package/templates/bod-minutes/ds-base.js +33 -1
  194. package/templates/bod-minutes/support.js +13 -20
  195. package/templates/bod-report/BodReport.dc.html +3 -2
  196. package/templates/bod-report/ds-base.js +33 -1
  197. package/templates/bod-report/support.js +13 -20
  198. package/templates/bod-resolution/BodResolution.dc.html +5 -4
  199. package/templates/bod-resolution/ds-base.js +33 -1
  200. package/templates/bod-resolution/support.js +13 -20
  201. package/templates/culture-event-invite/CultureEventInvite.dc.html +3 -2
  202. package/templates/culture-event-invite/ds-base.js +33 -1
  203. package/templates/culture-event-invite/support.js +13 -20
  204. package/templates/dashboard/Dashboard.dc.html +10 -6
  205. package/templates/dashboard/content-schema.json +7 -0
  206. package/templates/dashboard/ds-base.js +33 -1
  207. package/templates/dashboard/support.js +13 -20
  208. package/templates/delivery-change-note/DeliveryChangeNote.dc.html +4 -3
  209. package/templates/delivery-change-note/ds-base.js +33 -1
  210. package/templates/delivery-change-note/support.js +13 -20
  211. package/templates/delivery-kickoff/DeliveryKickoff.dc.html +3 -2
  212. package/templates/delivery-kickoff/ds-base.js +33 -1
  213. package/templates/delivery-kickoff/support.js +13 -20
  214. package/templates/delivery-qbr-deck/DeliveryQbrDeck.dc.html +6 -5
  215. package/templates/delivery-qbr-deck/ds-base.js +33 -1
  216. package/templates/delivery-qbr-deck/support.js +13 -20
  217. package/templates/delivery-runbook/DeliveryRunbook.dc.html +5 -4
  218. package/templates/delivery-runbook/ds-base.js +33 -1
  219. package/templates/delivery-runbook/support.js +13 -20
  220. package/templates/delivery-status-email/DeliveryStatusEmail.dc.html +3 -2
  221. package/templates/delivery-status-email/ds-base.js +33 -1
  222. package/templates/delivery-status-email/support.js +13 -20
  223. package/templates/doc-style-guide/DocStyleGuide.dc.html +67 -64
  224. package/templates/doc-style-guide/ds-base.js +33 -1
  225. package/templates/doc-style-guide/support.js +13 -20
  226. package/templates/doc-suite-index/DocSuiteIndex.dc.html +46 -45
  227. package/templates/doc-suite-index/ds-base.js +33 -1
  228. package/templates/doc-suite-index/support.js +13 -20
  229. package/templates/doc-templates/DocTemplates.dc.html +42 -41
  230. package/templates/doc-templates/ds-base.js +33 -1
  231. package/templates/doc-templates/support.js +13 -20
  232. package/templates/email/Email.dc.html +3 -2
  233. package/templates/email/ds-base.js +33 -1
  234. package/templates/email/support.js +13 -20
  235. package/templates/email-safe/email-announcement.html +2 -2
  236. package/templates/email-safe/email-dunning.html +2 -2
  237. package/templates/email-safe/email-investor.html +2 -2
  238. package/templates/email-safe/email-launch.html +2 -2
  239. package/templates/email-safe/email-newsletter.html +2 -2
  240. package/templates/email-safe/email-status.html +2 -2
  241. package/templates/email-safe/email-transactional.html +2 -2
  242. package/templates/finance-dunning-email/FinanceDunningEmail.dc.html +6 -5
  243. package/templates/finance-dunning-email/ds-base.js +33 -1
  244. package/templates/finance-dunning-email/support.js +13 -20
  245. package/templates/finance-expense-report/FinanceExpenseReport.dc.html +4 -3
  246. package/templates/finance-expense-report/ds-base.js +33 -1
  247. package/templates/finance-expense-report/support.js +13 -20
  248. package/templates/finance-invoice/FinanceInvoice.dc.html +6 -5
  249. package/templates/finance-invoice/ds-base.js +33 -1
  250. package/templates/finance-invoice/support.js +13 -20
  251. package/templates/finance-quote/FinanceQuote.dc.html +6 -5
  252. package/templates/finance-quote/ds-base.js +33 -1
  253. package/templates/finance-quote/support.js +13 -20
  254. package/templates/hr-announcement/HrAnnouncement.dc.html +5 -4
  255. package/templates/hr-announcement/ds-base.js +33 -1
  256. package/templates/hr-announcement/support.js +13 -20
  257. package/templates/hr-interview-kit/HrInterviewKit.dc.html +5 -4
  258. package/templates/hr-interview-kit/ds-base.js +33 -1
  259. package/templates/hr-interview-kit/support.js +13 -20
  260. package/templates/hr-offboarding/HrOffboarding.dc.html +2 -1
  261. package/templates/hr-offboarding/ds-base.js +33 -1
  262. package/templates/hr-offboarding/support.js +13 -20
  263. package/templates/hr-performance-review/HrPerformanceReview.dc.html +2 -1
  264. package/templates/hr-performance-review/ds-base.js +33 -1
  265. package/templates/hr-performance-review/support.js +13 -20
  266. package/templates/hr-pip/HrPip.dc.html +2 -1
  267. package/templates/hr-pip/ds-base.js +33 -1
  268. package/templates/hr-pip/support.js +13 -20
  269. package/templates/kitchen-sink.html +9 -4
  270. package/templates/legal-msa/LegalMsa.dc.html +2 -1
  271. package/templates/legal-msa/ds-base.js +33 -1
  272. package/templates/legal-msa/support.js +13 -20
  273. package/templates/legal-sow/LegalSow.dc.html +2 -1
  274. package/templates/legal-sow/ds-base.js +33 -1
  275. package/templates/legal-sow/support.js +13 -20
  276. package/templates/marketing-campaign-brief/MarketingCampaignBrief.dc.html +3 -2
  277. package/templates/marketing-campaign-brief/ds-base.js +33 -1
  278. package/templates/marketing-campaign-brief/support.js +13 -20
  279. package/templates/marketing-case-study/MarketingCaseStudy.dc.html +6 -5
  280. package/templates/marketing-case-study/ds-base.js +33 -1
  281. package/templates/marketing-case-study/support.js +13 -20
  282. package/templates/marketing-launch/MarketingLaunch.dc.html +6 -5
  283. package/templates/marketing-launch/ds-base.js +33 -1
  284. package/templates/marketing-launch/support.js +13 -20
  285. package/templates/marketing-newsletter/MarketingNewsletter.dc.html +13 -12
  286. package/templates/marketing-newsletter/ds-base.js +33 -1
  287. package/templates/marketing-newsletter/support.js +13 -20
  288. package/templates/marketing-page/MarketingPage.dc.html +19 -14
  289. package/templates/marketing-page/content-schema.json +1 -0
  290. package/templates/marketing-page/ds-base.js +33 -1
  291. package/templates/marketing-page/support.js +13 -20
  292. package/templates/marketing-press-release/MarketingPressRelease.dc.html +2 -1
  293. package/templates/marketing-press-release/ds-base.js +33 -1
  294. package/templates/marketing-press-release/support.js +13 -20
  295. package/templates/marketing-social-kit/MarketingSocialKit.dc.html +5 -4
  296. package/templates/marketing-social-kit/ds-base.js +33 -1
  297. package/templates/marketing-social-kit/support.js +13 -20
  298. package/templates/sales-one-pager/SalesOnePager.dc.html +5 -4
  299. package/templates/sales-one-pager/ds-base.js +33 -1
  300. package/templates/sales-one-pager/support.js +13 -20
  301. package/templates/sales-proposal-deck/SalesProposalDeck.dc.html +7 -6
  302. package/templates/sales-proposal-deck/ds-base.js +33 -1
  303. package/templates/sales-proposal-deck/support.js +13 -20
  304. package/templates/settings/Settings.dc.html +7 -3
  305. package/templates/settings/content-schema.json +7 -0
  306. package/templates/settings/ds-base.js +33 -1
  307. package/templates/settings/support.js +13 -20
  308. package/templates/slide-deck/SlideDeck.dc.html +5 -4
  309. package/templates/slide-deck/ds-base.js +33 -1
  310. package/templates/slide-deck/support.js +13 -20
  311. package/templates/team-meeting-agenda/TeamMeetingAgenda.dc.html +2 -1
  312. package/templates/team-meeting-agenda/ds-base.js +33 -1
  313. package/templates/team-meeting-agenda/support.js +13 -20
  314. package/templates/tech-incident-report/TechIncidentReport.dc.html +3 -2
  315. package/templates/tech-incident-report/ds-base.js +33 -1
  316. package/templates/tech-incident-report/support.js +13 -20
  317. package/templates/tech-release-notes/TechReleaseNotes.dc.html +6 -5
  318. package/templates/tech-release-notes/ds-base.js +33 -1
  319. package/templates/tech-release-notes/support.js +13 -20
  320. package/templates/tech-retro/TechRetro.dc.html +4 -3
  321. package/templates/tech-retro/ds-base.js +33 -1
  322. package/templates/tech-retro/support.js +13 -20
  323. package/templates/tech-rfc/TechRfc.dc.html +3 -2
  324. package/templates/tech-rfc/ds-base.js +33 -1
  325. package/templates/tech-rfc/support.js +13 -20
  326. package/templates/vn-appointment-transfer/VnAppointmentTransfer.dc.html +36 -35
  327. package/templates/vn-appointment-transfer/ds-base.js +33 -1
  328. package/templates/vn-appointment-transfer/support.js +13 -20
  329. package/templates/vn-certificate-of-employment/VnCertificateOfEmployment.dc.html +27 -26
  330. package/templates/vn-certificate-of-employment/ds-base.js +33 -1
  331. package/templates/vn-certificate-of-employment/support.js +13 -20
  332. package/templates/vn-code-of-conduct/VnCodeOfConduct.dc.html +44 -43
  333. package/templates/vn-code-of-conduct/ds-base.js +33 -1
  334. package/templates/vn-code-of-conduct/support.js +13 -20
  335. package/templates/vn-compensation-regulation/VnCompensationRegulation.dc.html +53 -52
  336. package/templates/vn-compensation-regulation/ds-base.js +33 -1
  337. package/templates/vn-compensation-regulation/support.js +13 -20
  338. package/templates/vn-contract-amendment/VnContractAmendment.dc.html +41 -40
  339. package/templates/vn-contract-amendment/ds-base.js +33 -1
  340. package/templates/vn-contract-amendment/support.js +13 -20
  341. package/templates/vn-contractor-agreement/VnContractorAgreement.dc.html +50 -49
  342. package/templates/vn-contractor-agreement/ds-base.js +33 -1
  343. package/templates/vn-contractor-agreement/support.js +13 -20
  344. package/templates/vn-data-protection-policy/VnDataProtectionPolicy.dc.html +54 -53
  345. package/templates/vn-data-protection-policy/ds-base.js +33 -1
  346. package/templates/vn-data-protection-policy/support.js +13 -20
  347. package/templates/vn-disciplinary-case-file/VnDisciplinaryCaseFile.dc.html +72 -71
  348. package/templates/vn-disciplinary-case-file/ds-base.js +33 -1
  349. package/templates/vn-disciplinary-case-file/support.js +13 -20
  350. package/templates/vn-disciplinary-schedule/VnDisciplinarySchedule.dc.html +21 -20
  351. package/templates/vn-disciplinary-schedule/ds-base.js +33 -1
  352. package/templates/vn-disciplinary-schedule/support.js +13 -20
  353. package/templates/vn-employee-request/VnEmployeeRequest.dc.html +54 -53
  354. package/templates/vn-employee-request/ds-base.js +33 -1
  355. package/templates/vn-employee-request/support.js +13 -20
  356. package/templates/vn-exit-handover/VnExitHandover.dc.html +122 -121
  357. package/templates/vn-exit-handover/ds-base.js +33 -1
  358. package/templates/vn-exit-handover/support.js +13 -20
  359. package/templates/vn-foreign-employee-pack/VnForeignEmployeePack.dc.html +31 -30
  360. package/templates/vn-foreign-employee-pack/ds-base.js +33 -1
  361. package/templates/vn-foreign-employee-pack/support.js +13 -20
  362. package/templates/vn-grassroots-democracy/VnGrassrootsDemocracy.dc.html +54 -53
  363. package/templates/vn-grassroots-democracy/ds-base.js +33 -1
  364. package/templates/vn-grassroots-democracy/support.js +13 -20
  365. package/templates/vn-infosec-policy/VnInfosecPolicy.dc.html +50 -49
  366. package/templates/vn-infosec-policy/ds-base.js +33 -1
  367. package/templates/vn-infosec-policy/support.js +13 -20
  368. package/templates/vn-internal-labor-regulations/VnInternalLaborRegulations.dc.html +84 -83
  369. package/templates/vn-internal-labor-regulations/ds-base.js +33 -1
  370. package/templates/vn-internal-labor-regulations/support.js +13 -20
  371. package/templates/vn-internship-agreement/VnInternshipAgreement.dc.html +44 -43
  372. package/templates/vn-internship-agreement/ds-base.js +33 -1
  373. package/templates/vn-internship-agreement/support.js +13 -20
  374. package/templates/vn-job-description/VnJobDescription.dc.html +28 -27
  375. package/templates/vn-job-description/ds-base.js +33 -1
  376. package/templates/vn-job-description/support.js +13 -20
  377. package/templates/vn-labor-contract/VnLaborContract.dc.html +109 -108
  378. package/templates/vn-labor-contract/ds-base.js +33 -1
  379. package/templates/vn-labor-contract/support.js +13 -20
  380. package/templates/vn-labour-management-book/VnLabourManagementBook.dc.html +32 -31
  381. package/templates/vn-labour-management-book/ds-base.js +33 -1
  382. package/templates/vn-labour-management-book/support.js +13 -20
  383. package/templates/vn-mutual-nda/VnMutualNda.dc.html +45 -44
  384. package/templates/vn-mutual-nda/ds-base.js +33 -1
  385. package/templates/vn-mutual-nda/support.js +13 -20
  386. package/templates/vn-ndnca-ip/VnNdncaIp.dc.html +73 -72
  387. package/templates/vn-ndnca-ip/ds-base.js +33 -1
  388. package/templates/vn-ndnca-ip/support.js +13 -20
  389. package/templates/vn-offer-letter/VnOfferLetter.dc.html +32 -31
  390. package/templates/vn-offer-letter/ds-base.js +33 -1
  391. package/templates/vn-offer-letter/support.js +13 -20
  392. package/templates/vn-onboarding-checklist/VnOnboardingChecklist.dc.html +16 -15
  393. package/templates/vn-onboarding-checklist/ds-base.js +33 -1
  394. package/templates/vn-onboarding-checklist/support.js +13 -20
  395. package/templates/vn-pdpl-consent/VnPdplConsent.dc.html +43 -42
  396. package/templates/vn-pdpl-consent/ds-base.js +33 -1
  397. package/templates/vn-pdpl-consent/support.js +13 -20
  398. package/templates/vn-performance-evaluation-regulation/VnPerformanceEvaluationRegulation.dc.html +65 -64
  399. package/templates/vn-performance-evaluation-regulation/ds-base.js +33 -1
  400. package/templates/vn-performance-evaluation-regulation/support.js +13 -20
  401. package/templates/vn-performance-review-form/VnPerformanceReviewForm.dc.html +49 -48
  402. package/templates/vn-performance-review-form/ds-base.js +33 -1
  403. package/templates/vn-performance-review-form/support.js +13 -20
  404. package/templates/vn-phantom-stock/VnPhantomStock.dc.html +41 -40
  405. package/templates/vn-phantom-stock/ds-base.js +33 -1
  406. package/templates/vn-phantom-stock/support.js +13 -20
  407. package/templates/vn-probation-contract/VnProbationContract.dc.html +56 -55
  408. package/templates/vn-probation-contract/ds-base.js +33 -1
  409. package/templates/vn-probation-contract/support.js +13 -20
  410. package/templates/vn-receipt-acknowledgement/VnReceiptAcknowledgement.dc.html +28 -27
  411. package/templates/vn-receipt-acknowledgement/ds-base.js +33 -1
  412. package/templates/vn-receipt-acknowledgement/support.js +13 -20
  413. package/templates/vn-remote-work-policy/VnRemoteWorkPolicy.dc.html +44 -43
  414. package/templates/vn-remote-work-policy/ds-base.js +33 -1
  415. package/templates/vn-remote-work-policy/support.js +13 -20
  416. package/templates/vn-resignation-letter/VnResignationLetter.dc.html +20 -19
  417. package/templates/vn-resignation-letter/ds-base.js +33 -1
  418. package/templates/vn-resignation-letter/support.js +13 -20
  419. package/templates/vn-salary-scale/VnSalaryScale.dc.html +39 -38
  420. package/templates/vn-salary-scale/ds-base.js +33 -1
  421. package/templates/vn-salary-scale/support.js +13 -20
  422. package/templates/vn-sow-appendix/VnSowAppendix.dc.html +21 -20
  423. package/templates/vn-sow-appendix/ds-base.js +33 -1
  424. package/templates/vn-sow-appendix/support.js +13 -20
  425. package/templates/vn-termination-decision/VnTerminationDecision.dc.html +25 -24
  426. package/templates/vn-termination-decision/ds-base.js +33 -1
  427. package/templates/vn-termination-decision/support.js +13 -20
  428. package/templates/vn-total-rewards-appendix/VnTotalRewardsAppendix.dc.html +63 -62
  429. package/templates/vn-total-rewards-appendix/ds-base.js +33 -1
  430. package/templates/vn-total-rewards-appendix/support.js +13 -20
  431. package/templates/vn-training-commitment/VnTrainingCommitment.dc.html +39 -38
  432. package/templates/vn-training-commitment/ds-base.js +33 -1
  433. package/templates/vn-training-commitment/support.js +13 -20
  434. package/templates/vn-travel-expense-policy/VnTravelExpensePolicy.dc.html +50 -49
  435. package/templates/vn-travel-expense-policy/ds-base.js +33 -1
  436. package/templates/vn-travel-expense-policy/support.js +13 -20
  437. package/tokens/colors.css +19 -1
  438. package/tokens/component-tokens.css +1 -0
  439. package/tokens/element-seeds.json +2 -2
  440. package/tokens/elements.css +228 -21
  441. package/tokens/elevation.css +8 -2
  442. package/tokens/native/CSTokens.kt +37 -2
  443. package/tokens/native/CSTokens.swift +37 -2
  444. package/tokens/native/cs_tokens.dart +37 -2
  445. package/tokens/provenance.json +12 -12
  446. package/tokens/spacing.css +4 -1
  447. package/tokens/tokens.dtcg.json +129 -16
  448. package/tokens/tokens.js +59 -18
  449. package/tokens/tokens.json +58 -17
  450. package/tokens/typography.css +2 -0
  451. package/ui_kits/deck/index.html +4 -0
  452. package/ui_kits/status-hub/StatusHub.jsx +30 -4
  453. package/ui_kits/status-hub/index.html +3 -3
  454. package/ui_kits/status-hub/login.html +55 -9
  455. package/ui_kits/status-hub/project.html +4 -0
  456. package/ui_kits/status-hub/settings.html +35 -13
  457. package/ui_kits/status-hub/status.css +5 -1
  458. package/ui_kits/website/Website.jsx +25 -3
  459. package/ui_kits/website/careers.html +5 -1
  460. package/ui_kits/website/chat.html +5 -3
  461. package/ui_kits/website/index.html +3 -3
  462. package/ui_kits/website/site.css +3 -3
  463. package/ui_kits/website/work.html +5 -1
  464. package/assets/aurora-hoa.png +0 -0
  465. package/assets/aurora-kim.png +0 -0
  466. package/assets/aurora-moc.png +0 -0
  467. package/assets/aurora-thuy.png +0 -0
  468. package/docs/status/assets/favicon.svg +0 -5
  469. package/docs/status/assets/status-legacy.css +0 -399
  470. package/docs/status/assets/status-legacy.js +0 -505
  471. package/docs/status/assets/status.css +0 -644
  472. package/docs/status/assets/status.js +0 -1308
  473. package/docs/status/data/status-feed.json +0 -1
  474. package/docs/status/data/task/TASK-REL-001.js +0 -1
  475. package/docs/status/data/task/TASK-REL-002.js +0 -1
  476. package/docs/status/index.html +0 -42
  477. package/docs/status/roadmap.html +0 -4
  478. package/docs/status/status-legacy.html +0 -117
  479. package/docs/tasks/BACKLOG.md +0 -26
  480. package/docs/tasks/release/TASK-REL-001-launch-1-1-0/spec.md +0 -55
  481. package/docs/tasks/release/TASK-REL-002-republish-1-1-1/spec.md +0 -54
@@ -1,6 +1,7 @@
1
1
  <!DOCTYPE html>
2
- <html>
2
+ <html lang="en">
3
3
  <head>
4
+ <title>HR Suite · Quy chế Đánh giá Kết quả Công việc — Performance Evaluation Regulation · CyberSkill</title>
4
5
  <meta charset="utf-8">
5
6
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
7
  <meta name="omelette-owns-print" content="1">
@@ -13,110 +14,110 @@
13
14
  <script src="./ds-base.js"></script>
14
15
  <style>@page{size:A4;margin:23mm 20mm 20mm 20mm}@media print{html,body{background:#fff!important}.cs-desk{background:#fff!important;padding:0!important;min-height:0!important}.cs-sheet{box-shadow:none!important;border:none!important;max-width:none!important;border-radius:0!important;padding:0!important}.cs-avoid{break-inside:avoid}}</style>
15
16
  </helmet>
16
- <div lang="vi" data-cs-element="{{ elAttr }}" data-cs-variant="{{ vaAttr }}" class="cs-desk" style="background:#efe6d8;min-height:100vh;padding:40px 16px;font-family:var(--cs-font-family-ui);color:#1A1614">
17
+ <div lang="vi" data-cs-element="{{ elAttr }}" data-cs-variant="{{ vaAttr }}" class="cs-desk" style="background:#efe6d8;min-height:100vh;padding:40px 16px;font-family:var(--cs-font-family-ui);color:var(--cs-doc-ink)">
17
18
  <div class="cs-sheet" style="max-width:794px;margin:0 auto;background:#fff;border:1px solid var(--cs-color-border-default);border-radius:12px;box-shadow:var(--cs-shadow-md);padding:56px 60px;text-align:left">
18
19
  <div style="display:flex;align-items:center;gap:8px;font-size:10.5px;color:var(--cs-color-text-muted);padding-bottom:6px;border-bottom:1px solid var(--cs-color-border-default);margin-bottom:14px">
19
20
  <x-import component-from-global-scope="CyberSkillDS.Logo" size="18" hint-size="18px,18px"></x-import>
20
- <b style="color:var(--cs-color-brand-umber)">CyberSkill</b><span>· Quy chế Đánh giá Kết quả Công việc</span><span style="margin-left:auto;font-family:var(--cs-font-family-mono)">Số/No. <span style="background:#FDE68A;padding:0 3px">.....</span>/2026/QCĐG-CYBERSKILL</span>
21
+ <b style="color:var(--cs-color-brand-umber)">CyberSkill</b><span>· Quy chế Đánh giá Kết quả Công việc</span><span style="margin-left:auto;font-family:var(--cs-font-family-mono)">Số/No. <span style="background:var(--cs-doc-fill);padding:0 3px">.....</span>/2026/QCĐG-CYBERSKILL</span>
21
22
  </div>
22
23
  <div class="cs-avoid" style="display:grid;grid-template-columns:1.15fr 1fr;gap:20px;margin-bottom:18px">
23
- <div><div style="font-weight:800;font-size:11.5px;line-height:1.45">CÔNG TY CỔ PHẦN TƯ VẤN VÀ PHÁT TRIỂN GIẢI PHÁP PHẦN MỀM CYBERSKILL</div><div style="font-size:10px;color:#3F4C55;font-style:italic;line-height:1.45;margin-top:2px">CYBERSKILL SOFTWARE SOLUTIONS CONSULTANCY AND DEVELOPMENT JOINT STOCK COMPANY</div><div style="font-size:10.5px;margin-top:4px">Hiện Thực Hoá Ý Chí · <span style="color:#3F4C55;font-style:italic">Turn Your Will Into Real</span></div></div>
24
- <div style="text-align:center"><div style="font-weight:800;font-size:11.5px;line-height:1.5">CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM</div><div style="font-weight:700;font-size:11px">Độc lập – Tự do – Hạnh phúc</div><div style="letter-spacing:0.1em;font-size:10px;margin:1px 0">———————————</div><div style="font-size:9.5px;color:#3F4C55;font-style:italic;line-height:1.4">The Socialist Republic of Vietnam · Independence – Freedom – Happiness</div></div>
24
+ <div><div style="font-weight:800;font-size:11.5px;line-height:1.45">CÔNG TY CỔ PHẦN TƯ VẤN VÀ PHÁT TRIỂN GIẢI PHÁP PHẦN MỀM CYBERSKILL</div><div style="font-size:10px;color:var(--cs-doc-slate);font-style:italic;line-height:1.45;margin-top:2px">CYBERSKILL SOFTWARE SOLUTIONS CONSULTANCY AND DEVELOPMENT JOINT STOCK COMPANY</div><div style="font-size:10.5px;margin-top:4px">Hiện Thực Hoá Ý Chí · <span style="color:var(--cs-doc-slate);font-style:italic">Turn Your Will Into Real</span></div></div>
25
+ <div style="text-align:center"><div style="font-weight:800;font-size:11.5px;line-height:1.5">CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM</div><div style="font-weight:700;font-size:11px">Độc lập – Tự do – Hạnh phúc</div><div style="letter-spacing:0.1em;font-size:10px;margin:1px 0">———————————</div><div style="font-size:9.5px;color:var(--cs-doc-slate);font-style:italic;line-height:1.4">The Socialist Republic of Vietnam · Independence – Freedom – Happiness</div></div>
25
26
  </div>
26
27
  <div class="cs-avoid" style="text-align:center;margin-bottom:14px">
27
28
  <h1 style="font-size:23px;font-weight:800;color:var(--cs-color-brand-umber);letter-spacing:-0.01em;margin:0 0 3px;line-height:1.25">QUY CHẾ ĐÁNH GIÁ MỨC ĐỘ HOÀN THÀNH CÔNG VIỆC</h1>
28
- <div style="font-size:14px;color:#3F4C55;font-style:italic">Performance Evaluation Regulation</div>
29
- <div style="font-size:12.5px;margin-top:8px">Số / No.: <span style="background:#FDE68A;padding:0 3px">......</span>/2026/QCĐG-CYBERSKILL</div>
30
- <div style="font-size:12px;margin-top:2px">Phiên bản / Version 1.0 · Hiệu lực từ / Effective from: <span style="background:#FDE68A;padding:0 3px">......</span> / <span style="background:#FDE68A;padding:0 3px">......</span> / <span style="background:#FDE68A;padding:0 3px">......</span></div>
29
+ <div style="font-size:14px;color:var(--cs-doc-slate);font-style:italic">Performance Evaluation Regulation</div>
30
+ <div style="font-size:12.5px;margin-top:8px">Số / No.: <span style="background:var(--cs-doc-fill);padding:0 3px">......</span>/2026/QCĐG-CYBERSKILL</div>
31
+ <div style="font-size:12px;margin-top:2px">Phiên bản / Version 1.0 · Hiệu lực từ / Effective from: <span style="background:var(--cs-doc-fill);padding:0 3px">......</span> / <span style="background:var(--cs-doc-fill);padding:0 3px">......</span> / <span style="background:var(--cs-doc-fill);padding:0 3px">......</span></div>
31
32
  <div style="color:var(--cs-accent);font-size:13px;letter-spacing:0.5em;margin-top:10px">◆ ◆ ◆</div>
32
33
  </div>
33
34
  <p style="font-size:13.5px;line-height:1.5;margin:0 0 1px">Căn cứ Bộ luật Lao động số 45/2019/QH14, đặc biệt điểm a khoản 1 Điều 36; căn cứ Nghị định số 145/2020/NĐ-CP; sau khi tham khảo ý kiến của tổ chức đại diện người lao động tại cơ sở, Công ty ban hành Quy chế đánh giá mức độ hoàn thành công việc như sau:</p>
34
- <p style="font-size:12px;line-height:1.4;color:#3F4C55;font-style:italic;margin:0 0 8px">Pursuant to the Labor Code No. 45/2019/QH14, in particular point (a) of Article 36.1; pursuant to Decree No. 145/2020/ND-CP; and having consulted the grassroots employee representative organization, the Company issues this Performance Evaluation Regulation:</p>
35
+ <p style="font-size:12px;line-height:1.4;color:var(--cs-doc-slate);font-style:italic;margin:0 0 8px">Pursuant to the Labor Code No. 45/2019/QH14, in particular point (a) of Article 36.1; pursuant to Decree No. 145/2020/ND-CP; and having consulted the grassroots employee representative organization, the Company issues this Performance Evaluation Regulation:</p>
35
36
  <div class="cs-avoid" style="background:#FBF4E9;border:1px solid var(--cs-color-border-default);border-radius:8px;padding:9px 13px;margin-bottom:16px">
36
37
  <p style="font-size:12px;line-height:1.45;margin:0 0 1px"><b>Ghi chú soạn thảo:</b> Quy chế này là căn cứ pháp lý bắt buộc để Công ty có thể đơn phương chấm dứt hợp đồng lao động vì lý do người lao động thường xuyên không hoàn thành công việc. Không có Quy chế này, Công ty không được viện dẫn căn cứ đó.</p>
37
- <p style="font-size:11px;line-height:1.4;color:#3F4C55;font-style:italic;margin:0"><b>Drafting note:</b> This Regulation is the mandatory legal basis for the Company to terminate a labor contract unilaterally on the ground of repeated failure to perform. Without it, the Company cannot rely on that ground.</p>
38
+ <p style="font-size:11px;line-height:1.4;color:var(--cs-doc-slate);font-style:italic;margin:0"><b>Drafting note:</b> This Regulation is the mandatory legal basis for the Company to terminate a labor contract unilaterally on the ground of repeated failure to perform. Without it, the Company cannot rely on that ground.</p>
38
39
  </div>
39
40
 
40
41
  <div style="display:grid;gap:13px">
41
- <div class="cs-avoid"><h2 style="font-size:12.5px;font-weight:800;color:var(--cs-color-brand-umber);margin:0 0 5px">ĐIỀU 1 · PHẠM VI VÀ MỤC ĐÍCH <span style="font-weight:400;font-size:11px;color:#3F4C55;font-style:italic">Article 1 · Scope and purpose</span></h2>
42
- <p style="font-size:13px;line-height:1.5;margin:0 0 1px">1.1. Quy chế áp dụng cho toàn bộ người lao động của Công ty, bao gồm cả người đang trong thời gian thử việc (với chu kỳ đánh giá riêng tại Điều 4.4).</p><p style="font-size:12px;line-height:1.4;color:#3F4C55;font-style:italic;margin:0 0 4px">1.1. This Regulation applies to every employee of the Company, including those on probation (with the separate cycle in Article 4.4).</p>
43
- <p style="font-size:13px;line-height:1.5;margin:0 0 1px">1.2. Mục đích: (a) làm cơ sở xét nâng lương, thưởng và bổ nhiệm; (b) xác định khách quan mức độ hoàn thành công việc; và (c) làm căn cứ áp dụng điểm a khoản 1 Điều 36 Bộ luật Lao động khi cần thiết.</p><p style="font-size:12px;line-height:1.4;color:#3F4C55;font-style:italic;margin:0">1.2. Purpose: (a) to found decisions on pay rises, bonuses and promotion; (b) to determine objectively whether work is being completed; and (c) to found the application of Article 36.1(a) of the Labor Code where necessary.</p></div>
42
+ <div class="cs-avoid"><h2 style="font-size:12.5px;font-weight:800;color:var(--cs-color-brand-umber);margin:0 0 5px">ĐIỀU 1 · PHẠM VI VÀ MỤC ĐÍCH <span style="font-weight:400;font-size:11px;color:var(--cs-doc-slate);font-style:italic">Article 1 · Scope and purpose</span></h2>
43
+ <p style="font-size:13px;line-height:1.5;margin:0 0 1px">1.1. Quy chế áp dụng cho toàn bộ người lao động của Công ty, bao gồm cả người đang trong thời gian thử việc (với chu kỳ đánh giá riêng tại Điều 4.4).</p><p style="font-size:12px;line-height:1.4;color:var(--cs-doc-slate);font-style:italic;margin:0 0 4px">1.1. This Regulation applies to every employee of the Company, including those on probation (with the separate cycle in Article 4.4).</p>
44
+ <p style="font-size:13px;line-height:1.5;margin:0 0 1px">1.2. Mục đích: (a) làm cơ sở xét nâng lương, thưởng và bổ nhiệm; (b) xác định khách quan mức độ hoàn thành công việc; và (c) làm căn cứ áp dụng điểm a khoản 1 Điều 36 Bộ luật Lao động khi cần thiết.</p><p style="font-size:12px;line-height:1.4;color:var(--cs-doc-slate);font-style:italic;margin:0">1.2. Purpose: (a) to found decisions on pay rises, bonuses and promotion; (b) to determine objectively whether work is being completed; and (c) to found the application of Article 36.1(a) of the Labor Code where necessary.</p></div>
44
45
 
45
- <div class="cs-avoid"><h2 style="font-size:12.5px;font-weight:800;color:var(--cs-color-brand-umber);margin:0 0 6px">ĐIỀU 2 · THANG ĐIỂM ĐÁNH GIÁ <span style="font-weight:400;font-size:11px;color:#3F4C55;font-style:italic">Article 2 · The rating scale</span></h2>
46
+ <div class="cs-avoid"><h2 style="font-size:12.5px;font-weight:800;color:var(--cs-color-brand-umber);margin:0 0 6px">ĐIỀU 2 · THANG ĐIỂM ĐÁNH GIÁ <span style="font-weight:400;font-size:11px;color:var(--cs-doc-slate);font-style:italic">Article 2 · The rating scale</span></h2>
46
47
  <table style="width:100%;border-collapse:collapse;font-size:12px;margin-bottom:6px">
47
- <thead><tr style="background:var(--cs-color-brand-umber);color:#fff"><th style="text-align:left;padding:5px 9px;font-size:10px;width:48px">Mức <i style="font-weight:400">Rating</i></th><th style="text-align:left;padding:5px 9px;font-size:10px;width:110px">Tên gọi <i style="font-weight:400">Label</i></th><th style="text-align:left;padding:5px 9px;font-size:10px">Ý nghĩa <i style="font-weight:400">Meaning</i></th></tr></thead>
48
+ <thead><tr style="background:var(--cs-color-brand-umber);color:var(--cs-color-text-inverse,#fff)"><th style="text-align:left;padding:5px 9px;font-size:10px;width:48px">Mức <i style="font-weight:400">Rating</i></th><th style="text-align:left;padding:5px 9px;font-size:10px;width:110px">Tên gọi <i style="font-weight:400">Label</i></th><th style="text-align:left;padding:5px 9px;font-size:10px">Ý nghĩa <i style="font-weight:400">Meaning</i></th></tr></thead>
48
49
  <tbody>
49
- <tr style="border-bottom:1px solid var(--cs-color-border-default)"><td style="padding:6px 9px;font-family:var(--cs-font-family-mono)">5</td><td style="padding:6px 9px;font-weight:600">Xuất sắc<div style="color:#3F4C55;font-style:italic;font-size:10.5px">Outstanding</div></td><td style="padding:6px 9px">Vượt xa yêu cầu ở phần lớn mục tiêu; tạo tác động rõ rệt ngoài phạm vi công việc.<div style="color:#3F4C55;font-style:italic;font-size:10.5px">Far exceeds requirements on most objectives; visible impact beyond the role.</div></td></tr>
50
- <tr style="border-bottom:1px solid var(--cs-color-border-default)"><td style="padding:6px 9px;font-family:var(--cs-font-family-mono)">4</td><td style="padding:6px 9px;font-weight:600">Tốt<div style="color:#3F4C55;font-style:italic;font-size:10.5px">Exceeds</div></td><td style="padding:6px 9px">Vượt yêu cầu ở một số mục tiêu, đạt yêu cầu ở phần còn lại.<div style="color:#3F4C55;font-style:italic;font-size:10.5px">Exceeds requirements on some objectives and meets them on the rest.</div></td></tr>
51
- <tr style="border-bottom:1px solid var(--cs-color-border-default)"><td style="padding:6px 9px;font-family:var(--cs-font-family-mono)">3</td><td style="padding:6px 9px;font-weight:600">Đạt yêu cầu<div style="color:#3F4C55;font-style:italic;font-size:10.5px">Meets</div></td><td style="padding:6px 9px">Hoàn thành công việc được giao đúng chất lượng và tiến độ. Đây là mức chuẩn.<div style="color:#3F4C55;font-style:italic;font-size:10.5px">Completes assigned work to the required quality and schedule. This is the standard.</div></td></tr>
52
- <tr style="border-bottom:1px solid var(--cs-color-border-default)"><td style="padding:6px 9px;font-family:var(--cs-font-family-mono)">2</td><td style="padding:6px 9px;font-weight:600">Chưa đạt<div style="color:#3F4C55;font-style:italic;font-size:10.5px">Below</div></td><td style="padding:6px 9px">Không đạt yêu cầu ở một hoặc nhiều mục tiêu trọng yếu, dù đã được hướng dẫn.<div style="color:#3F4C55;font-style:italic;font-size:10.5px">Fails to meet requirements on one or more key objectives, despite guidance.</div></td></tr>
53
- <tr><td style="padding:6px 9px;font-family:var(--cs-font-family-mono)">1</td><td style="padding:6px 9px;font-weight:600">Không hoàn thành<div style="color:#3F4C55;font-style:italic;font-size:10.5px">Fails</div></td><td style="padding:6px 9px">Không hoàn thành phần lớn công việc được giao. Có bằng chứng bằng văn bản.<div style="color:#3F4C55;font-style:italic;font-size:10.5px">Fails to complete most assigned work. Evidenced in writing.</div></td></tr>
50
+ <tr style="border-bottom:1px solid var(--cs-color-border-default)"><td style="padding:6px 9px;font-family:var(--cs-font-family-mono)">5</td><td style="padding:6px 9px;font-weight:600">Xuất sắc<div style="color:var(--cs-doc-slate);font-style:italic;font-size:10.5px">Outstanding</div></td><td style="padding:6px 9px">Vượt xa yêu cầu ở phần lớn mục tiêu; tạo tác động rõ rệt ngoài phạm vi công việc.<div style="color:var(--cs-doc-slate);font-style:italic;font-size:10.5px">Far exceeds requirements on most objectives; visible impact beyond the role.</div></td></tr>
51
+ <tr style="border-bottom:1px solid var(--cs-color-border-default)"><td style="padding:6px 9px;font-family:var(--cs-font-family-mono)">4</td><td style="padding:6px 9px;font-weight:600">Tốt<div style="color:var(--cs-doc-slate);font-style:italic;font-size:10.5px">Exceeds</div></td><td style="padding:6px 9px">Vượt yêu cầu ở một số mục tiêu, đạt yêu cầu ở phần còn lại.<div style="color:var(--cs-doc-slate);font-style:italic;font-size:10.5px">Exceeds requirements on some objectives and meets them on the rest.</div></td></tr>
52
+ <tr style="border-bottom:1px solid var(--cs-color-border-default)"><td style="padding:6px 9px;font-family:var(--cs-font-family-mono)">3</td><td style="padding:6px 9px;font-weight:600">Đạt yêu cầu<div style="color:var(--cs-doc-slate);font-style:italic;font-size:10.5px">Meets</div></td><td style="padding:6px 9px">Hoàn thành công việc được giao đúng chất lượng và tiến độ. Đây là mức chuẩn.<div style="color:var(--cs-doc-slate);font-style:italic;font-size:10.5px">Completes assigned work to the required quality and schedule. This is the standard.</div></td></tr>
53
+ <tr style="border-bottom:1px solid var(--cs-color-border-default)"><td style="padding:6px 9px;font-family:var(--cs-font-family-mono)">2</td><td style="padding:6px 9px;font-weight:600">Chưa đạt<div style="color:var(--cs-doc-slate);font-style:italic;font-size:10.5px">Below</div></td><td style="padding:6px 9px">Không đạt yêu cầu ở một hoặc nhiều mục tiêu trọng yếu, dù đã được hướng dẫn.<div style="color:var(--cs-doc-slate);font-style:italic;font-size:10.5px">Fails to meet requirements on one or more key objectives, despite guidance.</div></td></tr>
54
+ <tr><td style="padding:6px 9px;font-family:var(--cs-font-family-mono)">1</td><td style="padding:6px 9px;font-weight:600">Không hoàn thành<div style="color:var(--cs-doc-slate);font-style:italic;font-size:10.5px">Fails</div></td><td style="padding:6px 9px">Không hoàn thành phần lớn công việc được giao. Có bằng chứng bằng văn bản.<div style="color:var(--cs-doc-slate);font-style:italic;font-size:10.5px">Fails to complete most assigned work. Evidenced in writing.</div></td></tr>
54
55
  </tbody>
55
56
  </table>
56
- <p style="font-size:13px;line-height:1.5;margin:0 0 1px">2.1. Mức 3 là mức chuẩn: người lao động đạt mức 3 được coi là HOÀN THÀNH công việc theo hợp đồng lao động.</p><p style="font-size:12px;line-height:1.4;color:#3F4C55;font-style:italic;margin:0 0 3px">2.1. Rating 3 is the standard: an employee at rating 3 is treated as HAVING COMPLETED the work under their labor contract.</p>
57
- <p style="font-size:13px;line-height:1.5;margin:0 0 1px">2.2. Mức 1 hoặc mức 2 được coi là KHÔNG HOÀN THÀNH công việc theo hợp đồng lao động cho mục đích của Quy chế này.</p><p style="font-size:12px;line-height:1.4;color:#3F4C55;font-style:italic;margin:0">2.2. Rating 1 or rating 2 is treated as NOT HAVING COMPLETED the work under the labor contract for the purposes of this Regulation.</p></div>
57
+ <p style="font-size:13px;line-height:1.5;margin:0 0 1px">2.1. Mức 3 là mức chuẩn: người lao động đạt mức 3 được coi là HOÀN THÀNH công việc theo hợp đồng lao động.</p><p style="font-size:12px;line-height:1.4;color:var(--cs-doc-slate);font-style:italic;margin:0 0 3px">2.1. Rating 3 is the standard: an employee at rating 3 is treated as HAVING COMPLETED the work under their labor contract.</p>
58
+ <p style="font-size:13px;line-height:1.5;margin:0 0 1px">2.2. Mức 1 hoặc mức 2 được coi là KHÔNG HOÀN THÀNH công việc theo hợp đồng lao động cho mục đích của Quy chế này.</p><p style="font-size:12px;line-height:1.4;color:var(--cs-doc-slate);font-style:italic;margin:0">2.2. Rating 1 or rating 2 is treated as NOT HAVING COMPLETED the work under the labor contract for the purposes of this Regulation.</p></div>
58
59
 
59
- <div class="cs-avoid"><h2 style="font-size:12.5px;font-weight:800;color:var(--cs-color-brand-umber);margin:0 0 6px">ĐIỀU 3 · TIÊU CHÍ ĐÁNH GIÁ <span style="font-weight:400;font-size:11px;color:#3F4C55;font-style:italic">Article 3 · Evaluation criteria</span></h2>
60
- <p style="font-size:13px;line-height:1.5;margin:0 0 1px">Mỗi người lao động được đánh giá trên bốn nhóm tiêu chí, với trọng số như sau:</p><p style="font-size:12px;line-height:1.4;color:#3F4C55;font-style:italic;margin:0 0 6px">Each employee is evaluated against four groups of criteria, weighted as follows:</p>
60
+ <div class="cs-avoid"><h2 style="font-size:12.5px;font-weight:800;color:var(--cs-color-brand-umber);margin:0 0 6px">ĐIỀU 3 · TIÊU CHÍ ĐÁNH GIÁ <span style="font-weight:400;font-size:11px;color:var(--cs-doc-slate);font-style:italic">Article 3 · Evaluation criteria</span></h2>
61
+ <p style="font-size:13px;line-height:1.5;margin:0 0 1px">Mỗi người lao động được đánh giá trên bốn nhóm tiêu chí, với trọng số như sau:</p><p style="font-size:12px;line-height:1.4;color:var(--cs-doc-slate);font-style:italic;margin:0 0 6px">Each employee is evaluated against four groups of criteria, weighted as follows:</p>
61
62
  <table style="width:100%;border-collapse:collapse;font-size:12px;margin-bottom:6px">
62
- <thead><tr style="background:var(--cs-color-brand-umber);color:#fff"><th style="text-align:left;padding:5px 9px;font-size:10px;width:150px">Nhóm tiêu chí <i style="font-weight:400">Criterion</i></th><th style="text-align:left;padding:5px 9px;font-size:10px;width:64px">Trọng số <i style="font-weight:400">Weight</i></th><th style="text-align:left;padding:5px 9px;font-size:10px">Đo bằng gì <i style="font-weight:400">How measured</i></th></tr></thead>
63
+ <thead><tr style="background:var(--cs-color-brand-umber);color:var(--cs-color-text-inverse,#fff)"><th style="text-align:left;padding:5px 9px;font-size:10px;width:150px">Nhóm tiêu chí <i style="font-weight:400">Criterion</i></th><th style="text-align:left;padding:5px 9px;font-size:10px;width:64px">Trọng số <i style="font-weight:400">Weight</i></th><th style="text-align:left;padding:5px 9px;font-size:10px">Đo bằng gì <i style="font-weight:400">How measured</i></th></tr></thead>
63
64
  <tbody>
64
- <tr style="border-bottom:1px solid var(--cs-color-border-default)"><td style="padding:6px 9px;font-weight:600">Kết quả công việc<div style="color:#3F4C55;font-style:italic;font-size:10.5px">Delivery</div></td><td style="padding:6px 9px">50%</td><td style="padding:6px 9px">Mục tiêu công việc đã thống nhất bằng văn bản đầu kỳ (số lượng, chất lượng, tiến độ).<div style="color:#3F4C55;font-style:italic;font-size:10.5px">The written objectives agreed at the start of the cycle (volume, quality, schedule).</div></td></tr>
65
- <tr style="border-bottom:1px solid var(--cs-color-border-default)"><td style="padding:6px 9px;font-weight:600">Chất lượng kỹ thuật<div style="color:#3F4C55;font-style:italic;font-size:10.5px">Quality of craft</div></td><td style="padding:6px 9px">20%</td><td style="padding:6px 9px">Chuẩn mã nguồn, tỷ lệ lỗi sau bàn giao, kết quả review, nợ kỹ thuật tạo ra.<div style="color:#3F4C55;font-style:italic;font-size:10.5px">Code standards, post-delivery defect rate, review outcomes, technical debt created.</div></td></tr>
66
- <tr style="border-bottom:1px solid var(--cs-color-border-default)"><td style="padding:6px 9px;font-weight:600">Hợp tác và trách nhiệm<div style="color:#3F4C55;font-style:italic;font-size:10.5px">Collaboration</div></td><td style="padding:6px 9px">20%</td><td style="padding:6px 9px">Phản hồi từ đồng nghiệp và khách hàng; tính chủ động; hỗ trợ đồng đội.<div style="color:#3F4C55;font-style:italic;font-size:10.5px">Feedback from colleagues and clients; initiative; support given to the team.</div></td></tr>
67
- <tr><td style="padding:6px 9px;font-weight:600">Tuân thủ<div style="color:#3F4C55;font-style:italic;font-size:10.5px">Compliance</div></td><td style="padding:6px 9px">10%</td><td style="padding:6px 9px">Tuân thủ Nội quy lao động, bảo mật, bảo vệ dữ liệu và quy trình của Công ty.<div style="color:#3F4C55;font-style:italic;font-size:10.5px">Compliance with the Internal Labor Regulations, confidentiality, data protection, and Company process.</div></td></tr>
65
+ <tr style="border-bottom:1px solid var(--cs-color-border-default)"><td style="padding:6px 9px;font-weight:600">Kết quả công việc<div style="color:var(--cs-doc-slate);font-style:italic;font-size:10.5px">Delivery</div></td><td style="padding:6px 9px">50%</td><td style="padding:6px 9px">Mục tiêu công việc đã thống nhất bằng văn bản đầu kỳ (số lượng, chất lượng, tiến độ).<div style="color:var(--cs-doc-slate);font-style:italic;font-size:10.5px">The written objectives agreed at the start of the cycle (volume, quality, schedule).</div></td></tr>
66
+ <tr style="border-bottom:1px solid var(--cs-color-border-default)"><td style="padding:6px 9px;font-weight:600">Chất lượng kỹ thuật<div style="color:var(--cs-doc-slate);font-style:italic;font-size:10.5px">Quality of craft</div></td><td style="padding:6px 9px">20%</td><td style="padding:6px 9px">Chuẩn mã nguồn, tỷ lệ lỗi sau bàn giao, kết quả review, nợ kỹ thuật tạo ra.<div style="color:var(--cs-doc-slate);font-style:italic;font-size:10.5px">Code standards, post-delivery defect rate, review outcomes, technical debt created.</div></td></tr>
67
+ <tr style="border-bottom:1px solid var(--cs-color-border-default)"><td style="padding:6px 9px;font-weight:600">Hợp tác và trách nhiệm<div style="color:var(--cs-doc-slate);font-style:italic;font-size:10.5px">Collaboration</div></td><td style="padding:6px 9px">20%</td><td style="padding:6px 9px">Phản hồi từ đồng nghiệp và khách hàng; tính chủ động; hỗ trợ đồng đội.<div style="color:var(--cs-doc-slate);font-style:italic;font-size:10.5px">Feedback from colleagues and clients; initiative; support given to the team.</div></td></tr>
68
+ <tr><td style="padding:6px 9px;font-weight:600">Tuân thủ<div style="color:var(--cs-doc-slate);font-style:italic;font-size:10.5px">Compliance</div></td><td style="padding:6px 9px">10%</td><td style="padding:6px 9px">Tuân thủ Nội quy lao động, bảo mật, bảo vệ dữ liệu và quy trình của Công ty.<div style="color:var(--cs-doc-slate);font-style:italic;font-size:10.5px">Compliance with the Internal Labor Regulations, confidentiality, data protection, and Company process.</div></td></tr>
68
69
  </tbody>
69
70
  </table>
70
- <p style="font-size:13px;line-height:1.5;margin:0 0 1px">3.1. Mục tiêu công việc của mỗi kỳ phải được thống nhất bằng văn bản giữa người lao động và quản lý trực tiếp trong vòng 15 ngày làm việc kể từ đầu kỳ, và được lưu vào hồ sơ nhân sự. Không có mục tiêu bằng văn bản thì không được đánh giá mức 1 hoặc mức 2.</p><p style="font-size:12px;line-height:1.4;color:#3F4C55;font-style:italic;margin:0 0 4px">3.1. The objectives for each cycle must be agreed in writing between the employee and the line manager within 15 working days of the start of the cycle, and filed in the personnel record. Where there are no written objectives, a rating of 1 or 2 may not be given.</p>
71
- <div style="background:#FBF4E9;border:1px solid var(--cs-color-border-default);border-radius:6px;padding:7px 11px"><p style="font-size:12px;line-height:1.45;margin:0 0 1px"><b>Ghi chú soạn thảo:</b> Câu cuối của khoản 3.1 là lá chắn pháp lý quan trọng nhất trong Quy chế: nó buộc Công ty phải có bằng chứng mục tiêu trước khi có thể kết luận không hoàn thành.</p><p style="font-size:11px;line-height:1.4;color:#3F4C55;font-style:italic;margin:0"><b>Drafting note:</b> The last sentence of Article 3.1 is the most important legal protection in this Regulation: it forces the Company to have evidence of the objectives before it can conclude that they were not met.</p></div></div>
71
+ <p style="font-size:13px;line-height:1.5;margin:0 0 1px">3.1. Mục tiêu công việc của mỗi kỳ phải được thống nhất bằng văn bản giữa người lao động và quản lý trực tiếp trong vòng 15 ngày làm việc kể từ đầu kỳ, và được lưu vào hồ sơ nhân sự. Không có mục tiêu bằng văn bản thì không được đánh giá mức 1 hoặc mức 2.</p><p style="font-size:12px;line-height:1.4;color:var(--cs-doc-slate);font-style:italic;margin:0 0 4px">3.1. The objectives for each cycle must be agreed in writing between the employee and the line manager within 15 working days of the start of the cycle, and filed in the personnel record. Where there are no written objectives, a rating of 1 or 2 may not be given.</p>
72
+ <div style="background:#FBF4E9;border:1px solid var(--cs-color-border-default);border-radius:6px;padding:7px 11px"><p style="font-size:12px;line-height:1.45;margin:0 0 1px"><b>Ghi chú soạn thảo:</b> Câu cuối của khoản 3.1 là lá chắn pháp lý quan trọng nhất trong Quy chế: nó buộc Công ty phải có bằng chứng mục tiêu trước khi có thể kết luận không hoàn thành.</p><p style="font-size:11px;line-height:1.4;color:var(--cs-doc-slate);font-style:italic;margin:0"><b>Drafting note:</b> The last sentence of Article 3.1 is the most important legal protection in this Regulation: it forces the Company to have evidence of the objectives before it can conclude that they were not met.</p></div></div>
72
73
 
73
- <div class="cs-avoid"><h2 style="font-size:12.5px;font-weight:800;color:var(--cs-color-brand-umber);margin:0 0 6px">ĐIỀU 4 · CHU KỲ VÀ TRÌNH TỰ ĐÁNH GIÁ <span style="font-weight:400;font-size:11px;color:#3F4C55;font-style:italic">Article 4 · Cycle and procedure</span></h2>
74
- <p style="font-size:13px;line-height:1.5;margin:0 0 1px">4.1. Chu kỳ đánh giá chính thức: 02 lần mỗi năm — kỳ giữa năm (tháng 6) và kỳ cuối năm (tháng 12).</p><p style="font-size:12px;line-height:1.4;color:#3F4C55;font-style:italic;margin:0 0 6px">4.1. Formal evaluation cycle: twice a year — a mid-year cycle (June) and a year-end cycle (December).</p>
74
+ <div class="cs-avoid"><h2 style="font-size:12.5px;font-weight:800;color:var(--cs-color-brand-umber);margin:0 0 6px">ĐIỀU 4 · CHU KỲ VÀ TRÌNH TỰ ĐÁNH GIÁ <span style="font-weight:400;font-size:11px;color:var(--cs-doc-slate);font-style:italic">Article 4 · Cycle and procedure</span></h2>
75
+ <p style="font-size:13px;line-height:1.5;margin:0 0 1px">4.1. Chu kỳ đánh giá chính thức: 02 lần mỗi năm — kỳ giữa năm (tháng 6) và kỳ cuối năm (tháng 12).</p><p style="font-size:12px;line-height:1.4;color:var(--cs-doc-slate);font-style:italic;margin:0 0 6px">4.1. Formal evaluation cycle: twice a year — a mid-year cycle (June) and a year-end cycle (December).</p>
75
76
  <table style="width:100%;border-collapse:collapse;font-size:12px;margin-bottom:6px">
76
- <thead><tr style="background:var(--cs-color-brand-umber);color:#fff"><th style="text-align:left;padding:5px 9px;font-size:10px;width:40px">Bước <i style="font-weight:400">Step</i></th><th style="text-align:left;padding:5px 9px;font-size:10px">Nội dung <i style="font-weight:400">Action</i></th><th style="text-align:left;padding:5px 9px;font-size:10px;width:96px">Ai làm <i style="font-weight:400">Who</i></th></tr></thead>
77
+ <thead><tr style="background:var(--cs-color-brand-umber);color:var(--cs-color-text-inverse,#fff)"><th style="text-align:left;padding:5px 9px;font-size:10px;width:40px">Bước <i style="font-weight:400">Step</i></th><th style="text-align:left;padding:5px 9px;font-size:10px">Nội dung <i style="font-weight:400">Action</i></th><th style="text-align:left;padding:5px 9px;font-size:10px;width:96px">Ai làm <i style="font-weight:400">Who</i></th></tr></thead>
77
78
  <tbody>
78
- <tr style="border-bottom:1px solid var(--cs-color-border-default)"><td style="padding:6px 9px;font-family:var(--cs-font-family-mono)">1</td><td style="padding:6px 9px">Người lao động tự đánh giá theo bốn nhóm tiêu chí.<div style="color:#3F4C55;font-style:italic;font-size:10.5px">The employee self-assesses against the four criteria.</div></td><td style="padding:6px 9px">Người lao động<div style="color:#3F4C55;font-style:italic;font-size:10.5px">Employee</div></td></tr>
79
- <tr style="border-bottom:1px solid var(--cs-color-border-default)"><td style="padding:6px 9px;font-family:var(--cs-font-family-mono)">2</td><td style="padding:6px 9px">Quản lý trực tiếp đánh giá, cho điểm từng nhóm và ghi nhận xét bằng văn bản, kèm bằng chứng.<div style="color:#3F4C55;font-style:italic;font-size:10.5px">The line manager assesses, scores each criterion, and records written comments with evidence.</div></td><td style="padding:6px 9px">Quản lý trực tiếp<div style="color:#3F4C55;font-style:italic;font-size:10.5px">Line manager</div></td></tr>
80
- <tr style="border-bottom:1px solid var(--cs-color-border-default)"><td style="padding:6px 9px;font-family:var(--cs-font-family-mono)">3</td><td style="padding:6px 9px">Họp trao đổi trực tiếp giữa quản lý và người lao động. Người lao động có quyền ghi ý kiến không đồng ý vào biểu mẫu.<div style="color:#3F4C55;font-style:italic;font-size:10.5px">A face-to-face discussion between manager and employee. The employee may record a written disagreement on the form.</div></td><td style="padding:6px 9px">Cả hai<div style="color:#3F4C55;font-style:italic;font-size:10.5px">Both</div></td></tr>
81
- <tr style="border-bottom:1px solid var(--cs-color-border-default)"><td style="padding:6px 9px;font-family:var(--cs-font-family-mono)">4</td><td style="padding:6px 9px">Tổng Giám đốc phê duyệt mức đánh giá cuối cùng.<div style="color:#3F4C55;font-style:italic;font-size:10.5px">The CEO approves the final rating.</div></td><td style="padding:6px 9px">Tổng Giám đốc<div style="color:#3F4C55;font-style:italic;font-size:10.5px">CEO</div></td></tr>
82
- <tr><td style="padding:6px 9px;font-family:var(--cs-font-family-mono)">5</td><td style="padding:6px 9px">Kết quả được lưu vào hồ sơ nhân sự và thông báo cho người lao động bằng văn bản trong 05 ngày làm việc.<div style="color:#3F4C55;font-style:italic;font-size:10.5px">The result is filed in the personnel record and notified to the employee in writing within 05 working days.</div></td><td style="padding:6px 9px">Nhân sự<div style="color:#3F4C55;font-style:italic;font-size:10.5px">HR</div></td></tr>
79
+ <tr style="border-bottom:1px solid var(--cs-color-border-default)"><td style="padding:6px 9px;font-family:var(--cs-font-family-mono)">1</td><td style="padding:6px 9px">Người lao động tự đánh giá theo bốn nhóm tiêu chí.<div style="color:var(--cs-doc-slate);font-style:italic;font-size:10.5px">The employee self-assesses against the four criteria.</div></td><td style="padding:6px 9px">Người lao động<div style="color:var(--cs-doc-slate);font-style:italic;font-size:10.5px">Employee</div></td></tr>
80
+ <tr style="border-bottom:1px solid var(--cs-color-border-default)"><td style="padding:6px 9px;font-family:var(--cs-font-family-mono)">2</td><td style="padding:6px 9px">Quản lý trực tiếp đánh giá, cho điểm từng nhóm và ghi nhận xét bằng văn bản, kèm bằng chứng.<div style="color:var(--cs-doc-slate);font-style:italic;font-size:10.5px">The line manager assesses, scores each criterion, and records written comments with evidence.</div></td><td style="padding:6px 9px">Quản lý trực tiếp<div style="color:var(--cs-doc-slate);font-style:italic;font-size:10.5px">Line manager</div></td></tr>
81
+ <tr style="border-bottom:1px solid var(--cs-color-border-default)"><td style="padding:6px 9px;font-family:var(--cs-font-family-mono)">3</td><td style="padding:6px 9px">Họp trao đổi trực tiếp giữa quản lý và người lao động. Người lao động có quyền ghi ý kiến không đồng ý vào biểu mẫu.<div style="color:var(--cs-doc-slate);font-style:italic;font-size:10.5px">A face-to-face discussion between manager and employee. The employee may record a written disagreement on the form.</div></td><td style="padding:6px 9px">Cả hai<div style="color:var(--cs-doc-slate);font-style:italic;font-size:10.5px">Both</div></td></tr>
82
+ <tr style="border-bottom:1px solid var(--cs-color-border-default)"><td style="padding:6px 9px;font-family:var(--cs-font-family-mono)">4</td><td style="padding:6px 9px">Tổng Giám đốc phê duyệt mức đánh giá cuối cùng.<div style="color:var(--cs-doc-slate);font-style:italic;font-size:10.5px">The CEO approves the final rating.</div></td><td style="padding:6px 9px">Tổng Giám đốc<div style="color:var(--cs-doc-slate);font-style:italic;font-size:10.5px">CEO</div></td></tr>
83
+ <tr><td style="padding:6px 9px;font-family:var(--cs-font-family-mono)">5</td><td style="padding:6px 9px">Kết quả được lưu vào hồ sơ nhân sự và thông báo cho người lao động bằng văn bản trong 05 ngày làm việc.<div style="color:var(--cs-doc-slate);font-style:italic;font-size:10.5px">The result is filed in the personnel record and notified to the employee in writing within 05 working days.</div></td><td style="padding:6px 9px">Nhân sự<div style="color:var(--cs-doc-slate);font-style:italic;font-size:10.5px">HR</div></td></tr>
83
84
  </tbody>
84
85
  </table>
85
- <p style="font-size:13px;line-height:1.5;margin:0 0 1px">4.2. Người lao động có quyền khiếu nại kết quả đánh giá bằng văn bản trong 10 ngày làm việc kể từ ngày nhận thông báo. Tổng Giám đốc xem xét và trả lời trong 15 ngày làm việc. Quyết định của Tổng Giám đốc là quyết định cuối cùng trong nội bộ.</p><p style="font-size:12px;line-height:1.4;color:#3F4C55;font-style:italic;margin:0 0 3px">4.2. An employee may appeal a rating in writing within 10 working days of notification. The CEO reviews and responds within 15 working days. The CEO's decision is final internally.</p>
86
- <p style="font-size:13px;line-height:1.5;margin:0 0 1px">4.3. Kết quả đánh giá là căn cứ để xét nâng lương định kỳ (kỳ xét lương thường niên, hiệu lực từ ngày 01/04) và xét thưởng theo Quy chế Lương, Thưởng &amp; Phúc lợi.</p><p style="font-size:12px;line-height:1.4;color:#3F4C55;font-style:italic;margin:0 0 3px">4.3. The rating founds the annual salary review (effective 1 April) and the bonus award under the Compensation &amp; Reward Regulation.</p>
87
- <p style="font-size:13px;line-height:1.5;margin:0 0 1px">4.4. Người lao động trong thời gian thử việc được đánh giá một lần vào cuối thời gian thử việc, theo cùng bốn nhóm tiêu chí.</p><p style="font-size:12px;line-height:1.4;color:#3F4C55;font-style:italic;margin:0">4.4. An employee on probation is evaluated once, at the end of probation, against the same four criteria.</p></div>
86
+ <p style="font-size:13px;line-height:1.5;margin:0 0 1px">4.2. Người lao động có quyền khiếu nại kết quả đánh giá bằng văn bản trong 10 ngày làm việc kể từ ngày nhận thông báo. Tổng Giám đốc xem xét và trả lời trong 15 ngày làm việc. Quyết định của Tổng Giám đốc là quyết định cuối cùng trong nội bộ.</p><p style="font-size:12px;line-height:1.4;color:var(--cs-doc-slate);font-style:italic;margin:0 0 3px">4.2. An employee may appeal a rating in writing within 10 working days of notification. The CEO reviews and responds within 15 working days. The CEO's decision is final internally.</p>
87
+ <p style="font-size:13px;line-height:1.5;margin:0 0 1px">4.3. Kết quả đánh giá là căn cứ để xét nâng lương định kỳ (kỳ xét lương thường niên, hiệu lực từ ngày 01/04) và xét thưởng theo Quy chế Lương, Thưởng &amp; Phúc lợi.</p><p style="font-size:12px;line-height:1.4;color:var(--cs-doc-slate);font-style:italic;margin:0 0 3px">4.3. The rating founds the annual salary review (effective 1 April) and the bonus award under the Compensation &amp; Reward Regulation.</p>
88
+ <p style="font-size:13px;line-height:1.5;margin:0 0 1px">4.4. Người lao động trong thời gian thử việc được đánh giá một lần vào cuối thời gian thử việc, theo cùng bốn nhóm tiêu chí.</p><p style="font-size:12px;line-height:1.4;color:var(--cs-doc-slate);font-style:italic;margin:0">4.4. An employee on probation is evaluated once, at the end of probation, against the same four criteria.</p></div>
88
89
 
89
- <div class="cs-avoid"><h2 style="font-size:12.5px;font-weight:800;color:var(--cs-color-brand-umber);margin:0 0 5px">ĐIỀU 5 · KẾ HOẠCH CẢI THIỆN HIỆU SUẤT <span style="font-weight:400;font-size:11px;color:#3F4C55;font-style:italic">Article 5 · Performance improvement plan</span></h2>
90
- <p style="font-size:13px;line-height:1.5;margin:0 0 1px">5.1. Khi người lao động bị đánh giá mức 1 hoặc mức 2, Công ty phải lập Kế hoạch Cải thiện Hiệu suất bằng văn bản trước khi áp dụng bất kỳ hệ quả nào.</p><p style="font-size:12px;line-height:1.4;color:#3F4C55;font-style:italic;margin:0 0 3px">5.1. Where an employee is rated 1 or 2, the Company must put a written Performance Improvement Plan in place before any consequence follows.</p>
91
- <p style="font-size:13px;line-height:1.5;margin:0 0 1px">a) Thời hạn: tối thiểu 30 ngày làm việc; tối thiểu 60 ngày làm việc đối với vị trí quản lý hoặc chuyên gia cấp cao.</p><p style="font-size:12px;line-height:1.4;color:#3F4C55;font-style:italic;margin:0 0 3px">a) Duration: at least 30 working days; at least 60 working days for a management or senior specialist role.</p>
92
- <p style="font-size:13px;line-height:1.5;margin:0 0 1px">b) Nội dung bắt buộc: mục tiêu cụ thể, đo lường được; nguồn lực và hỗ trợ Công ty cung cấp; lịch kiểm tra tiến độ ít nhất 02 tuần một lần; và hệ quả nếu không đạt.</p><p style="font-size:12px;line-height:1.4;color:#3F4C55;font-style:italic;margin:0 0 3px">b) Mandatory content: specific, measurable objectives; the resources and support the Company will provide; a progress check at least once every 02 weeks; and the consequence of not meeting the plan.</p>
93
- <p style="font-size:13px;line-height:1.5;margin:0 0 1px">c) Kết thúc Kế hoạch, quản lý trực tiếp đánh giá lại và ghi kết quả bằng văn bản.</p><p style="font-size:12px;line-height:1.4;color:#3F4C55;font-style:italic;margin:0">c) At the end of the Plan, the line manager re-assesses and records the outcome in writing.</p></div>
90
+ <div class="cs-avoid"><h2 style="font-size:12.5px;font-weight:800;color:var(--cs-color-brand-umber);margin:0 0 5px">ĐIỀU 5 · KẾ HOẠCH CẢI THIỆN HIỆU SUẤT <span style="font-weight:400;font-size:11px;color:var(--cs-doc-slate);font-style:italic">Article 5 · Performance improvement plan</span></h2>
91
+ <p style="font-size:13px;line-height:1.5;margin:0 0 1px">5.1. Khi người lao động bị đánh giá mức 1 hoặc mức 2, Công ty phải lập Kế hoạch Cải thiện Hiệu suất bằng văn bản trước khi áp dụng bất kỳ hệ quả nào.</p><p style="font-size:12px;line-height:1.4;color:var(--cs-doc-slate);font-style:italic;margin:0 0 3px">5.1. Where an employee is rated 1 or 2, the Company must put a written Performance Improvement Plan in place before any consequence follows.</p>
92
+ <p style="font-size:13px;line-height:1.5;margin:0 0 1px">a) Thời hạn: tối thiểu 30 ngày làm việc; tối thiểu 60 ngày làm việc đối với vị trí quản lý hoặc chuyên gia cấp cao.</p><p style="font-size:12px;line-height:1.4;color:var(--cs-doc-slate);font-style:italic;margin:0 0 3px">a) Duration: at least 30 working days; at least 60 working days for a management or senior specialist role.</p>
93
+ <p style="font-size:13px;line-height:1.5;margin:0 0 1px">b) Nội dung bắt buộc: mục tiêu cụ thể, đo lường được; nguồn lực và hỗ trợ Công ty cung cấp; lịch kiểm tra tiến độ ít nhất 02 tuần một lần; và hệ quả nếu không đạt.</p><p style="font-size:12px;line-height:1.4;color:var(--cs-doc-slate);font-style:italic;margin:0 0 3px">b) Mandatory content: specific, measurable objectives; the resources and support the Company will provide; a progress check at least once every 02 weeks; and the consequence of not meeting the plan.</p>
94
+ <p style="font-size:13px;line-height:1.5;margin:0 0 1px">c) Kết thúc Kế hoạch, quản lý trực tiếp đánh giá lại và ghi kết quả bằng văn bản.</p><p style="font-size:12px;line-height:1.4;color:var(--cs-doc-slate);font-style:italic;margin:0">c) At the end of the Plan, the line manager re-assesses and records the outcome in writing.</p></div>
94
95
 
95
- <div class="cs-avoid"><h2 style="font-size:12.5px;font-weight:800;color:var(--cs-color-brand-umber);margin:0 0 5px">ĐIỀU 6 · THƯỜNG XUYÊN KHÔNG HOÀN THÀNH CÔNG VIỆC <span style="font-weight:400;font-size:11px;color:#3F4C55;font-style:italic">Article 6 · Repeated failure to complete assigned work</span></h2>
96
- <p style="font-size:13px;line-height:1.5;margin:0 0 1px">6.1. Người lao động được coi là THƯỜNG XUYÊN KHÔNG HOÀN THÀNH CÔNG VIỆC theo hợp đồng lao động, cho mục đích của điểm a khoản 1 Điều 36 Bộ luật Lao động, khi đồng thời thỏa mãn tất cả các điều kiện sau:</p><p style="font-size:12px;line-height:1.4;color:#3F4C55;font-style:italic;margin:0 0 3px">6.1. An employee is treated as REPEATEDLY FAILING TO COMPLETE the work under their labor contract, for the purposes of Article 36.1(a) of the Labor Code, only where all of the following are satisfied:</p>
97
- <p style="font-size:13px;line-height:1.5;margin:0 0 1px">a) Bị đánh giá mức 1 hoặc mức 2 trong 02 kỳ đánh giá liên tiếp; và</p><p style="font-size:12px;line-height:1.4;color:#3F4C55;font-style:italic;margin:0 0 3px">a) The employee was rated 1 or 2 in 02 consecutive evaluation cycles; and</p>
98
- <p style="font-size:13px;line-height:1.5;margin:0 0 1px">b) Đã được lập Kế hoạch Cải thiện Hiệu suất bằng văn bản theo Điều 5 sau kỳ đánh giá đầu tiên, và không đạt mục tiêu của Kế hoạch đó; và</p><p style="font-size:12px;line-height:1.4;color:#3F4C55;font-style:italic;margin:0 0 3px">b) A written Performance Improvement Plan under Article 5 was put in place after the first of those cycles, and its objectives were not met; and</p>
99
- <p style="font-size:13px;line-height:1.5;margin:0 0 1px">c) Mục tiêu công việc của cả hai kỳ đã được thống nhất bằng văn bản theo khoản 3.1; và</p><p style="font-size:12px;line-height:1.4;color:#3F4C55;font-style:italic;margin:0 0 3px">c) The objectives for both cycles were agreed in writing under Article 3.1; and</p>
100
- <p style="font-size:13px;line-height:1.5;margin:0 0 1px">d) Việc không hoàn thành không do lỗi của Công ty (thiếu nguồn lực, thiếu hướng dẫn, thay đổi phạm vi công việc giữa kỳ), không do người lao động nghỉ ốm, nghỉ thai sản, nghỉ phép hợp pháp, và không do bị tạm thời chuyển làm công việc khác.</p><p style="font-size:12px;line-height:1.4;color:#3F4C55;font-style:italic;margin:0 0 3px">d) The failure was not caused by the Company (lack of resources, lack of direction, a mid-cycle change of scope), was not caused by sick leave, maternity leave or lawful leave, and did not arise from a temporary reassignment.</p>
101
- <p style="font-size:13px;line-height:1.5;margin:0 0 1px">6.2. Chỉ khi tất cả điều kiện tại khoản 6.1 được thỏa mãn và được lưu bằng chứng bằng văn bản, Công ty mới có quyền xem xét đơn phương chấm dứt hợp đồng lao động theo điểm a khoản 1 Điều 36, với thời gian báo trước theo Điều 36 khoản 2.</p><p style="font-size:12px;line-height:1.4;color:#3F4C55;font-style:italic;margin:0 0 3px">6.2. Only where every condition in Article 6.1 is satisfied and evidenced in writing may the Company consider unilaterally terminating the labor contract under Article 36.1(a), giving the notice required by Article 36.2.</p>
102
- <p style="font-size:13px;line-height:1.5;margin:0 0 1px">6.3. Việc không hoàn thành công việc KHÔNG phải là hành vi vi phạm kỷ luật lao động và KHÔNG được xử lý theo trình tự kỷ luật tại Điều 122 Bộ luật Lao động. Hai chế định này hoàn toàn tách biệt.</p><p style="font-size:12px;line-height:1.4;color:#3F4C55;font-style:italic;margin:0 0 4px">6.3. Failure to complete work is NOT a disciplinary breach and is NOT dealt with under the disciplinary procedure in Article 122 of the Labor Code. The two are entirely separate.</p>
103
- <div style="background:#FBF4E9;border:1px solid var(--cs-color-border-default);border-radius:6px;padding:7px 11px"><p style="font-size:12px;line-height:1.45;margin:0 0 1px"><b>Ghi chú soạn thảo:</b> Khoản 6.3 tránh sai lầm phổ biến nhất: dùng trình tự kỷ luật để xử lý hiệu suất kém. Làm vậy khiến quyết định chấm dứt bị tuyên trái luật.</p><p style="font-size:11px;line-height:1.4;color:#3F4C55;font-style:italic;margin:0"><b>Drafting note:</b> Article 6.3 avoids the most common mistake: using the disciplinary procedure to deal with poor performance. Doing so renders the termination unlawful.</p></div></div>
96
+ <div class="cs-avoid"><h2 style="font-size:12.5px;font-weight:800;color:var(--cs-color-brand-umber);margin:0 0 5px">ĐIỀU 6 · THƯỜNG XUYÊN KHÔNG HOÀN THÀNH CÔNG VIỆC <span style="font-weight:400;font-size:11px;color:var(--cs-doc-slate);font-style:italic">Article 6 · Repeated failure to complete assigned work</span></h2>
97
+ <p style="font-size:13px;line-height:1.5;margin:0 0 1px">6.1. Người lao động được coi là THƯỜNG XUYÊN KHÔNG HOÀN THÀNH CÔNG VIỆC theo hợp đồng lao động, cho mục đích của điểm a khoản 1 Điều 36 Bộ luật Lao động, khi đồng thời thỏa mãn tất cả các điều kiện sau:</p><p style="font-size:12px;line-height:1.4;color:var(--cs-doc-slate);font-style:italic;margin:0 0 3px">6.1. An employee is treated as REPEATEDLY FAILING TO COMPLETE the work under their labor contract, for the purposes of Article 36.1(a) of the Labor Code, only where all of the following are satisfied:</p>
98
+ <p style="font-size:13px;line-height:1.5;margin:0 0 1px">a) Bị đánh giá mức 1 hoặc mức 2 trong 02 kỳ đánh giá liên tiếp; và</p><p style="font-size:12px;line-height:1.4;color:var(--cs-doc-slate);font-style:italic;margin:0 0 3px">a) The employee was rated 1 or 2 in 02 consecutive evaluation cycles; and</p>
99
+ <p style="font-size:13px;line-height:1.5;margin:0 0 1px">b) Đã được lập Kế hoạch Cải thiện Hiệu suất bằng văn bản theo Điều 5 sau kỳ đánh giá đầu tiên, và không đạt mục tiêu của Kế hoạch đó; và</p><p style="font-size:12px;line-height:1.4;color:var(--cs-doc-slate);font-style:italic;margin:0 0 3px">b) A written Performance Improvement Plan under Article 5 was put in place after the first of those cycles, and its objectives were not met; and</p>
100
+ <p style="font-size:13px;line-height:1.5;margin:0 0 1px">c) Mục tiêu công việc của cả hai kỳ đã được thống nhất bằng văn bản theo khoản 3.1; và</p><p style="font-size:12px;line-height:1.4;color:var(--cs-doc-slate);font-style:italic;margin:0 0 3px">c) The objectives for both cycles were agreed in writing under Article 3.1; and</p>
101
+ <p style="font-size:13px;line-height:1.5;margin:0 0 1px">d) Việc không hoàn thành không do lỗi của Công ty (thiếu nguồn lực, thiếu hướng dẫn, thay đổi phạm vi công việc giữa kỳ), không do người lao động nghỉ ốm, nghỉ thai sản, nghỉ phép hợp pháp, và không do bị tạm thời chuyển làm công việc khác.</p><p style="font-size:12px;line-height:1.4;color:var(--cs-doc-slate);font-style:italic;margin:0 0 3px">d) The failure was not caused by the Company (lack of resources, lack of direction, a mid-cycle change of scope), was not caused by sick leave, maternity leave or lawful leave, and did not arise from a temporary reassignment.</p>
102
+ <p style="font-size:13px;line-height:1.5;margin:0 0 1px">6.2. Chỉ khi tất cả điều kiện tại khoản 6.1 được thỏa mãn và được lưu bằng chứng bằng văn bản, Công ty mới có quyền xem xét đơn phương chấm dứt hợp đồng lao động theo điểm a khoản 1 Điều 36, với thời gian báo trước theo Điều 36 khoản 2.</p><p style="font-size:12px;line-height:1.4;color:var(--cs-doc-slate);font-style:italic;margin:0 0 3px">6.2. Only where every condition in Article 6.1 is satisfied and evidenced in writing may the Company consider unilaterally terminating the labor contract under Article 36.1(a), giving the notice required by Article 36.2.</p>
103
+ <p style="font-size:13px;line-height:1.5;margin:0 0 1px">6.3. Việc không hoàn thành công việc KHÔNG phải là hành vi vi phạm kỷ luật lao động và KHÔNG được xử lý theo trình tự kỷ luật tại Điều 122 Bộ luật Lao động. Hai chế định này hoàn toàn tách biệt.</p><p style="font-size:12px;line-height:1.4;color:var(--cs-doc-slate);font-style:italic;margin:0 0 4px">6.3. Failure to complete work is NOT a disciplinary breach and is NOT dealt with under the disciplinary procedure in Article 122 of the Labor Code. The two are entirely separate.</p>
104
+ <div style="background:#FBF4E9;border:1px solid var(--cs-color-border-default);border-radius:6px;padding:7px 11px"><p style="font-size:12px;line-height:1.45;margin:0 0 1px"><b>Ghi chú soạn thảo:</b> Khoản 6.3 tránh sai lầm phổ biến nhất: dùng trình tự kỷ luật để xử lý hiệu suất kém. Làm vậy khiến quyết định chấm dứt bị tuyên trái luật.</p><p style="font-size:11px;line-height:1.4;color:var(--cs-doc-slate);font-style:italic;margin:0"><b>Drafting note:</b> Article 6.3 avoids the most common mistake: using the disciplinary procedure to deal with poor performance. Doing so renders the termination unlawful.</p></div></div>
104
105
 
105
- <div class="cs-avoid"><h2 style="font-size:12.5px;font-weight:800;color:var(--cs-color-brand-umber);margin:0 0 5px">ĐIỀU 7 · HIỆU LỰC <span style="font-weight:400;font-size:11px;color:#3F4C55;font-style:italic">Article 7 · Effect</span></h2>
106
- <p style="font-size:13px;line-height:1.5;margin:0 0 1px">7.1. Quy chế có hiệu lực kể từ ngày ký, sau khi đã tham khảo ý kiến của tổ chức đại diện người lao động tại cơ sở, và được thông báo công khai đến toàn thể người lao động.</p><p style="font-size:12px;line-height:1.4;color:#3F4C55;font-style:italic;margin:0 0 3px">7.1. This Regulation takes effect on signature, having been the subject of consultation with the grassroots employee representative organization, and is communicated openly to all employees.</p>
107
- <p style="font-size:13px;line-height:1.5;margin:0 0 1px">7.2. Quy chế được xem xét lại ít nhất một lần mỗi năm.</p><p style="font-size:12px;line-height:1.4;color:#3F4C55;font-style:italic;margin:0">7.2. This Regulation is reviewed at least once a year.</p></div>
106
+ <div class="cs-avoid"><h2 style="font-size:12.5px;font-weight:800;color:var(--cs-color-brand-umber);margin:0 0 5px">ĐIỀU 7 · HIỆU LỰC <span style="font-weight:400;font-size:11px;color:var(--cs-doc-slate);font-style:italic">Article 7 · Effect</span></h2>
107
+ <p style="font-size:13px;line-height:1.5;margin:0 0 1px">7.1. Quy chế có hiệu lực kể từ ngày ký, sau khi đã tham khảo ý kiến của tổ chức đại diện người lao động tại cơ sở, và được thông báo công khai đến toàn thể người lao động.</p><p style="font-size:12px;line-height:1.4;color:var(--cs-doc-slate);font-style:italic;margin:0 0 3px">7.1. This Regulation takes effect on signature, having been the subject of consultation with the grassroots employee representative organization, and is communicated openly to all employees.</p>
108
+ <p style="font-size:13px;line-height:1.5;margin:0 0 1px">7.2. Quy chế được xem xét lại ít nhất một lần mỗi năm.</p><p style="font-size:12px;line-height:1.4;color:var(--cs-doc-slate);font-style:italic;margin:0">7.2. This Regulation is reviewed at least once a year.</p></div>
108
109
  </div>
109
110
 
110
111
  <div class="cs-avoid" style="margin-top:18px">
111
- <p style="font-size:13px;line-height:1.5;margin:0 0 1px">Thành phố Hồ Chí Minh, ngày <span style="background:#FDE68A;padding:0 3px">......</span> tháng <span style="background:#FDE68A;padding:0 3px">......</span> năm <span style="background:#FDE68A;padding:0 3px">......</span></p>
112
- <p style="font-size:12px;line-height:1.4;color:#3F4C55;font-style:italic;margin:0 0 14px">Ho Chi Minh City, <span style="background:#FDE68A;padding:0 3px">......</span> / <span style="background:#FDE68A;padding:0 3px">......</span> / <span style="background:#FDE68A;padding:0 3px">......</span></p>
112
+ <p style="font-size:13px;line-height:1.5;margin:0 0 1px">Thành phố Hồ Chí Minh, ngày <span style="background:var(--cs-doc-fill);padding:0 3px">......</span> tháng <span style="background:var(--cs-doc-fill);padding:0 3px">......</span> năm <span style="background:var(--cs-doc-fill);padding:0 3px">......</span></p>
113
+ <p style="font-size:12px;line-height:1.4;color:var(--cs-doc-slate);font-style:italic;margin:0 0 14px">Ho Chi Minh City, <span style="background:var(--cs-doc-fill);padding:0 3px">......</span> / <span style="background:var(--cs-doc-fill);padding:0 3px">......</span> / <span style="background:var(--cs-doc-fill);padding:0 3px">......</span></p>
113
114
  <div style="display:grid;grid-template-columns:1fr 1fr;gap:44px">
114
- <div style="text-align:center"><div style="font-weight:700;font-size:12.5px">ĐẠI DIỆN TẬP THỂ NGƯỜI LAO ĐỘNG</div><div style="font-size:11px;color:#3F4C55;font-style:italic">Employee Representative</div><div style="font-size:10.5px;margin-top:1px">(Ký, ghi rõ họ tên / <i style="color:#3F4C55">Sign and state full name</i>)</div><div style="height:60px"></div><div style="border-top:1px solid #1A1614;width:70%;margin:0 auto"></div></div>
115
- <div style="text-align:center"><div style="font-weight:700;font-size:12.5px">NGƯỜI SỬ DỤNG LAO ĐỘNG</div><div style="font-size:11px;color:#3F4C55;font-style:italic">The Employer</div><div style="font-size:10.5px;margin-top:1px">(Ký, ghi rõ họ tên và đóng dấu / <i style="color:#3F4C55">Sign, state full name, and affix seal</i>)</div><div style="height:60px"></div><div style="border-top:1px solid #1A1614;width:70%;margin:0 auto"></div></div>
115
+ <div style="text-align:center"><div style="font-weight:700;font-size:12.5px">ĐẠI DIỆN TẬP THỂ NGƯỜI LAO ĐỘNG</div><div style="font-size:11px;color:var(--cs-doc-slate);font-style:italic">Employee Representative</div><div style="font-size:10.5px;margin-top:1px">(Ký, ghi rõ họ tên / <i style="color:var(--cs-doc-slate)">Sign and state full name</i>)</div><div style="height:60px"></div><div style="border-top:1px solid var(--cs-doc-ink);width:70%;margin:0 auto"></div></div>
116
+ <div style="text-align:center"><div style="font-weight:700;font-size:12.5px">NGƯỜI SỬ DỤNG LAO ĐỘNG</div><div style="font-size:11px;color:var(--cs-doc-slate);font-style:italic">The Employer</div><div style="font-size:10.5px;margin-top:1px">(Ký, ghi rõ họ tên và đóng dấu / <i style="color:var(--cs-doc-slate)">Sign, state full name, and affix seal</i>)</div><div style="height:60px"></div><div style="border-top:1px solid var(--cs-doc-ink);width:70%;margin:0 auto"></div></div>
116
117
  </div>
117
118
  </div>
118
119
 
119
- <div style="border-top:1px solid var(--cs-color-border-default);padding-top:8px;margin-top:20px;display:flex;gap:10px;font-size:10.5px;color:var(--cs-color-text-muted);flex-wrap:wrap">Hiện Thực Hoá Ý Chí · <i style="color:#3F4C55">Turn Your Will Into Real</i><span>·</span>MST: 0316475200<span>·</span>info@cyberskill.world<span>·</span>(+84) 906 878 091<span style="margin-left:auto">Trang / Page 1</span></div>
120
+ <div style="border-top:1px solid var(--cs-color-border-default);padding-top:8px;margin-top:20px;display:flex;gap:10px;font-size:10.5px;color:var(--cs-color-text-muted);flex-wrap:wrap">Hiện Thực Hoá Ý Chí · <i style="color:var(--cs-doc-slate)">Turn Your Will Into Real</i><span>·</span>MST: 0316475200<span>·</span>info@cyberskill.world<span>·</span>(+84) 906 878 091<span style="margin-left:auto">Trang / Page 1</span></div>
120
121
  </div>
121
122
  </div>
122
123
  </x-dc>
@@ -1,9 +1,10 @@
1
1
  // Loads this design system into the template. In a consuming project, point
2
2
  // base at the bound DS folder relative to this file (e.g. '_ds/<folder>' at
3
3
  // the project root, '../_ds/<folder>' one level down) — one line to edit.
4
+ // Artifact head standard (UX-002 / B1): ensure <html lang> + <title> from @template.
4
5
  (() => {
5
6
  const base = '../..';
6
- for (const p of ['styles.css']) {
7
+ for (const p of ['dist/styles.min.css']) {
7
8
  const l = document.createElement('link');
8
9
  l.rel = 'stylesheet'; l.href = base + '/' + p;
9
10
  document.head.appendChild(l);
@@ -20,4 +21,35 @@
20
21
  };
21
22
  s.onerror = () => console.error('ds-base.js: failed to load ' + s.src + ' — if this is a consuming project, point the base line in ds-base.js at the bound _ds/<folder> tree relative to this page (e.g. _ds/<folder> at the project root, ../_ds/<folder> one level down); in a fresh design system this can just mean the bundle is not compiled yet');
22
23
  document.head.appendChild(s);
24
+
25
+ const syncLang = () => {
26
+ try {
27
+ const a = document.querySelector('[lang]');
28
+ const v = a && a.getAttribute('lang');
29
+ // Ignore unresolved DC holes like {{ langAttr }}
30
+ if (v && v.indexOf('{{') === -1) document.documentElement.setAttribute('lang', v);
31
+ else if (!document.documentElement.getAttribute('lang')) document.documentElement.setAttribute('lang', 'en');
32
+ } catch (e) { /* authoring host may sandbox */ }
33
+ };
34
+ const ensureHead = () => {
35
+ try {
36
+ if (!document.title || !document.title.trim()) {
37
+ const src = document.documentElement.innerHTML;
38
+ const m = src.match(/@template\s+name="([^"]+)"/);
39
+ if (m) document.title = m[1] + ' · CyberSkill';
40
+ }
41
+ syncLang();
42
+ const obs = new MutationObserver(syncLang);
43
+ obs.observe(document.body || document.documentElement, {
44
+ attributes: true,
45
+ attributeFilter: ['lang'],
46
+ subtree: true,
47
+ });
48
+ } catch (e) { /* authoring host may sandbox */ }
49
+ };
50
+ if (document.readyState === 'loading') {
51
+ document.addEventListener('DOMContentLoaded', ensureHead);
52
+ } else {
53
+ ensureHead();
54
+ }
23
55
  })();
@@ -1070,16 +1070,15 @@
1070
1070
  }
1071
1071
 
1072
1072
  // src/cdn.ts
1073
- var REACT_URL = "https://unpkg.com/umd-react@19.2.8/dist/react.production.min.js";
1074
- var REACT_SRI = "sha384-/nh8CKeV7Pk42Gpda6L4DM1JtZ2bwPOi+eh9O7+a1Y22UkGs8+mw3aW1shQ9FV30";
1075
- var REACT_DOM_URL = "https://unpkg.com/umd-react@19.2.8/dist/react-dom.production.min.js";
1076
- var REACT_DOM_SRI = "sha384-rhLCB72qrpcezgY2QW0panvW9IeO32m94nvuDVRD/iEGHXoUbjtijL6Xi/Z5/mzu";
1077
- var BABEL_URL = "https://unpkg.com/@babel/standalone@7.29.0/babel.min.js";
1078
- var BABEL_SRI = "sha384-m08KidiNqLdpJqLq95G/LEi8Qvjl/xUYll3QILypMoQ65QorJ9Lvtp2RXYGBFj1y";
1079
- function cdnScriptFor(url, sri) {
1073
+ var REACT_LOCAL = "../../_vendor/react/react.production.min.js";
1074
+ var REACT_DOM_LOCAL = "../../_vendor/react/react-dom.production.min.js";
1075
+ var BABEL_LOCAL = "../../_vendor/babel/babel.min.js";
1076
+ // Product surfaces are offline-first (UX-026 / D4): no third-party script origins.
1077
+ // Host editors may still remap via window.__resources[localPath].
1078
+ function localScriptFor(path) {
1080
1079
  const res = window.__resources;
1081
- const v = res ? res[url] : void 0;
1082
- return typeof v === "string" && v ? { src: v } : { src: url, integrity: sri };
1080
+ const v = res ? res[path] : void 0;
1081
+ return typeof v === "string" && v ? v : path;
1083
1082
  }
1084
1083
 
1085
1084
  // src/external.ts
@@ -1106,16 +1105,12 @@
1106
1105
  function ensureBabel() {
1107
1106
  if (window.Babel) return Promise.resolve();
1108
1107
  if (babelLoading) return babelLoading;
1109
- const babel = cdnScriptFor(BABEL_URL, BABEL_SRI);
1108
+ const src = localScriptFor(BABEL_LOCAL);
1110
1109
  babelLoading = new Promise((res, rej) => {
1111
1110
  const s = document.createElement("script");
1112
- s.src = babel.src;
1113
- if (babel.integrity) {
1114
- s.integrity = babel.integrity;
1115
- s.crossOrigin = "anonymous";
1116
- }
1111
+ s.src = src;
1117
1112
  s.onload = () => res();
1118
- s.onerror = rej;
1113
+ s.onerror = () => rej(new Error("failed to load local Babel: " + src));
1119
1114
  document.head.appendChild(s);
1120
1115
  });
1121
1116
  return babelLoading;
@@ -1768,11 +1763,9 @@
1768
1763
  function loadReactUmd() {
1769
1764
  const w = window;
1770
1765
  if (w.React && w.ReactDOM) return Promise.resolve();
1771
- const react = cdnScriptFor(REACT_URL, REACT_SRI);
1772
- const reactDom = cdnScriptFor(REACT_DOM_URL, REACT_DOM_SRI);
1773
1766
  return Promise.all([
1774
- loadScript(react.src, react.integrity),
1775
- loadScript(reactDom.src, reactDom.integrity)
1767
+ loadScript(localScriptFor(REACT_LOCAL)),
1768
+ loadScript(localScriptFor(REACT_DOM_LOCAL))
1776
1769
  ]).then(() => void 0);
1777
1770
  }
1778
1771
  function init() {