Components

Scroll area

A box that scrolls instead of the page, its bars thin or drawn over it.

scheme
direction

The browser's bars #

  • Release 0.24.0
  • Release 0.23.0
  • Release 0.22.0
  • Release 0.21.0
  • Release 0.20.0
  • Release 0.19.0
  • Release 0.18.0
  • Release 0.17.0
  • Release 0.16.0
  • Release 0.15.0
  • Release 0.14.0
  • Release 0.13.0
  • Release 0.12.0
  • Release 0.11.0
  • Release 0.10.0
  • Release 0.9.0
  • Release 0.8.0
  • Release 0.7.0
  • Release 0.6.0
  • Release 0.5.0
  • Release 0.4.0
  • Release 0.3.0
  • Release 0.2.0
  • Release 0.1.0
// The box scrolls instead of the page, in the browser's own thin bars. Its
// height is the caller's: the recipe extended by one, here.
export const ScrollAreaStyle = forSlots(ScrollAreaSlots)(
  Recipes.ScrollArea.extend({ base: { viewport: { maxBlockSize: '12rem' } } })({}),
)

const releases = (h: HtmlBuilder<never>): Html =>
  h.ul(
    [h.Style({ margin: '0', paddingInline: '1rem' })],
    Array.from({ length: 24 }, (_, index) => h.li([], [`Release 0.${24 - index}.0`])),
  )

export const scrollArea = (
  style: NamedStyle<typeof ScrollAreaSlots>,
  h: HtmlBuilder<never>,
): Html =>
  ScrollArea.view(
    {
      content: releases(h),
      style,
    },
    h,
  )

Overlay bars #

  • Release 0.24.0
  • Release 0.23.0
  • Release 0.22.0
  • Release 0.21.0
  • Release 0.20.0
  • Release 0.19.0
  • Release 0.18.0
  • Release 0.17.0
  • Release 0.16.0
  • Release 0.15.0
  • Release 0.14.0
  • Release 0.13.0
  • Release 0.12.0
  • Release 0.11.0
  • Release 0.10.0
  • Release 0.9.0
  • Release 0.8.0
  • Release 0.7.0
  • Release 0.6.0
  • Release 0.5.0
  • Release 0.4.0
  • Release 0.3.0
  • Release 0.2.0
  • Release 0.1.0
// Bars drawn over the content in place of the browser's, on a pointer that
// can hover; a coarse pointer keeps the browser's. Off unless passed.
export const scrollAreaOverlay = (
  style: NamedStyle<typeof ScrollAreaSlots>,
  h: HtmlBuilder<never>,
): Html =>
  ScrollArea.view(
    {
      content: releases(h),
      mixins: ScrollArea.overlayBars,
      style,
    },
    h,
  )

Usage

Each example above names the function that drew it, over the theme module Create a theme writes. The preview passes it the style picked above instead of its default.

The recipe ↗This code ↗