Form primitive

Icon selector

<DomIconSelector>

A searchable select-style field for choosing SVG path icons, emoji, or app-defined symbol rows.

Playground

Try every prop live

Icon selector playground

Search the DOM Studio icon inventory and commit SVG path data through v-model.

  • AddActions add m12 5v14m5 12h14 actions icon plus new create
  • RemoveActions remove m5 12h14 actions icon minus delete
  • CloseActions close m6 6l12 12m18 6 6 18 actions icon dismiss x
  • CheckActions check m20 6 9 17l-5-5 actions icon done success
  • EditActions edit m4 20h4l19 9a2.8 2.8 0 0 0-4-4l4 16v4zm11-13 2 2 actions icon pencil compose
  • CopyActions copy m8 8h11v11h8v8zm-3 8h4v4h12v1 actions icon duplicate
  • ShareActions share m8 12h8m15 7l5 5-5 5m4 5v14 actions icon send
  • DownloadActions download m12 4v10m8 10l4 4 4-4m5 19h14 actions icon export
  • UploadActions upload m12 16v4m8 8l4-4 4 4m5 20h14 actions icon import
  • SearchNavigation search m10.5 18a7.5 7.5 0 1 1 5.3-2.2l21 21 navigation icon find
  • FilterNavigation filter m5 6h14m8 12h8m10 18h4 navigation icon funnel
  • SettingsNavigation settings m12 8a4 4 0 1 0 0 8 4 4 0 0 0 0-8zm0-5v3m12 18v3m4.2 4.2l2.1 2.1m17.7 17.7l2.1 2.1m3 12h3m18 12h3m4.2 19.8l2.1-2.1m17.7 6.3l2.1-2.1 navigation icon gear
  • MenuNavigation menu m6 7h12m6 12h12m6 17h12 navigation icon list
  • More horizontalNavigation more horizontal m5 12h.01m12 12h.01m19 12h.01 navigation icon ellipsis
  • More verticalNavigation more vertical m12 5h.01m12 12h.01m12 19h.01 navigation icon ellipsis
  • Chevron downNavigation chevron down m7 10l5 5 5-5 navigation icon expand
  • Chevron upNavigation chevron up m7 14l5-5 5 5 navigation icon collapse
  • Chevron leftNavigation chevron left m14 7l-5 5 5 5 navigation icon previous
  • Chevron rightNavigation chevron right m10 7l5 5-5 5 navigation icon next
  • Arrow leftNavigation arrow left m19 12h5m12 5l-7 7 7 7 navigation icon back
  • Arrow rightNavigation arrow right m5 12h14m12 5l7 7-7 7 navigation icon forward
  • Arrow upNavigation arrow up m12 19v5m5 12l7-7 7 7 navigation icon top
  • Arrow downNavigation arrow down m12 5v14m5 12l7 7 7-7 navigation icon bottom
  • HomeNavigation home m4 11 12 4l8 7v9h-5v-6h9v6h4v-9z navigation icon house
  • External linkNavigation external link m14 5h5v5m13 11l6-6m19 14v5h5v5h5 navigation icon open
  • InfoStatus info m12 17v-5m12 8h.01m21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0z status icon notice
  • SuccessStatus success m21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0zm8.5 12.5l2.5 2.5 4.5-5 status icon check complete
  • WarningStatus warning m12 4l9 16h3l12 4zm12 9v4m12 17h.01 status icon alert risk
  • ErrorStatus error m21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0zm15 9l-6 6m9 9l6 6 status icon danger failed
  • HelpStatus help m9.5 9a2.5 2.5 0 1 1 4.2 1.8c-.9.7-1.7 1.2-1.7 2.7m12 17h.01m21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0z status icon question
  • LockSecurity lock m7 11v8a5 5 0 0 1 10 0v3m6 11h12v9h6v-9zm6 3v2 security icon secure
  • UnlockSecurity unlock m8 11v8a5 5 0 0 1 9.5-2.2m6 11h12v9h6v-9zm6 3v2 security icon open
  • ShieldSecurity shield m12 3 5 6v5c0 4.5 3 8 7 10 4-2 7-5.5 7-10v6l-7-3zm9.5 12l1.75 1.75l15 10 security icon protect
  • UserPeople user m12 12a4 4 0 1 0 0-8 4 4 0 0 0 0 8zm5 20a7 7 0 0 1 14 0 people icon profile
  • UsersPeople users m9 11a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm8 1a3 3 0 1 0 0-6m4 20a5 5 0 0 1 10 0m13 20a5 5 0 0 1 7-4.5 people icon team
  • MailCommunication mail m4 6h16v12h4v6zm0 0 8 7 8-7 communication icon email
  • MessageCommunication message m5 6h14v9h9l-4 4v6z communication icon chat comment
  • BellCommunication bell m15 17h9m9-2h6l2-3v9a4 4 0 0 1 8 0v3l2 3zm10 19a2 2 0 0 0 4 0 communication icon notification
  • CalendarTime calendar m7 4v3m17 4v3m5 8h14m6 6h12v13h6v6zm3 6h2m13 12h2m9 16h2 time icon date
  • ClockTime clock m12 6v6l4 2m12 3a9 9 0 1 0 0 18 9 9 0 0 0 0-18z time icon time
  • FileFiles file m6 4h8l4 4v12h6v4zm8 0v5h5m9 13h6m9 16h4 files icon document
  • FolderFiles folder m4 6h6l2 2h8v10h4v6z files icon directory
  • ImageFiles image m5 6h14v12h5v6zm3 9 3-3 2 2 2-3 3 4m8 9h.01 files icon media
  • CodeFiles code m8 9l-4 3 4 3m16 9l4 3-4 3m14 5l-4 14 files icon developer
  • DatabaseData database m5 7c0-2 14-2 14 0v10c0 2-14 2-14 0v7zm0 0c0 2 14 2 14 0m5 12c0 2 14 2 14 0 data icon storage
  • TableData table m5 5h14v14h5v5zm0 5h14m5 14h14m10 5v14m15 5v14 data icon grid
  • Chart barData chart bar m5 19v9m12 19v5m19 19v-7m4 19h16 data icon analytics
  • Chart lineData chart line m4 17l5-5 4 4 7-9m4 20h16 data icon growth
  • CardInterface card m5 7h14v10h5v7zm3 3h8m8 14h5 interface icon panel
  • DashboardInterface dashboard m4 5h7v7h4v5zm9 0h7v5h-7v5zm4 14h7v5h4v-5zm9-2h7v7h-7v-7z interface icon layout
  • MobileInterface mobile m8 3h8a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h8a2 2 0 0 1-2-2v5a2 2 0 0 1 2-2zm3 15h4 interface icon phone
  • WindowInterface window m4 5h16v14h4v5zm0 4h16m8 7h.01m11 7h.01 interface icon browser
  • GlobePlaces globe m21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0zm3 12h18m12 3c2 2.5 3 5.5 3 9s-1 6.5-3 9m12 3c-2 2.5-3 5.5-3 9s1 6.5 3 9 places icon world web
  • Map pinPlaces map pin m12 21s7-5.5 7-11a7 7 0 1 0-14 0c0 5.5 7 11 7 11zm0-8a3 3 0 1 0 0-6 3 3 0 0 0 0 6z places icon location
  • StarObjects star m12 3l2.7 5.5 6.1.9-4.4 4.3 1 6-5.4-2.9-5.4 2.9 1-6-4.4-4.3 6.1-.9l12 3z objects icon favorite
  • HeartObjects heart m12 20s-8-4.8-8-11a4.5 4.5 0 0 1 8-2.8a4.5 4.5 0 0 1 20 9c0 6.2-8 11-8 11z objects icon love
  • SparklesObjects sparkles m12 3l1.8 5.2l19 10l-5.2 1.8l12 17l-1.8-5.2l5 10l5.2-1.8l12 3zm6 9 .9 2.6 2.6.9-2.6.9l18 20l-.9-2.6-2.6-.9 2.6-.9l18 12z objects icon magic ai
  • RocketObjects rocket m5 19c1.5-4 4-6.5 8-8l2-6 4 4-6 2c-1.5 4-4 6.5-8 8zm4-4-4 4m14 6l4 4 objects icon launch
  • TagCommerce tag m4 12 12 4h7v7l-8 8-7-7zm11-5h.01 commerce icon label
  • Credit cardCommerce credit card m4 7h16v10h4v7zm0 3h16m7 14h4 commerce icon payment
  • ReceiptCommerce receipt m7 4h10v16l-2-1-2 1-2-1-2 1-2-1-2 1v4zm3 5h4m10 13h4m10 17h2 commerce icon invoice
