+ {parts.map((p) => {
+ if (p.kind === 'html') return
;
+ switch (p.slot.kind) {
+ case 'code':
+ return
;
+ case 'gallery':
+ return
;
+ case 'aside':
+ return (
+
+ );
+ case 'docLink':
+ return (
+
+ {p.slot.props.label}
+
+ );
+ case 'listingLink':
+ return
;
+ // Future: more cases here.
+ default:
+ return null;
+ }
+ })}
+
+ )
+}
+
+
diff --git a/src/components/IotHub/IotHubNoResults.astro b/src/components/IotHub/IotHubNoResults.astro
new file mode 100644
index 0000000000..248329bf9e
--- /dev/null
+++ b/src/components/IotHub/IotHubNoResults.astro
@@ -0,0 +1,121 @@
+---
+import noResultsIllustration from '@root/assets/iot-hub/search-no-results.svg';
+
+// Empty-state shown when the dynamic search returns zero results. Hidden
+// by default; the search page script toggles `hidden` based on
+// `result.data.length`.
+//
+// "Clear all filters" reloads the bare search page (no query string), which
+// the static SSR renders with the full unfiltered catalogue — same as a
+// user clicking the home-page tile or hitting `/iot-hub/search/`.
+
+interface Props {
+ clearHref?: string;
+}
+
+const { clearHref = '/iot-hub/search/' } = Astro.props;
+---
+
+