mirror of
https://github.com/nexu-io/open-design.git
synced 2026-09-20 06:15:06 +08:00
4908baa4f4
* feat(design-systems): add structured runtime contract (#6456) * feat(design-systems): add structured runtime contract * chore: retrigger CI for PR 6456 --------- Co-authored-by: xiaoche-hub <298951296+xiaoche-hub@users.noreply.github.com> Co-authored-by: mrcfps <mrc@powerformer.com> * feat(design-systems): resolve structured runtime intents * fix(design-systems): preserve workspace runtime scope * test(design-systems): cover scoped prompt runtime * fix(design-systems): use one component authority * fix(design-systems): preserve run workspace authority * fix(design-systems): honor runtime rollback gate * fix(design-systems): pin run binding authority * fix(runs): reject client-supplied scopes * fix(design-systems): keep user package assets scoped * feat(design-systems): validate generated UI adherence * test(e2e): assert durable reload authority state * fix(design-systems): reject non-executable adherence evidence * fix: harden design system adherence validation * fix(design-systems): validate JSX selectors structurally * fix(design-systems): close adherence input gaps * chore(nix): refresh pnpm dependency hashes * chore(ci): retrigger design system validation * fix(daemon): bound design system artifact reads * fix(design-systems): bridge Codex runtime tools * docs(codex): clarify shell environment policy --------- Co-authored-by: open-design-crew[bot] <299007234+open-design-crew[bot]@users.noreply.github.com> Co-authored-by: xiaoche-hub <298951296+xiaoche-hub@users.noreply.github.com> Co-authored-by: mrcfps <mrc@powerformer.com>
24 lines
899 B
JSON
24 lines
899 B
JSON
{
|
|
"schemaVersion": "od-design-system-component/v1",
|
|
"id": "Button",
|
|
"name": "Button",
|
|
"description": "Precise Webflow primary and secondary actions.",
|
|
"selectors": [".btn"],
|
|
"variants": {
|
|
"primary": { "selectors": [".btn-primary"] },
|
|
"secondary": { "selectors": [".btn-secondary"] }
|
|
},
|
|
"properties": {
|
|
"label": { "type": "string", "required": true },
|
|
"disabled": { "type": "boolean", "default": false }
|
|
},
|
|
"states": {
|
|
"hoverPrimary": { "selectors": [".btn-primary:hover"] },
|
|
"activePrimary": { "selectors": [".btn-primary:active"] },
|
|
"hoverSecondary": { "selectors": [".btn-secondary:hover"] },
|
|
"focus": { "selectors": [".btn:focus-visible"], "required": true }
|
|
},
|
|
"implementation": "<button class=\"btn btn-primary\" type=\"button\">{{label}}<span class=\"btn-icon\" aria-hidden=\"true\">→</span></button>",
|
|
"source": "components.html"
|
|
}
|