@@ -882,7 +882,8 @@ export function DashboardView({ session, onDisconnect }: DashboardViewProps) {
882882 < p > Save recurring stream settings once, apply instantly, then override before submitting.</ p >
883883
884884 < div className = "stream-template-editor" >
885- < input value = { templateNameInput } onChange = { ( e ) => setTemplateNameInput ( e . target . value ) } placeholder = "e.g. Monthly Contributor Payroll" aria-label = "Template name" />
885+ < label htmlFor = "template-name-input" className = "visually-hidden" > Template name</ label >
886+ < input id = "template-name-input" value = { templateNameInput } onChange = { ( e ) => setTemplateNameInput ( e . target . value ) } placeholder = "e.g. Monthly Contributor Payroll" />
886887 < div className = "stream-template-editor__actions" >
887888 < button type = "button" className = "secondary-button" disabled = { ! isTemplateNameValid } onClick = { handleSaveTemplate } > { saveTemplateButtonLabel } </ button >
888889 { editingTemplateId ? < button type = "button" className = "secondary-button" onClick = { handleClearTemplateEditor } > Stop Editing</ button > : null }
@@ -916,28 +917,28 @@ export function DashboardView({ session, onDisconnect }: DashboardViewProps) {
916917 < h4 > Stream Configuration</ h4 >
917918 < p > { requiredFieldsCompleted } / 5 required fields completed</ p >
918919 </ div >
919- < label className = "stream-form__template-select" >
920+ < label htmlFor = "template-select" className = "stream-form__template-select" >
920921 Load template
921- < select value = { selectedTemplateId ?? "" } onChange = { ( e ) => { const id = e . target . value ; if ( ! id ) { setSelectedTemplateId ( null ) ; return ; } handleApplyTemplate ( id ) ; } } >
922+ < select id = "template-select" value = { selectedTemplateId ?? "" } onChange = { ( e ) => { const id = e . target . value ; if ( ! id ) { setSelectedTemplateId ( null ) ; return ; } handleApplyTemplate ( id ) ; } } >
922923 < option value = "" > Select saved template</ option >
923924 { templates . map ( ( t ) => < option key = { t . id } value = { t . id } > { t . name } </ option > ) }
924925 </ select >
925926 </ label >
926927 </ div >
927928
928- < label > Recipient Address< input required type = "text" value = { streamForm . recipient } onChange = { ( e ) => updateStreamForm ( "recipient" , e . target . value ) } placeholder = "G..." /> </ label >
929+ < label htmlFor = "stream-recipient" > Recipient Address< input id = "stream-recipient" required type = "text" value = { streamForm . recipient } onChange = { ( e ) => updateStreamForm ( "recipient" , e . target . value ) } placeholder = "G..." /> </ label >
929930 < div className = "stream-form__row" >
930- < label > Token< input required type = "text" value = { streamForm . token } onChange = { ( e ) => updateStreamForm ( "token" , e . target . value . toUpperCase ( ) ) } placeholder = "USDC" /> </ label >
931- < label > Total Amount< input required type = "number" min = "0" step = "0.0000001" value = { streamForm . totalAmount } onChange = { ( e ) => updateStreamForm ( "totalAmount" , e . target . value ) } placeholder = "100" /> </ label >
931+ < label htmlFor = "stream-token" > Token< input id = "stream-token" required type = "text" value = { streamForm . token } onChange = { ( e ) => updateStreamForm ( "token" , e . target . value . toUpperCase ( ) ) } placeholder = "USDC" /> </ label >
932+ < label htmlFor = "stream-total-amount" > Total Amount< input id = "stream-total-amount" required type = "number" min = "0" step = "0.0000001" value = { streamForm . totalAmount } onChange = { ( e ) => updateStreamForm ( "totalAmount" , e . target . value ) } placeholder = "100" /> </ label >
932933 </ div >
933934 < div className = "stream-form__row" >
934- < label > Starts At< input required type = "datetime-local" value = { streamForm . startsAt } onChange = { ( e ) => updateStreamForm ( "startsAt" , e . target . value ) } /> </ label >
935- < label > Ends At< input required type = "datetime-local" value = { streamForm . endsAt } onChange = { ( e ) => updateStreamForm ( "endsAt" , e . target . value ) } /> </ label >
935+ < label htmlFor = "stream-starts-at" > Starts At< input id = "stream-starts-at" required type = "datetime-local" value = { streamForm . startsAt } onChange = { ( e ) => updateStreamForm ( "startsAt" , e . target . value ) } /> </ label >
936+ < label htmlFor = "stream-ends-at" > Ends At< input id = "stream-ends-at" required type = "datetime-local" value = { streamForm . endsAt } onChange = { ( e ) => updateStreamForm ( "endsAt" , e . target . value ) } /> </ label >
936937 </ div >
937938 < div className = "stream-form__row" >
938- < label > Cadence (seconds)< input type = "number" min = "1" step = "1" value = { streamForm . cadenceSeconds } onChange = { ( e ) => updateStreamForm ( "cadenceSeconds" , e . target . value ) } /> </ label >
939+ < label htmlFor = "stream-cadence" > Cadence (seconds)< input id = "stream-cadence" type = "number" min = "1" step = "1" value = { streamForm . cadenceSeconds } onChange = { ( e ) => updateStreamForm ( "cadenceSeconds" , e . target . value ) } /> </ label >
939940 </ div >
940- < label > Note< textarea value = { streamForm . note } onChange = { ( e ) => updateStreamForm ( "note" , e . target . value ) } placeholder = "Optional internal note for this stream configuration." /> </ label >
941+ < label htmlFor = "stream-note" > Note< textarea id = "stream-note" value = { streamForm . note } onChange = { ( e ) => updateStreamForm ( "note" , e . target . value ) } placeholder = "Optional internal note for this stream configuration." /> </ label >
941942
942943 < div className = "stream-form__actions" >
943944 < button type = "submit" className = "wallet-button" disabled = { isFormSubmitting } > { isFormSubmitting ? "Submitting..." : "Create Stream" } </ button >
0 commit comments