import React from 'react'
import styled from 'styled-components'

export const ItemSectionWithPreviews = (props: {
  groupName: string
  modules: string[]
}) => {
  let {groupName, modules} = props
  return (
    <section>
      <SectionHeader>{groupName}</SectionHeader>
      <ItemListContainer>
        {modules.map((moduleName) => {
          const href = `/${groupName}/${moduleName}`
          return (
            <ItemContainer key={`li-${moduleName}`}>
              <ItemLink href={href}>
                <PreviewContainer>
                  <iframe src={href} frameBorder="0" tabIndex={-1} />
                </PreviewContainer>
                <ItemDesc>
                  <h3>{moduleName}</h3>
                  <p>{href}</p>
                </ItemDesc>
              </ItemLink>
            </ItemContainer>
          )
        })}
      </ItemListContainer>
    </section>
  )
}

const SectionHeader = styled.h3`
  font-family: 'Inter', sans-serif;
  font-style: normal;
  font-weight: 400;
  font-size: 16px;
  line-height: 19px;

  text-transform: capitalize;

  /* White/White50 */
  color: rgba(255, 255, 255, 0.5);
`

const ItemDesc = styled.div`
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  padding: 8px 12px;
  gap: 4px;

  & > h3 {
    margin: 0;

    font-family: 'Inter', sans-serif;
    font-style: normal;
    font-weight: 600;
    font-size: 15px;
    line-height: 18px;

    /* White/White80 */
    color: rgba(255, 255, 255, 0.8);
  }

  & > p {
    margin: 0;
    font-weight: 400;
    font-size: 13px;
    line-height: 16px;
    /* identical to box height, or 123% */
    /* White/White60 */
    color: rgba(255, 255, 255, 0.6);
  }
`

const ItemContainer = styled.div`
  /* display: inline-flex; */
`

const ItemListContainer = styled.div`
  display: flex;
  gap: 1rem;
  flex-wrap: wrap;

  margin-bottom: 2rem;
`

const PreviewContainer = styled.div`
  --previewHeight: 450px;
  --previewWidth: 800px;
  --previewScale: 0.3;
  position: relative;
  overflow: hidden;
  height: calc(var(--previewHeight) * var(--previewScale));
  width: calc(var(--previewWidth) * var(--previewScale));

  /* Neutral/Neutral800 */
  background: rgba(33, 35, 39, 0.9);

  &::after {
    content: '';
    position: absolute;
    display: block;
    z-index: 1;
    top: 0;
    left: 0;
    height: calc(var(--previewHeight) * var(--previewScale));
    width: calc(var(--previewWidth) * var(--previewScale));
  }

  iframe {
    /* don't want original size of iframe affecting layout */
    position: absolute;
    transform-origin: top left;
    transform: scale(var(--previewScale));
    height: var(--previewHeight);
    width: var(--previewWidth);
  }
`
const ItemLink = styled.a`
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 4px;
  text-decoration: none;
  overflow: hidden;

  display: flex;
  flex-direction: column;
`
