# @unocss/preset-typography Typography Preset for UnoCSS ## Installation ```bash pnpm add @unocss/preset-typography -D ``` ## Usage ```js // unocss.config.js import { defineConfig, presetAttributify, presetTypography, presetUno } from 'unocss' export default defineConfig({ presets: [ presetAttributify(), // required if using attributify mode presetUno(), // required presetTypography(), ], }) ```
With classes With attributes
```html
{{ markdown }}

some text

```
```html
{{ markdown }}

not-prose is only available in class.

```
## Highlight - **Any font size you want** Apply any font size for body you like and `prose` will scale the styles for the respective HTML elements. For instance, `prose text-lg` has body font size `1.125rem` and `h1` will with scale with that size 2.25 times. See [all the supported HTML elements]. [all the supported html elements]: https://github.com/unocss/unocss/blob/main/packages/preset-typography/src/preflights/default.ts - **Any color you like** Apply any color with `prose-${colorName}` by UnoCSS (e.g. `prose-coolgray`, `prose-sky`) since `prose` does not have any color by default. See [all available colors](#colors). For instance, `prose prose-truegray` will 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-invert` will use the inverted colors in the dark mode. - **Your own style, still your style** Styles of elements not within `prose` will stay the same. No style resetting just like UnoCSS. - **Undo with `not` utility** Apply `not-prose` to the elements to undo the typographic styles. For instance, `` will skip the styles by this preset for the `table` element **(NOTE: `not` utility 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](https://github.com/unocss/unocss/blob/main/packages/preset-typography/src/preflights/default.ts). | ### 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 `selectorName` 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` ```ts export interface TypographyOptions { /** * The class name to use the typographic utilities. * To undo the styles to the elements, use it like * `not-${selectorName}` which is by default `not-prose`. * * Note: `not` utility is only available in class. * * @defaultValue `prose` */ selectorName?: string /** * Extend or override CSS selectors with CSS declaration block. * * @defaultValue undefined */ cssExtend?: Record } ``` ### Example ```ts // unocss.config.ts import { defineConfig, presetAttributify, presetUno } from 'unocss' import { presetTypography } from '@unocss/preset-typography' export default defineConfig({ presets: [ presetAttributify(), // required if using attributify mode presetUno(), // required presetTypography({ selectorName: '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 - [TailwindCSS Typography](https://github.com/tailwindlabs/tailwindcss-typography) - [WindiCSS Typography](https://github.com/windicss/windicss/tree/main/src/plugin/typography) ## License MIT License © 2021-PRESENT [Anthony Fu](https://github.com/antfu) MIT License © 2021-PRESENT [Jeff Yang](https://github.com/ydcjeff)