Dual list selector

A dual list selector displays 2 interactive lists: a list of selected items and a list of available, selectable items. Users can move items between the lists.

Examples

The dual list selector is built in a composable manner to make customization easier. The standard sub-component relationships are arranged as follows:

<DualListSelector>
  <DualListSelectorPane>
    <DualListSelectorList>
      <DualListSelectorListItem />
    </DualListSelectorList>
  </DualListSelectorPane>

  <DualListSelectorControlsWrapper>
    <DualListSelectorControl /> /* A standard Dual list selector has 4 controls */
  </DualListSelectorControlsWrapper>

  <DualListSelectorPane isChosen>
    <DualListSelectorList>
      <DualListSelectorListItem />
    </DualListSelectorList>
  </DualListSelectorPane>
</DualListSelector>

Basic

Available options
0 of 4 options selected
  • Option 1
  • Option 2
  • Option 3
  • Option 4
Chosen options
0 of 0 options selected

    Basic with tooltips

    Available options
    0 of 4 options selected
    • Option 1
    • Option 2
    • Option 3
    • Option 4
    Chosen options
    0 of 0 options selected

      Using more complex options with actions

      Available options
      0 of 4 options selected
      • Option 1
      • Option 2
      • Option 3
      • Option 4
      Chosen options
      0 of 0 options selected

      With tree

      Available
      0 of 7 options selected
      • Fruits4
      • Bread
      • Vegetables2
      Chosen
      0 of 4 options selected
      • Proteins4

      Draggable

      To enable drag and drop, wrap the <DualListSelectorList> component with <DragDropSort>, define the variant property as "DualListSelectorList", and pass both the sortable items and onDrop callback to <DragDropSort>. <DragDropSort> will create the component's usual children internally based on the items property, so children inside the <DualListSelectorList> should not be passed to the wrapped component.

      Full drag and drop details can be found on the drag and drop component page.

      Available
      0 of 3 options selected
      • Apple
      • Banana
      • Pineapple
      Chosen
      0 of 4 options selected

      Draggable with multiple drop zones

      To enable multiple drop zones, wrap the <DualListSelector> component with <DragDropContainer>, and create the desired amount of <Droppable> components within <DragDropContainer>. <Droppable> components should be located where <DualListSelectorList> usually would go for each pane to be made draggable.

      Each <Droppable> should define the wrapper property as the component that acts as the drop zone, <DualListSelectorList>, and the items property of their respective draggable items as an array of <DraggableObject> data. <DragDropContainer> should be passed the onDrop, onContainerMove, and onCancel callbacks to handle items being dropped, items moving between droppable containers, and what happens if the drag is cancelled respectively. <DragDropContainer> should also be given a Record representing all sortable drop zones' items. Both components should define the variant property as "DualListSelectorList".

      Full drag and drop details can be found on the drag and drop component page.

      Available
      0 of 3 options selected
      Chosen
      0 of 4 options selected

      Props

      DualListSelector

      Acts as a container for all other DualListSelector sub-components when using a composable dual list selector.
      *required
      NameTypeDefaultDescription
      childrenReact.ReactNode''Content to be rendered in the dual list selector.
      classNamestringAdditional classes applied to the dual list selector.
      idstringID of the dual list selector.
      isTreebooleanfalseFlag indicating if the dual list selector uses trees instead of simple lists.

      DualListSelectorPane

      Acts as the container for a list of options that are either available or chosen, depending on the pane type (available or chosen). A search input and other actions, such as sorting, can also be passed into this sub-component.
      *required
      NameTypeDefaultDescription
      actionsReact.ReactNode[]Actions to place above the pane.
      childrenReact.ReactNodeA dual list selector list or dual list selector tree to be rendered in the pane.
      classNamestring''Additional classes applied to the dual list selector pane.
      idstringgetUniqueId('dual-list-selector-pane')ID of the pane.
      isChosenbooleanfalseFlag indicating if this pane is the chosen pane.
      isDisabledbooleanfalseFlag indicating whether the component is disabled.
      listMinHeightstringMinimum height of the list of options rendered in the pane. *
      onSearch(event: React.ChangeEvent<HTMLInputElement>) => voidCallback for search input. To be used when isSearchable is true.
      searchInputReact.ReactNodeA search input placed above the list at the top of the pane, before actions.
      statusstring''Status to display above the pane.
      titleReact.ReactNode''Title of the pane.

      DualListSelectorList

      Acts as the container for DualListSelectorListItem sub-components.
      *required
      NameTypeDefaultDescription
      childrenReact.ReactNodeContent rendered inside the dual list selector list.

      DualListSelectorListItem

      Creates an individual option that can be selected and moved between the dual list selector panes. This is contained within the DualListSelectorList sub-component.
      *required
      NameTypeDefaultDescription
      childrenReact.ReactNodeContent rendered inside the dual list selector.
      classNamestringAdditional classes applied to the dual list selector.
      draggableButtonAriaLabelstringAccessible label for the draggable button on draggable list items.
      idstringID of the option.
      isDisabledbooleanFlag indicating if the dual list selector is in a disabled state.
      isDraggablebooleanFlag indicating this item is draggable for reordering.
      isSelectedbooleanFlag indicating the list item is currently selected.
      onOptionSelect(event: React.MouseEvent | React.ChangeEvent | React.KeyboardEvent, id?: string) => voidCallback fired when an option is selected.

      DualListSelectorControlsWrapper

      Acts as the container for the DualListSelectorControl sub-components.
      *required
      NameTypeDefaultDescription
      aria-labelstringAccessible label for the dual list selector controls wrapper.
      childrenReact.ReactNodeContent to be rendered inside of the controls wrapper.
      classNamestringAdditional classes added to the wrapper.

      DualListSelectorControl

      Renders an individual control button for moving selected options between each dual list selector pane.
      *required
      NameTypeDefaultDescription
      aria-labelstringAccessible label for the dual list selector control.
      childrenReact.ReactNodeContent to be rendered in the dual list selector control.
      classNamestringAdditional classes applied to the dual list selector control.
      iconReact.ReactNodeIcon to be rendered in the dual list selector control.
      isDisabledbooleanFlag indicating the control is disabled.
      onClick(event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => voidCallback fired when dual list selector control is selected.
      tooltipContentReact.ReactNodeContent to be displayed in a tooltip on hover of control.
      tooltipPropsanyAdditional tooltip properties passed to the tooltip.

      DualListSelectorTree

      Used in place of the DualListSelectorListItem sub-component when building a composable dual list selector with a tree.
      *required
      NameTypeDefaultDescription
      datarequiredDualListSelectorTreeItemData[] | (() => DualListSelectorTreeItemData[])Data of the tree view.
      defaultAllExpandedbooleanfalseSets the default expanded behavior.
      hasBadgesbooleanfalseFlag indicating if all options should have badges.
      idstringID of the tree view.
      isDisabledbooleanfalseFlag indicating if the dual list selector tree is in the disabled state.
      onOptionCheck( event: React.MouseEvent | React.ChangeEvent<HTMLInputElement> | React.KeyboardEvent, isChecked: boolean, itemData: DualListSelectorTreeItemData ) => voidCallback fired when an option is checked.

      DualListSelectorTreeItemData

      *required
      NameTypeDefaultDescription
      idrequiredstringID of the option.
      isCheckedrequiredbooleanChecked state of the option.
      textrequiredstringText of the option.
      badgePropsanyAdditional properties to pass to the option badge.
      checkPropsanyAdditional properties to pass to the option checkbox.
      childrenDualListSelectorTreeItemData[]Content rendered inside the dual list selector.
      classNamestringAdditional classes applied to the dual list selector.
      defaultExpandedbooleanFlag indicating this option is expanded by default.
      hasBadgebooleanFlag indicating this option has a badge.
      isDisabledbooleanFlag indicating whether the component is disabled.
      onOptionCheck( event: React.MouseEvent | React.ChangeEvent<HTMLInputElement> | React.KeyboardEvent, isChecked: boolean, isChosen: boolean, itemData: DualListSelectorTreeItemData ) => voidCallback fired when an option is checked.
      parentIdstringParent ID of an option.

      CSS variables

      Expand or collapse columnSelectorVariableValue
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__header--GridArea
      pane-header
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__tools--GridArea
      pane-tools
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__status--GridArea
      pane-status
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__menu--GridArea
      pane-menu
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__controls--GridArea
      controls
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector--m-chosen__header--GridArea
      pane-header-c
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector--m-chosen__tools--GridArea
      pane-tools-c
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector--m-chosen__status--GridArea
      pane-status-c
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector--m-chosen__menu--GridArea
      pane-menu-c
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector--GridTemplateColumns--pane--MinMax--min
      12.5rem
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector--GridTemplateColumns--pane--MinMax--max
      28.125rem
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__header--MarginBlockEnd
      0.5rem
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__title-text--FontWeight
      500
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__title-text--FontSize
      1rem
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__tools--MarginBlockEnd
      1rem
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__tools-filter--tools-actions--MarginInlineStart
      0.5rem
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__menu--BorderWidth
      1px
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__menu--BorderColor
      (In light theme) #c7c7c7
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__menu--BorderRadius
      6px
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__menu--MinHeight
      12.5rem
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__menu--MaxHeight
      20rem
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__menu--MarginBlockStart
      1rem
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__list-item-row--FontSize
      0.875rem
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__list-item-row--BackgroundColor
      (In light theme) rgba(255, 255, 255, 0.0000)
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__list-item-row--hover--BackgroundColor
      (In light theme) #f2f2f2
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__list-item-row--m-selected--BackgroundColor
      (In light theme) #f2f2f2
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__list-item--m-ghost-row--BackgroundColor
      (In light theme) rgba(199, 199, 199, 0.2500)
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__list-item--m-ghost-row--Opacity
      .4
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__item--PaddingBlockStart
      0.5rem
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__item--PaddingInlineEnd
      1rem
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__item--PaddingBlockEnd
      0.5rem
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__item--PaddingInlineStart
      1rem
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__item--m-expandable--PaddingInlineStart
      1rem
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__item--indent--base
      calc(1rem + 0.5rem + 0.875rem)
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__item--nested-indent--base
      calc(calc(1rem + 0.5rem + 0.875rem) - 1rem)
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__draggable--item--PaddingInlineStart
      0.25rem
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__item-text--Color
      (In light theme) #4d4d4d
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__list-item-row--m-selected__text--Color
      (In light theme) #151515
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__list-item--m-disabled__item-text--Color
      (In light theme) #a3a3a3
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__status--MarginBlockEnd
      0.5rem
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__status-text--FontSize
      0.875rem
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__status-text--Color
      (In light theme) #4d4d4d
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__controls--PaddingInlineEnd
      1rem
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__controls--PaddingInlineStart
      1rem
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__controls--Gap
      0.25rem
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__controls--MarginBlockStart
      1rem
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__item-toggle--PaddingInlineEnd
      0.5rem
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__list__list__item-toggle--InsetInlineStart
      0
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__list__list__item-toggle--TranslateX
      -100%
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__item-check--MarginInlineEnd
      0.5rem
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__item-count--MarginInlineStart
      0.5rem
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__item--c-badge--m-read--BackgroundColor
      (In light theme) #e0e0e0
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__item-toggle-icon--Rotate
      0
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__list-item--m-expanded__item-toggle-icon--Rotate
      90deg
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__item-toggle-icon--TransitionDuration
      200ms
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__item-toggle-icon--TransitionTimingFunction
      cubic-bezier(.4, 0, .2, 1)
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__item-toggle-icon--MinWidth
      0.875rem
      .pf-v6-c-dual-list-selector--pf-v6-c-dual-list-selector__list-item--m-disabled__item-toggle-icon--Color
      (In light theme) #a3a3a3
      .pf-v6-c-dual-list-selector__pane.pf-m-chosen--pf-v6-c-dual-list-selector__header--GridArea
      pane-header-c
      .pf-v6-c-dual-list-selector__pane.pf-m-chosen--pf-v6-c-dual-list-selector__tools--GridArea
      pane-tools-c
      .pf-v6-c-dual-list-selector__pane.pf-m-chosen--pf-v6-c-dual-list-selector__status--GridArea
      pane-status-c
      .pf-v6-c-dual-list-selector__pane.pf-m-chosen--pf-v6-c-dual-list-selector__menu--GridArea
      pane-menu-c
      .pf-v6-c-dual-list-selector__list--pf-v6-c-dual-list-selector__item-toggle-icon--Rotate
      0
      .pf-v6-c-dual-list-selector__list .pf-v6-c-dual-list-selector__list--pf-v6-c-dual-list-selector__item-toggle--MarginBlockStart
      0
      .pf-v6-c-dual-list-selector__list .pf-v6-c-dual-list-selector__list--pf-v6-c-dual-list-selector__item-toggle--MarginBlockEnd
      0
      .pf-v6-c-dual-list-selector__list-item:focus--pf-v6-c-dual-list-selector__list-item-row--BackgroundColor
      (In light theme) #f2f2f2
      .pf-v6-c-dual-list-selector__list-item.pf-m-expandable--pf-v6-c-dual-list-selector__item--PaddingInlineStart
      1rem
      .pf-v6-c-dual-list-selector__list-item.pf-m-expanded--pf-v6-c-dual-list-selector__item-toggle-icon--Rotate
      90deg
      .pf-v6-c-dual-list-selector__list-item.pf-m-disabled--pf-v6-c-dual-list-selector__item-text--Color
      (In light theme) #a3a3a3
      .pf-v6-c-dual-list-selector__list-item.pf-m-disabled--pf-v6-c-dual-list-selector__item-toggle-icon--Color
      (In light theme) #a3a3a3
      .pf-v6-c-dual-list-selector__list-item-row.pf-m-selected--pf-v6-c-dual-list-selector__list-item-row--BackgroundColor
      (In light theme) #f2f2f2
      .pf-v6-c-dual-list-selector__list-item-row.pf-m-selected .pf-v6-c-dual-list-selector__item-text--pf-v6-c-dual-list-selector__item-text--Color
      (In light theme) #151515
      .pf-v6-c-dual-list-selector__list-item-row:hover--pf-v6-c-dual-list-selector__list-item-row--BackgroundColor
      (In light theme) #f2f2f2
      .pf-v6-c-dual-list-selector__list-item-row.pf-m-check--pf-v6-c-dual-list-selector__list-item-row--m-selected--BackgroundColor
      transparent
      .pf-v6-c-dual-list-selector__list-item-row.pf-m-ghost-row--pf-v6-c-dual-list-selector__list-item-row--BackgroundColor
      (In light theme) rgba(199, 199, 199, 0.2500)
      .pf-v6-c-dual-list-selector__draggable + .pf-v6-c-dual-list-selector__item--pf-v6-c-dual-list-selector__item--PaddingInlineStart
      0.25rem
      .pf-v6-c-dual-list-selector__draggable .pf-v6-c-button--pf-v6-c-button--FontSize
      inherit
      .pf-v6-c-dual-list-selector__item-count .pf-v6-c-badge.pf-m-read--pf-v6-c-badge--m-read--BackgroundColor
      (In light theme) #e0e0e0
      .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item--pf-v6-c-dual-list-selector__item--PaddingInlineStart
      calc(calc(calc(1rem + 0.5rem + 0.875rem) - 1rem) * 1 + calc(1rem + 0.5rem + 0.875rem))
      .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item--pf-v6-c-dual-list-selector__list__list__item-toggle--InsetInlineStart
      1rem
      .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item--pf-v6-c-dual-list-selector__item--PaddingInlineStart
      calc(calc(calc(1rem + 0.5rem + 0.875rem) - 1rem) * 2 + calc(1rem + 0.5rem + 0.875rem))
      .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item--pf-v6-c-dual-list-selector__list__list__item-toggle--InsetInlineStart
      1rem
      .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item--pf-v6-c-dual-list-selector__item--PaddingInlineStart
      calc(calc(calc(1rem + 0.5rem + 0.875rem) - 1rem) * 3 + calc(1rem + 0.5rem + 0.875rem))
      .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item--pf-v6-c-dual-list-selector__list__list__item-toggle--InsetInlineStart
      1rem
      .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item--pf-v6-c-dual-list-selector__item--PaddingInlineStart
      calc(calc(calc(1rem + 0.5rem + 0.875rem) - 1rem) * 4 + calc(1rem + 0.5rem + 0.875rem))
      .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item--pf-v6-c-dual-list-selector__list__list__item-toggle--InsetInlineStart
      1rem
      .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item--pf-v6-c-dual-list-selector__item--PaddingInlineStart
      calc(calc(calc(1rem + 0.5rem + 0.875rem) - 1rem) * 5 + calc(1rem + 0.5rem + 0.875rem))
      .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item--pf-v6-c-dual-list-selector__list__list__item-toggle--InsetInlineStart
      1rem
      .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item--pf-v6-c-dual-list-selector__item--PaddingInlineStart
      calc(calc(calc(1rem + 0.5rem + 0.875rem) - 1rem) * 6 + calc(1rem + 0.5rem + 0.875rem))
      .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item--pf-v6-c-dual-list-selector__list__list__item-toggle--InsetInlineStart
      1rem
      .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item--pf-v6-c-dual-list-selector__item--PaddingInlineStart
      calc(calc(calc(1rem + 0.5rem + 0.875rem) - 1rem) * 7 + calc(1rem + 0.5rem + 0.875rem))
      .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item--pf-v6-c-dual-list-selector__list__list__item-toggle--InsetInlineStart
      1rem
      .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item--pf-v6-c-dual-list-selector__item--PaddingInlineStart
      calc(calc(calc(1rem + 0.5rem + 0.875rem) - 1rem) * 8 + calc(1rem + 0.5rem + 0.875rem))
      .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item--pf-v6-c-dual-list-selector__list__list__item-toggle--InsetInlineStart
      1rem
      .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item--pf-v6-c-dual-list-selector__item--PaddingInlineStart
      calc(calc(calc(1rem + 0.5rem + 0.875rem) - 1rem) * 9 + calc(1rem + 0.5rem + 0.875rem))
      .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item--pf-v6-c-dual-list-selector__list__list__item-toggle--InsetInlineStart
      1rem
      .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item--pf-v6-c-dual-list-selector__item--PaddingInlineStart
      calc(calc(calc(1rem + 0.5rem + 0.875rem) - 1rem) * 10 + calc(1rem + 0.5rem + 0.875rem))
      .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item .pf-v6-c-dual-list-selector__list-item--pf-v6-c-dual-list-selector__list__list__item-toggle--InsetInlineStart
      1rem