@knime/kds-components 0.6.4 → 0.6.5

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.
@@ -9,6 +9,7 @@ declare const _default: import('vue').DefineComponent<__VLS_PublicProps, {}, {},
9
9
  "onUpdate:modelValue"?: ((value: string[]) => any) | undefined;
10
10
  }>, {
11
11
  disabled: boolean;
12
+ error: boolean;
12
13
  alignment: import('./types').KdsCheckboxGroupAlignment;
13
14
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
14
15
  export default _default;
@@ -1 +1 @@
1
- {"version":3,"file":"KdsCheckboxGroup.vue.d.ts","sourceRoot":"","sources":["../../../src/forms/Checkbox/KdsCheckboxGroup.vue"],"names":[],"mappings":"AA2HA,OAAO,KAAK,EAEV,qBAAqB,EAEtB,MAAM,SAAS,CAAC;AAEjB,KAAK,WAAW,GAAG,qBAAqB,CAAC;AAsDzC,KAAK,iBAAiB,GAAG;IACzB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB,GAAG,WAAW,CAAC;;;;;;;;;AA8HhB,wBASG"}
1
+ {"version":3,"file":"KdsCheckboxGroup.vue.d.ts","sourceRoot":"","sources":["../../../src/forms/Checkbox/KdsCheckboxGroup.vue"],"names":[],"mappings":"AA4HA,OAAO,KAAK,EAEV,qBAAqB,EAEtB,MAAM,SAAS,CAAC;AAEjB,KAAK,WAAW,GAAG,qBAAqB,CAAC;AAwDzC,KAAK,iBAAiB,GAAG;IACzB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB,GAAG,WAAW,CAAC;;;;;;;;;;AA8HhB,wBASG"}
@@ -50,9 +50,6 @@ export type KdsCheckboxGroupProps = {
50
50
  label?: string;
51
51
  possibleValues: Array<string | KdsCheckboxGroupOption>;
52
52
  alignment?: KdsCheckboxGroupAlignment;
53
- disabled?: boolean;
54
- subText?: string;
55
- preserveSubTextSpace?: boolean;
56
- };
53
+ } & BaseProps;
57
54
  export {};
58
55
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/forms/Checkbox/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,eAAe,CAAC;AAEzD,KAAK,SAAS,GAAG;IACf;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,CAAC;AAEF,KAAK,YAAY,GACb;IACE;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,GACD;IACE,KAAK,CAAC,EAAE,EAAE,GAAG,SAAS,GAAG,KAAK,CAAC;IAC/B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEN,MAAM,MAAM,iBAAiB,GAAG,SAAS,GACvC,YAAY,GAAG;IACb;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEJ,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,YAAY,CAAC;AAExD,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,UAAU,GAAG,YAAY,CAAC;AAElE,MAAM,MAAM,qBAAqB,GAAG;IAClC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,KAAK,CAAC,MAAM,GAAG,sBAAsB,CAAC,CAAC;IACvD,SAAS,CAAC,EAAE,yBAAyB,CAAC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/forms/Checkbox/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,eAAe,CAAC;AAEzD,KAAK,SAAS,GAAG;IACf;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,CAAC;AAEF,KAAK,YAAY,GACb;IACE;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,GACD;IACE,KAAK,CAAC,EAAE,EAAE,GAAG,SAAS,GAAG,KAAK,CAAC;IAC/B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEN,MAAM,MAAM,iBAAiB,GAAG,SAAS,GACvC,YAAY,GAAG;IACb;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEJ,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,YAAY,CAAC;AAExD,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,UAAU,GAAG,YAAY,CAAC;AAElE,MAAM,MAAM,qBAAqB,GAAG;IAClC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,KAAK,CAAC,MAAM,GAAG,sBAAsB,CAAC,CAAC;IACvD,SAAS,CAAC,EAAE,yBAAyB,CAAC;CACvC,GAAG,SAAS,CAAC"}
package/dist/index.css CHANGED
@@ -879,17 +879,17 @@ to {
879
879
  white-space: nowrap;
880
880
  }
881
881
 
882
- .checkbox-group[data-v-4363a8f9] {
882
+ .checkbox-group[data-v-538e7d4c] {
883
883
  padding: 0;
884
884
  margin: 0;
885
885
  border: none;
886
886
  }
887
- .options[data-v-4363a8f9] {
887
+ .options[data-v-538e7d4c] {
888
888
  display: flex;
889
889
  flex-direction: column;
890
890
  gap: var(--kds-spacing-container-0-5x) var(--kds-spacing-container-0-75x);
891
891
  }
892
- .options.horizontal[data-v-4363a8f9] {
892
+ .options.horizontal[data-v-538e7d4c] {
893
893
  flex-flow: row wrap;
894
894
  align-items: flex-start;
895
895
  }
package/dist/index.js CHANGED
@@ -1483,6 +1483,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
1483
1483
  possibleValues: {},
1484
1484
  alignment: { default: "vertical" },
1485
1485
  disabled: { type: Boolean, default: false },
1486
+ error: { type: Boolean, default: false },
1486
1487
  subText: {},
1487
1488
  preserveSubTextSpace: { type: Boolean }
1488
1489
  }, {
@@ -1505,8 +1506,8 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
1505
1506
  const descriptionId = useId();
1506
1507
  const isOptionDisabled = (index) => props.disabled || possibleValues.value[index]?.disabled === true;
1507
1508
  const isHorizontal = computed(() => props.alignment === "horizontal");
1508
- const anyOptionHasError = computed(
1509
- () => possibleValues.value.some((o) => o.error)
1509
+ const hasError = computed(
1510
+ () => props.error || possibleValues.value.some((o) => o.error)
1510
1511
  );
1511
1512
  const isChecked = (id) => modelValue.value.includes(id);
1512
1513
  const handleCheckboxChange = (index, checked) => {
@@ -1556,14 +1557,14 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
1556
1557
  id: unref(descriptionId),
1557
1558
  "sub-text": props.subText,
1558
1559
  "preserve-sub-text-space": props.preserveSubTextSpace,
1559
- error: anyOptionHasError.value
1560
+ error: hasError.value
1560
1561
  }, null, 8, ["id", "sub-text", "preserve-sub-text-space", "error"])
1561
1562
  ], 8, _hoisted_1$4);
1562
1563
  };
1563
1564
  }
1564
1565
  });
1565
1566
 
1566
- const KdsCheckboxGroup = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__scopeId", "data-v-4363a8f9"]]);
1567
+ const KdsCheckboxGroup = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__scopeId", "data-v-538e7d4c"]]);
1567
1568
 
1568
1569
  const _hoisted_1$3 = ["aria-checked", "aria-describedby", "aria-invalid", "disabled"];
1569
1570
  const _hoisted_2 = { class: "control" };
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/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/LoadingSpinner/KdsLoadingSpinner.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"],"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 setup lang=\"ts\">\nimport KdsIcon from \"../Icon/KdsIcon.vue\";\n\nimport type { KdsSubTextProps } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsSubTextProps>(), {\n error: 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 <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 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 { 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 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 anyOptionHasError = computed(() =>\n 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=\"anyOptionHasError\"\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"],"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"],"mappings":"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","x_google_ignoreList":[17]}
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/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/LoadingSpinner/KdsLoadingSpinner.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"],"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 setup lang=\"ts\">\nimport KdsIcon from \"../Icon/KdsIcon.vue\";\n\nimport type { KdsSubTextProps } from \"./types\";\n\nconst props = withDefaults(defineProps<KdsSubTextProps>(), {\n error: 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 <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 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 { 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"],"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"],"mappings":"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","x_google_ignoreList":[17]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@knime/kds-components",
3
- "version": "0.6.4",
3
+ "version": "0.6.5",
4
4
  "description": "Package containing basic Vue components of the KNIME Design System",
5
5
  "repository": {
6
6
  "type": "git",
@@ -36,24 +36,24 @@
36
36
  "dependencies": {
37
37
  "@knime/utils": "^1.9.2",
38
38
  "consola": "^3.4.2",
39
- "@knime/kds-styles": "^0.6.4"
39
+ "@knime/kds-styles": "^0.6.5"
40
40
  },
41
41
  "devDependencies": {
42
- "@storybook/vue3-vite": "^10.2.1",
42
+ "@storybook/vue3-vite": "^10.2.4",
43
43
  "@vitejs/plugin-vue": "^6.0.1",
44
44
  "@vue/test-utils": "^2.4.6",
45
45
  "@vue/tsconfig": "^0.7.0",
46
46
  "@vueuse/core": "^13.8.0",
47
47
  "prettier": "3.6.2",
48
48
  "prettier-plugin-vue": "^1.1.6",
49
- "storybook": "^10.2.1",
49
+ "storybook": "^10.2.4",
50
50
  "ts-morph": "^27.0.2",
51
51
  "vite": "^7.1.11",
52
52
  "vite-plugin-dts": "^4.5.4",
53
53
  "vite-plugin-lib-inject-css": "^2.2.2",
54
54
  "vite-svg-loader": "^5.1.0",
55
55
  "vue": "3.5.22",
56
- "vue-tsc": "^3.0.5"
56
+ "vue-tsc": "^3.2.4"
57
57
  },
58
58
  "engines": {
59
59
  "node": "24.10.0",