Amethyst Haze
tweakcnApache-2.0Light and dark · bothMedium · mediumPurple · purpleMedium · mediumSerif · serifGeneral · generalLanding · landingProfessional · professional
A theme based on the Amethyst Haze color palette.
NNorthwind
Product · PricingSpecimen
Make the work feel finished
One interface, dressed in this style. Compare type, color, radius, and density.
128
Active
4.8
Score
12ms
Edge
Attribution
"Amethyst Haze" from https://github.com/jnsahaj/tweakcn (Apache-2.0). © jnsahaj. r/themes/amethyst-haze.json @ a3b47b37cba9.
https://github.com/jnsahaj/tweakcn · r/themes/amethyst-haze.json · a3b47b37cba9 · © jnsahaj
Prompt
Design a user interface in the "Amethyst Haze" style. A theme based on the Amethyst Haze color palette. Apply these tokens to every surface. Do not invent a second palette. - Background oklch(0.9777 0.0041 301.4256), foreground oklch(0.3651 0.0325 287.0807) - Primary oklch(0.6104 0.0767 299.7335) on oklch(0.9777 0.0041 301.4256) - Accent oklch(0.7889 0.0802 359.9375), muted oklch(0.8906 0.0139 299.7754), border oklch(0.8447 0.0226 300.1421) - Radius 0.5rem, type Geist, sans-serif - Shadow: 0 1px 2px rgba(0,0,0,0.06), 0 8px 24px rgba(0,0,0,0.04) "Amethyst Haze" from https://github.com/jnsahaj/tweakcn (Apache-2.0). © jnsahaj. r/themes/amethyst-haze.json @ a3b47b37cba9. powered by Styledex — https://styledex.dev
Tokens
DTCG
{
"$schema": "https://www.designtokens.org/schemas/2025.10/format.json",
"$description": "Amethyst Haze. \"Amethyst Haze\" from https://github.com/jnsahaj/tweakcn (Apache-2.0). © jnsahaj. r/themes/amethyst-haze.json @ a3b47b37cba9.",
"$extensions": {
"dev.styledex": {
"id": "tweakcn-amethyst-haze",
"license": "Apache-2.0",
"attribution": "\"Amethyst Haze\" from https://github.com/jnsahaj/tweakcn (Apache-2.0). © jnsahaj. r/themes/amethyst-haze.json @ a3b47b37cba9.",
"banner": "powered by Styledex — https://styledex.dev"
}
},
"color": {
"background": {
"$type": "color",
"$value": "oklch(0.9777 0.0041 301.4256)"
},
"foreground": {
"$type": "color",
"$value": "oklch(0.3651 0.0325 287.0807)"
},
"card": {
"$type": "color",
"$value": "oklch(1.0000 0 0)"
},
"card-foreground": {
"$type": "color",
"$value": "oklch(0.3651 0.0325 287.0807)"
},
"primary": {
"$type": "color",
"$value": "oklch(0.6104 0.0767 299.7335)"
},
"primary-foreground": {
"$type": "color",
"$value": "oklch(0.9777 0.0041 301.4256)"
},
"secondary": {
"$type": "color",
"$value": "oklch(0.8957 0.0265 300.2416)"
},
"secondary-foreground": {
"$type": "color",
"$value": "oklch(0.3651 0.0325 287.0807)"
},
"accent": {
"$type": "color",
"$value": "oklch(0.7889 0.0802 359.9375)"
},
"accent-foreground": {
"$type": "color",
"$value": "oklch(0.3394 0.0441 1.7583)"
},
"muted": {
"$type": "color",
"$value": "oklch(0.8906 0.0139 299.7754)"
},
"muted-foreground": {
"$type": "color",
"$value": "oklch(0.5288 0.0375 290.7895)"
},
"border": {
"$type": "color",
"$value": "oklch(0.8447 0.0226 300.1421)"
},
"destructive": {
"$type": "color",
"$value": "oklch(0.6332 0.1578 22.6734)"
},
"ring": {
"$type": "color",
"$value": "oklch(0.6104 0.0767 299.7335)"
}
},
"font": {
"sans": {
"$type": "fontFamily",
"$value": [
"Geist",
"sans-serif"
]
},
"serif": {
"$type": "fontFamily",
"$value": [
"Lora",
"Georgia",
"serif"
]
},
"mono": {
"$type": "fontFamily",
"$value": [
"Fira Code",
"Courier New",
"monospace"
]
}
},
"radius": {
"base": {
"$type": "dimension",
"$value": "0.5rem"
}
},
"spacing": {
"base": {
"$type": "dimension",
"$value": "0.25rem"
}
},
"shadow": {
"base": {
"$type": "shadow",
"$value": "0 1px 2px rgba(0,0,0,0.06), 0 8px 24px rgba(0,0,0,0.04)"
}
},
"dark": {
"color": {
"background": {
"$type": "color",
"$value": "oklch(0.2166 0.0215 292.8474)"
},
"foreground": {
"$type": "color",
"$value": "oklch(0.9053 0.0245 293.5570)"
},
"card": {
"$type": "color",
"$value": "oklch(0.2544 0.0301 292.7315)"
},
"card-foreground": {
"$type": "color",
"$value": "oklch(0.9053 0.0245 293.5570)"
},
"primary": {
"$type": "color",
"$value": "oklch(0.7058 0.0777 302.0489)"
},
"primary-foreground": {
"$type": "color",
"$value": "oklch(0.2166 0.0215 292.8474)"
},
"secondary": {
"$type": "color",
"$value": "oklch(0.4604 0.0472 295.5578)"
},
"secondary-foreground": {
"$type": "color",
"$value": "oklch(0.9053 0.0245 293.5570)"
},
"accent": {
"$type": "color",
"$value": "oklch(0.3181 0.0321 308.6149)"
},
"accent-foreground": {
"$type": "color",
"$value": "oklch(0.8391 0.0692 2.6681)"
},
"muted": {
"$type": "color",
"$value": "oklch(0.2560 0.0320 294.8380)"
},
"muted-foreground": {
"$type": "color",
"$value": "oklch(0.6974 0.0282 300.0614)"
},
"border": {
"$type": "color",
"$value": "oklch(0.3063 0.0359 293.3367)"
},
"destructive": {
"$type": "color",
"$value": "oklch(0.6875 0.1420 21.4566)"
},
"ring": {
"$type": "color",
"$value": "oklch(0.7058 0.0777 302.0489)"
}
}
}
}
CSS
/* powered by Styledex — https://styledex.dev */
/* "Amethyst Haze" from https://github.com/jnsahaj/tweakcn (Apache-2.0). © jnsahaj. r/themes/amethyst-haze.json @ a3b47b37cba9. */
:root {
--background: oklch(0.9777 0.0041 301.4256);
--foreground: oklch(0.3651 0.0325 287.0807);
--card: oklch(1.0000 0 0);
--card-foreground: oklch(0.3651 0.0325 287.0807);
--primary: oklch(0.6104 0.0767 299.7335);
--primary-foreground: oklch(0.9777 0.0041 301.4256);
--secondary: oklch(0.8957 0.0265 300.2416);
--secondary-foreground: oklch(0.3651 0.0325 287.0807);
--accent: oklch(0.7889 0.0802 359.9375);
--accent-foreground: oklch(0.3394 0.0441 1.7583);
--muted: oklch(0.8906 0.0139 299.7754);
--muted-foreground: oklch(0.5288 0.0375 290.7895);
--border: oklch(0.8447 0.0226 300.1421);
--destructive: oklch(0.6332 0.1578 22.6734);
--ring: oklch(0.6104 0.0767 299.7335);
--radius: 0.5rem;
--font-sans: Geist, sans-serif;
--font-serif: "Lora", Georgia, serif;
--font-mono: "Fira Code", "Courier New", monospace;
--spacing: 0.25rem;
--shadow: 0 1px 2px rgba(0,0,0,0.06), 0 8px 24px rgba(0,0,0,0.04);
}
.dark {
--background: oklch(0.2166 0.0215 292.8474);
--foreground: oklch(0.9053 0.0245 293.5570);
--card: oklch(0.2544 0.0301 292.7315);
--card-foreground: oklch(0.9053 0.0245 293.5570);
--primary: oklch(0.7058 0.0777 302.0489);
--primary-foreground: oklch(0.2166 0.0215 292.8474);
--secondary: oklch(0.4604 0.0472 295.5578);
--secondary-foreground: oklch(0.9053 0.0245 293.5570);
--accent: oklch(0.3181 0.0321 308.6149);
--accent-foreground: oklch(0.8391 0.0692 2.6681);
--muted: oklch(0.2560 0.0320 294.8380);
--muted-foreground: oklch(0.6974 0.0282 300.0614);
--border: oklch(0.3063 0.0359 293.3367);
--destructive: oklch(0.6875 0.1420 21.4566);
--ring: oklch(0.7058 0.0777 302.0489);
--radius: 0.5rem;
--font-sans: Geist, sans-serif;
--font-serif: "Lora", Georgia, serif;
--font-mono: "Fira Code", "Courier New", monospace;
--spacing: 0.25rem;
--shadow: 0 1px 2px rgba(0,0,0,0.06), 0 8px 24px rgba(0,0,0,0.04);
}
Tailwind
/* powered by Styledex — https://styledex.dev */
/* "Amethyst Haze" from https://github.com/jnsahaj/tweakcn (Apache-2.0). © jnsahaj. r/themes/amethyst-haze.json @ a3b47b37cba9. */
/** Tailwind theme extend for Amethyst Haze (tweakcn-amethyst-haze) */
module.exports = {
"theme": {
"extend": {
"colors": {
"background": "oklch(0.9777 0.0041 301.4256)",
"foreground": "oklch(0.3651 0.0325 287.0807)",
"card": "oklch(1.0000 0 0)",
"primary": "oklch(0.6104 0.0767 299.7335)",
"primary-foreground": "oklch(0.9777 0.0041 301.4256)",
"secondary": "oklch(0.8957 0.0265 300.2416)",
"accent": "oklch(0.7889 0.0802 359.9375)",
"muted": "oklch(0.8906 0.0139 299.7754)",
"border": "oklch(0.8447 0.0226 300.1421)",
"destructive": "oklch(0.6332 0.1578 22.6734)",
"ring": "oklch(0.6104 0.0767 299.7335)"
},
"borderRadius": {
"lg": "0.5rem"
},
"fontFamily": {
"sans": [
"Geist",
"sans-serif"
],
"serif": [
"Lora",
"Georgia",
"serif"
],
"mono": [
"Fira Code",
"Courier New",
"monospace"
]
},
"boxShadow": {
"styledex": "0 1px 2px rgba(0,0,0,0.06), 0 8px 24px rgba(0,0,0,0.04)"
}
}
}
};
shadcn
/* powered by Styledex — https://styledex.dev */
/* "Amethyst Haze" from https://github.com/jnsahaj/tweakcn (Apache-2.0). © jnsahaj. r/themes/amethyst-haze.json @ a3b47b37cba9. */
@layer base {
:root {
--background: oklch(0.9777 0.0041 301.4256);
--foreground: oklch(0.3651 0.0325 287.0807);
--card: oklch(1.0000 0 0);
--card-foreground: oklch(0.3651 0.0325 287.0807);
--primary: oklch(0.6104 0.0767 299.7335);
--primary-foreground: oklch(0.9777 0.0041 301.4256);
--secondary: oklch(0.8957 0.0265 300.2416);
--secondary-foreground: oklch(0.3651 0.0325 287.0807);
--accent: oklch(0.7889 0.0802 359.9375);
--accent-foreground: oklch(0.3394 0.0441 1.7583);
--muted: oklch(0.8906 0.0139 299.7754);
--muted-foreground: oklch(0.5288 0.0375 290.7895);
--border: oklch(0.8447 0.0226 300.1421);
--destructive: oklch(0.6332 0.1578 22.6734);
--ring: oklch(0.6104 0.0767 299.7335);
--radius: 0.5rem;
--font-sans: Geist, sans-serif;
--font-serif: "Lora", Georgia, serif;
--font-mono: "Fira Code", "Courier New", monospace;
--spacing: 0.25rem;
--shadow: 0 1px 2px rgba(0,0,0,0.06), 0 8px 24px rgba(0,0,0,0.04);
}
.dark {
--background: oklch(0.2166 0.0215 292.8474);
--foreground: oklch(0.9053 0.0245 293.5570);
--card: oklch(0.2544 0.0301 292.7315);
--card-foreground: oklch(0.9053 0.0245 293.5570);
--primary: oklch(0.7058 0.0777 302.0489);
--primary-foreground: oklch(0.2166 0.0215 292.8474);
--secondary: oklch(0.4604 0.0472 295.5578);
--secondary-foreground: oklch(0.9053 0.0245 293.5570);
--accent: oklch(0.3181 0.0321 308.6149);
--accent-foreground: oklch(0.8391 0.0692 2.6681);
--muted: oklch(0.2560 0.0320 294.8380);
--muted-foreground: oklch(0.6974 0.0282 300.0614);
--border: oklch(0.3063 0.0359 293.3367);
--destructive: oklch(0.6875 0.1420 21.4566);
--ring: oklch(0.7058 0.0777 302.0489);
--radius: 0.5rem;
--font-sans: Geist, sans-serif;
--font-serif: "Lora", Georgia, serif;
--font-mono: "Fira Code", "Courier New", monospace;
--spacing: 0.25rem;
--shadow: 0 1px 2px rgba(0,0,0,0.06), 0 8px 24px rgba(0,0,0,0.04);
}
}