@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
package/_esm/cs.mjs CHANGED
@@ -1,4 +1,4 @@
1
- // CyberSkill Design System — ESM entry point (GENERATED by scripts/generate-export-catalog.mjs at v2.6.0).
1
+ // CyberSkill Design System — ESM entry point (GENERATED by scripts/generate-export-catalog.mjs at v2.7.0).
2
2
  // No build step: import this module directly in a browser. It loads the pinned umd-react@19.2.8
3
3
  // distribution; its retained React and ReactDOM files report runtime version 19.2.4.
4
4
  // (official React 19 dropped UMD; pinned + SRI; skipped when window.React already exists), side-loads
@@ -33,7 +33,7 @@ if (!found()) await ensureScript("../_ds_bundle.js");
33
33
  export const CS = g[found()];
34
34
  if (!CS) throw new Error("cs.js: bundle loaded but no CyberSkillDesignSystem_* namespace found");
35
35
  export default CS;
36
- export const VERSION = "2.6.0";
36
+ export const VERSION = "2.7.0";
37
37
  export const AIDisclosureBadge = CS.AIDisclosureBadge;
38
38
  export const Accordion = CS.Accordion;
39
39
  export const Alert = CS.Alert;
@@ -3,7 +3,7 @@
3
3
  "interpretation": "Discovery projection: every public export and authored prop definition, with inherited prop counts. Inherited native props, full signatures, support evidence/history and compiler metadata remain in components/api-index.json. Declarations remain authoritative; this projection does not establish runtime, semantic or human acceptance.",
4
4
  "completeIndex": {
5
5
  "path": "components/api-index.json",
6
- "sha256": "468afbb6e09f78a1be6fe2b2b06bbd6ea30f4fa06abb835c191eb6490082854a"
6
+ "sha256": "cdca2a8f225147e27ca8b385023ffe6ba5628b614720cd658c94f5c833f53336"
7
7
  },
