Looks very promising, one more star from me! What looks a bit odd is the React component being kebab-case instead of typical CamelCase.

Thanks! That's just how custom elements work in React, you use the HTML tag name directly.

React 19 has native custom element support so <phantom-ui> works as-is, no wrapper needed.

Keeping it as a single HTML tag across all frameworks is the whole point.