@@ -0,0 +1,47 @@
1+import React from 'react';
2+import { Grid, AccessoryIcon } from 'indigo-react';
3+
4+export default function Accordion({
5+ views,
6+ options,
7+ currentTab,
8+ onTabChange,
9+ className,
10+ ...rest
11+}) {
12+ const Tab = views[currentTab];
13+
14+ return (
15+ <Grid className={className}>
16+ {options.map((option, i) => {
17+ const isActive = option.value === currentTab;
18+
19+ return (
20+ <React.Fragment key={option.value}>
21+ <Grid.Item
22+ full
23+ className="f5 pv3 rel clickable"
24+ onClick={() => onTabChange(isActive ? undefined : option.value)}>
25+ {option.text}
26+ <div
27+ className="abs"
28+ style={{
29+ top: 0,
30+ right: 0,
31+ height: '100%',
32+ width: '44px',
33+ overflow: 'hidden',
34+ }}>
35+ <AccessoryIcon className="black">
36+ {isActive ? '▲' : '▼'}
37+ </AccessoryIcon>
38+ </div>
39+ </Grid.Item>
40+ {isActive && <Grid.Item full as={Tab} />}
41+ <Grid.Divider />
42+ </React.Fragment>
43+ );
44+ })}
45+ </Grid>
46+ );
47+}