Packages

phoenix_kit

1.7.161
1.7.207 1.7.206 1.7.205 1.7.204 1.7.203 1.7.202 1.7.201 1.7.200 1.7.199 1.7.198 1.7.197 1.7.196 1.7.194 1.7.193 1.7.192 1.7.191 1.7.190 1.7.189 1.7.187 1.7.186 1.7.185 1.7.184 1.7.183 1.7.182 1.7.181 1.7.180 1.7.179 1.7.178 1.7.177 1.7.176 1.7.175 1.7.174 1.7.173 1.7.172 1.7.171 1.7.170 1.7.169 1.7.168 1.7.167 1.7.166 1.7.165 1.7.164 1.7.162 1.7.161 1.7.160 1.7.159 1.7.157 1.7.156 1.7.155 1.7.154 1.7.153 1.7.152 1.7.151 1.7.150 1.7.149 1.7.146 1.7.145 1.7.144 1.7.143 1.7.138 1.7.133 1.7.132 1.7.131 1.7.130 1.7.128 1.7.126 1.7.125 1.7.121 1.7.120 1.7.119 1.7.118 1.7.117 1.7.116 1.7.115 1.7.114 1.7.113 1.7.112 1.7.111 1.7.110 1.7.109 1.7.108 1.7.107 1.7.106 1.7.105 1.7.104 1.7.103 1.7.102 1.7.101 1.7.100 1.7.99 1.7.98 1.7.97 1.7.96 1.7.95 1.7.94 1.7.93 1.7.92 1.7.91 1.7.90 1.7.89 1.7.88 1.7.87 1.7.86 1.7.85 1.7.84 1.7.83 1.7.82 1.7.81 1.7.80 1.7.79 1.7.78 1.7.77 1.7.76 1.7.75 1.7.74 1.7.71 1.7.70 1.7.69 1.7.66 1.7.65 1.7.64 1.7.63 1.7.62 1.7.61 1.7.59 1.7.58 1.7.57 1.7.56 1.7.55 1.7.54 1.7.53 1.7.52 1.7.51 1.7.49 1.7.44 1.7.43 1.7.42 1.7.41 1.7.39 1.7.38 1.7.37 1.7.36 1.7.34 1.7.33 1.7.31 1.7.30 1.7.29 1.7.28 1.7.27 1.7.26 1.7.25 1.7.24 1.7.23 1.7.22 1.7.21 1.7.20 1.7.19 1.7.18 1.7.17 1.7.16 1.7.15 1.7.14 1.7.13 1.7.12 1.7.11 1.7.10 1.7.9 1.7.8 1.7.7 1.7.6 1.7.5 1.7.4 1.7.3 1.7.2 1.7.1 1.7.0 1.6.20 1.6.19 1.6.18 1.6.17 1.6.16 1.6.15 1.6.14 1.6.13 1.6.12 1.6.11 1.6.10 1.6.9 1.6.8 1.6.7 1.6.6 1.6.5 1.6.4 1.6.3 1.5.2 1.5.1 1.5.0 1.4.9 1.4.8 1.4.7 1.4.6 1.4.5 1.4.4 1.4.3 1.4.2 1.4.1 1.4.0 1.3.2 1.3.1 1.3.0 1.2.10 1.2.9 1.2.8 1.2.7 1.2.5 1.2.4 1.2.2 1.2.1 1.2.0 1.1.0 1.0.0

A foundation for building Elixir Phoenix apps — SaaS, social networks, ERP systems, marketplaces, and more

Current section

221 Versions

Jump to

Compare versions

4 files changed
+20 additions
-19 deletions
unknownCHANGELOG.md
File is too large to be displayed (100 KB limit).
  @@ -1,6 +1,6 @@
