diff --git a/packages/webawesome/docs/_layouts/component.njk b/packages/webawesome/docs/_layouts/component.njk
index 2a0cd4947..f007a6b72 100644
--- a/packages/webawesome/docs/_layouts/component.njk
+++ b/packages/webawesome/docs/_layouts/component.njk
@@ -223,9 +223,13 @@
{% if component.cssParts.length %}
CSS parts
Learn more about CSS parts.
+
+ <{{ component.tagName }} id="parts-example">{{ component.tagName }}>
+
+ {{ demo }}
-
+
| Name |
@@ -234,7 +238,7 @@
{% for cssPart in component.cssParts %}
-
+
{{ cssPart.name }} |
{{ cssPart.description | inlineMarkdown | safe }} |
@@ -305,4 +309,6 @@
Ask for help
-{% endblock %}
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/packages/webawesome/docs/assets/scripts/parts-diagram.js b/packages/webawesome/docs/assets/scripts/parts-diagram.js
new file mode 100644
index 000000000..d278ad737
--- /dev/null
+++ b/packages/webawesome/docs/assets/scripts/parts-diagram.js
@@ -0,0 +1,25 @@
+// Get all table rows with data-part attributes
+const tableRows = document.querySelectorAll('[data-part]');
+
+// Add event listeners for mouseenter and mouseleave
+tableRows.forEach(row => {
+ row.addEventListener('mouseenter', function () {
+ const partName = this.getAttribute('data-part');
+ const correspondingPart = document.getElementById('parts-example').shadowRoot.querySelector(`[part='${partName}']`);
+
+ console.log('hello!');
+
+ if (correspondingPart) {
+ correspondingPart.style.outline = '2px solid red';
+ }
+ });
+
+ row.addEventListener('mouseleave', function () {
+ const partName = this.getAttribute('data-part');
+ const correspondingPart = document.getElementById('parts-example').shadowRoot.querySelector(`[part='${partName}']`);
+
+ if (correspondingPart) {
+ correspondingPart.style.outline = '';
+ }
+ });
+});