jamehydro

1.0.2 • Public • Published

hydrogen

A React component library for Hydrogen

Swish Logo CircleCI

Table of contents

How to use

Installing dependencies

yarn 

Running Tests

yarn test

Documentation

Run Docz local server to view UI components on localhost
Typically this will run on http://127.0.0.1:3000/

yarn docz:dev

Components

Below you will find information about each individual component and an example usage. Prop tables included.

Button
<Button primary>Primary</Button>
<Button action="true">Action Button</Button>
<Button>Default</Button>

Button.propTypes = {
 onClick: PropTypes.func,
 primary: PropTypes.any,
 action: PropTypes.string
};
Callouts
<Callout 
 buttonTextPrimary="Action Item 1" 
 buttonTextSecondary="Action Item 2" 
 primaryAction={()=>alert('Primary')} 
 secondaryAction={()=>alert('Secondary')}>
 Lorem Ipsum is simply dummy text of the printing and typesetting industry. 
</Callout>
<Callout buttonTextPrimary="Action Item 1" small>
 Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's
</Callout>
 
Callout.propTypes = {
 primaryAction: PropTypes.func,
 secondaryAction: PropTypes.func,
 buttonTextPrimary: PropTypes.string,
 buttonTextSecondary: PropTypes.string,
};
Cells
<CellGroup>
 <Cell id={1} value="Top" name="color" onChange={(v) => console.log(v.target.value)}>Top Cell</Cell>
 <Cell id={2} value="Mid" name="color" onChange={(v) => console.log(v.target.value)}>Middle Cell</Cell>
 <Cell id={3} value="Bot" name="color" onChange={(v) => console.log(v.target.value)}>Bottom Cell</Cell>
</CellGroup>
 
Cell.propTypes = {
 onChange: PropTypes.func,
 name: PropTypes.string,
 checked: PropTypes.bool,
 value: PropTypes.string,
 id: PropTypes.node
};
Dropdown
<Dropdown
 options={[{value: 'red', name: 'Red'}, {value: 'blue', name: 'Blue'}, {value: 'green', name: 'Green'}]}
 label="Colors of Rainbow" 
 name="colors" />
 
Dropdown.propTypes = {
 onChange: PropTypes.func,
 name: PropTypes.string,
 value: PropTypes.string,
 options: PropTypes.any.isRequired
};
Horizontal Bar Graph
<VisualCardBarGraph 
   title="Savings Progress"
   value1={64} subtitle1={'Subtitle1'} 
   value2={120} subtitle2={'Subtitle2'} 
   value3={100} subtitle3={'Subtitle3'} 
 />
 
VisualCardBarGraph.propTypes = {
 title: PropTypes.string,
 value1: PropTypes.number.isRequired,
 value2: PropTypes.number,
 value3: PropTypes.number,
 subtitle1: PropTypes.string.isRequired,
 subtitle2: PropTypes.string,
 subtitle3: PropTypes.string,
};
Icons

See here for a complete list

<Icon size={30} color="black" icon="Analytics" />
 
Icon.defaultProps = {
 className: '',
 color: '',
 size: '100%',
};
Insight Cards (responsive)
 <InsightIconCard label='Education' value={230000} goal={400000} icon="Education" />
 <InsightProfileCard 
   profile="Investment Profile 1" 
   time="2-5 years" 
   best={132000} 
   worst={400} 
   average={3400} 
   onClick={() => alert('View Portfolio')}/>
 <br />
 
InsightIconCard.propTypes = {
 icon: PropTypes.string,
 label: PropTypes.string,
 value: PropTypes.number,
 goal: PropTypes.number,
 onClick: PropTypes.func
};

InsightProfileCard.propTypes = {
 profile: PropTypes.string,
 time: PropTypes.string,
 best: PropTypes.number,
 worst: PropTypes.number,
 onClick: PropTypes.func
};
Insight Tabs
<InsightTab label='Goal Name Long' balance={230000} tracking={true} selected={true} />
 