1 1 {<<"links">>,[{<<"GitHub">>,<<"https://github.com/BeamLabEU/phoenix_kit">>}]}.
2 2 {<<"name">>,<<"phoenix_kit">>}.
3 - {<<"version">>,<<"1.7.160">>}.
3 + {<<"version">>,<<"1.7.161">>}.
4 4 {<<"description">>,
5 5 <<65,32,102,111,117,110,100,97,116,105,111,110,32,102,111,114,32,98,117,105,
6 6 108,100,105,110,103,32,69,108,105,120,105,114,32,80,104,111,101,110,105,
  @@ -807,11 +807,6 @@
807 807 {<<"optional">>,false},
808 808 {<<"requirement">>,<<"~> 1.4">>},
809 809 {<<"repository">>,<<"hexpm">>}],
810 - [{<<"name">>,<<"earmark">>},
811 - {<<"app">>,<<"earmark">>},
812 - {<<"optional">>,false},
813 - {<<"requirement">>,<<"~> 1.4">>},
814 - {<<"repository">>,<<"hexpm">>}],
815 810 [{<<"name">>,<<"yaml_elixir">>},
816 811 {<<"app">>,<<"yaml_elixir">>},
817 812 {<<"optional">>,false},
  @@ -2,7 +2,7 @@ defmodule PhoenixKitWeb.Components.Core.Markdown do
2 2 @moduledoc """
3 3 Renders markdown content safely with consistent styling.
4 4
5 - This component parses markdown to HTML using Earmark, sanitizes the output
5 + This component parses markdown to HTML using MDEx, sanitizes the output
6 6 for XSS prevention, and renders with appropriate styling.
7 7
8 8 ## Usage
  @@ -71,11 +71,11 @@ defmodule PhoenixKitWeb.Components.Core.Markdown do
71 71 defp render_markdown("", _sanitize), do: ""
72 72
73 73 defp render_markdown(content, sanitize) when is_binary(content) do
74 - case Earmark.as_html(content, earmark_options()) do
75 - {:ok, html, _warnings} ->
74 + case MDEx.to_html(content, mdex_options()) do
75 + {:ok, html} ->
76 76 if sanitize, do: HtmlSanitizer.sanitize(html), else: html
77 77
78 - {:error, _html, _errors} ->
78 + {:error, _error} ->
79 79 # Fallback: escape and return as paragraph
80 80 Phoenix.HTML.html_escape(content) |> Phoenix.HTML.safe_to_string()
81 81 end
  @@ -83,12 +83,19 @@ defmodule PhoenixKitWeb.Components.Core.Markdown do
83 83
84 84 defp render_markdown(_other, _sanitize), do: ""
85 85
86 - defp earmark_options do
87 - %Earmark.Options{
88 - code_class_prefix: "language-",
89 - smartypants: true,
90 - gfm: true,
91 - escape: false
92 - }
86 + # Mirrors the previous Earmark configuration:
87 + # * GFM (strikethrough/table/autolink/tasklist)
88 + # * smart typography (was `smartypants: true`)
89 + # * raw HTML passthrough (was `escape: false`) — the default render path
90 + # still runs the result through HtmlSanitizer; only `sanitize={false}`
91 + # (trusted admin content) emits raw HTML.
92 + # Fenced code blocks render as `<code class="language-...">` by default
93 + # (github_pre_lang is off), matching the old `code_class_prefix: "language-"`.
94 + defp mdex_options do
95 + [
96 + extension: [strikethrough: true, table: true, autolink: true, tasklist: true],
97 + parse: [smart: true],
98 + render: [unsafe: true]
99 + ]
93 100 end
94 101 end
  @@ -1,7 +1,7 @@
1 1 defmodule PhoenixKit.MixProject do
2 2 use Mix.Project
3 3
4 - @version "1.7.160"
4 + @version "1.7.161"
5 5 @description "A foundation for building Elixir Phoenix apps — SaaS, social networks, ERP systems, marketplaces, and more"
6 6 @source_url "https://github.com/BeamLabEU/phoenix_kit"
7 7
  @@ -159,7 +159,6 @@ defmodule PhoenixKit.MixProject do
159 159
160 160 # Utilities
161 161 {:jason, "~> 1.4"},
162 - {:earmark, "~> 1.4"},
163 162 {:yaml_elixir, "~> 2.9"},
164 163 {:nimble_csv, "~> 1.2"},
165 164 {:uuidv7, "~> 1.0"},