summaryrefslogtreecommitdiffstats
path: root/site/layouts/shortcodes/example.html
diff options
context:
space:
mode:
Diffstat (limited to 'site/layouts/shortcodes/example.html')
-rw-r--r--site/layouts/shortcodes/example.html47
1 files changed, 47 insertions, 0 deletions
diff --git a/site/layouts/shortcodes/example.html b/site/layouts/shortcodes/example.html
new file mode 100644
index 0000000..c6dcddb
--- /dev/null
+++ b/site/layouts/shortcodes/example.html
@@ -0,0 +1,47 @@
+{{- /*
+ Usage: `example args`
+
+ `args` are all optional and can be one of the following:
+ * id: the `div`'s id - default: ""
+ * class: any extra class(es) to be added to the `div` - default: ""
+ * lang: language used to display the code - default: "html"
+ * show_markup: if the markup should be output in the HTML - default: `true`
+ * show_preview: if the preview should be output in the HTML - default: `true`
+ * stackblitz_add_js: if extra JS snippet should be added to StackBlitz - default: `false`
+*/ -}}
+
+{{- $id := .Get "id" -}}
+{{- $class := .Get "class" -}}
+{{- $lang := .Get "lang" | default "html" -}}
+{{- $stackblitz_add_js := .Get "stackblitz_add_js" | default false -}}
+{{- $show_markup := .Get "show_markup" | default true -}}
+{{- $show_preview := .Get "show_preview" | default true -}}
+{{- $input := .Inner -}}
+
+<div class="bd-example-snippet bd-code-snippet">
+ {{- if eq $show_preview true -}}
+ <div{{ with $id }} id="{{ . }}"{{ end }} class="bd-example{{ with $class }} {{ . }}{{ end }}">
+ {{- $input -}}
+ </div>
+ {{- end -}}
+
+ {{- if eq $show_markup true -}}
+ {{- if eq $show_preview true -}}
+ <div class="d-flex align-items-center highlight-toolbar bg-light ps-3 pe-2 py-1">
+ <small class="font-monospace text-muted text-uppercase">{{- $lang -}}</small>
+ <div class="d-flex ms-auto">
+ <button type="button" class="btn-edit text-nowrap"{{ with $stackblitz_add_js }} data-sb-js-snippet="{{ $stackblitz_add_js }}"{{ end }} title="Try it on StackBlitz">
+ <svg class="bi" role="img" aria-label="Try it"><use xlink:href="#lightning-charge-fill"/></svg>
+ </button>
+ <button type="button" class="btn-clipboard mt-0 me-0" title="Copy to clipboard">
+ <svg class="bi" role="img" aria-label="Copy"><use xlink:href="#clipboard"/></svg>
+ </button>
+ </div>
+ </div>
+ {{- end -}}
+
+ {{- $content := replaceRE `<svg class="bd-placeholder-img(?:-lg)?(?: *?bd-placeholder-img-lg)? ?(.*?)".*?<\/svg>\n` `<img src="..." class="$1" alt="...">` $input -}}
+ {{- $content = replaceRE ` (class=" *?")` "" $content -}}
+ {{- highlight (trim $content "\n") $lang "" -}}
+ {{- end -}}
+</div>