diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8dbdbacd75f4192699c110dd9e9c9b0966047d70..8e8fd9b2a43ce17faa32cb544318309b6bbc03a5 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,37 +1,17 @@
 # Changelog
 
-
-
 ## [3.68.4] - 2024-06-23
 
 ### Bug Fixes
 
 - if the query is empty but astring, getSlottedElements must not report an error [#208](https://gitlab.schukai.com/oss/libraries/javascript/monster/issues/208)
 
-
-
 ## [3.68.3] - 2024-06-23
 
 ### Bug Fixes
 
 - working on ci pipeline
 
-
-
-## [3.68.2] - 2024-06-23
-
-### Bug Fixes
-
-- gitlab pipeline
-
-
-
-## [3.68.1] - 2024-06-23
-
-### Bug Fixes
-
-- wip pipeline
-
 ## [3.68.0] - 2024-06-23
 
 ### Add Features
diff --git a/development/issues/open/186.html b/development/issues/open/186.html
index f9b00853be8d97e9c029f350cf2be7f66ed074ae..475880f42086f6732a09f2026370187e206a9f34 100644
--- a/development/issues/open/186.html
+++ b/development/issues/open/186.html
@@ -14,16 +14,14 @@
     <li><a href="/">Back to overview</a></li>
 </ul>
 <main>
-    <monster-field-set>
-dsfasdfsdf
-        <label slot="extended">N1<input type="text" name="name1" id="name1" placeholder="Name1"></label>
-        <label slot="extended">N2<input type="text" name="name2" id="name2" placeholder="Name2"></label>
-        <label slot="extended">N3<input type="text" name="name3" id="name3" placeholder="Name3"></label>
-        <label>N4<input type="text" name="name4" id="name4" placeholder="Name4"></label>
-        <label>N5<input type="text" name="name5" id="name5" placeholder="Name5"></label>
- 
-    </monster-field-set>
+    <monster-field-set data-monster-option-labels-title="my title">
+        <label for="name1" slot="extended">N1</label><input slot="extended" type="text" name="name1" id="name1" placeholder="Name1">
+        <label for="name2" slot="extended">N2</label><input slot="extended" type="text" name="name2" id="name2" placeholder="Name2">
+        <label for="name3" slot="extended">N3</label><input slot="extended" type="text" name="name3" id="name3" placeholder="Name2">
+        <label for="name4">N4</label><input type="text" name="name4" id="name4" placeholder="Name4">
+        <label for="name5">N5</label><input type="text" name="name5" id="name5" placeholder="Name5">
+     </monster-field-set> 
 </main>
 
 </body>
-</html>
+</html>
\ No newline at end of file
diff --git a/development/issues/open/186.mjs b/development/issues/open/186.mjs
index c89cea4f5dc170866e3d99d1c7b4997e11a36f12..c9115c965af8866a22b2ac0cb53cc07adf662d21 100644
--- a/development/issues/open/186.mjs
+++ b/development/issues/open/186.mjs
@@ -7,6 +7,7 @@
 
 import "../../../source/components/style/property.pcss";
 import "../../../source/components/style/color.pcss";
+import "../../../source/components/style/form.pcss";
 import "../../../source/components/style/normalize.pcss";
 import "../../../source/components/style/typography.pcss";
 import "../../../source/components/form/field-set.mjs";
diff --git a/nix/config/release.nix b/nix/config/release.nix
index 1ccac2381f3aba2453fd3e71ae59c86b8d1c7160..720a557995aafc469f36130edaa1b4f99be8dd04 100644
--- a/nix/config/release.nix
+++ b/nix/config/release.nix
@@ -3,4 +3,4 @@
   commit = "f89e03438abbb5edb811c169027bf765e7b17a9d";
   name = "Monster";
   mnemonic = "monster";
-}
\ No newline at end of file
+}
diff --git a/nix/scripts/deploy.nix b/nix/scripts/deploy.nix
index 224ae6eef6a60d401775a7a73b665eca3aba311c..0bd6e8d7dde9fb4d77fa8d798df0a5372c6f1548 100644
--- a/nix/scripts/deploy.nix
+++ b/nix/scripts/deploy.nix
@@ -40,22 +40,22 @@ in
       json=$(jq -n \
                   --arg name "$(echo $publishingResult | jq -r .name)" \
                   --arg version "$(echo $publishingResult | jq -r .version)" \
-                  '{text: ("Oh no, we failed to publish the " + $version + " version of " + $name + " :x:")}') 
-        
+                  '{text: ("Oh no, we failed to publish the " + $version + " version of " + $name + " :x:")}')
+
       ${pkgs'.curl}/bin/curl --header "Content-Type: application/json" --request POST \
                    --data "$json" $MATTERMOST_WEBHOOK
 
 
       exit 1
     fi
-    
+
     json=$(jq -n \
               --arg name "$(echo $publishingResult | jq -r .name)" \
               --arg version "$(echo $publishingResult | jq -r .version)" \
               '{icon_emoji: ":monster:", text: ("We have just launched the " + $version + " version of " + $name + "! Give it a try. :rocket:")}')
-    
+
     ${pkgs'.curl}/bin/curl --header "Content-Type: application/json" --request POST \
                --data "$json" $MATTERMOST_WEBHOOK
-    
+
     echo_ok "Build and publish successful."
   ''
diff --git a/source/components/datatable/filter.mjs b/source/components/datatable/filter.mjs
index efca949929effae03c6dcd33c68926bf803800f9..b125a85ff9d2d7a6df26341e43070652bb8334e5 100644
--- a/source/components/datatable/filter.mjs
+++ b/source/components/datatable/filter.mjs
@@ -234,11 +234,10 @@ class Filter extends CustomElement {
 			formatter: {
 				marker: {
 					open: null,
-					close: null
-				}
+					close: null,
+				},
 			},
 			labels: {
-
 				search: "Search",
 				reset: "Reset",
 				save: "Save",
@@ -1013,7 +1012,10 @@ function collectSearchQueries() {
 				});
 
 				if (self.getOption("formatter.marker.open")) {
-					formatter.setMarker(self.getOption("formatter.marker.open"),self.getOption("formatter.marker.close"));
+					formatter.setMarker(
+						self.getOption("formatter.marker.open"),
+						self.getOption("formatter.marker.close"),
+					);
 				}
 
 				let queryPart = formatter.format(template);
diff --git a/source/components/form/field-set.mjs b/source/components/form/field-set.mjs
index 54aff9373d3ca85544433c2a08e63ce2c512931c..c9f2168c789fa20dff8c178862854534e4b7e8b6 100644
--- a/source/components/form/field-set.mjs
+++ b/source/components/form/field-set.mjs
@@ -12,25 +12,24 @@
  * SPDX-License-Identifier: AGPL-3.0
  */
 
-import {instanceSymbol} from "../../constants.mjs";
-import {addAttributeToken} from "../../dom/attributes.mjs";
+import { instanceSymbol } from "../../constants.mjs";
+import { addAttributeToken } from "../../dom/attributes.mjs";
 import {
-    ATTRIBUTE_ERRORMESSAGE,
-    ATTRIBUTE_ROLE,
+	ATTRIBUTE_ERRORMESSAGE,
+	ATTRIBUTE_ROLE,
 } from "../../dom/constants.mjs";
-import {CustomControl} from "../../dom/customcontrol.mjs";
+import { CustomControl } from "../../dom/customcontrol.mjs";
 import {
-    assembleMethodSymbol,
-    registerCustomElement,
+	assembleMethodSymbol,
+	getSlottedElements,
+	registerCustomElement,
 } from "../../dom/customelement.mjs";
-import {findTargetElementFromEvent} from "../../dom/events.mjs";
-import {isFunction} from "../../types/is.mjs";
-import {FieldSetStyleSheet} from "./stylesheet/field-set.mjs";
-import {fireCustomEvent} from "../../dom/events.mjs";
+import { isFunction } from "../../types/is.mjs";
+import { FieldSetStyleSheet } from "./stylesheet/field-set.mjs";
 import "../layout/collapse.mjs";
-import {ToggleSwitch} from "./toggle-switch.mjs";
+import "./toggle-switch.mjs";
 
-export {FieldSet};
+export { FieldSet };
 
 /**
  * @private
@@ -44,6 +43,18 @@ const fieldSetElementSymbol = Symbol("fieldSetElement");
  */
 const collapseElementSymbol = Symbol("collapseElement");
 
+/**
+ * @private
+ * @type {symbol}
+ */
+const extendedSwitchSymbol = Symbol("extendedSwitch");
+
+/**
+ * @private
+ * @type {symbol}
+ */
+const headerElementSymbol = Symbol("headerElement");
+
 /**
  * @private
  * @type {symbol}
@@ -90,174 +101,179 @@ const extendedSwitchElementSymbol = Symbol("extendedSwitchElement");
  * @summary A simple FieldSet
  */
 class FieldSet extends CustomControl {
-    /**
-     * This method is called by the `instanceof` operator.
-     * @returns {symbol}
-     */
-    static get [instanceSymbol]() {
-        return Symbol.for("@schukai/monster/components/form/fieldset@@instance");
-    }
-
-    /**
-     *
-     * @return {Components.Form.FieldSet
-     */
-    [assembleMethodSymbol]() {
-        super[assembleMethodSymbol]();
-        initControlReferences.call(this);
-        initEventHandler.call(this);
-        updateExtendedFields.call(this);
-        return this;
-    }
-
-    /**
-     * To set the options via the html tag the attribute `data-monster-options` must be used.
-     * @see {@link https://monsterjs.org/en/doc/#configurate-a-monster-control}
-     *
-     * The individual configuration values can be found in the table.
-     *
-     * @property {Object} templates Template definitions
-     * @property {string} templates.main Main template
-     * @property {Object} labels Label definitions
-     * @property {Object} actions Callbacks
-     * @property {string} actions.click="throw Error" Callback when clicked
-     * @property {Object} features Features
-     * @property {Object} classes CSS classes
-     * @property {boolean} disabled=false Disabled state
-     */
-    get defaults() {
-        return Object.assign({}, super.defaults, {
-            templates: {
-                main: getTemplate(),
-            },
-            labels: {},
-            classes: {},
-            disabled: false,
-            features: {},
-            actions: {
-                click: () => {
-                    throw new Error("the click action is not defined");
-                },
-            },
-            value: null,
-        });
-    }
-
-    /**
-     *
-     * @return {string}
-     */
-    static getTag() {
-        return "monster-field-set";
-    }
-
-    /**
-     *
-     * @return {CSSStyleSheet[]}
-     */
-    static getCSSStyleSheet() {
-        return [FieldSetStyleSheet];
-    }
-
-    /**
-     * The FieldSet.click() method simulates a click on the internal element.
-     *
-     * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click}
-     */
-    click() {
-        if (this.getOption("disabled") === true) {
-            return;
-        }
-
-        if (
-            this[fieldSetElementSymbol] &&
-            isFunction(this[fieldSetElementSymbol].click)
-        ) {
-            this[fieldSetElementSymbol].click();
-        }
-    }
-
-    /**
-     * The Button.focus() method sets focus on the internal element.
-     *
-     * @param {Object} options
-     * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus}
-     */
-    focus(options) {
-        if (this.getOption("disabled") === true) {
-            return;
-        }
-
-        if (
-            this[fieldSetElementSymbol] &&
-            isFunction(this[fieldSetElementSymbol].focus)
-        ) {
-            this[fieldSetElementSymbol].focus(options);
-        }
-    }
-
-    /**
-     * The Button.blur() method removes focus from the internal element.
-     */
-    blur() {
-        if (
-            this[fieldSetElementSymbol] &&
-            isFunction(this[fieldSetElementSymbol].blur)
-        ) {
-            this[fieldSetElementSymbol].blur();
-        }
-    }
-
-    /**
-     * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/attachInternals}
-     * @return {boolean}
-     */
-    static get formAssociated() {
-        return true;
-    }
-
-    /**
-     * The current value of the form control.
-     *
-     * ```js
-     * e = document.querySelector('monster-field-set');
-     * console.log(e.value)
-     * ```
-     *
-     * @property {string}
-     */
-    get value() {
-        return this.getOption("value");
-    }
-
-    /**
-     * Set value of the form control.
-     *
-     * ```
-     * e = document.querySelector('monster-field-set');
-     * e.value=1
-     * ```
-     *
-     * @property {string} value
-     * @throws {Error} unsupported type
-     */
-    set value(value) {
-        this.setOption("value", value);
-        try {
-            this?.setFormValue(this.value);
-        } catch (e) {
-            addAttributeToken(this, ATTRIBUTE_ERRORMESSAGE, e.message);
-        }
-    }
+	/**
+	 * This method is called by the `instanceof` operator.
+	 * @returns {symbol}
+	 */
+	static get [instanceSymbol]() {
+		return Symbol.for("@schukai/monster/components/form/fieldset@@instance");
+	}
+
+	/**
+	 * @return {Components.Form.FieldSet
+	 */
+	[assembleMethodSymbol]() {
+		super[assembleMethodSymbol]();
+		initControlReferences.call(this);
+		initEventHandler.call(this);
+		updateExtendedFields.call(this);
+		return this;
+	}
+
+	/**
+	 * To set the options via the html tag the attribute `data-monster-options` must be used.
+	 * @see {@link https://monsterjs.org/en/doc/#configurate-a-monster-control}
+	 *
+	 * The individual configuration values can be found in the table.
+	 *
+	 * @property {Object} templates Template definitions
+	 * @property {string} templates.main Main template
+	 * @property {Object} labels Label definitions
+	 * @property {Object} actions Callbacks
+	 * @property {string} actions.click="throw Error" Callback when clicked
+	 * @property {Object} features Features
+	 * @property {Object} classes CSS classes
+	 * @property {boolean} disabled=false Disabled state
+	 */
+	get defaults() {
+		return Object.assign({}, super.defaults, {
+			templates: {
+				main: getTemplate(),
+			},
+			labels: {
+				"toggle-switch-on": "✔",
+				"toggle-switch-off": "✖",
+				"toggle-switch-label": "Expand",
+				title: "",
+			},
+			classes: {},
+			disabled: false,
+			features: {},
+			actions: {
+				click: () => {
+					throw new Error("the click action is not defined");
+				},
+			},
+			value: null,
+		});
+	}
+
+	/**
+	 *
+	 * @return {string}
+	 */
+	static getTag() {
+		return "monster-field-set";
+	}
+
+	/**
+	 *
+	 * @return {CSSStyleSheet[]}
+	 */
+	static getCSSStyleSheet() {
+		return [FieldSetStyleSheet];
+	}
+
+	/**
+	 * The FieldSet.click() method simulates a click on the internal element.
+	 *
+	 * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click}
+	 */
+	click() {
+		if (this.getOption("disabled") === true) {
+			return;
+		}
+
+		if (
+			this[fieldSetElementSymbol] &&
+			isFunction(this[fieldSetElementSymbol].click)
+		) {
+			this[fieldSetElementSymbol].click();
+		}
+	}
+
+	/**
+	 * The Button.focus() method sets focus on the internal element.
+	 *
+	 * @param {Object} options
+	 * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus}
+	 */
+	focus(options) {
+		if (this.getOption("disabled") === true) {
+			return;
+		}
+
+		if (
+			this[fieldSetElementSymbol] &&
+			isFunction(this[fieldSetElementSymbol].focus)
+		) {
+			this[fieldSetElementSymbol].focus(options);
+		}
+	}
+
+	/**
+	 * The Button.blur() method removes focus from the internal element.
+	 */
+	blur() {
+		if (
+			this[fieldSetElementSymbol] &&
+			isFunction(this[fieldSetElementSymbol].blur)
+		) {
+			this[fieldSetElementSymbol].blur();
+		}
+	}
+
+	/**
+	 * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/attachInternals}
+	 * @return {boolean}
+	 */
+	static get formAssociated() {
+		return true;
+	}
+
+	/**
+	 * The current value of the form control.
+	 *
+	 * ```js
+	 * e = document.querySelector('monster-field-set');
+	 * console.log(e.value)
+	 * ```
+	 *
+	 * @property {string}
+	 */
+	get value() {
+		return this.getOption("value");
+	}
+
+	/**
+	 * Set value of the form control.
+	 *
+	 * ```
+	 * e = document.querySelector('monster-field-set');
+	 * e.value=1
+	 * ```
+	 *
+	 * @property {string} value
+	 * @throws {Error} unsupported type
+	 */
+	set value(value) {
+		this.setOption("value", value);
+		try {
+			this?.setFormValue(this.value);
+		} catch (e) {
+			addAttributeToken(this, ATTRIBUTE_ERRORMESSAGE, e.message);
+		}
+	}
 }
 
 function updateExtendedFields() {
-    //  check if slot has extended fields
-    getSlottedElements.call(this, "", "extended").forEach((node) => {
-        if (node.hasAttribute(ATTRIBUTE_EXTENDED)) {
-            this.hasExtended = true;
-        }
-    })
+	const nodes = getSlottedElements.call(this, "", "extended");
+	console.log(nodes.size);
+	if (nodes.size > 0) {
+		this[extendedSwitchSymbol].classList.remove("hidden");
+	} else {
+		this[extendedSwitchSymbol].classList.add("hidden");
+	}
 }
 
 /**
@@ -266,78 +282,53 @@ function updateExtendedFields() {
  * @fires Monster.Components.Form.event:monster-field-set-clicked
  */
 function initEventHandler() {
-    // const self = this;
-    // const element = this[fieldSetElementSymbol];
-    //
-    // const type = "click";
-
-    // element.addEventListener(type, function (event) {
-    // 	const callback = self.getOption("actions.click");
-    //
-    // 	fireCustomEvent(self, "monster-field-set-clicked", {
-    // 		element: self,
-    // 	});
-    //
-    // 	if (!isFunction(callback)) {
-    // 		return;
-    // 	}
-    //
-    // 	const element = findTargetElementFromEvent(
-    // 		event,
-    // 		ATTRIBUTE_ROLE,
-    // 		"control",
-    // 	);
-    //
-    // 	if (!(element instanceof Node && self.hasNode(element))) {
-    // 		return;
-    // 	}
-    //
-    // 	callback.call(self, event);
-    // });
-
-
-    this[toggleSwitchElementSymbol].setOption("actions.on",  () => {
-        console.log( this[collapseElementSymbol],"!!!")
-        this[collapseElementSymbol].open();
-    });
-
-    this[toggleSwitchElementSymbol].setOption("actions.off",  () => {
-        this[collapseElementSymbol].close();
-    });
-    
-    // this[extendedSwitchElementSymbol].addEventListener(type, function (event) {
-    //     const element = findTargetElementFromEvent(
-    //         event,
-    //         ATTRIBUTE_ROLE,
-    //         "extended-switch",
-    //     );
-    //
-    //
-    //
-    // })
-
-    return this;
+	this[toggleSwitchElementSymbol].setOption(
+		"labels.toggle-switch-on",
+		this.getOption("labels.toggle-switch-on"),
+	);
+	this[toggleSwitchElementSymbol].setOption(
+		"labels.toggle-switch-off",
+		this.getOption("labels.toggle-switch-off"),
+	);
+
+	this[toggleSwitchElementSymbol].setOption("actions.on", () => {
+		this[collapseElementSymbol].open();
+	});
+
+	this[toggleSwitchElementSymbol].setOption("actions.off", () => {
+		this[collapseElementSymbol].close();
+	});
+
+	return this;
 }
 
 /**
  * @private
  */
 function initControlReferences() {
-    this[fieldSetElementSymbol] = this.shadowRoot.querySelector(
-        `[${ATTRIBUTE_ROLE}="control"]`,
-    );
+	this[fieldSetElementSymbol] = this.shadowRoot.querySelector(
+		`[${ATTRIBUTE_ROLE}="control"]`,
+	);
+
+	this[extendedSwitchElementSymbol] = this.shadowRoot.querySelector(
+		`[${ATTRIBUTE_ROLE}="extended-switch"]`,
+	);
+
+	this[collapseElementSymbol] = this.shadowRoot.querySelector(
+		`[${ATTRIBUTE_ROLE}="collapse"]`,
+	);
 
-    this[extendedSwitchElementSymbol] = this.shadowRoot.querySelector(
-        `[${ATTRIBUTE_ROLE}="extended-switch"]`,
-    );
+	this[headerElementSymbol] = this.shadowRoot.querySelector(
+		`[${ATTRIBUTE_ROLE}="header"]`,
+	);
 
-    this[collapseElementSymbol] = this.shadowRoot.querySelector(
-        `[${ATTRIBUTE_ROLE}="collapse"]`,
-    );
+	this[extendedSwitchSymbol] = this.shadowRoot.querySelector(
+		`[${ATTRIBUTE_ROLE}="extended-switch"]`,
+	);
 
-    this[toggleSwitchElementSymbol] = this.shadowRoot.querySelector(
-        `monster-toggle-switch`,
-    );
+	this[toggleSwitchElementSymbol] = this.shadowRoot.querySelector(
+		`monster-toggle-switch`,
+	);
 }
 
 /**
@@ -345,14 +336,20 @@ function initControlReferences() {
  * @return {string}
  */
 function getTemplate() {
-    // language=HTML
-    return `
+	// language=HTML
+	return `
         <div data-monster-role="control" part="control">
             <div data-monster-role="header">
-                <monster-toggle-switch class="hidden"></monster-toggle-switch>
+                <div data-monster-replace="path:labels.title" data-monster-role="title"></div>
+                <div data-monster-role="extended-switch">
+                    <label data-monster-replace="path:labels.toggle-switch-label"></label>
+                    <monster-toggle-switch></monster-toggle-switch>
+                </div>
             </div>
             <div>
-                <slot></slot>
+                <div class="collapse-alignment">
+                    <slot></slot>
+                </div>
                 <monster-collapse data-monster-role="collapse">
                     <slot name="extended"></slot>
                 </monster-collapse>
diff --git a/source/components/form/style/field-set.pcss b/source/components/form/style/field-set.pcss
index 3684f709bb205ca740c07f93e8c4afb43d22a0a5..5d5a56bc48708a065f82a811636d5c056ca44b28 100644
--- a/source/components/form/style/field-set.pcss
+++ b/source/components/form/style/field-set.pcss
@@ -1,3 +1,5 @@
+@import "../../style/color.pcss";
+@import "../../style/theme.pcss";
 @import "../../style/display.pcss";
 @import "../../style/border.pcss";
 @import "../../style/control.pcss";
@@ -9,12 +11,34 @@
 @import "../../style/floating-ui.pcss";
 
 [data-monster-role=control] {
-      
+
+   & .collapse-alignment {
+      padding: 0 1rem;
+   }
+
+
 } 
 
 
 [data-monster-role=header] {
    display: flex;
    align-items: center;
-   justify-content: flex-end;    
+   justify-content: space-between; 
+   border-bottom: var(--monster-border-width) var(--monster-border-style) var(--monster-color-primary-1);
+   margin-bottom: 1rem;
+   padding-bottom: 0.2rem;
+   
+   & label {
+      padding-right: 0.3rem;
+   }
+   
+   & [data-monster-role=extended-switch] {
+      display: flex;
+      align-items: center;
+      justify-content: flex-end;
+   }
+   
+   & [data-monster-role=title] {
+      font-weight: bold;
+   }
 }
diff --git a/source/components/form/stylesheet/toggle-switch.mjs b/source/components/form/stylesheet/toggle-switch.mjs
index a47a82dc395bcac45d814d48f55f4e840056b477..322fcc419969782d9e58fc35fb1c6c5376c3e54e 100644
--- a/source/components/form/stylesheet/toggle-switch.mjs
+++ b/source/components/form/stylesheet/toggle-switch.mjs
@@ -10,10 +10,10 @@
  * For more information about purchasing a commercial license, please contact schukai GmbH.
  */
 
-import {addAttributeToken} from "../../../dom/attributes.mjs";
-import {ATTRIBUTE_ERRORMESSAGE} from "../../../dom/constants.mjs";
+import { addAttributeToken } from "../../../dom/attributes.mjs";
+import { ATTRIBUTE_ERRORMESSAGE } from "../../../dom/constants.mjs";
 
-export {ToggleSwitchStyleSheet}
+export { ToggleSwitchStyleSheet };
 
 /**
  * @private
@@ -22,10 +22,17 @@ export {ToggleSwitchStyleSheet}
 const ToggleSwitchStyleSheet = new CSSStyleSheet();
 
 try {
-  ToggleSwitchStyleSheet.insertRule(`
+	ToggleSwitchStyleSheet.insertRule(
+		`
 @layer toggleswitch { 
 :after,:before,:root{--monster-color-gray-1:#f6f6f6;--monster-color-gray-2:#e2e2e2;--monster-color-gray-3:#8b8b8b;--monster-color-gray-4:#6f6f6f;--monster-color-gray-5:#3e3e3e;--monster-color-gray-6:#222;--monster-color-rose-1:#fff7f9;--monster-color-rose-2:#ffdce5;--monster-color-rose-3:#ff3b8d;--monster-color-rose-4:#db0072;--monster-color-rose-5:#800040;--monster-color-rose-6:#4c0023;--monster-color-raspberry-1:#fff8f8;--monster-color-raspberry-2:#ffdddf;--monster-color-raspberry-3:#ff426c;--monster-color-raspberry-4:#de0051;--monster-color-raspberry-5:#82002c;--monster-color-raspberry-6:#510018;--monster-color-red-1:#fff8f6;--monster-color-red-2:#ffddd8;--monster-color-red-3:#ff4647;--monster-color-red-4:#e0002b;--monster-color-red-5:#830014;--monster-color-red-6:#530003;--monster-color-orange-1:#fff8f5;--monster-color-orange-2:#ffded1;--monster-color-orange-3:#fd4d00;--monster-color-orange-4:#cd3c00;--monster-color-orange-5:#752100;--monster-color-orange-6:#401600;--monster-color-cinnamon-1:#fff8f3;--monster-color-cinnamon-2:#ffdfc6;--monster-color-cinnamon-3:#d57300;--monster-color-cinnamon-4:#ac5c00;--monster-color-cinnamon-5:#633300;--monster-color-cinnamon-6:#371d00;--monster-color-amber-1:#fff8ef;--monster-color-amber-2:#ffe0b2;--monster-color-amber-3:#b98300;--monster-color-amber-4:#926700;--monster-color-amber-5:#523800;--monster-color-amber-6:#302100;--monster-color-yellow-1:#fff9e5;--monster-color-yellow-2:#ffe53e;--monster-color-yellow-3:#9c8b00;--monster-color-yellow-4:#7d6f00;--monster-color-yellow-5:#463d00;--monster-color-yellow-6:#292300;--monster-color-lime-1:#f7ffac;--monster-color-lime-2:#d5f200;--monster-color-lime-3:#819300;--monster-color-lime-4:#677600;--monster-color-lime-5:#394100;--monster-color-lime-6:#222600;--monster-color-chartreuse-1:#e5ffc3;--monster-color-chartreuse-2:#98fb00;--monster-color-chartreuse-3:#5c9b00;--monster-color-chartreuse-4:#497c00;--monster-color-chartreuse-5:#264500;--monster-color-chartreuse-6:#182600;--monster-color-green-1:#e0ffd9;--monster-color-green-2:#72ff6c;--monster-color-green-3:#00a21f;--monster-color-green-4:#008217;--monster-color-green-5:#004908;--monster-color-green-6:#062800;--monster-color-emerald-1:#dcffe6;--monster-color-emerald-2:#5dffa2;--monster-color-emerald-3:#00a05a;--monster-color-emerald-4:#008147;--monster-color-emerald-5:#004825;--monster-color-emerald-6:#002812;--monster-color-aquamarine-1:#daffef;--monster-color-aquamarine-2:#42ffc6;--monster-color-aquamarine-3:#009f78;--monster-color-aquamarine-4:#007f5f;--monster-color-aquamarine-5:#004734;--monster-color-aquamarine-6:#00281b;--monster-color-teal-1:#d7fff7;--monster-color-teal-2:#00ffe4;--monster-color-teal-3:#009e8c;--monster-color-teal-4:#007c6e;--monster-color-teal-5:#00443c;--monster-color-teal-6:#002722;--monster-color-cyan-1:#c4fffe;--monster-color-cyan-2:#00fafb;--monster-color-cyan-3:#00999a;--monster-color-cyan-4:#007a7b;--monster-color-cyan-5:#004344;--monster-color-cyan-6:#002525;--monster-color-powder-1:#dafaff;--monster-color-powder-2:#8df0ff;--monster-color-powder-3:#0098a9;--monster-color-powder-4:#007987;--monster-color-powder-5:#004048;--monster-color-powder-6:#002227;--monster-color-sky-1:#e3f7ff;--monster-color-sky-2:#aee9ff;--monster-color-sky-3:#0094b4;--monster-color-sky-4:#007590;--monster-color-sky-5:#00404f;--monster-color-sky-6:#001f28;--monster-color-cerulean-1:#e8f6ff;--monster-color-cerulean-2:#b9e3ff;--monster-color-cerulean-3:#0092c5;--monster-color-cerulean-4:#00749d;--monster-color-cerulean-5:#003c54;--monster-color-cerulean-6:#001d2a;--monster-color-azure-1:#e8f2ff;--monster-color-azure-2:#c6e0ff;--monster-color-azure-3:#008fdb;--monster-color-azure-4:#0071af;--monster-color-azure-5:#003b5e;--monster-color-azure-6:#001c30;--monster-color-blue-1:#f0f4ff;--monster-color-blue-2:#d4e0ff;--monster-color-blue-3:#0089fc;--monster-color-blue-4:#006dca;--monster-color-blue-5:#00386d;--monster-color-blue-6:#001a39;--monster-color-indigo-1:#f3f3ff;--monster-color-indigo-2:#deddff;--monster-color-indigo-3:#657eff;--monster-color-indigo-4:#0061fc;--monster-color-indigo-5:#00328a;--monster-color-indigo-6:#001649;--monster-color-violet-1:#f7f1ff;--monster-color-violet-2:#e8daff;--monster-color-violet-3:#9b70ff;--monster-color-violet-4:#794aff;--monster-color-violet-5:#2d0fbf;--monster-color-violet-6:#0b0074;--monster-color-purple-1:#fdf4ff;--monster-color-purple-2:#f7d9ff;--monster-color-purple-3:#d150ff;--monster-color-purple-4:#b01fe3;--monster-color-purple-5:#660087;--monster-color-purple-6:#3a004f;--monster-color-magenta-1:#fff3fc;--monster-color-magenta-2:#ffd7f6;--monster-color-magenta-3:#f911e0;--monster-color-magenta-4:#ca00b6;--monster-color-magenta-5:#740068;--monster-color-magenta-6:#44003c;--monster-color-pink-1:#fff7fb;--monster-color-pink-2:#ffdcec;--monster-color-pink-3:#ff2fb2;--monster-color-pink-4:#d2008f;--monster-color-pink-5:#790051;--monster-color-pink-6:#4b0030;--monster-gradient-tangerine-1:#e5b875;--monster-gradient-tangerine-2:#d9a362;--monster-gradient-tangerine-3:#c08a4e;--monster-gradient-tangerine-4:#a7713b;--monster-gradient-tangerine-5:#8f5a28;--monster-gradient-tangerine-6:#360505}.monster-theme-primary-1{background-color:var(--monster-bg-color-primary-1);color:var(--monster-color-primary-1)}.monster-theme-primary-disabled-1{background-color:var(--monster-bg-color-primary-disabled-1);color:var(--monster-color-primary-disabled-1)}.monster-theme-secondary-1{background-color:var(--monster-bg-color-secondary-1);color:var(--monster-color-secondary-1)}.monster-theme-tertiary-1{background-color:var(--monster-bg-color-tertiary-1);color:var(--monster-color-tertiary-1)}.monster-theme-destructive-1{background-color:var(--monster-bg-color-destructive-1);color:var(--monster-color-destructive-1)}.monster-theme-success-1{background-color:var(--monster-bg-color-success-1);color:var(--monster-color-success-1)}.monster-theme-warning-1{background-color:var(--monster-bg-color-warning-1);color:var(--monster-color-warning-1)}.monster-theme-error-1{background-color:var(--monster-bg-color-error-1);color:var(--monster-color-error-1)}.monster-theme-selection-1{background-color:var(--monster-bg-color-selection-1);color:var(--monster-color-selection-1)}.monster-border-color-1{border-color:var(--monster-color-border-1)}.monster-color-neutral-1{color:var(--monster-color-primary-1)}.monster-bg-color-primary-1{background-color:var(--monster-bg-color-primary-1)}.monster-bg-color-secondary-1{background-color:var(--monster-bg-color-secondary-1)}.monster-bg-color-tertiary-1{background-color:var(--monster-bg-color-tertiary-1)}.monster-color-primary-1{background-color:var(--monster-bg-color-primary-1);color:var(--monster-color-primary-1)}.monster-color-secondary-1{background-color:var(--monster-bg-color-secondary-1);color:var(--monster-color-secondary-1)}.monster-color-tertiary-1{background-color:var(--monster-bg-color-tertiary-1);color:var(--monster-color-tertiary-1)}.monster-color-destructive-1{background-color:var(--monster-bg-color-destructive-1);color:var(--monster-color-destructive-1)}.monster-color-success-1{background-color:var(--monster-bg-color-success-1);color:var(--monster-color-success-1)}.monster-color-warning-1{background-color:var(--monster-bg-color-warning-1);color:var(--monster-color-warning-1)}.monster-color-error-1{background-color:var(--monster-bg-color-error-1);color:var(--monster-color-error-1)}.monster-color-selection-1{background-color:var(--monster-bg-color-selection-1);color:var(--monster-color-selection-1)}.monster-theme-primary-2{background-color:var(--monster-bg-color-primary-2);color:var(--monster-color-primary-2)}.monster-theme-primary-disabled-2{background-color:var(--monster-bg-color-primary-disabled-2);color:var(--monster-color-primary-disabled-2)}.monster-theme-secondary-2{background-color:var(--monster-bg-color-secondary-2);color:var(--monster-color-secondary-2)}.monster-theme-tertiary-2{background-color:var(--monster-bg-color-tertiary-2);color:var(--monster-color-tertiary-2)}.monster-theme-destructive-2{background-color:var(--monster-bg-color-destructive-2);color:var(--monster-color-destructive-2)}.monster-theme-success-2{background-color:var(--monster-bg-color-success-2);color:var(--monster-color-success-2)}.monster-theme-warning-2{background-color:var(--monster-bg-color-warning-2);color:var(--monster-color-warning-2)}.monster-theme-error-2{background-color:var(--monster-bg-color-error-2);color:var(--monster-color-error-2)}.monster-theme-selection-2{background-color:var(--monster-bg-color-selection-2);color:var(--monster-color-selection-2)}.monster-border-color-2{border-color:var(--monster-color-border-2)}.monster-color-neutral-2{color:var(--monster-color-primary-2)}.monster-bg-color-primary-2{background-color:var(--monster-bg-color-primary-2)}.monster-bg-color-secondary-2{background-color:var(--monster-bg-color-secondary-2)}.monster-bg-color-tertiary-2{background-color:var(--monster-bg-color-tertiary-2)}.monster-color-primary-2{background-color:var(--monster-bg-color-primary-2);color:var(--monster-color-primary-2)}.monster-color-secondary-2{background-color:var(--monster-bg-color-secondary-2);color:var(--monster-color-secondary-2)}.monster-color-tertiary-2{background-color:var(--monster-bg-color-tertiary-2);color:var(--monster-color-tertiary-2)}.monster-color-destructive-2{background-color:var(--monster-bg-color-destructive-2);color:var(--monster-color-destructive-2)}.monster-color-success-2{background-color:var(--monster-bg-color-success-2);color:var(--monster-color-success-2)}.monster-color-warning-2{background-color:var(--monster-bg-color-warning-2);color:var(--monster-color-warning-2)}.monster-color-error-2{background-color:var(--monster-bg-color-error-2);color:var(--monster-color-error-2)}.monster-color-selection-2{background-color:var(--monster-bg-color-selection-2);color:var(--monster-color-selection-2)}.monster-theme-primary-3{background-color:var(--monster-bg-color-primary-3);color:var(--monster-color-primary-3)}.monster-theme-primary-disabled-3{background-color:var(--monster-bg-color-primary-disabled-3);color:var(--monster-color-primary-disabled-3)}.monster-theme-secondary-3{background-color:var(--monster-bg-color-secondary-3);color:var(--monster-color-secondary-3)}.monster-theme-tertiary-3{background-color:var(--monster-bg-color-tertiary-3);color:var(--monster-color-tertiary-3)}.monster-theme-destructive-3{background-color:var(--monster-bg-color-destructive-3);color:var(--monster-color-destructive-3)}.monster-theme-success-3{background-color:var(--monster-bg-color-success-3);color:var(--monster-color-success-3)}.monster-theme-warning-3{background-color:var(--monster-bg-color-warning-3);color:var(--monster-color-warning-3)}.monster-theme-error-3{background-color:var(--monster-bg-color-error-3);color:var(--monster-color-error-3)}.monster-theme-selection-3{background-color:var(--monster-bg-color-selection-3);color:var(--monster-color-selection-3)}.monster-border-color-3{border-color:var(--monster-color-border-3)}.monster-color-neutral-3{color:var(--monster-color-primary-3)}.monster-bg-color-primary-3{background-color:var(--monster-bg-color-primary-3)}.monster-bg-color-secondary-3{background-color:var(--monster-bg-color-secondary-3)}.monster-bg-color-tertiary-3{background-color:var(--monster-bg-color-tertiary-3)}.monster-color-primary-3{background-color:var(--monster-bg-color-primary-3);color:var(--monster-color-primary-3)}.monster-color-secondary-3{background-color:var(--monster-bg-color-secondary-3);color:var(--monster-color-secondary-3)}.monster-color-tertiary-3{background-color:var(--monster-bg-color-tertiary-3);color:var(--monster-color-tertiary-3)}.monster-color-destructive-3{background-color:var(--monster-bg-color-destructive-3);color:var(--monster-color-destructive-3)}.monster-color-success-3{background-color:var(--monster-bg-color-success-3);color:var(--monster-color-success-3)}.monster-color-warning-3{background-color:var(--monster-bg-color-warning-3);color:var(--monster-color-warning-3)}.monster-color-error-3{background-color:var(--monster-bg-color-error-3);color:var(--monster-color-error-3)}.monster-color-selection-3{background-color:var(--monster-bg-color-selection-3);color:var(--monster-color-selection-3)}.monster-theme-primary-4{background-color:var(--monster-bg-color-primary-4);color:var(--monster-color-primary-4)}.monster-theme-primary-disabled-4{background-color:var(--monster-bg-color-primary-disabled-4);color:var(--monster-color-primary-disabled-4)}.monster-theme-secondary-4{background-color:var(--monster-bg-color-secondary-4);color:var(--monster-color-secondary-4)}.monster-theme-tertiary-4{background-color:var(--monster-bg-color-tertiary-4);color:var(--monster-color-tertiary-4)}.monster-theme-destructive-4{background-color:var(--monster-bg-color-destructive-4);color:var(--monster-color-destructive-4)}.monster-theme-success-4{background-color:var(--monster-bg-color-success-4);color:var(--monster-color-success-4)}.monster-theme-warning-4{background-color:var(--monster-bg-color-warning-4);color:var(--monster-color-warning-4)}.monster-theme-error-4{background-color:var(--monster-bg-color-error-4);color:var(--monster-color-error-4)}.monster-theme-selection-4{background-color:var(--monster-bg-color-selection-4);color:var(--monster-color-selection-4)}.monster-border-color-4{border-color:var(--monster-color-border-4)}.monster-color-neutral-4{color:var(--monster-color-primary-4)}.monster-bg-color-primary-4{background-color:var(--monster-bg-color-primary-4)}.monster-bg-color-secondary-4{background-color:var(--monster-bg-color-secondary-4)}.monster-bg-color-tertiary-4{background-color:var(--monster-bg-color-tertiary-4)}.monster-color-primary-4{background-color:var(--monster-bg-color-primary-4);color:var(--monster-color-primary-4)}.monster-color-secondary-4{background-color:var(--monster-bg-color-secondary-4);color:var(--monster-color-secondary-4)}.monster-color-tertiary-4{background-color:var(--monster-bg-color-tertiary-4);color:var(--monster-color-tertiary-4)}.monster-color-destructive-4{background-color:var(--monster-bg-color-destructive-4);color:var(--monster-color-destructive-4)}.monster-color-success-4{background-color:var(--monster-bg-color-success-4);color:var(--monster-color-success-4)}.monster-color-warning-4{background-color:var(--monster-bg-color-warning-4);color:var(--monster-color-warning-4)}.monster-color-error-4{background-color:var(--monster-bg-color-error-4);color:var(--monster-color-error-4)}.monster-color-selection-4{background-color:var(--monster-bg-color-selection-4);color:var(--monster-color-selection-4)}.monster-theme-control-container-1,.monster-theme-control-row-1{border:1px solid var(--monster-theme-control-border-color)}.monster-theme-control-container-1,.monster-theme-control-element,.monster-theme-control-row-1{background-color:var(--monster-theme-control-bg-color);color:var(--monster-theme-control-color)}.monster-theme-control-background{background-color:var(--monster-theme-control-bg-color)}.monster-theme-background-inherit{background-color:inherit!important}.monster-theme-on{background-color:var(--monster-theme-on-bg-color);color:var(--monster-theme-on-color)}.monster-theme-off{background-color:var(--monster-theme-off-bg-color);color:var(--monster-theme-off-color)}.monster-border-primary-1,.monster-border-primary-2,.monster-border-primary-3,.monster-border-primary-4{border-radius:var(--monster-border-radius);border-style:var(--monster-border-style);border-width:var(--monster-border-width)}.monster-border-0{border-radius:0;border-style:none;border-width:0}.monster-border-primary-1{border-color:var(--monster-bg-color-primary-1)}.monster-border-primary-2{border-color:var(--monster-bg-color-primary-2)}.monster-border-primary-3{border-color:var(--monster-bg-color-primary-3)}.monster-border-primary-4{border-color:var(--monster-bg-color-primary-4)}.monster-border-secondary-1,.monster-border-secondary-2,.monster-border-secondary-3,.monster-border-secondary-4{border-radius:var(--monster-border-radius);border-style:var(--monster-border-style);border-width:var(--monster-border-width)}.monster-border-secondary-1{border-color:var(--monster-bg-color-secondary-1)}.monster-border-secondary-2{border-color:var(--monster-bg-color-secondary-2)}.monster-border-secondary-3{border-color:var(--monster-bg-color-secondary-3)}.monster-border-secondary-4{border-color:var(--monster-bg-color-secondary-4)}.monster-border-tertiary-1,.monster-border-tertiary-2,.monster-border-tertiary-3,.monster-border-tertiary-4{border-radius:var(--monster-border-radius);border-style:var(--monster-border-style);border-width:var(--monster-border-width)}.monster-border-tertiary-1{border-color:var(--monster-bg-color-tertiary-1)}.monster-border-tertiary-2{border-color:var(--monster-bg-color-tertiary-2)}.monster-border-tertiary-3{border-color:var(--monster-bg-color-tertiary-3)}.monster-border-tertiary-4{border-color:var(--monster-bg-color-tertiary-4)}[data-monster-role=control]{box-sizing:border-box;font-family:inherit;font-size:inherit;margin:0;outline:none}[data-monster-role=control]:focus{outline:1px dashed var(--monster-color-selection-3);outline-offset:2px}[data-monster-role=control] .switch{border-style:var(--monster-border-style);border-width:var(--monster-border-width);box-sizing:border-box;display:inline-grid;grid-template-columns:1fr 1fr;position:relative;transition:background-color .2s;width:100%}[data-monster-role=control] .label{display:block;max-width:100%;overflow:hidden;padding:0 .2em;text-align:center;text-overflow:ellipsis;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}[data-monster-role=control] .switch-slider{bottom:4px;left:4px;position:absolute;right:4px;top:4px;transition:.2s;width:calc(50% - 4px)}[data-monster-role=control] .switch[data-monster-state=on] .label.off{visibility:hidden}[data-monster-role=control] .switch[data-monster-state=off] .label.off,[data-monster-role=control] .switch[data-monster-state=on] .label.on{visibility:visible}[data-monster-role=control] .switch[data-monster-state=off] .label.on{visibility:hidden}[data-monster-role=control] .switch[data-monster-state=on] .switch-slider{transform:translateX(100%)} 
-}`, 0);
+}`,
+		0,
+	);
 } catch (e) {
-  addAttributeToken(document.getRootNode().querySelector('html'), ATTRIBUTE_ERRORMESSAGE, e + "");
+	addAttributeToken(
+		document.getRootNode().querySelector("html"),
+		ATTRIBUTE_ERRORMESSAGE,
+		e + "",
+	);
 }
diff --git a/source/components/form/toggle-switch.mjs b/source/components/form/toggle-switch.mjs
index 9d4c67576bdbe788142bb44e00fcbd9db5fe32e0..2d6af8e13b6bfe054e12cef921da6a41ae12873f 100644
--- a/source/components/form/toggle-switch.mjs
+++ b/source/components/form/toggle-switch.mjs
@@ -12,26 +12,26 @@
  * SPDX-License-Identifier: AGPL-3.0
  */
 
-import {instanceSymbol} from "../../constants.mjs";
-import {internalSymbol} from "../../constants.mjs";
-import {CustomControl} from "../../dom/customcontrol.mjs";
-import {Observer} from "../../types/observer.mjs";
-import {ProxyObserver} from "../../types/proxyobserver.mjs";
+import { instanceSymbol } from "../../constants.mjs";
+import { internalSymbol } from "../../constants.mjs";
+import { CustomControl } from "../../dom/customcontrol.mjs";
+import { Observer } from "../../types/observer.mjs";
+import { ProxyObserver } from "../../types/proxyobserver.mjs";
 
-import {addAttributeToken} from "../../dom/attributes.mjs";
+import { addAttributeToken } from "../../dom/attributes.mjs";
 import {
-    assembleMethodSymbol,
-    registerCustomElement,
-    updaterTransformerMethodsSymbol,
+	assembleMethodSymbol,
+	registerCustomElement,
+	updaterTransformerMethodsSymbol,
 } from "../../dom/customelement.mjs";
-import {isObject, isFunction} from "../../types/is.mjs";
-import {ToggleSwitchStyleSheet} from "./stylesheet/toggle-switch.mjs";
+import { isObject, isFunction } from "../../types/is.mjs";
+import { ToggleSwitchStyleSheet } from "./stylesheet/toggle-switch.mjs";
 import {
-    ATTRIBUTE_ERRORMESSAGE,
-    ATTRIBUTE_ROLE,
+	ATTRIBUTE_ERRORMESSAGE,
+	ATTRIBUTE_ROLE,
 } from "../../dom/constants.mjs";
 
-export {ToggleSwitch};
+export { ToggleSwitch };
 
 /**
  * @private
@@ -69,344 +69,343 @@ export const STATE_OFF = "off";
  * @summary A simple toggle switch
  */
 class ToggleSwitch extends CustomControl {
-    /**
-     * To set the options via the html tag the attribute `data-monster-options` must be used.
-     * @see {@link https://monsterjs.org/en/doc/#configurate-a-monster-control}
-     *
-     * The individual configuration values can be found in the table.
-     *
-     * @property {string} value=current value of the element
-     * @property {Boolean} disabled=disabled=false Disabled state
-     * @property {Object} classes
-     * @property {string} classes.on=specifies the class for the on state.
-     * @property {string} classes.off=specifies the class for the off state.
-     * @property {Object} values
-     * @property {string} values.off=specifies the value of the element if it is not selected
-     * @property {Object} labels
-     * @property {string} labels.on=specifies the label for the on state.
-     * @property {string} labels.off=specifies the label for the off state.
-     * @property {string} actions
-     * @property {string} actions.on=specifies the action for the on state.
-     * @property {string} actions.off=specifies the action for the off state.
-     * @property {Object} templates
-     * @property {string} templates.main=specifies the main template used by the control.
-     *
-     * @since 3.57.0
-     */
-    get defaults() {
-        return Object.assign({}, super.defaults, {
-            value: null,
-            disabled: false,
-            classes: {
-                on: "monster-theme-on",
-                off: "monster-theme-off",
-                handle: "monster-theme-primary-1",
-            },
-            values: {
-                on: "on",
-                off: "off",
-            },
-            labels: {
-                "toggle-switch-on": "ON",
-                "toggle-switch-off": "OFF",
-            },
-            templates: {
-                main: getTemplate(),
-            },
-            actions: {
-                on: () => {
-                    throw new Error("the on action is not defined");
-                },
-                off: () => {
-                    throw new Error("the off action is not defined");
-                },
-            }
-        });
-    }
-
-    /**
-     * @return {ToggleSwitch}
-     */
-    [assembleMethodSymbol]() {
-        const self = this;
-        super[assembleMethodSymbol]();
-        initControlReferences.call(this);
-        initEventHandler.call(this);
-
-        /**
-         * init value to off
-         * if the value was not defined before inserting it into the HTML
-         */
-        if (self.getOption("value") === null) {
-            self.setOption("value", self.getOption("values.off"));
-        }
-
-        /**
-         * value from attribute
-         */
-        if (self.hasAttribute("value")) {
-            self.setOption("value", self.getAttribute("value"));
-        }
-
-        /**
-         * validate value
-         */
-        validateAndSetValue.call(self);
-
-        if (this.state === STATE_ON) {
-            toggleClassOn.call(self);
-        } else {
-            toggleClassOff.call(self);
-        }
-
-        /**
-         * is called when options changed
-         */
-        self[internalSymbol].attachObserver(
-            new Observer(function () {
-                if (isObject(this) && this instanceof ProxyObserver) {
-                    validateAndSetValue.call(self);
-                    toggleClass.call(self);
-                }
-            }),
-        );
-
-        return this;
-    }
-
-    /**
-     * updater transformer methods for pipe
-     *
-     * @return {function}
-     */
-    [updaterTransformerMethodsSymbol]() {
-        return {
-            "state-callback": (Wert) => {
-                return this.state;
-            },
-        };
-    }
-
-    /**
-     * @return [CSSStyleSheet]
-     */
-    static getCSSStyleSheet() {
-        return [ToggleSwitchStyleSheet];
-    }
-
-    /**
-     * toggle switch
-     *
-     * ```
-     * e = document.querySelector('monster-toggle-switch');
-     * e.click()
-     * ```
-     */
-    click() {
-        toggleValues.call(this);
-    }
-
-    /**
-     * toggle switch on/off
-     *
-     * ```
-     * e = document.querySelector('monster-toggle-switch');
-     * e.toggle()
-     * ```
-     *
-     * @return {ToggleSwitch}
-     */
-    toggle() {
-        this.click();
-        return this;
-    }
-
-    /**
-     * toggle switch on
-     *
-     * ```
-     * e = document.querySelector('monster-toggle-switch');
-     * e.toggleOn()
-     * ```
-     *
-     * @return {ToggleSwitch}
-     */
-    toggleOn() {
-        this.setOption("value", this.getOption("values.on"));
-        return this;
-    }
-
-    /**
-     * toggle switch off
-     *
-     * ```
-     * e = document.querySelector('monster-toggle-switch');
-     * e.toggleOff()
-     * ```
-     *
-     * @return {ToggleSwitch}
-     */
-    toggleOff() {
-        this.setOption("value", this.getOption("values.off"));
-        return this;
-    }
-
-    /**
-     * returns the status of the element
-     *
-     * ```
-     * e = document.querySelector('monster-toggle-switch');
-     * console.log(e.state)
-     * // ↦ off
-     * ```
-     *
-     * @return {string}
-     */
-    get state() {
-        return this.getOption("value") === this.getOption("values.on")
-            ? STATE_ON
-            : STATE_OFF;
-    }
-
-    /**
-     * The current value of the Switch
-     *
-     * ```
-     * e = document.querySelector('monster-toggle-switch');
-     * console.log(e.value)
-     * // ↦ on
-     * ```
-     *
-     * @return {string}
-     */
-    get value() {
-        return this.state === STATE_ON
-            ? this.getOption("values.on")
-            : this.getOption("values.off");
-    }
-
-    /**
-     * Set value
-     *
-     * ```
-     * e = document.querySelector('monster-toggle-switch');
-     * e.value="on"
-     * ```
-     *
-     * @property {string} value
-     */
-    set value(value) {
-        this.setOption("value", value);
-    }
-
-    /**
-     * This method is called by the `instanceof` operator.
-     * @returns {symbol}
-     * @since 2.1.0
-     */
-    static get [instanceSymbol]() {
-        return Symbol.for(
-            "@schukai/monster/components/form/toggle-switch@@instance",
-        );
-    }
-
-    static getTag() {
-        return "monster-toggle-switch";
-    }
+	/**
+	 * To set the options via the html tag the attribute `data-monster-options` must be used.
+	 * @see {@link https://monsterjs.org/en/doc/#configurate-a-monster-control}
+	 *
+	 * The individual configuration values can be found in the table.
+	 *
+	 * @property {string} value=current value of the element
+	 * @property {Boolean} disabled=disabled=false Disabled state
+	 * @property {Object} classes
+	 * @property {string} classes.on=specifies the class for the on state.
+	 * @property {string} classes.off=specifies the class for the off state.
+	 * @property {Object} values
+	 * @property {string} values.off=specifies the value of the element if it is not selected
+	 * @property {Object} labels
+	 * @property {string} labels.on=specifies the label for the on state.
+	 * @property {string} labels.off=specifies the label for the off state.
+	 * @property {string} actions
+	 * @property {string} actions.on=specifies the action for the on state.
+	 * @property {string} actions.off=specifies the action for the off state.
+	 * @property {Object} templates
+	 * @property {string} templates.main=specifies the main template used by the control.
+	 *
+	 * @since 3.57.0
+	 */
+	get defaults() {
+		return Object.assign({}, super.defaults, {
+			value: null,
+			disabled: false,
+			classes: {
+				on: "monster-theme-on",
+				off: "monster-theme-off",
+				handle: "monster-theme-primary-1",
+			},
+			values: {
+				on: "on",
+				off: "off",
+			},
+			labels: {
+				"toggle-switch-on": "ON",
+				"toggle-switch-off": "OFF",
+			},
+			templates: {
+				main: getTemplate(),
+			},
+			actions: {
+				on: () => {
+					throw new Error("the on action is not defined");
+				},
+				off: () => {
+					throw new Error("the off action is not defined");
+				},
+			},
+		});
+	}
+
+	/**
+	 * @return {ToggleSwitch}
+	 */
+	[assembleMethodSymbol]() {
+		const self = this;
+		super[assembleMethodSymbol]();
+		initControlReferences.call(this);
+		initEventHandler.call(this);
+
+		/**
+		 * init value to off
+		 * if the value was not defined before inserting it into the HTML
+		 */
+		if (self.getOption("value") === null) {
+			self.setOption("value", self.getOption("values.off"));
+		}
+
+		/**
+		 * value from attribute
+		 */
+		if (self.hasAttribute("value")) {
+			self.setOption("value", self.getAttribute("value"));
+		}
+
+		/**
+		 * validate value
+		 */
+		validateAndSetValue.call(self);
+
+		if (this.state === STATE_ON) {
+			toggleClassOn.call(self);
+		} else {
+			toggleClassOff.call(self);
+		}
+
+		/**
+		 * is called when options changed
+		 */
+		self[internalSymbol].attachObserver(
+			new Observer(function () {
+				if (isObject(this) && this instanceof ProxyObserver) {
+					validateAndSetValue.call(self);
+					toggleClass.call(self);
+				}
+			}),
+		);
+
+		return this;
+	}
+
+	/**
+	 * updater transformer methods for pipe
+	 *
+	 * @return {function}
+	 */
+	[updaterTransformerMethodsSymbol]() {
+		return {
+			"state-callback": (Wert) => {
+				return this.state;
+			},
+		};
+	}
+
+	/**
+	 * @return [CSSStyleSheet]
+	 */
+	static getCSSStyleSheet() {
+		return [ToggleSwitchStyleSheet];
+	}
+
+	/**
+	 * toggle switch
+	 *
+	 * ```
+	 * e = document.querySelector('monster-toggle-switch');
+	 * e.click()
+	 * ```
+	 */
+	click() {
+		toggleValues.call(this);
+	}
+
+	/**
+	 * toggle switch on/off
+	 *
+	 * ```
+	 * e = document.querySelector('monster-toggle-switch');
+	 * e.toggle()
+	 * ```
+	 *
+	 * @return {ToggleSwitch}
+	 */
+	toggle() {
+		this.click();
+		return this;
+	}
+
+	/**
+	 * toggle switch on
+	 *
+	 * ```
+	 * e = document.querySelector('monster-toggle-switch');
+	 * e.toggleOn()
+	 * ```
+	 *
+	 * @return {ToggleSwitch}
+	 */
+	toggleOn() {
+		this.setOption("value", this.getOption("values.on"));
+		return this;
+	}
+
+	/**
+	 * toggle switch off
+	 *
+	 * ```
+	 * e = document.querySelector('monster-toggle-switch');
+	 * e.toggleOff()
+	 * ```
+	 *
+	 * @return {ToggleSwitch}
+	 */
+	toggleOff() {
+		this.setOption("value", this.getOption("values.off"));
+		return this;
+	}
+
+	/**
+	 * returns the status of the element
+	 *
+	 * ```
+	 * e = document.querySelector('monster-toggle-switch');
+	 * console.log(e.state)
+	 * // ↦ off
+	 * ```
+	 *
+	 * @return {string}
+	 */
+	get state() {
+		return this.getOption("value") === this.getOption("values.on")
+			? STATE_ON
+			: STATE_OFF;
+	}
+
+	/**
+	 * The current value of the Switch
+	 *
+	 * ```
+	 * e = document.querySelector('monster-toggle-switch');
+	 * console.log(e.value)
+	 * // ↦ on
+	 * ```
+	 *
+	 * @return {string}
+	 */
+	get value() {
+		return this.state === STATE_ON
+			? this.getOption("values.on")
+			: this.getOption("values.off");
+	}
+
+	/**
+	 * Set value
+	 *
+	 * ```
+	 * e = document.querySelector('monster-toggle-switch');
+	 * e.value="on"
+	 * ```
+	 *
+	 * @property {string} value
+	 */
+	set value(value) {
+		this.setOption("value", value);
+	}
+
+	/**
+	 * This method is called by the `instanceof` operator.
+	 * @returns {symbol}
+	 * @since 2.1.0
+	 */
+	static get [instanceSymbol]() {
+		return Symbol.for(
+			"@schukai/monster/components/form/toggle-switch@@instance",
+		);
+	}
+
+	static getTag() {
+		return "monster-toggle-switch";
+	}
 }
 
 /**
  * @private
  */
 function initControlReferences() {
-    this[switchElementSymbol] = this.shadowRoot.querySelector(
-        `[${ATTRIBUTE_ROLE}=switch]`,
-    );
+	this[switchElementSymbol] = this.shadowRoot.querySelector(
+		`[${ATTRIBUTE_ROLE}=switch]`,
+	);
 }
 
 /**
  * @private
  */
 function toggleClassOn() {
-    this[switchElementSymbol].classList.remove(this.getOption("classes.off")); // change color
-    this[switchElementSymbol].classList.add(this.getOption("classes.on")); // change color
+	this[switchElementSymbol].classList.remove(this.getOption("classes.off")); // change color
+	this[switchElementSymbol].classList.add(this.getOption("classes.on")); // change color
 }
 
 /**
  * @private
  */
 function toggleClassOff() {
-    this[switchElementSymbol].classList.remove(this.getOption("classes.on")); // change color
-    this[switchElementSymbol].classList.add(this.getOption("classes.off")); // change color
+	this[switchElementSymbol].classList.remove(this.getOption("classes.on")); // change color
+	this[switchElementSymbol].classList.add(this.getOption("classes.off")); // change color
 }
 
 /**
  * @private
  */
 function toggleClass() {
-    if (this.getOption("value") === this.getOption("values.on")) {
-        toggleClassOn.call(this);
-    } else {
-        toggleClassOff.call(this);
-    }
+	if (this.getOption("value") === this.getOption("values.on")) {
+		toggleClassOn.call(this);
+	} else {
+		toggleClassOff.call(this);
+	}
 }
 
 /**
  * @private
  */
 function toggleValues() {
-    if (this.getOption("disabled") === true) {
-        return;
-    }
+	if (this.getOption("disabled") === true) {
+		return;
+	}
 
-    let callback, value;
+	let callback, value;
 
-    if (this.getOption("value") === this.getOption("values.on")) {
-        value = this.getOption("values.off");
-        callback = this.getOption("actions.off");
-    } else {
-        value = this.getOption("values.on");
-        callback = this.getOption("actions.on");
-    }
+	if (this.getOption("value") === this.getOption("values.on")) {
+		value = this.getOption("values.off");
+		callback = this.getOption("actions.off");
+	} else {
+		value = this.getOption("values.on");
+		callback = this.getOption("actions.on");
+	}
 
-    this.setOption("value", value);
-    this?.setFormValue(value);
+	this.setOption("value", value);
+	this?.setFormValue(value);
 
-    if (isFunction(callback)) {
-        callback.call(this)();
-    }
+	if (isFunction(callback)) {
+		callback.call(this);
+	}
 
-
-    this.setOption("state", this.state);
+	this.setOption("state", this.state);
 }
 
 /**
  * @private
  */
 function validateAndSetValue() {
-    const value = this.getOption("value");
-
-    const validatedValues = [];
-    validatedValues.push(this.getOption("values.on"));
-    validatedValues.push(this.getOption("values.off"));
-
-    if (validatedValues.includes(value) === false) {
-        addAttributeToken(
-            this,
-            ATTRIBUTE_ERRORMESSAGE,
-            'The value "' +
-            value +
-            '" must be "' +
-            this.getOption("values.on") +
-            '" or "' +
-            this.getOption("values.off"),
-        );
-        this.setOption("disabled", true);
-        this.formDisabledCallback(true);
-    } else {
-        this.setOption("disabled", false);
-        this.formDisabledCallback(false);
-    }
+	const value = this.getOption("value");
+
+	const validatedValues = [];
+	validatedValues.push(this.getOption("values.on"));
+	validatedValues.push(this.getOption("values.off"));
+
+	if (validatedValues.includes(value) === false) {
+		addAttributeToken(
+			this,
+			ATTRIBUTE_ERRORMESSAGE,
+			'The value "' +
+				value +
+				'" must be "' +
+				this.getOption("values.on") +
+				'" or "' +
+				this.getOption("values.off"),
+		);
+		this.setOption("disabled", true);
+		this.formDisabledCallback(true);
+	} else {
+		this.setOption("disabled", false);
+		this.formDisabledCallback(false);
+	}
 }
 
 /**
@@ -414,16 +413,16 @@ function validateAndSetValue() {
  * @return {initEventHandler}
  */
 function initEventHandler() {
-    const self = this;
-    self.addEventListener("keyup", function (event) {
-        if (event.code === "Space") {
-            self[switchElementSymbol].click();
-        }
-    });
-    self.addEventListener("click", function (event) {
-        toggleValues.call(self);
-    });
-    return this;
+	const self = this;
+	self.addEventListener("keyup", function (event) {
+		if (event.code === "Space") {
+			self[switchElementSymbol].click();
+		}
+	});
+	self.addEventListener("click", function (event) {
+		toggleValues.call(self);
+	});
+	return this;
 }
 
 /**
@@ -431,8 +430,8 @@ function initEventHandler() {
  * @return {string}
  */
 function getTemplate() {
-    // language=HTML
-    return `
+	// language=HTML
+	return `
         <div data-monster-role="control" part="control" tabindex="0">
             <div class="switch" data-monster-role="switch"
                  data-monster-attributes="data-monster-state path:value | call:state-callback">