Select
Displays a list of options for the user to pick from—triggered by a button.
vue
<script setup lang="ts">
import {
SelectRoot,
SelectTrigger,
SelectContent,
SelectGroup,
SelectLabel,
SelectItem,
SelectSeparator,
} from '@typlog/ui'
</script>
<template>
<SelectRoot default-value="apple">
<SelectTrigger placeholder="Select..." />
<SelectContent>
<SelectGroup>
<SelectLabel>Fruits</SelectLabel>
<SelectItem value="orange">Orange</SelectItem>
<SelectItem value="apple">Apple</SelectItem>
<SelectItem value="grape" disabled>Grape</SelectItem>
</SelectGroup>
<SelectSeparator />
<SelectGroup>
<SelectLabel>Vegetables</SelectLabel>
<SelectItem value="carrot">Carrot</SelectItem>
<SelectItem value="potato">Potato</SelectItem>
</SelectGroup>
</SelectContent>
</SelectRoot>
</template>
API Reference
SelectRoot
The root element of a select, it contains all the parts of a select.
Prop | Default | Type |
---|---|---|
color | – | |
highContrast | – | boolean |
size | – | "1""2""3" |
SelectTrigger
Prop | Default | Type |
---|---|---|
placeholder | – | string |
radius | – | "none""small""medium""large""full" |
variant | – | "soft""surface""ghost" |
SelectContent
Prop | Default | Type |
---|---|---|
variant | – | "solid""soft" |
Examples
Size
vue
<script setup lang="ts">
import {
SelectRoot,
SelectTrigger,
SelectContent,
SelectGroup,
SelectLabel,
SelectItem,
SelectSeparator,
} from '@typlog/ui'
</script>
<template>
<div class="flex items-center gap-4">
<SelectRoot size="1">
<SelectTrigger placeholder="Select..." />
<SelectContent>
<SelectGroup>
<SelectLabel>Fruits</SelectLabel>
<SelectItem value="orange">Orange</SelectItem>
<SelectItem value="apple">Apple</SelectItem>
<SelectItem value="grape" disabled>Grape</SelectItem>
</SelectGroup>
<SelectSeparator />
<SelectGroup>
<SelectLabel>Vegetables</SelectLabel>
<SelectItem value="carrot">Carrot</SelectItem>
<SelectItem value="potato">Potato</SelectItem>
</SelectGroup>
</SelectContent>
</SelectRoot>
<SelectRoot size="2">
<SelectTrigger placeholder="Select..." />
<SelectContent>
<SelectGroup>
<SelectLabel>Fruits</SelectLabel>
<SelectItem value="orange">Orange</SelectItem>
<SelectItem value="apple">Apple</SelectItem>
<SelectItem value="grape" disabled>Grape</SelectItem>
</SelectGroup>
<SelectSeparator />
<SelectGroup>
<SelectLabel>Vegetables</SelectLabel>
<SelectItem value="carrot">Carrot</SelectItem>
<SelectItem value="potato">Potato</SelectItem>
</SelectGroup>
</SelectContent>
</SelectRoot>
<SelectRoot size="3">
<SelectTrigger placeholder="Select..." />
<SelectContent>
<SelectGroup>
<SelectLabel>Fruits</SelectLabel>
<SelectItem value="orange">Orange</SelectItem>
<SelectItem value="apple">Apple</SelectItem>
<SelectItem value="grape" disabled>Grape</SelectItem>
</SelectGroup>
<SelectSeparator />
<SelectGroup>
<SelectLabel>Vegetables</SelectLabel>
<SelectItem value="carrot">Carrot</SelectItem>
<SelectItem value="potato">Potato</SelectItem>
</SelectGroup>
</SelectContent>
</SelectRoot>
</div>
</template>
Variant
The trigger field supports three variants: soft
, surface
, and ghost
.
vue
<script setup lang="ts">
import {
SelectRoot,
SelectTrigger,
SelectContent,
SelectGroup,
SelectLabel,
SelectItem,
SelectSeparator,
} from '@typlog/ui'
</script>
<template>
<div class="flex items-center gap-4">
<SelectRoot>
<SelectTrigger placeholder="Select..." variant="soft" />
<SelectContent>
<SelectGroup>
<SelectLabel>Fruits</SelectLabel>
<SelectItem value="orange">Orange</SelectItem>
<SelectItem value="apple">Apple</SelectItem>
<SelectItem value="grape" disabled>Grape</SelectItem>
</SelectGroup>
<SelectSeparator />
<SelectGroup>
<SelectLabel>Vegetables</SelectLabel>
<SelectItem value="carrot">Carrot</SelectItem>
<SelectItem value="potato">Potato</SelectItem>
</SelectGroup>
</SelectContent>
</SelectRoot>
<SelectRoot>
<SelectTrigger placeholder="Select..." variant="surface" />
<SelectContent>
<SelectGroup>
<SelectLabel>Fruits</SelectLabel>
<SelectItem value="orange">Orange</SelectItem>
<SelectItem value="apple">Apple</SelectItem>
<SelectItem value="grape" disabled>Grape</SelectItem>
</SelectGroup>
<SelectSeparator />
<SelectGroup>
<SelectLabel>Vegetables</SelectLabel>
<SelectItem value="carrot">Carrot</SelectItem>
<SelectItem value="potato">Potato</SelectItem>
</SelectGroup>
</SelectContent>
</SelectRoot>
<SelectRoot>
<SelectTrigger placeholder="Select..." variant="ghost" />
<SelectContent>
<SelectGroup>
<SelectLabel>Fruits</SelectLabel>
<SelectItem value="orange">Orange</SelectItem>
<SelectItem value="apple">Apple</SelectItem>
<SelectItem value="grape" disabled>Grape</SelectItem>
</SelectGroup>
<SelectSeparator />
<SelectGroup>
<SelectLabel>Vegetables</SelectLabel>
<SelectItem value="carrot">Carrot</SelectItem>
<SelectItem value="potato">Potato</SelectItem>
</SelectGroup>
</SelectContent>
</SelectRoot>
</div>
</template>
The content popup supports three variants: soft
and solid
.
vue
<script setup lang="ts">
import {
SelectRoot,
SelectTrigger,
SelectContent,
SelectGroup,
SelectLabel,
SelectItem,
SelectSeparator,
} from '@typlog/ui'
</script>
<template>
<div class="flex items-center gap-4">
<SelectRoot>
<SelectTrigger placeholder="Select..." />
<SelectContent variant="soft">
<SelectGroup>
<SelectLabel>Fruits</SelectLabel>
<SelectItem value="orange">Orange</SelectItem>
<SelectItem value="apple">Apple</SelectItem>
<SelectItem value="grape" disabled>Grape</SelectItem>
</SelectGroup>
<SelectSeparator />
<SelectGroup>
<SelectLabel>Vegetables</SelectLabel>
<SelectItem value="carrot">Carrot</SelectItem>
<SelectItem value="potato">Potato</SelectItem>
</SelectGroup>
</SelectContent>
</SelectRoot>
<SelectRoot>
<SelectTrigger placeholder="Select..." />
<SelectContent variant="solid">
<SelectGroup>
<SelectLabel>Fruits</SelectLabel>
<SelectItem value="orange">Orange</SelectItem>
<SelectItem value="apple">Apple</SelectItem>
<SelectItem value="grape" disabled>Grape</SelectItem>
</SelectGroup>
<SelectSeparator />
<SelectGroup>
<SelectLabel>Vegetables</SelectLabel>
<SelectItem value="carrot">Carrot</SelectItem>
<SelectItem value="potato">Potato</SelectItem>
</SelectGroup>
</SelectContent>
</SelectRoot>
</div>
</template>
Multiple
vue
<script setup lang="ts">
import {
SelectRoot,
SelectTrigger,
SelectContent,
SelectItem,
} from '@typlog/ui'
</script>
<template>
<SelectRoot multiple>
<SelectTrigger placeholder="Select..." />
<SelectContent>
<SelectItem value="orange">Orange</SelectItem>
<SelectItem value="apple">Apple</SelectItem>
<SelectItem value="grape">Grape</SelectItem>
<SelectItem value="carrot">Carrot</SelectItem>
<SelectItem value="potato">Potato</SelectItem>
</SelectContent>
</SelectRoot>
</template>