@cyberskill/design 2.3.0 → 2.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/DESIGN.md +1 -1
- package/README.md +74 -143
- package/SECURITY.md +4 -4
- package/VERSION +1 -1
- package/_ds_bundle.js +2 -2
- package/_ds_bundle.js.map +1 -1
- package/_esm/cs.mjs +2 -2
- package/base/collections.css +1 -1
- package/base/controls.css +2 -2
- package/base/data.css +1 -1
- package/base/glass.css +3 -3
- package/base/interaction.css +1 -1
- package/base/shell.css +3 -3
- package/components/forms/editor-parser.js +1 -1
- package/components/release-compatibility.json +1 -1
- package/components/static-html-reference.json +19 -19
- package/dist/esm/_esm/react.mjs +2 -2
- package/dist/esm/build.json +22 -22
- package/dist/esm/chunks/{chunk-CKBL3UEA.mjs → chunk-GQDUCHRU.mjs} +2 -2
- package/dist/esm/chunks/{chunk-JJG5ENFU.mjs → chunk-XDJRVUEM.mjs} +1 -1
- package/dist/esm/chunks/{chunk-JJG5ENFU.mjs.map → chunk-XDJRVUEM.mjs.map} +1 -1
- package/dist/esm/components/forms/Editor.mjs +2 -2
- package/dist/esm/components/forms/editor-schema.mjs +1 -1
- package/dist/styles.min.css +1 -1
- package/docs/consuming.md +1 -1
- package/docs/contrast-report.md +1 -1
- package/docs/conventions.md +1 -1
- package/docs/reference-catalog.json +18 -18
- package/docs/release-notes.md +13 -1
- package/docs/static-html-reference.md +18 -18
- package/docs/vi/consuming.md +1 -1
- package/docs/vi/contrast-report.md +1 -1
- package/docs/vi/conventions.md +1 -1
- package/docs/vi/entrypoints/DESIGN.md +1 -1
- package/docs/vi/entrypoints/README.md +85 -151
- package/docs/vi/release-notes.md +13 -1
- package/docs/vi/static-html-reference.md +18 -18
- package/package.json +14 -14
- package/styles/components/manifest.json +129 -129
- package/styles.layered.css +9 -9
- package/styles.layered.provenance.json +7 -7
- package/tokens/declarations.json +9 -9
- package/tokens/element-seeds.json +1 -1
- package/tokens/modes/dark__default__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/dark__default__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/dark__default__compact__high.dtcg.json +1 -1
- package/tokens/modes/dark__default__compact__standard.dtcg.json +1 -1
- package/tokens/modes/dark__hoa-lava__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/dark__hoa-lava__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/dark__hoa-lava__compact__high.dtcg.json +1 -1
- package/tokens/modes/dark__hoa-lava__compact__standard.dtcg.json +1 -1
- package/tokens/modes/dark__hoa-plasma__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/dark__hoa-plasma__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/dark__hoa-plasma__compact__high.dtcg.json +1 -1
- package/tokens/modes/dark__hoa-plasma__compact__standard.dtcg.json +1 -1
- package/tokens/modes/dark__hoa__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/dark__hoa__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/dark__hoa__compact__high.dtcg.json +1 -1
- package/tokens/modes/dark__hoa__compact__standard.dtcg.json +1 -1
- package/tokens/modes/dark__kim-steel__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/dark__kim-steel__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/dark__kim-steel__compact__high.dtcg.json +1 -1
- package/tokens/modes/dark__kim-steel__compact__standard.dtcg.json +1 -1
- package/tokens/modes/dark__kim-titanium__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/dark__kim-titanium__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/dark__kim-titanium__compact__high.dtcg.json +1 -1
- package/tokens/modes/dark__kim-titanium__compact__standard.dtcg.json +1 -1
- package/tokens/modes/dark__kim__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/dark__kim__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/dark__kim__compact__high.dtcg.json +1 -1
- package/tokens/modes/dark__kim__compact__standard.dtcg.json +1 -1
- package/tokens/modes/dark__moc-bamboo__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/dark__moc-bamboo__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/dark__moc-bamboo__compact__high.dtcg.json +1 -1
- package/tokens/modes/dark__moc-bamboo__compact__standard.dtcg.json +1 -1
- package/tokens/modes/dark__moc-forest__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/dark__moc-forest__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/dark__moc-forest__compact__high.dtcg.json +1 -1
- package/tokens/modes/dark__moc-forest__compact__standard.dtcg.json +1 -1
- package/tokens/modes/dark__moc__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/dark__moc__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/dark__moc__compact__high.dtcg.json +1 -1
- package/tokens/modes/dark__moc__compact__standard.dtcg.json +1 -1
- package/tokens/modes/dark__tho-clay__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/dark__tho-clay__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/dark__tho-clay__compact__high.dtcg.json +1 -1
- package/tokens/modes/dark__tho-clay__compact__standard.dtcg.json +1 -1
- package/tokens/modes/dark__tho-sand__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/dark__tho-sand__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/dark__tho-sand__compact__high.dtcg.json +1 -1
- package/tokens/modes/dark__tho-sand__compact__standard.dtcg.json +1 -1
- package/tokens/modes/dark__tho__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/dark__tho__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/dark__tho__compact__high.dtcg.json +1 -1
- package/tokens/modes/dark__tho__compact__standard.dtcg.json +1 -1
- package/tokens/modes/dark__thuy-mist__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/dark__thuy-mist__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/dark__thuy-mist__compact__high.dtcg.json +1 -1
- package/tokens/modes/dark__thuy-mist__compact__standard.dtcg.json +1 -1
- package/tokens/modes/dark__thuy-ocean__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/dark__thuy-ocean__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/dark__thuy-ocean__compact__high.dtcg.json +1 -1
- package/tokens/modes/dark__thuy-ocean__compact__standard.dtcg.json +1 -1
- package/tokens/modes/dark__thuy__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/dark__thuy__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/dark__thuy__compact__high.dtcg.json +1 -1
- package/tokens/modes/dark__thuy__compact__standard.dtcg.json +1 -1
- package/tokens/modes/index.json +264 -264
- package/tokens/modes/light__default__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/light__default__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/light__default__compact__high.dtcg.json +1 -1
- package/tokens/modes/light__default__compact__standard.dtcg.json +1 -1
- package/tokens/modes/light__hoa-lava__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/light__hoa-lava__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/light__hoa-lava__compact__high.dtcg.json +1 -1
- package/tokens/modes/light__hoa-lava__compact__standard.dtcg.json +1 -1
- package/tokens/modes/light__hoa-plasma__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/light__hoa-plasma__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/light__hoa-plasma__compact__high.dtcg.json +1 -1
- package/tokens/modes/light__hoa-plasma__compact__standard.dtcg.json +1 -1
- package/tokens/modes/light__hoa__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/light__hoa__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/light__hoa__compact__high.dtcg.json +1 -1
- package/tokens/modes/light__hoa__compact__standard.dtcg.json +1 -1
- package/tokens/modes/light__kim-steel__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/light__kim-steel__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/light__kim-steel__compact__high.dtcg.json +1 -1
- package/tokens/modes/light__kim-steel__compact__standard.dtcg.json +1 -1
- package/tokens/modes/light__kim-titanium__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/light__kim-titanium__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/light__kim-titanium__compact__high.dtcg.json +1 -1
- package/tokens/modes/light__kim-titanium__compact__standard.dtcg.json +1 -1
- package/tokens/modes/light__kim__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/light__kim__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/light__kim__compact__high.dtcg.json +1 -1
- package/tokens/modes/light__kim__compact__standard.dtcg.json +1 -1
- package/tokens/modes/light__moc-bamboo__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/light__moc-bamboo__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/light__moc-bamboo__compact__high.dtcg.json +1 -1
- package/tokens/modes/light__moc-bamboo__compact__standard.dtcg.json +1 -1
- package/tokens/modes/light__moc-forest__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/light__moc-forest__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/light__moc-forest__compact__high.dtcg.json +1 -1
- package/tokens/modes/light__moc-forest__compact__standard.dtcg.json +1 -1
- package/tokens/modes/light__moc__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/light__moc__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/light__moc__compact__high.dtcg.json +1 -1
- package/tokens/modes/light__moc__compact__standard.dtcg.json +1 -1
- package/tokens/modes/light__tho-clay__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/light__tho-clay__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/light__tho-clay__compact__high.dtcg.json +1 -1
- package/tokens/modes/light__tho-clay__compact__standard.dtcg.json +1 -1
- package/tokens/modes/light__tho-sand__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/light__tho-sand__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/light__tho-sand__compact__high.dtcg.json +1 -1
- package/tokens/modes/light__tho-sand__compact__standard.dtcg.json +1 -1
- package/tokens/modes/light__tho__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/light__tho__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/light__tho__compact__high.dtcg.json +1 -1
- package/tokens/modes/light__tho__compact__standard.dtcg.json +1 -1
- package/tokens/modes/light__thuy-mist__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/light__thuy-mist__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/light__thuy-mist__compact__high.dtcg.json +1 -1
- package/tokens/modes/light__thuy-mist__compact__standard.dtcg.json +1 -1
- package/tokens/modes/light__thuy-ocean__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/light__thuy-ocean__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/light__thuy-ocean__compact__high.dtcg.json +1 -1
- package/tokens/modes/light__thuy-ocean__compact__standard.dtcg.json +1 -1
- package/tokens/modes/light__thuy__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/light__thuy__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/light__thuy__compact__high.dtcg.json +1 -1
- package/tokens/modes/light__thuy__compact__standard.dtcg.json +1 -1
- package/tokens/modes/system-dark__default__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/system-dark__default__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/system-dark__default__compact__high.dtcg.json +1 -1
- package/tokens/modes/system-dark__default__compact__standard.dtcg.json +1 -1
- package/tokens/modes/system-dark__hoa-lava__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/system-dark__hoa-lava__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/system-dark__hoa-lava__compact__high.dtcg.json +1 -1
- package/tokens/modes/system-dark__hoa-lava__compact__standard.dtcg.json +1 -1
- package/tokens/modes/system-dark__hoa-plasma__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/system-dark__hoa-plasma__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/system-dark__hoa-plasma__compact__high.dtcg.json +1 -1
- package/tokens/modes/system-dark__hoa-plasma__compact__standard.dtcg.json +1 -1
- package/tokens/modes/system-dark__hoa__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/system-dark__hoa__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/system-dark__hoa__compact__high.dtcg.json +1 -1
- package/tokens/modes/system-dark__hoa__compact__standard.dtcg.json +1 -1
- package/tokens/modes/system-dark__kim-steel__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/system-dark__kim-steel__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/system-dark__kim-steel__compact__high.dtcg.json +1 -1
- package/tokens/modes/system-dark__kim-steel__compact__standard.dtcg.json +1 -1
- package/tokens/modes/system-dark__kim-titanium__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/system-dark__kim-titanium__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/system-dark__kim-titanium__compact__high.dtcg.json +1 -1
- package/tokens/modes/system-dark__kim-titanium__compact__standard.dtcg.json +1 -1
- package/tokens/modes/system-dark__kim__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/system-dark__kim__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/system-dark__kim__compact__high.dtcg.json +1 -1
- package/tokens/modes/system-dark__kim__compact__standard.dtcg.json +1 -1
- package/tokens/modes/system-dark__moc-bamboo__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/system-dark__moc-bamboo__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/system-dark__moc-bamboo__compact__high.dtcg.json +1 -1
- package/tokens/modes/system-dark__moc-bamboo__compact__standard.dtcg.json +1 -1
- package/tokens/modes/system-dark__moc-forest__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/system-dark__moc-forest__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/system-dark__moc-forest__compact__high.dtcg.json +1 -1
- package/tokens/modes/system-dark__moc-forest__compact__standard.dtcg.json +1 -1
- package/tokens/modes/system-dark__moc__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/system-dark__moc__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/system-dark__moc__compact__high.dtcg.json +1 -1
- package/tokens/modes/system-dark__moc__compact__standard.dtcg.json +1 -1
- package/tokens/modes/system-dark__tho-clay__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/system-dark__tho-clay__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/system-dark__tho-clay__compact__high.dtcg.json +1 -1
- package/tokens/modes/system-dark__tho-clay__compact__standard.dtcg.json +1 -1
- package/tokens/modes/system-dark__tho-sand__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/system-dark__tho-sand__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/system-dark__tho-sand__compact__high.dtcg.json +1 -1
- package/tokens/modes/system-dark__tho-sand__compact__standard.dtcg.json +1 -1
- package/tokens/modes/system-dark__tho__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/system-dark__tho__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/system-dark__tho__compact__high.dtcg.json +1 -1
- package/tokens/modes/system-dark__tho__compact__standard.dtcg.json +1 -1
- package/tokens/modes/system-dark__thuy-mist__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/system-dark__thuy-mist__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/system-dark__thuy-mist__compact__high.dtcg.json +1 -1
- package/tokens/modes/system-dark__thuy-mist__compact__standard.dtcg.json +1 -1
- package/tokens/modes/system-dark__thuy-ocean__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/system-dark__thuy-ocean__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/system-dark__thuy-ocean__compact__high.dtcg.json +1 -1
- package/tokens/modes/system-dark__thuy-ocean__compact__standard.dtcg.json +1 -1
- package/tokens/modes/system-dark__thuy__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/system-dark__thuy__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/system-dark__thuy__compact__high.dtcg.json +1 -1
- package/tokens/modes/system-dark__thuy__compact__standard.dtcg.json +1 -1
- package/tokens/modes/system-light__default__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/system-light__default__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/system-light__default__compact__high.dtcg.json +1 -1
- package/tokens/modes/system-light__default__compact__standard.dtcg.json +1 -1
- package/tokens/modes/system-light__hoa-lava__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/system-light__hoa-lava__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/system-light__hoa-lava__compact__high.dtcg.json +1 -1
- package/tokens/modes/system-light__hoa-lava__compact__standard.dtcg.json +1 -1
- package/tokens/modes/system-light__hoa-plasma__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/system-light__hoa-plasma__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/system-light__hoa-plasma__compact__high.dtcg.json +1 -1
- package/tokens/modes/system-light__hoa-plasma__compact__standard.dtcg.json +1 -1
- package/tokens/modes/system-light__hoa__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/system-light__hoa__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/system-light__hoa__compact__high.dtcg.json +1 -1
- package/tokens/modes/system-light__hoa__compact__standard.dtcg.json +1 -1
- package/tokens/modes/system-light__kim-steel__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/system-light__kim-steel__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/system-light__kim-steel__compact__high.dtcg.json +1 -1
- package/tokens/modes/system-light__kim-steel__compact__standard.dtcg.json +1 -1
- package/tokens/modes/system-light__kim-titanium__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/system-light__kim-titanium__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/system-light__kim-titanium__compact__high.dtcg.json +1 -1
- package/tokens/modes/system-light__kim-titanium__compact__standard.dtcg.json +1 -1
- package/tokens/modes/system-light__kim__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/system-light__kim__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/system-light__kim__compact__high.dtcg.json +1 -1
- package/tokens/modes/system-light__kim__compact__standard.dtcg.json +1 -1
- package/tokens/modes/system-light__moc-bamboo__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/system-light__moc-bamboo__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/system-light__moc-bamboo__compact__high.dtcg.json +1 -1
- package/tokens/modes/system-light__moc-bamboo__compact__standard.dtcg.json +1 -1
- package/tokens/modes/system-light__moc-forest__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/system-light__moc-forest__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/system-light__moc-forest__compact__high.dtcg.json +1 -1
- package/tokens/modes/system-light__moc-forest__compact__standard.dtcg.json +1 -1
- package/tokens/modes/system-light__moc__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/system-light__moc__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/system-light__moc__compact__high.dtcg.json +1 -1
- package/tokens/modes/system-light__moc__compact__standard.dtcg.json +1 -1
- package/tokens/modes/system-light__tho-clay__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/system-light__tho-clay__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/system-light__tho-clay__compact__high.dtcg.json +1 -1
- package/tokens/modes/system-light__tho-clay__compact__standard.dtcg.json +1 -1
- package/tokens/modes/system-light__tho-sand__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/system-light__tho-sand__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/system-light__tho-sand__compact__high.dtcg.json +1 -1
- package/tokens/modes/system-light__tho-sand__compact__standard.dtcg.json +1 -1
- package/tokens/modes/system-light__tho__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/system-light__tho__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/system-light__tho__compact__high.dtcg.json +1 -1
- package/tokens/modes/system-light__tho__compact__standard.dtcg.json +1 -1
- package/tokens/modes/system-light__thuy-mist__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/system-light__thuy-mist__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/system-light__thuy-mist__compact__high.dtcg.json +1 -1
- package/tokens/modes/system-light__thuy-mist__compact__standard.dtcg.json +1 -1
- package/tokens/modes/system-light__thuy-ocean__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/system-light__thuy-ocean__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/system-light__thuy-ocean__compact__high.dtcg.json +1 -1
- package/tokens/modes/system-light__thuy-ocean__compact__standard.dtcg.json +1 -1
- package/tokens/modes/system-light__thuy__comfortable__high.dtcg.json +1 -1
- package/tokens/modes/system-light__thuy__comfortable__standard.dtcg.json +1 -1
- package/tokens/modes/system-light__thuy__compact__high.dtcg.json +1 -1
- package/tokens/modes/system-light__thuy__compact__standard.dtcg.json +1 -1
- package/tokens/native/CSModes.kt +3 -3
- package/tokens/native/CSModes.swift +3 -3
- package/tokens/native/CSTokens.kt +1 -1
- package/tokens/native/CSTokens.swift +1 -1
- package/tokens/native/cs_modes.dart +3 -3
- package/tokens/native/cs_tokens.dart +1 -1
- package/tokens/native/mode-provenance.json +6 -6
- package/tokens/provenance.json +6 -6
- package/tokens/tokens.dtcg.json +2 -2
- package/tokens/tokens.js +3 -3
- package/tokens/tokens.json +2 -2
- package/tokens/variables.css +3 -3
- /package/dist/esm/chunks/{chunk-CKBL3UEA.mjs.map → chunk-GQDUCHRU.mjs.map} +0 -0
package/docs/vi/consuming.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Tiêu thụ & nâng cấp CyberSkill Design System
|
|
2
2
|
|
|
3
|
-
**Checkout nguồn:** VERSION **<!-- cs-source-version:checkout -->2.3.
|
|
3
|
+
**Checkout nguồn:** VERSION **<!-- cs-source-version:checkout -->2.3.1<!-- /cs-source-version -->** là định danh nguồn cục bộ, không xác nhận phiên bản có trên registry. Với bản ứng viên chưa công bố, kiểm chứng tarball gói cục bộ hoặc checkout nguồn đã rà soát. Lệnh registry bên dưới chỉ bản ổn định 2.3.0 đã công bố (và inventory sibling ADOPT-001 ghi ngày tại 1.7.2), không tự đổi khi chuẩn bị bản phát hành. Chuẩn bị không cấp quyền công bố.
|
|
4
4
|
|
|
5
5
|
Cách mọi project — do người hoặc agent điều khiển — áp dụng design system HTML-first này, và cách nhận update an toàn. Xuất bản trên Storybook **Docs** tại `design.cyberskill.world`.
|
|
6
6
|
|
package/docs/vi/conventions.md
CHANGED
|
@@ -79,7 +79,7 @@ phần tử HTML, không dùng trong URL, thuộc tính, CSS hay script.
|
|
|
79
79
|
|
|
80
80
|
**Element variant mới** — ở trong envelope oklch của element; đặt 10 token hợp đồng `--cs-accent-*` (gồm `--cs-accent-on-strong` ≥4.5:1 và APCA75 cho nội dung thường trên `-strong`) cộng `--cs-color-text-accent`/`--cs-color-link` (APCA-check cả hai); aurora wash kế thừa từ element qua `.cs-aurora-wash` (chỉ override class rule nếu variant thật sự cần ảnh riêng); đối tác gradient (`grad-b`) phải theo Tương sinh.
|
|
81
81
|
|
|
82
|
-
**Ship check** — theo gate kiểm chứng portable trong `docs/doctrine.md`, rồi chạy `_audit/docs-consistency.html` **và** `_audit/namespace-portability.html` (cả hai phải xanh). VERSION của checkout nguồn **<!-- cs-source-version:checkout -->2.3.
|
|
82
|
+
**Ship check** — theo gate kiểm chứng portable trong `docs/doctrine.md`, rồi chạy `_audit/docs-consistency.html` **và** `_audit/namespace-portability.html` (cả hai phải xanh). VERSION của checkout nguồn **<!-- cs-source-version:checkout -->2.3.1<!-- /cs-source-version -->**.
|
|
83
83
|
|
|
84
84
|
## Decision log (owner duyệt)
|
|
85
85
|
|
|
@@ -4,26 +4,27 @@
|
|
|
4
4
|
|
|
5
5
|
[](https://github.com/cyberskill-official/design/actions/workflows/design-system-gates.yml)
|
|
6
6
|
|
|
7
|
+
Hệ thống thiết kế ấm áp, chuẩn doanh nghiệp, **ưu tiên tiếng Việt** cho **CyberSkill** — studio phần mềm Sài Gòn (thành lập 2020) biến *điều ước* rõ ràng thành phần mềm hoạt động. Neo trên **Umber** và **Ochre**, dẫn dắt bởi thần đèn vàng **Lumi**, mọi bề mặt giải quyết bốn trục độc lập: **Theme** (light · dark · system) × **Element** (bản sắc sản phẩm Ngũ Hành: Kim · Mộc · Thủy · Hỏa · Thổ, 15 biến thể) × **Language** (EN · VI) × **Style** (`data-cs-style` — gói duy nhất **liquid-glass**; không khai báo ≡ mặc định). Phía sử dụng chỉ cần liên kết một tệp: **`styles.css`**.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
7
11
|
## Bắt đầu tại đây
|
|
8
12
|
|
|
9
|
-
Đây là **tài liệu điểm vào** của CyberSkill Design System — VERSION của bản nguồn **<!-- cs-source-version:checkout -->2.3.
|
|
13
|
+
Đây là **tài liệu điểm vào** của CyberSkill Design System — VERSION của bản nguồn **<!-- cs-source-version:checkout -->2.3.1<!-- /cs-source-version -->** (xem `VERSION`; không xác nhận phiên bản có trên registry). **Trang sản phẩm** là Storybook tại **`/`** trên `design.cyberskill.world` (chỉ trên host; cục bộ: `npm run storybook`). Tài liệu vận hành được công bố ở thanh bên **Docs** của Storybook và Thư viện tài liệu tại `/docs/viewer.html` (các đường dẫn cũ `/dashboard`, `/dashboard.html` và `/playground/*` chuyển hướng về `/`).
|
|
10
14
|
|
|
11
|
-
|
|
12
|
-
- **Nhà thiết kế** — mở Storybook (**Foundations / Components / Templates / Pages / Docs**). **Templates** liệt kê toàn bộ <!-- cs-count:templates -->85<!-- /cs-count --> điểm khởi đầu (Gallery → Atomic View, cùng story theo nhóm, gồm bộ 38 tài liệu VN A4 (Employment Suite + khung thương mại) tại **Templates → HR**). Đổi trực tiếp Theme × Element × Language × Style qua thanh công cụ Storybook, Atomic View và mẫu Elements Geometry.
|
|
15
|
+
### Bắt đầu nhanh theo đối tượng
|
|
13
16
|
|
|
17
|
+
- **Nhà thiết kế** — mở Storybook (**Foundations / Components / Templates / Pages / Docs**). **Templates** liệt kê toàn bộ <!-- cs-count:templates -->85<!-- /cs-count --> điểm khởi đầu (Gallery → Atomic View, cùng story theo nhóm, gồm bộ 38 tài liệu VN A4 (Employment Suite + khung thương mại) tại **Templates → HR**). Đổi trực tiếp Theme × Element × Language × Style qua thanh công cụ Storybook, Atomic View và mẫu Elements Geometry.
|
|
14
18
|
- **Soạn template trình duyệt** (máy chủ HTTP tĩnh) — đọc `SKILL.md` (chọn runtime + ràng buộc thiết kế), rồi hướng dẫn bên dưới; phối hợp `styles.css` + ESM đã biên dịch `@cyberskill/design` (`dist/esm/_esm/react.mjs`; JSX thô qua `@cyberskill/design/source`) / `_esm/cs.mjs` cũ / `_ds_bundle.js` (tìm theo tiền tố). `support.js` được cung cấp thông dịch `*.dc.html` trong trình duyệt; xem `docs/template-grammar.md` về ngữ pháp và ranh giới chỉ ở host. Hợp đồng component nằm cạnh từng component (`.d.ts` + `.prompt.md`).
|
|
15
|
-
|
|
16
19
|
- **Tĩnh / open-spec** (ví dụ Google Stitch) — bắt đầu từ **`DESIGN.md`** (open-spec được sinh) → `llms.txt` → `tokens/tokens.dtcg.json`. Dựng giao diện **tĩnh** bằng `styles.css` + `.cs-*` / kitchen-sink / `examples/static-hello/`. Dùng `.dc.html` qua trình thông dịch được cung cấp hoặc công cụ hiểu ngữ pháp; công cụ HTML thuần dùng `.cs-*` hoặc ảnh chụp kết quả hiển thị đã kiểm chứng.
|
|
17
|
-
|
|
18
|
-
- **Người triển khai** — gói npm ổn định đã công bố **`@cyberskill/design@2.0.0`** (xem `docs/consuming.md`; quyền dùng trong `docs/consumer-grant.md` — vẫn UNLICENSED). **Next/SSR:** `import { Button } from "@cyberskill/design"` (peer React). **Demo trình duyệt:** **`examples/npm-hello/`** (Lumi · Hỏa · plasma, `_esm/cs.mjs` cũ). Hoặc liên kết **`styles.css`** từ clone/subtree (một tệp cho toàn bộ), hoặc chép thư mục `templates/<slug>/` và sửa một dòng trong `ds-base.js` (đổi liên kết một dòng, được kiểm định đầu cuối tháng 7/2026). Xác định scope bằng `data-theme` · `data-cs-element` (+`data-cs-variant`) · `lang`. Dấu hiệu bản phát hành: SHA đầu nhánh + `docs/release-notes.md` (VERSION nguồn là **<!-- cs-source-version:release-signal -->2.3.0<!-- /cs-source-version -->**; không có CHANGELOG).
|
|
19
|
-
|
|
20
|
+
- **Người triển khai** — gói npm ổn định đã công bố **`@cyberskill/design@2.3.0`** (xem `docs/consuming.md`; quyền dùng trong `docs/consumer-grant.md` — vẫn UNLICENSED). **Next/SSR:** `import { Button } from "@cyberskill/design"` (peer React). **Demo trình duyệt:** **`examples/npm-hello/`** (Lumi · Hỏa · plasma, `_esm/cs.mjs` cũ). Hoặc liên kết **`styles.css`** từ clone/subtree (một tệp cho toàn bộ), hoặc chép thư mục `templates/<slug>/` và sửa một dòng trong `ds-base.js` (đổi liên kết một dòng, được kiểm định đầu cuối tháng 7/2026). Xác định scope bằng `data-theme` · `data-cs-element` (+`data-cs-variant`) · `lang`. Dấu hiệu bản phát hành: SHA đầu nhánh + `docs/release-notes.md` (VERSION nguồn là **<!-- cs-source-version:release-signal -->2.3.1<!-- /cs-source-version -->**; không có CHANGELOG).
|
|
20
21
|
- **Người bảo trì** — `docs/doctrine.md` (mở rộng + kiểm chứng), rồi `CONTRIBUTING.md` và `docs/quality-gates.md`.
|
|
21
22
|
|
|
22
|
-
|
|
23
|
+
### Bản đồ tài liệu — phía sử dụng
|
|
23
24
|
|
|
24
25
|
| Tài liệu | Nội dung giải đáp |
|
|
25
26
|
|---|---|
|
|
26
|
-
| `README.md` (tệp này
|
|
27
|
+
| `README.md` (tệp này) | Hướng dẫn đầy đủ: màu neo, giọng điệu, nền tảng thị giác, component, template, mục lục kho nguồn |
|
|
27
28
|
| `DESIGN.md` | Bề mặt open-spec được sinh của **kho này** (kiểu Stitch) — doctrine + mọi giá trị token + danh mục, từ DTCG; sinh lại bằng `npm run build:design-md`. Không sửa tay. |
|
|
28
29
|
| `SKILL.md` | Điểm vào agent — lựa chọn runtime + ràng buộc thiết kế |
|
|
29
30
|
| `docs/consuming.md` | Tiếp nhận và nâng cấp — hai đường DC/tĩnh, tên gói npm, các trục, nâng cấp + mở rộng |
|
|
@@ -40,7 +41,7 @@
|
|
|
40
41
|
| `docs/figma.md` | Cách import Figma / Tokens Studio cho phía sử dụng và bảo trì |
|
|
41
42
|
| `docs/vi/*.md` | Bản tiếng Việt của mọi `docs/*.md` dành cho vận hành (đổi EN\|VI trong `docs/viewer.html`; bản dịch điểm vào theo cặp nằm trong `docs/vi/entrypoints/`) |
|
|
42
43
|
|
|
43
|
-
|
|
44
|
+
### Bản đồ tài liệu — người bảo trì
|
|
44
45
|
|
|
45
46
|
| Tài liệu | Nội dung giải đáp |
|
|
46
47
|
|---|---|
|
|
@@ -50,24 +51,15 @@
|
|
|
50
51
|
| `docs/quality-gates.md` | Tham chiếu chuẩn đo — từng cổng chất lượng, assertion, tiêu chí đạt, nơi chạy |
|
|
51
52
|
| `docs/sync.md` | Độ trung thực vòng đi-về giữa kho ↔ môi trường soạn thảo và đồng bộ hai chiều |
|
|
52
53
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
Hệ thống thiết kế ấm áp, phù hợp doanh nghiệp, **ưu tiên tiếng Việt** cho **CyberSkill** — studio phần mềm Sài Gòn (thành lập 2020), biến *điều ước* rõ ràng thành phần mềm hoạt động. Neo ở **Umber** và **Ochre**, được **Lumi**, thần đèn vàng, dẫn dắt. Dự án đóng gói token, component, tài sản thương hiệu và bản tái hiện sản phẩm của CyberSkill để agent có thể thiết kế ấn phẩm đúng thương hiệu và giao diện sản xuất.
|
|
56
|
-
Phía sử dụng liên kết một tệp: **`styles.css`**.
|
|
57
|
-
|
|
58
|
-
## Nguồn
|
|
59
|
-
|
|
60
|
-
**Kho nguồn này** (`cyberskill-official/design`) là nguồn chuẩn của hệ thống thiết kế: token, component React, tài sản thương hiệu, template và cổng kiểm tra đều ở đây.
|
|
54
|
+
### Nguồn chuẩn & các kho liên quan
|
|
61
55
|
|
|
62
|
-
|
|
63
|
-
- **
|
|
64
|
-
- **
|
|
65
|
-
|
|
66
|
-
**[`DESIGN.md`](../../../DESIGN.md) trong kho này** là bề mặt open-spec được sinh (kiểu Google Stitch: doctrine thương hiệu, mọi giá trị token sáng + tối, danh mục component/template). Tệp được dựng từ `tokens/tokens.dtcg.json` + `_ds_manifest.json` bằng `npm run build:design-md`. Không bao giờ sửa tay; cổng `design-md-parity` ghim từng byte với nguồn token. Đây không phải tệp doctrine thượng nguồn riêng.
|
|
56
|
+
- **Nguồn chuẩn:** `cyberskill-official/design` lưu trữ toàn bộ token, component React, tài sản thương hiệu, template và cổng kiểm tra.
|
|
57
|
+
- **Open-spec được sinh:** [`DESIGN.md`](../../../DESIGN.md) được dựng từ `tokens/tokens.dtcg.json` + `_ds_manifest.json` bằng `npm run build:design-md` (cổng `design-md-parity` ghim từng byte với nguồn).
|
|
58
|
+
- **Kho CyberSkill liên quan:** Trang marketing (`https://github.com/cyberskill-official/landing-page`) và Khung audit (`https://github.com/cyberskill-official/design-system-audit-framework`).
|
|
67
59
|
|
|
68
60
|
---
|
|
69
61
|
|
|
70
|
-
## Bất biến nền tảng
|
|
62
|
+
## Bất biến nền tảng
|
|
71
63
|
|
|
72
64
|
<!-- BEGIN DOCTRINE IMMUTABLES -->
|
|
73
65
|
| Bất biến | Giá trị |
|
|
@@ -84,60 +76,46 @@ Các kho CyberSkill liên quan (không ở cây này — tham khảo độ trung
|
|
|
84
76
|
|
|
85
77
|
---
|
|
86
78
|
|
|
87
|
-
##
|
|
88
|
-
|
|
89
|
-
**Giọng điệu là hợp âm bốn trục vang đồng thời:** *ấm áp · trực tiếp · trung thực · tôn trọng.* Không bao giờ “vui nhộn/tinh nghịch/gai góc” — các giọng này được xác định rõ là lệch thương hiệu.
|
|
79
|
+
## Nền tảng nội dung & giọng điệu
|
|
90
80
|
|
|
91
|
-
|
|
92
|
-
- **Trực tiếp và cụ thể.** Câu ngắn, kết quả rõ, không nói tránh. Ví dụ *“Gửi một lời nhắn ngắn. Chúng tôi trả lời trong một ngày làm việc.”*, *“Được xây để bàn giao và bền vững.”*
|
|
93
|
-
- **Trung thực về đánh đổi.** Thương hiệu đề cao sự thẳng thắn: *“giàu kinh nghiệm, nhỏ gọn và trung thực về đánh đổi.”* Rủi ro được nói bằng lời, không giấu hay chỉ biểu thị bằng màu.
|
|
81
|
+
**Giọng điệu là hợp âm bốn trục vang đồng thời:** *ấm áp · trực tiếp · trung thực · tôn trọng.* Không bao giờ “vui nhộn/tinh nghịch/gai góc” — các giọng này lệch chuẩn thương hiệu.
|
|
94
82
|
|
|
95
|
-
-
|
|
96
|
-
-
|
|
83
|
+
- **Ấm áp, gần gũi, ngôi thứ hai.** Gọi người đọc là “bạn”; studio là “chúng tôi”. Lumi xưng “tôi”. Lời văn dịu dàng, khích lệ, không sáo ngữ doanh nghiệp (ví dụ *“Rất vui. Tôi nên gọi bạn là gì?”*, *“Chiếc đèn đang nghỉ một chút.”*).
|
|
84
|
+
- **Trực tiếp và cụ thể.** Câu ngắn, kết quả rõ, không vòng vo (ví dụ *“Gửi một lời nhắn ngắn. Chúng tôi trả lời trong một ngày làm việc.”*, *“Được xây để bàn giao và bền vững.”*).
|
|
85
|
+
- **Trung thực về đánh đổi.** Thương hiệu đề cao sự thẳng thắn: *“giàu kinh nghiệm, nhỏ gọn và trung thực về đánh đổi.”* Rủi ro được nêu bằng lời, không giấu hay chỉ biểu thị bằng màu.
|
|
86
|
+
- **Tôn trọng đồng thuận và riêng tư.** Hỏi trước khi liên hệ; cam kết không chia sẻ (ví dụ *“Thông tin của bạn đến thẳng đội ngũ. Chúng tôi không bao giờ chia sẻ.”*).
|
|
87
|
+
- **Ẩn dụ “điều ước” là trục chính.** Sản phẩm là *điều ước*; Lumi (thần đèn vàng) *hiện thực hóa* bằng cách chuyển đến đội ngũ con người thật. Động từ: *ước, hiện thực hóa, định hình, bàn giao, bền vững*. Dùng ấm áp, không phô trương.
|
|
97
88
|
|
|
98
|
-
**Viết hoa và quy cách:** Viết hoa đầu câu cho tiêu đề và nút (*“Ước một điều”*, *“Kể chúng tôi nghe điều ước của bạn”*). CHỮ HOA + giãn ký tự rộng chỉ cho dòng dẫn nhỏ/nhãn/tiêu đề bảng. Tiêu đề không có dấu câu cuối; nội dung dùng dấu chấm. Số viết bằng chữ số (*“một ngày làm việc”* trong văn xuôi được chấp nhận, nhưng *“3 ngày làm việc”* cho SLA cụ thể). Dùng gạch ngang dài cho ý phụ.
|
|
89
|
+
**Viết hoa và quy cách:** Viết hoa đầu câu cho tiêu đề và nút (*“Ước một điều”*, *“Kể chúng tôi nghe điều ước của bạn”*). CHỮ HOA + giãn ký tự rộng chỉ dùng cho dòng dẫn nhỏ/nhãn/tiêu đề bảng. Tiêu đề không có dấu câu cuối; nội dung dùng dấu chấm. Số viết bằng chữ số (*“một ngày làm việc”* trong văn xuôi được chấp nhận, nhưng *“3 ngày làm việc”* cho SLA cụ thể). Dùng gạch ngang dài cho ý phụ.
|
|
99
90
|
|
|
100
|
-
**Song ngữ (ưu tiên tiếng Việt):** Mỗi chuỗi hướng người dùng có bản EN + VN hoặc ghi chú hoãn rõ ràng. Tiếng Việt là thành phần
|
|
91
|
+
**Song ngữ (ưu tiên tiếng Việt):** Mỗi chuỗi hướng người dùng có bản EN + VN hoặc ghi chú hoãn rõ ràng. Tiếng Việt là thành phần hạng nhất, không phải bản dịch bổ sung — giữ nguyên dấu ở mọi nơi (*Nguyễn Hoàng Vũ*, *Hiện Thực Hoá Ý Chí*). Line-height an toàn cho tiếng Việt (nội dung 1.5 / tiêu đề 1.35) dành đủ khoảng trống cho dấu chồng.
|
|
101
92
|
|
|
102
|
-
**Emoji:** **Không dùng** trong giao diện sản phẩm hay lời văn thương hiệu. Ý nghĩa được truyền bằng
|
|
93
|
+
**Emoji:** **Không dùng** trong giao diện sản phẩm hay lời văn thương hiệu. Ý nghĩa được truyền tải bằng từ ngữ và bộ icon nét, không dùng emoji.
|
|
103
94
|
|
|
104
95
|
---
|
|
105
96
|
|
|
106
|
-
##
|
|
107
|
-
|
|
108
|
-
**Bảng màu — đất ấm, không lạnh.** Umber `#45210E` làm nền tảng mọi thứ (chính là màu chữ chính); Ochre `#F4BA17` là accent duy nhất — CTA trên nền tối, vòng tiêu điểm, nhấn sáng, thần đèn. Bề mặt là giấy ấm: page `#FFFDF8`, panel `#FFFFFF`, raised `#FBF4E9`. Mọi màu trung tính ngả về umber — viền `#E7D9C6`, chữ mờ `#3F2D21`. Màu ngữ nghĩa (success `#166534`, danger `#B42318`, warning `#92400E`, info `#1D4ED8`) dùng tiết chế và không bao giờ là tín hiệu duy nhất. **Tối đa một accent trên mỗi bề mặt** — lõi dùng Ochre; *sản phẩm* có thể thay bằng accent Ngũ Hành (xem Bản sắc Ngũ Hành bên dưới), không thêm sắc thứ hai cạnh nó. Không dùng gradient tím xanh.
|
|
109
|
-
|
|
110
|
-
**Chữ.** UI: **Be Vietnam Pro** (300–800; họ Google ưu tiên tiếng Việt) — mặc định mọi bề mặt, gồm tiêu đề. Display/tiêu đề lớn: **Space Grotesk** (biến thiên 300–700), font **tùy chọn** của `--cs-font-family-display`; không thành phần nào trỏ đến nó trước khi scope chọn `.cs-display-face`, chuyển `--cs-heading-family` và giữ nội dung ở font UI. Mã/dữ liệu: **JetBrains Mono**. Tiêu đề display đậm (800 ở font UI; trong `.cs-display-face`, Space Grotesk tối đa 700 nên 800 bị giới hạn trong họ này), giãn ký tự chặt (−0.02em); nội dung 400/500 ở 1.5. Dòng dẫn chữ hoa giãn 0.08–0.12em. Thang cỡ xs 12 → 5xl 60 trên nền 16px.
|
|
97
|
+
## Nền tảng thị giác
|
|
111
98
|
|
|
112
|
-
**
|
|
99
|
+
- **Bảng màu — đất ấm, không lạnh.** Umber `#45210E` làm nền tảng mọi thứ (chính là màu chữ chính); Ochre `#F4BA17` là accent duy nhất — CTA trên nền tối, vòng tiêu điểm, điểm nhấn, thần đèn. Bề mặt là giấy ấm: page `#FFFDF8`, panel `#FFFFFF`, raised `#FBF4E9`. Mọi màu trung tính ngả về umber — viền `#E7D9C6`, chữ mờ `#3F2D21`. Màu ngữ nghĩa (success `#166534`, danger `#B42318`, warning `#92400E`, info `#1D4ED8`) dùng tiết chế và không bao giờ là tín hiệu duy nhất. **Tối đa một accent trên mỗi bề mặt** — bề mặt lõi dùng Ochre; *sản phẩm* có thể thay bằng accent Ngũ Hành, không thêm sắc thứ hai cạnh nó. Không dùng gradient tím xanh.
|
|
100
|
+
- **Chữ.** UI: **Be Vietnam Pro** (300–800; họ chữ ưu tiên tiếng Việt) — mặc định trên mọi bề mặt, gồm cả tiêu đề. Display/tiêu đề lớn: **Space Grotesk** (biến thiên 300–700), font **tùy chọn** của `--cs-font-family-display`; không thành phần nào trỏ đến nó trước khi scope chọn `.cs-display-face`, chuyển `--cs-heading-family` và giữ văn bản nội dung ở font UI. Mã/dữ liệu: **JetBrains Mono**. Tiêu đề display đậm (800 ở font UI; trong `.cs-display-face`, Space Grotesk tối đa 700), giãn ký tự chặt (−0.02em); nội dung 400/500 ở 1.5. Dòng dẫn chữ hoa giãn 0.08–0.12em. Thang cỡ chạy từ xs 12 → 5xl 60 trên nền 16px.
|
|
101
|
+
- **Khoảng cách và bố cục.** Lưới cơ sở 4px; padding section từ 64 đến 96px; max-width nội dung khoảng 1200–1320px. Khoảng trắng rộng rãi, tĩnh tại.
|
|
102
|
+
- **Bo góc và thẻ.** Bán kính: sm 4, md 8 (mặc định), **lg 14 (thẻ/panel)**, full 999 (pill, input, chip). Thẻ mặc định = panel trắng, viền ấm 1px `#E7D9C6`, bán kính 14px, bóng ấm mềm. Không dùng thẻ có viền trái tô màu.
|
|
103
|
+
- **Bề mặt — Liquid Glass (cách xử lý mặc định).** Năm vật liệu trên các màu neo: **Whisper** (lớp phủ hero), **Light** (nav/sidebar), **Standard** (thẻ trên hình), **Heavy** (modal/popover), **Solid** (nội dung dày, bảng). Kính = độ trong `color-mix` + blur/saturate `backdrop-filter` + gradient viền thấu kính 1px. Đây là cơ chế **tùy chọn và cộng thêm** — áp dụng lớp `cs-surface-*` sau khi kiểm tra APCA với nền sau; nội dung dày giữ Solid. Tự động chuyển sang đặc dưới `prefers-reduced-transparency`, `forced-colors`, khi in và trên trình duyệt không hỗ trợ. Bề mặt giải quyết **Theme × Element × Language × Style** độc lập.
|
|
104
|
+
- **Bóng đổ và chiều sâu.** Bóng ấm ngả umber (`rgba(69,33,14,…)`), thang mềm năm mức từ đường mảnh `xs` đến độ nổi hộp thoại `xl`. Chiều sâu là thang z tường minh gắn với các tầng kính: bg 0 → section 5 → card 10 → nav 50 → dropdown 60 → overlay 80 → modal 100 → toast 200.
|
|
105
|
+
- **Nền và hình ảnh.** Nền umber đậm phát sáng với **ánh hạt vàng ấm** (`aurora-tho.webp`), mỗi hành có lớp phủ riêng (`assets/aurora-{tho,hoa,thuy,moc,kim}.webp`, áp dụng qua lớp `.cs-aurora-wash`; Thổ dùng vàng chính thức). Section umber tràn mép neo hero, dải tuyển dụng và footer. Linh vật **Lumi** là thần đèn vàng bóng trên nền trong suốt.
|
|
106
|
+
- **Bản sắc sản phẩm Ngũ Hành.** Studio thuộc **Thổ/Earth** (Umber + Ochre); mỗi *sản phẩm* CyberSkill có thể mang một hành — **Kim** (metal) · **Mộc** (wood) · **Thủy** (water) · **Hỏa** (fire) · **Thổ** (earth) — qua `data-cs-element` (+ `data-cs-variant`, ví dụ Hỏa: ember · lava · plasma). Mỗi gói đặt mười token vai trò **`--cs-accent-*`** (accent / strong / bright / on / on-strong / tint / ink / glow / grad-a / grad-b) trong `tokens/elements.css`; trong scope, hành nhận đầy đủ vai trò accent của Ochre. Không bao giờ đổi theo hành: trạng thái ngữ nghĩa và **chỉ báo tiêu điểm kết hợp** (viền text-primary + quầng ochre). Phối màu theo chu kỳ: hành phụ chỉ xuất hiện ở điểm cuối gradient dọc **Tương sinh** (Mộc→Hỏa→Thổ→Kim→Thủy→Mộc); cặp **Tương khắc** không bao giờ trộn. Ánh xạ sản phẩm→hành nằm trong `docs/products.md`. Mọi template đều dùng `--cs-accent-*`, không dùng hex thô. **Lumi giữ màu vàng trong mọi hành.**
|
|
107
|
+
- **Chuyển động và trạng thái tương tác.** Thời lượng ngắn (120–320ms) với đường cong giảm tốc mềm `cubic-bezier(0.2,0,0,1)`; `prefers-reduced-motion` giảm thời lượng animation/transition xuống 0.01ms và tắt cuộn mượt. Hover sáng thêm ~8% (nền tô) hoặc tô `surface-raised` (nhẹ); nhấn dịch 0.5–1px; tiêu điểm giữ **chỉ báo kết hợp** (viền text-primary 2px + quầng Ochre) theo `docs/doctrine.md`. Vùng chạm ≥ 44px trên con trỏ thô. Độ trong và độ mờ chỉ xuất hiện trên bề mặt kính và ô nhập điều ước ở hero.
|
|
113
108
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
**Bề mặt — Liquid Glass (cách xử lý mặc định).** Năm vật liệu trên các màu neo: **Whisper** (lớp phủ hero), **Light** (nav/sidebar), **Standard** (thẻ trên hình), **Heavy** (modal/popover), **Solid** (nội dung dày, bảng). Kính = độ trong `color-mix` + blur/saturate `backdrop-filter` + gradient viền thấu kính1px. Đây là cơ chế **tùy chọn và cộng thêm** — áp dụng lớp `cs-surface-*` sau khi kiểm tra APCA với nền sau; nội dung dày giữ Solid. Chuyển sang đặc dưới `prefers-reduced-transparency`, `forced-colors`, khi in và trên trình duyệt không hỗ trợ.
|
|
117
|
-
|
|
118
|
-
**Bóng** ấm, ngả umber (`rgba(69,33,14,…)`), thang mềm năm mức từ đường mảnh `xs` đến độ nổi hộp thoại `xl`. Không xám, không gắt.
|
|
119
|
-
|
|
120
|
-
**Chiều sâu** là thang z tường minh gắn với các tầng kính: bg 0 → section 5 → card 10 → nav 50 → dropdown 60 → overlay 80 → modal 100 → toast 200.
|
|
121
|
-
|
|
122
|
-
**Nền và hình ảnh** phát sáng từ trong: nền umber đậm với **ánh hạt vàng ấm** (`aurora-tho.webp`), không lạnh hay phẳng — mỗi hành có lớp phủ riêng (`assets/aurora-{tho,hoa,thuy,moc,kim}.webp`, qua lớp phủ `.cs-aurora-wash`; Thổ dùng vàng chính thức). Ảnh mang tông ấm. Section umber tràn mép neo hero, dải tuyển dụng và footer; trên umber, khẩu hiệu Ochre và nội dung trắng truyền tải thông điệp. Linh vật **Lumi** là thần đèn vàng bóng trên nền trong suốt.
|
|
123
|
-
|
|
124
|
-
**Bản sắc sản phẩm Ngũ Hành.** Studio thuộc **Thổ/Earth** (Umber + Ochre — màu vàng đất truyền thống); mỗi *sản phẩm* CyberSkill có thể mang một hành — **Kim** (metal) · **Mộc** (wood) · **Thủy** (water) · **Hỏa** (fire) · **Thổ** (earth) — qua `data-cs-element` (+ `data-cs-variant`, ví dụ Hỏa: ember · lava · plasma). Mỗi gói đặt mười token vai trò **`--cs-accent-*`** (accent / strong / bright / on / on-strong / tint / ink / glow / grad-a / grad-b) trong `tokens/elements.css`; trong scope, hành nhận đầy đủ vai trò accent của Ochre. Không bao giờ theo hành: trạng thái ngữ nghĩa và **chỉ báo tiêu điểm kết hợp** (viền text-primary + quầng ochre) — dấu ấn tiếp cận của studio trên mọi sản phẩm. Phối theo chu kỳ: hành phụ chỉ được xuất hiện ở điểm cuối gradient dọc **Tương sinh** (Mộc→Hỏa→Thổ→Kim→Thủy→Mộc); cặp **Tương khắc** không bao giờ trộn. Ánh xạ sản phẩm→hành nằm trong `docs/products.md`. **Mọi template có tùy chỉnh Element** — phần theo hành sản phẩm phải dùng `--cs-accent-*`, không dùng hex thô. **Lumi giữ màu vàng trong mọi hành** — thần đèn là hằng số của studio; chỉ môi trường đổi sắc.
|
|
125
|
-
|
|
126
|
-
**Xử lý bề mặt.** Liquid-glass cố định. Bề mặt giải quyết **Theme × Element × Language × Style** độc lập.
|
|
127
|
-
|
|
128
|
-
**Chuyển động** bình tĩnh và có mục đích: thời lượng ngắn (120–320ms), giảm tốc mềm `cubic-bezier(0.2,0,0,1)`, dịch/co giãn nhỏ và mờ dần (ví dụ linh vật hero nổi nhẹ). Không nảy, không chớp. Với `prefers-reduced-motion`, cơ chế an toàn toàn cục giảm animation và transition xuống0.01ms, tắt cuộn mượt; từng component có thể tắt animation hoàn toàn.
|
|
129
|
-
|
|
130
|
-
**Trạng thái tương tác.** Hover: sáng thêm khoảng8% (nền tô) hoặc tô `surface-raised` (nhẹ). Nhấn: dịch0.5–1px. Tiêu điểm: giữ **chỉ báo kết hợp** — viền text-primary2px và quầng Ochre theo `docs/doctrine.md`; quy tắc component giữ viền thấy được khi chỉ báo nằm bên trong hoặc do wrapper hiển thị. Nút, range, checkbox và radio native giữ diện mạo trình duyệt và dự phòng quầng Ochre khi box shadow bị tắt. Hiển thị disabled theo hợp đồng từng component. Vùng chạm ≥44px trên con trỏ thô.
|
|
109
|
+
---
|
|
131
110
|
|
|
132
|
-
|
|
111
|
+
## Hệ biểu tượng & tài sản thương hiệu
|
|
133
112
|
|
|
134
|
-
|
|
113
|
+
CyberSkill **không kèm thư viện icon bên ngoài**. Hệ thống dùng **bộ icon nét nội bộ** (`TASK-DS-010`): mỗi icon là dữ liệu (viewBox + đường nét nguyên thủy) hiển thị qua một component `<Icon>`.
|
|
135
114
|
|
|
136
|
-
|
|
115
|
+
- **Kiểu dáng:** icon nét, stroke `currentColor`, độ dày 1.75, đầu/nối bo tròn, viewBox 24×24 — kích thước lấy từ `--cs-icon-sm|md|lg` (16/20/24).
|
|
116
|
+
- **Danh mục icon:** `close · sun · moon · arrow-right · check · sparkle · chat · sound-on · sound-off`, mở rộng ở v2.0 với `search · sliders · upload · download · calendar · user · plus · trash · external · menu`, và ở v2.13 với `chevron-down/up/left/right · edit · copy · info · alert-triangle`. `sparkle` là glyph **“điều ước”** của thương hiệu. **Không dùng emoji** hay ký tự unicode thay icon trong UI sản phẩm.
|
|
117
|
+
- **Tài sản thương hiệu gốc:** `assets/` chứa `logo-mark.svg` / `logo-mark.png` (biểu trưng gốc chính thức, nền Umber + thần đèn Ochre), `favicon.svg`, `aurora-tho.webp` (`aurora-gold.jpg` giữ làm ảnh mẫu) và `lumi-poster.webp`. **Không bao giờ dựng lại, đổi màu hay mô phỏng biểu trưng gốc;** với tenant bên thứ ba, thay bằng logo riêng của tenant.
|
|
137
118
|
|
|
138
|
-
CyberSkill **không kèm thư viện icon bên ngoài**. Hệ thống dùng **bộ icon nét nhỏ trong kho** (từ trang marketing, `TASK-DS-010`): mỗi icon là dữ liệu (viewBox + đường nét nguyên thủy), hiển thị qua một component `<Icon>`. Kiểu: **icon nét, stroke `currentColor`, độ dày1.75, đầu/nối bo tròn, viewBox24×24** — icon theo token chữ xung quanh, đổi màu bằng `color`. Kích thước từ `--cs-icon-sm|md|lg` (16/20/24).
|
|
139
|
-
Bộ gồm: `close · sun · moon · arrow-right · check · sparkle · chat · sound-on · sound-off`, mở rộng ở v2.0 với `search · sliders · upload · download · calendar · user · plus · trash · external · menu`, và v2.13 với `chevron-down/up/left/right · edit · copy · info · alert-triangle` (cùng ngữ pháp, đánh dấu phần mở rộng). `sparkle` là glyph **“điều ước”** của thương hiệu. **Không emoji**, không icon ký tự unicode trong UI sản phẩm. Ngoại lệ với “icon nét” là **biểu trưng thương hiệu** (`Logo`) và linh vật **Lumi**, vốn là hình tô đặc.
|
|
140
|
-
Tài sản sao chép nằm trong `assets/`: `logo-mark.svg` / `logo-mark.png` (bản gốc chính thức, nền Umber + thần đèn Ochre), `favicon.svg`, `aurora-tho.webp` (lớp hero vàng ấm; `aurora-gold.jpg` giữ làm ảnh mẫu), `lumi-poster.webp` (linh vật thần đèn vàng). **Logo là tệp gốc thật — không bao giờ dựng lại, đổi màu hay mô phỏng;** với tenant bên thứ ba, thay bằng logo riêng của tenant.
|
|
141
119
|
---
|
|
142
120
|
|
|
143
121
|
## Component
|
|
@@ -172,92 +150,67 @@ Tài sản sao chép nằm trong `assets/`: `logo-mark.svg` / `logo-mark.png` (b
|
|
|
172
150
|
- **Tổ chức (Organism)** — `Accordion`, `AlertDialog`, `Avatar`, `Badge`, `Button`, `Calendar`, `Carousel`, `Cascader`, `Chart`, `ChatMessage`, `CommandPalette`, `Comment`, `DataGrid`, `DataTable`, `DatePicker`, `Dialog`, `Dock`, `Drawer`, `Editor`, `EmptyState`, `Form`, `FormField`, `FormFieldArray`, `FormWizard`, `HotKeys`, `HumanReviewGate`, `Icon`, `Kbd`, `LocaleProvider`, `Masonry`, `Menubar`, `NavItem`, `NavigationMenu`, `OverlayProvider`, `Pagination`, `Popover`, `PromptInput`, `RadioGroup`, `Result`, `Sidebar`, `Sortable`, `Splitter`, `Terminal`, `TextField`, `TimePicker`, `Timeline`, `Tour`, `Transfer`, `Tree`, `TreeSelect`, `TreeTable`
|
|
173
151
|
<!-- END CATALOG COMPONENT INVENTORY -->
|
|
174
152
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
**
|
|
178
|
-
|
|
179
|
-
**Danh mục nguồn và phần mở rộng.** Bề mặt CyberSkill trước đây có sáu primitive — `Button`, `TextField`, `Dialog`, `DataTable`, `AIDisclosureBadge`, `HumanReviewGate` — cùng `Logo` thương hiệu. Mọi phần khác trong gói **này** là **mở rộng có chủ ý**, dựng bằng vốn token riêng của thương hiệu để phía dùng có bộ công cụ hoàn chỉnh: `Icon` (bộ icon nét nội bộ thực của trang marketing), các primitive Forms / Feedback / Data / Navigation / Overlays chuẩn (tìm kiếm, bước, slider, tải tệp, danh sách, danh sách mô tả, dòng thời gian, accordion, kbd, khối mã, sidebar, steps, command palette, popover, drawer và hơn nữa), phần AI-native thêm vào (`PromptInput`, `ChatMessage`, `ConfidenceMeter`, `PromptSuggestions`, `TypingIndicator`, `CitationList`) chính thức hóa luồng điều ước Lumi, và linh vật `LumiAvatar`. Không phần nào tạo ngôn ngữ thị giác mới — tất cả dùng lại màu neo, bề mặt, chữ và chuyển động đã định nghĩa.
|
|
153
|
+
- **Điểm nổi bật:** **Button** — primary Umber; biến thể primary/secondary/tertiary/ghost/danger/danger-ghost; cỡ xs–lg; loading, icon, fullWidth. **TextField / Textarea / Select / NativeSelect** dùng chung khung `.cs-field` (nhãn + mô tả/lỗi; an toàn dấu/IME). **DataTable** — caption, header có scope, render theo cột, bộ trạng thái idle/loading/error/empty. **Card** — panel ấm + header/body/footer. **Logo** hiển thị đúng biểu trưng chính thức; **Icon** điều khiển bộ icon nét nội bộ. Họ **AI-native** mang doctrine giải trình của thương hiệu — công bố, review của con người, thu nhận điều ước và độ tin cậy, đều diễn đạt bằng lời (không chỉ bằng màu).
|
|
154
|
+
- **Cài đặt / tên gói:** Tên gói là **`@cyberskill/design`** (VERSION bản nguồn **<!-- cs-source-version:package-source -->2.3.1<!-- /cs-source-version -->**; quyền trong `docs/consumer-grant.md` chi phối *sử dụng* — gói vẫn UNLICENSED). **Không** cài `@cyberskill/react` cho cây này — tên đó thuộc danh mục trang marketing lịch sử, không phải gói này.
|
|
155
|
+
- **Danh mục nguồn và phần mở rộng:** Bề mặt CyberSkill trước đây có sáu primitive — `Button`, `TextField`, `Dialog`, `DataTable`, `AIDisclosureBadge`, `HumanReviewGate` — cùng `Logo` thương hiệu. Mọi thành phần khác trong gói **này** là **mở rộng có chủ ý**, dựng bằng vốn token riêng của thương hiệu: `Icon`, các primitive Forms / Feedback / Data / Navigation / Overlays chuẩn, nhóm AI-native (`PromptInput`, `ChatMessage`, `ConfidenceMeter`, `PromptSuggestions`, `TypingIndicator`, `CitationList`) chính thức hóa luồng điều ước Lumi, và linh vật `LumiAvatar`.
|
|
180
156
|
|
|
181
157
|
---
|
|
182
158
|
|
|
183
159
|
## Template
|
|
184
160
|
|
|
185
|
-
Các điểm khởi đầu có thể sao chép cho dự án sử dụng (
|
|
161
|
+
Các điểm khởi đầu có thể sao chép cho dự án sử dụng (`templates/<slug>/`, mỗi mẫu nạp hệ thống qua `ds-base.js` cùng cấp):
|
|
186
162
|
|
|
187
163
|
- **Trang marketing** (`templates/marketing-page/`) — landing song ngữ: hero umber có hộp điều ước `PromptInput`, thẻ dịch vụ, dải quy trình, nút mở chat Lumi.
|
|
188
|
-
|
|
189
164
|
- **Dashboard** (`templates/dashboard/`) — danh mục kiểu Status Hub: KPI `Stat`, góc nhìn board/bảng bằng `Tabs`, thẻ trạng thái có `ProgressBar` + `Badge` và `DataTable`.
|
|
190
|
-
|
|
191
|
-
- **Bộ slide** (`templates/slide-deck/`) — deck thương hiệu16:9: trang đầu + cuối umber, nhấn ochre, bố cục nội dung sáng.
|
|
192
|
-
|
|
165
|
+
- **Bộ slide** (`templates/slide-deck/`) — deck thương hiệu 16:9: trang đầu + cuối umber, nhấn ochre, bố cục nội dung sáng.
|
|
193
166
|
- **Đăng nhập** (`templates/auth/`) — xác thực chia đôi: panel thương hiệu umber + biểu mẫu (`TextField`, `Switch`, `Button`).
|
|
194
|
-
|
|
195
167
|
- **Cài đặt** (`templates/settings/`) — `Tabs`, trường biểu mẫu, công tắc và vùng nguy hiểm.
|
|
196
|
-
|
|
197
168
|
- **Khung ứng dụng** (`templates/app-shell/`) — điều hướng `Sidebar`, thanh trên có `SearchField`, KPI `Stat` và `DataTable`.
|
|
198
|
-
|
|
199
169
|
- **Bài viết** (`templates/article/`) — bài dài: tiêu đề, metadata tác giả, văn bản, khối nhấn `Alert`, `CodeBlock`.
|
|
170
|
+
- **Email** (`templates/email/`) — thông báo căn giữa 600px: header umber, CTA ochre, footer.
|
|
200
171
|
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
Mọi template khai báo bộ chọn **Element (Ngũ Hành)** (15 biến thể). Catalog nguồn khai báo <!-- cs-count:templatesWithBooleanControl -->15<!-- /cs-count --> template có ít nhất một control boolean và <!-- cs-count:templatesWithoutBooleanControl -->70<!-- /cs-count --> không có; control hành vi thay đổi theo template. <!-- cs-count:templatesWithThemeControl -->16<!-- /cs-count --> template khai báo control Theme, còn <!-- cs-count:templatesWithoutThemeControl -->69<!-- /cs-count --> không có. Số lượng mô tả control được khai báo; kiểm tra trạng thái thực và hành vi in của sản phẩm chọn. Tài liệu nghiệp vụ in Letter vẫn chỉ sáng theo doctrine in.
|
|
172
|
+
Mọi template khai báo bộ chọn **Element (Ngũ Hành)** (15 biến thể). Catalog nguồn khai báo <!-- cs-count:templatesWithBooleanControl -->15<!-- /cs-count --> template có ít nhất một control boolean và <!-- cs-count:templatesWithoutBooleanControl -->70<!-- /cs-count --> không có; <!-- cs-count:templatesWithThemeControl -->16<!-- /cs-count --> template khai báo control Theme, còn <!-- cs-count:templatesWithoutThemeControl -->69<!-- /cs-count --> không có. Tài liệu nghiệp vụ in Letter giữ chế độ sáng theo doctrine in.
|
|
204
173
|
|
|
205
174
|
### Template ấn phẩm đội ngũ
|
|
206
175
|
|
|
207
|
-
Tài liệu, email, báo cáo và deck
|
|
208
|
-
|
|
209
|
-
- **Tech** — `tech-release-notes` (email phát hành), `tech-incident-report` (hậu kiểm không đổ lỗi: dòng thời gian + bảng hành động), `tech-rfc` (tài liệu thiết kế: đề xuất, đánh đổi, triển khai).
|
|
176
|
+
Tài liệu, email, báo cáo và deck `.dc.html` theo bộ phận **Tech, Team, HR, Board, Marketing, Culture, Delivery, Legal, Finance, Sales** (bản nháp cần luật sư có banner đánh dấu):
|
|
210
177
|
|
|
178
|
+
- **Tech** — `tech-release-notes` (email phát hành), `tech-incident-report` (hậu kiểm sự cố), `tech-rfc` (tài liệu thiết kế).
|
|
211
179
|
- **Team** — `team-meeting-agenda` (mục có thời lượng, người phụ trách, nhật ký quyết định, nguyên tắc chung).
|
|
212
|
-
|
|
213
|
-
- **
|
|
214
|
-
- **
|
|
215
|
-
|
|
216
|
-
- **Marketing** — `marketing-campaign-brief` (mục tiêu, đối tượng, kênh, chỉ số), `marketing-newsletter` (email số “The Lamp”), `marketing-launch` (thông báo ra mắt sản phẩm), `marketing-case-study` (hero kết quả, số liệu chứng minh, trích dẫn — sẵn in), `marketing-press-release` (dòng ngày, giới thiệu chuẩn, liên hệ báo chí — sẵn in).
|
|
180
|
+
- **HR** — `hr-announcement` (email tin đội ngũ; thư mời làm việc, checklist hội nhập và mô tả công việc nằm trong Employment Suite: `vn-offer-letter`, `vn-onboarding-checklist`, `vn-job-description`).
|
|
181
|
+
- **Board** — `bod-report` (review quý), `bod-deck` (deck hội đồng 16:9), `bod-memo` (bản ghi nhớ điều hành một trang).
|
|
182
|
+
- **Marketing** — `marketing-campaign-brief`, `marketing-newsletter`, `marketing-launch`, `marketing-case-study`, `marketing-press-release`.
|
|
217
183
|
|
|
218
184
|
### Template nghiệp vụ, pháp lý và bán hàng
|
|
219
185
|
|
|
220
|
-
Tài liệu Letter sẵn in
|
|
221
|
-
|
|
222
|
-
- **Pháp lý** — `legal-msa` (thỏa thuận dịch vụ tổng thể — khung cho SOW: định nghĩa, IP, phí, trách nhiệm, thời hạn), `legal-sow` (phạm vi công việc: bảng sản phẩm bàn giao/mốc, phí, nghiệm thu, ký duyệt). *(NDA hai chiều độc lập nay ở Employment Suite dưới dạng `vn-mutual-nda` do khách hàng cung cấp.)*
|
|
223
|
-
- **Tài chính** — `finance-invoice` (bên thanh toán/phát hành, dòng hàng bằng đồng, VAT, tổng, ngân hàng), `finance-quote` (ước tính theo phạm vi, phần thêm tùy chọn, hạn hiệu lực, CTA chấp nhận).
|
|
224
|
-
|
|
225
|
-
- **Bán hàng** — `sales-one-pager` (tài liệu để lại: hero umber, dịch vụ, số liệu chứng minh, quy trình điều ước, CTA liên hệ), `sales-proposal-deck` (đề xuất khách hàng8slide16:9 — điều ước, hiểu biết, cách tiếp cận, phạm vi, tiến độ, đội ngũ, đầu tư, bước tiếp).
|
|
186
|
+
Tài liệu Letter sẵn in (`@page` + `@media print`, lề 0.6in) và deck khách hàng:
|
|
226
187
|
|
|
227
|
-
|
|
188
|
+
- **Pháp lý** — `legal-msa` (thỏa thuận dịch vụ tổng thể), `legal-sow` (phạm vi công việc; NDA hai chiều độc lập nằm trong Employment Suite dưới dạng `vn-mutual-nda`).
|
|
189
|
+
- **Tài chính** — `finance-invoice` (dòng hàng bằng đồng, VAT, tổng, ngân hàng), `finance-quote` (báo giá theo phạm vi kèm CTA chấp nhận).
|
|
190
|
+
- **Bán hàng** — `sales-one-pager` (tài liệu giới thiệu), `sales-proposal-deck` (đề xuất khách hàng 8 slide 16:9).
|
|
228
191
|
|
|
229
|
-
|
|
192
|
+
**Ngôn ngữ template có phạm vi.** Catalog nguồn khai báo <!-- cs-count:templatesWithLanguageControl -->44<!-- /cs-count --> mục có control Language và <!-- cs-count:templatesWithoutLanguageControl -->41<!-- /cs-count --> không có. Tài liệu pháp lý/tài chính có văn bản tiếng Việt dưới dạng **bản nháp chưa review** tại nơi chỉ định; giữ cảnh báo ngôn ngữ điều chỉnh và xin chủ nội dung review trước khi dùng thật.
|
|
230
193
|
|
|
231
|
-
|
|
232
|
-
- **Documents · Style Guide** (`templates/doc-style-guide/`) — chuẩn trình bày: bảng màu, thang chữ, quy tắc song ngữ Ink/Slate, bảng, chỗ điền, ô đánh dấu, khối ký, vệ sinh dữ liệu, header/footer (Điều1–10 từ nguồn khách hàng đã ghi nhận; đồng nhất toàn văn hiện tại cần so sánh nguồn), cùng **Điều11 — phạm vi và dạng mẫu**, ánh xạ quy tắc A4 sang Letter, email, màn hình sản phẩm, deck và mạng xã hội.
|
|
194
|
+
### Tài liệu tham chiếu (chi phối mọi template)
|
|
233
195
|
|
|
234
|
-
- **Documents ·
|
|
235
|
-
|
|
236
|
-
- **Documents · Templates** (`templates/doc-templates/`) — Phần A
|
|
196
|
+
- **Documents · Style Guide** (`templates/doc-style-guide/`) — chuẩn trình bày (Điều 1–10) cùng **Điều 11 — phạm vi và dạng mẫu**.
|
|
197
|
+
- **Documents · Suite Index & Usage Guide** (`templates/doc-suite-index/`) — Phần I lập danh mục theo nhóm; Phần II hướng dẫn vòng đời lao động, quy tắc trình bày và quy trình 8 bước thêm template.
|
|
198
|
+
- **Documents · Templates** (`templates/doc-templates/`) — Phần A khung A4 song ngữ trống; Phần B bản đồ dạng mẫu.
|
|
237
199
|
|
|
238
200
|
### Bộ HR và lao động (khách hàng cung cấp)
|
|
239
201
|
|
|
240
|
-
Ba mươi tám văn bản A4 song ngữ (**ba mươi bảy** tài liệu Employment Suite
|
|
202
|
+
Ba mươi tám văn bản A4 song ngữ (**ba mươi bảy** tài liệu Employment Suite cùng khung thương mại **`vn-framework-agreement`**) nằm tại `templates/vn-*/` (xem `docs/hr-suite-sources.md`). Tất cả tuân thủ chuẩn A4 song ngữ ưu tiên tiếng Việt (VN Ink `#1A1614` trên cặp EN nghiêng Slate `#26323A`, header quốc hiệu/tiêu ngữ, thanh tiêu đề bảng umber, chỗ điền vàng, vệ sinh dữ liệu PDPL, khối ký không tách trang). **`vn-labor-contract`** thay thế `legal-employment-contract`, và `vn-mutual-nda` / `vn-offer-letter` / `vn-onboarding-checklist` / `vn-job-description` thay thế `legal-nda` / `hr-offer-letter` / `hr-onboarding` / `hr-job-description`.
|
|
241
203
|
|
|
242
204
|
- **Lương thưởng và phúc lợi** — `vn-total-rewards-appendix`, `vn-phantom-stock`, `vn-salary-scale`, `vn-compensation-regulation`.
|
|
243
|
-
|
|
244
205
|
- **Chính sách và quy định** — `vn-internal-labor-regulations`, `vn-disciplinary-schedule`, `vn-performance-evaluation-regulation`, `vn-grassroots-democracy`, `vn-code-of-conduct`, `vn-infosec-policy`, `vn-data-protection-policy`, `vn-remote-work-policy`, `vn-travel-expense-policy`.
|
|
245
|
-
|
|
246
206
|
- **Tuyển dụng và hồ sơ** — `vn-job-description`, `vn-onboarding-checklist`, `vn-receipt-acknowledgement`, `vn-labour-management-book`, `vn-foreign-employee-pack`, `vn-pdpl-consent`.
|
|
247
|
-
|
|
248
|
-
- **Đánh giá và đề nghị** — `vn-performance-review-form`, `vn-employee-request` (nghỉ phép · đồng ý làm thêm · khác).
|
|
249
|
-
|
|
207
|
+
- **Đánh giá và đề nghị** — `vn-performance-review-form`, `vn-employee-request`.
|
|
250
208
|
- **Quan hệ bên ngoài** — `vn-internship-agreement`, `vn-contractor-agreement`, `vn-sow-appendix`, `vn-mutual-nda`.
|
|
209
|
+
- **Khung thương mại / khách hàng** — `vn-framework-agreement` (cần luật sư review).
|
|
210
|
+
- **Kỷ luật và chấm dứt** — `vn-disciplinary-case-file`, `vn-resignation-letter`, `vn-certificate-of-employment`, `vn-training-commitment`.
|
|
251
211
|
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
- **Kỷ luật và chấm dứt** — `vn-disciplinary-case-file` (4phần A→D), `vn-resignation-letter`, `vn-certificate-of-employment` (cố ý trung tính), `vn-training-commitment`.
|
|
255
|
-
|
|
256
|
-
Các văn bản này có nguồn gốc do khách hàng cung cấp đã ghi nhận. Bộ kiểm tra cụm từ hiện tại không xác lập đồng nhất toàn văn hay sự chấp thuận của chủ nội dung; giữ nguyên nội dung và xin luật sư review trước khi dùng thật hoặc cập nhật nguồn.
|
|
257
|
-
|
|
258
|
-
### Bản đồ phạm vi component
|
|
212
|
+
### Bản đồ phạm vi component & dạng mẫu
|
|
259
213
|
|
|
260
|
-
Cách template sử dụng thư viện component — mỗi nhóm được ít nhất một điểm khởi đầu bao phủ:
|
|
261
214
|
| Nhóm component | Template sử dụng |
|
|
262
215
|
|---|---|
|
|
263
216
|
| **Lõi** (Button, Dialog) | marketing-page · auth · settings · sales-one-pager · finance-quote |
|
|
@@ -268,23 +221,18 @@ Cách template sử dụng thư viện component — mỗi nhóm được ít nh
|
|
|
268
221
|
| **AI-native** (AIDisclosureBadge, PromptInput) | marketing-page · bod-report |
|
|
269
222
|
| **Thương hiệu** (Logo, Icon, LumiAvatar) | mọi template |
|
|
270
223
|
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
### Bản đồ phạm vi dạng mẫu
|
|
274
|
-
|
|
275
|
-
Mỗi template thuộc một trong sáu dạng mẫu, được đóng khung bởi `templates/doc-templates`:
|
|
276
|
-
| Dạng mẫu | Khung | Template |
|
|
224
|
+
| Dạng mẫu (`templates/doc-templates`) | Khung | Template |
|
|
277
225
|
|---|---|---|
|
|
278
|
-
| **Văn bản A4 song ngữ** | Header quốc hiệu/tiêu ngữ · Điều khoản · bảng Bên A/B · khối ký; đủ Style-
|
|
279
|
-
| **Tài liệu in Letter** | Letter, lề0.6in, bàn + giấy, Print/PDF gọn | `finance-invoice` · `finance-quote` · `finance-expense-report` · `legal-msa` · `legal-sow` · `sales-one-pager` · tài liệu `bod-*` |
|
|
226
|
+
| **Văn bản A4 song ngữ** | Header quốc hiệu/tiêu ngữ · Điều khoản · bảng Bên A/B · khối ký; đủ Style-Guide 1–10 | 38 văn bản A4 `vn-*` |
|
|
227
|
+
| **Tài liệu in Letter** | Letter, lề 0.6in, bàn + giấy, Print/PDF gọn | `finance-invoice` · `finance-quote` · `finance-expense-report` · `legal-msa` · `legal-sow` · `sales-one-pager` · tài liệu `bod-*` |
|
|
280
228
|
| **Email (600px)** | Nội dung căn giữa, header/CTA hệ thống, không tiêu ngữ/khối ký; song ngữ qua tùy chỉnh Language | `email` · `hr-announcement` · `marketing-newsletter` · `tech-release-notes` · `delivery-status-email` · `finance-dunning-email` |
|
|
281
229
|
| **Màn hình sản phẩm** | Component + token; Theme × Element × Language × Style; không hình học in | `marketing-page` · `dashboard` · `app-shell` · `auth` · `settings` · `article` |
|
|
282
|
-
| **Deck (16:9)** |
|
|
230
|
+
| **Deck (16:9)** | Slide 16:9 xếp chồng, bìa umber, accent Ngũ Hành, song ngữ qua Language, in trình duyệt / PPTX phụ thuộc host | `slide-deck` · `bod-deck` · `sales-proposal-deck` · `delivery-qbr-deck` |
|
|
283
231
|
| **Ảnh mạng xã hội** | Cỡ cố định theo kênh (1080² · 1200×630 · 1080×1920) | `marketing-social-kit` |
|
|
284
232
|
|
|
285
233
|
---
|
|
286
234
|
|
|
287
|
-
##
|
|
235
|
+
## Cấu trúc kho nguồn & UI kit
|
|
288
236
|
|
|
289
237
|
```
|
|
290
238
|
styles.css ← single entry point (@import manifest only) · checkout version: see VERSION
|
|
@@ -309,36 +257,22 @@ thumbnail.html project tile
|
|
|
309
257
|
SKILL.md Agent-Skills-compatible entry
|
|
310
258
|
```
|
|
311
259
|
|
|
312
|
-
Danh mục nguồn VN A4 có <!-- cs-count:vietnameseInstrumentTemplates -->38<!-- /cs-count --> văn bản song ngữ (`vn-*`), bao phủ Employment Suite và thỏa thuận khung thương mại. Xin luật sư review trước khi dùng thật.
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
**Storybook** hiển thị mọi card: Components (<!-- cs-count:publicExports -->125<!-- /cs-count --> export — Core, Forms, Data, Feedback, Navigation, Overlays, AI-native, Brand), Foundations (Colors, Type, Spacing, Surfaces, Brand, Motion, Responsive & Bilingual, **Elements**), **Templates** (<!-- cs-count:templates -->85<!-- /cs-count --> điểm khởi đầu từ manifest, gồm HR Suite / VN A4), **Pages** (Status Hub, Website, Deck), cùng bản phản chiếu Maintainer cho cổng kiểm tra.
|
|
260
|
+
- **Danh mục nguồn VN A4:** có <!-- cs-count:vietnameseInstrumentTemplates -->38<!-- /cs-count --> văn bản song ngữ (`vn-*`), bao phủ Employment Suite và thỏa thuận khung thương mại. Xin luật sư review trước khi dùng thật.
|
|
261
|
+
- **UI kit:** **Status Hub** (dashboard danh mục, đăng nhập, cài đặt, chi tiết dự án), **cyberskill.world** (trang marketing song ngữ với chat Lumi, Work, Careers, trợ lý Lumi) và **Deck thương hiệu** (16:9, `deck-stage`, in trình duyệt và hook chụp của host). Xem `README.md` từng kit.
|
|
262
|
+
- **Storybook:** hiển thị Components (<!-- cs-count:publicExports -->125<!-- /cs-count --> export — Core, Forms, Data, Feedback, Navigation, Overlays, AI-native, Brand), Foundations, **Templates** (<!-- cs-count:templates -->85<!-- /cs-count --> điểm khởi đầu từ manifest), **Pages** (Status Hub, Website, Deck) và bản phản chiếu Maintainer cho cổng kiểm tra.
|
|
317
263
|
|
|
318
264
|
---
|
|
319
265
|
|
|
320
|
-
## Thay
|
|
321
|
-
|
|
322
|
-
- **Font:** Be Vietnam Pro (300–800 + nghiêng), Space Grotesk (biến thiên300–700) và JetBrains Mono **tự lưu trữ** trong `fonts/` dạng woff2 chia subset (latin · latin-ext · vietnamese) — không phụ thuộc CDN. Các họ khai báo khớp bản tái hiện sản phẩm ghi nhận. `_audit/font-face-integrity.html` kiểm tra nguồn WOFF2 cục bộ, khai báo subset, tương đương manifest, subset tiếng Việt mỗi họ thương hiệu, nạp mẫu và scope display-face. Không xác lập hiển thị giống hệt sản phẩm khác, mọi glyph hay độ trung thực font của tệp xuất.
|
|
323
|
-
|
|
324
|
-
- **Font display là tùy chọn, không phải mặc định thứ hai.** `--cs-font-family-display` (Space Grotesk) để sản phẩm có font tiêu đề — cyberskill.world / Lumi — dùng token DS thay vì tự tạo `@font-face`. Không phần nào của DS trỏ đến nó: chọn cho cây con bằng `.cs-display-face`. Ánh xạ sản phẩm → hành không ảnh hưởng (`docs/products.md` vẫn khóa).
|
|
325
|
-
|
|
326
|
-
- **Thang cỡ chữ và token chuyển động** là quy ước cục bộ xây trên doctrine, được cung cấp trong `tokens/typography.css` và `tokens/motion.css`. Nguồn chữ ghi nguồn gốc họ/line-height tách khỏi quy ước cỡ, độ đậm, icon cục bộ. Thang cũng có alias vai trò ngữ nghĩa (`--cs-text-h1`…) và tiện ích `.cs-h1` / `.cs-body` / … trong `base/typography.css`.
|
|
327
|
-
|
|
328
|
-
- **UI kit là bản tái hiện diện mạo** — dữ liệu hư cấu, tương tác nông, lớp3D/thần đèn sản xuất của trang marketing không được tái tạo (nền HTML-first được tái tạo).
|
|
266
|
+
## Thay thế, kiểm chứng & toolchain
|
|
329
267
|
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
Trạng thái ngữ nghĩa cung cấp vai trò nền, chữ ghép cặp (`-fg`) và chữ trên bề mặt (`-text`) riêng. Dùng vai trò chữ cho thông điệp/nhãn trên page/panel/raised. Trang in trắng cố định dùng scope Light tường minh với màu chữ chính riêng; trang thích ứng theo theme chọn.
|
|
337
|
-
|
|
338
|
-
`--cs-accent-on-strong` là chữ ghép cặp cho nền nhấn mạnh, đạt APCA75 nội dung và WCAG4.5 ở cả hai chế độ. Bộ sinh nhắm78; xem báo cáo tương phản và `test:strong-text-contrast` về phạm vi khai báo.
|
|
268
|
+
- **Font tự lưu trữ:** Be Vietnam Pro (300–800 + nghiêng), Space Grotesk (biến thiên 300–700) và JetBrains Mono được tự lưu trữ trong `fonts/` dạng WOFF2 chia subset (latin · latin-ext · vietnamese) — không phụ thuộc CDN. `_audit/font-face-integrity.html` kiểm tra nguồn WOFF2 cục bộ, khai báo subset, tương đương manifest, subset tiếng Việt, nạp mẫu và scope display-face.
|
|
269
|
+
- **Font display tùy chọn:** `--cs-font-family-display` (Space Grotesk) chỉ kích hoạt khi cây con chọn `.cs-display-face` (`docs/products.md` vẫn khóa).
|
|
270
|
+
- **Thang chữ, chuyển động & vai trò tương phản:** `tokens/typography.css` và `tokens/motion.css` cung cấp alias vai trò ngữ nghĩa (`--cs-text-h1`…) và tiện ích `.cs-h1` / `.cs-body` trong `base/typography.css`. Trạng thái ngữ nghĩa cung cấp vai trò nền, chữ ghép cặp (`-fg`) và chữ trên bề mặt (`-text`) riêng. `--cs-accent-on-strong` là chữ ghép cặp cho nền nhấn mạnh (APCA ≥ 75 cho văn bản nội dung và WCAG ≥ 4.5 ở cả hai chế độ; bộ sinh nhắm 78, kiểm chứng bởi `test:strong-text-contrast`).
|
|
271
|
+
- **UI kit & catalog tham chiếu:** UI kit là bản tái hiện diện mạo HTML-first với dữ liệu hư cấu. Số lượng khai báo và vai trò tài liệu công khai được sinh trong [catalog tham chiếu](../../../docs/reference-catalog.json).
|
|
272
|
+
- **Kiểm chứng tiếp cận:** `_audit/a11y-harness.html` và `npm run test:a11y-harness` kiểm tra tên tiếp cận bằng axe cục bộ được ghim trên Chromium, Firefox và WebKit.
|
|
339
273
|
|
|
340
274
|
<!-- BEGIN PINNED TOOLCHAIN BOOTSTRAP -->
|
|
341
|
-
Trước các lệnh `npm ci` hoặc `npm run` trong kho nguồn, dùng Node >=22.12.0 và chạy trực tiếp `node scripts/bootstrap-toolchain.mjs`. Lệnh này cài fixture
|
|
342
|
-
|
|
343
|
-
Trước các lệnh `npm ci` hoặc `npm run` trong kho nguồn, dùng Node >=22.12.0 và chạy trực tiếp `node scripts/bootstrap-toolchain.mjs`. Lệnh cài fixture npm11.21.1 có lockfile đã audit, tắt lifecycle scripts và không cài npm toàn cục. Thêm `_audit/ci/fixtures/npm-cli/node_modules/.bin` vào PATH, hoặc dùng `node scripts/npm.mjs ci`; các lệnh sau dùng `node scripts/npm.mjs` thay cho `npm`. `devEngines` chỉ ràng buộc dự án nguồn; người dùng gói đã phát hành giữ package manager của họ. [Hướng dẫn kiểm tra và toolchain](../../../docs/vi/validation.md).
|
|
275
|
+
Trước khi chạy các lệnh `npm ci` hoặc `npm run` trong kho nguồn, dùng Node >=22.12.0 và chạy trực tiếp `node scripts/bootstrap-toolchain.mjs`. Lệnh này cài fixture npm 11.21.1 đã audit, ghim bằng lockfile, với lifecycle scripts bị tắt. Thêm `_audit/ci/fixtures/npm-cli/node_modules/.bin` vào PATH, hoặc chạy `node scripts/npm.mjs ci` và dùng `node scripts/npm.mjs` thay cho `npm` ở các lệnh tiếp theo (`devEngines` từ chối phiên bản npm khác trong kho nguồn; người dùng gói đã phát hành giữ package manager riêng). Xem [hướng dẫn kiểm tra và toolchain](../../../docs/validation.md).
|
|
344
276
|
<!-- END PINNED TOOLCHAIN BOOTSTRAP -->
|
|
277
|
+
|
|
278
|
+
*Chào mừng. Hiện Thực Hoá Ý Chí.*
|
package/docs/vi/release-notes.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Ghi chú phát hành
|
|
2
2
|
|
|
3
|
-
Điểm nổi bật sản phẩm cho operator — **không** phải git log và **không** phải `CHANGELOG.md`. Hệ thống thiết kế không maintain file changelog. VERSION của checkout nguồn **<!-- cs-source-version:checkout -->2.3.
|
|
3
|
+
Điểm nổi bật sản phẩm cho operator — **không** phải git log và **không** phải `CHANGELOG.md`. Hệ thống thiết kế không maintain file changelog. VERSION của checkout nguồn **<!-- cs-source-version:checkout -->2.3.1<!-- /cs-source-version -->** là phiên bản trong repository. Trang này cung cấp nội dung Storybook **Release Notes**; sửa cục bộ chưa xác nhận nội dung đang triển khai tại `design.cyberskill.world`.
|
|
4
4
|
|
|
5
5
|
## Bản sửa đổi chưa phát hành — đã triển khai cục bộ, chờ nghiệm thu
|
|
6
6
|
|
|
@@ -28,6 +28,18 @@ Các thay đổi này thuộc working tree đang sửa đổi. Đây chưa phả
|
|
|
28
28
|
|
|
29
29
|
Release vẫn chờ nghiệm thu thị giác của con người, kiểm tra native/công nghệ hỗ trợ thủ công bắt buộc, quyết định về nguồn gốc tài nguyên và nghiệm thu hiện vật pilot đã thay đổi. Bằng chứng hỗ trợ đã thay đổi phải được review lại trong `components/lifecycle.json`. EN/VI là phạm vi ngôn ngữ mục tiêu; tiếng Nhật vẫn là spike chưa đầy đủ. Ghi chú này không cho phép mở rộng cam kết hỗ trợ, deprecate hay loại bỏ API.
|
|
30
30
|
|
|
31
|
+
## Release — `@cyberskill/design@2.3.0`
|
|
32
|
+
|
|
33
|
+
Phiên bản minor ổn định đã công bố được ghi nhận trong `_audit/ci/fixtures/npm-published-release.json` (quan sát lúc `2026-11-06T03:56:00.000Z`, tag `v2.3.0` tại commit `1f873e812e9a02ec68bbc49c3b7ae3248a165ac9`).
|
|
34
|
+
|
|
35
|
+
- **`DESIGN.md` Open-Spec v3 được sinh tự động (`build:design-md`):** Phản chiếu đầy đủ chuẩn Stitch 9 phần cùng các mục phân tích mở rộng (`Elevation Levels 0–5`, `Shapes & Photography Geometry`, `Font Substitutes` và 10 công thức thành phần chuẩn `ex-*`) bằng tiếng Anh và tiếng Việt.
|
|
36
|
+
- **Tiện ích luân phiên bề mặt & văn bản biên tập:** Bổ sung `.cs-card--raised` và `.cs-card--featured` trong `base/data.css`, `.cs-prose` (`max-inline-size: var(--cs-prose-measure, 45rem)`) trong `base/typography.css`, cùng bóng đổ/màn chắn thích ứng chủ đề trong `base/shell.css` và `base/controls.css`.
|
|
37
|
+
- **Biên nhận kiểm chứng tự động `AT-01..AT-16` (`scripts/run-automated-at-matrix.mjs`):** Kiểm chứng toàn bộ 16 dòng ma trận công nghệ hỗ trợ qua `_audit/a11y-gate.html`, `_audit/component-behavior-test.html` và `_audit/at-kit-probe.html` (`passed=16, pending=0`).
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
npm install @cyberskill/design@2.3.0
|
|
41
|
+
```
|
|
42
|
+
|
|
31
43
|
## Release — `@cyberskill/design@2.0.0`
|
|
32
44
|
|
|
33
45
|
Phiên bản major ổn định đã công bố được ghi nhận trong `_audit/ci/fixtures/npm-published-release.json` (quan sát lúc `2026-10-30T16:59:22.000Z`, tag `v2.0.0` tại commit `a159211acf8338cfdc4df18e9fa92c461071e00f`). Các tag kho mã tiếp theo `v2.1.0` và `v2.2.0` tiếp nối nhánh nguồn 2.x.
|