Gavyn McKenzie
banner
gavmck.bsky.social
Gavyn McKenzie
@gavmck.bsky.social
Front-end developer at etch.co
Will try and convert you to diamond.etch.co
Design systems nerd. Writing websites since before we had CSS.
I've been finding these a11y interaction tests we developed super helpful for keeping interactive components on track www.npmjs.com/package/@etc...
www.npmjs.com
October 1, 2025 at 8:30 AM
Still trying to refine it. A lot of the time I get it to create things in pure semantic HTML so I can style it up. Recently I managed to export our design system with repomix, then fed that to Claude to transform into Claude instructions to keep in the repo and that really helped with the output.
October 1, 2025 at 8:29 AM
FOUC it, we just use swap
July 17, 2025 at 8:43 AM
And this only applies to a small number of elements (button, typography, lists, inputs, links, img). We can still make cards, grids, containers, form groups, validation messages, etc etc without wrapping anything
May 16, 2025 at 10:41 AM
Yeah, that's fair, it depends on the ecosystem. I run into too many instances of a component needing to support yet another thing that was already supported by native HTML because the element is nested inside it so this is our current get out. The system needs to take least responsibility.
May 16, 2025 at 10:39 AM
It's kind of a similar technique to David Darnes "Little bits" talk darn.es/web-componen... or Jeremy Keiths HTML Web components adactio.medium.com/html-web-com... (Some good links to other people doing the same thing in there, meyers blinded by the light dom is awesome meyerweb.com/eric/thought...)
Web Components: Little Bits
My talk about using Web Components to sprinkle a little fun onto my website, and how well they work in Design Systems
darn.es
May 16, 2025 at 3:36 AM
Here's a demo set of components that uses this technique, we've used them across several projects in different frameworks and they work well. diamond.etch.co/components?p...
@storybook/core - Storybook
diamond.etch.co
May 16, 2025 at 3:30 AM
That's what's we're doing, still controlling the visual. But this technique means the component renders instantly without needing JS or SSR. Because the semantic element exists in the light DOM it's very easy to add all the extra unknown props needed (aria, tracking attributes, etc)
May 16, 2025 at 3:28 AM
That's a bit dodgy! I don't think web components should contain existing semantic elements because it turns into a bit of a mess. That's templating, not components. We really like wrapping existing elements to enhance them over here etch.co/blog/css-web...
CSS web components | Etch Software Studio
Custom elements as a styling solution
etch.co
May 15, 2025 at 10:06 AM
What I realised was I was adding a Block class to the host when we can just use :host, then the styles were scoped anyway and modifiers are mostly things like :host([variant="foo"])
May 15, 2025 at 10:04 AM
Sorry for the late reply, here's an article on it etch.co/blog/bem-for...
BEM for web components | Etch Software Studio
How to style web components in a world where BEM no longer makes sense.
etch.co
May 15, 2025 at 10:03 AM
Sorry for the late reply, here's an article about it on our site etch.co/blog/bem-for...
BEM for web components | Etch Software Studio
How to style web components in a world where BEM no longer makes sense.
etch.co
May 15, 2025 at 10:02 AM
Yeah, e.g. Here's an article etch.co/blog/bem-for...
BEM for web components | Etch Software Studio
How to style web components in a world where BEM no longer makes sense.
etch.co
May 15, 2025 at 10:02 AM
Component Element Attribute instead of Block Element Modifier and moving everything to CSS, trying to ditch SCSS.
April 30, 2025 at 6:30 AM
AI is exchanging quality for output to drive the overall goal. Can you make more money selling 8,000 bad books than 1 good book?
March 6, 2025 at 3:14 PM