Playground.vuevue
<script setup>
import { reactive } from 'vue';
import { DomIconSelector } from '@getdom/studio/vue';

const data = reactive({
	  "modelValue": "M12 5v14M5 12h14",
	  "id": "",
	  "name": "",
	  "label": "Icon",
	  "description": "",
	  "placeholder": "Search icons",
	  "required": false,
	  "disabled": false,
	  "readOnly": false,
	  "invalid": false,
	  "errors": [],
	  "visible": true,
	  "validators": [],
	  "validateOnBlur": true,
	  "chrome": "field",
	  "kind": "icons",
	  "items": [],
	  "includeBuiltIns": true,
	  "clearable": true,
	  "loading": false,
	  "placement": "bottom",
	  "floatingMode": "viewport",
	  "panelMinWidth": "20rem"
	});
</script>

<template>
	<DomIconSelector
		v-bind="data"
		@update:modelValue="data.modelValue = $event"
	/>
</template>

Demo

SVG path picker

Use the default icons collection when a component prop expects 24x24 SVG path data.

  • AddActions add m12 5v14m5 12h14 actions icon plus new create
  • RemoveActions remove m5 12h14 actions icon minus delete
  • CloseActions close m6 6l12 12m18 6 6 18 actions icon dismiss x
  • CheckActions check m20 6 9 17l-5-5 actions icon done success
  • EditActions edit m4 20h4l19 9a2.8 2.8 0 0 0-4-4l4 16v4zm11-13 2 2 actions icon pencil compose
  • CopyActions copy m8 8h11v11h8v8zm-3 8h4v4h12v1 actions icon duplicate
  • ShareActions share m8 12h8m15 7l5 5-5 5m4 5v14 actions icon send
  • DownloadActions download m12 4v10m8 10l4 4 4-4m5 19h14 actions icon export
  • UploadActions upload m12 16v4m8 8l4-4 4 4m5 20h14 actions icon import
  • SearchNavigation search m10.5 18a7.5 7.5 0 1 1 5.3-2.2l21 21 navigation icon find
  • FilterNavigation filter m5 6h14m8 12h8m10 18h4 navigation icon funnel
  • SettingsNavigation settings m12 8a4 4 0 1 0 0 8 4 4 0 0 0 0-8zm0-5v3m12 18v3m4.2 4.2l2.1 2.1m17.7 17.7l2.1 2.1m3 12h3m18 12h3m4.2 19.8l2.1-2.1m17.7 6.3l2.1-2.1 navigation icon gear
  • MenuNavigation menu m6 7h12m6 12h12m6 17h12 navigation icon list
  • More horizontalNavigation more horizontal m5 12h.01m12 12h.01m19 12h.01 navigation icon ellipsis
  • More verticalNavigation more vertical m12 5h.01m12 12h.01m12 19h.01 navigation icon ellipsis
  • Chevron downNavigation chevron down m7 10l5 5 5-5 navigation icon expand
  • Chevron upNavigation chevron up m7 14l5-5 5 5 navigation icon collapse
  • Chevron leftNavigation chevron left m14 7l-5 5 5 5 navigation icon previous
  • Chevron rightNavigation chevron right m10 7l5 5-5 5 navigation icon next
  • Arrow leftNavigation arrow left m19 12h5m12 5l-7 7 7 7 navigation icon back
  • Arrow rightNavigation arrow right m5 12h14m12 5l7 7-7 7 navigation icon forward
  • Arrow upNavigation arrow up m12 19v5m5 12l7-7 7 7 navigation icon top
  • Arrow downNavigation arrow down m12 5v14m5 12l7 7 7-7 navigation icon bottom
  • HomeNavigation home m4 11 12 4l8 7v9h-5v-6h9v6h4v-9z navigation icon house
  • External linkNavigation external link m14 5h5v5m13 11l6-6m19 14v5h5v5h5 navigation icon open
  • InfoStatus info m12 17v-5m12 8h.01m21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0z status icon notice
  • SuccessStatus success m21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0zm8.5 12.5l2.5 2.5 4.5-5 status icon check complete
  • WarningStatus warning m12 4l9 16h3l12 4zm12 9v4m12 17h.01 status icon alert risk
  • ErrorStatus error m21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0zm15 9l-6 6m9 9l6 6 status icon danger failed
  • HelpStatus help m9.5 9a2.5 2.5 0 1 1 4.2 1.8c-.9.7-1.7 1.2-1.7 2.7m12 17h.01m21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0z status icon question
  • LockSecurity lock m7 11v8a5 5 0 0 1 10 0v3m6 11h12v9h6v-9zm6 3v2 security icon secure
  • UnlockSecurity unlock m8 11v8a5 5 0 0 1 9.5-2.2m6 11h12v9h6v-9zm6 3v2 security icon open
  • ShieldSecurity shield m12 3 5 6v5c0 4.5 3 8 7 10 4-2 7-5.5 7-10v6l-7-3zm9.5 12l1.75 1.75l15 10 security icon protect
  • UserPeople user m12 12a4 4 0 1 0 0-8 4 4 0 0 0 0 8zm5 20a7 7 0 0 1 14 0 people icon profile
  • UsersPeople users m9 11a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm8 1a3 3 0 1 0 0-6m4 20a5 5 0 0 1 10 0m13 20a5 5 0 0 1 7-4.5 people icon team
  • MailCommunication mail m4 6h16v12h4v6zm0 0 8 7 8-7 communication icon email
  • MessageCommunication message m5 6h14v9h9l-4 4v6z communication icon chat comment
  • BellCommunication bell m15 17h9m9-2h6l2-3v9a4 4 0 0 1 8 0v3l2 3zm10 19a2 2 0 0 0 4 0 communication icon notification
  • CalendarTime calendar m7 4v3m17 4v3m5 8h14m6 6h12v13h6v6zm3 6h2m13 12h2m9 16h2 time icon date
  • ClockTime clock m12 6v6l4 2m12 3a9 9 0 1 0 0 18 9 9 0 0 0 0-18z time icon time
  • FileFiles file m6 4h8l4 4v12h6v4zm8 0v5h5m9 13h6m9 16h4 files icon document
  • FolderFiles folder m4 6h6l2 2h8v10h4v6z files icon directory
  • ImageFiles image m5 6h14v12h5v6zm3 9 3-3 2 2 2-3 3 4m8 9h.01 files icon media
  • CodeFiles code m8 9l-4 3 4 3m16 9l4 3-4 3m14 5l-4 14 files icon developer
  • DatabaseData database m5 7c0-2 14-2 14 0v10c0 2-14 2-14 0v7zm0 0c0 2 14 2 14 0m5 12c0 2 14 2 14 0 data icon storage
  • TableData table m5 5h14v14h5v5zm0 5h14m5 14h14m10 5v14m15 5v14 data icon grid
  • Chart barData chart bar m5 19v9m12 19v5m19 19v-7m4 19h16 data icon analytics
  • Chart lineData chart line m4 17l5-5 4 4 7-9m4 20h16 data icon growth
  • CardInterface card m5 7h14v10h5v7zm3 3h8m8 14h5 interface icon panel
  • DashboardInterface dashboard m4 5h7v7h4v5zm9 0h7v5h-7v5zm4 14h7v5h4v-5zm9-2h7v7h-7v-7z interface icon layout
  • MobileInterface mobile m8 3h8a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h8a2 2 0 0 1-2-2v5a2 2 0 0 1 2-2zm3 15h4 interface icon phone
  • WindowInterface window m4 5h16v14h4v5zm0 4h16m8 7h.01m11 7h.01 interface icon browser
  • GlobePlaces globe m21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0zm3 12h18m12 3c2 2.5 3 5.5 3 9s-1 6.5-3 9m12 3c-2 2.5-3 5.5-3 9s1 6.5 3 9 places icon world web
  • Map pinPlaces map pin m12 21s7-5.5 7-11a7 7 0 1 0-14 0c0 5.5 7 11 7 11zm0-8a3 3 0 1 0 0-6 3 3 0 0 0 0 6z places icon location
  • StarObjects star m12 3l2.7 5.5 6.1.9-4.4 4.3 1 6-5.4-2.9-5.4 2.9 1-6-4.4-4.3 6.1-.9l12 3z objects icon favorite
  • HeartObjects heart m12 20s-8-4.8-8-11a4.5 4.5 0 0 1 8-2.8a4.5 4.5 0 0 1 20 9c0 6.2-8 11-8 11z objects icon love
  • SparklesObjects sparkles m12 3l1.8 5.2l19 10l-5.2 1.8l12 17l-1.8-5.2l5 10l5.2-1.8l12 3zm6 9 .9 2.6 2.6.9-2.6.9l18 20l-.9-2.6-2.6-.9 2.6-.9l18 12z objects icon magic ai
  • RocketObjects rocket m5 19c1.5-4 4-6.5 8-8l2-6 4 4-6 2c-1.5 4-4 6.5-8 8zm4-4-4 4m14 6l4 4 objects icon launch
  • TagCommerce tag m4 12 12 4h7v7l-8 8-7-7zm11-5h.01 commerce icon label
  • Credit cardCommerce credit card m4 7h16v10h4v7zm0 3h16m7 14h4 commerce icon payment
  • ReceiptCommerce receipt m7 4h10v16l-2-1-2 1-2-1-2 1-2-1-2 1v4zm3 5h4m10 13h4m10 17h2 commerce icon invoice