8
8
  "exports": [
9
9
  {
@@ -659,7 +659,7 @@
659
659
  "sourcePath": "components/forms/Cascader.jsx",
660
660
  "declarationPath": "components/forms/Cascader.d.ts",
661
661
  "promptPath": "components/forms/Cascader.prompt.md",
662
- "sourceSha256": "60217f041dd78ad4809a787920c0f0d56a6a383ae125ad2e691757b2af22abbf",
662
+ "sourceSha256": "09380cc01ef61a3cc0fb0d4f065345f4e31a6cd197cd4a9d837ffdc144b22bde",
663
663
  "declarationSha256": "33edbc198353ed41f05867be9e1c04830d5033cf2cf4ceda3e1ba13adef27aea",
664
664
  "declaredLifecycle": "stable",
665
665
  "supportReviewState": "reviewed",
@@ -981,7 +981,7 @@
981
981
  "sourcePath": "components/forms/ColorPicker.jsx",
982
982
  "declarationPath": "components/forms/ColorPicker.d.ts",
983
983
  "promptPath": "components/forms/ColorPicker.prompt.md",
984
- "sourceSha256": "64da95eccfc3637b640edcb4271ae914a81f4e05cf7b528467ab5850a651ed4f",
984
+ "sourceSha256": "90d7990c0e97ca31592bb7a48153d85944016b4424c0ac58837c8295c33d8695",
985
985
  "declarationSha256": "a0a3d9c005fc6f8ddc4fdc85f132aedfcb10dee745ae1706eb6b924814531e2d",
986
986
  "declaredLifecycle": "stable",
987
987
  "supportReviewState": "reviewed",
@@ -2380,7 +2380,7 @@
2380
2380
  "sourcePath": "components/forms/InlineEdit.jsx",
2381
2381
  "declarationPath": "components/forms/InlineEdit.d.ts",
2382
2382
  "promptPath": "components/forms/InlineEdit.prompt.md",
2383
- "sourceSha256": "45b36df70b179243e329684ce20f61ed8dd4fda75e11674d24797713c644d4f8",
2383
+ "sourceSha256": "9f242ef99af077e5c9b68d36cc9539fac0819e66f7995fa6a93ecb7793bf3484",
2384
2384
  "declarationSha256": "9fdf8c29720cd8d015ea42edfb4ee39ce74964feaafd43b044183ca5ef504b1c",
2385
2385
  "declaredLifecycle": "stable",
2386
2386
  "supportReviewState": "reviewed",
@@ -3742,7 +3742,7 @@
3742
3742
  "sourcePath": "components/forms/SearchField.jsx",
3743
3743
  "declarationPath": "components/forms/SearchField.d.ts",
3744
3744
  "promptPath": "components/forms/SearchField.prompt.md",
3745
- "sourceSha256": "44a861064011a4ebf8cd1224d95b0404c44e4cb8a1685d5981f8009ff8a824de",
3745
+ "sourceSha256": "e48eec5e6f3d65719ea4f72e833d67a6b05d2cc6fb49b53a621d0e832f33838e",
3746
3746
  "declarationSha256": "16b63c44bbdf6d4f9f8f05f0612cbcd8d92b6d4af5800d90fd120a5f1f60a5fa",
3747
3747
  "declaredLifecycle": "stable",
3748
3748
  "supportReviewState": "reviewed",
@@ -4826,7 +4826,7 @@
4826
4826
  "sourcePath": "components/forms/TreeSelect.jsx",
4827
4827
  "declarationPath": "components/forms/TreeSelect.d.ts",
4828
4828
  "promptPath": "components/forms/TreeSelect.prompt.md",
4829
- "sourceSha256": "3d5d1ef69f6e24a4322ed1bf52c47c3430eaad1ab3fe5ac51b5b40ec5a09044f",
4829
+ "sourceSha256": "ab5bc70e1cb1ab10df72a39456e4f4ac88e7907c25cd1dde8ded1d9c5c8b31e3",
4830
4830
  "declarationSha256": "3623e81530a0900556a713346f5ea7a96c02dc185a1481589d45190f5b09c33e",
4831
4831
  "declaredLifecycle": "stable",
4832
4832
  "supportReviewState": "reviewed",
@@ -14,7 +14,7 @@
14
14
  "scripts/catalog-source.json": "f12045fb1cccf19df8a2469dba096c582bc1885c8be464e2fc3df9aec06b89e9",
15
15
  "scripts/lib/component-support.mjs": "6626078ffaaa91cb3a43d87858577fc5d405e5bfb474e7519abf50d4797b2eb1",
16
16
  "_esm/react.d.ts": "56e221d6eb875cf7c3a4de841372ba0b70389836957d8538b1d5a276848db95d",
17
- "components/lifecycle.json": "fdf434c3f13023b81cfcb4b491efa7b8f1ef490e7fc40c70c8cd6482924faf84"
17
+ "components/lifecycle.json": "28574314e19271305cc280baed7c24248bd8a5e699202df137331c848d851539"
18
18
  },
19
19
  "propDefinitions": {
20
20
  "p-0003926b4717c94d": {
@@ -35995,7 +35995,7 @@
35995
35995
  "sourcePath": "components/forms/Cascader.jsx",
35996
35996
  "declarationPath": "components/forms/Cascader.d.ts",
35997
35997
  "promptPath": "components/forms/Cascader.prompt.md",
35998
- "sourceSha256": "60217f041dd78ad4809a787920c0f0d56a6a383ae125ad2e691757b2af22abbf",
35998
+ "sourceSha256": "09380cc01ef61a3cc0fb0d4f065345f4e31a6cd197cd4a9d837ffdc144b22bde",
35999
35999
  "declarationSha256": "33edbc198353ed41f05867be9e1c04830d5033cf2cf4ceda3e1ba13adef27aea",
36000
36000
  "declaredLifecycle": "stable",
36001
36001
  "support": {
@@ -36021,7 +36021,7 @@
36021
36021
  },
36022
36022
  {
36023
36023
  "path": "components/forms/Cascader.jsx",
36024
- "sha256": "60217f041dd78ad4809a787920c0f0d56a6a383ae125ad2e691757b2af22abbf",
36024
+ "sha256": "09380cc01ef61a3cc0fb0d4f065345f4e31a6cd197cd4a9d837ffdc144b22bde",
36025
36025
  "scope": "Authoritative React implementation source for this declared export; shared source may define companion exports",
36026
36026
  "checkedAt": "2026-10-21T12:08:13.113Z"
36027
36027
  },
@@ -39349,7 +39349,7 @@
39349
39349
  "sourcePath": "components/forms/ColorPicker.jsx",
39350
39350
  "declarationPath": "components/forms/ColorPicker.d.ts",
39351
39351
  "promptPath": "components/forms/ColorPicker.prompt.md",
39352
- "sourceSha256": "64da95eccfc3637b640edcb4271ae914a81f4e05cf7b528467ab5850a651ed4f",
39352
+ "sourceSha256": "90d7990c0e97ca31592bb7a48153d85944016b4424c0ac58837c8295c33d8695",
39353
39353
  "declarationSha256": "a0a3d9c005fc6f8ddc4fdc85f132aedfcb10dee745ae1706eb6b924814531e2d",
39354
39354
  "declaredLifecycle": "stable",
39355
39355
  "support": {
@@ -39375,7 +39375,7 @@
39375
39375
  },
39376
39376
  {
39377
39377
  "path": "components/forms/ColorPicker.jsx",
39378
- "sha256": "64da95eccfc3637b640edcb4271ae914a81f4e05cf7b528467ab5850a651ed4f",
39378
+ "sha256": "90d7990c0e97ca31592bb7a48153d85944016b4424c0ac58837c8295c33d8695",
39379
39379
  "scope": "Authoritative React implementation source for this declared export; shared source may define companion exports",
39380
39380
  "checkedAt": "2026-10-21T12:08:13.113Z"
39381
39381
  },
@@ -51124,7 +51124,7 @@
51124
51124
  "sourcePath": "components/forms/InlineEdit.jsx",
51125
51125
  "declarationPath": "components/forms/InlineEdit.d.ts",
51126
51126
  "promptPath": "components/forms/InlineEdit.prompt.md",
51127
- "sourceSha256": "45b36df70b179243e329684ce20f61ed8dd4fda75e11674d24797713c644d4f8",
51127
+ "sourceSha256": "9f242ef99af077e5c9b68d36cc9539fac0819e66f7995fa6a93ecb7793bf3484",
51128
51128
  "declarationSha256": "9fdf8c29720cd8d015ea42edfb4ee39ce74964feaafd43b044183ca5ef504b1c",
51129
51129
  "declaredLifecycle": "stable",
51130
51130
  "support": {
@@ -51146,28 +51146,28 @@
51146
51146
  "path": "components/forms/InlineEdit.d.ts",
51147
51147
  "sha256": "9fdf8c29720cd8d015ea42edfb4ee39ce74964feaafd43b044183ca5ef504b1c",
51148
51148
  "scope": "Authored public TypeScript declaration contract",
51149
- "checkedAt": "2026-10-21T12:08:13.113Z"
51149
+ "checkedAt": "2026-11-09T17:52:00.677Z"
51150
51150
  },
51151
51151
  {
51152
51152
  "path": "components/forms/InlineEdit.jsx",
51153
- "sha256": "45b36df70b179243e329684ce20f61ed8dd4fda75e11674d24797713c644d4f8",
51153
+ "sha256": "9f242ef99af077e5c9b68d36cc9539fac0819e66f7995fa6a93ecb7793bf3484",
51154
51154
  "scope": "Authoritative React implementation source for this declared export; shared source may define companion exports",
51155
- "checkedAt": "2026-10-21T12:08:13.113Z"
51155
+ "checkedAt": "2026-11-09T17:52:00.677Z"
51156
51156
  },
51157
51157
  {
51158
51158
  "path": "components/forms/InlineEdit.prompt.md",
51159
51159
  "sha256": "6f60672f2c19cfe7130e1b32f9d8a422bf2ad546c84ac3dc96907415a451b930",
51160
51160
  "scope": "Component usage guidance with generated declared-API projection; implementation authority remains source",
51161
- "checkedAt": "2026-10-21T12:08:13.113Z"
51161
+ "checkedAt": "2026-11-09T17:52:00.677Z"
51162
51162
  },
51163
51163
  {
51164
51164
  "path": "stories/InlineEdit.stories.jsx",
51165
51165
  "sha256": "6e9fdd26b7c8bbe7ffefb87fad4e271b856fc2f449ef33970cd332b8d2a81656",
51166
51166
  "scope": "Authored Storybook CSF story and declared matrix mount surface; not execution or all-state acceptance",
51167
- "checkedAt": "2026-10-21T12:08:13.113Z"
51167
+ "checkedAt": "2026-11-09T17:52:00.677Z"
51168
51168
  }
51169
51169
  ],
51170
- "reviewedAt": "2026-10-21T12:03:00.000Z",
51170
+ "reviewedAt": "2026-11-09T17:52:00.677Z",
51171
51171
  "reviewedBy": "Stephen Cheng",
51172
51172
  "limitations": [
51173
51173
  "This bounded source/declared-support review covers only the exact direct evidence listed below and its public declaration and implementation contracts. Automated execution is limited to separately bound receipts; this scope does not establish all-state acceptance.",
@@ -51216,6 +51216,47 @@
51216
51216
  "Style: default, liquid-glass"
51217
51217
  ],
51218
51218
  "sourceSha256": "db30ac35d9017a532d7159325d8eae235b109942c38649efd07b8a3d35effa14"
51219
+ },
51220
+ {
51221
+ "reviewedBy": "Stephen Cheng",
51222
+ "reviewedAt": "2026-10-21T12:03:00.000Z",
51223
+ "evidence": [
51224
+ {
51225
+ "path": "components/forms/InlineEdit.d.ts",
51226
+ "sha256": "9fdf8c29720cd8d015ea42edfb4ee39ce74964feaafd43b044183ca5ef504b1c",
51227
+ "scope": "Authored public TypeScript declaration contract",
51228
+ "checkedAt": "2026-10-21T12:08:13.113Z"
51229
+ },
51230
+ {
51231
+ "path": "components/forms/InlineEdit.jsx",
51232
+ "sha256": "45b36df70b179243e329684ce20f61ed8dd4fda75e11674d24797713c644d4f8",
51233
+ "scope": "Authoritative React implementation source for this declared export; shared source may define companion exports",
51234
+ "checkedAt": "2026-10-21T12:08:13.113Z"
51235
+ },
51236
+ {
51237
+ "path": "components/forms/InlineEdit.prompt.md",
51238
+ "sha256": "6f60672f2c19cfe7130e1b32f9d8a422bf2ad546c84ac3dc96907415a451b930",
51239
+ "scope": "Component usage guidance with generated declared-API projection; implementation authority remains source",
51240
+ "checkedAt": "2026-10-21T12:08:13.113Z"
51241
+ },
51242
+ {
51243
+ "path": "stories/InlineEdit.stories.jsx",
51244
+ "sha256": "6e9fdd26b7c8bbe7ffefb87fad4e271b856fc2f449ef33970cd332b8d2a81656",
51245
+ "scope": "Authored Storybook CSF story and declared matrix mount surface; not execution or all-state acceptance",
51246
+ "checkedAt": "2026-10-21T12:08:13.113Z"
51247
+ }
51248
+ ],
51249
+ "environments": [
51250
+ "Declared web target: React18/19 through compiled default @cyberskill/design and /react entry, with peer React; raw JSX requires explicit /source opt-in and a consumer JSX toolchain.",
51251
+ "Declared browser compatibility entry: legacy _esm/cs.mjs / _ds_bundle.js; browser-only, not an SSR entry. Source and compiled module families must not be mixed.",
51252
+ "Storybook10 authored CSF/matrix surface is a demonstration/test target. Actual engine/runtime/state coverage is listed separately in execution receipts."
51253
+ ],
51254
+ "axes": [
51255
+ "Theme: light, dark, system (token/CSS contract)",
51256
+ "Element: 5 Ngũ Hành elements / 15 packs",
51257
+ "Language: vi, en",
51258
+ "Style: default, liquid-glass"
51259
+ ]
51219
51260
  }
51220
51261
  ]
51221
51262
  },
@@ -74693,7 +74734,7 @@
74693
74734
  "sourcePath": "components/forms/SearchField.jsx",
74694
74735
  "declarationPath": "components/forms/SearchField.d.ts",
74695
74736
  "promptPath": "components/forms/SearchField.prompt.md",
74696
- "sourceSha256": "44a861064011a4ebf8cd1224d95b0404c44e4cb8a1685d5981f8009ff8a824de",
74737
+ "sourceSha256": "e48eec5e6f3d65719ea4f72e833d67a6b05d2cc6fb49b53a621d0e832f33838e",
74697
74738
  "declarationSha256": "16b63c44bbdf6d4f9f8f05f0612cbcd8d92b6d4af5800d90fd120a5f1f60a5fa",
74698
74739
  "declaredLifecycle": "stable",
74699
74740
  "support": {
@@ -74719,7 +74760,7 @@
74719
74760
  },
74720
74761
  {
74721
74762
  "path": "components/forms/SearchField.jsx",
74722
- "sha256": "44a861064011a4ebf8cd1224d95b0404c44e4cb8a1685d5981f8009ff8a824de",
74763
+ "sha256": "e48eec5e6f3d65719ea4f72e833d67a6b05d2cc6fb49b53a621d0e832f33838e",
74723
74764
  "scope": "Authoritative React implementation source for this declared export; shared source may define companion exports",
74724
74765
  "checkedAt": "2026-10-21T12:08:13.113Z"
74725
74766
  },
