I have implemented this for npub and nprofiles in commit 44fb751eca41de2859562a724ac9a567080a75d9.
Still need to do this for events such as note, nevent and naddr.
Rich rendering of bech32 entities
The npub/nprofile could be rendered as the username with a link to the user profile when nostr:nevent1qqsyxwvgdaacc3hcd9rjwmjwqsfpu8guhrj37026ntl3aqw02mrprsgpp4mhxue69uhkummn9ekx7mqzyr7jprhgeregx7q2j4fgjmjgy0xfm34l63pqvwyf2acsd9q0mynuzp660g9 is implemented.
The nevent of an issue could be rendered as a link to the issue and the text could be the issue title. Similarly for proposals.
The naddr of a repo could be rendered as a repo card with the basic repo data.
I have implemented this for npub and nprofiles in commit 44fb751eca41de2859562a724ac9a567080a75d9.
Still need to do this for events such as note, nevent and naddr.
I had a utopian dream of completely abstracting the UI from the data fetching layers so UX designers could more easily make changes themselves.
Also wanted storybook and the playwright tests to cover all UI components in such a way that they could just pass in the objects needed without fetching data.
I've moved away from that with the above change. although it could be added back in by passing required data (such as each mentioned user's User object to the components/events/EventWrapper.
Something tells me this is more trouble than it is worth. In previous roles that something would be colleagues or someone doing a peer review.
Once you start supporting NIP-19 it becomes a bit tricky. Are you using a local DB? You can still pre-populate it with the events you use in the storybook/tests and don't hit the relays at all. NDK supports caching policies such as NDKSubscriptionCacheUsage.ONLY_CACHE or NDKSubscriptionCacheUsage.CACHE_FIRST that make this relatively easy.