Web standards like HTML tags allow developers to use conceptual names (e.g., `<p>`, `<i>`) without knowing the underlying browser implementation details.
Naming concepts enables abstraction, letting developers build complex systems by layering behaviors, such as defining custom components like `Greeting`.
Custom components (e.g., `<Greeting>`) must be translated into browser-understood tags via functions that substitute them with their definitions (e.g., an `ExpandableGreeting` function outputs `<details>` with inner JSX).
The translation process recursively resolves nested custom components until only built-in tags remain, akin to a chain reaction dissolving user-defined concepts into browser-ready code.