@cyberskill/design 2.2.0 → 2.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (337) hide show
  1. package/DESIGN.md +68 -1
  2. package/README.md +74 -143
  3. package/SECURITY.md +4 -4
  4. package/VERSION +1 -1
  5. package/_ds_bundle.js +2 -2
  6. package/_ds_bundle.js.map +1 -1
  7. package/_ds_manifest.json +30 -30
  8. package/_esm/cs.mjs +2 -2
  9. package/base/collections.css +1 -1
  10. package/base/components.css +8 -3
  11. package/base/controls.css +6 -6
  12. package/base/data.css +2 -0
  13. package/base/feedback.css +1 -1
  14. package/base/glass.css +3 -0
  15. package/base/interaction.css +1 -1
  16. package/base/navigation.css +1 -1
  17. package/base/responsive.css +4 -0
  18. package/base/shell.css +5 -5
  19. package/base/typography.css +4 -0
  20. package/components/api-discovery.json +1 -1
  21. package/components/api-index.json +14 -14
  22. package/components/forms/editor-parser.js +1 -1
  23. package/components/lifecycle.json +13 -13
  24. package/components/prompt-api.json +2 -2
  25. package/components/release-compatibility.json +2 -28
  26. package/components/scenarios.json +321 -28
  27. package/components/specifications.json +7546 -3515
  28. package/components/static-html-reference.json +19 -19
  29. package/dist/esm/_esm/react.mjs +2 -2
  30. package/dist/esm/build.json +22 -22
  31. package/dist/esm/chunks/{chunk-CKBL3UEA.mjs → chunk-GQDUCHRU.mjs} +2 -2
  32. package/dist/esm/chunks/{chunk-JJG5ENFU.mjs → chunk-XDJRVUEM.mjs} +1 -1
  33. package/dist/esm/chunks/{chunk-JJG5ENFU.mjs.map → chunk-XDJRVUEM.mjs.map} +1 -1
  34. package/dist/esm/components/forms/Editor.mjs +2 -2
  35. package/dist/esm/components/forms/editor-schema.mjs +1 -1
  36. package/dist/styles.min.css +1 -1
  37. package/docs/component-scenarios.md +1 -1
  38. package/docs/consuming.md +1 -1
  39. package/docs/contrast-report.md +1 -1
  40. package/docs/conventions.md +1 -1
  41. package/docs/manual-at-matrix.md +3 -3
  42. package/docs/reference-catalog.json +25 -25
  43. package/docs/release-notes.md +26 -1
  44. package/docs/releasing.md +4 -2
  45. package/docs/static-html-reference.md +18 -18
  46. package/docs/template-inventory.json +1 -1
  47. package/docs/vi/component-scenarios.md +1 -1
  48. package/docs/vi/consuming.md +1 -1
  49. package/docs/vi/contrast-report.md +1 -1
  50. package/docs/vi/conventions.md +1 -1
  51. package/docs/vi/decisions/component-specification-evidence.md +1 -1
  52. package/docs/vi/entrypoints/DESIGN.md +68 -1
  53. package/docs/vi/entrypoints/README.md +85 -151
  54. package/docs/vi/manual-at-matrix.md +3 -3
  55. package/docs/vi/release-notes.md +26 -1
  56. package/docs/vi/releasing.md +4 -2
  57. package/docs/vi/static-html-reference.md +18 -18
  58. package/docs/viewer.html +76 -25
  59. package/guidance/agent-contract.json +2 -2
  60. package/package.json +14 -14
  61. package/styles/components/manifest.json +147 -136
  62. package/styles.layered.css +28 -16
  63. package/styles.layered.provenance.json +13 -13
  64. package/tokens/declarations.json +88 -40
  65. package/tokens/element-seeds.json +1 -1
  66. package/tokens/modes/dark__default__comfortable__high.dtcg.json +1 -1
  67. package/tokens/modes/dark__default__comfortable__standard.dtcg.json +1 -1
  68. package/tokens/modes/dark__default__compact__high.dtcg.json +1 -1
  69. package/tokens/modes/dark__default__compact__standard.dtcg.json +1 -1
  70. package/tokens/modes/dark__hoa-lava__comfortable__high.dtcg.json +1 -1
  71. package/tokens/modes/dark__hoa-lava__comfortable__standard.dtcg.json +1 -1
  72. package/tokens/modes/dark__hoa-lava__compact__high.dtcg.json +1 -1
  73. package/tokens/modes/dark__hoa-lava__compact__standard.dtcg.json +1 -1
  74. package/tokens/modes/dark__hoa-plasma__comfortable__high.dtcg.json +1 -1
  75. package/tokens/modes/dark__hoa-plasma__comfortable__standard.dtcg.json +1 -1
  76. package/tokens/modes/dark__hoa-plasma__compact__high.dtcg.json +1 -1
  77. package/tokens/modes/dark__hoa-plasma__compact__standard.dtcg.json +1 -1
  78. package/tokens/modes/dark__hoa__comfortable__high.dtcg.json +1 -1
  79. package/tokens/modes/dark__hoa__comfortable__standard.dtcg.json +1 -1
  80. package/tokens/modes/dark__hoa__compact__high.dtcg.json +1 -1
  81. package/tokens/modes/dark__hoa__compact__standard.dtcg.json +1 -1
  82. package/tokens/modes/dark__kim-steel__comfortable__high.dtcg.json +1 -1
  83. package/tokens/modes/dark__kim-steel__comfortable__standard.dtcg.json +1 -1
  84. package/tokens/modes/dark__kim-steel__compact__high.dtcg.json +1 -1
  85. package/tokens/modes/dark__kim-steel__compact__standard.dtcg.json +1 -1
  86. package/tokens/modes/dark__kim-titanium__comfortable__high.dtcg.json +1 -1
  87. package/tokens/modes/dark__kim-titanium__comfortable__standard.dtcg.json +1 -1
  88. package/tokens/modes/dark__kim-titanium__compact__high.dtcg.json +1 -1
  89. package/tokens/modes/dark__kim-titanium__compact__standard.dtcg.json +1 -1
  90. package/tokens/modes/dark__kim__comfortable__high.dtcg.json +1 -1
  91. package/tokens/modes/dark__kim__comfortable__standard.dtcg.json +1 -1
  92. package/tokens/modes/dark__kim__compact__high.dtcg.json +1 -1
  93. package/tokens/modes/dark__kim__compact__standard.dtcg.json +1 -1
  94. package/tokens/modes/dark__moc-bamboo__comfortable__high.dtcg.json +1 -1
  95. package/tokens/modes/dark__moc-bamboo__comfortable__standard.dtcg.json +1 -1
  96. package/tokens/modes/dark__moc-bamboo__compact__high.dtcg.json +1 -1
  97. package/tokens/modes/dark__moc-bamboo__compact__standard.dtcg.json +1 -1
  98. package/tokens/modes/dark__moc-forest__comfortable__high.dtcg.json +1 -1
  99. package/tokens/modes/dark__moc-forest__comfortable__standard.dtcg.json +1 -1
  100. package/tokens/modes/dark__moc-forest__compact__high.dtcg.json +1 -1
  101. package/tokens/modes/dark__moc-forest__compact__standard.dtcg.json +1 -1
  102. package/tokens/modes/dark__moc__comfortable__high.dtcg.json +1 -1
  103. package/tokens/modes/dark__moc__comfortable__standard.dtcg.json +1 -1
  104. package/tokens/modes/dark__moc__compact__high.dtcg.json +1 -1
  105. package/tokens/modes/dark__moc__compact__standard.dtcg.json +1 -1
  106. package/tokens/modes/dark__tho-clay__comfortable__high.dtcg.json +1 -1
  107. package/tokens/modes/dark__tho-clay__comfortable__standard.dtcg.json +1 -1
  108. package/tokens/modes/dark__tho-clay__compact__high.dtcg.json +1 -1
  109. package/tokens/modes/dark__tho-clay__compact__standard.dtcg.json +1 -1
  110. package/tokens/modes/dark__tho-sand__comfortable__high.dtcg.json +1 -1
  111. package/tokens/modes/dark__tho-sand__comfortable__standard.dtcg.json +1 -1
  112. package/tokens/modes/dark__tho-sand__compact__high.dtcg.json +1 -1
  113. package/tokens/modes/dark__tho-sand__compact__standard.dtcg.json +1 -1
  114. package/tokens/modes/dark__tho__comfortable__high.dtcg.json +1 -1
  115. package/tokens/modes/dark__tho__comfortable__standard.dtcg.json +1 -1
  116. package/tokens/modes/dark__tho__compact__high.dtcg.json +1 -1
  117. package/tokens/modes/dark__tho__compact__standard.dtcg.json +1 -1
  118. package/tokens/modes/dark__thuy-mist__comfortable__high.dtcg.json +1 -1
  119. package/tokens/modes/dark__thuy-mist__comfortable__standard.dtcg.json +1 -1
  120. package/tokens/modes/dark__thuy-mist__compact__high.dtcg.json +1 -1
  121. package/tokens/modes/dark__thuy-mist__compact__standard.dtcg.json +1 -1
  122. package/tokens/modes/dark__thuy-ocean__comfortable__high.dtcg.json +1 -1
  123. package/tokens/modes/dark__thuy-ocean__comfortable__standard.dtcg.json +1 -1
  124. package/tokens/modes/dark__thuy-ocean__compact__high.dtcg.json +1 -1
  125. package/tokens/modes/dark__thuy-ocean__compact__standard.dtcg.json +1 -1
  126. package/tokens/modes/dark__thuy__comfortable__high.dtcg.json +1 -1
  127. package/tokens/modes/dark__thuy__comfortable__standard.dtcg.json +1 -1
  128. package/tokens/modes/dark__thuy__compact__high.dtcg.json +1 -1
  129. package/tokens/modes/dark__thuy__compact__standard.dtcg.json +1 -1
  130. package/tokens/modes/index.json +270 -270
  131. package/tokens/modes/light__default__comfortable__high.dtcg.json +1 -1
  132. package/tokens/modes/light__default__comfortable__standard.dtcg.json +1 -1
  133. package/tokens/modes/light__default__compact__high.dtcg.json +1 -1
  134. package/tokens/modes/light__default__compact__standard.dtcg.json +1 -1
  135. package/tokens/modes/light__hoa-lava__comfortable__high.dtcg.json +1 -1
  136. package/tokens/modes/light__hoa-lava__comfortable__standard.dtcg.json +1 -1
  137. package/tokens/modes/light__hoa-lava__compact__high.dtcg.json +1 -1
  138. package/tokens/modes/light__hoa-lava__compact__standard.dtcg.json +1 -1
  139. package/tokens/modes/light__hoa-plasma__comfortable__high.dtcg.json +1 -1
  140. package/tokens/modes/light__hoa-plasma__comfortable__standard.dtcg.json +1 -1
  141. package/tokens/modes/light__hoa-plasma__compact__high.dtcg.json +1 -1
  142. package/tokens/modes/light__hoa-plasma__compact__standard.dtcg.json +1 -1
  143. package/tokens/modes/light__hoa__comfortable__high.dtcg.json +1 -1
  144. package/tokens/modes/light__hoa__comfortable__standard.dtcg.json +1 -1
  145. package/tokens/modes/light__hoa__compact__high.dtcg.json +1 -1
  146. package/tokens/modes/light__hoa__compact__standard.dtcg.json +1 -1
  147. package/tokens/modes/light__kim-steel__comfortable__high.dtcg.json +1 -1
  148. package/tokens/modes/light__kim-steel__comfortable__standard.dtcg.json +1 -1
  149. package/tokens/modes/light__kim-steel__compact__high.dtcg.json +1 -1
  150. package/tokens/modes/light__kim-steel__compact__standard.dtcg.json +1 -1
  151. package/tokens/modes/light__kim-titanium__comfortable__high.dtcg.json +1 -1
  152. package/tokens/modes/light__kim-titanium__comfortable__standard.dtcg.json +1 -1
  153. package/tokens/modes/light__kim-titanium__compact__high.dtcg.json +1 -1
  154. package/tokens/modes/light__kim-titanium__compact__standard.dtcg.json +1 -1
  155. package/tokens/modes/light__kim__comfortable__high.dtcg.json +1 -1
  156. package/tokens/modes/light__kim__comfortable__standard.dtcg.json +1 -1
  157. package/tokens/modes/light__kim__compact__high.dtcg.json +1 -1
  158. package/tokens/modes/light__kim__compact__standard.dtcg.json +1 -1
  159. package/tokens/modes/light__moc-bamboo__comfortable__high.dtcg.json +1 -1
  160. package/tokens/modes/light__moc-bamboo__comfortable__standard.dtcg.json +1 -1
  161. package/tokens/modes/light__moc-bamboo__compact__high.dtcg.json +1 -1
  162. package/tokens/modes/light__moc-bamboo__compact__standard.dtcg.json +1 -1
  163. package/tokens/modes/light__moc-forest__comfortable__high.dtcg.json +1 -1
  164. package/tokens/modes/light__moc-forest__comfortable__standard.dtcg.json +1 -1
  165. package/tokens/modes/light__moc-forest__compact__high.dtcg.json +1 -1
  166. package/tokens/modes/light__moc-forest__compact__standard.dtcg.json +1 -1
  167. package/tokens/modes/light__moc__comfortable__high.dtcg.json +1 -1
  168. package/tokens/modes/light__moc__comfortable__standard.dtcg.json +1 -1
  169. package/tokens/modes/light__moc__compact__high.dtcg.json +1 -1
  170. package/tokens/modes/light__moc__compact__standard.dtcg.json +1 -1
  171. package/tokens/modes/light__tho-clay__comfortable__high.dtcg.json +1 -1
  172. package/tokens/modes/light__tho-clay__comfortable__standard.dtcg.json +1 -1
  173. package/tokens/modes/light__tho-clay__compact__high.dtcg.json +1 -1
  174. package/tokens/modes/light__tho-clay__compact__standard.dtcg.json +1 -1
  175. package/tokens/modes/light__tho-sand__comfortable__high.dtcg.json +1 -1
  176. package/tokens/modes/light__tho-sand__comfortable__standard.dtcg.json +1 -1
  177. package/tokens/modes/light__tho-sand__compact__high.dtcg.json +1 -1
  178. package/tokens/modes/light__tho-sand__compact__standard.dtcg.json +1 -1
  179. package/tokens/modes/light__tho__comfortable__high.dtcg.json +1 -1
  180. package/tokens/modes/light__tho__comfortable__standard.dtcg.json +1 -1
  181. package/tokens/modes/light__tho__compact__high.dtcg.json +1 -1
  182. package/tokens/modes/light__tho__compact__standard.dtcg.json +1 -1
  183. package/tokens/modes/light__thuy-mist__comfortable__high.dtcg.json +1 -1
  184. package/tokens/modes/light__thuy-mist__comfortable__standard.dtcg.json +1 -1
  185. package/tokens/modes/light__thuy-mist__compact__high.dtcg.json +1 -1
  186. package/tokens/modes/light__thuy-mist__compact__standard.dtcg.json +1 -1
  187. package/tokens/modes/light__thuy-ocean__comfortable__high.dtcg.json +1 -1
  188. package/tokens/modes/light__thuy-ocean__comfortable__standard.dtcg.json +1 -1
  189. package/tokens/modes/light__thuy-ocean__compact__high.dtcg.json +1 -1
  190. package/tokens/modes/light__thuy-ocean__compact__standard.dtcg.json +1 -1
  191. package/tokens/modes/light__thuy__comfortable__high.dtcg.json +1 -1
  192. package/tokens/modes/light__thuy__comfortable__standard.dtcg.json +1 -1
  193. package/tokens/modes/light__thuy__compact__high.dtcg.json +1 -1
  194. package/tokens/modes/light__thuy__compact__standard.dtcg.json +1 -1
  195. package/tokens/modes/system-dark__default__comfortable__high.dtcg.json +1 -1
  196. package/tokens/modes/system-dark__default__comfortable__standard.dtcg.json +1 -1
  197. package/tokens/modes/system-dark__default__compact__high.dtcg.json +1 -1
  198. package/tokens/modes/system-dark__default__compact__standard.dtcg.json +1 -1
  199. package/tokens/modes/system-dark__hoa-lava__comfortable__high.dtcg.json +1 -1
  200. package/tokens/modes/system-dark__hoa-lava__comfortable__standard.dtcg.json +1 -1
  201. package/tokens/modes/system-dark__hoa-lava__compact__high.dtcg.json +1 -1
  202. package/tokens/modes/system-dark__hoa-lava__compact__standard.dtcg.json +1 -1
  203. package/tokens/modes/system-dark__hoa-plasma__comfortable__high.dtcg.json +1 -1
  204. package/tokens/modes/system-dark__hoa-plasma__comfortable__standard.dtcg.json +1 -1
  205. package/tokens/modes/system-dark__hoa-plasma__compact__high.dtcg.json +1 -1
  206. package/tokens/modes/system-dark__hoa-plasma__compact__standard.dtcg.json +1 -1
  207. package/tokens/modes/system-dark__hoa__comfortable__high.dtcg.json +1 -1
  208. package/tokens/modes/system-dark__hoa__comfortable__standard.dtcg.json +1 -1
  209. package/tokens/modes/system-dark__hoa__compact__high.dtcg.json +1 -1
  210. package/tokens/modes/system-dark__hoa__compact__standard.dtcg.json +1 -1
  211. package/tokens/modes/system-dark__kim-steel__comfortable__high.dtcg.json +1 -1
  212. package/tokens/modes/system-dark__kim-steel__comfortable__standard.dtcg.json +1 -1
  213. package/tokens/modes/system-dark__kim-steel__compact__high.dtcg.json +1 -1
  214. package/tokens/modes/system-dark__kim-steel__compact__standard.dtcg.json +1 -1
  215. package/tokens/modes/system-dark__kim-titanium__comfortable__high.dtcg.json +1 -1
  216. package/tokens/modes/system-dark__kim-titanium__comfortable__standard.dtcg.json +1 -1
  217. package/tokens/modes/system-dark__kim-titanium__compact__high.dtcg.json +1 -1
  218. package/tokens/modes/system-dark__kim-titanium__compact__standard.dtcg.json +1 -1
  219. package/tokens/modes/system-dark__kim__comfortable__high.dtcg.json +1 -1
  220. package/tokens/modes/system-dark__kim__comfortable__standard.dtcg.json +1 -1
  221. package/tokens/modes/system-dark__kim__compact__high.dtcg.json +1 -1
  222. package/tokens/modes/system-dark__kim__compact__standard.dtcg.json +1 -1
  223. package/tokens/modes/system-dark__moc-bamboo__comfortable__high.dtcg.json +1 -1
  224. package/tokens/modes/system-dark__moc-bamboo__comfortable__standard.dtcg.json +1 -1
  225. package/tokens/modes/system-dark__moc-bamboo__compact__high.dtcg.json +1 -1
  226. package/tokens/modes/system-dark__moc-bamboo__compact__standard.dtcg.json +1 -1
  227. package/tokens/modes/system-dark__moc-forest__comfortable__high.dtcg.json +1 -1
  228. package/tokens/modes/system-dark__moc-forest__comfortable__standard.dtcg.json +1 -1
  229. package/tokens/modes/system-dark__moc-forest__compact__high.dtcg.json +1 -1
  230. package/tokens/modes/system-dark__moc-forest__compact__standard.dtcg.json +1 -1
  231. package/tokens/modes/system-dark__moc__comfortable__high.dtcg.json +1 -1
  232. package/tokens/modes/system-dark__moc__comfortable__standard.dtcg.json +1 -1
  233. package/tokens/modes/system-dark__moc__compact__high.dtcg.json +1 -1
  234. package/tokens/modes/system-dark__moc__compact__standard.dtcg.json +1 -1
  235. package/tokens/modes/system-dark__tho-clay__comfortable__high.dtcg.json +1 -1
  236. package/tokens/modes/system-dark__tho-clay__comfortable__standard.dtcg.json +1 -1
  237. package/tokens/modes/system-dark__tho-clay__compact__high.dtcg.json +1 -1
  238. package/tokens/modes/system-dark__tho-clay__compact__standard.dtcg.json +1 -1
  239. package/tokens/modes/system-dark__tho-sand__comfortable__high.dtcg.json +1 -1
  240. package/tokens/modes/system-dark__tho-sand__comfortable__standard.dtcg.json +1 -1
  241. package/tokens/modes/system-dark__tho-sand__compact__high.dtcg.json +1 -1
  242. package/tokens/modes/system-dark__tho-sand__compact__standard.dtcg.json +1 -1
  243. package/tokens/modes/system-dark__tho__comfortable__high.dtcg.json +1 -1
  244. package/tokens/modes/system-dark__tho__comfortable__standard.dtcg.json +1 -1
  245. package/tokens/modes/system-dark__tho__compact__high.dtcg.json +1 -1
  246. package/tokens/modes/system-dark__tho__compact__standard.dtcg.json +1 -1
  247. package/tokens/modes/system-dark__thuy-mist__comfortable__high.dtcg.json +1 -1
  248. package/tokens/modes/system-dark__thuy-mist__comfortable__standard.dtcg.json +1 -1
  249. package/tokens/modes/system-dark__thuy-mist__compact__high.dtcg.json +1 -1
  250. package/tokens/modes/system-dark__thuy-mist__compact__standard.dtcg.json +1 -1
  251. package/tokens/modes/system-dark__thuy-ocean__comfortable__high.dtcg.json +1 -1
  252. package/tokens/modes/system-dark__thuy-ocean__comfortable__standard.dtcg.json +1 -1
  253. package/tokens/modes/system-dark__thuy-ocean__compact__high.dtcg.json +1 -1
  254. package/tokens/modes/system-dark__thuy-ocean__compact__standard.dtcg.json +1 -1
  255. package/tokens/modes/system-dark__thuy__comfortable__high.dtcg.json +1 -1
  256. package/tokens/modes/system-dark__thuy__comfortable__standard.dtcg.json +1 -1
  257. package/tokens/modes/system-dark__thuy__compact__high.dtcg.json +1 -1
  258. package/tokens/modes/system-dark__thuy__compact__standard.dtcg.json +1 -1
  259. package/tokens/modes/system-light__default__comfortable__high.dtcg.json +1 -1
  260. package/tokens/modes/system-light__default__comfortable__standard.dtcg.json +1 -1
  261. package/tokens/modes/system-light__default__compact__high.dtcg.json +1 -1
  262. package/tokens/modes/system-light__default__compact__standard.dtcg.json +1 -1
  263. package/tokens/modes/system-light__hoa-lava__comfortable__high.dtcg.json +1 -1
  264. package/tokens/modes/system-light__hoa-lava__comfortable__standard.dtcg.json +1 -1
  265. package/tokens/modes/system-light__hoa-lava__compact__high.dtcg.json +1 -1
  266. package/tokens/modes/system-light__hoa-lava__compact__standard.dtcg.json +1 -1
  267. package/tokens/modes/system-light__hoa-plasma__comfortable__high.dtcg.json +1 -1
  268. package/tokens/modes/system-light__hoa-plasma__comfortable__standard.dtcg.json +1 -1
  269. package/tokens/modes/system-light__hoa-plasma__compact__high.dtcg.json +1 -1
  270. package/tokens/modes/system-light__hoa-plasma__compact__standard.dtcg.json +1 -1
  271. package/tokens/modes/system-light__hoa__comfortable__high.dtcg.json +1 -1
  272. package/tokens/modes/system-light__hoa__comfortable__standard.dtcg.json +1 -1
  273. package/tokens/modes/system-light__hoa__compact__high.dtcg.json +1 -1
  274. package/tokens/modes/system-light__hoa__compact__standard.dtcg.json +1 -1
  275. package/tokens/modes/system-light__kim-steel__comfortable__high.dtcg.json +1 -1
  276. package/tokens/modes/system-light__kim-steel__comfortable__standard.dtcg.json +1 -1
  277. package/tokens/modes/system-light__kim-steel__compact__high.dtcg.json +1 -1
  278. package/tokens/modes/system-light__kim-steel__compact__standard.dtcg.json +1 -1
  279. package/tokens/modes/system-light__kim-titanium__comfortable__high.dtcg.json +1 -1
  280. package/tokens/modes/system-light__kim-titanium__comfortable__standard.dtcg.json +1 -1
  281. package/tokens/modes/system-light__kim-titanium__compact__high.dtcg.json +1 -1
  282. package/tokens/modes/system-light__kim-titanium__compact__standard.dtcg.json +1 -1
  283. package/tokens/modes/system-light__kim__comfortable__high.dtcg.json +1 -1
  284. package/tokens/modes/system-light__kim__comfortable__standard.dtcg.json +1 -1
  285. package/tokens/modes/system-light__kim__compact__high.dtcg.json +1 -1
  286. package/tokens/modes/system-light__kim__compact__standard.dtcg.json +1 -1
  287. package/tokens/modes/system-light__moc-bamboo__comfortable__high.dtcg.json +1 -1
  288. package/tokens/modes/system-light__moc-bamboo__comfortable__standard.dtcg.json +1 -1
  289. package/tokens/modes/system-light__moc-bamboo__compact__high.dtcg.json +1 -1
  290. package/tokens/modes/system-light__moc-bamboo__compact__standard.dtcg.json +1 -1
  291. package/tokens/modes/system-light__moc-forest__comfortable__high.dtcg.json +1 -1
  292. package/tokens/modes/system-light__moc-forest__comfortable__standard.dtcg.json +1 -1
  293. package/tokens/modes/system-light__moc-forest__compact__high.dtcg.json +1 -1
  294. package/tokens/modes/system-light__moc-forest__compact__standard.dtcg.json +1 -1
  295. package/tokens/modes/system-light__moc__comfortable__high.dtcg.json +1 -1
  296. package/tokens/modes/system-light__moc__comfortable__standard.dtcg.json +1 -1
  297. package/tokens/modes/system-light__moc__compact__high.dtcg.json +1 -1
  298. package/tokens/modes/system-light__moc__compact__standard.dtcg.json +1 -1
  299. package/tokens/modes/system-light__tho-clay__comfortable__high.dtcg.json +1 -1
  300. package/tokens/modes/system-light__tho-clay__comfortable__standard.dtcg.json +1 -1
  301. package/tokens/modes/system-light__tho-clay__compact__high.dtcg.json +1 -1
  302. package/tokens/modes/system-light__tho-clay__compact__standard.dtcg.json +1 -1
  303. package/tokens/modes/system-light__tho-sand__comfortable__high.dtcg.json +1 -1
  304. package/tokens/modes/system-light__tho-sand__comfortable__standard.dtcg.json +1 -1
  305. package/tokens/modes/system-light__tho-sand__compact__high.dtcg.json +1 -1
  306. package/tokens/modes/system-light__tho-sand__compact__standard.dtcg.json +1 -1
  307. package/tokens/modes/system-light__tho__comfortable__high.dtcg.json +1 -1
  308. package/tokens/modes/system-light__tho__comfortable__standard.dtcg.json +1 -1
  309. package/tokens/modes/system-light__tho__compact__high.dtcg.json +1 -1
  310. package/tokens/modes/system-light__tho__compact__standard.dtcg.json +1 -1
  311. package/tokens/modes/system-light__thuy-mist__comfortable__high.dtcg.json +1 -1
  312. package/tokens/modes/system-light__thuy-mist__comfortable__standard.dtcg.json +1 -1
  313. package/tokens/modes/system-light__thuy-mist__compact__high.dtcg.json +1 -1
  314. package/tokens/modes/system-light__thuy-mist__compact__standard.dtcg.json +1 -1
  315. package/tokens/modes/system-light__thuy-ocean__comfortable__high.dtcg.json +1 -1
  316. package/tokens/modes/system-light__thuy-ocean__comfortable__standard.dtcg.json +1 -1
  317. package/tokens/modes/system-light__thuy-ocean__compact__high.dtcg.json +1 -1
  318. package/tokens/modes/system-light__thuy-ocean__compact__standard.dtcg.json +1 -1
  319. package/tokens/modes/system-light__thuy__comfortable__high.dtcg.json +1 -1
  320. package/tokens/modes/system-light__thuy__comfortable__standard.dtcg.json +1 -1
  321. package/tokens/modes/system-light__thuy__compact__high.dtcg.json +1 -1
  322. package/tokens/modes/system-light__thuy__compact__standard.dtcg.json +1 -1
  323. package/tokens/native/CSModes.kt +3 -3
  324. package/tokens/native/CSModes.swift +3 -3
  325. package/tokens/native/CSTokens.kt +1 -1
  326. package/tokens/native/CSTokens.swift +1 -1
  327. package/tokens/native/cs_modes.dart +3 -3
  328. package/tokens/native/cs_tokens.dart +1 -1
  329. package/tokens/native/mode-provenance.json +6 -6
  330. package/tokens/provenance.json +6 -6
  331. package/tokens/tokens.dtcg.json +4 -4
  332. package/tokens/tokens.js +5 -5
  333. package/tokens/tokens.json +4 -4
  334. package/tokens/typography.css +2 -3
  335. package/tokens/variables.css +3 -0
  336. package/ui_kits/website/site.css +2 -2
  337. /package/dist/esm/chunks/{chunk-CKBL3UEA.mjs.map → chunk-GQDUCHRU.mjs.map} +0 -0
