@cyberskill/design 2.8.0 → 2.9.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.
- package/DESIGN.md +7 -7
- package/README.md +14 -8
- package/SECURITY.md +4 -4
- package/SKILL.md +1 -1
- package/VERSION +1 -1
- package/_ds_bundle.js +2 -2
- package/_ds_bundle.js.map +1 -1
- package/_ds_manifest.json +210 -200
- package/_esm/cs.mjs +2 -2
- package/base/a11y.css +18 -2
- package/base/ai.css +2 -2
- package/base/collections.css +6 -3
- package/base/components.css +107 -20
- package/base/controls.css +55 -27
- package/base/data.css +17 -5
- package/base/feedback.css +8 -0
- package/base/forms.css +7 -4
- package/base/glass.css +95 -0
- package/base/navigation.css +9 -1
- package/base/responsive.css +9 -4
- package/components/contracts.json +202 -62
- package/components/css-index.json +145 -41
- package/components/data/data.card.html +1 -1
- package/components/prompt-api.json +2 -2
- package/components/release-compatibility.json +1 -1
- package/components/specifications.json +204 -64
- package/components/static-html-reference.json +20 -20
- package/dist/esm/build.json +1 -1
- package/dist/styles.css +385 -86
- package/dist/styles.min.css +1 -1
- package/docs/benchmark-rubric.md +1 -1
- package/docs/consuming.md +1 -1
- package/docs/contrast-report.md +8 -8
- package/docs/conventions.md +5 -5
- package/docs/decisions.md +2 -2
- package/docs/deploy.md +1 -1
- package/docs/design-styles.md +9 -8
- package/docs/doctrine.md +1 -1
- package/docs/four-axes.md +3 -3
- package/docs/quality-gates.md +3 -1
- package/docs/reference-catalog.json +52 -52
- package/docs/release-notes.md +18 -2
- package/docs/static-html-reference.md +18 -18
- package/docs/storybook.md +1 -1
- package/docs/template-inventory.json +35 -35
- package/docs/vi/benchmark-rubric.md +1 -1
- package/docs/vi/consuming.md +1 -1
- package/docs/vi/contrast-report.md +8 -8
- package/docs/vi/conventions.md +5 -5
- package/docs/vi/decisions.md +2 -2
- package/docs/vi/deploy.md +1 -1
- package/docs/vi/design-styles.md +9 -8
- package/docs/vi/doctrine.md +1 -1
- package/docs/vi/entrypoints/CONTRIBUTING.md +9 -2
- package/docs/vi/entrypoints/DESIGN.md +7 -7
- package/docs/vi/entrypoints/README.md +14 -8
- package/docs/vi/entrypoints/SKILL.md +1 -1
- package/docs/vi/entrypoints/llms.txt +1 -1
- package/docs/vi/four-axes.md +3 -3
- package/docs/vi/quality-gates.md +3 -1
- package/docs/vi/release-notes.md +18 -2
- package/docs/vi/static-html-reference.md +18 -18
- package/docs/vi/storybook.md +1 -1
- package/guidance/agent-contract.json +3 -3
- package/guidelines/atomic-view.html +7 -7
- package/guidelines/brand-imagery.html +1 -1
- package/guidelines/colors-surfaces.html +4 -4
- package/guidelines/colors-text.html +4 -4
- package/guidelines/elements-components.html +3 -3
- package/guidelines/elements-concept.html +1 -1
- package/guidelines/guideline-language.js +1 -1
- package/guidelines/motion.html +4 -4
- package/guidelines/responsive-bilingual.html +4 -4
- package/llms.txt +1 -1
- package/package.json +1 -1
- package/styles/components/manifest.json +179 -139
- package/styles.layered.css +245 -59
- package/styles.layered.provenance.json +16 -16
- package/templates/_vendor/doc-export.js +8 -1
- package/templates/ai-cluster-demo.html +2 -2
- package/templates/app-shell/AppShell.dc.html +2 -2
- package/templates/bod-deck/BodDeck.dc.html +3 -3
- package/templates/bod-investor-update/BodInvestorUpdate.dc.html +1 -1
- package/templates/dashboard/Dashboard.dc.html +2 -2
- package/templates/delivery-qbr-deck/DeliveryQbrDeck.dc.html +2 -2
- package/templates/delivery-status-email/DeliveryStatusEmail.dc.html +1 -1
- package/templates/email/Email-VN-standalone.html +2 -2
- package/templates/email-safe/email-announcement.html +5 -5
- package/templates/email-safe/email-dunning.html +5 -5
- package/templates/email-safe/email-investor.html +5 -5
- package/templates/email-safe/email-launch.html +5 -5
- package/templates/email-safe/email-newsletter.html +6 -6
- package/templates/email-safe/email-status.html +5 -5
- package/templates/email-safe/email-transactional.html +5 -5
- package/templates/kitchen-sink.html +10 -6
- package/templates/marketing-newsletter/MarketingNewsletter.dc.html +4 -4
- package/templates/marketing-page/MarketingPage.dc.html +4 -2
- package/templates/playground.html +5 -4
- package/templates/sales-proposal-deck/SalesProposalDeck.dc.html +5 -5
- package/tokens/colors.css +1 -1
- package/tokens/declarations.json +1851 -1355
- package/tokens/element-seeds.json +1 -1
- package/tokens/elements.css +40 -10
- package/tokens/elevation.css +2 -2
- 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 +275 -275
- 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 +129 -125
- package/tokens/native/CSModes.swift +129 -125
- package/tokens/native/CSTokens.kt +8 -8
- package/tokens/native/CSTokens.swift +8 -8
- package/tokens/native/cs_modes.dart +129 -125
- package/tokens/native/cs_tokens.dart +8 -8
- package/tokens/native/mode-provenance.json +11 -11
- package/tokens/provenance.json +6 -6
- package/tokens/styles.css +8 -4
- package/tokens/tokens.dtcg.json +26 -26
- package/tokens/tokens.js +12 -12
- package/tokens/tokens.json +11 -11
- package/tokens/variables.css +48 -15
- package/tokens/viewer.html +1 -0
- package/ui_kits/status-hub/login.html +3 -3
- package/ui_kits/status-hub/project.html +4 -6
- package/ui_kits/status-hub/settings.html +2 -3
- package/ui_kits/status-hub/status.css +24 -15
- package/ui_kits/website/careers.html +10 -17
- package/ui_kits/website/chat.html +14 -3
- package/ui_kits/website/site.css +21 -21
- package/ui_kits/website/work.html +4 -10
|
@@ -4,20 +4,20 @@
|
|
|
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** (
|
|
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** (VI · EN) × **Style** (`data-cs-style` — **liquid-glass** mặc định, không khai báo ≡ mặc định · **matte-paper** bề mặt giấy mờ đặc sắc nét). Phía sử dụng chỉ cần liên kết một tệp: **`styles.css`** (`dist/styles.css` là cùng closure được làm phẳng thành một tệp cho các môi trường không theo chuỗi `@import` như bộ hiển thị thẻ và một số sandbox; sinh lại bằng `npm run build:css` sau khi sửa `tokens/` hoặc `base/`).
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
## Bắt đầu tại đây
|
|
12
12
|
|
|
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.
|
|
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.9.0<!-- /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ề `/`).
|
|
14
14
|
|
|
15
15
|
### Bắt đầu nhanh theo đối tượng
|
|
16
16
|
|
|
17
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.
|
|
18
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`).
|
|
19
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.
|
|
20
|
-
- **Người triển khai** — gói npm ổn định đã công bố **`@cyberskill/design@2.
|
|
20
|
+
- **Người triển khai** — gói npm ổn định đã công bố **`@cyberskill/design@2.8.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.9.0<!-- /cs-source-version -->**; không có CHANGELOG).
|
|
21
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`.
|
|
22
22
|
|
|
23
23
|
### Bản đồ tài liệu — phía sử dụng
|
|
@@ -31,11 +31,11 @@ Hệ thống thiết kế ấm áp, chuẩn doanh nghiệp, **ưu tiên tiếng
|
|
|
31
31
|
| `docs/consumer-grant.md` | Văn bản cấp quyền sử dụng gói npm (danh mục CyberSkill; UNLICENSED + sản phẩm được nêu tên) |
|
|
32
32
|
| `docs/conventions.md` | Cách mở rộng hệ thống (ngữ pháp đặt tên, danh sách kiểm tra, bốn trục) |
|
|
33
33
|
| `docs/release-notes.md` | Điểm nổi bật sản phẩm được biên tập (không phải changelog) |
|
|
34
|
-
| `docs/design-styles.md` | Các trục kiểu trực tiếp (Theme × Element × Language × Style) và
|
|
34
|
+
| `docs/design-styles.md` | Các trục kiểu trực tiếp (Theme × Element × Language × Style) và hai gói vật liệu bề mặt (liquid-glass · matte-paper) |
|
|
35
35
|
| `docs/products.md` | Registry sản phẩm → hành (**đã khóa** — không tự đặt phân bổ) |
|
|
36
36
|
| `docs/contrast-report.md` | Quét APCA Ngũ Hành được sinh — 0 lỗi tại ngưỡng nhãn UI Lc ≥ 60. Người soạn nội dung theo ngưỡng chặt hơn Lc ≥ 75 (xem Bất biến nền tảng); dòng Lc ≥ 60 của phép quét là cặp accent/nhãn, không phải văn bản nội dung. |
|
|
37
37
|
| `docs/template-schema-v2.md` | Đặc tả slot nội dung có kiểu cho template — tùy chọn áp dụng, máy có thể kiểm tra |
|
|
38
|
-
| `docs/deploy.md` | Triển khai trang trực tiếp —
|
|
38
|
+
| `docs/deploy.md` | Triển khai trang trực tiếp — GitHub Pages (`.github/workflows/pages.yml`) · Vercel · VPS/nginx tổng quát · kiểm tra sau triển khai |
|
|
39
39
|
| `docs/live-hub.md` | Storybook tại `/` là bề mặt sản phẩm; bản đồ bề mặt |
|
|
40
40
|
| `docs/storybook.md` | Host bề mặt sản phẩm Storybook tại `/` — thanh bên Docs là bề mặt đọc công bố |
|
|
41
41
|
| `docs/figma.md` | Cách import Figma / Tokens Studio cho phía sử dụng và bảo trì |
|
|
@@ -71,7 +71,7 @@ Hệ thống thiết kế ấm áp, chuẩn doanh nghiệp, **ưu tiên tiếng
|
|
|
71
71
|
| Ngôn ngữ | Ưu tiên tiếng Việt; mỗi chuỗi giao diện có cặp EN + VN |
|
|
72
72
|
| Ngưỡng tiếp cận tối thiểu | APCA Lc ≥ 75 cho văn bản nội dung; không bao giờ bỏ vòng tiêu điểm; vùng chạm ≥ 44px |
|
|
73
73
|
| Các trục | Theme × Element × Language × Style (độc lập) |
|
|
74
|
-
| Gói phong cách | liquid-glass (
|
|
74
|
+
| Gói phong cách | liquid-glass (mặc định; không khai báo ≡ mặc định) · matte-paper |
|
|
75
75
|
<!-- END DOCTRINE IMMUTABLES -->
|
|
76
76
|
|
|
77
77
|
---
|
|
@@ -96,7 +96,7 @@ Hệ thống thiết kế ấm áp, chuẩn doanh nghiệp, **ưu tiên tiếng
|
|
|
96
96
|
|
|
97
97
|
## Nền tảng thị giác
|
|
98
98
|
|
|
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ờ `#
|
|
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ờ `#5E4436`. 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
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
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
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.
|
|
@@ -151,7 +151,7 @@ CyberSkill **không kèm thư viện icon bên ngoài**. Hệ thống dùng **b
|
|
|
151
151
|
<!-- END CATALOG COMPONENT INVENTORY -->
|
|
152
152
|
|
|
153
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.
|
|
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.9.0<!-- /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
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`.
|
|
156
156
|
|
|
157
157
|
---
|
|
@@ -272,6 +272,12 @@ SKILL.md Agent-Skills-compatible entry
|
|
|
272
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.
|
|
273
273
|
- **Cổng benchmark trình duyệt trực tiếp & chống thoái lui:** `npm run test:audit-regression` (`_audit/ci/verify-audit-benchmarks-browser.mjs`) chấm **129/129** phép kiểm tra trên 20 chiều (`D1`–`D20`) đạt **10.0 / 10**, **64/64** phép kiểm tra cơ sở cốt lõi đạt **10.0 / 10**, **192/192** ô (`≥ 3.0:1`) trong ma trận tương phản phi văn bản 32×6, và **3/3** màn hình phức hợp Generation-2 với **0 watch**. Mực nền nhuộm phạm vi mặc định tối đạt **8.42:1–10.54:1** (`.cs-result__icon` đạt **8.42:1**, `.cs-item.is-selected` đạt **10.54:1** — cả hai đều vượt chuẩn WCAG AAA `7:1`).
|
|
274
274
|
|
|
275
|
+
### Thiết lập, mở rộng & quy trình benchmark
|
|
276
|
+
|
|
277
|
+
- **Thiết lập & máy chủ cục bộ:** Chạy `node scripts/bootstrap-toolchain.mjs && node scripts/npm.mjs ci` một lần trên Node >=22.12.0. Khởi chạy Storybook bằng `node scripts/npm.mjs run storybook` (`http://127.0.0.1:6006`) hoặc phục vụ bảng audit tĩnh bằng `node scripts/npm.mjs run verify:serve` (`http://127.0.0.1:8765/_audit/run.html`). Các bản đẩy lên nhánh `main` được triển khai tự động qua `.github/workflows/pages.yml` tới `https://design.cyberskill.world/`.
|
|
278
|
+
- **Mở rộng token, component, template & open-spec:** Chỉnh sửa `tokens/*.css`, `tokens/base-inventory.json` và `base/*.css`, sau đó chạy `node scripts/npm.mjs run tokens:generate && node scripts/npm.mjs run build:css`. Thêm hoặc cập nhật primitive React trong `components/<group>/<Name>.{jsx,d.ts,prompt.md}`, `stories/<Name>/<Name>.stories.jsx` và `components/lifecycle.json`, rồi chạy `node scripts/npm.mjs run build`. Đăng ký template trong `templates/<slug>/` và `_ds_manifest.json` (`node scripts/generate-template-inventory.mjs`), đồng thời dựng lại open-spec cho Stitch/LLM bằng `node scripts/npm.mjs run build:design-md`.
|
|
279
|
+
- **Audit, review & benchmark trong tương lai:** Chạy `node scripts/npm.mjs run test:audit-regression` để thực thi bộ benchmark Chromium trực tiếp 20 chiều (`D1`–`D20`) định nghĩa trong `_audit/ci/lib/benchmark-checks.mjs` trên `_audit/ci/fixtures/benchmark-20d.html`, `_audit/ci/fixtures/benchmark-baseline.html` và `_audit/ci/fixtures/benchmark-gen2.html`. Khi chạy benchmark thiết kế AI bên ngoài (Google Stitch hoặc Claude Design), hãy mã hóa mọi quy tắc thị giác/công thái học mới phát hiện vào `_audit/ci/lib/benchmark-checks.mjs`, kiểm chứng bằng `node scripts/npm.mjs run build:check`, và dọn sạch các tệp HTML/ảnh chụp benchmark tạm thời sau khi assertion chống thoái lui đã được khóa vào CI.
|
|
280
|
+
|
|
275
281
|
<!-- BEGIN PINNED TOOLCHAIN BOOTSTRAP -->
|
|
276
282
|
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).
|
|
277
283
|
<!-- END PINNED TOOLCHAIN BOOTSTRAP -->
|
|
@@ -81,7 +81,7 @@ Các bất biến của doctrine (suy ra từ nguồn):
|
|
|
81
81
|
| Ngôn ngữ | Ưu tiên tiếng Việt; mỗi chuỗi giao diện có cặp EN + VN |
|
|
82
82
|
| Ngưỡng tiếp cận tối thiểu | APCA Lc ≥ 75 cho văn bản nội dung; không bao giờ bỏ vòng tiêu điểm; vùng chạm ≥ 44px |
|
|
83
83
|
| Các trục | Theme × Element × Language × Style (độc lập) |
|
|
84
|
-
| Gói phong cách | liquid-glass (
|
|
84
|
+
| Gói phong cách | liquid-glass (mặc định; không khai báo ≡ mặc định) · matte-paper |
|
|
85
85
|
|
|
86
86
|
- **static-html** — `styles.css`; [hướng dẫn](../../../DESIGN.md). Dùng lớp .cs-*; .dc.html còn cần trình thông dịch được cung cấp hoặc runtime hiểu ngữ pháp đã được kiểm chứng.
|
|
87
87
|
- **react** — `@cyberskill/design`; [hướng dẫn](../../../docs/consuming.md). ESM đã biên dịch với peer React; @cyberskill/design/source tường minh là JSX thô. Không cam kết CommonJS.
|
|
@@ -62,7 +62,7 @@ Các bất biến của doctrine (suy ra từ nguồn):
|
|
|
62
62
|
| Ngôn ngữ | Ưu tiên tiếng Việt; mỗi chuỗi giao diện có cặp EN + VN |
|
|
63
63
|
| Ngưỡng tiếp cận tối thiểu | APCA Lc ≥ 75 cho văn bản nội dung; không bao giờ bỏ vòng tiêu điểm; vùng chạm ≥ 44px |
|
|
64
64
|
| Các trục | Theme × Element × Language × Style (độc lập) |
|
|
65
|
-
| Gói phong cách | liquid-glass (
|
|
65
|
+
| Gói phong cách | liquid-glass (mặc định; không khai báo ≡ mặc định) · matte-paper |
|
|
66
66
|
|
|
67
67
|
- **static-html** — `styles.css`; [hướng dẫn](../../../DESIGN.md). Dùng lớp .cs-*; .dc.html còn cần trình thông dịch được cung cấp hoặc runtime hiểu ngữ pháp đã được kiểm chứng.
|
|
68
68
|
- **react** — `@cyberskill/design`; [hướng dẫn](../../../docs/consuming.md). ESM đã biên dịch với peer React; @cyberskill/design/source tường minh là JSX thô. Không cam kết CommonJS.
|
package/docs/vi/four-axes.md
CHANGED
|
@@ -4,8 +4,8 @@ Hệ thống thiết kế cung cấp bốn trục **độc lập** — cùng cá
|
|
|
4
4
|
|
|
5
5
|
1. **Theme** — `data-theme` — light (mặc định) · dark · **system** (`prefers-color-scheme` của hệ điều hành)
|
|
6
6
|
2. **Element** — `data-cs-element` (+ `data-cs-variant` tùy chọn) — nhận diện sản phẩm Ngũ Hành: Kim · Mộc · Thủy · Hỏa · Thổ, các bộ khai báo trong [danh mục hiện hành](../reference-catalog.json) nằm trên thanh Element (cùng tập hợp với **Foundations/Elements**, Atomic View và các ánh xạ EL của mẫu)
|
|
7
|
-
3. **Language** — `lang` — `
|
|
8
|
-
4. **Style** — `data-cs-style` —
|
|
7
|
+
3. **Language** — `lang` — `vi` (mặc định) · `en` (xem **I18n**)
|
|
8
|
+
4. **Style** — `data-cs-style` — `liquid-glass` (mặc định; không khai báo ≡ liquid-glass) · `matte-paper` (bề mặt giấy mờ đặc sắc nét)
|
|
9
9
|
|
|
10
10
|
Đặt các trục trên phần tử chứa cho những thành phần sử dụng phạm vi này. Mức hỗ trợ của từng mẫu được khai báo trong `docs/reference-catalog.json` (số lượng công bố); tài liệu in tĩnh, UI kit và tài liệu có ngôn ngữ cố định có ranh giới được ghi rõ. Đổi ngôn ngữ cũng cần nội dung đã dịch và trình dựng chọn nội dung đó:
|
|
11
11
|
|
|
@@ -33,4 +33,4 @@ Mặc định của Storybook: `light · tho · vi · liquid-glass`.
|
|
|
33
33
|
- Không đổi màu trạng thái ngữ nghĩa hoặc quầng focus Ochre theo nguyên tố
|
|
34
34
|
- Không trộn hai màu nhấn nguyên tố làm chính + phụ (chỉ dùng lớp chuyển màu theo Tương sinh)
|
|
35
35
|
- Không viết giao diện thành phần cố định một ngôn ngữ
|
|
36
|
-
- Không tạo bộ Style
|
|
36
|
+
- Không tạo bộ Style chưa qua rà soát khi chưa theo checklist Expansion Rule
|
package/docs/vi/quality-gates.md
CHANGED
|
@@ -49,7 +49,7 @@ Nguyên tắc benchmark (WCAG · APCA · OKLCH · DTCG · doctrine CDS + mở r
|
|
|
49
49
|
| Template language parity | `_audit/template-lang-parity.html` | Quét source tĩnh cả 85 `.dc.html`: en/vi hole-map key set giống và không rỗng (21 map template); nhánh `sc-if` `isEN`/`isVN` cặp (24 branch template); mọi template có language-tweak có cơ chế bilingual; lexicon EN-leak (Unsubscribe · View in browser · Preferences · All rights reserved · Manage subscription · Sent with) không bao giờ xuất hiện ngoài guard `isEN` / map `en`. Instrument VN-first stacked (38 `vn-*` + 3 `doc-*`) miễn leak theo thiết kế — cả hai ngôn ngữ luôn render | 0 key drift, 0 nhánh không cặp, 0 leak (`__langparity`) | Hard | Fast board CI |
|
|
50
50
|
| APCA dark packs | `_audit/apca-dark-preview.html` | Cả 15 pack element×variant giữ mục tiêu APCA ở dark (bright-as-text ≥ 75, accent UI ≥ 60, ink-on-accent ≥ 75, ink-on-tint ≥ 75) | 0 fail hiện tại (`__apcaPreview.currentFail === 0`) | Hard | Fast board CI |
|
|
51
51
|
| Element geometry | `_audit/element-geometry.html` | Sync cường độ soft/middle/deep giữa năm element; tách variant; khóa hue light↔dark; Thổ middle ghim ochre logo; pack generate từ seed | `__elementgeometry.pass` | Hard | Fast board CI |
|
|
52
|
-
| Style contract | `_audit/style-contract.html` | Allowlist trục Style:
|
|
52
|
+
| Style contract | `_audit/style-contract.html` | Allowlist trục Style: `liquid-glass` (mặc định; vắng ≡ mặc định) và `matte-paper`; `styles.css` import `tokens/styles.css`; `--cs-style-pack` resolve cho cả hai; không `data-cs-style` lạ | `__stylecontract.pass` | Hard | Fast board CI |
|
|
53
53
|
| Visual baselines | `_audit/visual-diff.html` | Baseline template tồn tại và load được để so sánh side-by-side / overlay | Baseline có; drift đánh giá bằng mắt (`__visualdiff`) | Advisory | Fast board CI |
|
|
54
54
|
| Component baselines | `_audit/component-visual-diff.html` | 12 crop component curated neo các tầng atomic cho so sánh visual | Crop render + baseline có (`__componentVisualDiff`) | Advisory | Fast board CI |
|
|
55
55
|
| Component state paint | `_audit/component-state-paint.html` | Nút primary, secondary, ghost và danger, dialog mở, menu mở, lỗi field và dòng data được chọn sơn đúng màu light và dark đã khai báo. Sai lệch kênh dùng `PIXEL_CHANNEL_TOLERANCE` của hợp đồng pixel. 15 PNG trang Linux vẫn là bộ pixel-diff. | `__statepaint.pass` | Hard | Fast board CI + unit test ba engine |
|
|
@@ -160,3 +160,5 @@ Kiểm tra packed-assets phân tích mọi file JS/CJS/MJS/JSX trong gói để
|
|
|
160
160
|
Script inline trong HTML của gói cũng được quét khi không có type hoặc type là `module`, `text/javascript`, `application/javascript`, `text/ecmascript`, `application/ecmascript`, `text/babel`, `text/jsx`. Data block và type khác được loại trừ. Đường dẫn module inline được resolve theo file HTML. Fixture thiếu import và sai cú pháp phải thất bại; JSON không được parse như JavaScript. Kiểm tra này chỉ phân tích cú pháp dependency, không chạy chương trình inline hay xác nhận mọi tài nguyên runtime.
|
|
161
161
|
|
|
162
162
|
`npm run test:font-rendering` dùng dữ liệu font thực sự render của Chromium để phát hiện system fallback cho tập ký tự tiếng Việt đã định nghĩa ở dạng NFC và NFD. Kiểm tra nằm trong `test:unit`. Bản sửa font subset của D82 vượt kiểm tra tập ký tự NFC/NFD đã định nghĩa trên cả stylesheet nguồn và bản gộp, không dùng system fallback trong fixture Chromium. Kết quả này chưa xác nhận mọi ký tự Unicode, nền tảng native hay nghiệm thu hình ảnh của người phụ trách. Cmap tĩnh và `document.fonts.ready` chưa đủ chứng minh render đúng; không tự chuẩn hóa dữ liệu người dùng để vượt gate.
|
|
163
|
+
|
|
164
|
+
`npm run test:audit-regression` (`node _audit/ci/verify-audit-benchmarks-browser.mjs`) chạy Chromium headless qua `_audit/ci/fixtures/benchmark-20d.html`, `_audit/ci/fixtures/benchmark-baseline.html` và `_audit/ci/fixtures/benchmark-gen2.html` bằng tập assertion dùng chung trong `_audit/ci/lib/benchmark-checks.mjs`. Cổng này khẳng định **129/129** phép kiểm tra trên 20 chiều (`D1`–`D20`) đạt **10.0 / 10**, **64/64** phép kiểm tra cơ sở đạt **10.0 / 10**, **192/192** ô (`≥ 3.0:1`) trong ma trận tương phản phi văn bản 32×6, và **3/3** màn hình sản phẩm chịu tải Generation-2 với **0 watch**. Để mở rộng bộ benchmark sau các đợt review nội bộ hoặc đánh giá AI bên ngoài (Google Stitch / Claude Design), hãy thêm assertion mới vào `_audit/ci/lib/benchmark-checks.mjs` và dọn sạch các tệp tạm thời sau khi kiểm chứng.
|
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
|
+
Đ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.9.0<!-- /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
|
|
|
@@ -18,6 +18,10 @@ Các thay đổi này thuộc working tree đang sửa đổi. Đây chưa phả
|
|
|
18
18
|
|
|
19
19
|
- AlertDialog cho thao tác phá hủy đặt focus ban đầu vào Hủy; hộp xác nhận thông thường đặt focus vào Xác nhận. Thứ tự ưu tiên `tone`/`variant`, callback, đóng bằng Escape và trả focus được giữ lại. Chính sách đã được operator phê duyệt vẫn cần bằng chứng kiểm tra hiện tại trên trình duyệt và công nghệ hỗ trợ.
|
|
20
20
|
- Các control chọn dạng popup tùy chỉnh (`Combobox`, `DatePicker`, `TimePicker`, `ColorPicker`, `Cascader` và `TreeSelect`) hỗ trợ `"aria-labelledby"` trên cả nút mở và vùng popup để liên kết trực tiếp với nhãn trường bên ngoài mà không lặp chuỗi `aria-label`.
|
|
21
|
+
- Khắc phục hài hòa thị giác và độ tương phản trước `2.9.0` trên nền tảng token, component, biểu mẫu, thẻ hướng dẫn, UI kit và bộ xuất tài liệu:
|
|
22
|
+
- **Phân cấp trung tính ấm & Ngũ Hành (`tokens/colors.css`, `tokens/elevation.css`, `tokens/elements.css`, `scripts/generate-element-packs.mjs`, `scripts/lib/theme-resolver.mjs`):** Hiệu chỉnh `--cs-color-text-muted` ở Light Mode sang `#5E4436` (`APCA Lc 84.3` trên `#FFFDF8`) tách bạch rõ với chữ chính Umber `#45210E` (`Lc 100.3`), đưa `--cs-accent-strong` hành Thổ ở Light Mode (`#A4631E` studio/sand, `#7D480C` clay) về sắc độ hổ phách ấm `62°`, đồng bộ bóng đổ `md`/`xl` về sắc Umber `#45210E`, đồng thời nâng màu chữ phụ của `CodeBlock` (`--cs-code-muted`), `Terminal` (`--cs-term-muted`) và hằng số mẫu native lên `#E9D6C2` (`APCA Lc >= 81.2`) kèm `color-scheme: dark`.
|
|
23
|
+
- **Tách bạch gói phong cách, viền form picker, khoảng hở chạm & tương phản điều hướng (`base/glass.css`, `base/forms.css`, `base/controls.css`, `base/navigation.css`, `base/ai.css`, `base/data.css`, `tokens/viewer.html`, `ui_kits/`):** Tắt hoàn toàn độ mờ `backdrop-filter` và áp dụng nền giấy phẳng dưới `[data-cs-style="matte-paper"]` trên các lớp `.cs-glass-*` cùng thanh điều hướng/khung soạn thảo UI kit, đồng bộ viền nghỉ của `Select`, `NativeSelect`, `DatePicker`, `TimePicker`, `ColorPicker`, `Cascader`, `TreeSelect` và `PromptInput` về `--cs-component-textfield-border-default` (`2.33:1` ở Light Mode), nâng dấu phân cách `/` của `Breadcrumb` (`.cs-breadcrumb__sep`) lên `--cs-color-text-muted` (`APCA Lc >= 77` ở cả Light và Dark), và bổ sung khoảng đệm cuối `20px` cho `#tablePanel` trong `tokens/viewer.html` để các nút sao chép `44px` không bị thanh cuộn ngang che khuất trên khung nhìn hẹp.
|
|
24
|
+
- **Thẻ hướng dẫn/specimen Dark Mode, email CTA/VML & ngắt dòng `<br>` trong DOCX (`guidelines/*.html`, `components/data/data.card.html`, `templates/email/Email-VN-standalone.html`, `templates/email-safe/email-*.html`, `templates/_vendor/doc-export.js`):** Thay các mã hex trắng/Umber cố định, chữ vàng Ochre dưới ngưỡng ở Dark Mode và nền `--cs-accent-tint` gốc trung tính trong thẻ hướng dẫn/component sang token thích ứng chủ đề, đồng bộ nút CTA của `Email-VN-standalone.html` (`--cs-accent-strong` / `--cs-accent-on-strong`) cùng màu chữ `.muted` của `7` mẫu VML `email-safe` ở Light (`#5E4436`) và Dark (`#E9D6C2`) vượt ngưỡng `APCA Lc >= 75`, và tuần tự hóa thẻ `<br>` thành `<w:r><w:br/></w:r>` chuẩn OpenXML khi xuất DOCX. Kiểm tra tự động và ảnh chuẩn Linux `909×540` không thay thế nghiệm thu thị giác của con người hoặc kiểm tra công nghệ hỗ trợ thủ công.
|
|
21
25
|
|
|
22
26
|
### Trước khi áp dụng bản sửa đổi
|
|
23
27
|
|
|
@@ -28,11 +32,23 @@ Các thay đổi này thuộc working tree đang sửa đổi. Đây chưa phả
|
|
|
28
32
|
|
|
29
33
|
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
34
|
|
|
35
|
+
## Release — `@cyberskill/design@2.8.0`
|
|
36
|
+
|
|
37
|
+
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-10T13:04:18.764Z`, tag `v2.8.0` tại commit `5e7fdc7fc0ca49844d476a101205c8893591cae2`).
|
|
38
|
+
|
|
39
|
+
- **Mẫu giao diện Benchmark AI Gen-2 & Bí danh Token phòng thủ (`tokens/variables.css`, `tokens/theme-dark.css`, `base/glass.css`, `base/shell.css`, `base/layout.css`, `base/controls.css`, `base/components.css`, `base/data.css`, `base/ai.css`, `DESIGN.md`):** Bổ sung các biến bí danh chống suy đoán tên token (`--cs-glass-card-bg`, `--cs-glass-card-border`, `--cs-color-bg-elevated`, `--cs-color-bg-glass`, `--cs-shadow-glow`), tự động thu gọn `.cs-sidebar` trên mobile và tự giãn chiều rộng `.cs-theme-toggle` dạng viên thuốc, cùng các lớp `.cs-app-shell--topnav`, `.cs-grid-kpi`, `.cs-canvas`, `.cs-SplitPane`, `.cs-code-editor`, `.cs-checklist`, `.cs-file-dropzone`, `.cs-photo-grid`, `.cs-signature-pad`, `.cs-bottom-bar`, `.cs-sync-banner`, `.cs-table-toolbar` và `.cs-status-dot--live`.
|
|
40
|
+
- **Bộ Benchmark trình duyệt trực tiếp 20 chiều & Dọn dẹp hồ sơ kiểm toán (`_audit/ci/verify-audit-benchmarks-browser.mjs`, `_audit/ci/lib/benchmark-checks.mjs`, `_audit/ci/fixtures/benchmark-20d.html`, `_audit/ci/fixtures/benchmark-gen2.html`):** Mở rộng bộ kiểm toán trình duyệt tự động lên **20 chiều (`129/129` phép kiểm tra đạt `10.0 / 10`, `0 watch` + `64/64` phép kiểm tra cơ sở = `193/193` khẳng định trình duyệt trực tiếp)** kèm 3 màn hình stress-test phức tạp thế hệ 2, đồng thời loại bỏ hoàn toàn các bản chụp lịch sử trong `audit/` và `_audit/remediation/`.
|
|
41
|
+
- **Đường ống triển khai trực tiếp lên GitHub Pages (`.github/workflows/pages.yml`, `scripts/vercel-static-output.mjs`, `docs/vi/deploy.md`):** Đóng gói `.nojekyll` và `CNAME` (`design.cyberskill.world`) vào `.vercel-static/` và tự động triển khai webroot tĩnh lên GitHub Pages qua `actions/upload-pages-artifact` và `actions/deploy-pages`.
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
npm install @cyberskill/design@2.8.0
|
|
45
|
+
```
|
|
46
|
+
|
|
31
47
|
## Release — `@cyberskill/design@2.7.0`
|
|
32
48
|
|
|
33
49
|
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-09T20:01:08.112Z`, tag `v2.7.0` tại commit `d951d7d74077913d5d957f75c9d50d873b9dd937`).
|
|
34
50
|
|
|
35
|
-
- **Bộ Benchmark trình duyệt trực tiếp
|
|
51
|
+
- **Bộ Benchmark trình duyệt trực tiếp 16 chiều (`_audit/ci/verify-audit-benchmarks-browser.mjs`, `_audit/ci/lib/benchmark-checks.mjs`, `_audit/ci/fixtures/benchmark-20d.html`, `_audit/ci/fixtures/benchmark-gen2.html`):** Mở rộng bộ kiểm toán trình duyệt tự động lên **16 chiều (`105/105` phép kiểm tra đạt `10.0 / 10`, `0 watch` + `64/64` phép kiểm tra cơ sở = `169/169` khẳng định trình duyệt trực tiếp)** với `D11` (tương phản văn bản thân bài APCA $L_c \ge 75$ & nhịp điệu chữ), `D12` (thang cao độ z-index 7 tầng `--cs-depth-*` & cô lập cuộn lớp phủ), `D13` (container query đáp ứng, vùng an toàn & bố cục lại bảng), `D14` (thuộc tính logic RTL, trạng thái vô hiệu/chỉ đọc & tắt nhấp nháy khung xương khi giảm chuyển động), `D15` (`@media print`, `@media (forced-colors: active)` WHCM & bất biến thương hiệu) và `D16` (tính trực giao 5 trục `Theme × Element × Density × Contrast × Style` & vật lý cao độ bề mặt).
|
|
36
52
|
- **Bộ kiểm thử trả focus & bảo vệ bộ gõ tiếng Việt IME trên 3 engine (`components/forms/TreeSelect.jsx`, `components/forms/Cascader.jsx`, `components/forms/ColorPicker.jsx`, `components/forms/SearchField.jsx`, `_audit/ci/test-picker-focus-ime-browser.mjs`):** Đảm bảo trả focus về nút kích hoạt trên Chromium, Firefox và WebKit khi đóng `DatePicker`, `TreeSelect`, `Cascader`, `ColorPicker` hoặc xóa nhanh `SearchField`, đồng thời xác minh chốt chặn phím Enter khi đang gõ tổ hợp dấu tiếng Việt (`isComposing`) trên `Combobox`, `TagInput`, `Mentions`, `PromptInput` và `SearchField`.
|
|
37
53
|
- **Kiểm kê máy trạng thái & Xác thực nhanh `fast-gates` qua `act` (`scripts/generate-state-inventory.mjs`, `_audit/state-machines.*`, `scripts/run-act-ci.mjs`, `scripts/verify-ci-checks.mjs`, `.github/workflows/design-system-gates.yml`):** Bổ sung bộ kiểm kê máy trạng thái từ mã nguồn cùng kiểm thử chuyển tiếp `InlineEdit` trên 3 trình duyệt và mở rộng biên nhận `act` gắn với commit/tree sang `ci/act/fast-gates`.
|
|
38
54
|
|