#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
markdowntext was converted intoHTMLat compile-time using the#Markdowncomponent.
<#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.