brumate/ui

ColorSlider

A slider for one channel of a color.

210°
100%

The color is hsl(210, 80%, 50%).

<script>
  import { $bind, $signal } from 'brumate/signals';
  import ColorSlider from '@brumate/ui/ColorSlider.brm';
  import ColorThumb from '@brumate/ui/ColorThumb.brm';
  import Label from '@brumate/ui/Label.brm';
  import SliderOutput from '@brumate/ui/SliderOutput.brm';
  import SliderTrack from '@brumate/ui/SliderTrack.brm';

  let color = $signal('hsl(210, 80%, 50%)');
</script>

<div class="ui-stack">
  <ColorSlider class="ui-color-slider" channel="hue" value=$bind(color)>
    <Label>Hue</Label>
    <SliderOutput />
    <SliderTrack class="ui-color-track">
      <ColorThumb class="ui-color-thumb" />
    </SliderTrack>
  </ColorSlider>
  <ColorSlider class="ui-color-slider" channel="alpha" value=$bind(color)>
    <Label>Opacity</Label>
    <SliderOutput />
    <SliderTrack class="ui-color-track">
      <ColorThumb class="ui-color-thumb" />
    </SliderTrack>
  </ColorSlider>
</div>
<p>The color is {color}.</p>
<ColorSlider channel="hue" value=$bind(color)>
  <Label>Hue</Label>
  <SliderOutput />
  <SliderTrack>
    <ColorThumb />
  </SliderTrack>
</ColorSlider>

Channel

Track

ColorThumb

A ColorThumb has no page of its own, since it works only inside a ColorSlider, a ColorArea or a ColorWheel, which give it its state.

Building on ColorThumb

A part that has a thumb of color provides a ColorThumbState in ColorThumbContext, from @brumate/ui/color-thumb.ts: