@knime/kds-components 0.6.7 → 0.8.0

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.
Files changed (220) hide show
  1. package/dist/accessories/Avatar/KdsAvatar.vue.d.ts +7 -0
  2. package/dist/accessories/Avatar/KdsAvatar.vue.d.ts.map +1 -0
  3. package/dist/accessories/Avatar/demo-logo.d.ts +2 -0
  4. package/dist/accessories/Avatar/demo-logo.d.ts.map +1 -0
  5. package/dist/accessories/Avatar/demo-user.d.ts +2 -0
  6. package/dist/accessories/Avatar/demo-user.d.ts.map +1 -0
  7. package/dist/accessories/Avatar/index.d.ts +3 -0
  8. package/dist/accessories/Avatar/index.d.ts.map +1 -0
  9. package/dist/accessories/Avatar/types.d.ts +9 -0
  10. package/dist/accessories/Avatar/types.d.ts.map +1 -0
  11. package/dist/accessories/ColorSwatch/KdsColorSwatch.vue.d.ts +6 -0
  12. package/dist/accessories/ColorSwatch/KdsColorSwatch.vue.d.ts.map +1 -0
  13. package/dist/accessories/ColorSwatch/enums.d.ts +11 -0
  14. package/dist/accessories/ColorSwatch/enums.d.ts.map +1 -0
  15. package/dist/accessories/ColorSwatch/index.d.ts +4 -0
  16. package/dist/accessories/ColorSwatch/index.d.ts.map +1 -0
  17. package/dist/accessories/ColorSwatch/types.d.ts +21 -0
  18. package/dist/accessories/ColorSwatch/types.d.ts.map +1 -0
  19. package/dist/accessories/Icon/IdToIconNameMapping.d.ts.map +1 -0
  20. package/dist/accessories/Icon/KdsDataType.vue.d.ts.map +1 -0
  21. package/dist/accessories/Icon/KdsIcon.vue.d.ts.map +1 -0
  22. package/dist/accessories/Icon/enums.d.ts +19 -0
  23. package/dist/accessories/Icon/enums.d.ts.map +1 -0
  24. package/dist/accessories/Icon/index.d.ts +5 -0
  25. package/dist/accessories/Icon/index.d.ts.map +1 -0
  26. package/dist/accessories/Icon/types.d.ts +6 -0
  27. package/dist/accessories/Icon/types.d.ts.map +1 -0
  28. package/dist/accessories/Icon/useIcon.d.ts.map +1 -0
  29. package/dist/accessories/LiveStatus/KdsLiveStatus.vue.d.ts +9 -0
  30. package/dist/accessories/LiveStatus/KdsLiveStatus.vue.d.ts.map +1 -0
  31. package/dist/accessories/LiveStatus/enums.d.ts +14 -0
  32. package/dist/accessories/LiveStatus/enums.d.ts.map +1 -0
  33. package/dist/accessories/LiveStatus/index.d.ts +4 -0
  34. package/dist/accessories/LiveStatus/index.d.ts.map +1 -0
  35. package/dist/accessories/LiveStatus/types.d.ts +23 -0
  36. package/dist/accessories/LiveStatus/types.d.ts.map +1 -0
  37. package/dist/accessories/LoadingSpinner/KdsLoadingSpinner.vue.d.ts +7 -0
  38. package/dist/accessories/LoadingSpinner/KdsLoadingSpinner.vue.d.ts.map +1 -0
  39. package/dist/accessories/LoadingSpinner/enums.d.ts +6 -0
  40. package/dist/accessories/LoadingSpinner/enums.d.ts.map +1 -0
  41. package/dist/accessories/LoadingSpinner/index.d.ts +4 -0
  42. package/dist/accessories/LoadingSpinner/index.d.ts.map +1 -0
  43. package/dist/accessories/LoadingSpinner/types.d.ts +8 -0
  44. package/dist/accessories/LoadingSpinner/types.d.ts.map +1 -0
  45. package/dist/accessories/index.d.ts +11 -0
  46. package/dist/accessories/index.d.ts.map +1 -0
  47. package/dist/buttons/KdsButton/KdsButton.vue.d.ts.map +1 -0
  48. package/dist/buttons/KdsButton/index.d.ts +3 -0
  49. package/dist/buttons/KdsButton/index.d.ts.map +1 -0
  50. package/dist/buttons/KdsButton/types.d.ts +40 -0
  51. package/dist/buttons/KdsButton/types.d.ts.map +1 -0
  52. package/dist/buttons/KdsInfoToggleButton/KdsInfoToggleButton.vue.d.ts.map +1 -0
  53. package/dist/buttons/KdsInfoToggleButton/index.d.ts +3 -0
  54. package/dist/buttons/KdsInfoToggleButton/index.d.ts.map +1 -0
  55. package/dist/buttons/KdsInfoToggleButton/types.d.ts +8 -0
  56. package/dist/buttons/KdsInfoToggleButton/types.d.ts.map +1 -0
  57. package/dist/buttons/KdsLinkButton/KdsLinkButton.vue.d.ts.map +1 -0
  58. package/dist/buttons/KdsLinkButton/index.d.ts +3 -0
  59. package/dist/buttons/KdsLinkButton/index.d.ts.map +1 -0
  60. package/dist/buttons/KdsLinkButton/types.d.ts +42 -0
  61. package/dist/buttons/KdsLinkButton/types.d.ts.map +1 -0
  62. package/dist/buttons/KdsProgressButton/KdsProgressButton.vue.d.ts.map +1 -0
  63. package/dist/buttons/KdsProgressButton/enums.d.ts +8 -0
  64. package/dist/buttons/KdsProgressButton/enums.d.ts.map +1 -0
  65. package/dist/buttons/KdsProgressButton/index.d.ts +4 -0
  66. package/dist/buttons/KdsProgressButton/index.d.ts.map +1 -0
  67. package/dist/buttons/KdsProgressButton/types.d.ts +17 -0
  68. package/dist/buttons/KdsProgressButton/types.d.ts.map +1 -0
  69. package/dist/buttons/KdsToggleButton/KdsToggleButton.vue.d.ts.map +1 -0
  70. package/dist/buttons/KdsToggleButton/enums.d.ts +6 -0
  71. package/dist/buttons/KdsToggleButton/enums.d.ts.map +1 -0
  72. package/dist/buttons/KdsToggleButton/index.d.ts +4 -0
  73. package/dist/buttons/KdsToggleButton/index.d.ts.map +1 -0
  74. package/dist/buttons/KdsToggleButton/types.d.ts +5 -0
  75. package/dist/buttons/KdsToggleButton/types.d.ts.map +1 -0
  76. package/dist/buttons/{KdsVariableToggleButton.vue.d.ts → KdsVariableToggleButton/KdsVariableToggleButton.vue.d.ts} +1 -1
  77. package/dist/buttons/KdsVariableToggleButton/KdsVariableToggleButton.vue.d.ts.map +1 -0
  78. package/dist/buttons/KdsVariableToggleButton/index.d.ts +3 -0
  79. package/dist/buttons/KdsVariableToggleButton/index.d.ts.map +1 -0
  80. package/dist/buttons/KdsVariableToggleButton/types.d.ts +16 -0
  81. package/dist/buttons/KdsVariableToggleButton/types.d.ts.map +1 -0
  82. package/dist/buttons/enums.d.ts +14 -0
  83. package/dist/buttons/enums.d.ts.map +1 -0
  84. package/dist/buttons/index.d.ts +14 -7
  85. package/dist/buttons/index.d.ts.map +1 -1
  86. package/dist/buttons/types.d.ts +10 -152
  87. package/dist/buttons/types.d.ts.map +1 -1
  88. package/dist/forms/Checkbox/enums.d.ts +12 -0
  89. package/dist/forms/Checkbox/enums.d.ts.map +1 -0
  90. package/dist/forms/Checkbox/index.d.ts +5 -0
  91. package/dist/forms/Checkbox/index.d.ts.map +1 -0
  92. package/dist/forms/Checkbox/types.d.ts +3 -2
  93. package/dist/forms/Checkbox/types.d.ts.map +1 -1
  94. package/dist/forms/KdsLabel.vue.d.ts.map +1 -1
  95. package/dist/forms/RadioButton/KdsRadioButtonGroup.vue.d.ts.map +1 -1
  96. package/dist/forms/RadioButton/KdsValueSwitch.vue.d.ts.map +1 -1
  97. package/dist/forms/RadioButton/ValueSwitchItem.vue.d.ts.map +1 -1
  98. package/dist/forms/RadioButton/enums.d.ts +16 -0
  99. package/dist/forms/RadioButton/enums.d.ts.map +1 -0
  100. package/dist/forms/RadioButton/index.d.ts +6 -0
  101. package/dist/forms/RadioButton/index.d.ts.map +1 -0
  102. package/dist/forms/RadioButton/types.d.ts +5 -4
  103. package/dist/forms/RadioButton/types.d.ts.map +1 -1
  104. package/dist/forms/index.d.ts +7 -11
  105. package/dist/forms/index.d.ts.map +1 -1
  106. package/dist/forms/inputs/BaseInput.vue.d.ts +43 -7
  107. package/dist/forms/inputs/BaseInput.vue.d.ts.map +1 -1
  108. package/dist/forms/inputs/NumberInput/KdsNumberInput.vue.d.ts.map +1 -1
  109. package/dist/forms/inputs/NumberInput/index.d.ts +2 -0
  110. package/dist/forms/inputs/NumberInput/index.d.ts.map +1 -0
  111. package/dist/forms/inputs/NumberInput/numberParser.d.ts +26 -0
  112. package/dist/forms/inputs/NumberInput/numberParser.d.ts.map +1 -0
  113. package/dist/forms/inputs/PatternInput/index.d.ts +2 -0
  114. package/dist/forms/inputs/PatternInput/index.d.ts.map +1 -0
  115. package/dist/forms/inputs/SearchInput/KdsSearchInput.vue.d.ts.map +1 -1
  116. package/dist/forms/inputs/SearchInput/index.d.ts +2 -0
  117. package/dist/forms/inputs/SearchInput/index.d.ts.map +1 -0
  118. package/dist/forms/inputs/TextInput/index.d.ts +2 -0
  119. package/dist/forms/inputs/TextInput/index.d.ts.map +1 -0
  120. package/dist/forms/inputs/Textarea/KdsTextarea.vue.d.ts +3 -0
  121. package/dist/forms/inputs/Textarea/KdsTextarea.vue.d.ts.map +1 -0
  122. package/dist/forms/inputs/Textarea/index.d.ts +2 -0
  123. package/dist/forms/inputs/Textarea/index.d.ts.map +1 -0
  124. package/dist/forms/inputs/index.d.ts +7 -0
  125. package/dist/forms/inputs/index.d.ts.map +1 -0
  126. package/dist/forms/inputs/types.d.ts +9 -1
  127. package/dist/forms/inputs/types.d.ts.map +1 -1
  128. package/dist/index.css +845 -486
  129. package/dist/index.d.ts +6 -11
  130. package/dist/index.d.ts.map +1 -1
  131. package/dist/index.js +2725 -1918
  132. package/dist/index.js.map +1 -1
  133. package/dist/overlays/Modal/KdsDynamicModalProvider.vue.d.ts.map +1 -0
  134. package/dist/overlays/Modal/KdsModal.vue.d.ts +46 -0
  135. package/dist/overlays/Modal/KdsModal.vue.d.ts.map +1 -0
  136. package/dist/{Modal → overlays/Modal}/KdsModalLayout.vue.d.ts +1 -1
  137. package/dist/overlays/Modal/KdsModalLayout.vue.d.ts.map +1 -0
  138. package/dist/overlays/Modal/enums.d.ts +41 -0
  139. package/dist/overlays/Modal/enums.d.ts.map +1 -0
  140. package/dist/overlays/Modal/index.d.ts +7 -0
  141. package/dist/overlays/Modal/index.d.ts.map +1 -0
  142. package/dist/{Modal → overlays/Modal}/types.d.ts +10 -18
  143. package/dist/overlays/Modal/types.d.ts.map +1 -0
  144. package/dist/{Modal → overlays/Modal}/useKdsDynamicModal.d.ts +17 -17
  145. package/dist/overlays/Modal/useKdsDynamicModal.d.ts.map +1 -0
  146. package/dist/overlays/Popover/KdsPopover.vue.d.ts +33 -0
  147. package/dist/overlays/Popover/KdsPopover.vue.d.ts.map +1 -0
  148. package/dist/overlays/Popover/enums.d.ts +8 -0
  149. package/dist/overlays/Popover/enums.d.ts.map +1 -0
  150. package/dist/overlays/Popover/index.d.ts +4 -0
  151. package/dist/overlays/Popover/index.d.ts.map +1 -0
  152. package/dist/overlays/Popover/types.d.ts +22 -0
  153. package/dist/overlays/Popover/types.d.ts.map +1 -0
  154. package/dist/overlays/index.d.ts +5 -0
  155. package/dist/overlays/index.d.ts.map +1 -0
  156. package/dist/structures/Card/KdsCard.vue.d.ts +60 -0
  157. package/dist/structures/Card/KdsCard.vue.d.ts.map +1 -0
  158. package/dist/structures/Card/enums.d.ts +7 -0
  159. package/dist/structures/Card/enums.d.ts.map +1 -0
  160. package/dist/structures/Card/index.d.ts +4 -0
  161. package/dist/structures/Card/index.d.ts.map +1 -0
  162. package/dist/structures/Card/types.d.ts +69 -0
  163. package/dist/structures/Card/types.d.ts.map +1 -0
  164. package/dist/structures/EmptyState/KdsEmptyState.vue.d.ts +145 -0
  165. package/dist/structures/EmptyState/KdsEmptyState.vue.d.ts.map +1 -0
  166. package/dist/structures/EmptyState/types.d.ts +11 -0
  167. package/dist/structures/EmptyState/types.d.ts.map +1 -0
  168. package/dist/structures/index.d.ts +5 -0
  169. package/dist/structures/index.d.ts.map +1 -0
  170. package/dist/util/enums.d.ts +7 -0
  171. package/dist/util/enums.d.ts.map +1 -0
  172. package/dist/util/index.d.ts +1 -0
  173. package/dist/util/index.d.ts.map +1 -1
  174. package/dist/util/useKdsDarkMode.d.ts +2 -1
  175. package/dist/util/useKdsDarkMode.d.ts.map +1 -1
  176. package/package.json +3 -3
  177. package/dist/EmptyState/KdsEmptyState.vue.d.ts +0 -165
  178. package/dist/EmptyState/KdsEmptyState.vue.d.ts.map +0 -1
  179. package/dist/EmptyState/types.d.ts +0 -11
  180. package/dist/EmptyState/types.d.ts.map +0 -1
  181. package/dist/Icon/IdToIconNameMapping.d.ts.map +0 -1
  182. package/dist/Icon/KdsDataType.vue.d.ts.map +0 -1
  183. package/dist/Icon/KdsIcon.vue.d.ts.map +0 -1
  184. package/dist/Icon/constants.d.ts +0 -6
  185. package/dist/Icon/constants.d.ts.map +0 -1
  186. package/dist/Icon/types.d.ts +0 -7
  187. package/dist/Icon/types.d.ts.map +0 -1
  188. package/dist/Icon/useIcon.d.ts.map +0 -1
  189. package/dist/LoadingSpinner/KdsLoadingSpinner.vue.d.ts +0 -12
  190. package/dist/LoadingSpinner/KdsLoadingSpinner.vue.d.ts.map +0 -1
  191. package/dist/Modal/KdsDynamicModalProvider.vue.d.ts.map +0 -1
  192. package/dist/Modal/KdsModal.vue.d.ts +0 -46
  193. package/dist/Modal/KdsModal.vue.d.ts.map +0 -1
  194. package/dist/Modal/KdsModalLayout.vue.d.ts.map +0 -1
  195. package/dist/Modal/constants.d.ts +0 -21
  196. package/dist/Modal/constants.d.ts.map +0 -1
  197. package/dist/Modal/types.d.ts.map +0 -1
  198. package/dist/Modal/useKdsDynamicModal.d.ts.map +0 -1
  199. package/dist/buttons/KdsButton.vue.d.ts.map +0 -1
  200. package/dist/buttons/KdsInfoToggleButton.vue.d.ts.map +0 -1
  201. package/dist/buttons/KdsLinkButton.vue.d.ts.map +0 -1
  202. package/dist/buttons/KdsProgressButton.vue.d.ts.map +0 -1
  203. package/dist/buttons/KdsToggleButton.vue.d.ts.map +0 -1
  204. package/dist/buttons/KdsVariableToggleButton.vue.d.ts.map +0 -1
  205. package/dist/buttons/constants.d.ts +0 -3
  206. package/dist/buttons/constants.d.ts.map +0 -1
  207. package/dist/constants.d.ts +0 -2
  208. package/dist/constants.d.ts.map +0 -1
  209. package/dist/types.d.ts +0 -3
  210. package/dist/types.d.ts.map +0 -1
  211. /package/dist/{Icon → accessories/Icon}/IdToIconNameMapping.d.ts +0 -0
  212. /package/dist/{Icon → accessories/Icon}/KdsDataType.vue.d.ts +0 -0
  213. /package/dist/{Icon → accessories/Icon}/KdsIcon.vue.d.ts +0 -0
  214. /package/dist/{Icon → accessories/Icon}/useIcon.d.ts +0 -0
  215. /package/dist/buttons/{KdsButton.vue.d.ts → KdsButton/KdsButton.vue.d.ts} +0 -0
  216. /package/dist/buttons/{KdsInfoToggleButton.vue.d.ts → KdsInfoToggleButton/KdsInfoToggleButton.vue.d.ts} +0 -0
  217. /package/dist/buttons/{KdsLinkButton.vue.d.ts → KdsLinkButton/KdsLinkButton.vue.d.ts} +0 -0
  218. /package/dist/buttons/{KdsProgressButton.vue.d.ts → KdsProgressButton/KdsProgressButton.vue.d.ts} +0 -0
  219. /package/dist/buttons/{KdsToggleButton.vue.d.ts → KdsToggleButton/KdsToggleButton.vue.d.ts} +0 -0
  220. /package/dist/{Modal → overlays/Modal}/KdsDynamicModalProvider.vue.d.ts +0 -0
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/Icon/useIcon.ts","../src/Icon/KdsIcon.vue","../src/Icon/IdToIconNameMapping.ts","../../styles/dist/img/type-icons/def.ts","../src/Icon/KdsDataType.vue","../src/buttons/BaseButton.vue","../src/buttons/KdsButton.vue","../src/util/nuxtComponentResolver.ts","../src/buttons/KdsLinkButton.vue","../src/util/isDefinedAndNotEmpty.ts","../src/EmptyState/KdsEmptyState.vue","../src/Modal/constants.ts","../src/Modal/KdsModalLayout.vue","../src/Modal/KdsModal.vue","../src/LoadingSpinner/KdsLoadingSpinner.vue","../src/forms/KdsSubText.vue","../src/forms/Checkbox/BaseCheckbox.vue","../src/forms/Checkbox/KdsCheckbox.vue","../../../node_modules/.pnpm/@knime+utils@1.9.2_consola@3.4.2/node_modules/@knime/utils/src/promise/createUnwrappedPromise.ts","../src/Modal/useKdsDynamicModal.ts","../src/Modal/KdsDynamicModalProvider.vue","../src/buttons/KdsVariableToggleButton.vue","../src/buttons/KdsInfoToggleButton.vue","../src/buttons/KdsProgressButton.vue","../src/buttons/KdsToggleButton.vue","../src/util/useKdsDarkMode.ts","../src/util/useKdsLegacyMode.ts","../src/util/useKdsIsTruncated.ts","../src/forms/KdsLabel.vue","../src/forms/Checkbox/KdsCheckboxGroup.vue","../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/BaseFormFieldWrapper.vue","../src/forms/inputs/BaseInput.vue","../src/forms/inputs/TextInput/KdsTextInput.vue","../src/forms/inputs/NumberInput/KdsNumberInput.vue","../src/forms/inputs/PatternInput/patternRegex.ts","../src/forms/inputs/PatternInput/KdsPatternInput.vue","../src/forms/inputs/SearchInput/KdsSearchInput.vue"],"sourcesContent":["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 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","<script setup lang=\"ts\">\nimport { computed } from \"vue\";\n\nimport { ID_TO_ICON_MAP, type TypeId } from \"./IdToIconNameMapping\";\nimport { kdsTypeIconNames } from \"./constants\";\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 { type Component, computed } from \"vue\";\n\nimport KdsIcon from \"../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\";\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\";\n\nimport BaseButton from \"./BaseButton.vue\";\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","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.vue\";\nimport KdsLinkButton from \"../buttons/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","export const closedByOptions = [\"any\", \"closerequest\", \"none\"] as const;\nexport const widthSizes = [\n \"small\",\n \"medium\",\n \"large\",\n \"xlarge\",\n \"full\",\n] as const;\nexport const heightSizes = [\"auto\", \"full\"] as const;\nexport const modalVariants = [\"padded\", \"plain\"] as const;\nexport const modalLayoutPropsDefault = {\n title: \"\",\n variant: \"padded\",\n overflow: \"auto\",\n icon: undefined,\n} as const;\n\nexport const modalPropsDefault = {\n active: false,\n height: \"auto\",\n width: \"medium\",\n closedby: \"closerequest\",\n ...modalLayoutPropsDefault,\n} as const;\n","<script setup lang=\"ts\">\nimport KdsIcon from \"../Icon/KdsIcon.vue\";\nimport KdsButton from \"../buttons/KdsButton.vue\";\n\nimport { modalLayoutPropsDefault } from \"./constants\";\nimport type { KdsModalLayoutProps } from \"./types\";\n\nconst props = withDefaults(\n defineProps<KdsModalLayoutProps>(),\n modalLayoutPropsDefault,\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 lang=\"postcss\" 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 { modalPropsDefault } from \"./constants\";\nimport type { KdsModalProps } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsModalProps>(), modalPropsDefault);\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 lang=\"postcss\" 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","<script lang=\"ts\" setup>\nimport type { KdsIconSize } from \"../Icon/types\";\n\ntype LoadingSpinnerStyle = \"onPrimary\" | \"onSurface\";\n\nwithDefaults(\n defineProps<{ size?: KdsIconSize; style?: LoadingSpinnerStyle }>(),\n {\n style: \"onSurface\",\n size: \"medium\",\n },\n);\n</script>\n\n<template>\n <svg\n :class=\"['kds-loading-spinner', size]\"\n :data-style=\"style\"\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 lang=\"postcss\" 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","<script setup lang=\"ts\">\nimport KdsIcon from \"../Icon/KdsIcon.vue\";\nimport KdsLoadingSpinner from \"../LoadingSpinner/KdsLoadingSpinner.vue\";\n\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\" :style=\"'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 \"../../Icon/KdsIcon.vue\";\nimport KdsSubText from \"../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","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.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","<script setup lang=\"ts\">\nimport { computed } from \"vue\";\n\nimport KdsIcon from \"../Icon/KdsIcon.vue\";\n\nimport type { KdsVariableToggleButtonProps } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsVariableToggleButtonProps>(), {\n disabled: false,\n inSet: false,\n outSet: false,\n error: false,\n hidden: false,\n});\n\nconst modelValue = defineModel<boolean>({ default: 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 :class=\"{\n 'variable-toggle-button': true,\n disabled: props.disabled,\n error: props.error,\n 'pressed-or-set': modelValue || props.inSet || props.outSet,\n hidden: props.hidden && !modelValue,\n }\"\n :disabled=\"props.disabled\"\n :title=\"title\"\n :aria-label=\"title\"\n :aria-pressed=\"modelValue\"\n type=\"button\"\n @click=\"modelValue = !modelValue\"\n >\n <KdsIcon :name=\"iconName\" size=\"xsmall\" />\n </button>\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-0-75x);\n height: var(--kds-dimension-component-height-0-75x);\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:not(:focus-visible, :hover, .disabled) {\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:not(.disabled) {\n background-color: var(--bg-hover);\n }\n\n &:active:not(.disabled) {\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 &.disabled {\n --icon-color: var(--kds-color-text-and-icon-disabled);\n\n cursor: default;\n\n &.pressed-or-set {\n --border: var(--kds-border-action-disabled);\n }\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport KdsIcon from \"../Icon/KdsIcon.vue\";\n\nimport type { KdsInfoToggleButtonProps } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsInfoToggleButtonProps>(), {\n disabled: false,\n hidden: false,\n});\n\nconst TITLE = \"Click for more information\";\n\nconst modelValue = defineModel<boolean>({ default: false });\n</script>\n\n<template>\n <button\n :class=\"{\n 'info-toggle-button': true,\n selected: modelValue,\n disabled: props.disabled,\n hidden: props.hidden && !modelValue,\n }\"\n :disabled=\"props.disabled\"\n :title=\"TITLE\"\n :aria-label=\"TITLE\"\n :aria-pressed=\"modelValue\"\n type=\"button\"\n @click=\"modelValue = !modelValue\"\n >\n <KdsIcon name=\"circle-question\" size=\"xsmall\" />\n </button>\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-0-75x);\n height: var(--kds-dimension-component-height-0-75x);\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:not(:focus-visible, :hover, .disabled) {\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:not(.disabled) {\n background-color: var(--bg-hover);\n }\n\n &:active:not(.disabled) {\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 &.disabled {\n --icon-color: var(--kds-color-text-and-icon-disabled);\n\n cursor: default;\n }\n\n &.selected.disabled {\n --border: var(--kds-border-action-disabled);\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed } from \"vue\";\n\nimport KdsIcon from \"../Icon/KdsIcon.vue\";\nimport type { KdsIconSize } from \"../Icon/types.ts\";\nimport KdsLoadingSpinner from \"../LoadingSpinner/KdsLoadingSpinner.vue\";\n\nimport BaseButton from \"./BaseButton.vue\";\nimport type {\n KdsProgressButtonProps,\n KdsProgressButtonState,\n} from \"./types.ts\";\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 :style=\"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","<script setup lang=\"ts\">\nimport BaseButton from \"./BaseButton.vue\";\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","import { computed, watch } from \"vue\";\nimport { useDark, useLocalStorage, usePreferredDark } from \"@vueuse/core\";\n\nexport const KDS_DARK_MODE_STORAGE_KEY = \"KNIME_DARK_MODE\";\n\nexport type KdsDarkModeType = \"light\" | \"dark\" | \"system\";\n\n// could also be system, but the previous behaviour forced it to light, so we use that\nconst defaultMode: 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 === \"system\") {\n cssMode = \"light dark\";\n themeValue = \"system\";\n } else {\n cssMode = themeValue = isDarkValue ? \"dark\" : \"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 === \"system\") {\n isDark.value = systemDark;\n } else {\n isDark.value = preference === \"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 === \"dark\";\n });\n\n const isLightMode = computed(() => {\n return userPreference.value === \"light\";\n });\n\n const isSystemMode = computed(() => userPreference.value === \"system\");\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 { ref } from \"vue\";\n\nimport { useKdsIsTruncated } from \"../util\";\n\nimport type { KdsLabelProps } from \"./types\";\n\nconst props = defineProps<KdsLabelProps>();\n\nconst labelEl = ref<HTMLLabelElement | null>(null);\nconst { isTruncated } = useKdsIsTruncated(labelEl);\n</script>\n\n<template>\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</template>\n\n<style scoped>\n.label {\n display: block;\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 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 lang=\"ts\" setup>\nimport { computed, useId } from \"vue\";\n\nimport KdsLabel from \"../KdsLabel.vue\";\nimport KdsSubText from \"../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","<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, ref, useId } from \"vue\";\n\nimport KdsLabel from \"../KdsLabel.vue\";\nimport KdsSubText from \"../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 = ref<HTMLElement | null>(null);\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 { ref } from \"vue\";\n\nimport KdsIcon from \"../../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 = ref<HTMLElement | null>(null);\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, ref, useId } from \"vue\";\nimport { useElementSize } from \"@vueuse/core\";\n\nimport KdsLabel from \"../KdsLabel.vue\";\nimport KdsSubText from \"../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 = ref<HTMLElement | null>(null);\nconst { width } = useElementSize(availableWidthContainer);\nconst { shouldHideIcons, setItemEl } = useValueSwitchIconHiding({\n width,\n options,\n});\n\nconst optionContainer = ref<HTMLElement | null>(null);\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","<script setup lang=\"ts\">\nimport { computed, useId } from \"vue\";\n\nimport KdsLabel from \"./KdsLabel.vue\";\nimport KdsSubText from \"./KdsSubText.vue\";\nimport type { KdsSubTextProps } from \"./types\";\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} & Omit<KdsSubTextProps, \"id\">;\n\nconst props = defineProps<KdsFormFieldProps>();\n\nconst fallbackId = useId();\nconst inputId = computed(() => props.id ?? fallbackId);\nconst labelId = computed(() => `${inputId.value}-label`);\nconst subTextId = computed(() => `${inputId.value}-subtext`);\n</script>\n\n<template>\n <div class=\"kds-form-field\">\n <KdsLabel\n v-if=\"props.label\"\n :id=\"labelId\"\n :for=\"inputId\"\n :label=\"props.label\"\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 } from \"vue\";\n\nimport KdsIcon from \"../../Icon/KdsIcon.vue\";\nimport type { KdsIconName } from \"../../Icon/types.ts\";\nimport KdsButton from \"../../buttons/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 * 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 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 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 clear = () => {\n modelValue.value = \"\";\n};\n</script>\n\n<template>\n <div\n :class=\"{\n container: true,\n error: props.error,\n disabled: props.disabled,\n }\"\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 :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 :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=\"clear\"\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 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 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 }\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","<script setup lang=\"ts\">\nimport BaseFormFieldWrapper from \"../../BaseFormFieldWrapper.vue\";\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</script>\n\n<template>\n <BaseFormFieldWrapper v-bind=\"props\">\n <template #default=\"slotProps\">\n <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, ref, watch } from \"vue\";\n\nimport KdsButton from \"../../../buttons/KdsButton.vue\";\nimport BaseFormFieldWrapper from \"../../BaseFormFieldWrapper.vue\";\nimport BaseInput from \"../BaseInput.vue\";\nimport type { KdsNumberInputProps } from \"../types\";\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 formatForDisplay = (value: number) => {\n return Number.isFinite(value) ? `${value}` : \"\";\n};\n\nconst parseFromInput = (value: string) => {\n const trimmed = value.trim();\n if (trimmed.length === 0) {\n return NaN;\n }\n const parsed = Number.parseFloat(trimmed);\n return Number.isFinite(parsed) ? parsed : NaN;\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 = 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 roundToStep = (value: number) => {\n if (!Number.isFinite(value)) {\n return NaN;\n }\n\n // Avoid floating point artifacts when working with decimal steps.\n const step = props.step;\n const precision = Math.max(0, (step.toString().split(\".\")[1] ?? \"\").length);\n const factor = Number(`1e${precision}`);\n\n const scaledNext = Math.round(value * factor);\n const scaledStep = Math.round(step * factor);\n if (scaledStep === 0) {\n return value;\n }\n\n const roundedScaled = Math.round(scaledNext / scaledStep) * scaledStep;\n return roundedScaled / factor;\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 : 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 = roundToStep(nextRaw);\n const next = clamp(rounded);\n\n modelValue.value = next;\n localValue.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 = parseFromInput(value);\n};\n\nconst handleBlur = (event: FocusEvent) => {\n isFocused.value = false;\n\n // Normalize, round to step, and clamp only when leaving the field.\n const parsed = parseFromInput(localValue.value);\n const normalized = clamp(parsed);\n\n modelValue.value = normalized;\n localValue.value = formatForDisplay(normalized);\n\n // Also force the native input to normalize its internal value.\n const target = event.target as HTMLInputElement | null;\n if (target) {\n target.valueAsNumber = normalized;\n }\n};\n</script>\n\n<template>\n <BaseFormFieldWrapper v-bind=\"props\">\n <template #default=\"slotProps\">\n <BaseInput\n v-bind=\"slotProps\"\n :model-value=\"localValue\"\n type=\"number\"\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 :min=\"props.min\"\n :max=\"props.max\"\n :step=\"props.step\"\n :unit=\"props.unit\"\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, watch } from \"vue\";\n\nimport KdsToggleButton from \"../../../buttons/KdsToggleButton.vue\";\nimport BaseFormFieldWrapper from \"../../BaseFormFieldWrapper.vue\";\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</script>\n\n<template>\n <BaseFormFieldWrapper v-bind=\"props\">\n <template #default=\"slotProps\">\n <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 BaseFormFieldWrapper from \"../../BaseFormFieldWrapper.vue\";\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</script>\n\n<template>\n <BaseFormFieldWrapper v-bind=\"props\">\n <template #default=\"slotProps\">\n <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"],"names":["_unref","_openBlock","_createBlock","_resolveDynamicComponent","_normalizeClass","_createElementBlock","kdsTypeIconNames","_renderSlot","_hoisted_1","_toDisplayString","_mergeProps","KdsLinkButton","KdsButton","_createElementVNode","_hoisted_2","_hoisted_3","_hoisted_4","_createVNode","$slots","_useModel","Icon","_hoisted_5","_hoisted_6","PromiseUtils.createUnwrappedPromise","_createSlots","KdsCheckbox","_Fragment","_renderList","_withCtx","_normalizeProps","_guardReactiveProps","_normalizeStyle","KdsToggleButton"],"mappings":"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","x_google_ignoreList":[18]}
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/KdsInfoToggleButton/KdsInfoToggleButton.vue","../src/buttons/KdsVariableToggleButton/KdsVariableToggleButton.vue","../src/buttons/enums.ts","../src/util/enums.ts","../src/util/useKdsDarkMode.ts","../src/util/useKdsLegacyMode.ts","../src/util/useKdsIsTruncated.ts","../src/forms/KdsLabel.vue","../src/forms/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/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/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/KdsPopover.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","<script setup lang=\"ts\">\nimport KdsIcon from \"../../accessories/Icon/KdsIcon.vue\";\n\nimport type { KdsInfoToggleButtonProps } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsInfoToggleButtonProps>(), {\n disabled: false,\n hidden: false,\n});\n\nconst TITLE = \"Click for more information\";\n\nconst modelValue = defineModel<boolean>({ default: false });\n</script>\n\n<template>\n <button\n :class=\"{\n 'info-toggle-button': true,\n selected: modelValue,\n disabled: props.disabled,\n hidden: props.hidden && !modelValue,\n }\"\n :disabled=\"props.disabled\"\n :title=\"TITLE\"\n :aria-label=\"TITLE\"\n :aria-pressed=\"modelValue\"\n type=\"button\"\n @click=\"modelValue = !modelValue\"\n >\n <KdsIcon name=\"circle-question\" size=\"xsmall\" />\n </button>\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-0-75x);\n height: var(--kds-dimension-component-height-0-75x);\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:not(:focus-visible, :hover, .disabled) {\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:not(.disabled) {\n background-color: var(--bg-hover);\n }\n\n &:active:not(.disabled) {\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 &.disabled {\n --icon-color: var(--kds-color-text-and-icon-disabled);\n\n cursor: default;\n }\n\n &.selected.disabled {\n --border: var(--kds-border-action-disabled);\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed } from \"vue\";\n\nimport KdsIcon from \"../../accessories/Icon/KdsIcon.vue\";\n\nimport type { KdsVariableToggleButtonProps } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsVariableToggleButtonProps>(), {\n disabled: false,\n inSet: false,\n outSet: false,\n error: false,\n hidden: false,\n});\n\nconst modelValue = defineModel<boolean>({ default: 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 :class=\"{\n 'variable-toggle-button': true,\n disabled: props.disabled,\n error: props.error,\n 'pressed-or-set': modelValue || props.inSet || props.outSet,\n hidden: props.hidden && !modelValue,\n }\"\n :disabled=\"props.disabled\"\n :title=\"title\"\n :aria-label=\"title\"\n :aria-pressed=\"modelValue\"\n type=\"button\"\n @click=\"modelValue = !modelValue\"\n >\n <KdsIcon :name=\"iconName\" size=\"xsmall\" />\n </button>\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-0-75x);\n height: var(--kds-dimension-component-height-0-75x);\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:not(:focus-visible, :hover, .disabled) {\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:not(.disabled) {\n background-color: var(--bg-hover);\n }\n\n &:active:not(.disabled) {\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 &.disabled {\n --icon-color: var(--kds-color-text-and-icon-disabled);\n\n cursor: default;\n\n &.pressed-or-set {\n --border: var(--kds-border-action-disabled);\n }\n }\n}\n</style>\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 { useTemplateRef } from \"vue\";\n\nimport { useKdsIsTruncated } from \"../util\";\n\nimport type { KdsLabelProps } from \"./types\";\n\nconst props = defineProps<KdsLabelProps>();\n\nconst labelEl = useTemplateRef(\"labelEl\");\nconst { isTruncated } = useKdsIsTruncated(labelEl);\n</script>\n\n<template>\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</template>\n\n<style scoped>\n.label {\n display: block;\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 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\";\n\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 \"../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 \"../KdsLabel.vue\";\nimport KdsSubText from \"../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 \"../KdsLabel.vue\";\nimport KdsSubText from \"../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 \"../KdsLabel.vue\";\nimport KdsSubText from \"../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, useId } from \"vue\";\n\nimport KdsLabel from \"./KdsLabel.vue\";\nimport KdsSubText from \"./KdsSubText.vue\";\nimport type { KdsSubTextProps } from \"./types\";\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} & 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</script>\n\n<template>\n <div class=\"kds-form-field\">\n <KdsLabel\n v-if=\"props.label\"\n :id=\"labelId\"\n :for=\"inputId\"\n :label=\"props.label\"\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, watch } from \"vue\";\n\nimport KdsButton from \"../../../buttons/KdsButton/KdsButton.vue\";\nimport BaseFormFieldWrapper from \"../../BaseFormFieldWrapper.vue\";\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</script>\n\n<template>\n <BaseFormFieldWrapper v-bind=\"props\">\n <template #default=\"slotProps\">\n <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, watch } from \"vue\";\n\nimport KdsToggleButton from \"../../../buttons/KdsToggleButton/KdsToggleButton.vue\";\nimport BaseFormFieldWrapper from \"../../BaseFormFieldWrapper.vue\";\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</script>\n\n<template>\n <BaseFormFieldWrapper v-bind=\"props\">\n <template #default=\"slotProps\">\n <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 \"../../BaseFormFieldWrapper.vue\";\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 baseInputRef = useTemplateRef(\"baseInput\");\n\ndefineExpose({\n /**\n * Focuses the input element\n */\n focus: () => baseInputRef.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 BaseFormFieldWrapper from \"../../BaseFormFieldWrapper.vue\";\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</script>\n\n<template>\n <BaseFormFieldWrapper v-bind=\"props\">\n <template #default=\"slotProps\">\n <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 \"../../BaseFormFieldWrapper.vue\";\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</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","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","<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-right\",\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\", \"dialog\");\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]\"\n :popover=\"unref(props.activatorEl) ? 'auto' : undefined\"\n :style=\"{ 'position-anchor': anchorName }\"\n role=\"dialog\"\n @toggle=\"open = $event.newState === 'open'\"\n >\n <slot />\n </div>\n</template>\n\n<style scoped>\n.kds-popover {\n padding: 0;\n overflow: visible;\n font: var(--kds-font-base-body-small);\n color: var(--kds-color-text-and-icon-neutral);\n background: 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 /* noinspection CssInvalidFunction,CssInvalidAtRule */\n &.floating.top-left {\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-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.top-right {\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-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.bottom-left {\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-right, --kds-popover-try-top-left,\n --kds-popover-try-top-right, --kds-popover-try-bottom-left;\n }\n\n /* noinspection CssInvalidFunction,CssInvalidAtRule */\n &.floating.bottom-right {\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-left, --kds-popover-try-top-right,\n --kds-popover-try-top-left, --kds-popover-try-bottom-right;\n }\n}\n\n/* noinspection CssInvalidFunction,CssInvalidAtRule */\n@position-try --kds-popover-try-top-left {\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-right {\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-left {\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-right {\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</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","<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","PromiseUtils.createUnwrappedPromise","_createSlots","KdsCheckbox","_normalizeProps","_guardReactiveProps","KdsLinkButton"],"mappings":"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","x_google_ignoreList":[54]}