@knime/kds-components 0.15.0 → 0.15.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/accessories/Avatar/enums.ts","../src/accessories/Avatar/KdsAvatar.vue","../src/accessories/Icon/useIcon.ts","../src/accessories/Icon/KdsIcon.vue","../src/accessories/Icon/IdToIconNameMapping.ts","../../styles/dist/img/icons/def.ts","../../styles/dist/img/type-icons/def.ts","../src/accessories/Icon/enums.ts","../src/accessories/Icon/KdsDataType.vue","../src/accessories/Badge/enums.ts","../src/accessories/Badge/KdsBadge.vue","../src/accessories/ColorSwatch/enums.ts","../src/accessories/ColorSwatch/KdsColorSwatch.vue","../src/util/enums.ts","../src/util/useKdsDarkMode.ts","../src/util/useKdsLegacyMode.ts","../src/util/useKdsIsTruncated.ts","../src/accessories/LiveStatus/KdsLiveStatus.vue","../src/accessories/LiveStatus/enums.ts","../src/accessories/LoadingSpinner/KdsLoadingSpinner.vue","../src/accessories/LoadingSpinner/enums.ts","../src/buttons/BaseButton.vue","../src/buttons/KdsButton/KdsButton.vue","../src/util/nuxtComponentResolver.ts","../src/buttons/KdsLinkButton/KdsLinkButton.vue","../src/buttons/KdsToggleButton/KdsToggleButton.vue","../src/buttons/KdsToggleButton/enums.ts","../src/buttons/KdsProgressButton/KdsProgressButton.vue","../src/buttons/KdsProgressButton/enums.ts","../src/buttons/enums.ts","../src/forms/_helper/KdsLabel.vue","../src/forms/_helper/KdsSubText.vue","../src/forms/Checkbox/BaseCheckbox.vue","../src/forms/Checkbox/KdsCheckbox.vue","../src/forms/Checkbox/KdsCheckboxGroup.vue","../src/forms/Checkbox/enums.ts","../src/forms/RadioButton/KdsRadioButton.vue","../src/forms/RadioButton/useRadioSelection.ts","../src/forms/RadioButton/KdsRadioButtonGroup.vue","../src/forms/RadioButton/ValueSwitchItem.vue","../src/forms/RadioButton/useValueSwitchIconHiding.ts","../src/forms/RadioButton/KdsValueSwitch.vue","../src/forms/RadioButton/enums.ts","../src/overlays/Popover/KdsPopover.vue","../src/forms/_helper/BaseFormFieldWrapper.vue","../src/forms/inputs/BaseInput.vue","../src/forms/inputs/TextInput/KdsTextInput.vue","../src/forms/inputs/ColorInput/colorUtils.ts","../src/forms/inputs/ColorInput/usePointerHandler.ts","../src/forms/inputs/ColorInput/ColorPicker.vue","../src/forms/inputs/ColorInput/useColorInputValidationOnFocusOut.ts","../src/forms/inputs/ColorInput/KdsColorInput.vue","../src/forms/inputs/NumberInput/numberParser.ts","../src/forms/inputs/NumberInput/KdsNumberInput.vue","../src/forms/inputs/PatternInput/patternRegex.ts","../src/forms/inputs/PatternInput/KdsPatternInput.vue","../src/forms/inputs/SearchInput/KdsSearchInput.vue","../src/forms/inputs/Textarea/KdsTextarea.vue","../src/forms/_helper/List/ListItemAccessory/ListItemAccessory.vue","../src/forms/selects/Dropdown/BaseDropdown.vue","../src/layouts/EmptyState/KdsEmptyState.vue","../src/forms/_helper/List/ListItemAccessory/enums.ts","../src/forms/_helper/List/KdsListItem/enums.ts","../src/forms/_helper/List/KdsListItem/KdsListItem.vue","../src/forms/_helper/List/ListContainer/KdsListContainer.vue","../src/forms/selects/Dropdown/DropdownContainer.vue","../src/forms/selects/Dropdown/KdsDropdown.vue","../src/forms/_helper/InfoPopover/InfoPopover.vue","../src/forms/_helper/InfoPopover/KdsInfoToggleButton.vue","../src/forms/_helper/VariablePopover/VariablePopover.vue","../src/forms/_helper/VariablePopover/KdsVariableToggleButton.vue","../src/layouts/KdsCardClickable/KdsCardClickable.vue","../src/layouts/KdsCardClickable/enums.ts","../../../node_modules/.pnpm/@knime+utils@1.9.2_consola@3.4.2/node_modules/@knime/utils/src/promise/createUnwrappedPromise.ts","../../../node_modules/.pnpm/@knime+utils@1.9.2_consola@3.4.2/node_modules/@knime/utils/src/sleep.ts","../src/overlays/Modal/enums.ts","../src/overlays/Modal/KdsModalLayout.vue","../src/overlays/Modal/KdsModal.vue","../src/overlays/Modal/useKdsDynamicModal.ts","../src/overlays/Modal/KdsDynamicModalProvider.vue"],"sourcesContent":["export const kdsAvatarSize = {\n SMALL: \"small\",\n MEDIUM: \"medium\",\n LARGE: \"large\",\n XLARGE: \"xlarge\",\n} as const;\n\nexport const kdsAvatarSizes = Object.values(kdsAvatarSize);\n","<script setup lang=\"ts\">\nimport { computed, ref, watch } from \"vue\";\n\nimport { kdsAvatarSize } from \"./enums\";\nimport type { KdsAvatarProps } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsAvatarProps>(), {\n title: undefined,\n src: undefined,\n size: kdsAvatarSize.XLARGE,\n});\n\nconst imageLoadFailed = ref(false);\n\nwatch(\n () => props.src,\n () => {\n imageLoadFailed.value = false;\n },\n);\n\nconst shouldShowImage = computed(\n () => Boolean(props.src) && !imageLoadFailed.value,\n);\n\nconst onImageError = () => {\n imageLoadFailed.value = true;\n};\n\nconst accessibleTitle = computed(() => props.title?.trim() ?? \"\");\nconst hasTitle = computed(() => accessibleTitle.value.length > 0);\n\nconst displayedInitials = computed(() =>\n props.initials.trim().slice(0, 2).toUpperCase(),\n);\n</script>\n\n<template>\n <div\n class=\"kds-avatar\"\n :class=\"props.size\"\n :role=\"hasTitle ? 'img' : 'presentation'\"\n :title=\"hasTitle ? accessibleTitle : undefined\"\n :aria-hidden=\"!hasTitle ? 'true' : undefined\"\n :aria-label=\"hasTitle ? accessibleTitle : undefined\"\n >\n <img\n v-if=\"shouldShowImage\"\n class=\"kds-avatar-image\"\n :src=\"props.src\"\n alt=\"\"\n aria-hidden=\"true\"\n @error=\"onImageError\"\n />\n <div v-else class=\"kds-avatar-initials\" aria-hidden=\"true\">\n <span>\n {{ displayedInitials }}\n </span>\n </div>\n </div>\n</template>\n\n<style scoped>\n.kds-avatar {\n position: relative;\n display: inline-block;\n flex-shrink: 0;\n aspect-ratio: 1 / 1;\n overflow: hidden;\n vertical-align: middle;\n border-radius: var(--kds-border-radius-container-pill);\n\n &.small {\n inline-size: var(--kds-dimension-icon-0-75x);\n block-size: var(--kds-dimension-icon-0-75x);\n }\n\n &.medium {\n inline-size: var(--kds-dimension-icon-1x);\n block-size: var(--kds-dimension-icon-1x);\n }\n\n &.large {\n inline-size: var(--kds-dimension-component-width-1-25x);\n block-size: var(--kds-dimension-component-height-1-25x);\n }\n\n &.xlarge {\n inline-size: var(--kds-dimension-component-width-1-5x);\n block-size: var(--kds-dimension-component-height-1-5x);\n }\n}\n\n.kds-avatar::after {\n position: absolute;\n inset: 0;\n box-sizing: border-box;\n pointer-events: none;\n content: \"\";\n border: var(--kds-border-base-muted);\n border-radius: inherit;\n}\n\n.kds-avatar-image {\n display: block;\n inline-size: 100%;\n block-size: 100%;\n object-fit: cover;\n object-position: center;\n}\n\n.kds-avatar-initials {\n display: flex;\n align-items: center;\n justify-content: center;\n inline-size: 100%;\n block-size: 100%;\n container-type: inline-size;\n font: var(--kds-font-base-body-small-strong);\n color: var(--kds-color-text-and-icon-primary-inverted);\n user-select: none;\n background: var(--kds-color-background-primary-bold-initial);\n}\n\n.kds-avatar-initials > span {\n font-size: calc(1em + calc(100cqi - 2em) / 2);\n}\n</style>\n","import { type DefineComponent, type Ref, shallowRef, watch } from \"vue\";\n\nexport default ({\n name,\n folder,\n}: {\n name: Ref<string>;\n folder: \"icons\" | \"type-icons\";\n}) => {\n const iconCache = new Map<string, DefineComponent>();\n\n const iconComponent = shallowRef<DefineComponent | null>(null);\n\n watch(\n () => name.value,\n async (newName) => {\n if (iconCache.has(newName)) {\n iconComponent.value = iconCache.get(newName)!;\n return;\n }\n\n try {\n const module = await import(\n `../../../node_modules/@knime/kds-styles/dist/img/${folder}/${newName}.svg`\n );\n iconCache.set(newName, module.default);\n iconComponent.value = module.default;\n } catch (_error) {\n iconComponent.value = null;\n }\n },\n { immediate: true },\n );\n\n return iconComponent as Readonly<typeof iconComponent>;\n};\n","<script setup lang=\"ts\">\n/**\n * Displays an icon from the KDS icon set. The icon color inherits the text\n * color of the parent element by default. When the `disabled` prop is set,\n * the color is overridden with the `kds.color.text-and-icon.disabled` token.\n */\nimport { toRef } from \"vue\";\n\nimport type { KdsIconProps } from \"./types\";\nimport useIcon from \"./useIcon\";\n\nconst props = withDefaults(defineProps<KdsIconProps>(), {\n size: \"medium\",\n disabled: false,\n});\n\nconst iconComponent = useIcon({ name: toRef(props, \"name\"), folder: \"icons\" });\n</script>\n\n<template>\n <component\n :is=\"iconComponent\"\n v-if=\"iconComponent\"\n :class=\"['kds-icon', props.size, { disabled }]\"\n aria-hidden=\"true\"\n focusable=\"false\"\n />\n <span\n v-else\n :class=\"['kds-icon', props.size, { disabled }]\"\n aria-hidden=\"true\"\n focusable=\"false\"\n />\n</template>\n\n<style scoped>\n@import url(\"./styles.css\");\n\n.kds-icon.disabled {\n color: var(--kds-color-text-and-icon-disabled);\n}\n</style>\n","import type { KdsTypeIconName } from \"./types\";\n\nexport const ID_TO_ICON_MAP = {\n // Flow Variables\n STRING: \"variable-string\",\n LONG: \"variable-integer\",\n DOUBLE: \"variable-number-double\",\n BOOLEAN: \"variable-boolean\",\n INTEGER: \"variable-integer\",\n FSLocation: \"variable-path\",\n FSLocationSpec: \"variable-path\",\n STRINGARRAY: \"variable-collection-string\",\n LONGARRAY: \"variable-collection-integer\",\n DOUBLEARRAY: \"variable-collection-double\",\n BOOLEANARRAY: \"variable-collection-boolean\",\n INTARRAY: \"variable-collection-integer\",\n CREDENTIALS: \"variable-credential\",\n CONDAENVIRONMENT: \"variable-conda-environment\",\n UNKNOWN: \"variable-unknown\",\n // General\n \"org.knime.core.data.BooleanValue\": \"boolean-datatype\",\n \"org.knime.core.data.DataValue\": \"unknown-datatype\",\n \"org.knime.core.data.DoubleValue\": \"number-double-datatype\",\n \"org.knime.core.data.IntValue\": \"number-integer-datatype\",\n \"org.knime.core.data.LongValue\": \"number-integer-datatype\",\n \"org.knime.core.data.MissingValue\": \"unknown-datatype\",\n \"org.knime.core.data.StringValue\": \"string-datatype\",\n \"org.knime.core.data.collection.ListDataValue\": \"collection-list-datatype\",\n \"org.knime.core.data.collection.SetDataValue\": \"collection-set-datatype\",\n \"org.knime.core.data.vector.doublevector.DoubleVectorValue\":\n \"number-double-vector-datatype\",\n \"org.knime.core.data.vector.stringvector.StringVectorValue\":\n \"string-vector-datatype\",\n \"org.knime.filehandling.core.data.location.FSLocationValue\": \"path-datatype\",\n // Image, Audio & Video\n \"org.knime.audio.data.cell.AudioValue\": \"audio-datatype\",\n \"org.knime.base.data.xml.SvgValue\": \"image-svg-datatype\",\n \"org.knime.core.data.image.png.PNGImageValue\": \"image-png-datatype\",\n // Date & Time\n \"org.knime.core.data.time.localdate.LocalDateValue\": \"date-datatype\",\n \"org.knime.core.data.time.localdatetime.LocalDateTimeValue\":\n \"date-time-local-datatype\",\n \"org.knime.core.data.time.localtime.LocalTimeValue\": \"time-datatype\",\n \"org.knime.core.data.time.zoneddatetime.ZonedDateTimeValue\":\n \"date-time-zoned-datatype\",\n \"org.knime.core.data.time.duration.DurationValue\":\n \"duration-time-based-datatype\",\n \"org.knime.core.data.time.period.PeriodValue\": \"duration-date-based-datatype\",\n // Geospatial\n \"org.knime.geospatial.core.data.GeoValue\": \"geo-datatype\",\n \"org.knime.geospatial.core.data.GeoLineValue\": \"geo-datatype\",\n \"org.knime.geospatial.core.data.GeoPointValue\": \"geo-datatype\",\n \"org.knime.geospatial.core.data.GeoPolygonValue\": \"geo-datatype\",\n \"org.knime.geospatial.core.data.GeoCollectionValue\": \"geo-datatype\",\n \"org.knime.geospatial.core.data.GeoMultiLineValue\": \"geo-datatype\",\n \"org.knime.geospatial.core.data.GeoMultiPointValue\": \"geo-datatype\",\n \"org.knime.geospatial.core.data.GeoMultiPolygonValue\": \"geo-datatype\",\n // Code\n \"org.knime.core.data.blob.BinaryObjectDataValue\": \"binary-object-datatype\",\n \"org.knime.core.data.html.HTMLValue\": \"xml-datatype\",\n \"org.knime.core.data.json.JSONValue\": \"json-datatype\",\n \"org.knime.core.data.uri.URIDataValue\": \"uri-datatype\",\n \"org.knime.core.data.vector.bitvector.BitVectorValue\":\n \"bit-byte-vector-datatype\",\n \"org.knime.core.data.vector.bitvector.SparseBitVectorValue\":\n \"bit-byte-vector-datatype\",\n \"org.knime.core.data.vector.bytevector.ByteVectorValue\":\n \"bit-byte-vector-datatype\",\n \"org.knime.core.data.xml.PMMLValue\": \"model-pmml-datatype\",\n \"org.knime.core.data.xml.XMLValue\": \"xml-datatype\",\n \"org.knime.knip.base.data.labeling.LabelingValue\": \"labeling-datatype\",\n // Agentic AI\n \"org.knime.ai.core.data.message.MessageValue\": \"message-datatype\",\n \"org.knime.core.node.agentic.tool.WorkflowToolValue\": \"tool-datatype\",\n // Textprocessing\n \"org.knime.ext.textprocessing.data.DocumentValue\": \"document-datatype\",\n \"org.knime.ext.textprocessing.data.TermValue\": \"term-datatype\",\n // Network\n \"org.knime.network.core.knime.cell.GraphValue\": \"subgraph-datatype\",\n // Linear Notations\n \"org.knime.chem.types.InchiValue\": \"linear-notation-molecule\",\n \"org.knime.chem.types.SlnValue\": \"linear-notation-molecule\",\n \"org.knime.chem.types.SmartsValue\": \"linear-notation-molecule\",\n \"org.knime.chem.types.SmilesValue\": \"linear-notation-molecule\",\n // Molecular file formats\n \"org.knime.chem.types.CtabValue\": \"molecule\",\n \"org.knime.chem.types.MolValue\": \"molecule\",\n \"org.knime.chem.types.Mol2Value\": \"molecule\",\n \"org.knime.chem.types.SdfValue\": \"molecule\",\n // Biopolymer & sequence representations\n \"org.knime.chem.types.helm.HELMValue\": \"helm-datatype\",\n // Relation & Process representations\n \"org.knime.chem.types.CMLValue\": \"test-tube\",\n \"org.knime.chem.types.RxnValue\": \"test-tube\",\n // Visualization & specialized software formats\n \"org.knime.bio.types.PdbValue\": \"microscope\",\n \"org.knime.chem.types.cdx.CDXMLValue\": \"microscope\",\n \"org.rdkit.knime.types.RDKitMolValue\": \"microscope\",\n \"jp.co.infocom.cheminfo.marvin.type.MrvValue\": \"microscope\",\n} as const satisfies Record<string, KdsTypeIconName>;\n\nexport type TypeId = keyof typeof ID_TO_ICON_MAP;\n","\nexport const iconNames = [\n 'add-user',\n 'ai-general',\n 'annotation-mode',\n 'arrow-down',\n 'arrow-up',\n 'arrows-expand',\n 'arrows-move',\n 'arrows-order',\n 'back',\n 'bold',\n 'calendar',\n 'case-sensitive',\n 'center-aligned',\n 'checkmark',\n 'chevron-down',\n 'chevron-left-double',\n 'chevron-left',\n 'chevron-right-double',\n 'chevron-right',\n 'chevron-up',\n 'circle-error',\n 'circle-info',\n 'circle-question',\n 'circle-success',\n 'cloud-download',\n 'cloud-knime',\n 'cloud-pending-changes',\n 'cloud-synced',\n 'cloud-upload',\n 'cloud-workflow',\n 'code-block',\n 'color-picker',\n 'comment',\n 'component',\n 'connection',\n 'copy',\n 'cursor',\n 'data-app',\n 'data-value-view',\n 'date-time',\n 'db-database',\n 'db-schema',\n 'db-table-view',\n 'db-table',\n 'deploy',\n 'detect',\n 'divider',\n 'duration',\n 'edit',\n 'education',\n 'error-panel',\n 'execute-all',\n 'execute',\n 'expand-panel',\n 'extension-community',\n 'extension',\n 'external-link',\n 'eye',\n 'file-export',\n 'file-text',\n 'file',\n 'filter',\n 'flow-variable-default',\n 'flow-variable-in-out',\n 'flow-variable-in',\n 'flow-variable-out',\n 'folder-plus',\n 'folder-workflow',\n 'folder',\n 'forum',\n 'function-catalog',\n 'home',\n 'import',\n 'info',\n 'interval',\n 'italic',\n 'key',\n 'layout-editor',\n 'left-aligned',\n 'like',\n 'limit',\n 'link',\n 'linked-metanode',\n 'list-bulletpoint',\n 'list-number',\n 'list-thumbs',\n 'list',\n 'local-filesystem',\n 'lock',\n 'metanode',\n 'mini-map',\n 'minimize-dialog',\n 'minimize-side-panel',\n 'minus',\n 'more-actions',\n 'node-stack',\n 'nodes-align-horiz',\n 'nodes-align-vert',\n 'open-in-new-window',\n 'pan-mode',\n 'parameter',\n 'pending-changes',\n 'placeholder',\n 'plus',\n 'quote',\n 're-execution',\n 'redo',\n 'regex',\n 'reload',\n 'rename',\n 'replace',\n 'reset-all',\n 'resume-execution',\n 'right-aligned',\n 'rocket',\n 'save-as',\n 'save',\n 'schedule',\n 'search',\n 'secret-store',\n 'selected-cancel',\n 'selected-execution',\n 'selected-reset',\n 'send',\n 'server-rack-workflow',\n 'service',\n 'settings',\n 'share',\n 'shortcuts',\n 'sort-ascending',\n 'sort-descending',\n 'space-local',\n 'space-private',\n 'space',\n 'stepwise-execution',\n 'stop',\n 'strikethrough',\n 'team',\n 'text',\n 'textstyles',\n 'thumbs-down',\n 'thumbs-up',\n 'time',\n 'to-bottom',\n 'to-top',\n 'trash',\n 'trigger',\n 'underline',\n 'undo',\n 'unlink',\n 'user',\n 'version',\n 'view-cards',\n 'warning',\n 'workflow',\n 'x-close'\n] as const;\n\nexport type IconName = typeof iconNames[number];\n","\nexport const typeIconNames = [\n 'audio-datatype',\n 'binary-object-datatype',\n 'bit-byte-vector-datatype',\n 'boolean-datatype',\n 'collection-list-datatype',\n 'collection-set-datatype',\n 'date-datatype',\n 'date-time-local-datatype',\n 'date-time-zoned-datatype',\n 'default-extension-datatype',\n 'document-datatype',\n 'duration-date-based-datatype',\n 'duration-time-based-datatype',\n 'geo-datatype',\n 'helm-datatype',\n 'image-png-datatype',\n 'image-svg-datatype',\n 'json-datatype',\n 'labeling-datatype',\n 'linear-notation-molecule',\n 'message-datatype',\n 'microscope',\n 'model-pmml-datatype',\n 'molecule',\n 'number-double-datatype',\n 'number-double-vector-datatype',\n 'number-integer-datatype',\n 'path-datatype',\n 'string-datatype',\n 'string-vector-datatype',\n 'subgraph-datatype',\n 'term-datatype',\n 'test-tube',\n 'time-datatype',\n 'tool-datatype',\n 'unknown-datatype',\n 'uri-datatype',\n 'variable-boolean',\n 'variable-collection-boolean',\n 'variable-collection-double',\n 'variable-collection-integer',\n 'variable-collection-string',\n 'variable-conda-environment',\n 'variable-credential',\n 'variable-integer',\n 'variable-number-double',\n 'variable-path',\n 'variable-string',\n 'variable-unknown',\n 'xml-datatype'\n] as const;\n\nexport type TypeIconName = typeof typeIconNames[number];\n","export { iconNames as kdsIconNames } from \"@knime/kds-styles/img/icons/def\";\nexport { typeIconNames as kdsTypeIconNames } from \"@knime/kds-styles/img/type-icons/def\";\n\nimport { iconNames as kdsIconNames } from \"@knime/kds-styles/img/icons/def\";\nimport { typeIconNames as kdsTypeIconNames } from \"@knime/kds-styles/img/type-icons/def\";\n\nconst toEnumKey = (name: string) =>\n name.toUpperCase().replaceAll(\"-\", \"_\") as Uppercase<typeof name>;\n\nexport const kdsIconName = Object.fromEntries(\n kdsIconNames.map((name) => [toEnumKey(name), name] as const),\n) as { [K in (typeof kdsIconNames)[number] as Uppercase<K>]: K };\n\nexport const kdsTypeIconName = Object.fromEntries(\n kdsTypeIconNames.map((name) => [toEnumKey(name), name] as const),\n) as { [K in (typeof kdsTypeIconNames)[number] as Uppercase<K>]: K };\n\nexport const kdsIconSize = {\n XSMALL: \"xsmall\",\n SMALL: \"small\",\n MEDIUM: \"medium\",\n LARGE: \"large\",\n} as const;\n\nexport const kdsIconSizes = Object.values(kdsIconSize);\n\nexport const kdsDataTypeSize = {\n SMALL: \"small\",\n MEDIUM: \"medium\",\n LARGE: \"large\",\n} as const;\n\nexport const kdsDataTypeSizes = Object.values(kdsDataTypeSize);\n","<script setup lang=\"ts\">\nimport { computed } from \"vue\";\n\nimport { ID_TO_ICON_MAP, type TypeId } from \"./IdToIconNameMapping\";\nimport { kdsTypeIconNames } from \"./enums\";\nimport type {\n KdsDataTypeProps,\n KdsDataTypeSize,\n KdsIconSize,\n KdsTypeIconName,\n} from \"./types\";\nimport useIcon from \"./useIcon\";\n\ntype DataTypeIconSize = Exclude<KdsIconSize, \"large\">;\n\nconst DATA_TYPE_SIZE_TO_ICON_SIZE: Record<KdsDataTypeSize, DataTypeIconSize> = {\n large: \"medium\",\n medium: \"small\",\n small: \"xsmall\",\n} as const;\n\nconst props = withDefaults(defineProps<KdsDataTypeProps>(), {\n iconName: \"unknown-datatype\",\n iconTitle: \"Unknown Data Type\",\n size: \"medium\",\n disabled: false,\n});\n\nconst iconSize = computed(() => DATA_TYPE_SIZE_TO_ICON_SIZE[props.size]);\n\nconst isIconName = (value: string): value is KdsTypeIconName =>\n kdsTypeIconNames.includes(value as KdsTypeIconName);\n\nconst isTypeId = (value: string): value is TypeId =>\n Object.keys(ID_TO_ICON_MAP).includes(value);\n\nconst iconName = computed<KdsTypeIconName>(() => {\n if (isIconName(props.iconName)) {\n return props.iconName;\n }\n if (isTypeId(props.iconName)) {\n return ID_TO_ICON_MAP[props.iconName];\n }\n return props.iconName.startsWith(\"org.knime\")\n ? \"default-extension-datatype\"\n : \"unknown-datatype\";\n});\n\nconst iconComponent = useIcon({\n name: iconName,\n folder: \"type-icons\",\n});\n</script>\n\n<template>\n <div\n :class=\"['kds-data-type-icon-container', size, { disabled }]\"\n :title=\"props.iconTitle\"\n >\n <component\n :is=\"iconComponent\"\n :class=\"['kds-icon', 'kds-data-type-icon', iconSize]\"\n aria-hidden=\"true\"\n focusable=\"false\"\n />\n </div>\n</template>\n\n<style scoped>\n@import url(\"./styles.css\");\n\n.kds-data-type-icon-container {\n --data-type-height: var(--kds-dimension-component-height-1x);\n --data-type-width: var(--kds-dimension-component-width-1x);\n --data-type-padding: var(--kds-spacing-container-0-12x);\n\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--data-type-width);\n height: var(--data-type-height);\n padding: var(--data-type-padding);\n color: var(--kds-color-desktop-header-text-and-icon-muted);\n background-color: var(--kds-color-page-default);\n border: var(--kds-border-base-muted);\n border-radius: var(--kds-border-radius-container-0-12x);\n\n &.disabled {\n color: var(--kds-color-text-and-icon-disabled);\n }\n\n &.small {\n --data-type-height: var(--kds-dimension-icon-0-75x);\n --data-type-width: var(--kds-dimension-icon-0-75x);\n --data-type-padding: var(--kds-spacing-container-none);\n }\n\n &.large {\n --data-type-height: var(--kds-dimension-component-height-1-25x);\n --data-type-width: var(--kds-dimension-component-width-1-25x);\n }\n\n /* The kds-data-type-icon class is needed to increase the specificity to overwrite the icon-stroke-width */\n & .kds-icon.kds-data-type-icon {\n &.small {\n --icon-stroke-width: var(--kds-border-width-icon-stroke-m);\n }\n\n &.medium {\n --icon-stroke-width: var(--kds-border-width-icon-stroke-l);\n }\n }\n}\n</style>\n","export const kdsBadgeVariant = {\n NEUTRAL: \"neutral\",\n INFO: \"info\",\n WARNING: \"warning\",\n SUCCESS: \"success\",\n ERROR: \"error\",\n GHOST: \"ghost\",\n} as const;\n\nexport const kdsBadgeVariants = Object.values(kdsBadgeVariant);\n\nexport const kdsBadgeSize = {\n XXSMALL: \"xxsmall\",\n XSMALL: \"xsmall\",\n} as const;\n\nexport const kdsBadgeSizes = Object.values(kdsBadgeSize);\n","<script setup lang=\"ts\">\nimport { KdsIcon, type KdsIconSize } from \"../Icon\";\n\nimport { kdsBadgeSize, kdsBadgeVariant } from \"./enums\";\nimport type { KdsBadgeProps, KdsBadgeSize } from \"./types\";\n\nwithDefaults(defineProps<KdsBadgeProps>(), {\n variant: kdsBadgeVariant.NEUTRAL,\n size: kdsBadgeSize.XSMALL,\n icon: undefined,\n});\n\nconst sizeToIconSize: Record<KdsBadgeSize, KdsIconSize> = {\n xxsmall: \"xsmall\",\n xsmall: \"small\",\n};\n</script>\n\n<template>\n <span :class=\"['kds-badge', size, variant]\">\n <KdsIcon v-if=\"icon\" :name=\"icon\" :size=\"sizeToIconSize[size]\" />\n <span class=\"label-wrapper\">{{ label }}</span>\n </span>\n</template>\n\n<style scoped>\n.kds-badge {\n display: inline-flex;\n align-items: center;\n max-width: 100%;\n border-radius: var(--kds-border-radius-container-pill);\n\n & .label-wrapper {\n min-width: 0;\n max-width: var(--kds-dimension-component-width-16x);\n padding: 0 var(--kds-spacing-container-0-12x);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n &.xxsmall {\n height: var(--kds-dimension-component-height-1x);\n padding: 0 var(--kds-spacing-container-0-25x);\n font: var(--kds-font-base-title-xsmall);\n }\n\n &.xsmall {\n gap: var(--kds-spacing-container-0-12x);\n height: var(--kds-dimension-component-height-1-25x);\n padding: 0 var(--kds-spacing-container-0-37x);\n font: var(--kds-font-base-title-small);\n }\n\n &.neutral {\n color: var(--kds-color-text-and-icon-neutral);\n background-color: var(--kds-color-background-neutral-bold-initial);\n border: var(--kds-border-base-subtle);\n }\n\n &.info {\n color: var(--kds-color-text-and-icon-info);\n background-color: var(--kds-color-background-static-info);\n border: var(--kds-border-base-info);\n }\n\n &.warning {\n color: var(--kds-color-text-and-icon-warning);\n background-color: var(--kds-color-background-static-warning);\n border: var(--kds-border-base-warning);\n }\n\n &.success {\n color: var(--kds-color-text-and-icon-success);\n background-color: var(--kds-color-background-static-success);\n border: var(--kds-border-base-success);\n }\n\n &.error {\n color: var(--kds-color-text-and-icon-danger);\n background-color: var(--kds-color-background-static-danger);\n border: var(--kds-border-base-danger);\n }\n\n &.ghost {\n color: var(--kds-color-text-and-icon-neutral);\n background-color: transparent;\n border: var(--kds-border-base-subtle);\n }\n}\n</style>\n","export const kdsColorSwatchType = {\n LEARNER: \"learner\",\n MANIPULATOR: \"manipulator\",\n PREDICTOR: \"predictor\",\n SINK: \"sink\",\n SOURCE: \"source\",\n VISUALIZER: \"visualizer\",\n OTHER: \"other\",\n} as const;\n\nexport const kdsColorSwatchTypes = Object.values(kdsColorSwatchType);\n\nexport const kdsColorSwatchSize = {\n SMALL: \"small\",\n MEDIUM: \"medium\",\n LARGE: \"large\",\n} as const;\n\nexport const kdsColorSwatchSizes = Object.values(kdsColorSwatchSize);\n","<script setup lang=\"ts\">\nimport { computed } from \"vue\";\n\nimport { kdsColorSwatchSize } from \"./enums\";\nimport type { KdsColorSwatchProps, KdsColorSwatchType } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsColorSwatchProps>(), {\n size: kdsColorSwatchSize.SMALL,\n title: undefined,\n});\n\nconst typeToTokenColor: Record<KdsColorSwatchType, string> = {\n learner: \"var(--kds-color-nodes-and-variables-learner)\",\n manipulator: \"var(--kds-color-nodes-and-variables-manipulator)\",\n predictor: \"var(--kds-color-nodes-and-variables-predictor)\",\n sink: \"var(--kds-color-nodes-and-variables-sink)\",\n source: \"var(--kds-color-nodes-and-variables-source)\",\n visualizer: \"var(--kds-color-nodes-and-variables-visualizer)\",\n other: \"var(--kds-color-nodes-and-variables-other)\",\n};\n\nconst isKdsColorSwatchType = (value: string): value is KdsColorSwatchType =>\n Object.hasOwn(typeToTokenColor, value);\n\nconst backgroundColor = computed(() => {\n if (isKdsColorSwatchType(props.color)) {\n return typeToTokenColor[props.color];\n }\n return props.color;\n});\n\nconst accessibleTitle = computed(() => props.title?.trim() ?? \"\");\nconst hasTitle = computed(() => accessibleTitle.value.length > 0);\n</script>\n\n<template>\n <span\n :role=\"hasTitle ? 'img' : 'presentation'\"\n class=\"kds-color-swatch\"\n :class=\"props.size\"\n :title=\"hasTitle ? accessibleTitle : undefined\"\n :style=\"{ backgroundColor }\"\n :aria-hidden=\"hasTitle ? undefined : 'true'\"\n :aria-label=\"hasTitle ? accessibleTitle : undefined\"\n />\n</template>\n\n<style scoped>\n.kds-color-swatch {\n display: inline-block;\n flex-shrink: 0;\n overflow: hidden;\n line-height: 0;\n border: var(--kds-border-base-muted);\n border-radius: var(--kds-border-radius-container-0-25x);\n\n &.small {\n width: var(--kds-dimension-icon-0-75x);\n height: var(--kds-dimension-icon-0-75x);\n }\n\n &.medium {\n width: var(--kds-dimension-icon-1x);\n height: var(--kds-dimension-icon-1x);\n }\n\n &.large {\n width: var(--kds-dimension-component-width-1-25x);\n height: var(--kds-dimension-component-height-1-25x);\n }\n}\n</style>\n","export const kdsDarkModeType = {\n LIGHT: \"light\",\n DARK: \"dark\",\n SYSTEM: \"system\",\n} as const;\n\nexport const kdsDarkModeTypes = Object.values(kdsDarkModeType);\n","import { computed, watch } from \"vue\";\nimport { useDark, useLocalStorage, usePreferredDark } from \"@vueuse/core\";\n\nimport { kdsDarkModeType } from \"./enums\";\n\nexport const KDS_DARK_MODE_STORAGE_KEY = \"KNIME_DARK_MODE\";\n\nexport type KdsDarkModeType =\n (typeof kdsDarkModeType)[keyof typeof kdsDarkModeType];\n\n// could also be system, but the previous behaviour forced it to light, so we use that\nconst defaultMode: KdsDarkModeType = kdsDarkModeType.LIGHT;\n\nexport const useKdsDarkMode = () => {\n // to also save a 'system' option we need to store the preference separately from the effective dark mode\n const userPreference = useLocalStorage<KdsDarkModeType>(\n KDS_DARK_MODE_STORAGE_KEY,\n defaultMode,\n );\n\n const isDark = useDark({\n storageKey: `${KDS_DARK_MODE_STORAGE_KEY}_EFFECTIVE`,\n initialValue: defaultMode,\n onChanged: (isDarkValue) => {\n let cssMode: string, themeValue: string;\n\n if (userPreference.value === kdsDarkModeType.SYSTEM) {\n cssMode = \"light dark\";\n themeValue = kdsDarkModeType.SYSTEM;\n } else {\n cssMode = themeValue = isDarkValue\n ? kdsDarkModeType.DARK\n : kdsDarkModeType.LIGHT;\n }\n\n document.documentElement.style.setProperty(\"color-scheme\", cssMode);\n document.documentElement.dataset.theme = themeValue;\n },\n });\n\n // react on both system and user preference changes, invokes onChanged function in the custom useDark implementation above\n const systemPrefersDark = usePreferredDark();\n watch(\n [userPreference, systemPrefersDark],\n ([preference, systemDark]) => {\n if (preference === kdsDarkModeType.SYSTEM) {\n isDark.value = systemDark;\n } else {\n isDark.value = preference === kdsDarkModeType.DARK;\n }\n },\n { immediate: true },\n );\n\n const currentMode = computed<KdsDarkModeType>({\n get() {\n return userPreference.value;\n },\n set(value: KdsDarkModeType) {\n userPreference.value = value;\n },\n });\n\n const isDarkMode = computed(() => {\n return userPreference.value === kdsDarkModeType.DARK;\n });\n\n const isLightMode = computed(() => {\n return userPreference.value === kdsDarkModeType.LIGHT;\n });\n\n const isSystemMode = computed(\n () => userPreference.value === kdsDarkModeType.SYSTEM,\n );\n\n return {\n /** Exposes a writable computed ref to get the current dark mode but also use it in e.g. a v-model to set it */\n currentMode,\n /** Whether or not the current user preference is dark. Note, if the preference is set to 'system' it will return false. */\n isDarkMode,\n /** Whether or not the current user preference is light. Note, if the preference is set to 'system' it will return false. */\n isLightMode,\n /** Whether or not the current user preference is set to 'system'. */\n isSystemMode,\n };\n};\n","import { ref, watch } from \"vue\";\n\nconst legacyMode = ref(false);\n\nexport const useKdsLegacyMode = (initialValue: boolean = false) => {\n if (legacyMode.value !== initialValue) {\n legacyMode.value = initialValue;\n }\n\n watch(\n () => legacyMode.value,\n (newValue) => {\n document.documentElement.classList.toggle(\"kds-legacy\", newValue);\n },\n { immediate: true },\n );\n\n return {\n /** Writable ref to get and/or set the legacy mode; can also be used with v-model */\n legacyMode,\n };\n};\n","import { type Ref, ref } from \"vue\";\nimport { useMutationObserver, useResizeObserver } from \"@vueuse/core\";\n\nexport function elementOverflowsHorizontally(\n element: HTMLElement | null,\n): boolean {\n if (!element) {\n return false;\n }\n return element.scrollWidth > element.clientWidth;\n}\n\nexport function elementOverflowsVertically(\n element: HTMLElement | null,\n): boolean {\n if (!element) {\n return false;\n }\n return element.scrollHeight > element.clientHeight;\n}\n\n/**\n * Tracks whether the content of an element is visually truncated.\n *\n * Detects both horizontal truncation (e.g. `text-overflow: ellipsis`)\n * and vertical truncation (e.g. `-webkit-line-clamp`).\n *\n * This can be used to set tooltips or other UI affordances when text is cut off.\n * Changing the size of the provided element based on this composable may result in an infinite loop!\n *\n * @param elementRef - A ref pointing to the element that might be truncated.\n * @returns An object containing a reactive `isTruncated` ref.\n */\nexport function useKdsIsTruncated(elementRef: Ref<HTMLElement | null>) {\n const isTruncated = ref(false);\n\n const checkTruncation = () => {\n isTruncated.value =\n elementOverflowsHorizontally(elementRef.value) ||\n elementOverflowsVertically(elementRef.value);\n };\n\n useResizeObserver(elementRef, checkTruncation);\n\n // Observe changes to the element's subtree, including text-node updates,\n // so content changes without size changes still re-check truncation.\n useMutationObserver(elementRef, checkTruncation, {\n childList: true,\n characterData: true,\n subtree: true,\n // Also observe attribute changes (especially class/style) that can affect\n // truncation without necessarily triggering a resize event.\n attributes: true,\n attributeFilter: [\"class\", \"style\"],\n });\n\n return { isTruncated };\n}\n","<script setup lang=\"ts\">\nimport { computed, useTemplateRef } from \"vue\";\n\nimport { useKdsIsTruncated } from \"../../util\";\n\nimport type { KdsLiveStatusProps } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsLiveStatusProps>(), {\n status: \"red\",\n size: \"medium\",\n label: \"\",\n title: undefined,\n});\n\nconst accessibleTitle = computed(\n () => props.title?.trim() || `Status is ${props.status}`,\n);\n\nconst labelEl = useTemplateRef(\"labelEl\");\nconst { isTruncated } = useKdsIsTruncated(labelEl);\n</script>\n\n<template>\n <span\n :class=\"['kds-live-status', props.status, `size-${props.size}`]\"\n role=\"img\"\n :title=\"accessibleTitle\"\n :aria-label=\"accessibleTitle\"\n >\n <span class=\"dot\" />\n <span\n v-if=\"props.label\"\n ref=\"labelEl\"\n class=\"label\"\n :title=\"isTruncated ? props.label : undefined\"\n >\n {{ props.label }}\n </span>\n </span>\n</template>\n\n<style scoped>\n.kds-live-status {\n --dot-color: var(--kds-color-text-and-icon-disabled);\n\n display: inline-flex;\n flex-shrink: 0;\n gap: 0; /* gap already included in dot */\n align-items: center;\n max-width: 100%;\n line-height: 0;\n\n &.red {\n --dot-color: var(--kds-color-text-and-icon-danger);\n }\n\n &.orange {\n --dot-color: var(--kds-color-text-and-icon-warning);\n }\n\n &.green {\n --dot-color: var(--kds-color-text-and-icon-success);\n }\n\n .dot {\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: var(--kds-dimension-icon-1-25x);\n height: var(--kds-dimension-icon-1-25x);\n\n &::after {\n display: block;\n width: 50%;\n height: 50%;\n content: \"\";\n background-color: var(--dot-color);\n border-radius: var(--kds-border-radius-container-pill);\n }\n }\n\n .label {\n overflow: hidden;\n text-overflow: ellipsis;\n font: var(--kds-font-base-subtext-medium);\n color: var(--kds-color-text-and-icon-neutral);\n white-space: nowrap;\n }\n\n &.size-medium {\n .dot {\n width: var(--kds-dimension-icon-1x);\n height: var(--kds-dimension-icon-1x);\n }\n\n .label {\n font: var(--kds-font-base-subtext-small);\n }\n }\n\n &.size-small {\n .dot {\n width: var(--kds-dimension-icon-0-75x);\n height: var(--kds-dimension-icon-0-75x);\n }\n\n .label {\n font: var(--kds-font-base-subtext-xsmall);\n }\n }\n}\n</style>\n","export const kdsLiveStatusStatus = {\n RED: \"red\",\n ORANGE: \"orange\",\n GREEN: \"green\",\n DISABLED: \"disabled\",\n} as const;\n\nexport const kdsLiveStatusStatuses = Object.values(kdsLiveStatusStatus);\n\nexport const kdsLiveStatusSize = {\n LARGE: \"large\",\n MEDIUM: \"medium\",\n SMALL: \"small\",\n} as const;\n\nexport const kdsLiveStatusSizes = Object.values(kdsLiveStatusSize);\n","<script lang=\"ts\" setup>\nimport type { KdsLoadingSpinnerProps } from \"./types\";\n\nwithDefaults(defineProps<KdsLoadingSpinnerProps>(), {\n variant: \"onSurface\",\n size: \"medium\",\n});\n</script>\n\n<template>\n <svg\n :class=\"['kds-loading-spinner', size]\"\n :data-style=\"variant\"\n viewBox=\"0 0 120 120\"\n >\n <circle class=\"track\" cx=\"60\" cy=\"60\" r=\"50\" />\n <circle class=\"loader\" cx=\"60\" cy=\"60\" r=\"50\" />\n </svg>\n</template>\n\n<style scoped>\n.kds-loading-spinner {\n --icon-width: var(--kds-dimension-icon-1x);\n --icon-height: var(--kds-dimension-icon-1x);\n --icon-stroke-width: 12; /* 10% of size */\n\n &.xsmall {\n --icon-width: var(--kds-dimension-icon-0-56x);\n --icon-height: var(--kds-dimension-icon-0-56x);\n }\n\n &.small {\n --icon-width: var(--kds-dimension-icon-0-75x);\n --icon-height: var(--kds-dimension-icon-0-75x);\n }\n\n &.large {\n --icon-width: var(--kds-dimension-icon-1-25x);\n --icon-height: var(--kds-dimension-icon-1-25x);\n }\n\n width: var(--icon-width);\n height: var(--icon-height);\n\n --color-track: var(--kds-color-loading-spinner-track-on-surface);\n --color-loader: var(--kds-color-loading-spinner-progress-on-surface);\n\n &[data-style=\"onPrimary\"] {\n --color-track: var(--kds-color-loading-spinner-track-on-primary);\n --color-loader: var(--kds-color-loading-spinner-progress-on-primary);\n }\n\n & .track {\n fill: none;\n stroke: var(--color-track);\n stroke-width: var(--icon-stroke-width);\n }\n\n & .loader {\n fill: none;\n stroke: var(--color-loader);\n stroke-width: var(--icon-stroke-width);\n stroke-linecap: round;\n stroke-dasharray: 80 240;\n transform: rotate(-90deg);\n transform-origin: center;\n\n /* REQUIRED for SVG rotation */\n transform-box: fill-box;\n animation: spin 1.2s linear infinite;\n }\n}\n\n@keyframes spin {\n from {\n transform: rotate(-90deg);\n }\n\n to {\n transform: rotate(270deg);\n }\n}\n</style>\n","export const kdsLoadingSpinnerVariant = {\n ON_PRIMARY: \"onPrimary\",\n ON_SURFACE: \"onSurface\",\n} as const;\n\nexport const kdsLoadingSpinnerVariants = Object.values(\n kdsLoadingSpinnerVariant,\n);\n","<script setup lang=\"ts\">\nimport { type Component, computed } from \"vue\";\n\nimport KdsIcon from \"../accessories/Icon/KdsIcon.vue\";\n\nimport type { BaseButtonProps } from \"./types\";\n\ntype BaseButtonPropsWithComponent = BaseButtonProps & {\n component?: string | Component;\n};\n\nconst props = withDefaults(defineProps<BaseButtonPropsWithComponent>(), {\n component: \"button\",\n size: \"medium\",\n destructive: false,\n success: false,\n error: false,\n disabled: false,\n toggled: false,\n});\n\nconst emit = defineEmits<{\n click: [event: MouseEvent];\n}>();\n\nconst classes = computed(() => [\n \"button\",\n props.size,\n props.variant,\n { destructive: props.destructive },\n { disabled: props.disabled },\n { toggled: props.toggled },\n { success: props.success },\n { error: props.error },\n]);\n\nconst iconSize = computed(() => {\n if (props.size === \"xsmall\") {\n return \"small\";\n } else {\n return props.size;\n }\n});\n\nfunction onClick(e: MouseEvent) {\n if (!props.disabled) {\n emit(\"click\", e);\n }\n}\n</script>\n\n<template>\n <Component\n :is=\"component\"\n :class=\"classes\"\n :disabled=\"props.disabled\"\n :title=\"props.title\"\n :aria-label=\"props.ariaLabel\"\n @click=\"onClick($event)\"\n >\n <slot name=\"leading\">\n <KdsIcon\n v-if=\"props.leadingIcon\"\n :name=\"props.leadingIcon\"\n :size=\"iconSize\"\n />\n </slot>\n <span v-if=\"props.label\" class=\"label\">{{ props.label }}</span>\n <KdsIcon\n v-if=\"props.trailingIcon && props.label\"\n :name=\"props.trailingIcon\"\n :size=\"iconSize\"\n />\n </Component>\n</template>\n\n<style>\nhtml.kds-legacy {\n --kds-legacy-button-border-radius: var(--kds-border-radius-container-pill);\n}\n</style>\n\n<style scoped>\n.button {\n position: relative;\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: fit-content;\n min-width: 15px;\n max-width: 100%;\n overflow: hidden;\n cursor: pointer;\n\n /* for LinkButton */\n &:is(a) {\n text-decoration: none;\n }\n\n &.disabled {\n cursor: default;\n }\n\n &:focus-visible {\n outline: var(--kds-border-action-focused);\n outline-offset: var(--kds-spacing-offset-focus);\n }\n\n &.filled {\n color: var(--kds-color-text-and-icon-primary-inverted);\n background-color: var(--kds-color-background-primary-bold-initial);\n border: var(--kds-border-action-transparent);\n\n &.disabled {\n color: var(--kds-color-text-and-icon-disabled-inverted);\n background-color: var(--kds-color-background-disabled-primary);\n }\n\n &:not(.disabled, .success, .error) {\n &:hover {\n background-color: var(--kds-color-background-primary-bold-hover);\n }\n\n &:active {\n background-color: var(--kds-color-background-primary-bold-active);\n }\n }\n\n &.destructive {\n color: var(--kds-color-text-and-icon-danger-inverted);\n background-color: var(--kds-color-background-danger-bold-initial);\n\n &.disabled {\n color: var(--kds-color-text-and-icon-disabled-inverted);\n background-color: var(--kds-color-background-disabled-danger);\n }\n\n &:not(.disabled, .success, .error) {\n &:hover {\n background-color: var(--kds-color-background-danger-bold-hover);\n }\n\n &:active {\n background-color: var(--kds-color-background-danger-bold-active);\n }\n }\n }\n }\n\n &.outlined {\n color: var(--kds-color-text-and-icon-neutral);\n background-color: var(--kds-color-background-neutral-initial);\n border: var(--kds-border-action-default);\n\n &.disabled {\n color: var(--kds-color-text-and-icon-disabled);\n border: var(--kds-border-action-disabled);\n }\n\n &:not(.disabled, .success, .error) {\n &:hover {\n background-color: var(--kds-color-background-neutral-hover);\n }\n\n &:active {\n background-color: var(--kds-color-background-neutral-active);\n }\n }\n\n &.destructive {\n color: var(--kds-color-text-and-icon-danger);\n border: var(--kds-border-action-error);\n\n &.disabled {\n color: var(--kds-color-text-and-icon-disabled);\n border: var(--kds-border-action-disabled);\n }\n\n &:not(.disabled, .success, .error) {\n &:hover {\n background-color: var(--kds-color-background-danger-hover);\n }\n\n &:active {\n background-color: var(--kds-color-background-danger-active);\n }\n }\n }\n }\n\n &.transparent {\n color: var(--kds-color-text-and-icon-neutral);\n background-color: var(--kds-color-background-neutral-initial);\n border: var(--kds-border-action-transparent);\n\n &.disabled {\n color: var(--kds-color-text-and-icon-disabled);\n }\n\n &:not(.disabled, .success, .error) {\n &:hover {\n background-color: var(--kds-color-background-neutral-hover);\n }\n\n &:active {\n background-color: var(--kds-color-background-neutral-active);\n }\n }\n\n &.destructive {\n color: var(--kds-color-text-and-icon-danger);\n\n &.disabled {\n color: var(--kds-color-text-and-icon-disabled);\n }\n\n &:not(.disabled, .success, .error) {\n &:hover {\n background-color: var(--kds-color-background-danger-hover);\n }\n\n &:active {\n background-color: var(--kds-color-background-danger-active);\n }\n }\n }\n }\n\n &.toggled {\n color: var(--kds-color-text-and-icon-selected);\n background-color: var(--kds-color-background-selected-initial);\n border: var(--kds-border-action-selected);\n\n &.disabled {\n color: var(--kds-color-text-and-icon-disabled);\n }\n\n &:not(.disabled, .success, .error) {\n &:hover {\n background-color: var(--kds-color-background-selected-hover);\n }\n\n &:active {\n background-color: var(--kds-color-background-selected-active);\n }\n }\n }\n\n & .label {\n max-width: 200px;\n padding: 0 var(--kds-spacing-container-0-12x);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n text-rendering: geometricprecision;\n }\n\n &.xsmall {\n gap: var(--kds-spacing-container-0-12x);\n height: var(--kds-dimension-component-height-1-25x);\n padding: 0\n calc(var(--kds-spacing-container-0-25x) - var(--kds-core-border-width-xs)); /* needed as border in Figma is not increasing the width */\n\n font: var(--kds-font-base-interactive-xsmall-strong);\n border-radius: var(\n --kds-legacy-button-border-radius,\n var(--kds-border-radius-container-0-25x)\n );\n }\n\n &.small {\n gap: var(--kds-spacing-container-0-12x);\n height: var(--kds-dimension-component-height-1-5x);\n padding: 0\n calc(var(--kds-spacing-container-0-37x) - var(--kds-core-border-width-xs)); /* needed as border in Figma is not increasing the width */\n\n font: var(--kds-font-base-interactive-small-strong);\n border-radius: var(\n --kds-legacy-button-border-radius,\n var(--kds-border-radius-container-0-37x)\n );\n }\n\n &.medium {\n gap: var(--kds-spacing-container-0-25x);\n height: var(--kds-dimension-component-height-1-75x);\n padding: 0\n calc(var(--kds-spacing-container-0-37x) - var(--kds-core-border-width-xs)); /* needed as border in Figma is not increasing the width */\n\n font: var(--kds-font-base-interactive-medium-strong);\n border-radius: var(\n --kds-legacy-button-border-radius,\n var(--kds-border-radius-container-0-37x)\n );\n }\n\n &.large {\n gap: var(--kds-spacing-container-0-25x);\n height: var(--kds-dimension-component-height-2-25x);\n padding: 0\n calc(var(--kds-spacing-container-0-5x) - var(--kds-core-border-width-xs)); /* needed as border in Figma is not increasing the width */\n\n font: var(--kds-font-base-interactive-large-strong);\n border-radius: var(\n --kds-legacy-button-border-radius,\n var(--kds-border-radius-container-0-50x)\n );\n\n & .label {\n padding: 0 var(--kds-spacing-container-0-25x);\n }\n }\n\n &.success {\n color: var(--kds-color-text-and-icon-success-inverted);\n background-color: var(--kds-color-background-success-bold-initial);\n border: var(--kds-border-action-transparent);\n transition:\n background-color 200ms ease-out,\n border-color 200ms ease-out,\n color 200ms ease-out;\n }\n\n &.error {\n color: var(--kds-color-text-and-icon-danger-inverted);\n background-color: var(--kds-color-background-danger-bold-initial);\n border: var(--kds-border-action-transparent);\n transition:\n background-color 200ms ease-out,\n border-color 200ms ease-out,\n color 200ms ease-out;\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport BaseButton from \"../BaseButton.vue\";\n\nimport type { KdsButtonProps } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsButtonProps>(), {\n variant: \"filled\",\n});\n\nconst emit = defineEmits<{\n click: [event: MouseEvent];\n}>();\n</script>\n\n<template>\n <BaseButton v-bind=\"props\" @click=\"emit('click', $event)\" />\n</template>\n","import { defineComponent, getCurrentInstance, h, useSlots } from \"vue\";\n\nconst getAppInstance = () => {\n const currentInstance = getCurrentInstance();\n\n return currentInstance?.appContext.app;\n};\n\nexport const resolveNuxtLinkComponent = () => {\n const app = getAppInstance();\n\n // only works when NuxtLink is registered globally, which it's not by default\n const nuxtLinkComponent = app?.component(\"NuxtLink\");\n if (nuxtLinkComponent) {\n return nuxtLinkComponent;\n }\n\n const routerLinkComponent = app?.component(\"RouterLink\");\n if (routerLinkComponent) {\n return routerLinkComponent;\n }\n\n // fallback component when neither NuxtLink nor RouterLink are available\n const fallbackComponent = defineComponent({\n props: {\n to: {\n type: String,\n default: \"\",\n },\n },\n\n render() {\n return h(\"a\", { href: this.to }, [useSlots().default?.()]);\n },\n });\n\n return fallbackComponent;\n};\n","<script setup lang=\"ts\">\nimport { computed } from \"vue\";\n\nimport { resolveNuxtLinkComponent } from \"../../util/nuxtComponentResolver\";\nimport BaseButton from \"../BaseButton.vue\";\n\nimport type { KdsLinkButtonProps } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsLinkButtonProps>(), {\n variant: \"filled\",\n download: undefined,\n rel: null,\n target: null,\n});\n\nconst component = computed(() => {\n if (props.disabled) {\n return \"button\";\n }\n return resolveNuxtLinkComponent();\n});\n\nconst emit = defineEmits<{\n click: [event: MouseEvent];\n}>();\n</script>\n\n<template>\n <BaseButton\n v-bind=\"props\"\n :component=\"component\"\n @click=\"emit('click', $event)\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport BaseButton from \"../BaseButton.vue\";\n\nimport type { KdsToggleButtonProps } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsToggleButtonProps>(), {\n variant: \"outlined\",\n});\n\nconst modelValue = defineModel<boolean>({ default: false });\n</script>\n\n<template>\n <BaseButton\n v-bind=\"props\"\n :toggled=\"modelValue\"\n :aria-pressed=\"modelValue\"\n @click=\"modelValue = !modelValue\"\n />\n</template>\n","export const kdsToggleButtonVariant = {\n OUTLINED: \"outlined\",\n TRANSPARENT: \"transparent\",\n} as const;\n\nexport const kdsToggleButtonVariants = Object.values(kdsToggleButtonVariant);\n","<script setup lang=\"ts\">\nimport { computed } from \"vue\";\n\nimport type { KdsIconSize } from \"../../accessories\";\nimport KdsIcon from \"../../accessories/Icon/KdsIcon.vue\";\nimport KdsLoadingSpinner from \"../../accessories/LoadingSpinner/KdsLoadingSpinner.vue\";\nimport BaseButton from \"../BaseButton.vue\";\n\nimport type { KdsProgressButtonProps, KdsProgressButtonState } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsProgressButtonProps>(), {\n variant: \"filled\",\n size: \"medium\",\n disabled: false,\n});\n\nconst emit = defineEmits<{\n /**\n * Fired when the button is clicked.\n *\n * This event is only emitted when `state` is `default`.\n * Clicks while in `progress`, `success` or `error` are ignored.\n */\n click: [event: MouseEvent];\n}>();\n\nconst state = defineModel<KdsProgressButtonState>(\"state\", {\n default: \"default\",\n});\n\nconst iconSize = computed<KdsIconSize>(() => {\n if (props.size === \"xsmall\") {\n return \"small\";\n }\n return props.size;\n});\n\nfunction onClick(event: MouseEvent) {\n event.preventDefault();\n\n if (state.value !== \"default\") {\n return;\n }\n\n emit(\"click\", event);\n}\n\nconst baseButtonProps = computed(() => ({\n variant: props.variant,\n size: props.size,\n disabled: props.disabled,\n success: state.value === \"success\",\n error: state.value === \"error\",\n title: props.ariaLabel,\n label: props.label,\n leadingIcon: props.leadingIcon,\n ariaLabel: props.ariaLabel,\n}));\n</script>\n\n<template>\n <BaseButton\n v-bind=\"baseButtonProps\"\n class=\"kds-progress-button\"\n :data-kds-progress-state=\"state\"\n @click=\"onClick\"\n >\n <template #leading>\n <span :class=\"['leading', iconSize]\">\n <span class=\"leading-icon\" :data-visible=\"state !== 'progress'\">\n <KdsIcon :name=\"props.leadingIcon\" :size=\"iconSize\" />\n </span>\n <span class=\"spinner\" :data-visible=\"state === 'progress'\">\n <KdsLoadingSpinner\n :size=\"iconSize\"\n :variant=\"props.variant === 'filled' ? 'onPrimary' : 'onSurface'\"\n />\n </span>\n </span>\n </template>\n </BaseButton>\n</template>\n\n<style scoped>\n.leading {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--kds-dimension-icon-1x);\n height: var(--kds-dimension-icon-1x);\n\n &.xsmall {\n width: var(--kds-dimension-icon-0-56x);\n height: var(--kds-dimension-icon-0-56x);\n }\n\n &.small {\n width: var(--kds-dimension-icon-0-75x);\n height: var(--kds-dimension-icon-0-75x);\n }\n\n &.large {\n width: var(--kds-dimension-icon-1-25x);\n height: var(--kds-dimension-icon-1-25x);\n }\n}\n\n.leading-icon,\n.spinner {\n position: absolute;\n inset: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n opacity: 0;\n transition: opacity 200ms ease-out;\n}\n\n.leading-icon[data-visible=\"true\"],\n.spinner[data-visible=\"true\"] {\n opacity: 1;\n}\n</style>\n","export const kdsProgressButtonState = {\n DEFAULT: \"default\",\n PROGRESS: \"progress\",\n SUCCESS: \"success\",\n ERROR: \"error\",\n} as const;\n\nexport const kdsProgressButtonStates = Object.values(kdsProgressButtonState);\n","export const kdsButtonSize = {\n XSMALL: \"xsmall\",\n SMALL: \"small\",\n MEDIUM: \"medium\",\n LARGE: \"large\",\n} as const;\n\nexport const kdsButtonSizes = Object.values(kdsButtonSize);\n\nexport const kdsButtonVariant = {\n FILLED: \"filled\",\n OUTLINED: \"outlined\",\n TRANSPARENT: \"transparent\",\n} as const;\n\nexport const kdsButtonVariants = Object.values(kdsButtonVariant);\n","<script setup lang=\"ts\">\nimport { defineAsyncComponent, useTemplateRef } from \"vue\";\n\nimport { useKdsIsTruncated } from \"../../util\";\nimport type { KdsLabelProps } from \"../types\";\n\nconst props = withDefaults(defineProps<KdsLabelProps>(), {\n description: undefined,\n showDescriptionButton: false,\n});\n\nconst KdsInfoToggleButton = defineAsyncComponent(\n () => import(\"./InfoPopover/KdsInfoToggleButton.vue\"),\n);\n\nconst labelEl = useTemplateRef(\"labelEl\");\nconst { isTruncated } = useKdsIsTruncated(labelEl);\n</script>\n\n<template>\n <div class=\"kds-label-wrapper\">\n <label\n :id=\"props.id\"\n ref=\"labelEl\"\n :for=\"props.for\"\n class=\"label\"\n :title=\"isTruncated ? props.label : undefined\"\n >\n {{ props.label }}\n </label>\n <KdsInfoToggleButton\n v-if=\"props.description\"\n :content=\"props.description\"\n :hidden=\"!props.showDescriptionButton\"\n />\n </div>\n</template>\n\n<style scoped>\n.kds-label-wrapper {\n display: flex;\n gap: var(--kds-spacing-container-0-12x);\n align-items: center;\n max-width: 100%;\n min-height: var(--kds-dimension-component-height-0-75x);\n padding-bottom: var(--kds-spacing-input-label-spacing-bottom);\n}\n\n.label {\n display: block;\n flex-grow: 1;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n font: var(--kds-font-base-title-small-strong);\n color: var(--kds-color-text-and-icon-neutral);\n white-space: nowrap;\n}\n</style>\n","<script setup lang=\"ts\">\nimport KdsIcon from \"../../accessories/Icon/KdsIcon.vue\";\nimport KdsLoadingSpinner from \"../../accessories/LoadingSpinner/KdsLoadingSpinner.vue\";\nimport type { KdsSubTextProps } from \"../types\";\n\nconst props = withDefaults(defineProps<KdsSubTextProps>(), {\n error: false,\n validating: false,\n preserveSubTextSpace: false,\n});\n</script>\n\n<template>\n <div\n v-if=\"props.subText || props.preserveSubTextSpace\"\n :id=\"props.id\"\n :class=\"{\n subtext: true,\n error: props.error,\n }\"\n >\n <template v-if=\"props.error && props.subText\">\n <KdsIcon name=\"circle-error\" size=\"small\" aria-label=\"Error\" />\n </template>\n <template v-else-if=\"props.validating && props.subText\">\n <KdsLoadingSpinner size=\"small\" variant=\"onSurface\" aria-hidden=\"true\" />\n </template>\n <span class=\"subtext-text\">{{ props.subText }}</span>\n </div>\n</template>\n\n<style scoped>\n.subtext {\n display: flex;\n gap: var(--kds-spacing-container-0-25x);\n min-height: 1lh;\n margin-top: var(--kds-spacing-container-0-25x);\n font: var(--kds-font-base-subtext-small);\n color: var(--kds-color-text-and-icon-muted);\n\n &.error {\n color: var(--kds-color-text-and-icon-danger);\n }\n\n & .subtext-text {\n min-width: 0;\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed, useId } from \"vue\";\n\nimport Icon from \"../../accessories/Icon/KdsIcon.vue\";\nimport KdsSubText from \"../_helper/KdsSubText.vue\";\n\nimport type { BaseCheckboxProps, KdsCheckboxValue } from \"./types\";\n\nconst props = withDefaults(defineProps<BaseCheckboxProps>(), {\n disabled: false,\n error: false,\n});\n\nconst modelValue = defineModel<KdsCheckboxValue>({ default: false });\n\nconst helperId = useId();\nconst descriptionId = useId();\n\nconst isChecked = computed(() => modelValue.value === true);\nconst isIndeterminate = computed(() => modelValue.value === \"indeterminate\");\nconst icon = computed(() => {\n if (isChecked.value) {\n return \"checkmark\";\n }\n if (isIndeterminate.value) {\n return \"minus\";\n }\n return null;\n});\n\nconst ariaChecked = computed(() => {\n if (isIndeterminate.value) {\n return \"mixed\";\n }\n return isChecked.value;\n});\n\nconst ariaDescribedBy = computed(() => {\n const ids: string[] = [];\n\n if (props.helperText) {\n ids.push(helperId);\n }\n\n if (props.subText) {\n ids.push(descriptionId);\n }\n\n return ids.length > 0 ? ids.join(\" \") : undefined;\n});\n\nconst handleClick = () => {\n if (props.disabled) {\n return;\n }\n\n modelValue.value = isIndeterminate.value ? true : !isChecked.value;\n};\n</script>\n\n<template>\n <div>\n <button\n :class=\"{\n checkbox: true,\n checked: isChecked,\n indeterminate: isIndeterminate,\n disabled: props.disabled,\n error: props.error,\n }\"\n :disabled=\"props.disabled\"\n :title=\"props.title\"\n :aria-label=\"props.title\"\n :aria-checked=\"ariaChecked\"\n :aria-describedby=\"ariaDescribedBy\"\n :aria-invalid=\"props.error\"\n type=\"button\"\n role=\"checkbox\"\n @click=\"handleClick\"\n >\n <div class=\"control\">\n <Icon v-if=\"icon\" :name=\"icon\" class=\"icon\" size=\"xsmall\" />\n </div>\n <div v-if=\"props.label || props.helperText\" class=\"content\">\n <div class=\"label\">{{ props.label }}</div>\n <div v-if=\"props.helperText\" :id=\"helperId\" class=\"helper-text\">\n {{ props.helperText }}\n </div>\n </div>\n </button>\n <div\n v-if=\"props.subText || props.preserveSubTextSpace\"\n class=\"subtext-wrapper\"\n >\n <KdsSubText\n :id=\"descriptionId\"\n :sub-text=\"props.subText\"\n :preserve-sub-text-space=\"props.preserveSubTextSpace\"\n :error=\"props.error\"\n />\n </div>\n </div>\n</template>\n\n<style scoped>\n.checkbox {\n --bg-initial: var(--kds-color-background-input-initial);\n --bg-hover: var(--kds-color-background-input-hover);\n --bg-active: var(--kds-color-background-input-active);\n --border: var(--kds-border-action-input);\n --icon-color: var(--kds-color-text-and-icon-selected);\n --text-color: var(--kds-color-text-and-icon-neutral);\n --helper-text-color: var(--kds-color-text-and-icon-muted);\n\n display: flex;\n gap: var(--kds-spacing-container-0-37x);\n align-items: flex-start;\n padding: 0;\n margin: 0;\n text-align: left;\n cursor: pointer;\n outline: none;\n background: none;\n border: none;\n\n .control {\n position: relative;\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: var(--kds-dimension-component-height-0-88x);\n height: var(--kds-dimension-component-height-0-88x);\n color: var(--icon-color);\n background: var(--bg-initial);\n border: var(--border);\n border-radius: var(--kds-border-radius-container-0-25x);\n }\n\n &:focus-visible .control {\n outline: var(--kds-border-action-focused);\n outline-offset: var(--kds-spacing-offset-focus);\n }\n\n &:hover:not(.disabled) .control {\n background: var(--bg-hover);\n }\n\n &:active:not(.disabled) .control {\n background: var(--bg-active);\n }\n\n &.checked,\n &.indeterminate {\n --bg-initial: var(--kds-color-background-selected-initial);\n --bg-hover: var(--kds-color-background-selected-hover);\n --bg-active: var(--kds-color-background-selected-active);\n --border: var(--kds-border-action-selected);\n }\n\n .content {\n display: flex;\n flex-direction: column;\n gap: var(--kds-spacing-container-0-12x);\n text-rendering: geometricprecision;\n\n & .label {\n font: var(--kds-font-base-interactive-small);\n color: var(--text-color);\n }\n\n & .helper-text {\n font: var(--kds-font-base-subtext-small);\n color: var(--helper-text-color);\n }\n }\n\n &.disabled {\n --border: var(--kds-border-action-disabled);\n --icon-color: var(--kds-color-text-and-icon-disabled);\n --text-color: var(--kds-color-text-and-icon-disabled);\n --helper-text-color: var(--kds-color-text-and-icon-disabled);\n\n cursor: default;\n }\n\n &.error {\n --border: var(--kds-border-action-error);\n --icon-color: var(--kds-color-text-and-icon-danger);\n --text-color: var(--kds-color-text-and-icon-danger);\n --bg-hover: var(--kds-color-background-danger-hover);\n --bg-active: var(--kds-color-background-danger-active);\n\n &.checked,\n &.indeterminate {\n --bg-initial: var(--kds-color-background-danger-initial);\n }\n }\n}\n\n.subtext-wrapper {\n padding-left: calc(\n var(--kds-dimension-component-height-0-88x) +\n var(--kds-spacing-container-0-37x)\n );\n}\n</style>\n","<script setup lang=\"ts\">\nimport BaseCheckbox from \"./BaseCheckbox.vue\";\nimport type { KdsCheckboxProps, KdsCheckboxValue } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsCheckboxProps>(), {\n disabled: false,\n error: false,\n preserveSubTextSpace: false,\n});\n\nconst modelValue = defineModel<KdsCheckboxValue>({ default: false });\n</script>\n\n<template>\n <BaseCheckbox\n v-model=\"modelValue\"\n :disabled=\"props.disabled\"\n :error=\"props.error\"\n :label=\"props.label\"\n :title=\"props.title\"\n :sub-text=\"props.subText\"\n :preserve-sub-text-space=\"props.preserveSubTextSpace\"\n />\n</template>\n","<script lang=\"ts\" setup>\nimport { computed, useId } from \"vue\";\n\nimport KdsLabel from \"../_helper/KdsLabel.vue\";\nimport KdsSubText from \"../_helper/KdsSubText.vue\";\n\nimport BaseCheckbox from \"./BaseCheckbox.vue\";\nimport type {\n KdsCheckboxGroupOption,\n KdsCheckboxGroupProps,\n KdsCheckboxValue,\n} from \"./types\";\n\nconst props = withDefaults(defineProps<KdsCheckboxGroupProps>(), {\n disabled: false,\n error: false,\n alignment: \"vertical\",\n});\n\nconst modelValue = defineModel<string[]>({ default: [] });\n\nconst possibleValues = computed(\n () =>\n props.possibleValues.map((o) => {\n if (typeof o === \"string\") {\n return { text: o, id: o };\n }\n return o;\n }) satisfies KdsCheckboxGroupOption[],\n);\n\nconst labelId = useId();\nconst descriptionId = useId();\n\nconst isOptionDisabled = (index: number) =>\n props.disabled || possibleValues.value[index]?.disabled === true;\n\nconst isHorizontal = computed(() => props.alignment === \"horizontal\");\n\nconst hasError = computed(\n () => props.error || possibleValues.value.some((o) => o.error),\n);\n\nconst isChecked = (id: string) => modelValue.value.includes(id);\n\nconst handleCheckboxChange = (index: number, checked: KdsCheckboxValue) => {\n if (isOptionDisabled(index)) {\n return;\n }\n const option = possibleValues.value[index];\n\n if (checked === true) {\n modelValue.value = [...modelValue.value, option.id];\n return;\n }\n\n modelValue.value = modelValue.value.filter((v) => v !== option.id);\n};\n</script>\n\n<template>\n <div\n :id=\"props.id\"\n class=\"checkbox-group\"\n role=\"group\"\n :aria-labelledby=\"props.label ? labelId : undefined\"\n :aria-describedby=\"props.subText ? descriptionId : undefined\"\n >\n <KdsLabel v-if=\"props.label\" :id=\"labelId\" :label=\"props.label\" />\n\n <div :class=\"{ options: true, horizontal: isHorizontal }\">\n <div\n v-for=\"(option, index) in possibleValues\"\n :key=\"option.id\"\n class=\"option\"\n >\n <BaseCheckbox\n :disabled=\"props.disabled || option.disabled\"\n :error=\"option.error\"\n :helper-text=\"option.helperText\"\n :label=\"option.text\"\n :model-value=\"isChecked(option.id)\"\n @update:model-value=\"\n (checked: KdsCheckboxValue) => handleCheckboxChange(index, checked)\n \"\n />\n </div>\n </div>\n\n <KdsSubText\n :id=\"descriptionId\"\n :sub-text=\"props.subText\"\n :preserve-sub-text-space=\"props.preserveSubTextSpace\"\n :error=\"hasError\"\n />\n </div>\n</template>\n\n<style scoped>\n.checkbox-group {\n padding: 0;\n margin: 0;\n border: none;\n}\n\n.options {\n display: flex;\n flex-direction: column;\n gap: var(--kds-spacing-container-0-5x) var(--kds-spacing-container-0-75x);\n}\n\n.options.horizontal {\n flex-flow: row wrap;\n align-items: flex-start;\n}\n</style>\n","export const kdsCheckboxGroupAlignment = {\n VERTICAL: \"vertical\",\n HORIZONTAL: \"horizontal\",\n} as const;\n\nexport const kdsCheckboxGroupAlignments = Object.values(\n kdsCheckboxGroupAlignment,\n);\n\nexport const kdsCheckboxValue = {\n CHECKED: true,\n UNCHECKED: false,\n INDETERMINATE: \"indeterminate\",\n} as const;\n\nexport const kdsCheckboxValues = Object.values(kdsCheckboxValue);\n","<script lang=\"ts\" setup>\nimport { useId } from \"vue\";\n\nimport type { KdsRadioButtonProps } from \"./types.ts\";\n\nconst props = withDefaults(defineProps<KdsRadioButtonProps>(), {\n disabled: false,\n error: false,\n});\n\nconst modelValue = defineModel<boolean>({ default: false });\n\nconst id = useId();\n\nconst handleClick = () => {\n if (props.disabled) {\n return;\n }\n // Radio buttons do not toggle off when clicked; they only set to selected\n if (!modelValue.value) {\n modelValue.value = true;\n }\n};\n</script>\n\n<template>\n <button\n :aria-checked=\"modelValue\"\n :aria-describedby=\"props.helperText ? `${id}-helper` : undefined\"\n :aria-invalid=\"props.error\"\n :class=\"{\n radio: true,\n selected: modelValue,\n disabled: props.disabled,\n error: props.error,\n }\"\n :disabled=\"props.disabled\"\n role=\"radio\"\n type=\"button\"\n @click=\"handleClick\"\n >\n <div class=\"control\">\n <svg\n v-if=\"modelValue\"\n class=\"dot\"\n viewBox=\"0 0 2 2\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <circle cx=\"1\" cy=\"1\" r=\"1\" />\n </svg>\n </div>\n <div class=\"content\">\n <div class=\"label\">{{ props.text }}</div>\n <div v-if=\"props.helperText\" :id=\"`${id}-helper`\" class=\"helper-text\">\n {{ props.helperText }}\n </div>\n </div>\n </button>\n</template>\n\n<style scoped>\n.radio {\n --bg-initial: var(--kds-color-background-input-initial);\n --bg-hover: var(--kds-color-background-input-hover);\n --bg-active: var(--kds-color-background-input-active);\n --border: var(--kds-border-action-input);\n --dot-color: var(--kds-color-text-and-icon-selected);\n --text-color: var(--kds-color-text-and-icon-neutral);\n --helper-text-color: var(--kds-color-text-and-icon-muted);\n\n display: flex;\n gap: var(--kds-spacing-container-0-37x);\n align-items: flex-start;\n padding: 0;\n margin: 0;\n text-align: left;\n cursor: pointer;\n outline: none;\n background: none;\n border: none;\n\n .control {\n position: relative;\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: var(--kds-dimension-component-height-0-88x);\n height: var(--kds-dimension-component-height-0-88x);\n background: var(--bg-initial);\n border: var(--border);\n border-radius: 50%;\n }\n\n .control .dot {\n display: block;\n flex-shrink: 0;\n width: 100%;\n height: 100%;\n }\n\n .control .dot circle {\n fill: var(--dot-color);\n transform: scale(0.5);\n transform-origin: center;\n transform-box: fill-box;\n }\n\n &:focus-visible .control {\n outline: var(--kds-border-action-focused);\n outline-offset: var(--kds-spacing-offset-focus);\n }\n\n &:hover:not(.disabled) .control {\n background: var(--bg-hover);\n }\n\n &:active:not(.disabled) .control {\n background: var(--bg-active);\n }\n\n &.selected {\n --border: var(--kds-border-action-selected);\n --bg-initial: var(--kds-color-background-selected-initial);\n --bg-hover: var(--kds-color-background-selected-hover);\n --bg-active: var(--kds-color-background-selected-active);\n }\n\n .content {\n display: flex;\n flex-direction: column;\n gap: var(--kds-spacing-container-0-25x);\n\n & .label {\n font: var(--kds-font-base-interactive-small);\n color: var(--text-color);\n }\n\n & .helper-text {\n font: var(--kds-font-base-subtext-small);\n color: var(--helper-text-color);\n }\n }\n\n &.disabled {\n --bg-initial: var(--kds-color-background-input-initial);\n --border: var(--kds-border-action-disabled);\n --dot-color: var(--kds-color-text-and-icon-disabled);\n --text-color: var(--kds-color-text-and-icon-disabled);\n --helper-text-color: var(--kds-color-text-and-icon-disabled);\n\n cursor: default;\n }\n\n &.error {\n --bg-hover: var(--kds-color-background-danger-hover);\n --bg-active: var(--kds-color-background-danger-active);\n --border: var(--kds-border-action-error);\n --dot-color: var(--kds-color-text-and-icon-danger);\n --text-color: var(--kds-color-text-and-icon-danger);\n\n &.selected {\n --bg-initial: var(--kds-color-background-danger-initial);\n --border: var(--kds-border-action-error);\n }\n }\n}\n</style>\n","import type { Ref } from \"vue\";\nimport { computed } from \"vue\";\n\ntype KdsIndexSelectionOption = {\n id: string;\n disabled?: boolean;\n error?: boolean;\n [x: string]: unknown;\n};\n\nexport const useRadioSelection = ({\n selectedId,\n options,\n globalDisable,\n globalError,\n optionContainer,\n}: {\n selectedId: Ref<string | undefined>;\n options: Ref<readonly KdsIndexSelectionOption[]>;\n globalDisable?: Ref<boolean>;\n globalError?: Ref<boolean>;\n optionContainer?: Ref<HTMLElement | null>;\n}) => {\n const focusOptionAtIndex = (index: number) => {\n const radios = optionContainer?.value?.querySelectorAll<HTMLButtonElement>(\n 'button[role=\"radio\"]',\n );\n radios?.[index]?.focus();\n };\n\n const isIndexDisabled = (index: number) =>\n globalDisable?.value || options.value[index]?.disabled === true;\n\n const hasError = computed(\n () => globalError?.value || options.value.some((o) => o.error),\n );\n\n const selectedIndex = computed(() =>\n options.value.findIndex((o) => o.id === selectedId.value),\n );\n\n const firstEnabledIndex = computed(() =>\n options.value.findIndex((_, index) => !isIndexDisabled(index)),\n );\n\n const tabIndexForOption = (index: number) => {\n if (isIndexDisabled(index)) {\n return undefined;\n }\n\n if (selectedIndex.value >= 0) {\n return selectedIndex.value === index ? 0 : -1;\n }\n\n return firstEnabledIndex.value === index ? 0 : -1;\n };\n\n const selectIndex = (index: number) => {\n if (isIndexDisabled(index)) {\n return;\n }\n\n selectedId.value = options.value[index]?.id;\n };\n\n const nextEnabledIndex = (startIndex: number, direction: 1 | -1) => {\n const total = options.value.length;\n if (total === 0) {\n return -1;\n }\n\n let index = startIndex;\n for (let i = 0; i < total; i++) {\n index = (index + direction + total) % total;\n if (!isIndexDisabled(index)) {\n return index;\n }\n }\n\n return -1;\n };\n\n const moveSelection = (currentIndex: number, direction: 1 | -1) => {\n const nextIndex = nextEnabledIndex(currentIndex, direction);\n\n if (nextIndex < 0) {\n return;\n }\n\n selectIndex(nextIndex);\n focusOptionAtIndex(nextIndex);\n };\n\n const goToFirstEnabled = () => {\n const nextIndex = firstEnabledIndex.value;\n if (nextIndex < 0) {\n return;\n }\n\n selectIndex(nextIndex);\n focusOptionAtIndex(nextIndex);\n };\n\n const goToLastEnabled = () => {\n for (let i = options.value.length - 1; i >= 0; i--) {\n if (!isIndexDisabled(i)) {\n selectIndex(i);\n focusOptionAtIndex(i);\n break;\n }\n }\n };\n\n const handleKeyDown = (event: KeyboardEvent, currentIndex: number) => {\n if (globalDisable?.value) {\n return;\n }\n\n switch (event.key) {\n case \"ArrowDown\":\n case \"ArrowRight\": {\n event.preventDefault();\n moveSelection(currentIndex, 1);\n return;\n }\n\n case \"ArrowUp\":\n case \"ArrowLeft\": {\n event.preventDefault();\n moveSelection(currentIndex, -1);\n return;\n }\n\n case \"Home\": {\n event.preventDefault();\n goToFirstEnabled();\n return;\n }\n\n case \"End\": {\n event.preventDefault();\n goToLastEnabled();\n return;\n }\n\n case \" \":\n case \"Enter\": {\n event.preventDefault();\n selectIndex(currentIndex);\n }\n }\n };\n\n return {\n hasError,\n selectedIndex,\n tabIndexForOption,\n handleClick: selectIndex,\n handleKeyDown,\n };\n};\n","<script lang=\"ts\" setup>\nimport { computed, useId, useTemplateRef } from \"vue\";\n\nimport KdsLabel from \"../_helper/KdsLabel.vue\";\nimport KdsSubText from \"../_helper/KdsSubText.vue\";\n\nimport KdsRadioButton from \"./KdsRadioButton.vue\";\nimport type {\n KdsRadioButtonGroupOption,\n KdsRadioButtonGroupProps,\n} from \"./types\";\nimport { useRadioSelection } from \"./useRadioSelection\";\n\nconst props = withDefaults(defineProps<KdsRadioButtonGroupProps>(), {\n disabled: false,\n alignment: \"vertical\",\n});\n\nconst modelValue = defineModel<string>();\n\nconst options = computed(\n () =>\n props.possibleValues.map((o) => {\n if (typeof o === \"string\") {\n return { text: o, id: o };\n }\n return o;\n }) satisfies KdsRadioButtonGroupOption[],\n);\n\nconst labelId = useId();\nconst descriptionId = useId();\nconst groupName = useId();\n\nconst optionContainer = useTemplateRef(\"optionContainer\");\n\nconst { tabIndexForOption, handleClick, handleKeyDown, hasError } =\n useRadioSelection({\n selectedId: modelValue,\n options,\n globalDisable: computed(() => props.disabled),\n optionContainer,\n });\n</script>\n\n<template>\n <div\n :id=\"props.id\"\n class=\"radio-button-group\"\n role=\"radiogroup\"\n :aria-labelledby=\"props.label ? labelId : undefined\"\n :aria-describedby=\"props.subText ? descriptionId : undefined\"\n >\n <KdsLabel v-if=\"props.label\" :id=\"labelId\" :label=\"props.label\" />\n\n <div\n ref=\"optionContainer\"\n :class=\"{ options: true, horizontal: props.alignment === 'horizontal' }\"\n >\n <div v-for=\"(option, index) in options\" :key=\"option.id\" class=\"option\">\n <KdsRadioButton\n :disabled=\"props.disabled || option.disabled\"\n :error=\"option.error\"\n :helper-text=\"option.helperText\"\n :text=\"option.text\"\n :model-value=\"modelValue === option.id\"\n :tabindex=\"tabIndexForOption(index)\"\n :name=\"groupName\"\n @keydown=\"(e: KeyboardEvent) => handleKeyDown(e, index)\"\n @update:model-value=\"() => handleClick(index)\"\n />\n </div>\n </div>\n\n <KdsSubText\n :id=\"descriptionId\"\n :sub-text=\"props.subText\"\n :preserve-sub-text-space=\"props.preserveSubTextSpace\"\n :error=\"hasError\"\n />\n </div>\n</template>\n\n<style scoped>\n.radio-button-group {\n padding: 0;\n margin: 0;\n border: none;\n}\n\n.options {\n display: flex;\n flex-direction: column;\n gap: var(--kds-spacing-container-0-5x) var(--kds-spacing-container-0-75x);\n}\n\n.options.horizontal {\n flex-flow: row wrap;\n align-items: flex-start;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { useTemplateRef } from \"vue\";\n\nimport KdsIcon from \"../../accessories/Icon/KdsIcon.vue\";\nimport { useKdsIsTruncated } from \"../../util\";\n\nimport type { KdsValueSwitchItemProps } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsValueSwitchItemProps>(), {\n disabled: false,\n size: \"medium\",\n variant: \"default\",\n tabIndex: undefined,\n});\n\nconst optionTextEl = useTemplateRef(\"optionTextEl\");\nconst { isTruncated } = useKdsIsTruncated(optionTextEl);\n</script>\n\n<template>\n <button\n role=\"radio\"\n :aria-checked=\"props.selected\"\n :aria-label=\"props.text ? undefined : props.title\"\n :class=\"{\n option: true,\n selected: props.selected,\n disabled: props.disabled,\n 'variant-muted': props.variant === 'muted',\n 'size-small': props.size === 'small',\n }\"\n :disabled=\"props.disabled\"\n :tabindex=\"props.tabIndex\"\n :title=\"props.title ?? (isTruncated && props.text ? props.text : undefined)\"\n >\n <KdsIcon\n v-if=\"props.leadingIcon && (!props.hideIcons || !props.text)\"\n :name=\"props.leadingIcon\"\n :size=\"props.size\"\n />\n <span v-if=\"props.text\" ref=\"optionTextEl\" class=\"option-label\">\n {{ props.text }}\n </span>\n <KdsIcon\n v-if=\"props.trailingIcon && !props.hideIcons\"\n :name=\"props.trailingIcon\"\n :size=\"props.size\"\n />\n </button>\n</template>\n\n<style scoped>\n.option {\n display: flex;\n flex: 0 1 auto;\n gap: var(--kds-spacing-container-0-25x);\n align-items: center;\n justify-content: center;\n min-width: calc(\n var(--kds-dimension-icon-1x) + (2 * var(--kds-spacing-container-0-37x))\n );\n max-width: 100%;\n height: var(--kds-dimension-component-height-1-5x);\n padding: 0 var(--kds-spacing-container-0-37x);\n font: var(--kds-font-base-interactive-medium-strong);\n color: var(--kds-color-text-and-icon-neutral);\n text-align: center;\n cursor: pointer;\n\n /* variant=default */\n background: var(--kds-color-background-neutral-initial);\n border: var(--kds-border-action-transparent);\n border-radius: var(--kds-border-radius-container-0-25x);\n\n &.size-small {\n height: var(--kds-dimension-component-height-1-25x);\n font: var(--kds-font-base-interactive-small-strong);\n }\n\n &:focus-visible {\n outline: none;\n }\n\n &:hover:not(:disabled) {\n background: var(--kds-color-background-neutral-hover);\n }\n\n &:active:not(:disabled) {\n background: var(--kds-color-background-neutral-active);\n }\n\n &.selected {\n color: var(--kds-color-text-and-icon-selected);\n background: var(--kds-color-background-selected-initial);\n border: var(--kds-border-action-selected);\n\n &:hover:not(:disabled) {\n background: var(--kds-color-background-selected-hover);\n }\n\n &:active:not(:disabled) {\n background: var(--kds-color-background-selected-active);\n }\n\n &.variant-muted {\n color: var(--kds-color-text-and-icon-neutral);\n background: var(--kds-color-background-input-initial);\n\n &:hover:not(:disabled) {\n background: var(--kds-color-background-input-hover);\n }\n\n &:active:not(:disabled) {\n background: var(--kds-color-background-input-active);\n }\n }\n }\n\n &.disabled {\n color: var(--kds-color-text-and-icon-disabled);\n cursor: default;\n }\n\n &.disabled.selected {\n color: var(--kds-color-text-and-icon-disabled);\n border: var(--kds-border-action-disabled);\n }\n}\n\n.option-label {\n min-width: 0;\n padding: 0 var(--kds-spacing-container-0-12x);\n overflow: hidden;\n text-overflow: ellipsis;\n font: inherit;\n white-space: nowrap;\n}\n</style>\n","import type { Ref } from \"vue\";\nimport { nextTick, onBeforeUpdate, ref, watch } from \"vue\";\n\nimport { elementOverflowsHorizontally } from \"../../util/useKdsIsTruncated\";\n\nimport type { KdsValueSwitchOption } from \"./types\";\n/**\n * Computes whether icons in ValueSwitch items should be hidden.\n *\n * Global logic: as soon as at least one text+icon item ellipsizes its label\n * (`scrollWidth > clientWidth`), icons are hidden for all text+icon items.\n * Icon-only items are never affected.\n */\nexport const useValueSwitchIconHiding = ({\n width,\n options,\n}: {\n /**\n * Potentially available width to render options\n */\n width: Ref<number>;\n options: Ref<readonly KdsValueSwitchOption[]>;\n}) => {\n const itemEls = ref(new Map<string, HTMLButtonElement>());\n\n onBeforeUpdate(() => {\n itemEls.value = new Map();\n });\n\n const setItemEl = (id: string, el: unknown) => {\n const elementToRegister =\n el && typeof el === \"object\" && \"$el\" in el\n ? (el as { $el: unknown }).$el\n : el;\n\n if (elementToRegister instanceof HTMLButtonElement) {\n itemEls.value.set(id, elementToRegister);\n }\n };\n\n const shouldHideIcons = ref(false);\n\n const hasLabelEllipsis = (id: string) => {\n const el = itemEls.value.get(id);\n if (!el) {\n return false;\n }\n\n const label = el.querySelector<HTMLElement>(\".option-label\");\n return elementOverflowsHorizontally(label);\n };\n\n const anyOptionHasEllipsis = () =>\n options.value.some((option) => {\n if (!option.text) {\n return false;\n }\n\n if (!option.leadingIcon && !option.trailingIcon) {\n return false;\n }\n\n return hasLabelEllipsis(option.id);\n });\n\n watch(\n () => [width.value, options.value],\n async () => {\n // First pass: try rendering icons\n shouldHideIcons.value = false;\n\n // Second pass: hide icons when width overflowed.\n await nextTick();\n shouldHideIcons.value = anyOptionHasEllipsis();\n },\n {\n immediate: true,\n },\n );\n\n return {\n shouldHideIcons,\n setItemEl,\n };\n};\n","<script lang=\"ts\" setup>\nimport { computed, useId, useTemplateRef } from \"vue\";\nimport { useElementSize } from \"@vueuse/core\";\n\nimport KdsLabel from \"../_helper/KdsLabel.vue\";\nimport KdsSubText from \"../_helper/KdsSubText.vue\";\n\nimport ValueSwitchItem from \"./ValueSwitchItem.vue\";\nimport type { KdsValueSwitchOption, KdsValueSwitchProps } from \"./types\";\nimport { useRadioSelection } from \"./useRadioSelection\";\nimport { useValueSwitchIconHiding } from \"./useValueSwitchIconHiding\";\n\nconst props = withDefaults(defineProps<KdsValueSwitchProps>(), {\n disabled: false,\n size: \"medium\",\n variant: \"default\",\n});\n\nconst modelValue = defineModel<string>();\n\nconst options = computed(\n () =>\n props.possibleValues.map((o) => {\n if (typeof o === \"string\") {\n return { text: o, id: o };\n }\n return o;\n }) satisfies KdsValueSwitchOption[],\n);\n\nconst labelId = useId();\nconst descriptionId = useId();\n\nconst availableWidthContainer = useTemplateRef<HTMLElement>(\n \"availableWidthContainer\",\n);\nconst { width } = useElementSize(availableWidthContainer);\nconst { shouldHideIcons, setItemEl } = useValueSwitchIconHiding({\n width,\n options,\n});\n\nconst optionContainer = useTemplateRef(\"optionContainer\");\nconst { tabIndexForOption, handleClick, handleKeyDown } = useRadioSelection({\n selectedId: modelValue,\n options,\n globalDisable: computed(() => props.disabled),\n optionContainer,\n});\n</script>\n\n<template>\n <div\n :id=\"props.id\"\n ref=\"availableWidthContainer\"\n role=\"radiogroup\"\n :class=\"{\n 'value-switch': true,\n 'size-small': props.size === 'small',\n }\"\n :aria-invalid=\"props.error || undefined\"\n :aria-labelledby=\"props.label ? labelId : undefined\"\n :aria-describedby=\"props.subText ? descriptionId : undefined\"\n >\n <KdsLabel v-if=\"props.label\" :id=\"labelId\" :label=\"props.label\" />\n\n <div ref=\"optionContainer\" :class=\"{ options: true, error: props.error }\">\n <ValueSwitchItem\n v-for=\"(option, index) in options\"\n :key=\"option.id\"\n :ref=\"(el) => setItemEl(option.id, el)\"\n v-bind=\"option\"\n :hide-icons=\"shouldHideIcons\"\n :selected=\"modelValue === option.id\"\n :disabled=\"props.disabled || option.disabled\"\n :size=\"props.size\"\n :variant=\"props.variant\"\n :tab-index=\"tabIndexForOption(index)\"\n :title=\"option.title\"\n @click=\"() => handleClick(index)\"\n @keydown=\"handleKeyDown($event, index)\"\n />\n </div>\n\n <KdsSubText\n :id=\"descriptionId\"\n :sub-text=\"props.subText\"\n :preserve-sub-text-space=\"props.preserveSubTextSpace\"\n :error=\"props.error\"\n />\n </div>\n</template>\n\n<style scoped>\n.value-switch {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n padding: 0;\n margin: 0;\n border: none;\n}\n\n.options {\n display: flex;\n flex-flow: row nowrap;\n gap: var(--kds-spacing-container-none);\n align-items: flex-start;\n width: fit-content;\n min-width: 0;\n max-width: 100%;\n padding: calc(\n var(--kds-spacing-container-0-12x) - var(--kds-core-border-width-xs)\n );\n overflow: hidden;\n background: var(--kds-color-surface-muted);\n border: var(--kds-border-action-transparent);\n border-radius: var(--kds-border-radius-container-0-37x);\n box-shadow: var(--kds-fake-border-xs-muted);\n\n &:has(:focus-visible) {\n outline: var(--kds-border-action-focused);\n outline-offset: var(--kds-spacing-offset-focus);\n border-radius: var(--kds-border-radius-container-0-44x);\n }\n\n &.error {\n border: var(--kds-border-action-error);\n box-shadow: none;\n }\n}\n</style>\n","export const kdsRadioButtonGroupAlignment = {\n VERTICAL: \"vertical\",\n HORIZONTAL: \"horizontal\",\n} as const;\n\nexport const kdsRadioButtonGroupAlignments = Object.values(\n kdsRadioButtonGroupAlignment,\n);\n\nexport const kdsValueSwitchSize = {\n SMALL: \"small\",\n MEDIUM: \"medium\",\n} as const;\n\nexport const kdsValueSwitchSizes = Object.values(kdsValueSwitchSize);\n\nexport const kdsValueSwitchVariant = {\n DEFAULT: \"default\",\n MUTED: \"muted\",\n} as const;\n\nexport const kdsValueSwitchVariants = Object.values(kdsValueSwitchVariant);\n","<script setup lang=\"ts\">\nimport { useId, useTemplateRef, watchEffect } from \"vue\";\n\nimport type { KdsPopoverExpose, KdsPopoverProps } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsPopoverProps>(), {\n placement: \"bottom-left\",\n role: \"dialog\",\n fullWidth: false,\n});\n\nconst open = defineModel<boolean>({ default: false });\nconst popoverEl = useTemplateRef(\"popoverEl\");\n\nconst popoverId = useId();\nconst anchorName = `--anchor-${popoverId}`;\n\n// Sync the open state with the native popover element's open state\nwatchEffect(() => {\n if (open.value) {\n popoverEl.value?.showPopover?.();\n } else {\n popoverEl.value?.hidePopover?.();\n }\n});\n\nconst anchorStyle = { \"anchor-name\": anchorName };\n\ndefineExpose<KdsPopoverExpose>({ anchorStyle, popoverId });\n</script>\n\n<template>\n <div\n :id=\"popoverId\"\n ref=\"popoverEl\"\n class=\"kds-popover\"\n :class=\"['floating', props.placement, { 'full-width': props.fullWidth }]\"\n popover=\"auto\"\n :style=\"{ 'position-anchor': anchorName }\"\n :role=\"props.role\"\n :aria-label=\"props.popoverAriaLabel\"\n @toggle=\"open = $event.newState === 'open'\"\n >\n <slot v-if=\"open\">\n <div\n v-if=\"props.content?.trim().length\"\n class=\"kds-popover-default-content\"\n >\n {{ props.content }}\n </div>\n </slot>\n </div>\n</template>\n\n<style scoped>\n.kds-popover {\n padding: 0;\n margin: 0;\n overflow: visible;\n font: inherit;\n color: inherit;\n background-color: transparent;\n border: none;\n border-radius: 0;\n box-shadow: none;\n\n /* noinspection CssInvalidFunction */\n &.full-width {\n min-inline-size: anchor-size(width);\n }\n\n /* noinspection CssInvalidFunction,CssInvalidAtRule */\n &.floating.top-right {\n inset: auto anchor(right) anchor(top) auto;\n margin: var(--kds-spacing-container-0-25x) 0\n var(--kds-spacing-container-0-25x) var(--kds-spacing-container-0-25x);\n position-try-fallbacks:\n --kds-popover-try-top-left, --kds-popover-try-bottom-right,\n --kds-popover-try-bottom-left, --kds-popover-try-top-right;\n }\n\n /* noinspection CssInvalidFunction,CssInvalidAtRule */\n &.floating.top-left {\n inset: auto auto anchor(top) anchor(left);\n margin: var(--kds-spacing-container-0-25x)\n var(--kds-spacing-container-0-25x) var(--kds-spacing-container-0-25x) 0;\n position-try-fallbacks:\n --kds-popover-try-top-right, --kds-popover-try-bottom-left,\n --kds-popover-try-bottom-right, --kds-popover-try-top-left;\n }\n\n /* noinspection CssInvalidFunction,CssInvalidAtRule */\n &.floating.bottom-right {\n inset: anchor(bottom) anchor(right) auto auto;\n margin: var(--kds-spacing-container-0-25x) 0\n var(--kds-spacing-container-0-25x) var(--kds-spacing-container-0-25x);\n position-try-fallbacks:\n --kds-popover-try-bottom-left, --kds-popover-try-top-right,\n --kds-popover-try-top-left, --kds-popover-try-bottom-right;\n }\n\n /* noinspection CssInvalidFunction,CssInvalidAtRule */\n &.floating.bottom-left {\n inset: anchor(bottom) auto auto anchor(left);\n margin: var(--kds-spacing-container-0-25x)\n var(--kds-spacing-container-0-25x) var(--kds-spacing-container-0-25x) 0;\n position-try-fallbacks:\n --kds-popover-try-bottom-right, --kds-popover-try-top-left,\n --kds-popover-try-top-right, --kds-popover-try-bottom-left;\n }\n}\n\n/* noinspection CssInvalidFunction,CssInvalidAtRule */\n@position-try --kds-popover-try-top-right {\n inset: auto anchor(right) anchor(top) auto;\n margin: var(--kds-spacing-container-0-25x) 0\n var(--kds-spacing-container-0-25x) var(--kds-spacing-container-0-25x);\n}\n\n/* noinspection CssInvalidFunction,CssInvalidAtRule */\n@position-try --kds-popover-try-top-left {\n inset: auto auto anchor(top) anchor(left);\n margin: var(--kds-spacing-container-0-25x) var(--kds-spacing-container-0-25x)\n var(--kds-spacing-container-0-25x) 0;\n}\n\n/* noinspection CssInvalidFunction,CssInvalidAtRule */\n@position-try --kds-popover-try-bottom-right {\n inset: anchor(bottom) anchor(right) auto auto;\n margin: var(--kds-spacing-container-0-25x) 0\n var(--kds-spacing-container-0-25x) var(--kds-spacing-container-0-25x);\n}\n\n/* noinspection CssInvalidFunction,CssInvalidAtRule */\n@position-try --kds-popover-try-bottom-left {\n inset: anchor(bottom) auto auto anchor(left);\n margin: var(--kds-spacing-container-0-25x) var(--kds-spacing-container-0-25x)\n var(--kds-spacing-container-0-25x) 0;\n}\n\n.kds-popover-default-content {\n padding: var(--kds-spacing-container-0-75x);\n font: var(--kds-font-base-body-small);\n color: var(--kds-color-text-and-icon-neutral);\n background-color: var(--kds-color-surface-default);\n border-radius: var(--kds-border-radius-container-0-37x);\n box-shadow: var(--kds-elevation-level-3);\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed, ref, useId } from \"vue\";\n\nimport type { KdsSubTextProps } from \"../types\";\n\nimport KdsLabel from \"./KdsLabel.vue\";\nimport KdsSubText from \"./KdsSubText.vue\";\n\ntype KdsFormFieldProps = {\n /**\n * Input id\n */\n id?: string;\n /**\n * Label text\n */\n label?: string;\n /**\n * Aria-label for accessibility when a visible label is not desired\n */\n ariaLabel?: string;\n /**\n * Optional description displayed in an info popover next to the label.\n * The info toggle button is only visible when hovering the input field.\n */\n description?: string;\n} & Omit<KdsSubTextProps, \"id\">;\n\nconst props = defineProps<KdsFormFieldProps>();\n\nconst fallbackId = useId();\nconst inputId = computed(() => props.id?.trim() || fallbackId);\nconst labelId = computed(() => `${inputId.value}-label`);\nconst subTextId = computed(() => `${inputId.value}-subtext`);\n\nconst isHovered = ref(false);\n</script>\n\n<template>\n <div\n class=\"kds-form-field\"\n @mouseenter=\"isHovered = true\"\n @mouseleave=\"isHovered = false\"\n >\n <KdsLabel\n v-if=\"props.label\"\n :id=\"labelId\"\n :for=\"inputId\"\n :label=\"props.label\"\n :description=\"props.description\"\n :show-description-button=\"isHovered\"\n />\n <slot\n :id=\"inputId\"\n :aria-labelledby=\"props.label ? labelId : undefined\"\n :aria-describedby=\"props.subText ? subTextId : undefined\"\n :aria-label=\"props.label ? undefined : props.ariaLabel\"\n :aria-invalid=\"props.error\"\n />\n <KdsSubText\n :id=\"subTextId\"\n :sub-text=\"props.subText\"\n :error=\"props.error\"\n :validating=\"props.validating\"\n :preserve-sub-text-space=\"props.preserveSubTextSpace\"\n />\n </div>\n</template>\n\n<style scoped>\n.kds-form-field {\n display: flex;\n flex-direction: column;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed, useTemplateRef } from \"vue\";\n\nimport KdsIcon from \"../../accessories/Icon/KdsIcon.vue\";\nimport type { KdsIconName } from \"../../accessories/Icon/types\";\nimport KdsButton from \"../../buttons/KdsButton/KdsButton.vue\";\n\ntype BaseInputProps = {\n /**\n * ID for the input element\n */\n id?: string;\n /**\n * The type of input field\n */\n type?: \"text\" | \"email\" | \"password\" | \"number\" | \"tel\" | \"url\" | \"search\";\n /**\n * Minimum allowed value (relevant for type=\"number\")\n */\n min?: number;\n /**\n * Maximum allowed value (relevant for type=\"number\")\n */\n max?: number;\n /**\n * Step size (relevant for type=\"number\")\n */\n step?: number;\n /**\n * Placeholder text when input is empty\n */\n placeholder?: string;\n /**\n * Whether the input is disabled\n */\n disabled?: boolean;\n /**\n * Icon displayed at the start of the input\n */\n leadingIcon?: KdsIconName;\n /**\n * Icon displayed at the end of the input\n */\n trailingIcon?: KdsIconName;\n /**\n * Whether the input has an error state\n */\n error?: boolean;\n /**\n * Autocomplete attribute for the input element\n */\n autocomplete?: string;\n /**\n * Accessible label for the input (for aria-label).\n */\n ariaLabel?: string;\n /**\n * ID of element that labels this input (for aria-labelledby)\n */\n ariaLabelledby?: string;\n /**\n * ID of element that describes this input (for aria-describedby)\n */\n ariaDescribedby?: string;\n /**\n * Whether the current value of the input is invalid (for aria-invalid)\n */\n ariaInvalid?: boolean;\n\n /**\n * ARIA role override applied to the input element.\n * Useful to preserve semantics for custom controls.\n */\n role?: string;\n /**\n * Current value for widgets like role=\"spinbutton\".\n */\n ariaValuenow?: number;\n /**\n * Minimum value for widgets like role=\"spinbutton\".\n */\n ariaValuemin?: number;\n /**\n * Maximum value for widgets like role=\"spinbutton\".\n */\n ariaValuemax?: number;\n /**\n * Human-readable value text (e.g. localized) for widgets like role=\"spinbutton\".\n */\n ariaValuetext?: string;\n /**\n * ID of the currently active descendant element (for aria-activedescendant).\n * Used when the input controls an external listbox or similar widget.\n */\n ariaActivedescendant?: string;\n /**\n * Unit shown next to the input value\n */\n unit?: string;\n /**\n * Hints at the type of data that might be entered by the user.\n * Useful for showing an appropriate on-screen keyboard on mobile.\n */\n inputmode?:\n | \"none\"\n | \"text\"\n | \"tel\"\n | \"url\"\n | \"email\"\n | \"numeric\"\n | \"decimal\"\n | \"search\";\n /**\n * Whether to show a clear button when the input has a value.\n */\n clearable?: boolean;\n};\n\nconst props = withDefaults(defineProps<BaseInputProps>(), {\n id: undefined,\n type: \"text\",\n min: undefined,\n max: undefined,\n step: undefined,\n placeholder: undefined,\n disabled: false,\n leadingIcon: undefined,\n trailingIcon: undefined,\n error: false,\n autocomplete: undefined,\n ariaLabel: undefined,\n ariaLabelledby: undefined,\n ariaDescribedby: undefined,\n ariaInvalid: undefined,\n role: undefined,\n ariaValuenow: undefined,\n ariaValuemin: undefined,\n ariaValuemax: undefined,\n ariaValuetext: undefined,\n ariaActivedescendant: undefined,\n unit: undefined,\n inputmode: undefined,\n clearable: false,\n});\n\ntype BaseInputEmits = {\n /** Native focus event forwarded from the input element. */\n focus: [event: FocusEvent];\n /** Native blur event forwarded from the input element. */\n blur: [event: FocusEvent];\n /** Native keydown event forwarded from the input element. */\n keydown: [event: KeyboardEvent];\n /** Native input event forwarded from the input element. */\n input: [event: Event];\n /** Native click event forwarded from the input element. */\n click: [event: MouseEvent];\n};\n\nconst emit = defineEmits<BaseInputEmits>();\n\nconst modelValue = defineModel<string>({ default: \"\" });\n\nconst inputRef = useTemplateRef(\"input\");\n\nconst hasValue = computed(() => modelValue.value.length > 0);\n\nconst showUnitPlaceholder = computed(\n () => Boolean(props.unit) && modelValue.value.trim().length === 0,\n);\n\nconst handleInput = (event: Event) => {\n const target = event.target as HTMLInputElement;\n modelValue.value = target.value;\n\n emit(\"input\", event);\n};\n\nconst focusInput = () => {\n inputRef.value?.focus();\n};\n\nconst clearAndFocusInput = () => {\n modelValue.value = \"\";\n focusInput();\n};\n\nconst handleContainerClick = (event: MouseEvent) => {\n if (event.clientX === 0 && event.clientY === 0) {\n // Keyboard-initiated click (e.g. Enter/Space on a focused button)\n return;\n }\n\n focusInput();\n};\n\ndefineExpose({\n /**\n * Focuses the input element\n */\n focus: focusInput,\n});\n</script>\n\n<template>\n <div\n :class=\"{\n container: true,\n error: props.error,\n disabled: props.disabled,\n }\"\n @click=\"handleContainerClick\"\n >\n <div v-if=\"props.leadingIcon\" class=\"icon-wrapper leading\">\n <KdsIcon v-if=\"props.leadingIcon\" :name=\"props.leadingIcon\" />\n </div>\n\n <div v-if=\"$slots.leading\" class=\"leading-slot\">\n <slot name=\"leading\" />\n </div>\n\n <input\n :id=\"props.id\"\n ref=\"input\"\n :value=\"modelValue\"\n :type=\"props.type\"\n :inputmode=\"props.inputmode\"\n :placeholder=\"props.placeholder\"\n :disabled=\"props.disabled\"\n :autocomplete=\"props.autocomplete\"\n :min=\"props.min\"\n :max=\"props.max\"\n :step=\"props.step\"\n :aria-label=\"props.ariaLabel\"\n :aria-labelledby=\"props.ariaLabelledby\"\n :aria-describedby=\"props.ariaDescribedby\"\n :aria-invalid=\"props.ariaInvalid\"\n :role=\"props.role\"\n :aria-valuenow=\"props.ariaValuenow\"\n :aria-valuemin=\"props.ariaValuemin\"\n :aria-valuemax=\"props.ariaValuemax\"\n :aria-valuetext=\"props.ariaValuetext\"\n :aria-activedescendant=\"props.ariaActivedescendant\"\n :class=\"{ 'input-field': true, 'has-value': hasValue }\"\n @input=\"handleInput\"\n @focus=\"emit('focus', $event)\"\n @blur=\"emit('blur', $event)\"\n @keydown=\"emit('keydown', $event)\"\n @click=\"emit('click', $event)\"\n />\n\n <span\n v-if=\"props.unit\"\n :class=\"{\n unit: true,\n placeholder: showUnitPlaceholder,\n disabled: props.disabled,\n }\"\n :aria-disabled=\"props.disabled || undefined\"\n >\n {{ props.unit }}\n </span>\n\n <KdsButton\n v-if=\"props.clearable && hasValue && !props.disabled\"\n class=\"clear-button\"\n type=\"button\"\n size=\"xsmall\"\n variant=\"transparent\"\n leading-icon=\"x-close\"\n aria-label=\"Clear\"\n title=\"Clear\"\n @click.stop=\"clearAndFocusInput\"\n />\n\n <div v-if=\"$slots.trailing\" class=\"trailing-slot\">\n <slot name=\"trailing\" />\n </div>\n\n <div v-if=\"props.trailingIcon\" class=\"icon-wrapper trailing\">\n <KdsIcon :name=\"props.trailingIcon\" />\n </div>\n </div>\n</template>\n\n<style scoped>\n.container {\n display: flex;\n align-items: center;\n width: 100%;\n height: var(--kds-dimension-component-height-1-75x);\n padding: 0 var(--kds-spacing-container-0-25x);\n cursor: text;\n background: var(--kds-color-background-input-initial);\n border: var(--kds-border-action-input);\n border-radius: var(--kds-border-radius-container-0-37x);\n\n &:has(input:focus:not(:disabled)) {\n outline: var(--kds-border-action-focused);\n outline-offset: var(--kds-spacing-offset-focus);\n }\n\n &:has(.input-field:hover:not(:disabled, :focus)) {\n background: var(--kds-color-background-input-hover);\n }\n\n &.error {\n border: var(--kds-border-action-error);\n }\n\n &.disabled {\n cursor: default;\n border: var(--kds-border-action-disabled);\n border-color: var(--kds-color-border-disabled);\n }\n}\n\n.icon-wrapper {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n color: var(--kds-color-text-and-icon-subtle);\n\n &.leading {\n padding-left: var(--kds-spacing-container-0-12x);\n }\n\n &.trailing {\n padding-right: var(--kds-spacing-container-0-12x);\n }\n\n .container.disabled & {\n color: var(--kds-color-text-and-icon-disabled);\n cursor: default;\n }\n\n .container:focus-within &,\n .container:has(.input-field.has-value) & {\n color: var(--kds-color-text-and-icon-neutral);\n }\n}\n\n.input-field {\n flex: 1 0 0;\n min-width: 0;\n height: var(--kds-dimension-component-height-1-75x);\n padding: var(--kds-spacing-container-0-25x);\n overflow: hidden;\n text-overflow: ellipsis;\n font: var(--kds-font-base-body-small);\n color: var(--kds-color-text-and-icon-neutral);\n white-space: nowrap;\n outline: none;\n background: transparent;\n border: none;\n\n /* hide native steppers, we provide our own in NumberInput */\n &[type=\"number\"] {\n appearance: textfield;\n\n &::-webkit-outer-spin-button,\n &::-webkit-inner-spin-button {\n margin: 0;\n appearance: none;\n }\n }\n\n /* hide native search cancel button on Safari/WebKit, we provide our own clearable button */\n &[type=\"search\"]::-webkit-search-cancel-button {\n appearance: none;\n }\n\n &::placeholder {\n color: var(--kds-color-text-and-icon-subtle);\n }\n\n &:disabled {\n color: var(--kds-color-text-and-icon-disabled);\n cursor: default;\n\n &::placeholder {\n color: var(--kds-color-text-and-icon-disabled);\n }\n }\n}\n\n.unit {\n flex-shrink: 0;\n min-width: 0;\n margin: 0 var(--kds-spacing-container-0-12x);\n overflow: hidden;\n text-overflow: ellipsis;\n font: var(--kds-font-base-body-small);\n color: var(--kds-color-text-and-icon-neutral);\n white-space: nowrap;\n\n &.placeholder {\n color: var(--kds-color-text-and-icon-subtle);\n }\n\n &.disabled {\n color: var(--kds-color-text-and-icon-disabled);\n }\n\n .container:focus-within & {\n color: var(--kds-color-text-and-icon-neutral);\n }\n}\n\n.clear-button {\n margin-left: var(--kds-spacing-container-0-12x);\n}\n\n.leading-slot {\n display: flex;\n flex-shrink: 0;\n gap: var(--kds-spacing-container-0-12x);\n align-items: center;\n}\n\n.trailing-slot {\n display: flex;\n flex-shrink: 0;\n gap: var(--kds-spacing-container-0-12x);\n align-items: center;\n margin-left: var(--kds-spacing-container-0-12x);\n}\n</style>\n","<script setup lang=\"ts\">\nimport { useTemplateRef } from \"vue\";\n\nimport BaseFormFieldWrapper from \"../../_helper/BaseFormFieldWrapper.vue\";\nimport type { KdsFormFieldExpose } from \"../../types.ts\";\nimport BaseInput from \"../BaseInput.vue\";\n\nimport type { KdsTextInputProps } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsTextInputProps>(), {\n disabled: false,\n error: false,\n validating: false,\n preserveSubTextSpace: false,\n});\n\nconst modelValue = defineModel<string>({ default: \"\" });\n\nconst baseInput = useTemplateRef(\"baseInput\");\n\ndefineExpose<KdsFormFieldExpose>({\n focus: () => baseInput.value?.focus(),\n});\n</script>\n\n<template>\n <BaseFormFieldWrapper v-bind=\"props\">\n <template #default=\"slotProps\">\n <BaseInput\n ref=\"baseInput\"\n v-bind=\"slotProps\"\n v-model=\"modelValue\"\n type=\"text\"\n :placeholder=\"props.placeholder\"\n :disabled=\"props.disabled\"\n :error=\"props.error\"\n :autocomplete=\"props.autocomplete\"\n />\n </template>\n </BaseFormFieldWrapper>\n</template>\n","export type KdsRgbColor = {\n r: number;\n g: number;\n b: number;\n};\n\nexport type KdsHsvColor = {\n /** Hue in degrees [0..360) */\n h: number;\n /** Saturation [0..1] */\n s: number;\n /** Value [0..1] */\n v: number;\n};\n\nconst HEX_RADIX = 16;\n\nconst RGB_MAX = 255;\n\nconst HUE_MAX_DEG = 360;\nconst HUE_SECTOR_DEG = 60;\nconst HUE_SECTOR_COUNT = 6;\n\nconst HUE_OFFSET_FOR_MAX_G = 2;\nconst HUE_OFFSET_FOR_MAX_B = 4;\n\nconst HUE_SECTOR_INDEX_2 = 2;\nconst HUE_SECTOR_INDEX_3 = 3;\nconst HUE_SECTOR_INDEX_4 = 4;\nconst HUE_SECTOR_INDEX_5 = 5;\n\nconst HEX_PAIR_LENGTH = 2;\nconst HEX_RED_START = 1;\nconst HEX_GREEN_START = HEX_RED_START + HEX_PAIR_LENGTH;\nconst HEX_BLUE_START = HEX_GREEN_START + HEX_PAIR_LENGTH;\n\nexport const clamp = (value: number, min: number, max: number) =>\n Math.min(max, Math.max(min, value));\n\nconst round = (value: number) => Math.round(value);\n\nconst padHex = (value: number) => value.toString(HEX_RADIX).padStart(2, \"0\");\n\nexport const normalizeHexColor = (value: string): string | null => {\n const trimmed = value.trim();\n if (trimmed.length === 0) {\n return null;\n }\n\n const withoutHash = trimmed.startsWith(\"#\") ? trimmed.slice(1) : trimmed;\n\n if (/^[0-9a-fA-F]{3}$/.test(withoutHash)) {\n const [r, g, b] = withoutHash.split(\"\") as [string, string, string];\n return `#${r}${r}${g}${g}${b}${b}`.toUpperCase();\n }\n\n if (/^[0-9a-fA-F]{6}$/.test(withoutHash)) {\n return `#${withoutHash}`.toUpperCase();\n }\n\n return null;\n};\n\nexport const hexToRgb = (hex: string): KdsRgbColor | null => {\n const normalized = normalizeHexColor(hex);\n if (!normalized) {\n return null;\n }\n\n const r = Number.parseInt(\n normalized.slice(HEX_RED_START, HEX_RED_START + HEX_PAIR_LENGTH),\n HEX_RADIX,\n );\n const g = Number.parseInt(\n normalized.slice(HEX_GREEN_START, HEX_GREEN_START + HEX_PAIR_LENGTH),\n HEX_RADIX,\n );\n const b = Number.parseInt(\n normalized.slice(HEX_BLUE_START, HEX_BLUE_START + HEX_PAIR_LENGTH),\n HEX_RADIX,\n );\n\n return { r, g, b };\n};\n\nexport const rgbToHex = ({ r, g, b }: KdsRgbColor): string => {\n const rr = clamp(round(r), 0, RGB_MAX);\n const gg = clamp(round(g), 0, RGB_MAX);\n const bb = clamp(round(b), 0, RGB_MAX);\n\n return `#${padHex(rr)}${padHex(gg)}${padHex(bb)}`.toUpperCase();\n};\n\nexport const rgbToHsv = ({ r, g, b }: KdsRgbColor): KdsHsvColor => {\n const rr = clamp(r / RGB_MAX, 0, 1);\n const gg = clamp(g / RGB_MAX, 0, 1);\n const bb = clamp(b / RGB_MAX, 0, 1);\n\n const max = Math.max(rr, gg, bb);\n const min = Math.min(rr, gg, bb);\n const delta = max - min;\n\n const v = max;\n const s = max === 0 ? 0 : delta / max;\n\n let h = 0;\n if (delta !== 0) {\n if (max === rr) {\n h = ((gg - bb) / delta) % HUE_SECTOR_COUNT;\n } else if (max === gg) {\n h = (bb - rr) / delta + HUE_OFFSET_FOR_MAX_G;\n } else {\n h = (rr - gg) / delta + HUE_OFFSET_FOR_MAX_B;\n }\n\n h *= HUE_SECTOR_DEG;\n if (h < 0) {\n h += HUE_MAX_DEG;\n }\n }\n\n return { h, s, v };\n};\n\nexport const hsvToRgb = ({ h, s, v }: KdsHsvColor): KdsRgbColor => {\n const hh = ((h % HUE_MAX_DEG) + HUE_MAX_DEG) % HUE_MAX_DEG;\n const ss = clamp(s, 0, 1);\n const vv = clamp(v, 0, 1);\n\n const c = vv * ss;\n const x = c * (1 - Math.abs(((hh / HUE_SECTOR_DEG) % 2) - 1));\n const m = vv - c;\n\n let rPrime = 0;\n let gPrime = 0;\n let bPrime = 0;\n\n if (hh < HUE_SECTOR_DEG) {\n rPrime = c;\n gPrime = x;\n } else if (hh < HUE_SECTOR_INDEX_2 * HUE_SECTOR_DEG) {\n rPrime = x;\n gPrime = c;\n } else if (hh < HUE_SECTOR_INDEX_3 * HUE_SECTOR_DEG) {\n gPrime = c;\n bPrime = x;\n } else if (hh < HUE_SECTOR_INDEX_4 * HUE_SECTOR_DEG) {\n gPrime = x;\n bPrime = c;\n } else if (hh < HUE_SECTOR_INDEX_5 * HUE_SECTOR_DEG) {\n rPrime = x;\n bPrime = c;\n } else {\n rPrime = c;\n bPrime = x;\n }\n\n return {\n r: round((rPrime + m) * RGB_MAX),\n g: round((gPrime + m) * RGB_MAX),\n b: round((bPrime + m) * RGB_MAX),\n };\n};\n\nexport const hsvToHex = (hsv: KdsHsvColor): string => rgbToHex(hsvToRgb(hsv));\n","import { ref } from \"vue\";\n\nexport const usePointerHandler = (\n updateFromEvent: (event: PointerEvent) => void,\n) => {\n const activePointerId = ref<number | null>(null);\n\n const onPointerDown = (event: PointerEvent) => {\n if (event.button !== 0) {\n return;\n }\n\n const target = event.currentTarget;\n if (!(target instanceof HTMLElement)) {\n return;\n }\n\n activePointerId.value = event.pointerId;\n target.setPointerCapture(event.pointerId);\n updateFromEvent(event);\n };\n\n const onPointerMove = (event: PointerEvent) => {\n if (activePointerId.value !== event.pointerId) {\n return;\n }\n\n updateFromEvent(event);\n };\n\n const endPointerInteraction = (event: PointerEvent) => {\n if (activePointerId.value !== event.pointerId) {\n return;\n }\n\n const target = event.currentTarget;\n if (\n target instanceof HTMLElement &&\n target.hasPointerCapture(event.pointerId)\n ) {\n target.releasePointerCapture(event.pointerId);\n }\n\n activePointerId.value = null;\n };\n\n return {\n activePointerId,\n onPointerDown,\n onPointerMove,\n onPointerUp: endPointerInteraction,\n };\n};\n","<script setup lang=\"ts\">\nimport { computed, ref, watch } from \"vue\";\n\nimport KdsTextInput from \"../TextInput/KdsTextInput.vue\";\n\nimport {\n clamp,\n hexToRgb,\n hsvToHex,\n hsvToRgb,\n normalizeHexColor,\n rgbToHsv,\n} from \"./colorUtils\";\nimport { usePointerHandler } from \"./usePointerHandler\";\n\nconst DEFAULT_HUE_DEG = 270;\nconst DEFAULT_SATURATION = 0.8;\nconst DEFAULT_VALUE = 0.9;\n\nconst HUE_MAX_DEG = 360;\nconst HUE_MAX_EXCLUSIVE_DEG = 359.999;\nconst PERCENT = 100;\n\nconst KEYBOARD_STEP = 0.01;\nconst KEYBOARD_LARGE_STEP = 0.1;\nconst HUE_KEYBOARD_STEP_DEG = 1;\nconst HUE_KEYBOARD_LARGE_STEP_DEG = 10;\n\nconst modelValue = defineModel<string>({ default: \"\" });\n\nconst colorspaceEl = ref<HTMLElement | null>(null);\nconst hueEl = ref<HTMLElement | null>(null);\n\nconst hue = ref(DEFAULT_HUE_DEG);\nconst saturation = ref(DEFAULT_SATURATION);\nconst value = ref(DEFAULT_VALUE);\n/**\n * This flag is used to prevent feedback loops when updating the internal HSV state from the external modelValue.\n * When the user updates the color using the UI, we first set this flag to indicate that the next modelValue update is\n * coming from an internal change, so the watcher should ignore it.\n * Without this flag, updating the color would adapt the position of the handle (i.e. the handle jumps), because the\n * same color can occur in multiple places in the color space.\n */\nconst hasPendingInternalModelUpdate = ref(false);\n\nconst syncFromModelValue = (next: string) => {\n const rgb = hexToRgb(next);\n if (!rgb) {\n return;\n }\n\n const hsv = rgbToHsv(rgb);\n hue.value = hsv.h;\n saturation.value = hsv.s;\n value.value = hsv.v;\n};\n\nwatch(\n () => modelValue.value,\n (next) => {\n if (hasPendingInternalModelUpdate.value) {\n hasPendingInternalModelUpdate.value = false;\n return;\n }\n\n syncFromModelValue(next);\n },\n { immediate: true },\n);\n\nconst currentHex = computed(() =>\n hsvToHex({\n h: hue.value,\n s: saturation.value,\n v: value.value,\n }),\n);\n\nconst hueRgb = computed(() => hsvToRgb({ h: hue.value, s: 1, v: 1 }));\n\nconst TO_BOTTOM_GRADIENT = \"linear-gradient(to bottom, transparent, black)\";\n\nconst colorspaceBackground = computed(() => {\n const { r, g, b } = hueRgb.value;\n return {\n background: `${TO_BOTTOM_GRADIENT}, linear-gradient(to right, white, rgb(${r}, ${g}, ${b}))`,\n };\n});\n\nconst colorspaceHandleStyle = computed(() => ({\n left: `${saturation.value * 100}%`,\n top: `${(1 - value.value) * 100}%`,\n}));\n\nconst hueHandleStyle = computed(() => ({\n left: `${(hue.value / HUE_MAX_DEG) * PERCENT}%`,\n}));\n\nconst setModelValueFromHsv = () => {\n hasPendingInternalModelUpdate.value = true;\n modelValue.value = currentHex.value;\n};\n\nconst updateFromColorspaceEvent = (event: PointerEvent) => {\n const el = colorspaceEl.value;\n if (!el) {\n return;\n }\n\n const rect = el.getBoundingClientRect();\n const x = (event.clientX - rect.left) / rect.width;\n const y = (event.clientY - rect.top) / rect.height;\n\n saturation.value = Math.min(1, Math.max(0, x));\n value.value = 1 - Math.min(1, Math.max(0, y));\n\n setModelValueFromHsv();\n};\n\nconst updateFromHueEvent = (event: PointerEvent) => {\n const el = hueEl.value;\n if (!el) {\n return;\n }\n\n const rect = el.getBoundingClientRect();\n const x = (event.clientX - rect.left) / rect.width;\n hue.value = Math.min(HUE_MAX_EXCLUSIVE_DEG, Math.max(0, x * HUE_MAX_DEG));\n\n setModelValueFromHsv();\n};\n\nconst {\n onPointerDown: onColorspacePointerDown,\n onPointerMove: onColorspacePointerMove,\n onPointerUp: onColorspacePointerUp,\n} = usePointerHandler(updateFromColorspaceEvent);\n\nconst {\n onPointerDown: onHuePointerDown,\n onPointerMove: onHuePointerMove,\n onPointerUp: onHuePointerUp,\n} = usePointerHandler(updateFromHueEvent);\n\nconst updateFromTextValue = (next: string) => {\n modelValue.value = next;\n\n const normalized = normalizeHexColor(next);\n if (normalized) {\n syncFromModelValue(normalized);\n }\n};\n\nconst saturationPercent = computed(() =>\n Math.round(saturation.value * PERCENT),\n);\nconst valuePercent = computed(() => Math.round(value.value * PERCENT));\n\nconst colorspaceValueText = computed(\n () =>\n `Saturation ${saturationPercent.value} percent, brightness ${valuePercent.value} percent`,\n);\n\nconst hueValueText = computed(() => `${Math.round(hue.value)} degrees`);\n\nconst onColorspaceKeyDown = (event: KeyboardEvent) => {\n const step = event.shiftKey ? KEYBOARD_LARGE_STEP : KEYBOARD_STEP;\n let handled = true;\n\n switch (event.key) {\n case \"ArrowLeft\":\n saturation.value = clamp(saturation.value - step, 0, 1);\n break;\n case \"ArrowRight\":\n saturation.value = clamp(saturation.value + step, 0, 1);\n break;\n case \"ArrowUp\":\n value.value = clamp(value.value + step, 0, 1);\n break;\n case \"ArrowDown\":\n value.value = clamp(value.value - step, 0, 1);\n break;\n default:\n handled = false;\n }\n\n if (handled) {\n event.preventDefault();\n setModelValueFromHsv();\n }\n};\n\nconst onHueKeyDown = (event: KeyboardEvent) => {\n const step = event.shiftKey\n ? HUE_KEYBOARD_LARGE_STEP_DEG\n : HUE_KEYBOARD_STEP_DEG;\n let handled = true;\n\n switch (event.key) {\n case \"ArrowLeft\":\n hue.value = clamp(hue.value - step, 0, HUE_MAX_EXCLUSIVE_DEG);\n break;\n case \"ArrowRight\":\n hue.value = clamp(hue.value + step, 0, HUE_MAX_EXCLUSIVE_DEG);\n break;\n default:\n handled = false;\n }\n\n if (handled) {\n event.preventDefault();\n setModelValueFromHsv();\n }\n};\n</script>\n\n<template>\n <div class=\"kds-color-picker\">\n <div\n ref=\"colorspaceEl\"\n class=\"colorspace\"\n role=\"slider\"\n aria-label=\"Color selection\"\n aria-roledescription=\"2D color slider\"\n :aria-valuetext=\"colorspaceValueText\"\n :style=\"colorspaceBackground\"\n tabindex=\"0\"\n @pointerdown.prevent=\"onColorspacePointerDown\"\n @pointermove.prevent=\"onColorspacePointerMove\"\n @pointerup=\"onColorspacePointerUp\"\n @pointercancel=\"onColorspacePointerUp\"\n @keydown=\"onColorspaceKeyDown\"\n >\n <div class=\"handle\" :style=\"colorspaceHandleStyle\" />\n </div>\n\n <div\n ref=\"hueEl\"\n class=\"hue\"\n role=\"slider\"\n aria-label=\"Hue\"\n :aria-valuenow=\"Math.round(hue)\"\n aria-valuemin=\"0\"\n :aria-valuemax=\"HUE_MAX_DEG\"\n :aria-valuetext=\"hueValueText\"\n tabindex=\"0\"\n @pointerdown.prevent=\"onHuePointerDown\"\n @pointermove.prevent=\"onHuePointerMove\"\n @pointerup=\"onHuePointerUp\"\n @pointercancel=\"onHuePointerUp\"\n @keydown=\"onHueKeyDown\"\n >\n <div class=\"handle\" :style=\"hueHandleStyle\" />\n </div>\n\n <KdsTextInput\n :model-value=\"modelValue\"\n aria-label=\"Color hex value\"\n placeholder=\"#FFFFFF\"\n @update:model-value=\"updateFromTextValue\"\n />\n </div>\n</template>\n\n<style scoped>\n.kds-color-picker {\n display: flex;\n flex-direction: column;\n gap: var(--kds-spacing-container-1x);\n width: calc(206px + 2 * var(--kds-spacing-container-0-75x));\n max-width: 100%;\n padding: var(--kds-spacing-container-0-75x);\n background: var(--kds-color-surface-default);\n border-radius: var(--kds-border-radius-container-0-50x);\n box-shadow: var(--kds-elevation-level-3);\n}\n\n.colorspace {\n position: relative;\n width: 100%;\n height: 200px;\n cursor: crosshair;\n outline: none;\n border-radius: var(--kds-border-radius-container-0-37x);\n}\n\n.handle {\n position: absolute;\n width: var(--kds-dimension-icon-0-75x);\n height: var(--kds-dimension-icon-0-75x);\n pointer-events: none;\n border: var(--kds-border-color-picker-handle-initial);\n border-radius: var(--kds-border-radius-container-pill);\n box-shadow: var(--kds-elevation-level-3);\n transform: translate(-50%, -50%);\n}\n\n.hue {\n position: relative;\n width: 100%;\n height: var(--kds-dimension-component-height-0-75x);\n cursor: pointer;\n outline: none;\n background: linear-gradient(\n 90deg,\n hsl(0deg 100% 50%) 0%,\n hsl(60deg 100% 50%) 17%,\n hsl(120deg 100% 50%) 33%,\n hsl(180deg 100% 50%) 50%,\n hsl(240deg 100% 50%) 67%,\n hsl(300deg 100% 50%) 83%,\n hsl(360deg 100% 50%) 100%\n );\n border-radius: var(--kds-border-radius-container-pill);\n\n & .handle {\n top: 50%;\n }\n}\n\n.colorspace:focus,\n.hue:focus {\n outline: none;\n}\n\n.colorspace:focus .handle,\n.colorspace:focus-visible .handle,\n.hue:focus .handle,\n.hue:focus-visible .handle {\n outline: var(--kds-border-action-focused);\n outline-offset: calc(-1 * var(--kds-spacing-offset-focus));\n}\n</style>\n","/**\n * Behavior for normalizing hex color input on focus out. It supports the following formats:\n * - 1-digit hex -> repeat up to 6 digits (e.g. #a -> #AAAAAA)\n * - 2-digit hex -> repeat up to 6 digits (e.g. #ab -> #ABABAB)\n * - 3-digit hex -> convert to 6-digit representation (e.g. #abc -> #AABBCC)\n * - 4-digit hex -> convert to 6-digit representation (e.g. #abcd -> #AABBCC); we do not support alpha values for\n * now, so the last digit is ignored\n * - 5-digit hex -> unsupported, restore last valid hex\n * - 6-digit hex -> normalize to uppercase (e.g. #aabbcc -> #AABBCC) and add missing hash if needed\n * (e.g. aabbcc -> #AABBCC)\n */\n\nimport { type Ref, ref, watch } from \"vue\";\n\nconst HEX_LENGTH_1 = 1;\nconst HEX_LENGTH_2 = 2;\nconst HEX_LENGTH_3 = 3;\nconst HEX_LENGTH_4 = 4;\nconst HEX_LENGTH_6 = 6;\n\nconst normalize = (\n value: string,\n fallbackValue: string,\n): string | undefined => {\n const trimmed = value.trim();\n if (trimmed.length === 0) {\n return fallbackValue;\n }\n\n const withoutHash = trimmed.startsWith(\"#\") ? trimmed.slice(1) : trimmed;\n if (!/^[0-9a-fA-F]+$/.test(withoutHash)) {\n return fallbackValue;\n }\n\n if (withoutHash.length === HEX_LENGTH_1) {\n return `#${withoutHash.repeat(HEX_LENGTH_6)}`.toUpperCase();\n }\n\n if (withoutHash.length === HEX_LENGTH_2) {\n return `#${withoutHash.repeat(HEX_LENGTH_3)}`.toUpperCase();\n }\n\n if (\n withoutHash.length === HEX_LENGTH_3 ||\n withoutHash.length === HEX_LENGTH_4\n ) {\n const [r, g, b] = withoutHash;\n return `#${r}${r}${g}${g}${b}${b}`.toUpperCase();\n }\n if (withoutHash.length === HEX_LENGTH_6) {\n return `#${withoutHash}`.toUpperCase();\n }\n return fallbackValue;\n};\n\nexport const useColorInputValidationOnFocusOut = (modelValue: Ref<string>) => {\n const lastValidHexColor = ref<string>(\"\");\n\n watch(\n modelValue,\n (value) => {\n const withoutHash = value.startsWith(\"#\") ? value.slice(1) : value;\n if (/^[0-9a-fA-F]{6}$/.test(withoutHash)) {\n lastValidHexColor.value = `#${withoutHash.toUpperCase()}`;\n }\n },\n { immediate: true },\n );\n\n const handleFocusOut = (event: FocusEvent) => {\n const currentTarget = event.currentTarget;\n if (!(currentTarget instanceof HTMLElement)) {\n return;\n }\n const nextFocusedElement = event.relatedTarget;\n if (\n nextFocusedElement instanceof Node &&\n currentTarget.contains(nextFocusedElement)\n ) {\n return;\n }\n\n const normalized = normalize(modelValue.value, lastValidHexColor.value);\n if (normalized !== undefined) {\n modelValue.value = normalized;\n }\n };\n\n return { handleFocusOut };\n};\n","<script setup lang=\"ts\">\nimport { computed, ref, useTemplateRef } from \"vue\";\n\nimport type { KdsHexColor } from \"../../../accessories\";\nimport KdsColorSwatch from \"../../../accessories/ColorSwatch/KdsColorSwatch.vue\";\nimport { KdsToggleButton } from \"../../../buttons\";\nimport KdsPopover from \"../../../overlays/Popover/KdsPopover.vue\";\nimport BaseFormFieldWrapper from \"../../_helper/BaseFormFieldWrapper.vue\";\nimport BaseInput from \"../BaseInput.vue\";\n\nimport ColorPicker from \"./ColorPicker.vue\";\nimport { normalizeHexColor } from \"./colorUtils\";\nimport type { KdsColorInputProps } from \"./types\";\nimport { useColorInputValidationOnFocusOut } from \"./useColorInputValidationOnFocusOut\";\n\nconst props = withDefaults(defineProps<KdsColorInputProps>(), {\n placeholder: \"#FFFFFF\",\n disabled: false,\n error: false,\n validating: false,\n preserveSubTextSpace: false,\n autocomplete: undefined,\n});\n\nconst modelValue = defineModel<string>({ default: \"\" });\nconst open = ref(false);\n\nconst popoverEl = useTemplateRef(\"popoverEl\");\n\nconst swatchColor = computed<KdsHexColor>(\n () => (normalizeHexColor(modelValue.value) ?? \"#FFFFFF\") as KdsHexColor,\n);\n\nconst { handleFocusOut } = useColorInputValidationOnFocusOut(modelValue);\n</script>\n\n<template>\n <BaseFormFieldWrapper v-bind=\"props\">\n <template #default=\"slotProps\">\n <div :style=\"popoverEl?.anchorStyle\" @focusout=\"handleFocusOut\">\n <BaseInput\n v-bind=\"slotProps\"\n v-model=\"modelValue\"\n :placeholder=\"props.placeholder\"\n :disabled=\"props.disabled\"\n :error=\"props.error\"\n :autocomplete=\"props.autocomplete\"\n >\n <template #leading>\n <KdsColorSwatch\n size=\"large\"\n :color=\"swatchColor\"\n :aria-hidden=\"true\"\n />\n </template>\n <template #trailing>\n <KdsToggleButton\n v-model=\"open\"\n size=\"xsmall\"\n variant=\"outlined\"\n leading-icon=\"color-picker\"\n aria-label=\"Open color picker\"\n :aria-controls=\"popoverEl?.popoverId\"\n aria-haspopup=\"dialog\"\n :disabled=\"props.disabled\"\n :title=\"open ? 'Close color picker' : 'Open color picker'\"\n />\n </template>\n </BaseInput>\n\n <KdsPopover\n ref=\"popoverEl\"\n v-model=\"open\"\n placement=\"bottom-right\"\n popover-aria-label=\"Color picker\"\n >\n <ColorPicker v-model=\"modelValue\" />\n </KdsPopover>\n </div>\n </template>\n </BaseFormFieldWrapper>\n</template>\n","export type KdsNumberParser = {\n locale: string;\n decimalSeparator: string;\n groupSeparator: string;\n /**\n * Maximum number of fraction digits implied by `step`.\n *\n * Example:\n * - step=1 => 0\n * - step=0.01 => 2\n * - step=1e-7 => 7\n */\n stepFractionDigits: number;\n formatForDisplay: (value: number) => string;\n parseFromInput: (value: string) => number;\n /**\n * Round a number to the nearest step increment.\n * Returns NaN for non-finite values.\n */\n roundToStep: (value: number) => number;\n};\n\nconst additionalGroupSeparators = [\" \", \"\\u00A0\", \"\\u202F\"];\nconst decimalSeparatorSample = 1.1;\nconst groupSeparatorSample = 1000.1;\n\nconst countFractionDigits = (value: number) => {\n if (!Number.isFinite(value)) {\n return 0;\n }\n\n // Handle exponential notation (e.g. 1e-7) deterministically.\n // We only care about the number of digits right of the decimal point.\n // Examples:\n // - 1e-7 => 7\n // - 1.23e-4 => 6 (0.000123)\n // - 1e+3 => 0\n const exp = value.toExponential();\n const match = exp.match(/^[-+]?(\\d+)(?:\\.(\\d+))?e([+-]?\\d+)$/i);\n if (!match) {\n return 0;\n }\n\n const fractionDigitsInMantissa = match[2]?.length ?? 0;\n const exponent = Number.parseInt(match[3]!, 10);\n\n if (exponent >= 0) {\n // Shift decimal point to the right -> no additional fraction digits required.\n return Math.max(0, fractionDigitsInMantissa - exponent);\n }\n\n // Shift decimal point to the left -> adds (-exponent) fraction digits.\n return fractionDigitsInMantissa + Math.abs(exponent);\n};\n\nexport const createKdsNumberParser = (params: {\n locale: string;\n step: number;\n}): KdsNumberParser => {\n const formatter = new Intl.NumberFormat(params.locale);\n\n const decimalSeparator =\n formatter\n .formatToParts(decimalSeparatorSample)\n .find((part) => part.type === \"decimal\")?.value ?? \".\";\n\n const groupSeparator =\n formatter\n .formatToParts(groupSeparatorSample)\n .find((part) => part.type === \"group\")?.value ?? \",\";\n\n const removeGroupingSeparators = (input: string) =>\n [groupSeparator, ...additionalGroupSeparators].reduce(\n (acc, groupSep) =>\n groupSep.length > 0 ? acc.split(groupSep).join(\"\") : acc,\n input,\n );\n\n const formattersByMaxDecimals = new Map<number, Intl.NumberFormat>();\n const getFormatterForMaxDecimals = (maxDecimals: number) => {\n const cached = formattersByMaxDecimals.get(maxDecimals);\n if (cached) {\n return cached;\n }\n\n const created = new Intl.NumberFormat(params.locale, {\n useGrouping: false,\n minimumFractionDigits: 0,\n maximumFractionDigits: maxDecimals,\n });\n\n formattersByMaxDecimals.set(maxDecimals, created);\n return created;\n };\n\n const stepFractionDigits = countFractionDigits(params.step);\n const precisionFactor = Number(`1e${stepFractionDigits}`);\n\n const formatForDisplay = (value: number) => {\n if (!Number.isFinite(value)) {\n return \"\";\n }\n\n // Use at least the step's precision, but also preserve the value's own precision.\n // Note: values can also stringify to exponent form, so use the same helper.\n const valueDecimals = countFractionDigits(value);\n\n const maxDecimals = Math.max(stepFractionDigits, valueDecimals);\n\n return getFormatterForMaxDecimals(maxDecimals).format(value);\n };\n\n const roundToStep = (value: number) => {\n if (!Number.isFinite(value)) {\n return NaN;\n }\n\n const step = params.step;\n\n if (!Number.isFinite(step) || step <= 0) {\n return value;\n }\n\n // Avoid floating point artifacts when working with decimal steps.\n // Use a fixed factor derived from stepFractionDigits (handles exponent notation reliably).\n if (!Number.isFinite(precisionFactor) || precisionFactor <= 0) {\n return value;\n }\n\n const scaledNext = Math.round(value * precisionFactor);\n const scaledStep = Math.round(step * precisionFactor);\n\n // If step can't be represented at the current precision, don't round.\n if (scaledStep === 0) {\n return value;\n }\n\n const roundedScaled = Math.round(scaledNext / scaledStep) * scaledStep;\n return roundedScaled / precisionFactor;\n };\n\n const isValidNormalizedNumber = (normalized: string) =>\n // Accept plain decimals as well as scientific notation.\n // Note: whitespace is removed earlier; we don't accept grouping separators here.\n /^[-+]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][-+]?\\d+)?$/.test(normalized);\n\n /**\n * Parse a localized number string to a number.\n *\n * Supported input patterns:\n * - Locale decimal separator (e.g. \"1,2\" in de-DE)\n * - Locale grouping + decimal (e.g. \"1.234,56\" in de-DE)\n * - Grouped integer without decimal separator (e.g. \"1,234\" in en-US, \"1.234\" in de-DE)\n * - \".\" as a fallback decimal separator when the locale uses \",\" (common user input)\n */\n const parseFromInput = (value: string) => {\n const trimmed = value.trim();\n if (trimmed.length === 0) {\n return NaN;\n }\n\n const localeDecimal = decimalSeparator;\n\n const hasLocaleDecimal =\n localeDecimal.length > 0 && trimmed.includes(localeDecimal);\n\n // If the locale decimal separator is present, we can safely remove grouping chars.\n if (hasLocaleDecimal) {\n const withoutGrouping = removeGroupingSeparators(trimmed);\n const normalized = withoutGrouping.split(localeDecimal).join(\".\");\n if (!isValidNormalizedNumber(normalized)) {\n return NaN;\n }\n const parsed = Number.parseFloat(normalized);\n return Number.isFinite(parsed) ? parsed : NaN;\n }\n\n // No locale decimal separator present.\n //\n // Case A: locale uses ',' as decimal separator (e.g. de-DE). Accept '.' as fallback decimal.\n // While doing so, we still want to support locale grouping separators like '1.234'.\n if (localeDecimal !== \".\" && trimmed.includes(\".\")) {\n const lastDotIndex = trimmed.lastIndexOf(\".\");\n const digitsAfterDot = trimmed.slice(lastDotIndex + 1);\n\n const looksLikeDecimal =\n digitsAfterDot.length > 0 && digitsAfterDot.length <= 2;\n\n const normalized = looksLikeDecimal\n ? `${removeGroupingSeparators(trimmed.slice(0, lastDotIndex))}.${removeGroupingSeparators(\n digitsAfterDot,\n )}`\n : removeGroupingSeparators(trimmed);\n\n if (!isValidNormalizedNumber(normalized)) {\n return NaN;\n }\n\n const parsed = Number.parseFloat(normalized);\n return Number.isFinite(parsed) ? parsed : NaN;\n }\n\n // Case B: locale uses '.' as decimal separator (e.g. en-US).\n // Remove grouping separators such as ',' and whitespace, so '1,234' => '1234'.\n // Note: we intentionally do NOT treat ',' as a decimal separator here.\n const normalized = removeGroupingSeparators(trimmed);\n if (!isValidNormalizedNumber(normalized)) {\n return NaN;\n }\n const parsed = Number.parseFloat(normalized);\n return Number.isFinite(parsed) ? parsed : NaN;\n };\n\n return {\n locale: params.locale,\n decimalSeparator,\n groupSeparator,\n stepFractionDigits,\n formatForDisplay,\n parseFromInput,\n roundToStep,\n };\n};\n","<script setup lang=\"ts\">\nimport { computed, ref, useTemplateRef, watch } from \"vue\";\n\nimport KdsButton from \"../../../buttons/KdsButton/KdsButton.vue\";\nimport BaseFormFieldWrapper from \"../../_helper/BaseFormFieldWrapper.vue\";\nimport type { KdsFormFieldExpose } from \"../../types.ts\";\nimport BaseInput from \"../BaseInput.vue\";\n\nimport { createKdsNumberParser } from \"./numberParser\";\nimport type { KdsNumberInputProps } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsNumberInputProps>(), {\n disabled: false,\n error: false,\n validating: false,\n preserveSubTextSpace: false,\n unit: \"\",\n step: 1,\n});\n\nconst modelValue = defineModel<number>({ default: Number.NaN });\n\nconst isFocused = ref(false);\n\n/**\n * String representation of what's currently shown in the input.\n *\n * Important: we keep this separate from the numeric model to allow intermediate\n * typing states and to avoid clamping away out-of-range values before external\n * validation (e.g. JSONForms/builtin validations) can kick in.\n */\nconst localValue = ref<string>(\"\");\n\nconst numberParser = computed(() =>\n createKdsNumberParser({ locale: \"en-US\", step: props.step }),\n);\n\nconst ariaValuenow = computed(() =>\n Number.isFinite(modelValue.value) ? modelValue.value : undefined,\n);\n\nconst ariaValuetext = computed(() => {\n if (!Number.isFinite(modelValue.value)) {\n return undefined;\n }\n\n // Format the spoken feedback using en-US locale (decimal separator, etc.).\n return numberParser.value.formatForDisplay(modelValue.value);\n});\n\nconst clamp = (value: number) => {\n if (!Number.isFinite(value)) {\n return Number.NaN;\n }\n\n let result = value;\n\n if (props.min !== undefined && !Number.isNaN(props.min)) {\n result = Math.max(props.min, result);\n }\n if (props.max !== undefined && !Number.isNaN(props.max)) {\n result = Math.min(props.max, result);\n }\n\n return result;\n};\n\nwatch(\n () => modelValue.value,\n (next) => {\n // While focused, let the user keep typing without being overridden by external updates.\n if (isFocused.value) {\n return;\n }\n localValue.value = numberParser.value.formatForDisplay(next);\n },\n { immediate: true },\n);\n\nconst canDecrease = computed(() => {\n if (props.disabled) {\n return false;\n }\n\n if (props.min === undefined || Number.isNaN(props.min)) {\n return true;\n }\n\n if (Number.isNaN(modelValue.value)) {\n return true;\n }\n\n return modelValue.value > props.min;\n});\n\nconst canIncrease = computed(() => {\n if (props.disabled) {\n return false;\n }\n\n if (props.max === undefined || Number.isNaN(props.max)) {\n return true;\n }\n\n if (Number.isNaN(modelValue.value)) {\n return true;\n }\n\n return modelValue.value < props.max;\n});\n\nconst adjustByStep = (direction: -1 | 1) => {\n if (props.step <= 0) {\n return;\n }\n\n const base = Number.isFinite(modelValue.value)\n ? modelValue.value\n : numberParser.value.parseFromInput(localValue.value);\n\n const nextRaw = Number.isFinite(base) ? base + direction * props.step : 0;\n // Round due to precision issues that can arise when adding steps to certain numbers, e.g. 0.1 + 0.1 + 0.1.\n const rounded = numberParser.value.roundToStep(nextRaw);\n const next = clamp(rounded);\n\n modelValue.value = next;\n localValue.value = numberParser.value.formatForDisplay(next);\n};\n\nconst handleKeydown = (event: KeyboardEvent) => {\n if (props.disabled) {\n return;\n }\n\n if (event.key === \"ArrowUp\" && canIncrease.value) {\n event.preventDefault();\n adjustByStep(1);\n return;\n }\n if (event.key === \"ArrowDown\" && canDecrease.value) {\n event.preventDefault();\n adjustByStep(-1);\n }\n};\n\nconst handleUpdateModelValue = (value: string) => {\n localValue.value = value;\n modelValue.value = numberParser.value.parseFromInput(value);\n};\n\nconst handleBlur = () => {\n isFocused.value = false;\n\n // Normalize, round to step, and clamp only when leaving the field.\n const parsed = numberParser.value.parseFromInput(localValue.value);\n const normalized = clamp(parsed);\n\n modelValue.value = normalized;\n localValue.value = numberParser.value.formatForDisplay(normalized);\n};\n\nconst baseInput = useTemplateRef(\"baseInput\");\n\ndefineExpose<KdsFormFieldExpose>({\n focus: () => baseInput.value?.focus(),\n});\n</script>\n\n<template>\n <BaseFormFieldWrapper v-bind=\"props\">\n <template #default=\"slotProps\">\n <BaseInput\n ref=\"baseInput\"\n v-bind=\"slotProps\"\n :model-value=\"localValue\"\n type=\"text\"\n :inputmode=\"props.step >= 1 ? 'numeric' : 'decimal'\"\n :placeholder=\"props.placeholder\"\n :disabled=\"props.disabled\"\n :error=\"props.error\"\n :autocomplete=\"props.autocomplete\"\n :unit=\"props.unit\"\n role=\"spinbutton\"\n :aria-valuenow=\"ariaValuenow\"\n :aria-valuemin=\"props.min\"\n :aria-valuemax=\"props.max\"\n :aria-valuetext=\"ariaValuetext\"\n @update:model-value=\"handleUpdateModelValue\"\n @keydown=\"handleKeydown\"\n @focus=\"isFocused = true\"\n @blur=\"handleBlur\"\n >\n <template #trailing>\n <KdsButton\n type=\"button\"\n size=\"xsmall\"\n variant=\"outlined\"\n leading-icon=\"minus\"\n :aria-label=\"`Decrease ${props.label ?? props.ariaLabel}`\"\n :disabled=\"!canDecrease\"\n @click=\"adjustByStep(-1)\"\n />\n <KdsButton\n type=\"button\"\n size=\"xsmall\"\n variant=\"outlined\"\n leading-icon=\"plus\"\n :aria-label=\"`Increase ${props.label ?? props.ariaLabel}`\"\n :disabled=\"!canIncrease\"\n @click=\"adjustByStep(1)\"\n />\n </template>\n </BaseInput>\n </template>\n </BaseFormFieldWrapper>\n</template>\n","export type KdsPatternInputOptions = {\n caseSensitive: boolean;\n excludeMatches: boolean;\n useRegex: boolean;\n};\n\nconst escapeRegex = (value: string) =>\n value.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n\nconst wildcardToRegexBody = (pattern: string) => {\n // Convert a simple wildcard pattern to a regex body.\n // - `*` => `.*`\n // - `?` => `.`\n // All other characters are escaped.\n let body = \"\";\n for (const char of pattern) {\n if (char === \"*\") {\n body += \".*\";\n continue;\n }\n\n if (char === \"?\") {\n body += \".\";\n continue;\n }\n\n body += escapeRegex(char);\n }\n\n return body;\n};\n\nconst regexBodyToWildcard = (regexBody: string) => {\n // Best-effort conversion:\n // - `.*` => `*`\n // - `.` => `?`\n // - escaped chars -> literal chars\n // If we encounter other regex constructs, we bail out and return undefined.\n let wildcard = \"\";\n for (let i = 0; i < regexBody.length; i += 1) {\n const char = regexBody[i];\n\n if (char === \"\\\\\") {\n const next = regexBody[i + 1];\n if (next === undefined) {\n return undefined;\n }\n wildcard += next;\n i += 1;\n continue;\n }\n\n if (char === \".\") {\n const next = regexBody[i + 1];\n if (next === \"*\") {\n wildcard += \"*\";\n i += 1;\n continue;\n }\n wildcard += \"?\";\n continue;\n }\n\n if (/[[\\]{}()+^$|]/.test(char)) {\n return undefined;\n }\n\n wildcard += char;\n }\n\n return wildcard;\n};\n\nconst CASE_INSENSITIVE_PREFIX = \"(?i:\";\n\nconst stripOuterGroup = (pattern: string, prefix: string) => {\n const trimmed = pattern.trim();\n if (trimmed.startsWith(prefix) && trimmed.endsWith(\")\")) {\n return trimmed.slice(prefix.length, -1);\n }\n return trimmed;\n};\n\nexport const buildRegexFromPatternInput = (\n input: string,\n options: KdsPatternInputOptions,\n): string => {\n const body = options.useRegex ? input : wildcardToRegexBody(input);\n const grouped = `(?:${body})`;\n const withCase = options.caseSensitive\n ? grouped\n : `${CASE_INSENSITIVE_PREFIX}${grouped})`;\n\n if (!options.excludeMatches) {\n return withCase;\n }\n\n return `^(?!.*${withCase}).*$`;\n};\n\n// Removed buildRegExpFromPatternInput: case sensitivity is encoded via the\n// optional `(?i:...)` wrapper in the pattern string.\n\nconst stripOuterNonCapturingGroup = (pattern: string) =>\n stripOuterGroup(pattern, \"(?:\");\n\nconst stripCaseInsensitiveWrapper = (pattern: string) =>\n stripOuterGroup(pattern, CASE_INSENSITIVE_PREFIX);\n\nconst tryParseExcluded = (regex: string): { excludedInner?: string } => {\n // Matches `^(?!.*<inner>).*$` where <inner> is the pattern we emitted.\n const match = regex.trim().match(/^\\^\\(\\?!\\.\\*([\\s\\S]*)\\)\\.\\*\\$$/);\n if (!match) {\n return {};\n }\n return { excludedInner: match[1] };\n};\n\nexport const parseRegexToPatternInputValue = (\n regex: string,\n options: Pick<KdsPatternInputOptions, \"useRegex\" | \"excludeMatches\"> & {\n caseSensitive?: boolean;\n },\n): string => {\n if (regex === \"\") {\n return \"\";\n }\n\n const { excludedInner } = tryParseExcluded(regex);\n const inner = excludedInner === undefined ? regex : excludedInner;\n\n const withoutCase = options.caseSensitive\n ? inner\n : stripCaseInsensitiveWrapper(inner);\n\n const body = stripOuterNonCapturingGroup(withoutCase);\n\n if (options.useRegex) {\n return body;\n }\n\n const wildcard = regexBodyToWildcard(body);\n return wildcard ?? body;\n};\n","<script setup lang=\"ts\">\nimport { computed, ref, useTemplateRef, watch } from \"vue\";\n\nimport KdsToggleButton from \"../../../buttons/KdsToggleButton/KdsToggleButton.vue\";\nimport BaseFormFieldWrapper from \"../../_helper/BaseFormFieldWrapper.vue\";\nimport type { KdsFormFieldExpose } from \"../../types.ts\";\nimport BaseInput from \"../BaseInput.vue\";\n\nimport {\n buildRegexFromPatternInput,\n parseRegexToPatternInputValue,\n} from \"./patternRegex.ts\";\nimport type { KdsPatternInputProps } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsPatternInputProps>(), {\n disabled: false,\n error: false,\n validating: false,\n preserveSubTextSpace: false,\n});\n\n// Public API: a single regex string (encoded with options when toggles are used).\nconst regex = defineModel<string>({ default: \"\" });\n\n// Internal UI state. This is derived from the regex model on external updates.\nconst uiValue = ref(\"\");\nconst caseSensitive = ref(false);\nconst excludeMatches = ref(false);\nconst useRegex = ref(false);\n\nconst rebuildRegexFromUi = () => {\n regex.value = buildRegexFromPatternInput(uiValue.value, {\n caseSensitive: caseSensitive.value,\n excludeMatches: excludeMatches.value,\n useRegex: useRegex.value,\n });\n};\n\nwatch(\n () => regex.value,\n (newValue) => {\n uiValue.value = parseRegexToPatternInputValue(newValue, {\n useRegex: useRegex.value,\n excludeMatches: excludeMatches.value,\n caseSensitive: caseSensitive.value,\n });\n },\n { immediate: true },\n);\n\nconst caseSensitiveAriaLabel = computed(() =>\n caseSensitive.value ? \"Match case-sensitive\" : \"Match case-insensitive\",\n);\nconst excludeMatchesAriaLabel = computed(() =>\n excludeMatches.value ? \"Exclude matches\" : \"Include matches\",\n);\nconst patternModeAriaLabel = computed(() =>\n useRegex.value ? \"Use regex pattern\" : \"Use wildcard pattern\",\n);\n\nconst baseInput = useTemplateRef(\"baseInput\");\n\ndefineExpose<KdsFormFieldExpose>({\n focus: () => baseInput.value?.focus(),\n});\n</script>\n\n<template>\n <BaseFormFieldWrapper v-bind=\"props\">\n <template #default=\"slotProps\">\n <BaseInput\n ref=\"baseInput\"\n v-bind=\"slotProps\"\n v-model=\"uiValue\"\n type=\"text\"\n :placeholder=\"props.placeholder\"\n :disabled=\"props.disabled\"\n :error=\"props.error\"\n :autocomplete=\"props.autocomplete\"\n leading-icon=\"filter\"\n clearable\n @update:model-value=\"rebuildRegexFromUi\"\n >\n <template #trailing>\n <KdsToggleButton\n v-model=\"caseSensitive\"\n size=\"xsmall\"\n variant=\"outlined\"\n leading-icon=\"case-sensitive\"\n :title=\"caseSensitiveAriaLabel\"\n :aria-label=\"caseSensitiveAriaLabel\"\n :disabled=\"props.disabled\"\n @update:model-value=\"rebuildRegexFromUi\"\n />\n\n <KdsToggleButton\n v-model=\"excludeMatches\"\n size=\"xsmall\"\n variant=\"outlined\"\n leading-icon=\"arrows-order\"\n :title=\"excludeMatchesAriaLabel\"\n :aria-label=\"excludeMatchesAriaLabel\"\n :disabled=\"props.disabled\"\n @update:model-value=\"rebuildRegexFromUi\"\n />\n\n <KdsToggleButton\n v-model=\"useRegex\"\n size=\"xsmall\"\n variant=\"outlined\"\n leading-icon=\"regex\"\n :title=\"patternModeAriaLabel\"\n :aria-label=\"patternModeAriaLabel\"\n :disabled=\"props.disabled\"\n @update:model-value=\"rebuildRegexFromUi\"\n />\n </template>\n </BaseInput>\n </template>\n </BaseFormFieldWrapper>\n</template>\n","<script setup lang=\"ts\">\nimport { useTemplateRef } from \"vue\";\n\nimport BaseFormFieldWrapper from \"../../_helper/BaseFormFieldWrapper.vue\";\nimport type { KdsFormFieldExpose } from \"../../types.ts\";\nimport BaseInput from \"../BaseInput.vue\";\n\nimport type { KdsSearchInputProps } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsSearchInputProps>(), {\n placeholder: \"Search\",\n disabled: false,\n error: false,\n validating: false,\n preserveSubTextSpace: false,\n});\n\nconst modelValue = defineModel<string>({ default: \"\" });\n\nconst emit = defineEmits<{\n /** Native focus event forwarded from the input element. */\n focus: [event: FocusEvent];\n /** Native blur event forwarded from the input element. */\n blur: [event: FocusEvent];\n /** Native keydown event forwarded from the input element. */\n keydown: [event: KeyboardEvent];\n}>();\n\nconst baseInput = useTemplateRef(\"baseInput\");\n\ndefineExpose<KdsFormFieldExpose>({\n focus: () => baseInput.value?.focus(),\n});\n</script>\n\n<template>\n <BaseFormFieldWrapper v-bind=\"props\">\n <template #default=\"slotProps\">\n <BaseInput\n ref=\"baseInput\"\n v-bind=\"slotProps\"\n v-model=\"modelValue\"\n type=\"search\"\n :placeholder=\"props.placeholder\"\n :disabled=\"props.disabled\"\n :error=\"props.error\"\n :autocomplete=\"props.autocomplete\"\n leading-icon=\"search\"\n :clearable=\"true\"\n @focus=\"emit('focus', $event)\"\n @blur=\"emit('blur', $event)\"\n @keydown=\"emit('keydown', $event)\"\n />\n </template>\n </BaseFormFieldWrapper>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, useTemplateRef, watch } from \"vue\";\nimport { useResizeObserver } from \"@vueuse/core\";\n\nimport BaseFormFieldWrapper from \"../../_helper/BaseFormFieldWrapper.vue\";\nimport type { KdsFormFieldExpose } from \"../../types.ts\";\n\nimport type { KdsTextareaProps } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsTextareaProps>(), {\n placeholder: \"\",\n rows: 3,\n disabled: false,\n error: false,\n validating: false,\n preserveSubTextSpace: false,\n});\n\nconst normalizedRows = computed(() => Math.max(1, props.rows));\n\nconst modelValue = defineModel<string>({ default: \"\" });\n\nconst textareaElement = useTemplateRef(\"textareaElement\");\n\nfunction resize() {\n const element = textareaElement.value;\n if (!element) {\n return;\n }\n\n // Reset height so scrollHeight reflects the full content height for shrinking.\n element.style.height = \"auto\";\n\n const scrollHeight = element.scrollHeight;\n const offsetHeight = element.offsetHeight;\n if (scrollHeight <= offsetHeight) {\n return;\n }\n\n element.style.height = `${scrollHeight}px`;\n}\n\nuseResizeObserver(textareaElement, resize);\nwatch(modelValue, resize, { immediate: true });\n\ndefineExpose<KdsFormFieldExpose>({\n focus: () => {\n textareaElement.value?.focus();\n },\n});\n</script>\n\n<template>\n <BaseFormFieldWrapper v-bind=\"props\">\n <template #default=\"slotProps\">\n <textarea\n v-bind=\"slotProps\"\n ref=\"textareaElement\"\n v-model=\"modelValue\"\n :class=\"{ invalid: props.error }\"\n :rows=\"normalizedRows\"\n :placeholder=\"props.placeholder\"\n :disabled=\"props.disabled\"\n :autocomplete=\"props.autocomplete\"\n />\n </template>\n </BaseFormFieldWrapper>\n</template>\n\n<style scoped>\ntextarea {\n box-sizing: border-box;\n width: 100%;\n padding: var(--kds-spacing-container-0-5x);\n overflow: hidden;\n font: var(--kds-font-base-body-small);\n color: var(--kds-color-text-and-icon-neutral);\n resize: none;\n outline: none;\n scrollbar-width: none;\n background: var(--kds-color-background-input-initial);\n border: var(--kds-border-action-input);\n border-radius: var(--kds-border-radius-container-0-37x);\n -ms-overflow-style: none;\n\n &.invalid {\n border: var(--kds-border-action-error);\n }\n\n &::placeholder {\n color: var(--kds-color-text-and-icon-subtle);\n }\n\n &:disabled {\n color: var(--kds-color-text-and-icon-disabled);\n cursor: default;\n border: var(--kds-border-action-disabled);\n border-color: var(--kds-color-border-disabled);\n\n &::placeholder {\n color: var(--kds-color-text-and-icon-disabled);\n }\n }\n\n &:hover:not(:disabled, :focus) {\n background: var(--kds-color-background-input-hover);\n }\n\n &:focus:not(:disabled) {\n outline: var(--kds-border-action-focused);\n outline-offset: var(--kds-spacing-offset-focus);\n }\n}\n\ntextarea::-webkit-scrollbar {\n display: none;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { KdsLiveStatus } from \"../../../../accessories\";\nimport KdsAvatar from \"../../../../accessories/Avatar/KdsAvatar.vue\";\nimport KdsColorSwatch from \"../../../../accessories/ColorSwatch/KdsColorSwatch.vue\";\nimport KdsDataType from \"../../../../accessories/Icon/KdsDataType.vue\";\nimport KdsIcon from \"../../../../accessories/Icon/KdsIcon.vue\";\n\nimport type {\n KdsListItemAccessory,\n KdsListItemAccessorySize,\n} from \"./types.ts\";\n\nconst props = withDefaults(\n defineProps<{\n accessory: KdsListItemAccessory;\n size: KdsListItemAccessorySize;\n disabled?: boolean;\n }>(),\n {\n disabled: false,\n },\n);\n</script>\n\n<template>\n <KdsAvatar\n v-if=\"props.accessory.type === 'avatar'\"\n :title=\"props.accessory.title\"\n :src=\"props.accessory.src\"\n :initials=\"props.accessory.initials\"\n :size=\"props.size\"\n />\n <KdsColorSwatch\n v-else-if=\"props.accessory.type === 'colorSwatch'\"\n :color=\"props.accessory.color\"\n :title=\"props.accessory.title\"\n :size=\"props.size\"\n />\n <KdsIcon\n v-else-if=\"props.accessory.type === 'icon'\"\n :name=\"props.accessory.name\"\n :size=\"props.size\"\n :disabled=\"props.disabled\"\n />\n <KdsDataType\n v-else-if=\"props.accessory.type === 'dataType'\"\n :icon-name=\"props.accessory.name\"\n :size=\"props.size\"\n :disabled=\"props.disabled\"\n />\n <KdsLiveStatus\n v-else-if=\"props.accessory.type === 'liveStatus'\"\n :status=\"props.accessory.status\"\n :title=\"props.accessory.title\"\n :size=\"props.size\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { computed, useId } from \"vue\";\n\nimport KdsIcon from \"../../../accessories/Icon/KdsIcon.vue\";\nimport ListItemAccessory from \"../../_helper/List/ListItemAccessory/ListItemAccessory.vue\";\n\nimport type { BaseDropdownProps } from \"./types\";\n\nconst props = withDefaults(defineProps<BaseDropdownProps>(), {\n text: undefined,\n disabled: false,\n error: false,\n missing: false,\n accessory: undefined,\n\n id: undefined,\n ariaLabelledby: undefined,\n ariaDescribedby: undefined,\n ariaLabel: undefined,\n ariaInvalid: undefined,\n popoverId: undefined,\n});\n\nconst open = defineModel<boolean>(\"open\", { default: false });\n\nconst valueTextId = useId();\n\nconst ariaLabelledby = computed(() => {\n if (props.ariaLabel) {\n return undefined;\n }\n if (!props.ariaLabelledby) {\n return valueTextId;\n }\n return `${props.ariaLabelledby} ${valueTextId}`;\n});\n\nconst effectiveAriaLabel = computed(() => {\n if (!props.ariaLabel) {\n return undefined;\n }\n const displayText = props.text ?? props.placeholder;\n return `${props.ariaLabel}, ${displayText}`;\n});\n\nconst emit = defineEmits<{\n click: [];\n keydown: [event: KeyboardEvent];\n}>();\n\nconst onKeydown = (event: KeyboardEvent) => {\n if (props.disabled) {\n return;\n }\n\n emit(\"keydown\", event);\n\n switch (event.key) {\n case \"ArrowDown\":\n case \"ArrowUp\":\n event.preventDefault();\n if (!open.value) {\n open.value = true;\n }\n break;\n }\n};\n</script>\n\n<template>\n <button\n :id=\"props.id\"\n class=\"kds-dropdown-trigger-button\"\n type=\"button\"\n :aria-expanded=\"open\"\n :aria-labelledby=\"ariaLabelledby\"\n :aria-describedby=\"props.ariaDescribedby\"\n :aria-label=\"effectiveAriaLabel\"\n :aria-invalid=\"props.ariaInvalid\"\n :aria-controls=\"props.popoverId\"\n aria-haspopup=\"dialog\"\n :disabled=\"props.disabled\"\n :class=\"{ error: props.error }\"\n @click=\"!props.disabled && emit('click')\"\n @keydown=\"onKeydown\"\n >\n <span v-if=\"props.accessory\" class=\"leading\" aria-hidden=\"true\">\n <ListItemAccessory :accessory=\"props.accessory\" size=\"medium\" />\n </span>\n\n <span\n :id=\"valueTextId\"\n class=\"text\"\n :class=\"{\n placeholder: !props.text,\n missing: props.missing,\n }\"\n >\n {{ props.text ?? props.placeholder }}\n </span>\n\n <span class=\"trailing\" aria-hidden=\"true\">\n <KdsIcon :name=\"open ? 'chevron-up' : 'chevron-down'\" size=\"small\" />\n </span>\n </button>\n</template>\n\n<style scoped>\n.kds-dropdown-trigger-button {\n display: flex;\n align-items: center;\n width: 100%;\n height: var(--kds-dimension-component-height-1-75x);\n padding: 0 var(--kds-spacing-container-0-25x);\n font: var(--kds-font-base-body-small);\n color: var(--kds-color-text-and-icon-neutral);\n cursor: pointer;\n background: var(--kds-color-background-input-initial);\n border: var(--kds-border-action-input);\n border-radius: var(--kds-border-radius-container-0-37x);\n\n &:focus-visible {\n outline: var(--kds-border-action-focused);\n outline-offset: var(--kds-spacing-offset-focus);\n }\n\n &.error {\n border: var(--kds-border-action-error);\n }\n\n &:disabled {\n color: var(--kds-color-text-and-icon-disabled);\n cursor: default;\n border: var(--kds-border-action-disabled);\n border-color: var(--kds-color-border-disabled);\n }\n\n &:not(:disabled, :focus):hover {\n background: var(--kds-color-background-input-hover);\n }\n}\n\n.leading {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n width: var(--kds-dimension-component-width-1x);\n height: var(--kds-dimension-component-width-1x);\n margin-left: var(--kds-spacing-container-0-12x);\n}\n\n.text {\n flex: 1 0 0;\n min-width: 0;\n padding: var(--kds-spacing-container-0-25x);\n overflow: hidden;\n text-overflow: ellipsis;\n text-align: left;\n white-space: nowrap;\n\n &.placeholder {\n color: var(--kds-color-text-and-icon-subtle);\n }\n\n &.missing {\n color: var(--kds-color-text-and-icon-danger);\n }\n}\n\n.trailing {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n padding-right: var(--kds-spacing-container-0-12x);\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed } from \"vue\";\n\nimport KdsButton from \"../../buttons/KdsButton/KdsButton.vue\";\nimport KdsLinkButton from \"../../buttons/KdsLinkButton/KdsLinkButton.vue\";\n\nimport type { KdsEmptyStateProps } from \"./types\";\n\nconst props = defineProps<KdsEmptyStateProps>();\n\nconst emit = defineEmits<{\n /**\n * Fired when the button is clicked\n *\n * This event is only emitted when the `button` prop is provided.\n */\n buttonClick: [event: MouseEvent];\n}>();\n\nconst isLinkButton = computed(\n () => props.button && \"to\" in props.button && props.button.to !== undefined,\n);\n\nconst buttonComponent = computed(() =>\n isLinkButton.value ? KdsLinkButton : KdsButton,\n);\n</script>\n\n<template>\n <div class=\"kds-empty-state\">\n <p class=\"kds-empty-state-headline\">{{ props.headline }}</p>\n <p v-if=\"props.description\" class=\"kds-empty-state-description\">\n {{ props.description }}\n </p>\n <div v-if=\"props.button\" class=\"kds-empty-state-action\">\n <component\n :is=\"buttonComponent\"\n v-bind=\"props.button\"\n @click=\"emit('buttonClick', $event)\"\n />\n </div>\n </div>\n</template>\n\n<style scoped>\n.kds-empty-state {\n display: flex;\n flex-direction: column;\n gap: var(--kds-spacing-container-0-5x);\n align-items: center;\n max-width: 280px;\n padding: var(--kds-spacing-container-0-5x);\n}\n\n.kds-empty-state-headline {\n margin: 0;\n font: var(--kds-font-base-title-small);\n color: var(--kds-color-text-and-icon-muted);\n text-align: center;\n}\n\n.kds-empty-state-description {\n margin: 0;\n font: var(--kds-font-base-body-small);\n color: var(--kds-color-text-and-icon-muted);\n text-align: center;\n}\n\n.kds-empty-state-action {\n margin-top: var(--kds-spacing-container-0-12x);\n}\n</style>\n","export const kdsListItemAccessorySize = {\n SMALL: \"small\",\n MEDIUM: \"medium\",\n LARGE: \"large\",\n} as const;\n\nexport const kdsListItemAccessorySizes = Object.values(\n kdsListItemAccessorySize,\n);\n","export const kdsListItemVariant = {\n SMALL: \"small\",\n LARGE: \"large\",\n} as const;\n\nexport const kdsListItemVariants = Object.values(kdsListItemVariant);\n","<script setup lang=\"ts\">\nimport { computed, useTemplateRef } from \"vue\";\n\nimport KdsIcon from \"../../../../accessories/Icon/KdsIcon.vue\";\nimport { useKdsIsTruncated } from \"../../../../util\";\nimport ListItemAccessory from \"../ListItemAccessory/ListItemAccessory.vue\";\nimport { kdsListItemAccessorySize } from \"../ListItemAccessory/enums.ts\";\n\nimport { kdsListItemVariant } from \"./enums.ts\";\nimport type { KdsListItemProps } from \"./types.ts\";\n\nconst props = withDefaults(defineProps<KdsListItemProps>(), {\n accessory: undefined,\n subText: undefined,\n variant: kdsListItemVariant.SMALL,\n shortcut: undefined,\n trailingIcon: undefined,\n special: false,\n selected: false,\n active: false,\n missing: false,\n disabled: false,\n});\n\nconst emit = defineEmits<{\n /**\n * Emitted when the list item is clicked.\n */\n click: [event: MouseEvent];\n}>();\n\nconst accessorySize = computed(() =>\n props.variant === kdsListItemVariant.LARGE\n ? kdsListItemAccessorySize.LARGE\n : kdsListItemAccessorySize.SMALL,\n);\n\nconst onClick = (event: MouseEvent) => {\n if (props.disabled) {\n event.stopPropagation();\n event.preventDefault();\n return;\n }\n emit(\"click\", event);\n};\n\nconst labelEl = useTemplateRef(\"labelEl\");\nconst { isTruncated: isLabelTruncated } = useKdsIsTruncated(labelEl);\n\nconst subtextEl = useTemplateRef(\"subtextEl\");\nconst { isTruncated: isSubtextTruncated } = useKdsIsTruncated(subtextEl);\n</script>\n\n<template>\n <div\n :id=\"props.id\"\n role=\"option\"\n :aria-selected=\"props.selected\"\n :aria-disabled=\"props.disabled\"\n :class=\"[\n 'kds-list-item',\n props.variant,\n {\n selected: props.selected,\n active: props.active,\n missing: props.missing,\n disabled: props.disabled,\n },\n ]\"\n @click=\"onClick\"\n >\n <span v-if=\"props.accessory\" class=\"accessory\">\n <ListItemAccessory\n :accessory=\"props.accessory\"\n :size=\"accessorySize\"\n :disabled=\"props.disabled\"\n />\n </span>\n\n <span class=\"content\">\n <span\n ref=\"labelEl\"\n class=\"label\"\n :title=\"isLabelTruncated ? props.label : undefined\"\n >\n <span v-if=\"props.missing\" class=\"prefix\">(Missing)&nbsp;</span>\n <span :class=\"{ special: props.special }\">{{ props.label }}</span>\n </span>\n <span\n v-if=\"props.subText\"\n ref=\"subtextEl\"\n class=\"subtext\"\n :title=\"isSubtextTruncated ? props.subText : undefined\"\n >\n {{ props.subText }}\n </span>\n </span>\n\n <span v-if=\"props.shortcut || props.trailingIcon\" class=\"trailing-item\">\n <span v-if=\"props.shortcut\" class=\"shortcut\">\n {{ props.shortcut }}\n </span>\n\n <KdsIcon\n v-if=\"props.trailingIcon\"\n :name=\"props.trailingIcon\"\n size=\"small\"\n />\n </span>\n </div>\n</template>\n\n<style scoped>\n.kds-list-item {\n position: relative;\n display: flex;\n gap: var(--kds-spacing-container-0-5x);\n align-items: center;\n width: 100%;\n padding: var(--kds-spacing-container-0-25x) var(--kds-spacing-container-0-5x);\n color: var(--kds-color-text-and-icon-neutral);\n cursor: pointer;\n user-select: none;\n background: var(--kds-color-background-neutral-initial);\n border: none;\n border-radius: var(--kds-border-radius-container-0-31x);\n\n &.small {\n gap: var(--kds-spacing-container-0-25x);\n align-items: flex-start;\n padding: var(--kds-spacing-container-0-25x)\n var(--kds-spacing-container-0-5x);\n font: var(--kds-font-base-interactive-small);\n\n .accessory {\n display: flex;\n padding: var(--kds-spacing-container-0-12x) 0;\n }\n }\n\n &.large {\n min-height: var(--kds-dimension-component-height-2-5x);\n font: var(--kds-font-base-interactive-small-strong);\n\n .accessory {\n display: flex;\n align-items: center;\n }\n }\n\n .content {\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n min-width: 0;\n\n .label {\n overflow: hidden;\n text-overflow: ellipsis;\n font: inherit;\n white-space: nowrap;\n\n .prefix {\n flex-shrink: 0;\n }\n\n .special {\n font: var(--kds-font-base-interactive-small-italic);\n }\n }\n\n .subtext {\n display: -webkit-box;\n overflow: hidden;\n -webkit-line-clamp: 2;\n line-clamp: 2;\n font: var(--kds-font-base-subtext-small);\n color: var(--kds-color-text-and-icon-muted);\n -webkit-box-orient: vertical;\n }\n }\n\n .trailing-item {\n display: flex;\n flex-shrink: 0;\n gap: var(--kds-spacing-container-0-12x);\n align-items: center;\n align-self: center;\n justify-content: flex-end;\n\n .shortcut {\n flex-shrink: 0;\n font: var(--kds-font-base-interactive-xsmall-strong);\n color: var(--kds-color-text-and-icon-muted);\n text-align: right;\n white-space: nowrap;\n }\n }\n\n &:hover:not(.disabled),\n &.active:not(.disabled) {\n background: var(--kds-color-background-neutral-hover);\n }\n\n &:active:not(.disabled) {\n background: var(--kds-color-background-neutral-active);\n }\n\n &.selected {\n color: var(--kds-color-text-and-icon-selected);\n background: var(--kds-color-background-selected-initial);\n\n .subtext {\n color: var(--kds-color-text-and-icon-selected);\n }\n\n &:hover,\n &.active {\n background: var(--kds-color-background-selected-hover);\n }\n\n &:active {\n background: var(--kds-color-background-selected-active);\n }\n\n &.disabled {\n background: var(--kds-color-background-selected-initial);\n }\n }\n\n &.missing {\n color: var(--kds-color-text-and-icon-danger);\n background: var(--kds-color-background-danger-initial);\n\n .subtext {\n color: var(--kds-color-text-and-icon-danger);\n }\n\n &:hover,\n &.active {\n background: var(--kds-color-background-danger-hover);\n }\n\n &:active {\n background: var(--kds-color-background-danger-active);\n }\n\n &.disabled {\n background: var(--kds-color-background-danger-initial);\n }\n }\n\n &.disabled {\n color: var(--kds-color-text-and-icon-disabled);\n cursor: default;\n\n .shortcut,\n .subtext {\n color: var(--kds-color-text-and-icon-disabled);\n }\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed, nextTick, ref, useId, useTemplateRef, watch } from \"vue\";\n\nimport KdsEmptyState from \"../../../../layouts/EmptyState/KdsEmptyState.vue\";\nimport { KdsListItem } from \"../KdsListItem\";\n\nimport type { KdsListContainerExpose, KdsListContainerProps } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsListContainerProps>(), {\n emptyText: \"\",\n});\n\nconst emit = defineEmits<{\n /** Emitted when item is clicked */\n itemClick: [id: string];\n}>();\n\nconst idPrefix = useId();\nconst toOptionId = (elementId: string) => elementId.slice(idPrefix.length + 1);\nconst emptyOptionId = `${idPrefix}-empty`;\n\n/** possibleValues with prefixed ids to avoid DOM id collisions */\nconst prefixedValues = computed(() =>\n props.possibleValues.map((o) => ({ ...o, id: `${idPrefix}-${o.id}` })),\n);\n\n/** active item id (prefixed) via keyboard or mouseover */\nconst activeId = ref<string | undefined>(undefined);\n\n/** remembers the last active item so it can be restored on re-focus */\nconst lastActiveId = ref<string | undefined>(undefined);\n\nconst isFocused = ref(false);\n\nconst containerEl = useTemplateRef(\"containerEl\");\n\nfunction scrollToView() {\n if (!activeId.value || !containerEl.value) {\n return;\n }\n containerEl.value\n ?.querySelector(`#${CSS.escape(activeId.value)}`)\n ?.scrollIntoView({ block: \"nearest\" });\n}\n\nconst onMouseLeave = () => {\n if (!isFocused.value) {\n activeId.value = undefined;\n }\n};\n\nconst onMousemove = (event: MouseEvent) => {\n const target = (event.target as HTMLElement)?.closest?.('[role=\"option\"]');\n if (\n target instanceof HTMLElement &&\n target.id &&\n target.getAttribute(\"aria-disabled\") !== \"true\"\n ) {\n activeId.value = target.id;\n }\n};\n\nconst enabledValues = computed(() =>\n prefixedValues.value.filter((o) => !o.disabled),\n);\n\n/** Reset activeId/lastActiveId when possibleValues change and current id no longer exists */\nwatch(enabledValues, (values) => {\n const isValid = (id: string | undefined) =>\n id !== undefined && values.some((o) => o.id === id);\n\n if (activeId.value !== undefined && !isValid(activeId.value)) {\n if (values.length > 0) {\n activeId.value = values[0].id;\n } else {\n // Only point to the empty-state element when the list is truly empty.\n // When items exist but are all disabled, leave activeId undefined to\n // avoid aria-activedescendant referencing a non-existent DOM element.\n activeId.value =\n prefixedValues.value.length === 0 ? emptyOptionId : undefined;\n }\n }\n if (!isValid(lastActiveId.value)) {\n lastActiveId.value = undefined;\n }\n nextTick(scrollToView);\n});\n\nconst findEnabledIndex = (id: string | undefined) =>\n id === undefined ? -1 : enabledValues.value.findIndex((o) => o.id === id);\n\nconst handleFocus = () => {\n isFocused.value = true;\n if (activeId.value === undefined) {\n activeId.value = lastActiveId.value ?? enabledValues.value[0]?.id;\n }\n};\n\nconst handleBlur = () => {\n isFocused.value = false;\n lastActiveId.value = activeId.value;\n activeId.value = undefined;\n};\n\nconst handleKeydown = (event: KeyboardEvent) => {\n if (enabledValues.value.length === 0) {\n return;\n }\n\n const currentIndex = findEnabledIndex(activeId.value);\n\n switch (event.key) {\n case \"ArrowDown\": {\n const nextIndex =\n currentIndex < 0 || currentIndex >= enabledValues.value.length - 1\n ? 0\n : currentIndex + 1;\n activeId.value = enabledValues.value[nextIndex].id;\n scrollToView();\n event.preventDefault();\n break;\n }\n case \"ArrowUp\": {\n const nextIndex =\n currentIndex <= 0 ? enabledValues.value.length - 1 : currentIndex - 1;\n activeId.value = enabledValues.value[nextIndex].id;\n scrollToView();\n event.preventDefault();\n break;\n }\n case \"Enter\":\n if (activeId.value) {\n emit(\"itemClick\", toOptionId(activeId.value));\n event.preventDefault();\n }\n break;\n case \" \":\n if (\n event.target instanceof HTMLElement &&\n [\"INPUT\", \"TEXTAREA\", \"SELECT\"].includes(event.target.tagName)\n ) {\n break;\n }\n if (activeId.value) {\n emit(\"itemClick\", toOptionId(activeId.value));\n event.preventDefault();\n }\n break;\n case \"Home\":\n activeId.value = enabledValues.value[0].id;\n scrollToView();\n event.preventDefault();\n break;\n case \"End\":\n activeId.value = enabledValues.value[enabledValues.value.length - 1].id;\n scrollToView();\n event.preventDefault();\n break;\n default:\n break;\n }\n};\n\ndefineExpose<KdsListContainerExpose>({\n /** Forward a keydown event to the list for keyboard navigation */\n handleKeydown,\n /** Notify the list that its controlling element received focus */\n handleFocus,\n /** Notify the list that its controlling element lost focus */\n handleBlur,\n activeDescendant: activeId,\n});\n</script>\n\n<template>\n <div\n ref=\"containerEl\"\n role=\"listbox\"\n :aria-label=\"props.ariaLabel\"\n :aria-activedescendant=\"\n !props.controlledExternally && activeId ? activeId : undefined\n \"\n class=\"kds-list-container\"\n :tabindex=\"props.controlledExternally ? undefined : 0\"\n v-on=\"\n props.controlledExternally\n ? { mousemove: onMousemove, mouseleave: onMouseLeave }\n : {\n keydown: handleKeydown,\n focus: handleFocus,\n blur: handleBlur,\n mousemove: onMousemove,\n mouseleave: onMouseLeave,\n }\n \"\n >\n <KdsListItem\n v-for=\"item in prefixedValues\"\n :id=\"item.id\"\n :key=\"item.id\"\n :accessory=\"item.accessory\"\n :label=\"item.text\"\n :sub-text=\"item.subText\"\n :selected=\"item.selected\"\n :disabled=\"item.disabled\"\n :active=\"activeId === item.id\"\n :special=\"item.special\"\n :missing=\"item.missing\"\n :trailing-icon=\"item.selected ? 'checkmark' : undefined\"\n @mousedown=\"props.controlledExternally && $event.preventDefault()\"\n @click.stop=\"emit('itemClick', toOptionId(item.id))\"\n />\n <div\n v-if=\"prefixedValues.length === 0\"\n :id=\"emptyOptionId\"\n role=\"option\"\n aria-disabled=\"true\"\n :aria-selected=\"undefined\"\n class=\"kds-list-container-empty\"\n >\n <KdsEmptyState :headline=\"props.emptyText\" />\n </div>\n </div>\n</template>\n\n<style scoped>\n.kds-list-container {\n display: flex;\n flex-direction: column;\n padding: var(--kds-spacing-container-0-25x);\n overflow-y: auto;\n\n &:focus-visible {\n outline: var(--kds-border-action-focused);\n outline-offset: var(--kds-spacing-offset-focus);\n border-radius: var(--kds-border-radius-container-0-31x);\n }\n}\n\n.kds-list-container-empty {\n display: flex;\n justify-content: center;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed, ref, useTemplateRef } from \"vue\";\n\nimport { KdsListContainer } from \"../../_helper/List/ListContainer\";\nimport type { KdsListOption } from \"../../_helper/List/ListContainer\";\nimport BaseInput from \"../../inputs/BaseInput.vue\";\n\nimport type {\n DropdownContainerProps,\n DropdownOptionWithMissing,\n} from \"./types\";\n\nconst props = defineProps<DropdownContainerProps>();\n\nconst modelValue = defineModel<string | null>({ default: null });\n\nconst searchValue = ref(\"\");\n\nconst searchEl = useTemplateRef(\"searchEl\");\nconst listContainerRef = useTemplateRef(\"listContainer\");\n\nconst optionsWithSyntheticMissing = computed<DropdownOptionWithMissing[]>(\n () => {\n if (modelValue.value === null) {\n return props.possibleValues;\n }\n\n const hasSelected = props.possibleValues.some(\n (o) => o.id === modelValue.value,\n );\n if (hasSelected) {\n return props.possibleValues;\n }\n\n return [\n {\n id: modelValue.value,\n text: modelValue.value,\n missing: true,\n },\n ...props.possibleValues,\n ];\n },\n);\n\nconst filteredOptions = computed(() => {\n const normalizedQuery = searchValue.value.trim().toLowerCase();\n\n const base = optionsWithSyntheticMissing.value;\n if (normalizedQuery.length === 0) {\n return base;\n }\n\n return base.filter((option) =>\n option.text.toLowerCase().includes(normalizedQuery),\n );\n});\n\nconst listOptions = computed<KdsListOption[]>(() =>\n filteredOptions.value.map((option) => ({\n id: option.id,\n text: option.text,\n subText: option.subText,\n accessory: option.accessory,\n disabled: option.disabled || option.missing,\n selected: option.id === modelValue.value,\n special: option.special,\n missing: option.missing,\n })),\n);\n\nconst hasMultiline = computed(() =>\n props.possibleValues.some((o) => o.subText !== undefined),\n);\n\ndefineExpose({\n focus: () => searchEl.value?.focus(),\n});\n</script>\n\n<template>\n <div class=\"kds-dropdown-container\">\n <div class=\"kds-dropdown-container-sticky-top\">\n <BaseInput\n ref=\"searchEl\"\n v-model=\"searchValue\"\n type=\"search\"\n placeholder=\"Search\"\n :aria-label=\"'Filter options'\"\n :aria-activedescendant=\"listContainerRef?.activeDescendant\"\n leading-icon=\"search\"\n :clearable=\"true\"\n @keydown=\"listContainerRef?.handleKeydown($event)\"\n @focus=\"listContainerRef?.handleFocus()\"\n @blur=\"listContainerRef?.handleBlur()\"\n />\n </div>\n\n <KdsListContainer\n ref=\"listContainer\"\n class=\"kds-dropdown-container-list\"\n :class=\"{ multiline: hasMultiline }\"\n :possible-values=\"listOptions\"\n :empty-text=\"props.emptyText\"\n controlled-externally\n aria-label=\"Dropdown options\"\n @item-click=\"modelValue = $event\"\n />\n </div>\n</template>\n\n<style scoped>\n.kds-dropdown-container {\n display: flex;\n flex-direction: column;\n background-color: var(--kds-color-surface-default);\n border-radius: var(--kds-border-radius-container-0-50x);\n box-shadow: var(--kds-elevation-level-3);\n}\n\n.kds-dropdown-container-sticky-top {\n padding: var(--kds-spacing-container-0-25x);\n background-color: var(--kds-color-surface-default);\n border-bottom: var(--kds-border-base-subtle);\n}\n\n.kds-dropdown-container-list {\n max-height: var(--kds-dimension-component-height-12x);\n\n &.multiline {\n max-height: var(--kds-dimension-component-height-20x);\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport {\n computed,\n nextTick,\n ref,\n useTemplateRef,\n watch,\n watchEffect,\n} from \"vue\";\n\nimport KdsPopover from \"../../../overlays/Popover/KdsPopover.vue\";\nimport BaseFormFieldWrapper from \"../../_helper/BaseFormFieldWrapper.vue\";\n\nimport BaseDropdown from \"./BaseDropdown.vue\";\nimport DropdownContainer from \"./DropdownContainer.vue\";\nimport type { KdsDropdownProps } from \"./types.ts\";\n\nconst props = withDefaults(defineProps<KdsDropdownProps>(), {\n placeholder: \"Select\",\n disabled: false,\n error: false,\n validating: false,\n preserveSubTextSpace: false,\n});\n\nconst modelValue = defineModel<string | null>({ default: null });\n\nconst open = ref(false);\nconst popoverEl = useTemplateRef(\"popoverEl\");\nconst dropdownContainerEl = useTemplateRef(\"dropdownContainerEl\");\n\nconst selectedOption = computed(() =>\n props.possibleValues.find((o) => o.id === modelValue.value),\n);\n\n/** Focus search field on opening of dropdown */\nwatchEffect(() => {\n if (open.value) {\n nextTick(() => dropdownContainerEl.value?.focus());\n }\n});\n\n/** Close dropdown on value selection */\nwatch(modelValue, () => {\n if (open.value) {\n open.value = false;\n }\n});\n</script>\n\n<template>\n <BaseFormFieldWrapper\n :id=\"props.id\"\n :label=\"props.label\"\n :aria-label=\"props.ariaLabel\"\n :description=\"props.description\"\n :sub-text=\"props.subText\"\n :error=\"props.error\"\n :validating=\"props.validating\"\n :preserve-sub-text-space=\"props.preserveSubTextSpace\"\n >\n <template #default=\"slotProps\">\n <BaseDropdown\n v-bind=\"slotProps\"\n v-model:open=\"open\"\n :text=\"\n modelValue !== null && !selectedOption\n ? `(Missing) ${modelValue}`\n : selectedOption?.text\n \"\n :placeholder=\"props.placeholder\"\n :disabled=\"props.disabled\"\n :error=\"props.error\"\n :missing=\"modelValue !== null && !selectedOption\"\n :accessory=\"selectedOption?.accessory\"\n :style=\"popoverEl?.anchorStyle\"\n :popover-id=\"popoverEl?.popoverId\"\n @click=\"open = !open\"\n />\n\n <KdsPopover\n ref=\"popoverEl\"\n v-model=\"open\"\n placement=\"bottom-left\"\n role=\"dialog\"\n full-width\n popover-aria-label=\"Searchable dropdown options\"\n >\n <DropdownContainer\n ref=\"dropdownContainerEl\"\n v-model=\"modelValue\"\n :possible-values=\"props.possibleValues\"\n empty-text=\"No entries found\"\n />\n </KdsPopover>\n </template>\n </BaseFormFieldWrapper>\n</template>\n","<script setup lang=\"ts\">\n/**\n * @slot default - Custom content for the popover. When provided, overrides the `content` prop.\n */\n\nconst props = defineProps<{\n /**\n * Content to display inside the info popover. Used when no default slot is provided.\n */\n content?: string;\n}>();\n</script>\n\n<template>\n <div class=\"kds-info-popover-content\">\n <slot>{{ props.content }}</slot>\n </div>\n</template>\n\n<style scoped>\n.kds-info-popover-content {\n max-width: var(--kds-dimension-component-width-25x);\n padding: var(--kds-spacing-container-0-75x);\n font: var(--kds-font-base-body-small);\n color: var(--kds-color-text-and-icon-neutral);\n background-color: var(--kds-color-surface-default);\n border-radius: var(--kds-border-radius-container-0-37x);\n box-shadow: var(--kds-elevation-level-3);\n}\n</style>\n","<script setup lang=\"ts\">\nimport { ref, useTemplateRef } from \"vue\";\n\nimport KdsIcon from \"../../../accessories/Icon/KdsIcon.vue\";\nimport KdsPopover from \"../../../overlays/Popover/KdsPopover.vue\";\n\nimport InfoPopover from \"./InfoPopover.vue\";\nimport type { KdsInfoToggleButtonProps } from \"./types\";\n\n/**\n * @slot default - Custom content for the popover. When provided, overrides the `content` prop.\n */\n\nconst props = withDefaults(defineProps<KdsInfoToggleButtonProps>(), {\n hidden: false,\n});\n\nconst TITLE = \"Click for more information\";\n\nconst modelValue = defineModel<boolean>({ default: false });\nconst popoverEl = useTemplateRef(\"popoverEl\");\nconst isHovered = ref(false);\nconst isFocused = ref(false);\n</script>\n\n<template>\n <button\n v-bind=\"$attrs\"\n :class=\"{\n 'info-toggle-button': true,\n selected: modelValue,\n hidden: props.hidden && !modelValue && !isHovered && !isFocused,\n }\"\n :title=\"TITLE\"\n :aria-label=\"TITLE\"\n :aria-pressed=\"modelValue\"\n :aria-expanded=\"modelValue\"\n :aria-controls=\"popoverEl?.popoverId\"\n aria-haspopup=\"dialog\"\n :style=\"popoverEl?.anchorStyle\"\n type=\"button\"\n @click=\"modelValue = !modelValue\"\n @mouseenter=\"isHovered = true\"\n @mouseleave=\"isHovered = false\"\n @focus=\"isFocused = true\"\n @blur=\"isFocused = false\"\n >\n <KdsIcon name=\"circle-question\" size=\"small\" />\n </button>\n\n <KdsPopover\n ref=\"popoverEl\"\n v-model=\"modelValue\"\n placement=\"top-right\"\n popover-aria-label=\"Description\"\n >\n <InfoPopover :content=\"props.content\">\n <slot />\n </InfoPopover>\n </KdsPopover>\n</template>\n\n<style scoped>\n.info-toggle-button {\n --bg-initial: transparent;\n --bg-hover: var(--kds-color-background-neutral-hover);\n --bg-active: var(--kds-color-background-neutral-active);\n --border: var(--kds-border-action-transparent);\n --icon-color: var(--kds-color-text-and-icon-neutral);\n\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: var(--kds-dimension-component-width-1x);\n height: var(--kds-dimension-component-height-1x);\n padding: 0;\n color: var(--icon-color);\n cursor: pointer;\n background-color: var(--bg-initial);\n border: var(--border);\n border-radius: var(--kds-border-radius-container-0-12x);\n opacity: 1;\n\n &.hidden {\n opacity: 0;\n }\n\n &:focus-visible {\n outline: var(--kds-border-action-focused);\n outline-offset: var(--kds-spacing-offset-focus);\n }\n\n &:hover {\n background-color: var(--bg-hover);\n }\n\n &:active {\n background-color: var(--bg-active);\n }\n\n &.selected {\n --bg-initial: var(--kds-color-background-selected-initial);\n --bg-hover: var(--kds-color-background-selected-hover);\n --bg-active: var(--kds-color-background-selected-active);\n --border: var(--kds-border-action-selected);\n --icon-color: var(--kds-color-text-and-icon-selected);\n }\n}\n</style>\n","<script setup lang=\"ts\">\n/**\n * @slot default - Custom content for the popover. When provided, overrides the built-in placeholder layout and the `content` prop.\n */\nconst props = defineProps<{\n /**\n * Content to display inside the info popover. Used when no default slot is provided.\n */\n content?: string;\n}>();\n</script>\n\n<template>\n <div class=\"kds-variable-popover\">\n <slot>{{ props.content }}</slot>\n </div>\n</template>\n\n<style scoped>\n.kds-variable-popover {\n width: var(--kds-dimension-component-width-25x);\n max-width: 100%;\n padding: var(--kds-spacing-container-0-75x);\n font: var(--kds-font-base-body-small);\n color: var(--kds-color-text-and-icon-neutral);\n white-space: pre-wrap;\n background-color: var(--kds-color-surface-default);\n border-radius: var(--kds-border-radius-container-0-37x);\n box-shadow: var(--kds-elevation-level-3);\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed, ref, useTemplateRef } from \"vue\";\n\nimport KdsIcon from \"../../../accessories/Icon/KdsIcon.vue\";\nimport KdsPopover from \"../../../overlays/Popover/KdsPopover.vue\";\n\nimport VariablePopover from \"./VariablePopover.vue\";\nimport type { KdsVariableToggleButtonProps } from \"./types.ts\";\n\n/**\n * @slot default - Custom content for the popover. When provided, overrides the `content` prop.\n */\n\nconst props = withDefaults(defineProps<KdsVariableToggleButtonProps>(), {\n inSet: false,\n outSet: false,\n error: false,\n hidden: false,\n});\n\nconst modelValue = defineModel<boolean>({ default: false });\nconst popoverEl = useTemplateRef(\"popoverEl\");\nconst isHovered = ref(false);\nconst isFocused = ref(false);\n\nconst iconState = computed(() => {\n if (props.inSet && props.outSet) {\n return \"in-out\" as const;\n }\n\n if (props.inSet) {\n return \"in\" as const;\n }\n\n if (props.outSet) {\n return \"out\" as const;\n }\n\n return \"none\" as const;\n});\n\nconst iconName = computed(() => {\n switch (iconState.value) {\n case \"in\":\n return \"flow-variable-in\";\n case \"out\":\n return \"flow-variable-out\";\n case \"in-out\":\n return \"flow-variable-in-out\";\n case \"none\":\n default:\n return \"flow-variable-default\";\n }\n});\n\nconst baseTitleByState: Record<typeof iconState.value, string> = {\n in: \"Input Flow Variable\",\n out: \"Output Flow Variable\",\n \"in-out\": \"Input and Output Flow Variable\",\n none: \"No Flow Variable set\",\n};\n\nconst errorTitleByState: Partial<Record<typeof iconState.value, string>> = {\n in: \"Error in input Flow Variable\",\n out: \"Error in output Flow Variable\",\n \"in-out\": \"Error in Flow Variables\",\n};\n\nconst title = computed(() => {\n const baseTitle = baseTitleByState[iconState.value];\n if (!props.error) {\n return baseTitle;\n }\n return errorTitleByState[iconState.value] ?? baseTitle;\n});\n</script>\n\n<template>\n <button\n v-bind=\"$attrs\"\n :class=\"{\n 'variable-toggle-button': true,\n error: props.error,\n 'pressed-or-set': modelValue || props.inSet || props.outSet,\n hidden: props.hidden && !modelValue && !isHovered && !isFocused,\n }\"\n :title=\"title\"\n :aria-label=\"title\"\n :aria-pressed=\"modelValue\"\n :aria-expanded=\"modelValue\"\n :aria-controls=\"popoverEl?.popoverId\"\n aria-haspopup=\"dialog\"\n :style=\"popoverEl?.anchorStyle\"\n type=\"button\"\n @click=\"modelValue = !modelValue\"\n @mouseenter=\"isHovered = true\"\n @mouseleave=\"isHovered = false\"\n @focus=\"isFocused = true\"\n @blur=\"isFocused = false\"\n >\n <KdsIcon :name=\"iconName\" size=\"small\" />\n </button>\n\n <KdsPopover\n ref=\"popoverEl\"\n v-model=\"modelValue\"\n placement=\"bottom-right\"\n popover-aria-label=\"Flow Variable settings\"\n >\n <VariablePopover :content=\"props.content\">\n <slot />\n </VariablePopover>\n </KdsPopover>\n</template>\n\n<style scoped>\n.variable-toggle-button {\n --bg-initial: var(--kds-color-background-neutral-initial);\n --bg-hover: var(--kds-color-background-neutral-hover);\n --bg-active: var(--kds-color-background-neutral-active);\n --border: var(--kds-border-action-transparent);\n --icon-color: var(--kds-color-text-and-icon-neutral);\n\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: var(--kds-dimension-component-width-1x);\n height: var(--kds-dimension-component-height-1x);\n padding: 0;\n color: var(--icon-color);\n cursor: pointer;\n background-color: var(--bg-initial);\n border: var(--border);\n border-radius: var(--kds-border-radius-container-0-12x);\n opacity: 1;\n\n &.hidden {\n opacity: 0;\n }\n\n &:focus-visible {\n outline: var(--kds-border-action-focused);\n outline-offset: var(--kds-spacing-offset-focus);\n }\n\n &:hover {\n background-color: var(--bg-hover);\n }\n\n &:active {\n background-color: var(--bg-active);\n }\n\n &.pressed-or-set {\n --bg-initial: var(--kds-color-background-selected-initial);\n --bg-hover: var(--kds-color-background-selected-hover);\n --bg-active: var(--kds-color-background-selected-active);\n --border: var(--kds-border-action-selected);\n --icon-color: var(--kds-color-text-and-icon-success);\n }\n\n &.error {\n --bg-initial: var(--kds-color-background-danger-initial);\n --bg-hover: var(--kds-color-background-danger-hover);\n --bg-active: var(--kds-color-background-danger-active);\n --border: var(--kds-border-action-error);\n --icon-color: var(--kds-color-text-and-icon-danger);\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed } from \"vue\";\n\nimport type { KdsCardProps } from \"./types\";\n\nconst {\n variant = \"filled\",\n selectable = false,\n disabled = false,\n ariaLabel,\n ariaLabelledby,\n} = defineProps<KdsCardProps>();\n\n/**\n * Controls the selected state of the card when `selectable` is true.\n * When `selectable` is false, this model is ignored.\n */\nconst modelValue = defineModel<boolean>({ default: false });\n\nconst emit = defineEmits<{\n /**\n * Fired when the card is clicked.\n *\n * This event is only emitted when `selectable` is false.\n * Clicks while `selectable` is true toggle the card.\n */\n click: [event: MouseEvent];\n}>();\n\nconst selected = computed(() => modelValue.value && selectable);\n\nconst handleClick = (event: MouseEvent) => {\n if (selectable) {\n modelValue.value = !modelValue.value;\n } else {\n emit(\"click\", event);\n }\n};\n</script>\n\n<template>\n <button\n type=\"button\"\n class=\"kds-card\"\n :class=\"[`variant-${variant}`, { selected: selected }]\"\n :aria-label=\"ariaLabel\"\n :aria-labelledby=\"ariaLabelledby\"\n :aria-pressed=\"selectable ? modelValue : undefined\"\n :disabled=\"disabled\"\n @click=\"handleClick\"\n >\n <slot />\n </button>\n</template>\n\n<style scoped>\n.kds-card {\n position: relative;\n display: flex;\n flex-direction: column;\n width: 100%;\n padding: 0;\n font: inherit;\n color: inherit;\n text-align: start;\n cursor: pointer;\n outline: none;\n border-style: solid;\n border-radius: var(--kds-border-radius-container-0-50x);\n transition:\n background-color 0.2s,\n border-color 0.2s,\n box-shadow 0.2s;\n\n &:focus-visible {\n outline: var(--kds-border-action-focused);\n outline-offset: var(--kds-spacing-offset-focus);\n border-radius: var(--kds-border-radius-container-0-56x);\n }\n\n &:disabled {\n cursor: default;\n }\n}\n\n/* Variant: Filled, Value: False */\n.variant-filled {\n background: var(--kds-color-surface-default);\n border: var(--kds-border-base-subtle);\n\n &:hover:not(:disabled) {\n box-shadow: var(--kds-elevation-level-3);\n }\n\n &:active:not(:disabled) {\n background: var(--kds-color-background-neutral-active);\n box-shadow: var(--kds-elevation-level-1);\n }\n}\n\n/* Variant: Outlined, Value: False */\n.variant-outlined {\n background: var(--kds-color-background-neutral-initial);\n border: var(--kds-border-base-muted);\n\n &:hover:not(:disabled) {\n box-shadow: var(--kds-elevation-level-3);\n }\n\n &:active:not(:disabled) {\n background: var(--kds-color-background-neutral-active);\n box-shadow: var(--kds-elevation-level-1);\n }\n}\n\n/* Variant: Transparent, Value: False */\n.variant-transparent {\n background: var(--kds-color-background-neutral-initial);\n border: var(--kds-border-action-transparent);\n\n &:hover:not(:disabled) {\n background: var(--kds-color-background-neutral-hover);\n box-shadow: var(--kds-elevation-level-3);\n }\n\n &:active:not(:disabled) {\n background: var(--kds-color-background-neutral-active);\n box-shadow: var(--kds-elevation-level-1);\n }\n}\n\n/* Variant: Filled, Value: True */\n.variant-filled.selected {\n background: var(--kds-color-background-selected-initial);\n border: var(--kds-border-action-selected);\n\n &:hover:not(:disabled) {\n box-shadow: var(--kds-elevation-level-3);\n }\n\n &:active:not(:disabled) {\n background: var(--kds-color-background-selected-active);\n box-shadow: var(--kds-elevation-level-1);\n }\n}\n\n/* Variant: Outlined, Value: True */\n.variant-outlined.selected {\n background: var(--kds-color-background-selected-initial);\n border: var(--kds-border-action-selected);\n\n &:hover:not(:disabled) {\n box-shadow: var(--kds-elevation-level-3);\n }\n\n &:active:not(:disabled) {\n background: var(--kds-color-background-selected-active);\n box-shadow: var(--kds-elevation-level-1);\n }\n}\n\n/* Variant: Transparent, Value: True */\n.variant-transparent.selected {\n background: var(--kds-color-background-selected-initial);\n border: var(--kds-border-action-selected);\n\n &:hover:not(:disabled) {\n background: var(--kds-color-background-selected-initial);\n box-shadow: var(--kds-elevation-level-3);\n }\n\n &:active:not(:disabled) {\n background: var(--kds-color-background-selected-active);\n box-shadow: var(--kds-elevation-level-1);\n }\n}\n</style>\n","export const kdsCardVariant = {\n FILLED: \"filled\",\n OUTLINED: \"outlined\",\n TRANSPARENT: \"transparent\",\n} as const;\n\nexport const kdsCardVariants = Object.values(kdsCardVariant);\n","export type UnwrappedPromise<T = unknown> = {\n resolve: (value: T | PromiseLike<T>) => void;\n reject: (reason?: unknown) => void;\n promise: Promise<T>;\n};\n\nexport const createUnwrappedPromise = <T>(): UnwrappedPromise<T> => {\n let resolve: (value: T | PromiseLike<T>) => void = () => {};\n let reject: (reason?: unknown) => void = () => {};\n\n const promise = new Promise<T>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n\n return { resolve, reject, promise };\n};\n","/**\n * Returns promise that resolves after ms.\n */\nexport default function sleep(ms: number) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n","export const kdsModalClosedBy = {\n ANY: \"any\",\n CLOSEREQUEST: \"closerequest\",\n NONE: \"none\",\n} as const;\n\nexport const kdsModalClosedByOptions = Object.values(kdsModalClosedBy);\n\nexport const kdsModalWidth = {\n SMALL: \"small\",\n MEDIUM: \"medium\",\n LARGE: \"large\",\n XLARGE: \"xlarge\",\n FULL: \"full\",\n} as const;\n\nexport const kdsModalWidthSizes = Object.values(kdsModalWidth);\n\nexport const kdsModalHeight = {\n AUTO: \"auto\",\n FULL: \"full\",\n} as const;\n\nexport const kdsModalHeightSizes = Object.values(kdsModalHeight);\n\nexport const kdsModalVariant = {\n PADDED: \"padded\",\n PLAIN: \"plain\",\n} as const;\n\nexport const kdsModalVariants = Object.values(kdsModalVariant);\n\nexport const kdsModalLayoutPropsDefault = {\n title: \"\",\n variant: kdsModalVariant.PADDED,\n overflow: \"auto\",\n icon: undefined,\n} as const;\n\nexport const kdsModalPropsDefault = {\n active: false,\n height: kdsModalHeight.AUTO,\n width: kdsModalWidth.MEDIUM,\n closedby: kdsModalClosedBy.CLOSEREQUEST,\n ...kdsModalLayoutPropsDefault,\n} as const;\n","<script setup lang=\"ts\">\nimport KdsIcon from \"../../accessories/Icon/KdsIcon.vue\";\nimport KdsButton from \"../../buttons/KdsButton/KdsButton.vue\";\n\nimport { kdsModalLayoutPropsDefault } from \"./enums\";\nimport type { KdsModalLayoutProps } from \"./types\";\n\nconst props = withDefaults(\n defineProps<KdsModalLayoutProps>(),\n kdsModalLayoutPropsDefault,\n);\ndefineOptions({ inheritAttrs: false });\n</script>\n\n<template>\n <header class=\"modal-header\">\n <KdsIcon v-if=\"props.icon\" :name=\"props.icon\" size=\"medium\" />\n <div class=\"modal-header-title\">{{ props.title }}</div>\n <KdsButton\n leading-icon=\"x-close\"\n variant=\"transparent\"\n size=\"medium\"\n title=\"Close\"\n @click=\"props.onClose\"\n />\n </header>\n\n <div class=\"modal-body\" :data-variant=\"variant\">\n <slot name=\"body\" />\n </div>\n\n <footer v-if=\"$slots.footer\" class=\"modal-footer\">\n <slot name=\"footer\" />\n </footer>\n</template>\n\n<style scoped>\n.modal-header {\n display: flex;\n gap: var(--kds-spacing-container-0-5x);\n align-items: center;\n padding: var(--kds-spacing-container-0-5x) var(--kds-spacing-container-0-5x)\n var(--kds-spacing-container-0-5x) var(--kds-spacing-container-1-5x);\n font: var(--kds-font-base-title-medium-strong);\n color: var(--kds-color-text-and-icon-neutral);\n\n & .modal-header-title {\n flex: 1 1 auto;\n }\n}\n\n.modal-body {\n --modal-padding-left: var(--kds-spacing-container-1-5x);\n --modal-padding-right: var(--kds-spacing-container-1-5x);\n --modal-padding-top: var(--kds-spacing-container-0-5x);\n --modal-padding-bottom: var(--kds-spacing-container-1x);\n --modal-gap: var(--kds-spacing-container-1x);\n\n display: flex;\n flex-grow: 1;\n flex-direction: column;\n overflow: v-bind(overflow);\n font: var(--kds-font-base-body-small);\n color: var(--kds-color-text-and-icon-neutral);\n\n &[data-variant=\"padded\"] {\n gap: var(--modal-gap);\n padding: var(--modal-padding-top) var(--modal-padding-right)\n var(--modal-padding-bottom) var(--modal-padding-left);\n }\n}\n\n.modal-footer {\n display: flex;\n gap: var(--kds-spacing-container-0-5x);\n justify-content: right;\n padding: var(--kds-spacing-container-1x) var(--kds-spacing-container-1-5x);\n}\n</style>\n","<script setup lang=\"ts\">\nimport { nextTick, ref, useTemplateRef, watch } from \"vue\";\n\nimport { sleep } from \"@knime/utils\";\n\nimport KdsModalLayout from \"./KdsModalLayout.vue\";\nimport { kdsModalPropsDefault } from \"./enums\";\nimport type { KdsModalProps } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsModalProps>(), kdsModalPropsDefault);\n\nconst emit = defineEmits<{\n /** request to close of the dialog */\n close: [event?: Event];\n /** the dialog is closed (different to the active state due to possible animations) */\n closed: [];\n}>();\n\nconst dialog = useTemplateRef(\"dialogElement\");\n\nconst onClose = (event?: Event) => {\n emit(\"close\", event);\n};\n\nwatch(\n () => props.active,\n async (active) => {\n if (active) {\n await nextTick();\n dialog.value?.showModal();\n } else {\n dialog.value?.close();\n }\n },\n { immediate: true },\n);\n\nconst renderDialog = ref(props.active);\n\nconst removeDialog = () => {\n if (!renderDialog.value) {\n return;\n }\n renderDialog.value = false;\n emit(\"closed\");\n};\n\nwatch(\n () => props.active,\n async (value, lastValue) => {\n // on close wait until the animation has run\n if (value === false && lastValue === true) {\n if (dialog.value) {\n Promise.all(\n dialog.value\n .getAnimations({ subtree: true })\n .map((animation) => animation.finished),\n ).then(removeDialog);\n // eslint-disable-next-line no-magic-numbers\n await sleep(350);\n // fallback in case animations fail or dont resolve\n removeDialog();\n } else {\n // fallback if dialog element ref is not accessible\n removeDialog();\n }\n } else {\n renderDialog.value = value;\n }\n },\n);\n</script>\n\n<template>\n <dialog\n v-if=\"renderDialog\"\n ref=\"dialogElement\"\n :class=\"[\n 'kds-modal',\n `width-${width}`,\n `height-${height}`,\n `overflow-${overflow}`,\n ]\"\n :closedby=\"closedby\"\n @cancel.prevent=\"onClose\"\n >\n <slot\n :title=\"title\"\n :icon=\"icon\"\n :variant=\"variant\"\n :overflow=\"overflow\"\n :on-close=\"onClose\"\n >\n <KdsModalLayout\n :title=\"title\"\n :icon=\"icon\"\n :variant=\"variant\"\n :overflow=\"overflow\"\n @close=\"onClose\"\n >\n <template #body>\n <slot name=\"body\" />\n </template>\n\n <template #footer>\n <slot name=\"footer\" />\n </template>\n </KdsModalLayout>\n </slot>\n </dialog>\n</template>\n\n<style>\n/** see: https://github.com/whatwg/html/issues/7732 */\nbody:has(dialog.modal[open]) {\n overflow: hidden;\n}\n</style>\n\n<style scoped>\n.kds-modal {\n /* rule is broken it complains about local variables for no reason */\n /* stylelint-disable csstools/value-no-unknown-custom-properties */\n --modal-full-size: 95%;\n --modal-backdrop-animation-time: 125ms;\n\n &.width-small {\n --modal-width: var(--kds-dimension-component-width-25x);\n --modal-animation-time: 100ms;\n --modal-scale-base: 0.85;\n }\n\n &.width-medium {\n --modal-width: var(--kds-dimension-component-width-32x);\n --modal-animation-time: 140ms;\n --modal-scale-base: 0.88;\n }\n\n &.width-large {\n --modal-width: var(--kds-dimension-component-width-45x);\n --modal-animation-time: 210ms;\n --modal-scale-base: 0.88;\n }\n\n &.width-xlarge {\n --modal-width: var(--kds-dimension-component-width-61x);\n --modal-animation-time: 300ms;\n --modal-scale-base: 0.88;\n }\n\n &.width-full {\n --modal-width: var(--modal-full-size);\n --modal-animation-time: 350ms;\n --modal-scale-base: 0.92;\n }\n\n &.height-full {\n --modal-height: var(--modal-full-size);\n }\n\n &.height-auto {\n --modal-height: fit-content;\n }\n\n display: flex;\n flex-direction: column;\n width: min(var(--modal-full-size), var(--modal-width));\n height: var(--modal-height);\n max-height: var(--modal-full-size);\n padding: 0;\n overflow: v-bind(overflow);\n font: var(--kds-font-base-body-small);\n color: var(--kds-color-text-and-icon-neutral);\n background-color: var(--kds-color-surface-default);\n border: none;\n border-radius: var(--kds-border-radius-container-0-37x);\n box-shadow: var(--kds-elevation-level-3);\n\n /** Animation */\n opacity: 0;\n transform: scale(var(--modal-scale-base));\n transition: var(--modal-animation-time) allow-discrete;\n transition-timing-function: cubic-bezier(0, 0, 0.2, 1);\n transition-property: display, opacity, overlay, transform;\n\n /* hide if its not open */\n &:not([open]) {\n display: none;\n }\n\n &:focus-visible,\n &:focus {\n outline: none;\n }\n\n &::backdrop {\n background: var(--kds-color-blanket-default);\n opacity: 0;\n transition: var(--modal-animation-time) allow-discrete;\n transition-timing-function: cubic-bezier(0, 0, 0.2, 1);\n transition-property: display, opacity, overlay;\n }\n\n &[open]::backdrop {\n opacity: 1;\n }\n\n &[open] {\n opacity: 1;\n transform: scale(1);\n }\n}\n\n/** Animation starting styles */\n@starting-style {\n .kds-modal {\n opacity: 1;\n transform: scale(1);\n\n &[open] {\n opacity: 0;\n transform: scale(var(--modal-scale-base));\n }\n\n &::backdrop {\n opacity: 1;\n }\n\n &[open]::backdrop {\n opacity: 0;\n }\n }\n}\n</style>\n","import {\n type ComponentPublicInstance,\n type FunctionalComponent,\n type VNode,\n computed,\n ref,\n} from \"vue\";\n\nimport { promise as PromiseUtils } from \"@knime/utils\";\n\nimport type { KdsButtonProps } from \"../../buttons\";\n\nimport type { KdsModalLayoutProps, KdsModalProps } from \"./types\";\n\ntype CommonButtonProps = {\n label: string;\n autofocus?: boolean;\n destructive?: boolean;\n variant?: KdsButtonProps[\"variant\"];\n flushLeft?: boolean;\n};\n\ntype ConfirmationButton = CommonButtonProps & {\n type: \"confirm\";\n customHandler?: (actions: { confirm: () => void }) => void;\n};\n\ntype CancellationButton = CommonButtonProps & {\n type: \"cancel\";\n customHandler?: (actions: { cancel: () => void }) => void;\n};\n\nexport type ConfirmModalButton = ConfirmationButton | CancellationButton;\n\ntype CommonConfig = Omit<KdsModalProps, \"active\">;\n\ntype PropertyBasedConfirmModalConfig = CommonConfig & {\n /**\n * The message displayed in the modal body\n */\n message: string;\n /**\n * The label and subText to be rendered for the \"do not ask again\" checkbox option.\n * The checkbox will only be present when an object is supplied. The value will be returned on the modal result.\n * Defaults to empty undefined.\n */\n doNotAskAgain?: {\n label: string;\n subText?: string;\n };\n\n /**\n * Confirmation or cancellation buttons if omitted default ones are set\n */\n buttons?: Array<ConfirmModalButton>;\n};\n\ntype TemplateBasedConfirmModalConfig = CommonConfig & {\n /**\n * the dynamic component to be used as the confirmation modal body\n */\n component: FunctionalComponent | ComponentPublicInstance | VNode;\n\n /**\n * Confirmation or cancellation buttons if omitted default ones are set\n */\n buttons?: Array<ConfirmModalButton>;\n};\n\nexport type KdsDynamicDialogConfirmConfig =\n | PropertyBasedConfirmModalConfig\n | TemplateBasedConfirmModalConfig;\n\ntype UpdateConfigType = Partial<\n Omit<KdsDynamicModalTemplateConfig, \"component\" | \"context\">\n>;\n\n/**\n * Define a props api which dynamic template components can optionally\n * define to get access to the configuration the dynamic modal was called with\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type KdsDynamicModalPropsAPI<T = any> = KdsModalLayoutProps & {\n context: T;\n updateConfig: (config: UpdateConfigType) => void;\n};\ntype DynamicModalComponent<T> = abstract new (...args: unknown[]) => {\n $props: KdsDynamicModalPropsAPI<T>;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type KdsDynamicModalTemplateConfig<T = any> = CommonConfig & {\n component:\n | DynamicModalComponent<T>\n | FunctionalComponent<KdsDynamicModalPropsAPI<T>>;\n context?: T;\n};\n\nconst defaultCancelButton: CancellationButton = {\n type: \"cancel\",\n label: \"Cancel\",\n};\n\nconst defaultConfirmButton: ConfirmationButton = {\n type: \"confirm\",\n label: \"Confirm\",\n};\n\ntype ConfirmResult = { confirmed: boolean; doNotAskAgain?: boolean };\n\nconst isActive = ref(false);\nconst activeModalConfig = ref<\n | { type: \"confirm\"; value: KdsDynamicDialogConfirmConfig }\n | { type: \"dynamic\"; value: KdsDynamicModalTemplateConfig }\n | null\n>(null);\n\nconst unwrappedPromise = ref(PromiseUtils.createUnwrappedPromise());\n\nconst resetInternalState = () => {\n isActive.value = false;\n unwrappedPromise.value = PromiseUtils.createUnwrappedPromise();\n // config is cleared after the close animations is finished\n};\n\n/* called when KdsModal has finished close animations */\nconst onClosed = () => {\n activeModalConfig.value = null;\n};\n\n/**\n * Used to confirm the modal result. Should only used when called via\n * `askConfirmation`\n * @param doNotAskAgain\n */\nconst confirm = (doNotAskAgain = false) => {\n unwrappedPromise.value.resolve({\n confirmed: true,\n doNotAskAgain,\n });\n resetInternalState();\n};\n\n/**\n * Close or cancel the dialog\n */\nconst close = () => {\n const isConfirm = activeModalConfig.value?.type === \"confirm\";\n unwrappedPromise.value.resolve(isConfirm ? { confirmed: false } : undefined);\n resetInternalState();\n};\n\nconst isTemplateBasedConfirm = (\n config: KdsDynamicDialogConfirmConfig,\n): config is TemplateBasedConfirmModalConfig => {\n return \"component\" in config;\n};\n\nconst updateConfig = (config: UpdateConfigType) => {\n if (\n !isActive.value ||\n !activeModalConfig.value ||\n activeModalConfig.value.type === \"confirm\"\n ) {\n consola.warn(\"useKdsDynamicModal: invalid invocation of updateConfig\");\n return;\n }\n\n activeModalConfig.value.value = {\n ...activeModalConfig.value.value,\n ...config,\n };\n};\n\nexport const internal = {\n confirm,\n close,\n isTemplateBasedConfirm,\n onClosed,\n updateConfig,\n};\n\nexport const useKdsDynamicModal = () => {\n // function overload to support 2 distinct configurations\n function askConfirmation(\n config: PropertyBasedConfirmModalConfig,\n ): Promise<ConfirmResult>;\n\n // function overload to support 2 distinct configurations\n function askConfirmation(\n config: TemplateBasedConfirmModalConfig,\n ): Promise<ConfirmResult>;\n\n function askConfirmation(\n config: KdsDynamicDialogConfirmConfig,\n ): Promise<ConfirmResult> {\n activeModalConfig.value = {\n type: \"confirm\",\n value: {\n buttons: [defaultCancelButton, defaultConfirmButton],\n ...config,\n },\n };\n\n isActive.value = true;\n return unwrappedPromise.value.promise as Promise<ConfirmResult>;\n }\n\n const showByTemplate = <T>(\n config: KdsDynamicModalTemplateConfig<T>,\n ): Promise<void> => {\n activeModalConfig.value = {\n type: \"dynamic\",\n value: config,\n };\n\n isActive.value = true;\n return unwrappedPromise.value.promise as Promise<void>;\n };\n\n return {\n askConfirmation,\n showByTemplate,\n config: computed(() => activeModalConfig.value),\n isActive: computed(() => isActive.value),\n close: () => internal.close(),\n };\n};\n","<script setup lang=\"ts\">\nimport { computed, ref } from \"vue\";\n\nimport type { KdsButtonProps } from \"../../buttons\";\nimport KdsButton from \"../../buttons/KdsButton/KdsButton.vue\";\nimport KdsCheckbox from \"../../forms/Checkbox/KdsCheckbox.vue\";\n\nimport KdsModal from \"./KdsModal.vue\";\nimport {\n type ConfirmModalButton,\n internal,\n useKdsDynamicModal,\n} from \"./useKdsDynamicModal\";\n\nconst askAgain = ref(false);\nconst { config, isActive } = useKdsDynamicModal();\n\nconst reset = () => {\n askAgain.value = false;\n};\n\nconst onConfirm = () => {\n internal.confirm(askAgain.value);\n reset();\n};\n\nconst onClose = () => {\n internal.close();\n reset();\n};\n\nconst handleConfirmButton = (button: ConfirmModalButton) => {\n if (!button.customHandler) {\n const handler = button.type === \"cancel\" ? onClose : onConfirm;\n handler();\n return;\n }\n\n if (button.type === \"cancel\") {\n button.customHandler({ cancel: onClose });\n }\n\n if (button.type === \"confirm\") {\n button.customHandler({ confirm: onConfirm });\n }\n};\n\nconst defaultVariant = (\n type: ConfirmModalButton[\"type\"],\n): KdsButtonProps[\"variant\"] => (type === \"cancel\" ? \"transparent\" : \"filled\");\n\nconst kdsModalProps = computed(() => {\n if (!config.value) {\n return {};\n }\n\n const { icon, title, height, width, variant, overflow, closedby } =\n config.value.value;\n\n return {\n icon,\n title,\n height,\n width,\n variant,\n overflow,\n closedby,\n onClose,\n onClosed: internal.onClosed,\n active: isActive.value,\n };\n});\n</script>\n\n<template>\n <KdsModal class=\"confirm-modal\" v-bind=\"kdsModalProps\">\n <template v-if=\"config?.type === 'confirm'\" #body>\n <Component\n :is=\"config.value.component\"\n v-if=\"internal.isTemplateBasedConfirm(config.value)\"\n />\n\n <div v-else class=\"confirmation\">\n <div class=\"message\">{{ config.value.message }}</div>\n <div v-if=\"config.value.doNotAskAgain\" class=\"ask-again\">\n <KdsCheckbox\n v-model=\"askAgain\"\n :label=\"config.value.doNotAskAgain.label\"\n :sub-text=\"config.value.doNotAskAgain.subText\"\n />\n </div>\n </div>\n </template>\n\n <template v-if=\"config?.type === 'confirm'\" #footer>\n <KdsButton\n v-for=\"(button, index) in config.value.buttons\"\n :key=\"index\"\n :destructive=\"button.destructive\"\n :autofocus=\"button.autofocus\"\n :label=\"button.label\"\n :variant=\"button.variant ?? defaultVariant(button.type)\"\n :class=\"{ 'flush-left': button.flushLeft }\"\n :data-test-id=\"`${button.type}-button`\"\n @click=\"handleConfirmButton(button)\"\n />\n </template>\n\n <template v-if=\"config?.type === 'dynamic'\" #default=\"slotProps\">\n <Component\n :is=\"config.value.component\"\n v-bind=\"{\n ...slotProps,\n context: config.value.context,\n updateConfig: internal.updateConfig,\n }\"\n />\n </template>\n </KdsModal>\n</template>\n\n<style scoped>\n.ask-again {\n padding: var(--kds-spacing-container-0-5x) 0 0 0;\n}\n\n.flush-left {\n margin-right: auto;\n}\n</style>\n"],"names":["_createElementBlock","_normalizeClass","_openBlock","_hoisted_3","_createElementVNode","_unref","_createBlock","_resolveDynamicComponent","kdsIconNames","kdsTypeIconNames","_hoisted_1","_toDisplayString","_hoisted_2","_renderSlot","_mergeProps","_useModel","_createVNode","Icon","_hoisted_4","_hoisted_5","_hoisted_6","_Fragment","_renderList","$slots","KdsButton","_withCtx","HUE_MAX_DEG","_withModifiers","KdsTextInput","_normalizeStyle","KdsToggleButton","normalized","parsed","ListItemAccessory","KdsLinkButton","_toHandlers","_createTextVNode","PromiseUtils.createUnwrappedPromise","_createSlots","KdsCheckbox","_normalizeProps","_guardReactiveProps"],"mappings":"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","x_google_ignoreList":[73,74]}
1
+ {"version":3,"file":"index.js","sources":["../src/accessories/Avatar/enums.ts","../src/accessories/Avatar/KdsAvatar.vue","../src/accessories/Icon/useIcon.ts","../src/accessories/Icon/KdsIcon.vue","../src/accessories/Icon/IdToIconNameMapping.ts","../../styles/dist/img/icons/def.ts","../../styles/dist/img/type-icons/def.ts","../src/accessories/Icon/enums.ts","../src/accessories/Icon/KdsDataType.vue","../src/accessories/Badge/enums.ts","../src/accessories/Badge/KdsBadge.vue","../src/accessories/ColorSwatch/enums.ts","../src/accessories/ColorSwatch/KdsColorSwatch.vue","../src/util/enums.ts","../src/util/useKdsDarkMode.ts","../src/util/useKdsLegacyMode.ts","../src/util/useKdsIsTruncated.ts","../src/accessories/LiveStatus/KdsLiveStatus.vue","../src/accessories/LiveStatus/enums.ts","../src/accessories/LoadingSpinner/KdsLoadingSpinner.vue","../src/accessories/LoadingSpinner/enums.ts","../src/accessories/InlineMessage/KdsInlineMessage.vue","../src/accessories/InlineMessage/enums.ts","../src/buttons/BaseButton.vue","../src/buttons/KdsButton/KdsButton.vue","../src/util/nuxtComponentResolver.ts","../src/buttons/KdsLinkButton/KdsLinkButton.vue","../src/buttons/KdsToggleButton/KdsToggleButton.vue","../src/buttons/KdsToggleButton/enums.ts","../src/buttons/KdsProgressButton/KdsProgressButton.vue","../src/buttons/KdsProgressButton/enums.ts","../src/buttons/enums.ts","../src/forms/_helper/KdsLabel.vue","../src/forms/_helper/KdsSubText.vue","../src/forms/Checkbox/BaseCheckbox.vue","../src/forms/Checkbox/KdsCheckbox.vue","../src/forms/Checkbox/KdsCheckboxGroup.vue","../src/forms/Checkbox/enums.ts","../src/forms/RadioButton/KdsRadioButton.vue","../src/forms/RadioButton/useRadioSelection.ts","../src/forms/RadioButton/KdsRadioButtonGroup.vue","../src/forms/RadioButton/ValueSwitchItem.vue","../src/forms/RadioButton/useValueSwitchIconHiding.ts","../src/forms/RadioButton/KdsValueSwitch.vue","../src/forms/RadioButton/enums.ts","../src/overlays/Popover/KdsPopover.vue","../src/forms/_helper/BaseFormFieldWrapper.vue","../src/forms/inputs/BaseInput.vue","../src/forms/inputs/TextInput/KdsTextInput.vue","../src/forms/inputs/ColorInput/colorUtils.ts","../src/forms/inputs/ColorInput/usePointerHandler.ts","../src/forms/inputs/ColorInput/ColorPicker.vue","../src/forms/inputs/ColorInput/useColorInputValidationOnFocusOut.ts","../src/forms/inputs/ColorInput/KdsColorInput.vue","../src/forms/inputs/NumberInput/numberParser.ts","../src/forms/inputs/NumberInput/KdsNumberInput.vue","../src/forms/inputs/PatternInput/patternRegex.ts","../src/forms/inputs/PatternInput/KdsPatternInput.vue","../src/forms/inputs/SearchInput/KdsSearchInput.vue","../src/forms/inputs/Textarea/KdsTextarea.vue","../src/forms/_helper/List/ListItemAccessory/ListItemAccessory.vue","../src/forms/selects/Dropdown/BaseDropdown.vue","../src/layouts/EmptyState/KdsEmptyState.vue","../src/forms/_helper/List/ListItemAccessory/enums.ts","../src/forms/_helper/List/KdsListItem/enums.ts","../src/forms/_helper/List/KdsListItem/KdsListItem.vue","../src/forms/_helper/List/ListContainer/KdsListContainer.vue","../src/forms/selects/Dropdown/DropdownContainer.vue","../src/forms/selects/Dropdown/KdsDropdown.vue","../src/forms/_helper/InfoPopover/InfoPopover.vue","../src/forms/_helper/InfoPopover/KdsInfoToggleButton.vue","../src/forms/_helper/VariablePopover/VariablePopover.vue","../src/forms/_helper/VariablePopover/KdsVariableToggleButton.vue","../src/layouts/KdsCardClickable/KdsCardClickable.vue","../src/layouts/KdsCardClickable/enums.ts","../../../node_modules/.pnpm/@knime+utils@1.9.2_consola@3.4.2/node_modules/@knime/utils/src/promise/createUnwrappedPromise.ts","../../../node_modules/.pnpm/@knime+utils@1.9.2_consola@3.4.2/node_modules/@knime/utils/src/sleep.ts","../src/overlays/Modal/enums.ts","../src/overlays/Modal/KdsModalLayout.vue","../src/overlays/Modal/KdsModal.vue","../src/overlays/Modal/useKdsDynamicModal.ts","../src/overlays/Modal/KdsDynamicModalProvider.vue"],"sourcesContent":["export const kdsAvatarSize = {\n SMALL: \"small\",\n MEDIUM: \"medium\",\n LARGE: \"large\",\n XLARGE: \"xlarge\",\n} as const;\n\nexport const kdsAvatarSizes = Object.values(kdsAvatarSize);\n","<script setup lang=\"ts\">\nimport { computed, ref, watch } from \"vue\";\n\nimport { kdsAvatarSize } from \"./enums\";\nimport type { KdsAvatarProps } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsAvatarProps>(), {\n title: undefined,\n src: undefined,\n size: kdsAvatarSize.XLARGE,\n});\n\nconst imageLoadFailed = ref(false);\n\nwatch(\n () => props.src,\n () => {\n imageLoadFailed.value = false;\n },\n);\n\nconst shouldShowImage = computed(\n () => Boolean(props.src) && !imageLoadFailed.value,\n);\n\nconst onImageError = () => {\n imageLoadFailed.value = true;\n};\n\nconst accessibleTitle = computed(() => props.title?.trim() ?? \"\");\nconst hasTitle = computed(() => accessibleTitle.value.length > 0);\n\nconst displayedInitials = computed(() =>\n props.initials.trim().slice(0, 2).toUpperCase(),\n);\n</script>\n\n<template>\n <div\n class=\"kds-avatar\"\n :class=\"props.size\"\n :role=\"hasTitle ? 'img' : 'presentation'\"\n :title=\"hasTitle ? accessibleTitle : undefined\"\n :aria-hidden=\"!hasTitle ? 'true' : undefined\"\n :aria-label=\"hasTitle ? accessibleTitle : undefined\"\n >\n <img\n v-if=\"shouldShowImage\"\n class=\"kds-avatar-image\"\n :src=\"props.src\"\n alt=\"\"\n aria-hidden=\"true\"\n @error=\"onImageError\"\n />\n <div v-else class=\"kds-avatar-initials\" aria-hidden=\"true\">\n <span>\n {{ displayedInitials }}\n </span>\n </div>\n </div>\n</template>\n\n<style scoped>\n.kds-avatar {\n position: relative;\n display: inline-block;\n flex-shrink: 0;\n aspect-ratio: 1 / 1;\n overflow: hidden;\n vertical-align: middle;\n border-radius: var(--kds-border-radius-container-pill);\n\n &.small {\n inline-size: var(--kds-dimension-icon-0-75x);\n block-size: var(--kds-dimension-icon-0-75x);\n }\n\n &.medium {\n inline-size: var(--kds-dimension-icon-1x);\n block-size: var(--kds-dimension-icon-1x);\n }\n\n &.large {\n inline-size: var(--kds-dimension-component-width-1-25x);\n block-size: var(--kds-dimension-component-height-1-25x);\n }\n\n &.xlarge {\n inline-size: var(--kds-dimension-component-width-1-5x);\n block-size: var(--kds-dimension-component-height-1-5x);\n }\n}\n\n.kds-avatar::after {\n position: absolute;\n inset: 0;\n box-sizing: border-box;\n pointer-events: none;\n content: \"\";\n border: var(--kds-border-base-muted);\n border-radius: inherit;\n}\n\n.kds-avatar-image {\n display: block;\n inline-size: 100%;\n block-size: 100%;\n object-fit: cover;\n object-position: center;\n}\n\n.kds-avatar-initials {\n display: flex;\n align-items: center;\n justify-content: center;\n inline-size: 100%;\n block-size: 100%;\n container-type: inline-size;\n font: var(--kds-font-base-body-small-strong);\n color: var(--kds-color-text-and-icon-primary-inverted);\n user-select: none;\n background: var(--kds-color-background-primary-bold-initial);\n}\n\n.kds-avatar-initials > span {\n font-size: calc(1em + calc(100cqi - 2em) / 2);\n}\n</style>\n","import { type DefineComponent, type Ref, shallowRef, watch } from \"vue\";\n\nexport default ({\n name,\n folder,\n}: {\n name: Ref<string>;\n folder: \"icons\" | \"type-icons\";\n}) => {\n const iconCache = new Map<string, DefineComponent>();\n\n const iconComponent = shallowRef<DefineComponent | null>(null);\n\n watch(\n () => name.value,\n async (newName) => {\n if (iconCache.has(newName)) {\n iconComponent.value = iconCache.get(newName)!;\n return;\n }\n\n try {\n const module = await import(\n `../../../node_modules/@knime/kds-styles/dist/img/${folder}/${newName}.svg`\n );\n iconCache.set(newName, module.default);\n iconComponent.value = module.default;\n } catch (_error) {\n iconComponent.value = null;\n }\n },\n { immediate: true },\n );\n\n return iconComponent as Readonly<typeof iconComponent>;\n};\n","<script setup lang=\"ts\">\n/**\n * Displays an icon from the KDS icon set. The icon color inherits the text\n * color of the parent element by default. When the `disabled` prop is set,\n * the color is overridden with the `kds.color.text-and-icon.disabled` token.\n */\nimport { toRef } from \"vue\";\n\nimport type { KdsIconProps } from \"./types\";\nimport useIcon from \"./useIcon\";\n\nconst props = withDefaults(defineProps<KdsIconProps>(), {\n size: \"medium\",\n disabled: false,\n});\n\nconst iconComponent = useIcon({ name: toRef(props, \"name\"), folder: \"icons\" });\n</script>\n\n<template>\n <component\n :is=\"iconComponent\"\n v-if=\"iconComponent\"\n :class=\"['kds-icon', props.size, { disabled }]\"\n aria-hidden=\"true\"\n focusable=\"false\"\n />\n <span\n v-else\n :class=\"['kds-icon', props.size, { disabled }]\"\n aria-hidden=\"true\"\n focusable=\"false\"\n />\n</template>\n\n<style scoped>\n@import url(\"./styles.css\");\n\n.kds-icon.disabled {\n color: var(--kds-color-text-and-icon-disabled);\n}\n</style>\n","import type { KdsTypeIconName } from \"./types\";\n\nexport const ID_TO_ICON_MAP = {\n // Flow Variables\n STRING: \"variable-string\",\n LONG: \"variable-integer\",\n DOUBLE: \"variable-number-double\",\n BOOLEAN: \"variable-boolean\",\n INTEGER: \"variable-integer\",\n FSLocation: \"variable-path\",\n FSLocationSpec: \"variable-path\",\n STRINGARRAY: \"variable-collection-string\",\n LONGARRAY: \"variable-collection-integer\",\n DOUBLEARRAY: \"variable-collection-double\",\n BOOLEANARRAY: \"variable-collection-boolean\",\n INTARRAY: \"variable-collection-integer\",\n CREDENTIALS: \"variable-credential\",\n CONDAENVIRONMENT: \"variable-conda-environment\",\n UNKNOWN: \"variable-unknown\",\n // General\n \"org.knime.core.data.BooleanValue\": \"boolean-datatype\",\n \"org.knime.core.data.DataValue\": \"unknown-datatype\",\n \"org.knime.core.data.DoubleValue\": \"number-double-datatype\",\n \"org.knime.core.data.IntValue\": \"number-integer-datatype\",\n \"org.knime.core.data.LongValue\": \"number-integer-datatype\",\n \"org.knime.core.data.MissingValue\": \"unknown-datatype\",\n \"org.knime.core.data.StringValue\": \"string-datatype\",\n \"org.knime.core.data.collection.ListDataValue\": \"collection-list-datatype\",\n \"org.knime.core.data.collection.SetDataValue\": \"collection-set-datatype\",\n \"org.knime.core.data.vector.doublevector.DoubleVectorValue\":\n \"number-double-vector-datatype\",\n \"org.knime.core.data.vector.stringvector.StringVectorValue\":\n \"string-vector-datatype\",\n \"org.knime.filehandling.core.data.location.FSLocationValue\": \"path-datatype\",\n // Image, Audio & Video\n \"org.knime.audio.data.cell.AudioValue\": \"audio-datatype\",\n \"org.knime.base.data.xml.SvgValue\": \"image-svg-datatype\",\n \"org.knime.core.data.image.png.PNGImageValue\": \"image-png-datatype\",\n // Date & Time\n \"org.knime.core.data.time.localdate.LocalDateValue\": \"date-datatype\",\n \"org.knime.core.data.time.localdatetime.LocalDateTimeValue\":\n \"date-time-local-datatype\",\n \"org.knime.core.data.time.localtime.LocalTimeValue\": \"time-datatype\",\n \"org.knime.core.data.time.zoneddatetime.ZonedDateTimeValue\":\n \"date-time-zoned-datatype\",\n \"org.knime.core.data.time.duration.DurationValue\":\n \"duration-time-based-datatype\",\n \"org.knime.core.data.time.period.PeriodValue\": \"duration-date-based-datatype\",\n // Geospatial\n \"org.knime.geospatial.core.data.GeoValue\": \"geo-datatype\",\n \"org.knime.geospatial.core.data.GeoLineValue\": \"geo-datatype\",\n \"org.knime.geospatial.core.data.GeoPointValue\": \"geo-datatype\",\n \"org.knime.geospatial.core.data.GeoPolygonValue\": \"geo-datatype\",\n \"org.knime.geospatial.core.data.GeoCollectionValue\": \"geo-datatype\",\n \"org.knime.geospatial.core.data.GeoMultiLineValue\": \"geo-datatype\",\n \"org.knime.geospatial.core.data.GeoMultiPointValue\": \"geo-datatype\",\n \"org.knime.geospatial.core.data.GeoMultiPolygonValue\": \"geo-datatype\",\n // Code\n \"org.knime.core.data.blob.BinaryObjectDataValue\": \"binary-object-datatype\",\n \"org.knime.core.data.html.HTMLValue\": \"xml-datatype\",\n \"org.knime.core.data.json.JSONValue\": \"json-datatype\",\n \"org.knime.core.data.uri.URIDataValue\": \"uri-datatype\",\n \"org.knime.core.data.vector.bitvector.BitVectorValue\":\n \"bit-byte-vector-datatype\",\n \"org.knime.core.data.vector.bitvector.SparseBitVectorValue\":\n \"bit-byte-vector-datatype\",\n \"org.knime.core.data.vector.bytevector.ByteVectorValue\":\n \"bit-byte-vector-datatype\",\n \"org.knime.core.data.xml.PMMLValue\": \"model-pmml-datatype\",\n \"org.knime.core.data.xml.XMLValue\": \"xml-datatype\",\n \"org.knime.knip.base.data.labeling.LabelingValue\": \"labeling-datatype\",\n // Agentic AI\n \"org.knime.ai.core.data.message.MessageValue\": \"message-datatype\",\n \"org.knime.core.node.agentic.tool.WorkflowToolValue\": \"tool-datatype\",\n // Textprocessing\n \"org.knime.ext.textprocessing.data.DocumentValue\": \"document-datatype\",\n \"org.knime.ext.textprocessing.data.TermValue\": \"term-datatype\",\n // Network\n \"org.knime.network.core.knime.cell.GraphValue\": \"subgraph-datatype\",\n // Linear Notations\n \"org.knime.chem.types.InchiValue\": \"linear-notation-molecule\",\n \"org.knime.chem.types.SlnValue\": \"linear-notation-molecule\",\n \"org.knime.chem.types.SmartsValue\": \"linear-notation-molecule\",\n \"org.knime.chem.types.SmilesValue\": \"linear-notation-molecule\",\n // Molecular file formats\n \"org.knime.chem.types.CtabValue\": \"molecule\",\n \"org.knime.chem.types.MolValue\": \"molecule\",\n \"org.knime.chem.types.Mol2Value\": \"molecule\",\n \"org.knime.chem.types.SdfValue\": \"molecule\",\n // Biopolymer & sequence representations\n \"org.knime.chem.types.helm.HELMValue\": \"helm-datatype\",\n // Relation & Process representations\n \"org.knime.chem.types.CMLValue\": \"test-tube\",\n \"org.knime.chem.types.RxnValue\": \"test-tube\",\n // Visualization & specialized software formats\n \"org.knime.bio.types.PdbValue\": \"microscope\",\n \"org.knime.chem.types.cdx.CDXMLValue\": \"microscope\",\n \"org.rdkit.knime.types.RDKitMolValue\": \"microscope\",\n \"jp.co.infocom.cheminfo.marvin.type.MrvValue\": \"microscope\",\n} as const satisfies Record<string, KdsTypeIconName>;\n\nexport type TypeId = keyof typeof ID_TO_ICON_MAP;\n","\nexport const iconNames = [\n 'add-user',\n 'ai-general',\n 'annotation-mode',\n 'arrow-down',\n 'arrow-up',\n 'arrows-expand',\n 'arrows-move',\n 'arrows-order',\n 'back',\n 'bold',\n 'calendar',\n 'case-sensitive',\n 'center-aligned',\n 'checkmark',\n 'chevron-down',\n 'chevron-left-double',\n 'chevron-left',\n 'chevron-right-double',\n 'chevron-right',\n 'chevron-up',\n 'circle-error',\n 'circle-info',\n 'circle-question',\n 'circle-success',\n 'cloud-download',\n 'cloud-knime',\n 'cloud-pending-changes',\n 'cloud-synced',\n 'cloud-upload',\n 'cloud-workflow',\n 'code-block',\n 'color-picker',\n 'comment',\n 'component',\n 'connection',\n 'copy',\n 'cursor',\n 'data-app',\n 'data-value-view',\n 'date-time',\n 'db-database',\n 'db-schema',\n 'db-table-view',\n 'db-table',\n 'deploy',\n 'detect',\n 'divider',\n 'duration',\n 'edit',\n 'education',\n 'error-panel',\n 'execute-all',\n 'execute',\n 'expand-panel',\n 'extension-community',\n 'extension',\n 'external-link',\n 'eye',\n 'file-export',\n 'file-text',\n 'file',\n 'filter',\n 'flow-variable-default',\n 'flow-variable-in-out',\n 'flow-variable-in',\n 'flow-variable-out',\n 'folder-plus',\n 'folder-workflow',\n 'folder',\n 'forum',\n 'function-catalog',\n 'home',\n 'import',\n 'info',\n 'interval',\n 'italic',\n 'key',\n 'layout-editor',\n 'left-aligned',\n 'like',\n 'limit',\n 'link',\n 'linked-metanode',\n 'list-bulletpoint',\n 'list-number',\n 'list-thumbs',\n 'list',\n 'local-filesystem',\n 'lock',\n 'metanode',\n 'mini-map',\n 'minimize-dialog',\n 'minimize-side-panel',\n 'minus',\n 'more-actions',\n 'node-stack',\n 'nodes-align-horiz',\n 'nodes-align-vert',\n 'open-in-new-window',\n 'pan-mode',\n 'parameter',\n 'pending-changes',\n 'placeholder',\n 'plus',\n 'quote',\n 're-execution',\n 'redo',\n 'regex',\n 'reload',\n 'rename',\n 'replace',\n 'reset-all',\n 'resume-execution',\n 'right-aligned',\n 'rocket',\n 'save-as',\n 'save',\n 'schedule',\n 'search',\n 'secret-store',\n 'selected-cancel',\n 'selected-execution',\n 'selected-reset',\n 'send',\n 'server-rack-workflow',\n 'service',\n 'settings',\n 'share',\n 'shortcuts',\n 'sort-ascending',\n 'sort-descending',\n 'space-local',\n 'space-private',\n 'space',\n 'stepwise-execution',\n 'stop',\n 'strikethrough',\n 'team',\n 'text',\n 'textstyles',\n 'thumbs-down',\n 'thumbs-up',\n 'time',\n 'to-bottom',\n 'to-top',\n 'trash',\n 'trigger',\n 'underline',\n 'undo',\n 'unlink',\n 'user',\n 'version',\n 'view-cards',\n 'warning',\n 'workflow',\n 'x-close'\n] as const;\n\nexport type IconName = typeof iconNames[number];\n","\nexport const typeIconNames = [\n 'audio-datatype',\n 'binary-object-datatype',\n 'bit-byte-vector-datatype',\n 'boolean-datatype',\n 'collection-list-datatype',\n 'collection-set-datatype',\n 'date-datatype',\n 'date-time-local-datatype',\n 'date-time-zoned-datatype',\n 'default-extension-datatype',\n 'document-datatype',\n 'duration-date-based-datatype',\n 'duration-time-based-datatype',\n 'geo-datatype',\n 'helm-datatype',\n 'image-png-datatype',\n 'image-svg-datatype',\n 'json-datatype',\n 'labeling-datatype',\n 'linear-notation-molecule',\n 'message-datatype',\n 'microscope',\n 'model-pmml-datatype',\n 'molecule',\n 'number-double-datatype',\n 'number-double-vector-datatype',\n 'number-integer-datatype',\n 'path-datatype',\n 'string-datatype',\n 'string-vector-datatype',\n 'subgraph-datatype',\n 'term-datatype',\n 'test-tube',\n 'time-datatype',\n 'tool-datatype',\n 'unknown-datatype',\n 'uri-datatype',\n 'variable-boolean',\n 'variable-collection-boolean',\n 'variable-collection-double',\n 'variable-collection-integer',\n 'variable-collection-string',\n 'variable-conda-environment',\n 'variable-credential',\n 'variable-integer',\n 'variable-number-double',\n 'variable-path',\n 'variable-string',\n 'variable-unknown',\n 'xml-datatype'\n] as const;\n\nexport type TypeIconName = typeof typeIconNames[number];\n","export { iconNames as kdsIconNames } from \"@knime/kds-styles/img/icons/def\";\nexport { typeIconNames as kdsTypeIconNames } from \"@knime/kds-styles/img/type-icons/def\";\n\nimport { iconNames as kdsIconNames } from \"@knime/kds-styles/img/icons/def\";\nimport { typeIconNames as kdsTypeIconNames } from \"@knime/kds-styles/img/type-icons/def\";\n\nconst toEnumKey = (name: string) =>\n name.toUpperCase().replaceAll(\"-\", \"_\") as Uppercase<typeof name>;\n\nexport const kdsIconName = Object.fromEntries(\n kdsIconNames.map((name) => [toEnumKey(name), name] as const),\n) as { [K in (typeof kdsIconNames)[number] as Uppercase<K>]: K };\n\nexport const kdsTypeIconName = Object.fromEntries(\n kdsTypeIconNames.map((name) => [toEnumKey(name), name] as const),\n) as { [K in (typeof kdsTypeIconNames)[number] as Uppercase<K>]: K };\n\nexport const kdsIconSize = {\n XSMALL: \"xsmall\",\n SMALL: \"small\",\n MEDIUM: \"medium\",\n LARGE: \"large\",\n} as const;\n\nexport const kdsIconSizes = Object.values(kdsIconSize);\n\nexport const kdsDataTypeSize = {\n SMALL: \"small\",\n MEDIUM: \"medium\",\n LARGE: \"large\",\n} as const;\n\nexport const kdsDataTypeSizes = Object.values(kdsDataTypeSize);\n","<script setup lang=\"ts\">\nimport { computed } from \"vue\";\n\nimport { ID_TO_ICON_MAP, type TypeId } from \"./IdToIconNameMapping\";\nimport { kdsTypeIconNames } from \"./enums\";\nimport type {\n KdsDataTypeProps,\n KdsDataTypeSize,\n KdsIconSize,\n KdsTypeIconName,\n} from \"./types\";\nimport useIcon from \"./useIcon\";\n\ntype DataTypeIconSize = Exclude<KdsIconSize, \"large\">;\n\nconst DATA_TYPE_SIZE_TO_ICON_SIZE: Record<KdsDataTypeSize, DataTypeIconSize> = {\n large: \"medium\",\n medium: \"small\",\n small: \"xsmall\",\n} as const;\n\nconst props = withDefaults(defineProps<KdsDataTypeProps>(), {\n iconName: \"unknown-datatype\",\n iconTitle: \"Unknown Data Type\",\n size: \"medium\",\n disabled: false,\n});\n\nconst iconSize = computed(() => DATA_TYPE_SIZE_TO_ICON_SIZE[props.size]);\n\nconst isIconName = (value: string): value is KdsTypeIconName =>\n kdsTypeIconNames.includes(value as KdsTypeIconName);\n\nconst isTypeId = (value: string): value is TypeId =>\n Object.keys(ID_TO_ICON_MAP).includes(value);\n\nconst iconName = computed<KdsTypeIconName>(() => {\n if (isIconName(props.iconName)) {\n return props.iconName;\n }\n if (isTypeId(props.iconName)) {\n return ID_TO_ICON_MAP[props.iconName];\n }\n return props.iconName.startsWith(\"org.knime\")\n ? \"default-extension-datatype\"\n : \"unknown-datatype\";\n});\n\nconst iconComponent = useIcon({\n name: iconName,\n folder: \"type-icons\",\n});\n</script>\n\n<template>\n <div\n :class=\"['kds-data-type-icon-container', size, { disabled }]\"\n :title=\"props.iconTitle\"\n >\n <component\n :is=\"iconComponent\"\n :class=\"['kds-icon', 'kds-data-type-icon', iconSize]\"\n aria-hidden=\"true\"\n focusable=\"false\"\n />\n </div>\n</template>\n\n<style scoped>\n@import url(\"./styles.css\");\n\n.kds-data-type-icon-container {\n --data-type-height: var(--kds-dimension-component-height-1x);\n --data-type-width: var(--kds-dimension-component-width-1x);\n --data-type-padding: var(--kds-spacing-container-0-12x);\n\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--data-type-width);\n height: var(--data-type-height);\n padding: var(--data-type-padding);\n color: var(--kds-color-desktop-header-text-and-icon-muted);\n background-color: var(--kds-color-page-default);\n border: var(--kds-border-base-muted);\n border-radius: var(--kds-border-radius-container-0-12x);\n\n &.disabled {\n color: var(--kds-color-text-and-icon-disabled);\n }\n\n &.small {\n --data-type-height: var(--kds-dimension-icon-0-75x);\n --data-type-width: var(--kds-dimension-icon-0-75x);\n --data-type-padding: var(--kds-spacing-container-none);\n }\n\n &.large {\n --data-type-height: var(--kds-dimension-component-height-1-25x);\n --data-type-width: var(--kds-dimension-component-width-1-25x);\n }\n\n /* The kds-data-type-icon class is needed to increase the specificity to overwrite the icon-stroke-width */\n & .kds-icon.kds-data-type-icon {\n &.small {\n --icon-stroke-width: var(--kds-border-width-icon-stroke-m);\n }\n\n &.medium {\n --icon-stroke-width: var(--kds-border-width-icon-stroke-l);\n }\n }\n}\n</style>\n","export const kdsBadgeVariant = {\n NEUTRAL: \"neutral\",\n INFO: \"info\",\n WARNING: \"warning\",\n SUCCESS: \"success\",\n ERROR: \"error\",\n GHOST: \"ghost\",\n} as const;\n\nexport const kdsBadgeVariants = Object.values(kdsBadgeVariant);\n\nexport const kdsBadgeSize = {\n XXSMALL: \"xxsmall\",\n XSMALL: \"xsmall\",\n} as const;\n\nexport const kdsBadgeSizes = Object.values(kdsBadgeSize);\n","<script setup lang=\"ts\">\nimport { KdsIcon, type KdsIconSize } from \"../Icon\";\n\nimport { kdsBadgeSize, kdsBadgeVariant } from \"./enums\";\nimport type { KdsBadgeProps, KdsBadgeSize } from \"./types\";\n\nwithDefaults(defineProps<KdsBadgeProps>(), {\n variant: kdsBadgeVariant.NEUTRAL,\n size: kdsBadgeSize.XSMALL,\n icon: undefined,\n});\n\nconst sizeToIconSize: Record<KdsBadgeSize, KdsIconSize> = {\n xxsmall: \"xsmall\",\n xsmall: \"small\",\n};\n</script>\n\n<template>\n <span :class=\"['kds-badge', size, variant]\">\n <KdsIcon v-if=\"icon\" :name=\"icon\" :size=\"sizeToIconSize[size]\" />\n <span class=\"label-wrapper\">{{ label }}</span>\n </span>\n</template>\n\n<style scoped>\n.kds-badge {\n display: inline-flex;\n align-items: center;\n max-width: 100%;\n border-radius: var(--kds-border-radius-container-pill);\n\n & .label-wrapper {\n min-width: 0;\n max-width: var(--kds-dimension-component-width-16x);\n padding: 0 var(--kds-spacing-container-0-12x);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n &.xxsmall {\n height: var(--kds-dimension-component-height-1x);\n padding: 0 var(--kds-spacing-container-0-25x);\n font: var(--kds-font-base-title-xsmall);\n }\n\n &.xsmall {\n gap: var(--kds-spacing-container-0-12x);\n height: var(--kds-dimension-component-height-1-25x);\n padding: 0 var(--kds-spacing-container-0-37x);\n font: var(--kds-font-base-title-small);\n }\n\n &.neutral {\n color: var(--kds-color-text-and-icon-neutral);\n background-color: var(--kds-color-background-neutral-bold-initial);\n border: var(--kds-border-base-subtle);\n }\n\n &.info {\n color: var(--kds-color-text-and-icon-info);\n background-color: var(--kds-color-background-static-info);\n border: var(--kds-border-base-info);\n }\n\n &.warning {\n color: var(--kds-color-text-and-icon-warning);\n background-color: var(--kds-color-background-static-warning);\n border: var(--kds-border-base-warning);\n }\n\n &.success {\n color: var(--kds-color-text-and-icon-success);\n background-color: var(--kds-color-background-static-success);\n border: var(--kds-border-base-success);\n }\n\n &.error {\n color: var(--kds-color-text-and-icon-danger);\n background-color: var(--kds-color-background-static-danger);\n border: var(--kds-border-base-danger);\n }\n\n &.ghost {\n color: var(--kds-color-text-and-icon-neutral);\n background-color: transparent;\n border: var(--kds-border-base-subtle);\n }\n}\n</style>\n","export const kdsColorSwatchType = {\n LEARNER: \"learner\",\n MANIPULATOR: \"manipulator\",\n PREDICTOR: \"predictor\",\n SINK: \"sink\",\n SOURCE: \"source\",\n VISUALIZER: \"visualizer\",\n OTHER: \"other\",\n} as const;\n\nexport const kdsColorSwatchTypes = Object.values(kdsColorSwatchType);\n\nexport const kdsColorSwatchSize = {\n SMALL: \"small\",\n MEDIUM: \"medium\",\n LARGE: \"large\",\n} as const;\n\nexport const kdsColorSwatchSizes = Object.values(kdsColorSwatchSize);\n","<script setup lang=\"ts\">\nimport { computed } from \"vue\";\n\nimport { kdsColorSwatchSize } from \"./enums\";\nimport type { KdsColorSwatchProps, KdsColorSwatchType } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsColorSwatchProps>(), {\n size: kdsColorSwatchSize.SMALL,\n title: undefined,\n});\n\nconst typeToTokenColor: Record<KdsColorSwatchType, string> = {\n learner: \"var(--kds-color-nodes-and-variables-learner)\",\n manipulator: \"var(--kds-color-nodes-and-variables-manipulator)\",\n predictor: \"var(--kds-color-nodes-and-variables-predictor)\",\n sink: \"var(--kds-color-nodes-and-variables-sink)\",\n source: \"var(--kds-color-nodes-and-variables-source)\",\n visualizer: \"var(--kds-color-nodes-and-variables-visualizer)\",\n other: \"var(--kds-color-nodes-and-variables-other)\",\n};\n\nconst isKdsColorSwatchType = (value: string): value is KdsColorSwatchType =>\n Object.hasOwn(typeToTokenColor, value);\n\nconst backgroundColor = computed(() => {\n if (isKdsColorSwatchType(props.color)) {\n return typeToTokenColor[props.color];\n }\n return props.color;\n});\n\nconst accessibleTitle = computed(() => props.title?.trim() ?? \"\");\nconst hasTitle = computed(() => accessibleTitle.value.length > 0);\n</script>\n\n<template>\n <span\n :role=\"hasTitle ? 'img' : 'presentation'\"\n class=\"kds-color-swatch\"\n :class=\"props.size\"\n :title=\"hasTitle ? accessibleTitle : undefined\"\n :style=\"{ backgroundColor }\"\n :aria-hidden=\"hasTitle ? undefined : 'true'\"\n :aria-label=\"hasTitle ? accessibleTitle : undefined\"\n />\n</template>\n\n<style scoped>\n.kds-color-swatch {\n display: inline-block;\n flex-shrink: 0;\n overflow: hidden;\n line-height: 0;\n border: var(--kds-border-base-muted);\n border-radius: var(--kds-border-radius-container-0-25x);\n\n &.small {\n width: var(--kds-dimension-icon-0-75x);\n height: var(--kds-dimension-icon-0-75x);\n }\n\n &.medium {\n width: var(--kds-dimension-icon-1x);\n height: var(--kds-dimension-icon-1x);\n }\n\n &.large {\n width: var(--kds-dimension-component-width-1-25x);\n height: var(--kds-dimension-component-height-1-25x);\n }\n}\n</style>\n","export const kdsDarkModeType = {\n LIGHT: \"light\",\n DARK: \"dark\",\n SYSTEM: \"system\",\n} as const;\n\nexport const kdsDarkModeTypes = Object.values(kdsDarkModeType);\n","import { computed, watch } from \"vue\";\nimport { useDark, useLocalStorage, usePreferredDark } from \"@vueuse/core\";\n\nimport { kdsDarkModeType } from \"./enums\";\n\nexport const KDS_DARK_MODE_STORAGE_KEY = \"KNIME_DARK_MODE\";\n\nexport type KdsDarkModeType =\n (typeof kdsDarkModeType)[keyof typeof kdsDarkModeType];\n\n// could also be system, but the previous behaviour forced it to light, so we use that\nconst defaultMode: KdsDarkModeType = kdsDarkModeType.LIGHT;\n\nexport const useKdsDarkMode = () => {\n // to also save a 'system' option we need to store the preference separately from the effective dark mode\n const userPreference = useLocalStorage<KdsDarkModeType>(\n KDS_DARK_MODE_STORAGE_KEY,\n defaultMode,\n );\n\n const isDark = useDark({\n storageKey: `${KDS_DARK_MODE_STORAGE_KEY}_EFFECTIVE`,\n initialValue: defaultMode,\n onChanged: (isDarkValue) => {\n let cssMode: string, themeValue: string;\n\n if (userPreference.value === kdsDarkModeType.SYSTEM) {\n cssMode = \"light dark\";\n themeValue = kdsDarkModeType.SYSTEM;\n } else {\n cssMode = themeValue = isDarkValue\n ? kdsDarkModeType.DARK\n : kdsDarkModeType.LIGHT;\n }\n\n document.documentElement.style.setProperty(\"color-scheme\", cssMode);\n document.documentElement.dataset.theme = themeValue;\n },\n });\n\n // react on both system and user preference changes, invokes onChanged function in the custom useDark implementation above\n const systemPrefersDark = usePreferredDark();\n watch(\n [userPreference, systemPrefersDark],\n ([preference, systemDark]) => {\n if (preference === kdsDarkModeType.SYSTEM) {\n isDark.value = systemDark;\n } else {\n isDark.value = preference === kdsDarkModeType.DARK;\n }\n },\n { immediate: true },\n );\n\n const currentMode = computed<KdsDarkModeType>({\n get() {\n return userPreference.value;\n },\n set(value: KdsDarkModeType) {\n userPreference.value = value;\n },\n });\n\n const isDarkMode = computed(() => {\n return userPreference.value === kdsDarkModeType.DARK;\n });\n\n const isLightMode = computed(() => {\n return userPreference.value === kdsDarkModeType.LIGHT;\n });\n\n const isSystemMode = computed(\n () => userPreference.value === kdsDarkModeType.SYSTEM,\n );\n\n return {\n /** Exposes a writable computed ref to get the current dark mode but also use it in e.g. a v-model to set it */\n currentMode,\n /** Whether or not the current user preference is dark. Note, if the preference is set to 'system' it will return false. */\n isDarkMode,\n /** Whether or not the current user preference is light. Note, if the preference is set to 'system' it will return false. */\n isLightMode,\n /** Whether or not the current user preference is set to 'system'. */\n isSystemMode,\n };\n};\n","import { ref, watch } from \"vue\";\n\nconst legacyMode = ref(false);\n\nexport const useKdsLegacyMode = (initialValue: boolean = false) => {\n if (legacyMode.value !== initialValue) {\n legacyMode.value = initialValue;\n }\n\n watch(\n () => legacyMode.value,\n (newValue) => {\n document.documentElement.classList.toggle(\"kds-legacy\", newValue);\n },\n { immediate: true },\n );\n\n return {\n /** Writable ref to get and/or set the legacy mode; can also be used with v-model */\n legacyMode,\n };\n};\n","import { type Ref, ref } from \"vue\";\nimport { useMutationObserver, useResizeObserver } from \"@vueuse/core\";\n\nexport function elementOverflowsHorizontally(\n element: HTMLElement | null,\n): boolean {\n if (!element) {\n return false;\n }\n return element.scrollWidth > element.clientWidth;\n}\n\nexport function elementOverflowsVertically(\n element: HTMLElement | null,\n): boolean {\n if (!element) {\n return false;\n }\n return element.scrollHeight > element.clientHeight;\n}\n\n/**\n * Tracks whether the content of an element is visually truncated.\n *\n * Detects both horizontal truncation (e.g. `text-overflow: ellipsis`)\n * and vertical truncation (e.g. `-webkit-line-clamp`).\n *\n * This can be used to set tooltips or other UI affordances when text is cut off.\n * Changing the size of the provided element based on this composable may result in an infinite loop!\n *\n * @param elementRef - A ref pointing to the element that might be truncated.\n * @returns An object containing a reactive `isTruncated` ref.\n */\nexport function useKdsIsTruncated(elementRef: Ref<HTMLElement | null>) {\n const isTruncated = ref(false);\n\n const checkTruncation = () => {\n isTruncated.value =\n elementOverflowsHorizontally(elementRef.value) ||\n elementOverflowsVertically(elementRef.value);\n };\n\n useResizeObserver(elementRef, checkTruncation);\n\n // Observe changes to the element's subtree, including text-node updates,\n // so content changes without size changes still re-check truncation.\n useMutationObserver(elementRef, checkTruncation, {\n childList: true,\n characterData: true,\n subtree: true,\n // Also observe attribute changes (especially class/style) that can affect\n // truncation without necessarily triggering a resize event.\n attributes: true,\n attributeFilter: [\"class\", \"style\"],\n });\n\n return { isTruncated };\n}\n","<script setup lang=\"ts\">\nimport { computed, useTemplateRef } from \"vue\";\n\nimport { useKdsIsTruncated } from \"../../util\";\n\nimport type { KdsLiveStatusProps } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsLiveStatusProps>(), {\n status: \"red\",\n size: \"medium\",\n label: \"\",\n title: undefined,\n});\n\nconst accessibleTitle = computed(\n () => props.title?.trim() || `Status is ${props.status}`,\n);\n\nconst labelEl = useTemplateRef(\"labelEl\");\nconst { isTruncated } = useKdsIsTruncated(labelEl);\n</script>\n\n<template>\n <span\n :class=\"['kds-live-status', props.status, `size-${props.size}`]\"\n role=\"img\"\n :title=\"accessibleTitle\"\n :aria-label=\"accessibleTitle\"\n >\n <span class=\"dot\" />\n <span\n v-if=\"props.label\"\n ref=\"labelEl\"\n class=\"label\"\n :title=\"isTruncated ? props.label : undefined\"\n >\n {{ props.label }}\n </span>\n </span>\n</template>\n\n<style scoped>\n.kds-live-status {\n --dot-color: var(--kds-color-text-and-icon-disabled);\n\n display: inline-flex;\n flex-shrink: 0;\n gap: 0; /* gap already included in dot */\n align-items: center;\n max-width: 100%;\n line-height: 0;\n\n &.red {\n --dot-color: var(--kds-color-text-and-icon-danger);\n }\n\n &.orange {\n --dot-color: var(--kds-color-text-and-icon-warning);\n }\n\n &.green {\n --dot-color: var(--kds-color-text-and-icon-success);\n }\n\n .dot {\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: var(--kds-dimension-icon-1-25x);\n height: var(--kds-dimension-icon-1-25x);\n\n &::after {\n display: block;\n width: 50%;\n height: 50%;\n content: \"\";\n background-color: var(--dot-color);\n border-radius: var(--kds-border-radius-container-pill);\n }\n }\n\n .label {\n overflow: hidden;\n text-overflow: ellipsis;\n font: var(--kds-font-base-subtext-medium);\n color: var(--kds-color-text-and-icon-neutral);\n white-space: nowrap;\n }\n\n &.size-medium {\n .dot {\n width: var(--kds-dimension-icon-1x);\n height: var(--kds-dimension-icon-1x);\n }\n\n .label {\n font: var(--kds-font-base-subtext-small);\n }\n }\n\n &.size-small {\n .dot {\n width: var(--kds-dimension-icon-0-75x);\n height: var(--kds-dimension-icon-0-75x);\n }\n\n .label {\n font: var(--kds-font-base-subtext-xsmall);\n }\n }\n}\n</style>\n","export const kdsLiveStatusStatus = {\n RED: \"red\",\n ORANGE: \"orange\",\n GREEN: \"green\",\n DISABLED: \"disabled\",\n} as const;\n\nexport const kdsLiveStatusStatuses = Object.values(kdsLiveStatusStatus);\n\nexport const kdsLiveStatusSize = {\n LARGE: \"large\",\n MEDIUM: \"medium\",\n SMALL: \"small\",\n} as const;\n\nexport const kdsLiveStatusSizes = Object.values(kdsLiveStatusSize);\n","<script lang=\"ts\" setup>\nimport type { KdsLoadingSpinnerProps } from \"./types\";\n\nwithDefaults(defineProps<KdsLoadingSpinnerProps>(), {\n variant: \"onSurface\",\n size: \"medium\",\n});\n</script>\n\n<template>\n <svg\n :class=\"['kds-loading-spinner', size]\"\n :data-style=\"variant\"\n viewBox=\"0 0 120 120\"\n >\n <circle class=\"track\" cx=\"60\" cy=\"60\" r=\"50\" />\n <circle class=\"loader\" cx=\"60\" cy=\"60\" r=\"50\" />\n </svg>\n</template>\n\n<style scoped>\n.kds-loading-spinner {\n --icon-width: var(--kds-dimension-icon-1x);\n --icon-height: var(--kds-dimension-icon-1x);\n --icon-stroke-width: 12; /* 10% of size */\n\n &.xsmall {\n --icon-width: var(--kds-dimension-icon-0-56x);\n --icon-height: var(--kds-dimension-icon-0-56x);\n }\n\n &.small {\n --icon-width: var(--kds-dimension-icon-0-75x);\n --icon-height: var(--kds-dimension-icon-0-75x);\n }\n\n &.large {\n --icon-width: var(--kds-dimension-icon-1-25x);\n --icon-height: var(--kds-dimension-icon-1-25x);\n }\n\n width: var(--icon-width);\n height: var(--icon-height);\n\n --color-track: var(--kds-color-loading-spinner-track-on-surface);\n --color-loader: var(--kds-color-loading-spinner-progress-on-surface);\n\n &[data-style=\"onPrimary\"] {\n --color-track: var(--kds-color-loading-spinner-track-on-primary);\n --color-loader: var(--kds-color-loading-spinner-progress-on-primary);\n }\n\n & .track {\n fill: none;\n stroke: var(--color-track);\n stroke-width: var(--icon-stroke-width);\n }\n\n & .loader {\n fill: none;\n stroke: var(--color-loader);\n stroke-width: var(--icon-stroke-width);\n stroke-linecap: round;\n stroke-dasharray: 80 240;\n transform: rotate(-90deg);\n transform-origin: center;\n\n /* REQUIRED for SVG rotation */\n transform-box: fill-box;\n animation: spin 1.2s linear infinite;\n }\n}\n\n@keyframes spin {\n from {\n transform: rotate(-90deg);\n }\n\n to {\n transform: rotate(270deg);\n }\n}\n</style>\n","export const kdsLoadingSpinnerVariant = {\n ON_PRIMARY: \"onPrimary\",\n ON_SURFACE: \"onSurface\",\n} as const;\n\nexport const kdsLoadingSpinnerVariants = Object.values(\n kdsLoadingSpinnerVariant,\n);\n","<script setup lang=\"ts\">\nimport { type HTMLAttributes, computed } from \"vue\";\n\nimport KdsIcon from \"../Icon/KdsIcon.vue\";\nimport type { KdsIconName } from \"../Icon/types.ts\";\n\nimport type { KdsInlineMessageProps } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsInlineMessageProps>(), {\n variant: \"info\",\n message: undefined,\n});\n\nconst classes = computed(() => [\"kds-inline-message\", props.variant]);\n\nconst iconName = computed<KdsIconName>(() => {\n switch (props.variant) {\n case \"success\":\n return \"circle-success\";\n case \"error\":\n return \"circle-error\";\n case \"warning\":\n return \"warning\";\n case \"info\":\n default:\n return \"circle-info\";\n }\n});\n\nconst role = computed<HTMLAttributes[\"role\"]>(() =>\n props.variant === \"warning\" || props.variant === \"error\" ? \"alert\" : \"status\",\n);\n</script>\n\n<template>\n <div :class=\"classes\" :role=\"role\">\n <div class=\"header\">\n <KdsIcon class=\"icon\" :name=\"iconName\" size=\"small\" />\n <div class=\"title\">\n {{ props.title }}\n </div>\n </div>\n\n <div v-if=\"props.message\" class=\"body\">\n {{ props.message }}\n </div>\n </div>\n</template>\n\n<style scoped>\n.kds-inline-message {\n display: flex;\n flex-direction: column;\n gap: var(--kds-spacing-container-0-25x);\n align-items: flex-start;\n padding: calc(\n var(--kds-spacing-container-0-5x) - var(--kds-core-border-width-xs)\n );\n color: var(--kds-color-text-and-icon-neutral);\n border-radius: var(--kds-border-radius-container-0-50x);\n\n .header {\n display: flex;\n gap: var(--kds-spacing-container-0-25x);\n align-items: flex-start;\n\n .icon {\n align-self: flex-start;\n margin-top: var(--kds-spacing-container-0-12x);\n color: var(--icon-color);\n }\n\n .title {\n font: var(--kds-font-base-title-small-strong);\n }\n }\n\n .body {\n align-self: stretch;\n padding-left: var(--kds-spacing-container-1x);\n font: var(--kds-font-base-body-small);\n color: var(--kds-color-text-and-icon-muted);\n }\n\n &.info {\n --icon-color: var(--kds-color-text-and-icon-info);\n\n background-color: var(--kds-color-background-static-info-muted);\n border: var(--kds-border-base-info);\n }\n\n &.success {\n --icon-color: var(--kds-color-text-and-icon-success);\n\n background-color: var(--kds-color-background-static-success-muted);\n border: var(--kds-border-base-success);\n }\n\n &.error {\n --icon-color: var(--kds-color-text-and-icon-danger);\n\n background-color: var(--kds-color-background-static-danger-muted);\n border: var(--kds-border-base-danger);\n }\n\n &.warning {\n --icon-color: var(--kds-color-text-and-icon-warning);\n\n background-color: var(--kds-color-background-static-warning-muted);\n border: var(--kds-border-base-warning);\n }\n}\n</style>\n","export const kdsInlineMessageVariant = {\n ERROR: \"error\",\n INFO: \"info\",\n SUCCESS: \"success\",\n WARNING: \"warning\",\n} as const;\n\nexport const kdsInlineMessageVariants = Object.values(kdsInlineMessageVariant);\n","<script setup lang=\"ts\">\nimport { type Component, computed } from \"vue\";\n\nimport KdsIcon from \"../accessories/Icon/KdsIcon.vue\";\n\nimport type { BaseButtonProps } from \"./types\";\n\ntype BaseButtonPropsWithComponent = BaseButtonProps & {\n component?: string | Component;\n};\n\nconst props = withDefaults(defineProps<BaseButtonPropsWithComponent>(), {\n component: \"button\",\n size: \"medium\",\n destructive: false,\n success: false,\n error: false,\n disabled: false,\n toggled: false,\n});\n\nconst emit = defineEmits<{\n click: [event: MouseEvent];\n}>();\n\nconst classes = computed(() => [\n \"button\",\n props.size,\n props.variant,\n { destructive: props.destructive },\n { disabled: props.disabled },\n { toggled: props.toggled },\n { success: props.success },\n { error: props.error },\n]);\n\nconst iconSize = computed(() => {\n if (props.size === \"xsmall\") {\n return \"small\";\n } else {\n return props.size;\n }\n});\n\nfunction onClick(e: MouseEvent) {\n if (!props.disabled) {\n emit(\"click\", e);\n }\n}\n</script>\n\n<template>\n <Component\n :is=\"component\"\n :class=\"classes\"\n :disabled=\"props.disabled\"\n :title=\"props.title\"\n :aria-label=\"props.ariaLabel\"\n @click=\"onClick($event)\"\n >\n <slot name=\"leading\">\n <KdsIcon\n v-if=\"props.leadingIcon\"\n :name=\"props.leadingIcon\"\n :size=\"iconSize\"\n />\n </slot>\n <span v-if=\"props.label\" class=\"label\">{{ props.label }}</span>\n <KdsIcon\n v-if=\"props.trailingIcon && props.label\"\n :name=\"props.trailingIcon\"\n :size=\"iconSize\"\n />\n </Component>\n</template>\n\n<style>\nhtml.kds-legacy {\n --kds-legacy-button-border-radius: var(--kds-border-radius-container-pill);\n}\n</style>\n\n<style scoped>\n.button {\n position: relative;\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: fit-content;\n min-width: 15px;\n max-width: 100%;\n overflow: hidden;\n cursor: pointer;\n\n /* for LinkButton */\n &:is(a) {\n text-decoration: none;\n }\n\n &.disabled {\n cursor: default;\n }\n\n &:focus-visible {\n outline: var(--kds-border-action-focused);\n outline-offset: var(--kds-spacing-offset-focus);\n }\n\n &.filled {\n color: var(--kds-color-text-and-icon-primary-inverted);\n background-color: var(--kds-color-background-primary-bold-initial);\n border: var(--kds-border-action-transparent);\n\n &.disabled {\n color: var(--kds-color-text-and-icon-disabled-inverted);\n background-color: var(--kds-color-background-disabled-primary);\n }\n\n &:not(.disabled, .success, .error) {\n &:hover {\n background-color: var(--kds-color-background-primary-bold-hover);\n }\n\n &:active {\n background-color: var(--kds-color-background-primary-bold-active);\n }\n }\n\n &.destructive {\n color: var(--kds-color-text-and-icon-danger-inverted);\n background-color: var(--kds-color-background-danger-bold-initial);\n\n &.disabled {\n color: var(--kds-color-text-and-icon-disabled-inverted);\n background-color: var(--kds-color-background-disabled-danger);\n }\n\n &:not(.disabled, .success, .error) {\n &:hover {\n background-color: var(--kds-color-background-danger-bold-hover);\n }\n\n &:active {\n background-color: var(--kds-color-background-danger-bold-active);\n }\n }\n }\n }\n\n &.outlined {\n color: var(--kds-color-text-and-icon-neutral);\n background-color: var(--kds-color-background-neutral-initial);\n border: var(--kds-border-action-default);\n\n &.disabled {\n color: var(--kds-color-text-and-icon-disabled);\n border: var(--kds-border-action-disabled);\n }\n\n &:not(.disabled, .success, .error) {\n &:hover {\n background-color: var(--kds-color-background-neutral-hover);\n }\n\n &:active {\n background-color: var(--kds-color-background-neutral-active);\n }\n }\n\n &.destructive {\n color: var(--kds-color-text-and-icon-danger);\n border: var(--kds-border-action-error);\n\n &.disabled {\n color: var(--kds-color-text-and-icon-disabled);\n border: var(--kds-border-action-disabled);\n }\n\n &:not(.disabled, .success, .error) {\n &:hover {\n background-color: var(--kds-color-background-danger-hover);\n }\n\n &:active {\n background-color: var(--kds-color-background-danger-active);\n }\n }\n }\n }\n\n &.transparent {\n color: var(--kds-color-text-and-icon-neutral);\n background-color: var(--kds-color-background-neutral-initial);\n border: var(--kds-border-action-transparent);\n\n &.disabled {\n color: var(--kds-color-text-and-icon-disabled);\n }\n\n &:not(.disabled, .success, .error) {\n &:hover {\n background-color: var(--kds-color-background-neutral-hover);\n }\n\n &:active {\n background-color: var(--kds-color-background-neutral-active);\n }\n }\n\n &.destructive {\n color: var(--kds-color-text-and-icon-danger);\n\n &.disabled {\n color: var(--kds-color-text-and-icon-disabled);\n }\n\n &:not(.disabled, .success, .error) {\n &:hover {\n background-color: var(--kds-color-background-danger-hover);\n }\n\n &:active {\n background-color: var(--kds-color-background-danger-active);\n }\n }\n }\n }\n\n &.toggled {\n color: var(--kds-color-text-and-icon-selected);\n background-color: var(--kds-color-background-selected-initial);\n border: var(--kds-border-action-selected);\n\n &.disabled {\n color: var(--kds-color-text-and-icon-disabled);\n }\n\n &:not(.disabled, .success, .error) {\n &:hover {\n background-color: var(--kds-color-background-selected-hover);\n }\n\n &:active {\n background-color: var(--kds-color-background-selected-active);\n }\n }\n }\n\n & .label {\n max-width: 200px;\n padding: 0 var(--kds-spacing-container-0-12x);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n text-rendering: geometricprecision;\n }\n\n &.xsmall {\n gap: var(--kds-spacing-container-0-12x);\n height: var(--kds-dimension-component-height-1-25x);\n padding: 0\n calc(var(--kds-spacing-container-0-25x) - var(--kds-core-border-width-xs)); /* needed as border in Figma is not increasing the width */\n\n font: var(--kds-font-base-interactive-xsmall-strong);\n border-radius: var(\n --kds-legacy-button-border-radius,\n var(--kds-border-radius-container-0-25x)\n );\n }\n\n &.small {\n gap: var(--kds-spacing-container-0-12x);\n height: var(--kds-dimension-component-height-1-5x);\n padding: 0\n calc(var(--kds-spacing-container-0-37x) - var(--kds-core-border-width-xs)); /* needed as border in Figma is not increasing the width */\n\n font: var(--kds-font-base-interactive-small-strong);\n border-radius: var(\n --kds-legacy-button-border-radius,\n var(--kds-border-radius-container-0-37x)\n );\n }\n\n &.medium {\n gap: var(--kds-spacing-container-0-25x);\n height: var(--kds-dimension-component-height-1-75x);\n padding: 0\n calc(var(--kds-spacing-container-0-37x) - var(--kds-core-border-width-xs)); /* needed as border in Figma is not increasing the width */\n\n font: var(--kds-font-base-interactive-medium-strong);\n border-radius: var(\n --kds-legacy-button-border-radius,\n var(--kds-border-radius-container-0-37x)\n );\n }\n\n &.large {\n gap: var(--kds-spacing-container-0-25x);\n height: var(--kds-dimension-component-height-2-25x);\n padding: 0\n calc(var(--kds-spacing-container-0-5x) - var(--kds-core-border-width-xs)); /* needed as border in Figma is not increasing the width */\n\n font: var(--kds-font-base-interactive-large-strong);\n border-radius: var(\n --kds-legacy-button-border-radius,\n var(--kds-border-radius-container-0-50x)\n );\n\n & .label {\n padding: 0 var(--kds-spacing-container-0-25x);\n }\n }\n\n &.success {\n color: var(--kds-color-text-and-icon-success-inverted);\n background-color: var(--kds-color-background-success-bold-initial);\n border: var(--kds-border-action-transparent);\n transition:\n background-color 200ms ease-out,\n border-color 200ms ease-out,\n color 200ms ease-out;\n }\n\n &.error {\n color: var(--kds-color-text-and-icon-danger-inverted);\n background-color: var(--kds-color-background-danger-bold-initial);\n border: var(--kds-border-action-transparent);\n transition:\n background-color 200ms ease-out,\n border-color 200ms ease-out,\n color 200ms ease-out;\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport BaseButton from \"../BaseButton.vue\";\n\nimport type { KdsButtonProps } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsButtonProps>(), {\n variant: \"filled\",\n});\n\nconst emit = defineEmits<{\n click: [event: MouseEvent];\n}>();\n</script>\n\n<template>\n <BaseButton v-bind=\"props\" @click=\"emit('click', $event)\" />\n</template>\n","import { defineComponent, getCurrentInstance, h, useSlots } from \"vue\";\n\nconst getAppInstance = () => {\n const currentInstance = getCurrentInstance();\n\n return currentInstance?.appContext.app;\n};\n\nexport const resolveNuxtLinkComponent = () => {\n const app = getAppInstance();\n\n // only works when NuxtLink is registered globally, which it's not by default\n const nuxtLinkComponent = app?.component(\"NuxtLink\");\n if (nuxtLinkComponent) {\n return nuxtLinkComponent;\n }\n\n const routerLinkComponent = app?.component(\"RouterLink\");\n if (routerLinkComponent) {\n return routerLinkComponent;\n }\n\n // fallback component when neither NuxtLink nor RouterLink are available\n const fallbackComponent = defineComponent({\n props: {\n to: {\n type: String,\n default: \"\",\n },\n },\n\n render() {\n return h(\"a\", { href: this.to }, [useSlots().default?.()]);\n },\n });\n\n return fallbackComponent;\n};\n","<script setup lang=\"ts\">\nimport { computed } from \"vue\";\n\nimport { resolveNuxtLinkComponent } from \"../../util/nuxtComponentResolver\";\nimport BaseButton from \"../BaseButton.vue\";\n\nimport type { KdsLinkButtonProps } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsLinkButtonProps>(), {\n variant: \"filled\",\n download: undefined,\n rel: null,\n target: null,\n});\n\nconst component = computed(() => {\n if (props.disabled) {\n return \"button\";\n }\n return resolveNuxtLinkComponent();\n});\n\nconst emit = defineEmits<{\n click: [event: MouseEvent];\n}>();\n</script>\n\n<template>\n <BaseButton\n v-bind=\"props\"\n :component=\"component\"\n @click=\"emit('click', $event)\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport BaseButton from \"../BaseButton.vue\";\n\nimport type { KdsToggleButtonProps } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsToggleButtonProps>(), {\n variant: \"outlined\",\n});\n\nconst modelValue = defineModel<boolean>({ default: false });\n</script>\n\n<template>\n <BaseButton\n v-bind=\"props\"\n :toggled=\"modelValue\"\n :aria-pressed=\"modelValue\"\n @click=\"modelValue = !modelValue\"\n />\n</template>\n","export const kdsToggleButtonVariant = {\n OUTLINED: \"outlined\",\n TRANSPARENT: \"transparent\",\n} as const;\n\nexport const kdsToggleButtonVariants = Object.values(kdsToggleButtonVariant);\n","<script setup lang=\"ts\">\nimport { computed } from \"vue\";\n\nimport type { KdsIconSize } from \"../../accessories\";\nimport KdsIcon from \"../../accessories/Icon/KdsIcon.vue\";\nimport KdsLoadingSpinner from \"../../accessories/LoadingSpinner/KdsLoadingSpinner.vue\";\nimport BaseButton from \"../BaseButton.vue\";\n\nimport type { KdsProgressButtonProps, KdsProgressButtonState } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsProgressButtonProps>(), {\n variant: \"filled\",\n size: \"medium\",\n disabled: false,\n});\n\nconst emit = defineEmits<{\n /**\n * Fired when the button is clicked.\n *\n * This event is only emitted when `state` is `default`.\n * Clicks while in `progress`, `success` or `error` are ignored.\n */\n click: [event: MouseEvent];\n}>();\n\nconst state = defineModel<KdsProgressButtonState>(\"state\", {\n default: \"default\",\n});\n\nconst iconSize = computed<KdsIconSize>(() => {\n if (props.size === \"xsmall\") {\n return \"small\";\n }\n return props.size;\n});\n\nfunction onClick(event: MouseEvent) {\n event.preventDefault();\n\n if (state.value !== \"default\") {\n return;\n }\n\n emit(\"click\", event);\n}\n\nconst baseButtonProps = computed(() => ({\n variant: props.variant,\n size: props.size,\n disabled: props.disabled,\n success: state.value === \"success\",\n error: state.value === \"error\",\n title: props.ariaLabel,\n label: props.label,\n leadingIcon: props.leadingIcon,\n ariaLabel: props.ariaLabel,\n}));\n</script>\n\n<template>\n <BaseButton\n v-bind=\"baseButtonProps\"\n class=\"kds-progress-button\"\n :data-kds-progress-state=\"state\"\n @click=\"onClick\"\n >\n <template #leading>\n <span :class=\"['leading', iconSize]\">\n <span class=\"leading-icon\" :data-visible=\"state !== 'progress'\">\n <KdsIcon :name=\"props.leadingIcon\" :size=\"iconSize\" />\n </span>\n <span class=\"spinner\" :data-visible=\"state === 'progress'\">\n <KdsLoadingSpinner\n :size=\"iconSize\"\n :variant=\"props.variant === 'filled' ? 'onPrimary' : 'onSurface'\"\n />\n </span>\n </span>\n </template>\n </BaseButton>\n</template>\n\n<style scoped>\n.leading {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--kds-dimension-icon-1x);\n height: var(--kds-dimension-icon-1x);\n\n &.xsmall {\n width: var(--kds-dimension-icon-0-56x);\n height: var(--kds-dimension-icon-0-56x);\n }\n\n &.small {\n width: var(--kds-dimension-icon-0-75x);\n height: var(--kds-dimension-icon-0-75x);\n }\n\n &.large {\n width: var(--kds-dimension-icon-1-25x);\n height: var(--kds-dimension-icon-1-25x);\n }\n}\n\n.leading-icon,\n.spinner {\n position: absolute;\n inset: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n opacity: 0;\n transition: opacity 200ms ease-out;\n}\n\n.leading-icon[data-visible=\"true\"],\n.spinner[data-visible=\"true\"] {\n opacity: 1;\n}\n</style>\n","export const kdsProgressButtonState = {\n DEFAULT: \"default\",\n PROGRESS: \"progress\",\n SUCCESS: \"success\",\n ERROR: \"error\",\n} as const;\n\nexport const kdsProgressButtonStates = Object.values(kdsProgressButtonState);\n","export const kdsButtonSize = {\n XSMALL: \"xsmall\",\n SMALL: \"small\",\n MEDIUM: \"medium\",\n LARGE: \"large\",\n} as const;\n\nexport const kdsButtonSizes = Object.values(kdsButtonSize);\n\nexport const kdsButtonVariant = {\n FILLED: \"filled\",\n OUTLINED: \"outlined\",\n TRANSPARENT: \"transparent\",\n} as const;\n\nexport const kdsButtonVariants = Object.values(kdsButtonVariant);\n","<script setup lang=\"ts\">\nimport { defineAsyncComponent, useTemplateRef } from \"vue\";\n\nimport { useKdsIsTruncated } from \"../../util\";\nimport type { KdsLabelProps } from \"../types\";\n\nconst props = withDefaults(defineProps<KdsLabelProps>(), {\n description: undefined,\n showDescriptionButton: false,\n});\n\nconst KdsInfoToggleButton = defineAsyncComponent(\n () => import(\"./InfoPopover/KdsInfoToggleButton.vue\"),\n);\n\nconst labelEl = useTemplateRef(\"labelEl\");\nconst { isTruncated } = useKdsIsTruncated(labelEl);\n</script>\n\n<template>\n <div class=\"kds-label-wrapper\">\n <label\n :id=\"props.id\"\n ref=\"labelEl\"\n :for=\"props.for\"\n class=\"label\"\n :title=\"isTruncated ? props.label : undefined\"\n >\n {{ props.label }}\n </label>\n <KdsInfoToggleButton\n v-if=\"props.description\"\n :content=\"props.description\"\n :hidden=\"!props.showDescriptionButton\"\n />\n </div>\n</template>\n\n<style scoped>\n.kds-label-wrapper {\n display: flex;\n gap: var(--kds-spacing-container-0-12x);\n align-items: center;\n max-width: 100%;\n min-height: var(--kds-dimension-component-height-0-75x);\n padding-bottom: var(--kds-spacing-input-label-spacing-bottom);\n}\n\n.label {\n display: block;\n flex-grow: 1;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n font: var(--kds-font-base-title-small-strong);\n color: var(--kds-color-text-and-icon-neutral);\n white-space: nowrap;\n}\n</style>\n","<script setup lang=\"ts\">\nimport KdsIcon from \"../../accessories/Icon/KdsIcon.vue\";\nimport KdsLoadingSpinner from \"../../accessories/LoadingSpinner/KdsLoadingSpinner.vue\";\nimport type { KdsSubTextProps } from \"../types\";\n\nconst props = withDefaults(defineProps<KdsSubTextProps>(), {\n error: false,\n validating: false,\n preserveSubTextSpace: false,\n});\n</script>\n\n<template>\n <div\n v-if=\"props.subText || props.preserveSubTextSpace\"\n :id=\"props.id\"\n :class=\"{\n subtext: true,\n error: props.error,\n }\"\n >\n <template v-if=\"props.error && props.subText\">\n <KdsIcon name=\"circle-error\" size=\"small\" aria-label=\"Error\" />\n </template>\n <template v-else-if=\"props.validating && props.subText\">\n <KdsLoadingSpinner size=\"small\" variant=\"onSurface\" aria-hidden=\"true\" />\n </template>\n <span class=\"subtext-text\">{{ props.subText }}</span>\n </div>\n</template>\n\n<style scoped>\n.subtext {\n display: flex;\n gap: var(--kds-spacing-container-0-25x);\n min-height: 1lh;\n margin-top: var(--kds-spacing-container-0-25x);\n font: var(--kds-font-base-subtext-small);\n color: var(--kds-color-text-and-icon-muted);\n\n &.error {\n color: var(--kds-color-text-and-icon-danger);\n }\n\n & .subtext-text {\n min-width: 0;\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed, useId } from \"vue\";\n\nimport Icon from \"../../accessories/Icon/KdsIcon.vue\";\nimport KdsSubText from \"../_helper/KdsSubText.vue\";\n\nimport type { BaseCheckboxProps, KdsCheckboxValue } from \"./types\";\n\nconst props = withDefaults(defineProps<BaseCheckboxProps>(), {\n disabled: false,\n error: false,\n});\n\nconst modelValue = defineModel<KdsCheckboxValue>({ default: false });\n\nconst helperId = useId();\nconst descriptionId = useId();\n\nconst isChecked = computed(() => modelValue.value === true);\nconst isIndeterminate = computed(() => modelValue.value === \"indeterminate\");\nconst icon = computed(() => {\n if (isChecked.value) {\n return \"checkmark\";\n }\n if (isIndeterminate.value) {\n return \"minus\";\n }\n return null;\n});\n\nconst ariaChecked = computed(() => {\n if (isIndeterminate.value) {\n return \"mixed\";\n }\n return isChecked.value;\n});\n\nconst ariaDescribedBy = computed(() => {\n const ids: string[] = [];\n\n if (props.helperText) {\n ids.push(helperId);\n }\n\n if (props.subText) {\n ids.push(descriptionId);\n }\n\n return ids.length > 0 ? ids.join(\" \") : undefined;\n});\n\nconst handleClick = () => {\n if (props.disabled) {\n return;\n }\n\n modelValue.value = isIndeterminate.value ? true : !isChecked.value;\n};\n</script>\n\n<template>\n <div>\n <button\n :class=\"{\n checkbox: true,\n checked: isChecked,\n indeterminate: isIndeterminate,\n disabled: props.disabled,\n error: props.error,\n }\"\n :disabled=\"props.disabled\"\n :title=\"props.title\"\n :aria-label=\"props.title\"\n :aria-checked=\"ariaChecked\"\n :aria-describedby=\"ariaDescribedBy\"\n :aria-invalid=\"props.error\"\n type=\"button\"\n role=\"checkbox\"\n @click=\"handleClick\"\n >\n <div class=\"control\">\n <Icon v-if=\"icon\" :name=\"icon\" class=\"icon\" size=\"xsmall\" />\n </div>\n <div v-if=\"props.label || props.helperText\" class=\"content\">\n <div class=\"label\">{{ props.label }}</div>\n <div v-if=\"props.helperText\" :id=\"helperId\" class=\"helper-text\">\n {{ props.helperText }}\n </div>\n </div>\n </button>\n <div\n v-if=\"props.subText || props.preserveSubTextSpace\"\n class=\"subtext-wrapper\"\n >\n <KdsSubText\n :id=\"descriptionId\"\n :sub-text=\"props.subText\"\n :preserve-sub-text-space=\"props.preserveSubTextSpace\"\n :error=\"props.error\"\n />\n </div>\n </div>\n</template>\n\n<style scoped>\n.checkbox {\n --bg-initial: var(--kds-color-background-input-initial);\n --bg-hover: var(--kds-color-background-input-hover);\n --bg-active: var(--kds-color-background-input-active);\n --border: var(--kds-border-action-input);\n --icon-color: var(--kds-color-text-and-icon-selected);\n --text-color: var(--kds-color-text-and-icon-neutral);\n --helper-text-color: var(--kds-color-text-and-icon-muted);\n\n display: flex;\n gap: var(--kds-spacing-container-0-37x);\n align-items: flex-start;\n padding: 0;\n margin: 0;\n text-align: left;\n cursor: pointer;\n outline: none;\n background: none;\n border: none;\n\n .control {\n position: relative;\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: var(--kds-dimension-component-height-0-88x);\n height: var(--kds-dimension-component-height-0-88x);\n color: var(--icon-color);\n background: var(--bg-initial);\n border: var(--border);\n border-radius: var(--kds-border-radius-container-0-25x);\n }\n\n &:focus-visible .control {\n outline: var(--kds-border-action-focused);\n outline-offset: var(--kds-spacing-offset-focus);\n }\n\n &:hover:not(.disabled) .control {\n background: var(--bg-hover);\n }\n\n &:active:not(.disabled) .control {\n background: var(--bg-active);\n }\n\n &.checked,\n &.indeterminate {\n --bg-initial: var(--kds-color-background-selected-initial);\n --bg-hover: var(--kds-color-background-selected-hover);\n --bg-active: var(--kds-color-background-selected-active);\n --border: var(--kds-border-action-selected);\n }\n\n .content {\n display: flex;\n flex-direction: column;\n gap: var(--kds-spacing-container-0-12x);\n text-rendering: geometricprecision;\n\n & .label {\n font: var(--kds-font-base-interactive-small);\n color: var(--text-color);\n }\n\n & .helper-text {\n font: var(--kds-font-base-subtext-small);\n color: var(--helper-text-color);\n }\n }\n\n &.disabled {\n --border: var(--kds-border-action-disabled);\n --icon-color: var(--kds-color-text-and-icon-disabled);\n --text-color: var(--kds-color-text-and-icon-disabled);\n --helper-text-color: var(--kds-color-text-and-icon-disabled);\n\n cursor: default;\n }\n\n &.error {\n --border: var(--kds-border-action-error);\n --icon-color: var(--kds-color-text-and-icon-danger);\n --text-color: var(--kds-color-text-and-icon-danger);\n --bg-hover: var(--kds-color-background-danger-hover);\n --bg-active: var(--kds-color-background-danger-active);\n\n &.checked,\n &.indeterminate {\n --bg-initial: var(--kds-color-background-danger-initial);\n }\n }\n}\n\n.subtext-wrapper {\n padding-left: calc(\n var(--kds-dimension-component-height-0-88x) +\n var(--kds-spacing-container-0-37x)\n );\n}\n</style>\n","<script setup lang=\"ts\">\nimport BaseCheckbox from \"./BaseCheckbox.vue\";\nimport type { KdsCheckboxProps, KdsCheckboxValue } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsCheckboxProps>(), {\n disabled: false,\n error: false,\n preserveSubTextSpace: false,\n});\n\nconst modelValue = defineModel<KdsCheckboxValue>({ default: false });\n</script>\n\n<template>\n <BaseCheckbox\n v-model=\"modelValue\"\n :disabled=\"props.disabled\"\n :error=\"props.error\"\n :label=\"props.label\"\n :title=\"props.title\"\n :sub-text=\"props.subText\"\n :preserve-sub-text-space=\"props.preserveSubTextSpace\"\n />\n</template>\n","<script lang=\"ts\" setup>\nimport { computed, useId } from \"vue\";\n\nimport KdsLabel from \"../_helper/KdsLabel.vue\";\nimport KdsSubText from \"../_helper/KdsSubText.vue\";\n\nimport BaseCheckbox from \"./BaseCheckbox.vue\";\nimport type {\n KdsCheckboxGroupOption,\n KdsCheckboxGroupProps,\n KdsCheckboxValue,\n} from \"./types\";\n\nconst props = withDefaults(defineProps<KdsCheckboxGroupProps>(), {\n disabled: false,\n error: false,\n alignment: \"vertical\",\n});\n\nconst modelValue = defineModel<string[]>({ default: [] });\n\nconst possibleValues = computed(\n () =>\n props.possibleValues.map((o) => {\n if (typeof o === \"string\") {\n return { text: o, id: o };\n }\n return o;\n }) satisfies KdsCheckboxGroupOption[],\n);\n\nconst labelId = useId();\nconst descriptionId = useId();\n\nconst isOptionDisabled = (index: number) =>\n props.disabled || possibleValues.value[index]?.disabled === true;\n\nconst isHorizontal = computed(() => props.alignment === \"horizontal\");\n\nconst hasError = computed(\n () => props.error || possibleValues.value.some((o) => o.error),\n);\n\nconst isChecked = (id: string) => modelValue.value.includes(id);\n\nconst handleCheckboxChange = (index: number, checked: KdsCheckboxValue) => {\n if (isOptionDisabled(index)) {\n return;\n }\n const option = possibleValues.value[index];\n\n if (checked === true) {\n modelValue.value = [...modelValue.value, option.id];\n return;\n }\n\n modelValue.value = modelValue.value.filter((v) => v !== option.id);\n};\n</script>\n\n<template>\n <div\n :id=\"props.id\"\n class=\"checkbox-group\"\n role=\"group\"\n :aria-labelledby=\"props.label ? labelId : undefined\"\n :aria-describedby=\"props.subText ? descriptionId : undefined\"\n >\n <KdsLabel v-if=\"props.label\" :id=\"labelId\" :label=\"props.label\" />\n\n <div :class=\"{ options: true, horizontal: isHorizontal }\">\n <div\n v-for=\"(option, index) in possibleValues\"\n :key=\"option.id\"\n class=\"option\"\n >\n <BaseCheckbox\n :disabled=\"props.disabled || option.disabled\"\n :error=\"option.error\"\n :helper-text=\"option.helperText\"\n :label=\"option.text\"\n :model-value=\"isChecked(option.id)\"\n @update:model-value=\"\n (checked: KdsCheckboxValue) => handleCheckboxChange(index, checked)\n \"\n />\n </div>\n </div>\n\n <KdsSubText\n :id=\"descriptionId\"\n :sub-text=\"props.subText\"\n :preserve-sub-text-space=\"props.preserveSubTextSpace\"\n :error=\"hasError\"\n />\n </div>\n</template>\n\n<style scoped>\n.checkbox-group {\n padding: 0;\n margin: 0;\n border: none;\n}\n\n.options {\n display: flex;\n flex-direction: column;\n gap: var(--kds-spacing-container-0-5x) var(--kds-spacing-container-0-75x);\n}\n\n.options.horizontal {\n flex-flow: row wrap;\n align-items: flex-start;\n}\n</style>\n","export const kdsCheckboxGroupAlignment = {\n VERTICAL: \"vertical\",\n HORIZONTAL: \"horizontal\",\n} as const;\n\nexport const kdsCheckboxGroupAlignments = Object.values(\n kdsCheckboxGroupAlignment,\n);\n\nexport const kdsCheckboxValue = {\n CHECKED: true,\n UNCHECKED: false,\n INDETERMINATE: \"indeterminate\",\n} as const;\n\nexport const kdsCheckboxValues = Object.values(kdsCheckboxValue);\n","<script lang=\"ts\" setup>\nimport { useId } from \"vue\";\n\nimport type { KdsRadioButtonProps } from \"./types.ts\";\n\nconst props = withDefaults(defineProps<KdsRadioButtonProps>(), {\n disabled: false,\n error: false,\n});\n\nconst modelValue = defineModel<boolean>({ default: false });\n\nconst id = useId();\n\nconst handleClick = () => {\n if (props.disabled) {\n return;\n }\n // Radio buttons do not toggle off when clicked; they only set to selected\n if (!modelValue.value) {\n modelValue.value = true;\n }\n};\n</script>\n\n<template>\n <button\n :aria-checked=\"modelValue\"\n :aria-describedby=\"props.helperText ? `${id}-helper` : undefined\"\n :aria-invalid=\"props.error\"\n :class=\"{\n radio: true,\n selected: modelValue,\n disabled: props.disabled,\n error: props.error,\n }\"\n :disabled=\"props.disabled\"\n role=\"radio\"\n type=\"button\"\n @click=\"handleClick\"\n >\n <div class=\"control\">\n <svg\n v-if=\"modelValue\"\n class=\"dot\"\n viewBox=\"0 0 2 2\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <circle cx=\"1\" cy=\"1\" r=\"1\" />\n </svg>\n </div>\n <div class=\"content\">\n <div class=\"label\">{{ props.text }}</div>\n <div v-if=\"props.helperText\" :id=\"`${id}-helper`\" class=\"helper-text\">\n {{ props.helperText }}\n </div>\n </div>\n </button>\n</template>\n\n<style scoped>\n.radio {\n --bg-initial: var(--kds-color-background-input-initial);\n --bg-hover: var(--kds-color-background-input-hover);\n --bg-active: var(--kds-color-background-input-active);\n --border: var(--kds-border-action-input);\n --dot-color: var(--kds-color-text-and-icon-selected);\n --text-color: var(--kds-color-text-and-icon-neutral);\n --helper-text-color: var(--kds-color-text-and-icon-muted);\n\n display: flex;\n gap: var(--kds-spacing-container-0-37x);\n align-items: flex-start;\n padding: 0;\n margin: 0;\n text-align: left;\n cursor: pointer;\n outline: none;\n background: none;\n border: none;\n\n .control {\n position: relative;\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: var(--kds-dimension-component-height-0-88x);\n height: var(--kds-dimension-component-height-0-88x);\n background: var(--bg-initial);\n border: var(--border);\n border-radius: 50%;\n }\n\n .control .dot {\n display: block;\n flex-shrink: 0;\n width: 100%;\n height: 100%;\n }\n\n .control .dot circle {\n fill: var(--dot-color);\n transform: scale(0.5);\n transform-origin: center;\n transform-box: fill-box;\n }\n\n &:focus-visible .control {\n outline: var(--kds-border-action-focused);\n outline-offset: var(--kds-spacing-offset-focus);\n }\n\n &:hover:not(.disabled) .control {\n background: var(--bg-hover);\n }\n\n &:active:not(.disabled) .control {\n background: var(--bg-active);\n }\n\n &.selected {\n --border: var(--kds-border-action-selected);\n --bg-initial: var(--kds-color-background-selected-initial);\n --bg-hover: var(--kds-color-background-selected-hover);\n --bg-active: var(--kds-color-background-selected-active);\n }\n\n .content {\n display: flex;\n flex-direction: column;\n gap: var(--kds-spacing-container-0-25x);\n\n & .label {\n font: var(--kds-font-base-interactive-small);\n color: var(--text-color);\n }\n\n & .helper-text {\n font: var(--kds-font-base-subtext-small);\n color: var(--helper-text-color);\n }\n }\n\n &.disabled {\n --bg-initial: var(--kds-color-background-input-initial);\n --border: var(--kds-border-action-disabled);\n --dot-color: var(--kds-color-text-and-icon-disabled);\n --text-color: var(--kds-color-text-and-icon-disabled);\n --helper-text-color: var(--kds-color-text-and-icon-disabled);\n\n cursor: default;\n }\n\n &.error {\n --bg-hover: var(--kds-color-background-danger-hover);\n --bg-active: var(--kds-color-background-danger-active);\n --border: var(--kds-border-action-error);\n --dot-color: var(--kds-color-text-and-icon-danger);\n --text-color: var(--kds-color-text-and-icon-danger);\n\n &.selected {\n --bg-initial: var(--kds-color-background-danger-initial);\n --border: var(--kds-border-action-error);\n }\n }\n}\n</style>\n","import type { Ref } from \"vue\";\nimport { computed } from \"vue\";\n\ntype KdsIndexSelectionOption = {\n id: string;\n disabled?: boolean;\n error?: boolean;\n [x: string]: unknown;\n};\n\nexport const useRadioSelection = ({\n selectedId,\n options,\n globalDisable,\n globalError,\n optionContainer,\n}: {\n selectedId: Ref<string | undefined>;\n options: Ref<readonly KdsIndexSelectionOption[]>;\n globalDisable?: Ref<boolean>;\n globalError?: Ref<boolean>;\n optionContainer?: Ref<HTMLElement | null>;\n}) => {\n const focusOptionAtIndex = (index: number) => {\n const radios = optionContainer?.value?.querySelectorAll<HTMLButtonElement>(\n 'button[role=\"radio\"]',\n );\n radios?.[index]?.focus();\n };\n\n const isIndexDisabled = (index: number) =>\n globalDisable?.value || options.value[index]?.disabled === true;\n\n const hasError = computed(\n () => globalError?.value || options.value.some((o) => o.error),\n );\n\n const selectedIndex = computed(() =>\n options.value.findIndex((o) => o.id === selectedId.value),\n );\n\n const firstEnabledIndex = computed(() =>\n options.value.findIndex((_, index) => !isIndexDisabled(index)),\n );\n\n const tabIndexForOption = (index: number) => {\n if (isIndexDisabled(index)) {\n return undefined;\n }\n\n if (selectedIndex.value >= 0) {\n return selectedIndex.value === index ? 0 : -1;\n }\n\n return firstEnabledIndex.value === index ? 0 : -1;\n };\n\n const selectIndex = (index: number) => {\n if (isIndexDisabled(index)) {\n return;\n }\n\n selectedId.value = options.value[index]?.id;\n };\n\n const nextEnabledIndex = (startIndex: number, direction: 1 | -1) => {\n const total = options.value.length;\n if (total === 0) {\n return -1;\n }\n\n let index = startIndex;\n for (let i = 0; i < total; i++) {\n index = (index + direction + total) % total;\n if (!isIndexDisabled(index)) {\n return index;\n }\n }\n\n return -1;\n };\n\n const moveSelection = (currentIndex: number, direction: 1 | -1) => {\n const nextIndex = nextEnabledIndex(currentIndex, direction);\n\n if (nextIndex < 0) {\n return;\n }\n\n selectIndex(nextIndex);\n focusOptionAtIndex(nextIndex);\n };\n\n const goToFirstEnabled = () => {\n const nextIndex = firstEnabledIndex.value;\n if (nextIndex < 0) {\n return;\n }\n\n selectIndex(nextIndex);\n focusOptionAtIndex(nextIndex);\n };\n\n const goToLastEnabled = () => {\n for (let i = options.value.length - 1; i >= 0; i--) {\n if (!isIndexDisabled(i)) {\n selectIndex(i);\n focusOptionAtIndex(i);\n break;\n }\n }\n };\n\n const handleKeyDown = (event: KeyboardEvent, currentIndex: number) => {\n if (globalDisable?.value) {\n return;\n }\n\n switch (event.key) {\n case \"ArrowDown\":\n case \"ArrowRight\": {\n event.preventDefault();\n moveSelection(currentIndex, 1);\n return;\n }\n\n case \"ArrowUp\":\n case \"ArrowLeft\": {\n event.preventDefault();\n moveSelection(currentIndex, -1);\n return;\n }\n\n case \"Home\": {\n event.preventDefault();\n goToFirstEnabled();\n return;\n }\n\n case \"End\": {\n event.preventDefault();\n goToLastEnabled();\n return;\n }\n\n case \" \":\n case \"Enter\": {\n event.preventDefault();\n selectIndex(currentIndex);\n }\n }\n };\n\n return {\n hasError,\n selectedIndex,\n tabIndexForOption,\n handleClick: selectIndex,\n handleKeyDown,\n };\n};\n","<script lang=\"ts\" setup>\nimport { computed, useId, useTemplateRef } from \"vue\";\n\nimport KdsLabel from \"../_helper/KdsLabel.vue\";\nimport KdsSubText from \"../_helper/KdsSubText.vue\";\n\nimport KdsRadioButton from \"./KdsRadioButton.vue\";\nimport type {\n KdsRadioButtonGroupOption,\n KdsRadioButtonGroupProps,\n} from \"./types\";\nimport { useRadioSelection } from \"./useRadioSelection\";\n\nconst props = withDefaults(defineProps<KdsRadioButtonGroupProps>(), {\n disabled: false,\n alignment: \"vertical\",\n});\n\nconst modelValue = defineModel<string>();\n\nconst options = computed(\n () =>\n props.possibleValues.map((o) => {\n if (typeof o === \"string\") {\n return { text: o, id: o };\n }\n return o;\n }) satisfies KdsRadioButtonGroupOption[],\n);\n\nconst labelId = useId();\nconst descriptionId = useId();\nconst groupName = useId();\n\nconst optionContainer = useTemplateRef(\"optionContainer\");\n\nconst { tabIndexForOption, handleClick, handleKeyDown, hasError } =\n useRadioSelection({\n selectedId: modelValue,\n options,\n globalDisable: computed(() => props.disabled),\n optionContainer,\n });\n</script>\n\n<template>\n <div\n :id=\"props.id\"\n class=\"radio-button-group\"\n role=\"radiogroup\"\n :aria-labelledby=\"props.label ? labelId : undefined\"\n :aria-describedby=\"props.subText ? descriptionId : undefined\"\n >\n <KdsLabel v-if=\"props.label\" :id=\"labelId\" :label=\"props.label\" />\n\n <div\n ref=\"optionContainer\"\n :class=\"{ options: true, horizontal: props.alignment === 'horizontal' }\"\n >\n <div v-for=\"(option, index) in options\" :key=\"option.id\" class=\"option\">\n <KdsRadioButton\n :disabled=\"props.disabled || option.disabled\"\n :error=\"option.error\"\n :helper-text=\"option.helperText\"\n :text=\"option.text\"\n :model-value=\"modelValue === option.id\"\n :tabindex=\"tabIndexForOption(index)\"\n :name=\"groupName\"\n @keydown=\"(e: KeyboardEvent) => handleKeyDown(e, index)\"\n @update:model-value=\"() => handleClick(index)\"\n />\n </div>\n </div>\n\n <KdsSubText\n :id=\"descriptionId\"\n :sub-text=\"props.subText\"\n :preserve-sub-text-space=\"props.preserveSubTextSpace\"\n :error=\"hasError\"\n />\n </div>\n</template>\n\n<style scoped>\n.radio-button-group {\n padding: 0;\n margin: 0;\n border: none;\n}\n\n.options {\n display: flex;\n flex-direction: column;\n gap: var(--kds-spacing-container-0-5x) var(--kds-spacing-container-0-75x);\n}\n\n.options.horizontal {\n flex-flow: row wrap;\n align-items: flex-start;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { useTemplateRef } from \"vue\";\n\nimport KdsIcon from \"../../accessories/Icon/KdsIcon.vue\";\nimport { useKdsIsTruncated } from \"../../util\";\n\nimport type { KdsValueSwitchItemProps } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsValueSwitchItemProps>(), {\n disabled: false,\n size: \"medium\",\n variant: \"default\",\n tabIndex: undefined,\n});\n\nconst optionTextEl = useTemplateRef(\"optionTextEl\");\nconst { isTruncated } = useKdsIsTruncated(optionTextEl);\n</script>\n\n<template>\n <button\n role=\"radio\"\n :aria-checked=\"props.selected\"\n :aria-label=\"props.text ? undefined : props.title\"\n :class=\"{\n option: true,\n selected: props.selected,\n disabled: props.disabled,\n 'variant-muted': props.variant === 'muted',\n 'size-small': props.size === 'small',\n }\"\n :disabled=\"props.disabled\"\n :tabindex=\"props.tabIndex\"\n :title=\"props.title ?? (isTruncated && props.text ? props.text : undefined)\"\n >\n <KdsIcon\n v-if=\"props.leadingIcon && (!props.hideIcons || !props.text)\"\n :name=\"props.leadingIcon\"\n :size=\"props.size\"\n />\n <span v-if=\"props.text\" ref=\"optionTextEl\" class=\"option-label\">\n {{ props.text }}\n </span>\n <KdsIcon\n v-if=\"props.trailingIcon && !props.hideIcons\"\n :name=\"props.trailingIcon\"\n :size=\"props.size\"\n />\n </button>\n</template>\n\n<style scoped>\n.option {\n display: flex;\n flex: 0 1 auto;\n gap: var(--kds-spacing-container-0-25x);\n align-items: center;\n justify-content: center;\n min-width: calc(\n var(--kds-dimension-icon-1x) + (2 * var(--kds-spacing-container-0-37x))\n );\n max-width: 100%;\n height: var(--kds-dimension-component-height-1-5x);\n padding: 0 var(--kds-spacing-container-0-37x);\n font: var(--kds-font-base-interactive-medium-strong);\n color: var(--kds-color-text-and-icon-neutral);\n text-align: center;\n cursor: pointer;\n\n /* variant=default */\n background: var(--kds-color-background-neutral-initial);\n border: var(--kds-border-action-transparent);\n border-radius: var(--kds-border-radius-container-0-25x);\n\n &.size-small {\n height: var(--kds-dimension-component-height-1-25x);\n font: var(--kds-font-base-interactive-small-strong);\n }\n\n &:focus-visible {\n outline: none;\n }\n\n &:hover:not(:disabled) {\n background: var(--kds-color-background-neutral-hover);\n }\n\n &:active:not(:disabled) {\n background: var(--kds-color-background-neutral-active);\n }\n\n &.selected {\n color: var(--kds-color-text-and-icon-selected);\n background: var(--kds-color-background-selected-initial);\n border: var(--kds-border-action-selected);\n\n &:hover:not(:disabled) {\n background: var(--kds-color-background-selected-hover);\n }\n\n &:active:not(:disabled) {\n background: var(--kds-color-background-selected-active);\n }\n\n &.variant-muted {\n color: var(--kds-color-text-and-icon-neutral);\n background: var(--kds-color-background-input-initial);\n\n &:hover:not(:disabled) {\n background: var(--kds-color-background-input-hover);\n }\n\n &:active:not(:disabled) {\n background: var(--kds-color-background-input-active);\n }\n }\n }\n\n &.disabled {\n color: var(--kds-color-text-and-icon-disabled);\n cursor: default;\n }\n\n &.disabled.selected {\n color: var(--kds-color-text-and-icon-disabled);\n border: var(--kds-border-action-disabled);\n }\n}\n\n.option-label {\n min-width: 0;\n padding: 0 var(--kds-spacing-container-0-12x);\n overflow: hidden;\n text-overflow: ellipsis;\n font: inherit;\n white-space: nowrap;\n}\n</style>\n","import type { Ref } from \"vue\";\nimport { nextTick, onBeforeUpdate, ref, watch } from \"vue\";\n\nimport { elementOverflowsHorizontally } from \"../../util/useKdsIsTruncated\";\n\nimport type { KdsValueSwitchOption } from \"./types\";\n/**\n * Computes whether icons in ValueSwitch items should be hidden.\n *\n * Global logic: as soon as at least one text+icon item ellipsizes its label\n * (`scrollWidth > clientWidth`), icons are hidden for all text+icon items.\n * Icon-only items are never affected.\n */\nexport const useValueSwitchIconHiding = ({\n width,\n options,\n}: {\n /**\n * Potentially available width to render options\n */\n width: Ref<number>;\n options: Ref<readonly KdsValueSwitchOption[]>;\n}) => {\n const itemEls = ref(new Map<string, HTMLButtonElement>());\n\n onBeforeUpdate(() => {\n itemEls.value = new Map();\n });\n\n const setItemEl = (id: string, el: unknown) => {\n const elementToRegister =\n el && typeof el === \"object\" && \"$el\" in el\n ? (el as { $el: unknown }).$el\n : el;\n\n if (elementToRegister instanceof HTMLButtonElement) {\n itemEls.value.set(id, elementToRegister);\n }\n };\n\n const shouldHideIcons = ref(false);\n\n const hasLabelEllipsis = (id: string) => {\n const el = itemEls.value.get(id);\n if (!el) {\n return false;\n }\n\n const label = el.querySelector<HTMLElement>(\".option-label\");\n return elementOverflowsHorizontally(label);\n };\n\n const anyOptionHasEllipsis = () =>\n options.value.some((option) => {\n if (!option.text) {\n return false;\n }\n\n if (!option.leadingIcon && !option.trailingIcon) {\n return false;\n }\n\n return hasLabelEllipsis(option.id);\n });\n\n watch(\n () => [width.value, options.value],\n async () => {\n // First pass: try rendering icons\n shouldHideIcons.value = false;\n\n // Second pass: hide icons when width overflowed.\n await nextTick();\n shouldHideIcons.value = anyOptionHasEllipsis();\n },\n {\n immediate: true,\n },\n );\n\n return {\n shouldHideIcons,\n setItemEl,\n };\n};\n","<script lang=\"ts\" setup>\nimport { computed, useId, useTemplateRef } from \"vue\";\nimport { useElementSize } from \"@vueuse/core\";\n\nimport KdsLabel from \"../_helper/KdsLabel.vue\";\nimport KdsSubText from \"../_helper/KdsSubText.vue\";\n\nimport ValueSwitchItem from \"./ValueSwitchItem.vue\";\nimport type { KdsValueSwitchOption, KdsValueSwitchProps } from \"./types\";\nimport { useRadioSelection } from \"./useRadioSelection\";\nimport { useValueSwitchIconHiding } from \"./useValueSwitchIconHiding\";\n\nconst props = withDefaults(defineProps<KdsValueSwitchProps>(), {\n disabled: false,\n size: \"medium\",\n variant: \"default\",\n});\n\nconst modelValue = defineModel<string>();\n\nconst options = computed(\n () =>\n props.possibleValues.map((o) => {\n if (typeof o === \"string\") {\n return { text: o, id: o };\n }\n return o;\n }) satisfies KdsValueSwitchOption[],\n);\n\nconst labelId = useId();\nconst descriptionId = useId();\n\nconst availableWidthContainer = useTemplateRef<HTMLElement>(\n \"availableWidthContainer\",\n);\nconst { width } = useElementSize(availableWidthContainer);\nconst { shouldHideIcons, setItemEl } = useValueSwitchIconHiding({\n width,\n options,\n});\n\nconst optionContainer = useTemplateRef(\"optionContainer\");\nconst { tabIndexForOption, handleClick, handleKeyDown } = useRadioSelection({\n selectedId: modelValue,\n options,\n globalDisable: computed(() => props.disabled),\n optionContainer,\n});\n</script>\n\n<template>\n <div\n :id=\"props.id\"\n ref=\"availableWidthContainer\"\n role=\"radiogroup\"\n :class=\"{\n 'value-switch': true,\n 'size-small': props.size === 'small',\n }\"\n :aria-invalid=\"props.error || undefined\"\n :aria-labelledby=\"props.label ? labelId : undefined\"\n :aria-describedby=\"props.subText ? descriptionId : undefined\"\n >\n <KdsLabel v-if=\"props.label\" :id=\"labelId\" :label=\"props.label\" />\n\n <div ref=\"optionContainer\" :class=\"{ options: true, error: props.error }\">\n <ValueSwitchItem\n v-for=\"(option, index) in options\"\n :key=\"option.id\"\n :ref=\"(el) => setItemEl(option.id, el)\"\n v-bind=\"option\"\n :hide-icons=\"shouldHideIcons\"\n :selected=\"modelValue === option.id\"\n :disabled=\"props.disabled || option.disabled\"\n :size=\"props.size\"\n :variant=\"props.variant\"\n :tab-index=\"tabIndexForOption(index)\"\n :title=\"option.title\"\n @click=\"() => handleClick(index)\"\n @keydown=\"handleKeyDown($event, index)\"\n />\n </div>\n\n <KdsSubText\n :id=\"descriptionId\"\n :sub-text=\"props.subText\"\n :preserve-sub-text-space=\"props.preserveSubTextSpace\"\n :error=\"props.error\"\n />\n </div>\n</template>\n\n<style scoped>\n.value-switch {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n padding: 0;\n margin: 0;\n border: none;\n}\n\n.options {\n display: flex;\n flex-flow: row nowrap;\n gap: var(--kds-spacing-container-none);\n align-items: flex-start;\n width: fit-content;\n min-width: 0;\n max-width: 100%;\n padding: calc(\n var(--kds-spacing-container-0-12x) - var(--kds-core-border-width-xs)\n );\n overflow: hidden;\n background: var(--kds-color-surface-muted);\n border: var(--kds-border-action-transparent);\n border-radius: var(--kds-border-radius-container-0-37x);\n box-shadow: var(--kds-fake-border-xs-muted);\n\n &:has(:focus-visible) {\n outline: var(--kds-border-action-focused);\n outline-offset: var(--kds-spacing-offset-focus);\n border-radius: var(--kds-border-radius-container-0-44x);\n }\n\n &.error {\n border: var(--kds-border-action-error);\n box-shadow: none;\n }\n}\n</style>\n","export const kdsRadioButtonGroupAlignment = {\n VERTICAL: \"vertical\",\n HORIZONTAL: \"horizontal\",\n} as const;\n\nexport const kdsRadioButtonGroupAlignments = Object.values(\n kdsRadioButtonGroupAlignment,\n);\n\nexport const kdsValueSwitchSize = {\n SMALL: \"small\",\n MEDIUM: \"medium\",\n} as const;\n\nexport const kdsValueSwitchSizes = Object.values(kdsValueSwitchSize);\n\nexport const kdsValueSwitchVariant = {\n DEFAULT: \"default\",\n MUTED: \"muted\",\n} as const;\n\nexport const kdsValueSwitchVariants = Object.values(kdsValueSwitchVariant);\n","<script setup lang=\"ts\">\nimport { useId, useTemplateRef, watchEffect } from \"vue\";\n\nimport type { KdsPopoverExpose, KdsPopoverProps } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsPopoverProps>(), {\n placement: \"bottom-left\",\n role: \"dialog\",\n fullWidth: false,\n});\n\nconst open = defineModel<boolean>({ default: false });\nconst popoverEl = useTemplateRef(\"popoverEl\");\n\nconst popoverId = useId();\nconst anchorName = `--anchor-${popoverId}`;\n\n// Sync the open state with the native popover element's open state\nwatchEffect(() => {\n if (open.value) {\n popoverEl.value?.showPopover?.();\n } else {\n popoverEl.value?.hidePopover?.();\n }\n});\n\nconst anchorStyle = { \"anchor-name\": anchorName };\n\ndefineExpose<KdsPopoverExpose>({ anchorStyle, popoverId });\n</script>\n\n<template>\n <div\n :id=\"popoverId\"\n ref=\"popoverEl\"\n class=\"kds-popover\"\n :class=\"['floating', props.placement, { 'full-width': props.fullWidth }]\"\n popover=\"auto\"\n :style=\"{ 'position-anchor': anchorName }\"\n :role=\"props.role\"\n :aria-label=\"props.popoverAriaLabel\"\n @toggle=\"open = $event.newState === 'open'\"\n >\n <slot v-if=\"open\">\n <div\n v-if=\"props.content?.trim().length\"\n class=\"kds-popover-default-content\"\n >\n {{ props.content }}\n </div>\n </slot>\n </div>\n</template>\n\n<style scoped>\n.kds-popover {\n padding: 0;\n margin: 0;\n overflow: visible;\n font: inherit;\n color: inherit;\n background-color: transparent;\n border: none;\n border-radius: 0;\n box-shadow: none;\n\n /* noinspection CssInvalidFunction */\n &.full-width {\n min-inline-size: anchor-size(width);\n }\n\n /* noinspection CssInvalidFunction,CssInvalidAtRule */\n &.floating.top-right {\n inset: auto anchor(right) anchor(top) auto;\n margin: var(--kds-spacing-container-0-25x) 0\n var(--kds-spacing-container-0-25x) var(--kds-spacing-container-0-25x);\n position-try-fallbacks:\n --kds-popover-try-top-left, --kds-popover-try-bottom-right,\n --kds-popover-try-bottom-left, --kds-popover-try-top-right;\n }\n\n /* noinspection CssInvalidFunction,CssInvalidAtRule */\n &.floating.top-left {\n inset: auto auto anchor(top) anchor(left);\n margin: var(--kds-spacing-container-0-25x)\n var(--kds-spacing-container-0-25x) var(--kds-spacing-container-0-25x) 0;\n position-try-fallbacks:\n --kds-popover-try-top-right, --kds-popover-try-bottom-left,\n --kds-popover-try-bottom-right, --kds-popover-try-top-left;\n }\n\n /* noinspection CssInvalidFunction,CssInvalidAtRule */\n &.floating.bottom-right {\n inset: anchor(bottom) anchor(right) auto auto;\n margin: var(--kds-spacing-container-0-25x) 0\n var(--kds-spacing-container-0-25x) var(--kds-spacing-container-0-25x);\n position-try-fallbacks:\n --kds-popover-try-bottom-left, --kds-popover-try-top-right,\n --kds-popover-try-top-left, --kds-popover-try-bottom-right;\n }\n\n /* noinspection CssInvalidFunction,CssInvalidAtRule */\n &.floating.bottom-left {\n inset: anchor(bottom) auto auto anchor(left);\n margin: var(--kds-spacing-container-0-25x)\n var(--kds-spacing-container-0-25x) var(--kds-spacing-container-0-25x) 0;\n position-try-fallbacks:\n --kds-popover-try-bottom-right, --kds-popover-try-top-left,\n --kds-popover-try-top-right, --kds-popover-try-bottom-left;\n }\n}\n\n/* noinspection CssInvalidFunction,CssInvalidAtRule */\n@position-try --kds-popover-try-top-right {\n inset: auto anchor(right) anchor(top) auto;\n margin: var(--kds-spacing-container-0-25x) 0\n var(--kds-spacing-container-0-25x) var(--kds-spacing-container-0-25x);\n}\n\n/* noinspection CssInvalidFunction,CssInvalidAtRule */\n@position-try --kds-popover-try-top-left {\n inset: auto auto anchor(top) anchor(left);\n margin: var(--kds-spacing-container-0-25x) var(--kds-spacing-container-0-25x)\n var(--kds-spacing-container-0-25x) 0;\n}\n\n/* noinspection CssInvalidFunction,CssInvalidAtRule */\n@position-try --kds-popover-try-bottom-right {\n inset: anchor(bottom) anchor(right) auto auto;\n margin: var(--kds-spacing-container-0-25x) 0\n var(--kds-spacing-container-0-25x) var(--kds-spacing-container-0-25x);\n}\n\n/* noinspection CssInvalidFunction,CssInvalidAtRule */\n@position-try --kds-popover-try-bottom-left {\n inset: anchor(bottom) auto auto anchor(left);\n margin: var(--kds-spacing-container-0-25x) var(--kds-spacing-container-0-25x)\n var(--kds-spacing-container-0-25x) 0;\n}\n\n.kds-popover-default-content {\n padding: var(--kds-spacing-container-0-75x);\n font: var(--kds-font-base-body-small);\n color: var(--kds-color-text-and-icon-neutral);\n background-color: var(--kds-color-surface-default);\n border-radius: var(--kds-border-radius-container-0-37x);\n box-shadow: var(--kds-elevation-level-3);\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed, ref, useId } from \"vue\";\n\nimport type { KdsSubTextProps } from \"../types\";\n\nimport KdsLabel from \"./KdsLabel.vue\";\nimport KdsSubText from \"./KdsSubText.vue\";\n\ntype KdsFormFieldProps = {\n /**\n * Input id\n */\n id?: string;\n /**\n * Label text\n */\n label?: string;\n /**\n * Aria-label for accessibility when a visible label is not desired\n */\n ariaLabel?: string;\n /**\n * Optional description displayed in an info popover next to the label.\n * The info toggle button is only visible when hovering the input field.\n */\n description?: string;\n} & Omit<KdsSubTextProps, \"id\">;\n\nconst props = defineProps<KdsFormFieldProps>();\n\nconst fallbackId = useId();\nconst inputId = computed(() => props.id?.trim() || fallbackId);\nconst labelId = computed(() => `${inputId.value}-label`);\nconst subTextId = computed(() => `${inputId.value}-subtext`);\n\nconst isHovered = ref(false);\n</script>\n\n<template>\n <div\n class=\"kds-form-field\"\n @mouseenter=\"isHovered = true\"\n @mouseleave=\"isHovered = false\"\n >\n <KdsLabel\n v-if=\"props.label\"\n :id=\"labelId\"\n :for=\"inputId\"\n :label=\"props.label\"\n :description=\"props.description\"\n :show-description-button=\"isHovered\"\n />\n <slot\n :id=\"inputId\"\n :aria-labelledby=\"props.label ? labelId : undefined\"\n :aria-describedby=\"props.subText ? subTextId : undefined\"\n :aria-label=\"props.label ? undefined : props.ariaLabel\"\n :aria-invalid=\"props.error\"\n />\n <KdsSubText\n :id=\"subTextId\"\n :sub-text=\"props.subText\"\n :error=\"props.error\"\n :validating=\"props.validating\"\n :preserve-sub-text-space=\"props.preserveSubTextSpace\"\n />\n </div>\n</template>\n\n<style scoped>\n.kds-form-field {\n display: flex;\n flex-direction: column;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed, useTemplateRef } from \"vue\";\n\nimport KdsIcon from \"../../accessories/Icon/KdsIcon.vue\";\nimport type { KdsIconName } from \"../../accessories/Icon/types\";\nimport KdsButton from \"../../buttons/KdsButton/KdsButton.vue\";\n\ntype BaseInputProps = {\n /**\n * ID for the input element\n */\n id?: string;\n /**\n * The type of input field\n */\n type?: \"text\" | \"email\" | \"password\" | \"number\" | \"tel\" | \"url\" | \"search\";\n /**\n * Minimum allowed value (relevant for type=\"number\")\n */\n min?: number;\n /**\n * Maximum allowed value (relevant for type=\"number\")\n */\n max?: number;\n /**\n * Step size (relevant for type=\"number\")\n */\n step?: number;\n /**\n * Placeholder text when input is empty\n */\n placeholder?: string;\n /**\n * Whether the input is disabled\n */\n disabled?: boolean;\n /**\n * Icon displayed at the start of the input\n */\n leadingIcon?: KdsIconName;\n /**\n * Icon displayed at the end of the input\n */\n trailingIcon?: KdsIconName;\n /**\n * Whether the input has an error state\n */\n error?: boolean;\n /**\n * Autocomplete attribute for the input element\n */\n autocomplete?: string;\n /**\n * Accessible label for the input (for aria-label).\n */\n ariaLabel?: string;\n /**\n * ID of element that labels this input (for aria-labelledby)\n */\n ariaLabelledby?: string;\n /**\n * ID of element that describes this input (for aria-describedby)\n */\n ariaDescribedby?: string;\n /**\n * Whether the current value of the input is invalid (for aria-invalid)\n */\n ariaInvalid?: boolean;\n\n /**\n * ARIA role override applied to the input element.\n * Useful to preserve semantics for custom controls.\n */\n role?: string;\n /**\n * Current value for widgets like role=\"spinbutton\".\n */\n ariaValuenow?: number;\n /**\n * Minimum value for widgets like role=\"spinbutton\".\n */\n ariaValuemin?: number;\n /**\n * Maximum value for widgets like role=\"spinbutton\".\n */\n ariaValuemax?: number;\n /**\n * Human-readable value text (e.g. localized) for widgets like role=\"spinbutton\".\n */\n ariaValuetext?: string;\n /**\n * ID of the currently active descendant element (for aria-activedescendant).\n * Used when the input controls an external listbox or similar widget.\n */\n ariaActivedescendant?: string;\n /**\n * Unit shown next to the input value\n */\n unit?: string;\n /**\n * Hints at the type of data that might be entered by the user.\n * Useful for showing an appropriate on-screen keyboard on mobile.\n */\n inputmode?:\n | \"none\"\n | \"text\"\n | \"tel\"\n | \"url\"\n | \"email\"\n | \"numeric\"\n | \"decimal\"\n | \"search\";\n /**\n * Whether to show a clear button when the input has a value.\n */\n clearable?: boolean;\n};\n\nconst props = withDefaults(defineProps<BaseInputProps>(), {\n id: undefined,\n type: \"text\",\n min: undefined,\n max: undefined,\n step: undefined,\n placeholder: undefined,\n disabled: false,\n leadingIcon: undefined,\n trailingIcon: undefined,\n error: false,\n autocomplete: undefined,\n ariaLabel: undefined,\n ariaLabelledby: undefined,\n ariaDescribedby: undefined,\n ariaInvalid: undefined,\n role: undefined,\n ariaValuenow: undefined,\n ariaValuemin: undefined,\n ariaValuemax: undefined,\n ariaValuetext: undefined,\n ariaActivedescendant: undefined,\n unit: undefined,\n inputmode: undefined,\n clearable: false,\n});\n\ntype BaseInputEmits = {\n /** Native focus event forwarded from the input element. */\n focus: [event: FocusEvent];\n /** Native blur event forwarded from the input element. */\n blur: [event: FocusEvent];\n /** Native keydown event forwarded from the input element. */\n keydown: [event: KeyboardEvent];\n /** Native input event forwarded from the input element. */\n input: [event: Event];\n /** Native click event forwarded from the input element. */\n click: [event: MouseEvent];\n};\n\nconst emit = defineEmits<BaseInputEmits>();\n\nconst modelValue = defineModel<string>({ default: \"\" });\n\nconst inputRef = useTemplateRef(\"input\");\n\nconst hasValue = computed(() => modelValue.value.length > 0);\n\nconst showUnitPlaceholder = computed(\n () => Boolean(props.unit) && modelValue.value.trim().length === 0,\n);\n\nconst handleInput = (event: Event) => {\n const target = event.target as HTMLInputElement;\n modelValue.value = target.value;\n\n emit(\"input\", event);\n};\n\nconst focusInput = () => {\n inputRef.value?.focus();\n};\n\nconst clearAndFocusInput = () => {\n modelValue.value = \"\";\n focusInput();\n};\n\nconst handleContainerClick = (event: MouseEvent) => {\n if (event.clientX === 0 && event.clientY === 0) {\n // Keyboard-initiated click (e.g. Enter/Space on a focused button)\n return;\n }\n\n focusInput();\n};\n\ndefineExpose({\n /**\n * Focuses the input element\n */\n focus: focusInput,\n});\n</script>\n\n<template>\n <div\n :class=\"{\n container: true,\n error: props.error,\n disabled: props.disabled,\n }\"\n @click=\"handleContainerClick\"\n >\n <div v-if=\"props.leadingIcon\" class=\"icon-wrapper leading\">\n <KdsIcon v-if=\"props.leadingIcon\" :name=\"props.leadingIcon\" />\n </div>\n\n <div v-if=\"$slots.leading\" class=\"leading-slot\">\n <slot name=\"leading\" />\n </div>\n\n <input\n :id=\"props.id\"\n ref=\"input\"\n :value=\"modelValue\"\n :type=\"props.type\"\n :inputmode=\"props.inputmode\"\n :placeholder=\"props.placeholder\"\n :disabled=\"props.disabled\"\n :autocomplete=\"props.autocomplete\"\n :min=\"props.min\"\n :max=\"props.max\"\n :step=\"props.step\"\n :aria-label=\"props.ariaLabel\"\n :aria-labelledby=\"props.ariaLabelledby\"\n :aria-describedby=\"props.ariaDescribedby\"\n :aria-invalid=\"props.ariaInvalid\"\n :role=\"props.role\"\n :aria-valuenow=\"props.ariaValuenow\"\n :aria-valuemin=\"props.ariaValuemin\"\n :aria-valuemax=\"props.ariaValuemax\"\n :aria-valuetext=\"props.ariaValuetext\"\n :aria-activedescendant=\"props.ariaActivedescendant\"\n :class=\"{ 'input-field': true, 'has-value': hasValue }\"\n @input=\"handleInput\"\n @focus=\"emit('focus', $event)\"\n @blur=\"emit('blur', $event)\"\n @keydown=\"emit('keydown', $event)\"\n @click=\"emit('click', $event)\"\n />\n\n <span\n v-if=\"props.unit\"\n :class=\"{\n unit: true,\n placeholder: showUnitPlaceholder,\n disabled: props.disabled,\n }\"\n :aria-disabled=\"props.disabled || undefined\"\n >\n {{ props.unit }}\n </span>\n\n <KdsButton\n v-if=\"props.clearable && hasValue && !props.disabled\"\n class=\"clear-button\"\n type=\"button\"\n size=\"xsmall\"\n variant=\"transparent\"\n leading-icon=\"x-close\"\n aria-label=\"Clear\"\n title=\"Clear\"\n @click.stop=\"clearAndFocusInput\"\n />\n\n <div v-if=\"$slots.trailing\" class=\"trailing-slot\">\n <slot name=\"trailing\" />\n </div>\n\n <div v-if=\"props.trailingIcon\" class=\"icon-wrapper trailing\">\n <KdsIcon :name=\"props.trailingIcon\" />\n </div>\n </div>\n</template>\n\n<style scoped>\n.container {\n display: flex;\n align-items: center;\n width: 100%;\n height: var(--kds-dimension-component-height-1-75x);\n padding: 0 var(--kds-spacing-container-0-25x);\n cursor: text;\n background: var(--kds-color-background-input-initial);\n border: var(--kds-border-action-input);\n border-radius: var(--kds-border-radius-container-0-37x);\n\n &:has(input:focus:not(:disabled)) {\n outline: var(--kds-border-action-focused);\n outline-offset: var(--kds-spacing-offset-focus);\n }\n\n &:has(.input-field:hover:not(:disabled, :focus)) {\n background: var(--kds-color-background-input-hover);\n }\n\n &.error {\n border: var(--kds-border-action-error);\n }\n\n &.disabled {\n cursor: default;\n border: var(--kds-border-action-disabled);\n border-color: var(--kds-color-border-disabled);\n }\n}\n\n.icon-wrapper {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n color: var(--kds-color-text-and-icon-subtle);\n\n &.leading {\n padding-left: var(--kds-spacing-container-0-12x);\n }\n\n &.trailing {\n padding-right: var(--kds-spacing-container-0-12x);\n }\n\n .container.disabled & {\n color: var(--kds-color-text-and-icon-disabled);\n cursor: default;\n }\n\n .container:focus-within &,\n .container:has(.input-field.has-value) & {\n color: var(--kds-color-text-and-icon-neutral);\n }\n}\n\n.input-field {\n flex: 1 0 0;\n min-width: 0;\n height: var(--kds-dimension-component-height-1-75x);\n padding: var(--kds-spacing-container-0-25x);\n overflow: hidden;\n text-overflow: ellipsis;\n font: var(--kds-font-base-body-small);\n color: var(--kds-color-text-and-icon-neutral);\n white-space: nowrap;\n outline: none;\n background: transparent;\n border: none;\n\n /* hide native steppers, we provide our own in NumberInput */\n &[type=\"number\"] {\n appearance: textfield;\n\n &::-webkit-outer-spin-button,\n &::-webkit-inner-spin-button {\n margin: 0;\n appearance: none;\n }\n }\n\n /* hide native search cancel button on Safari/WebKit, we provide our own clearable button */\n &[type=\"search\"]::-webkit-search-cancel-button {\n appearance: none;\n }\n\n &::placeholder {\n color: var(--kds-color-text-and-icon-subtle);\n }\n\n &:disabled {\n color: var(--kds-color-text-and-icon-disabled);\n cursor: default;\n\n &::placeholder {\n color: var(--kds-color-text-and-icon-disabled);\n }\n }\n}\n\n.unit {\n flex-shrink: 0;\n min-width: 0;\n margin: 0 var(--kds-spacing-container-0-12x);\n overflow: hidden;\n text-overflow: ellipsis;\n font: var(--kds-font-base-body-small);\n color: var(--kds-color-text-and-icon-neutral);\n white-space: nowrap;\n\n &.placeholder {\n color: var(--kds-color-text-and-icon-subtle);\n }\n\n &.disabled {\n color: var(--kds-color-text-and-icon-disabled);\n }\n\n .container:focus-within & {\n color: var(--kds-color-text-and-icon-neutral);\n }\n}\n\n.clear-button {\n margin-left: var(--kds-spacing-container-0-12x);\n}\n\n.leading-slot {\n display: flex;\n flex-shrink: 0;\n gap: var(--kds-spacing-container-0-12x);\n align-items: center;\n}\n\n.trailing-slot {\n display: flex;\n flex-shrink: 0;\n gap: var(--kds-spacing-container-0-12x);\n align-items: center;\n margin-left: var(--kds-spacing-container-0-12x);\n}\n</style>\n","<script setup lang=\"ts\">\nimport { useTemplateRef } from \"vue\";\n\nimport BaseFormFieldWrapper from \"../../_helper/BaseFormFieldWrapper.vue\";\nimport type { KdsFormFieldExpose } from \"../../types.ts\";\nimport BaseInput from \"../BaseInput.vue\";\n\nimport type { KdsTextInputProps } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsTextInputProps>(), {\n disabled: false,\n error: false,\n validating: false,\n preserveSubTextSpace: false,\n});\n\nconst modelValue = defineModel<string>({ default: \"\" });\n\nconst baseInput = useTemplateRef(\"baseInput\");\n\ndefineExpose<KdsFormFieldExpose>({\n focus: () => baseInput.value?.focus(),\n});\n</script>\n\n<template>\n <BaseFormFieldWrapper v-bind=\"props\">\n <template #default=\"slotProps\">\n <BaseInput\n ref=\"baseInput\"\n v-bind=\"slotProps\"\n v-model=\"modelValue\"\n type=\"text\"\n :placeholder=\"props.placeholder\"\n :disabled=\"props.disabled\"\n :error=\"props.error\"\n :autocomplete=\"props.autocomplete\"\n />\n </template>\n </BaseFormFieldWrapper>\n</template>\n","export type KdsRgbColor = {\n r: number;\n g: number;\n b: number;\n};\n\nexport type KdsHsvColor = {\n /** Hue in degrees [0..360) */\n h: number;\n /** Saturation [0..1] */\n s: number;\n /** Value [0..1] */\n v: number;\n};\n\nconst HEX_RADIX = 16;\n\nconst RGB_MAX = 255;\n\nconst HUE_MAX_DEG = 360;\nconst HUE_SECTOR_DEG = 60;\nconst HUE_SECTOR_COUNT = 6;\n\nconst HUE_OFFSET_FOR_MAX_G = 2;\nconst HUE_OFFSET_FOR_MAX_B = 4;\n\nconst HUE_SECTOR_INDEX_2 = 2;\nconst HUE_SECTOR_INDEX_3 = 3;\nconst HUE_SECTOR_INDEX_4 = 4;\nconst HUE_SECTOR_INDEX_5 = 5;\n\nconst HEX_PAIR_LENGTH = 2;\nconst HEX_RED_START = 1;\nconst HEX_GREEN_START = HEX_RED_START + HEX_PAIR_LENGTH;\nconst HEX_BLUE_START = HEX_GREEN_START + HEX_PAIR_LENGTH;\n\nexport const clamp = (value: number, min: number, max: number) =>\n Math.min(max, Math.max(min, value));\n\nconst round = (value: number) => Math.round(value);\n\nconst padHex = (value: number) => value.toString(HEX_RADIX).padStart(2, \"0\");\n\nexport const normalizeHexColor = (value: string): string | null => {\n const trimmed = value.trim();\n if (trimmed.length === 0) {\n return null;\n }\n\n const withoutHash = trimmed.startsWith(\"#\") ? trimmed.slice(1) : trimmed;\n\n if (/^[0-9a-fA-F]{3}$/.test(withoutHash)) {\n const [r, g, b] = withoutHash.split(\"\") as [string, string, string];\n return `#${r}${r}${g}${g}${b}${b}`.toUpperCase();\n }\n\n if (/^[0-9a-fA-F]{6}$/.test(withoutHash)) {\n return `#${withoutHash}`.toUpperCase();\n }\n\n return null;\n};\n\nexport const hexToRgb = (hex: string): KdsRgbColor | null => {\n const normalized = normalizeHexColor(hex);\n if (!normalized) {\n return null;\n }\n\n const r = Number.parseInt(\n normalized.slice(HEX_RED_START, HEX_RED_START + HEX_PAIR_LENGTH),\n HEX_RADIX,\n );\n const g = Number.parseInt(\n normalized.slice(HEX_GREEN_START, HEX_GREEN_START + HEX_PAIR_LENGTH),\n HEX_RADIX,\n );\n const b = Number.parseInt(\n normalized.slice(HEX_BLUE_START, HEX_BLUE_START + HEX_PAIR_LENGTH),\n HEX_RADIX,\n );\n\n return { r, g, b };\n};\n\nexport const rgbToHex = ({ r, g, b }: KdsRgbColor): string => {\n const rr = clamp(round(r), 0, RGB_MAX);\n const gg = clamp(round(g), 0, RGB_MAX);\n const bb = clamp(round(b), 0, RGB_MAX);\n\n return `#${padHex(rr)}${padHex(gg)}${padHex(bb)}`.toUpperCase();\n};\n\nexport const rgbToHsv = ({ r, g, b }: KdsRgbColor): KdsHsvColor => {\n const rr = clamp(r / RGB_MAX, 0, 1);\n const gg = clamp(g / RGB_MAX, 0, 1);\n const bb = clamp(b / RGB_MAX, 0, 1);\n\n const max = Math.max(rr, gg, bb);\n const min = Math.min(rr, gg, bb);\n const delta = max - min;\n\n const v = max;\n const s = max === 0 ? 0 : delta / max;\n\n let h = 0;\n if (delta !== 0) {\n if (max === rr) {\n h = ((gg - bb) / delta) % HUE_SECTOR_COUNT;\n } else if (max === gg) {\n h = (bb - rr) / delta + HUE_OFFSET_FOR_MAX_G;\n } else {\n h = (rr - gg) / delta + HUE_OFFSET_FOR_MAX_B;\n }\n\n h *= HUE_SECTOR_DEG;\n if (h < 0) {\n h += HUE_MAX_DEG;\n }\n }\n\n return { h, s, v };\n};\n\nexport const hsvToRgb = ({ h, s, v }: KdsHsvColor): KdsRgbColor => {\n const hh = ((h % HUE_MAX_DEG) + HUE_MAX_DEG) % HUE_MAX_DEG;\n const ss = clamp(s, 0, 1);\n const vv = clamp(v, 0, 1);\n\n const c = vv * ss;\n const x = c * (1 - Math.abs(((hh / HUE_SECTOR_DEG) % 2) - 1));\n const m = vv - c;\n\n let rPrime = 0;\n let gPrime = 0;\n let bPrime = 0;\n\n if (hh < HUE_SECTOR_DEG) {\n rPrime = c;\n gPrime = x;\n } else if (hh < HUE_SECTOR_INDEX_2 * HUE_SECTOR_DEG) {\n rPrime = x;\n gPrime = c;\n } else if (hh < HUE_SECTOR_INDEX_3 * HUE_SECTOR_DEG) {\n gPrime = c;\n bPrime = x;\n } else if (hh < HUE_SECTOR_INDEX_4 * HUE_SECTOR_DEG) {\n gPrime = x;\n bPrime = c;\n } else if (hh < HUE_SECTOR_INDEX_5 * HUE_SECTOR_DEG) {\n rPrime = x;\n bPrime = c;\n } else {\n rPrime = c;\n bPrime = x;\n }\n\n return {\n r: round((rPrime + m) * RGB_MAX),\n g: round((gPrime + m) * RGB_MAX),\n b: round((bPrime + m) * RGB_MAX),\n };\n};\n\nexport const hsvToHex = (hsv: KdsHsvColor): string => rgbToHex(hsvToRgb(hsv));\n","import { ref } from \"vue\";\n\nexport const usePointerHandler = (\n updateFromEvent: (event: PointerEvent) => void,\n) => {\n const activePointerId = ref<number | null>(null);\n\n const onPointerDown = (event: PointerEvent) => {\n if (event.button !== 0) {\n return;\n }\n\n const target = event.currentTarget;\n if (!(target instanceof HTMLElement)) {\n return;\n }\n\n activePointerId.value = event.pointerId;\n target.setPointerCapture(event.pointerId);\n updateFromEvent(event);\n };\n\n const onPointerMove = (event: PointerEvent) => {\n if (activePointerId.value !== event.pointerId) {\n return;\n }\n\n updateFromEvent(event);\n };\n\n const endPointerInteraction = (event: PointerEvent) => {\n if (activePointerId.value !== event.pointerId) {\n return;\n }\n\n const target = event.currentTarget;\n if (\n target instanceof HTMLElement &&\n target.hasPointerCapture(event.pointerId)\n ) {\n target.releasePointerCapture(event.pointerId);\n }\n\n activePointerId.value = null;\n };\n\n return {\n activePointerId,\n onPointerDown,\n onPointerMove,\n onPointerUp: endPointerInteraction,\n };\n};\n","<script setup lang=\"ts\">\nimport { computed, ref, watch } from \"vue\";\n\nimport KdsTextInput from \"../TextInput/KdsTextInput.vue\";\n\nimport {\n clamp,\n hexToRgb,\n hsvToHex,\n hsvToRgb,\n normalizeHexColor,\n rgbToHsv,\n} from \"./colorUtils\";\nimport { usePointerHandler } from \"./usePointerHandler\";\n\nconst DEFAULT_HUE_DEG = 270;\nconst DEFAULT_SATURATION = 0.8;\nconst DEFAULT_VALUE = 0.9;\n\nconst HUE_MAX_DEG = 360;\nconst HUE_MAX_EXCLUSIVE_DEG = 359.999;\nconst PERCENT = 100;\n\nconst KEYBOARD_STEP = 0.01;\nconst KEYBOARD_LARGE_STEP = 0.1;\nconst HUE_KEYBOARD_STEP_DEG = 1;\nconst HUE_KEYBOARD_LARGE_STEP_DEG = 10;\n\nconst modelValue = defineModel<string>({ default: \"\" });\n\nconst colorspaceEl = ref<HTMLElement | null>(null);\nconst hueEl = ref<HTMLElement | null>(null);\n\nconst hue = ref(DEFAULT_HUE_DEG);\nconst saturation = ref(DEFAULT_SATURATION);\nconst value = ref(DEFAULT_VALUE);\n/**\n * This flag is used to prevent feedback loops when updating the internal HSV state from the external modelValue.\n * When the user updates the color using the UI, we first set this flag to indicate that the next modelValue update is\n * coming from an internal change, so the watcher should ignore it.\n * Without this flag, updating the color would adapt the position of the handle (i.e. the handle jumps), because the\n * same color can occur in multiple places in the color space.\n */\nconst hasPendingInternalModelUpdate = ref(false);\n\nconst syncFromModelValue = (next: string) => {\n const rgb = hexToRgb(next);\n if (!rgb) {\n return;\n }\n\n const hsv = rgbToHsv(rgb);\n hue.value = hsv.h;\n saturation.value = hsv.s;\n value.value = hsv.v;\n};\n\nwatch(\n () => modelValue.value,\n (next) => {\n if (hasPendingInternalModelUpdate.value) {\n hasPendingInternalModelUpdate.value = false;\n return;\n }\n\n syncFromModelValue(next);\n },\n { immediate: true },\n);\n\nconst currentHex = computed(() =>\n hsvToHex({\n h: hue.value,\n s: saturation.value,\n v: value.value,\n }),\n);\n\nconst hueRgb = computed(() => hsvToRgb({ h: hue.value, s: 1, v: 1 }));\n\nconst TO_BOTTOM_GRADIENT = \"linear-gradient(to bottom, transparent, black)\";\n\nconst colorspaceBackground = computed(() => {\n const { r, g, b } = hueRgb.value;\n return {\n background: `${TO_BOTTOM_GRADIENT}, linear-gradient(to right, white, rgb(${r}, ${g}, ${b}))`,\n };\n});\n\nconst colorspaceHandleStyle = computed(() => ({\n left: `${saturation.value * 100}%`,\n top: `${(1 - value.value) * 100}%`,\n}));\n\nconst hueHandleStyle = computed(() => ({\n left: `${(hue.value / HUE_MAX_DEG) * PERCENT}%`,\n}));\n\nconst setModelValueFromHsv = () => {\n hasPendingInternalModelUpdate.value = true;\n modelValue.value = currentHex.value;\n};\n\nconst updateFromColorspaceEvent = (event: PointerEvent) => {\n const el = colorspaceEl.value;\n if (!el) {\n return;\n }\n\n const rect = el.getBoundingClientRect();\n const x = (event.clientX - rect.left) / rect.width;\n const y = (event.clientY - rect.top) / rect.height;\n\n saturation.value = Math.min(1, Math.max(0, x));\n value.value = 1 - Math.min(1, Math.max(0, y));\n\n setModelValueFromHsv();\n};\n\nconst updateFromHueEvent = (event: PointerEvent) => {\n const el = hueEl.value;\n if (!el) {\n return;\n }\n\n const rect = el.getBoundingClientRect();\n const x = (event.clientX - rect.left) / rect.width;\n hue.value = Math.min(HUE_MAX_EXCLUSIVE_DEG, Math.max(0, x * HUE_MAX_DEG));\n\n setModelValueFromHsv();\n};\n\nconst {\n onPointerDown: onColorspacePointerDown,\n onPointerMove: onColorspacePointerMove,\n onPointerUp: onColorspacePointerUp,\n} = usePointerHandler(updateFromColorspaceEvent);\n\nconst {\n onPointerDown: onHuePointerDown,\n onPointerMove: onHuePointerMove,\n onPointerUp: onHuePointerUp,\n} = usePointerHandler(updateFromHueEvent);\n\nconst updateFromTextValue = (next: string) => {\n modelValue.value = next;\n\n const normalized = normalizeHexColor(next);\n if (normalized) {\n syncFromModelValue(normalized);\n }\n};\n\nconst saturationPercent = computed(() =>\n Math.round(saturation.value * PERCENT),\n);\nconst valuePercent = computed(() => Math.round(value.value * PERCENT));\n\nconst colorspaceValueText = computed(\n () =>\n `Saturation ${saturationPercent.value} percent, brightness ${valuePercent.value} percent`,\n);\n\nconst hueValueText = computed(() => `${Math.round(hue.value)} degrees`);\n\nconst onColorspaceKeyDown = (event: KeyboardEvent) => {\n const step = event.shiftKey ? KEYBOARD_LARGE_STEP : KEYBOARD_STEP;\n let handled = true;\n\n switch (event.key) {\n case \"ArrowLeft\":\n saturation.value = clamp(saturation.value - step, 0, 1);\n break;\n case \"ArrowRight\":\n saturation.value = clamp(saturation.value + step, 0, 1);\n break;\n case \"ArrowUp\":\n value.value = clamp(value.value + step, 0, 1);\n break;\n case \"ArrowDown\":\n value.value = clamp(value.value - step, 0, 1);\n break;\n default:\n handled = false;\n }\n\n if (handled) {\n event.preventDefault();\n setModelValueFromHsv();\n }\n};\n\nconst onHueKeyDown = (event: KeyboardEvent) => {\n const step = event.shiftKey\n ? HUE_KEYBOARD_LARGE_STEP_DEG\n : HUE_KEYBOARD_STEP_DEG;\n let handled = true;\n\n switch (event.key) {\n case \"ArrowLeft\":\n hue.value = clamp(hue.value - step, 0, HUE_MAX_EXCLUSIVE_DEG);\n break;\n case \"ArrowRight\":\n hue.value = clamp(hue.value + step, 0, HUE_MAX_EXCLUSIVE_DEG);\n break;\n default:\n handled = false;\n }\n\n if (handled) {\n event.preventDefault();\n setModelValueFromHsv();\n }\n};\n</script>\n\n<template>\n <div class=\"kds-color-picker\">\n <div\n ref=\"colorspaceEl\"\n class=\"colorspace\"\n role=\"slider\"\n aria-label=\"Color selection\"\n aria-roledescription=\"2D color slider\"\n :aria-valuetext=\"colorspaceValueText\"\n :style=\"colorspaceBackground\"\n tabindex=\"0\"\n @pointerdown.prevent=\"onColorspacePointerDown\"\n @pointermove.prevent=\"onColorspacePointerMove\"\n @pointerup=\"onColorspacePointerUp\"\n @pointercancel=\"onColorspacePointerUp\"\n @keydown=\"onColorspaceKeyDown\"\n >\n <div class=\"handle\" :style=\"colorspaceHandleStyle\" />\n </div>\n\n <div\n ref=\"hueEl\"\n class=\"hue\"\n role=\"slider\"\n aria-label=\"Hue\"\n :aria-valuenow=\"Math.round(hue)\"\n aria-valuemin=\"0\"\n :aria-valuemax=\"HUE_MAX_DEG\"\n :aria-valuetext=\"hueValueText\"\n tabindex=\"0\"\n @pointerdown.prevent=\"onHuePointerDown\"\n @pointermove.prevent=\"onHuePointerMove\"\n @pointerup=\"onHuePointerUp\"\n @pointercancel=\"onHuePointerUp\"\n @keydown=\"onHueKeyDown\"\n >\n <div class=\"handle\" :style=\"hueHandleStyle\" />\n </div>\n\n <KdsTextInput\n :model-value=\"modelValue\"\n aria-label=\"Color hex value\"\n placeholder=\"#FFFFFF\"\n @update:model-value=\"updateFromTextValue\"\n />\n </div>\n</template>\n\n<style scoped>\n.kds-color-picker {\n display: flex;\n flex-direction: column;\n gap: var(--kds-spacing-container-1x);\n width: calc(206px + 2 * var(--kds-spacing-container-0-75x));\n max-width: 100%;\n padding: var(--kds-spacing-container-0-75x);\n background: var(--kds-color-surface-default);\n border-radius: var(--kds-border-radius-container-0-50x);\n box-shadow: var(--kds-elevation-level-3);\n}\n\n.colorspace {\n position: relative;\n width: 100%;\n height: 200px;\n cursor: crosshair;\n outline: none;\n border-radius: var(--kds-border-radius-container-0-37x);\n}\n\n.handle {\n position: absolute;\n width: var(--kds-dimension-icon-0-75x);\n height: var(--kds-dimension-icon-0-75x);\n pointer-events: none;\n border: var(--kds-border-color-picker-handle-initial);\n border-radius: var(--kds-border-radius-container-pill);\n box-shadow: var(--kds-elevation-level-3);\n transform: translate(-50%, -50%);\n}\n\n.hue {\n position: relative;\n width: 100%;\n height: var(--kds-dimension-component-height-0-75x);\n cursor: pointer;\n outline: none;\n background: linear-gradient(\n 90deg,\n hsl(0deg 100% 50%) 0%,\n hsl(60deg 100% 50%) 17%,\n hsl(120deg 100% 50%) 33%,\n hsl(180deg 100% 50%) 50%,\n hsl(240deg 100% 50%) 67%,\n hsl(300deg 100% 50%) 83%,\n hsl(360deg 100% 50%) 100%\n );\n border-radius: var(--kds-border-radius-container-pill);\n\n & .handle {\n top: 50%;\n }\n}\n\n.colorspace:focus,\n.hue:focus {\n outline: none;\n}\n\n.colorspace:focus .handle,\n.colorspace:focus-visible .handle,\n.hue:focus .handle,\n.hue:focus-visible .handle {\n outline: var(--kds-border-action-focused);\n outline-offset: calc(-1 * var(--kds-spacing-offset-focus));\n}\n</style>\n","/**\n * Behavior for normalizing hex color input on focus out. It supports the following formats:\n * - 1-digit hex -> repeat up to 6 digits (e.g. #a -> #AAAAAA)\n * - 2-digit hex -> repeat up to 6 digits (e.g. #ab -> #ABABAB)\n * - 3-digit hex -> convert to 6-digit representation (e.g. #abc -> #AABBCC)\n * - 4-digit hex -> convert to 6-digit representation (e.g. #abcd -> #AABBCC); we do not support alpha values for\n * now, so the last digit is ignored\n * - 5-digit hex -> unsupported, restore last valid hex\n * - 6-digit hex -> normalize to uppercase (e.g. #aabbcc -> #AABBCC) and add missing hash if needed\n * (e.g. aabbcc -> #AABBCC)\n */\n\nimport { type Ref, ref, watch } from \"vue\";\n\nconst HEX_LENGTH_1 = 1;\nconst HEX_LENGTH_2 = 2;\nconst HEX_LENGTH_3 = 3;\nconst HEX_LENGTH_4 = 4;\nconst HEX_LENGTH_6 = 6;\n\nconst normalize = (\n value: string,\n fallbackValue: string,\n): string | undefined => {\n const trimmed = value.trim();\n if (trimmed.length === 0) {\n return fallbackValue;\n }\n\n const withoutHash = trimmed.startsWith(\"#\") ? trimmed.slice(1) : trimmed;\n if (!/^[0-9a-fA-F]+$/.test(withoutHash)) {\n return fallbackValue;\n }\n\n if (withoutHash.length === HEX_LENGTH_1) {\n return `#${withoutHash.repeat(HEX_LENGTH_6)}`.toUpperCase();\n }\n\n if (withoutHash.length === HEX_LENGTH_2) {\n return `#${withoutHash.repeat(HEX_LENGTH_3)}`.toUpperCase();\n }\n\n if (\n withoutHash.length === HEX_LENGTH_3 ||\n withoutHash.length === HEX_LENGTH_4\n ) {\n const [r, g, b] = withoutHash;\n return `#${r}${r}${g}${g}${b}${b}`.toUpperCase();\n }\n if (withoutHash.length === HEX_LENGTH_6) {\n return `#${withoutHash}`.toUpperCase();\n }\n return fallbackValue;\n};\n\nexport const useColorInputValidationOnFocusOut = (modelValue: Ref<string>) => {\n const lastValidHexColor = ref<string>(\"\");\n\n watch(\n modelValue,\n (value) => {\n const withoutHash = value.startsWith(\"#\") ? value.slice(1) : value;\n if (/^[0-9a-fA-F]{6}$/.test(withoutHash)) {\n lastValidHexColor.value = `#${withoutHash.toUpperCase()}`;\n }\n },\n { immediate: true },\n );\n\n const handleFocusOut = (event: FocusEvent) => {\n const currentTarget = event.currentTarget;\n if (!(currentTarget instanceof HTMLElement)) {\n return;\n }\n const nextFocusedElement = event.relatedTarget;\n if (\n nextFocusedElement instanceof Node &&\n currentTarget.contains(nextFocusedElement)\n ) {\n return;\n }\n\n const normalized = normalize(modelValue.value, lastValidHexColor.value);\n if (normalized !== undefined) {\n modelValue.value = normalized;\n }\n };\n\n return { handleFocusOut };\n};\n","<script setup lang=\"ts\">\nimport { computed, ref, useTemplateRef } from \"vue\";\n\nimport type { KdsHexColor } from \"../../../accessories\";\nimport KdsColorSwatch from \"../../../accessories/ColorSwatch/KdsColorSwatch.vue\";\nimport { KdsToggleButton } from \"../../../buttons\";\nimport KdsPopover from \"../../../overlays/Popover/KdsPopover.vue\";\nimport BaseFormFieldWrapper from \"../../_helper/BaseFormFieldWrapper.vue\";\nimport BaseInput from \"../BaseInput.vue\";\n\nimport ColorPicker from \"./ColorPicker.vue\";\nimport { normalizeHexColor } from \"./colorUtils\";\nimport type { KdsColorInputProps } from \"./types\";\nimport { useColorInputValidationOnFocusOut } from \"./useColorInputValidationOnFocusOut\";\n\nconst props = withDefaults(defineProps<KdsColorInputProps>(), {\n placeholder: \"#FFFFFF\",\n disabled: false,\n error: false,\n validating: false,\n preserveSubTextSpace: false,\n autocomplete: undefined,\n});\n\nconst modelValue = defineModel<string>({ default: \"\" });\nconst open = ref(false);\n\nconst popoverEl = useTemplateRef(\"popoverEl\");\n\nconst swatchColor = computed<KdsHexColor>(\n () => (normalizeHexColor(modelValue.value) ?? \"#FFFFFF\") as KdsHexColor,\n);\n\nconst { handleFocusOut } = useColorInputValidationOnFocusOut(modelValue);\n</script>\n\n<template>\n <BaseFormFieldWrapper v-bind=\"props\">\n <template #default=\"slotProps\">\n <div :style=\"popoverEl?.anchorStyle\" @focusout=\"handleFocusOut\">\n <BaseInput\n v-bind=\"slotProps\"\n v-model=\"modelValue\"\n :placeholder=\"props.placeholder\"\n :disabled=\"props.disabled\"\n :error=\"props.error\"\n :autocomplete=\"props.autocomplete\"\n >\n <template #leading>\n <KdsColorSwatch\n size=\"large\"\n :color=\"swatchColor\"\n :aria-hidden=\"true\"\n />\n </template>\n <template #trailing>\n <KdsToggleButton\n v-model=\"open\"\n size=\"xsmall\"\n variant=\"outlined\"\n leading-icon=\"color-picker\"\n aria-label=\"Open color picker\"\n :aria-controls=\"popoverEl?.popoverId\"\n aria-haspopup=\"dialog\"\n :disabled=\"props.disabled\"\n :title=\"open ? 'Close color picker' : 'Open color picker'\"\n />\n </template>\n </BaseInput>\n\n <KdsPopover\n ref=\"popoverEl\"\n v-model=\"open\"\n placement=\"bottom-right\"\n popover-aria-label=\"Color picker\"\n >\n <ColorPicker v-model=\"modelValue\" />\n </KdsPopover>\n </div>\n </template>\n </BaseFormFieldWrapper>\n</template>\n","export type KdsNumberParser = {\n locale: string;\n decimalSeparator: string;\n groupSeparator: string;\n /**\n * Maximum number of fraction digits implied by `step`.\n *\n * Example:\n * - step=1 => 0\n * - step=0.01 => 2\n * - step=1e-7 => 7\n */\n stepFractionDigits: number;\n formatForDisplay: (value: number) => string;\n parseFromInput: (value: string) => number;\n /**\n * Round a number to the nearest step increment.\n * Returns NaN for non-finite values.\n */\n roundToStep: (value: number) => number;\n};\n\nconst additionalGroupSeparators = [\" \", \"\\u00A0\", \"\\u202F\"];\nconst decimalSeparatorSample = 1.1;\nconst groupSeparatorSample = 1000.1;\n\nconst countFractionDigits = (value: number) => {\n if (!Number.isFinite(value)) {\n return 0;\n }\n\n // Handle exponential notation (e.g. 1e-7) deterministically.\n // We only care about the number of digits right of the decimal point.\n // Examples:\n // - 1e-7 => 7\n // - 1.23e-4 => 6 (0.000123)\n // - 1e+3 => 0\n const exp = value.toExponential();\n const match = exp.match(/^[-+]?(\\d+)(?:\\.(\\d+))?e([+-]?\\d+)$/i);\n if (!match) {\n return 0;\n }\n\n const fractionDigitsInMantissa = match[2]?.length ?? 0;\n const exponent = Number.parseInt(match[3]!, 10);\n\n if (exponent >= 0) {\n // Shift decimal point to the right -> no additional fraction digits required.\n return Math.max(0, fractionDigitsInMantissa - exponent);\n }\n\n // Shift decimal point to the left -> adds (-exponent) fraction digits.\n return fractionDigitsInMantissa + Math.abs(exponent);\n};\n\nexport const createKdsNumberParser = (params: {\n locale: string;\n step: number;\n}): KdsNumberParser => {\n const formatter = new Intl.NumberFormat(params.locale);\n\n const decimalSeparator =\n formatter\n .formatToParts(decimalSeparatorSample)\n .find((part) => part.type === \"decimal\")?.value ?? \".\";\n\n const groupSeparator =\n formatter\n .formatToParts(groupSeparatorSample)\n .find((part) => part.type === \"group\")?.value ?? \",\";\n\n const removeGroupingSeparators = (input: string) =>\n [groupSeparator, ...additionalGroupSeparators].reduce(\n (acc, groupSep) =>\n groupSep.length > 0 ? acc.split(groupSep).join(\"\") : acc,\n input,\n );\n\n const formattersByMaxDecimals = new Map<number, Intl.NumberFormat>();\n const getFormatterForMaxDecimals = (maxDecimals: number) => {\n const cached = formattersByMaxDecimals.get(maxDecimals);\n if (cached) {\n return cached;\n }\n\n const created = new Intl.NumberFormat(params.locale, {\n useGrouping: false,\n minimumFractionDigits: 0,\n maximumFractionDigits: maxDecimals,\n });\n\n formattersByMaxDecimals.set(maxDecimals, created);\n return created;\n };\n\n const stepFractionDigits = countFractionDigits(params.step);\n const precisionFactor = Number(`1e${stepFractionDigits}`);\n\n const formatForDisplay = (value: number) => {\n if (!Number.isFinite(value)) {\n return \"\";\n }\n\n // Use at least the step's precision, but also preserve the value's own precision.\n // Note: values can also stringify to exponent form, so use the same helper.\n const valueDecimals = countFractionDigits(value);\n\n const maxDecimals = Math.max(stepFractionDigits, valueDecimals);\n\n return getFormatterForMaxDecimals(maxDecimals).format(value);\n };\n\n const roundToStep = (value: number) => {\n if (!Number.isFinite(value)) {\n return NaN;\n }\n\n const step = params.step;\n\n if (!Number.isFinite(step) || step <= 0) {\n return value;\n }\n\n // Avoid floating point artifacts when working with decimal steps.\n // Use a fixed factor derived from stepFractionDigits (handles exponent notation reliably).\n if (!Number.isFinite(precisionFactor) || precisionFactor <= 0) {\n return value;\n }\n\n const scaledNext = Math.round(value * precisionFactor);\n const scaledStep = Math.round(step * precisionFactor);\n\n // If step can't be represented at the current precision, don't round.\n if (scaledStep === 0) {\n return value;\n }\n\n const roundedScaled = Math.round(scaledNext / scaledStep) * scaledStep;\n return roundedScaled / precisionFactor;\n };\n\n const isValidNormalizedNumber = (normalized: string) =>\n // Accept plain decimals as well as scientific notation.\n // Note: whitespace is removed earlier; we don't accept grouping separators here.\n /^[-+]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][-+]?\\d+)?$/.test(normalized);\n\n /**\n * Parse a localized number string to a number.\n *\n * Supported input patterns:\n * - Locale decimal separator (e.g. \"1,2\" in de-DE)\n * - Locale grouping + decimal (e.g. \"1.234,56\" in de-DE)\n * - Grouped integer without decimal separator (e.g. \"1,234\" in en-US, \"1.234\" in de-DE)\n * - \".\" as a fallback decimal separator when the locale uses \",\" (common user input)\n */\n const parseFromInput = (value: string) => {\n const trimmed = value.trim();\n if (trimmed.length === 0) {\n return NaN;\n }\n\n const localeDecimal = decimalSeparator;\n\n const hasLocaleDecimal =\n localeDecimal.length > 0 && trimmed.includes(localeDecimal);\n\n // If the locale decimal separator is present, we can safely remove grouping chars.\n if (hasLocaleDecimal) {\n const withoutGrouping = removeGroupingSeparators(trimmed);\n const normalized = withoutGrouping.split(localeDecimal).join(\".\");\n if (!isValidNormalizedNumber(normalized)) {\n return NaN;\n }\n const parsed = Number.parseFloat(normalized);\n return Number.isFinite(parsed) ? parsed : NaN;\n }\n\n // No locale decimal separator present.\n //\n // Case A: locale uses ',' as decimal separator (e.g. de-DE). Accept '.' as fallback decimal.\n // While doing so, we still want to support locale grouping separators like '1.234'.\n if (localeDecimal !== \".\" && trimmed.includes(\".\")) {\n const lastDotIndex = trimmed.lastIndexOf(\".\");\n const digitsAfterDot = trimmed.slice(lastDotIndex + 1);\n\n const looksLikeDecimal =\n digitsAfterDot.length > 0 && digitsAfterDot.length <= 2;\n\n const normalized = looksLikeDecimal\n ? `${removeGroupingSeparators(trimmed.slice(0, lastDotIndex))}.${removeGroupingSeparators(\n digitsAfterDot,\n )}`\n : removeGroupingSeparators(trimmed);\n\n if (!isValidNormalizedNumber(normalized)) {\n return NaN;\n }\n\n const parsed = Number.parseFloat(normalized);\n return Number.isFinite(parsed) ? parsed : NaN;\n }\n\n // Case B: locale uses '.' as decimal separator (e.g. en-US).\n // Remove grouping separators such as ',' and whitespace, so '1,234' => '1234'.\n // Note: we intentionally do NOT treat ',' as a decimal separator here.\n const normalized = removeGroupingSeparators(trimmed);\n if (!isValidNormalizedNumber(normalized)) {\n return NaN;\n }\n const parsed = Number.parseFloat(normalized);\n return Number.isFinite(parsed) ? parsed : NaN;\n };\n\n return {\n locale: params.locale,\n decimalSeparator,\n groupSeparator,\n stepFractionDigits,\n formatForDisplay,\n parseFromInput,\n roundToStep,\n };\n};\n","<script setup lang=\"ts\">\nimport { computed, ref, useTemplateRef, watch } from \"vue\";\n\nimport KdsButton from \"../../../buttons/KdsButton/KdsButton.vue\";\nimport BaseFormFieldWrapper from \"../../_helper/BaseFormFieldWrapper.vue\";\nimport type { KdsFormFieldExpose } from \"../../types.ts\";\nimport BaseInput from \"../BaseInput.vue\";\n\nimport { createKdsNumberParser } from \"./numberParser\";\nimport type { KdsNumberInputProps } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsNumberInputProps>(), {\n disabled: false,\n error: false,\n validating: false,\n preserveSubTextSpace: false,\n unit: \"\",\n step: 1,\n});\n\nconst modelValue = defineModel<number>({ default: Number.NaN });\n\nconst isFocused = ref(false);\n\n/**\n * String representation of what's currently shown in the input.\n *\n * Important: we keep this separate from the numeric model to allow intermediate\n * typing states and to avoid clamping away out-of-range values before external\n * validation (e.g. JSONForms/builtin validations) can kick in.\n */\nconst localValue = ref<string>(\"\");\n\nconst numberParser = computed(() =>\n createKdsNumberParser({ locale: \"en-US\", step: props.step }),\n);\n\nconst ariaValuenow = computed(() =>\n Number.isFinite(modelValue.value) ? modelValue.value : undefined,\n);\n\nconst ariaValuetext = computed(() => {\n if (!Number.isFinite(modelValue.value)) {\n return undefined;\n }\n\n // Format the spoken feedback using en-US locale (decimal separator, etc.).\n return numberParser.value.formatForDisplay(modelValue.value);\n});\n\nconst clamp = (value: number) => {\n if (!Number.isFinite(value)) {\n return Number.NaN;\n }\n\n let result = value;\n\n if (props.min !== undefined && !Number.isNaN(props.min)) {\n result = Math.max(props.min, result);\n }\n if (props.max !== undefined && !Number.isNaN(props.max)) {\n result = Math.min(props.max, result);\n }\n\n return result;\n};\n\nwatch(\n () => modelValue.value,\n (next) => {\n // While focused, let the user keep typing without being overridden by external updates.\n if (isFocused.value) {\n return;\n }\n localValue.value = numberParser.value.formatForDisplay(next);\n },\n { immediate: true },\n);\n\nconst canDecrease = computed(() => {\n if (props.disabled) {\n return false;\n }\n\n if (props.min === undefined || Number.isNaN(props.min)) {\n return true;\n }\n\n if (Number.isNaN(modelValue.value)) {\n return true;\n }\n\n return modelValue.value > props.min;\n});\n\nconst canIncrease = computed(() => {\n if (props.disabled) {\n return false;\n }\n\n if (props.max === undefined || Number.isNaN(props.max)) {\n return true;\n }\n\n if (Number.isNaN(modelValue.value)) {\n return true;\n }\n\n return modelValue.value < props.max;\n});\n\nconst adjustByStep = (direction: -1 | 1) => {\n if (props.step <= 0) {\n return;\n }\n\n const base = Number.isFinite(modelValue.value)\n ? modelValue.value\n : numberParser.value.parseFromInput(localValue.value);\n\n const nextRaw = Number.isFinite(base) ? base + direction * props.step : 0;\n // Round due to precision issues that can arise when adding steps to certain numbers, e.g. 0.1 + 0.1 + 0.1.\n const rounded = numberParser.value.roundToStep(nextRaw);\n const next = clamp(rounded);\n\n modelValue.value = next;\n localValue.value = numberParser.value.formatForDisplay(next);\n};\n\nconst handleKeydown = (event: KeyboardEvent) => {\n if (props.disabled) {\n return;\n }\n\n if (event.key === \"ArrowUp\" && canIncrease.value) {\n event.preventDefault();\n adjustByStep(1);\n return;\n }\n if (event.key === \"ArrowDown\" && canDecrease.value) {\n event.preventDefault();\n adjustByStep(-1);\n }\n};\n\nconst handleUpdateModelValue = (value: string) => {\n localValue.value = value;\n modelValue.value = numberParser.value.parseFromInput(value);\n};\n\nconst handleBlur = () => {\n isFocused.value = false;\n\n // Normalize, round to step, and clamp only when leaving the field.\n const parsed = numberParser.value.parseFromInput(localValue.value);\n const normalized = clamp(parsed);\n\n modelValue.value = normalized;\n localValue.value = numberParser.value.formatForDisplay(normalized);\n};\n\nconst baseInput = useTemplateRef(\"baseInput\");\n\ndefineExpose<KdsFormFieldExpose>({\n focus: () => baseInput.value?.focus(),\n});\n</script>\n\n<template>\n <BaseFormFieldWrapper v-bind=\"props\">\n <template #default=\"slotProps\">\n <BaseInput\n ref=\"baseInput\"\n v-bind=\"slotProps\"\n :model-value=\"localValue\"\n type=\"text\"\n :inputmode=\"props.step >= 1 ? 'numeric' : 'decimal'\"\n :placeholder=\"props.placeholder\"\n :disabled=\"props.disabled\"\n :error=\"props.error\"\n :autocomplete=\"props.autocomplete\"\n :unit=\"props.unit\"\n role=\"spinbutton\"\n :aria-valuenow=\"ariaValuenow\"\n :aria-valuemin=\"props.min\"\n :aria-valuemax=\"props.max\"\n :aria-valuetext=\"ariaValuetext\"\n @update:model-value=\"handleUpdateModelValue\"\n @keydown=\"handleKeydown\"\n @focus=\"isFocused = true\"\n @blur=\"handleBlur\"\n >\n <template #trailing>\n <KdsButton\n type=\"button\"\n size=\"xsmall\"\n variant=\"outlined\"\n leading-icon=\"minus\"\n :aria-label=\"`Decrease ${props.label ?? props.ariaLabel}`\"\n :disabled=\"!canDecrease\"\n @click=\"adjustByStep(-1)\"\n />\n <KdsButton\n type=\"button\"\n size=\"xsmall\"\n variant=\"outlined\"\n leading-icon=\"plus\"\n :aria-label=\"`Increase ${props.label ?? props.ariaLabel}`\"\n :disabled=\"!canIncrease\"\n @click=\"adjustByStep(1)\"\n />\n </template>\n </BaseInput>\n </template>\n </BaseFormFieldWrapper>\n</template>\n","export type KdsPatternInputOptions = {\n caseSensitive: boolean;\n excludeMatches: boolean;\n useRegex: boolean;\n};\n\nconst escapeRegex = (value: string) =>\n value.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n\nconst wildcardToRegexBody = (pattern: string) => {\n // Convert a simple wildcard pattern to a regex body.\n // - `*` => `.*`\n // - `?` => `.`\n // All other characters are escaped.\n let body = \"\";\n for (const char of pattern) {\n if (char === \"*\") {\n body += \".*\";\n continue;\n }\n\n if (char === \"?\") {\n body += \".\";\n continue;\n }\n\n body += escapeRegex(char);\n }\n\n return body;\n};\n\nconst regexBodyToWildcard = (regexBody: string) => {\n // Best-effort conversion:\n // - `.*` => `*`\n // - `.` => `?`\n // - escaped chars -> literal chars\n // If we encounter other regex constructs, we bail out and return undefined.\n let wildcard = \"\";\n for (let i = 0; i < regexBody.length; i += 1) {\n const char = regexBody[i];\n\n if (char === \"\\\\\") {\n const next = regexBody[i + 1];\n if (next === undefined) {\n return undefined;\n }\n wildcard += next;\n i += 1;\n continue;\n }\n\n if (char === \".\") {\n const next = regexBody[i + 1];\n if (next === \"*\") {\n wildcard += \"*\";\n i += 1;\n continue;\n }\n wildcard += \"?\";\n continue;\n }\n\n if (/[[\\]{}()+^$|]/.test(char)) {\n return undefined;\n }\n\n wildcard += char;\n }\n\n return wildcard;\n};\n\nconst CASE_INSENSITIVE_PREFIX = \"(?i:\";\n\nconst stripOuterGroup = (pattern: string, prefix: string) => {\n const trimmed = pattern.trim();\n if (trimmed.startsWith(prefix) && trimmed.endsWith(\")\")) {\n return trimmed.slice(prefix.length, -1);\n }\n return trimmed;\n};\n\nexport const buildRegexFromPatternInput = (\n input: string,\n options: KdsPatternInputOptions,\n): string => {\n const body = options.useRegex ? input : wildcardToRegexBody(input);\n const grouped = `(?:${body})`;\n const withCase = options.caseSensitive\n ? grouped\n : `${CASE_INSENSITIVE_PREFIX}${grouped})`;\n\n if (!options.excludeMatches) {\n return withCase;\n }\n\n return `^(?!.*${withCase}).*$`;\n};\n\n// Removed buildRegExpFromPatternInput: case sensitivity is encoded via the\n// optional `(?i:...)` wrapper in the pattern string.\n\nconst stripOuterNonCapturingGroup = (pattern: string) =>\n stripOuterGroup(pattern, \"(?:\");\n\nconst stripCaseInsensitiveWrapper = (pattern: string) =>\n stripOuterGroup(pattern, CASE_INSENSITIVE_PREFIX);\n\nconst tryParseExcluded = (regex: string): { excludedInner?: string } => {\n // Matches `^(?!.*<inner>).*$` where <inner> is the pattern we emitted.\n const match = regex.trim().match(/^\\^\\(\\?!\\.\\*([\\s\\S]*)\\)\\.\\*\\$$/);\n if (!match) {\n return {};\n }\n return { excludedInner: match[1] };\n};\n\nexport const parseRegexToPatternInputValue = (\n regex: string,\n options: Pick<KdsPatternInputOptions, \"useRegex\" | \"excludeMatches\"> & {\n caseSensitive?: boolean;\n },\n): string => {\n if (regex === \"\") {\n return \"\";\n }\n\n const { excludedInner } = tryParseExcluded(regex);\n const inner = excludedInner === undefined ? regex : excludedInner;\n\n const withoutCase = options.caseSensitive\n ? inner\n : stripCaseInsensitiveWrapper(inner);\n\n const body = stripOuterNonCapturingGroup(withoutCase);\n\n if (options.useRegex) {\n return body;\n }\n\n const wildcard = regexBodyToWildcard(body);\n return wildcard ?? body;\n};\n","<script setup lang=\"ts\">\nimport { computed, ref, useTemplateRef, watch } from \"vue\";\n\nimport KdsToggleButton from \"../../../buttons/KdsToggleButton/KdsToggleButton.vue\";\nimport BaseFormFieldWrapper from \"../../_helper/BaseFormFieldWrapper.vue\";\nimport type { KdsFormFieldExpose } from \"../../types.ts\";\nimport BaseInput from \"../BaseInput.vue\";\n\nimport {\n buildRegexFromPatternInput,\n parseRegexToPatternInputValue,\n} from \"./patternRegex.ts\";\nimport type { KdsPatternInputProps } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsPatternInputProps>(), {\n disabled: false,\n error: false,\n validating: false,\n preserveSubTextSpace: false,\n});\n\n// Public API: a single regex string (encoded with options when toggles are used).\nconst regex = defineModel<string>({ default: \"\" });\n\n// Internal UI state. This is derived from the regex model on external updates.\nconst uiValue = ref(\"\");\nconst caseSensitive = ref(false);\nconst excludeMatches = ref(false);\nconst useRegex = ref(false);\n\nconst rebuildRegexFromUi = () => {\n regex.value = buildRegexFromPatternInput(uiValue.value, {\n caseSensitive: caseSensitive.value,\n excludeMatches: excludeMatches.value,\n useRegex: useRegex.value,\n });\n};\n\nwatch(\n () => regex.value,\n (newValue) => {\n uiValue.value = parseRegexToPatternInputValue(newValue, {\n useRegex: useRegex.value,\n excludeMatches: excludeMatches.value,\n caseSensitive: caseSensitive.value,\n });\n },\n { immediate: true },\n);\n\nconst caseSensitiveAriaLabel = computed(() =>\n caseSensitive.value ? \"Match case-sensitive\" : \"Match case-insensitive\",\n);\nconst excludeMatchesAriaLabel = computed(() =>\n excludeMatches.value ? \"Exclude matches\" : \"Include matches\",\n);\nconst patternModeAriaLabel = computed(() =>\n useRegex.value ? \"Use regex pattern\" : \"Use wildcard pattern\",\n);\n\nconst baseInput = useTemplateRef(\"baseInput\");\n\ndefineExpose<KdsFormFieldExpose>({\n focus: () => baseInput.value?.focus(),\n});\n</script>\n\n<template>\n <BaseFormFieldWrapper v-bind=\"props\">\n <template #default=\"slotProps\">\n <BaseInput\n ref=\"baseInput\"\n v-bind=\"slotProps\"\n v-model=\"uiValue\"\n type=\"text\"\n :placeholder=\"props.placeholder\"\n :disabled=\"props.disabled\"\n :error=\"props.error\"\n :autocomplete=\"props.autocomplete\"\n leading-icon=\"filter\"\n clearable\n @update:model-value=\"rebuildRegexFromUi\"\n >\n <template #trailing>\n <KdsToggleButton\n v-model=\"caseSensitive\"\n size=\"xsmall\"\n variant=\"outlined\"\n leading-icon=\"case-sensitive\"\n :title=\"caseSensitiveAriaLabel\"\n :aria-label=\"caseSensitiveAriaLabel\"\n :disabled=\"props.disabled\"\n @update:model-value=\"rebuildRegexFromUi\"\n />\n\n <KdsToggleButton\n v-model=\"excludeMatches\"\n size=\"xsmall\"\n variant=\"outlined\"\n leading-icon=\"arrows-order\"\n :title=\"excludeMatchesAriaLabel\"\n :aria-label=\"excludeMatchesAriaLabel\"\n :disabled=\"props.disabled\"\n @update:model-value=\"rebuildRegexFromUi\"\n />\n\n <KdsToggleButton\n v-model=\"useRegex\"\n size=\"xsmall\"\n variant=\"outlined\"\n leading-icon=\"regex\"\n :title=\"patternModeAriaLabel\"\n :aria-label=\"patternModeAriaLabel\"\n :disabled=\"props.disabled\"\n @update:model-value=\"rebuildRegexFromUi\"\n />\n </template>\n </BaseInput>\n </template>\n </BaseFormFieldWrapper>\n</template>\n","<script setup lang=\"ts\">\nimport { useTemplateRef } from \"vue\";\n\nimport BaseFormFieldWrapper from \"../../_helper/BaseFormFieldWrapper.vue\";\nimport type { KdsFormFieldExpose } from \"../../types.ts\";\nimport BaseInput from \"../BaseInput.vue\";\n\nimport type { KdsSearchInputProps } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsSearchInputProps>(), {\n placeholder: \"Search\",\n disabled: false,\n error: false,\n validating: false,\n preserveSubTextSpace: false,\n});\n\nconst modelValue = defineModel<string>({ default: \"\" });\n\nconst emit = defineEmits<{\n /** Native focus event forwarded from the input element. */\n focus: [event: FocusEvent];\n /** Native blur event forwarded from the input element. */\n blur: [event: FocusEvent];\n /** Native keydown event forwarded from the input element. */\n keydown: [event: KeyboardEvent];\n}>();\n\nconst baseInput = useTemplateRef(\"baseInput\");\n\ndefineExpose<KdsFormFieldExpose>({\n focus: () => baseInput.value?.focus(),\n});\n</script>\n\n<template>\n <BaseFormFieldWrapper v-bind=\"props\">\n <template #default=\"slotProps\">\n <BaseInput\n ref=\"baseInput\"\n v-bind=\"slotProps\"\n v-model=\"modelValue\"\n type=\"search\"\n :placeholder=\"props.placeholder\"\n :disabled=\"props.disabled\"\n :error=\"props.error\"\n :autocomplete=\"props.autocomplete\"\n leading-icon=\"search\"\n :clearable=\"true\"\n @focus=\"emit('focus', $event)\"\n @blur=\"emit('blur', $event)\"\n @keydown=\"emit('keydown', $event)\"\n />\n </template>\n </BaseFormFieldWrapper>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, useTemplateRef, watch } from \"vue\";\nimport { useResizeObserver } from \"@vueuse/core\";\n\nimport BaseFormFieldWrapper from \"../../_helper/BaseFormFieldWrapper.vue\";\nimport type { KdsFormFieldExpose } from \"../../types.ts\";\n\nimport type { KdsTextareaProps } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsTextareaProps>(), {\n placeholder: \"\",\n rows: 3,\n disabled: false,\n error: false,\n validating: false,\n preserveSubTextSpace: false,\n});\n\nconst normalizedRows = computed(() => Math.max(1, props.rows));\n\nconst modelValue = defineModel<string>({ default: \"\" });\n\nconst textareaElement = useTemplateRef(\"textareaElement\");\n\nfunction resize() {\n const element = textareaElement.value;\n if (!element) {\n return;\n }\n\n // Reset height so scrollHeight reflects the full content height for shrinking.\n element.style.height = \"auto\";\n\n const scrollHeight = element.scrollHeight;\n const offsetHeight = element.offsetHeight;\n if (scrollHeight <= offsetHeight) {\n return;\n }\n\n element.style.height = `${scrollHeight}px`;\n}\n\nuseResizeObserver(textareaElement, resize);\nwatch(modelValue, resize, { immediate: true });\n\ndefineExpose<KdsFormFieldExpose>({\n focus: () => {\n textareaElement.value?.focus();\n },\n});\n</script>\n\n<template>\n <BaseFormFieldWrapper v-bind=\"props\">\n <template #default=\"slotProps\">\n <textarea\n v-bind=\"slotProps\"\n ref=\"textareaElement\"\n v-model=\"modelValue\"\n :class=\"{ invalid: props.error }\"\n :rows=\"normalizedRows\"\n :placeholder=\"props.placeholder\"\n :disabled=\"props.disabled\"\n :autocomplete=\"props.autocomplete\"\n />\n </template>\n </BaseFormFieldWrapper>\n</template>\n\n<style scoped>\ntextarea {\n box-sizing: border-box;\n width: 100%;\n padding: var(--kds-spacing-container-0-5x);\n overflow: hidden;\n font: var(--kds-font-base-body-small);\n color: var(--kds-color-text-and-icon-neutral);\n resize: none;\n outline: none;\n scrollbar-width: none;\n background: var(--kds-color-background-input-initial);\n border: var(--kds-border-action-input);\n border-radius: var(--kds-border-radius-container-0-37x);\n -ms-overflow-style: none;\n\n &.invalid {\n border: var(--kds-border-action-error);\n }\n\n &::placeholder {\n color: var(--kds-color-text-and-icon-subtle);\n }\n\n &:disabled {\n color: var(--kds-color-text-and-icon-disabled);\n cursor: default;\n border: var(--kds-border-action-disabled);\n border-color: var(--kds-color-border-disabled);\n\n &::placeholder {\n color: var(--kds-color-text-and-icon-disabled);\n }\n }\n\n &:hover:not(:disabled, :focus) {\n background: var(--kds-color-background-input-hover);\n }\n\n &:focus:not(:disabled) {\n outline: var(--kds-border-action-focused);\n outline-offset: var(--kds-spacing-offset-focus);\n }\n}\n\ntextarea::-webkit-scrollbar {\n display: none;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { KdsLiveStatus } from \"../../../../accessories\";\nimport KdsAvatar from \"../../../../accessories/Avatar/KdsAvatar.vue\";\nimport KdsColorSwatch from \"../../../../accessories/ColorSwatch/KdsColorSwatch.vue\";\nimport KdsDataType from \"../../../../accessories/Icon/KdsDataType.vue\";\nimport KdsIcon from \"../../../../accessories/Icon/KdsIcon.vue\";\n\nimport type {\n KdsListItemAccessory,\n KdsListItemAccessorySize,\n} from \"./types.ts\";\n\nconst props = withDefaults(\n defineProps<{\n accessory: KdsListItemAccessory;\n size: KdsListItemAccessorySize;\n disabled?: boolean;\n }>(),\n {\n disabled: false,\n },\n);\n</script>\n\n<template>\n <KdsAvatar\n v-if=\"props.accessory.type === 'avatar'\"\n :title=\"props.accessory.title\"\n :src=\"props.accessory.src\"\n :initials=\"props.accessory.initials\"\n :size=\"props.size\"\n />\n <KdsColorSwatch\n v-else-if=\"props.accessory.type === 'colorSwatch'\"\n :color=\"props.accessory.color\"\n :title=\"props.accessory.title\"\n :size=\"props.size\"\n />\n <KdsIcon\n v-else-if=\"props.accessory.type === 'icon'\"\n :name=\"props.accessory.name\"\n :size=\"props.size\"\n :disabled=\"props.disabled\"\n />\n <KdsDataType\n v-else-if=\"props.accessory.type === 'dataType'\"\n :icon-name=\"props.accessory.name\"\n :size=\"props.size\"\n :disabled=\"props.disabled\"\n />\n <KdsLiveStatus\n v-else-if=\"props.accessory.type === 'liveStatus'\"\n :status=\"props.accessory.status\"\n :title=\"props.accessory.title\"\n :size=\"props.size\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { computed, useId } from \"vue\";\n\nimport KdsIcon from \"../../../accessories/Icon/KdsIcon.vue\";\nimport ListItemAccessory from \"../../_helper/List/ListItemAccessory/ListItemAccessory.vue\";\n\nimport type { BaseDropdownProps } from \"./types\";\n\nconst props = withDefaults(defineProps<BaseDropdownProps>(), {\n text: undefined,\n disabled: false,\n error: false,\n missing: false,\n accessory: undefined,\n\n id: undefined,\n ariaLabelledby: undefined,\n ariaDescribedby: undefined,\n ariaLabel: undefined,\n ariaInvalid: undefined,\n popoverId: undefined,\n});\n\nconst open = defineModel<boolean>(\"open\", { default: false });\n\nconst valueTextId = useId();\n\nconst ariaLabelledby = computed(() => {\n if (props.ariaLabel) {\n return undefined;\n }\n if (!props.ariaLabelledby) {\n return valueTextId;\n }\n return `${props.ariaLabelledby} ${valueTextId}`;\n});\n\nconst effectiveAriaLabel = computed(() => {\n if (!props.ariaLabel) {\n return undefined;\n }\n const displayText = props.text ?? props.placeholder;\n return `${props.ariaLabel}, ${displayText}`;\n});\n\nconst emit = defineEmits<{\n click: [];\n keydown: [event: KeyboardEvent];\n}>();\n\nconst onKeydown = (event: KeyboardEvent) => {\n if (props.disabled) {\n return;\n }\n\n emit(\"keydown\", event);\n\n switch (event.key) {\n case \"ArrowDown\":\n case \"ArrowUp\":\n event.preventDefault();\n if (!open.value) {\n open.value = true;\n }\n break;\n }\n};\n</script>\n\n<template>\n <button\n :id=\"props.id\"\n class=\"kds-dropdown-trigger-button\"\n type=\"button\"\n :aria-expanded=\"open\"\n :aria-labelledby=\"ariaLabelledby\"\n :aria-describedby=\"props.ariaDescribedby\"\n :aria-label=\"effectiveAriaLabel\"\n :aria-invalid=\"props.ariaInvalid\"\n :aria-controls=\"props.popoverId\"\n aria-haspopup=\"dialog\"\n :disabled=\"props.disabled\"\n :class=\"{ error: props.error }\"\n @click=\"!props.disabled && emit('click')\"\n @keydown=\"onKeydown\"\n >\n <span v-if=\"props.accessory\" class=\"leading\" aria-hidden=\"true\">\n <ListItemAccessory :accessory=\"props.accessory\" size=\"medium\" />\n </span>\n\n <span\n :id=\"valueTextId\"\n class=\"text\"\n :class=\"{\n placeholder: !props.text,\n missing: props.missing,\n }\"\n >\n {{ props.text ?? props.placeholder }}\n </span>\n\n <span class=\"trailing\" aria-hidden=\"true\">\n <KdsIcon :name=\"open ? 'chevron-up' : 'chevron-down'\" size=\"small\" />\n </span>\n </button>\n</template>\n\n<style scoped>\n.kds-dropdown-trigger-button {\n display: flex;\n align-items: center;\n width: 100%;\n height: var(--kds-dimension-component-height-1-75x);\n padding: 0 var(--kds-spacing-container-0-25x);\n font: var(--kds-font-base-body-small);\n color: var(--kds-color-text-and-icon-neutral);\n cursor: pointer;\n background: var(--kds-color-background-input-initial);\n border: var(--kds-border-action-input);\n border-radius: var(--kds-border-radius-container-0-37x);\n\n &:focus-visible {\n outline: var(--kds-border-action-focused);\n outline-offset: var(--kds-spacing-offset-focus);\n }\n\n &.error {\n border: var(--kds-border-action-error);\n }\n\n &:disabled {\n color: var(--kds-color-text-and-icon-disabled);\n cursor: default;\n border: var(--kds-border-action-disabled);\n border-color: var(--kds-color-border-disabled);\n }\n\n &:not(:disabled, :focus):hover {\n background: var(--kds-color-background-input-hover);\n }\n}\n\n.leading {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n width: var(--kds-dimension-component-width-1x);\n height: var(--kds-dimension-component-width-1x);\n margin-left: var(--kds-spacing-container-0-12x);\n}\n\n.text {\n flex: 1 0 0;\n min-width: 0;\n padding: var(--kds-spacing-container-0-25x);\n overflow: hidden;\n text-overflow: ellipsis;\n text-align: left;\n white-space: nowrap;\n\n &.placeholder {\n color: var(--kds-color-text-and-icon-subtle);\n }\n\n &.missing {\n color: var(--kds-color-text-and-icon-danger);\n }\n}\n\n.trailing {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n padding-right: var(--kds-spacing-container-0-12x);\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed } from \"vue\";\n\nimport KdsButton from \"../../buttons/KdsButton/KdsButton.vue\";\nimport KdsLinkButton from \"../../buttons/KdsLinkButton/KdsLinkButton.vue\";\n\nimport type { KdsEmptyStateProps } from \"./types\";\n\nconst props = defineProps<KdsEmptyStateProps>();\n\nconst emit = defineEmits<{\n /**\n * Fired when the button is clicked\n *\n * This event is only emitted when the `button` prop is provided.\n */\n buttonClick: [event: MouseEvent];\n}>();\n\nconst isLinkButton = computed(\n () => props.button && \"to\" in props.button && props.button.to !== undefined,\n);\n\nconst buttonComponent = computed(() =>\n isLinkButton.value ? KdsLinkButton : KdsButton,\n);\n</script>\n\n<template>\n <div class=\"kds-empty-state\">\n <p class=\"kds-empty-state-headline\">{{ props.headline }}</p>\n <p v-if=\"props.description\" class=\"kds-empty-state-description\">\n {{ props.description }}\n </p>\n <div v-if=\"props.button\" class=\"kds-empty-state-action\">\n <component\n :is=\"buttonComponent\"\n v-bind=\"props.button\"\n @click=\"emit('buttonClick', $event)\"\n />\n </div>\n </div>\n</template>\n\n<style scoped>\n.kds-empty-state {\n display: flex;\n flex-direction: column;\n gap: var(--kds-spacing-container-0-5x);\n align-items: center;\n max-width: 280px;\n padding: var(--kds-spacing-container-0-5x);\n}\n\n.kds-empty-state-headline {\n margin: 0;\n font: var(--kds-font-base-title-small);\n color: var(--kds-color-text-and-icon-muted);\n text-align: center;\n}\n\n.kds-empty-state-description {\n margin: 0;\n font: var(--kds-font-base-body-small);\n color: var(--kds-color-text-and-icon-muted);\n text-align: center;\n}\n\n.kds-empty-state-action {\n margin-top: var(--kds-spacing-container-0-12x);\n}\n</style>\n","export const kdsListItemAccessorySize = {\n SMALL: \"small\",\n MEDIUM: \"medium\",\n LARGE: \"large\",\n} as const;\n\nexport const kdsListItemAccessorySizes = Object.values(\n kdsListItemAccessorySize,\n);\n","export const kdsListItemVariant = {\n SMALL: \"small\",\n LARGE: \"large\",\n} as const;\n\nexport const kdsListItemVariants = Object.values(kdsListItemVariant);\n","<script setup lang=\"ts\">\nimport { computed, useTemplateRef } from \"vue\";\n\nimport KdsIcon from \"../../../../accessories/Icon/KdsIcon.vue\";\nimport { useKdsIsTruncated } from \"../../../../util\";\nimport ListItemAccessory from \"../ListItemAccessory/ListItemAccessory.vue\";\nimport { kdsListItemAccessorySize } from \"../ListItemAccessory/enums.ts\";\n\nimport { kdsListItemVariant } from \"./enums.ts\";\nimport type { KdsListItemProps } from \"./types.ts\";\n\nconst props = withDefaults(defineProps<KdsListItemProps>(), {\n accessory: undefined,\n subText: undefined,\n variant: kdsListItemVariant.SMALL,\n shortcut: undefined,\n trailingIcon: undefined,\n special: false,\n selected: false,\n active: false,\n missing: false,\n disabled: false,\n});\n\nconst emit = defineEmits<{\n /**\n * Emitted when the list item is clicked.\n */\n click: [event: MouseEvent];\n}>();\n\nconst accessorySize = computed(() =>\n props.variant === kdsListItemVariant.LARGE\n ? kdsListItemAccessorySize.LARGE\n : kdsListItemAccessorySize.SMALL,\n);\n\nconst onClick = (event: MouseEvent) => {\n if (props.disabled) {\n event.stopPropagation();\n event.preventDefault();\n return;\n }\n emit(\"click\", event);\n};\n\nconst labelEl = useTemplateRef(\"labelEl\");\nconst { isTruncated: isLabelTruncated } = useKdsIsTruncated(labelEl);\n\nconst subtextEl = useTemplateRef(\"subtextEl\");\nconst { isTruncated: isSubtextTruncated } = useKdsIsTruncated(subtextEl);\n</script>\n\n<template>\n <div\n :id=\"props.id\"\n role=\"option\"\n :aria-selected=\"props.selected\"\n :aria-disabled=\"props.disabled\"\n :class=\"[\n 'kds-list-item',\n props.variant,\n {\n selected: props.selected,\n active: props.active,\n missing: props.missing,\n disabled: props.disabled,\n },\n ]\"\n @click=\"onClick\"\n >\n <span v-if=\"props.accessory\" class=\"accessory\">\n <ListItemAccessory\n :accessory=\"props.accessory\"\n :size=\"accessorySize\"\n :disabled=\"props.disabled\"\n />\n </span>\n\n <span class=\"content\">\n <span\n ref=\"labelEl\"\n class=\"label\"\n :title=\"isLabelTruncated ? props.label : undefined\"\n >\n <span v-if=\"props.missing\" class=\"prefix\">(Missing)&nbsp;</span>\n <span :class=\"{ special: props.special }\">{{ props.label }}</span>\n </span>\n <span\n v-if=\"props.subText\"\n ref=\"subtextEl\"\n class=\"subtext\"\n :title=\"isSubtextTruncated ? props.subText : undefined\"\n >\n {{ props.subText }}\n </span>\n </span>\n\n <span v-if=\"props.shortcut || props.trailingIcon\" class=\"trailing-item\">\n <span v-if=\"props.shortcut\" class=\"shortcut\">\n {{ props.shortcut }}\n </span>\n\n <KdsIcon\n v-if=\"props.trailingIcon\"\n :name=\"props.trailingIcon\"\n size=\"small\"\n />\n </span>\n </div>\n</template>\n\n<style scoped>\n.kds-list-item {\n position: relative;\n display: flex;\n gap: var(--kds-spacing-container-0-5x);\n align-items: center;\n width: 100%;\n padding: var(--kds-spacing-container-0-25x) var(--kds-spacing-container-0-5x);\n color: var(--kds-color-text-and-icon-neutral);\n cursor: pointer;\n user-select: none;\n background: var(--kds-color-background-neutral-initial);\n border: none;\n border-radius: var(--kds-border-radius-container-0-31x);\n\n &.small {\n gap: var(--kds-spacing-container-0-25x);\n align-items: flex-start;\n padding: var(--kds-spacing-container-0-25x)\n var(--kds-spacing-container-0-5x);\n font: var(--kds-font-base-interactive-small);\n\n .accessory {\n display: flex;\n padding: var(--kds-spacing-container-0-12x) 0;\n }\n }\n\n &.large {\n min-height: var(--kds-dimension-component-height-2-5x);\n font: var(--kds-font-base-interactive-small-strong);\n\n .accessory {\n display: flex;\n align-items: center;\n }\n }\n\n .content {\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n min-width: 0;\n\n .label {\n overflow: hidden;\n text-overflow: ellipsis;\n font: inherit;\n white-space: nowrap;\n\n .prefix {\n flex-shrink: 0;\n }\n\n .special {\n font: var(--kds-font-base-interactive-small-italic);\n }\n }\n\n .subtext {\n display: -webkit-box;\n overflow: hidden;\n -webkit-line-clamp: 2;\n line-clamp: 2;\n font: var(--kds-font-base-subtext-small);\n color: var(--kds-color-text-and-icon-muted);\n -webkit-box-orient: vertical;\n }\n }\n\n .trailing-item {\n display: flex;\n flex-shrink: 0;\n gap: var(--kds-spacing-container-0-12x);\n align-items: center;\n align-self: center;\n justify-content: flex-end;\n\n .shortcut {\n flex-shrink: 0;\n font: var(--kds-font-base-interactive-xsmall-strong);\n color: var(--kds-color-text-and-icon-muted);\n text-align: right;\n white-space: nowrap;\n }\n }\n\n &:hover:not(.disabled),\n &.active:not(.disabled) {\n background: var(--kds-color-background-neutral-hover);\n }\n\n &:active:not(.disabled) {\n background: var(--kds-color-background-neutral-active);\n }\n\n &.selected {\n color: var(--kds-color-text-and-icon-selected);\n background: var(--kds-color-background-selected-initial);\n\n .subtext {\n color: var(--kds-color-text-and-icon-selected);\n }\n\n &:hover,\n &.active {\n background: var(--kds-color-background-selected-hover);\n }\n\n &:active {\n background: var(--kds-color-background-selected-active);\n }\n\n &.disabled {\n background: var(--kds-color-background-selected-initial);\n }\n }\n\n &.missing {\n color: var(--kds-color-text-and-icon-danger);\n background: var(--kds-color-background-danger-initial);\n\n .subtext {\n color: var(--kds-color-text-and-icon-danger);\n }\n\n &:hover,\n &.active {\n background: var(--kds-color-background-danger-hover);\n }\n\n &:active {\n background: var(--kds-color-background-danger-active);\n }\n\n &.disabled {\n background: var(--kds-color-background-danger-initial);\n }\n }\n\n &.disabled {\n color: var(--kds-color-text-and-icon-disabled);\n cursor: default;\n\n .shortcut,\n .subtext {\n color: var(--kds-color-text-and-icon-disabled);\n }\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed, nextTick, ref, useId, useTemplateRef, watch } from \"vue\";\n\nimport KdsEmptyState from \"../../../../layouts/EmptyState/KdsEmptyState.vue\";\nimport { KdsListItem } from \"../KdsListItem\";\n\nimport type { KdsListContainerExpose, KdsListContainerProps } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsListContainerProps>(), {\n emptyText: \"\",\n});\n\nconst emit = defineEmits<{\n /** Emitted when item is clicked */\n itemClick: [id: string];\n}>();\n\nconst idPrefix = useId();\nconst toOptionId = (elementId: string) => elementId.slice(idPrefix.length + 1);\nconst emptyOptionId = `${idPrefix}-empty`;\n\n/** possibleValues with prefixed ids to avoid DOM id collisions */\nconst prefixedValues = computed(() =>\n props.possibleValues.map((o) => ({ ...o, id: `${idPrefix}-${o.id}` })),\n);\n\n/** active item id (prefixed) via keyboard or mouseover */\nconst activeId = ref<string | undefined>(undefined);\n\n/** remembers the last active item so it can be restored on re-focus */\nconst lastActiveId = ref<string | undefined>(undefined);\n\nconst isFocused = ref(false);\n\nconst containerEl = useTemplateRef(\"containerEl\");\n\nfunction scrollToView() {\n if (!activeId.value || !containerEl.value) {\n return;\n }\n containerEl.value\n ?.querySelector(`#${CSS.escape(activeId.value)}`)\n ?.scrollIntoView({ block: \"nearest\" });\n}\n\nconst onMouseLeave = () => {\n if (!isFocused.value) {\n activeId.value = undefined;\n }\n};\n\nconst onMousemove = (event: MouseEvent) => {\n const target = (event.target as HTMLElement)?.closest?.('[role=\"option\"]');\n if (\n target instanceof HTMLElement &&\n target.id &&\n target.getAttribute(\"aria-disabled\") !== \"true\"\n ) {\n activeId.value = target.id;\n }\n};\n\nconst enabledValues = computed(() =>\n prefixedValues.value.filter((o) => !o.disabled),\n);\n\n/** Reset activeId/lastActiveId when possibleValues change and current id no longer exists */\nwatch(enabledValues, (values) => {\n const isValid = (id: string | undefined) =>\n id !== undefined && values.some((o) => o.id === id);\n\n if (activeId.value !== undefined && !isValid(activeId.value)) {\n if (values.length > 0) {\n activeId.value = values[0].id;\n } else {\n // Only point to the empty-state element when the list is truly empty.\n // When items exist but are all disabled, leave activeId undefined to\n // avoid aria-activedescendant referencing a non-existent DOM element.\n activeId.value =\n prefixedValues.value.length === 0 ? emptyOptionId : undefined;\n }\n }\n if (!isValid(lastActiveId.value)) {\n lastActiveId.value = undefined;\n }\n nextTick(scrollToView);\n});\n\nconst findEnabledIndex = (id: string | undefined) =>\n id === undefined ? -1 : enabledValues.value.findIndex((o) => o.id === id);\n\nconst handleFocus = () => {\n isFocused.value = true;\n if (activeId.value === undefined) {\n activeId.value = lastActiveId.value ?? enabledValues.value[0]?.id;\n }\n};\n\nconst handleBlur = () => {\n isFocused.value = false;\n lastActiveId.value = activeId.value;\n activeId.value = undefined;\n};\n\nconst handleKeydown = (event: KeyboardEvent) => {\n if (enabledValues.value.length === 0) {\n return;\n }\n\n const currentIndex = findEnabledIndex(activeId.value);\n\n switch (event.key) {\n case \"ArrowDown\": {\n const nextIndex =\n currentIndex < 0 || currentIndex >= enabledValues.value.length - 1\n ? 0\n : currentIndex + 1;\n activeId.value = enabledValues.value[nextIndex].id;\n scrollToView();\n event.preventDefault();\n break;\n }\n case \"ArrowUp\": {\n const nextIndex =\n currentIndex <= 0 ? enabledValues.value.length - 1 : currentIndex - 1;\n activeId.value = enabledValues.value[nextIndex].id;\n scrollToView();\n event.preventDefault();\n break;\n }\n case \"Enter\":\n if (activeId.value) {\n emit(\"itemClick\", toOptionId(activeId.value));\n event.preventDefault();\n }\n break;\n case \" \":\n if (\n event.target instanceof HTMLElement &&\n [\"INPUT\", \"TEXTAREA\", \"SELECT\"].includes(event.target.tagName)\n ) {\n break;\n }\n if (activeId.value) {\n emit(\"itemClick\", toOptionId(activeId.value));\n event.preventDefault();\n }\n break;\n case \"Home\":\n activeId.value = enabledValues.value[0].id;\n scrollToView();\n event.preventDefault();\n break;\n case \"End\":\n activeId.value = enabledValues.value[enabledValues.value.length - 1].id;\n scrollToView();\n event.preventDefault();\n break;\n default:\n break;\n }\n};\n\ndefineExpose<KdsListContainerExpose>({\n /** Forward a keydown event to the list for keyboard navigation */\n handleKeydown,\n /** Notify the list that its controlling element received focus */\n handleFocus,\n /** Notify the list that its controlling element lost focus */\n handleBlur,\n activeDescendant: activeId,\n});\n</script>\n\n<template>\n <div\n ref=\"containerEl\"\n role=\"listbox\"\n :aria-label=\"props.ariaLabel\"\n :aria-activedescendant=\"\n !props.controlledExternally && activeId ? activeId : undefined\n \"\n class=\"kds-list-container\"\n :tabindex=\"props.controlledExternally ? undefined : 0\"\n v-on=\"\n props.controlledExternally\n ? { mousemove: onMousemove, mouseleave: onMouseLeave }\n : {\n keydown: handleKeydown,\n focus: handleFocus,\n blur: handleBlur,\n mousemove: onMousemove,\n mouseleave: onMouseLeave,\n }\n \"\n >\n <KdsListItem\n v-for=\"item in prefixedValues\"\n :id=\"item.id\"\n :key=\"item.id\"\n :accessory=\"item.accessory\"\n :label=\"item.text\"\n :sub-text=\"item.subText\"\n :selected=\"item.selected\"\n :disabled=\"item.disabled\"\n :active=\"activeId === item.id\"\n :special=\"item.special\"\n :missing=\"item.missing\"\n :trailing-icon=\"item.selected ? 'checkmark' : undefined\"\n @mousedown=\"props.controlledExternally && $event.preventDefault()\"\n @click.stop=\"emit('itemClick', toOptionId(item.id))\"\n />\n <div\n v-if=\"prefixedValues.length === 0\"\n :id=\"emptyOptionId\"\n role=\"option\"\n aria-disabled=\"true\"\n :aria-selected=\"undefined\"\n class=\"kds-list-container-empty\"\n >\n <KdsEmptyState :headline=\"props.emptyText\" />\n </div>\n </div>\n</template>\n\n<style scoped>\n.kds-list-container {\n display: flex;\n flex-direction: column;\n padding: var(--kds-spacing-container-0-25x);\n overflow-y: auto;\n\n &:focus-visible {\n outline: var(--kds-border-action-focused);\n outline-offset: var(--kds-spacing-offset-focus);\n border-radius: var(--kds-border-radius-container-0-31x);\n }\n}\n\n.kds-list-container-empty {\n display: flex;\n justify-content: center;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed, ref, useTemplateRef } from \"vue\";\n\nimport { KdsListContainer } from \"../../_helper/List/ListContainer\";\nimport type { KdsListOption } from \"../../_helper/List/ListContainer\";\nimport BaseInput from \"../../inputs/BaseInput.vue\";\n\nimport type {\n DropdownContainerProps,\n DropdownOptionWithMissing,\n} from \"./types\";\n\nconst props = defineProps<DropdownContainerProps>();\n\nconst modelValue = defineModel<string | null>({ default: null });\n\nconst searchValue = ref(\"\");\n\nconst searchEl = useTemplateRef(\"searchEl\");\nconst listContainerRef = useTemplateRef(\"listContainer\");\n\nconst optionsWithSyntheticMissing = computed<DropdownOptionWithMissing[]>(\n () => {\n if (modelValue.value === null) {\n return props.possibleValues;\n }\n\n const hasSelected = props.possibleValues.some(\n (o) => o.id === modelValue.value,\n );\n if (hasSelected) {\n return props.possibleValues;\n }\n\n return [\n {\n id: modelValue.value,\n text: modelValue.value,\n missing: true,\n },\n ...props.possibleValues,\n ];\n },\n);\n\nconst filteredOptions = computed(() => {\n const normalizedQuery = searchValue.value.trim().toLowerCase();\n\n const base = optionsWithSyntheticMissing.value;\n if (normalizedQuery.length === 0) {\n return base;\n }\n\n return base.filter((option) =>\n option.text.toLowerCase().includes(normalizedQuery),\n );\n});\n\nconst listOptions = computed<KdsListOption[]>(() =>\n filteredOptions.value.map((option) => ({\n id: option.id,\n text: option.text,\n subText: option.subText,\n accessory: option.accessory,\n disabled: option.disabled || option.missing,\n selected: option.id === modelValue.value,\n special: option.special,\n missing: option.missing,\n })),\n);\n\nconst hasMultiline = computed(() =>\n props.possibleValues.some((o) => o.subText !== undefined),\n);\n\ndefineExpose({\n focus: () => searchEl.value?.focus(),\n});\n</script>\n\n<template>\n <div class=\"kds-dropdown-container\">\n <div class=\"kds-dropdown-container-sticky-top\">\n <BaseInput\n ref=\"searchEl\"\n v-model=\"searchValue\"\n type=\"search\"\n placeholder=\"Search\"\n :aria-label=\"'Filter options'\"\n :aria-activedescendant=\"listContainerRef?.activeDescendant\"\n leading-icon=\"search\"\n :clearable=\"true\"\n @keydown=\"listContainerRef?.handleKeydown($event)\"\n @focus=\"listContainerRef?.handleFocus()\"\n @blur=\"listContainerRef?.handleBlur()\"\n />\n </div>\n\n <KdsListContainer\n ref=\"listContainer\"\n class=\"kds-dropdown-container-list\"\n :class=\"{ multiline: hasMultiline }\"\n :possible-values=\"listOptions\"\n :empty-text=\"props.emptyText\"\n controlled-externally\n aria-label=\"Dropdown options\"\n @item-click=\"modelValue = $event\"\n />\n </div>\n</template>\n\n<style scoped>\n.kds-dropdown-container {\n display: flex;\n flex-direction: column;\n background-color: var(--kds-color-surface-default);\n border-radius: var(--kds-border-radius-container-0-50x);\n box-shadow: var(--kds-elevation-level-3);\n}\n\n.kds-dropdown-container-sticky-top {\n padding: var(--kds-spacing-container-0-25x);\n background-color: var(--kds-color-surface-default);\n border-bottom: var(--kds-border-base-subtle);\n}\n\n.kds-dropdown-container-list {\n max-height: var(--kds-dimension-component-height-12x);\n\n &.multiline {\n max-height: var(--kds-dimension-component-height-20x);\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport {\n computed,\n nextTick,\n ref,\n useTemplateRef,\n watch,\n watchEffect,\n} from \"vue\";\n\nimport KdsPopover from \"../../../overlays/Popover/KdsPopover.vue\";\nimport BaseFormFieldWrapper from \"../../_helper/BaseFormFieldWrapper.vue\";\n\nimport BaseDropdown from \"./BaseDropdown.vue\";\nimport DropdownContainer from \"./DropdownContainer.vue\";\nimport type { KdsDropdownProps } from \"./types.ts\";\n\nconst props = withDefaults(defineProps<KdsDropdownProps>(), {\n placeholder: \"Select\",\n disabled: false,\n error: false,\n validating: false,\n preserveSubTextSpace: false,\n});\n\nconst modelValue = defineModel<string | null>({ default: null });\n\nconst open = ref(false);\nconst popoverEl = useTemplateRef(\"popoverEl\");\nconst dropdownContainerEl = useTemplateRef(\"dropdownContainerEl\");\n\nconst selectedOption = computed(() =>\n props.possibleValues.find((o) => o.id === modelValue.value),\n);\n\n/** Focus search field on opening of dropdown */\nwatchEffect(() => {\n if (open.value) {\n nextTick(() => dropdownContainerEl.value?.focus());\n }\n});\n\n/** Close dropdown on value selection */\nwatch(modelValue, () => {\n if (open.value) {\n open.value = false;\n }\n});\n</script>\n\n<template>\n <BaseFormFieldWrapper\n :id=\"props.id\"\n :label=\"props.label\"\n :aria-label=\"props.ariaLabel\"\n :description=\"props.description\"\n :sub-text=\"props.subText\"\n :error=\"props.error\"\n :validating=\"props.validating\"\n :preserve-sub-text-space=\"props.preserveSubTextSpace\"\n >\n <template #default=\"slotProps\">\n <BaseDropdown\n v-bind=\"slotProps\"\n v-model:open=\"open\"\n :text=\"\n modelValue !== null && !selectedOption\n ? `(Missing) ${modelValue}`\n : selectedOption?.text\n \"\n :placeholder=\"props.placeholder\"\n :disabled=\"props.disabled\"\n :error=\"props.error\"\n :missing=\"modelValue !== null && !selectedOption\"\n :accessory=\"selectedOption?.accessory\"\n :style=\"popoverEl?.anchorStyle\"\n :popover-id=\"popoverEl?.popoverId\"\n @click=\"open = !open\"\n />\n\n <KdsPopover\n ref=\"popoverEl\"\n v-model=\"open\"\n placement=\"bottom-left\"\n role=\"dialog\"\n full-width\n popover-aria-label=\"Searchable dropdown options\"\n >\n <DropdownContainer\n ref=\"dropdownContainerEl\"\n v-model=\"modelValue\"\n :possible-values=\"props.possibleValues\"\n empty-text=\"No entries found\"\n />\n </KdsPopover>\n </template>\n </BaseFormFieldWrapper>\n</template>\n","<script setup lang=\"ts\">\n/**\n * @slot default - Custom content for the popover. When provided, overrides the `content` prop.\n */\n\nconst props = defineProps<{\n /**\n * Content to display inside the info popover. Used when no default slot is provided.\n */\n content?: string;\n}>();\n</script>\n\n<template>\n <div class=\"kds-info-popover-content\">\n <slot>{{ props.content }}</slot>\n </div>\n</template>\n\n<style scoped>\n.kds-info-popover-content {\n max-width: var(--kds-dimension-component-width-25x);\n padding: var(--kds-spacing-container-0-75x);\n font: var(--kds-font-base-body-small);\n color: var(--kds-color-text-and-icon-neutral);\n background-color: var(--kds-color-surface-default);\n border-radius: var(--kds-border-radius-container-0-37x);\n box-shadow: var(--kds-elevation-level-3);\n}\n</style>\n","<script setup lang=\"ts\">\nimport { ref, useTemplateRef } from \"vue\";\n\nimport KdsIcon from \"../../../accessories/Icon/KdsIcon.vue\";\nimport KdsPopover from \"../../../overlays/Popover/KdsPopover.vue\";\n\nimport InfoPopover from \"./InfoPopover.vue\";\nimport type { KdsInfoToggleButtonProps } from \"./types\";\n\n/**\n * @slot default - Custom content for the popover. When provided, overrides the `content` prop.\n */\n\nconst props = withDefaults(defineProps<KdsInfoToggleButtonProps>(), {\n hidden: false,\n});\n\nconst TITLE = \"Click for more information\";\n\nconst modelValue = defineModel<boolean>({ default: false });\nconst popoverEl = useTemplateRef(\"popoverEl\");\nconst isHovered = ref(false);\nconst isFocused = ref(false);\n</script>\n\n<template>\n <button\n v-bind=\"$attrs\"\n :class=\"{\n 'info-toggle-button': true,\n selected: modelValue,\n hidden: props.hidden && !modelValue && !isHovered && !isFocused,\n }\"\n :title=\"TITLE\"\n :aria-label=\"TITLE\"\n :aria-pressed=\"modelValue\"\n :aria-expanded=\"modelValue\"\n :aria-controls=\"popoverEl?.popoverId\"\n aria-haspopup=\"dialog\"\n :style=\"popoverEl?.anchorStyle\"\n type=\"button\"\n @click=\"modelValue = !modelValue\"\n @mouseenter=\"isHovered = true\"\n @mouseleave=\"isHovered = false\"\n @focus=\"isFocused = true\"\n @blur=\"isFocused = false\"\n >\n <KdsIcon name=\"circle-question\" size=\"small\" />\n </button>\n\n <KdsPopover\n ref=\"popoverEl\"\n v-model=\"modelValue\"\n placement=\"top-right\"\n popover-aria-label=\"Description\"\n >\n <InfoPopover :content=\"props.content\">\n <slot />\n </InfoPopover>\n </KdsPopover>\n</template>\n\n<style scoped>\n.info-toggle-button {\n --bg-initial: transparent;\n --bg-hover: var(--kds-color-background-neutral-hover);\n --bg-active: var(--kds-color-background-neutral-active);\n --border: var(--kds-border-action-transparent);\n --icon-color: var(--kds-color-text-and-icon-neutral);\n\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: var(--kds-dimension-component-width-1x);\n height: var(--kds-dimension-component-height-1x);\n padding: 0;\n color: var(--icon-color);\n cursor: pointer;\n background-color: var(--bg-initial);\n border: var(--border);\n border-radius: var(--kds-border-radius-container-0-12x);\n opacity: 1;\n\n &.hidden {\n opacity: 0;\n }\n\n &:focus-visible {\n outline: var(--kds-border-action-focused);\n outline-offset: var(--kds-spacing-offset-focus);\n }\n\n &:hover {\n background-color: var(--bg-hover);\n }\n\n &:active {\n background-color: var(--bg-active);\n }\n\n &.selected {\n --bg-initial: var(--kds-color-background-selected-initial);\n --bg-hover: var(--kds-color-background-selected-hover);\n --bg-active: var(--kds-color-background-selected-active);\n --border: var(--kds-border-action-selected);\n --icon-color: var(--kds-color-text-and-icon-selected);\n }\n}\n</style>\n","<script setup lang=\"ts\">\n/**\n * @slot default - Custom content for the popover. When provided, overrides the built-in placeholder layout and the `content` prop.\n */\nconst props = defineProps<{\n /**\n * Content to display inside the info popover. Used when no default slot is provided.\n */\n content?: string;\n}>();\n</script>\n\n<template>\n <div class=\"kds-variable-popover\">\n <slot>{{ props.content }}</slot>\n </div>\n</template>\n\n<style scoped>\n.kds-variable-popover {\n width: var(--kds-dimension-component-width-25x);\n max-width: 100%;\n padding: var(--kds-spacing-container-0-75x);\n font: var(--kds-font-base-body-small);\n color: var(--kds-color-text-and-icon-neutral);\n white-space: pre-wrap;\n background-color: var(--kds-color-surface-default);\n border-radius: var(--kds-border-radius-container-0-37x);\n box-shadow: var(--kds-elevation-level-3);\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed, ref, useTemplateRef } from \"vue\";\n\nimport KdsIcon from \"../../../accessories/Icon/KdsIcon.vue\";\nimport KdsPopover from \"../../../overlays/Popover/KdsPopover.vue\";\n\nimport VariablePopover from \"./VariablePopover.vue\";\nimport type { KdsVariableToggleButtonProps } from \"./types.ts\";\n\n/**\n * @slot default - Custom content for the popover. When provided, overrides the `content` prop.\n */\n\nconst props = withDefaults(defineProps<KdsVariableToggleButtonProps>(), {\n inSet: false,\n outSet: false,\n error: false,\n hidden: false,\n});\n\nconst modelValue = defineModel<boolean>({ default: false });\nconst popoverEl = useTemplateRef(\"popoverEl\");\nconst isHovered = ref(false);\nconst isFocused = ref(false);\n\nconst iconState = computed(() => {\n if (props.inSet && props.outSet) {\n return \"in-out\" as const;\n }\n\n if (props.inSet) {\n return \"in\" as const;\n }\n\n if (props.outSet) {\n return \"out\" as const;\n }\n\n return \"none\" as const;\n});\n\nconst iconName = computed(() => {\n switch (iconState.value) {\n case \"in\":\n return \"flow-variable-in\";\n case \"out\":\n return \"flow-variable-out\";\n case \"in-out\":\n return \"flow-variable-in-out\";\n case \"none\":\n default:\n return \"flow-variable-default\";\n }\n});\n\nconst baseTitleByState: Record<typeof iconState.value, string> = {\n in: \"Input Flow Variable\",\n out: \"Output Flow Variable\",\n \"in-out\": \"Input and Output Flow Variable\",\n none: \"No Flow Variable set\",\n};\n\nconst errorTitleByState: Partial<Record<typeof iconState.value, string>> = {\n in: \"Error in input Flow Variable\",\n out: \"Error in output Flow Variable\",\n \"in-out\": \"Error in Flow Variables\",\n};\n\nconst title = computed(() => {\n const baseTitle = baseTitleByState[iconState.value];\n if (!props.error) {\n return baseTitle;\n }\n return errorTitleByState[iconState.value] ?? baseTitle;\n});\n</script>\n\n<template>\n <button\n v-bind=\"$attrs\"\n :class=\"{\n 'variable-toggle-button': true,\n error: props.error,\n 'pressed-or-set': modelValue || props.inSet || props.outSet,\n hidden: props.hidden && !modelValue && !isHovered && !isFocused,\n }\"\n :title=\"title\"\n :aria-label=\"title\"\n :aria-pressed=\"modelValue\"\n :aria-expanded=\"modelValue\"\n :aria-controls=\"popoverEl?.popoverId\"\n aria-haspopup=\"dialog\"\n :style=\"popoverEl?.anchorStyle\"\n type=\"button\"\n @click=\"modelValue = !modelValue\"\n @mouseenter=\"isHovered = true\"\n @mouseleave=\"isHovered = false\"\n @focus=\"isFocused = true\"\n @blur=\"isFocused = false\"\n >\n <KdsIcon :name=\"iconName\" size=\"small\" />\n </button>\n\n <KdsPopover\n ref=\"popoverEl\"\n v-model=\"modelValue\"\n placement=\"bottom-right\"\n popover-aria-label=\"Flow Variable settings\"\n >\n <VariablePopover :content=\"props.content\">\n <slot />\n </VariablePopover>\n </KdsPopover>\n</template>\n\n<style scoped>\n.variable-toggle-button {\n --bg-initial: var(--kds-color-background-neutral-initial);\n --bg-hover: var(--kds-color-background-neutral-hover);\n --bg-active: var(--kds-color-background-neutral-active);\n --border: var(--kds-border-action-transparent);\n --icon-color: var(--kds-color-text-and-icon-neutral);\n\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: var(--kds-dimension-component-width-1x);\n height: var(--kds-dimension-component-height-1x);\n padding: 0;\n color: var(--icon-color);\n cursor: pointer;\n background-color: var(--bg-initial);\n border: var(--border);\n border-radius: var(--kds-border-radius-container-0-12x);\n opacity: 1;\n\n &.hidden {\n opacity: 0;\n }\n\n &:focus-visible {\n outline: var(--kds-border-action-focused);\n outline-offset: var(--kds-spacing-offset-focus);\n }\n\n &:hover {\n background-color: var(--bg-hover);\n }\n\n &:active {\n background-color: var(--bg-active);\n }\n\n &.pressed-or-set {\n --bg-initial: var(--kds-color-background-selected-initial);\n --bg-hover: var(--kds-color-background-selected-hover);\n --bg-active: var(--kds-color-background-selected-active);\n --border: var(--kds-border-action-selected);\n --icon-color: var(--kds-color-text-and-icon-success);\n }\n\n &.error {\n --bg-initial: var(--kds-color-background-danger-initial);\n --bg-hover: var(--kds-color-background-danger-hover);\n --bg-active: var(--kds-color-background-danger-active);\n --border: var(--kds-border-action-error);\n --icon-color: var(--kds-color-text-and-icon-danger);\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed } from \"vue\";\n\nimport type { KdsCardProps } from \"./types\";\n\nconst {\n variant = \"filled\",\n selectable = false,\n disabled = false,\n ariaLabel,\n ariaLabelledby,\n} = defineProps<KdsCardProps>();\n\n/**\n * Controls the selected state of the card when `selectable` is true.\n * When `selectable` is false, this model is ignored.\n */\nconst modelValue = defineModel<boolean>({ default: false });\n\nconst emit = defineEmits<{\n /**\n * Fired when the card is clicked.\n *\n * This event is only emitted when `selectable` is false.\n * Clicks while `selectable` is true toggle the card.\n */\n click: [event: MouseEvent];\n}>();\n\nconst selected = computed(() => modelValue.value && selectable);\n\nconst handleClick = (event: MouseEvent) => {\n if (selectable) {\n modelValue.value = !modelValue.value;\n } else {\n emit(\"click\", event);\n }\n};\n</script>\n\n<template>\n <button\n type=\"button\"\n class=\"kds-card\"\n :class=\"[`variant-${variant}`, { selected: selected }]\"\n :aria-label=\"ariaLabel\"\n :aria-labelledby=\"ariaLabelledby\"\n :aria-pressed=\"selectable ? modelValue : undefined\"\n :disabled=\"disabled\"\n @click=\"handleClick\"\n >\n <slot />\n </button>\n</template>\n\n<style scoped>\n.kds-card {\n position: relative;\n display: flex;\n flex-direction: column;\n width: 100%;\n padding: 0;\n font: inherit;\n color: inherit;\n text-align: start;\n cursor: pointer;\n outline: none;\n border-style: solid;\n border-radius: var(--kds-border-radius-container-0-50x);\n transition:\n background-color 0.2s,\n border-color 0.2s,\n box-shadow 0.2s;\n\n &:focus-visible {\n outline: var(--kds-border-action-focused);\n outline-offset: var(--kds-spacing-offset-focus);\n border-radius: var(--kds-border-radius-container-0-56x);\n }\n\n &:disabled {\n cursor: default;\n }\n}\n\n/* Variant: Filled, Value: False */\n.variant-filled {\n background: var(--kds-color-surface-default);\n border: var(--kds-border-base-subtle);\n\n &:hover:not(:disabled) {\n box-shadow: var(--kds-elevation-level-3);\n }\n\n &:active:not(:disabled) {\n background: var(--kds-color-background-neutral-active);\n box-shadow: var(--kds-elevation-level-1);\n }\n}\n\n/* Variant: Outlined, Value: False */\n.variant-outlined {\n background: var(--kds-color-background-neutral-initial);\n border: var(--kds-border-base-muted);\n\n &:hover:not(:disabled) {\n box-shadow: var(--kds-elevation-level-3);\n }\n\n &:active:not(:disabled) {\n background: var(--kds-color-background-neutral-active);\n box-shadow: var(--kds-elevation-level-1);\n }\n}\n\n/* Variant: Transparent, Value: False */\n.variant-transparent {\n background: var(--kds-color-background-neutral-initial);\n border: var(--kds-border-action-transparent);\n\n &:hover:not(:disabled) {\n background: var(--kds-color-background-neutral-hover);\n box-shadow: var(--kds-elevation-level-3);\n }\n\n &:active:not(:disabled) {\n background: var(--kds-color-background-neutral-active);\n box-shadow: var(--kds-elevation-level-1);\n }\n}\n\n/* Variant: Filled, Value: True */\n.variant-filled.selected {\n background: var(--kds-color-background-selected-initial);\n border: var(--kds-border-action-selected);\n\n &:hover:not(:disabled) {\n box-shadow: var(--kds-elevation-level-3);\n }\n\n &:active:not(:disabled) {\n background: var(--kds-color-background-selected-active);\n box-shadow: var(--kds-elevation-level-1);\n }\n}\n\n/* Variant: Outlined, Value: True */\n.variant-outlined.selected {\n background: var(--kds-color-background-selected-initial);\n border: var(--kds-border-action-selected);\n\n &:hover:not(:disabled) {\n box-shadow: var(--kds-elevation-level-3);\n }\n\n &:active:not(:disabled) {\n background: var(--kds-color-background-selected-active);\n box-shadow: var(--kds-elevation-level-1);\n }\n}\n\n/* Variant: Transparent, Value: True */\n.variant-transparent.selected {\n background: var(--kds-color-background-selected-initial);\n border: var(--kds-border-action-selected);\n\n &:hover:not(:disabled) {\n background: var(--kds-color-background-selected-initial);\n box-shadow: var(--kds-elevation-level-3);\n }\n\n &:active:not(:disabled) {\n background: var(--kds-color-background-selected-active);\n box-shadow: var(--kds-elevation-level-1);\n }\n}\n</style>\n","export const kdsCardVariant = {\n FILLED: \"filled\",\n OUTLINED: \"outlined\",\n TRANSPARENT: \"transparent\",\n} as const;\n\nexport const kdsCardVariants = Object.values(kdsCardVariant);\n","export type UnwrappedPromise<T = unknown> = {\n resolve: (value: T | PromiseLike<T>) => void;\n reject: (reason?: unknown) => void;\n promise: Promise<T>;\n};\n\nexport const createUnwrappedPromise = <T>(): UnwrappedPromise<T> => {\n let resolve: (value: T | PromiseLike<T>) => void = () => {};\n let reject: (reason?: unknown) => void = () => {};\n\n const promise = new Promise<T>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n\n return { resolve, reject, promise };\n};\n","/**\n * Returns promise that resolves after ms.\n */\nexport default function sleep(ms: number) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n","export const kdsModalClosedBy = {\n ANY: \"any\",\n CLOSEREQUEST: \"closerequest\",\n NONE: \"none\",\n} as const;\n\nexport const kdsModalClosedByOptions = Object.values(kdsModalClosedBy);\n\nexport const kdsModalWidth = {\n SMALL: \"small\",\n MEDIUM: \"medium\",\n LARGE: \"large\",\n XLARGE: \"xlarge\",\n FULL: \"full\",\n} as const;\n\nexport const kdsModalWidthSizes = Object.values(kdsModalWidth);\n\nexport const kdsModalHeight = {\n AUTO: \"auto\",\n FULL: \"full\",\n} as const;\n\nexport const kdsModalHeightSizes = Object.values(kdsModalHeight);\n\nexport const kdsModalVariant = {\n PADDED: \"padded\",\n PLAIN: \"plain\",\n} as const;\n\nexport const kdsModalVariants = Object.values(kdsModalVariant);\n\nexport const kdsModalLayoutPropsDefault = {\n title: \"\",\n variant: kdsModalVariant.PADDED,\n overflow: \"auto\",\n icon: undefined,\n} as const;\n\nexport const kdsModalPropsDefault = {\n active: false,\n height: kdsModalHeight.AUTO,\n width: kdsModalWidth.MEDIUM,\n closedby: kdsModalClosedBy.CLOSEREQUEST,\n ...kdsModalLayoutPropsDefault,\n} as const;\n","<script setup lang=\"ts\">\nimport KdsIcon from \"../../accessories/Icon/KdsIcon.vue\";\nimport KdsButton from \"../../buttons/KdsButton/KdsButton.vue\";\n\nimport { kdsModalLayoutPropsDefault } from \"./enums\";\nimport type { KdsModalLayoutProps } from \"./types\";\n\nconst props = withDefaults(\n defineProps<KdsModalLayoutProps>(),\n kdsModalLayoutPropsDefault,\n);\ndefineOptions({ inheritAttrs: false });\n</script>\n\n<template>\n <header class=\"modal-header\">\n <KdsIcon v-if=\"props.icon\" :name=\"props.icon\" size=\"medium\" />\n <div class=\"modal-header-title\">{{ props.title }}</div>\n <KdsButton\n leading-icon=\"x-close\"\n variant=\"transparent\"\n size=\"medium\"\n title=\"Close\"\n @click=\"props.onClose\"\n />\n </header>\n\n <div class=\"modal-body\" :data-variant=\"variant\">\n <slot name=\"body\" />\n </div>\n\n <footer v-if=\"$slots.footer\" class=\"modal-footer\">\n <slot name=\"footer\" />\n </footer>\n</template>\n\n<style scoped>\n.modal-header {\n display: flex;\n gap: var(--kds-spacing-container-0-5x);\n align-items: center;\n padding: var(--kds-spacing-container-0-5x) var(--kds-spacing-container-0-5x)\n var(--kds-spacing-container-0-5x) var(--kds-spacing-container-1-5x);\n font: var(--kds-font-base-title-medium-strong);\n color: var(--kds-color-text-and-icon-neutral);\n\n & .modal-header-title {\n flex: 1 1 auto;\n }\n}\n\n.modal-body {\n --modal-padding-left: var(--kds-spacing-container-1-5x);\n --modal-padding-right: var(--kds-spacing-container-1-5x);\n --modal-padding-top: var(--kds-spacing-container-0-5x);\n --modal-padding-bottom: var(--kds-spacing-container-1x);\n --modal-gap: var(--kds-spacing-container-1x);\n\n display: flex;\n flex-grow: 1;\n flex-direction: column;\n overflow: v-bind(overflow);\n font: var(--kds-font-base-body-small);\n color: var(--kds-color-text-and-icon-neutral);\n\n &[data-variant=\"padded\"] {\n gap: var(--modal-gap);\n padding: var(--modal-padding-top) var(--modal-padding-right)\n var(--modal-padding-bottom) var(--modal-padding-left);\n }\n}\n\n.modal-footer {\n display: flex;\n gap: var(--kds-spacing-container-0-5x);\n justify-content: right;\n padding: var(--kds-spacing-container-1x) var(--kds-spacing-container-1-5x);\n}\n</style>\n","<script setup lang=\"ts\">\nimport { nextTick, ref, useTemplateRef, watch } from \"vue\";\n\nimport { sleep } from \"@knime/utils\";\n\nimport KdsModalLayout from \"./KdsModalLayout.vue\";\nimport { kdsModalPropsDefault } from \"./enums\";\nimport type { KdsModalProps } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsModalProps>(), kdsModalPropsDefault);\n\nconst emit = defineEmits<{\n /** request to close of the dialog */\n close: [event?: Event];\n /** the dialog is closed (different to the active state due to possible animations) */\n closed: [];\n}>();\n\nconst dialog = useTemplateRef(\"dialogElement\");\n\nconst onClose = (event?: Event) => {\n emit(\"close\", event);\n};\n\nwatch(\n () => props.active,\n async (active) => {\n if (active) {\n await nextTick();\n dialog.value?.showModal();\n } else {\n dialog.value?.close();\n }\n },\n { immediate: true },\n);\n\nconst renderDialog = ref(props.active);\n\nconst removeDialog = () => {\n if (!renderDialog.value) {\n return;\n }\n renderDialog.value = false;\n emit(\"closed\");\n};\n\nwatch(\n () => props.active,\n async (value, lastValue) => {\n // on close wait until the animation has run\n if (value === false && lastValue === true) {\n if (dialog.value) {\n Promise.all(\n dialog.value\n .getAnimations({ subtree: true })\n .map((animation) => animation.finished),\n ).then(removeDialog);\n // eslint-disable-next-line no-magic-numbers\n await sleep(350);\n // fallback in case animations fail or dont resolve\n removeDialog();\n } else {\n // fallback if dialog element ref is not accessible\n removeDialog();\n }\n } else {\n renderDialog.value = value;\n }\n },\n);\n</script>\n\n<template>\n <dialog\n v-if=\"renderDialog\"\n ref=\"dialogElement\"\n :class=\"[\n 'kds-modal',\n `width-${width}`,\n `height-${height}`,\n `overflow-${overflow}`,\n ]\"\n :closedby=\"closedby\"\n @cancel.prevent=\"onClose\"\n >\n <slot\n :title=\"title\"\n :icon=\"icon\"\n :variant=\"variant\"\n :overflow=\"overflow\"\n :on-close=\"onClose\"\n >\n <KdsModalLayout\n :title=\"title\"\n :icon=\"icon\"\n :variant=\"variant\"\n :overflow=\"overflow\"\n @close=\"onClose\"\n >\n <template #body>\n <slot name=\"body\" />\n </template>\n\n <template #footer>\n <slot name=\"footer\" />\n </template>\n </KdsModalLayout>\n </slot>\n </dialog>\n</template>\n\n<style>\n/** see: https://github.com/whatwg/html/issues/7732 */\nbody:has(dialog.modal[open]) {\n overflow: hidden;\n}\n</style>\n\n<style scoped>\n.kds-modal {\n /* rule is broken it complains about local variables for no reason */\n /* stylelint-disable csstools/value-no-unknown-custom-properties */\n --modal-full-size: 95%;\n --modal-backdrop-animation-time: 125ms;\n\n &.width-small {\n --modal-width: var(--kds-dimension-component-width-25x);\n --modal-animation-time: 100ms;\n --modal-scale-base: 0.85;\n }\n\n &.width-medium {\n --modal-width: var(--kds-dimension-component-width-32x);\n --modal-animation-time: 140ms;\n --modal-scale-base: 0.88;\n }\n\n &.width-large {\n --modal-width: var(--kds-dimension-component-width-45x);\n --modal-animation-time: 210ms;\n --modal-scale-base: 0.88;\n }\n\n &.width-xlarge {\n --modal-width: var(--kds-dimension-component-width-61x);\n --modal-animation-time: 300ms;\n --modal-scale-base: 0.88;\n }\n\n &.width-full {\n --modal-width: var(--modal-full-size);\n --modal-animation-time: 350ms;\n --modal-scale-base: 0.92;\n }\n\n &.height-full {\n --modal-height: var(--modal-full-size);\n }\n\n &.height-auto {\n --modal-height: fit-content;\n }\n\n display: flex;\n flex-direction: column;\n width: min(var(--modal-full-size), var(--modal-width));\n height: var(--modal-height);\n max-height: var(--modal-full-size);\n padding: 0;\n overflow: v-bind(overflow);\n font: var(--kds-font-base-body-small);\n color: var(--kds-color-text-and-icon-neutral);\n background-color: var(--kds-color-surface-default);\n border: none;\n border-radius: var(--kds-border-radius-container-0-37x);\n box-shadow: var(--kds-elevation-level-3);\n\n /** Animation */\n opacity: 0;\n transform: scale(var(--modal-scale-base));\n transition: var(--modal-animation-time) allow-discrete;\n transition-timing-function: cubic-bezier(0, 0, 0.2, 1);\n transition-property: display, opacity, overlay, transform;\n\n /* hide if its not open */\n &:not([open]) {\n display: none;\n }\n\n &:focus-visible,\n &:focus {\n outline: none;\n }\n\n &::backdrop {\n background: var(--kds-color-blanket-default);\n opacity: 0;\n transition: var(--modal-animation-time) allow-discrete;\n transition-timing-function: cubic-bezier(0, 0, 0.2, 1);\n transition-property: display, opacity, overlay;\n }\n\n &[open]::backdrop {\n opacity: 1;\n }\n\n &[open] {\n opacity: 1;\n transform: scale(1);\n }\n}\n\n/** Animation starting styles */\n@starting-style {\n .kds-modal {\n opacity: 1;\n transform: scale(1);\n\n &[open] {\n opacity: 0;\n transform: scale(var(--modal-scale-base));\n }\n\n &::backdrop {\n opacity: 1;\n }\n\n &[open]::backdrop {\n opacity: 0;\n }\n }\n}\n</style>\n","import {\n type ComponentPublicInstance,\n type FunctionalComponent,\n type VNode,\n computed,\n ref,\n} from \"vue\";\n\nimport { promise as PromiseUtils } from \"@knime/utils\";\n\nimport type { KdsButtonProps } from \"../../buttons\";\n\nimport type { KdsModalLayoutProps, KdsModalProps } from \"./types\";\n\ntype CommonButtonProps = {\n label: string;\n autofocus?: boolean;\n destructive?: boolean;\n variant?: KdsButtonProps[\"variant\"];\n flushLeft?: boolean;\n};\n\ntype ConfirmationButton = CommonButtonProps & {\n type: \"confirm\";\n customHandler?: (actions: { confirm: () => void }) => void;\n};\n\ntype CancellationButton = CommonButtonProps & {\n type: \"cancel\";\n customHandler?: (actions: { cancel: () => void }) => void;\n};\n\nexport type ConfirmModalButton = ConfirmationButton | CancellationButton;\n\ntype CommonConfig = Omit<KdsModalProps, \"active\">;\n\ntype PropertyBasedConfirmModalConfig = CommonConfig & {\n /**\n * The message displayed in the modal body\n */\n message: string;\n /**\n * The label and subText to be rendered for the \"do not ask again\" checkbox option.\n * The checkbox will only be present when an object is supplied. The value will be returned on the modal result.\n * Defaults to empty undefined.\n */\n doNotAskAgain?: {\n label: string;\n subText?: string;\n };\n\n /**\n * Confirmation or cancellation buttons if omitted default ones are set\n */\n buttons?: Array<ConfirmModalButton>;\n};\n\ntype TemplateBasedConfirmModalConfig = CommonConfig & {\n /**\n * the dynamic component to be used as the confirmation modal body\n */\n component: FunctionalComponent | ComponentPublicInstance | VNode;\n\n /**\n * Confirmation or cancellation buttons if omitted default ones are set\n */\n buttons?: Array<ConfirmModalButton>;\n};\n\nexport type KdsDynamicDialogConfirmConfig =\n | PropertyBasedConfirmModalConfig\n | TemplateBasedConfirmModalConfig;\n\ntype UpdateConfigType = Partial<\n Omit<KdsDynamicModalTemplateConfig, \"component\" | \"context\">\n>;\n\n/**\n * Define a props api which dynamic template components can optionally\n * define to get access to the configuration the dynamic modal was called with\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type KdsDynamicModalPropsAPI<T = any> = KdsModalLayoutProps & {\n context: T;\n updateConfig: (config: UpdateConfigType) => void;\n};\ntype DynamicModalComponent<T> = abstract new (...args: unknown[]) => {\n $props: KdsDynamicModalPropsAPI<T>;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type KdsDynamicModalTemplateConfig<T = any> = CommonConfig & {\n component:\n | DynamicModalComponent<T>\n | FunctionalComponent<KdsDynamicModalPropsAPI<T>>;\n context?: T;\n};\n\nconst defaultCancelButton: CancellationButton = {\n type: \"cancel\",\n label: \"Cancel\",\n};\n\nconst defaultConfirmButton: ConfirmationButton = {\n type: \"confirm\",\n label: \"Confirm\",\n};\n\ntype ConfirmResult = { confirmed: boolean; doNotAskAgain?: boolean };\n\nconst isActive = ref(false);\nconst activeModalConfig = ref<\n | { type: \"confirm\"; value: KdsDynamicDialogConfirmConfig }\n | { type: \"dynamic\"; value: KdsDynamicModalTemplateConfig }\n | null\n>(null);\n\nconst unwrappedPromise = ref(PromiseUtils.createUnwrappedPromise());\n\nconst resetInternalState = () => {\n isActive.value = false;\n unwrappedPromise.value = PromiseUtils.createUnwrappedPromise();\n // config is cleared after the close animations is finished\n};\n\n/* called when KdsModal has finished close animations */\nconst onClosed = () => {\n activeModalConfig.value = null;\n};\n\n/**\n * Used to confirm the modal result. Should only used when called via\n * `askConfirmation`\n * @param doNotAskAgain\n */\nconst confirm = (doNotAskAgain = false) => {\n unwrappedPromise.value.resolve({\n confirmed: true,\n doNotAskAgain,\n });\n resetInternalState();\n};\n\n/**\n * Close or cancel the dialog\n */\nconst close = () => {\n const isConfirm = activeModalConfig.value?.type === \"confirm\";\n unwrappedPromise.value.resolve(isConfirm ? { confirmed: false } : undefined);\n resetInternalState();\n};\n\nconst isTemplateBasedConfirm = (\n config: KdsDynamicDialogConfirmConfig,\n): config is TemplateBasedConfirmModalConfig => {\n return \"component\" in config;\n};\n\nconst updateConfig = (config: UpdateConfigType) => {\n if (\n !isActive.value ||\n !activeModalConfig.value ||\n activeModalConfig.value.type === \"confirm\"\n ) {\n consola.warn(\"useKdsDynamicModal: invalid invocation of updateConfig\");\n return;\n }\n\n activeModalConfig.value.value = {\n ...activeModalConfig.value.value,\n ...config,\n };\n};\n\nexport const internal = {\n confirm,\n close,\n isTemplateBasedConfirm,\n onClosed,\n updateConfig,\n};\n\nexport const useKdsDynamicModal = () => {\n // function overload to support 2 distinct configurations\n function askConfirmation(\n config: PropertyBasedConfirmModalConfig,\n ): Promise<ConfirmResult>;\n\n // function overload to support 2 distinct configurations\n function askConfirmation(\n config: TemplateBasedConfirmModalConfig,\n ): Promise<ConfirmResult>;\n\n function askConfirmation(\n config: KdsDynamicDialogConfirmConfig,\n ): Promise<ConfirmResult> {\n activeModalConfig.value = {\n type: \"confirm\",\n value: {\n buttons: [defaultCancelButton, defaultConfirmButton],\n ...config,\n },\n };\n\n isActive.value = true;\n return unwrappedPromise.value.promise as Promise<ConfirmResult>;\n }\n\n const showByTemplate = <T>(\n config: KdsDynamicModalTemplateConfig<T>,\n ): Promise<void> => {\n activeModalConfig.value = {\n type: \"dynamic\",\n value: config,\n };\n\n isActive.value = true;\n return unwrappedPromise.value.promise as Promise<void>;\n };\n\n return {\n askConfirmation,\n showByTemplate,\n config: computed(() => activeModalConfig.value),\n isActive: computed(() => isActive.value),\n close: () => internal.close(),\n };\n};\n","<script setup lang=\"ts\">\nimport { computed, ref } from \"vue\";\n\nimport type { KdsButtonProps } from \"../../buttons\";\nimport KdsButton from \"../../buttons/KdsButton/KdsButton.vue\";\nimport KdsCheckbox from \"../../forms/Checkbox/KdsCheckbox.vue\";\n\nimport KdsModal from \"./KdsModal.vue\";\nimport {\n type ConfirmModalButton,\n internal,\n useKdsDynamicModal,\n} from \"./useKdsDynamicModal\";\n\nconst askAgain = ref(false);\nconst { config, isActive } = useKdsDynamicModal();\n\nconst reset = () => {\n askAgain.value = false;\n};\n\nconst onConfirm = () => {\n internal.confirm(askAgain.value);\n reset();\n};\n\nconst onClose = () => {\n internal.close();\n reset();\n};\n\nconst handleConfirmButton = (button: ConfirmModalButton) => {\n if (!button.customHandler) {\n const handler = button.type === \"cancel\" ? onClose : onConfirm;\n handler();\n return;\n }\n\n if (button.type === \"cancel\") {\n button.customHandler({ cancel: onClose });\n }\n\n if (button.type === \"confirm\") {\n button.customHandler({ confirm: onConfirm });\n }\n};\n\nconst defaultVariant = (\n type: ConfirmModalButton[\"type\"],\n): KdsButtonProps[\"variant\"] => (type === \"cancel\" ? \"transparent\" : \"filled\");\n\nconst kdsModalProps = computed(() => {\n if (!config.value) {\n return {};\n }\n\n const { icon, title, height, width, variant, overflow, closedby } =\n config.value.value;\n\n return {\n icon,\n title,\n height,\n width,\n variant,\n overflow,\n closedby,\n onClose,\n onClosed: internal.onClosed,\n active: isActive.value,\n };\n});\n</script>\n\n<template>\n <KdsModal class=\"confirm-modal\" v-bind=\"kdsModalProps\">\n <template v-if=\"config?.type === 'confirm'\" #body>\n <Component\n :is=\"config.value.component\"\n v-if=\"internal.isTemplateBasedConfirm(config.value)\"\n />\n\n <div v-else class=\"confirmation\">\n <div class=\"message\">{{ config.value.message }}</div>\n <div v-if=\"config.value.doNotAskAgain\" class=\"ask-again\">\n <KdsCheckbox\n v-model=\"askAgain\"\n :label=\"config.value.doNotAskAgain.label\"\n :sub-text=\"config.value.doNotAskAgain.subText\"\n />\n </div>\n </div>\n </template>\n\n <template v-if=\"config?.type === 'confirm'\" #footer>\n <KdsButton\n v-for=\"(button, index) in config.value.buttons\"\n :key=\"index\"\n :destructive=\"button.destructive\"\n :autofocus=\"button.autofocus\"\n :label=\"button.label\"\n :variant=\"button.variant ?? defaultVariant(button.type)\"\n :class=\"{ 'flush-left': button.flushLeft }\"\n :data-test-id=\"`${button.type}-button`\"\n @click=\"handleConfirmButton(button)\"\n />\n </template>\n\n <template v-if=\"config?.type === 'dynamic'\" #default=\"slotProps\">\n <Component\n :is=\"config.value.component\"\n v-bind=\"{\n ...slotProps,\n context: config.value.context,\n updateConfig: internal.updateConfig,\n }\"\n />\n </template>\n </KdsModal>\n</template>\n\n<style scoped>\n.ask-again {\n padding: var(--kds-spacing-container-0-5x) 0 0 0;\n}\n\n.flush-left {\n margin-right: auto;\n}\n</style>\n"],"names":["_createElementBlock","_normalizeClass","_openBlock","_hoisted_3","_createElementVNode","_unref","_createBlock","_resolveDynamicComponent","kdsIconNames","kdsTypeIconNames","_hoisted_1","_toDisplayString","_hoisted_2","_createVNode","_hoisted_4","_renderSlot","_mergeProps","_useModel","Icon","_hoisted_5","_hoisted_6","_Fragment","_renderList","$slots","KdsButton","_withCtx","HUE_MAX_DEG","_withModifiers","KdsTextInput","_normalizeStyle","KdsToggleButton","normalized","parsed","ListItemAccessory","KdsLinkButton","_toHandlers","_createTextVNode","PromiseUtils.createUnwrappedPromise","_createSlots","KdsCheckbox","_normalizeProps","_guardReactiveProps"],"mappings":"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","x_google_ignoreList":[75,76]}