package/docs/viewer.html CHANGED
@@ -21,32 +21,43 @@
21
21
  .searchhit b{color:var(--_cs-light,var(--cs-color-brand-umber)) var(--_cs-dark,var(--cs-color-brand-ochre))}
22
22
  .searchhit .snip{display:block;font-size:12px;color:var(--cs-color-text-muted);font-weight:400;margin-top:2px}
23
23
  mark{background:var(--cs-color-brand-ochre);color:var(--cs-color-brand-umber);border-radius:2px;padding:0 1px}
24
- main{overflow:auto;padding:30px 38px}
25
- article{max-width:820px;line-height:1.62;font-size:14.5px}
26
- article h1{font-size:24px;letter-spacing:-.015em;margin:0 0 12px}
27
- article h2{font-size:18px;margin:28px 0 8px;padding-top:10px;border-top:1px solid var(--cs-color-border-default)}
28
- article h3{font-size:15px;margin:20px 0 6px}
29
- article code{font-family:var(--cs-font-family-mono);font-size:.86em;background:var(--cs-color-surface-raised);border-radius:4px;padding:1px 5px}
30
- article pre{background:var(--cs-color-surface-raised);border:1px solid var(--cs-color-border-default);border-radius:10px;padding:12px 14px;overflow:auto}
31
- article pre code{background:none;padding:0;font-size:12px;line-height:1.55}
32
- article table{border-collapse:collapse;margin:10px 0;width:100%}
33
- article th,article td{border:1px solid var(--cs-color-border-default);padding:7px 10px;text-align:start;font-size:13px;vertical-align:top}
34
- article th{background:var(--cs-color-surface-raised)}
35
- article blockquote{margin:10px 0;padding:6px 14px;border-inline-start:3px solid var(--cs-color-brand-ochre);color:var(--cs-color-text-muted);background:var(--cs-color-surface-raised);border-radius:0 8px 8px 0}
24
+ main{overflow:auto;padding:clamp(24px,3vw,40px) clamp(20px,4vw,52px) 72px;min-width:0}
25
+ article{max-width:min(1160px,100%);width:100%;margin:0 auto;line-height:1.65;font-size:14.5px;min-width:0}
26
+ article h1{font-size:28px;letter-spacing:-.02em;line-height:1.25;margin:0 0 14px;padding-bottom:10px;border-bottom:2px solid color-mix(in oklab,var(--cs-accent) 45%,var(--cs-color-border-default))}
27
+ article h2{font-size:19px;letter-spacing:-.01em;line-height:1.35;margin:30px 0 10px;padding-top:12px;border-top:1px solid var(--cs-color-border-default);color:var(--cs-color-text-accent)}
28
+ article h3{font-size:15.5px;line-height:1.4;margin:22px 0 6px}
29
+ article h4{font-size:14px;line-height:1.4;margin:18px 0 4px;color:var(--cs-color-text-muted)}
30
+ article code{font-family:var(--cs-font-family-mono);font-size:.86em;background:var(--cs-color-surface-raised);color:var(--cs-color-text-primary);border:1px solid color-mix(in oklab,var(--cs-accent) 28%,var(--cs-color-border-default));border-radius:4px;padding:1px 5px}
31
+ article pre{background:var(--cs-color-surface-raised);border:1px solid var(--cs-color-border-default);border-radius:10px;padding:12px 14px;overflow:auto;max-width:100%}
32
+ article pre code{background:none;border:0;padding:0;font-size:12px;line-height:1.55;white-space:pre}
33
+ .tbl-wrap{width:100%;max-width:100%;overflow-x:auto;margin:14px 0;border:1px solid var(--cs-color-border-default);border-radius:var(--cs-radius-md);background:var(--cs-color-surface-panel)}
34
+ article table{border-collapse:collapse;margin:0;width:100%}
35
+ article th,article td{border-bottom:1px solid var(--cs-color-border-default);border-inline-end:1px solid var(--cs-color-border-default);padding:9px 12px;text-align:start;font-size:13px;vertical-align:top;line-height:1.5}
36
+ article th:last-child,article td:last-child{border-inline-end:0}
37
+ article tr:last-child td{border-bottom:0}
38
+ article th{background:var(--cs-color-surface-raised);color:var(--cs-color-text-primary);font-weight:700;border-bottom:2px solid color-mix(in oklab,var(--cs-accent) 50%,var(--cs-color-border-default))}
39
+ article blockquote{margin:12px 0;padding:10px 16px;border-inline-start:3px solid var(--cs-accent);color:var(--cs-color-text-primary);background:var(--cs-color-surface-raised);border-radius:0 8px 8px 0}
40
+ .md-badge{display:inline;font:700 11.5px/1.2 var(--cs-font-family-mono);padding:3px 10px;border-radius:999px;background:var(--cs-accent-tint);color:var(--cs-accent-ink);border:1px solid color-mix(in oklab,var(--cs-accent) 45%,var(--cs-color-border-default));text-decoration:none}
41
+ html.embed article pre[data-source-metadata]{display:none}
42
+ html.embed[data-cs-density="compact"] main{padding:18px 24px 48px}
43
+ html.embed[data-cs-density="compact"] article{font-size:13.5px;line-height:1.52}
44
+ html.embed[data-cs-density="compact"] article h1{font-size:22px;margin-bottom:8px;padding-bottom:6px}
45
+ html.embed[data-cs-density="compact"] article h2{font-size:16.5px;margin:20px 0 6px;padding-top:8px}
46
+ html.embed[data-cs-density="compact"] article th,html.embed[data-cs-density="compact"] article td{padding:5px 8px;font-size:12px}
36
47
  article ul,article ol{padding-inline-start:22px}
