diff --git a/packages/core/package.json b/packages/core/package.json index 8b1b7dd4..dd9a6753 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@viamrobotics/prime-core", - "version": "0.0.91", + "version": "0.0.92", "publishConfig": { "access": "public" }, diff --git a/packages/core/src/lib/radio.svelte b/packages/core/src/lib/radio.svelte index 122a2aae..57a08061 100644 --- a/packages/core/src/lib/radio.svelte +++ b/packages/core/src/lib/radio.svelte @@ -19,8 +19,17 @@ import Label from '$lib/label.svelte'; import { Icon, type IconName } from '$lib/icon'; import { preventHandler, preventKeyboardHandler } from '$lib/prevent-handler'; +interface Option { + label: string; + value: string; + description?: string; + icon?: IconName; +} + +type Options = (string | Option)[]; + /** The set of options that is available in the radio button. */ -export let options: string[]; +export let options: Options; /** The name for the inputs in the fieldset of radio options. */ export let name: string; @@ -41,11 +50,13 @@ export let direction: 'col' | 'row' = 'col'; let extraClasses: cx.Argument = ''; export { extraClasses as cx }; -$: isSelected = (option: string) => option === selected; +let optionsInternal: Option[] = []; + +$: optionsInternal = options.map((option) => + typeof option === 'string' ? { label: option, value: option } : option +); $: handleDisabled = preventHandler(disabled); $: handleDisabledKeydown = preventKeyboardHandler(disabled); -$: getIcon = (option: string): IconName => - isSelected(option) ? 'radiobox-marked' : 'radiobox-blank';