生态产品多个设计器现已发布候选版本

查看生态总览
Skip to content

ColorPicker ​

Data entry component. This page is the API reference, generated from the source code. Usage guidance and live examples are on the Chinese page.

Anatomy ​

Parts in bold are required.

data-scope="color-picker": root · label · control · tag-list · trigger · clear-trigger · value-text · swatch · positioner · content · saturation-area · area-thumb · hue-slider · alpha-slider · channel-input · eye-dropper-trigger · swatch-picker · recent-swatch-picker · confirm-trigger · hidden-input

API reference ​

Descriptions of individual props, events and slots are written in Chinese and appear on the Chinese page.

Artifacts ​

LayerValue
Custom element<xh-color-picker>
Vue componentsXhColorPickerAlphaSlider XhColorPickerAreaThumb XhColorPickerChannelInput XhColorPickerClearTrigger XhColorPickerConfirmTrigger XhColorPickerContent XhColorPickerControl XhColorPickerEyeDropperTrigger XhColorPickerHiddenInput XhColorPickerHueSlider XhColorPickerItemDeleteTrigger XhColorPickerLabel XhColorPickerOverflowTag XhColorPickerPositioner XhColorPickerRecentSwatchPicker XhColorPickerRoot XhColorPickerSaturationArea XhColorPickerSwatch XhColorPickerSwatchPicker XhColorPickerTag XhColorPickerTagLabel XhColorPickerTagList XhColorPickerTrigger XhColorPickerValueText
ComposableuseColorPicker
State machinecolorPickerMachine
Skin@xihan-ui/styles/color-picker.css

Props ​

PropTypeRequired
labelledboolean
ariaLabelstring
valuestring | string[]
defaultValuestring | string[]
selectionModeColorPickerSelectionMode
maxSelectednumber
maxTagCountnumber
formatColorFormat
openboolean
defaultOpenboolean
disabledboolean
readOnlyboolean
invalidboolean
requiredboolean
swatchesstring[]
inlineboolean
recentColorsstring[]
defaultRecentColorsstring[]
maxRecentColorsnumber
namestring
placeholderstring
alphaboolean
sizeSize
variantControlVariant
dirDirection
placementPlacement
offsetnumber
translationsPartial<ColorPickerTranslations>
onValueChange(details: ColorPickerValueChangeDetails) => void
onClear() => void
onOpenChange(details: ColorPickerOpenChangeDetails) => void
onRecentColorsChange(details: ColorPickerRecentColorsChangeDetails) => void
onColorError(details: ColorPickerErrorDetails) => void

Events ​

Custom elements put the payload in detail; Vue emits an event of the same name.

EventPayload
value-changeColorPickerValueChangeDetails
open-changeColorPickerOpenChangeDetails
color-errorColorPickerErrorDetails
recent-colors-changeColorPickerRecentColorsChangeDetails
clear``

Slots ​

Only slots with a payload are listed.

Vue componentSlotPayload
XhColorPickerRootdefaultColorPickerRootSlotProps
XhColorPickerRootlabel—

React adapter props ​

Only the props each component declares itself: DOM attributes inherited from ComponentPropsWithRef are left out, and root props already listed in the Props table are not repeated. The Vue counterpart is the slot table above.

React componentPropTypeRequired
XhColorPickerChannelInputchannelColorPickerInputChannel
XhColorPickerPositionercontainer() => Element | null
XhColorPickerRootlabelReactNode
XhColorPickerRootchildrenSlotChildren<ColorPickerRootSlotProps>
XhColorPickerTagvaluestringYes

State ​

Public state is written to data-state.

PartValues
root'open' | 'closed'
label'open' | 'closed'
control'open' | 'closed'
trigger'open' | 'closed'
value-text'open' | 'closed'
swatch'open' | 'closed'
positioner'open' | 'closed'
content'open' | 'closed'
saturation-area'open' | 'closed'
area-thumb'open' | 'closed'
channel-input'open' | 'closed'
eye-dropper-trigger'picking' | 'open' | 'closed'

The following names are internal to the state machine.

States: closed · open · open.idle · open.dragging · open.picking

Events: OPEN · TOGGLE · CLOSE · CONTROLLED.OPEN · CONTROLLED.CLOSE · VALUE.SET · SELECTED.SET · VALUE.CLEAR · VALUE.ADD · VALUE.REMOVE · VALUE.TOGGLE · TAG_LIST.TRACKED · AREA.SET · AREA.STEP · AREA.TO_EDGE · HSVA.SET · INPUT.CHANGE · INPUT.COMMIT · DRAG.START · DRAG.MOVE · DRAG.END · EYE_DROPPER.OPEN · EYE_DROPPER.RESULT · EYE_DROPPER.CANCEL · EYE_DROPPER.ERROR · ERROR.CLEAR · SESSION.END · RECENT.CLEAR · INLINE.SYNC · INLINE.CLOSE · FORM.RESET · PRESS.START · PRESS.END

Guards: isOpenControlled · canInteract · canPick · isInline

connect API ​

getXxxProps() returns the host attributes of the matching part.

MemberType
openboolean
valuestring[]
selectionModeColorPickerSelectionMode
colorstring
emptyboolean
valueTextstring
rgbaColorRgba
hsvaColorHsva
formatColorFormat
alphaboolean
disabledboolean
readOnlyboolean
invalidboolean
requiredboolean
draggingboolean
pickingboolean
eyeDropperSupportedboolean
errorsColorPickerErrors
swatchesstring[]
inlineboolean
recentColorsstring[]
canAddboolean
tagsColorPickerTagMeta[]
translationsColorPickerTranslations
overflowCountnumber
overflowTextstring
hueSliderColorSliderApi<T>
alphaSliderColorSliderApi<T>
swatchPickerColorSwatchPickerApi<T>
recentSwatchPickerColorSwatchPickerApi<T>
inputText(channel: ColorPickerInputChannel) => string
setOpen(next: boolean) => void
setValue(next: string[]) => void
add() => void
deselect(value: string) => void
clearError() => void
clearRecentColors() => void
getRootProps() => T['element']
getLabelProps() => T['label']
getControlProps() => T['element']
getTagListProps() => T['element']
getTagProps(props: ColorPickerTagProps) => T['element']
getTagLabelProps() => T['element']
getOverflowTagProps() => T['element']
getItemDeleteTriggerProps(props: ColorPickerTagProps) => T['button']
getTriggerProps() => T['button']
getClearTriggerProps() => T['button']
getValueTextProps() => T['element']
getSwatchProps() => T['element']
getPositionerProps() => T['element']
getContentProps() => T['element']
getSaturationAreaProps() => T['element']
getAreaThumbProps() => T['element']
getHueSliderProps() => T['element']
getAlphaSliderProps() => T['element']
getChannelInputProps(props: ColorPickerInputProps) => T['input']
getEyeDropperTriggerProps() => T['button']
getSwatchPickerProps() => T['element']
getRecentSwatchPickerProps() => T['element']
getConfirmTriggerProps() => T['button']
getHiddenInputProps(props?: ColorPickerHiddenInputProps) => T['input']

Accessibility ​

Keyboard ​

Specification: W3C APG. Each row is a stable behavior id that the conformance tests cover; the conditions and effects are described on the Chinese page.

KeysBehavior
Backspacecolor-picker.kbd.remove-last
ArrowRight / ArrowLeftcolor-picker.kbd.area-saturation
ArrowUp / ArrowDowncolor-picker.kbd.area-brightness
Shift+ArrowRight / Shift+ArrowLeft / Shift+ArrowUp / Shift+ArrowDowncolor-picker.kbd.area-large-step
Home / Endcolor-picker.kbd.area-edge
Entercolor-picker.kbd.input-commit
Escapecolor-picker.kbd.escape
Enter / Spacecolor-picker.kbd.press

ARIA ​

These attributes are produced by connect.

PartAttributeValue
triggeraria-controlsid of the content part
triggeraria-expanded'true' | 'false'
triggeraria-haspopup'dialog'
triggeraria-invalid'true' | 'false'
triggeraria-labelprops.ariaLabel
triggeraria-labelledbyid of the label part id of the value-text part | id of the trigger part id of the value-text part | id of the value-text part
clear-triggeraria-labellabel.clearTrigger
swatcharia-hidden'true'
contentaria-hidden!open || undefined
contentaria-labelprops.ariaLabel
contentaria-labelledbyid of the label part | undefined
contentaria-modalundefined | 'false'
contentrole'group' | 'dialog'
area-thumbaria-disabled'true' | 'false'
area-thumbaria-labellabel.area
area-thumbaria-valuemax'100'
area-thumbaria-valuemin'0'
area-thumbaria-valuenowString(Math.round(hsva.s))
area-thumbaria-valuetextlabel.areaValueText(Math.round(hsva.s), Math.round(hs…
area-thumbrole'slider'
channel-inputaria-invalid'true' | 'false'
channel-inputaria-labellabel.input(channel)
eye-dropper-triggeraria-labellabel.eyeDropperTrigger
hidden-inputaria-hidden'true'

Style reference ​

Skin ​

@xihan-ui/styles/color-picker.css is written against [data-scope="color-picker"][data-part="root"] part selectors; the published build uses the mount class .xh-scope-color-picker in place of data-scope (same specificity) and sits in the xihan.components layer. Put overrides in xihan.overrides; the part selectors work as usual.

Data attributes ​

Produced by connect; valueless attributes are omitted while their condition does not hold.

PartAttributeValue
rootdata-disabled'' (present only while the condition holds)
rootdata-inline'' (present only while the condition holds)
rootdata-invalid'' (present only while the condition holds)
rootdata-readonly'' (present only while the condition holds)
rootdata-required'' (present only while the condition holds)
rootdata-sizeprops.size
rootdata-state'open' | 'closed'
labeldata-disabled'' (present only while the condition holds)
labeldata-invalid'' (present only while the condition holds)
labeldata-readonly'' (present only while the condition holds)
labeldata-required'' (present only while the condition holds)
labeldata-state'open' | 'closed'
controldata-disabled'' (present only while the condition holds)
controldata-invalid'' (present only while the condition holds)
controldata-readonly'' (present only while the condition holds)
controldata-required'' (present only while the condition holds)
controldata-state'open' | 'closed'
controldata-variantprops.variant
controldata-xh-action-owner''
controldata-xh-field-chrome''
controldata-xh-field-layout'multi-tag' | undefined
controldata-xh-field-sizeprops.size
tag-listdata-disabled'' (present only while the condition holds)
tag-listdata-instant'' (present only while the condition holds)
tag-listdata-xh-tag-list''
triggerdata-disabled'' (present only while the condition holds)
triggerdata-invalid'' (present only while the condition holds)
triggerdata-readonly'' (present only while the condition holds)
triggerdata-required'' (present only while the condition holds)
triggerdata-state'open' | 'closed'
clear-triggerdata-xh-action-control''
clear-triggerdata-xh-action-display'has-value'
clear-triggerdata-xh-action-has-value'' (present only while the condition holds)
clear-triggerdata-xh-action-profile'field-inset'
clear-triggerdata-xh-action-sizeprops.size
clear-triggerdata-xh-action-variant'ghost'
value-textdata-disabled'' (present only while the condition holds)
value-textdata-invalid'' (present only while the condition holds)
value-textdata-placeholder'' (present only while the condition holds)
value-textdata-readonly'' (present only while the condition holds)
value-textdata-required'' (present only while the condition holds)
value-textdata-state'open' | 'closed'
swatchdata-disabled'' (present only while the condition holds)
swatchdata-empty'' (present only while the condition holds)
swatchdata-invalid'' (present only while the condition holds)
swatchdata-readonly'' (present only while the condition holds)
swatchdata-required'' (present only while the condition holds)
swatchdata-state'open' | 'closed'
swatchdata-valueundefined | context.get('value')
swatchdata-xh-swatch''
swatchdata-xh-swatch-sizeprops.size
positionerdata-hidden'' (present only while the condition holds)
positionerdata-placementactual placement computed by the positioning engine
positionerdata-positioned'' (present only while the condition holds)
positionerdata-sizeprops.size
positionerdata-state'open' | 'closed'
contentdata-disabled'' (present only while the condition holds)
contentdata-inline'' (present only while the condition holds)
contentdata-instant'' (present only while the condition holds)
contentdata-invalid'' (present only while the condition holds)
contentdata-placementundefined | actual placement computed by the positioning engine
contentdata-readonly'' (present only while the condition holds)
contentdata-required'' (present only while the condition holds)
contentdata-state'open' | 'closed'
saturation-areadata-disabled'' (present only while the condition holds)
saturation-areadata-dragging'' (present only while the condition holds)
saturation-areadata-invalid'' (present only while the condition holds)
saturation-areadata-readonly'' (present only while the condition holds)
saturation-areadata-required'' (present only while the condition holds)
saturation-areadata-state'open' | 'closed'
area-thumbdata-disabled'' (present only while the condition holds)
area-thumbdata-dragging'' (present only while the condition holds)
area-thumbdata-invalid'' (present only while the condition holds)
area-thumbdata-readonly'' (present only while the condition holds)
area-thumbdata-required'' (present only while the condition holds)
area-thumbdata-state'open' | 'closed'
hue-sliderdata-channel'hue'
alpha-sliderdata-channel'alpha'
alpha-sliderdata-disabled'' (present only while the condition holds)
channel-inputdata-channelchannel
channel-inputdata-disabled'' (present only while the condition holds)
channel-inputdata-invalid'' (present only while the condition holds)
channel-inputdata-readonly'' (present only while the condition holds)
channel-inputdata-required'' (present only while the condition holds)
channel-inputdata-state'open' | 'closed'
eye-dropper-triggerdata-disabled'' (present only while the condition holds)
eye-dropper-triggerdata-invalid'' (present only while the condition holds)
eye-dropper-triggerdata-pressed'' (present only while the condition holds)
eye-dropper-triggerdata-readonly'' (present only while the condition holds)
eye-dropper-triggerdata-required'' (present only while the condition holds)
eye-dropper-triggerdata-state'picking' | 'open' | 'closed'
confirm-triggerdata-disabled'' (present only while the condition holds)
confirm-triggerdata-xh-action-control''
confirm-triggerdata-xh-action-display'always'
confirm-triggerdata-xh-action-profile'text'
confirm-triggerdata-xh-action-size'sm'
confirm-triggerdata-xh-action-variant'solid'
confirm-triggerdata-xh-ink-surface''
overflow-tagdata-countString(overflowCount)
tagdata-valuev

CSS variables ​

The public override slots, generated from what the standalone skin actually consumes.

VariablePartCSS propertyStateDefault from
--xh-color-picker-action-bgclear-trigger
eye-dropper-trigger
--xh-ink-surface
background
background-color
default
xh-ink-surface
--xh-_action-variant-bg-rest
transparent
--xh-color-picker-action-bg-activeclear-trigger
eye-dropper-trigger
background
background-color
disabled
is(:active, [data-pressed])
loading
not(:disabled)
not([data-disabled])
not([data-loading])
pressed
state=picking
--xh-_action-variant-bg-pressed
--xh-bg-subtle-active
--xh-bg-subtle-hover
--xh-color-picker-action-bg-hoverclear-trigger
eye-dropper-trigger
background
background-color
disabled
hover
loading
not(:disabled)
not([data-disabled])
not([data-loading])
--xh-_action-variant-bg-hover
--xh-bg-subtle
--xh-color-picker-action-bordereye-dropper-triggerborderdefault--xh-border-control
--xh-color-picker-action-border-activeeye-dropper-triggerborder-colorstate=picking--xh-bg-brand
--xh-color-picker-action-fgclear-trigger
eye-dropper-trigger
colordefault--xh-fg-field-clear
--xh-fg-muted
--xh-color-picker-action-fg-hoverclear-trigger
eye-dropper-trigger
colordisabled
hover
loading
not(:disabled)
not([data-disabled])
not([data-loading])
--xh-fg-default
--xh-color-picker-action-font-sizeclear-trigger
eye-dropper-trigger
font-sizedefault--xh-text-secondary-size
--xh-color-picker-action-radiusclear-trigger
eye-dropper-trigger
border-radiusdefault--xh-shape-circle
--xh-shape-control
--xh-color-picker-action-sizeclear-trigger
eye-dropper-trigger
block-size
inline-size
min-inline-size
default
xh-action-profile=field-inset
--xh-_action-profile-visual-size
--xh-control-action-size
--xh-color-picker-alpha-slider-gapalpha-slidergapdefault--xh-stack-gap-md
--xh-color-picker-confirm-trigger-bgconfirm-trigger--xh-ink-surface
background-color
default
xh-ink-surface
--xh-_action-variant-bg-rest
--xh-color-picker-confirm-trigger-bg-activeconfirm-triggerbackground-colordisabled
is(:active, [data-pressed])
loading
not([data-disabled])
not([data-loading])
pressed
--xh-_action-variant-bg-pressed
--xh-color-picker-confirm-trigger-bg-hoverconfirm-triggerbackground-colordisabled
hover
loading
not([data-disabled])
not([data-loading])
--xh-_action-variant-bg-hover
--xh-color-picker-confirm-trigger-fgconfirm-triggercolordefault
disabled
hover
is(:active, [data-pressed])
loading
not([data-disabled])
not([data-loading])
pressed
--xh-_action-variant-fg-hover
--xh-_action-variant-fg-pressed
--xh-_action-variant-fg-rest
--xh-color-picker-confirm-trigger-hconfirm-triggerblock-size
inline-size
default
xh-action-profile=field-inset
--xh-control-action-size
--xh-color-picker-confirm-trigger-pxconfirm-triggerpadding-inlinedefault--xh-_action-profile-padding-inline
--xh-color-picker-confirm-trigger-radiusconfirm-triggerborder-radiusdefault--xh-shape-control
--xh-color-picker-confirm-trigger-shadowconfirm-triggerbox-shadowdefault
disabled
hover
is(:active, [data-pressed])
loading
not([data-disabled])
not([data-loading])
pressed
none
--xh-color-picker-content-bgcontentbackgrounddefault--xh-bg-surface
--xh-color-picker-content-bordercontentborderdefault--xh-border-default
--xh-color-picker-content-fgcontentcolordefault--xh-fg-default
--xh-color-picker-content-gapcontentgapdefault--xh-space-3
--xh-color-picker-content-pxcontent
recent-swatch-picker
saturation-area
swatch-picker
margin-inline
padding-inline
default
first-child
is([data-part='swatch-picker'], [data-part='recent-swatch-picker'])
not(:is([data-part='swatch-picker'], [data-part='recent-swatch-picker'])
--xh-space-3
--xh-color-picker-content-pycontent
recent-swatch-picker
saturation-area
swatch-picker
margin-block-start
padding-block
padding-block-start
default
first-child
is([data-part='swatch-picker'], [data-part='recent-swatch-picker'])
not(:is([data-part='swatch-picker'], [data-part='recent-swatch-picker'])
--xh-space-3
--xh-color-picker-content-radiuscontentborder-radiusdefault
inline
--xh-shape-overlay
--xh-shape-surface
--xh-color-picker-content-shadowcontentbox-shadowdefault
inline
--xh-elevation-floating
none
--xh-color-picker-content-wcontentinline-sizedefault--xh-overlay-max-w-sm
--xh-color-picker-control-bgcontrolbackground-colorxh-field-chrome--xh-_field-variant-bg-rest
--xh-color-picker-control-bg-disabledcontrolbackground-colordisabled
xh-field-chrome
--xh-_field-variant-bg-disabled
--xh-color-picker-control-bg-hovercontrolbackground-colordisabled
hover
invalid
loading
not(:focus-within)
not([data-disabled])
not([data-invalid])
not([data-loading])
not([data-readonly])
readonly
xh-field-chrome
--xh-_field-variant-bg-hover
--xh-color-picker-control-bg-readonlycontrolbackground-colorreadonly
xh-field-chrome
--xh-_field-variant-bg-read-only
--xh-color-picker-control-bordercontrolborderxh-field-chrome--xh-_field-variant-border-rest
--xh-color-picker-control-border-focuscontrolborder-color
box-shadow
disabled
focus-within
not([data-disabled])
xh-field-chrome
--xh-_field-variant-border-focus
--xh-color-picker-control-border-hovercontrolborder-colordisabled
hover
invalid
loading
not(:focus-within)
not([data-disabled])
not([data-invalid])
not([data-loading])
not([data-readonly])
readonly
xh-field-chrome
--xh-_field-variant-border-hover
--xh-color-picker-control-border-invalidcontrolborder-colorinvalid
xh-field-chrome
--xh-_field-variant-border-invalid
--xh-color-picker-control-fgcontrolcolorxh-field-chrome--xh-fg-default
--xh-color-picker-control-gapcontrolgapxh-field-chrome--xh-_color-picker-gap
--xh-color-picker-control-hcontrolblock-size
min-block-size
has([data-xh-field-input][data-xh-field-layout='multi-tag'])
has([data-xh-field-input][data-xh-field-layout='single-line'])
has([data-xh-field-input][data-xh-field-layout='textarea'])
xh-field-chrome
xh-field-input
xh-field-layout=multi-tag
xh-field-layout=single-line
xh-field-layout=textarea
--xh-_color-picker-h
--xh-color-picker-control-max-hcontrolmax-block-sizexh-field-layout=multi-tag--xh-viewport-h-sm
--xh-color-picker-control-min-wcontrol
root
min-inline-sizedefault
xh-field-chrome
--xh-control-min-w
--xh-color-picker-control-pxcontrolpadding-inlinexh-field-chrome--xh-_color-picker-px
--xh-color-picker-control-radiuscontrolborder-radiusxh-field-chrome--xh-shape-control
--xh-color-picker-control-shadowcontrolbox-shadowxh-field-chromenone
--xh-color-picker-control-wrootinline-size
min-inline-size
default--xh-control-w
--xh-color-picker-gaplabel
root
gap
margin-block-end
default--xh-space-1
--xh-color-picker-hue-slider-gaphue-slidergapdefault--xh-stack-gap-md
--xh-color-picker-icon-sizepositioner
root
--xh-icon-sizedefault
is([data-part='root'], [data-part='positioner'])
size=lg
size=sm
--xh-glyph-size-lg
--xh-glyph-size-md
--xh-glyph-size-sm
--xh-color-picker-input-bgchannel-inputbackgrounddefault--xh-bg-field
--xh-color-picker-input-bg-disabledchannel-inputbackgrounddisabled--xh-bg-subtle
--xh-color-picker-input-bg-focuschannel-inputbackgroundfocus--xh-bg-surface
--xh-color-picker-input-bg-readonlychannel-inputbackgroundreadonly--xh-bg-subtle
--xh-color-picker-input-borderchannel-inputborderdefault--xh-border-control
--xh-color-picker-input-border-focuschannel-inputborder-color
box-shadow
focus--xh-border-control-focus
--xh-color-picker-input-border-hoverchannel-inputborder-colorhover
invalid
not(:disabled, :focus, [data-readonly], [data-invalid])
readonly
--xh-border-strong
--xh-color-picker-input-border-invalidchannel-inputborder-colorinvalid--xh-border-invalid
--xh-color-picker-input-font-sizechannel-inputfont-sizedefault--xh-text-caption-size
--xh-color-picker-input-hchannel-inputblock-sizedefault--xh-control-action-size
--xh-color-picker-input-pxchannel-inputpadding-inlinedefault--xh-control-px-sm
--xh-color-picker-input-radiuschannel-inputborder-radiusdefault--xh-shape-control
--xh-color-picker-label-fglabelcolordefault--xh-fg-muted
--xh-color-picker-label-font-sizelabelfont-sizedefault--xh-text-label-size
--xh-color-picker-label-font-weightlabelfont-weightdefault--xh-text-label-weight
--xh-color-picker-label-gaplabelmargin-block-enddefault--xh-space-2
--xh-color-picker-layerpositionerz-indexdefault--xh-_layer
--xh-color-picker-max-hcontentmax-block-sizedefault--xh-viewport-h-lg
--xh-color-picker-placeholder-fgvalue-textcolorplaceholder--xh-fg-subtle
--xh-color-picker-saturation-area-hsaturation-areablock-sizedefault--xh-overlay-color-area-h
--xh-color-picker-saturation-area-radiuscontent
saturation-area
border-radiusdefault
first-child
--xh-shape-control
0
--xh-color-picker-separatorcontent
recent-swatch-picker
swatch-picker
border-block-startis([data-part='swatch-picker'], [data-part='recent-swatch-picker'])
not(:is([data-part='swatch-picker'], [data-part='recent-swatch-picker'])
--xh-material-solid-border
--xh-color-picker-slider-thumb-bgalpha-slider
hue-slider
thumb
backgroundis([data-part='hue-slider'], [data-part='alpha-slider'])--xh-bg-surface-raised
--xh-color-picker-slider-thumb-sizealpha-slider
hue-slider
--xh-_thumb-sizedefault--xh-control-indicator-md
--xh-color-picker-slider-track-thicknessalpha-slider
hue-slider
--xh-_track-thicknessdefault--xh-space-3
--xh-color-picker-swatch-borderswatch--xh-swatch-borderdefault--xh-border-default
--xh-color-picker-swatch-cellrecent-swatch-picker
swatch-picker
--xh-_color-swatch-picker-cell@media (pointer: coarse)
is([data-part='swatch-picker'], [data-part='recent-swatch-picker'])
--xh-control-h-sm
--xh-glyph-size-sm
--xh-color-picker-swatch-empty-strokeswatchbackground-imageempty--xh-border-control
--xh-color-picker-swatch-gaprecent-swatch-picker
swatch-picker
gapis([data-part='swatch-picker'], [data-part='recent-swatch-picker'])--xh-space-2
--xh-color-picker-swatch-icon-sizerecent-swatch-picker
swatch-picker
--xh-icon-sizeis([data-part='swatch-picker'], [data-part='recent-swatch-picker'])--xh-_color-swatch-picker-mark
--xh-color-picker-swatch-picker-gaprecent-swatch-picker
swatch-picker
gapis([data-part='swatch-picker'], [data-part='recent-swatch-picker'])--xh-_color-swatch-picker-gap
--xh-color-picker-swatch-radiusswatch--xh-swatch-radiusdefault--xh-shape-inset
--xh-color-picker-swatch-sizeswatch--xh-swatch-sizedefault--xh-_swatch-size
--xh-color-picker-tag-dot-borderroot
tag-list
bordervalue--xh-border-default
--xh-color-picker-tag-dot-sizeroot
tag-list
block-size
inline-size
value--xh-control-indicator-sm
--xh-color-picker-tag-list-gaptag-listgapxh-tag-list--xh-space-1
--xh-color-picker-thumb-borderarea-thumbborderdefault--xh-color-neutral-0
--xh-color-picker-thumb-edgearea-thumbbox-shadowdefault--xh-border-default-opaque
--xh-color-picker-thumb-radiusarea-thumbborder-radiusdefault--xh-shape-circle
--xh-color-picker-thumb-sizearea-thumbblock-size
inline-size
margin-block-start
margin-inline-start
default--xh-control-indicator-md
--xh-color-picker-trigger-fgtriggercolordefault--xh-fg-default
--xh-color-picker-trigger-font-sizetriggerfont-sizedefault--xh-text-body-size
--xh-color-picker-trigger-gaptriggergapdefault--xh-_color-picker-gap
--xh-color-picker-value-fgvalue-textcolordefault--xh-fg-default
--xh-color-picker-value-font-sizevalue-textfont-sizedefault--xh-text-body-size

Released under The MIT License