Datepicker Component

A CSS implementation of the Sprout datepicker component.

Related

Example

html
<!-- Start trigger -->
<div class="spr-datepicker-trigger spr-inline-container-xs spr-align-center">
  <div>10/10/2020</div>
  <div>
    <i class="spr-icon spr-icon-calendar"></i>
  </div>
</div>
<!-- End trigger -->

<!-- Start calendar -->
<div class="spr-datepicker-container">
  <div class="spr-inline-container-sm spr-justify-center spr-justify-space-between">
    <div class="spr-inline-container-sm spr-justify-center spr-align-center">
      <div class="spr-datepicker-arrow">
        <i class="spr-icon spr-icon-carat-down spr-icon-rotate-90"></i>
      </div>
      <div class="spr-bold spr-datepicker-month">Jul</div>
      <div class="spr-datepicker-arrow">
        <i class="spr-icon spr-icon-carat-down spr-icon-rotate-270"></i>
      </div>
    </div>
    <div class="spr-inline-container-sm spr-justify-center spr-align-center">
      <div class="spr-datepicker-arrow">
        <i class="spr-icon spr-icon-carat-down spr-icon-rotate-90"></i>
      </div>
      <div class="spr-bold">2021</div>
      <div class="spr-datepicker-arrow">
        <i class="spr-icon spr-icon-carat-down spr-icon-rotate-270"></i>
      </div>
    </div>
  </div>
  <div>
    <div class="spr-datepicker-row spr-datepicker-top">
      <div class="spr-datepicker-cell">Sun</div>
      <div class="spr-datepicker-cell">Mon</div>
      <div class="spr-datepicker-cell">Tues</div>
      <div class="spr-datepicker-cell">Wed</div>
      <div class="spr-datepicker-cell">Thurs</div>
      <div class="spr-datepicker-cell">Fri</div>
      <div class="spr-datepicker-cell">Sat</div>
    </div>
    <div class="spr-datepicker-row">
      <!-- days that fall in previous or next month -->
      <div class="spr-datepicker-cell spr-datepicker-grey">30</div>
      <div class="spr-datepicker-cell spr-datepicker-grey">31</div>
      <!-- day clicked on by user -->
      <div class="spr-datepicker-cell spr-datepicker-selected">1</div>
      <!-- day hovered over by user -->
      <div class="spr-datepicker-cell spr-datepicker-highlighted">2</div>
      <!-- all other days -->
      <div class="spr-datepicker-cell">3</div>
      <div class="spr-datepicker-cell">4</div>
      <div class="spr-datepicker-cell">5</div>
    </div>
  </div>
</div>
<!-- End calendar -->

Compiled CSS

Example

scss
@import 'components/datepicker';
css compiled
@keyframes openPopover {
  from {
    transform: scale(0.9);
  }
  to {
    transform: scale(1);
  }
}

.spr-icon-rotate-90 {
  transform: rotate(90deg);
}

.spr-icon-rotate-180 {
  transform: rotate(180deg);
}

.spr-icon-rotate-270 {
  transform: rotate(270deg);
}

.spr-datepicker-trigger {
  border: 1px solid #18191b;
  border-radius: 0.25rem;
  padding: 0.5rem;
  width: fit-content;
  cursor: pointer;
  background-color: #fff;
}

.spr-datepicker-placeholder {
  color: #6b6f7b;
}

.spr-datepicker-container {
  padding: 0.75rem 0.75rem;
  font-size: 0.875rem;
}

.spr-datepicker-month {
  width: 75px;
  text-align: center;
}

.spr-datepicker-row {
  display: flex;
  margin-bottom: 0.5rem;
}

.spr-datepicker-row:last-of-type {
  margin-bottom: 0;
}

.spr-datepicker-top {
  color: #6b6f7b;
  border-bottom: 1px solid #bbbdc4;
  font-weight: 600;
}

.spr-datepicker-cell {
  margin-right: 0.5rem;
  text-align: center;
  width: 32px;
  height: 32px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.spr-datepicker-cell:last-of-type {
  margin-right: 0;
}

.spr-datepicker-highlighted {
  cursor: pointer;
  color: #18191b;
  border-radius: 50%;
  background: #e4e5e7;
}

.spr-datepicker-arrow {
  cursor: pointer;
}

.spr-datepicker-selected:not(.spr-datepicker-grey) {
  cursor: pointer;
  background: #20883a;
  color: #fff;
  border-radius: 50%;
  font-weight: 600;
}

.spr-datepicker-selected:hover {
  background: #165f28;
}

.spr-datepicker-grey {
  opacity: 0.5;
}

.spr-datepicker-disabled {
  opacity: 0.25;
  pointer-events: none;
}