@cyberskill/design 1.5.1 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/DESIGN.md +1 -1
  2. package/README.md +4 -4
  3. package/SKILL.md +3 -3
  4. package/VERSION +1 -1
  5. package/_ds_bundle.js +2 -2
  6. package/_esm/cs.mjs +2 -2
  7. package/docs/contrast-report.md +1 -1
  8. package/docs/conventions.md +4 -4
  9. package/docs/quality-gates.md +2 -2
  10. package/docs/release-notes.md +1 -1
  11. package/docs/vi/contrast-report.md +1 -1
  12. package/docs/vi/conventions.md +2 -2
  13. package/docs/vi/quality-gates.md +2 -2
  14. package/docs/vi/release-notes.md +1 -1
  15. package/llms.txt +3 -3
  16. package/package.json +5 -4
  17. package/templates/_vendor/doc-export.js +435 -0
  18. package/templates/app-shell/ds-base.js +8 -0
  19. package/templates/article/ds-base.js +8 -0
  20. package/templates/auth/ds-base.js +8 -0
  21. package/templates/bod-deck/ds-base.js +8 -0
  22. package/templates/bod-investor-update/ds-base.js +8 -0
  23. package/templates/bod-memo/ds-base.js +8 -0
  24. package/templates/bod-minutes/ds-base.js +8 -0
  25. package/templates/bod-report/ds-base.js +8 -0
  26. package/templates/bod-resolution/ds-base.js +8 -0
  27. package/templates/culture-event-invite/ds-base.js +8 -0
  28. package/templates/dashboard/ds-base.js +8 -0
  29. package/templates/delivery-change-note/ds-base.js +8 -0
  30. package/templates/delivery-kickoff/ds-base.js +8 -0
  31. package/templates/delivery-qbr-deck/ds-base.js +8 -0
  32. package/templates/delivery-runbook/ds-base.js +8 -0
  33. package/templates/delivery-status-email/ds-base.js +8 -0
  34. package/templates/doc-style-guide/ds-base.js +8 -0
  35. package/templates/doc-suite-index/ds-base.js +8 -0
  36. package/templates/doc-templates/ds-base.js +8 -0
  37. package/templates/email/ds-base.js +8 -0
  38. package/templates/finance-dunning-email/ds-base.js +8 -0
  39. package/templates/finance-expense-report/ds-base.js +8 -0
  40. package/templates/finance-invoice/ds-base.js +8 -0
  41. package/templates/finance-quote/ds-base.js +8 -0
  42. package/templates/hr-announcement/ds-base.js +8 -0
  43. package/templates/hr-interview-kit/ds-base.js +8 -0
  44. package/templates/hr-offboarding/ds-base.js +8 -0
  45. package/templates/hr-performance-review/ds-base.js +8 -0
  46. package/templates/hr-pip/ds-base.js +8 -0
  47. package/templates/legal-msa/ds-base.js +8 -0
  48. package/templates/legal-sow/ds-base.js +8 -0
  49. package/templates/marketing-campaign-brief/ds-base.js +8 -0
  50. package/templates/marketing-case-study/ds-base.js +8 -0
  51. package/templates/marketing-launch/ds-base.js +8 -0
  52. package/templates/marketing-newsletter/ds-base.js +8 -0
  53. package/templates/marketing-page/ds-base.js +8 -0
  54. package/templates/marketing-press-release/ds-base.js +8 -0
  55. package/templates/marketing-social-kit/ds-base.js +8 -0
  56. package/templates/sales-one-pager/ds-base.js +8 -0
  57. package/templates/sales-proposal-deck/ds-base.js +8 -0
  58. package/templates/settings/ds-base.js +8 -0
  59. package/templates/slide-deck/ds-base.js +8 -0
  60. package/templates/team-meeting-agenda/ds-base.js +8 -0
  61. package/templates/tech-incident-report/ds-base.js +8 -0
  62. package/templates/tech-release-notes/ds-base.js +8 -0
  63. package/templates/tech-retro/ds-base.js +8 -0
  64. package/templates/tech-rfc/ds-base.js +8 -0
  65. package/templates/vn-appointment-transfer/ds-base.js +8 -0
  66. package/templates/vn-certificate-of-employment/ds-base.js +8 -0
  67. package/templates/vn-code-of-conduct/ds-base.js +8 -0
  68. package/templates/vn-compensation-regulation/ds-base.js +8 -0
  69. package/templates/vn-contract-amendment/ds-base.js +8 -0
  70. package/templates/vn-contractor-agreement/ds-base.js +8 -0
  71. package/templates/vn-data-protection-policy/ds-base.js +8 -0
  72. package/templates/vn-disciplinary-case-file/ds-base.js +8 -0
  73. package/templates/vn-disciplinary-schedule/ds-base.js +8 -0
  74. package/templates/vn-employee-request/ds-base.js +8 -0
  75. package/templates/vn-exit-handover/ds-base.js +8 -0
  76. package/templates/vn-foreign-employee-pack/ds-base.js +8 -0
  77. package/templates/vn-framework-agreement/ds-base.js +8 -0
  78. package/templates/vn-grassroots-democracy/ds-base.js +8 -0
  79. package/templates/vn-infosec-policy/ds-base.js +8 -0
  80. package/templates/vn-internal-labor-regulations/ds-base.js +8 -0
  81. package/templates/vn-internship-agreement/ds-base.js +8 -0
  82. package/templates/vn-job-description/ds-base.js +8 -0
  83. package/templates/vn-labor-contract/ds-base.js +8 -0
  84. package/templates/vn-labour-management-book/ds-base.js +8 -0
  85. package/templates/vn-mutual-nda/ds-base.js +8 -0
  86. package/templates/vn-ndnca-ip/ds-base.js +8 -0
  87. package/templates/vn-offer-letter/ds-base.js +8 -0
  88. package/templates/vn-onboarding-checklist/ds-base.js +8 -0
  89. package/templates/vn-pdpl-consent/ds-base.js +8 -0
  90. package/templates/vn-performance-evaluation-regulation/ds-base.js +8 -0
  91. package/templates/vn-performance-review-form/ds-base.js +8 -0
  92. package/templates/vn-phantom-stock/ds-base.js +8 -0
  93. package/templates/vn-probation-contract/ds-base.js +8 -0
  94. package/templates/vn-receipt-acknowledgement/ds-base.js +8 -0
  95. package/templates/vn-remote-work-policy/ds-base.js +8 -0
  96. package/templates/vn-resignation-letter/ds-base.js +8 -0
  97. package/templates/vn-salary-scale/ds-base.js +8 -0
  98. package/templates/vn-sow-appendix/ds-base.js +8 -0
  99. package/templates/vn-termination-decision/ds-base.js +8 -0
  100. package/templates/vn-total-rewards-appendix/ds-base.js +8 -0
  101. package/templates/vn-training-commitment/ds-base.js +8 -0
  102. package/templates/vn-travel-expense-policy/ds-base.js +8 -0
  103. package/tokens/element-seeds.json +1 -1
  104. package/tokens/native/CSTokens.kt +1 -1
  105. package/tokens/native/CSTokens.swift +1 -1
  106. package/tokens/native/cs_tokens.dart +1 -1
  107. package/tokens/provenance.json +6 -6
  108. package/tokens/tokens.dtcg.json +1 -1
  109. package/tokens/tokens.js +2 -2
  110. package/tokens/tokens.json +1 -1