Search DOM Studio icon paths collected from the local source.

Selected path

M12 5v14M5 12h14
<script setup>
import { ref } from 'vue';
import { DomIconSelector } from '../../../lib/vue';

const selectedIcon = ref('M12 5v14M5 12h14');
</script>

<template>
	<div class="grid gap-4 sm:grid-cols-[minmax(0,22rem)_1fr] sm:items-start">
		<DomIconSelector
			v-model="selectedIcon"
			label="Button icon"
			description="Search DOM Studio icon paths collected from the local source."
			placeholder="Search icons"
		/>

		<div class="rounded-xl border border-border bg-secondary/40 p-4">
			<p class="text-xs font-medium uppercase tracking-wider text-muted-fg">Selected path</p>
			<code class="mt-2 block break-all text-xs leading-5 text-canvas-fg">{{ selectedIcon }}</code>
		</div>
	</div>
</template>

Demo

Emoji picker

Switch kind to emoji for reaction pickers, labels, and other compact symbol fields.

๐Ÿš€
  • ๐Ÿ˜€Grinning faceSmileys grinning face ๐Ÿ˜€ smileys emoji happy smile
  • ๐Ÿ™‚Slightly smiling faceSmileys slightly smiling face ๐Ÿ™‚ smileys emoji calm smile
  • ๐Ÿ˜Heart eyesSmileys heart eyes ๐Ÿ˜ smileys emoji love delight
  • ๐Ÿค”Thinking faceSmileys thinking face ๐Ÿค” smileys emoji question consider
  • ๐Ÿ˜ŽCool faceSmileys cool face ๐Ÿ˜Ž smileys emoji confidence sun
  • ๐Ÿ™ŒRaised handsGestures raised hands ๐Ÿ™Œ gestures emoji celebrate success
  • ๐Ÿ‘Clapping handsGestures clapping hands ๐Ÿ‘ gestures emoji applause approval
  • ๐Ÿ‘Thumbs upGestures thumbs up ๐Ÿ‘ gestures emoji approve yes
  • ๐Ÿ‘ŽThumbs downGestures thumbs down ๐Ÿ‘Ž gestures emoji reject no
  • ๐Ÿ‘‹Waving handGestures waving hand ๐Ÿ‘‹ gestures emoji hello goodbye
  • ๐Ÿš€RocketObjects rocket ๐Ÿš€ objects emoji launch ship
  • โœจSparklesObjects sparkles โœจ objects emoji magic polish
  • ๐Ÿ”ฅFireObjects fire ๐Ÿ”ฅ objects emoji hot urgent
  • ๐Ÿ’กLight bulbObjects light bulb ๐Ÿ’ก objects emoji idea insight
  • ๐Ÿ“ŒPushpinObjects pushpin ๐Ÿ“Œ objects emoji pin important
  • ๐Ÿ“ŽPaperclipObjects paperclip ๐Ÿ“Ž objects emoji attach file
  • ๐Ÿ”’LockedObjects locked ๐Ÿ”’ objects emoji security private
  • ๐Ÿ””BellObjects bell ๐Ÿ”” objects emoji notification alert
  • โœ…Check mark buttonStatus check mark button โœ… status emoji done complete
  • โš ๏ธWarningStatus warning โš ๏ธ status emoji caution risk
  • โŒCross markStatus cross mark โŒ status emoji error failed
  • ๐ŸŸขGreen circleStatus green circle ๐ŸŸข status emoji online healthy
  • ๐ŸŸกYellow circleStatus yellow circle ๐ŸŸก status emoji pending warning
  • ๐Ÿ”ดRed circleStatus red circle ๐Ÿ”ด status emoji offline blocked
  • ๐Ÿ“ˆChart increasingWork chart increasing ๐Ÿ“ˆ work emoji growth analytics
  • ๐Ÿ“‰Chart decreasingWork chart decreasing ๐Ÿ“‰ work emoji decline metrics
  • ๐ŸงพReceiptWork receipt ๐Ÿงพ work emoji billing invoice
  • ๐Ÿ“…CalendarWork calendar ๐Ÿ“… work emoji date schedule
  • ๐Ÿ’ฌSpeech balloonWork speech balloon ๐Ÿ’ฌ work emoji comment message
  • ๐ŸงชTest tubeWork test tube ๐Ÿงช work emoji experiment lab
  • ๐ŸŽฏDirect hitWork direct hit ๐ŸŽฏ work emoji target goal
  • ๐Ÿท๏ธLabelWork label ๐Ÿท๏ธ work emoji tag price

