unocss-preset-typography
unocss-preset-typography copied to clipboard
Moved to https://github.com/unocss/unocss/tree/main/packages/preset-typography
Moved to @unocss/preset-typography
Typography Preset for UnoCSS
Installation
npm i unocss-preset-typography unocss --save-dev # with npm
yarn add unocss-preset-typography unocss -D # with yarn
pnpm add unocss-preset-typography unocss -D # with pnpm
Usage
// unocss.config.js
import { presetAttributify, presetUno, defineConfig } from 'unocss'
import { presetTypography } from 'unocss-preset-typography'
export default defineConfig({
presets: [
presetAttributify(), // required if using attributify mode
presetUno(), // required
presetTypography(),
],
})
| With classes | With attributes |
|---|---|
|
|
Highlight
-
Any font size you want
Apply any font size for body you like and
prosewill scale the styles for the respective HTML elements. For instance,prose text-lghas body font size1.125remandh1will with scale with that size 2.25 times. See all the supported HTML elements. -
Any color you like
Apply any color with
prose-${colorName}by UnoCSS (e.g.prose-coolgray,prose-sky) sinceprosedoes not have any color by default. See all available colors. For instance,prose prose-truegraywill use the respective colors for the respective HTML elements. -
Dark mode in ONE utility
Apply typographic dark mode with
prose-invert(background color needs to be handled by users). For instance,prose dark:prose-invertwill use the inverted colors in the dark mode. -
Your own style, still your style
Styles of elements not within
prosewill stay the same. No style resetting just like UnoCSS. -
Undo with
notutilityApply
not-proseto the elements to undo the typographic styles. For instance,<table class="not-prose">will skip the styles by this preset for thetableelement (NOTE:notutility is only usable in class since it is only used in CSS selector & not scanned by UnoCSS).
Utilities
| Rule | Styles by this rule |
|---|---|
prose |
See on GitHub. |
Colors
| Rules (color) |
|---|
prose-rose |
prose-pink |
prose-fuchsia |
prose-purple |
prose-violet |
prose-indigo |
prose-blue |
prose-sky |
prose-cyan |
prose-teal |
prose-emerald |
prose-green |
prose-lime |
prose-yellow |
prose-amber |
prose-orange |
prose-red |
prose-gray |
prose-slate |
prose-zinc |
prose-neutral |
prose-stone |
Configurations
This preset has className and cssExtend configurations for users who like to
override or extend.
The CSS declarations passed to cssExtend will
-
override the built-in styles if the values are conflicting, else
-
be merged deeply with built-in styles.
Type of TypographyOptions
export interface TypographyOptions {
/**
* The class name to use the typographic utilities.
* To undo the styles to the elements, use it like
* `not-${className}` which is by default `not-prose`.
*
* Note: `not` utility is only available in class.
*
* @defaultValue `prose`
*/
className?: string
/**
* Extend or override CSS selectors with CSS declaration block.
*
* @defaultValue undefined
*/
cssExtend?: Record<string, CSSObject>
}
Example
// unocss.config.ts
import { presetAttributify, presetUno, defineConfig } from 'unocss'
import { presetTypography } from 'unocss-preset-typography'
export default defineConfig({
presets: [
presetAttributify(), // required if using attributify mode
presetUno(), // required
presetTypography({
className: 'markdown', // now use like `markdown markdown-gray`, `not-markdown`
// cssExtend is an object with CSS selector as key and
// CSS declaration block as value like writing normal CSS.
cssExtend: {
code: {
color: '#8b5cf6',
},
'a:hover': {
color: '#f43f5e',
},
'a:visited': {
color: '#14b8a6',
},
},
}),
],
})
Acknowledgement
License
MIT