UIPackage
Menu

Framework

Change language

Boilerplate repo

Select

selectui

Dropdown select primitive — single-select with optional groups, descriptions per item, headless popover mode (reka-ui), and zero-JS styled NativeSelect for lightweight/mobile use.

Also available for React ->

When to use which

Decision Guide

Select is the headless primitive for flat options. Advance Select is the searchable combobox. Cascade and Tree selectors are designed specifically for hierarchical and nested datasets.

ComponentRole
Selectcurrent

Short, flat option lists (< 20 items) where typing to filter is unnecessary.

Primitive Dropdown
AdvanceSelect

Large datasets requiring fuzzy search, multi-select tag pills, or remote option filtering.

Searchable Combobox
CascadeSelect

Sequential multi-level drilldowns (e.g. Country > State > City, Category > Subcategory).

Hierarchical Picker
TreeSelect

Deeply nested taxonomy structures, folder trees, or parent-child permission nodes.

Tree Picker
  • Standard dropdown with static options → Select
  • Searchable or multi-select combobox → Advance Select (view)
  • Sequential multi-level drilldown → Cascade Select (view)
  • Nested tree structure with checkboxes → Tree Select (view)

Installation

$npx shadcn-vue@latest add https://uipkge.dev/r/vue/select.json
Named registry:npx shadcn-vue@latest add @uipkge/selectInstalls to:app/components/ui/select/

Examples

Loading interactive previews…

Schema

Type aliases from this item's source — use them to shape the data you pass in.

NativeSelectOption
interface NativeSelectOption {
  label: string
  value: string | number
  disabled?: boolean
}

Used by

Files installed (14)

  • app/components/ui/select/Select.vue0.4 kB
    <script setup lang="ts">
    import type { SelectRootEmits, SelectRootProps } from 'reka-ui'
    import { SelectRoot, useForwardPropsEmits } from 'reka-ui'
    
    const props = defineProps<SelectRootProps>()
    const emits = defineEmits<SelectRootEmits>()
    
    const forwarded = useForwardPropsEmits(props, emits)
    </script>
    
    <template>
      <SelectRoot v-slot="slotProps" data-uipkge data-slot="select" v-bind="forwarded">
        <slot v-bind="slotProps" />
      </SelectRoot>
    </template>
    
  • app/components/ui/select/SelectContent.vue2.3 kB
  • app/components/ui/select/SelectGroup.vue0.3 kB
  • app/components/ui/select/SelectItem.vue1.4 kB
  • app/components/ui/select/SelectItemText.vue0.3 kB
  • app/components/ui/select/SelectLabel.vue0.4 kB
  • app/components/ui/select/SelectScrollDownButton.vue0.8 kB
  • app/components/ui/select/SelectScrollUpButton.vue0.8 kB
  • app/components/ui/select/SelectSeparator.vue0.6 kB
  • app/components/ui/select/SelectTrigger.vue2.2 kB
  • app/components/ui/select/SelectValue.vue0.3 kB
  • app/components/ui/select/NativeSelect.vue2.7 kB
  • app/components/ui/select/index.ts0.8 kB
  • app/components/ui/select/option-types.ts0.7 kB

Raw manifest:https://uipkge.dev/r/vue/select.json