update the theme
This commit is contained in:
parent
008abb31c3
commit
3988dc59f8
50 changed files with 6947 additions and 6547 deletions
|
@ -1,5 +0,0 @@
|
|||
{
|
||||
"projects": {
|
||||
"default": "blowfish-21fff"
|
||||
}
|
||||
}
|
144
themes/blowfish/README.id.md
Normal file
144
themes/blowfish/README.id.md
Normal 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
|
||||
[](https://app.netlify.com/sites/snazzy-dango-efb2ec/deploys)
|
||||
[](https://github.com/gohugoio/hugo/releases/tag/v0.87.0)
|
||||
[](https://github.com/nunocoracao/blowfish/blob/main/LICENSE)
|
||||
[](https://themes.gohugo.io/themes/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.
|
||||
|
||||

|
||||
|
||||
🌏 [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
|
||||
|
||||
---
|
||||
|
||||

|
||||
|
||||
## 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
|
||||
|
||||
[](https://starchart.cc/nunocoracao/blowfish)
|
||||
|
||||
<a rel="me" href="https://masto.ai/@blowfish">Mastodon</a>
|
178
themes/blowfish/README.ja.md
Normal file
178
themes/blowfish/README.ja.md
Normal 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
|
||||
[](https://app.netlify.com/sites/snazzy-dango-efb2ec/deploys)
|
||||
[](https://github.com/gohugoio/hugo/releases/tag/v0.87.0)
|
||||
[](https://github.com/nunocoracao/blowfish/blob/main/LICENSE)
|
||||
[](https://themes.gohugo.io/themes/blowfish/)
|
||||

|
||||
|
||||
Blowfishは[Hugo](https://gohugo.io)のために設計された強力で軽量なテーマです。Tailwind CSS を使用し、コンテンツを優先したクリーンでミニマルなデザインでが特徴です。
|
||||
|
||||

|
||||
|
||||
|
||||
🌏 [デモサイト](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 には、テーマのあらゆる側面を網羅した[詳細なドキュメント](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)をご覧ください。
|
||||
|
||||
---
|
||||
|
||||
## スター数の推移
|
||||
|
||||
[](https://starchart.cc/nunocoracao/blowfish)
|
||||
|
||||
<a rel="me" href="https://masto.ai/@blowfish">Mastodon</a>
|
|
@ -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
|
||||
[](https://github.com/nunocoracao/blowfish/actions/workflows/firebase-production.yml)
|
||||
[](https://github.com/nunocoracao/blowfish/actions/workflows/pages.yml)
|
||||
[](https://app.netlify.com/sites/snazzy-dango-efb2ec/deploys)
|
||||
[](https://github.com/gohugoio/hugo/releases/tag/v0.87.0)
|
||||
[](https://github.com/nunocoracao/blowfish/blob/main/LICENSE)
|
||||
[](https://themes.gohugo.io/themes/blowfish/)
|
||||
|
@ -145,7 +144,7 @@ blowfish-tools new mynewsite
|
|||
4. In the root folder of your website, delete the `hugo.toml` file that was generated by Hugo. Copy the `*.toml` config files from the theme into your `config/_default/` folder.
|
||||
|
||||
> **Note:** Do not overwrite the `module.toml` file you created above!
|
||||
|
||||
|
||||
You will find these theme config files in the Hugo cache directory, or [download a copy](https://github.com/nunocoracao/blowfish/releases/latest/download/config-default.zip) from GitHub.
|
||||
|
||||
5. Follow the [Getting Started](https://blowfish.page/docs/getting-started/) instructions to configure your website.
|
||||
|
|
|
@ -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
|
||||
[](https://github.com/nunocoracao/blowfish/actions/workflows/firebase-production.yml)
|
||||
[](https://github.com/nunocoracao/blowfish/actions/workflows/pages.yml)
|
||||
[](https://app.netlify.com/sites/snazzy-dango-efb2ec/deploys)
|
||||
[](https://github.com/gohugoio/hugo/releases/tag/v0.87.0)
|
||||
[](https://github.com/nunocoracao/blowfish/blob/main/LICENSE)
|
||||
[](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
|
@ -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 {
|
||||
|
|
|
@ -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 }}
|
||||
|
|
|
@ -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: {
|
||||
|
@ -17,4 +28,4 @@ mermaid.initialize({
|
|||
"ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif",
|
||||
fontSize: "16px",
|
||||
},
|
||||
});
|
||||
});
|
||||
|
|
|
@ -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
6
themes/blowfish/assets/lib/fuse/fuse.min.js
vendored
6
themes/blowfish/assets/lib/fuse/fuse.min.js
vendored
File diff suppressed because one or more lines are too long
|
@ -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
971
themes/blowfish/assets/lib/mermaid/mermaid.min.js
vendored
971
themes/blowfish/assets/lib/mermaid/mermaid.min.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
4
themes/blowfish/assets/lib/zoom/zoom.min.js
vendored
4
themes/blowfish/assets/lib/zoom/zoom.min.js
vendored
File diff suppressed because one or more lines are too long
|
@ -2,4 +2,4 @@
|
|||
[module.hugoVersion]
|
||||
extended = true
|
||||
min = "0.87.0"
|
||||
max = "0.139.3"
|
||||
max = "0.147.1"
|
|
@ -1,16 +0,0 @@
|
|||
{
|
||||
"hosting": {
|
||||
"public": "public",
|
||||
"ignore": [
|
||||
"firebase.json",
|
||||
"**/.*",
|
||||
"**/node_modules/**"
|
||||
],
|
||||
"rewrites": [
|
||||
{
|
||||
"source": "**",
|
||||
"destination": "/index.html"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
|
@ -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: "最近の記事"
|
||||
|
|
|
@ -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 }}"
|
||||
/>
|
||||
|
|
|
@ -15,11 +15,11 @@
|
|||
class="font-bold text-primary-600 ltr:pr-2 rtl:pl-2 dark:text-primary-400">↓</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">
|
||||
|
|
|
@ -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 -}}
|
||||
|
||||
|
|
|
@ -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 }}
|
||||
|
||||
|
|
|
@ -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 -}}
|
||||
|
||||
|
|
|
@ -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 -}}
|
||||
|
|
@ -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 }}
|
||||
|
|
|
@ -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 }}
|
||||
|
|
|
@ -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 }}"
|
||||
|
|
|
@ -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 */}}
|
||||
|
|
|
@ -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 }}
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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 }}">
|
||||
|
|
|
@ -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 }}
|
||||
|
|
|
@ -1,5 +1,31 @@
|
|||
{{ $id := delimit (slice "gallery" (partial "functions/uid.html" .)) "-" }}
|
||||
|
||||
<div id="{{ $id }}" class="gallery">
|
||||
{{ .Inner }}
|
||||
</div>
|
||||
{{ $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>
|
||||
|
|
|
@ -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 -}}
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
<div class="mermaid" align="center">
|
||||
{{ .Inner }}
|
||||
<pre>{{ .Inner | safeHTML }}</pre>
|
||||
</div>
|
||||
|
|
|
@ -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">
|
||||
|
@ -17,7 +16,7 @@
|
|||
{{ end }}
|
||||
{{ if $badge }}
|
||||
<h3 class="">
|
||||
{{ partial "badge" $badge}}
|
||||
{{ partial "badge" $badge}}
|
||||
</h3>
|
||||
{{ end }}
|
||||
</div>
|
||||
|
|
|
@ -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"
|
||||
HUGO_THEME = "repo"
|
2706
themes/blowfish/package-lock.json
generated
2706
themes/blowfish/package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
@ -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"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1 +1 @@
|
|||
v0.139.3
|
||||
v0.147.1
|
||||
|
|
|
@ -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"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue