@use 'sass:list';
@use '../config' as *;

// A frame that looks like a browser window, to show a page preview or a screenshot
.mockup-browser {
  // scss-docs-start mockup-browser-css-vars
  --mockup-browser-bg: #{$mockup-browser-bg};
  --mockup-browser-border-color: #{$mockup-browser-border-color};
  --mockup-browser-border-radius: #{$mockup-browser-border-radius};
  --mockup-browser-box-shadow: #{$mockup-browser-box-shadow};
  --mockup-browser-toolbar-min-height: #{$mockup-browser-toolbar-min-height};
  --mockup-browser-toolbar-padding-y: #{$mockup-browser-toolbar-padding-y};
  --mockup-browser-toolbar-padding-x: #{$mockup-browser-toolbar-padding-x};
  --mockup-browser-toolbar-color: #{$mockup-browser-toolbar-color};
  --mockup-browser-toolbar-bg: #{$mockup-browser-toolbar-bg};
  --mockup-browser-control-offset: #{$mockup-browser-control-offset};
  --mockup-browser-control-size: #{$mockup-browser-control-size};
  --mockup-browser-control-gap: #{$mockup-browser-control-gap};
  --mockup-browser-control-color-1: #{list.nth($mockup-browser-control-colors, 1)};
  --mockup-browser-control-color-2: #{list.nth($mockup-browser-control-colors, 2)};
  --mockup-browser-control-color-3: #{list.nth($mockup-browser-control-colors, 3)};
  --mockup-browser-url-font-size: #{$mockup-browser-url-font-size};
  --mockup-browser-url-line-height: #{$mockup-browser-url-line-height};
  --mockup-browser-url-icon-size: #{$mockup-browser-url-icon-size};
  // scss-docs-end mockup-browser-css-vars
  display: flex;
  flex-direction: column;
  overflow: hidden;
  background: var(--mockup-browser-bg);
  border: var(--border-width) solid var(--mockup-browser-border-color);
  box-shadow: var(--mockup-browser-box-shadow);
  @include border-radius(var(--mockup-browser-border-radius));
}

// Small: a 24px toolbar for thumbnails and cards
.mockup-browser-sm {
  --mockup-browser-border-radius: #{$mockup-browser-sm-border-radius};
  --mockup-browser-toolbar-min-height: #{$mockup-browser-sm-toolbar-min-height};
  --mockup-browser-toolbar-padding-y: #{$mockup-browser-sm-toolbar-padding-y};
  --mockup-browser-control-size: #{$mockup-browser-sm-control-size};
  --mockup-browser-control-gap: #{$mockup-browser-sm-control-gap};
  --mockup-browser-url-font-size: #{$mockup-browser-sm-url-font-size};
  --mockup-browser-url-icon-size: #{$mockup-browser-sm-url-icon-size};
}

// The top bar: the window dots sit at the start, the address bar fills the middle
.mockup-browser-toolbar {
  position: relative;
  display: flex;
  align-items: center;
  min-height: var(--mockup-browser-toolbar-min-height);
  padding: var(--mockup-browser-toolbar-padding-y) var(--mockup-browser-toolbar-padding-x);
  color: var(--mockup-browser-toolbar-color);
  background: var(--mockup-browser-toolbar-bg);
  // Drawn as an inset shadow so the line does not add to the toolbar height
  box-shadow: inset 0 calc(-1 * var(--border-width)) var(--mockup-browser-border-color);
}

// The three window dots, drawn with one element and two shadows. They are taken
// out of the flow so the address bar stays centered whatever the frame width
.mockup-browser-controls {
  position: absolute;
  inset-inline-start: var(--mockup-browser-control-offset);
  width: var(--mockup-browser-control-size);
  height: var(--mockup-browser-control-size);
  background: var(--mockup-browser-control-color-1);
  border-radius: 50%;
  box-shadow:
    calc(var(--mockup-browser-control-size) + var(--mockup-browser-control-gap)) 0 0 var(--mockup-browser-control-color-2),
    calc(2 * (var(--mockup-browser-control-size) + var(--mockup-browser-control-gap))) 0 0 var(--mockup-browser-control-color-3);
}

// The address, plain centered text
.mockup-browser-url {
  display: flex;
  gap: 0.25rem;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-width: 0;
  font-size: var(--mockup-browser-url-font-size);
  line-height: var(--mockup-browser-url-line-height);

  > span {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .icon {
    --icon-size: var(--mockup-browser-url-icon-size);
    flex-shrink: 0;
  }
}

// The page: a screenshot fills the width, other content keeps its own layout
.mockup-browser-body {
  flex: 1;
  min-height: 0;

  > img,
  > iframe,
  > video {
    display: block;
    width: 100%;
  }

  > iframe {
    border: 0;
  }
}
