         onChange  : rtypes.func.isRequired
         onBlur    : rtypes.func
         maxLength : rtypes.number
+        disabled  : rtypes.bool
 
     getValue: ->
         ReactDOM.findDOMNode(@refs.input).value
 
     render: ->
-        <LabeledRow label={@props.label}>
+        <LabeledRow label={@props.label} style={if @props.disabled then {color:"#666"}}>
             <FormGroup>
                 <FormControl
                     ref      = 'input'

        />

    render_sign_out_buttons: (is_anon) ->
        <div className='pull-right'>
            <SignOut everywhere={false}/>
            {if not is_anon then <Space/>}
            {if not is_anon then <SignOut everywhere={true}/>}
        </div>

    render_sign_in_strategies: ->
        if not STRATEGIES? or STRATEGIES.length <= 1
            return
        strategies = (x.slice(0,x.indexOf('-')) for x in misc.keys(@props.passports?.toJS() ? {}))
        <div>
            <hr key='hr0' />
            <h5 style={color:"#666"}>Linked external accounts</h5>
            <ButtonToolbar style={marginBottom:'10px'} >
                {(@render_strategy(strategy, strategies) for strategy in STRATEGIES)}
            </ButtonToolbar>
            {@render_add_strategy_link()}
            {@render_remove_strategy_button()}
        </div>

    render_anonymous_warning:  (is_anon)  ->

                onChange  = {(e)=>@handle_change(e, 'first_name')}
                onBlur    = {(e)=>@save_change(e, 'first_name')}
                maxLength = {254}
                disabled  = {is_anon and not @state.terms_checkbox}
                />
            <TextSetting
                label    = 'Last name'
