@cyberskill/design 2.6.0 → 2.7.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 (324) hide show
  1. package/DESIGN.md +1 -1
  2. package/README.md +3 -3
  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/_esm/cs.mjs +2 -2
  8. package/components/api-discovery.json +6 -6
  9. package/components/api-index.json +57 -16
  10. package/components/contracts.json +5 -5
  11. package/components/forms/Cascader.jsx +1 -1
  12. package/components/forms/ColorPicker.jsx +1 -1
  13. package/components/forms/InlineEdit.jsx +12 -2
  14. package/components/forms/SearchField.jsx +1 -1
  15. package/components/forms/TreeSelect.jsx +1 -1
  16. package/components/lifecycle.json +51 -10
  17. package/components/prompt-api.json +2 -2
  18. package/components/release-compatibility.json +1 -1
  19. package/components/scenarios.json +15 -15
  20. package/components/specifications.json +452 -452
  21. package/components/static-html-reference.json +24 -24
  22. package/dist/esm/_esm/react.mjs +5 -5
  23. package/dist/esm/build.json +52 -52
  24. package/dist/esm/chunks/{chunk-GLPQBE2J.mjs → chunk-4D7SFITE.mjs} +17 -3
  25. package/dist/esm/chunks/chunk-4D7SFITE.mjs.map +7 -0
  26. package/dist/esm/chunks/{chunk-MRXEJSQQ.mjs → chunk-B5V7HN5G.mjs} +5 -2
  27. package/dist/esm/chunks/{chunk-MRXEJSQQ.mjs.map → chunk-B5V7HN5G.mjs.map} +2 -2
  28. package/dist/esm/chunks/{chunk-5FQGNCKS.mjs → chunk-LU45KTWU.mjs} +2 -1
  29. package/dist/esm/chunks/{chunk-5FQGNCKS.mjs.map → chunk-LU45KTWU.mjs.map} +2 -2
  30. package/dist/esm/chunks/{chunk-D7A4ZCMJ.mjs → chunk-RUB6XN27.mjs} +5 -2
  31. package/dist/esm/chunks/{chunk-D7A4ZCMJ.mjs.map → chunk-RUB6XN27.mjs.map} +2 -2
  32. package/dist/esm/chunks/{chunk-FF5D53IP.mjs → chunk-SA7L22XE.mjs} +5 -2
  33. package/dist/esm/chunks/{chunk-FF5D53IP.mjs.map → chunk-SA7L22XE.mjs.map} +2 -2
  34. package/dist/esm/components/forms/Cascader.mjs +1 -1
  35. package/dist/esm/components/forms/ColorPicker.mjs +1 -1
  36. package/dist/esm/components/forms/InlineEdit.mjs +1 -1
  37. package/dist/esm/components/forms/SearchField.mjs +1 -1
  38. package/dist/esm/components/forms/TreeSelect.mjs +1 -1
  39. package/dist/styles.css +1 -1
  40. package/docs/consuming.md +1 -1
  41. package/docs/contrast-report.md +1 -1
  42. package/docs/conventions.md +1 -1
  43. package/docs/reference-catalog.json +20 -20
  44. package/docs/release-notes.md +13 -2
  45. package/docs/static-html-reference.md +23 -23
  46. package/docs/vi/consuming.md +1 -1
  47. package/docs/vi/contrast-report.md +1 -1
  48. package/docs/vi/conventions.md +1 -1
  49. package/docs/vi/entrypoints/DESIGN.md +1 -1
  50. package/docs/vi/entrypoints/README.md +3 -3
  51. package/docs/vi/release-notes.md +13 -2
  52. package/docs/vi/static-html-reference.md +23 -23
  53. package/package.json +6 -2
  54. package/styles/components/manifest.json +7 -7
  55. package/tokens/element-seeds.json +1 -1
  56. package/tokens/modes/dark__default__comfortable__high.dtcg.json +1 -1
  57. package/tokens/modes/dark__default__comfortable__standard.dtcg.json +1 -1
  58. package/tokens/modes/dark__default__compact__high.dtcg.json +1 -1
  59. package/tokens/modes/dark__default__compact__standard.dtcg.json +1 -1
  60. package/tokens/modes/dark__hoa-lava__comfortable__high.dtcg.json +1 -1
  61. package/tokens/modes/dark__hoa-lava__comfortable__standard.dtcg.json +1 -1
  62. package/tokens/modes/dark__hoa-lava__compact__high.dtcg.json +1 -1
  63. package/tokens/modes/dark__hoa-lava__compact__standard.dtcg.json +1 -1
  64. package/tokens/modes/dark__hoa-plasma__comfortable__high.dtcg.json +1 -1
  65. package/tokens/modes/dark__hoa-plasma__comfortable__standard.dtcg.json +1 -1
  66. package/tokens/modes/dark__hoa-plasma__compact__high.dtcg.json +1 -1
  67. package/tokens/modes/dark__hoa-plasma__compact__standard.dtcg.json +1 -1
  68. package/tokens/modes/dark__hoa__comfortable__high.dtcg.json +1 -1
  69. package/tokens/modes/dark__hoa__comfortable__standard.dtcg.json +1 -1
  70. package/tokens/modes/dark__hoa__compact__high.dtcg.json +1 -1
  71. package/tokens/modes/dark__hoa__compact__standard.dtcg.json +1 -1
  72. package/tokens/modes/dark__kim-steel__comfortable__high.dtcg.json +1 -1
  73. package/tokens/modes/dark__kim-steel__comfortable__standard.dtcg.json +1 -1
  74. package/tokens/modes/dark__kim-steel__compact__high.dtcg.json +1 -1
  75. package/tokens/modes/dark__kim-steel__compact__standard.dtcg.json +1 -1
  76. package/tokens/modes/dark__kim-titanium__comfortable__high.dtcg.json +1 -1
  77. package/tokens/modes/dark__kim-titanium__comfortable__standard.dtcg.json +1 -1
  78. package/tokens/modes/dark__kim-titanium__compact__high.dtcg.json +1 -1
  79. package/tokens/modes/dark__kim-titanium__compact__standard.dtcg.json +1 -1
  80. package/tokens/modes/dark__kim__comfortable__high.dtcg.json +1 -1
  81. package/tokens/modes/dark__kim__comfortable__standard.dtcg.json +1 -1
  82. package/tokens/modes/dark__kim__compact__high.dtcg.json +1 -1
  83. package/tokens/modes/dark__kim__compact__standard.dtcg.json +1 -1
  84. package/tokens/modes/dark__moc-bamboo__comfortable__high.dtcg.json +1 -1
  85. package/tokens/modes/dark__moc-bamboo__comfortable__standard.dtcg.json +1 -1
  86. package/tokens/modes/dark__moc-bamboo__compact__high.dtcg.json +1 -1
  87. package/tokens/modes/dark__moc-bamboo__compact__standard.dtcg.json +1 -1
  88. package/tokens/modes/dark__moc-forest__comfortable__high.dtcg.json +1 -1
  89. package/tokens/modes/dark__moc-forest__comfortable__standard.dtcg.json +1 -1
  90. package/tokens/modes/dark__moc-forest__compact__high.dtcg.json +1 -1
  91. package/tokens/modes/dark__moc-forest__compact__standard.dtcg.json +1 -1
  92. package/tokens/modes/dark__moc__comfortable__high.dtcg.json +1 -1
  93. package/tokens/modes/dark__moc__comfortable__standard.dtcg.json +1 -1
  94. package/tokens/modes/dark__moc__compact__high.dtcg.json +1 -1
  95. package/tokens/modes/dark__moc__compact__standard.dtcg.json +1 -1
  96. package/tokens/modes/dark__tho-clay__comfortable__high.dtcg.json +1 -1
  97. package/tokens/modes/dark__tho-clay__comfortable__standard.dtcg.json +1 -1
  98. package/tokens/modes/dark__tho-clay__compact__high.dtcg.json +1 -1
  99. package/tokens/modes/dark__tho-clay__compact__standard.dtcg.json +1 -1
  100. package/tokens/modes/dark__tho-sand__comfortable__high.dtcg.json +1 -1
  101. package/tokens/modes/dark__tho-sand__comfortable__standard.dtcg.json +1 -1
  102. package/tokens/modes/dark__tho-sand__compact__high.dtcg.json +1 -1
  103. package/tokens/modes/dark__tho-sand__compact__standard.dtcg.json +1 -1
  104. package/tokens/modes/dark__tho__comfortable__high.dtcg.json +1 -1
  105. package/tokens/modes/dark__tho__comfortable__standard.dtcg.json +1 -1
  106. package/tokens/modes/dark__tho__compact__high.dtcg.json +1 -1
  107. package/tokens/modes/dark__tho__compact__standard.dtcg.json +1 -1
  108. package/tokens/modes/dark__thuy-mist__comfortable__high.dtcg.json +1 -1
  109. package/tokens/modes/dark__thuy-mist__comfortable__standard.dtcg.json +1 -1
  110. package/tokens/modes/dark__thuy-mist__compact__high.dtcg.json +1 -1
  111. package/tokens/modes/dark__thuy-mist__compact__standard.dtcg.json +1 -1
  112. package/tokens/modes/dark__thuy-ocean__comfortable__high.dtcg.json +1 -1
  113. package/tokens/modes/dark__thuy-ocean__comfortable__standard.dtcg.json +1 -1
  114. package/tokens/modes/dark__thuy-ocean__compact__high.dtcg.json +1 -1
  115. package/tokens/modes/dark__thuy-ocean__compact__standard.dtcg.json +1 -1
  116. package/tokens/modes/dark__thuy__comfortable__high.dtcg.json +1 -1
  117. package/tokens/modes/dark__thuy__comfortable__standard.dtcg.json +1 -1
  118. package/tokens/modes/dark__thuy__compact__high.dtcg.json +1 -1
  119. package/tokens/modes/dark__thuy__compact__standard.dtcg.json +1 -1
  120. package/tokens/modes/index.json +258 -258
  121. package/tokens/modes/light__default__comfortable__high.dtcg.json +1 -1
  122. package/tokens/modes/light__default__comfortable__standard.dtcg.json +1 -1
  123. package/tokens/modes/light__default__compact__high.dtcg.json +1 -1
  124. package/tokens/modes/light__default__compact__standard.dtcg.json +1 -1
  125. package/tokens/modes/light__hoa-lava__comfortable__high.dtcg.json +1 -1
  126. package/tokens/modes/light__hoa-lava__comfortable__standard.dtcg.json +1 -1
  127. package/tokens/modes/light__hoa-lava__compact__high.dtcg.json +1 -1
  128. package/tokens/modes/light__hoa-lava__compact__standard.dtcg.json +1 -1
  129. package/tokens/modes/light__hoa-plasma__comfortable__high.dtcg.json +1 -1
  130. package/tokens/modes/light__hoa-plasma__comfortable__standard.dtcg.json +1 -1
  131. package/tokens/modes/light__hoa-plasma__compact__high.dtcg.json +1 -1
  132. package/tokens/modes/light__hoa-plasma__compact__standard.dtcg.json +1 -1
  133. package/tokens/modes/light__hoa__comfortable__high.dtcg.json +1 -1
  134. package/tokens/modes/light__hoa__comfortable__standard.dtcg.json +1 -1
  135. package/tokens/modes/light__hoa__compact__high.dtcg.json +1 -1
  136. package/tokens/modes/light__hoa__compact__standard.dtcg.json +1 -1
  137. package/tokens/modes/light__kim-steel__comfortable__high.dtcg.json +1 -1
  138. package/tokens/modes/light__kim-steel__comfortable__standard.dtcg.json +1 -1
  139. package/tokens/modes/light__kim-steel__compact__high.dtcg.json +1 -1
  140. package/tokens/modes/light__kim-steel__compact__standard.dtcg.json +1 -1
  141. package/tokens/modes/light__kim-titanium__comfortable__high.dtcg.json +1 -1
  142. package/tokens/modes/light__kim-titanium__comfortable__standard.dtcg.json +1 -1
  143. package/tokens/modes/light__kim-titanium__compact__high.dtcg.json +1 -1
  144. package/tokens/modes/light__kim-titanium__compact__standard.dtcg.json +1 -1
  145. package/tokens/modes/light__kim__comfortable__high.dtcg.json +1 -1
  146. package/tokens/modes/light__kim__comfortable__standard.dtcg.json +1 -1
  147. package/tokens/modes/light__kim__compact__high.dtcg.json +1 -1
  148. package/tokens/modes/light__kim__compact__standard.dtcg.json +1 -1
  149. package/tokens/modes/light__moc-bamboo__comfortable__high.dtcg.json +1 -1
  150. package/tokens/modes/light__moc-bamboo__comfortable__standard.dtcg.json +1 -1
  151. package/tokens/modes/light__moc-bamboo__compact__high.dtcg.json +1 -1
  152. package/tokens/modes/light__moc-bamboo__compact__standard.dtcg.json +1 -1
  153. package/tokens/modes/light__moc-forest__comfortable__high.dtcg.json +1 -1
  154. package/tokens/modes/light__moc-forest__comfortable__standard.dtcg.json +1 -1
  155. package/tokens/modes/light__moc-forest__compact__high.dtcg.json +1 -1
  156. package/tokens/modes/light__moc-forest__compact__standard.dtcg.json +1 -1
  157. package/tokens/modes/light__moc__comfortable__high.dtcg.json +1 -1
  158. package/tokens/modes/light__moc__comfortable__standard.dtcg.json +1 -1
  159. package/tokens/modes/light__moc__compact__high.dtcg.json +1 -1
  160. package/tokens/modes/light__moc__compact__standard.dtcg.json +1 -1
  161. package/tokens/modes/light__tho-clay__comfortable__high.dtcg.json +1 -1
  162. package/tokens/modes/light__tho-clay__comfortable__standard.dtcg.json +1 -1
  163. package/tokens/modes/light__tho-clay__compact__high.dtcg.json +1 -1
  164. package/tokens/modes/light__tho-clay__compact__standard.dtcg.json +1 -1
  165. package/tokens/modes/light__tho-sand__comfortable__high.dtcg.json +1 -1
  166. package/tokens/modes/light__tho-sand__comfortable__standard.dtcg.json +1 -1
  167. package/tokens/modes/light__tho-sand__compact__high.dtcg.json +1 -1
  168. package/tokens/modes/light__tho-sand__compact__standard.dtcg.json +1 -1
  169. package/tokens/modes/light__tho__comfortable__high.dtcg.json +1 -1
  170. package/tokens/modes/light__tho__comfortable__standard.dtcg.json +1 -1
  171. package/tokens/modes/light__tho__compact__high.dtcg.json +1 -1
  172. package/tokens/modes/light__tho__compact__standard.dtcg.json +1 -1
  173. package/tokens/modes/light__thuy-mist__comfortable__high.dtcg.json +1 -1
  174. package/tokens/modes/light__thuy-mist__comfortable__standard.dtcg.json +1 -1
  175. package/tokens/modes/light__thuy-mist__compact__high.dtcg.json +1 -1
  176. package/tokens/modes/light__thuy-mist__compact__standard.dtcg.json +1 -1
  177. package/tokens/modes/light__thuy-ocean__comfortable__high.dtcg.json +1 -1
  178. package/tokens/modes/light__thuy-ocean__comfortable__standard.dtcg.json +1 -1
  179. package/tokens/modes/light__thuy-ocean__compact__high.dtcg.json +1 -1
  180. package/tokens/modes/light__thuy-ocean__compact__standard.dtcg.json +1 -1
  181. package/tokens/modes/light__thuy__comfortable__high.dtcg.json +1 -1
  182. package/tokens/modes/light__thuy__comfortable__standard.dtcg.json +1 -1
  183. package/tokens/modes/light__thuy__compact__high.dtcg.json +1 -1
  184. package/tokens/modes/light__thuy__compact__standard.dtcg.json +1 -1
  185. package/tokens/modes/system-dark__default__comfortable__high.dtcg.json +1 -1
  186. package/tokens/modes/system-dark__default__comfortable__standard.dtcg.json +1 -1
  187. package/tokens/modes/system-dark__default__compact__high.dtcg.json +1 -1
  188. package/tokens/modes/system-dark__default__compact__standard.dtcg.json +1 -1
  189. package/tokens/modes/system-dark__hoa-lava__comfortable__high.dtcg.json +1 -1
  190. package/tokens/modes/system-dark__hoa-lava__comfortable__standard.dtcg.json +1 -1
  191. package/tokens/modes/system-dark__hoa-lava__compact__high.dtcg.json +1 -1
  192. package/tokens/modes/system-dark__hoa-lava__compact__standard.dtcg.json +1 -1
  193. package/tokens/modes/system-dark__hoa-plasma__comfortable__high.dtcg.json +1 -1
  194. package/tokens/modes/system-dark__hoa-plasma__comfortable__standard.dtcg.json +1 -1
  195. package/tokens/modes/system-dark__hoa-plasma__compact__high.dtcg.json +1 -1
  196. package/tokens/modes/system-dark__hoa-plasma__compact__standard.dtcg.json +1 -1
  197. package/tokens/modes/system-dark__hoa__comfortable__high.dtcg.json +1 -1
  198. package/tokens/modes/system-dark__hoa__comfortable__standard.dtcg.json +1 -1
  199. package/tokens/modes/system-dark__hoa__compact__high.dtcg.json +1 -1
  200. package/tokens/modes/system-dark__hoa__compact__standard.dtcg.json +1 -1
  201. package/tokens/modes/system-dark__kim-steel__comfortable__high.dtcg.json +1 -1
  202. package/tokens/modes/system-dark__kim-steel__comfortable__standard.dtcg.json +1 -1
  203. package/tokens/modes/system-dark__kim-steel__compact__high.dtcg.json +1 -1
  204. package/tokens/modes/system-dark__kim-steel__compact__standard.dtcg.json +1 -1
  205. package/tokens/modes/system-dark__kim-titanium__comfortable__high.dtcg.json +1 -1
  206. package/tokens/modes/system-dark__kim-titanium__comfortable__standard.dtcg.json +1 -1
  207. package/tokens/modes/system-dark__kim-titanium__compact__high.dtcg.json +1 -1
  208. package/tokens/modes/system-dark__kim-titanium__compact__standard.dtcg.json +1 -1
  209. package/tokens/modes/system-dark__kim__comfortable__high.dtcg.json +1 -1
  210. package/tokens/modes/system-dark__kim__comfortable__standard.dtcg.json +1 -1
  211. package/tokens/modes/system-dark__kim__compact__high.dtcg.json +1 -1
  212. package/tokens/modes/system-dark__kim__compact__standard.dtcg.json +1 -1
  213. package/tokens/modes/system-dark__moc-bamboo__comfortable__high.dtcg.json +1 -1
  214. package/tokens/modes/system-dark__moc-bamboo__comfortable__standard.dtcg.json +1 -1
  215. package/tokens/modes/system-dark__moc-bamboo__compact__high.dtcg.json +1 -1
  216. package/tokens/modes/system-dark__moc-bamboo__compact__standard.dtcg.json +1 -1
  217. package/tokens/modes/system-dark__moc-forest__comfortable__high.dtcg.json +1 -1
  218. package/tokens/modes/system-dark__moc-forest__comfortable__standard.dtcg.json +1 -1
  219. package/tokens/modes/system-dark__moc-forest__compact__high.dtcg.json +1 -1
  220. package/tokens/modes/system-dark__moc-forest__compact__standard.dtcg.json +1 -1
  221. package/tokens/modes/system-dark__moc__comfortable__high.dtcg.json +1 -1
  222. package/tokens/modes/system-dark__moc__comfortable__standard.dtcg.json +1 -1
  223. package/tokens/modes/system-dark__moc__compact__high.dtcg.json +1 -1
  224. package/tokens/modes/system-dark__moc__compact__standard.dtcg.json +1 -1
  225. package/tokens/modes/system-dark__tho-clay__comfortable__high.dtcg.json +1 -1
  226. package/tokens/modes/system-dark__tho-clay__comfortable__standard.dtcg.json +1 -1
  227. package/tokens/modes/system-dark__tho-clay__compact__high.dtcg.json +1 -1
  228. package/tokens/modes/system-dark__tho-clay__compact__standard.dtcg.json +1 -1
  229. package/tokens/modes/system-dark__tho-sand__comfortable__high.dtcg.json +1 -1
  230. package/tokens/modes/system-dark__tho-sand__comfortable__standard.dtcg.json +1 -1
  231. package/tokens/modes/system-dark__tho-sand__compact__high.dtcg.json +1 -1
  232. package/tokens/modes/system-dark__tho-sand__compact__standard.dtcg.json +1 -1
  233. package/tokens/modes/system-dark__tho__comfortable__high.dtcg.json +1 -1
  234. package/tokens/modes/system-dark__tho__comfortable__standard.dtcg.json +1 -1
  235. package/tokens/modes/system-dark__tho__compact__high.dtcg.json +1 -1
  236. package/tokens/modes/system-dark__tho__compact__standard.dtcg.json +1 -1
  237. package/tokens/modes/system-dark__thuy-mist__comfortable__high.dtcg.json +1 -1
  238. package/tokens/modes/system-dark__thuy-mist__comfortable__standard.dtcg.json +1 -1
  239. package/tokens/modes/system-dark__thuy-mist__compact__high.dtcg.json +1 -1
  240. package/tokens/modes/system-dark__thuy-mist__compact__standard.dtcg.json +1 -1
  241. package/tokens/modes/system-dark__thuy-ocean__comfortable__high.dtcg.json +1 -1
  242. package/tokens/modes/system-dark__thuy-ocean__comfortable__standard.dtcg.json +1 -1
  243. package/tokens/modes/system-dark__thuy-ocean__compact__high.dtcg.json +1 -1
  244. package/tokens/modes/system-dark__thuy-ocean__compact__standard.dtcg.json +1 -1
  245. package/tokens/modes/system-dark__thuy__comfortable__high.dtcg.json +1 -1
  246. package/tokens/modes/system-dark__thuy__comfortable__standard.dtcg.json +1 -1
  247. package/tokens/modes/system-dark__thuy__compact__high.dtcg.json +1 -1
  248. package/tokens/modes/system-dark__thuy__compact__standard.dtcg.json +1 -1
  249. package/tokens/modes/system-light__default__comfortable__high.dtcg.json +1 -1
  250. package/tokens/modes/system-light__default__comfortable__standard.dtcg.json +1 -1
  251. package/tokens/modes/system-light__default__compact__high.dtcg.json +1 -1
  252. package/tokens/modes/system-light__default__compact__standard.dtcg.json +1 -1
  253. package/tokens/modes/system-light__hoa-lava__comfortable__high.dtcg.json +1 -1
  254. package/tokens/modes/system-light__hoa-lava__comfortable__standard.dtcg.json +1 -1
  255. package/tokens/modes/system-light__hoa-lava__compact__high.dtcg.json +1 -1
  256. package/tokens/modes/system-light__hoa-lava__compact__standard.dtcg.json +1 -1
  257. package/tokens/modes/system-light__hoa-plasma__comfortable__high.dtcg.json +1 -1
  258. package/tokens/modes/system-light__hoa-plasma__comfortable__standard.dtcg.json +1 -1
  259. package/tokens/modes/system-light__hoa-plasma__compact__high.dtcg.json +1 -1
  260. package/tokens/modes/system-light__hoa-plasma__compact__standard.dtcg.json +1 -1
  261. package/tokens/modes/system-light__hoa__comfortable__high.dtcg.json +1 -1
  262. package/tokens/modes/system-light__hoa__comfortable__standard.dtcg.json +1 -1
  263. package/tokens/modes/system-light__hoa__compact__high.dtcg.json +1 -1
  264. package/tokens/modes/system-light__hoa__compact__standard.dtcg.json +1 -1
  265. package/tokens/modes/system-light__kim-steel__comfortable__high.dtcg.json +1 -1
  266. package/tokens/modes/system-light__kim-steel__comfortable__standard.dtcg.json +1 -1
  267. package/tokens/modes/system-light__kim-steel__compact__high.dtcg.json +1 -1
  268. package/tokens/modes/system-light__kim-steel__compact__standard.dtcg.json +1 -1
  269. package/tokens/modes/system-light__kim-titanium__comfortable__high.dtcg.json +1 -1
  270. package/tokens/modes/system-light__kim-titanium__comfortable__standard.dtcg.json +1 -1
  271. package/tokens/modes/system-light__kim-titanium__compact__high.dtcg.json +1 -1
  272. package/tokens/modes/system-light__kim-titanium__compact__standard.dtcg.json +1 -1
  273. package/tokens/modes/system-light__kim__comfortable__high.dtcg.json +1 -1
  274. package/tokens/modes/system-light__kim__comfortable__standard.dtcg.json +1 -1
  275. package/tokens/modes/system-light__kim__compact__high.dtcg.json +1 -1
  276. package/tokens/modes/system-light__kim__compact__standard.dtcg.json +1 -1
  277. package/tokens/modes/system-light__moc-bamboo__comfortable__high.dtcg.json +1 -1
  278. package/tokens/modes/system-light__moc-bamboo__comfortable__standard.dtcg.json +1 -1
  279. package/tokens/modes/system-light__moc-bamboo__compact__high.dtcg.json +1 -1
  280. package/tokens/modes/system-light__moc-bamboo__compact__standard.dtcg.json +1 -1
  281. package/tokens/modes/system-light__moc-forest__comfortable__high.dtcg.json +1 -1
  282. package/tokens/modes/system-light__moc-forest__comfortable__standard.dtcg.json +1 -1
  283. package/tokens/modes/system-light__moc-forest__compact__high.dtcg.json +1 -1
  284. package/tokens/modes/system-light__moc-forest__compact__standard.dtcg.json +1 -1
  285. package/tokens/modes/system-light__moc__comfortable__high.dtcg.json +1 -1
  286. package/tokens/modes/system-light__moc__comfortable__standard.dtcg.json +1 -1
  287. package/tokens/modes/system-light__moc__compact__high.dtcg.json +1 -1
  288. package/tokens/modes/system-light__moc__compact__standard.dtcg.json +1 -1
  289. package/tokens/modes/system-light__tho-clay__comfortable__high.dtcg.json +1 -1
  290. package/tokens/modes/system-light__tho-clay__comfortable__standard.dtcg.json +1 -1
  291. package/tokens/modes/system-light__tho-clay__compact__high.dtcg.json +1 -1
  292. package/tokens/modes/system-light__tho-clay__compact__standard.dtcg.json +1 -1
  293. package/tokens/modes/system-light__tho-sand__comfortable__high.dtcg.json +1 -1
  294. package/tokens/modes/system-light__tho-sand__comfortable__standard.dtcg.json +1 -1
  295. package/tokens/modes/system-light__tho-sand__compact__high.dtcg.json +1 -1
  296. package/tokens/modes/system-light__tho-sand__compact__standard.dtcg.json +1 -1
  297. package/tokens/modes/system-light__tho__comfortable__high.dtcg.json +1 -1
  298. package/tokens/modes/system-light__tho__comfortable__standard.dtcg.json +1 -1
  299. package/tokens/modes/system-light__tho__compact__high.dtcg.json +1 -1
  300. package/tokens/modes/system-light__tho__compact__standard.dtcg.json +1 -1
  301. package/tokens/modes/system-light__thuy-mist__comfortable__high.dtcg.json +1 -1
  302. package/tokens/modes/system-light__thuy-mist__comfortable__standard.dtcg.json +1 -1
  303. package/tokens/modes/system-light__thuy-mist__compact__high.dtcg.json +1 -1
  304. package/tokens/modes/system-light__thuy-mist__compact__standard.dtcg.json +1 -1
  305. package/tokens/modes/system-light__thuy-ocean__comfortable__high.dtcg.json +1 -1
  306. package/tokens/modes/system-light__thuy-ocean__comfortable__standard.dtcg.json +1 -1
  307. package/tokens/modes/system-light__thuy-ocean__compact__high.dtcg.json +1 -1
  308. package/tokens/modes/system-light__thuy-ocean__compact__standard.dtcg.json +1 -1
  309. package/tokens/modes/system-light__thuy__comfortable__high.dtcg.json +1 -1
  310. package/tokens/modes/system-light__thuy__comfortable__standard.dtcg.json +1 -1
  311. package/tokens/modes/system-light__thuy__compact__high.dtcg.json +1 -1
  312. package/tokens/modes/system-light__thuy__compact__standard.dtcg.json +1 -1
  313. package/tokens/native/CSModes.kt +3 -3
  314. package/tokens/native/CSModes.swift +3 -3
  315. package/tokens/native/CSTokens.kt +1 -1
  316. package/tokens/native/CSTokens.swift +1 -1
  317. package/tokens/native/cs_modes.dart +3 -3
  318. package/tokens/native/cs_tokens.dart +1 -1
  319. package/tokens/native/mode-provenance.json +6 -6
  320. package/tokens/provenance.json +6 -6
  321. package/tokens/tokens.dtcg.json +1 -1
  322. package/tokens/tokens.js +2 -2
  323. package/tokens/tokens.json +1 -1
  324. package/dist/esm/chunks/chunk-GLPQBE2J.mjs.map +0 -7
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../components/forms/ColorPicker.jsx"],
4
- "sourcesContent": ["import { useFloatingPanel } from \"../_utils/floating-panel.js\";\nimport { useComposedRefs } from \"../_utils/refs.js\";\nimport React from \"react\";\nimport { useFieldAssociation, mergeTargetProps, fieldMessages } from \"../_utils/field-association.js\";\n\nimport { makeT, useLang } from \"../_i18n/i18n.js\";\nimport { useOverlayLayer, overlayScopeContext } from \"../overlays/OverlayManager.jsx\";\nimport { cx } from \"../_utils/cx.js\";\nconst SWATCHES = [\"#F4BA17\", \"#C77B4A\", \"#E0632B\", \"#C43D1F\", \"#7A9B57\", \"#3E5A2E\", \"#4E8E9B\", \"#2E5E7E\", \"#BFB29B\", \"#45210E\"];\n\n/** CyberSkill ColorPicker — curated brand swatches + custom hex input. */\nexport const ColorPicker = React.forwardRef(function ColorPicker({ portal = true, placement, controlRef, value = \"#F4BA17\", onChange, swatches = SWATCHES, label, \"aria-labelledby\": ariaLabelledBy, lang, className, id, description, error, required = false, rootProps, controlProps }, forwardedRef) {\n const floatingRef = React.useRef(null);\n const mergedControlRef = useComposedRefs(controlRef);\n const [open, setOpen] = React.useState(false);\n const [hex, setHex] = React.useState(value);\n const wrap = React.useRef(null);\n const [ref, L, localeMessages] = useLang(lang);\n const mergedNativeRef = useComposedRefs(wrap, ref, forwardedRef);\n const t = makeT(\"ColorPicker\", L, localeMessages);\n const requiredDescription = required ? makeT(\"Form\", L, localeMessages)(\"required\") : undefined;\n const control = useFieldAssociation({ id: controlProps?.id ?? id,\n \"aria-label\": controlProps?.[\"aria-label\"] ?? (controlProps?.[\"aria-labelledby\"] || ariaLabelledBy ? undefined : (label ? label + \": \" + value : undefined)),\n \"aria-labelledby\": controlProps?.[\"aria-labelledby\"] ?? ariaLabelledBy,\n \"aria-describedby\": controlProps?.[\"aria-describedby\"], \"aria-invalid\": controlProps?.[\"aria-invalid\"] },\n { fallbackLabel: (label || t(\"label\")) + \": \" + value, description, error, requiredDescription });\n React.useEffect(() => setHex(value), [value]);\n const floating = useFloatingPanel({ open: open, anchorRef: wrap, panelRef: floatingRef, portal, placement: placement ?? \"bottom-start\", gap: 6, getAnchor: ()=>wrap.current?.querySelector(\":scope > button\"), lang });\n const { scope } = useOverlayLayer({ open: (open) && floating.ready, kind: \"popover\", panelRef: floatingRef, surfaceKey: floating.surfaceKey, onEscape: () => setOpen(false) });\n React.useEffect(() => {\n if (!open) return;\n const d = (e) => { if (!floating.contains(e.target)) setOpen(false); };\n document.addEventListener(\"mousedown\", d);\n return () => { document.removeEventListener(\"mousedown\", d); };\n }, [open]);\n const commit = (v) => { if (/^#[0-9a-fA-F]{6}$/.test(v)) { onChange && onChange(v); } };\n return (\n <overlayScopeContext.Provider value={scope}>\n <span ref={mergedNativeRef} {...mergeTargetProps({ className: cx(\"cs-colorpicker\", className) }, rootProps)}>\n <button {...mergeTargetProps({ ...control, type: \"button\", className: \"cs-colorpicker__field\", \"aria-expanded\": open, onClick: () => setOpen(o => !o) }, controlProps, [\"id\", \"role\", \"type\", \"name\", \"value\", \"defaultValue\", \"disabled\", \"required\", \"aria-required\", \"aria-label\", \"aria-labelledby\", \"aria-describedby\", \"aria-invalid\", \"aria-haspopup\", \"aria-expanded\", \"aria-controls\", \"aria-activedescendant\"])} ref={mergedControlRef} >\n <i style={{ background: value }} /><code>{value}</code>\n </button>\n {open ? (\n floating.render(<span ref={floatingRef} className=\"cs-colorpicker__pop\" role=\"dialog\" aria-label={control[\"aria-labelledby\"] ? undefined : (controlProps?.[\"aria-label\"] || label || t(\"label\"))} aria-labelledby={control[\"aria-labelledby\"]}>\n <span className=\"cs-colorpicker__grid\">\n {swatches.map((s) => (\n <button key={s} type=\"button\" aria-label={s} aria-pressed={s.toLowerCase() === String(value).toLowerCase()} style={{ background: s }} className={s.toLowerCase() === String(value).toLowerCase() ? \"on\" : undefined}\n onClick={() => { onChange && onChange(s); setOpen(false); }} />\n ))}\n </span>\n <span className=\"cs-colorpicker__hex\">\n <input value={hex} aria-label={t(\"hex\")} onChange={(e) => setHex(e.target.value)}\n onKeyDown={(e) => { if (e.nativeEvent.isComposing || e.keyCode === 229) return; if (e.key === \"Enter\") { e.preventDefault(); commit(hex); setOpen(false); } }} onBlur={() => commit(hex)} />\n </span>\n </span>)\n ) : null}\n {fieldMessages(control, description, error, requiredDescription)}\n </span>\n </overlayScopeContext.Provider>\n );\n});\nColorPicker.displayName = \"ColorPicker\";\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { useFloatingPanel } from \"../_utils/floating-panel.js\";\nimport { useComposedRefs } from \"../_utils/refs.js\";\nimport React from \"react\";\nimport { useFieldAssociation, mergeTargetProps, fieldMessages } from \"../_utils/field-association.js\";\n\nimport { makeT, useLang } from \"../_i18n/i18n.js\";\nimport { useOverlayLayer, overlayScopeContext } from \"../overlays/OverlayManager.jsx\";\nimport { cx } from \"../_utils/cx.js\";\nconst SWATCHES = [\"#F4BA17\", \"#C77B4A\", \"#E0632B\", \"#C43D1F\", \"#7A9B57\", \"#3E5A2E\", \"#4E8E9B\", \"#2E5E7E\", \"#BFB29B\", \"#45210E\"];\n\n/** CyberSkill ColorPicker — curated brand swatches + custom hex input. */\nexport const ColorPicker = React.forwardRef(function ColorPicker({ portal = true, placement, controlRef, value = \"#F4BA17\", onChange, swatches = SWATCHES, label, \"aria-labelledby\": ariaLabelledBy, lang, className, id, description, error, required = false, rootProps, controlProps }, forwardedRef) {\n const floatingRef = React.useRef(null);\n const mergedControlRef = useComposedRefs(controlRef);\n const [open, setOpen] = React.useState(false);\n const [hex, setHex] = React.useState(value);\n const wrap = React.useRef(null);\n const [ref, L, localeMessages] = useLang(lang);\n const mergedNativeRef = useComposedRefs(wrap, ref, forwardedRef);\n const t = makeT(\"ColorPicker\", L, localeMessages);\n const requiredDescription = required ? makeT(\"Form\", L, localeMessages)(\"required\") : undefined;\n const control = useFieldAssociation({ id: controlProps?.id ?? id,\n \"aria-label\": controlProps?.[\"aria-label\"] ?? (controlProps?.[\"aria-labelledby\"] || ariaLabelledBy ? undefined : (label ? label + \": \" + value : undefined)),\n \"aria-labelledby\": controlProps?.[\"aria-labelledby\"] ?? ariaLabelledBy,\n \"aria-describedby\": controlProps?.[\"aria-describedby\"], \"aria-invalid\": controlProps?.[\"aria-invalid\"] },\n { fallbackLabel: (label || t(\"label\")) + \": \" + value, description, error, requiredDescription });\n React.useEffect(() => setHex(value), [value]);\n const floating = useFloatingPanel({ open: open, anchorRef: wrap, panelRef: floatingRef, portal, placement: placement ?? \"bottom-start\", gap: 6, getAnchor: ()=>wrap.current?.querySelector(\":scope > button\"), lang });\n const { scope } = useOverlayLayer({ open: (open) && floating.ready, kind: \"popover\", panelRef: floatingRef, surfaceKey: floating.surfaceKey, onEscape: () => setOpen(false) });\n React.useEffect(() => {\n if (!open) return;\n const d = (e) => { if (!floating.contains(e.target)) setOpen(false); };\n document.addEventListener(\"mousedown\", d);\n return () => { document.removeEventListener(\"mousedown\", d); };\n }, [open]);\n const commit = (v) => { if (/^#[0-9a-fA-F]{6}$/.test(v)) { onChange && onChange(v); } };\n return (\n <overlayScopeContext.Provider value={scope}>\n <span ref={mergedNativeRef} {...mergeTargetProps({ className: cx(\"cs-colorpicker\", className) }, rootProps)}>\n <button {...mergeTargetProps({ ...control, type: \"button\", className: \"cs-colorpicker__field\", \"aria-expanded\": open, onClick: event => { if (!open) event.currentTarget.focus(); setOpen(o => !o); } }, controlProps, [\"id\", \"role\", \"type\", \"name\", \"value\", \"defaultValue\", \"disabled\", \"required\", \"aria-required\", \"aria-label\", \"aria-labelledby\", \"aria-describedby\", \"aria-invalid\", \"aria-haspopup\", \"aria-expanded\", \"aria-controls\", \"aria-activedescendant\"])} ref={mergedControlRef} >\n <i style={{ background: value }} /><code>{value}</code>\n </button>\n {open ? (\n floating.render(<span ref={floatingRef} className=\"cs-colorpicker__pop\" role=\"dialog\" aria-label={control[\"aria-labelledby\"] ? undefined : (controlProps?.[\"aria-label\"] || label || t(\"label\"))} aria-labelledby={control[\"aria-labelledby\"]}>\n <span className=\"cs-colorpicker__grid\">\n {swatches.map((s) => (\n <button key={s} type=\"button\" aria-label={s} aria-pressed={s.toLowerCase() === String(value).toLowerCase()} style={{ background: s }} className={s.toLowerCase() === String(value).toLowerCase() ? \"on\" : undefined}\n onClick={() => { onChange && onChange(s); setOpen(false); }} />\n ))}\n </span>\n <span className=\"cs-colorpicker__hex\">\n <input value={hex} aria-label={t(\"hex\")} onChange={(e) => setHex(e.target.value)}\n onKeyDown={(e) => { if (e.nativeEvent.isComposing || e.keyCode === 229) return; if (e.key === \"Enter\") { e.preventDefault(); commit(hex); setOpen(false); } }} onBlur={() => commit(hex)} />\n </span>\n </span>)\n ) : null}\n {fieldMessages(control, description, error, requiredDescription)}\n </span>\n </overlayScopeContext.Provider>\n );\n});\nColorPicker.displayName = \"ColorPicker\";\n"],
5
+ "mappings": "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",
6
6
  "names": ["ColorPicker"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  Cascader
4
- } from "../../chunks/chunk-D7A4ZCMJ.mjs";
4
+ } from "../../chunks/chunk-RUB6XN27.mjs";
5
5
  import "../../chunks/chunk-52SZC6SY.mjs";