Use the same searchable selector shape for emoji values.

๐Ÿš€
<script setup>
import { ref } from 'vue';
import { DomIconSelector } from '../../../lib/vue';

const reaction = ref('๐Ÿš€');
</script>

<template>
	<div class="grid gap-4 sm:grid-cols-[minmax(0,22rem)_1fr] sm:items-start">
		<DomIconSelector
			v-model="reaction"
			kind="emoji"
			label="Reaction"
			description="Use the same searchable selector shape for emoji values."
			placeholder="Search emoji"
		/>

		<div class="flex min-h-24 items-center justify-center rounded-xl border border-border bg-secondary/40 text-5xl">
			{{ reaction }}
		</div>
	</div>
</template>

Demo

Custom symbols

Use kind custom with items when an app has its own symbol ids, status taxonomy, or third-party icon rows.

๐Ÿ”ฅ
  • ๐Ÿ”ฅHigh priorityStatus high priority priority-high status emoji urgent risk
  • Ready to shipStatus ready to ship ready status icon done approved
  • Needs reviewWorkflow needs review review workflow icon warning check

Custom rows can mix emoji, SVG path data, labels, groups, and keywords.

<script setup>
import { ref } from 'vue';
import { DomIconSelector } from '../../../lib/vue';

const selectedSymbol = ref('priority-high');
const symbols = [
	{
		label: 'High priority',
		value: 'priority-high',
		group: 'Status',
		emoji: '๐Ÿ”ฅ',
		keywords: 'urgent risk',
	},
	{
		label: 'Ready to ship',
		value: 'ready',
		group: 'Status',
		path: 'M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0ZM8.5 12.5l2.5 2.5 4.5-5',
		keywords: 'done approved',
	},
	{
		label: 'Needs review',
		value: 'review',
		group: 'Workflow',
		path: 'M12 4l9 16H3L12 4ZM12 9v4M12 17h.01',
		keywords: 'warning check',
	},
];
</script>

