import type { Morfo } from '../types'; import { v } from '../types'; export const editableMorfo = { name: 'Editable', kebab: 'editable', scope: ['soma'], parts: [ { name: 'Provider', kebab: 'provider', archetype: 'provider', kind: 'public', defaultElement: 'div', optional: false, data: [ { attr: 'data-editing', severity: 'optional' }, { attr: 'data-empty', severity: 'optional' }, { attr: 'data-disabled', severity: 'optional' }, { attr: 'data-readonly', severity: 'optional' } ], aria: [] }, { name: 'Area', kebab: 'area', kind: 'public', defaultElement: 'div', optional: true, data: [], aria: [] }, { name: 'Preview', kebab: 'preview', archetype: 'preview', kind: 'public', defaultElement: 'div', role: 'textbox', optional: false, data: [ { attr: 'data-placeholder-shown', severity: 'optional' }, { attr: 'data-disabled', severity: 'optional' }, { attr: 'data-readonly', severity: 'optional' } ], aria: [ { attr: 'aria-readonly', value: v.literal('true') }, { attr: 'aria-label', value: v.propRef('placeholder'), severity: 'optional' } ] }, { name: 'Input', kebab: 'input', archetype: 'input', kind: 'public', defaultElement: 'input', optional: false, data: [ { attr: 'data-disabled', severity: 'optional' }, { attr: 'data-readonly', severity: 'optional' } ], aria: [ { attr: 'aria-disabled', value: v.literal('true'), severity: 'optional', condition: { when: 'prop-truthy', prop: 'disabled' } } ], keyboard: [ { key: 'Enter', action: 'submit' }, { key: 'Escape', action: 'cancel' } ] }, { name: 'EditTrigger', kebab: 'edit-trigger', archetype: 'trigger', kind: 'public', defaultElement: 'button', role: 'button', optional: true, data: [], aria: [ { attr: 'type', value: v.literal('button') }, { attr: 'aria-label', value: v.commonRef('buttons.edit', 'Edit'), severity: 'recommended' } ] }, { name: 'SubmitTrigger', kebab: 'submit-trigger', archetype: 'action', kind: 'public', defaultElement: 'button', role: 'button', optional: true, data: [{ attr: 'data-disabled', severity: 'optional' }], aria: [ { attr: 'type', value: v.literal('button') }, { attr: 'aria-label', value: v.commonRef('buttons.save', 'Save'), severity: 'recommended' } ] }, { name: 'CancelTrigger', kebab: 'cancel-trigger', archetype: 'action', kind: 'public', defaultElement: 'button', role: 'button', optional: true, data: [{ attr: 'data-disabled', severity: 'optional' }], aria: [ { attr: 'type', value: v.literal('button') }, { attr: 'aria-label', value: v.commonRef('buttons.cancel', 'Cancel'), severity: 'recommended' } ] } ] } as const satisfies Morfo;