6
6
  import "../../chunks/chunk-6AEW6SXI.mjs";
7
7
  import "../../chunks/chunk-JZYRXWPD.mjs";
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  ColorPicker
4
- } from "../../chunks/chunk-FF5D53IP.mjs";
4
+ } from "../../chunks/chunk-SA7L22XE.mjs";
5
5
  import "../../chunks/chunk-52SZC6SY.mjs";
6
6
  import "../../chunks/chunk-6AEW6SXI.mjs";
7
7
  import "../../chunks/chunk-JZYRXWPD.mjs";
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  InlineEdit
4
- } from "../../chunks/chunk-GLPQBE2J.mjs";
4
+ } from "../../chunks/chunk-4D7SFITE.mjs";
5
5
  import "../../chunks/chunk-6AEW6SXI.mjs";
6
6
  import "../../chunks/chunk-JZYRXWPD.mjs";
7
7
  import "../../chunks/chunk-CQQ2JOJD.mjs";
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  SearchField
4
- } from "../../chunks/chunk-5FQGNCKS.mjs";
4
+ } from "../../chunks/chunk-LU45KTWU.mjs";
5
5
  import "../../chunks/chunk-JZYRXWPD.mjs";
6
6
  import "../../chunks/chunk-CQQ2JOJD.mjs";
