Build an emoji picker as a single React component. Category tabs across the top switch which set of emoji you see; a search box filters emoji by name across every category at once; and clicking an emoji appends it to a running "Picked" line. It's a compact exercise in the one idea that runs through most UI: keep a little state, and derive what you render from it rather than storing the rendered list twice.
The starter renders the resting picture — the four tabs with Smileys active, an empty search box, the Smileys grid, and an empty Picked: line. Make it interactive:
useState: the activeCat string, the query string, and a picked array of chars.query is non-empty, filter every category's emoji by name; otherwise fall back to EMOJIS[activeCat]. Don't store the shown list in state — compute it during render.activeCat, typing sets query, and an emoji click appends its char to picked.pi → the grid shows just pizza (from Food), pulled out of its category because search spans all tabs. Clear it → back to the active category.Picked: 🍕🐶.query + activeCat; a second shown state would drift out of sync.picked.join('').styles.css — focus on the state.