<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/svhapes@0.2.2/dist/svhapes.min.css">
A deliberately misspelled CSS shape library
Better edges.
Zero tracing.
Smooth, responsive containers you can copy, include, or ask an agent to use. No dependencies. No framework. No pointy little nipples.
One file if you want it
Include the library—or steal one shape.
Named classes are the fastest path. Every catalog card also carries complete standalone CSS, including its rounded fallback.
<div class="svhape-shadow">
<div class="svhape svhape--golden-tide svhape--padded">
Your content
</div>
</div>
Motion, with guardrails
Animate the wrapper. Morph the path only when it can interpolate.
The safest motion is a transform on the unclipped wrapper. Direct contour morphing also works, but only when both shapes use the same command sequence and control-point count.
01 / FLOAT
Animate the wrapper, not the clipped surface. Shadows and focus rings stay intact.
02 / MORPH
Use matching shape() command lists for a smooth contour change. Svhapes keeps the math explicit.
03 / INTERACT
Give cards a small lift on hover and keyboard focus. Reduced-motion users get a static surface.
Compatibility rule: arbitrary Svhape IDs are not guaranteed to morph into one another. Use wrapper transforms for catalog-to-catalog transitions, or generate two same-anchor shapes yourself.
Geometry helpers
Generate the interesting edge.
Fillet corners, repeat a measured rhythm, or start with a squircle. Each recipe stays in the same normalized coordinate system and is ready to paste into a project.
01 / FILLET
Round every corner with one responsive ratio instead of calculating entry points by hand.
02 / REPEAT
Give all four edges the same number of beats, or switch to the lower-level API for asymmetry.
03 / SUPERELLIPSE
Move from an ellipse to a more rectangular contour with one exponent. Four is a good squircle start.
Inspired by open CSS Shapes conversations about fillets, repeating segments, and superellipses. These helpers generate today’s CSS; they do not wait for browser-level layout features.
The shelf
Pick a silhouette.
No shape fits that filter.
Try a broader family or a different word.
Agentically friendly, for real
No screenshot archaeology required.
Stable IDs, selection metadata, conservative safe insets, exact snippets, and fixed prompts are published beside the visual catalog. Agents can choose a shape without scraping this page or hallucinating a path.
svhapes prompt golden-tide --format json
Bring your own points
The math is reusable too.
Pass normalized anchors to the JavaScript API. Svhapes calculates cubic control handles so every segment enters and exits its neighbors smoothly.
// npm install svhapes
import { pointsToShape } from 'svhapes';
const clipPath = pointsToShape([
[5, 8], [50, 3], [95, 8],
[98, 50], [94, 92], [50, 97],
[6, 92], [2, 50]
]);
element.style.clipPath = clipPath;