I suggest you apply a texture onto the plane. AFAICS, you are using an instance of PlaneBufferGeometry for the geometry so you already have proper texture coordinates. The texture can be create offline with Photoshop or dynamically by writing the text onto a 2D canvas and using it as a data source for your texture. In this case, you are not loading the texture from the backend via TextureLoader but creating an instance of CanvasTexture and applying the canvas element as a ctor argument.
have you used blender before? it’s usually easier to just build the scene out in blender, you can make the texture in figma or whatever you prefer and just align it over a mesh. then export everything as a glb. fiddling with textgeometry or anything else really in threejs seems too much work.
you can use whatever software you’re comfortable with, looking at the above imagine you posted yes i would use figma myself. in the end a texture is just an image. you can also align textures with code though it’s a bit fiddly:
look into the docs for the meaning of those two vectors, you can position, scale and stretch textures with them.
you can ofc also 3d transform real html and place it onto a mesh, look into css3drenderer. especially for that button underneath, no idea how you want to make it interactive with just an image. i don’t have a vanilla example but it’s the same in principle, the screen overlay here is real html that can be interacted with: Mixing HTML and WebGL w/ occlusion - CodeSandbox