mirror of
https://github.com/tiennm99/HugoBlox-kit.git
synced 2026-10-20 02:16:40 +00:00
Also, updated workspace config in hugo-blox-builder.code-workspace: Removed disused plugins Map all HTML/HTM under modules, templates, and test to the hugo language for proper templating support. Enable Tailwind IntelliSense within Hugo files and Alpine class bindings via tailwindCSS.includeLanguages and tailwindCSS.experimental.classRegex. Re-enable HTML formatting for non-Hugo files using Prettier while keeping Hugo formatting off. Recommend the Tailwind CSS VS Code extension alongside existing recommendations.
120 lines
7.4 KiB
HTML
120 lines
7.4 KiB
HTML
{{/* Hugo Blox: Experience */}}
|
||
{{/* Documentation: https://hugoblox.com/blocks/ */}}
|
||
{{/* License: https://github.com/HugoBlox/hugo-blox-builder/blob/main/LICENSE.md */}}
|
||
|
||
{{/* Initialise */}}
|
||
{{ $page := .wcPage }}
|
||
{{ $block := .wcBlock }}
|
||
{{ $text := $block.content.text | emojify | $page.RenderString }}
|
||
|
||
{{ $author := $block.content.username | default "me" }}
|
||
{{ $profile := partial "functions/get_author_profile" $author }}
|
||
{{ $is_education_first := $block.design.is_education_first | default false }}
|
||
|
||
<div class="flex flex-col items-center mx-auto w-full max-w-prose justify-center">
|
||
<!-- <article class="prose prose-slate lg:prose-xl dark:prose-invert">-->
|
||
<!-- {{ with $block.content.title }}-->
|
||
<!-- <h2>{{ . }}</h2>-->
|
||
<!-- {{end}}-->
|
||
<!-- </article>-->
|
||
|
||
<!-- Need Gap >= 3 when flex-row due to negative margin on cols (-start-3) -->
|
||
<div class="flex flex-col lg:gap-x-6 w-full px-6 sm:px-0 {{ if $is_education_first }}flex-col-reverse{{end}}">
|
||
|
||
{{ $experience := or $profile.experience $profile.work }}
|
||
{{ if $experience }}
|
||
<div class="w-full">
|
||
<h3 class="mb-6 text-3xl font-bold text-gray-900 dark:text-white text-center">{{ i18n "experience" | default "Experience" }}</h3>
|
||
<ol class="relative w-full border-s border-gray-200 dark:border-gray-700">
|
||
{{ range $idx, $key := $experience }}
|
||
<li class="mb-10 ms-6">
|
||
<span class="absolute flex items-center justify-center w-6 h-6 bg-primary-100 rounded-full -start-3 ring-8 ring-white dark:ring-gray-900 dark:bg-primary-900">
|
||
{{ if .icon }}
|
||
{{ partial "functions/get_icon" (dict "name" .icon "attributes" "class='w-5 h-5'") }}
|
||
{{else}}
|
||
<svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 256 256" class="w-5 h-5 text-primary-800 dark:text-primary-300"><path d="M216,56H176V48a24,24,0,0,0-24-24H104A24,24,0,0,0,80,48v8H40A16,16,0,0,0,24,72V200a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V72A16,16,0,0,0,216,56ZM96,48a8,8,0,0,1,8-8h48a8,8,0,0,1,8,8v8H96ZM216,72v41.61A184,184,0,0,1,128,136a184.07,184.07,0,0,1-88-22.38V72Zm0,128H40V131.64A200.19,200.19,0,0,0,128,152a200.25,200.25,0,0,0,88-20.37V200ZM104,112a8,8,0,0,1,8-8h32a8,8,0,0,1,0,16H112A8,8,0,0,1,104,112Z"></path></svg>
|
||
{{end}}
|
||
</span>
|
||
<h3 class="flex items-center mb-1 text-lg font-semibold text-gray-900 dark:text-white">{{ .role | default .position }}
|
||
<!-- <span class="bg-blue-100 text-blue-800 text-sm font-medium me-2 px-2.5 py-0.5 rounded dark:bg-blue-900 dark:text-blue-300 ms-3">Latest</span>-->
|
||
</h3>
|
||
<span class="block mb-2 text-sm font-normal leading-none text-gray-500 dark:text-gray-300">{{ .org | default .company_name }}</span>
|
||
<time class="block mb-3 text-sm font-normal leading-none text-gray-500 dark:text-gray-300">
|
||
{{ $start := or .start .date_start }}
|
||
{{ $end := or .end .date_end }}
|
||
{{ if $start }}
|
||
{{ (time $start) | time.Format ($block.design.date_format | default "January 2006") }} –
|
||
{{ end }}
|
||
{{ if $end }}
|
||
{{ (time $end) | time.Format ($block.design.date_format | default "January 2006") }}
|
||
{{ else }}
|
||
{{ i18n "present" | default "Present" }}
|
||
{{end}}
|
||
</time>
|
||
<div class="mb-4 text-base font-normal text-gray-500 dark:text-gray-300 prose max-w-none prose-slate dark:prose-invert">{{.summary | $page.RenderString}}</div>
|
||
|
||
{{ with .button }}
|
||
<a href="{{.url}}" target="_blank" rel="noopener" class="inline-flex items-center gap-2 px-4 py-2 text-sm font-medium text-gray-900 bg-white border border-gray-200 rounded-lg transition-colors hover:bg-gray-100 hover:text-gray-900 focus:z-10 focus:ring-4 focus:outline-none focus:ring-gray-200 focus:text-gray-900 dark:bg-gray-800 dark:text-gray-300 dark:border-gray-600 dark:hover:text-white dark:hover:bg-gray-700 dark:focus:text-white dark:focus:ring-gray-700">
|
||
{{ with .icon }}
|
||
{{ partial "functions/get_icon" (dict "name" . "attributes" "class='w-4 h-4'") }}
|
||
{{ end }}
|
||
{{ .text | default "Learn more" }}
|
||
</a>
|
||
{{ end }}
|
||
|
||
</li>
|
||
{{ end }}
|
||
</ol>
|
||
</div>
|
||
{{ end }}
|
||
|
||
{{ if $profile.education }}
|
||
<div class="w-full">
|
||
<h3 class="mb-6 text-3xl font-bold text-gray-900 dark:text-white text-center">{{ i18n "education" }}</h3>
|
||
<ol class="relative w-full border-s border-gray-200 dark:border-gray-700">
|
||
{{ range $idx, $key := $profile.education }}
|
||
<li class="mb-10 ms-6">
|
||
<span class="absolute flex items-center justify-center w-6 h-6 bg-primary-100 rounded-full -start-3 ring-8 ring-white dark:ring-gray-900 dark:bg-primary-900">
|
||
{{ if .icon }}
|
||
{{ partial "functions/get_icon" (dict "name" .icon "attributes" "class='w-5 h-5 text-primary-800 dark:text-primary-300'") }}
|
||
{{else}}
|
||
<svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 256 256" class="w-5 h-5 text-primary-800 dark:text-primary-300"><path d="M251.76,88.94l-120-64a8,8,0,0,0-7.52,0l-120,64a8,8,0,0,0,0,14.12L32,117.87v48.42a15.91,15.91,0,0,0,4.06,10.65C49.16,191.53,78.51,216,128,216a130,130,0,0,0,48-8.76V240a8,8,0,0,0,16,0V199.51a115.63,115.63,0,0,0,27.94-22.57A15.91,15.91,0,0,0,224,166.29V117.87l27.76-14.81a8,8,0,0,0,0-14.12ZM128,200c-43.27,0-68.72-21.14-80-33.71V126.4l76.24,40.66a8,8,0,0,0,7.52,0L176,143.47v46.34C163.4,195.69,147.52,200,128,200Zm80-33.75a97.83,97.83,0,0,1-16,14.25V134.93l16-8.53ZM188,118.94l-.22-.13-56-29.87a8,8,0,0,0-7.52,14.12L171,128l-43,22.93L25,96,128,41.07,231,96Z"></path></svg>
|
||
{{end}}
|
||
</span>
|
||
<h3 class="flex items-center mb-1 text-lg font-semibold text-gray-900 dark:text-white">{{ .degree | default .area }}
|
||
<!-- <span class="bg-blue-100 text-blue-800 text-sm font-medium me-2 px-2.5 py-0.5 rounded dark:bg-blue-900 dark:text-blue-300 ms-3">Latest</span>-->
|
||
</h3>
|
||
<span class="block mb-2 text-sm font-normal leading-none text-gray-500 dark:text-gray-300">{{ .institution }}</span>
|
||
<time class="block mb-3 text-sm font-normal leading-none text-gray-500 dark:text-gray-300">
|
||
{{ $start := or .start .date_start }}
|
||
{{ $end := or .end .date_end }}
|
||
{{ if $start }}
|
||
{{ (time $start) | time.Format ($block.design.date_format | default "January 2006") }} –
|
||
{{ end }}
|
||
{{ if $end }}
|
||
{{ (time $end) | time.Format ($block.design.date_format | default "January 2006") }}
|
||
{{ else }}
|
||
{{ i18n "present" | default "Present" }}
|
||
{{end}}
|
||
</time>
|
||
<div class="mb-4 text-base font-normal text-gray-500 dark:text-gray-300 prose max-w-none prose-slate dark:prose-invert">{{.summary | $page.RenderString}}</div>
|
||
|
||
{{ with .button }}
|
||
<a href="{{.url}}" target="_blank" rel="noopener" class="inline-flex items-center gap-2 px-4 py-2 text-sm font-medium text-gray-900 bg-white border border-gray-200 rounded-lg transition-colors hover:bg-gray-100 hover:text-gray-900 focus:z-10 focus:ring-4 focus:outline-none focus:ring-gray-200 focus:text-gray-900 dark:bg-gray-800 dark:text-gray-300 dark:border-gray-600 dark:hover:text-white dark:hover:bg-gray-700 dark:focus:text-white dark:focus:ring-gray-700">
|
||
{{ with .icon }}
|
||
{{ partial "functions/get_icon" (dict "name" . "attributes" "class='w-4 h-4'") }}
|
||
{{ end }}
|
||
{{ .text | default "Learn more" }}
|
||
</a>
|
||
{{ end }}
|
||
|
||
</li>
|
||
{{ end }}
|
||
</ol>
|
||
</div>
|
||
{{ end }}
|
||
|
||
</div>
|
||
|
||
</div>
|