<template>
	<DomIconSelector
		v-model="selectedSymbol"
		kind="custom"
		label="Workflow symbol"
		description="Custom rows can mix emoji, SVG path data, labels, groups, and keywords."
		:items="symbols"
	/>
</template>

Reference

Props

Control props

NameTypeTSDefaultDescription
modelValue
type string | number | boolean | Component = unknown;
string | number | boolean | object | functionstring | number | boolean | Component''Selected icon path, emoji, component, or custom item value.
placeholderstringstring'Search icons'Search input placeholder.
kind'icons' | 'emoji' | 'mixed' | 'custom'string'icons'Built-in collection to show before custom items.
items
[
	{
		label: "Priority",
		value: "priority",
		path: "M12 5v14M5 12h14",
		emoji: "๐Ÿš€",
		group: "Status",
		keywords: "launch success",
	}
]
arrayArray<ItemsItem
type ItemsItem = {
	label?: string; // Label
	value?: string; // Value
	path?: string; // SVG path
	emoji?: string; // Emoji
	group?: string; // Group
	keywords?: string; // Keywords
};
>
[]Custom icon, emoji, or symbol rows.
includeBuiltInsbooleanbooleantrueInclude DOM Studio icon and emoji collections for the selected kind.
clearablebooleanbooleantrueShow a clear button when a value is selected.
loadingboolean | stringstringfalseShow an inline spinner while custom symbol rows are loading.
placement'bottom' | 'top' | 'right' | 'left'string'bottom'Preferred side before collision handling.
floatingMode'viewport' | 'anchor'string'viewport'viewport keeps the picker inside the browser; anchor keeps it attached while scrolling.
panelMinWidthstringstring'20rem'Minimum floating panel width as a CSS length.

