#Markdown
Surface Markdown
The <#Markdown>
component allows users to write markdown content directly in a Surface template.
The content will be validated and translated to HTML at compile-time.
Heading 3
Heading 2
Heading 1
This text is italic
This text is itatic and bold
Links
Tables
Id | Name | Value |
---|---|---|
1 | The first item | $10,00 |
2 | The second | $1.200,00 |
3 | The Third | $130 |
Lists
- Item 1
-
Item 2
- Subitem 1
- Subitem 2
Note: This
markdown
text was converted intoHTML
at compile-time using the#Markdown
component.
<#Markdown class="content">
### Heading 3
## Heading 2
# Heading 1
---
_This text is italic_
_**This text is itatic and bold**_
---
### Links
* [Source](https://github.com/surface-ui/surface)
* [Docs](https://surface-ui.org/documentation)
### Tables
| Id | Name | Value |
| -------|----------------| ----------:|
| 1 | The first item | $10,00 |
| 2 | The second | $1.200,00 |
| 3 | The Third | $130 |
---
### Lists
1. Item 1
2. Item 2
* Subitem 1
* Subitem 2
---
> **Note**: This `markdown` text was
> converted into `HTML` at compile-time
> using the `#Markdown` component.
</#Markdown>
A simple Surface macro component that converts markdown into HTML at compile-time.
Installation
Add surface_markdown
to your list of dependencies in mix.exs
:
def deps do
[
{:surface_markdown, "~> 0.7.0"}
]
end
Global configuration (optional)
A set of global options you can set in config.exs
. Available options are:
-
default_class
- The default CSS class for the wrapping<div>
. It can be overridden using propertyclass
. -
default_opts
- The default set of options to be passed down toEarmark.as_html/2
. It can be overridden using propertyopts
.
config :surface, :components, [
{
Surface.Components.Markdown,
default_class: "my-markdown-class",
default_opts: [
compact_output: false,
...
]
}
]
CSS Styling
Some CSS libs define their own styles for tags like <p>
, <ul>
, <ol>
, <strong>
,
<h1>
to <h6>
, etc. This can make the rendered HTML look different from what you
expect. One way to fix that is to customize the CSS class on the outer <div>
of the
generated code.
For instance, in Bulma
, you can use the class content
to handle WYSIWYG content
like the HTML generated by the Markdown component.
You can have a default class applied globally using the default_class
config:
config :surface, :components, [
{Surface.Components.Markdown, default_class: "content"}
]
Or you can set/override it individually for each <#Markdown>
instance using
the class
property.
<#Markdown class="content">
...
</#Markdown>
License
Copyright (c) 2021, Marlus Saraiva.
Surface source code is licensed under the MIT License.