update the theme

This commit is contained in:
Christoph Cullmann 2025-05-16 21:22:13 +02:00
parent 008abb31c3
commit 3988dc59f8
No known key found for this signature in database
50 changed files with 6947 additions and 6547 deletions

View file

@ -1,5 +0,0 @@
{
"projects": {
"default": "blowfish-21fff"
}
}

View file

@ -0,0 +1,144 @@
**[English](https://github.com/nunocoracao/blowfish/blob/main/README.md) | Indonesian | [简体中文](https://github.com/nunocoracao/blowfish/blob/main/README.zh-cn.md) | [日本語](https://github.com/nunocoracao/blowfish/blob/main/README.ja.md)**
# Blowfish
[![Netlify Status](https://api.netlify.com/api/v1/badges/6e5256d4-3148-4d69-879c-310341020fe9/deploy-status)](https://app.netlify.com/sites/snazzy-dango-efb2ec/deploys)
[![Minimum Hugo Version](https://img.shields.io/static/v1?label=min-HUGO-version&message=0.87.0&color=blue&logo=hugo)](https://github.com/gohugoio/hugo/releases/tag/v0.87.0)
[![GitHub](https://img.shields.io/github/license/nunocoracao/blowfish)](https://github.com/nunocoracao/blowfish/blob/main/LICENSE)
[![Blowfish](https://img.shields.io/badge/Hugo--Themes-@Blowfish-blue)](https://themes.gohugo.io/themes/blowfish/)
![code-size](https://img.shields.io/github/languages/code-size/nunocoracao/blowfish)
Blowfish dirancang sebagai tema yang kuat dan ringan untuk [Hugo](https://gohugo.io). Tema ini dibuat menggunakan Tailwind CSS dengan desain yang bersih dan minimalis, yang mengutamakan konten Anda.
![Tangkapan layar Blowfish](https://github.com/nunocoracao/blowfish/blob/main/images/screenshot.png?raw=true)
🌏 [Situs demo](https://blowfish.page/)
📑 [Dokumentasi tema](https://blowfish.page/docs/)
💎 [Toko Merch](http://tee.pub/lic/qwSlWVBL5zc)
🐛 [Laporan bug & masalah](https://github.com/nunocoracao/blowfish/issues)
💡 [Pertanyaan & permintaan fitur](https://github.com/nunocoracao/blowfish/discussions)
<a href="https://www.buymeacoffee.com/nunocoracao" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Belikan Saya Kopi" style="height: 60px !important;width: 217px !important;" ></a>
<a target="_blank" href="http://tee.pub/lic/qwSlWVBL5zc"><img class="nozoom" src="https://img.buymeacoffee.com/button-api/?text=Toko Merch &emoji=💎&slug=nunocoracao&button_colour=5F7FFF&font_colour=ffffff&font_family=Lato&outline_colour=000000&coffee_colour=FFDD00" /></a>
## Fitur
- Tata letak responsif sepenuhnya dengan Tailwind CSS 3.0
- Beragam skema warna (atau sesuaikan sendiri)
- Mode gelap (paksa aktif/nonaktif atau otomatis dengan pengaturan pengguna)
- Konfigurasi yang sangat dapat disesuaikan
- Integrasi Firebase untuk mendukung data dinamis
- Penghitung tampilan & mekanisme suka
- Artikel terkait
- Beragam tata letak halaman utama
- Dukungan untuk banyak penulis
- Seri artikel
- Penyortiran artikel berdasarkan tanggal dan bobot
- Mode Zen untuk membaca artikel
- Fleksibel dengan berbagai jenis konten, taksonomi, dan menu
- Menu header dan footer
- Menu bersarang & sub-menu navigasi
- Daftar isi yang dapat digulir
- Dukungan untuk konten multibahasa termasuk bahasa RTL
- Kemampuan untuk menautkan ke artikel di situs web pihak ketiga
- Dukungan untuk beberapa shortcode seperti Galeri, Timeline, Kartu GitHub, dan Carousel
- Integrasi BuyMeACoffee
- Pencarian situs berbasis klien dengan Fuse.js
- Diagram dan visualisasi menggunakan Mermaid
- Grafik menggunakan Chart.js
- Integrasi TypeIt
- Sematan YouTube dengan peningkatan kinerja
- Notasi matematika menggunakan KaTeX
- Ikon SVG dari FontAwesome 6
- Pengubahan ukuran gambar otomatis menggunakan Hugo Pipes
- Anchor heading, daftar isi, salin kode, tombol, lencana, dan lainnya
- Dukungan HTML dan emoji dalam artikel 🎉
- SEO-friendly dengan tautan berbagi ke media sosial
- Dukungan untuk Fathom Analytics dan Google Analytics
- Dukungan RSS feed, favicon, dan komentar
- Kustomisasi tingkat lanjut dengan definisi warna dan gaya Tailwind yang sederhana
- Dioptimalkan untuk kinerja dan aksesibilitas dengan skor Lighthouse sempurna
- Dokumentasi lengkap dengan pembaruan rutin
---
![Logo Blowfish](https://github.com/nunocoracao/blowfish/blob/main/logo.png?raw=true)
## Dokumentasi
Blowfish memiliki [dokumentasi lengkap](https://blowfish.page/docs/) yang mencakup semua aspek tema. Pastikan untuk [membaca dokumentasi](https://blowfish.page/docs/) guna mempelajari cara menggunakan tema dan fiturnya.
---
## Instalasi
Blowfish mendukung beberapa metode instalasi - sebagai submodul git, Modul Hugo, atau instalasi manual sepenuhnya.
Instruksi terperinci untuk setiap metode dapat ditemukan dalam [dokumentasi instalasi](https://blowfish.page/docs/installation).
### Instalasi Cepat Menggunakan Blowfish Tools
> **Catatan:** Pastikan Anda sudah menginstal **Node.js**, **Git**, **Go**, dan **Hugo**, serta telah membuat proyek Hugo sebelum melanjutkan.
Kami baru saja meluncurkan alat CLI baru untuk membantu Anda memulai dengan Blowfish. Ini akan membuat proyek Hugo baru, menginstal tema, dan mengatur file konfigurasi tema untuk Anda.
Instal alat CLI secara global menggunakan npm (atau manajer paket lainnya):
```shell
npm i -g blowfish-tools
```
Kemudian jalankan perintah berikut untuk memulai interaksi yang akan memandu Anda melalui proses pembuatan dan konfigurasi:
```shell
blowfish-tools
```
Untuk membuat proyek Hugo baru dan menginstal tema sekaligus, gunakan:
```shell
blowfish-tools new mynewsite
```
### Instalasi Cepat Menggunakan Git Submodules
> **Catatan:** Pastikan Anda sudah menginstal **Git**, **Go**, dan **Hugo**, serta telah membuat proyek Hugo sebelum melanjutkan.
1. Dari direktori proyek Anda, inisialisasi git:
```shell
git init
```
2. Konfigurasikan Blowfish sebagai submodul git:
```shell
git submodule add -b main https://github.com/nunocoracao/blowfish.git themes/blowfish
```
3. Hapus file `config.toml` di root proyek dan salin file `*.toml` dari tema ke dalam folder `config/_default/`.
4. Ikuti petunjuk [Memulai](https://blowfish.page/docs/getting-started/) untuk mengonfigurasi situs web Anda.
### Memperbarui Tema
Untuk memperbarui tema ke rilis terbaru, cukup jalankan perintah berikut di direktori proyek Anda:
```shell
hugo mod get -u
```
Instruksi pembaruan selengkapnya tersedia dalam [dokumentasi instalasi](https://blowfish.page/docs/installation/#installing-updates).
---
## Kontribusi
Blowfish akan terus berkembang seiring waktu. Jika Anda memiliki ide atau ingin melaporkan bug, silakan hubungi kami:
- 🐛 **Laporan bug & masalah:** Gunakan [GitHub Issues](https://github.com/nunocoracao/blowfish/issues)
- 💡 **Ide fitur baru:** Buat diskusi di [GitHub Discussions](https://github.com/nunocoracao/blowfish/discussions)
- 🙋‍♀️ **Pertanyaan umum:** Kunjungi [GitHub Discussions](https://github.com/nunocoracao/blowfish/discussions)
Jika Anda bisa memperbaiki bug atau menambahkan fitur baru, kontribusi dalam bentuk PR sangat dihargai. Pelajari lebih lanjut dalam [panduan kontribusi](https://github.com/nunocoracao/blowfish/blob/main/CONTRIBUTING.md).
---
## Grafik Stargazers
[![Stargazers over time](https://starchart.cc/nunocoracao/blowfish.svg)](https://starchart.cc/nunocoracao/blowfish)
<a rel="me" href="https://masto.ai/@blowfish">Mastodon</a>

View file

@ -0,0 +1,178 @@
[English](https://github.com/nunocoracao/blowfish/blob/main/README.md) | [Indonesian](https://github.com/nunocoracao/blowfish/blob/main/README.id.md) | [简体中文](https://github.com/nunocoracao/blowfish/blob/main/README.zh-cn.md) | 日本語
# Blowfish
[![Netlify Status](https://api.netlify.com/api/v1/badges/6e5256d4-3148-4d69-879c-310341020fe9/deploy-status)](https://app.netlify.com/sites/snazzy-dango-efb2ec/deploys)
[![Minimum Hugo Version](https://img.shields.io/static/v1?label=min-HUGO-version&message=0.87.0&color=blue&logo=hugo)](https://github.com/gohugoio/hugo/releases/tag/v0.87.0)
[![GitHub](https://img.shields.io/github/license/nunocoracao/blowfish)](https://github.com/nunocoracao/blowfish/blob/main/LICENSE)
[![Blowfish](https://img.shields.io/badge/Hugo--Themes-@Blowfish-blue)](https://themes.gohugo.io/themes/blowfish/)
![code-size](https://img.shields.io/github/languages/code-size/nunocoracao/blowfish)
Blowfishは[Hugo](https://gohugo.io)のために設計された強力で軽量なテーマです。Tailwind CSS を使用し、コンテンツを優先したクリーンでミニマルなデザインでが特徴です。
![blowfish screenshot](https://github.com/nunocoracao/blowfish/blob/main/images/screenshot.png?raw=true)
🌏 [デモサイト](https://blowfish.page/)
📑 [ドキュメント](https://blowfish.page/docs/)
💎 [グッズストア](http://tee.pub/lic/qwSlWVBL5zc)
🐛 [バグ報告と問題点](https://github.com/nunocoracao/blowfish/issues)
💡 [質問と機能リクエスト](https://github.com/nunocoracao/blowfish/discussions)
<a href="https://www.buymeacoffee.com/nunocoracao" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Buy Me A Coffee" style="height: 60px !important;width: 217px !important;" ></a>
<a target="_blank" href="http://tee.pub/lic/qwSlWVBL5zc"><img class="nozoom" src="https://img.buymeacoffee.com/button-api/?text=Merch Store &emoji=💎&slug=nunocoracao&button_colour=5F7FFF&font_colour=ffffff&font_family=Lato&outline_colour=000000&coffee_colour=FFDD00" /></a>
## 機能
- Tailwind CSS 3.0 で構築された、完璧なレスポンシブデザイン
- 複数の配色 (または、自分で完全にカスタマイズ可能)
- ダークモード (強制オン/オフ か 自動選択・ユーザー切り替え)
- 高度なカスタマイズが可能な設定
- Firebase 連携で動的データをサポート
- 閲覧数といいね機能
- 関連記事
- 複数のホームページレイアウト
- 複数人の著者
- シリーズ記事
- 日付と価値付けによる記事の並べ替え
- 記事を読むための Zen モード
- あらゆるコンテンツタイプ、分類、メニューに柔軟に対応
- ヘッダー/フッターメニュー
- 階層化されたメニューとサブナビゲーションメニュー
- スクロール可能な目次
- RTL 言語を含む多言語コンテンツのサポート
- サードパーティー ウェブサイトの投稿へのリンク
- ギャラリー、タイムライン、GitHub カード、カルーセルなど、複数のショートコードに対応
- Buy Me a Coffee 連携
- Fuse.js を利用したクライアントサイドのサイト内検索
- Mermaid を使用したダイアグラムや視覚化
- Chart.js を使用したグラフ表示
- TypeIt 連携
- パフォーマンスを改善した YouTube 埋め込み
- KaTeX を使用した数式表現
- FontAwesome 6 の SVG アイコン
- Hugo Pipes を使用した画像の自動リサイズ
- アンカーリンク、目次、コードコピー、ボタン、バッジなど
- 記事内での HTML と絵文字のサポート 🎉
- ソーシャルメディアへの共有リンクを備えた SEO フレンドリーな設計
- Fathom Analytics と Google Analytics のサポート
- RSS フィード、ファビコン、コメント機能のサポート
- Tailwind の色定義とスタイルを使った高度なカスタマイズ
- Lighthouse で満点評価を獲得したパフォーマンスとアクセシビリティの最適化
- 充実したドキュメントと定期的なアップデート
---
![blowfish logo](https://github.com/nunocoracao/blowfish/blob/main/logo.png?raw=true)
## ドキュメント
Blowfish には、テーマのあらゆる側面を網羅した[詳細なドキュメント](https://blowfish.page/docs/)があります。テーマの使い方や機能を詳しく知るために、必ず[ドキュメントを読んで](https://blowfish.page/docs/)ください。
---
## インストール
Blowfish は、git サブモジュール、Hugo モジュール、または完全な手動インストールなど、いくつかのインストール方法をサポートしています。
各方法の詳細な手順は、[インストール](https://blowfish.page/docs/installation)ドキュメントに記載されています。最も簡単なセットアップ方法については、ドキュメントを参照してください。以下にクイックスタートガイドを示します。git を使用している場合はサブモジュール、Hugo テーマのインストールに慣れている場合は Hugo モジュールを使用するのがおすすめです。
### Blowfish Tools を使ったクイックスタート
> **注意:** **Node.js**、**Git**、**Go**、**Hugo** がインストールされていること、そして先に進む前に新しい Hugo プロジェクトが作成されていることを確認してください。
Blowfish を使い始めるのに役立つ新しい CLI ツールをリリースしました。このツールは、新しい Hugo プロジェクトを作成し、テーマをインストールし、テーマ設定ファイルをセットアップします。まだベータ版なので、[問題を見つけたら報告してください](https://github.com/nunocoracao/blowfish-tools)。
npmまたは他のパッケージマネージャーを使って CLI ツールをグローバルにインストールします:
```shell
npm i -g blowfish-tools
```
`blowfish-tools` コマンドを実行すると、対話形式でプロジェクトの作成と設定をガイドするツールが起動します。
```shell
blowfish-tools
```
`blowfish-tools new` コマンドを実行すると、新しい Hugo プロジェクトを作成し、テーマを一度にインストールすることもできます。詳細については、CLI のヘルプを参照してください。
```shell
blowfish-tools new mynewsite
```
### git サブモジュールを使ったクイックスタート
> **注意:** **Git**、**Go**、**Hugo** がインストールされていること、そして先に進む前に新しい Hugo プロジェクトが作成されていることを確認してください。
1. プロジェクトディレクトリで、git を初期化します。
```shell
git init
```
2. Blowfish を git サブモジュールとして設定します。
```shell
git submodule add -b main https://github.com/nunocoracao/blowfish.git themes/blowfish
```
3. ウェブサイトのルートフォルダで、Hugo によって生成された `config.toml` ファイルを削除します。テーマから `*.toml` 設定ファイルをコピーして、`config/_default/` フォルダに保存します。
これらのテーマ設定ファイルは、Hugo キャッシュディレクトリにあります。または、GitHub から[コピーをダウンロード](https://github.com/nunocoracao/blowfish/releases/latest/download/config-default.zip)できます。
4. [Getting Started](https://blowfish.page/docs/getting-started/) の手順に従って、ウェブサイトを設定します。
### Hugo を使ったクイックスタート
> **注意:** **Go****Hugo** がインストールされていること、そして先に進む前に新しい Hugo プロジェクトが作成されていることを確認してください。
1. プロジェクトディレクトリから、Hugo Modules を初期化します。
```shell
hugo mod init github.com/<username>/<repo-name>
```
2. `config/_default/module.toml` を作成し、以下を追加します。
```toml
[[imports]]
path = "github.com/nunocoracao/blowfish/v2"
```
3. `hugo server` を使用してサーバーを起動すると、テーマが自動的にダウンロードされます。
4. ウェブサイトのルートフォルダにある、Hugo によって生成された `config.toml` ファイルを削除します。テーマの `*.toml` 設定ファイルを `config/_default/` フォルダにコピーします。
> **注意:** 上記で作成した `module.toml` ファイルを上書きしないでください!
これらのテーマ設定ファイルは、Hugo のキャッシュディレクトリにあります。または、GitHub から[コピーをダウンロード](https://github.com/nunocoracao/blowfish/releases/latest/download/config-default.zip)できます。
5. [Getting Started](https://blowfish.page/docs/getting-started/) の手順に従って、ウェブサイトを設定します。
### テーマのアップデートのインストール
新しいリリースが公開されたら、Hugo を使ってテーマをアップデートできます。プロジェクトディレクトリから `hugo mod get -u` を実行するだけで、テーマは自動的に最新リリースにアップデートされます。
詳細な[アップデート手順](https://blowfish.page/docs/installation/#installing-updates)はドキュメントに記載されています。
---
## 貢献
Blowfish は時間とともに進化していく予定です。必要に応じて機能の追加や変更を続けていく予定です。
問題や追加してほしい新機能の提案があれば、お気軽にご連絡ください。
- 🐛 **バグ報告と問題点:** [GitHub Issues](https://github.com/nunocoracao/blowfish/issues) を使用してください
- 💡 **新機能のアイデア:** [GitHub Discussions](https://github.com/nunocoracao/blowfish/discussions) でディスカッションを開始してください
- 🙋‍♀️ **一般的な質問:** [GitHub Discussions](https://github.com/nunocoracao/blowfish/discussions) へ進んでください
バグ修正や新機能の実装ができる方は、Pull Request を歓迎します。詳しくは[貢献ガイドライン](https://github.com/nunocoracao/blowfish/blob/main/CONTRIBUTING.md)をご覧ください。
---
## スター数の推移
[![Stargazers over time](https://starchart.cc/nunocoracao/blowfish.svg)](https://starchart.cc/nunocoracao/blowfish)
<a rel="me" href="https://masto.ai/@blowfish">Mastodon</a>

View file

@ -1,7 +1,6 @@
English | [简体中文](https://github.com/nunocoracao/blowfish/blob/main/README.zh-cn.md)
English | [Indonesian](https://github.com/nunocoracao/blowfish/blob/main/README.id.md) | [简体中文](https://github.com/nunocoracao/blowfish/blob/main/README.zh-cn.md) | [日本語](https://github.com/nunocoracao/blowfish/blob/main/README.ja.md)
# Blowfish
[![Deploy Production to Firebase](https://github.com/nunocoracao/blowfish/actions/workflows/firebase-production.yml/badge.svg)](https://github.com/nunocoracao/blowfish/actions/workflows/firebase-production.yml)
[![Deploy Production to GitHub pages](https://github.com/nunocoracao/blowfish/actions/workflows/pages.yml/badge.svg)](https://github.com/nunocoracao/blowfish/actions/workflows/pages.yml)
[![Netlify Status](https://api.netlify.com/api/v1/badges/6e5256d4-3148-4d69-879c-310341020fe9/deploy-status)](https://app.netlify.com/sites/snazzy-dango-efb2ec/deploys)
[![Minimum Hugo Version](https://img.shields.io/static/v1?label=min-HUGO-version&message=0.87.0&color=blue&logo=hugo)](https://github.com/gohugoio/hugo/releases/tag/v0.87.0)
[![GitHub](https://img.shields.io/github/license/nunocoracao/blowfish)](https://github.com/nunocoracao/blowfish/blob/main/LICENSE)
[![Blowfish](https://img.shields.io/badge/Hugo--Themes-@Blowfish-blue)](https://themes.gohugo.io/themes/blowfish/)

View file

@ -1,7 +1,6 @@
[English](https://github.com/nunocoracao/blowfish/blob/main/README.md) | 简体中文
[English](https://github.com/nunocoracao/blowfish/blob/main/README.md) | [Indonesian](https://github.com/nunocoracao/blowfish/blob/main/README.id.md) | 简体中文 | [日本語](https://github.com/nunocoracao/blowfish/blob/main/README.ja.md)
# Blowfish
[![Deploy Production to Firebase](https://github.com/nunocoracao/blowfish/actions/workflows/firebase-production.yml/badge.svg)](https://github.com/nunocoracao/blowfish/actions/workflows/firebase-production.yml)
[![Deploy Production to GitHub pages](https://github.com/nunocoracao/blowfish/actions/workflows/pages.yml/badge.svg)](https://github.com/nunocoracao/blowfish/actions/workflows/pages.yml)
[![Netlify Status](https://api.netlify.com/api/v1/badges/6e5256d4-3148-4d69-879c-310341020fe9/deploy-status)](https://app.netlify.com/sites/snazzy-dango-efb2ec/deploys)
[![Minimum Hugo Version](https://img.shields.io/static/v1?label=min-HUGO-version&message=0.87.0&color=blue&logo=hugo)](https://github.com/gohugoio/hugo/releases/tag/v0.87.0)
[![GitHub](https://img.shields.io/github/license/nunocoracao/blowfish)](https://github.com/nunocoracao/blowfish/blob/main/LICENSE)
[![Blowfish](https://img.shields.io/badge/Hugo--Themes-@Blowfish-blue)](https://themes.gohugo.io/themes/blowfish/)
@ -116,7 +115,7 @@ blowfish-tools new mynewsite
3. 在你网站的根目录中删除由 Hugo 自动生成的 `config.toml`文件,并把主题文件夹中的`*.toml`配置文件复制到你的 `config/_default/`文件夹中
你可在 Hugo 缓存目录中找到主题配置文件,或者也可以从[这里](https://minhaskamal.github.io/DownGit/#/home?url=https://github.com/nunocoracao/blowfish/tree/main/config/_default)下载一份。
你可在 Hugo 缓存目录中找到主题配置文件,或者也可以从[这里](https://github.com/nunocoracao/blowfish/releases/latest/download/config-default.zip)下载一份。
4. 按照[入门指南](https://blowfish.page/zh-cn/docs/getting-started/)来配置你的网站
@ -143,7 +142,7 @@ blowfish-tools new mynewsite
> **注** 不要覆盖之前的 `module.toml`
你可在 Hugo 缓存目录中找到主题配置文件,或者也可以从[这里](https://minhaskamal.github.io/DownGit/#/home?url=https://github.com/nunocoracao/blowfish/tree/main/config/_default)下载一份。
你可在 Hugo 缓存目录中找到主题配置文件,或者也可以从[这里](https://github.com/nunocoracao/blowfish/releases/latest/download/config-default.zip)下载一份。
5. 按照[入门指南](https://blowfish.page/zh-cn/docs/getting-started/)来配置你的网站

File diff suppressed because it is too large Load diff

View file

@ -1,10 +1,9 @@
/*! Blowfish | MIT License | https://github.com/nunocoracao/blowfish */
@import 'components/zen-mode.css';
@import './components/zen-mode.css';
@tailwind base;
@tailwind components;
@tailwind utilities;
@import "tailwindcss";
@config "../../tailwind.config.js";
body a,
body button {

View file

@ -76,14 +76,24 @@ var updateMeta = () => {
{{ $secondaryLogo := resources.Get .Site.Params.SecondaryLogo }}
{{ if and ($primaryLogo) ($secondaryLogo) }}
var updateLogo = (targetAppearance) => {
var elems;
elems = document.querySelectorAll("img.logo")
var imgElems = document.querySelectorAll("img.logo");
var logoContainers = document.querySelectorAll("span.logo");
targetLogoPath =
targetAppearance == "{{ .Site.Params.DefaultAppearance }}" ?
"{{ $primaryLogo.RelPermalink }}" : "{{ $secondaryLogo.RelPermalink }}"
for (const elem of elems) {
for (const elem of imgElems) {
elem.setAttribute("src", targetLogoPath)
}
{{ if eq $primaryLogo.MediaType.SubType "svg" }}
targetContent =
targetAppearance == "{{ .Site.Params.DefaultAppearance }}" ?
`{{ $primaryLogo.Content | safeHTML }}` : `{{ $secondaryLogo.Content | safeHTML }}`
for (const container of logoContainers) {
container.innerHTML = targetContent;
}
{{ end }}
}
{{ end }}
{{- end }}

View file

@ -2,6 +2,17 @@ function css(name) {
return "rgb(" + getComputedStyle(document.documentElement).getPropertyValue(name) + ")";
}
document.addEventListener("DOMContentLoaded", () => {
const mermaidDivs = document.querySelectorAll("div.mermaid");
for (const div of mermaidDivs) {
const preElement = div.querySelector("pre");
if (preElement) {
div.textContent = preElement.textContent;
}
}
});
mermaid.initialize({
theme: "base",
themeVariables: {

View file

@ -20,6 +20,10 @@ function _toogleZenMode(zendModeButton) {
articleContent.classList.toggle('max-w-fit');
articleContent.classList.toggle('max-w-prose');
// Change width of article title
header.classList.toggle('max-w-full');
header.classList.toggle('max-w-prose');
// Read i18n title from data-attributes
const titleI18nDisable = zendModeButton.getAttribute('data-title-i18n-disable');
const titleI18nEnable = zendModeButton.getAttribute('data-title-i18n-enable');

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1 +1 @@
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("katex")):"function"==typeof define&&define.amd?define(["katex"],t):"object"==typeof exports?exports.renderMathInElement=t(require("katex")):e.renderMathInElement=t(e.katex)}("undefined"!=typeof self?self:this,(function(e){return function(){"use strict";var t={771:function(t){t.exports=e}},n={};function r(e){var o=n[e];if(void 0!==o)return o.exports;var i=n[e]={exports:{}};return t[e](i,i.exports,r),i.exports}r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,{a:t}),t},r.d=function(e,t){for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)};var o={};return function(){r.d(o,{default:function(){return d}});var e=r(771),t=r.n(e);const n=function(e,t,n){let r=n,o=0;const i=e.length;for(;r<t.length;){const n=t[r];if(o<=0&&t.slice(r,r+i)===e)return r;"\\"===n?r++:"{"===n?o++:"}"===n&&o--,r++}return-1},i=/^\\begin{/;var a=function(e,t){let r;const o=[],a=new RegExp("("+t.map((e=>e.left.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"))).join("|")+")");for(;r=e.search(a),-1!==r;){r>0&&(o.push({type:"text",data:e.slice(0,r)}),e=e.slice(r));const a=t.findIndex((t=>e.startsWith(t.left)));if(r=n(t[a].right,e,t[a].left.length),-1===r)break;const l=e.slice(0,r+t[a].right.length),s=i.test(l)?l:e.slice(t[a].left.length,r);o.push({type:"math",data:s,rawData:l,display:t[a].display}),e=e.slice(r+t[a].right.length)}return""!==e&&o.push({type:"text",data:e}),o};const l=function(e,n){const r=a(e,n.delimiters);if(1===r.length&&"text"===r[0].type)return null;const o=document.createDocumentFragment();for(let e=0;e<r.length;e++)if("text"===r[e].type)o.appendChild(document.createTextNode(r[e].data));else{const i=document.createElement("span");let a=r[e].data;n.displayMode=r[e].display;try{n.preProcess&&(a=n.preProcess(a)),t().render(a,i,n)}catch(i){if(!(i instanceof t().ParseError))throw i;n.errorCallback("KaTeX auto-render: Failed to parse `"+r[e].data+"` with ",i),o.appendChild(document.createTextNode(r[e].rawData));continue}o.appendChild(i)}return o},s=function(e,t){for(let n=0;n<e.childNodes.length;n++){const r=e.childNodes[n];if(3===r.nodeType){let o=r.textContent,i=r.nextSibling,a=0;for(;i&&i.nodeType===Node.TEXT_NODE;)o+=i.textContent,i=i.nextSibling,a++;const s=l(o,t);if(s){for(let e=0;e<a;e++)r.nextSibling.remove();n+=s.childNodes.length-1,e.replaceChild(s,r)}else n+=a}else if(1===r.nodeType){const e=" "+r.className+" ";-1===t.ignoredTags.indexOf(r.nodeName.toLowerCase())&&t.ignoredClasses.every((t=>-1===e.indexOf(" "+t+" ")))&&s(r,t)}}};var d=function(e,t){if(!e)throw new Error("No element provided to render");const n={};for(const e in t)t.hasOwnProperty(e)&&(n[e]=t[e]);n.delimiters=n.delimiters||[{left:"$$",right:"$$",display:!0},{left:"\\(",right:"\\)",display:!1},{left:"\\begin{equation}",right:"\\end{equation}",display:!0},{left:"\\begin{align}",right:"\\end{align}",display:!0},{left:"\\begin{alignat}",right:"\\end{alignat}",display:!0},{left:"\\begin{gather}",right:"\\end{gather}",display:!0},{left:"\\begin{CD}",right:"\\end{CD}",display:!0},{left:"\\[",right:"\\]",display:!0}],n.ignoredTags=n.ignoredTags||["script","noscript","style","textarea","pre","code","option"],n.ignoredClasses=n.ignoredClasses||[],n.errorCallback=n.errorCallback||console.error,n.macros=n.macros||{},s(e,n)}}(),o=o.default}()}));
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("katex")):"function"==typeof define&&define.amd?define(["katex"],t):"object"==typeof exports?exports.renderMathInElement=t(require("katex")):e.renderMathInElement=t(e.katex)}("undefined"!=typeof self?self:this,(function(e){return function(){"use strict";var t={757:function(t){t.exports=e}},n={};function r(e){var o=n[e];if(void 0!==o)return o.exports;var i=n[e]={exports:{}};return t[e](i,i.exports,r),i.exports}r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,{a:t}),t},r.d=function(e,t){for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)};var o={};r.d(o,{default:function(){return p}});var i=r(757),a=r.n(i);const l=function(e,t,n){let r=n,o=0;const i=e.length;for(;r<t.length;){const n=t[r];if(o<=0&&t.slice(r,r+i)===e)return r;"\\"===n?r++:"{"===n?o++:"}"===n&&o--,r++}return-1},s=/^\\begin{/;var d=function(e,t){let n;const r=[],o=new RegExp("("+t.map((e=>e.left.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"))).join("|")+")");for(;n=e.search(o),-1!==n;){n>0&&(r.push({type:"text",data:e.slice(0,n)}),e=e.slice(n));const o=t.findIndex((t=>e.startsWith(t.left)));if(n=l(t[o].right,e,t[o].left.length),-1===n)break;const i=e.slice(0,n+t[o].right.length),a=s.test(i)?i:e.slice(t[o].left.length,n);r.push({type:"math",data:a,rawData:i,display:t[o].display}),e=e.slice(n+t[o].right.length)}return""!==e&&r.push({type:"text",data:e}),r};const c=function(e,t){const n=d(e,t.delimiters);if(1===n.length&&"text"===n[0].type)return null;const r=document.createDocumentFragment();for(let e=0;e<n.length;e++)if("text"===n[e].type)r.appendChild(document.createTextNode(n[e].data));else{const o=document.createElement("span");let i=n[e].data;t.displayMode=n[e].display;try{t.preProcess&&(i=t.preProcess(i)),a().render(i,o,t)}catch(o){if(!(o instanceof a().ParseError))throw o;t.errorCallback("KaTeX auto-render: Failed to parse `"+n[e].data+"` with ",o),r.appendChild(document.createTextNode(n[e].rawData));continue}r.appendChild(o)}return r},f=function(e,t){for(let n=0;n<e.childNodes.length;n++){const r=e.childNodes[n];if(3===r.nodeType){let o=r.textContent,i=r.nextSibling,a=0;for(;i&&i.nodeType===Node.TEXT_NODE;)o+=i.textContent,i=i.nextSibling,a++;const l=c(o,t);if(l){for(let e=0;e<a;e++)r.nextSibling.remove();n+=l.childNodes.length-1,e.replaceChild(l,r)}else n+=a}else if(1===r.nodeType){const e=" "+r.className+" ";-1===t.ignoredTags.indexOf(r.nodeName.toLowerCase())&&t.ignoredClasses.every((t=>-1===e.indexOf(" "+t+" ")))&&f(r,t)}}};var p=function(e,t){if(!e)throw new Error("No element provided to render");const n={};for(const e in t)t.hasOwnProperty(e)&&(n[e]=t[e]);n.delimiters=n.delimiters||[{left:"$$",right:"$$",display:!0},{left:"\\(",right:"\\)",display:!1},{left:"\\begin{equation}",right:"\\end{equation}",display:!0},{left:"\\begin{align}",right:"\\end{align}",display:!0},{left:"\\begin{alignat}",right:"\\end{alignat}",display:!0},{left:"\\begin{gather}",right:"\\end{gather}",display:!0},{left:"\\begin{CD}",right:"\\end{CD}",display:!0},{left:"\\[",right:"\\]",display:!0}],n.ignoredTags=n.ignoredTags||["script","noscript","style","textarea","pre","code","option"],n.ignoredClasses=n.ignoredClasses||[],n.errorCallback=n.errorCallback||console.error,n.macros=n.macros||{},f(e,n)};return o=o.default}()}));

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -2,4 +2,4 @@
[module.hugoVersion]
extended = true
min = "0.87.0"
max = "0.139.3"
max = "0.147.1"

View file

@ -1,16 +0,0 @@
{
"hosting": {
"public": "public",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
]
}
}

View file

@ -15,10 +15,19 @@ article:
word_count:
one: "{{ .Count }} 文字"
other: "{{ .Count }} 文字"
views:
one: "{{ .Count }} ビュー"
other: "{{ .Count }} ビュー"
likes:
one: "{{ .Count }} いいね"
other: "{{ .Count }} いいね"
part_of_series: "この記事は連載の一部です"
part: "パート"
this_article: "この記事"
related_articles: "関連記事"
zen_mode_title:
enable: "Zenモードを有効にする"
disable: "Zenモードを無効にする"
author:
byline_title: "著者"
@ -57,6 +66,9 @@ sharing:
pinterest: "Pinterestでピンする"
reddit: "Redditに投稿する"
twitter: "Twitterに投稿する"
bluesky: "Blueskyに投稿する"
whatsapp: "WhatsAppでシェアする"
telegram: "Telegramでシェアする"
shortcode:
recent_articles: "最近の記事"

View file

@ -32,6 +32,7 @@
{{ (.Resize "660x").RelPermalink }} 660w,
{{ (.Resize "1024x").RelPermalink }} 1024w,
{{ (.Resize "1320x").RelPermalink }} 2x"
data-zoom-src="{{ (.Resize "1320x").RelPermalink }}"
src="{{ (.Resize "660x").RelPermalink }}"
alt="{{ $altText }}"
/>

View file

@ -15,11 +15,11 @@
class="font-bold text-primary-600 ltr:pr-2 rtl:pl-2 dark:text-primary-400">&darr;</span>{{ i18n
"nav.skip_to_main" }}</a>
</div>
{{ $header := print "partials/header/" .Site.Params.header.layout ".html" }}
{{ if templates.Exists $header }}
{{ $header := print "header/" .Site.Params.header.layout ".html" }}
{{ if templates.Exists ( printf "partials/%s" $header ) }}
{{ partial $header . }}
{{ else }}
{{ partial "partials/header/basic.html" . }}
{{ partial "header/basic.html" . }}
{{ end }}
<div class="relative flex flex-col grow">
<main id="main-content" class="grow">

View file

@ -2,11 +2,11 @@
{{ .Scratch.Set "scope" "list" }}
{{ if .Site.Params.list.showHero | default false }}
{{ $heroStyle := print "partials/hero/" .Site.Params.list.heroStyle ".html" }}
{{ if templates.Exists $heroStyle }}
{{ $heroStyle := print "hero/" .Site.Params.list.heroStyle ".html" }}
{{ if templates.Exists ( printf "partials/%s" $heroStyle ) }}
{{ partial $heroStyle . }}
{{ else }}
{{ partial "partials/hero/basic.html" . }}
{{ partial "hero/basic.html" . }}
{{ end }}
{{- end -}}

View file

@ -5,11 +5,11 @@
{{ if .Params.showHero | default (.Site.Params.article.showHero | default false) }}
{{ $heroStyle := .Params.heroStyle }}
{{ if not $heroStyle }}{{ $heroStyle = .Site.Params.article.heroStyle }}{{ end }}
{{ $heroStyle := print "partials/hero/" $heroStyle ".html" }}
{{ if templates.Exists $heroStyle }}
{{ $heroStyle := print "hero/" $heroStyle ".html" }}
{{ if templates.Exists ( printf "partials/%s" $heroStyle ) }}
{{ partial $heroStyle . }}
{{ else }}
{{ partial "partials/hero/basic.html" . }}
{{ partial "hero/basic.html" . }}
{{ end }}
{{ end }}
@ -49,7 +49,16 @@
{{ $taxonomyLink = delimit (slice $baseURL "authors/" $author "/") "" }}
{{ end }}
{{ end }}
{{ partial "author-extra.html" (dict "context" . "data" $authorData "link" $taxonomyLink) }}
{{ $finalLink := $taxonomyLink }}
{{ $currentLang := $.Site.Language.Lang }}
{{ if eq $.Site.LanguagePrefix "" }}
{{ $finalLink = printf "%sauthors/%s/" $baseURL $author }}
{{ else }}
{{ $finalLink = printf "%s%s/authors/%s/" $baseURL $currentLang $author }}
{{ end }}
{{ partial "author-extra.html" (dict "context" . "data" $authorData "link" $finalLink) }}
{{- end -}}
{{ end }}

View file

@ -2,11 +2,11 @@
{{ .Scratch.Set "scope" "term" }}
{{ if .Site.Params.term.showHero | default false }}
{{ $heroStyle := print "partials/hero/" .Site.Params.term.heroStyle ".html" }}
{{ if templates.Exists $heroStyle }}
{{ $heroStyle := print "hero/" .Site.Params.term.heroStyle ".html" }}
{{ if templates.Exists ( printf "partials/%s" $heroStyle ) }}
{{ partial $heroStyle . }}
{{ else }}
{{ partial "partials/hero/basic.html" . }}
{{ partial "hero/basic.html" . }}
{{ end }}
{{- end -}}

View file

@ -2,11 +2,11 @@
{{ .Scratch.Set "scope" "list" }}
{{ if .Site.Params.taxonomy.showHero | default false }}
{{ $heroStyle := print "partials/hero/" .Site.Params.taxonomy.heroStyle ".html" }}
{{ if templates.Exists $heroStyle }}
{{ $heroStyle := print "hero/" .Site.Params.taxonomy.heroStyle ".html" }}
{{ if templates.Exists ( printf "partials/%s" $heroStyle ) }}
{{ partial $heroStyle . }}
{{ else }}
{{ partial "partials/hero/basic.html" . }}
{{ partial "hero/basic.html" . }}
{{ end }}
{{- end -}}

View file

@ -1,8 +1,8 @@
{{ define "main" }}
{{ $partial := print "partials/home/" .Site.Params.homepage.layout ".html" }}
{{ if templates.Exists $partial }}
{{ $partial := print "home/" .Site.Params.homepage.layout ".html" }}
{{ if templates.Exists ( printf "partials/%s" $partial ) }}
{{ partial $partial . }}
{{ else }}
{{ partial "partials/home/profile.html" . }}
{{ partial "home/profile.html" . }}
{{ end }}
{{ end }}

View file

@ -1,6 +1,6 @@
{{ $constrainItemsWidth := .Page.Site.Params.list.constrainItemsWidth | default false }}
{{ $articleClasses := "flex flex-wrap article" }}
{{ $articleClasses := "flex flex-wrap md:flex-nowrap article" }}
{{ if .Site.Params.list.showCards }}
{{ $articleClasses = delimit (slice $articleClasses "border border-neutral-200 dark:border-neutral-700 border-2 rounded-md overflow-hidden") " " }}
{{ else }}

View file

@ -7,7 +7,7 @@
{{ else if not .p1.IsHome }}
{{ template "crumb" (dict "p1" .p1.Site.Home "p2" .p2 ) }}
{{ end }}
<li class="inline {{ if or (eq .p1 .p2) (.p1.IsHome) }}hidden{{ end }}">
<li class="{{ if or (eq .p1 .p2) (.p1.IsHome) }}hidden{{else}}inline{{ end }}">
<a
class="hover:underline decoration-neutral-300 dark:underline-neutral-600"
href="{{ .p1.RelPermalink }}"

View file

@ -72,7 +72,7 @@
{{ $bundleJS := $assets.Get "js" | resources.Concat "js/main.bundle.js" | resources.Minify | resources.Fingerprint
"sha512" }}
<script defer type="text/javascript" id="script-bundle" src="{{ $bundleJS.RelPermalink }}"
integrity="{{ $bundleJS.Data.Integrity }}" data-copy="{{ i18n " code.copy" }}" data-copied="{{ i18n " code.copied"
integrity="{{ $bundleJS.Data.Integrity }}" data-copy="{{ i18n "code.copy" }}" data-copied="{{ i18n "code.copied"
}}"></script>
{{ end }}
{{ if not .Site.Params.disableImageZoom | default true }}
@ -115,9 +115,11 @@
{{ with .Site.Params.Author.links }}
{{ range $links := . }}
{{ range $name, $url := $links }}
{{ if not (strings.HasPrefix $url "mailto:") }}
<link href="{{ $url }}" rel="me" />{{ end }}
{{ end }}
{{ end }}
{{ end }}
{{/* Vendor */}}
{{ partial "vendor.html" . }}
{{/* Analytics */}}

View file

@ -1,5 +1,5 @@
<div style="padding-left:0;padding-right:0;padding-top:2px;padding-bottom:3px"
class="main-menu flex items-center justify-between px-4 py-6 sm:px-6 md:justify-start space-x-3">
class="main-menu flex items-center justify-between px-4 py-6 sm:px-6 md:justify-start gap-x-3">
{{ if .Site.Params.Logo }}
{{ $logo := resources.Get .Site.Params.Logo }}
{{ if $logo }}
@ -30,7 +30,7 @@
{{ end }}
</nav>
<nav class="hidden md:flex items-center space-x-5 md:ml-12 h-12">
<nav class="hidden md:flex items-center gap-x-5 md:ml-12 h-12">
{{ if .Site.Menus.main }}
{{ range .Site.Menus.main }}
@ -51,7 +51,7 @@
{{/* Appearance switch */}}
{{ if .Site.Params.footer.showAppearanceSwitcher | default false }}
<div
class="{{ if .Site.Params.footer.showScrollToTop | default true -}} ltr:mr-14 rtl:ml-14 {{- end }} flex items-center">
class="{{ if .Site.Params.footer.showScrollToTop | default true -}} {{- end }} flex items-center">
<button id="appearance-switcher" aria-label="Dark mode switcher" type="button" class="text-base hover:text-primary-600 dark:hover:text-primary-400">
<div class="flex items-center justify-center dark:hidden">
{{ partial "icon.html" "moon" }}
@ -64,7 +64,7 @@
{{ end }}
</nav>
<div class="flex md:hidden items-center space-x-5 md:ml-12 h-12">
<div class="flex md:hidden items-center gap-x-5 md:ml-12 h-12">
<span></span>
@ -79,7 +79,7 @@
{{/* Appearance switch */}}
{{ if .Site.Params.footer.showAppearanceSwitcher | default false }}
<button id="appearance-switcher-mobile" aria-label="Dark mode switcher" type="button" class="text-base hover:text-primary-600 dark:hover:text-primary-400" style="margin-right:5px">
<button id="appearance-switcher-mobile" aria-label="Dark mode switcher" type="button" class="text-base hover:text-primary-600 dark:hover:text-primary-400 ltr:mr-1 rtl:ml-1">
<div class="flex items-center justify-center dark:hidden">
{{ partial "icon.html" "moon" }}
</div>
@ -91,7 +91,7 @@
</div>
</div>
<div class="-my-2 -mr-2 md:hidden">
<div class="-my-2 md:hidden">
<label id="menu-button" class="block">
{{ if .Site.Menus.main }}

View file

@ -2,7 +2,7 @@
<div class="fixed inset-x-0 pl-[24px] pr-[24px]" style="z-index:100">
<div id="menu-blur" class="absolute opacity-0 inset-x-0 top-0 h-full single_hero_background nozoom bg-neutral dark:bg-neutral-800"></div>
<div class="relative max-w-[64rem] ml-auto mr-auto">
{{ partial "partials/header/basic.html" . }}
{{ partial "header/basic.html" . }}
</div>
</div>
<script>

View file

@ -1,6 +1,6 @@
<div class="min-h-[148px]"></div>
<div class="fixed inset-x-0 pl-[24px] pr-[24px] bg-neutral dark:bg-neutral-800" style="z-index:100">
<div class="relative max-w-[64rem] ml-auto mr-auto">
{{ partial "partials/header/basic.html" . }}
{{ partial "header/basic.html" . }}
</div>
</div>

View file

@ -3,7 +3,7 @@
<div class="fixed inset-x-0 pl-[24px] pr-[24px]" style="z-index:100">
<div id="menu-blur" class="absolute opacity-0 inset-x-0 top-0 h-full single_hero_background nozoom backdrop-blur-2xl shadow-2xl"></div>
<div class="relative max-w-[64rem] ml-auto mr-auto">
{{ partial "partials/header/basic.html" . }}
{{ partial "header/basic.html" . }}
</div>
</div>
<script>

View file

@ -2,7 +2,7 @@
<div class="fixed inset-x-0 pl-[24px] pr-[24px]" style="z-index:100">
<div id="menu-blur" class="absolute opacity-0 inset-x-0 top-0 h-full single_hero_background nozoom backdrop-blur-2xl shadow-2xl"></div>
<div class="relative max-w-[64rem] ml-auto mr-auto">
{{ partial "partials/header/basic.html" . }}
{{ partial "header/basic.html" . }}
</div>
</div>
<script>

View file

@ -21,7 +21,7 @@
{{ end }}
{{ end }}
{{ if $homepageImage }}
<img class="w-full h-[1000px] object-cover m-0 nozoom" src="{{ $homepageImage.RelPermalink }}" role="presentation">
<img class="w-full h-[1000px] object-cover m-0 nozoom" src="{{ $homepageImage.RelPermalink }}" role="presentation" style="margin: 0">
<div
class="absolute inset-0 h-[1000px] bg-gradient-to-t from-neutral dark:from-neutral-800 to-transparent mix-blend-normal">
</div>

View file

@ -21,7 +21,7 @@
{{ end }}
{{ end }}
{{ if $homepageImage }}
<img class="h-full w-full object-cover m-0 nozoom" src="{{ $homepageImage.RelPermalink }}">
<img class="h-full w-full object-cover m-0 nozoom" src="{{ $homepageImage.RelPermalink }}" style="margin: 0">
<div
class="absolute inset-0 bg-gradient-to-r from-primary-500 to-secondary-600 dark:from-primary-600 dark:to-secondary-800 mix-blend-multiply">
</div>

View file

@ -13,7 +13,7 @@
{{ else }}
<div
class="py-1 border-dotted border-neutral-300 ltr:-ml-5 ltr:border-l ltr:pl-5 rtl:-mr-5 rtl:border-r rtl:pr-5 dark:border-neutral-600">
<a href="{{$post.Permalink}}">
<a href="{{$post.RelPermalink}}">
{{ i18n "article.part" }} {{ $post.Params.series_order }}: {{ $post.Params.title}}
</a>
</div>

View file

@ -1,7 +1,7 @@
{{ if .IsTranslated }}
<div>
<div class="cursor-pointer flex items-center nested-menu">
<span class="mr-1">
<span class="ltr:mr-1 rtl:ml-1">
{{ partial "icon.html" "language" }}
</span>
<div class="text-sm font-medium text-gray-500 hover:text-primary-600 dark:hover:text-primary-400" title="{{ .Title }}">

View file

@ -1,6 +1,6 @@
{{ $disableImageOptimization := .Site.Params.disableImageOptimization | default false }}
{{ if .Get "default" }}
{{ template "_internal/shortcodes/figure.html" . }}
{{ partial "shortcodes/figure.html" . }}
{{ else }}
{{- $url := urls.Parse (.Get "src") }}
{{- $altText := .Get "alt" }}
@ -37,6 +37,7 @@
{{ (.Resize "1024x").RelPermalink }} 1024w,
{{ (.Resize "1320x").RelPermalink }} 2x"
src="{{ (.Resize "660x").RelPermalink }}"
data-zoom-src="{{ (.Resize "1320x").RelPermalink }}"
alt="{{ $altText }}"
/>
{{- end }}

View file

@ -1,5 +1,31 @@
{{ $id := delimit (slice "gallery" (partial "functions/uid.html" .)) "-" }}
<div id="{{ $id }}" class="gallery">
{{ .Inner }}
{{ $page := .Page }}
{{/* find all img tags */}}
{{ $imgTagRegex := `<img\s+[^>]*>` }}
{{ $imgTags := findRE $imgTagRegex .Inner }}
{{ $newContent := .Inner }}
{{ range $imgTags }}
{{ $imgTag := . }}
{{/* extract src attribute */}}
{{ $srcRegex := `src=['"]([^'"]+)['"]` }}
{{ $srcMatches := findRESubmatch $srcRegex $imgTag }}
{{ if $srcMatches }}
{{ $srcFull := index (index $srcMatches 0) 0 }}
{{ $src := index (index $srcMatches 0) 1 }}
{{ $resource := $page.Resources.GetMatch $src }}
{{ if $resource }}
{{ $newSrc := printf `src="%s"` $resource.RelPermalink }}
{{ $newImg := replace $imgTag $srcFull $newSrc }}
{{ $newContent = replace $newContent $imgTag $newImg }}
{{ end }}
{{ end }}
{{ end }}
{{ $newContent | safeHTML }}
</div>

View file

@ -4,6 +4,7 @@
{{- $githubColors := .Site.Data.githubColors -}}
{{- with $githubData -}}
<div class="github-card-wrapper">
<a id="{{ $id }}" target="_blank" href="{{ .html_url }}" class="cursor-pointer">
<div
class="w-full md:w-auto pt-3 p-5 border border-neutral-200 dark:border-neutral-700 border rounded-md shadow-2xl">
@ -64,4 +65,5 @@
.catch(error => console.error(error))
</script>
</a>
</div>
{{- end -}}

View file

@ -1,3 +1,3 @@
<div class="mermaid" align="center">
{{ .Inner }}
<pre>{{ .Inner | safeHTML }}</pre>
</div>

View file

@ -2,7 +2,6 @@
{{ $header := .Get "header" }}
{{ $badge := .Get "badge" }}
{{ $subheader := .Get "subheader" }}
{{ $text := .Get "text" }}
<li>
<div class="flex flex-start">
<div class="bg-primary-500 dark:bg-primary-300 text-neutral-50 dark:text-neutral-700 min-w-[30px] h-8 text-2xl flex items-center justify-center rounded-full -ml-12 mt-5">

View file

@ -1,24 +1,8 @@
[build]
command = "cd exampleSite && hugo --gc --minify -D -b $URL"
command = "cd exampleSite && hugo --gc --minify -D -b https://blowfish.page"
publish = "exampleSite/public"
[build.environment]
HUGO_VERSION = "0.142.0"
HUGO_THEMESDIR = "../.."
HUGO_THEME = "repo"
TZ = "Portugal/Lisbon"
[context.production.environment]
HUGO_VERSION = "0.104.1"
HUGO_ENV = "production"
[context.deploy-preview]
command = "cd exampleSite && hugo --gc --minify -D -b $DEPLOY_PRIME_URL"
[context.deploy-preview.environment]
HUGO_VERSION = "0.104.1"
[context.branch-deploy]
command = "cd exampleSite && hugo --gc --minify -D -b $DEPLOY_PRIME_URL"
[context.branch-deploy.environment]
HUGO_VERSION = "0.104.1"

File diff suppressed because it is too large Load diff

View file

@ -1,14 +1,14 @@
{
"name": "hugo-blowfish-theme",
"version": "2.80.0",
"version": "2.85.1",
"description": "Blowfish theme for Hugo.",
"scripts": {
"postinstall": "vendor-copy",
"assets": "rimraf assets/vendor && vendor-copy",
"dev": "NODE_ENV=development ./node_modules/tailwindcss/lib/cli.js -i ./assets/css/main.css -o ./assets/css/compiled/main.css --jit -w",
"build": "NODE_ENV=production ./node_modules/tailwindcss/lib/cli.js -i ./assets/css/main.css -o ./assets/css/compiled/main.css --jit",
"dev-windows": "set NODE_ENV=development&&node ./node_modules/tailwindcss/lib/cli.js -i ./assets/css/main.css -o ./assets/css/compiled/main.css --jit -w",
"build-windows": "set NODE_ENV=production&&node ./node_modules/tailwindcss/lib/cli.js -i ./assets/css/main.css -o ./assets/css/compiled/main.css --jit",
"dev": "NODE_ENV=development npx @tailwindcss/cli -c ./tailwind.config.js -i ./assets/css/main.css -o ./assets/css/compiled/main.css --jit -w",
"build": "NODE_ENV=production npx @tailwindcss/cli -c ./tailwind.config.js -i ./assets/css/main.css -o ./assets/css/compiled/main.css --jit",
"dev-windows": "set NODE_ENV=development&& npx @tailwindcss/cli -i ./assets/css/main.css -o ./assets/css/compiled/main.css --jit -w",
"build-windows": "set NODE_ENV=production&& npx @tailwindcss/cli -i ./assets/css/main.css -o ./assets/css/compiled/main.css --jit",
"build-hugo": "hugo --minify -s exampleSite --themesDir ../.. -d ../docs --baseURL https://nunocoracao.github.io/blowfish/",
"example": "hugo server -E -F --minify --source exampleSite --themesDir ../.. --buildDrafts -b http://localhost/ -p 1313",
"lighthouse": "lhci autorun"
@ -26,7 +26,7 @@
"author": {
"name": "Nuno Coração",
"github": "https://github.com/nunocoracao",
"url": "https://nunocoracao.com"
"url": "https://n9o.xyz"
},
"license": "MIT",
"bugs": {
@ -34,21 +34,23 @@
},
"homepage": "https://github.com/nunocoracao/blowfish#readme",
"devDependencies": {
"@tailwindcss/typography": "^0.5.15",
"chart.js": "^4.4.6",
"fuse.js": "^7.0.0",
"@tailwindcss/cli": "^4.1.4",
"@tailwindcss/typography": "^0.5.16",
"chart.js": "^4.4.9",
"fuse.js": "^7.1.0",
"jquery": "^3.7.1",
"katex": "^0.16.11",
"katex": "^0.16.22",
"lite-youtube-embed": "^0.3.3",
"mermaid": "^11.4.0",
"packery": "^2.1.2",
"prettier": "^3.3.3",
"medium-zoom": "^1.1.0",
"mermaid": "^11.6.0",
"packery": "^3.0.0",
"prettier": "^3.5.3",
"prettier-plugin-go-template": "^0.0.15",
"prettier-plugin-tailwindcss": "^0.6.9",
"puppeteer": "^23.7.1",
"prettier-plugin-tailwindcss": "^0.6.11",
"puppeteer": "^24.7.2",
"rimraf": "^6.0.1",
"tailwind-scrollbar": "^3.1.0",
"tailwindcss": "^3.4.14",
"tailwind-scrollbar": "^4.0.2",
"tailwindcss": "^4.0.16",
"tw-elements": "2.0.0",
"typeit": "^8.8.7",
"vendor-copy": "^3.0.1"
@ -106,13 +108,17 @@
{
"from": "node_modules/lite-youtube-embed/src/lite-yt-embed.css",
"to": "assets/lib/lite-youtube-embed/lite-yt-embed.css"
},
{
"from": "node_modules/medium-zoom/dist/medium-zoom.min.js",
"to": "assets/lib/zoom/zoom.min.js"
}
],
"dependencies": {
"@headlessui/react": "^2.2.0",
"@heroicons/react": "^2.1.5",
"@headlessui/react": "^2.2.2",
"@heroicons/react": "^2.2.0",
"@iamtraction/google-translate": "^2.0.1",
"@tailwindcss/forms": "^0.5.9",
"commander": "^12.1.0"
"@tailwindcss/forms": "^0.5.10",
"commander": "^13.1.0"
}
}

View file

@ -1 +1 @@
v0.139.3
v0.147.1

View file

@ -13,7 +13,7 @@ features = ["syntax highlighting", "dark mode", "emoji", "firebase", "views"]
[author]
name = "Nuno Coracao"
homepage = "https://nunocoracao.com/"
homepage = "https://n9o.xyz/"
[original]
author = "James Panther"