+ {/* Close button — only interactive when frozen */}
+ {isFrozen && (
+
+ )}
+
+ {/* Classes section */}
+
+
+ Classes
+
+ {inspectedData.publicClasses.map(cls => (
+
onCopy(cls)}
+ />
+ ))}
+ {inspectedData.stateClasses.map(cls => (
+ onCopy(cls)}
+ />
+ ))}
+
+
+ {/* Localization key section */}
+ {inspectedData.localizationKey && (
+
+
+ Localization Key
+
+
onCopy(inspectedData.localizationKey!)}
+ />
+
+ )}
+
+ {/* Hint when not frozen */}
+ {!isFrozen && (
+
+ Click to pin
+
+ )}
+
+ >
+ );
+}
diff --git a/packages/ui/src/components/devPrompts/Inspector/index.tsx b/packages/ui/src/components/devPrompts/Inspector/index.tsx
new file mode 100644
index 00000000000..be468180b09
--- /dev/null
+++ b/packages/ui/src/components/devPrompts/Inspector/index.tsx
@@ -0,0 +1,141 @@
+// eslint-disable-next-line no-restricted-imports
+import { css } from '@emotion/react';
+import { createPortal } from 'react-dom';
+
+import { InternalThemeProvider } from '../../../styledSystem';
+import { InspectorOverlay } from './InspectorOverlay';
+import { useInspectorState } from './useInspectorState';
+
+const CSS_RESET = css`
+ margin: 0;
+ padding: 0;
+ box-sizing: border-box;
+ background: none;
+ border: none;
+ font-family:
+ -apple-system,
+ BlinkMacSystemFont,
+ avenir next,
+ avenir,
+ segoe ui,
+ helvetica neue,
+ helvetica,
+ Cantarell,
+ Ubuntu,
+ roboto,
+ noto,
+ arial,
+ sans-serif;
+ font-size: 1rem;
+ font-weight: 400;
+ line-height: 1.5;
+ text-decoration: none;
+ color: inherit;
+ appearance: none;
+`;
+
+function InspectorIcon() {
+ return (
+