37
- article li{margin:3px 0;overflow-wrap:anywhere}
48
+ article li{margin:4px 0;overflow-wrap:anywhere}
38
49
  article p,article blockquote{overflow-wrap:anywhere}
39
50
  article code{white-space:break-spaces;overflow-wrap:anywhere}
40
- article hr{border:0;border-top:1px dashed var(--cs-color-border-default);margin:20px 0}
51
+ article hr{border:0;border-top:1px dashed var(--cs-color-border-default);margin:22px 0}
41
52
  article a{color:var(--cs-color-link)}article a:hover{color:var(--cs-color-link-hover)}
42
53
  #err{color:#B42318;font-family:var(--cs-font-family-mono);font-size:13px}
43
54
  html.embed body{grid-template-columns:1fr}
44
55
  html.embed aside{display:none}
45
- html.embed main{padding:24px 32px}
56
+ html.embed main{padding:clamp(24px,3vw,40px) clamp(24px,4vw,56px) 72px}
46
57
  @media (pointer:coarse){
47
58
  .langtog button,#docsearch,aside a{min-inline-size:44px;min-block-size:44px}
48
59
  #navlinks a[data-p]{display:flex;align-items:center}
49
- article a{display:inline-flex;align-items:center;min-inline-size:44px;min-block-size:44px;max-inline-size:100%;overflow-wrap:anywhere}
60
+ article a,article a.md-badge{display:inline-flex;align-items:center;min-inline-size:44px;min-block-size:44px;max-inline-size:100%;overflow-wrap:anywhere}
50
61
  }
