import * as React from 'react'; import styled from 'styled-components'; import { colors } from 'ts/style/colors'; import { useDimensions } from 'ts/style/dimensions'; interface ICollapseProps { children: React.ReactNode; title?: string; } interface ICollapse { isActive: boolean; height?: number; } export const Collapse: React.FC = props => { const [isActive, setIsActive] = React.useState(true); // @ts-ignore const [contentRef, { height }] = useDimensions(); const toggleCollapse = () => { setIsActive(!isActive); }; return ( <>

On this page

{props.children}
); }; const CollapseWrapper = styled.div` height: ${props => (props.isActive ? props.height : 0)}px; display: flex; flex-direction: column; `; const CollapseToggle = styled.button` display: flex; align-items: center; border: none; background: none; cursor: pointer; color: ${colors.brandDark}; padding: 0; font-size: 0.89rem; margin-bottom: ${props => (props.isActive ? 1 : 0)}rem; svg { margin-left: 10px; transform: rotate(${props => (props.isActive ? 0 : 180)}deg); transition: transform 300ms ease-out; } `; const CollapseContent = styled.div` overflow: hidden; transition: flex 300ms ease-out; flex: ${props => (props.isActive ? 1 : 0)}; `;