The other day, I re-discovered the dev.to API and found out that it can be used without an API key. Thatโs really great if you want to embed your articles anywhere โ maybe on a personal blog โ without the hassle of protecting secret keys. You can fetch a list of articles by a given author or a specific article.
So, I coded a web component that lets you grab either a list of articles or a specific one. Letโs start with the โlist modeโ:
<dev-to
author="madsstoumann"
theme="classic"
itemsperpage="10"
links="internal">
</dev-to>
Notice the theme and links attributes.
Iโve added 3 themes to choose from (but you can easily add your own):
- brutalist
- classic
- modern
links can be either โinternalโ or โexternalโ. The first opens the article directly within the web component, while the latter opens the article on dev.to in a new tab.
Now, letโs click on โThe Golden Ratio in CSSโ.
Very posh, classic theme, isnโt it?!
If you just want to show the article directly, without showing the list first, you can use the component in โarticle modeโ:
<dev-to article="2014104" theme="classic"></dev-to>
Letโs change the theme to โmodernโ:
... or how about โbrutalistโ, for that raw, industrial look?
Internationalization
If you want to display dates and UI text in your local language, the component supports i18n this way:
<dev-to
author="madsstoumann"
lang="es"
i18n='{"es":{"more":"Mรกs...","reactions":"reacciones"}}'>
</dev-to>
Customization
The component exposes several parts that you can style using CSS ::part():
dev-to::part(avatar) {
border-radius: 50%;
border: 2px solid currentColor;
}
dev-to::part(cover) {
filter: sepia(0.3);
}
dev-to::part(more) {
background: #ff00ff;
}
Shadow DOM or Not?
If you need to style the component directly (without shadowDOM and parts), just add the noshadow attribute:
<dev-to author="madsstoumann" noshadow></dev-to>
Demo
You can try out a demo, using external links, here: browser.style/ui/dev-to
Installation
You can install the component directly from npm:
npm i @browser.style/dev-to
Or import the script directly from browser.style:
<script
type="module"
src="https://browser.style/ui/dev-to/index.js">
</script>
Let me know what you think!
Cover Photo by Markus Spiske: https://www.pexels.com/photo/mork-computer-gron-software-225769/




Top comments (18)
Nice
Thanks!
Very good ๐ I've been playing around with it, integrating the comment section and reactions into my blog for articles that have been cross posted. I have it working pretty good and I'm about ready to update my blog with it.
Nice! Will you share a link when itโs up?
Will do ๐
I've been meaning to update it for a couple of weeks now actually. I have so many projects going between my AI research and our current app development. But now that you and I are talking about it, it's back to the top of the list!
This is really cool ๐ฅ
Thanks!
Love this bud. FYI brutalist might need a tweak in dark mode as the lines obscure the text.
Great component!
Oh, added those lines as a last-minute thing! Will add light-dark() soon.
Fixed!
Nice!
Is browser.style owned by yourself?
Yes, itโs my personal, digital playground!
Thank you very much
Thank you!
Cool!
Great article ๐. Truly we learn a new thing every day .
Thanks, happy to hear that!
Some comments may only be visible to logged-in visitors. Sign in to view all comments.