51
62
  @media (max-width:640px){
52
63
  body{grid-template-columns:1fr}
@@ -80,7 +91,18 @@ const UI={
80
91
  // Language persistence is optional; privacy settings can expose null storage.
81
92
  function savedLanguage(){ try{ return localStorage.getItem('cs-docs-lang'); }catch{ return null; } }
82
93
  function saveLanguage(value){ try{ localStorage.setItem('cs-docs-lang',value); }catch{} }
83
- let lang=savedLanguage()==='en'?'en':'vi';
94
+ function initialLanguage(){
95
+ const q=new URLSearchParams(location.search).get('lang');
96
+ if(q==='en'||q==='vi') return q;
97
+ if(document.documentElement.classList.contains('embed') && window.parent && window.parent!==window){
98
+ try{
99
+ const pLang=window.parent.document.documentElement.getAttribute('lang');
100
+ if(pLang==='en'||pLang==='vi') return pLang;
101
+ }catch{}
102
+ }
103
+ return savedLanguage()==='en'?'en':'vi';
104
+ }
105
+ let lang=initialLanguage();
84
106
  function contentLanguage(path,language=lang){ return path.startsWith('docs/') || Object.hasOwn(ENTRANCE_VI,path) ? language : 'en'; }
85
107
  function DOCS(){ return lang==='vi'?DOCS_VI:DOCS_EN; }
86
108
  const ALL=DOCS_EN.flatMap(g=>g[1].map(d=>d[0]));
@@ -98,20 +120,32 @@ function syncLangUi(){
98
120
  : 'Guides and entrance documents have paired VI/EN views';
99
121
  document.getElementById('docsearch').placeholder=UI[lang].search+'…';
100
122
  document.getElementById('docsearch').setAttribute('aria-label',UI[lang].search);
101
- document.documentElement.lang=lang==='vi'?'vi':'en';
123
+ const nextDocLang=lang==='vi'?'vi':'en';
124
+ if(document.documentElement.lang!==nextDocLang) document.documentElement.lang=nextDocLang;
102
125
  }
103
126
  function renderNav(){ nav.innerHTML=''; for(const [g,items] of DOCS()){ const h=document.createElement('div'); h.className='grp'; h.textContent=g; nav.appendChild(h);
104
127
  for(const [p,label] of items){ const a=document.createElement('a'); a.href='#'+p; a.dataset.p=p; a.textContent=label; nav.appendChild(a); } } }
105
128
  syncLangUi(); renderNav();
106
- document.querySelector('.langtog').addEventListener('click',(e)=>{
107
- const b=e.target.closest('button[data-lang]'); if(!b) return;
108
- lang=b.dataset.lang; saveLanguage(lang);
129
+ function setViewerLanguage(next,persist=true){
130
+ const norm=next==='en'?'en':next==='vi'?'vi':null;
131
+ if(!norm || norm===lang) return;
132
+ lang=norm;
133
+ if(persist) saveLanguage(lang);
109
134
  syncLangUi(); renderNav(); markActive();
110
135
  docCache=null; // refetch under new language
111
136
  cancelSearch();
112
137
  load(cur||'README.md');
113
138
  const q=searchBox.value.trim();
114
139
  if(q.length>=2) runSearch(q);
140
+ }
141
+ window.__csSetDocLang=(next)=>setViewerLanguage(next,false);
142
+ new MutationObserver(()=>{
143
+ const attr=document.documentElement.getAttribute('lang');
144
+ if((attr==='en'||attr==='vi') && attr!==lang) setViewerLanguage(attr,false);
145
+ }).observe(document.documentElement,{attributes:true,attributeFilter:['lang']});
146
+ document.querySelector('.langtog').addEventListener('click',(e)=>{
147
+ const b=e.target.closest('button[data-lang]'); if(!b) return;
148
+ setViewerLanguage(b.dataset.lang,true);
115
149
  });
116
150
  function esc(s){ return s.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;'); }
117
151
  function labelsNow(){ const L={}; for(const [,items] of DOCS()) for(const [p,l] of items) L[p]=l; return L; }
@@ -153,6 +187,8 @@ function inline(s){ return esc(s)
153
187
  .replace(/`([^`]+)`/g,(m,c)=>'<code>'+c+'</code>')
154
188
  .replace(/\*\*([^*]+)\*\*/g,'<b>$1</b>')
155
189
  .replace(/(^|[\s(])\*([^*\n]+)\*/g,'$1<i>$2</i>')
190
+ .replace(/\[!\[([^\]]*)\]\(([^)\s]+)\)\]\(([^)\s]+)\)/g,'<a class="md-badge" href="$3">$1 ↗</a>')
191
+ .replace(/!\[([^\]]*)\]\(([^)\s]+)\)/g,'<a class="md-badge" href="$2">$1</a>')
156
192
  .replace(/\[([^\]]+)\]\(([^)\s]+)\)/g,'<a href="$2">$1</a>'); }
157
193
  function md(src){
158
194
  src=src.replace(/\r/g,''); const fences=[];
@@ -168,7 +204,7 @@ function md(src){
168
204
  if(/^\s*(-{3,}|\*{3,})\s*$/.test(L)){ out.push('<hr>'); i++; continue; }
169
205
  if(/^\|/.test(L)){ const rows=grab(/^\|/); const cells=r=>r.replace(/^\||\|$/g,'').split('|').map(c=>inline(c.trim()));
170
206
  let hd=null,body=rows; if(rows.length>1&&/^[\s|:\-]+$/.test(rows[1])){ hd=cells(rows[0]); body=rows.slice(2); }
171
- out.push('<table>'+(hd?'<thead><tr>'+hd.map(c=>'<th>'+c+'</th>').join('')+'</tr></thead>':'')+'<tbody>'+body.map(r=>'<tr>'+cells(r).map(c=>'<td>'+c+'</td>').join('')+'</tr>').join('')+'</tbody></table>'); continue; }
207
+ out.push('<div class="tbl-wrap"><table>'+(hd?'<thead><tr>'+hd.map(c=>'<th>'+c+'</th>').join('')+'</tr></thead>':'')+'<tbody>'+body.map(r=>'<tr>'+cells(r).map(c=>'<td>'+c+'</td>').join('')+'</tr>').join('')+'</tbody></table></div>'); continue; }
172
208
  if(/^\s*[-*+]\s+/.test(L)){
173
209
  const li=[];
174
210
  while(i<lines.length){
@@ -240,9 +276,24 @@ async function fetchDoc(p){
240
276
  lastErr = new Error('hosting intercepted '+u+' (got HTML, not markdown)');
241
277
  continue;
242
278
  }
243
- // Count metadata is generated source syntax, not visible prose. Strip only
244
- // complete numeric markers before rendering and indexing search snippets.
245
- return text.replace(/<!-- cs-count:[A-Za-z]+ -->(\d+)<!-- \/cs-count -->/g, '$1');
279
+ // Count and source-version metadata are generated source syntax, not visible prose.
280
+ // Strip complete markers and bilingual entrypoint banners before rendering and indexing.
281
+ return text
282
+ .replace(/<!-- cs-count:[A-Za-z]+ -->(\d+)<!-- \/cs-count -->/g, '$1')
283
+ .replace(/<!-- cs-source-version:[a-z0-9-]+ -->([^<>\r\n]*)<!-- \/cs-source-version -->/g, '$1')
284
+ .replace(
285
+ /<!-- BEGIN PINNED TOOLCHAIN BOOTSTRAP -->\s*([\s\S]*?)\s*<!-- END PINNED TOOLCHAIN BOOTSTRAP -->/g,
286
+ (_, body) => body.trim().split(/\n\s*\n/)[0] || ''
287
+ )
288
+ .replace(
289
+ /<!-- BEGIN GENERATED ENTRY LANGUAGE ROUTE v1 -->\s*([\s\S]*?)\s*<!-- END GENERATED ENTRY LANGUAGE ROUTE v1 -->\s*/g,
290
+ (_, body) => (document.documentElement.classList.contains('embed') ? '' : body.trim() + '\n\n')
291
+ )
292
+ .replace(/^[ \t]*<!--\s*(?:BEGIN|END|Generated by)\b[\s\S]*?-->[ \t]*\r?\n?/gm, '')
293
+ .replace(
294
+ /^\*\*(?:English|Tiếng Việt)\*\*\s*·\s*\[(?:English|Tiếng Việt)\]\([^)]+\)[ \t]*\r?\n+/m,
295
+ (m) => (document.documentElement.classList.contains('embed') ? '' : m)
296
+ );
246
297
  }catch(e){ lastErr = e; }
247
298
  }
248
299
  throw lastErr || new Error('all fetch paths failed');
@@ -2,7 +2,7 @@
2
2
  "schemaVersion": 1,
3
3
  "interpretation": "Generated policy/routing projection, not runtime, host-loading, human acceptance or release certification.",
4
4
  "sourceHashes": {
5
- "scripts/guidance-source.json": "bc5a38c55150db896a2e93d47da1f3a8811ddedd6bed73e306f5abc21dd205eb",
5
+ "scripts/guidance-source.json": "1e8d71a99895dac5a42b41424a42e3b6b8b82cd421e04c553c52581d33d44b9e",
6
6
  "docs/doctrine.md": "25b5c51ba0bb38b8486b625124dcf6b90af8ac97e7518ab2cd92ff10b84eef54"
7
7
  },
8
8
  "authorities": {
@@ -21,7 +21,7 @@
21
21
  },
22
22
  "acceptance": {
23
23
  "productVisualReview": "separate-required",
24
- "manualAccessibility": "separate-required",
24
+ "manualAccessibility": "automated-and-manual-supported",
25
25
  "pushDeployMerge": "explicit-operator-instruction"
26
26
  },
27
27
  "portableValidation": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cyberskill/design",
3
- "version": "2.2.0",
3
+ "version": "2.3.1",
4
4
  "private": false,
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -584,31 +584,31 @@
584
584
  },
585
585
  "devDependencies": {
586
586
  "@babel/parser": "7.29.7",
587
- "@csstools/css-syntax-patches-for-csstree": "1.1.15",
587
+ "@csstools/css-syntax-patches-for-csstree": "1.1.16",
588
588
  "@jridgewell/trace-mapping": "0.3.31",
589
- "@storybook/addon-a11y": "^10.5.4",
590
- "@storybook/addon-docs": "^10.5.4",
591
- "@storybook/react": "^10.5.4",
592
- "@storybook/react-vite": "^10.5.4",
589
+ "@storybook/addon-a11y": "10.6.5",
590
+ "@storybook/addon-docs": "10.6.5",
591
+ "@storybook/react": "10.6.5",
592
+ "@storybook/react-vite": "10.6.5",
593
593
  "@types/react": "19.3.0",
594
594
  "@types/react18": "npm:@types/react@18.3.31",
595
- "@vitejs/plugin-react": "^6.0.4",
595
+ "@vitejs/plugin-react": "6.2.1",
596
596
  "ajv": "8.20.0",
597
- "browserslist": "4.29.4",
598
- "caniuse-lite": "1.0.30001816",
597
+ "browserslist": "4.29.5",
598
+ "caniuse-lite": "1.0.30001820",
599
599
  "css-tree": "3.2.1",
600
- "esbuild": "^0.28.1",
601
- "magic-string": "0.30.21",
600
+ "esbuild": "0.28.2",
601
+ "magic-string": "1.4.5",
602
602
  "parse5": "8.0.1",
603
603
  "playwright": "^1.62.0",
604
- "postcss": "8.5.28",
604
+ "postcss": "8.5.32",
605
605
  "postcss-value-parser": "4.2.0",
606
606
  "react": "^19.2.8",
607
607
  "react-dom": "^19.2.8",
608
- "storybook": "^10.5.4",
608
+ "storybook": "10.6.5",
609
609
  "typescript": "7.0.2",
610
610
  "typescript-api": "npm:@typescript/typescript6@6.0.2",
611
- "vite": "^8.1.6",
611
+ "vite": "8.3.5",
612
612
  "yaml": "2.9.1"
613
613
  },
614
614
  "engines": {