7
7
  import "../../chunks/chunk-5LXHLKXS.mjs";
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  TreeSelect
4
- } from "../../chunks/chunk-MRXEJSQQ.mjs";
4
+ } from "../../chunks/chunk-B5V7HN5G.mjs";
5
5
  import "../../chunks/chunk-RQQH7VWW.mjs";
6
6
  import "../../chunks/chunk-52SZC6SY.mjs";
7
7
  import "../../chunks/chunk-6AEW6SXI.mjs";
package/dist/styles.css CHANGED
@@ -1,4 +1,4 @@
1
- /* CyberSkill Design System v2.6.0 — flattened build of ../styles.css (same closure, same order, no @import chain).
1
+ /* CyberSkill Design System v2.7.0 — flattened build of ../styles.css (same closure, same order, no @import chain).
2
2
  * Link THIS file from cards, kits and templates; keep editing the modular sources under tokens/ and base/ and
3
3
  * regenerate this file after any change. url() paths are already relative to dist/ (../fonts, ../assets). */
4
4
 
package/docs/consuming.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Consuming & upgrading the CyberSkill Design System
2
2
 
3
- **Source checkout:** VERSION **<!-- cs-source-version:checkout -->2.6.0<!-- /cs-source-version -->** is local source identity, not a registry-availability claim. For an unpublished candidate, validate the reviewed local package tarball or source checkout. Registry commands below refer to published stable 2.5.0 (and the dated ADOPT-001 1.7.2 sibling inventory) and are not automatically updated by preparation. Preparation does not authorize publication.
3
+ **Source checkout:** VERSION **<!-- cs-source-version:checkout -->2.7.0<!-- /cs-source-version -->** is local source identity, not a registry-availability claim. For an unpublished candidate, validate the reviewed local package tarball or source checkout. Registry commands below refer to published stable 2.6.0 (and the dated ADOPT-001 1.7.2 sibling inventory) and are not automatically updated by preparation. Preparation does not authorize publication.
4
4
 