@@ -22,6 +22,14 @@
22
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');
23
23
  document.head.appendChild(s);
24
24
 
25
+ // Print documents: PDF (window.print) + editable DOCX toolbar (TASK-IMP-022).
26
+ // Path is relative to this template folder → templates/_vendor/doc-export.js
27
+ if (document.querySelector('meta[name="omelette-owns-print"]')) {
28
+ const ex = document.createElement('script');
29
+ ex.src = '../_vendor/doc-export.js';
30
+ document.head.appendChild(ex);
31
+ }
32
+
25
33
  const syncLang = () => {
26
34
  try {
27
35
  const a = document.querySelector('[lang]');
@@ -22,6 +22,14 @@
22
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');
23
23
  document.head.appendChild(s);
24
24
 
25
+ // Print documents: PDF (window.print) + editable DOCX toolbar (TASK-IMP-022).
26
+ // Path is relative to this template folder → templates/_vendor/doc-export.js
27
+ if (document.querySelector('meta[name="omelette-owns-print"]')) {
28
+ const ex = document.createElement('script');
29
+ ex.src = '../_vendor/doc-export.js';
30
+ document.head.appendChild(ex);
31
+ }
32
+
25
33
  const syncLang = () => {
26
34
  try {
27
35
  const a = document.querySelector('[lang]');
@@ -22,6 +22,14 @@
22
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');
23
23
  document.head.appendChild(s);
24
24
 
25
+ // Print documents: PDF (window.print) + editable DOCX toolbar (TASK-IMP-022).
26
+ // Path is relative to this template folder → templates/_vendor/doc-export.js
27
+ if (document.querySelector('meta[name="omelette-owns-print"]')) {
28
+ const ex = document.createElement('script');
29
+ ex.src = '../_vendor/doc-export.js';
30
+ document.head.appendChild(ex);
31
+ }
32
+
25
33
  const syncLang = () => {
26
34
  try {
27
35
  const a = document.querySelector('[lang]');
@@ -22,6 +22,14 @@
22
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');
23
23
  document.head.appendChild(s);
24
24
 
25
+ // Print documents: PDF (window.print) + editable DOCX toolbar (TASK-IMP-022).
26
+ // Path is relative to this template folder → templates/_vendor/doc-export.js
27
+ if (document.querySelector('meta[name="omelette-owns-print"]')) {
28
+ const ex = document.createElement('script');
29
+ ex.src = '../_vendor/doc-export.js';
30
+ document.head.appendChild(ex);
31
+ }
32
+
25
33
  const syncLang = () => {
26
34
  try {
27
35
  const a = document.querySelector('[lang]');
@@ -22,6 +22,14 @@
22
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');
23
23
  document.head.appendChild(s);
24
24
 
25
+ // Print documents: PDF (window.print) + editable DOCX toolbar (TASK-IMP-022).
26
+ // Path is relative to this template folder → templates/_vendor/doc-export.js
27
+ if (document.querySelector('meta[name="omelette-owns-print"]')) {
28
+ const ex = document.createElement('script');
29
+ ex.src = '../_vendor/doc-export.js';
30
+ document.head.appendChild(ex);
31
+ }
32
+
25
33
  const syncLang = () => {
26
34
  try {
27
35
  const a = document.querySelector('[lang]');
@@ -22,6 +22,14 @@
22
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');
23
23
  document.head.appendChild(s);
24
24
 
25
+ // Print documents: PDF (window.print) + editable DOCX toolbar (TASK-IMP-022).
26
+ // Path is relative to this template folder → templates/_vendor/doc-export.js
27
+ if (document.querySelector('meta[name="omelette-owns-print"]')) {
28
+ const ex = document.createElement('script');
29
+ ex.src = '../_vendor/doc-export.js';
30
+ document.head.appendChild(ex);
31
+ }
32
+
25
33
  const syncLang = () => {
26
34
  try {
27
35
  const a = document.querySelector('[lang]');
@@ -22,6 +22,14 @@
22
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');
23
23
  document.head.appendChild(s);
24
24
 
25
+ // Print documents: PDF (window.print) + editable DOCX toolbar (TASK-IMP-022).
26
+ // Path is relative to this template folder → templates/_vendor/doc-export.js
27
+ if (document.querySelector('meta[name="omelette-owns-print"]')) {
28
+ const ex = document.createElement('script');
29
+ ex.src = '../_vendor/doc-export.js';
30
+ document.head.appendChild(ex);
31
+ }
32
+
25
33
  const syncLang = () => {
26
34
  try {
27
35
  const a = document.querySelector('[lang]');
@@ -22,6 +22,14 @@
22
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');
23
23
  document.head.appendChild(s);
24
24
 
25
+ // Print documents: PDF (window.print) + editable DOCX toolbar (TASK-IMP-022).
26
+ // Path is relative to this template folder → templates/_vendor/doc-export.js
27
+ if (document.querySelector('meta[name="omelette-owns-print"]')) {
28
+ const ex = document.createElement('script');
29
+ ex.src = '../_vendor/doc-export.js';
30
+ document.head.appendChild(ex);
31
+ }
32
+
25
33
  const syncLang = () => {
26
34
  try {
27
35
  const a = document.querySelector('[lang]');
@@ -22,6 +22,14 @@
22
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');
23
23
  document.head.appendChild(s);
24
24
 
25
+ // Print documents: PDF (window.print) + editable DOCX toolbar (TASK-IMP-022).
26
+ // Path is relative to this template folder → templates/_vendor/doc-export.js
27
+ if (document.querySelector('meta[name="omelette-owns-print"]')) {
28
+ const ex = document.createElement('script');
29
+ ex.src = '../_vendor/doc-export.js';
30
+ document.head.appendChild(ex);
31
+ }
32
+
25
33
  const syncLang = () => {
26
34
  try {
27
35
  const a = document.querySelector('[lang]');
@@ -22,6 +22,14 @@
22
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');
23
23
  document.head.appendChild(s);
24
24
 
25
+ // Print documents: PDF (window.print) + editable DOCX toolbar (TASK-IMP-022).
26
+ // Path is relative to this template folder → templates/_vendor/doc-export.js
27
+ if (document.querySelector('meta[name="omelette-owns-print"]')) {
28
+ const ex = document.createElement('script');
29
+ ex.src = '../_vendor/doc-export.js';
30
+ document.head.appendChild(ex);
31
+ }
32
+
25
33
  const syncLang = () => {
26
34
  try {
27
35
  const a = document.querySelector('[lang]');
@@ -22,6 +22,14 @@
22
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');
23
23
  document.head.appendChild(s);
24
24
 
25
+ // Print documents: PDF (window.print) + editable DOCX toolbar (TASK-IMP-022).
26
+ // Path is relative to this template folder → templates/_vendor/doc-export.js
27
+ if (document.querySelector('meta[name="omelette-owns-print"]')) {
28
+ const ex = document.createElement('script');
29
+ ex.src = '../_vendor/doc-export.js';
30
+ document.head.appendChild(ex);
31
+ }
32
+
25
33
  const syncLang = () => {
26
34
  try {
27
35
  const a = document.querySelector('[lang]');
@@ -22,6 +22,14 @@
22
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');
23
23
  document.head.appendChild(s);
24
24
 
25
+ // Print documents: PDF (window.print) + editable DOCX toolbar (TASK-IMP-022).
26
+ // Path is relative to this template folder → templates/_vendor/doc-export.js
27
+ if (document.querySelector('meta[name="omelette-owns-print"]')) {
28
+ const ex = document.createElement('script');
29
+ ex.src = '../_vendor/doc-export.js';
30
+ document.head.appendChild(ex);
31
+ }
32
+
25
33
  const syncLang = () => {
26
34
  try {
27
35
  const a = document.querySelector('[lang]');
@@ -22,6 +22,14 @@
22
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');
23
23
  document.head.appendChild(s);
24
24
 
25
+ // Print documents: PDF (window.print) + editable DOCX toolbar (TASK-IMP-022).
26
+ // Path is relative to this template folder → templates/_vendor/doc-export.js
27
+ if (document.querySelector('meta[name="omelette-owns-print"]')) {
28
+ const ex = document.createElement('script');
29
+ ex.src = '../_vendor/doc-export.js';
30
+ document.head.appendChild(ex);
31
+ }
32
+
25
33
  const syncLang = () => {
26
34
  try {
27
35
  const a = document.querySelector('[lang]');
@@ -22,6 +22,14 @@
22
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');
23
23
  document.head.appendChild(s);
24
24
 
25
+ // Print documents: PDF (window.print) + editable DOCX toolbar (TASK-IMP-022).
26
+ // Path is relative to this template folder → templates/_vendor/doc-export.js
27
+ if (document.querySelector('meta[name="omelette-owns-print"]')) {
28
+ const ex = document.createElement('script');
29
+ ex.src = '../_vendor/doc-export.js';
30
+ document.head.appendChild(ex);
31
+ }
32
+
25
33
  const syncLang = () => {
26
34
  try {
27
35
  const a = document.querySelector('[lang]');
@@ -22,6 +22,14 @@
22
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');
23
23
  document.head.appendChild(s);
24
24
 
25
+ // Print documents: PDF (window.print) + editable DOCX toolbar (TASK-IMP-022).
26
+ // Path is relative to this template folder → templates/_vendor/doc-export.js
27
+ if (document.querySelector('meta[name="omelette-owns-print"]')) {
28
+ const ex = document.createElement('script');
29
+ ex.src = '../_vendor/doc-export.js';
30
+ document.head.appendChild(ex);
31
+ }
32
+
25
33
  const syncLang = () => {
26
34
  try {
27
35
  const a = document.querySelector('[lang]');
@@ -22,6 +22,14 @@
22
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');
23
23
  document.head.appendChild(s);
24
24
 
25
+ // Print documents: PDF (window.print) + editable DOCX toolbar (TASK-IMP-022).
26
+ // Path is relative to this template folder → templates/_vendor/doc-export.js
27
+ if (document.querySelector('meta[name="omelette-owns-print"]')) {
28
+ const ex = document.createElement('script');
29
+ ex.src = '../_vendor/doc-export.js';
30
+ document.head.appendChild(ex);
31
+ }
32
+
25
33
  const syncLang = () => {
26
34
  try {
27
35
  const a = document.querySelector('[lang]');
@@ -22,6 +22,14 @@
22
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');
23
23
  document.head.appendChild(s);
24
24
 
25
+ // Print documents: PDF (window.print) + editable DOCX toolbar (TASK-IMP-022).
26
+ // Path is relative to this template folder → templates/_vendor/doc-export.js
27
+ if (document.querySelector('meta[name="omelette-owns-print"]')) {
28
+ const ex = document.createElement('script');
29
+ ex.src = '../_vendor/doc-export.js';
30
+ document.head.appendChild(ex);
31
+ }
32
+
25
33
  const syncLang = () => {
26
34
  try {
27
35
  const a = document.querySelector('[lang]');
@@ -22,6 +22,14 @@
22
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');
23
23
  document.head.appendChild(s);
24
24
 
25
+ // Print documents: PDF (window.print) + editable DOCX toolbar (TASK-IMP-022).
26
+ // Path is relative to this template folder → templates/_vendor/doc-export.js
27
+ if (document.querySelector('meta[name="omelette-owns-print"]')) {
28
+ const ex = document.createElement('script');
29
+ ex.src = '../_vendor/doc-export.js';
30
+ document.head.appendChild(ex);
31
+ }
32
+
25
33
  const syncLang = () => {
26
34
  try {
27
35
  const a = document.querySelector('[lang]');
@@ -22,6 +22,14 @@
22
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');
23
23
  document.head.appendChild(s);
24
24
 
25
+ // Print documents: PDF (window.print) + editable DOCX toolbar (TASK-IMP-022).
26
+ // Path is relative to this template folder → templates/_vendor/doc-export.js
27
+ if (document.querySelector('meta[name="omelette-owns-print"]')) {
28
+ const ex = document.createElement('script');
29
+ ex.src = '../_vendor/doc-export.js';
30
+ document.head.appendChild(ex);
31
+ }
32
+
25
33
  const syncLang = () => {
26
34
  try {
27
35
  const a = document.querySelector('[lang]');
@@ -22,6 +22,14 @@
22
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');
23
23
  document.head.appendChild(s);
24
24
 
25
+ // Print documents: PDF (window.print) + editable DOCX toolbar (TASK-IMP-022).
26
+ // Path is relative to this template folder → templates/_vendor/doc-export.js
27
+ if (document.querySelector('meta[name="omelette-owns-print"]')) {
28
+ const ex = document.createElement('script');
29
+ ex.src = '../_vendor/doc-export.js';
30
+ document.head.appendChild(ex);
31
+ }
32
+
25
33
  const syncLang = () => {
26
34
  try {
27
35
  const a = document.querySelector('[lang]');
@@ -22,6 +22,14 @@
22
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');
23
23
  document.head.appendChild(s);
24
24
 
25
+ // Print documents: PDF (window.print) + editable DOCX toolbar (TASK-IMP-022).
26
+ // Path is relative to this template folder → templates/_vendor/doc-export.js
27
+ if (document.querySelector('meta[name="omelette-owns-print"]')) {
28
+ const ex = document.createElement('script');
29
+ ex.src = '../_vendor/doc-export.js';
30
+ document.head.appendChild(ex);
31
+ }
32
+
25
33
  const syncLang = () => {
26
34
  try {
27
35
  const a = document.querySelector('[lang]');
@@ -22,6 +22,14 @@
22
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');
23
23
  document.head.appendChild(s);
24
24
 
25
+ // Print documents: PDF (window.print) + editable DOCX toolbar (TASK-IMP-022).
26
+ // Path is relative to this template folder → templates/_vendor/doc-export.js
27
+ if (document.querySelector('meta[name="omelette-owns-print"]')) {
28
+ const ex = document.createElement('script');
29
+ ex.src = '../_vendor/doc-export.js';
30
+ document.head.appendChild(ex);
31
+ }
32
+
25
33
  const syncLang = () => {
26
34
  try {
27
35
  const a = document.querySelector('[lang]');
@@ -22,6 +22,14 @@
22
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');
23
23
  document.head.appendChild(s);
24
24
 
25
+ // Print documents: PDF (window.print) + editable DOCX toolbar (TASK-IMP-022).
26
+ // Path is relative to this template folder → templates/_vendor/doc-export.js
27
+ if (document.querySelector('meta[name="omelette-owns-print"]')) {
28
+ const ex = document.createElement('script');
29
+ ex.src = '../_vendor/doc-export.js';
30
+ document.head.appendChild(ex);
31
+ }
32
+
25
33
  const syncLang = () => {
26
34
  try {
27
35
  const a = document.querySelector('[lang]');
@@ -22,6 +22,14 @@
22
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');
23
23
  document.head.appendChild(s);
24
24
 
25
+ // Print documents: PDF (window.print) + editable DOCX toolbar (TASK-IMP-022).
26
+ // Path is relative to this template folder → templates/_vendor/doc-export.js
27
+ if (document.querySelector('meta[name="omelette-owns-print"]')) {
28
+ const ex = document.createElement('script');
29
+ ex.src = '../_vendor/doc-export.js';
30
+ document.head.appendChild(ex);
31
+ }
32
+
25
33
  const syncLang = () => {
26
34
  try {
27
35
  const a = document.querySelector('[lang]');
@@ -22,6 +22,14 @@
22
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');
23
23
  document.head.appendChild(s);
24
24
 
25
+ // Print documents: PDF (window.print) + editable DOCX toolbar (TASK-IMP-022).
26
+ // Path is relative to this template folder → templates/_vendor/doc-export.js
27
+ if (document.querySelector('meta[name="omelette-owns-print"]')) {
28
+ const ex = document.createElement('script');
29
+ ex.src = '../_vendor/doc-export.js';
30
+ document.head.appendChild(ex);
31
+ }
32
+
25
33
  const syncLang = () => {
26
34
  try {
27
35
  const a = document.querySelector('[lang]');
@@ -22,6 +22,14 @@
22
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');
23
23
  document.head.appendChild(s);
24
24
 
25
+ // Print documents: PDF (window.print) + editable DOCX toolbar (TASK-IMP-022).
26
+ // Path is relative to this template folder → templates/_vendor/doc-export.js
27
+ if (document.querySelector('meta[name="omelette-owns-print"]')) {
28
+ const ex = document.createElement('script');
29
+ ex.src = '../_vendor/doc-export.js';
30
+ document.head.appendChild(ex);
31
+ }
32
+
25
33
  const syncLang = () => {
26
34
  try {
27
35
  const a = document.querySelector('[lang]');
@@ -22,6 +22,14 @@
22
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');
23
23
  document.head.appendChild(s);
24
24
 
25
+ // Print documents: PDF (window.print) + editable DOCX toolbar (TASK-IMP-022).
26
+ // Path is relative to this template folder → templates/_vendor/doc-export.js
27
+ if (document.querySelector('meta[name="omelette-owns-print"]')) {
28
+ const ex = document.createElement('script');
29
+ ex.src = '../_vendor/doc-export.js';
30
+ document.head.appendChild(ex);
31
+ }
32
+
25
33
  const syncLang = () => {
26
34
  try {
27
35
  const a = document.querySelector('[lang]');
@@ -22,6 +22,14 @@
22
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');
23
23
  document.head.appendChild(s);
24
24
 
25
+ // Print documents: PDF (window.print) + editable DOCX toolbar (TASK-IMP-022).
26
+ // Path is relative to this template folder → templates/_vendor/doc-export.js
27
+ if (document.querySelector('meta[name="omelette-owns-print"]')) {
28
+ const ex = document.createElement('script');
29
+ ex.src = '../_vendor/doc-export.js';
30
+ document.head.appendChild(ex);
31
+ }
32
+
25
33
  const syncLang = () => {
26
34
  try {
27
35
  const a = document.querySelector('[lang]');
@@ -22,6 +22,14 @@
22
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');
23
23
  document.head.appendChild(s);
24
24
 
25
+ // Print documents: PDF (window.print) + editable DOCX toolbar (TASK-IMP-022).
26
+ // Path is relative to this template folder → templates/_vendor/doc-export.js
27
+ if (document.querySelector('meta[name="omelette-owns-print"]')) {
28
+ const ex = document.createElement('script');
29
+ ex.src = '../_vendor/doc-export.js';
30
+ document.head.appendChild(ex);
31
+ }
32
+
25
33
  const syncLang = () => {
26
34
  try {
27
35
  const a = document.querySelector('[lang]');
@@ -22,6 +22,14 @@
22
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');
23
23
  document.head.appendChild(s);
24
24
 
25
+ // Print documents: PDF (window.print) + editable DOCX toolbar (TASK-IMP-022).
26
+ // Path is relative to this template folder → templates/_vendor/doc-export.js
27
+ if (document.querySelector('meta[name="omelette-owns-print"]')) {
28
+ const ex = document.createElement('script');
29
+ ex.src = '../_vendor/doc-export.js';
30
+ document.head.appendChild(ex);
31
+ }
32
+
25
33
  const syncLang = () => {
26
34
  try {
27
35
  const a = document.querySelector('[lang]');
@@ -22,6 +22,14 @@
22
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');
23
23
  document.head.appendChild(s);
24
24
 
25
+ // Print documents: PDF (window.print) + editable DOCX toolbar (TASK-IMP-022).
26
+ // Path is relative to this template folder → templates/_vendor/doc-export.js
27
+ if (document.querySelector('meta[name="omelette-owns-print"]')) {
28
+ const ex = document.createElement('script');
29
+ ex.src = '../_vendor/doc-export.js';
30
+ document.head.appendChild(ex);
31
+ }
32
+
25
33
  const syncLang = () => {
26
34
  try {
27
35
  const a = document.querySelector('[lang]');
@@ -22,6 +22,14 @@
22
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');
23
23
  document.head.appendChild(s);
24
24
 
25
+ // Print documents: PDF (window.print) + editable DOCX toolbar (TASK-IMP-022).
26
+ // Path is relative to this template folder → templates/_vendor/doc-export.js
27
+ if (document.querySelector('meta[name="omelette-owns-print"]')) {
28
+ const ex = document.createElement('script');
29
+ ex.src = '../_vendor/doc-export.js';
30
+ document.head.appendChild(ex);
31
+ }
32
+
25
33
  const syncLang = () => {
26
34
  try {
27
35
  const a = document.querySelector('[lang]');
@@ -22,6 +22,14 @@
22
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');
23
23
  document.head.appendChild(s);
24
24
 
25
+ // Print documents: PDF (window.print) + editable DOCX toolbar (TASK-IMP-022).
26
+ // Path is relative to this template folder → templates/_vendor/doc-export.js
27
+ if (document.querySelector('meta[name="omelette-owns-print"]')) {
28
+ const ex = document.createElement('script');
29
+ ex.src = '../_vendor/doc-export.js';
30
+ document.head.appendChild(ex);
31
+ }
32
+
25
33
  const syncLang = () => {
26
34
  try {
27
35
  const a = document.querySelector('[lang]');
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$meta": {
3
3
  "system": "CyberSkill Design System",
4
- "version": "1.5.1",
4
+ "version": "1.6.0",
5
5
  "note": "OKLCH seed contract for the 15 element packs × light/dark (30 sets). SoT for scripts/generate-element-packs.mjs — do not hand-edit tokens/elements.css. Owner bar (Jul 2026): soft/middle/deep clearly distinct; middle intensity synced across elements; harmonious role palettes; light↔dark same-hue identity. Public variant names unchanged."
6
6
  },
7
7
  "intensity": {
@@ -1,6 +1,6 @@
1
1
  // CyberSkill Design System — native design tokens.
2
2
  // GENERATED from tokens/tokens.dtcg.json — do not hand-edit; regenerate on token change.
3
- // release v1.5.1 · source sha256 6777be7e2f0abb1f…
3
+ // release v1.6.0 · source sha256 8d4df3d6de072079…
4
4
  // conversions: rem→px at 16 · em→…Em relative doubles · rgba alpha→ARGB byte (round(a*255)) · durations in ms
5
5
  // dark element packs: see $extensions.overrides.elementsDark
6
6
  // provenance: tokens/provenance.json · parity gate: _audit/token-pipeline-test.html
@@ -1,6 +1,6 @@
1
1
  // CyberSkill Design System — native design tokens.
2
2
  // GENERATED from tokens/tokens.dtcg.json — do not hand-edit; regenerate on token change.
3
- // release v1.5.1 · source sha256 6777be7e2f0abb1f…
3
+ // release v1.6.0 · source sha256 8d4df3d6de072079…
4
4
  // conversions: rem→px at 16 · em→…Em relative doubles · rgba alpha→ARGB byte (round(a*255)) · durations in ms
5
5
  // dark element packs: see $extensions.overrides.elementsDark
6
6
  // provenance: tokens/provenance.json · parity gate: _audit/token-pipeline-test.html
@@ -1,6 +1,6 @@
1
1
  // CyberSkill Design System — native design tokens.
2
2
  // GENERATED from tokens/tokens.dtcg.json — do not hand-edit; regenerate on token change.
3
- // release v1.5.1 · source sha256 6777be7e2f0abb1f…
3
+ // release v1.6.0 · source sha256 8d4df3d6de072079…
4
4
  // conversions: rem→px at 16 · em→…Em relative doubles · rgba alpha→ARGB byte (round(a*255)) · durations in ms
5
5
  // dark element packs: see $extensions.overrides.elementsDark
6
6
  // provenance: tokens/provenance.json · parity gate: _audit/token-pipeline-test.html
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "system": "CyberSkill Design System",
3
- "release": "1.5.1",
3
+ "release": "1.6.0",
4
4
  "source": "tokens/tokens.dtcg.json",
5
- "sourceSha256": "6777be7e2f0abb1f584895195c14422ce0c2c4014131fffd09184d448fbe9fb7",
5
+ "sourceSha256": "8d4df3d6de0720790952c9b164f9d728a4bbb7c2ba9a4b766296523c7f460adb",
6
6
  "dtcgStamp": {
7
- "version": "1.5.1",
7
+ "version": "1.6.0",
8
8
  "generated": "2026-07-23"
9
9
  },
10
10
  "conversions": {
@@ -36,17 +36,17 @@
36
36
  {
37
37
  "file": "tokens/native/CSTokens.swift",
38
38
  "lang": "swift",
39
- "sha256": "5f20925cda544afea83eaa8aed92a089dc59a90901f1b9c28369ab60f1cbc428"
39
+ "sha256": "e63182af5504286afabde790ad5bbeeaf5fc6627d9833550dd98bb00edc6c7e6"
40
40
  },
41
41
  {
42
42
  "file": "tokens/native/CSTokens.kt",
43
43
  "lang": "kotlin",
44
- "sha256": "f5fda78ec741016205d6c807b70ce2fc728700e1cd542e22750cdea7cce3674f"
44
+ "sha256": "f654349f6726e2c1e0902f9259d3c29c9da2b3c71d15120062031bfe8783ab07"
45
45
  },
46
46
  {
47
47
  "file": "tokens/native/cs_tokens.dart",
48
48
  "lang": "dart",
49
- "sha256": "b0be5bb6c2c832aa84d06da1e841b4f2d53108e8b6528092d22299fa9a897f5d"
49
+ "sha256": "0bbb253a8a373a81c09ae1db8b0e138f9363058c5dd8ca87d67630114a96ab6d"
50
50
  }
51
51
  ]
52
52
  }
@@ -3,7 +3,7 @@
3
3
  "$extensions": {
4
4
  "com.cyberskill": {
5
5
  "system": "CyberSkill Design System",
6
- "version": "1.5.1",
6
+ "version": "1.6.0",
7
7
  "generated": "2026-07-23",
8
8
  "source": "tokens/tokens.json",
9
9
  "note": "Scope overrides (dark/system theme · 15 element×variant packs) are carried under $extensions.overrides keyed by CSS selector — apply the matching selector on :root/ancestor to activate.",