InsightTab.propTypes = {
 onClick: PropTypes.func,
 menuClick: PropTypes.func,
 label: PropTypes.string.isRequired,
 balance: PropTypes.number.isRequired,
 tracking: PropTypes.bool,
 selected: PropTypes.bool,
};
Lists and Tables
Simple Table

<SimpleTableTable>
 <SimpleTableTableRow>
   <SimpleTableTableHeader>Title of Column1</SimpleTableTableHeader>
   <SimpleTableTableHeader>Title of Column2</SimpleTableTableHeader>
 </SimpleTableTableRow>
 <SimpleTableTableRow>
   <SimpleTableTableCell>Title</SimpleTableTableCell>
   <SimpleTableTableCell>Value</SimpleTableTableCell>
 </SimpleTableTableRow>  
</SimpleTableTable>

Color List Table
<ColorListTable data={[{label: 'Label1', value: 60, color: '#A05195'}, {label: 'Label2', value: 40, color: '#F95D6A'}]}> 
 <ColorListTableRow>
   <ColorListTableCell>Default</ColorListTableCell>
   <ColorListTableCell>25%</ColorListTableCell>
 </ColorListTableRow>
 <ColorListTableRow>
   <ColorListTableCell>Default</ColorListTableCell>
   <ColorListTableCell>15%</ColorListTableCell>
 </ColorListTableRow>
 <ColorListTableRow>
   <ColorListTableCell>Default</ColorListTableCell>
   <ColorListTableCell>10%</ColorListTableCell>
 </ColorListTableRow>
 <ColorListTableRow>
   <ColorListTableCell>Default</ColorListTableCell>
   <ColorListTableCell>10%</ColorListTableCell>
 </ColorListTableRow>
 <ColorListTableRow>
   <ColorListTableCell>Default</ColorListTableCell>
   <ColorListTableCell>20%</ColorListTableCell>
 </ColorListTableRow>
 <ColorListTableRow>
   <ColorListTableCell>Default</ColorListTableCell>
   <ColorListTableCell>15%</ColorListTableCell>
 </ColorListTableRow>
 <ColorListTableRow>
   <ColorListTableCell>Default</ColorListTableCell>
   <ColorListTableCell>5%</ColorListTableCell>
 </ColorListTableRow>
</ColorListTable>

Finance Table
<FinanceTable>
 <FinanceHeaderRow color={"blue"}>
   <FinanceHeaderTitle>International Equities</FinanceHeaderTitle>
   <FinanceHeaderPercentage>25%</FinanceHeaderPercentage>
 </FinanceHeaderRow>
 <FinanceRow>
   <FinanceCellTicker>NSRGY</FinanceCellTicker>
   <FinanceCell>Nestle SA</FinanceCell>
   <FinanceCellPercentage>15%</FinanceCellPercentage>
 </FinanceRow>
 <FinanceRow>
   <FinanceCellTicker>XEF</FinanceCellTicker>
   <FinanceCell>iShares Core</FinanceCell>
   <FinanceCellPercentage>5%</FinanceCellPercentage>
 </FinanceRow>
 <FinanceRow>
   <FinanceCellTicker>NFLX</FinanceCellTicker>
   <FinanceCell>Netflix</FinanceCell>
   <FinanceCellPercentage>20%</FinanceCellPercentage>
 </FinanceRow>
</FinanceTable>

