             action        : rtypes.string
             loaded        : rtypes.bool
             selected_plan : rtypes.string
+        projects :
+            project_map : rtypes.immutable # used, e.g., for course project payments
 
     propTypes :
         redux : rtypes.object

{redux, rclass, React, ReactDOM, rtypes, Redux, Actions, Store}  = require('./smc-react')

{Button, ButtonToolbar, Input, Row, Col, Panel, Well, Alert, ButtonGroup} = require('react-bootstrap')
{ActivityDisplay, ErrorDisplay, Icon, Loading, SelectorInput, r_join, Space, Tip} = require('./r_misc')
{HelpEmailLink} = require('./customize')

{PROJECT_UPGRADES} = require('smc-util/schema')

        cards    = @props.customer?.sources?.total_count ? 0
        subs     = @props.customer?.subscriptions?.total_count ? 0
        invoices = @props.invoices?.data?.length ? 0
        if cards == 0
            if subs == 0
                # no payment sources yet; no subscriptions either: a new user (probably)
