brumate/ui

ColorField

A field for a color, as hex or as one channel.

<script>
  import { $bind, $signal } from 'brumate/signals';
  import ColorField from '@brumate/ui/ColorField.brm';
  import ColorSwatch from '@brumate/ui/ColorSwatch.brm';
  import Input from '@brumate/ui/Input.brm';
  import Label from '@brumate/ui/Label.brm';

  let accent = $signal<string | null>('#e2445a');
  let hue = $signal<string | null>('hsl(210, 50%, 40%)');
</script>

<div class="ui-stack">
  <div class="ui-row ui-color-row">
    <ColorField class="ui-field" value=$bind(accent)>
      <Label>Accent</Label>
      <Input class="ui-input" />
    </ColorField>
    <ColorSwatch class="ui-swatch" color=(accent ?? 'transparent') />
  </div>
  <div class="ui-row ui-color-row">
    <ColorField class="ui-field" channel="hue" colorSpace="hsl" value=$bind(hue)>
      <Label>Hue</Label>
      <Input class="ui-input" />
    </ColorField>
    <ColorSwatch class="ui-swatch" color=(hue ?? 'transparent') />
  </div>
</div>
<ColorField value=$bind(accent)>
  <Label>Accent</Label>
  <Input />
</ColorField>
<ColorField channel="hue" colorSpace="hsl" value=$bind(accent)>
  <Label>Hue</Label>
  <Input />
</ColorField>

Hex

Channel

Names

aria-label and aria-labelledby on the field name its input. A channel field has the role description "Number field", as in React Aria.