@@ -97243,7 +97284,7 @@
97243
97284
  "sourcePath": "components/forms/TreeSelect.jsx",
97244
97285
  "declarationPath": "components/forms/TreeSelect.d.ts",
97245
97286
  "promptPath": "components/forms/TreeSelect.prompt.md",
97246
- "sourceSha256": "3d5d1ef69f6e24a4322ed1bf52c47c3430eaad1ab3fe5ac51b5b40ec5a09044f",
97287
+ "sourceSha256": "ab5bc70e1cb1ab10df72a39456e4f4ac88e7907c25cd1dde8ded1d9c5c8b31e3",
97247
97288
  "declarationSha256": "3623e81530a0900556a713346f5ea7a96c02dc185a1481589d45190f5b09c33e",
97248
97289
  "declaredLifecycle": "stable",
97249
97290
  "support": {
@@ -97269,7 +97310,7 @@
97269
97310
  },
97270
97311
  {
97271
97312
  "path": "components/forms/TreeSelect.jsx",
97272
- "sha256": "3d5d1ef69f6e24a4322ed1bf52c47c3430eaad1ab3fe5ac51b5b40ec5a09044f",
97313
+ "sha256": "ab5bc70e1cb1ab10df72a39456e4f4ac88e7907c25cd1dde8ded1d9c5c8b31e3",
97273
97314
  "scope": "Authoritative React implementation source for this declared export; shared source may define companion exports",
97274
97315
  "checkedAt": "2026-10-21T12:08:13.113Z"
97275
97316
  },
@@ -4897,7 +4897,7 @@
4897
4897
  "sourcePath": "components/forms/Cascader.jsx",
4898
4898
  "declarationPath": "components/forms/Cascader.d.ts",
4899
4899
  "promptPath": "components/forms/Cascader.prompt.md",
4900
- "sourceSha256": "60217f041dd78ad4809a787920c0f0d56a6a383ae125ad2e691757b2af22abbf",
4900
+ "sourceSha256": "09380cc01ef61a3cc0fb0d4f065345f4e31a6cd197cd4a9d837ffdc144b22bde",
4901
4901
  "authoredProps": [
4902
4902
  "aria-labelledby",
4903
4903
  "className",
@@ -6004,7 +6004,7 @@
6004
6004
  "sourcePath": "components/forms/ColorPicker.jsx",
6005
6005
  "declarationPath": "components/forms/ColorPicker.d.ts",
6006
6006
  "promptPath": "components/forms/ColorPicker.prompt.md",
6007
- "sourceSha256": "64da95eccfc3637b640edcb4271ae914a81f4e05cf7b528467ab5850a651ed4f",
6007
+ "sourceSha256": "90d7990c0e97ca31592bb7a48153d85944016b4424c0ac58837c8295c33d8695",
6008
6008
  "authoredProps": [
6009
6009
  "aria-labelledby",
6010
6010
  "className",
@@ -10287,7 +10287,7 @@
10287
10287
  "sourcePath": "components/forms/InlineEdit.jsx",
10288
10288
  "declarationPath": "components/forms/InlineEdit.d.ts",
10289
10289
  "promptPath": "components/forms/InlineEdit.prompt.md",
10290
- "sourceSha256": "45b36df70b179243e329684ce20f61ed8dd4fda75e11674d24797713c644d4f8",
10290
+ "sourceSha256": "9f242ef99af077e5c9b68d36cc9539fac0819e66f7995fa6a93ecb7793bf3484",
10291
10291
  "authoredProps": [
10292
10292
  "className",
10293
10293
  "controlRef",
@@ -17142,7 +17142,7 @@
17142
17142
  "sourcePath": "components/forms/SearchField.jsx",
17143
17143
  "declarationPath": "components/forms/SearchField.d.ts",
17144
17144
  "promptPath": "components/forms/SearchField.prompt.md",
17145
- "sourceSha256": "44a861064011a4ebf8cd1224d95b0404c44e4cb8a1685d5981f8009ff8a824de",
17145
+ "sourceSha256": "e48eec5e6f3d65719ea4f72e833d67a6b05d2cc6fb49b53a621d0e832f33838e",
17146
17146
  "authoredProps": [
17147
17147
  "onChange",
17148
17148
  "onClear",
@@ -23720,7 +23720,7 @@
23720
23720
  "sourcePath": "components/forms/TreeSelect.jsx",
23721
23721
  "declarationPath": "components/forms/TreeSelect.d.ts",
23722
23722
  "promptPath": "components/forms/TreeSelect.prompt.md",
23723
- "sourceSha256": "3d5d1ef69f6e24a4322ed1bf52c47c3430eaad1ab3fe5ac51b5b40ec5a09044f",
23723
+ "sourceSha256": "ab5bc70e1cb1ab10df72a39456e4f4ac88e7907c25cd1dde8ded1d9c5c8b31e3",
23724
23724
  "authoredProps": [
23725
23725
  "aria-labelledby",
23726
23726
  "className",
@@ -98,7 +98,7 @@ export const Cascader = React.forwardRef(function Cascader({ portal = true, plac
98
98
  return (
99
99
  <overlayScopeContext.Provider value={scope}>
100
100
  <div ref={mergedNativeRef} {...mergeTargetProps({ className: cx("cs-cascader", className) }, rootProps)}>
101
- <button {...mergeTargetProps({ ...control, type: "button", className: "cs-treeselect__field", disabled, "aria-haspopup": "listbox", "aria-expanded": open, onClick: () => setOpen(o => !o), onKeyDown: (e) => {
101
+ <button {...mergeTargetProps({ ...control, type: "button", className: "cs-treeselect__field", disabled, "aria-haspopup": "listbox", "aria-expanded": open, onClick: event => { if (!open) event.currentTarget.focus(); setOpen(o => !o); }, onKeyDown: (e) => {
102
102
  if (e.defaultPrevented || e.nativeEvent.isComposing || e.nativeEvent.keyCode === 229) return;
103
103
  // Once open, the document handler owns arrows from this trigger too.
104
104
  if (open && e.key === "ArrowDown") return;
@@ -37,7 +37,7 @@ export const ColorPicker = React.forwardRef(function ColorPicker({ portal = true
37
37
  return (
38
38
  <overlayScopeContext.Provider value={scope}>
39
39
  <span ref={mergedNativeRef} {...mergeTargetProps({ className: cx("cs-colorpicker", className) }, rootProps)}>
40
- <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} >
40
+ <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} >
41
41
  <i style={{ background: value }} /><code>{value}</code>
42
42
  </button>
43
43
  {open ? (
@@ -4,6 +4,7 @@ import React from "react";
4
4
  import { makeT, useLang } from "../_i18n/i18n.js";
5
5
  import { useOverlayLayer, overlayScopeContext } from "../overlays/OverlayManager.jsx";
6
6
  import { cx } from "../_utils/cx.js";
7
+ import { useClientLayoutEffect } from "../_utils/use-client-layout-effect.js";
7
8
  const PEN = <svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.9" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true"><path d="M4 20l4.5-.9L20 7.6a2 2 0 0 0-2.8-2.8L5.7 16.3 4 20z" /></svg>;
8
9
 
9
10
  /** CyberSkill InlineEdit — click-to-edit text. Enter/blur commits, Escape cancels. */
@@ -14,6 +15,7 @@ export const InlineEdit = React.forwardRef(function InlineEdit({ controlRef, val
14
15
  const [edit, setEdit] = React.useState(false);
15
16
  const [draft, setDraft] = React.useState(val);
16
17
  const cancellingRef = React.useRef(false);
18
+ const restoreFocusRef = React.useRef(false);
17
19
  const commit = () => {
18
20
  if (cancellingRef.current) { cancellingRef.current = false; return; }
19
21
  setEdit(false);
@@ -21,18 +23,26 @@ export const InlineEdit = React.forwardRef(function InlineEdit({ controlRef, val
21
23
  };
22
24
  const [ref, L, localeMessages] = useLang(lang);
23
25
  const mergedNativeRef = useComposedRefs(ref, forwardedRef);
26
+ // Keyboard completion removes the input. Restore its replacement in the same
27
+ // commit; blur completion must leave focus on the user's next target.
28
+ useClientLayoutEffect(() => {
29
+ if (!edit && restoreFocusRef.current) {
30
+ restoreFocusRef.current = false;
31
+ ref.current?.querySelector("button")?.focus();
32
+ }
33
+ }, [edit]);
24
34
  const t = makeT("InlineEdit", L, localeMessages);
25
35
  const { scope } = useOverlayLayer({ open: edit, kind: "popover", panelRef: ref, restoreFocus: false, onEscape: () => {
26
36
  cancellingRef.current = true;
37
+ restoreFocusRef.current = true;
27
38
  setDraft(val); setEdit(false);
28
- requestAnimationFrame(() => ref.current?.querySelector("button")?.focus());
29
39
  } });
30
40
  return (
31
41
  <overlayScopeContext.Provider value={scope}>
32
42
  <span ref={mergedNativeRef} {...mergeTargetProps({ "className": cx("cs-inline-edit", className) }, rootProps, [])}>
33
43
  {edit ? (
34
44
  <input autoFocus value={draft} aria-label={label || t("edit")} onChange={(e) => setDraft(e.target.value)} onBlur={commit}
35
- onKeyDown={(e) => { if (!e.nativeEvent.isComposing && e.keyCode !== 229 && e.key === "Enter") commit(); }} ref={mergedControlRef} />
45
+ onKeyDown={(e) => { if (!e.nativeEvent.isComposing && e.keyCode !== 229 && e.key === "Enter") { e.preventDefault(); restoreFocusRef.current = true; commit(); } }} ref={mergedControlRef} />
36
46
  ) : (
37
47
  <button type="button" className="cs-inline-edit__view" aria-label={t("edit") + (label ? ": " + label : "")} onClick={() => { cancellingRef.current = false; setDraft(val); setEdit(true); }}>
38
48
  <span className={val ? undefined : "ph"}>{val || t("empty")}</span>{PEN}
@@ -18,7 +18,7 @@ export const SearchField = React.forwardRef(function SearchField({ value, defaul
18
18
  <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true"><circle cx="11" cy="11" r="7" /><path d="M21 21l-4.3-4.3" /></svg>
19
19
  <input aria-label={props["aria-label"] || (props["aria-labelledby"] ? undefined : ph)} {...props} type="text" role="searchbox" value={val} disabled={disabled} readOnly={readOnly} placeholder={ph} onChange={(e) => set(e.target.value)} ref={mergedNativeRef} />
20
20
  {String(val).length ? (
21
- <button type="button" className="cs-search__clear" aria-label={t("clear")} disabled={disabled || readOnly} onClick={() => { if (disabled || readOnly) return; set(""); onClear && onClear(); }}>
21
+ <button type="button" className="cs-search__clear" aria-label={t("clear")} disabled={disabled || readOnly} onClick={() => { if (disabled || readOnly) return; set(""); onClear && onClear(); ref.current?.querySelector("input")?.focus(); }}>
22
22
  <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round"><path d="M6 6l12 12M18 6L6 18" /></svg>
23
23
  </button>
24
24
  ) : null}
@@ -40,7 +40,7 @@ export const TreeSelect = React.forwardRef(function TreeSelect({ portal = true,
40
40
  return (
41
41
  <overlayScopeContext.Provider value={scope}>
42
42
  <div ref={mergedNativeRef} {...mergeTargetProps({ className: cx("cs-treeselect", className) }, rootProps)}>
43
- <button {...mergeTargetProps({ ...control, type: "button", className: "cs-treeselect__field", disabled, "aria-haspopup": "tree", "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} >
43
+ <button {...mergeTargetProps({ ...control, type: "button", className: "cs-treeselect__field", disabled, "aria-haspopup": "tree", "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} >
44
44
  <span className={sel ? undefined : "ph"}>{sel ? sel.label : ph}</span><span aria-hidden="true">▾</span>
45
45
  </button>
46
46
  {open ? (
@@ -2128,7 +2128,7 @@
2128
2128
  },
2129
2129
  {
2130
2130
  "path": "components/forms/Cascader.jsx",
2131
- "sha256": "60217f041dd78ad4809a787920c0f0d56a6a383ae125ad2e691757b2af22abbf",
2131
+ "sha256": "09380cc01ef61a3cc0fb0d4f065345f4e31a6cd197cd4a9d837ffdc144b22bde",
2132
2132
  "scope": "Authoritative React implementation source for this declared export; shared source may define companion exports",
2133
2133
  "checkedAt": "2026-10-21T12:08:13.113Z"
2134
2134
  },
@@ -2807,7 +2807,7 @@
2807
2807
  },
2808
2808
  {
2809
2809
  "path": "components/forms/ColorPicker.jsx",
2810
- "sha256": "64da95eccfc3637b640edcb4271ae914a81f4e05cf7b528467ab5850a651ed4f",
2810
+ "sha256": "90d7990c0e97ca31592bb7a48153d85944016b4424c0ac58837c8295c33d8695",
2811
2811
  "scope": "Authoritative React implementation source for this declared export; shared source may define companion exports",
2812
2812
  "checkedAt": "2026-10-21T12:08:13.113Z"
2813
2813
  },
@@ -5629,28 +5629,28 @@
5629
5629
  "path": "components/forms/InlineEdit.d.ts",
5630
5630
  "sha256": "9fdf8c29720cd8d015ea42edfb4ee39ce74964feaafd43b044183ca5ef504b1c",
5631
5631
  "scope": "Authored public TypeScript declaration contract",
5632
- "checkedAt": "2026-10-21T12:08:13.113Z"
5632
+ "checkedAt": "2026-11-09T17:52:00.677Z"
5633
5633
  },
5634
5634
  {
5635
5635
  "path": "components/forms/InlineEdit.jsx",
5636
- "sha256": "45b36df70b179243e329684ce20f61ed8dd4fda75e11674d24797713c644d4f8",
5636
+ "sha256": "9f242ef99af077e5c9b68d36cc9539fac0819e66f7995fa6a93ecb7793bf3484",
5637
5637
  "scope": "Authoritative React implementation source for this declared export; shared source may define companion exports",
5638
- "checkedAt": "2026-10-21T12:08:13.113Z"
5638
+ "checkedAt": "2026-11-09T17:52:00.677Z"
5639
5639
  },
5640
5640
  {
5641
5641
  "path": "components/forms/InlineEdit.prompt.md",
5642
5642
  "sha256": "6f60672f2c19cfe7130e1b32f9d8a422bf2ad546c84ac3dc96907415a451b930",
5643
5643
  "scope": "Component usage guidance with generated declared-API projection; implementation authority remains source",
5644
- "checkedAt": "2026-10-21T12:08:13.113Z"
5644
+ "checkedAt": "2026-11-09T17:52:00.677Z"
5645
5645
  },
5646
5646
  {
5647
5647
  "path": "stories/InlineEdit.stories.jsx",
5648
5648
  "sha256": "6e9fdd26b7c8bbe7ffefb87fad4e271b856fc2f449ef33970cd332b8d2a81656",
5649
5649
  "scope": "Authored Storybook CSF story and declared matrix mount surface; not execution or all-state acceptance",
5650
- "checkedAt": "2026-10-21T12:08:13.113Z"
5650
+ "checkedAt": "2026-11-09T17:52:00.677Z"
5651
5651
  }
5652
5652
  ],
5653
- "reviewedAt": "2026-10-21T12:03:00.000Z",
5653
+ "reviewedAt": "2026-11-09T17:52:00.677Z",
5654
5654
  "reviewedBy": "Stephen Cheng",
5655
5655
  "limitations": [
5656
5656
  "This bounded source/declared-support review covers only the exact direct evidence listed below and its public declaration and implementation contracts. Automated execution is limited to separately bound receipts; this scope does not establish all-state acceptance.",
@@ -5699,6 +5699,47 @@
5699
5699
  "Style: default, liquid-glass"
5700
5700
  ],
5701
5701
  "sourceSha256": "db30ac35d9017a532d7159325d8eae235b109942c38649efd07b8a3d35effa14"
5702
+ },
5703
+ {
5704
+ "reviewedBy": "Stephen Cheng",
5705
+ "reviewedAt": "2026-10-21T12:03:00.000Z",
5706
+ "evidence": [
5707
+ {
5708
+ "path": "components/forms/InlineEdit.d.ts",
5709
+ "sha256": "9fdf8c29720cd8d015ea42edfb4ee39ce74964feaafd43b044183ca5ef504b1c",
5710
+ "scope": "Authored public TypeScript declaration contract",
5711
+ "checkedAt": "2026-10-21T12:08:13.113Z"
5712
+ },
5713
+ {
5714
+ "path": "components/forms/InlineEdit.jsx",
5715
+ "sha256": "45b36df70b179243e329684ce20f61ed8dd4fda75e11674d24797713c644d4f8",
5716
+ "scope": "Authoritative React implementation source for this declared export; shared source may define companion exports",
5717
+ "checkedAt": "2026-10-21T12:08:13.113Z"
5718
+ },
5719
+ {
5720
+ "path": "components/forms/InlineEdit.prompt.md",
5721
+ "sha256": "6f60672f2c19cfe7130e1b32f9d8a422bf2ad546c84ac3dc96907415a451b930",
5722
+ "scope": "Component usage guidance with generated declared-API projection; implementation authority remains source",
5723
+ "checkedAt": "2026-10-21T12:08:13.113Z"
5724
+ },
5725
+ {
5726
+ "path": "stories/InlineEdit.stories.jsx",
5727
+ "sha256": "6e9fdd26b7c8bbe7ffefb87fad4e271b856fc2f449ef33970cd332b8d2a81656",
5728
+ "scope": "Authored Storybook CSF story and declared matrix mount surface; not execution or all-state acceptance",
5729
+ "checkedAt": "2026-10-21T12:08:13.113Z"
5730
+ }
5731
+ ],
5732
+ "environments": [
5733
+ "Declared web target: React18/19 through compiled default @cyberskill/design and /react entry, with peer React; raw JSX requires explicit /source opt-in and a consumer JSX toolchain.",
5734
+ "Declared browser compatibility entry: legacy _esm/cs.mjs / _ds_bundle.js; browser-only, not an SSR entry. Source and compiled module families must not be mixed.",
5735
+ "Storybook10 authored CSF/matrix surface is a demonstration/test target. Actual engine/runtime/state coverage is listed separately in execution receipts."
5736
+ ],
5737
+ "axes": [
5738
+ "Theme: light, dark, system (token/CSS contract)",
5739
+ "Element: 5 Ngũ Hành elements / 15 packs",
5740
+ "Language: vi, en",
5741
+ "Style: default, liquid-glass"
5742
+ ]
5702
5743
  }
5703
5744
  ]
5704
5745
  }
@@ -8779,7 +8820,7 @@
8779
8820
  },
8780
8821
  {
8781
8822
  "path": "components/forms/SearchField.jsx",
8782
- "sha256": "44a861064011a4ebf8cd1224d95b0404c44e4cb8a1685d5981f8009ff8a824de",
8823
+ "sha256": "e48eec5e6f3d65719ea4f72e833d67a6b05d2cc6fb49b53a621d0e832f33838e",
8783
8824
  "scope": "Authoritative React implementation source for this declared export; shared source may define companion exports",
8784
8825
  "checkedAt": "2026-10-21T12:08:13.113Z"
8785
8826
  },
@@ -11815,7 +11856,7 @@
11815
11856
  },
11816
11857
  {
11817
11858
  "path": "components/forms/TreeSelect.jsx",
11818
- "sha256": "3d5d1ef69f6e24a4322ed1bf52c47c3430eaad1ab3fe5ac51b5b40ec5a09044f",
11859
+ "sha256": "ab5bc70e1cb1ab10df72a39456e4f4ac88e7907c25cd1dde8ded1d9c5c8b31e3",
11819
11860
  "scope": "Authoritative React implementation source for this declared export; shared source may define companion exports",
11820
11861
  "checkedAt": "2026-10-21T12:08:13.113Z"
11821
11862
  },
@@ -2,8 +2,8 @@
2
2
  "schemaVersion": 1,
3
3
  "interpretation": "Canonical definition/default-key references and generated prompt inventory, not a second type system, behavioral specification, accessibility certification or acceptance record.",
4
4
  "sourceHashes": {
5
- "components/api-index.json": "468afbb6e09f78a1be6fe2b2b06bbd6ea30f4fa06abb835c191eb6490082854a",
6
- "components/contracts.json": "e4ebe085e32dc639dea36cb032155c6aa557e61411bec7fa800691dd61a2ce03",
5
+ "components/api-index.json": "cdca2a8f225147e27ca8b385023ffe6ba5628b614720cd658c94f5c833f53336",
6
+ "components/contracts.json": "3fe12bafaf9da02f9148279601e4bc8f4af4cb87710e19703a53f80f5acbdc30",
7
7
  "_ds_manifest.json": "c095c233237f4ddb574f8fa648c26aee699df2c16d08f7e4a3aeca076a6644e4",
8
8
  "scripts/generate-component-contracts.mjs": "a94d0d58b3d0b6f629bf2cdc2a53bdfc8b43b8fa1479434b770f0cd8dc53187c",
9
9
  "scripts/lib/component-export.mjs": "9f6fd3df4a9e0366fef8c384a0926e050bd8fbcb3887bf5e6ffaed5c0622cd15",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "baselineVersion": "2.5.0",
3
+ "baselineVersion": "2.6.0",
4
4
  "policy": {
5
5
  "versioning": "semver",
6
6
  "breakingChangesRequireMajor": true,