5
5
  How any project — human-driven or agent-driven — adopts this HTML-first design system, and how to take updates safely. Published on Storybook **Docs** at `design.cyberskill.world`.
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Contrast report — elemental pairings (APCA)
2
2
 
3
- Generated · sweep at VERSION 2.6.0.
3
+ Generated · sweep at VERSION 2.7.0.
4
4
 
5
5
  Published on Storybook **Docs** at `design.cyberskill.world`.
6
6
 
@@ -78,7 +78,7 @@ only for HTML element content, never URL, attribute, CSS or script contexts.
78
78
 
79
79
  **New element variant** — stay inside the element's oklch envelope; set the 10 `--cs-accent-*` contract tokens (incl. `--cs-accent-on-strong` ≥4.5:1 and body APCA75 on `-strong`) plus `--cs-color-text-accent`/`--cs-color-link` (APCA-check both); the aurora wash inherits from the element via `.cs-aurora-wash` (override the class rule only if the variant truly needs its own image); gradient partner (`grad-b`) must follow Tương sinh.
80
80
 
81
- **Ship check** — follow the portable verification gate in `docs/doctrine.md`, then run `_audit/docs-consistency.html` **and** `_audit/namespace-portability.html` (both must be green). source checkout VERSION **<!-- cs-source-version:checkout -->2.6.0<!-- /cs-source-version -->**.
81
+ **Ship check** — follow the portable verification gate in `docs/doctrine.md`, then run `_audit/docs-consistency.html` **and** `_audit/namespace-portability.html` (both must be green). source checkout VERSION **<!-- cs-source-version:checkout -->2.7.0<!-- /cs-source-version -->**.
82
82
 
