Display

ScrollHint

Indicador animado que invita a hacer scroll

Preview

size

Code

import css from "./ScrollHint.module.css";

import { CaretDownIcon } from "@phosphor-icons/react/dist/csr/CaretDown";

type Size = "md" | "lg";

interface ResponsiveSize {
  base: Size;
  mobile?: Size;
  tablet?: Size;
  desktop?: Size;
  wide?: Size;
}

interface ScrollHintProps {
  size: Size | ResponsiveSize;
}

function getSizeClasses(size: Size | ResponsiveSize): string {
  if (typeof size === "string") {
    return css[size];
  }

  const classes = [css[`${size.base}_base`]];

  if (size.mobile) classes.push(css[`${size.mobile}_mobile`]);
  if (size.tablet) classes.push(css[`${size.tablet}_tablet`]);
  if (size.desktop) classes.push(css[`${size.desktop}_desktop`]);
  if (size.wide) classes.push(css[`${size.wide}_wide`]);

  return classes.join(" ");
}

export default function ScrollHint({ size }: ScrollHintProps) {
  return (
    <div className={`${css.hint} ${getSizeClasses(size)}`} aria-hidden="true">
      <CaretDownIcon className={css.hint_chevron} weight="bold" />
      <CaretDownIcon className={css.hint_chevron} weight="bold" />
      <CaretDownIcon className={css.hint_chevron} weight="bold" />
    </div>
  );
}

Props

PropTypeRequiredDescription
size"md" | "lg" | ResponsiveSizerequiredTamaño de las flechas. Fijo o responsive.