@knime/kds-components 0.9.0 → 0.9.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.css +19 -19
- package/dist/index.js +24 -15
- package/dist/index.js.map +1 -1
- package/dist/overlays/Modal/KdsModal.vue.d.ts.map +1 -1
- package/dist/overlays/Modal/enums.d.ts +1 -1
- package/package.json +2 -2
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/accessories/Avatar/KdsAvatar.vue","../src/accessories/ColorSwatch/KdsColorSwatch.vue","../src/accessories/ColorSwatch/enums.ts","../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/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/util/enums.ts","../src/util/useKdsDarkMode.ts","../src/util/useKdsLegacyMode.ts","../src/util/useKdsIsTruncated.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/forms/_helper/BaseFormFieldWrapper.vue","../src/forms/inputs/BaseInput.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/TextInput/KdsTextInput.vue","../src/forms/inputs/Textarea/KdsTextarea.vue","../src/overlays/Popover/KdsPopover.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/overlays/Modal/enums.ts","../src/overlays/Modal/KdsModalLayout.vue","../src/overlays/Modal/KdsModal.vue","../../../node_modules/.pnpm/@knime+utils@1.9.2_consola@3.4.2/node_modules/@knime/utils/src/promise/createUnwrappedPromise.ts","../src/overlays/Modal/useKdsDynamicModal.ts","../src/overlays/Modal/KdsDynamicModalProvider.vue","../src/overlays/Popover/enums.ts","../src/structures/Card/KdsCard.vue","../src/util/isDefinedAndNotEmpty.ts","../src/structures/EmptyState/KdsEmptyState.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref, watch } from \"vue\";\n\nimport type { KdsAvatarProps } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsAvatarProps>(), {\n title: undefined,\n src: undefined,\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 :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 inline-size: var(--kds-dimension-component-width-1-5x);\n block-size: var(--kds-dimension-component-width-1-5x);\n aspect-ratio: 1 / 1;\n overflow: hidden;\n vertical-align: middle;\n border-radius: var(--kds-border-radius-container-pill);\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","<script setup lang=\"ts\">\nimport { computed } from \"vue\";\n\nimport type { KdsColorSwatchProps, KdsColorSwatchType } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsColorSwatchProps>(), {\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.prototype.hasOwnProperty.call(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 :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 width: var(--kds-dimension-icon-0-75x);\n height: var(--kds-dimension-icon-0-75x);\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</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","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 color of the parent element.\n */\nimport { toRef } from \"vue\";\n\nimport type { KdsIconName, KdsIconSize } from \"./types\";\nimport useIcon from \"./useIcon\";\n\nconst props = withDefaults(\n defineProps<{ name: KdsIconName; size?: KdsIconSize }>(),\n {\n size: \"medium\",\n },\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]\"\n aria-hidden=\"true\"\n focusable=\"false\"\n />\n <span\n v-else\n :class=\"['kds-icon', props.size]\"\n aria-hidden=\"true\"\n focusable=\"false\"\n />\n</template>\n\n<style scoped>\n@import url(\"./styles.css\");\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 '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","import { iconNames as kdsIconNames } from \"@knime/kds-styles/img/icons/def\";\nimport { typeIconNames as kdsTypeIconNames } from \"@knime/kds-styles/img/type-icons/def\";\n\nexport { kdsIconNames, kdsTypeIconNames };\n\nconst toEnumKey = (name: string) =>\n name.toUpperCase().replace(/-/g, \"_\") 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 { KdsDataTypeSize, KdsIconSize, KdsTypeIconName } from \"./types\";\nimport useIcon from \"./useIcon\";\n\ntype DataTypeIconSize = Exclude<KdsIconSize, \"large\">;\n\ntype Props = {\n iconName?: KdsTypeIconName | TypeId | string;\n iconTitle?: string;\n size?: KdsDataTypeSize;\n};\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<Props>(), {\n iconName: \"unknown-datatype\",\n iconTitle: \"Unknown Data Type\",\n size: \"medium\",\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 :class=\"['kds-data-type-icon-container', size]\" :title=\"props.iconTitle\">\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 &.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","<script setup lang=\"ts\">\nimport { computed } from \"vue\";\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</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 v-if=\"props.label\" class=\"label\">{{ props.label }}</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 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 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 (e: \"click\", event: MouseEvent): void;\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","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 { 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\n/**\n * Tracks whether the content of a single-line element is visually truncated.\n *\n * This can be used to set tooltips or other UI affordances when text is cut off.\n * Changing the width of the provided element based on this composable may result in an infinite loop!\n *\n * Note: This is intended for horizontal truncation (e.g. `text-overflow: ellipsis`).\n * It does not detect multi-line clamping.\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 useResizeObserver(elementRef, () => {\n isTruncated.value = elementOverflowsHorizontally(elementRef.value);\n });\n\n return { isTruncated };\n}\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 padding-top: var(--kds-spacing-container-0-10x);\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 padding-top: var(--kds-spacing-container-0-10x);\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 { 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 * Whether the input is readonly\n */\n readonly?: boolean;\n /**\n * Whether the input is required\n */\n required?: 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 * Name attribute for the input element\n */\n name?: string;\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 * 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 type: \"text\",\n min: undefined,\n max: undefined,\n step: undefined,\n placeholder: undefined,\n disabled: false,\n readonly: false,\n required: false,\n leadingIcon: undefined,\n trailingIcon: undefined,\n error: false,\n name: undefined,\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 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 <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 :readonly=\"props.readonly\"\n :required=\"props.required\"\n :name=\"props.name\"\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 :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 >\n {{ props.unit }}\n </span>\n\n <KdsButton\n v-if=\"props.clearable && hasValue && !props.disabled && !props.readonly\"\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.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","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\";\nimport type { KdsNumberInputProps } from \"../types\";\n\nimport { createKdsNumberParser } from \"./numberParser\";\n\nconst props = withDefaults(defineProps<KdsNumberInputProps>(), {\n disabled: false,\n readonly: false,\n required: false,\n error: false,\n validating: false,\n preserveSubTextSpace: false,\n unit: \"\",\n step: 1,\n});\n\nconst modelValue = defineModel<number>({ default: 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 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 || props.readonly) {\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 || props.readonly) {\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 || props.readonly) {\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 :readonly=\"props.readonly\"\n :required=\"props.required\"\n :error=\"props.error\"\n :name=\"props.name\"\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\";\nimport type { KdsPatternInputProps } from \"../types.ts\";\n\nimport {\n buildRegexFromPatternInput,\n parseRegexToPatternInputValue,\n} from \"./patternRegex.ts\";\n\nconst props = withDefaults(defineProps<KdsPatternInputProps>(), {\n disabled: false,\n readonly: false,\n required: 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 :readonly=\"props.readonly\"\n :required=\"props.required\"\n :error=\"props.error\"\n :name=\"props.name\"\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 || props.readonly\"\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 || props.readonly\"\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 || props.readonly\"\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\";\nimport type { KdsSearchInputProps } from \"../types\";\n\nconst props = withDefaults(defineProps<KdsSearchInputProps>(), {\n placeholder: \"Search\",\n disabled: false,\n readonly: false,\n required: 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=\"search\"\n :placeholder=\"props.placeholder\"\n :disabled=\"props.disabled\"\n :readonly=\"props.readonly\"\n :required=\"props.required\"\n :error=\"props.error\"\n :name=\"props.name\"\n :autocomplete=\"props.autocomplete\"\n leading-icon=\"search\"\n :clearable=\"true\"\n />\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\";\nimport type { KdsTextInputProps } from \"../types\";\n\nconst props = withDefaults(defineProps<KdsTextInputProps>(), {\n disabled: false,\n readonly: false,\n required: 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 :readonly=\"props.readonly\"\n :required=\"props.required\"\n :error=\"props.error\"\n :name=\"props.name\"\n :autocomplete=\"props.autocomplete\"\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\";\nimport type { KdsTextareaProps } from \"../types\";\n\nconst props = withDefaults(defineProps<KdsTextareaProps>(), {\n placeholder: \"\",\n rows: 3,\n disabled: false,\n readonly: false,\n required: 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 :readonly=\"props.readonly\"\n :required=\"props.required\"\n :name=\"props.name\"\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 type { ComponentPublicInstance } from \"vue\";\nimport { onBeforeUnmount, unref, useId, useTemplateRef, watch } from \"vue\";\n\nimport type { 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\nconst resolveElement = (\n el: HTMLElement | ComponentPublicInstance | null | undefined,\n): HTMLElement | null => {\n if (!el) {\n return null;\n }\n\n const maybeInstance = el as ComponentPublicInstance & { $el?: unknown };\n const candidate = maybeInstance.$el ?? el;\n\n return candidate instanceof HTMLElement ? candidate : null;\n};\n\nconst setA11yAttributes = (\n el: HTMLElement | null,\n options: { expanded: boolean; popoverId: string } | null,\n) => {\n if (!el) {\n return;\n }\n\n if (options === null) {\n el.removeAttribute(\"aria-expanded\");\n el.removeAttribute(\"aria-controls\");\n el.removeAttribute(\"aria-haspopup\");\n return;\n }\n\n el.setAttribute(\"aria-expanded\", String(options.expanded));\n el.setAttribute(\"aria-controls\", options.popoverId);\n el.setAttribute(\"aria-haspopup\", props.role);\n};\n\n// Sync the open state with the native popover element's open state\nwatch(open, (isOpen) => {\n if (isOpen) {\n popoverEl.value?.showPopover?.();\n } else {\n popoverEl.value?.hidePopover?.();\n }\n\n const activatorElement = resolveElement(unref(props.activatorEl));\n activatorElement?.setAttribute(\"aria-expanded\", String(isOpen));\n});\n\nwatch(\n () => [unref(props.anchorEl), unref(props.activatorEl)],\n ([nextAnchorEl, nextActivatorEl], prev) => {\n const [prevAnchorEl, prevActivatorEl] = prev ?? [null, null];\n\n const prevAnchor =\n resolveElement(prevAnchorEl ?? null) ?? resolveElement(prevActivatorEl);\n prevAnchor?.style.removeProperty(\"anchor-name\");\n\n // Clean up a11y attributes from previous activator\n const prevActivator = resolveElement(prevActivatorEl);\n setA11yAttributes(prevActivator, null);\n\n const nextAnchor =\n resolveElement(nextAnchorEl ?? null) ?? resolveElement(nextActivatorEl);\n nextAnchor?.style.setProperty(\"anchor-name\", anchorName);\n\n // Set a11y attributes on new activator\n const nextActivator = resolveElement(nextActivatorEl);\n setA11yAttributes(nextActivator, { expanded: open.value, popoverId });\n },\n { immediate: true },\n);\n\nonBeforeUnmount(() => {\n const anchor =\n resolveElement(unref(props.anchorEl) ?? null) ??\n resolveElement(unref(props.activatorEl));\n anchor?.style.removeProperty(\"anchor-name\");\n\n const activator = resolveElement(unref(props.activatorEl));\n setA11yAttributes(activator, null);\n});\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=\"unref(props.activatorEl) ? 'auto' : undefined\"\n :style=\"{ 'position-anchor': anchorName }\"\n :role=\"props.role\"\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\">\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 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 { 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 buttonEl = useTemplateRef(\"buttonEl\");\nconst isHovered = ref(false);\nconst isFocused = ref(false);\n</script>\n\n<template>\n <button\n ref=\"buttonEl\"\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 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 v-model=\"modelValue\"\n :activator-el=\"buttonEl\"\n placement=\"top-right\"\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 buttonEl = useTemplateRef(\"buttonEl\");\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 ref=\"buttonEl\"\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 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 v-model=\"modelValue\"\n :activator-el=\"buttonEl\"\n placement=\"bottom-right\"\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","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-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 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 renderDialog.value = false;\n emit(\"closed\");\n};\n\nwatch(\n () => props.active,\n (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 } 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","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","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","export const kdsPopoverPlacement = {\n TOP_LEFT: \"top-left\",\n TOP_RIGHT: \"top-right\",\n BOTTOM_LEFT: \"bottom-left\",\n BOTTOM_RIGHT: \"bottom-right\",\n} as const;\n\nexport const kdsPopoverPlacements = Object.values(kdsPopoverPlacement);\n\nexport const kdsPopoverRole = {\n DIALOG: \"dialog\",\n MENU: \"menu\",\n LISTBOX: \"listbox\",\n} as const;\n\nexport const kdsPopoverRoles = Object.values(kdsPopoverRole);\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 | KeyboardEvent];\n}>();\n\nconst selected = computed(() => modelValue.value && selectable);\n\nconst handleClick = (event: MouseEvent | KeyboardEvent) => {\n if (disabled) {\n return;\n }\n\n if (selectable) {\n modelValue.value = !modelValue.value;\n } else {\n emit(\"click\", event);\n }\n};\n</script>\n\n<template>\n <div\n class=\"kds-card\"\n :class=\"[\n `variant-${variant}`,\n { selected: selected },\n { disabled: disabled },\n ]\"\n role=\"button\"\n :aria-label=\"ariaLabel\"\n :aria-labelledby=\"ariaLabelledby\"\n :aria-disabled=\"disabled\"\n :aria-pressed=\"selectable ? modelValue : undefined\"\n :tabindex=\"disabled ? -1 : 0\"\n @click=\"handleClick\"\n @keydown.enter.prevent=\"handleClick\"\n @keydown.space.prevent=\"handleClick\"\n >\n <slot />\n </div>\n</template>\n\n<style scoped>\n.kds-card {\n position: relative;\n display: flex;\n flex-direction: column;\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","import { isDefined } from \"@vueuse/core\";\n\n/**\n * Checks if a value is defined and not an empty string.\n * @param obj - The object in which to check\n * @param field - The field name to check in the object\n * @returns true if the value is defined and not an empty string\n */\nexport function isDefinedAndNotEmpty(\n obj: Record<string, unknown>,\n field: string,\n): boolean {\n return isDefined(obj[field]) && obj[field] !== \"\";\n}\n","<script setup lang=\"ts\">\nimport { computed } from \"vue\";\n\nimport KdsButton from \"../../buttons/KdsButton/KdsButton.vue\";\nimport KdsLinkButton from \"../../buttons/KdsLinkButton/KdsLinkButton.vue\";\nimport { isDefinedAndNotEmpty } from \"../../util/isDefinedAndNotEmpty\";\n\nimport type { KdsEmptyStateProps } from \"./types\";\n\nconst props = defineProps<KdsEmptyStateProps>();\n\nconst emit = defineEmits<{\n (e: \"buttonClick\", event: MouseEvent): void;\n}>();\n\nconst hasButton = computed(() => {\n return (\n isDefinedAndNotEmpty(props, \"buttonLabel\") ||\n isDefinedAndNotEmpty(props, \"buttonLeadingIcon\")\n );\n});\n\nconst buttonType = computed(() => {\n if (isDefinedAndNotEmpty(props, \"buttonTo\")) {\n return KdsLinkButton;\n }\n return KdsButton;\n});\n\nconst mapProps = (\n mappings: ReadonlyArray<readonly [string, keyof KdsEmptyStateProps]>,\n) => {\n return Object.fromEntries(\n mappings\n .map(([targetKey, sourceKey]) => [targetKey, props[sourceKey]] as const)\n .filter(([, value]) => value !== undefined),\n );\n};\n\nconst buttonProps = computed(() => {\n if (!hasButton.value) {\n return {};\n }\n\n const baseProps = mapProps([\n [\"label\", \"buttonLabel\"],\n [\"leadingIcon\", \"buttonLeadingIcon\"],\n [\"trailingIcon\", \"buttonTrailingIcon\"],\n [\"ariaLabel\", \"buttonAriaLabel\"],\n [\"disabled\", \"buttonDisabled\"],\n [\"variant\", \"buttonVariant\"],\n [\"size\", \"buttonSize\"],\n [\"destructive\", \"buttonDestructive\"],\n [\"title\", \"buttonTitle\"],\n ]);\n\n if (buttonType.value !== KdsLinkButton) {\n return baseProps;\n }\n\n return {\n ...baseProps,\n ...mapProps([\n [\"to\", \"buttonTo\"],\n [\"target\", \"buttonTarget\"],\n [\"rel\", \"buttonRel\"],\n [\"download\", \"buttonDownload\"],\n ]),\n };\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=\"hasButton\" class=\"kds-empty-state-action\">\n <component\n :is=\"buttonType\"\n v-bind=\"buttonProps\"\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"],"names":["_createElementBlock","_openBlock","_hoisted_3","_createElementVNode","_unref","_createBlock","_resolveDynamicComponent","_normalizeClass","kdsIconNames","kdsTypeIconNames","_hoisted_2","_toDisplayString","_renderSlot","_hoisted_1","_mergeProps","_useModel","_createVNode","Icon","_hoisted_4","_hoisted_5","_hoisted_6","_Fragment","_renderList","KdsButton","$slots","normalized","parsed","_withCtx","KdsToggleButton","_createTextVNode","$attrs","PromiseUtils.createUnwrappedPromise","_createSlots","KdsCheckbox","_normalizeProps","_guardReactiveProps","KdsLinkButton"],"mappings":"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","x_google_ignoreList":[57]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/accessories/Avatar/KdsAvatar.vue","../src/accessories/ColorSwatch/KdsColorSwatch.vue","../src/accessories/ColorSwatch/enums.ts","../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/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/util/enums.ts","../src/util/useKdsDarkMode.ts","../src/util/useKdsLegacyMode.ts","../src/util/useKdsIsTruncated.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/forms/_helper/BaseFormFieldWrapper.vue","../src/forms/inputs/BaseInput.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/TextInput/KdsTextInput.vue","../src/forms/inputs/Textarea/KdsTextarea.vue","../src/overlays/Popover/KdsPopover.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","../../../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","../src/overlays/Popover/enums.ts","../src/structures/Card/KdsCard.vue","../src/util/isDefinedAndNotEmpty.ts","../src/structures/EmptyState/KdsEmptyState.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref, watch } from \"vue\";\n\nimport type { KdsAvatarProps } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsAvatarProps>(), {\n title: undefined,\n src: undefined,\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 :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 inline-size: var(--kds-dimension-component-width-1-5x);\n block-size: var(--kds-dimension-component-width-1-5x);\n aspect-ratio: 1 / 1;\n overflow: hidden;\n vertical-align: middle;\n border-radius: var(--kds-border-radius-container-pill);\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","<script setup lang=\"ts\">\nimport { computed } from \"vue\";\n\nimport type { KdsColorSwatchProps, KdsColorSwatchType } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsColorSwatchProps>(), {\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.prototype.hasOwnProperty.call(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 :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 width: var(--kds-dimension-icon-0-75x);\n height: var(--kds-dimension-icon-0-75x);\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</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","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 color of the parent element.\n */\nimport { toRef } from \"vue\";\n\nimport type { KdsIconName, KdsIconSize } from \"./types\";\nimport useIcon from \"./useIcon\";\n\nconst props = withDefaults(\n defineProps<{ name: KdsIconName; size?: KdsIconSize }>(),\n {\n size: \"medium\",\n },\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]\"\n aria-hidden=\"true\"\n focusable=\"false\"\n />\n <span\n v-else\n :class=\"['kds-icon', props.size]\"\n aria-hidden=\"true\"\n focusable=\"false\"\n />\n</template>\n\n<style scoped>\n@import url(\"./styles.css\");\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 '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","import { iconNames as kdsIconNames } from \"@knime/kds-styles/img/icons/def\";\nimport { typeIconNames as kdsTypeIconNames } from \"@knime/kds-styles/img/type-icons/def\";\n\nexport { kdsIconNames, kdsTypeIconNames };\n\nconst toEnumKey = (name: string) =>\n name.toUpperCase().replace(/-/g, \"_\") 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 { KdsDataTypeSize, KdsIconSize, KdsTypeIconName } from \"./types\";\nimport useIcon from \"./useIcon\";\n\ntype DataTypeIconSize = Exclude<KdsIconSize, \"large\">;\n\ntype Props = {\n iconName?: KdsTypeIconName | TypeId | string;\n iconTitle?: string;\n size?: KdsDataTypeSize;\n};\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<Props>(), {\n iconName: \"unknown-datatype\",\n iconTitle: \"Unknown Data Type\",\n size: \"medium\",\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 :class=\"['kds-data-type-icon-container', size]\" :title=\"props.iconTitle\">\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 &.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","<script setup lang=\"ts\">\nimport { computed } from \"vue\";\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</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 v-if=\"props.label\" class=\"label\">{{ props.label }}</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 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 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 (e: \"click\", event: MouseEvent): void;\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","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 { 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\n/**\n * Tracks whether the content of a single-line element is visually truncated.\n *\n * This can be used to set tooltips or other UI affordances when text is cut off.\n * Changing the width of the provided element based on this composable may result in an infinite loop!\n *\n * Note: This is intended for horizontal truncation (e.g. `text-overflow: ellipsis`).\n * It does not detect multi-line clamping.\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 useResizeObserver(elementRef, () => {\n isTruncated.value = elementOverflowsHorizontally(elementRef.value);\n });\n\n return { isTruncated };\n}\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 padding-top: var(--kds-spacing-container-0-10x);\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 padding-top: var(--kds-spacing-container-0-10x);\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 { 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 * Whether the input is readonly\n */\n readonly?: boolean;\n /**\n * Whether the input is required\n */\n required?: 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 * Name attribute for the input element\n */\n name?: string;\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 * 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 type: \"text\",\n min: undefined,\n max: undefined,\n step: undefined,\n placeholder: undefined,\n disabled: false,\n readonly: false,\n required: false,\n leadingIcon: undefined,\n trailingIcon: undefined,\n error: false,\n name: undefined,\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 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 <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 :readonly=\"props.readonly\"\n :required=\"props.required\"\n :name=\"props.name\"\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 :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 >\n {{ props.unit }}\n </span>\n\n <KdsButton\n v-if=\"props.clearable && hasValue && !props.disabled && !props.readonly\"\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.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","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\";\nimport type { KdsNumberInputProps } from \"../types\";\n\nimport { createKdsNumberParser } from \"./numberParser\";\n\nconst props = withDefaults(defineProps<KdsNumberInputProps>(), {\n disabled: false,\n readonly: false,\n required: false,\n error: false,\n validating: false,\n preserveSubTextSpace: false,\n unit: \"\",\n step: 1,\n});\n\nconst modelValue = defineModel<number>({ default: 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 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 || props.readonly) {\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 || props.readonly) {\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 || props.readonly) {\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 :readonly=\"props.readonly\"\n :required=\"props.required\"\n :error=\"props.error\"\n :name=\"props.name\"\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\";\nimport type { KdsPatternInputProps } from \"../types.ts\";\n\nimport {\n buildRegexFromPatternInput,\n parseRegexToPatternInputValue,\n} from \"./patternRegex.ts\";\n\nconst props = withDefaults(defineProps<KdsPatternInputProps>(), {\n disabled: false,\n readonly: false,\n required: 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 :readonly=\"props.readonly\"\n :required=\"props.required\"\n :error=\"props.error\"\n :name=\"props.name\"\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 || props.readonly\"\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 || props.readonly\"\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 || props.readonly\"\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\";\nimport type { KdsSearchInputProps } from \"../types\";\n\nconst props = withDefaults(defineProps<KdsSearchInputProps>(), {\n placeholder: \"Search\",\n disabled: false,\n readonly: false,\n required: 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=\"search\"\n :placeholder=\"props.placeholder\"\n :disabled=\"props.disabled\"\n :readonly=\"props.readonly\"\n :required=\"props.required\"\n :error=\"props.error\"\n :name=\"props.name\"\n :autocomplete=\"props.autocomplete\"\n leading-icon=\"search\"\n :clearable=\"true\"\n />\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\";\nimport type { KdsTextInputProps } from \"../types\";\n\nconst props = withDefaults(defineProps<KdsTextInputProps>(), {\n disabled: false,\n readonly: false,\n required: 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 :readonly=\"props.readonly\"\n :required=\"props.required\"\n :error=\"props.error\"\n :name=\"props.name\"\n :autocomplete=\"props.autocomplete\"\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\";\nimport type { KdsTextareaProps } from \"../types\";\n\nconst props = withDefaults(defineProps<KdsTextareaProps>(), {\n placeholder: \"\",\n rows: 3,\n disabled: false,\n readonly: false,\n required: 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 :readonly=\"props.readonly\"\n :required=\"props.required\"\n :name=\"props.name\"\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 type { ComponentPublicInstance } from \"vue\";\nimport { onBeforeUnmount, unref, useId, useTemplateRef, watch } from \"vue\";\n\nimport type { 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\nconst resolveElement = (\n el: HTMLElement | ComponentPublicInstance | null | undefined,\n): HTMLElement | null => {\n if (!el) {\n return null;\n }\n\n const maybeInstance = el as ComponentPublicInstance & { $el?: unknown };\n const candidate = maybeInstance.$el ?? el;\n\n return candidate instanceof HTMLElement ? candidate : null;\n};\n\nconst setA11yAttributes = (\n el: HTMLElement | null,\n options: { expanded: boolean; popoverId: string } | null,\n) => {\n if (!el) {\n return;\n }\n\n if (options === null) {\n el.removeAttribute(\"aria-expanded\");\n el.removeAttribute(\"aria-controls\");\n el.removeAttribute(\"aria-haspopup\");\n return;\n }\n\n el.setAttribute(\"aria-expanded\", String(options.expanded));\n el.setAttribute(\"aria-controls\", options.popoverId);\n el.setAttribute(\"aria-haspopup\", props.role);\n};\n\n// Sync the open state with the native popover element's open state\nwatch(open, (isOpen) => {\n if (isOpen) {\n popoverEl.value?.showPopover?.();\n } else {\n popoverEl.value?.hidePopover?.();\n }\n\n const activatorElement = resolveElement(unref(props.activatorEl));\n activatorElement?.setAttribute(\"aria-expanded\", String(isOpen));\n});\n\nwatch(\n () => [unref(props.anchorEl), unref(props.activatorEl)],\n ([nextAnchorEl, nextActivatorEl], prev) => {\n const [prevAnchorEl, prevActivatorEl] = prev ?? [null, null];\n\n const prevAnchor =\n resolveElement(prevAnchorEl ?? null) ?? resolveElement(prevActivatorEl);\n prevAnchor?.style.removeProperty(\"anchor-name\");\n\n // Clean up a11y attributes from previous activator\n const prevActivator = resolveElement(prevActivatorEl);\n setA11yAttributes(prevActivator, null);\n\n const nextAnchor =\n resolveElement(nextAnchorEl ?? null) ?? resolveElement(nextActivatorEl);\n nextAnchor?.style.setProperty(\"anchor-name\", anchorName);\n\n // Set a11y attributes on new activator\n const nextActivator = resolveElement(nextActivatorEl);\n setA11yAttributes(nextActivator, { expanded: open.value, popoverId });\n },\n { immediate: true },\n);\n\nonBeforeUnmount(() => {\n const anchor =\n resolveElement(unref(props.anchorEl) ?? null) ??\n resolveElement(unref(props.activatorEl));\n anchor?.style.removeProperty(\"anchor-name\");\n\n const activator = resolveElement(unref(props.activatorEl));\n setA11yAttributes(activator, null);\n});\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=\"unref(props.activatorEl) ? 'auto' : undefined\"\n :style=\"{ 'position-anchor': anchorName }\"\n :role=\"props.role\"\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\">\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 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 { 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 buttonEl = useTemplateRef(\"buttonEl\");\nconst isHovered = ref(false);\nconst isFocused = ref(false);\n</script>\n\n<template>\n <button\n ref=\"buttonEl\"\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 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 v-model=\"modelValue\"\n :activator-el=\"buttonEl\"\n placement=\"top-right\"\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 buttonEl = useTemplateRef(\"buttonEl\");\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 ref=\"buttonEl\"\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 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 v-model=\"modelValue\"\n :activator-el=\"buttonEl\"\n placement=\"bottom-right\"\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","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-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 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","export const kdsPopoverPlacement = {\n TOP_LEFT: \"top-left\",\n TOP_RIGHT: \"top-right\",\n BOTTOM_LEFT: \"bottom-left\",\n BOTTOM_RIGHT: \"bottom-right\",\n} as const;\n\nexport const kdsPopoverPlacements = Object.values(kdsPopoverPlacement);\n\nexport const kdsPopoverRole = {\n DIALOG: \"dialog\",\n MENU: \"menu\",\n LISTBOX: \"listbox\",\n} as const;\n\nexport const kdsPopoverRoles = Object.values(kdsPopoverRole);\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 | KeyboardEvent];\n}>();\n\nconst selected = computed(() => modelValue.value && selectable);\n\nconst handleClick = (event: MouseEvent | KeyboardEvent) => {\n if (disabled) {\n return;\n }\n\n if (selectable) {\n modelValue.value = !modelValue.value;\n } else {\n emit(\"click\", event);\n }\n};\n</script>\n\n<template>\n <div\n class=\"kds-card\"\n :class=\"[\n `variant-${variant}`,\n { selected: selected },\n { disabled: disabled },\n ]\"\n role=\"button\"\n :aria-label=\"ariaLabel\"\n :aria-labelledby=\"ariaLabelledby\"\n :aria-disabled=\"disabled\"\n :aria-pressed=\"selectable ? modelValue : undefined\"\n :tabindex=\"disabled ? -1 : 0\"\n @click=\"handleClick\"\n @keydown.enter.prevent=\"handleClick\"\n @keydown.space.prevent=\"handleClick\"\n >\n <slot />\n </div>\n</template>\n\n<style scoped>\n.kds-card {\n position: relative;\n display: flex;\n flex-direction: column;\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","import { isDefined } from \"@vueuse/core\";\n\n/**\n * Checks if a value is defined and not an empty string.\n * @param obj - The object in which to check\n * @param field - The field name to check in the object\n * @returns true if the value is defined and not an empty string\n */\nexport function isDefinedAndNotEmpty(\n obj: Record<string, unknown>,\n field: string,\n): boolean {\n return isDefined(obj[field]) && obj[field] !== \"\";\n}\n","<script setup lang=\"ts\">\nimport { computed } from \"vue\";\n\nimport KdsButton from \"../../buttons/KdsButton/KdsButton.vue\";\nimport KdsLinkButton from \"../../buttons/KdsLinkButton/KdsLinkButton.vue\";\nimport { isDefinedAndNotEmpty } from \"../../util/isDefinedAndNotEmpty\";\n\nimport type { KdsEmptyStateProps } from \"./types\";\n\nconst props = defineProps<KdsEmptyStateProps>();\n\nconst emit = defineEmits<{\n (e: \"buttonClick\", event: MouseEvent): void;\n}>();\n\nconst hasButton = computed(() => {\n return (\n isDefinedAndNotEmpty(props, \"buttonLabel\") ||\n isDefinedAndNotEmpty(props, \"buttonLeadingIcon\")\n );\n});\n\nconst buttonType = computed(() => {\n if (isDefinedAndNotEmpty(props, \"buttonTo\")) {\n return KdsLinkButton;\n }\n return KdsButton;\n});\n\nconst mapProps = (\n mappings: ReadonlyArray<readonly [string, keyof KdsEmptyStateProps]>,\n) => {\n return Object.fromEntries(\n mappings\n .map(([targetKey, sourceKey]) => [targetKey, props[sourceKey]] as const)\n .filter(([, value]) => value !== undefined),\n );\n};\n\nconst buttonProps = computed(() => {\n if (!hasButton.value) {\n return {};\n }\n\n const baseProps = mapProps([\n [\"label\", \"buttonLabel\"],\n [\"leadingIcon\", \"buttonLeadingIcon\"],\n [\"trailingIcon\", \"buttonTrailingIcon\"],\n [\"ariaLabel\", \"buttonAriaLabel\"],\n [\"disabled\", \"buttonDisabled\"],\n [\"variant\", \"buttonVariant\"],\n [\"size\", \"buttonSize\"],\n [\"destructive\", \"buttonDestructive\"],\n [\"title\", \"buttonTitle\"],\n ]);\n\n if (buttonType.value !== KdsLinkButton) {\n return baseProps;\n }\n\n return {\n ...baseProps,\n ...mapProps([\n [\"to\", \"buttonTo\"],\n [\"target\", \"buttonTarget\"],\n [\"rel\", \"buttonRel\"],\n [\"download\", \"buttonDownload\"],\n ]),\n };\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=\"hasButton\" class=\"kds-empty-state-action\">\n <component\n :is=\"buttonType\"\n v-bind=\"buttonProps\"\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"],"names":["_createElementBlock","_openBlock","_hoisted_3","_createElementVNode","_unref","_createBlock","_resolveDynamicComponent","_normalizeClass","kdsIconNames","kdsTypeIconNames","_hoisted_2","_toDisplayString","_renderSlot","_hoisted_1","_mergeProps","_useModel","_createVNode","Icon","_hoisted_4","_hoisted_5","_hoisted_6","_Fragment","_renderList","KdsButton","$slots","normalized","parsed","_withCtx","KdsToggleButton","_createTextVNode","$attrs","PromiseUtils.createUnwrappedPromise","_createSlots","KdsCheckbox","_normalizeProps","_guardReactiveProps","KdsLinkButton"],"mappings":"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","x_google_ignoreList":[54,55]}
|