Sign in

Alex Carpenter

@alexcarpenter.me
783 followers 61 following 56 posts

UI Engineer - alexcarpenter.me Authoring - resilient-ui.com Curating - ibrewmyown.coffee

PostsRepliesMedia
Alex Carpenter @alexcarpenter.me · 27/04/2026
Tint buttons :hover and :active states based on their foreground color usage. alexcarpenter.me/notes/2026-0...
button {
  --bg: transparent;
  --fg: currentColor;
  --am: 0%;
  background-color: color-mix(in srgb, var(--bg), var(--fg) var(--am));
  color: var(--fg);

  &:hover {
    --am: 10%;
  }
    
  &:active {
    --am: 20%;
  }
}

.green {
  --bg: oklch(62.7% 0.194 149.214);
  --fg: oklch(1 0 0);
}

.neutral {
  --bg: oklch(92.9% 0.013 255.508);
  --fg: oklch(27.8% 0.033 256.848);
}
000
Alex Carpenter @alexcarpenter.me · 07/03/2026
📝 Implementing smooth Dot Indicators with Embla Carousel and CSS color-mix() alexcarpenter.me/notes/2026-0...
000
Alex Carpenter @alexcarpenter.me · 08/10/2025
Exploring a new design direction for @ibrewmyown.coffee Still very much WIP, but curious to hear your thoughts! ibrewmyown-coffee-git-v3-alex-carpenters-projects-00876ed6.vercel.app
000
Alex Carpenter @alexcarpenter.me · 21/06/2025
Working on some updates to make it easier to theme Clerk components from your existing CSS variables. Generating a color palette using relative color syntax and color-mix.
Codeblock showing --brand-color usage being set in CSS style tag, and passing that value into Clerks appearance variable prop.
010
Alex Carpenter @alexcarpenter.me · 20/02/2025
React Aria exposing state through the className is super handy. Here we're using the placement returned to define a TW CSS variable which we can then use in Motion to define its animation direction. codesandbox.io/p/sandbox/zw...
<TooltipTrigger isOpen={open} onOpenChange={setOpen}>
  <Button>Trigger</Button>
  <AnimatePresence>
    {open ? (
      <MotionTooltip
        className={({ placement }) =>
          cx({
            "[--y:4px]": placement === "top",
            "[--y:-4px]": placement === "bottom",
          })
        }
        offset={6}
        initial={{ opacity: 0, y: "var(--y)" }}
        animate={{ opacity: 1, y: 0 }}
      >
        Content
      </MotionTooltip>
    ) : null}
  </AnimatePresence>
</TooltipTrigger>
1133
Alex Carpenter @alexcarpenter.me · 12/02/2025
IBMOC Issue 002 // Matthew Spade - Digital Content Creator based in Blackpool, UK, specializing in Design, Interiors, Personal Style, Lifestyle and Travel, with an emphasis on the creative community, discovery of smaller brands and culture. ibrewmyown.coffee/interviews/m...
Coffee on counter top
Espresso machine with cup under neath spout.Espresso on table in between a candle and magazine titled SOLO
010