Collapse Table
<CollapseTable>
 <CollapseTableTitleRow>
   <CollapseTableTitle>Category Title</CollapseTableTitle>
   <CollapseTableTitle>Value</CollapseTableTitle>
   <CollapseTableTitle>Percentage</CollapseTableTitle>
   <CollapseTableTitle>Earnings</CollapseTableTitle>
 </CollapseTableTitleRow>
 <CollapseTableHeaderRow color={'#2F4B7C'} collapseId={'income'}>
   <CollapseTableRowHeader>Fixed Income</CollapseTableRowHeader>
   <CollapseTableRowHeader>15000</CollapseTableRowHeader>
   <CollapseTableRowHeader>39</CollapseTableRowHeader>
   <CollapseTableRowHeader>343</CollapseTableRowHeader>
 </CollapseTableHeaderRow>
 <CollapseTableRow parentId={'income'}>
   <CollapseTableCell>Netflix</CollapseTableCell>
   <CollapseTableCell>14000</CollapseTableCell>
   <CollapseTableCell>12</CollapseTableCell>
   <CollapseTableCell>300</CollapseTableCell>
 </CollapseTableRow>
 <CollapseTableRow parentId={'income'}>
   <CollapseTableCell>Microsoft</CollapseTableCell>
   <CollapseTableCell>2000</CollapseTableCell>
   <CollapseTableCell>2</CollapseTableCell>
   <CollapseTableCell>400</CollapseTableCell>
 </CollapseTableRow>
 <CollapseTableRow parentId={'income'}>
   <CollapseTableCell>Tesla</CollapseTableCell>
   <CollapseTableCell>9000</CollapseTableCell>
   <CollapseTableCell>49</CollapseTableCell>
   <CollapseTableCell>8200</CollapseTableCell>
 </CollapseTableRow>
</CollapseTable>

CollapseTableHeaderRow.propTypes = {
 collapseId: PropTypes.string.isRequired,
 color: PropTypes.string,
};

CollapseTableRow.propTypes = {
 parentId: PropTypes.string.isRequired,
};

FinanceHeaderRow.propTypes = {
 color: PropTypes.string,
};

ColorListTable.propTypes = {
 data: PropTypes.shape({
   label: PropTypes.string,
   value: PropTypes.number,
   color: PropTypes.string
 }),
};
Rating Stars
<Rating onChange={(evt) => console.log(evt.target.value)}/>
  
Rating.propTypes = {
  onChange: PropTypes.func,
};
Radio and Checkbox
<RadioGroup>
 <Radio id={1} value="Top" name="radios" onChange={(v) => console.log(v.target.value)}>Default</Radio>
 <Radio id={2} value="Bot" name="radios" onChange={(v) => console.log(v.target.value)}>Selected</Radio>
</RadioGroup>

<CheckboxGroup>
 <Checkbox id={3} value="Top" name="boxes" onChange={(v) => console.log(v.target.value)}>Default</Checkbox>
 <Checkbox id={4} value="Bot" name="boxes" onChange={(v) => console.log(v.target.value)}>Selected</Checkbox>
</CheckboxGroup>
 
Checkbox.propTypes = {
 type: PropTypes.string,
 name: PropTypes.string.isRequired,
 checked: PropTypes.bool,
 onChange: PropTypes.func.isRequired,
}

Radio.propTypes = {
 type: PropTypes.string,
 name: PropTypes.string.isRequired,
 onChange: PropTypes.func.isRequired,
}
Recommendation Tabs (responsive)
<TabsWrapper>
  <RecommendationTab 
    key='1' 
    label='Increase monthly auto deposit to' 
    target="$1820.00" 
    current="$300.00" 
    icon="Circle-Dollar"/>
  <RecommendationTab 
    key='2' 
    selected 
    label='Add a one-time deposit of' 
    target="$300.00" 
    current="$20.00" 
    icon="Circle-Dollar" />
  <RecommendationTab key='3' label='Increase retirement age to' target="26" current="20" icon="Circle-Dollar"/>
</TabsWrapper>
  
RecommendationTab.propTypes = {
  selected: PropTypes.any,
  icon: PropTypes.string,
  current: PropTypes.any,
  label: PropTypes.string,
  target: PropTypes.any
};
Selection Cards
<IconCard label='Quick to React' icon="Health" />
<TextCard top="Label" option="Option 1" bottom="label 1" />

IconCard.propTypes = {
  onClick: PropTypes.func,
  icon: PropTypes.string.isRequired,
  label: PropTypes.string,
};