83
83
  ## Decision log (owner-approved)
84
84
 
@@ -2,9 +2,9 @@
2
2
  "schemaVersion": 1,
3
3
  "generator": {
4
4
  "path": "scripts/generate-reference-catalog.mjs",
5
- "sha256": "be85a593b4b29f0d26e5733502f8d9e4f536e10ab015173a34f4101af11723ef"
5
+ "sha256": "aa248038eb8a16b6f1265c6f0d20c5efcf9f7d34dadd371570adf6829f65aae8"
6
6
  },
7
- "version": "2.6.0",
7
+ "version": "2.7.0",
8
8
  "interpretation": "The document inventory covers Git-listed Markdown and llms.txt; HTML count surfaces are tracked separately. Audience follows the website publication policy, not npm membership. Source paths locate repository evidence and need not all be packaged. Roles describe source routing and audience, not approval, factual freshness of every sentence, translation quality or capability certification.",
9
9
  "countScope": "Counts describe declared inventory only. Declared language/theme/boolean controls are inventory facts, not proof of complete content, working behavior or every supported state; token declarations and typed base values are distinct counts.",
10
10
  "counts": {
@@ -30,7 +30,7 @@
30
30
  "sourceHashes": {
31
31
  "_audit/visual-diff.html": "fd344cf31f0aa4130dddec2a99dca5ef60d9d08025b5dc2b4b729a1d388c5bb8",
32
32
  "_ds_manifest.json": "c095c233237f4ddb574f8fa648c26aee699df2c16d08f7e4a3aeca076a6644e4",
33
- "scripts/public-site-policy.json": "04d862985078720d1cd0aa694ef9f67ed89b9980b97d445ab2cf92a1d6dcce61",
33
+ "scripts/public-site-policy.json": "8304a323a8b4cb7d8e571694086975cf88697c220416149ff156568ea7d80942",
34
34
  "templates/app-shell/AppShell.dc.html": "f71017a26f12b71d9e653dff79635ed14d5eb4a3dac9c5ce095188c537b858e3",
35
35
  "templates/article/Article.dc.html": "9b2ed3af604ac9e552f33bc922ec7dd2659b786dcb624cb491f7a437658adb2f",
36
36
  "templates/auth/Auth.dc.html": "ab6fb52740dbda804c9963cd2b63aa7d482c4b3cd2fa87b9a7f0c20ab2ef1e64",
@@ -116,7 +116,7 @@
116
116
  "templates/vn-total-rewards-appendix/VnTotalRewardsAppendix.dc.html": "ee941a6d26aa525bba779015ca01f4bdb7246571db2c3558499d7bc2fee3c2aa",
117
117
  "templates/vn-training-commitment/VnTrainingCommitment.dc.html": "49b2b4459bf2a900ddfafe679b6f3b088c78a31f611ae76dc3ac276e05a14c46",
118
118
  "templates/vn-travel-expense-policy/VnTravelExpensePolicy.dc.html": "1e585bd53ec6fb41322082bddfb7eed4ac811bfabb1ad2d639b9babba6c0e212",
119
- "tokens/tokens.dtcg.json": "1546c3a28600a7d9aae3a0d49070d1ade6d1449096b60512417cee69e6b6f5ee"
119
+ "tokens/tokens.dtcg.json": "b4153c57be60838cdac8ffd616d17dce18d156713b41c68ce69380a91daa4f60"
120
120
  },
121
121
  "documents": [
122
122
  {
@@ -129,7 +129,7 @@
129
129
  "path": "DESIGN.md",
130
130
  "audience": "documentation",
131
131
  "role": "generated_reference",
132
- "sha256": "ae83049366c1d74f77b7d6ce2b544226fe61e9e7e61cb76279e7933d6181504d"
132
+ "sha256": "f88afeb191a52e4c533d80a5dfc4be7fa7c355318e3cc91ec48f50c5f1676ddc"
133
133
  },
134
134
  {
135
135
  "path": "MAINTAINERS.md",
@@ -141,13 +141,13 @@
141
141
  "path": "README.md",
142
142
  "audience": "documentation",
143
143
  "role": "human_orientation",
144
- "sha256": "0f95a156a61adf15b98918576499e7c44e28eb1f11983c393398bba411452e5f"
144
+ "sha256": "016c0a00cf7d3b7fa4a34d64a61bb2b31f43b87b6db9db37dc69631a631630ef"
145
145
  },
146
146
  {
147
147
  "path": "SECURITY.md",
148
148
  "audience": "documentation",
149
149
  "role": "security_reporting_policy",
150
- "sha256": "09554b6bc02148bbc712b562f20a5f59183972d1ab891e5bc009e2f73a7a10a6"
150
+ "sha256": "2e23f78656659560a32152fa3604d38ba0de85d4430d3a64776373e2646c62d9"
151
151
  },
152
152
  {
153
153
  "path": "SKILL.md",
@@ -165,7 +165,7 @@
165
165
  "path": "_audit/README.md",
166
166
  "audience": "diagnostics",
167
167
  "role": "diagnostic_operator_guide",
168
- "sha256": "ca5f1c15c56b8c887954cdf28f43661c7fccb8522f6542ac72b97e582e265f34"
168
+ "sha256": "fd79f61c852dccb164f4fb8ceceafc8aba6d1d58aaa0521786cedd07ad5f792e"
169
169
  },
170
170
  {
171
171
  "path": "_audit/baselines/README.md",
@@ -915,19 +915,19 @@
915
915
  "path": "docs/consuming.md",
916
916
  "audience": "documentation",
917
917
  "role": "operator_guide",
918
- "sha256": "fca2a205aed45f8df12e836fab27d2500b99ba3dff29a17689a034cb80870244"
918
+ "sha256": "ebd56f715cf9733c76ec737127fe4a11d4f5c45f8813996f3a6910c32a9e3b92"
919
919
  },
920
920
  {
921
921
  "path": "docs/contrast-report.md",
922
922
  "audience": "documentation",
923
923
  "role": "generated_measurement",
924
- "sha256": "39597ad22cfd476603727d4ac36fe67d7662ff1eb3e3570823bd9b49013c95b9"
924
+ "sha256": "5cf59c0a380511b32fa206c88b256749f93f4d57e682a37636613910f14f3327"
925
925
  },
926
926
  {
927
927
  "path": "docs/conventions.md",
928
928
  "audience": "documentation",
929
929
  "role": "normative_repository_contract",
930
- "sha256": "e5f5c33b5eebae3f0d4855b18b0fa8fd60dce17e2b30e36ead6025886a498b1f"
930
+ "sha256": "bb494bba54c26131a4422297a8e7be4579601f27d0303f51ff4238ec14d3065d"
931
931
  },
932
932
  {
933
933
  "path": "docs/decisions.md",
@@ -1065,7 +1065,7 @@
1065
1065
  "path": "docs/release-notes.md",
1066
1066
  "audience": "documentation",
1067
1067
  "role": "release_history",
1068
- "sha256": "f7c8eac10db5dda843505adabd90e7b37a056d7a2defd8bc6ed4e9b5c650b39b"
1068
+ "sha256": "8ac0a48cafbf4dc6f90e5d4a3857c45abe02e01820904820c7a964bc2ebd53be"
1069
1069
  },
1070
1070
  {
1071
1071
  "path": "docs/releasing.md",
@@ -1083,7 +1083,7 @@
1083
1083
  "path": "docs/static-html-reference.md",
1084
1084
  "audience": "documentation",
1085
1085
  "role": "operator_guide",
1086
- "sha256": "8af5cb04e9e7792f8e81e6b706d89b3cea48237843de36ca41e5af6e19199273"
1086
+ "sha256": "cef90b096e60115ee212b9320fce6ece9ce6ee595ae612702a950af44a351a7f"
1087
1087
  },
1088
1088
  {
1089
1089
  "path": "docs/storybook.md",
@@ -1197,19 +1197,19 @@
1197
1197
  "path": "docs/vi/consuming.md",
1198
1198
  "audience": "documentation",
1199
1199
  "role": "operator_guide",
1200
- "sha256": "a4ba81765485753a9000f88657584ce8b19be77c2786aed89e51048d975e84e2"
1200
+ "sha256": "8d721e7cf114f23a3c70255d4d1bfde15f8cc4c5d1c77a6502e8d1cc8b40b4c4"
1201
1201
  },
1202
1202
  {
1203
1203
  "path": "docs/vi/contrast-report.md",
1204
1204
  "audience": "documentation",
1205
1205
  "role": "generated_measurement",
1206
- "sha256": "7a398d1437412575eebff0b9fc84cf2be6d79196ee5438a44ba47103da25a0ec"
1206
+ "sha256": "41806216a83fe8e0b8687da9713b37b6313c59dd9341838d03fdcdcce17664da"
1207
1207
  },
1208
1208
  {
1209
1209
  "path": "docs/vi/conventions.md",
1210
1210
  "audience": "documentation",
1211
1211
  "role": "normative_repository_contract",
1212
- "sha256": "eff69f960448e33a3e4c577a1109ea26e9454bdf050f650355bd4a1835166877"
1212
+ "sha256": "2529f115c0005c93454725622ce3a4cb9741a47c0de7e97225b05d140725d70e"
1213
1213
  },
1214
1214
  {
1215
1215
  "path": "docs/vi/decisions.md",
@@ -1245,13 +1245,13 @@
1245
1245
  "path": "docs/vi/entrypoints/DESIGN.md",
1246
1246
  "audience": "documentation",
1247
1247
  "role": "generated_reference",
1248
- "sha256": "a4d46ac90da270f3c3fd06602fd8133cdc0576fb57b90be4aea6a26c71035b0a"
1248
+ "sha256": "6519df4793eda7bd30e9ce5b710acac929fd0c3ff68545c9bc8aa7b3ecb51a12"
1249
1249
  },
1250
1250
  {
1251
1251
  "path": "docs/vi/entrypoints/README.md",
1252
1252
  "audience": "documentation",
1253
1253
  "role": "human_orientation",
1254
- "sha256": "7056357c5e3dc772b5496b8dd3d5734295d2277748cfd972b393000855169763"
1254
+ "sha256": "6e1cdc6bad1469a1a6e92a71ca20cc7f4d00cea5b59b55e3f18acd3b72d9bf56"
1255
1255
  },
1256
1256
  {
1257
1257
  "path": "docs/vi/entrypoints/SKILL.md",
@@ -1347,7 +1347,7 @@
1347
1347
  "path": "docs/vi/release-notes.md",
1348
1348
  "audience": "documentation",
1349
1349
  "role": "release_history",
1350
- "sha256": "39becd6ad5faecfb72405f878f28ec75f4afe4256e84e186c1c502f4787c09f4"
1350
+ "sha256": "45cea0f4ab49d07075039dfbace08ae3d60e9815f16bc31bb0f24e7d32105e39"
1351
1351
  },
1352
1352
  {
1353
1353
  "path": "docs/vi/releasing.md",
@@ -1365,7 +1365,7 @@
1365
1365
  "path": "docs/vi/static-html-reference.md",
1366
1366
  "audience": "documentation",
1367
1367
  "role": "operator_guide",
1368
- "sha256": "e995fd9329fed2b4ece33cd0e7fb16a5b6bad190345d8af4ae496df386d246be"
1368
+ "sha256": "9d84bad41c18955fc2b77c66ce278283878422ce34b44e963c4c7c18adb40c87"
1369
1369
  },
1370
1370
  {
1371
1371
  "path": "docs/vi/storybook.md",
@@ -1,6 +1,6 @@
1
1
  # Release Notes
2
2
 
3
- Curated product highlights for operators. This is **not** a git log and **not** a `CHANGELOG.md` — the design system does not maintain a changelog file. source checkout VERSION **<!-- cs-source-version:checkout -->2.6.0<!-- /cs-source-version -->** identifies the repository version. This page supplies Storybook **Release Notes**; local edits do not establish what is deployed at `design.cyberskill.world`.
3
+ Curated product highlights for operators. This is **not** a git log and **not** a `CHANGELOG.md` — the design system does not maintain a changelog file. source checkout VERSION **<!-- cs-source-version:checkout -->2.7.0<!-- /cs-source-version -->** identifies the repository version. This page supplies Storybook **Release Notes**; local edits do not establish what is deployed at `design.cyberskill.world`.
4
4
 
5
5
  ## Unreleased revision — local implementation, acceptance pending
6
6
 
@@ -28,6 +28,18 @@ These changes belong to the current revision working tree. They are not a publis
28
28
 
29
29
  Release remains pending human visual acceptance, required native/manual assistive-technology checks, provenance decisions, and acceptance of changed pilot artifacts. Changed support evidence requires fresh review in `components/lifecycle.json`. EN/VI is the intended language scope; Japanese remains a partial spike. No support expansion, deprecation or removal is authorized by this note.
30
30
 
31
+ ## Release — `@cyberskill/design@2.6.0`
32
+
33
+ Published stable minor release recorded in `_audit/ci/fixtures/npm-published-release.json` (observed `2026-11-09T17:39:34.494Z`, tag `v2.6.0` at commit `48ed4be40e83bc6d5e2763b03111b07aa2c26df4`).
34
+
35
+ - **10-Dimension Benchmark & Automated CI Non-Regression Gate (`audit/v2.5.0-verification.html`, `audit/verify-v2.5.0.js`, `audit/fixture-v2.5.0.html`, `_audit/ci/verify-audit-benchmarks-browser.mjs`):** Expands the live browser audit to **10 dimensions (`69/69` checks at `10.0 / 10`, `0 watch` items)** adding `D8` (Touch Targets ≥ 44px, Focus Ring Integrity, High-Contrast Mode), `D9` (5-Element × 2-Theme × 3-Variant Token Completeness, Print/A4 Sheet Integrity, Reduced Motion), and `D10` (Brand Identity, Bilingual EN/VI Completeness, Token Purity), enforced in CI and `prepublishOnly` via `npm run test:audit-regression`.
36
+ - **Single-File Flattened CSS Export & Inline Logo Guidance (`package.json`, `scripts/flatten-css.mjs`, `DESIGN.md`, `docs/vi/entrypoints/DESIGN.md`):** Exposes `"./dist/styles.css": "./dist/styles.css"` in `package.json#exports`, derives the `dist/styles.css` header banner dynamically from `VERSION`, and documents the canonical `<svg viewBox="0 0 64 64">` inline logo pattern for single-file and cloud sandbox runtimes.
37
+ - **Fast Commit-Bound `act` Shard Attestation (`.github/workflows/design-system-gates.yml`, `scripts/run-act-ci.mjs`, `scripts/verify-ci-checks.mjs`):** Verifies commit-bound local `ci/act/unit-tests (1/4..4/4)` receipts ahead of heavy dependency and browser installation steps, cutting GitHub Actions `unit-tests` runtime to ~15 seconds when pre-verified via `act`.
38
+
39
+ ```bash
40
+ npm install @cyberskill/design@2.6.0
41
+ ```
42
+
31
43
  ## Release — `@cyberskill/design@2.5.0`
32
44
 
33
45
  Published stable minor release recorded in `_audit/ci/fixtures/npm-published-release.json` (observed `2026-11-09T06:04:11.249Z`, tag `v2.5.0` at commit `6e7fe3c158b122c8ca19b8253eb06460c7f2f919`). Subsequent repository tags `v2.3.1` and `v2.4.0` preceded `v2.5.0`.
@@ -35,7 +47,6 @@ Published stable minor release recorded in `_audit/ci/fixtures/npm-published-rel
35
47
  - **Scoped Nested Theme & Liquid Glass Parity (`base/glass.css`, `tokens/theme-dark.css`):** Re-computes `--_cs-light` / `--_cs-dark` space-toggle tokens, `--_cs-surface-scrim`, and all eight `--cs-glass-*-{bg,border}` materials inside nested `[data-theme]` scopes.
36
48
  - **32-Scope Contrast & Dark Default Tint Safety (`base/collections.css`, `base/controls.css`, `base/feedback.css`, `base/shell.css`, `base/ai.css`):** Replaces un-scoped `--cs-accent-tint` dark backgrounds with `color-mix(in oklab, var(--cs-accent) 18%, var(--cs-color-surface-panel))`, upgrades non-text indicators to `--cs-color-text-accent` (`WCAG 1.4.11 ≥ 3:1` across all 32 scopes), and adds inset perimeter rings for dark Umber surfaces.
37
49
  - **13-Control Invalid State & Vietnamese Typography Clearance (`base/components.css`, `base/controls.css`, `base/typography.css`, `base/data.css`):** Unifies `.is-invalid` / `[aria-invalid="true"]` danger borders across all 13 form controls and applies `:lang(vi) { line-height: 1.22; }` to `.cs-display` and `.cs-stat__value`.
38
- - **Verification & Non-Regression Gate (`audit/v2.5.0-verification.html`, `audit/render-health.html`, `audit/v2.5.0-verification.json`, `_audit/ci/verify-audit-benchmarks-browser.mjs`):** All 69 checks across 10 dimensions (`D1`–`D7` remediation + `D8`–`D10` Doctrine Immutables) pass at **10.0 / 10** and the embedded baseline suite scores **64/64** (**62/64** for v2.4.0, **8/64** for v2.3.1); `audit/render-health.html` checks **146** pages with **0 bad** as authored, under `theme=dark`, and under `theme=dark` + `contrast=high` on `set=cards`. Dark default-scope tint ink measures **8.42:1–10.54:1** (`.cs-result__icon` **8.42:1**, `.cs-item.is-selected` **10.54:1** — both clearing WCAG AAA `7:1` with `0 watch` items).
39
50
 
40
51
  ```bash
41
52
  npm install @cyberskill/design@2.5.0