@cyberskill/design 2.5.0 → 2.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/DESIGN.md +3 -3
- package/README.md +6 -5
- package/SECURITY.md +4 -4
- package/VERSION +1 -1
- package/_ds_bundle.js +2 -2
- package/_ds_bundle.js.map +1 -1
- package/_ds_manifest.json +0 -96
- package/_esm/cs.mjs +2 -2
- package/base/a11y.css +6 -11
- package/components/ai/ai-conversation.card.html +1 -1
- package/components/ai/ai-lumi.card.html +1 -1
- package/components/ai/ai.card.html +1 -1
- package/components/api-discovery.json +6 -6
- package/components/api-index.json +57 -16
- package/components/brand/brand.card.html +1 -1
- package/components/button/buttons.card.html +1 -1
- package/components/contracts.json +5 -5
- package/components/data/collections.card.html +1 -1
- package/components/data/data.card.html +1 -1
- package/components/datatable/datatable.card.html +1 -1
- package/components/dialog/dialog.card.html +1 -1
- package/components/feedback/feedback-2.card.html +1 -1
- package/components/feedback/feedback.card.html +2 -2
- package/components/forms/Cascader.jsx +1 -1
- package/components/forms/ColorPicker.jsx +1 -1
- package/components/forms/InlineEdit.jsx +12 -2
- package/components/forms/SearchField.jsx +1 -1
- package/components/forms/TreeSelect.jsx +1 -1
- package/components/forms/forms-2.card.html +1 -1
- package/components/forms/forms.card.html +1 -1
- package/components/i18n/i18n.card.html +1 -1
- package/components/icon/icon.card.html +1 -1
- package/components/lifecycle.json +51 -10
- package/components/logo/logo.card.html +2 -2
- package/components/navigation/navigation.card.html +1 -1
- package/components/navigation/shell.card.html +1 -1
- package/components/overlays/alertdialog.card.html +1 -1
- package/components/overlays/overlays.card.html +1 -1
- package/components/prompt-api.json +3 -3
- package/components/release-compatibility.json +1 -1
- package/components/scenarios.json +15 -15
- package/components/specifications.json +453 -453
- package/components/static-html-reference.json +25 -25
- package/components/textfield/textfield.card.html +1 -1
- package/dist/esm/_esm/react.mjs +5 -5
- package/dist/esm/build.json +52 -52
- package/dist/esm/chunks/{chunk-GLPQBE2J.mjs → chunk-4D7SFITE.mjs} +17 -3
- package/dist/esm/chunks/chunk-4D7SFITE.mjs.map +7 -0
- package/dist/esm/chunks/{chunk-MRXEJSQQ.mjs → chunk-B5V7HN5G.mjs} +5 -2
- package/dist/esm/chunks/{chunk-MRXEJSQQ.mjs.map → chunk-B5V7HN5G.mjs.map} +2 -2
- package/dist/esm/chunks/{chunk-5FQGNCKS.mjs → chunk-LU45KTWU.mjs} +2 -1
- package/dist/esm/chunks/{chunk-5FQGNCKS.mjs.map → chunk-LU45KTWU.mjs.map} +2 -2
- package/dist/esm/chunks/{chunk-D7A4ZCMJ.mjs → chunk-RUB6XN27.mjs} +5 -2
- package/dist/esm/chunks/{chunk-D7A4ZCMJ.mjs.map → chunk-RUB6XN27.mjs.map} +2 -2
- package/dist/esm/chunks/{chunk-FF5D53IP.mjs → chunk-SA7L22XE.mjs} +5 -2
- package/dist/esm/chunks/{chunk-FF5D53IP.mjs.map → chunk-SA7L22XE.mjs.map} +2 -2
- package/dist/esm/components/forms/Cascader.mjs +1 -1
- package/dist/esm/components/forms/ColorPicker.mjs +1 -1
- package/dist/esm/components/forms/InlineEdit.mjs +1 -1
- package/dist/esm/components/forms/SearchField.mjs +1 -1
- package/dist/esm/components/forms/TreeSelect.mjs +1 -1
- package/dist/styles.css +3177 -0
- package/dist/styles.min.css +1 -1
- package/docs/UPSTREAM.md +39 -0
- package/docs/consuming.md +1 -1
- package/docs/contrast-report.md +1 -1
- package/docs/conventions.md +1 -1
- package/docs/guideline-language.md +2 -2
- package/docs/reference-catalog.json +36 -24
- package/docs/release-notes.md +25 -1
- package/docs/static-html-reference.md +23 -23
- package/docs/template-inventory.json +125 -125
- package/docs/vi/UPSTREAM.md +39 -0
- 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 +3 -3
- package/docs/vi/entrypoints/README.md +6 -5
- package/docs/vi/guideline-language.md +2 -2
- package/docs/vi/release-notes.md +25 -1
- package/docs/vi/static-html-reference.md +23 -23
- package/docs/viewer.html +2 -2
- package/guidelines/atomic-view.html +5 -5
- package/guidelines/brand-iconography.html +1 -1
- package/guidelines/brand-imagery.html +1 -1
- package/guidelines/brand-interaction.html +1 -1
- package/guidelines/brand-voice.html +1 -1
- package/guidelines/colors-anchors.html +1 -1
- package/guidelines/colors-semantic.html +1 -1
- package/guidelines/colors-surfaces.html +1 -1
- package/guidelines/colors-text.html +1 -1
- package/guidelines/documents.html +1 -1
- package/guidelines/elements-components.html +1 -1
- package/guidelines/elements-concept.html +1 -1
- package/guidelines/elements-geometry.html +1 -1
- package/guidelines/elements-variants.html +1 -1
- package/guidelines/guideline-language.js +6 -5
- package/guidelines/motion-interaction.html +1 -1
- package/guidelines/motion.html +1 -1
- package/guidelines/responsive-bilingual.html +1 -1
- package/guidelines/rtl-preview.html +1 -1
- package/guidelines/spacing-breakpoints.html +1 -1
- package/guidelines/spacing-radius.html +1 -1
- package/guidelines/spacing-scale.html +1 -1
- package/guidelines/surfaces-aurora.html +1 -1
- package/guidelines/surfaces-depth.html +1 -1
- package/guidelines/surfaces-glass.html +1 -1
- package/guidelines/surfaces-shadow.html +1 -1
- package/guidelines/type-families.html +1 -1
- package/guidelines/type-lineheight.html +1 -1
- package/guidelines/type-scale.html +1 -1
- package/guidelines/type-weights.html +1 -1
- package/package.json +12 -4
- package/styles/components/manifest.json +130 -130
- package/styles.layered.css +8 -10
- package/styles.layered.provenance.json +3 -3
- package/templates/_ds-base.canonical.js +6 -4
- package/templates/app-shell/ds-base.js +6 -4
- package/templates/article/ds-base.js +6 -4
- package/templates/auth/ds-base.js +6 -4
- package/templates/bod-deck/ds-base.js +6 -4
- package/templates/bod-investor-update/ds-base.js +6 -4
- package/templates/bod-memo/ds-base.js +6 -4
- package/templates/bod-minutes/ds-base.js +6 -4
- package/templates/bod-report/ds-base.js +6 -4
- package/templates/bod-resolution/ds-base.js +6 -4
- package/templates/culture-event-invite/ds-base.js +6 -4
- package/templates/dashboard/ds-base.js +6 -4
- package/templates/delivery-change-note/ds-base.js +6 -4
- package/templates/delivery-kickoff/ds-base.js +6 -4
- package/templates/delivery-qbr-deck/ds-base.js +6 -4
- package/templates/delivery-runbook/ds-base.js +6 -4
- package/templates/delivery-status-email/ds-base.js +6 -4
- package/templates/doc-style-guide/ds-base.js +6 -4
- package/templates/doc-suite-index/ds-base.js +6 -4
- package/templates/doc-templates/ds-base.js +6 -4
- package/templates/email/ds-base.js +6 -4
- package/templates/finance-dunning-email/ds-base.js +6 -4
- package/templates/finance-expense-report/ds-base.js +6 -4
- package/templates/finance-invoice/ds-base.js +6 -4
- package/templates/finance-quote/ds-base.js +6 -4
- package/templates/hr-announcement/ds-base.js +6 -4
- package/templates/hr-interview-kit/ds-base.js +6 -4
- package/templates/hr-offboarding/ds-base.js +6 -4
- package/templates/hr-performance-review/ds-base.js +6 -4
- package/templates/hr-pip/ds-base.js +6 -4
- package/templates/kitchen-sink.html +1 -1
- package/templates/legal-msa/ds-base.js +6 -4
- package/templates/legal-sow/ds-base.js +6 -4
- package/templates/marketing-campaign-brief/ds-base.js +6 -4
- package/templates/marketing-case-study/ds-base.js +6 -4
- package/templates/marketing-launch/ds-base.js +6 -4
- package/templates/marketing-newsletter/ds-base.js +6 -4
- package/templates/marketing-page/ds-base.js +6 -4
- package/templates/marketing-press-release/ds-base.js +6 -4
- package/templates/marketing-social-kit/ds-base.js +6 -4
- package/templates/sales-one-pager/ds-base.js +6 -4
- package/templates/sales-proposal-deck/ds-base.js +6 -4
- package/templates/settings/ds-base.js +6 -4
- package/templates/slide-deck/ds-base.js +6 -4
- package/templates/team-meeting-agenda/ds-base.js +6 -4
- package/templates/tech-incident-report/ds-base.js +6 -4
- package/templates/tech-release-notes/ds-base.js +6 -4
- package/templates/tech-retro/ds-base.js +6 -4
- package/templates/tech-rfc/ds-base.js +6 -4
- package/templates/vn-appointment-transfer/ds-base.js +6 -4
- package/templates/vn-certificate-of-employment/ds-base.js +6 -4
- package/templates/vn-code-of-conduct/ds-base.js +6 -4
- package/templates/vn-compensation-regulation/ds-base.js +6 -4
- package/templates/vn-contract-amendment/ds-base.js +6 -4
- package/templates/vn-contractor-agreement/ds-base.js +6 -4
- package/templates/vn-data-protection-policy/ds-base.js +6 -4
- package/templates/vn-disciplinary-case-file/ds-base.js +6 -4
- package/templates/vn-disciplinary-schedule/ds-base.js +6 -4
- package/templates/vn-employee-request/ds-base.js +6 -4
- package/templates/vn-exit-handover/ds-base.js +6 -4
- package/templates/vn-foreign-employee-pack/ds-base.js +6 -4
- package/templates/vn-framework-agreement/ds-base.js +6 -4
- package/templates/vn-grassroots-democracy/ds-base.js +6 -4
- package/templates/vn-infosec-policy/ds-base.js +6 -4
- package/templates/vn-internal-labor-regulations/ds-base.js +6 -4
- package/templates/vn-internship-agreement/ds-base.js +6 -4
- package/templates/vn-job-description/ds-base.js +6 -4
- package/templates/vn-labor-contract/ds-base.js +6 -4
- package/templates/vn-labour-management-book/ds-base.js +6 -4
- package/templates/vn-mutual-nda/ds-base.js +6 -4
- package/templates/vn-ndnca-ip/ds-base.js +6 -4
- package/templates/vn-offer-letter/ds-base.js +6 -4
- package/templates/vn-onboarding-checklist/ds-base.js +6 -4
- package/templates/vn-pdpl-consent/ds-base.js +6 -4
- package/templates/vn-performance-evaluation-regulation/ds-base.js +6 -4
- package/templates/vn-performance-review-form/ds-base.js +6 -4
- package/templates/vn-phantom-stock/ds-base.js +6 -4
- package/templates/vn-probation-contract/ds-base.js +6 -4
- package/templates/vn-receipt-acknowledgement/ds-base.js +6 -4
- package/templates/vn-remote-work-policy/ds-base.js +6 -4
- package/templates/vn-resignation-letter/ds-base.js +6 -4
- package/templates/vn-salary-scale/ds-base.js +6 -4
- package/templates/vn-sow-appendix/ds-base.js +6 -4
- package/templates/vn-termination-decision/ds-base.js +6 -4
- package/templates/vn-total-rewards-appendix/ds-base.js +6 -4
- package/templates/vn-training-commitment/ds-base.js +6 -4
- package/templates/vn-travel-expense-policy/ds-base.js +6 -4
- package/tokens/declarations.json +2 -128
- 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 +260 -260
- 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/styles.css +1 -1
- package/tokens/tokens.dtcg.json +4 -4
- package/tokens/tokens.js +5 -5
- package/tokens/tokens.json +4 -4
- package/tokens/variables.css +0 -9
- package/ui_kits/deck/index.html +1 -1
- package/ui_kits/status-hub/index.html +1 -1
- package/ui_kits/status-hub/login.html +1 -1
- package/ui_kits/status-hub/project.html +1 -1
- package/ui_kits/status-hub/settings.html +1 -1
- package/ui_kits/status-hub/static-locale.js +2 -0
- package/ui_kits/website/careers.html +1 -1
- package/ui_kits/website/chat.html +1 -1
- package/ui_kits/website/index.html +1 -1
- package/ui_kits/website/work.html +1 -1
- package/dist/esm/chunks/chunk-GLPQBE2J.mjs.map +0 -7
package/_ds_manifest.json
CHANGED
|
@@ -5931,102 +5931,6 @@
|
|
|
5931
5931
|
"important": false,
|
|
5932
5932
|
"declarationOrder": 1073,
|
|
5933
5933
|
"sourceLine": 22
|
|
5934
|
-
},
|
|
5935
|
-
{
|
|
5936
|
-
"name": "--cs-color-border-default",
|
|
5937
|
-
"value": "#9a8060",
|
|
5938
|
-
"kind": "color",
|
|
5939
|
-
"definedIn": "base/a11y.css",
|
|
5940
|
-
"scope": "[data-theme=\"light\"]:where(:not([data-cs-contrast=\"standard\"], [data-cs-contrast=\"standard\"] *)),\n [data-theme=\"system\"]:where(:not([data-cs-contrast=\"standard\"], [data-cs-contrast=\"standard\"] *)),\n :root:where(:not([data-cs-contrast=\"standard\"]))",
|
|
5941
|
-
"conditions": [
|
|
5942
|
-
{
|
|
5943
|
-
"name": "media",
|
|
5944
|
-
"params": "(prefers-contrast: more)"
|
|
5945
|
-
}
|
|
5946
|
-
],
|
|
5947
|
-
"important": false,
|
|
5948
|
-
"declarationOrder": 1074,
|
|
5949
|
-
"sourceLine": 144
|
|
5950
|
-
},
|
|
5951
|
-
{
|
|
5952
|
-
"name": "--cs-color-text-muted",
|
|
5953
|
-
"value": "#45210e",
|
|
5954
|
-
"kind": "color",
|
|
5955
|
-
"definedIn": "base/a11y.css",
|
|
5956
|
-
"scope": "[data-theme=\"light\"]:where(:not([data-cs-contrast=\"standard\"], [data-cs-contrast=\"standard\"] *)),\n [data-theme=\"system\"]:where(:not([data-cs-contrast=\"standard\"], [data-cs-contrast=\"standard\"] *)),\n :root:where(:not([data-cs-contrast=\"standard\"]))",
|
|
5957
|
-
"conditions": [
|
|
5958
|
-
{
|
|
5959
|
-
"name": "media",
|
|
5960
|
-
"params": "(prefers-contrast: more)"
|
|
5961
|
-
}
|
|
5962
|
-
],
|
|
5963
|
-
"important": false,
|
|
5964
|
-
"declarationOrder": 1075,
|
|
5965
|
-
"sourceLine": 144
|
|
5966
|
-
},
|
|
5967
|
-
{
|
|
5968
|
-
"name": "--cs-color-border-default",
|
|
5969
|
-
"value": "#7a6450",
|
|
5970
|
-
"kind": "color",
|
|
5971
|
-
"definedIn": "base/a11y.css",
|
|
5972
|
-
"scope": "[data-theme=\"dark\"]:where(:not([data-cs-contrast=\"standard\"], [data-cs-contrast=\"standard\"] *))",
|
|
5973
|
-
"conditions": [
|
|
5974
|
-
{
|
|
5975
|
-
"name": "media",
|
|
5976
|
-
"params": "(prefers-contrast: more)"
|
|
5977
|
-
}
|
|
5978
|
-
],
|
|
5979
|
-
"important": false,
|
|
5980
|
-
"declarationOrder": 1076,
|
|
5981
|
-
"sourceLine": 145
|
|
5982
|
-
},
|
|
5983
|
-
{
|
|
5984
|
-
"name": "--cs-color-text-muted",
|
|
5985
|
-
"value": "#f5ead9",
|
|
5986
|
-
"kind": "color",
|
|
5987
|
-
"definedIn": "base/a11y.css",
|
|
5988
|
-
"scope": "[data-theme=\"dark\"]:where(:not([data-cs-contrast=\"standard\"], [data-cs-contrast=\"standard\"] *))",
|
|
5989
|
-
"conditions": [
|
|
5990
|
-
{
|
|
5991
|
-
"name": "media",
|
|
5992
|
-
"params": "(prefers-contrast: more)"
|
|
5993
|
-
}
|
|
5994
|
-
],
|
|
5995
|
-
"important": false,
|
|
5996
|
-
"declarationOrder": 1077,
|
|
5997
|
-
"sourceLine": 145
|
|
5998
|
-
},
|
|
5999
|
-
{
|
|
6000
|
-
"name": "--cs-color-border-default",
|
|
6001
|
-
"value": "#7a6450",
|
|
6002
|
-
"kind": "color",
|
|
6003
|
-
"definedIn": "base/a11y.css",
|
|
6004
|
-
"scope": "[data-theme=\"system\"]:where(:not([data-cs-contrast=\"standard\"], [data-cs-contrast=\"standard\"] *))",
|
|
6005
|
-
"conditions": [
|
|
6006
|
-
{
|
|
6007
|
-
"name": "media",
|
|
6008
|
-
"params": "(prefers-color-scheme: dark) and (prefers-contrast: more)"
|
|
6009
|
-
}
|
|
6010
|
-
],
|
|
6011
|
-
"important": false,
|
|
6012
|
-
"declarationOrder": 1078,
|
|
6013
|
-
"sourceLine": 150
|
|
6014
|
-
},
|
|
6015
|
-
{
|
|
6016
|
-
"name": "--cs-color-text-muted",
|
|
6017
|
-
"value": "#f5ead9",
|
|
6018
|
-
"kind": "color",
|
|
6019
|
-
"definedIn": "base/a11y.css",
|
|
6020
|
-
"scope": "[data-theme=\"system\"]:where(:not([data-cs-contrast=\"standard\"], [data-cs-contrast=\"standard\"] *))",
|
|
6021
|
-
"conditions": [
|
|
6022
|
-
{
|
|
6023
|
-
"name": "media",
|
|
6024
|
-
"params": "(prefers-color-scheme: dark) and (prefers-contrast: more)"
|
|
6025
|
-
}
|
|
6026
|
-
],
|
|
6027
|
-
"important": false,
|
|
6028
|
-
"declarationOrder": 1079,
|
|
6029
|
-
"sourceLine": 150
|
|
6030
5934
|
}
|
|
6031
5935
|
],
|
|
6032
5936
|
"themes": [
|
package/_esm/cs.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// CyberSkill Design System — ESM entry point (GENERATED by scripts/generate-export-catalog.mjs at v2.
|
|
1
|
+
// CyberSkill Design System — ESM entry point (GENERATED by scripts/generate-export-catalog.mjs at v2.7.0).
|
|
2
2
|
// No build step: import this module directly in a browser. It loads the pinned umd-react@19.2.8
|
|
3
3
|
// distribution; its retained React and ReactDOM files report runtime version 19.2.4.
|
|
4
4
|
// (official React 19 dropped UMD; pinned + SRI; skipped when window.React already exists), side-loads
|
|
@@ -33,7 +33,7 @@ if (!found()) await ensureScript("../_ds_bundle.js");
|
|
|
33
33
|
export const CS = g[found()];
|
|
34
34
|
if (!CS) throw new Error("cs.js: bundle loaded but no CyberSkillDesignSystem_* namespace found");
|
|
35
35
|
export default CS;
|
|
36
|
-
export const VERSION = "2.
|
|
36
|
+
export const VERSION = "2.7.0";
|
|
37
37
|
export const AIDisclosureBadge = CS.AIDisclosureBadge;
|
|
38
38
|
export const Accordion = CS.Accordion;
|
|
39
39
|
export const Alert = CS.Alert;
|
package/base/a11y.css
CHANGED
|
@@ -138,17 +138,12 @@
|
|
|
138
138
|
* warm hairline border and muted text (both are intentionally soft by default).
|
|
139
139
|
* Only activates on user request; anchors (Umber/Ochre) and focus rings are
|
|
140
140
|
* already high-contrast and untouched. ---- */
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
/* System dark gets stronger contrast only when the user requests it, just like explicit dark. */
|
|
149
|
-
@media (prefers-color-scheme: dark) and (prefers-contrast: more) {
|
|
150
|
-
[data-theme="system"]:where(:not([data-cs-contrast="standard"], [data-cs-contrast="standard"] *)) { --cs-color-border-default: #7a6450; --cs-color-text-muted: #f5ead9; }
|
|
151
|
-
}
|
|
141
|
+
/* The values live in tokens/elements.css: the scope resolver derives
|
|
142
|
+
* --cs-color-border-default / --cs-color-text-muted from the --_cs-standard /
|
|
143
|
+
* --_cs-high channel toggles, which flip to high under prefers-contrast: more
|
|
144
|
+
* (light #9a8060 / #45210e · dark #7a6450 / #f5ead9) unless a scope sets
|
|
145
|
+
* data-cs-contrast explicitly. The former contextual overrides here were
|
|
146
|
+
* already superseded by that resolver's higher specificity. */
|
|
152
147
|
|
|
153
148
|
/* Forced colors removes authored backgrounds and shadows. State must survive
|
|
154
149
|
* that substitution using real borders, system colors and knob position. */
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
7
7
|
<title>CyberSkill — AI-native — conversation</title>
|
|
8
8
|
<meta name="description" content="AI-native — conversation: PromptInput, ChatMessage (Lumi), ConfidenceMeter" />
|
|
9
|
-
<link rel="stylesheet" href="../../styles.css" />
|
|
9
|
+
<link rel="stylesheet" href="../../dist/styles.css" />
|
|
10
10
|
<style>
|
|
11
11
|
body { margin: 0; background: var(--cs-color-surface-page); padding: 22px 24px; }
|
|
12
12
|
.grid { display: grid; grid-template-columns: 1.2fr 1fr; gap: 24px; max-width: 660px; align-items: start; }
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<title>CyberSkill — AI-native — Lumi conversation</title>
|
|
6
6
|
<meta name="description" content="AI-native — Lumi conversation: PromptSuggestions, TypingIndicator, CitationList" />
|
|
7
7
|
<meta charset="utf-8" />
|
|
8
|
-
<link rel="stylesheet" href="../../styles.css" />
|
|
8
|
+
<link rel="stylesheet" href="../../dist/styles.css" />
|
|
9
9
|
<style>
|
|
10
10
|
body { margin: 0; background: var(--cs-color-surface-page); padding: 22px 24px; }
|
|
11
11
|
.lbl { font: 600 11px/1 var(--cs-font-family-ui); text-transform: uppercase; letter-spacing: .09em; color: var(--cs-color-text-muted); margin-bottom: 10px; }
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
7
7
|
<title>CyberSkill — AI-native — Disclosure & Review Gate</title>
|
|
8
8
|
<meta name="description" content="AI-native — Disclosure & Review Gate: Explainable AI badge + human-in-the-loop approval" />
|
|
9
|
-
<link rel="stylesheet" href="../../styles.css" />
|
|
9
|
+
<link rel="stylesheet" href="../../dist/styles.css" />
|
|
10
10
|
<style>
|
|
11
11
|
body { margin: 0; background: var(--cs-color-surface-page); padding: 22px 24px; }
|
|
12
12
|
.stack { display: grid; gap: 18px; max-width: 560px; }
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"interpretation": "Discovery projection: every public export and authored prop definition, with inherited prop counts. Inherited native props, full signatures, support evidence/history and compiler metadata remain in components/api-index.json. Declarations remain authoritative; this projection does not establish runtime, semantic or human acceptance.",
|
|
4
4
|
"completeIndex": {
|
|
5
5
|
"path": "components/api-index.json",
|
|
6
|
-
"sha256": "
|
|
6
|
+
"sha256": "cdca2a8f225147e27ca8b385023ffe6ba5628b614720cd658c94f5c833f53336"
|
|
7
7
|
},
|
|
8
8
|
"exports": [
|
|
9
9
|
{
|
|
@@ -659,7 +659,7 @@
|
|
|
659
659
|
"sourcePath": "components/forms/Cascader.jsx",
|
|
660
660
|
"declarationPath": "components/forms/Cascader.d.ts",
|
|
661
661
|
"promptPath": "components/forms/Cascader.prompt.md",
|
|
662
|
-
"sourceSha256": "
|
|
662
|
+
"sourceSha256": "09380cc01ef61a3cc0fb0d4f065345f4e31a6cd197cd4a9d837ffdc144b22bde",
|
|
663
663
|
"declarationSha256": "33edbc198353ed41f05867be9e1c04830d5033cf2cf4ceda3e1ba13adef27aea",
|
|
664
664
|
"declaredLifecycle": "stable",
|
|
665
665
|
"supportReviewState": "reviewed",
|
|
@@ -981,7 +981,7 @@
|
|
|
981
981
|
"sourcePath": "components/forms/ColorPicker.jsx",
|
|
982
982
|
"declarationPath": "components/forms/ColorPicker.d.ts",
|
|
983
983
|
"promptPath": "components/forms/ColorPicker.prompt.md",
|
|
984
|
-
"sourceSha256": "
|
|
984
|
+
"sourceSha256": "90d7990c0e97ca31592bb7a48153d85944016b4424c0ac58837c8295c33d8695",
|
|
985
985
|
"declarationSha256": "a0a3d9c005fc6f8ddc4fdc85f132aedfcb10dee745ae1706eb6b924814531e2d",
|
|
986
986
|
"declaredLifecycle": "stable",
|
|
987
987
|
"supportReviewState": "reviewed",
|
|
@@ -2380,7 +2380,7 @@
|
|
|
2380
2380
|
"sourcePath": "components/forms/InlineEdit.jsx",
|
|
2381
2381
|
"declarationPath": "components/forms/InlineEdit.d.ts",
|
|
2382
2382
|
"promptPath": "components/forms/InlineEdit.prompt.md",
|
|
2383
|
-
"sourceSha256": "
|
|
2383
|
+
"sourceSha256": "9f242ef99af077e5c9b68d36cc9539fac0819e66f7995fa6a93ecb7793bf3484",
|
|
2384
2384
|
"declarationSha256": "9fdf8c29720cd8d015ea42edfb4ee39ce74964feaafd43b044183ca5ef504b1c",
|
|
2385
2385
|
"declaredLifecycle": "stable",
|
|
2386
2386
|
"supportReviewState": "reviewed",
|
|
@@ -3742,7 +3742,7 @@
|
|
|
3742
3742
|
"sourcePath": "components/forms/SearchField.jsx",
|
|
3743
3743
|
"declarationPath": "components/forms/SearchField.d.ts",
|
|
3744
3744
|
"promptPath": "components/forms/SearchField.prompt.md",
|
|
3745
|
-
"sourceSha256": "
|
|
3745
|
+
"sourceSha256": "e48eec5e6f3d65719ea4f72e833d67a6b05d2cc6fb49b53a621d0e832f33838e",
|
|
3746
3746
|
"declarationSha256": "16b63c44bbdf6d4f9f8f05f0612cbcd8d92b6d4af5800d90fd120a5f1f60a5fa",
|
|
3747
3747
|
"declaredLifecycle": "stable",
|
|
3748
3748
|
"supportReviewState": "reviewed",
|
|
@@ -4826,7 +4826,7 @@
|
|
|
4826
4826
|
"sourcePath": "components/forms/TreeSelect.jsx",
|
|
4827
4827
|
"declarationPath": "components/forms/TreeSelect.d.ts",
|
|
4828
4828
|
"promptPath": "components/forms/TreeSelect.prompt.md",
|
|
4829
|
-
"sourceSha256": "
|
|
4829
|
+
"sourceSha256": "ab5bc70e1cb1ab10df72a39456e4f4ac88e7907c25cd1dde8ded1d9c5c8b31e3",
|
|
4830
4830
|
"declarationSha256": "3623e81530a0900556a713346f5ea7a96c02dc185a1481589d45190f5b09c33e",
|
|
4831
4831
|
"declaredLifecycle": "stable",
|
|
4832
4832
|
"supportReviewState": "reviewed",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"scripts/catalog-source.json": "f12045fb1cccf19df8a2469dba096c582bc1885c8be464e2fc3df9aec06b89e9",
|
|
15
15
|
"scripts/lib/component-support.mjs": "6626078ffaaa91cb3a43d87858577fc5d405e5bfb474e7519abf50d4797b2eb1",
|
|
16
16
|
"_esm/react.d.ts": "56e221d6eb875cf7c3a4de841372ba0b70389836957d8538b1d5a276848db95d",
|
|
17
|
-
"components/lifecycle.json": "
|
|
17
|
+
"components/lifecycle.json": "28574314e19271305cc280baed7c24248bd8a5e699202df137331c848d851539"
|
|
18
18
|
},
|
|
19
19
|
"propDefinitions": {
|
|
20
20
|
"p-0003926b4717c94d": {
|
|
@@ -35995,7 +35995,7 @@
|
|
|
35995
35995
|
"sourcePath": "components/forms/Cascader.jsx",
|
|
35996
35996
|
"declarationPath": "components/forms/Cascader.d.ts",
|
|
35997
35997
|
"promptPath": "components/forms/Cascader.prompt.md",
|
|
35998
|
-
"sourceSha256": "
|
|
35998
|
+
"sourceSha256": "09380cc01ef61a3cc0fb0d4f065345f4e31a6cd197cd4a9d837ffdc144b22bde",
|
|
35999
35999
|
"declarationSha256": "33edbc198353ed41f05867be9e1c04830d5033cf2cf4ceda3e1ba13adef27aea",
|
|
36000
36000
|
"declaredLifecycle": "stable",
|
|
36001
36001
|
"support": {
|
|
@@ -36021,7 +36021,7 @@
|
|
|
36021
36021
|
},
|
|
36022
36022
|
{
|
|
36023
36023
|
"path": "components/forms/Cascader.jsx",
|
|
36024
|
-
"sha256": "
|
|
36024
|
+
"sha256": "09380cc01ef61a3cc0fb0d4f065345f4e31a6cd197cd4a9d837ffdc144b22bde",
|
|
36025
36025
|
"scope": "Authoritative React implementation source for this declared export; shared source may define companion exports",
|
|
36026
36026
|
"checkedAt": "2026-10-21T12:08:13.113Z"
|
|
36027
36027
|
},
|
|
@@ -39349,7 +39349,7 @@
|
|
|
39349
39349
|
"sourcePath": "components/forms/ColorPicker.jsx",
|
|
39350
39350
|
"declarationPath": "components/forms/ColorPicker.d.ts",
|
|
39351
39351
|
"promptPath": "components/forms/ColorPicker.prompt.md",
|
|
39352
|
-
"sourceSha256": "
|
|
39352
|
+
"sourceSha256": "90d7990c0e97ca31592bb7a48153d85944016b4424c0ac58837c8295c33d8695",
|
|
39353
39353
|
"declarationSha256": "a0a3d9c005fc6f8ddc4fdc85f132aedfcb10dee745ae1706eb6b924814531e2d",
|
|
39354
39354
|
"declaredLifecycle": "stable",
|
|
39355
39355
|
"support": {
|
|
@@ -39375,7 +39375,7 @@
|
|
|
39375
39375
|
},
|
|
39376
39376
|
{
|
|
39377
39377
|
"path": "components/forms/ColorPicker.jsx",
|
|
39378
|
-
"sha256": "
|
|
39378
|
+
"sha256": "90d7990c0e97ca31592bb7a48153d85944016b4424c0ac58837c8295c33d8695",
|
|
39379
39379
|
"scope": "Authoritative React implementation source for this declared export; shared source may define companion exports",
|
|
39380
39380
|
"checkedAt": "2026-10-21T12:08:13.113Z"
|
|
39381
39381
|
},
|
|
@@ -51124,7 +51124,7 @@
|
|
|
51124
51124
|
"sourcePath": "components/forms/InlineEdit.jsx",
|
|
51125
51125
|
"declarationPath": "components/forms/InlineEdit.d.ts",
|
|
51126
51126
|
"promptPath": "components/forms/InlineEdit.prompt.md",
|
|
51127
|
-
"sourceSha256": "
|
|
51127
|
+
"sourceSha256": "9f242ef99af077e5c9b68d36cc9539fac0819e66f7995fa6a93ecb7793bf3484",
|
|
51128
51128
|
"declarationSha256": "9fdf8c29720cd8d015ea42edfb4ee39ce74964feaafd43b044183ca5ef504b1c",
|
|
51129
51129
|
"declaredLifecycle": "stable",
|
|
51130
51130
|
"support": {
|
|
@@ -51146,28 +51146,28 @@
|
|
|
51146
51146
|
"path": "components/forms/InlineEdit.d.ts",
|
|
51147
51147
|
"sha256": "9fdf8c29720cd8d015ea42edfb4ee39ce74964feaafd43b044183ca5ef504b1c",
|
|
51148
51148
|
"scope": "Authored public TypeScript declaration contract",
|
|
51149
|
-
"checkedAt": "2026-
|
|
51149
|
+
"checkedAt": "2026-11-09T17:52:00.677Z"
|
|
51150
51150
|
},
|
|
51151
51151
|
{
|
|
51152
51152
|
"path": "components/forms/InlineEdit.jsx",
|
|
51153
|
-
"sha256": "
|
|
51153
|
+
"sha256": "9f242ef99af077e5c9b68d36cc9539fac0819e66f7995fa6a93ecb7793bf3484",
|
|
51154
51154
|
"scope": "Authoritative React implementation source for this declared export; shared source may define companion exports",
|
|
51155
|
-
"checkedAt": "2026-
|
|
51155
|
+
"checkedAt": "2026-11-09T17:52:00.677Z"
|
|
51156
51156
|
},
|
|
51157
51157
|
{
|
|
51158
51158
|
"path": "components/forms/InlineEdit.prompt.md",
|
|
51159
51159
|
"sha256": "6f60672f2c19cfe7130e1b32f9d8a422bf2ad546c84ac3dc96907415a451b930",
|
|
51160
51160
|
"scope": "Component usage guidance with generated declared-API projection; implementation authority remains source",
|
|
51161
|
-
"checkedAt": "2026-
|
|
51161
|
+
"checkedAt": "2026-11-09T17:52:00.677Z"
|
|
51162
51162
|
},
|
|
51163
51163
|
{
|
|
51164
51164
|
"path": "stories/InlineEdit.stories.jsx",
|
|
51165
51165
|
"sha256": "6e9fdd26b7c8bbe7ffefb87fad4e271b856fc2f449ef33970cd332b8d2a81656",
|
|
51166
51166
|
"scope": "Authored Storybook CSF story and declared matrix mount surface; not execution or all-state acceptance",
|
|
51167
|
-
"checkedAt": "2026-
|
|
51167
|
+
"checkedAt": "2026-11-09T17:52:00.677Z"
|
|
51168
51168
|
}
|
|
51169
51169
|
],
|
|
51170
|
-
"reviewedAt": "2026-
|
|
51170
|
+
"reviewedAt": "2026-11-09T17:52:00.677Z",
|
|
51171
51171
|
"reviewedBy": "Stephen Cheng",
|
|
51172
51172
|
"limitations": [
|
|
51173
51173
|
"This bounded source/declared-support review covers only the exact direct evidence listed below and its public declaration and implementation contracts. Automated execution is limited to separately bound receipts; this scope does not establish all-state acceptance.",
|
|
@@ -51216,6 +51216,47 @@
|
|
|
51216
51216
|
"Style: default, liquid-glass"
|
|
51217
51217
|
],
|
|
51218
51218
|
"sourceSha256": "db30ac35d9017a532d7159325d8eae235b109942c38649efd07b8a3d35effa14"
|
|
51219
|
+
},
|
|
51220
|
+
{
|
|
51221
|
+
"reviewedBy": "Stephen Cheng",
|
|
51222
|
+
"reviewedAt": "2026-10-21T12:03:00.000Z",
|
|
51223
|
+
"evidence": [
|
|
51224
|
+
{
|
|
51225
|
+
"path": "components/forms/InlineEdit.d.ts",
|
|
51226
|
+
"sha256": "9fdf8c29720cd8d015ea42edfb4ee39ce74964feaafd43b044183ca5ef504b1c",
|
|
51227
|
+
"scope": "Authored public TypeScript declaration contract",
|
|
51228
|
+
"checkedAt": "2026-10-21T12:08:13.113Z"
|
|
51229
|
+
},
|
|
51230
|
+
{
|
|
51231
|
+
"path": "components/forms/InlineEdit.jsx",
|
|
51232
|
+
"sha256": "45b36df70b179243e329684ce20f61ed8dd4fda75e11674d24797713c644d4f8",
|
|
51233
|
+
"scope": "Authoritative React implementation source for this declared export; shared source may define companion exports",
|
|
51234
|
+
"checkedAt": "2026-10-21T12:08:13.113Z"
|
|
51235
|
+
},
|
|
51236
|
+
{
|
|
51237
|
+
"path": "components/forms/InlineEdit.prompt.md",
|
|
51238
|
+
"sha256": "6f60672f2c19cfe7130e1b32f9d8a422bf2ad546c84ac3dc96907415a451b930",
|
|
51239
|
+
"scope": "Component usage guidance with generated declared-API projection; implementation authority remains source",
|
|
51240
|
+
"checkedAt": "2026-10-21T12:08:13.113Z"
|
|
51241
|
+
},
|
|
51242
|
+
{
|
|
51243
|
+
"path": "stories/InlineEdit.stories.jsx",
|
|
51244
|
+
"sha256": "6e9fdd26b7c8bbe7ffefb87fad4e271b856fc2f449ef33970cd332b8d2a81656",
|
|
51245
|
+
"scope": "Authored Storybook CSF story and declared matrix mount surface; not execution or all-state acceptance",
|
|
51246
|
+
"checkedAt": "2026-10-21T12:08:13.113Z"
|
|
51247
|
+
}
|
|
51248
|
+
],
|
|
51249
|
+
"environments": [
|
|
51250
|
+
"Declared web target: React18/19 through compiled default @cyberskill/design and /react entry, with peer React; raw JSX requires explicit /source opt-in and a consumer JSX toolchain.",
|
|
51251
|
+
"Declared browser compatibility entry: legacy _esm/cs.mjs / _ds_bundle.js; browser-only, not an SSR entry. Source and compiled module families must not be mixed.",
|
|
51252
|
+
"Storybook10 authored CSF/matrix surface is a demonstration/test target. Actual engine/runtime/state coverage is listed separately in execution receipts."
|
|
51253
|
+
],
|
|
51254
|
+
"axes": [
|
|
51255
|
+
"Theme: light, dark, system (token/CSS contract)",
|
|
51256
|
+
"Element: 5 Ngũ Hành elements / 15 packs",
|
|
51257
|
+
"Language: vi, en",
|
|
51258
|
+
"Style: default, liquid-glass"
|
|
51259
|
+
]
|
|
51219
51260
|
}
|
|
51220
51261
|
]
|
|
51221
51262
|
},
|
|
@@ -74693,7 +74734,7 @@
|
|
|
74693
74734
|
"sourcePath": "components/forms/SearchField.jsx",
|
|
74694
74735
|
"declarationPath": "components/forms/SearchField.d.ts",
|
|
74695
74736
|
"promptPath": "components/forms/SearchField.prompt.md",
|
|
74696
|
-
"sourceSha256": "
|
|
74737
|
+
"sourceSha256": "e48eec5e6f3d65719ea4f72e833d67a6b05d2cc6fb49b53a621d0e832f33838e",
|
|
74697
74738
|
"declarationSha256": "16b63c44bbdf6d4f9f8f05f0612cbcd8d92b6d4af5800d90fd120a5f1f60a5fa",
|
|
74698
74739
|
"declaredLifecycle": "stable",
|
|
74699
74740
|
"support": {
|
|
@@ -74719,7 +74760,7 @@
|
|
|
74719
74760
|
},
|
|
74720
74761
|
{
|
|
74721
74762
|
"path": "components/forms/SearchField.jsx",
|
|
74722
|
-
"sha256": "
|
|
74763
|
+
"sha256": "e48eec5e6f3d65719ea4f72e833d67a6b05d2cc6fb49b53a621d0e832f33838e",
|
|
74723
74764
|
"scope": "Authoritative React implementation source for this declared export; shared source may define companion exports",
|
|
74724
74765
|
"checkedAt": "2026-10-21T12:08:13.113Z"
|
|
74725
74766
|
},
|
|
@@ -97243,7 +97284,7 @@
|
|
|
97243
97284
|
"sourcePath": "components/forms/TreeSelect.jsx",
|
|
97244
97285
|
"declarationPath": "components/forms/TreeSelect.d.ts",
|
|
97245
97286
|
"promptPath": "components/forms/TreeSelect.prompt.md",
|
|
97246
|
-
"sourceSha256": "
|
|
97287
|
+
"sourceSha256": "ab5bc70e1cb1ab10df72a39456e4f4ac88e7907c25cd1dde8ded1d9c5c8b31e3",
|
|
97247
97288
|
"declarationSha256": "3623e81530a0900556a713346f5ea7a96c02dc185a1481589d45190f5b09c33e",
|
|
97248
97289
|
"declaredLifecycle": "stable",
|
|
97249
97290
|
"support": {
|
|
@@ -97269,7 +97310,7 @@
|
|
|
97269
97310
|
},
|
|
97270
97311
|
{
|
|
97271
97312
|
"path": "components/forms/TreeSelect.jsx",
|
|
97272
|
-
"sha256": "
|
|
97313
|
+
"sha256": "ab5bc70e1cb1ab10df72a39456e4f4ac88e7907c25cd1dde8ded1d9c5c8b31e3",
|
|
97273
97314
|
"scope": "Authoritative React implementation source for this declared export; shared source may define companion exports",
|
|
97274
97315
|
"checkedAt": "2026-10-21T12:08:13.113Z"
|
|
97275
97316
|
},
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<title>CyberSkill — LumiAvatar</title>
|
|
6
6
|
<meta name="description" content="LumiAvatar: Golden-genie mascot avatar — sizes + ring" />
|
|
7
7
|
<meta charset="utf-8" />
|
|
8
|
-
<link rel="stylesheet" href="../../styles.css" />
|
|
8
|
+
<link rel="stylesheet" href="../../dist/styles.css" />
|
|
9
9
|
<style>
|
|
10
10
|
body { margin: 0; background: var(--cs-color-surface-page); padding: 22px 24px; }
|
|
11
11
|
.row { display: flex; align-items: center; gap: 24px; }
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
7
7
|
<title>CyberSkill — Button</title>
|
|
8
8
|
<meta name="description" content="Button: Variants, sizes, states — Umber primary, composite focus" />
|
|
9
|
-
<link rel="stylesheet" href="../../styles.css" />
|
|
9
|
+
<link rel="stylesheet" href="../../dist/styles.css" />
|
|
10
10
|
<style>
|
|
11
11
|
body { margin: 0; background: var(--cs-color-surface-page); padding: 22px 24px; }
|
|
12
12
|
.row { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin-bottom: 16px; }
|
|
@@ -4897,7 +4897,7 @@
|
|
|
4897
4897
|
"sourcePath": "components/forms/Cascader.jsx",
|
|
4898
4898
|
"declarationPath": "components/forms/Cascader.d.ts",
|
|
4899
4899
|
"promptPath": "components/forms/Cascader.prompt.md",
|
|
4900
|
-
"sourceSha256": "
|
|
4900
|
+
"sourceSha256": "09380cc01ef61a3cc0fb0d4f065345f4e31a6cd197cd4a9d837ffdc144b22bde",
|
|
4901
4901
|
"authoredProps": [
|
|
4902
4902
|
"aria-labelledby",
|
|
4903
4903
|
"className",
|
|
@@ -6004,7 +6004,7 @@
|
|
|
6004
6004
|
"sourcePath": "components/forms/ColorPicker.jsx",
|
|
6005
6005
|
"declarationPath": "components/forms/ColorPicker.d.ts",
|
|
6006
6006
|
"promptPath": "components/forms/ColorPicker.prompt.md",
|
|
6007
|
-
"sourceSha256": "
|
|
6007
|
+
"sourceSha256": "90d7990c0e97ca31592bb7a48153d85944016b4424c0ac58837c8295c33d8695",
|
|
6008
6008
|
"authoredProps": [
|
|
6009
6009
|
"aria-labelledby",
|
|
6010
6010
|
"className",
|
|
@@ -10287,7 +10287,7 @@
|
|
|
10287
10287
|
"sourcePath": "components/forms/InlineEdit.jsx",
|
|
10288
10288
|
"declarationPath": "components/forms/InlineEdit.d.ts",
|
|
10289
10289
|
"promptPath": "components/forms/InlineEdit.prompt.md",
|
|
10290
|
-
"sourceSha256": "
|
|
10290
|
+
"sourceSha256": "9f242ef99af077e5c9b68d36cc9539fac0819e66f7995fa6a93ecb7793bf3484",
|
|
10291
10291
|
"authoredProps": [
|
|
10292
10292
|
"className",
|
|
10293
10293
|
"controlRef",
|
|
@@ -17142,7 +17142,7 @@
|
|
|
17142
17142
|
"sourcePath": "components/forms/SearchField.jsx",
|
|
17143
17143
|
"declarationPath": "components/forms/SearchField.d.ts",
|
|
17144
17144
|
"promptPath": "components/forms/SearchField.prompt.md",
|
|
17145
|
-
"sourceSha256": "
|
|
17145
|
+
"sourceSha256": "e48eec5e6f3d65719ea4f72e833d67a6b05d2cc6fb49b53a621d0e832f33838e",
|
|
17146
17146
|
"authoredProps": [
|
|
17147
17147
|
"onChange",
|
|
17148
17148
|
"onClear",
|
|
@@ -23720,7 +23720,7 @@
|
|
|
23720
23720
|
"sourcePath": "components/forms/TreeSelect.jsx",
|
|
23721
23721
|
"declarationPath": "components/forms/TreeSelect.d.ts",
|
|
23722
23722
|
"promptPath": "components/forms/TreeSelect.prompt.md",
|
|
23723
|
-
"sourceSha256": "
|
|
23723
|
+
"sourceSha256": "ab5bc70e1cb1ab10df72a39456e4f4ac88e7907c25cd1dde8ded1d9c5c8b31e3",
|
|
23724
23724
|
"authoredProps": [
|
|
23725
23725
|
"aria-labelledby",
|
|
23726
23726
|
"className",
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<title>CyberSkill — Collections & content</title>
|
|
6
6
|
<meta name="description" content="Collections & content: List, Item, DescriptionList, Timeline, Accordion, Collapsible, Kbd, CodeBlock" />
|
|
7
7
|
<meta charset="utf-8" />
|
|
8
|
-
<link rel="stylesheet" href="../../styles.css" />
|
|
8
|
+
<link rel="stylesheet" href="../../dist/styles.css" />
|
|
9
9
|
<style>
|
|
10
10
|
body { margin: 0; background: var(--cs-color-surface-page); padding: 22px 24px; }
|
|
11
11
|
.cols { display: grid; grid-template-columns: 1fr 1fr; gap: 26px; align-items: start; }
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
7
7
|
<title>CyberSkill — Data & layout</title>
|
|
8
8
|
<meta name="description" content="Data & layout: Card, Stat, Avatar, Tooltip, Divider, ScrollArea, AspectRatio" />
|
|
9
|
-
<link rel="stylesheet" href="../../styles.css" />
|
|
9
|
+
<link rel="stylesheet" href="../../dist/styles.css" />
|
|
10
10
|
<style>
|
|
11
11
|
body { margin: 0; background: var(--cs-color-surface-page); padding: 22px 24px; }
|
|
12
12
|
.grid { display: grid; grid-template-columns: 1.2fr 1fr; gap: 20px; max-width: 640px; align-items: start; }
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
7
7
|
<title>CyberSkill — DataTable</title>
|
|
8
8
|
<meta name="description" content="DataTable: Caption, scoped headers, idle / loading / error / empty" />
|
|
9
|
-
<link rel="stylesheet" href="../../styles.css" />
|
|
9
|
+
<link rel="stylesheet" href="../../dist/styles.css" />
|
|
10
10
|
<style>
|
|
11
11
|
body { margin: 0; background: var(--cs-color-surface-page); padding: 22px 24px; }
|
|
12
12
|
.wrap { border: 1px solid var(--cs-color-border-default); border-radius: var(--cs-radius-lg); padding: 6px 16px 10px; background: var(--cs-color-surface-panel); max-width: 640px; }
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
7
7
|
<title>CyberSkill — Dialog</title>
|
|
8
8
|
<meta name="description" content="Dialog: Modal overlay + panel with footer actions" />
|
|
9
|
-
<link rel="stylesheet" href="../../styles.css" />
|
|
9
|
+
<link rel="stylesheet" href="../../dist/styles.css" />
|
|
10
10
|
<style>
|
|
11
11
|
body { margin: 0; background: var(--cs-color-surface-page); padding: 22px 24px; }
|
|
12
12
|
/* Scope the fixed dialog layer to the preview frame so it renders inline in the card. */
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<title>CyberSkill — Status & empty state</title>
|
|
6
6
|
<meta name="description" content="Status & empty state: StatusIndicator, EmptyState" />
|
|
7
7
|
<meta charset="utf-8" />
|
|
8
|
-
<link rel="stylesheet" href="../../styles.css" />
|
|
8
|
+
<link rel="stylesheet" href="../../dist/styles.css" />
|
|
9
9
|
<style>
|
|
10
10
|
body { margin: 0; background: var(--cs-color-surface-page); padding: 22px 24px; }
|
|
11
11
|
.row { display: flex; align-items: center; gap: 22px; flex-wrap: wrap; margin-bottom: 18px; }
|
|
@@ -6,13 +6,13 @@
|
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
7
7
|
<title>CyberSkill — Feedback & status</title>
|
|
8
8
|
<meta name="description" content="Feedback & status: Badge, Tag, Alert, Toast, Spinner, Progress, Skeleton" />
|
|
9
|
-
<link rel="stylesheet" href="../../styles.css" />
|
|
9
|
+
<link rel="stylesheet" href="../../dist/styles.css" />
|
|
10
10
|
<style>
|
|
11
11
|
body { margin: 0; background: var(--cs-color-surface-page); padding: 22px 24px; }
|
|
12
12
|
.stack { display: grid; gap: 18px; max-width: 620px; }
|
|
13
13
|
.row { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
|
|
14
14
|
.lbl { width: 100%; font: 600 11px/1 var(--cs-font-family-ui); text-transform: uppercase; letter-spacing: .09em; color: var(--cs-color-text-muted); }
|
|
15
|
-
.frame { position: relative; height: 96px; border: 1px solid var(--cs-color-border-default); border-radius: var(--cs-radius-md); background: var(--cs-color-surface-raised); }
|
|
15
|
+
.frame { position: relative; flex: 1 1 100%; min-width: 0; height: 96px; border: 1px solid var(--cs-color-border-default); border-radius: var(--cs-radius-md); background: var(--cs-color-surface-raised); }
|
|
16
16
|
.frame .cs-toast-stack { position: absolute; inset-block-end: 12px; inset-inline-end: 12px; }
|
|
17
17
|
</style>
|
|
18
18
|
<script src="../../_vendor/react/react.production.min.js"></script>
|
|
@@ -98,7 +98,7 @@ export const Cascader = React.forwardRef(function Cascader({ portal = true, plac
|
|
|
98
98
|
return (
|
|
99
99
|
<overlayScopeContext.Provider value={scope}>
|
|
100
100
|
<div ref={mergedNativeRef} {...mergeTargetProps({ className: cx("cs-cascader", className) }, rootProps)}>
|
|
101
|
-
<button {...mergeTargetProps({ ...control, type: "button", className: "cs-treeselect__field", disabled, "aria-haspopup": "listbox", "aria-expanded": open, onClick: ()
|
|
101
|
+
<button {...mergeTargetProps({ ...control, type: "button", className: "cs-treeselect__field", disabled, "aria-haspopup": "listbox", "aria-expanded": open, onClick: event => { if (!open) event.currentTarget.focus(); setOpen(o => !o); }, onKeyDown: (e) => {
|
|
102
102
|
if (e.defaultPrevented || e.nativeEvent.isComposing || e.nativeEvent.keyCode === 229) return;
|
|
103
103
|
// Once open, the document handler owns arrows from this trigger too.
|
|
104
104
|
if (open && e.key === "ArrowDown") return;
|
|
@@ -37,7 +37,7 @@ export const ColorPicker = React.forwardRef(function ColorPicker({ portal = true
|
|
|
37
37
|
return (
|
|
38
38
|
<overlayScopeContext.Provider value={scope}>
|
|
39
39
|
<span ref={mergedNativeRef} {...mergeTargetProps({ className: cx("cs-colorpicker", className) }, rootProps)}>
|
|
40
|
-
<button {...mergeTargetProps({ ...control, type: "button", className: "cs-colorpicker__field", "aria-expanded": open, onClick: ()
|
|
40
|
+
<button {...mergeTargetProps({ ...control, type: "button", className: "cs-colorpicker__field", "aria-expanded": open, onClick: event => { if (!open) event.currentTarget.focus(); setOpen(o => !o); } }, controlProps, ["id", "role", "type", "name", "value", "defaultValue", "disabled", "required", "aria-required", "aria-label", "aria-labelledby", "aria-describedby", "aria-invalid", "aria-haspopup", "aria-expanded", "aria-controls", "aria-activedescendant"])} ref={mergedControlRef} >
|
|
41
41
|
<i style={{ background: value }} /><code>{value}</code>
|
|
42
42
|
</button>
|
|
43
43
|
{open ? (
|
|
@@ -4,6 +4,7 @@ import React from "react";
|
|
|
4
4
|
import { makeT, useLang } from "../_i18n/i18n.js";
|
|
5
5
|
import { useOverlayLayer, overlayScopeContext } from "../overlays/OverlayManager.jsx";
|
|
6
6
|
import { cx } from "../_utils/cx.js";
|
|
7
|
+
import { useClientLayoutEffect } from "../_utils/use-client-layout-effect.js";
|
|
7
8
|
const PEN = <svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.9" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true"><path d="M4 20l4.5-.9L20 7.6a2 2 0 0 0-2.8-2.8L5.7 16.3 4 20z" /></svg>;
|
|
8
9
|
|
|
9
10
|
/** CyberSkill InlineEdit — click-to-edit text. Enter/blur commits, Escape cancels. */
|
|
@@ -14,6 +15,7 @@ export const InlineEdit = React.forwardRef(function InlineEdit({ controlRef, val
|
|
|
14
15
|
const [edit, setEdit] = React.useState(false);
|
|
15
16
|
const [draft, setDraft] = React.useState(val);
|
|
16
17
|
const cancellingRef = React.useRef(false);
|
|
18
|
+
const restoreFocusRef = React.useRef(false);
|
|
17
19
|
const commit = () => {
|
|
18
20
|
if (cancellingRef.current) { cancellingRef.current = false; return; }
|
|
19
21
|
setEdit(false);
|
|
@@ -21,18 +23,26 @@ export const InlineEdit = React.forwardRef(function InlineEdit({ controlRef, val
|
|
|
21
23
|
};
|
|
22
24
|
const [ref, L, localeMessages] = useLang(lang);
|
|
23
25
|
const mergedNativeRef = useComposedRefs(ref, forwardedRef);
|
|
26
|
+
// Keyboard completion removes the input. Restore its replacement in the same
|
|
27
|
+
// commit; blur completion must leave focus on the user's next target.
|
|
28
|
+
useClientLayoutEffect(() => {
|
|
29
|
+
if (!edit && restoreFocusRef.current) {
|
|
30
|
+
restoreFocusRef.current = false;
|
|
31
|
+
ref.current?.querySelector("button")?.focus();
|
|
32
|
+
}
|
|
33
|
+
}, [edit]);
|
|
24
34
|
const t = makeT("InlineEdit", L, localeMessages);
|
|
25
35
|
const { scope } = useOverlayLayer({ open: edit, kind: "popover", panelRef: ref, restoreFocus: false, onEscape: () => {
|
|
26
36
|
cancellingRef.current = true;
|
|
37
|
+
restoreFocusRef.current = true;
|
|
27
38
|
setDraft(val); setEdit(false);
|
|
28
|
-
requestAnimationFrame(() => ref.current?.querySelector("button")?.focus());
|
|
29
39
|
} });
|
|
30
40
|
return (
|
|
31
41
|
<overlayScopeContext.Provider value={scope}>
|
|
32
42
|
<span ref={mergedNativeRef} {...mergeTargetProps({ "className": cx("cs-inline-edit", className) }, rootProps, [])}>
|
|
33
43
|
{edit ? (
|
|
34
44
|
<input autoFocus value={draft} aria-label={label || t("edit")} onChange={(e) => setDraft(e.target.value)} onBlur={commit}
|
|
35
|
-
onKeyDown={(e) => { if (!e.nativeEvent.isComposing && e.keyCode !== 229 && e.key === "Enter") commit(); }} ref={mergedControlRef} />
|
|
45
|
+
onKeyDown={(e) => { if (!e.nativeEvent.isComposing && e.keyCode !== 229 && e.key === "Enter") { e.preventDefault(); restoreFocusRef.current = true; commit(); } }} ref={mergedControlRef} />
|
|
36
46
|
) : (
|
|
37
47
|
<button type="button" className="cs-inline-edit__view" aria-label={t("edit") + (label ? ": " + label : "")} onClick={() => { cancellingRef.current = false; setDraft(val); setEdit(true); }}>
|
|
38
48
|
<span className={val ? undefined : "ph"}>{val || t("empty")}</span>{PEN}
|
|
@@ -18,7 +18,7 @@ export const SearchField = React.forwardRef(function SearchField({ value, defaul
|
|
|
18
18
|
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true"><circle cx="11" cy="11" r="7" /><path d="M21 21l-4.3-4.3" /></svg>
|
|
19
19
|
<input aria-label={props["aria-label"] || (props["aria-labelledby"] ? undefined : ph)} {...props} type="text" role="searchbox" value={val} disabled={disabled} readOnly={readOnly} placeholder={ph} onChange={(e) => set(e.target.value)} ref={mergedNativeRef} />
|
|
20
20
|
{String(val).length ? (
|
|
21
|
-
<button type="button" className="cs-search__clear" aria-label={t("clear")} disabled={disabled || readOnly} onClick={() => { if (disabled || readOnly) return; set(""); onClear && onClear(); }}>
|
|
21
|
+
<button type="button" className="cs-search__clear" aria-label={t("clear")} disabled={disabled || readOnly} onClick={() => { if (disabled || readOnly) return; set(""); onClear && onClear(); ref.current?.querySelector("input")?.focus(); }}>
|
|
22
22
|
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round"><path d="M6 6l12 12M18 6L6 18" /></svg>
|
|
23
23
|
</button>
|
|
24
24
|
) : null}
|