TextCard.propTypes = {
  onClick: PropTypes.func,
  top: PropTypes.string,
  option: PropTypes.string,
  bottom: PropTypes.string,
};
Sliders
<SliderBasic 
 min={1} 
 max={100} 
 default={10} 
 step={1} 
 tooltip={false} 
 onChange={(evt) => console.log('SliderBasic', evt)}
/>
<SliderBasic min={10} max={100} default={1} step={10} disabled />
<SliderGradient 
 label1="Option 1" 
 label2="Option 2" 
 tooltip={true} 
 onChange={(evt) => console.log('SliderGradient', evt)}
/>
<SliderCircle 
  label1='Option 1' 
  label2='Option 2' 
  onChange={(position) => console.log('SliderCircle', position)}
/>

SliderBasic.propTypes = {
  min: PropTypes.number.isRequired,
  max: PropTypes.number.isRequired,
  step: PropTypes.number.isRequired,
  tooltip: PropTypes.bool,
  disabled: PropTypes.bool,
  onChange: PropTypes.func
};

SliderGradient.propTypes = {
  min: PropTypes.number.isRequired,
  max: PropTypes.number.isRequired,
  step: PropTypes.number.isRequired,
  tooltip: PropTypes.bool,
  disabled: PropTypes.bool,
  onChange: PropTypes.func
};

SliderCircle.propTypes = {
  onChange: PropTypes.func,
};

SliderCircle.defaultProps = {
  position: 0,
  clickable: true,
  positionChangeListener: null,
}
Tab Selectors
<TabsContainer>
  <Tab size="small" label="Item Selected" key={'1'}/>
  <Tab size="small" label="Item Middle" key={'2'} selected />
  <Tab size="small" label="Item Right" key={'3'}/>
</TabsContainer>
<TabsContainer>
  <Tab size="large" label="Item Left" key={'1'} selected />
  <Tab size="large" label="Item Middle" key={'2'}/>
  <Tab size="large" label="Item Right" key={'3'}/>
</TabsContainer>
<TimeTabsContainer>
  <TimeTab label="1D" key={'1'}/>
  <TimeTab label="1M" key={'2'}/>
  <TimeTab label="1Y" key={'3'} selected />
  <TimeTab label="SY" key={'4'}/>
</TimeTabsContainer>

Tab.propTypes = {
  onClick: PropTypes.func,
  label: PropTypes.string,
  key: PropTypes.number,
  selected: PropTypes.bool,
  size: PropTypes.PropTypes.oneOf(['large', 'small']),
};

TimeTab.propTypes = {
  onClick: PropTypes.func,
  label: PropTypes.string,
  key: PropTypes.number,
  selected: PropTypes.bool,
};
Text Fields
<TextField placeholder="Default" name="text1"/>
<TextField placeholder="Enter your name..." name="text2" label="First Name"/>
<TextField error="This is an example of error text." name="text4" label="Error" invalid />
<SearchField />
<DateFields />

TextField.propTypes = {
  invalid: PropTypes.bool,
  placeholder: PropTypes.string,
  name: PropTypes.string,
  label: PropTypes.string,
  onChange: PropTypes.func,
};

SearchField.propTypes = {
  invalid: PropTypes.bool,
  placeholder: PropTypes.string,
  name: PropTypes.string,
  label: PropTypes.string,
  onChange: PropTypes.func,
  onSubmit: PropTypes.func
};

DateFields.propTypes = {
  invalid: PropTypes.bool,
  name: PropTypes.string,
  label: PropTypes.string,
  onChange: PropTypes.func,
};
Rating Stars
<Tooltip text='5 or more characters' position='bottom'>Hover me! (Bottom)</Tooltip>

Tooltip.propTypes = {
  text: PropTypes.string,
  position: PropTypes.oneOf(['top', 'bottom']),
};

Readme

Keywords

none

Package Sidebar

Install

npm i jamehydro

Weekly Downloads

0

Version

1.0.2

License

MIT

Unpacked Size

1.61 MB

Total Files

4

Last publish

Collaborators

  • mavmeister