chore: 初始化 Hugo 博客项目
Hextra 主题,8 篇文章,支持全文搜索/暗色模式
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
{{- /*
|
||||
A shortcode for displaying a feature card.
|
||||
|
||||
@param {string} title The title of the card.
|
||||
@param {string} subtitle The subtitle of the card.
|
||||
@param {string} class The class of the card.
|
||||
@param {string} image The image of the card.
|
||||
@param {string} imageClass The class of the image.
|
||||
@param {string} style The style of the card.
|
||||
@param {string} icon The icon of the card.
|
||||
@param {string} link The link of the card.
|
||||
|
||||
@example {{< hextra/feature-card title="Feature Card" subtitle="This is a feature card." >}}
|
||||
*/ -}}
|
||||
|
||||
{{- $title := .Get "title" -}}
|
||||
{{- $subtitle := .Get "subtitle" -}}
|
||||
{{- $class := .Get "class" -}}
|
||||
{{- $image := .Get "image" -}}
|
||||
{{- $imageClass := .Get "imageClass" -}}
|
||||
{{- $style := .Get "style" -}}
|
||||
{{- $icon := .Get "icon" -}}
|
||||
{{- $link := .Get "link" -}}
|
||||
|
||||
{{- $external := hasPrefix $link "http" -}}
|
||||
{{- $href := cond (strings.HasPrefix $link "/") ($link | relURL) $link -}}
|
||||
|
||||
{{- if hasPrefix $image "/" -}}
|
||||
{{- $image = relURL (strings.TrimPrefix "/" $image) -}}
|
||||
{{- end -}}
|
||||
|
||||
<a
|
||||
{{ with $link }}href="{{ $href }}" {{ with $external }} target="_blank" rel="noreferrer"{{ end }}{{ end }}
|
||||
{{ with $style }}style="{{ . | safeCSS }}"{{ end }}
|
||||
class="{{ $class }} hextra-feature-card not-prose hx:block hx:relative hx:overflow-hidden hx:rounded-3xl hx:border hx:border-gray-200 hx:hover:border-gray-300 hx:dark:border-neutral-800 hx:dark:hover:border-neutral-700 hx:before:pointer-events-none hx:before:absolute hx:before:inset-0 hx:before:bg-glass-gradient"
|
||||
>
|
||||
<div class="hx:relative hx:w-full hx:p-6">
|
||||
<h3 class="hx:text-2xl hx:font-medium hx:leading-6 hx:mb-2 hx:flex hx:items-center">
|
||||
{{ with $icon -}}
|
||||
<span class="hx:pr-2">
|
||||
{{- partial "utils/icon.html" (dict "name" . "attributes" "height=1.5rem") -}}
|
||||
</span>
|
||||
{{ end -}}
|
||||
<span>{{ $title }}</span>
|
||||
</h3>
|
||||
<p class="hx:text-gray-500 hx:dark:text-gray-400 hx:text-sm hx:leading-6">{{ $subtitle | markdownify }}</p>
|
||||
</div>
|
||||
{{- with $image -}}
|
||||
<img src="{{ . }}" class="hx:absolute hx:max-w-none {{ $imageClass }}" alt="{{ $title }}" />
|
||||
{{- end -}}
|
||||
</a>
|
||||
@@ -0,0 +1,21 @@
|
||||
{{- /*
|
||||
A shortcode for displaying a feature grid.
|
||||
|
||||
@param {string} cols The number of columns.
|
||||
@param {string} style The style of the grid.
|
||||
|
||||
@example {{< hextra/feature-grid cols="3" >}}{{< /hextra/feature-grid >}}
|
||||
*/ -}}
|
||||
|
||||
{{- $cols := .Get "cols" | default 3 -}}
|
||||
{{- $style := .Get "style" | default "" -}}
|
||||
|
||||
{{- $css := printf "--hextra-feature-grid-cols: %v; %s" $cols $style -}}
|
||||
|
||||
|
||||
<div
|
||||
class="hextra-feature-grid hx:grid hx:sm:max-lg:grid-cols-2 hx:max-sm:grid-cols-1 hx:gap-4 hx:w-full not-prose"
|
||||
{{ with $css }}style="{{ . | safeCSS }}"{{ end }}
|
||||
>
|
||||
{{ .Inner }}
|
||||
</div>
|
||||
@@ -0,0 +1,24 @@
|
||||
{{- /*
|
||||
A shortcode for rendering a badge with a link.
|
||||
|
||||
@param {string} link The link of the badge.
|
||||
@param {string} class The class of the badge.
|
||||
@param {string} style The style of the badge.
|
||||
|
||||
@example {{< hextra/hero-badge >}}{{< /hextra/hero-badge >}}
|
||||
*/ -}}
|
||||
|
||||
{{- $link := .Get "link" -}}
|
||||
{{- $external := hasPrefix $link "http" -}}
|
||||
{{- $href := cond (hasPrefix $link "/") ($link | relURL) $link -}}
|
||||
{{- $class := .Get "class" }}
|
||||
{{- $style := .Get "style" -}}
|
||||
|
||||
<a
|
||||
{{ if $link }}href="{{ $href }}"{{ end }}
|
||||
class="{{ $class }} not-prose hx:inline-flex hx:items-center hx:rounded-full hx:gap-2 hx:px-3 hx:py-1 hx:text-xs hx:text-gray-600 hx:dark:text-gray-400 hx:bg-gray-100 hx:dark:bg-neutral-800 hx:border-gray-200 hx:dark:border-neutral-800 hx:border hx:hover:border-gray-400 hx:dark:hover:text-gray-50 hx:dark:hover:border-gray-600 hx:transition-all hx:ease-in hx:duration-200"
|
||||
{{ with $style }}style="{{ . | safeCSS }}"{{ end }}
|
||||
{{ if $external }}target="_blank" rel="noreferrer"{{ end -}}
|
||||
>
|
||||
{{ .Inner | markdownify }}
|
||||
</a>
|
||||
@@ -0,0 +1,25 @@
|
||||
{{- /*
|
||||
A shortcode for rendering a button with a link.
|
||||
|
||||
@param {string} link The link of the button.
|
||||
@param {string} text The text of the button.
|
||||
@param {string} style The style of the button.
|
||||
|
||||
@example {{< hextra/hero-button text="Get Started" link="docs" >}}
|
||||
*/ -}}
|
||||
|
||||
{{- $link := .Get "link" -}}
|
||||
{{- $text := .Get "text" -}}
|
||||
{{- $style := .Get "style" -}}
|
||||
|
||||
{{- $external := hasPrefix $link "http" -}}
|
||||
{{- $href := cond (hasPrefix $link "/") ($link | relURL) $link -}}
|
||||
|
||||
<a
|
||||
href="{{ $href }}"
|
||||
class="not-prose hx:font-medium hx:cursor-pointer hx:px-6 hx:py-3 hx:rounded-full hx:text-center hx:text-white hx:inline-block hx:bg-primary-600 hx:hover:bg-primary-700 hx:hextra-focus-visible hx:dark:bg-primary-600 hx:dark:hover:bg-primary-700 hx:transition-all hx:ease-in hx:duration-200"
|
||||
{{ with $style }}style="{{ . | safeCSS }}"{{ end }}
|
||||
{{ if $external }}target="_blank" rel="noreferrer"{{ end -}}
|
||||
>
|
||||
{{- $text -}}
|
||||
</a>
|
||||
@@ -0,0 +1,56 @@
|
||||
{{- /*
|
||||
A simple hero container with an image on the left side.
|
||||
|
||||
@param {string} class The class of the container.
|
||||
@param {string} cols The number of columns (default: 2).
|
||||
@param {string} image The image of the container.
|
||||
@param {bool} imageCard Whether to display the image as a card (default: false).
|
||||
@param {string} imageClass The class of the image.
|
||||
@param {string} imageLink The link of the image.
|
||||
@param {string} imageStyle The style of the image.
|
||||
@param {string} imageTitle The title of the image.
|
||||
@param {int} imageWidth The width of the image (default: 350).
|
||||
@param {int} imageHeight The height of the image (default: 350).
|
||||
@param {string} style The style of the container.
|
||||
|
||||
@example {{< hextra/hero-container image="image.png" imageLink="https://example.com" imageTitle="Example Image" >}}
|
||||
*/ -}}
|
||||
|
||||
{{- $class := .Get "class" -}}
|
||||
{{- $cols := .Get "cols" | default 2 -}}
|
||||
{{- $image := .Get "image" -}}
|
||||
{{- $imageCard := .Get "imageCard" | default false -}}
|
||||
{{- $imageClass := .Get "imageClass" -}}
|
||||
{{- $imageLink := .Get "imageLink" -}}
|
||||
{{- $imageLinkExternal := hasPrefix $imageLink "http" -}}
|
||||
{{- $imageStyle := .Get "imageStyle" -}}
|
||||
{{- $imageTitle := .Get "imageTitle" -}}
|
||||
{{- $imageWidth := .Get "imageWidth" | default 350 -}}
|
||||
{{- $imageHeight := .Get "imageHeight" | default 350 -}}
|
||||
{{- $style := .Get "style" -}}
|
||||
|
||||
{{- $css := printf "--hextra-feature-grid-cols: %v; %s" $cols $style -}}
|
||||
{{- $href := cond (hasPrefix $imageLink "/") ($imageLink | relURL) $imageLink -}}
|
||||
{{- if hasPrefix $image "/" -}}
|
||||
{{- $image = relURL (strings.TrimPrefix "/" $image) -}}
|
||||
{{- end -}}
|
||||
|
||||
<div
|
||||
class="{{ $class }} hextra-feature-grid hx:grid hx:sm:max-lg:grid-cols-2 hx:max-sm:grid-cols-1 hx:gap-4 hx:w-full not-prose"
|
||||
{{ with $css }}style="{{ . | safeCSS }}"{{ end }}
|
||||
>
|
||||
<div class="hx:w-full">
|
||||
{{ .Inner }}
|
||||
</div>
|
||||
{{- with $image }}
|
||||
<div class="hx:mx-auto">
|
||||
<a
|
||||
{{ with $imageLink }}href="{{ $href }}" {{ with $imageLinkExternal }} target="_blank" rel="noreferrer"{{ end }}{{ end }}
|
||||
{{ with $imageStyle }}style="{{ . | safeCSS }}"{{ end }}
|
||||
class="{{ $imageClass }} {{ if $imageCard }}hextra-feature-card not-prose hx:block hx:relative hx:p-6 hx:overflow-hidden hx:rounded-3xl hx:border hx:border-gray-200 hx:hover:border-gray-300 hx:dark:border-neutral-800 hx:dark:hover:border-neutral-700 hx:before:pointer-events-none hx:before:absolute hx:before:inset-0 hx:before:bg-glass-gradient{{ end }}"
|
||||
>
|
||||
<img src="{{ $image }}" width="{{ $imageWidth }}" height="{{ $imageHeight }}" {{ with $imageTitle }}alt="{{ $imageTitle }}"{{ end }}/>
|
||||
</a>
|
||||
</div>
|
||||
{{ end -}}
|
||||
</div>
|
||||
@@ -0,0 +1,16 @@
|
||||
{{- /*
|
||||
A shortcode for displaying a hero headline.
|
||||
|
||||
@param {string} style The style of the headline.
|
||||
|
||||
@example {{< hextra/hero-headline >}}{{< /hextra/hero-headline >}}
|
||||
*/ -}}
|
||||
|
||||
{{- $style := .Get "style" -}}
|
||||
|
||||
<h1
|
||||
class="not-prose hx:text-4xl hx:font-bold hx:leading-none hx:tracking-tighter hx:md:text-5xl hx:py-2 hx:bg-clip-text hx:text-transparent hx:bg-gradient-to-r hx:from-gray-900 hx:to-gray-600 hx:dark:from-gray-100 hx:dark:to-gray-400"
|
||||
{{ with $style }}style="{{ . | safeCSS }}"{{ end }}
|
||||
>
|
||||
{{ .Inner | markdownify }}
|
||||
</h1>
|
||||
@@ -0,0 +1,20 @@
|
||||
{{- /*
|
||||
A simple hero section with a heading and optional style.
|
||||
|
||||
@param {string} heading The heading level (default: h2).
|
||||
@param {string} style The style of the heading.
|
||||
@param {string} content The content of the heading.
|
||||
|
||||
@example {{< hextra/hero-section heading="h3" >}}{{< /hextra/hero-section >}}>
|
||||
*/ -}}
|
||||
|
||||
{{- $style := .Get "style" -}}
|
||||
{{- $heading := int (strings.TrimPrefix "h" (.Get "heading" | default "h2")) -}}
|
||||
{{- $size := cond (ge $heading 4) "xl" (cond (eq $heading 3) "2xl" "4xl") -}}
|
||||
|
||||
<h{{ $heading }}
|
||||
class="not-prose hx:text-{{ $size }} hx:font-bold hx:leading-none hx:tracking-tighter hx:md:text-3xl hx:py-2 hx:bg-clip-text hx:text-transparent hx:bg-gradient-to-r hx:from-gray-900 hx:to-gray-600 hx:dark:from-gray-100 hx:dark:to-gray-400"
|
||||
{{ with $style }}style="{{ . | safeCSS }}"{{ end }}
|
||||
>
|
||||
{{ .Inner | markdownify }}
|
||||
</h{{ $heading }}>
|
||||
@@ -0,0 +1,16 @@
|
||||
{{- /*
|
||||
A shortcode for displaying a hero subtitle.
|
||||
|
||||
@param {string} style The style of the subtitle.
|
||||
|
||||
@example {{< hextra/hero-subtitle >}}{{< /hextra/hero-subtitle >}}
|
||||
*/ -}}
|
||||
|
||||
{{- $style := .Get "style" -}}
|
||||
|
||||
<p
|
||||
class="not-prose hx:text-xl hx:text-gray-600 hx:dark:text-gray-400 hx:sm:text-xl"
|
||||
{{ with $style }}style="{{ . | safeCSS }}"{{ end }}
|
||||
>
|
||||
{{ .Inner | markdownify }}
|
||||
</p>
|
||||
Reference in New Issue
Block a user