Field props

NameTypeTSDefaultDescription
idstringstring''Optional ID override. By default parent forms derive the input ID from the field path using underscores.
namestringstring''Local field name. Parent forms derive the full field path and native HTML name from the form hierarchy.
labelstringstring''Visible field label.
descriptionstringstring''Optional helper copy below the field.
requiredbooleanbooleanfalseMark the field as required.
disabledbooleanbooleanfalseDisable field interaction.
readOnlybooleanbooleanfalseShow the value but prevent editing.
invalidbooleanbooleanfalseMark the field invalid.
errors
[
	{
		name: "Validation name",
		message: "Error message",
	}
]
array | object | stringArray<ErrorsItem
type ErrorsItem = {
	name?: string; // Name
	message?: string; // Message
};
>
[]Validation errors for this field.
visiblebooleanbooleantrueShow or hide the field.
validatorsarrayArray<unknown>[]Validators attached to this field. Use functions in Vue code, or serializable records such as { name: "minLength", props: { min: 2 } } in generated schemas.
validateOnBlurbooleanbooleantrueRun validators when the field loses focus.
chrome'field' | 'none' | falsestring'field'Render default field chrome, or hide chrome while keeping form state wiring.

Auto-generated from Icon selector.props and inline _edit hints.

Slots

NameScopeDescription
#preview{ item }Replace the selected-value preview inside the input.
#item{ item, selected }Replace each icon, emoji, or custom row in the picker panel.

Events

NamePayloadDescription
@update:modelValuestring | number | boolean | ComponentFired with the selected icon path, emoji, component, or custom item value.
@select{ item, value, label }Fired when a picker item is selected.
@querystringFired as the user searches the picker.
@focusโ€”โ€”
@blurโ€”โ€”

Names auto-detected from defineEmits and source emit() calls; payload and description from __doc.events when present.