Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ffb674669b | ||
|
|
4ff008e564 | ||
|
|
dfb5024dfb | ||
|
|
a4ba20418c | ||
|
|
3f6a2851c7 | ||
|
|
e06e215d2a | ||
|
|
d020e35f77 | ||
|
|
ac559eb26c | ||
|
|
f33cad7a7e | ||
|
|
070858d473 | ||
|
|
0fd9afa671 | ||
|
|
349ce602f3 | ||
|
|
e7a2fef953 | ||
|
|
112a061fde | ||
|
|
433b5f9259 | ||
|
|
f2a3c0f033 | ||
|
|
f85520a808 | ||
|
|
fd527b01a5 |
No files matched your search
@@ -0,0 +1,22 @@
|
||||
> **Correction (2026-09-23):** v1.27.2 did not fix every push notification template. Bloom, Ember, and Heritage still used the old commit ID path and can fail to render push notifications on Gitea 1.27.1+. Use v1.27.3 for the fix.
|
||||
|
||||
FEATURES
|
||||
|
||||
- THEMES (Aurora)
|
||||
- Add `email-text` class to release template paragraphs for consistent typography with the rest of the theme
|
||||
|
||||
BUGFIXES
|
||||
|
||||
- THEMES
|
||||
- Update push commit data paths in seven themes for Gitea 1.27.1 compatibility (`.ID` → `.UserCommit.GitCommit.ID`); see the correction above for the three remaining themes
|
||||
- Replace `rgba()` colors with `#RRGGBBAA` hex notation across all 10 themes
|
||||
|
||||
DOCS
|
||||
|
||||
- Track Gitea 1.27.0, 1.27.1, and 1.27.2 compatibility
|
||||
- Keep English and Simplified Chinese README and CONTRIBUTING files
|
||||
|
||||
|
||||
---
|
||||
|
||||
**Full Changelog:** [v1.0.1...v1.27.2](https://github.com/KenanZhu/GiteaMailTemplates/compare/v1.0.1...v1.27.2)
|
||||
@@ -0,0 +1,22 @@
|
||||
FEATURES
|
||||
|
||||
- RELEASE
|
||||
- Include English and Simplified Chinese README and CONTRIBUTING files in the release archives
|
||||
- Use reviewed release notes in the publishing workflow
|
||||
|
||||
BUGFIXES
|
||||
|
||||
- THEMES (Bloom, Ember, Heritage)
|
||||
- Fix pull request push notification commit links and abbreviated hashes for Gitea 1.27.1–1.27.3 by reading `.UserCommit.GitCommit.ID`
|
||||
- CI
|
||||
- Add a push notification regression test covering all 10 themes and run Go tests before packaging a release
|
||||
|
||||
DOCS
|
||||
|
||||
- Verify compatibility with Gitea 1.27.3; its mail templates, mailer, and locale files are unchanged from 1.27.2
|
||||
- Correct the compatibility matrix to distinguish the affected v1.27.2 archive from this fixed release
|
||||
|
||||
|
||||
---
|
||||
|
||||
**Full Changelog:** [v1.27.2...v1.27.3](https://github.com/KenanZhu/GiteaMailTemplates/compare/v1.27.2...v1.27.3)
|
||||
@@ -80,30 +80,12 @@ jobs:
|
||||
ROW="| **${NEW}** | ${TODAY} | ⏳ Pending Verification | TBD |"
|
||||
sed -i "${INSERT}a ${ROW}" COMPATIBILITY.md
|
||||
|
||||
- name: COMPATIBILITY.md — latest verified note
|
||||
if: steps.version.outputs.skip != 'true'
|
||||
run: |
|
||||
NEW="${{ steps.version.outputs.new_version }}"
|
||||
# Update version inline on the line with TRACKER:LATEST-VERIFIED
|
||||
sed -i "/TRACKER:LATEST-VERIFIED/s/Gitea [0-9.]*/Gitea ${NEW}/" COMPATIBILITY.md
|
||||
|
||||
- name: README.md — badge and latest tested
|
||||
- name: README.md — pending badge
|
||||
if: steps.version.outputs.skip != 'true'
|
||||
run: |
|
||||
NEW="${{ steps.version.outputs.new_version }}"
|
||||
# Badge: update version, change label tested→pending, color blue→yellow
|
||||
sed -i "/TRACKER:BADGE/s/%20[0-9a-z.-]*%20tested-blue/%20${NEW}%20pending-yellow/" README.md
|
||||
# Latest tested: update version on the TRACKER:LATEST-TESTED line
|
||||
sed -i "/TRACKER:LATEST-TESTED/s/Gitea [0-9.]*/Gitea ${NEW}/" README.md
|
||||
|
||||
|
||||
- name: README translations — latest tested
|
||||
if: steps.version.outputs.skip != 'true'
|
||||
run: |
|
||||
NEW="${{ steps.version.outputs.new_version }}"
|
||||
for f in docs/README.{ja,ko,ru,zh-CN,zh-TW}.md; do
|
||||
sed -i "/TRACKER:LATEST-TESTED/s/Gitea [0-9.]*/Gitea ${NEW}/" "$f"
|
||||
done
|
||||
|
||||
- name: Create Pull Request
|
||||
if: steps.version.outputs.skip != 'true'
|
||||
@@ -117,15 +99,24 @@ jobs:
|
||||
|
||||
This PR:
|
||||
- Updates the compatibility matrix in `COMPATIBILITY.md`
|
||||
- Updates version badges in `README.md` and translations
|
||||
- Marks the new version as pending in the `README.md` badge
|
||||
- Marks the new version as **⏳ Pending Verification**
|
||||
|
||||
## Verification Checklist
|
||||
- [ ] Check [Gitea changelog](https://github.com/go-gitea/gitea/blob/main/CHANGELOG.md) for mail template changes
|
||||
- [ ] Review diff of official templates: `git diff v${{ steps.version.outputs.current_version }}..v${{ steps.version.outputs.new_version }} -- templates/mail/ services/mailer/`
|
||||
- [ ] Run `cd tools && go run . preview all` to confirm templates still render
|
||||
- [ ] Run `cd tools && go test ./...` to verify push-notification data paths
|
||||
- [ ] Update status from ⏳ to ✅ (compatible) or ❌ (breaking) in COMPATIBILITY.md
|
||||
- [ ] Update the `Mail Template Changes` and `Breaking?` columns with accurate notes
|
||||
- [ ] After verification, update `TRACKER:LATEST-VERIFIED` and the English/Chinese `TRACKER:LATEST-TESTED` lines; switch the README badge from pending to tested
|
||||
|
||||
## Semantic tracking
|
||||
Once verified, update the tracked Gitea version:
|
||||
- [ ] If templates changed, mark the top **Template Release** row `Unreleased` until the fix is tagged; if no change is needed, retain the verified release tag
|
||||
- [ ] Update the README release status and compatibility matrix to distinguish source fixes from published packages
|
||||
- [ ] Write `.github/release-notes/vX.Y.Z.md` before tagging; the release workflow uses this file for the published notes
|
||||
- [ ] Tag a new release when shipping template fixes — `git tag vX.Y.Z && git push origin vX.Y.Z` (the release workflow packages automatically)
|
||||
labels: compatibility, automated
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
@@ -16,6 +16,10 @@ jobs:
|
||||
with:
|
||||
go-version: '1.21'
|
||||
|
||||
- name: Test — mail template data contexts
|
||||
working-directory: tools
|
||||
run: go test ./...
|
||||
|
||||
- name: Lint — render all templates
|
||||
working-directory: tools
|
||||
run: go run . preview all
|
||||
@@ -30,20 +34,25 @@ jobs:
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Verify release notes
|
||||
run: test -s ".github/release-notes/${GITHUB_REF_NAME}.md"
|
||||
|
||||
- name: Package themes/
|
||||
run: |
|
||||
VERSION=${GITHUB_REF#refs/tags/}
|
||||
ARCHIVE="gitea-mail-templates-${VERSION}"
|
||||
mkdir -p "dist/${ARCHIVE}"
|
||||
cp -r themes LICENSE README.md COMPATIBILITY.md "dist/${ARCHIVE}/"
|
||||
mkdir -p "dist/${ARCHIVE}/docs"
|
||||
cp -r themes LICENSE README.md CONTRIBUTING.md COMPATIBILITY.md "dist/${ARCHIVE}/"
|
||||
cp docs/README.zh-CN.md docs/CONTRIBUTING.zh-CN.md "dist/${ARCHIVE}/docs/"
|
||||
cd dist
|
||||
zip -r "${ARCHIVE}.zip" "${ARCHIVE}"
|
||||
tar -czf "${ARCHIVE}.tar.gz" "${ARCHIVE}"
|
||||
|
||||
- name: Create Release
|
||||
uses: softprops/action-gh-release@v2
|
||||
uses: softprops/action-gh-release@v3
|
||||
with:
|
||||
files: dist/*.zip,dist/*.tar.gz
|
||||
generate_release_notes: true
|
||||
fail_on_unmatched_files: true
|
||||
body_path: .github/release-notes/${{ github.ref_name }}.md
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
@@ -28,7 +28,7 @@ tools/ # Go CLI tooling (modular, zero dependencies)
|
||||
preview/ # Browser-based live preview
|
||||
index.html # SPA with style/template/client/viewport switching
|
||||
rendered.js # Pre-rendered HTML (generated, committed for clone-and-preview)
|
||||
docs/ # Multi-language documentation
|
||||
docs/ # Bilingual documentation (English + Simplified Chinese)
|
||||
```
|
||||
|
||||
## Working With Templates
|
||||
@@ -64,6 +64,15 @@ docs/ # Multi-language documentation
|
||||
- `tools/preview/server.go` pure Go dev server with SSE live reload and in-process template re-rendering
|
||||
- Uses Go's native `html/template` package for template rendering
|
||||
|
||||
## Versioning
|
||||
|
||||
- Release tags identify actual downloadable packages; the compatibility matrix distinguishes released tags from source-only fixes
|
||||
- The current release is **v1.27.3**, verified against Gitea 1.27.3; it fixes the push-notification bug in Bloom, Ember, and Heritage that affects v1.27.2 on Gitea 1.27.1+. The quick-reference table in `COMPATIBILITY.md` lists the active release first; the tracker workflow updates that row by position
|
||||
- When a new Gitea version is checked: update the top `COMPATIBILITY.md` row and README badge; keep unreleased fixes distinct from the published release, and update verified/tested wording only after verification
|
||||
- Tag a new release (`vX.Y.Z`) only when the template content itself changes — the release workflow packages automatically on tag push
|
||||
- Before tagging, add `.github/release-notes/vX.Y.Z.md`; the release workflow validates the file, runs `go test ./...`, and publishes those reviewed notes with the archives
|
||||
- Keep the `TRACKER:` markers in `COMPATIBILITY.md` / `README.md` adjacent to their rows so the automated workflow keeps parsing them
|
||||
|
||||
## Commit Conventions
|
||||
- `style(name):` — template changes for a specific theme
|
||||
- `preview:` — preview tooling changes
|
||||
|
||||
+24
-3
@@ -7,9 +7,26 @@ This document tracks the compatibility between **Gitea Mail Templates** releases
|
||||
<!-- TRACKER:QUICK-REF-MAX OFFSET=3 -->
|
||||
| Template Release | Min Gitea | Max Tested Gitea | Status |
|
||||
|-----------------|-----------|-----------------|--------|
|
||||
| **v1.0.0** | **1.25.0** | **1.26.4** | ✅ Active |
|
||||
| **v1.27.3** | **1.25.0** | **1.27.3** | ✅ Active |
|
||||
| **v1.27.2** | **1.25.0** | **1.27.3** | ⚠️ Push notices fail in Bloom, Ember, and Heritage on Gitea 1.27.1+ |
|
||||
| **v1.0.1** | **1.25.0** | **1.27.0** | ✅ Superseded; push notices need newer release on 1.27.1+ |
|
||||
| **v1.0.0** | **1.25.0** | **1.26.4** | ✅ Superseded |
|
||||
|
||||
> **Latest verified:** All 11 templates pass validation against Gitea 1.26.4 data contexts. <!-- TRACKER:LATEST-VERIFIED -->
|
||||
> **Latest verified:** Release v1.27.3 passes the Gitea 1.27.3 source audit and push-render test. The older v1.27.2 archive contains three broken push-notification templates. <!-- TRACKER:LATEST-VERIFIED -->
|
||||
|
||||
## Versioning
|
||||
|
||||
The release tag identifies the downloadable template package. The supported Gitea version may be appended in parentheses in this compatibility matrix; the parenthesized version is not a Git tag. An **unreleased** row describes fixes available in the repository but not yet in a downloadable release.
|
||||
|
||||
| Gitea version | Template release |
|
||||
|---------------|------------------|
|
||||
| 1.27.3 | **v1.27.3**; v1.27.2 has a push-notification issue in three themes |
|
||||
| 1.27.2 | **v1.27.3**; v1.27.2 has the same issue |
|
||||
| 1.27.1 | **v1.27.3**; v1.27.2 has the same issue |
|
||||
|
||||
- The [tracker workflow](.github/workflows/gitea-tracker.yml) opens a PR when a new Gitea release appears, marking it ⏳ Pending Verification.
|
||||
- After verification, update the top **Template Release** row. Keep fixes on `main` marked **unreleased** until a new tag is published; the [release workflow](.github/workflows/release.yml) packages the archive on tag push.
|
||||
- The older `v1.0.1` tag predates the Gitea 1.27.1 push notification data fix and should not be used for Gitea 1.27.1 or newer.
|
||||
|
||||
## Check Your Gitea Version
|
||||
|
||||
@@ -24,6 +41,10 @@ gitea --version
|
||||
<!-- TRACKER:VERSION-INSERT OFFSET=2 -->
|
||||
| Gitea | Release Date | Mail Template Changes | Breaking? |
|
||||
|-------|-------------|----------------------|-----------|
|
||||
| **1.27.3** | 2026-08-29 | No upstream mail template, mailer, or locale changes; an existing push-notification defect in three themes is fixed in template release v1.27.3 | No upstream break |
|
||||
| **1.27.2** | 2026-08-14 | None — security + bug fixes | No |
|
||||
| **1.27.1** | 2026-07-27 | Push commit data paths changed: .ID → .UserCommit.GitCommit.ID (#38467); older custom templates can fail on push notifications | Yes (old .ID paths) |
|
||||
| **1.27.0** | 2026-07-13 | None — no mail template changes | No |
|
||||
| **1.26.4** | 2026-06-21 | None — hotfix release | No |
|
||||
| **1.26.3** | 2026-06-20 | None — security release | No |
|
||||
| **1.26.2** | 2026-05-20 | None — security + bug fixes | No |
|
||||
@@ -89,7 +110,7 @@ All templates use Gitea's official `mail.*` translation namespace. Keys are stab
|
||||
|
||||
## Automated Tracking
|
||||
|
||||
A [workflow](.github/workflows/gitea-tracker.yml) runs daily (UTC 08:00) to detect new Gitea releases. When a new version is found, it automatically creates a PR updating the matrix and badges with a **⏳ Pending Verification** status. Manual trigger is also available via `workflow_dispatch`.
|
||||
A [workflow](.github/workflows/gitea-tracker.yml) runs daily (UTC 08:00) to detect new Gitea releases. When a new version is found, it automatically creates a PR updating the matrix and badges with a **⏳ Pending Verification** status. Manual trigger is also available via `workflow_dispatch`. Once verification passes, update the compatibility matrix; publish a new template tag when template changes require a release (see [Versioning](#versioning)).
|
||||
|
||||
## Reporting Issues
|
||||
|
||||
|
||||
+1
-5
@@ -91,11 +91,7 @@ Any readable commit message in semantic format is welcome. Such as:
|
||||
## Translations
|
||||
|
||||
- English
|
||||
- [Simplified Chinese](docs/CONTRIBUTING.zh-CN.md)
|
||||
- [Traditional Chinese](docs/CONTRIBUTING.zh-TW.md)
|
||||
- [Russian](docs/CONTRIBUTING.ru.md)
|
||||
- [Japanese](docs/CONTRIBUTING.ja.md)
|
||||
- [Korean](docs/CONTRIBUTING.ko.md)
|
||||
- [简体中文](docs/CONTRIBUTING.zh-CN.md)
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
|
||||
A curated collection of professionally designed, audience-driven email templates for self-hosted [Gitea](https://about.gitea.com) instances.
|
||||
|
||||
[](COMPATIBILITY.md) <!-- TRACKER:BADGE -->
|
||||
[](COMPATIBILITY.md) <!-- TRACKER:BADGE -->
|
||||
|
||||
> **110 template files — 10 visual styles, 11 email types each**
|
||||
> **Release v1.27.3 — verified with Gitea 1.27.3 — 110 template files, 10 visual styles, 11 email types each.**
|
||||
|
||||
---
|
||||
|
||||
@@ -12,7 +12,7 @@ A curated collection of professionally designed, audience-driven email templates
|
||||
|
||||
Most self-hosted Gitea instances use the default plain email templates. This project provides **ready-to-deploy, visually polished alternatives** — each designed for a specific community or audience, so you can pick the one that feels right for your users.
|
||||
|
||||
Every template is a drop-in replacement. All Go template variables, translation keys, and Gitea data contexts are fully compatible. **No patches, no plugins, no forks required.**
|
||||
The templates on `main` can replace Gitea's built-in mail templates without patches, plugins, or forks. Check the [compatibility matrix](COMPATIBILITY.md) before using a published archive; older releases may have version-specific limitations.
|
||||
|
||||
---
|
||||
|
||||
@@ -135,7 +135,7 @@ gitea-mail-templates/
|
||||
│ ├── data/ # templates_config.json — single source of truth
|
||||
│ ├── preview/ # Template rendering engine
|
||||
│ └── go.mod
|
||||
├── docs/ # Multi-language documentation
|
||||
├── docs/ # Bilingual documentation (English + Simplified Chinese)
|
||||
├── AGENTS.md # AI agent guidance
|
||||
├── CONTRIBUTING.md
|
||||
├── LICENSE
|
||||
@@ -164,8 +164,9 @@ gitea-mail-templates/
|
||||
## Compatibility
|
||||
|
||||
- **Gitea 1.25+** — matches the refactored mail template directory structure (v1.25)
|
||||
- **Latest tested:** Gitea 1.26.4 <!-- TRACKER:LATEST-TESTED -->
|
||||
- 100% variable-compatible with official Gitea templates — see [COMPATIBILITY.md](COMPATIBILITY.md) for the full matrix
|
||||
- **Latest tested:** Gitea 1.27.3 <!-- TRACKER:LATEST-TESTED -->
|
||||
- **Latest release:** [v1.27.3](https://github.com/KenanZhu/GiteaMailTemplates/releases/tag/v1.27.3) fixes push notifications in Bloom, Ember, and Heritage on Gitea 1.27.1+. The older v1.27.2 archive is affected (see [COMPATIBILITY.md](COMPATIBILITY.md))
|
||||
- The current source uses Gitea's official template data paths — see [COMPATIBILITY.md](COMPATIBILITY.md) for release-specific limitations
|
||||
- Uses only built-in Gitea template functions and official translation keys
|
||||
- No custom template functions or locale patches required
|
||||
|
||||
@@ -184,17 +185,13 @@ gitea-mail-templates/
|
||||
## Documentation
|
||||
|
||||
- [English](README.md)
|
||||
- [Simplified Chinese](docs/README.zh-CN.md)
|
||||
- [Traditional Chinese](docs/README.zh-TW.md)
|
||||
- [Russian](docs/README.ru.md)
|
||||
- [Japanese](docs/README.ja.md)
|
||||
- [Korean](docs/README.ko.md)
|
||||
- [简体中文](docs/README.zh-CN.md)
|
||||
|
||||
---
|
||||
|
||||
## Contributing
|
||||
|
||||
See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines. Multi-language versions available in [docs/](docs/).
|
||||
See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines. A Simplified Chinese translation is available in [docs/](docs/).
|
||||
|
||||
## License
|
||||
|
||||
|
||||
@@ -1,76 +0,0 @@
|
||||
# コントリビューション — Gitea メールテンプレート
|
||||
|
||||
## 参加方法
|
||||
|
||||
### 新しいスタイルの追加
|
||||
|
||||
1. ツールでスキャフォールド: `cd tools && go run . create <style-name>` — 全11種類のメールタイプ用のプレースホルダ `.tmpl` ファイルを含む完全なディレクトリ構造を作成します
|
||||
2. `themes/<style-name>/` 内の各 `.tmpl` ファイルを独自デザインで編集
|
||||
3. プレビューを再生成: `cd tools && go run . preview all`(ビルドスクリプトが `themes/` 以下の全テーマを自動検出し、テーマセレクターも自動生成されます)
|
||||
4. スクリーンショット付きで PR を提出(1枚あたり 50 KiB 以下、10–20 KiB 推奨)
|
||||
|
||||
### スタイルガイドライン
|
||||
|
||||
- 各スタイルに **全11種類のテンプレート** を含める
|
||||
- Gitea 組み込み関数のみ使用
|
||||
- 翻訳キーは Gitea 公式ロケール (`mail.*`) から
|
||||
- **`.DisplayName` を使用しない** (collaborator, transfer, release, workflow_run, assigned, default)
|
||||
- 600px 幅のメールクライアント向けにデザイン
|
||||
- Gmail, Outlook, Apple Mail でテスト
|
||||
|
||||
### バグレポート
|
||||
|
||||
1. Go 変数が正しいか確認
|
||||
2. 翻訳キーが Gitea ロケールと一致するか確認
|
||||
3. `.DisplayName` が誤用されていないか確認
|
||||
4. プレビューを再生成: `cd tools && go run . preview all`
|
||||
5. スタイル名とメールタイプを明記して issue を作成
|
||||
|
||||
---
|
||||
|
||||
## 開発セットアップ
|
||||
|
||||
- **Go 1.21+** テンプレートレンダリングとCLI用
|
||||
|
||||
### ローカルプレビュー(静的)
|
||||
|
||||
1. データを生成: `cd tools && go run . preview all`
|
||||
2. `preview/index.html` をブラウザで開く
|
||||
|
||||
|
||||
### 開発サーバー(ライブリロード)
|
||||
|
||||
```bash
|
||||
cd tools && go run . dev
|
||||
# → http://localhost:3456
|
||||
```
|
||||
|
||||
`.tmpl` ファイルを編集すると自動的に再構築されブラウザに反映されます。
|
||||
|
||||
|
||||
### 結合テスト
|
||||
|
||||
Gitea にデプロイ後、実際のトランザクションメールで検証してください。管理画面のテストメール
|
||||
(**Site Administration > Configuration > Mailer > Send Test Email**)はカスタム
|
||||
メールテンプレートを使用しません——組み込みのコードパスを通ります。
|
||||
|
||||
最も確実な方法は実際の通知をトリガーすることです。例えば、パスワードリセットフロー:
|
||||
|
||||
1. ログアウトし、ログインページで **"Forgot password"** をクリック
|
||||
2. アカウントのメールアドレスを入力して送信
|
||||
3. パスワードリセットメールを確認——カスタムメールテンプレートでレンダリングされます
|
||||
|
||||
---
|
||||
|
||||
## コミット規約
|
||||
|
||||
- `style(<name>):` — スタイルのテンプレート変更
|
||||
- `preview:` — プレビューツールの変更
|
||||
- `tools:` — Go ビルドスクリプトの変更
|
||||
- `docs:` — ドキュメントと翻訳
|
||||
- `fix:` — バグ修正
|
||||
- `project:` — README, LICENSE, メタファイル
|
||||
|
||||
## ライセンス
|
||||
|
||||
貢献により、MIT ライセンスに同意したものとみなします。
|
||||
@@ -1,49 +0,0 @@
|
||||
# 기여 가이드 — Gitea 메일 템플릿
|
||||
|
||||
## 기여 방법
|
||||
|
||||
### 새 스타일 추가하기
|
||||
|
||||
1. 도구로 스캐폴드: `cd tools && go run . create <style-name>` — 11개 이메일 유형 모두에 대한 플레이스홀더 `.tmpl` 파일이 포함된 완전한 디렉토리 구조를 생성합니다
|
||||
2. `themes/<style-name>/`에서 각 `.tmpl` 파일을 고유한 디자인으로 편집
|
||||
3. 프리뷰 재생성: `cd tools && go run . preview all` (빌드 스크립트가 `themes/` 아래의 모든 테마 디렉토리를 자동으로 찾고 테마 선택기도 자동 생성합니다)
|
||||
4. 스크린샷과 함께 PR 제출 (이미지당 50 KiB 이하, 10–20 KiB 권장)
|
||||
|
||||
### 스타일 가이드라인
|
||||
|
||||
- 각 스타일에 **11개 템플릿 유형 모두** 포함
|
||||
- Gitea 내장 함수만 사용
|
||||
- 번역 키는 Gitea 공식 로케일 (`mail.*`) 사용
|
||||
- **`.DisplayName` 사용 금지** (collaborator, transfer, release, workflow_run, assigned, default)
|
||||
- 600px 너비의 이메일 클라이언트에 맞게 디자인
|
||||
- Gmail, Outlook, Apple Mail에서 테스트
|
||||
|
||||
### 버그 리포트
|
||||
|
||||
1. Go 변수가 올바른지 확인
|
||||
2. 번역 키가 Gitea 로케일과 일치하는지 확인
|
||||
3. `.DisplayName`이 오용되지 않았는지 확인
|
||||
4. 프리뷰 재생성: `cd tools && go run . preview all`
|
||||
5. 스타일 이름과 메일 유형을 명시하여 이슈 생성
|
||||
|
||||
---
|
||||
|
||||
## 개발 설정
|
||||
|
||||
- **Go 1.21+** 템플릿 렌더링 및 CLI 도구
|
||||
|
||||
### 로컬 프리뷰 (정적)
|
||||
|
||||
1. 데이터 생성: `cd tools && go run . preview all`
|
||||
2. `preview/index.html`을 브라우저에서 열기
|
||||
|
||||
|
||||
### 개발 서버 (실시간 리로드)
|
||||
|
||||
```bash
|
||||
cd tools && go run . dev
|
||||
# → http://localhost:3456
|
||||
```
|
||||
|
||||
`.tmpl` 파일 수정 시 자동 재빌드되어 브라우저에 반영됩니다.
|
||||
|
||||
@@ -1,77 +0,0 @@
|
||||
# Участие в разработке — Gitea Mail Templates
|
||||
|
||||
## Способы участия
|
||||
|
||||
### Добавление нового стиля
|
||||
|
||||
1. Создайте каркас через инструмент: `cd tools && go run . create <имя-стиля>` — создаёт полную структуру директорий с файлами-заготовками `.tmpl` для всех 11 типов писем
|
||||
2. Отредактируйте каждый `.tmpl` файл в `themes/<имя-стиля>/` с вашим уникальным дизайном
|
||||
3. Перегенерируйте превью: `cd tools && go run . preview all` (скрипт автоматически находит все темы в `themes/` и динамически генерирует селектор тем)
|
||||
4. Отправьте PR со скриншотами (≤ 50 КиБ каждый, рекомендуется 10–20 КиБ)
|
||||
|
||||
### Рекомендации по стилю
|
||||
|
||||
- Каждый стиль должен включать **все 11 типов шаблонов**
|
||||
- Используйте только встроенные функции шаблонов Gitea
|
||||
- Ключи перевода из официальных файлов локали Gitea (`mail.*`)
|
||||
- **Не используйте `.DisplayName`** где его нет в контексте (collaborator, transfer, release, workflow_run, assigned, default)
|
||||
- Дизайн для 600px email клиентов
|
||||
- Тестируйте в Gmail, Outlook, Apple Mail
|
||||
|
||||
### Баг-репорты
|
||||
|
||||
1. Проверьте переменные Go в шаблонах
|
||||
2. Сверьте ключи перевода с локалью Gitea
|
||||
3. Убедитесь что `.DisplayName` не используется где не надо
|
||||
4. Перегенерируйте превью: `cd tools && go run . preview all`
|
||||
5. Создайте issue с указанием стиля и типа письма
|
||||
|
||||
---
|
||||
|
||||
## Настройка разработки
|
||||
|
||||
- **Go 1.21+** для рендеринга шаблонов и CLI
|
||||
|
||||
### Локальный предпросмотр (статический)
|
||||
|
||||
1. Сгенерируйте данные: `cd tools && go run . preview all`
|
||||
2. Откройте `preview/index.html` в браузере — сервер не нужен
|
||||
|
||||
|
||||
### Сервер разработки (live reload)
|
||||
|
||||
```bash
|
||||
cd tools && go run . dev
|
||||
# → http://localhost:3456
|
||||
```
|
||||
|
||||
При изменении `.tmpl` файлов автоматически пересобирает и обновляет браузер.
|
||||
|
||||
|
||||
### Интеграционное тестирование
|
||||
|
||||
Разверните шаблоны на Gitea и проверяйте с реальными транзакционными письмами.
|
||||
Тестовое письмо администратора (**Site Administration > Configuration > Mailer >
|
||||
Send Test Email**) не использует пользовательские шаблоны — оно идет по
|
||||
встроенному пути.
|
||||
|
||||
Самый надежный способ — вызвать реальное уведомление. Например, сброс пароля:
|
||||
|
||||
1. Выйдите из системы и нажмите **"Forgot password"** на странице входа
|
||||
2. Введите email вашей учетной записи и отправьте
|
||||
3. Проверьте письмо для сброса пароля — оно будет отрендерено с вашими шаблонами
|
||||
|
||||
---
|
||||
|
||||
## Соглашение о коммитах
|
||||
|
||||
- `style(<имя>):` — изменения шаблонов стиля
|
||||
- `preview:` — инструменты предпросмотра
|
||||
- `tools:` — Go-скрипт сборки
|
||||
- `docs:` — документация и переводы
|
||||
- `fix:` — исправления
|
||||
- `project:` — README, LICENSE, мета-файлы
|
||||
|
||||
## Лицензия
|
||||
|
||||
Участвуя, вы соглашаетесь с лицензией MIT.
|
||||
@@ -1,80 +0,0 @@
|
||||
# 貢獻指南 — Gitea 郵件模板
|
||||
|
||||
## 參與方式
|
||||
|
||||
### 新增風格
|
||||
|
||||
1. 使用工具腳手架:`cd tools && go run . create <風格名稱>` — 這會建立完整的目錄結構和全部 11 種郵件類型的佔位 `.tmpl` 檔案
|
||||
2. 在 `themes/<風格名稱>/` 中編寫每個 `.tmpl` 檔案,套用獨特的視覺設計
|
||||
3. 重新產生預覽:`cd tools && go run . preview all`(建置腳本會自動發現 `themes/` 下的所有主題目錄並動態生成主題選擇器)
|
||||
4. 提交包含螢幕截圖的 PR(單張圖片 ≤ 50 KiB,建議 10–20 KiB)
|
||||
|
||||
### 風格指南
|
||||
|
||||
- 每個風格必須包含全部 **11 種模板類型**
|
||||
- 僅使用 Gitea 內建模板函式
|
||||
- 翻譯鍵必須來自 Gitea 官方語系檔案(`mail.*` 命名空間)
|
||||
- **請勿在以下模板中使用 `.DisplayName`**:collaborator、transfer、release、workflow_run、assigned、default
|
||||
- 針對 600px 寬度的郵件用戶端設計
|
||||
- 盡可能在 Gmail、Outlook、Apple Mail 中測試
|
||||
|
||||
### 回報 Bug
|
||||
|
||||
1. 檢查引用的 Go 模板變數是否存在
|
||||
2. 驗證翻譯鍵是否與 Gitea 語系檔案相符
|
||||
3. 確認 `.DisplayName` 未在不支援的模板中使用
|
||||
4. 重新產生預覽:`cd tools && go run . preview all`
|
||||
5. 提交 issue,註明風格名稱、郵件類型及錯誤描述
|
||||
|
||||
### 改善文件
|
||||
|
||||
文件改進、預覽螢幕截圖、安裝指南和翻譯始終歡迎。
|
||||
|
||||
---
|
||||
|
||||
## 開發環境
|
||||
|
||||
- **Go 1.21+** 用於模板渲染與 CLI 工具
|
||||
|
||||
### 本機預覽(靜態)
|
||||
|
||||
1. 先生成預覽資料:`cd tools && go run . preview all`
|
||||
2. 在瀏覽器中開啟 `preview/index.html` — 無需伺服器
|
||||
|
||||
|
||||
### 開發伺服器(即時重載)
|
||||
|
||||
```bash
|
||||
cd tools && go run . dev
|
||||
# → http://localhost:3456
|
||||
```
|
||||
|
||||
修改 `.tmpl` 檔案後自動重建並推送至瀏覽器。
|
||||
|
||||
|
||||
### 整合測試
|
||||
|
||||
將模板部署至 Gitea 實例後,請透過真實的郵件通知進行驗證。管理後台的測試郵件
|
||||
(**Site Administration > Configuration > Mailer > Send Test Email**)不會使用
|
||||
自訂郵件模板——它走的是內置程式碼路徑。
|
||||
|
||||
最可靠的驗證方式是觸發一次真實的郵件通知,推薦使用密碼重設流程:
|
||||
|
||||
1. 登出帳號,點擊登入頁的**"忘記密碼"**
|
||||
2. 輸入帳戶郵箱並提交
|
||||
3. 查看密碼重設郵件——它將使用你的自訂郵件模板渲染
|
||||
|
||||
---
|
||||
|
||||
## 提交規範
|
||||
|
||||
- `style(<名稱>):` — 特定風格的模板變更
|
||||
- `preview:` — 預覽工具變更
|
||||
- `tools:` — Go 建置腳本變更
|
||||
- `docs:` — 文件與翻譯
|
||||
- `fix:` — Bug 修復
|
||||
- `project:` — README、LICENSE、中繼資料檔案
|
||||
|
||||
## 授權條款
|
||||
|
||||
參與貢獻即表示您同意將您的貢獻以 MIT 授權條款授權。
|
||||
@@ -1,66 +0,0 @@
|
||||
# Gitea メールテンプレート
|
||||
|
||||
[Gitea](https://about.gitea.com) のためのメールテンプレートコレクション。
|
||||
|
||||
> **110 ファイル — 10 スタイル、各11種類**
|
||||
|
||||
---
|
||||
|
||||
## スタイルギャラリー
|
||||
|
||||
| プレビュー | スタイル | 対象 | 特徴 |
|
||||
|---|---|---|---|
|
||||
|  | **Horizon** | エンタープライズ | Blue accent, slate, centred cards |
|
||||
|  | **Terminal** | 開発者 | Dark mode, monospace, green CLI |
|
||||
|  | **Ember** | コミュニティ | Warm amber, rounded, inclusive |
|
||||
|  | **Bloom** | クリエイティブ | Frosted glass, soft blue light |
|
||||
|  | **Heritage** | 教育/研究 | Navy and gold, serif, classic |
|
||||
|  | **Neon** | ゲーム/Web3 | Cyberpunk neon, pink and cyan |
|
||||
|  | **Mono** | デザイン/編集 | Swiss brutalist, black-white-red |
|
||||
|  | **Terra** | サステナビリティ | Warm earth tones, organic textures |
|
||||
|  | **Ink** | 出版/ニュース | Editorial print, navy and gold |
|
||||
|  | **Aurora** | プレミアムSaaS | Ethereal gradients, purple and teal |
|
||||
|
||||
> 画像は[ライブプレビュー](../preview/index.html)からの600px幅のスクリーンショットです。キャプチャ手順は [images/README.md](images/README.md) を参照してください。
|
||||
|
||||
[**ライブプレビュー**](../preview/index.html)
|
||||
|
||||
---
|
||||
|
||||
## インストール
|
||||
|
||||
```bash
|
||||
cp -r themes/horizon/mail/* /var/lib/gitea/custom/templates/mail/
|
||||
systemctl restart gitea
|
||||
```
|
||||
|
||||
### 動作確認
|
||||
|
||||
管理画面のテストメールはカスタムテンプレートを使用しません。テンプレートが
|
||||
有効であることを確認するには、実際のメール通知をトリガーしてください。最も
|
||||
簡単な方法はパスワードリセットです:ログアウトし、ログインページで
|
||||
**"Forgot password"** をクリックし、リセットメールを確認してください。
|
||||
|
||||
## プレビュー
|
||||
|
||||
**静的モード:**
|
||||
```bash
|
||||
cd tools && go run . preview all
|
||||
```
|
||||
その後 `preview/index.html` を開く。
|
||||
|
||||
**開発サーバー(ライブリロード):**
|
||||
```bash
|
||||
cd tools && go run . dev
|
||||
# → http://localhost:3456
|
||||
```
|
||||
|
||||
## 互換性
|
||||
|
||||
- **Gitea 1.25+** — v1.25で導入されたメールテンプレートディレクトリ構造
|
||||
- **最新テスト:** Gitea 1.26.4<!-- TRACKER:LATEST-TESTED -->
|
||||
- Gitea公式テンプレートと100%互換 — 詳細は [COMPATIBILITY.md](COMPATIBILITY.md)を参照
|
||||
|
||||
## ライセンス
|
||||
|
||||
MIT — [LICENSE](../LICENSE).
|
||||
@@ -1,66 +0,0 @@
|
||||
# Gitea 메일 템플릿
|
||||
|
||||
[Gitea](https://about.gitea.com) 인스턴스를 위한 메일 템플릿 컬렉션.
|
||||
|
||||
> **110 파일 — 10 스타일, 각 11종류**
|
||||
|
||||
---
|
||||
|
||||
## 스타일 갤러리
|
||||
|
||||
| 미리보기 | 스타일 | 대상 | 특징 |
|
||||
|---|---|---|---|
|
||||
|  | **Horizon** | 엔터프라이즈 | Blue accent, slate, centred cards |
|
||||
|  | **Terminal** | 개발자 | Dark mode, monospace, green CLI |
|
||||
|  | **Ember** | 커뮤니티 | Warm amber, rounded, inclusive |
|
||||
|  | **Bloom** | 크리에이티브 | Frosted glass, soft blue light |
|
||||
|  | **Heritage** | 교육/연구 | Navy and gold, serif, classic |
|
||||
|  | **Neon** | 게임/Web3 | Cyberpunk neon, pink and cyan |
|
||||
|  | **Mono** | 디자인/편집 | Swiss brutalist, black-white-red |
|
||||
|  | **Terra** | 지속가능성 | Warm earth tones, organic textures |
|
||||
|  | **Ink** | 출판/뉴스 | Editorial print, navy and gold |
|
||||
|  | **Aurora** | 프리미엄SaaS | Ethereal gradients, purple and teal |
|
||||
|
||||
> 이미지는 [라이브 프리뷰](../preview/index.html)에서 캡처한 600px 너비 스크린샷입니다. 캡처 방법은 [images/README.md](images/README.md)를 참조하세요.
|
||||
|
||||
[**라이브 프리뷰**](../preview/index.html)
|
||||
|
||||
---
|
||||
|
||||
## 설치
|
||||
|
||||
```bash
|
||||
cp -r themes/horizon/mail/* /var/lib/gitea/custom/templates/mail/
|
||||
systemctl restart gitea
|
||||
```
|
||||
|
||||
### 작동 확인
|
||||
|
||||
관리자 테스트 이메일은 커스텀 템플릿을 사용하지 않습니다. 템플릿이 활성화
|
||||
되었는지 확인하려면 실제 이메일 알림을 트리거하세요. 가장 빠른 방법은 비밀번호
|
||||
재설정입니다: 로그아웃 후 로그인 페이지에서 **"Forgot password"** 를 클릭하고
|
||||
재설정 이메일을 확인하세요.
|
||||
|
||||
## 프리뷰
|
||||
|
||||
**정적 모드:**
|
||||
```bash
|
||||
cd tools && go run . preview all
|
||||
```
|
||||
그런 다음 `preview/index.html` 열기.
|
||||
|
||||
**개발 서버 (실시간 리로드):**
|
||||
```bash
|
||||
cd tools && go run . dev
|
||||
# → http://localhost:3456
|
||||
```
|
||||
|
||||
## 호환성
|
||||
|
||||
- **Gitea 1.25+** — v1.25에서 도입된 메일 템플릿 디렉토리 구조 사용
|
||||
- **최신 테스트:** Gitea 1.26.4<!-- TRACKER:LATEST-TESTED -->
|
||||
- Gitea 공식 템플릿과 100% 호환 — 자세한 내용은 [COMPATIBILITY.md](../COMPATIBILITY.md) 참조
|
||||
|
||||
## 라이선스
|
||||
|
||||
MIT — [LICENSE](../LICENSE).
|
||||
@@ -1,66 +0,0 @@
|
||||
# Gitea Mail Templates — Шаблоны писем Gitea
|
||||
|
||||
Коллекция шаблонов писем для [Gitea](https://about.gitea.com).
|
||||
|
||||
> **110 файлов — 10 стилей, по 11 типов писем**
|
||||
|
||||
---
|
||||
|
||||
## Галерея стилей
|
||||
|
||||
| Превью | Стиль | Аудитория | Характер |
|
||||
|---|---|---|---|
|
||||
|  | **Horizon** | Корпоративный | Синий акцент, slate, centred cards |
|
||||
|  | **Terminal** | Разработчики | Тёмная тема, monospace, зелёный CLI |
|
||||
|  | **Ember** | Open Source | Тёплый янтарь, rounded, инклюзивный |
|
||||
|  | **Bloom** | Креатив / Стартапы | Матовое стекло, мягкий синий свет |
|
||||
|  | **Heritage** | Образование | Navy и золото, serif, классика |
|
||||
|  | **Neon** | Игры / Web3 / Креатив | Киберпанк-неон, розовый и циан |
|
||||
|  | **Mono** | Дизайн / Редакция | Швейцарский брутализм, чёрный-белый-красный |
|
||||
|  | **Terra** | Устойчивость / Здоровье | Тёплые земляные тона, органические текстуры |
|
||||
|  | **Ink** | Издательство / Новости | Редакционная печать, navy и золото |
|
||||
|  | **Aurora** | Премиум SaaS | Эфирные градиенты, пурпур и бирюза |
|
||||
|
||||
> Изображения шириной 600px из [предпросмотра](../preview/index.html). Инструкции по созданию скриншотов: [images/README.md](images/README.md).
|
||||
|
||||
[**Галерея предпросмотра**](../preview/index.html)
|
||||
|
||||
---
|
||||
|
||||
## Установка
|
||||
|
||||
```bash
|
||||
cp -r themes/horizon/mail/* /var/lib/gitea/custom/templates/mail/
|
||||
systemctl restart gitea
|
||||
```
|
||||
|
||||
### Проверка работы
|
||||
|
||||
Тестовое письмо администратора не использует пользовательские шаблоны. Чтобы
|
||||
убедиться, что шаблоны активны, вызовите реальное уведомление. Самый быстрый
|
||||
способ — сброс пароля: выйдите из системы, нажмите **"Forgot password"** на
|
||||
странице входа и проверьте письмо для сброса.
|
||||
|
||||
## Предпросмотр
|
||||
|
||||
**Статический режим:**
|
||||
```bash
|
||||
cd tools && go run . preview all
|
||||
```
|
||||
Затем откройте `preview/index.html`.
|
||||
|
||||
**Dev-сервер (live reload):**
|
||||
```bash
|
||||
cd tools && go run . dev
|
||||
# → http://localhost:3456
|
||||
```
|
||||
|
||||
## Совместимость
|
||||
|
||||
- **Gitea 1.25+** — структура директорий из v1.25
|
||||
- **Последняя проверка:** Gitea 1.26.4<!-- TRACKER:LATEST-TESTED -->
|
||||
- 100% совместимость с официальными шаблонами Gitea — см. [COMPATIBILITY.md](COMPATIBILITY.md)
|
||||
|
||||
## Лицензия
|
||||
|
||||
MIT — [LICENSE](../LICENSE).
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
为自托管 [Gitea](https://about.gitea.com) 实例精心设计、面向不同受众的邮件模板集合。
|
||||
|
||||
> **110 个模板文件 — 10 种视觉风格,每种 11 种邮件类型**
|
||||
> **发布版 v1.27.3 — 已通过 Gitea 1.27.3 兼容性检查 — 110 个模板文件、10 种视觉风格、每种 11 种邮件类型**
|
||||
|
||||
---
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
大多数自托管 Gitea 实例使用默认的纯文本邮件模板。本项目提供了**开箱即用、视觉精美的替代方案**——每种方案都针对特定社区或受众设计,您可以选择最适合您用户的风格。
|
||||
|
||||
每个模板都是直接替换。所有 Go 模板变量、翻译键和 Gitea 数据上下文完全兼容。**无需补丁、无需插件、无需 fork。**
|
||||
`main` 分支中的模板可直接替换 Gitea 内置邮件模板,**无需补丁、插件或 fork**。使用已发布的压缩包前,请先查看[兼容性说明](../COMPATIBILITY.md),了解旧版本的限制。
|
||||
|
||||
---
|
||||
|
||||
@@ -79,8 +79,9 @@ cd tools && go run . dev
|
||||
## 兼容性
|
||||
|
||||
- **Gitea 1.25+** — v1.25 引入的邮件模板目录结构
|
||||
- **最新测试:** Gitea 1.26.4<!-- TRACKER:LATEST-TESTED -->
|
||||
- 与 Gitea 官方模板 100% 兼容 — 详见 [COMPATIBILITY.md](COMPATIBILITY.md)
|
||||
- **最新测试:** Gitea 1.27.3<!-- TRACKER:LATEST-TESTED -->
|
||||
- **最新发布版:** [v1.27.3](https://github.com/KenanZhu/GiteaMailTemplates/releases/tag/v1.27.3) 已修复 Bloom、Ember、Heritage 主题在 Gitea 1.27.1+ 上的推送通知问题;旧版 v1.27.2 压缩包仍受影响(详见 [兼容性说明](../COMPATIBILITY.md))
|
||||
- 当前源码使用 Gitea 官方模板的数据路径;各发布版的限制详见 [兼容性说明](../COMPATIBILITY.md)
|
||||
|
||||
## 许可证
|
||||
|
||||
|
||||
@@ -1,82 +0,0 @@
|
||||
# Gitea 郵件模板
|
||||
|
||||
為自託管 [Gitea](https://about.gitea.com) 實例精心設計、面向不同受眾的郵件模板集合。
|
||||
|
||||
> **110 個模板檔案 — 10 種視覺風格,每種 11 種郵件類型**
|
||||
|
||||
---
|
||||
|
||||
## 設計理念
|
||||
|
||||
大多數自託管 Gitea 實例使用預設的純文字郵件模板。本專案提供了**開箱即用、視覺精美的替代方案**——每種方案都針對特定社群或受眾設計,您可以選擇最適合您使用者的風格。
|
||||
|
||||
每個模板都是直接替換。所有 Go 模板變數、翻譯鍵和 Gitea 資料上下文完全相容。**無需修補程式、無需外掛、無需 fork。**
|
||||
|
||||
---
|
||||
|
||||
## 風格展示
|
||||
|
||||
| 預覽 | 風格 | 受眾 | 特點 |
|
||||
|---|---|---|---|
|
||||
|  | **Horizon** | 企業/公司 | 藍色強調色、石板灰排版、居中卡片 |
|
||||
|  | **Terminal** | 開發者/技術 | 暗色模式、等寬字型、綠色命令列風格 |
|
||||
|  | **Ember** | 社群/開源 | 暖琥珀色、圓角、人文主義、包容 |
|
||||
|  | **Bloom** | 創意/新創 | 磨砂玻璃、柔和藍色光線、虹彩點綴 |
|
||||
|  | **Heritage** | 教育/研究 | 海軍藍與金色、襯線字型、經典、權威 |
|
||||
|  | **Neon** | 遊戲/Web3/創意科技 | 賽博龐克霓虹、粉紅與青色、合成波能量 |
|
||||
|  | **Mono** | 設計工作室/編輯 | 瑞士粗野主義、黑白紅強調、零圓角 |
|
||||
|  | **Terra** | 永續/健康 | 溫暖大地色調、有機質感、人文襯線 |
|
||||
|  | **Ink** | 出版/新聞/文學 | 編輯印刷、深藍與金色、報紙排版 |
|
||||
|  | **Aurora** | 高端SaaS/正念 | 空靈光效漸變、深紫與青綠、大氣光暈 |
|
||||
|
||||
> 圖片為 600px 寬截圖,來自[線上預覽](../preview/index.html)。截圖方法參見 [images/README.md](images/README.md)。
|
||||
|
||||
[**線上預覽展示**](../preview/index.html)
|
||||
|
||||
---
|
||||
|
||||
## 安裝
|
||||
|
||||
選擇一種風格,將 `mail/` 目錄複製到 Gitea 自訂模板路徑:
|
||||
|
||||
```bash
|
||||
cp -r themes/horizon/mail/* /var/lib/gitea/custom/templates/mail/
|
||||
systemctl restart gitea
|
||||
```
|
||||
|
||||
切換風格只需覆蓋檔案,無需更改設定。
|
||||
|
||||
### 確認生效
|
||||
|
||||
管理後台的測試郵件不會使用自訂模板。要驗證模板是否生效,請觸發一次真實的
|
||||
郵件通知。最快的方式是密碼重設:登出帳號,點擊登入頁的**"忘記密碼"**,查看
|
||||
重設郵件即可——它將使用你的自訂樣式渲染。
|
||||
|
||||
---
|
||||
|
||||
## 預覽
|
||||
|
||||
**靜態模式:**
|
||||
```bash
|
||||
cd tools && go run . preview all
|
||||
```
|
||||
然後開啟 `preview/index.html`。
|
||||
|
||||
**開發伺服器(即時重載):**
|
||||
```bash
|
||||
cd tools && go run . dev
|
||||
# → http://localhost:3456
|
||||
```
|
||||
|
||||
|
||||
---
|
||||
|
||||
## 相容性
|
||||
|
||||
- **Gitea 1.25+** — v1.25 引入的郵件模板目錄結構
|
||||
- **最新測試:** Gitea 1.26.4<!-- TRACKER:LATEST-TESTED -->
|
||||
- 與 Gitea 官方模板 100% 相容 — 詳見 [COMPATIBILITY.md](COMPATIBILITY.md)
|
||||
|
||||
## 授權
|
||||
|
||||
MIT — 詳見 [LICENSE](../LICENSE)。
|
||||
+237
-94
@@ -8,45 +8,160 @@
|
||||
:root{
|
||||
--bg:#0b1120;--surface:#151d2e;--border:#1e2d45;--text:#d1d9e6;--muted:#6b7d99;
|
||||
--accent:#4da6ff;--green:#34d399;--red:#f87171;--warn:#fbbf24;
|
||||
--nav-h:48px;--panel-w:540px;--rad:6px
|
||||
--nav-h:48px;--panel-w:440px;--rad:6px
|
||||
}
|
||||
*{margin:0;padding:0;box-sizing:border-box}
|
||||
body{font-family:system-ui,-apple-system,sans-serif;background:var(--bg);color:var(--text);height:100vh;display:flex;flex-direction:column}
|
||||
|
||||
/* Top bar */
|
||||
#topbar{height:var(--nav-h);background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 16px;gap:14px;flex-shrink:0;z-index:10}
|
||||
#topbar{min-height:var(--nav-h);background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;flex-wrap:wrap;padding:6px 12px;gap:8px;row-gap:4px;flex-shrink:0;z-index:30;position:relative}
|
||||
#topbar .brand{font-weight:700;font-size:14px;color:#fff;white-space:nowrap;letter-spacing:-0.2px}
|
||||
#topbar .brand span{color:var(--accent);font-weight:400;font-size:11px;margin-left:4px;text-transform:uppercase;letter-spacing:1px}
|
||||
#topbar .sep{width:1px;height:20px;background:var(--border)}
|
||||
#topbar label{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.6px;margin-right:-8px}
|
||||
#topbar select{background:var(--bg);color:var(--text);border:1px solid var(--border);padding:6px 10px;border-radius:var(--rad);font-size:12px;cursor:pointer;outline:none;min-width:90px}
|
||||
.ctl-group{display:inline-flex;align-items:center;gap:3px;white-space:nowrap}
|
||||
.ctl-group label{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.6px}
|
||||
#topbar .sep{width:1px;height:20px;background:var(--border);flex-shrink:0;align-self:center}
|
||||
#topbar select{background:var(--bg);color:var(--text);border:1px solid var(--border);padding:5px 8px;border-radius:var(--rad);font-size:12px;cursor:pointer;outline:none;min-width:80px}
|
||||
#topbar select:focus{border-color:var(--accent)}
|
||||
#topbar .btn-group{display:flex}
|
||||
#topbar .btn-group button{background:var(--bg);color:var(--muted);border:1px solid var(--border);padding:6px 14px;font-size:12px;font-weight:500;cursor:pointer;transition:all .15s}
|
||||
#topbar .btn-group{display:flex;flex-shrink:0}
|
||||
#topbar .btn-group button{background:var(--bg);color:var(--muted);border:1px solid var(--border);padding:6px 12px;font-size:12px;font-weight:500;cursor:pointer;transition:all .15s}
|
||||
#topbar .btn-group button:first-child{border-radius:var(--rad) 0 0 var(--rad)}
|
||||
#topbar .btn-group button:last-child{border-radius:0 var(--rad) var(--rad) 0}
|
||||
#topbar .btn-group button+button{border-left:none}
|
||||
#topbar .btn-group button.on{background:var(--accent);color:#000;border-color:var(--accent);font-weight:600}
|
||||
#topbar .hint{font-size:10px;color:var(--muted);opacity:.5}
|
||||
#topbar .hint{font-size:10px;color:var(--muted);opacity:.5;white-space:nowrap}
|
||||
|
||||
/* Topbar responsive — progressively compact as width shrinks */
|
||||
@media(max-width:900px){#topbar .hint{display:none}}
|
||||
@media(max-width:700px){
|
||||
#topbar{gap:5px;row-gap:3px;padding:4px 8px}
|
||||
#topbar .sep{display:none}
|
||||
#topbar select{min-width:70px;font-size:11px;padding:4px 6px}
|
||||
.ctl-group label{font-size:9px}
|
||||
#topbar .btn-group button{padding:4px 10px;font-size:11px}
|
||||
}
|
||||
@media(max-width:500px){
|
||||
#topbar{gap:4px;row-gap:2px;padding:4px 6px}
|
||||
#topbar .brand{font-size:12px}
|
||||
#topbar .brand span{font-size:10px}
|
||||
#topbar select{min-width:60px;font-size:10px;padding:3px 5px}
|
||||
#topbar .btn-group button{padding:3px 8px;font-size:10px}
|
||||
}
|
||||
|
||||
/* Main layout */
|
||||
#main{flex:1;display:flex;min-height:0}
|
||||
#preview-area{flex:1;display:flex;align-items:flex-start;justify-content:center;padding:24px;overflow:auto;background:linear-gradient(135deg,#0b1120,#131c30,#0d1525)}
|
||||
#main{flex:1;display:flex;position:relative;min-height:0;overflow:hidden}
|
||||
#preview-area{flex:1;display:flex;align-items:flex-start;justify-content:center;padding:24px;overflow:auto;background:linear-gradient(135deg,#0b1120,#131c30,#0d1525);transition:padding-right .3s cubic-bezier(.4,0,.2,1)}
|
||||
|
||||
/* Viewport */
|
||||
#viewport{border-radius:var(--rad);box-shadow:0 8px 32px rgba(0,0,0,.45);transition:all .3s;flex-shrink:0;overflow:hidden;background:#fff}
|
||||
#viewport.desktop{width:1386px;height:780px}
|
||||
#viewport.mobile{width:390px;height:780px;border-radius:28px;border:3px solid #1e293b;box-shadow:0 8px 32px rgba(0,0,0,.5),inset 0 0 0 1px #0f172a;display:flex;flex-direction:column}
|
||||
#viewport.mobile::before{content:'';display:block;height:24px;background:#1e293b;flex-shrink:0}
|
||||
#preview-frame{width:100%;height:100%;border:none;display:block;background:#fff}
|
||||
#viewport.desktop #preview-frame{border-radius:var(--rad)}
|
||||
/* --- Floating panel --- */
|
||||
#panel{
|
||||
position:absolute;right:12px;top:12px;bottom:12px;
|
||||
width:var(--panel-w);
|
||||
background:var(--surface);
|
||||
border:1px solid var(--border);
|
||||
border-radius:10px;
|
||||
box-shadow:-4px 4px 32px rgba(0,0,0,.5),0 0 0 1px rgba(255,255,255,.03) inset;
|
||||
z-index:20;
|
||||
display:flex;flex-direction:column;
|
||||
overflow:hidden;
|
||||
transition:transform .35s cubic-bezier(.4,0,.2,1),opacity .35s ease,box-shadow .35s ease;
|
||||
}
|
||||
#panel.collapsed{
|
||||
transform:translateX(calc(var(--panel-w) - 36px));
|
||||
box-shadow:-2px 2px 16px rgba(0,0,0,.35),0 0 0 1px rgba(255,255,255,.03) inset;
|
||||
opacity:.92;
|
||||
}
|
||||
#panel.collapsed:hover{opacity:1}
|
||||
|
||||
/* Side panel */
|
||||
#panel{width:var(--panel-w);background:var(--surface);border-left:1px solid var(--border);overflow-y:auto;flex-shrink:0;display:flex;flex-direction:column}
|
||||
#panel section{padding:14px 16px;border-bottom:1px solid var(--border)}
|
||||
/* Panel drag-handle / collapse tab */
|
||||
#panel-handle{
|
||||
position:absolute;left:0;top:50%;transform:translateY(-50%);
|
||||
width:28px;height:64px;
|
||||
background:var(--surface);
|
||||
border:1px solid var(--border);
|
||||
border-right:none;
|
||||
border-radius:6px 0 0 6px;
|
||||
cursor:pointer;
|
||||
display:flex;align-items:center;justify-content:center;
|
||||
transition:background .15s;
|
||||
z-index:21;
|
||||
/* sit just outside the panel's left edge */
|
||||
margin-left:-1px;
|
||||
}
|
||||
#panel.collapsed #panel-handle{
|
||||
/* when collapsed, handle moves with panel, peeking from right edge */
|
||||
left:1px;
|
||||
}
|
||||
#panel-handle:hover{background:var(--bg)}
|
||||
#panel-handle svg{
|
||||
width:14px;height:14px;
|
||||
stroke:var(--muted);
|
||||
fill:none;stroke-width:2;
|
||||
transition:transform .35s cubic-bezier(.4,0,.2,1),stroke .15s;
|
||||
}
|
||||
#panel-handle:hover svg{stroke:var(--text)}
|
||||
#panel.collapsed #panel-handle svg{transform:rotate(180deg)}
|
||||
|
||||
/* Panel inner scroll */
|
||||
#panel-body{flex:1;overflow-y:auto;overflow-x:hidden}
|
||||
|
||||
/* Panel close button (top-right) */
|
||||
#panel-close{
|
||||
position:absolute;right:8px;top:8px;
|
||||
width:24px;height:24px;
|
||||
background:none;border:none;
|
||||
cursor:pointer;
|
||||
display:flex;align-items:center;justify-content:center;
|
||||
border-radius:4px;
|
||||
color:var(--muted);
|
||||
font-size:16px;line-height:1;
|
||||
transition:background .15s,color .15s;
|
||||
z-index:2;
|
||||
}
|
||||
#panel-close:hover{background:rgba(255,255,255,.06);color:var(--text)}
|
||||
|
||||
/* Section */
|
||||
#panel section{padding:12px 14px;border-bottom:1px solid var(--border)}
|
||||
#panel section:last-child{border-bottom:none}
|
||||
#panel h3{font-size:10px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.8px;margin-bottom:10px}
|
||||
|
||||
/* Collapsible section header */
|
||||
.section-hdr{
|
||||
display:flex;align-items:center;gap:6px;
|
||||
cursor:pointer;
|
||||
user-select:none;
|
||||
padding:2px 0;
|
||||
border-radius:4px;
|
||||
transition:color .15s;
|
||||
}
|
||||
.section-hdr:hover{color:#fff}
|
||||
.section-hdr h3{
|
||||
font-size:10px;font-weight:600;color:inherit;text-transform:uppercase;letter-spacing:.8px;
|
||||
flex:1;
|
||||
}
|
||||
.section-chevron{
|
||||
width:12px;height:12px;
|
||||
stroke:currentColor;fill:none;stroke-width:2;
|
||||
transition:transform .25s ease;
|
||||
flex-shrink:0;
|
||||
opacity:.5;
|
||||
}
|
||||
.section-hdr:hover .section-chevron{opacity:1}
|
||||
section.collapsed .section-chevron{transform:rotate(-90deg)}
|
||||
|
||||
/* Collapsible content wrapper */
|
||||
.section-content{
|
||||
overflow:hidden;
|
||||
transition:max-height .3s ease,opacity .25s ease,margin-top .3s ease;
|
||||
max-height:2000px;
|
||||
opacity:1;
|
||||
margin-top:10px;
|
||||
}
|
||||
section.collapsed .section-content{
|
||||
max-height:0;
|
||||
opacity:0;
|
||||
margin-top:0;
|
||||
}
|
||||
|
||||
#panel .card{background:var(--bg);border-radius:var(--rad);padding:10px 12px;margin-bottom:8px}
|
||||
#panel .card:last-child{margin-bottom:0}
|
||||
#panel .card .label{font-size:10px;color:var(--muted);margin-bottom:2px}
|
||||
#panel .card .value{font-size:12px;color:var(--text)}
|
||||
#panel table{width:100%;border-collapse:collapse}
|
||||
@@ -58,11 +173,13 @@ body{font-family:system-ui,-apple-system,sans-serif;background:var(--bg);color:v
|
||||
.badge-opt{background:rgba(107,125,153,.1);color:var(--muted)}
|
||||
#panel .stat{font-size:10px;color:var(--muted);margin-top:6px}
|
||||
|
||||
/* Client indicators */
|
||||
#panel .indicators{display:flex;flex-wrap:wrap;gap:4px 12px}
|
||||
#panel .indicators span{font-size:11px;color:var(--muted);display:inline-flex;align-items:center;gap:5px}
|
||||
.dot{width:6px;height:6px;border-radius:50%;display:inline-block;flex-shrink:0}
|
||||
.d-on{background:var(--green)}.d-off{background:var(--red)}.d-warn{background:var(--warn)}
|
||||
/* Viewport */
|
||||
#viewport{border-radius:var(--rad);box-shadow:0 8px 32px rgba(0,0,0,.45);transition:all .3s;flex-shrink:0;overflow:hidden;background:#fff}
|
||||
#viewport.desktop{width:1386px;height:780px}
|
||||
#viewport.mobile{width:390px;height:780px;border-radius:28px;border:3px solid #1e293b;box-shadow:0 8px 32px rgba(0,0,0,.5),inset 0 0 0 1px #0f172a;display:flex;flex-direction:column}
|
||||
#viewport.mobile::before{content:'';display:block;height:24px;background:#1e293b;flex-shrink:0}
|
||||
#preview-frame{width:100%;height:100%;border:none;display:block;background:#fff}
|
||||
#viewport.desktop #preview-frame{border-radius:var(--rad)}
|
||||
|
||||
/* Loading */
|
||||
.loading-wrap{display:flex;align-items:center;justify-content:center;height:100%;color:var(--muted);font-size:13px;flex-direction:column;gap:8px}
|
||||
@@ -76,43 +193,35 @@ body{font-family:system-ui,-apple-system,sans-serif;background:var(--bg);color:v
|
||||
.message code{background:rgba(0,0,0,0.12);padding:1px 6px;border-radius:3px}
|
||||
|
||||
/* Scrollbar — neutral gray, consistent across all browsers */
|
||||
/* Standards-track: Firefox 64+ / Chrome 121+ / Edge 121+ */
|
||||
html,body,#preview-area,#panel{
|
||||
html,body,#preview-area,#panel-body{
|
||||
scrollbar-width:thin;
|
||||
scrollbar-color:rgba(107,125,153,.25) transparent;
|
||||
}
|
||||
/* IE / Legacy Edge */
|
||||
#preview-area,#panel{
|
||||
#preview-area,#panel-body{
|
||||
-ms-overflow-style:-ms-autohiding-scrollbar;
|
||||
}
|
||||
/* WebKit scrollbars — scoped to actual scrollable regions only */
|
||||
#preview-area::-webkit-scrollbar,
|
||||
#panel::-webkit-scrollbar { width:6px; height:6px }
|
||||
#panel-body::-webkit-scrollbar { width:6px; height:6px }
|
||||
#preview-area::-webkit-scrollbar-track,
|
||||
#panel::-webkit-scrollbar-track { background:transparent }
|
||||
#panel-body::-webkit-scrollbar-track { background:transparent }
|
||||
#preview-area::-webkit-scrollbar-thumb,
|
||||
#panel::-webkit-scrollbar-thumb {
|
||||
#panel-body::-webkit-scrollbar-thumb {
|
||||
background-color:rgba(107,125,153,.25);
|
||||
border-radius:3px;
|
||||
border:1px solid rgba(255,255,255,.06);
|
||||
}
|
||||
#preview-area::-webkit-scrollbar-thumb:hover,
|
||||
#panel::-webkit-scrollbar-thumb:hover { background-color:rgba(107,125,153,.45) }
|
||||
#panel-body::-webkit-scrollbar-thumb:hover { background-color:rgba(107,125,153,.45) }
|
||||
#preview-area::-webkit-scrollbar-corner,
|
||||
#panel::-webkit-scrollbar-corner { background:transparent }
|
||||
/* The panel's inner parameter section (flex:1;overflow-y:auto) */
|
||||
#panel section::-webkit-scrollbar { width:6px; height:6px }
|
||||
#panel section::-webkit-scrollbar-track { background:transparent }
|
||||
#panel section::-webkit-scrollbar-thumb {
|
||||
background-color:rgba(107,125,153,.25);
|
||||
border-radius:3px;
|
||||
border:1px solid rgba(255,255,255,.06);
|
||||
}
|
||||
#panel section::-webkit-scrollbar-thumb:hover { background-color:rgba(107,125,153,.45) }
|
||||
#panel section::-webkit-scrollbar-corner { background:transparent }
|
||||
#panel section{scrollbar-width:thin;scrollbar-color:rgba(107,125,153,.25) transparent}
|
||||
#panel-body::-webkit-scrollbar-corner { background:transparent }
|
||||
|
||||
@media(max-width:850px){#panel{display:none}#topbar .hint{display:none}}
|
||||
@media(max-width:900px){
|
||||
#panel{--panel-w:380px;right:6px;top:6px;bottom:6px}
|
||||
#panel.collapsed{transform:translateX(calc(var(--panel-w) - 36px))}
|
||||
}
|
||||
@media(max-width:700px){
|
||||
#panel{display:none}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
@@ -120,23 +229,29 @@ html,body,#preview-area,#panel{
|
||||
<nav id="topbar">
|
||||
<span class="brand">Gitea Mail Templates <span>Preview</span></span>
|
||||
<span class="sep"></span>
|
||||
<label>Theme</label>
|
||||
<select id="sel-theme" onchange="switchTheme(this.value)"></select>
|
||||
<span class="ctl-group">
|
||||
<label>Theme</label>
|
||||
<select id="sel-theme" onchange="switchTheme(this.value)"></select>
|
||||
</span>
|
||||
<span class="sep"></span>
|
||||
<label>Template</label>
|
||||
<select id="sel-template" onchange="switchTemplate(this.value)"></select>
|
||||
<span class="ctl-group">
|
||||
<label>Template</label>
|
||||
<select id="sel-template" onchange="switchTemplate(this.value)"></select>
|
||||
</span>
|
||||
<span class="sep"></span>
|
||||
<label>View</label>
|
||||
<select id="sel-client" onchange="switchClient(this.value)">
|
||||
<option value="modern">Modern</option>
|
||||
<option value="source">Source</option>
|
||||
</select>
|
||||
<span class="ctl-group">
|
||||
<label>View</label>
|
||||
<select id="sel-client" onchange="switchClient(this.value)">
|
||||
<option value="modern">Modern</option>
|
||||
<option value="source">Source</option>
|
||||
</select>
|
||||
</span>
|
||||
<span class="sep"></span>
|
||||
<div class="btn-group">
|
||||
<button id="btn-desk" class="on" onclick="setViewport('desktop')">Desktop</button>
|
||||
<button id="btn-mob" onclick="setViewport('mobile')">Mobile</button>
|
||||
</div>
|
||||
<span class="hint">keys: d/m ←→ tab ↑↓ select</span>
|
||||
<span class="hint">keys: d/m ←→ tab ↑↓ select p toggle panel</span>
|
||||
</nav>
|
||||
|
||||
<div id="messages"></div>
|
||||
@@ -153,26 +268,53 @@ html,body,#preview-area,#panel{
|
||||
</div>
|
||||
|
||||
<aside id="panel">
|
||||
<section>
|
||||
<h3>Current Template</h3>
|
||||
<div class="card">
|
||||
<div class="label">Type</div>
|
||||
<div class="value" id="panel-name">-</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="label">Description</div>
|
||||
<div class="value" id="panel-desc" style="font-size:11px;line-height:1.5">-</div>
|
||||
</div>
|
||||
<div class="stat" id="panel-stats"></div>
|
||||
</section>
|
||||
<section style="flex:1;overflow-y:auto">
|
||||
<h3>Parameters</h3>
|
||||
<table id="panel-params"><tr><td colspan="2" style="color:var(--muted)">-</td></tr></table>
|
||||
</section>
|
||||
<section>
|
||||
<h3>Source</h3>
|
||||
<div class="card" style="font-family:monospace;font-size:10px;color:var(--muted);word-break:break-all" id="panel-path">-</div>
|
||||
</section>
|
||||
<!-- Collapse handle tab on the left edge -->
|
||||
<div id="panel-handle" title="Toggle panel" onclick="togglePanel()">
|
||||
<svg viewBox="0 0 24 24"><polyline points="15 18 9 12 15 6"/></svg>
|
||||
</div>
|
||||
|
||||
<!-- Close button (top-right) -->
|
||||
<button id="panel-close" title="Close panel" onclick="togglePanel()">×</button>
|
||||
|
||||
<div id="panel-body">
|
||||
<section id="sec-info">
|
||||
<div class="section-hdr" onclick="toggleSection('sec-info')">
|
||||
<h3>Current Template</h3>
|
||||
<svg class="section-chevron" viewBox="0 0 24 24"><polyline points="6 9 12 15 18 9"/></svg>
|
||||
</div>
|
||||
<div class="section-content">
|
||||
<div class="card">
|
||||
<div class="label">Type</div>
|
||||
<div class="value" id="panel-name">-</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="label">Description</div>
|
||||
<div class="value" id="panel-desc" style="font-size:11px;line-height:1.5">-</div>
|
||||
</div>
|
||||
<div class="stat" id="panel-stats"></div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="sec-params">
|
||||
<div class="section-hdr" onclick="toggleSection('sec-params')">
|
||||
<h3>Parameters</h3>
|
||||
<svg class="section-chevron" viewBox="0 0 24 24"><polyline points="6 9 12 15 18 9"/></svg>
|
||||
</div>
|
||||
<div class="section-content">
|
||||
<table id="panel-params"><tr><td colspan="2" style="color:var(--muted)">-</td></tr></table>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="sec-source">
|
||||
<div class="section-hdr" onclick="toggleSection('sec-source')">
|
||||
<h3>Source</h3>
|
||||
<svg class="section-chevron" viewBox="0 0 24 24"><polyline points="6 9 12 15 18 9"/></svg>
|
||||
</div>
|
||||
<div class="section-content">
|
||||
<div class="card" style="font-family:monospace;font-size:10px;color:var(--muted);word-break:break-all" id="panel-path">-</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
|
||||
@@ -205,9 +347,8 @@ function transform(html, mode) {
|
||||
function render() {
|
||||
const frame = document.getElementById('preview-frame');
|
||||
const loading = document.getElementById('loading');
|
||||
if(!rendered) return; // no data yet — init handles the error display
|
||||
if(!rendered) return;
|
||||
|
||||
// Sandbox only in dev mode; file: protocol rejects sandboxed srcdoc
|
||||
if (location.protocol !== 'file:') {
|
||||
frame.setAttribute('sandbox', '');
|
||||
}
|
||||
@@ -218,7 +359,6 @@ function render() {
|
||||
const src = rendered;
|
||||
const raw = src[state.theme]?.[state.template];
|
||||
let content = raw ? transform(raw, state.client) : '<p style=\"color:red;padding:20px\">Not found: '+state.theme+'/'+state.template+'</p>';
|
||||
// Inject invisible scrollbar into iframe content for immersive preview
|
||||
content = content.replace('</head>', '<style>html{scrollbar-color:rgba(107,125,153,.25) transparent;scrollbar-width:thin;-ms-overflow-style:-ms-autohiding-scrollbar}html::-webkit-scrollbar{width:6px;height:6px}html::-webkit-scrollbar-track{background:transparent}html::-webkit-scrollbar-thumb{background-color:rgba(107,125,153,.25);border-radius:3px;border:1px solid rgba(255,255,255,.06)}html::-webkit-scrollbar-thumb:hover{background-color:rgba(107,125,153,.45)}html::-webkit-scrollbar-corner{background:transparent}</style></head>');
|
||||
|
||||
let done = false;
|
||||
@@ -230,13 +370,25 @@ function render() {
|
||||
}
|
||||
frame.onload = finish;
|
||||
frame.srcdoc = content;
|
||||
// Safety timeout — force-hide loading if onload stalls (max 5 s)
|
||||
setTimeout(finish, 5000);
|
||||
updatePanel();
|
||||
}
|
||||
|
||||
//
|
||||
// Panel updates
|
||||
// Panel — collapse/expand
|
||||
//
|
||||
function togglePanel() {
|
||||
const panel = document.getElementById('panel');
|
||||
panel.classList.toggle('collapsed');
|
||||
}
|
||||
|
||||
function toggleSection(id) {
|
||||
const sec = document.getElementById(id);
|
||||
sec.classList.toggle('collapsed');
|
||||
}
|
||||
|
||||
//
|
||||
// Panel content updates
|
||||
//
|
||||
function updatePanel() {
|
||||
const r = REGISTRY[state.template];
|
||||
@@ -287,9 +439,10 @@ document.addEventListener('keydown',e=>{
|
||||
// Viewport shortcuts (no modifiers)
|
||||
if(e.key==='d'&&!e.ctrlKey&&!e.metaKey&&!e.altKey){ setViewport('desktop'); return; }
|
||||
if(e.key==='m'&&!e.ctrlKey&&!e.metaKey&&!e.altKey){ setViewport('mobile'); return; }
|
||||
// 'p' to toggle floating panel
|
||||
if(e.key==='p'&&!e.ctrlKey&&!e.metaKey&&!e.altKey){ togglePanel(); return; }
|
||||
|
||||
// ← → cycle focus between Theme / Template / Client selects
|
||||
// When a select dropdown is open the browser captures keys, so this only runs when closed
|
||||
const selects=['sel-theme','sel-template','sel-client'];
|
||||
const activeId=document.activeElement?.id;
|
||||
const cur=selects.indexOf(activeId);
|
||||
@@ -297,31 +450,25 @@ document.addEventListener('keydown',e=>{
|
||||
if(e.key==='ArrowRight'||e.key==='ArrowLeft'){
|
||||
e.preventDefault();
|
||||
if(cur>=0){
|
||||
// Cycle to next/previous select
|
||||
const dir=e.key==='ArrowRight'?1:-1;
|
||||
const next=(cur+dir+selects.length)%selects.length;
|
||||
document.getElementById(selects[next])?.focus();
|
||||
} else {
|
||||
// First press — jump to template (middle)
|
||||
document.getElementById('sel-template')?.focus();
|
||||
}
|
||||
}
|
||||
|
||||
// ↑ ↓ are handled natively by the focused <select> — onchange fires → render()
|
||||
});
|
||||
|
||||
//
|
||||
// Init — load everything from rendered.js (single source of truth)
|
||||
//
|
||||
(function(){
|
||||
// Load REGISTRY and PARAMS from rendered.js
|
||||
if(window.__REGISTRY__) REGISTRY = window.__REGISTRY__;
|
||||
if(window.__PARAMS__) PARAMS = window.__PARAMS__;
|
||||
|
||||
if(window.__RENDERED__){
|
||||
rendered = window.__RENDERED__;
|
||||
|
||||
// Populate theme selector from rendered data
|
||||
const themeKeys = Object.keys(rendered).sort();
|
||||
const selTheme = document.getElementById('sel-theme');
|
||||
themeKeys.forEach(t => {
|
||||
@@ -332,7 +479,6 @@ document.addEventListener('keydown',e=>{
|
||||
});
|
||||
state.theme = themeKeys[0] || '';
|
||||
|
||||
// Populate template selector from REGISTRY
|
||||
const selTpl = document.getElementById('sel-template');
|
||||
for(const [id, t] of Object.entries(REGISTRY)){
|
||||
const o = document.createElement('option');
|
||||
@@ -361,9 +507,6 @@ function clearMessages() {
|
||||
document.getElementById('messages').innerHTML = '';
|
||||
}
|
||||
|
||||
// Dev-mode detection
|
||||
// The SSE open handler will call setDevMode() which clears any stale messages.
|
||||
|
||||
function setDevMode(on) {
|
||||
devMode = on;
|
||||
if (on) {
|
||||
|
||||
@@ -16,38 +16,38 @@
|
||||
|
||||
/* Header */
|
||||
.email-logo { display:block;margin:0 auto 14px;border:0;outline:none;opacity:0.5 }
|
||||
.email-brand { font-size:16px;font-weight:300;color:rgba(255,255,255,.4);letter-spacing:4px;text-transform:uppercase }
|
||||
.email-brand { font-size:16px;font-weight:300;color:#ffffff66;letter-spacing:4px;text-transform:uppercase }
|
||||
.email-header { padding:0 0 32px;text-align:center }
|
||||
|
||||
/* Card */
|
||||
.email-card { padding:48px 40px;background:rgba(25,20,50,.8);border:1px solid rgba(13,148,136,.2);box-shadow:0 0 60px rgba(13,148,136,.08),0 0 120px rgba(99,102,241,.04) }
|
||||
.email-card { padding:48px 40px;background:#191432cc;border:1px solid #0d948833;box-shadow:0 0 60px #0d948814,0 0 120px #6366f10a }
|
||||
.email-heading { margin:0 0 20px;font-size:24px;font-weight:300;color:#ccfbf1;line-height:1.3;letter-spacing:-.5px }
|
||||
.email-text { margin:0 0 24px;font-size:14px;line-height:2;color:rgba(210,252,245,.88);font-weight:300 }
|
||||
.email-subtext { margin:0;font-size:13px;line-height:1.8;color:rgba(180,195,215,.95);font-weight:300 }
|
||||
.email-text { margin:0 0 24px;font-size:14px;line-height:2;color:#d2fcf5e0;font-weight:300 }
|
||||
.email-subtext { margin:0;font-size:13px;line-height:1.8;color:#b4c3d7f2;font-weight:300 }
|
||||
|
||||
/* Divider */
|
||||
.email-divider { height:1px;background:linear-gradient(90deg,transparent,rgba(13,148,136,.3),transparent) }
|
||||
.email-divider { height:1px;background:linear-gradient(90deg,transparent,#0d94884d,transparent) }
|
||||
|
||||
/* Button */
|
||||
.email-btn-row { padding:40px 40px;text-align:center }
|
||||
.email-btn { display:inline-block;padding:16px 48px;font-size:14px;font-weight:400;color:#e0f5f3!important;text-decoration:none;background:rgba(13,148,136,.18);border:1px solid rgba(13,148,136,.3);letter-spacing:1px }
|
||||
.email-btn { display:inline-block;padding:16px 48px;font-size:14px;font-weight:400;color:#e0f5f3!important;text-decoration:none;background:#0d94882e;border:1px solid #0d94884d;letter-spacing:1px }
|
||||
.email-btn-table { margin:0 0 32px }
|
||||
|
||||
/* Fallback link */
|
||||
.email-link-box { border:1px solid rgba(13,148,136,.18);background:rgba(13,148,136,.03) }
|
||||
.email-link-label { margin:0 0 8px;font-size:11px;color:rgba(180,252,238,.75);font-weight:300 }
|
||||
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#99f6e4;background:rgba(0,0,0,.2);padding:10px 12px;border:1px solid rgba(13,148,136,.15);word-break:break-all }
|
||||
.email-link-box { border:1px solid #0d94882e;background:#0d948808 }
|
||||
.email-link-label { margin:0 0 8px;font-size:11px;color:#b4fceebf;font-weight:300 }
|
||||
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#99f6e4;background:#00000033;padding:10px 12px;border:1px solid #0d948826;word-break:break-all }
|
||||
|
||||
/* Footer */
|
||||
.email-footer { padding:32px 0 0;text-align:center }
|
||||
.email-footer-text { margin:0;font-size:11px;color:rgba(160,175,200,.55);font-weight:300 }
|
||||
.email-footer-link { color:rgba(94,234,212,.5);text-decoration:none;font-weight:400 }
|
||||
.email-footer-text { margin:0;font-size:11px;color:#a0afc88c;font-weight:300 }
|
||||
.email-footer-link { color:#5eead480;text-decoration:none;font-weight:400 }
|
||||
|
||||
/* Typography utilities */
|
||||
.card-body h1,.card-body h2,.card-body h3,.card-body h4,.card-body h5,.card-body h6 { color:#ccfbf1!important }
|
||||
.card-body a,.card-body a:link,.card-body a:visited { color:#5eead4!important;text-decoration:underline!important }
|
||||
.card-body a:hover,.card-body a:active { color:#99f6e4!important }
|
||||
.card-body li { color:rgba(210,252,245,.88)!important }
|
||||
.card-body li { color:#d2fcf5e0!important }
|
||||
|
||||
/* Responsive */
|
||||
@media only screen and (max-width:480px) {
|
||||
@@ -117,7 +117,7 @@
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p class="email-subtext" style="margin-top:24px;font-size:12px;color:rgba(160,175,200,.5);">
|
||||
<p class="email-subtext" style="margin-top:24px;font-size:12px;color:#a0afc880;">
|
||||
{{.locale.Tr "mail.team_invite.text_3" .Invite.Email}}
|
||||
</p>
|
||||
|
||||
|
||||
@@ -16,38 +16,38 @@
|
||||
|
||||
/* Header */
|
||||
.email-logo { display:block;margin:0 auto 14px;border:0;outline:none;opacity:0.5 }
|
||||
.email-brand { font-size:16px;font-weight:300;color:rgba(255,255,255,.4);letter-spacing:4px;text-transform:uppercase }
|
||||
.email-brand { font-size:16px;font-weight:300;color:#ffffff66;letter-spacing:4px;text-transform:uppercase }
|
||||
.email-header { padding:0 0 32px;text-align:center }
|
||||
|
||||
/* Card */
|
||||
.email-card { padding:48px 40px;background:rgba(25,20,50,.8);border:1px solid rgba(13,148,136,.2);box-shadow:0 0 60px rgba(13,148,136,.08),0 0 120px rgba(99,102,241,.04) }
|
||||
.email-card { padding:48px 40px;background:#191432cc;border:1px solid #0d948833;box-shadow:0 0 60px #0d948814,0 0 120px #6366f10a }
|
||||
.email-heading { margin:0 0 20px;font-size:24px;font-weight:300;color:#ccfbf1;line-height:1.3;letter-spacing:-.5px }
|
||||
.email-text { margin:0 0 24px;font-size:14px;line-height:2;color:rgba(210,252,245,.88);font-weight:300 }
|
||||
.email-subtext { margin:0;font-size:13px;line-height:1.8;color:rgba(180,195,215,.95);font-weight:300 }
|
||||
.email-text { margin:0 0 24px;font-size:14px;line-height:2;color:#d2fcf5e0;font-weight:300 }
|
||||
.email-subtext { margin:0;font-size:13px;line-height:1.8;color:#b4c3d7f2;font-weight:300 }
|
||||
|
||||
/* Divider */
|
||||
.email-divider { height:1px;background:linear-gradient(90deg,transparent,rgba(13,148,136,.3),transparent) }
|
||||
.email-divider { height:1px;background:linear-gradient(90deg,transparent,#0d94884d,transparent) }
|
||||
|
||||
/* Button */
|
||||
.email-btn-row { padding:40px 40px;text-align:center }
|
||||
.email-btn { display:inline-block;padding:16px 48px;font-size:14px;font-weight:400;color:#e0f5f3!important;text-decoration:none;background:rgba(13,148,136,.18);border:1px solid rgba(13,148,136,.3);letter-spacing:1px }
|
||||
.email-btn { display:inline-block;padding:16px 48px;font-size:14px;font-weight:400;color:#e0f5f3!important;text-decoration:none;background:#0d94882e;border:1px solid #0d94884d;letter-spacing:1px }
|
||||
.email-btn-table { margin:0 0 32px }
|
||||
|
||||
/* Fallback link */
|
||||
.email-link-box { border:1px solid rgba(13,148,136,.18);background:rgba(13,148,136,.03) }
|
||||
.email-link-label { margin:0 0 8px;font-size:11px;color:rgba(180,252,238,.75);font-weight:300 }
|
||||
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#99f6e4;background:rgba(0,0,0,.2);padding:10px 12px;border:1px solid rgba(13,148,136,.15);word-break:break-all }
|
||||
.email-link-box { border:1px solid #0d94882e;background:#0d948808 }
|
||||
.email-link-label { margin:0 0 8px;font-size:11px;color:#b4fceebf;font-weight:300 }
|
||||
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#99f6e4;background:#00000033;padding:10px 12px;border:1px solid #0d948826;word-break:break-all }
|
||||
|
||||
/* Footer */
|
||||
.email-footer { padding:32px 0 0;text-align:center }
|
||||
.email-footer-text { margin:0;font-size:11px;color:rgba(160,175,200,.55);font-weight:300 }
|
||||
.email-footer-link { color:rgba(94,234,212,.5);text-decoration:none;font-weight:400 }
|
||||
.email-footer-text { margin:0;font-size:11px;color:#a0afc88c;font-weight:300 }
|
||||
.email-footer-link { color:#5eead480;text-decoration:none;font-weight:400 }
|
||||
|
||||
/* Typography utilities */
|
||||
.card-body h1,.card-body h2,.card-body h3,.card-body h4,.card-body h5,.card-body h6 { color:#ccfbf1!important }
|
||||
.card-body a,.card-body a:link,.card-body a:visited { color:#5eead4!important;text-decoration:underline!important }
|
||||
.card-body a:hover,.card-body a:active { color:#99f6e4!important }
|
||||
.card-body li { color:rgba(210,252,245,.88)!important }
|
||||
.card-body li { color:#d2fcf5e0!important }
|
||||
|
||||
/* Responsive */
|
||||
@media only screen and (max-width:480px) {
|
||||
|
||||
@@ -16,38 +16,38 @@
|
||||
|
||||
/* Header */
|
||||
.email-logo { display:block;margin:0 auto 14px;border:0;outline:none;opacity:0.5 }
|
||||
.email-brand { font-size:16px;font-weight:300;color:rgba(255,255,255,.4);letter-spacing:4px;text-transform:uppercase }
|
||||
.email-brand { font-size:16px;font-weight:300;color:#ffffff66;letter-spacing:4px;text-transform:uppercase }
|
||||
.email-header { padding:0 0 32px;text-align:center }
|
||||
|
||||
/* Card */
|
||||
.email-card { padding:48px 40px;background:rgba(25,20,50,.8);border:1px solid rgba(13,148,136,.2);box-shadow:0 0 60px rgba(13,148,136,.08),0 0 120px rgba(99,102,241,.04) }
|
||||
.email-card { padding:48px 40px;background:#191432cc;border:1px solid #0d948833;box-shadow:0 0 60px #0d948814,0 0 120px #6366f10a }
|
||||
.email-heading { margin:0 0 20px;font-size:24px;font-weight:300;color:#ccfbf1;line-height:1.3;letter-spacing:-.5px }
|
||||
.email-text { margin:0 0 24px;font-size:14px;line-height:2;color:rgba(210,252,245,.88);font-weight:300 }
|
||||
.email-subtext { margin:0;font-size:13px;line-height:1.8;color:rgba(180,195,215,.95);font-weight:300 }
|
||||
.email-text { margin:0 0 24px;font-size:14px;line-height:2;color:#d2fcf5e0;font-weight:300 }
|
||||
.email-subtext { margin:0;font-size:13px;line-height:1.8;color:#b4c3d7f2;font-weight:300 }
|
||||
|
||||
/* Divider */
|
||||
.email-divider { height:1px;background:linear-gradient(90deg,transparent,rgba(13,148,136,.3),transparent) }
|
||||
.email-divider { height:1px;background:linear-gradient(90deg,transparent,#0d94884d,transparent) }
|
||||
|
||||
/* Button */
|
||||
.email-btn-row { padding:40px 40px;text-align:center }
|
||||
.email-btn { display:inline-block;padding:16px 48px;font-size:14px;font-weight:400;color:#e0f5f3!important;text-decoration:none;background:rgba(13,148,136,.18);border:1px solid rgba(13,148,136,.3);letter-spacing:1px }
|
||||
.email-btn { display:inline-block;padding:16px 48px;font-size:14px;font-weight:400;color:#e0f5f3!important;text-decoration:none;background:#0d94882e;border:1px solid #0d94884d;letter-spacing:1px }
|
||||
.email-btn-table { margin:0 0 32px }
|
||||
|
||||
/* Fallback link */
|
||||
.email-link-box { border:1px solid rgba(13,148,136,.18);background:rgba(13,148,136,.03) }
|
||||
.email-link-label { margin:0 0 8px;font-size:11px;color:rgba(180,252,238,.75);font-weight:300 }
|
||||
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#99f6e4;background:rgba(0,0,0,.2);padding:10px 12px;border:1px solid rgba(13,148,136,.15);word-break:break-all }
|
||||
.email-link-box { border:1px solid #0d94882e;background:#0d948808 }
|
||||
.email-link-label { margin:0 0 8px;font-size:11px;color:#b4fceebf;font-weight:300 }
|
||||
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#99f6e4;background:#00000033;padding:10px 12px;border:1px solid #0d948826;word-break:break-all }
|
||||
|
||||
/* Footer */
|
||||
.email-footer { padding:32px 0 0;text-align:center }
|
||||
.email-footer-text { margin:0;font-size:11px;color:rgba(160,175,200,.55);font-weight:300 }
|
||||
.email-footer-link { color:rgba(94,234,212,.5);text-decoration:none;font-weight:400 }
|
||||
.email-footer-text { margin:0;font-size:11px;color:#a0afc88c;font-weight:300 }
|
||||
.email-footer-link { color:#5eead480;text-decoration:none;font-weight:400 }
|
||||
|
||||
/* Typography utilities */
|
||||
.card-body h1,.card-body h2,.card-body h3,.card-body h4,.card-body h5,.card-body h6 { color:#ccfbf1!important }
|
||||
.card-body a,.card-body a:link,.card-body a:visited { color:#5eead4!important;text-decoration:underline!important }
|
||||
.card-body a:hover,.card-body a:active { color:#99f6e4!important }
|
||||
.card-body li { color:rgba(210,252,245,.88)!important }
|
||||
.card-body li { color:#d2fcf5e0!important }
|
||||
|
||||
/* Responsive */
|
||||
@media only screen and (max-width:480px) {
|
||||
|
||||
@@ -16,38 +16,38 @@
|
||||
|
||||
/* Header */
|
||||
.email-logo { display:block;margin:0 auto 14px;border:0;outline:none;opacity:0.5 }
|
||||
.email-brand { font-size:16px;font-weight:300;color:rgba(255,255,255,.4);letter-spacing:4px;text-transform:uppercase }
|
||||
.email-brand { font-size:16px;font-weight:300;color:#ffffff66;letter-spacing:4px;text-transform:uppercase }
|
||||
.email-header { padding:0 0 32px;text-align:center }
|
||||
|
||||
/* Card */
|
||||
.email-card { padding:48px 40px;background:rgba(25,20,50,.8);border:1px solid rgba(13,148,136,.2);box-shadow:0 0 60px rgba(13,148,136,.08),0 0 120px rgba(99,102,241,.04) }
|
||||
.email-card { padding:48px 40px;background:#191432cc;border:1px solid #0d948833;box-shadow:0 0 60px #0d948814,0 0 120px #6366f10a }
|
||||
.email-heading { margin:0 0 20px;font-size:24px;font-weight:300;color:#ccfbf1;line-height:1.3;letter-spacing:-.5px }
|
||||
.email-text { margin:0 0 24px;font-size:14px;line-height:2;color:rgba(210,252,245,.88);font-weight:300 }
|
||||
.email-subtext { margin:0;font-size:13px;line-height:1.8;color:rgba(180,195,215,.95);font-weight:300 }
|
||||
.email-text { margin:0 0 24px;font-size:14px;line-height:2;color:#d2fcf5e0;font-weight:300 }
|
||||
.email-subtext { margin:0;font-size:13px;line-height:1.8;color:#b4c3d7f2;font-weight:300 }
|
||||
|
||||
/* Divider */
|
||||
.email-divider { height:1px;background:linear-gradient(90deg,transparent,rgba(13,148,136,.3),transparent) }
|
||||
.email-divider { height:1px;background:linear-gradient(90deg,transparent,#0d94884d,transparent) }
|
||||
|
||||
/* Button */
|
||||
.email-btn-row { padding:40px 40px;text-align:center }
|
||||
.email-btn { display:inline-block;padding:16px 48px;font-size:14px;font-weight:400;color:#e0f5f3!important;text-decoration:none;background:rgba(13,148,136,.18);border:1px solid rgba(13,148,136,.3);letter-spacing:1px }
|
||||
.email-btn { display:inline-block;padding:16px 48px;font-size:14px;font-weight:400;color:#e0f5f3!important;text-decoration:none;background:#0d94882e;border:1px solid #0d94884d;letter-spacing:1px }
|
||||
.email-btn-table { margin:0 0 32px }
|
||||
|
||||
/* Fallback link */
|
||||
.email-link-box { border:1px solid rgba(13,148,136,.18);background:rgba(13,148,136,.03) }
|
||||
.email-link-label { margin:0 0 8px;font-size:11px;color:rgba(180,252,238,.75);font-weight:300 }
|
||||
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#99f6e4;background:rgba(0,0,0,.2);padding:10px 12px;border:1px solid rgba(13,148,136,.15);word-break:break-all }
|
||||
.email-link-box { border:1px solid #0d94882e;background:#0d948808 }
|
||||
.email-link-label { margin:0 0 8px;font-size:11px;color:#b4fceebf;font-weight:300 }
|
||||
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#99f6e4;background:#00000033;padding:10px 12px;border:1px solid #0d948826;word-break:break-all }
|
||||
|
||||
/* Footer */
|
||||
.email-footer { padding:32px 0 0;text-align:center }
|
||||
.email-footer-text { margin:0;font-size:11px;color:rgba(160,175,200,.55);font-weight:300 }
|
||||
.email-footer-link { color:rgba(94,234,212,.5);text-decoration:none;font-weight:400 }
|
||||
.email-footer-text { margin:0;font-size:11px;color:#a0afc88c;font-weight:300 }
|
||||
.email-footer-link { color:#5eead480;text-decoration:none;font-weight:400 }
|
||||
|
||||
/* Typography utilities */
|
||||
.card-body h1,.card-body h2,.card-body h3,.card-body h4,.card-body h5,.card-body h6 { color:#ccfbf1!important }
|
||||
.card-body a,.card-body a:link,.card-body a:visited { color:#5eead4!important;text-decoration:underline!important }
|
||||
.card-body a:hover,.card-body a:active { color:#99f6e4!important }
|
||||
.card-body li { color:rgba(210,252,245,.88)!important }
|
||||
.card-body li { color:#d2fcf5e0!important }
|
||||
|
||||
/* Responsive */
|
||||
@media only screen and (max-width:480px) {
|
||||
|
||||
@@ -16,47 +16,47 @@
|
||||
|
||||
/* Header */
|
||||
.email-logo { display:block;margin:0 auto 14px;border:0;outline:none;opacity:0.5 }
|
||||
.email-brand { font-size:16px;font-weight:300;color:rgba(255,255,255,.4);letter-spacing:4px;text-transform:uppercase }
|
||||
.email-brand { font-size:16px;font-weight:300;color:#ffffff66;letter-spacing:4px;text-transform:uppercase }
|
||||
.email-header { padding:0 0 32px;text-align:center }
|
||||
|
||||
/* Card */
|
||||
.email-card { padding:48px 40px;background:rgba(25,20,50,.8);border:1px solid rgba(13,148,136,.2);box-shadow:0 0 60px rgba(13,148,136,.08),0 0 120px rgba(99,102,241,.04) }
|
||||
.email-card { padding:48px 40px;background:#191432cc;border:1px solid #0d948833;box-shadow:0 0 60px #0d948814,0 0 120px #6366f10a }
|
||||
.email-heading { margin:0 0 20px;font-size:24px;font-weight:300;color:#ccfbf1;line-height:1.3;letter-spacing:-.5px }
|
||||
.email-text { margin:0 0 24px;font-size:14px;line-height:2;color:rgba(210,252,245,.88);font-weight:300 }
|
||||
.email-subtext { margin:0;font-size:13px;line-height:1.8;color:rgba(180,195,215,.95);font-weight:300 }
|
||||
.email-text { margin:0 0 24px;font-size:14px;line-height:2;color:#d2fcf5e0;font-weight:300 }
|
||||
.email-subtext { margin:0;font-size:13px;line-height:1.8;color:#b4c3d7f2;font-weight:300 }
|
||||
|
||||
/* Divider */
|
||||
.email-divider { height:1px;background:linear-gradient(90deg,transparent,rgba(13,148,136,.3),transparent) }
|
||||
.email-divider { height:1px;background:linear-gradient(90deg,transparent,#0d94884d,transparent) }
|
||||
|
||||
/* Button */
|
||||
.email-btn-row { padding:40px 40px;text-align:center }
|
||||
.email-btn { display:inline-block;padding:16px 48px;font-size:14px;font-weight:400;color:#e0f5f3!important;text-decoration:none;background:rgba(13,148,136,.18);border:1px solid rgba(13,148,136,.3);letter-spacing:1px }
|
||||
.email-btn { display:inline-block;padding:16px 48px;font-size:14px;font-weight:400;color:#e0f5f3!important;text-decoration:none;background:#0d94882e;border:1px solid #0d94884d;letter-spacing:1px }
|
||||
.email-btn-table { margin:0 0 32px }
|
||||
|
||||
/* Fallback link */
|
||||
.email-link-box { border:1px solid rgba(13,148,136,.18);background:rgba(13,148,136,.03) }
|
||||
.email-link-label { margin:0 0 8px;font-size:11px;color:rgba(180,252,238,.75);font-weight:300 }
|
||||
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#99f6e4;background:rgba(0,0,0,.2);padding:10px 12px;border:1px solid rgba(13,148,136,.15);word-break:break-all }
|
||||
.email-link-box { border:1px solid #0d94882e;background:#0d948808 }
|
||||
.email-link-label { margin:0 0 8px;font-size:11px;color:#b4fceebf;font-weight:300 }
|
||||
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#99f6e4;background:#00000033;padding:10px 12px;border:1px solid #0d948826;word-break:break-all }
|
||||
|
||||
/* Footer */
|
||||
.email-footer { padding:32px 0 0;text-align:center }
|
||||
.email-footer-text { margin:0;font-size:11px;color:rgba(160,175,200,.55);font-weight:300 }
|
||||
.email-footer-link { color:rgba(94,234,212,.5);text-decoration:none;font-weight:400 }
|
||||
.email-footer-text { margin:0;font-size:11px;color:#a0afc88c;font-weight:300 }
|
||||
.email-footer-link { color:#5eead480;text-decoration:none;font-weight:400 }
|
||||
|
||||
/* Typography utilities */
|
||||
.card-body h1,.card-body h2,.card-body h3,.card-body h4,.card-body h5,.card-body h6 { color:#ccfbf1!important }
|
||||
.card-body a,.card-body a:link,.card-body a:visited { color:#5eead4!important;text-decoration:underline!important }
|
||||
.card-body a:hover,.card-body a:active { color:#99f6e4!important }
|
||||
.card-body li { color:rgba(210,252,245,.88)!important }
|
||||
.card-body li { color:#d2fcf5e0!important }
|
||||
|
||||
/* Content */
|
||||
.aurora-content,.aurora-content * { color:rgba(210,252,245,.88)!important }
|
||||
.aurora-content,.aurora-content * { color:#d2fcf5e0!important }
|
||||
.aurora-content a,.aurora-content a:link,.aurora-content a:visited { color:#5eead4!important;text-decoration:underline!important }
|
||||
.aurora-content a:hover,.aurora-content a:active { color:#99f6e4!important }
|
||||
.aurora-content code,.aurora-content pre { color:#99f6e4!important;background:rgba(0,0,0,.3)!important;border-color:rgba(13,148,136,.2)!important }
|
||||
.aurora-content blockquote { color:rgba(255,255,255,.6)!important }
|
||||
.aurora-content code,.aurora-content pre { color:#99f6e4!important;background:#0000004d!important;border-color:#0d948833!important }
|
||||
.aurora-content blockquote { color:#ffffff99!important }
|
||||
.aurora-content h1,.aurora-content h2,.aurora-content h3,.aurora-content h4,.aurora-content h5,.aurora-content h6 { color:#ccfbf1!important }
|
||||
.aurora-content hr { border-color:rgba(13,148,136,.3)!important }
|
||||
.aurora-content hr { border-color:#0d94884d!important }
|
||||
.aurora-content img { border:0;max-width:100%!important }
|
||||
|
||||
/* Responsive */
|
||||
@@ -150,7 +150,7 @@
|
||||
<ul>
|
||||
{{range .Comment.Commits}}
|
||||
<li>
|
||||
<a href="{{$.Comment.Issue.PullRequest.BaseRepo.HTMLURL}}/commit/{{.ID}}">{{ShortSha .ID.String}}</a> - {{.MessageTitle}}
|
||||
<a href="{{$.Comment.Issue.PullRequest.BaseRepo.HTMLURL}}/commit/{{.UserCommit.GitCommit.ID}}">{{ShortSha .UserCommit.GitCommit.ID.String}}</a> - {{.UserCommit.GitCommit.MessageTitle}}
|
||||
</li>
|
||||
{{end}}
|
||||
</ul>
|
||||
|
||||
@@ -16,47 +16,47 @@
|
||||
|
||||
/* Header */
|
||||
.email-logo { display:block;margin:0 auto 14px;border:0;outline:none;opacity:0.5 }
|
||||
.email-brand { font-size:16px;font-weight:300;color:rgba(255,255,255,.4);letter-spacing:4px;text-transform:uppercase }
|
||||
.email-brand { font-size:16px;font-weight:300;color:#ffffff66;letter-spacing:4px;text-transform:uppercase }
|
||||
.email-header { padding:0 0 32px;text-align:center }
|
||||
|
||||
/* Card */
|
||||
.email-card { padding:48px 40px;background:rgba(25,20,50,.8);border:1px solid rgba(13,148,136,.2);box-shadow:0 0 60px rgba(13,148,136,.08),0 0 120px rgba(99,102,241,.04) }
|
||||
.email-card { padding:48px 40px;background:#191432cc;border:1px solid #0d948833;box-shadow:0 0 60px #0d948814,0 0 120px #6366f10a }
|
||||
.email-heading { margin:0 0 20px;font-size:24px;font-weight:300;color:#ccfbf1;line-height:1.3;letter-spacing:-.5px }
|
||||
.email-text { margin:0 0 24px;font-size:14px;line-height:2;color:rgba(210,252,245,.88);font-weight:300 }
|
||||
.email-subtext { margin:0;font-size:13px;line-height:1.8;color:rgba(180,195,215,.95);font-weight:300 }
|
||||
.email-text { margin:0 0 24px;font-size:14px;line-height:2;color:#d2fcf5e0;font-weight:300 }
|
||||
.email-subtext { margin:0;font-size:13px;line-height:1.8;color:#b4c3d7f2;font-weight:300 }
|
||||
|
||||
/* Divider */
|
||||
.email-divider { height:1px;background:linear-gradient(90deg,transparent,rgba(13,148,136,.3),transparent) }
|
||||
.email-divider { height:1px;background:linear-gradient(90deg,transparent,#0d94884d,transparent) }
|
||||
|
||||
/* Button */
|
||||
.email-btn-row { padding:40px 40px;text-align:center }
|
||||
.email-btn { display:inline-block;padding:16px 48px;font-size:14px;font-weight:400;color:#e0f5f3!important;text-decoration:none;background:rgba(13,148,136,.18);border:1px solid rgba(13,148,136,.3);letter-spacing:1px }
|
||||
.email-btn { display:inline-block;padding:16px 48px;font-size:14px;font-weight:400;color:#e0f5f3!important;text-decoration:none;background:#0d94882e;border:1px solid #0d94884d;letter-spacing:1px }
|
||||
.email-btn-table { margin:0 0 32px }
|
||||
|
||||
/* Fallback link */
|
||||
.email-link-box { border:1px solid rgba(13,148,136,.18);background:rgba(13,148,136,.03) }
|
||||
.email-link-label { margin:0 0 8px;font-size:11px;color:rgba(180,252,238,.75);font-weight:300 }
|
||||
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#99f6e4;background:rgba(0,0,0,.2);padding:10px 12px;border:1px solid rgba(13,148,136,.15);word-break:break-all }
|
||||
.email-link-box { border:1px solid #0d94882e;background:#0d948808 }
|
||||
.email-link-label { margin:0 0 8px;font-size:11px;color:#b4fceebf;font-weight:300 }
|
||||
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#99f6e4;background:#00000033;padding:10px 12px;border:1px solid #0d948826;word-break:break-all }
|
||||
|
||||
/* Footer */
|
||||
.email-footer { padding:32px 0 0;text-align:center }
|
||||
.email-footer-text { margin:0;font-size:11px;color:rgba(160,175,200,.55);font-weight:300 }
|
||||
.email-footer-link { color:rgba(94,234,212,.5);text-decoration:none;font-weight:400 }
|
||||
.email-footer-text { margin:0;font-size:11px;color:#a0afc88c;font-weight:300 }
|
||||
.email-footer-link { color:#5eead480;text-decoration:none;font-weight:400 }
|
||||
|
||||
/* Typography utilities */
|
||||
.card-body h1,.card-body h2,.card-body h3,.card-body h4,.card-body h5,.card-body h6 { color:#ccfbf1!important }
|
||||
.card-body a,.card-body a:link,.card-body a:visited { color:#5eead4!important;text-decoration:underline!important }
|
||||
.card-body a:hover,.card-body a:active { color:#99f6e4!important }
|
||||
.card-body li { color:rgba(210,252,245,.88)!important }
|
||||
.card-body li { color:#d2fcf5e0!important }
|
||||
|
||||
/* Content */
|
||||
.aurora-content,.aurora-content * { color:rgba(210,252,245,.88)!important }
|
||||
.aurora-content,.aurora-content * { color:#d2fcf5e0!important }
|
||||
.aurora-content a,.aurora-content a:link,.aurora-content a:visited { color:#5eead4!important;text-decoration:underline!important }
|
||||
.aurora-content a:hover,.aurora-content a:active { color:#99f6e4!important }
|
||||
.aurora-content code,.aurora-content pre { color:#99f6e4!important;background:rgba(0,0,0,.3)!important;border-color:rgba(13,148,136,.2)!important }
|
||||
.aurora-content blockquote { color:rgba(255,255,255,.6)!important }
|
||||
.aurora-content code,.aurora-content pre { color:#99f6e4!important;background:#0000004d!important;border-color:#0d948833!important }
|
||||
.aurora-content blockquote { color:#ffffff99!important }
|
||||
.aurora-content h1,.aurora-content h2,.aurora-content h3,.aurora-content h4,.aurora-content h5,.aurora-content h6 { color:#ccfbf1!important }
|
||||
.aurora-content hr { border-color:rgba(13,148,136,.3)!important }
|
||||
.aurora-content hr { border-color:#0d94884d!important }
|
||||
.aurora-content img { border:0;max-width:100%!important }
|
||||
|
||||
/* Responsive */
|
||||
@@ -96,11 +96,11 @@
|
||||
<h4>{{.locale.Tr "mail.release.title" .Release.Title}}</h4>
|
||||
|
||||
{{if .Release.RenderedNote}}
|
||||
<p>{{.locale.Tr "mail.release.note"}}</p>
|
||||
<p class="email-text">{{.locale.Tr "mail.release.note"}}</p>
|
||||
<div class="aurora-content" style="font-size:14px;line-height:2;">{{.Release.RenderedNote}}</div>
|
||||
{{end}}
|
||||
|
||||
<p>{{.locale.Tr "mail.release.downloads"}}</p>
|
||||
<p class="email-text">{{.locale.Tr "mail.release.downloads"}}</p>
|
||||
<ul>
|
||||
{{if not .DisableDownloadSourceArchives}}
|
||||
<li><a href="{{.Release.Repo.HTMLURL}}/archive/{{.Release.TagName | PathEscapeSegments}}.zip">{{.locale.Tr "mail.release.download.zip"}}</a></li>
|
||||
|
||||
@@ -16,38 +16,38 @@
|
||||
|
||||
/* Header */
|
||||
.email-logo { display:block;margin:0 auto 14px;border:0;outline:none;opacity:0.5 }
|
||||
.email-brand { font-size:16px;font-weight:300;color:rgba(255,255,255,.4);letter-spacing:4px;text-transform:uppercase }
|
||||
.email-brand { font-size:16px;font-weight:300;color:#ffffff66;letter-spacing:4px;text-transform:uppercase }
|
||||
.email-header { padding:0 0 32px;text-align:center }
|
||||
|
||||
/* Card */
|
||||
.email-card { padding:48px 40px;background:rgba(25,20,50,.8);border:1px solid rgba(13,148,136,.2);box-shadow:0 0 60px rgba(13,148,136,.08),0 0 120px rgba(99,102,241,.04) }
|
||||
.email-card { padding:48px 40px;background:#191432cc;border:1px solid #0d948833;box-shadow:0 0 60px #0d948814,0 0 120px #6366f10a }
|
||||
.email-heading { margin:0 0 20px;font-size:24px;font-weight:300;color:#ccfbf1;line-height:1.3;letter-spacing:-.5px }
|
||||
.email-text { margin:0 0 24px;font-size:14px;line-height:2;color:rgba(210,252,245,.88);font-weight:300 }
|
||||
.email-subtext { margin:0;font-size:13px;line-height:1.8;color:rgba(180,195,215,.95);font-weight:300 }
|
||||
.email-text { margin:0 0 24px;font-size:14px;line-height:2;color:#d2fcf5e0;font-weight:300 }
|
||||
.email-subtext { margin:0;font-size:13px;line-height:1.8;color:#b4c3d7f2;font-weight:300 }
|
||||
|
||||
/* Divider */
|
||||
.email-divider { height:1px;background:linear-gradient(90deg,transparent,rgba(13,148,136,.3),transparent) }
|
||||
.email-divider { height:1px;background:linear-gradient(90deg,transparent,#0d94884d,transparent) }
|
||||
|
||||
/* Button */
|
||||
.email-btn-row { padding:40px 40px;text-align:center }
|
||||
.email-btn { display:inline-block;padding:16px 48px;font-size:14px;font-weight:400;color:#e0f5f3!important;text-decoration:none;background:rgba(13,148,136,.18);border:1px solid rgba(13,148,136,.3);letter-spacing:1px }
|
||||
.email-btn { display:inline-block;padding:16px 48px;font-size:14px;font-weight:400;color:#e0f5f3!important;text-decoration:none;background:#0d94882e;border:1px solid #0d94884d;letter-spacing:1px }
|
||||
.email-btn-table { margin:0 0 32px }
|
||||
|
||||
/* Fallback link */
|
||||
.email-link-box { border:1px solid rgba(13,148,136,.18);background:rgba(13,148,136,.03) }
|
||||
.email-link-label { margin:0 0 8px;font-size:11px;color:rgba(180,252,238,.75);font-weight:300 }
|
||||
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#99f6e4;background:rgba(0,0,0,.2);padding:10px 12px;border:1px solid rgba(13,148,136,.15);word-break:break-all }
|
||||
.email-link-box { border:1px solid #0d94882e;background:#0d948808 }
|
||||
.email-link-label { margin:0 0 8px;font-size:11px;color:#b4fceebf;font-weight:300 }
|
||||
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#99f6e4;background:#00000033;padding:10px 12px;border:1px solid #0d948826;word-break:break-all }
|
||||
|
||||
/* Footer */
|
||||
.email-footer { padding:32px 0 0;text-align:center }
|
||||
.email-footer-text { margin:0;font-size:11px;color:rgba(160,175,200,.55);font-weight:300 }
|
||||
.email-footer-link { color:rgba(94,234,212,.5);text-decoration:none;font-weight:400 }
|
||||
.email-footer-text { margin:0;font-size:11px;color:#a0afc88c;font-weight:300 }
|
||||
.email-footer-link { color:#5eead480;text-decoration:none;font-weight:400 }
|
||||
|
||||
/* Typography utilities */
|
||||
.card-body h1,.card-body h2,.card-body h3,.card-body h4,.card-body h5,.card-body h6 { color:#ccfbf1!important }
|
||||
.card-body a,.card-body a:link,.card-body a:visited { color:#5eead4!important;text-decoration:underline!important }
|
||||
.card-body a:hover,.card-body a:active { color:#99f6e4!important }
|
||||
.card-body li { color:rgba(210,252,245,.88)!important }
|
||||
.card-body li { color:#d2fcf5e0!important }
|
||||
|
||||
/* Responsive */
|
||||
@media only screen and (max-width:480px) {
|
||||
|
||||
@@ -16,38 +16,38 @@
|
||||
|
||||
/* Header */
|
||||
.email-logo { display:block;margin:0 auto 14px;border:0;outline:none;opacity:0.5 }
|
||||
.email-brand { font-size:16px;font-weight:300;color:rgba(255,255,255,.4);letter-spacing:4px;text-transform:uppercase }
|
||||
.email-brand { font-size:16px;font-weight:300;color:#ffffff66;letter-spacing:4px;text-transform:uppercase }
|
||||
.email-header { padding:0 0 32px;text-align:center }
|
||||
|
||||
/* Card */
|
||||
.email-card { padding:48px 40px;background:rgba(25,20,50,.8);border:1px solid rgba(13,148,136,.2);box-shadow:0 0 60px rgba(13,148,136,.08),0 0 120px rgba(99,102,241,.04) }
|
||||
.email-card { padding:48px 40px;background:#191432cc;border:1px solid #0d948833;box-shadow:0 0 60px #0d948814,0 0 120px #6366f10a }
|
||||
.email-heading { margin:0 0 20px;font-size:24px;font-weight:300;color:#ccfbf1;line-height:1.3;letter-spacing:-.5px }
|
||||
.email-text { margin:0 0 24px;font-size:14px;line-height:2;color:rgba(210,252,245,.88);font-weight:300 }
|
||||
.email-subtext { margin:0;font-size:13px;line-height:1.8;color:rgba(180,195,215,.95);font-weight:300 }
|
||||
.email-text { margin:0 0 24px;font-size:14px;line-height:2;color:#d2fcf5e0;font-weight:300 }
|
||||
.email-subtext { margin:0;font-size:13px;line-height:1.8;color:#b4c3d7f2;font-weight:300 }
|
||||
|
||||
/* Divider */
|
||||
.email-divider { height:1px;background:linear-gradient(90deg,transparent,rgba(13,148,136,.3),transparent) }
|
||||
.email-divider { height:1px;background:linear-gradient(90deg,transparent,#0d94884d,transparent) }
|
||||
|
||||
/* Button */
|
||||
.email-btn-row { padding:40px 40px;text-align:center }
|
||||
.email-btn { display:inline-block;padding:16px 48px;font-size:14px;font-weight:400;color:#e0f5f3!important;text-decoration:none;background:rgba(13,148,136,.18);border:1px solid rgba(13,148,136,.3);letter-spacing:1px }
|
||||
.email-btn { display:inline-block;padding:16px 48px;font-size:14px;font-weight:400;color:#e0f5f3!important;text-decoration:none;background:#0d94882e;border:1px solid #0d94884d;letter-spacing:1px }
|
||||
.email-btn-table { margin:0 0 32px }
|
||||
|
||||
/* Fallback link */
|
||||
.email-link-box { border:1px solid rgba(13,148,136,.18);background:rgba(13,148,136,.03) }
|
||||
.email-link-label { margin:0 0 8px;font-size:11px;color:rgba(180,252,238,.75);font-weight:300 }
|
||||
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#99f6e4;background:rgba(0,0,0,.2);padding:10px 12px;border:1px solid rgba(13,148,136,.15);word-break:break-all }
|
||||
.email-link-box { border:1px solid #0d94882e;background:#0d948808 }
|
||||
.email-link-label { margin:0 0 8px;font-size:11px;color:#b4fceebf;font-weight:300 }
|
||||
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#99f6e4;background:#00000033;padding:10px 12px;border:1px solid #0d948826;word-break:break-all }
|
||||
|
||||
/* Footer */
|
||||
.email-footer { padding:32px 0 0;text-align:center }
|
||||
.email-footer-text { margin:0;font-size:11px;color:rgba(160,175,200,.55);font-weight:300 }
|
||||
.email-footer-link { color:rgba(94,234,212,.5);text-decoration:none;font-weight:400 }
|
||||
.email-footer-text { margin:0;font-size:11px;color:#a0afc88c;font-weight:300 }
|
||||
.email-footer-link { color:#5eead480;text-decoration:none;font-weight:400 }
|
||||
|
||||
/* Typography utilities */
|
||||
.card-body h1,.card-body h2,.card-body h3,.card-body h4,.card-body h5,.card-body h6 { color:#ccfbf1!important }
|
||||
.card-body a,.card-body a:link,.card-body a:visited { color:#5eead4!important;text-decoration:underline!important }
|
||||
.card-body a:hover,.card-body a:active { color:#99f6e4!important }
|
||||
.card-body li { color:rgba(210,252,245,.88)!important }
|
||||
.card-body li { color:#d2fcf5e0!important }
|
||||
|
||||
/* Responsive */
|
||||
@media only screen and (max-width:480px) {
|
||||
|
||||
@@ -16,38 +16,38 @@
|
||||
|
||||
/* Header */
|
||||
.email-logo { display:block;margin:0 auto 14px;border:0;outline:none;opacity:0.5 }
|
||||
.email-brand { font-size:16px;font-weight:300;color:rgba(255,255,255,.4);letter-spacing:4px;text-transform:uppercase }
|
||||
.email-brand { font-size:16px;font-weight:300;color:#ffffff66;letter-spacing:4px;text-transform:uppercase }
|
||||
.email-header { padding:0 0 32px;text-align:center }
|
||||
|
||||
/* Card */
|
||||
.email-card { padding:48px 40px;background:rgba(25,20,50,.8);border:1px solid rgba(13,148,136,.2);box-shadow:0 0 60px rgba(13,148,136,.08),0 0 120px rgba(99,102,241,.04) }
|
||||
.email-card { padding:48px 40px;background:#191432cc;border:1px solid #0d948833;box-shadow:0 0 60px #0d948814,0 0 120px #6366f10a }
|
||||
.email-heading { margin:0 0 20px;font-size:24px;font-weight:300;color:#ccfbf1;line-height:1.3;letter-spacing:-.5px }
|
||||
.email-text { margin:0 0 24px;font-size:14px;line-height:2;color:rgba(210,252,245,.88);font-weight:300 }
|
||||
.email-subtext { margin:0;font-size:13px;line-height:1.8;color:rgba(180,195,215,.95);font-weight:300 }
|
||||
.email-text { margin:0 0 24px;font-size:14px;line-height:2;color:#d2fcf5e0;font-weight:300 }
|
||||
.email-subtext { margin:0;font-size:13px;line-height:1.8;color:#b4c3d7f2;font-weight:300 }
|
||||
|
||||
/* Divider */
|
||||
.email-divider { height:1px;background:linear-gradient(90deg,transparent,rgba(13,148,136,.3),transparent) }
|
||||
.email-divider { height:1px;background:linear-gradient(90deg,transparent,#0d94884d,transparent) }
|
||||
|
||||
/* Button */
|
||||
.email-btn-row { padding:40px 40px;text-align:center }
|
||||
.email-btn { display:inline-block;padding:16px 48px;font-size:14px;font-weight:400;color:#e0f5f3!important;text-decoration:none;background:rgba(13,148,136,.18);border:1px solid rgba(13,148,136,.3);letter-spacing:1px }
|
||||
.email-btn { display:inline-block;padding:16px 48px;font-size:14px;font-weight:400;color:#e0f5f3!important;text-decoration:none;background:#0d94882e;border:1px solid #0d94884d;letter-spacing:1px }
|
||||
.email-btn-table { margin:0 0 32px }
|
||||
|
||||
/* Fallback link */
|
||||
.email-link-box { border:1px solid rgba(13,148,136,.18);background:rgba(13,148,136,.03) }
|
||||
.email-link-label { margin:0 0 8px;font-size:11px;color:rgba(180,252,238,.75);font-weight:300 }
|
||||
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#99f6e4;background:rgba(0,0,0,.2);padding:10px 12px;border:1px solid rgba(13,148,136,.15);word-break:break-all }
|
||||
.email-link-box { border:1px solid #0d94882e;background:#0d948808 }
|
||||
.email-link-label { margin:0 0 8px;font-size:11px;color:#b4fceebf;font-weight:300 }
|
||||
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#99f6e4;background:#00000033;padding:10px 12px;border:1px solid #0d948826;word-break:break-all }
|
||||
|
||||
/* Footer */
|
||||
.email-footer { padding:32px 0 0;text-align:center }
|
||||
.email-footer-text { margin:0;font-size:11px;color:rgba(160,175,200,.55);font-weight:300 }
|
||||
.email-footer-link { color:rgba(94,234,212,.5);text-decoration:none;font-weight:400 }
|
||||
.email-footer-text { margin:0;font-size:11px;color:#a0afc88c;font-weight:300 }
|
||||
.email-footer-link { color:#5eead480;text-decoration:none;font-weight:400 }
|
||||
|
||||
/* Typography utilities */
|
||||
.card-body h1,.card-body h2,.card-body h3,.card-body h4,.card-body h5,.card-body h6 { color:#ccfbf1!important }
|
||||
.card-body a,.card-body a:link,.card-body a:visited { color:#5eead4!important;text-decoration:underline!important }
|
||||
.card-body a:hover,.card-body a:active { color:#99f6e4!important }
|
||||
.card-body li { color:rgba(210,252,245,.88)!important }
|
||||
.card-body li { color:#d2fcf5e0!important }
|
||||
|
||||
/* Responsive */
|
||||
@media only screen and (max-width:480px) {
|
||||
|
||||
@@ -16,38 +16,38 @@
|
||||
|
||||
/* Header */
|
||||
.email-logo { display:block;margin:0 auto 14px;border:0;outline:none;opacity:0.5 }
|
||||
.email-brand { font-size:16px;font-weight:300;color:rgba(255,255,255,.4);letter-spacing:4px;text-transform:uppercase }
|
||||
.email-brand { font-size:16px;font-weight:300;color:#ffffff66;letter-spacing:4px;text-transform:uppercase }
|
||||
.email-header { padding:0 0 32px;text-align:center }
|
||||
|
||||
/* Card */
|
||||
.email-card { padding:48px 40px;background:rgba(25,20,50,.8);border:1px solid rgba(13,148,136,.2);box-shadow:0 0 60px rgba(13,148,136,.08),0 0 120px rgba(99,102,241,.04) }
|
||||
.email-card { padding:48px 40px;background:#191432cc;border:1px solid #0d948833;box-shadow:0 0 60px #0d948814,0 0 120px #6366f10a }
|
||||
.email-heading { margin:0 0 20px;font-size:24px;font-weight:300;color:#ccfbf1;line-height:1.3;letter-spacing:-.5px }
|
||||
.email-text { margin:0 0 24px;font-size:14px;line-height:2;color:rgba(210,252,245,.88);font-weight:300 }
|
||||
.email-subtext { margin:0;font-size:13px;line-height:1.8;color:rgba(180,195,215,.95);font-weight:300 }
|
||||
.email-text { margin:0 0 24px;font-size:14px;line-height:2;color:#d2fcf5e0;font-weight:300 }
|
||||
.email-subtext { margin:0;font-size:13px;line-height:1.8;color:#b4c3d7f2;font-weight:300 }
|
||||
|
||||
/* Divider */
|
||||
.email-divider { height:1px;background:linear-gradient(90deg,transparent,rgba(13,148,136,.3),transparent) }
|
||||
.email-divider { height:1px;background:linear-gradient(90deg,transparent,#0d94884d,transparent) }
|
||||
|
||||
/* Button */
|
||||
.email-btn-row { padding:40px 40px;text-align:center }
|
||||
.email-btn { display:inline-block;padding:16px 48px;font-size:14px;font-weight:400;color:#e0f5f3!important;text-decoration:none;background:rgba(13,148,136,.18);border:1px solid rgba(13,148,136,.3);letter-spacing:1px }
|
||||
.email-btn { display:inline-block;padding:16px 48px;font-size:14px;font-weight:400;color:#e0f5f3!important;text-decoration:none;background:#0d94882e;border:1px solid #0d94884d;letter-spacing:1px }
|
||||
.email-btn-table { margin:0 0 32px }
|
||||
|
||||
/* Fallback link */
|
||||
.email-link-box { border:1px solid rgba(13,148,136,.18);background:rgba(13,148,136,.03) }
|
||||
.email-link-label { margin:0 0 8px;font-size:11px;color:rgba(180,252,238,.75);font-weight:300 }
|
||||
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#99f6e4;background:rgba(0,0,0,.2);padding:10px 12px;border:1px solid rgba(13,148,136,.15);word-break:break-all }
|
||||
.email-link-box { border:1px solid #0d94882e;background:#0d948808 }
|
||||
.email-link-label { margin:0 0 8px;font-size:11px;color:#b4fceebf;font-weight:300 }
|
||||
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#99f6e4;background:#00000033;padding:10px 12px;border:1px solid #0d948826;word-break:break-all }
|
||||
|
||||
/* Footer */
|
||||
.email-footer { padding:32px 0 0;text-align:center }
|
||||
.email-footer-text { margin:0;font-size:11px;color:rgba(160,175,200,.55);font-weight:300 }
|
||||
.email-footer-link { color:rgba(94,234,212,.5);text-decoration:none;font-weight:400 }
|
||||
.email-footer-text { margin:0;font-size:11px;color:#a0afc88c;font-weight:300 }
|
||||
.email-footer-link { color:#5eead480;text-decoration:none;font-weight:400 }
|
||||
|
||||
/* Typography utilities */
|
||||
.card-body h1,.card-body h2,.card-body h3,.card-body h4,.card-body h5,.card-body h6 { color:#ccfbf1!important }
|
||||
.card-body a,.card-body a:link,.card-body a:visited { color:#5eead4!important;text-decoration:underline!important }
|
||||
.card-body a:hover,.card-body a:active { color:#99f6e4!important }
|
||||
.card-body li { color:rgba(210,252,245,.88)!important }
|
||||
.card-body li { color:#d2fcf5e0!important }
|
||||
|
||||
/* Responsive */
|
||||
@media only screen and (max-width:480px) {
|
||||
|
||||
@@ -16,38 +16,38 @@
|
||||
|
||||
/* Header */
|
||||
.email-logo { display:block;margin:0 auto 14px;border:0;outline:none;opacity:0.5 }
|
||||
.email-brand { font-size:16px;font-weight:300;color:rgba(255,255,255,.4);letter-spacing:4px;text-transform:uppercase }
|
||||
.email-brand { font-size:16px;font-weight:300;color:#ffffff66;letter-spacing:4px;text-transform:uppercase }
|
||||
.email-header { padding:0 0 32px;text-align:center }
|
||||
|
||||
/* Card */
|
||||
.email-card { padding:48px 40px;background:rgba(25,20,50,.8);border:1px solid rgba(13,148,136,.2);box-shadow:0 0 60px rgba(13,148,136,.08),0 0 120px rgba(99,102,241,.04) }
|
||||
.email-card { padding:48px 40px;background:#191432cc;border:1px solid #0d948833;box-shadow:0 0 60px #0d948814,0 0 120px #6366f10a }
|
||||
.email-heading { margin:0 0 20px;font-size:24px;font-weight:300;color:#ccfbf1;line-height:1.3;letter-spacing:-.5px }
|
||||
.email-text { margin:0 0 24px;font-size:14px;line-height:2;color:rgba(210,252,245,.88);font-weight:300 }
|
||||
.email-subtext { margin:0;font-size:13px;line-height:1.8;color:rgba(180,195,215,.95);font-weight:300 }
|
||||
.email-text { margin:0 0 24px;font-size:14px;line-height:2;color:#d2fcf5e0;font-weight:300 }
|
||||
.email-subtext { margin:0;font-size:13px;line-height:1.8;color:#b4c3d7f2;font-weight:300 }
|
||||
|
||||
/* Divider */
|
||||
.email-divider { height:1px;background:linear-gradient(90deg,transparent,rgba(13,148,136,.3),transparent) }
|
||||
.email-divider { height:1px;background:linear-gradient(90deg,transparent,#0d94884d,transparent) }
|
||||
|
||||
/* Button */
|
||||
.email-btn-row { padding:40px 40px;text-align:center }
|
||||
.email-btn { display:inline-block;padding:16px 48px;font-size:14px;font-weight:400;color:#e0f5f3!important;text-decoration:none;background:rgba(13,148,136,.18);border:1px solid rgba(13,148,136,.3);letter-spacing:1px }
|
||||
.email-btn { display:inline-block;padding:16px 48px;font-size:14px;font-weight:400;color:#e0f5f3!important;text-decoration:none;background:#0d94882e;border:1px solid #0d94884d;letter-spacing:1px }
|
||||
.email-btn-table { margin:0 0 32px }
|
||||
|
||||
/* Fallback link */
|
||||
.email-link-box { border:1px solid rgba(13,148,136,.18);background:rgba(13,148,136,.03) }
|
||||
.email-link-label { margin:0 0 8px;font-size:11px;color:rgba(180,252,238,.75);font-weight:300 }
|
||||
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#99f6e4;background:rgba(0,0,0,.2);padding:10px 12px;border:1px solid rgba(13,148,136,.15);word-break:break-all }
|
||||
.email-link-box { border:1px solid #0d94882e;background:#0d948808 }
|
||||
.email-link-label { margin:0 0 8px;font-size:11px;color:#b4fceebf;font-weight:300 }
|
||||
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#99f6e4;background:#00000033;padding:10px 12px;border:1px solid #0d948826;word-break:break-all }
|
||||
|
||||
/* Footer */
|
||||
.email-footer { padding:32px 0 0;text-align:center }
|
||||
.email-footer-text { margin:0;font-size:11px;color:rgba(160,175,200,.55);font-weight:300 }
|
||||
.email-footer-link { color:rgba(94,234,212,.5);text-decoration:none;font-weight:400 }
|
||||
.email-footer-text { margin:0;font-size:11px;color:#a0afc88c;font-weight:300 }
|
||||
.email-footer-link { color:#5eead480;text-decoration:none;font-weight:400 }
|
||||
|
||||
/* Typography utilities */
|
||||
.card-body h1,.card-body h2,.card-body h3,.card-body h4,.card-body h5,.card-body h6 { color:#ccfbf1!important }
|
||||
.card-body a,.card-body a:link,.card-body a:visited { color:#5eead4!important;text-decoration:underline!important }
|
||||
.card-body a:hover,.card-body a:active { color:#99f6e4!important }
|
||||
.card-body li { color:rgba(210,252,245,.88)!important }
|
||||
.card-body li { color:#d2fcf5e0!important }
|
||||
|
||||
/* Responsive */
|
||||
@media only screen and (max-width:480px) {
|
||||
|
||||
@@ -16,10 +16,10 @@
|
||||
/* Header */
|
||||
.email-logo { display:inline-block;margin:0 auto 8px;border:0;outline:none }
|
||||
.email-brand { margin:0;font-size:18px;font-weight:700;color:#1e293b;letter-spacing:-0.3px }
|
||||
.email-header { padding:28px 32px 18px;background:linear-gradient(135deg,#dbeafe,#e0e7ff,#e8f0fe);border-bottom:1px solid rgba(59,130,246,0.1);text-align:center }
|
||||
.email-header { padding:28px 32px 18px;background:linear-gradient(135deg,#dbeafe,#e0e7ff,#e8f0fe);border-bottom:1px solid #3b82f61a;text-align:center }
|
||||
|
||||
/* Card */
|
||||
.email-card { max-width:600px;margin:24px auto;background:#ffffff;border-radius:16px;box-shadow:0 2px 4px rgba(0,0,0,0.06),0 8px 24px rgba(0,0,0,0.06),0 0 0 1px rgba(0,0,0,0.04);overflow:hidden }
|
||||
.email-card { max-width:600px;margin:24px auto;background:#ffffff;border-radius:16px;box-shadow:0 2px 4px #0000000f,0 8px 24px #0000000f,0 0 0 1px #0000000a;overflow:hidden }
|
||||
.email-heading { margin:0 0 12px;font-size:17px;line-height:1.5;color:#1e293b;font-weight:600 }
|
||||
.email-text { margin:0 0 8px;font-size:15px;line-height:1.6;color:#475569 }
|
||||
.email-subtext { margin:0 0 20px;font-size:14px;line-height:1.6;color:#64748b }
|
||||
@@ -29,12 +29,12 @@
|
||||
.email-btn { display:inline-block;padding:14px 40px;font-size:15px;font-weight:600;color:#ffffff!important;text-decoration:none;background-color:#3b82f6;border-radius:40px;border:1px solid #3b82f6;letter-spacing:0.2px }
|
||||
|
||||
/* Fallback link */
|
||||
.email-link-box { background:linear-gradient(135deg,#eff4fd,#f5f7fe);border:1px solid rgba(59,130,246,0.1);border-radius:12px;padding:16px 18px;margin:24px 0 16px;box-shadow:inset 0 1px 0 rgba(255,255,255,0.9) }
|
||||
.email-link-box { background:linear-gradient(135deg,#eff4fd,#f5f7fe);border:1px solid #3b82f61a;border-radius:12px;padding:16px 18px;margin:24px 0 16px;box-shadow:inset 0 1px 0 #ffffffe6 }
|
||||
.email-link-label { margin:0 0 8px;font-size:13px;color:#64748b;line-height:1.5 }
|
||||
.email-link-url { margin:0;font-size:13px;color:#3b82f6;background:#ffffff;padding:10px 12px;border-radius:8px;border:1px solid rgba(0,0,0,0.06);word-break:break-all;font-family:monospace }
|
||||
.email-link-url { margin:0;font-size:13px;color:#3b82f6;background:#ffffff;padding:10px 12px;border-radius:8px;border:1px solid #0000000f;word-break:break-all;font-family:monospace }
|
||||
|
||||
/* Footer */
|
||||
.email-footer { padding:18px 32px 22px;background:linear-gradient(135deg,#f8f9fc,#f4f6fb);border-top:1px solid rgba(0,0,0,0.06);text-align:center }
|
||||
.email-footer { padding:18px 32px 22px;background:linear-gradient(135deg,#f8f9fc,#f4f6fb);border-top:1px solid #0000000f;text-align:center }
|
||||
.email-footer-text { margin:0;font-size:13px;color:#94a3b8 }
|
||||
.email-footer-link { color:#3b82f6;text-decoration:none;font-weight:500 }
|
||||
</style>
|
||||
|
||||
@@ -16,15 +16,15 @@
|
||||
/* Header */
|
||||
.email-logo { display:inline-block;margin:0 auto 8px;border:0;outline:none }
|
||||
.email-brand { margin:0;font-size:18px;font-weight:700;color:#1e293b;letter-spacing:-0.3px }
|
||||
.email-header { padding:28px 32px 18px;background:linear-gradient(135deg,#dbeafe,#e0e7ff,#e8f0fe);border-bottom:1px solid rgba(59,130,246,0.1);text-align:center }
|
||||
.email-header { padding:28px 32px 18px;background:linear-gradient(135deg,#dbeafe,#e0e7ff,#e8f0fe);border-bottom:1px solid #3b82f61a;text-align:center }
|
||||
|
||||
/* Card */
|
||||
.email-card { max-width:600px;margin:24px auto;background:#ffffff;border-radius:16px;box-shadow:0 2px 4px rgba(0,0,0,0.06),0 8px 24px rgba(0,0,0,0.06),0 0 0 1px rgba(0,0,0,0.04);overflow:hidden }
|
||||
.email-card { max-width:600px;margin:24px auto;background:#ffffff;border-radius:16px;box-shadow:0 2px 4px #0000000f,0 8px 24px #0000000f,0 0 0 1px #0000000a;overflow:hidden }
|
||||
.email-heading { font-size:17px;font-weight:600;color:#1e293b;margin:0 0 16px }
|
||||
|
||||
/* Content */
|
||||
.job-list { list-style:none;padding:0;margin:0 0 24px 0 }
|
||||
.job-item { background:linear-gradient(135deg,#f8faff,#f4f7fe);border:1px solid rgba(0,0,0,0.06);border-radius:10px;padding:12px 16px;margin-bottom:8px;box-shadow:inset 0 1px 0 rgba(255,255,255,0.7) }
|
||||
.job-item { background:linear-gradient(135deg,#f8faff,#f4f7fe);border:1px solid #0000000f;border-radius:10px;padding:12px 16px;margin-bottom:8px;box-shadow:inset 0 1px 0 #ffffffb3 }
|
||||
.job-link { color:#3b82f6;text-decoration:none;font-weight:500;font-size:14px;display:block }
|
||||
|
||||
/* Button */
|
||||
@@ -32,12 +32,12 @@
|
||||
.email-btn { display:inline-block;padding:14px 40px;font-size:15px;font-weight:600;color:#ffffff!important;text-decoration:none;background-color:#3b82f6;border-radius:40px;border:1px solid #3b82f6;letter-spacing:0.2px }
|
||||
|
||||
/* Fallback link */
|
||||
.email-link-box { background:linear-gradient(135deg,#eff4fd,#f5f7fe);border:1px solid rgba(59,130,246,0.1);border-radius:12px;padding:16px 18px;margin:24px 0 16px;box-shadow:inset 0 1px 0 rgba(255,255,255,0.9) }
|
||||
.email-link-box { background:linear-gradient(135deg,#eff4fd,#f5f7fe);border:1px solid #3b82f61a;border-radius:12px;padding:16px 18px;margin:24px 0 16px;box-shadow:inset 0 1px 0 #ffffffe6 }
|
||||
.email-link-label { margin:0 0 8px;font-size:13px;color:#64748b;line-height:1.5 }
|
||||
.email-link-url { margin:0;font-size:13px;color:#3b82f6;background:#ffffff;padding:10px 12px;border-radius:8px;border:1px solid rgba(0,0,0,0.06);word-break:break-all;font-family:monospace }
|
||||
.email-link-url { margin:0;font-size:13px;color:#3b82f6;background:#ffffff;padding:10px 12px;border-radius:8px;border:1px solid #0000000f;word-break:break-all;font-family:monospace }
|
||||
|
||||
/* Footer */
|
||||
.email-footer { padding:18px 32px 22px;background:linear-gradient(135deg,#f8f9fc,#f4f6fb);border-top:1px solid rgba(0,0,0,0.06);text-align:center }
|
||||
.email-footer { padding:18px 32px 22px;background:linear-gradient(135deg,#f8f9fc,#f4f6fb);border-top:1px solid #0000000f;text-align:center }
|
||||
.email-footer-text { margin:0;font-size:13px;color:#94a3b8 }
|
||||
.email-footer-link { color:#3b82f6;text-decoration:none;font-weight:500 }
|
||||
</style>
|
||||
|
||||
@@ -16,26 +16,26 @@
|
||||
/* Header */
|
||||
.email-logo { display:inline-block;margin:0 auto 8px;border:0;outline:none }
|
||||
.email-brand { margin:0;font-size:18px;font-weight:700;color:#1e293b;letter-spacing:-0.3px }
|
||||
.email-header { padding:28px 32px 18px;background:linear-gradient(135deg,#dbeafe,#e0e7ff,#e8f0fe);border-bottom:1px solid rgba(59,130,246,0.1);text-align:center }
|
||||
.email-header { padding:28px 32px 18px;background:linear-gradient(135deg,#dbeafe,#e0e7ff,#e8f0fe);border-bottom:1px solid #3b82f61a;text-align:center }
|
||||
|
||||
/* Card */
|
||||
.email-card { max-width:600px;margin:24px auto;background:#ffffff;border-radius:16px;box-shadow:0 2px 4px rgba(0,0,0,0.06),0 8px 24px rgba(0,0,0,0.06),0 0 0 1px rgba(0,0,0,0.04);overflow:hidden }
|
||||
.email-card { max-width:600px;margin:24px auto;background:#ffffff;border-radius:16px;box-shadow:0 2px 4px #0000000f,0 8px 24px #0000000f,0 0 0 1px #0000000a;overflow:hidden }
|
||||
.email-text { margin:0 0 20px;font-size:15px;line-height:1.6;color:#475569 }
|
||||
|
||||
/* Typography utilities */
|
||||
code { background:#eff4fd;padding:2px 8px;border-radius:5px;font-size:14px;color:#3b82f6;font-weight:500;border:1px solid rgba(59,130,246,0.12) }
|
||||
code { background:#eff4fd;padding:2px 8px;border-radius:5px;font-size:14px;color:#3b82f6;font-weight:500;border:1px solid #3b82f61f }
|
||||
|
||||
/* Button */
|
||||
.email-btn-row { margin:28px 0 24px;border-collapse:separate }
|
||||
.email-btn { display:inline-block;padding:14px 40px;font-size:15px;font-weight:600;color:#ffffff!important;text-decoration:none;background-color:#3b82f6;border-radius:40px;border:1px solid #3b82f6;letter-spacing:0.2px }
|
||||
|
||||
/* Fallback link */
|
||||
.email-link-box { background:linear-gradient(135deg,#eff4fd,#f5f7fe);border:1px solid rgba(59,130,246,0.1);border-radius:12px;padding:16px 18px;margin:24px 0 16px;box-shadow:inset 0 1px 0 rgba(255,255,255,0.9) }
|
||||
.email-link-box { background:linear-gradient(135deg,#eff4fd,#f5f7fe);border:1px solid #3b82f61a;border-radius:12px;padding:16px 18px;margin:24px 0 16px;box-shadow:inset 0 1px 0 #ffffffe6 }
|
||||
.email-link-label { margin:0 0 8px;font-size:13px;color:#64748b;line-height:1.5 }
|
||||
.email-link-url { margin:0;font-size:13px;color:#3b82f6;background:#ffffff;padding:10px 12px;border-radius:8px;border:1px solid rgba(0,0,0,0.06);word-break:break-all;font-family:monospace }
|
||||
.email-link-url { margin:0;font-size:13px;color:#3b82f6;background:#ffffff;padding:10px 12px;border-radius:8px;border:1px solid #0000000f;word-break:break-all;font-family:monospace }
|
||||
|
||||
/* Footer */
|
||||
.email-footer { padding:18px 32px 22px;background:linear-gradient(135deg,#f8f9fc,#f4f6fb);border-top:1px solid rgba(0,0,0,0.06);text-align:center }
|
||||
.email-footer { padding:18px 32px 22px;background:linear-gradient(135deg,#f8f9fc,#f4f6fb);border-top:1px solid #0000000f;text-align:center }
|
||||
.email-footer-text { margin:0;font-size:13px;color:#94a3b8 }
|
||||
.email-footer-link { color:#3b82f6;text-decoration:none;font-weight:500 }
|
||||
</style>
|
||||
|
||||
@@ -16,10 +16,10 @@
|
||||
/* Header */
|
||||
.email-logo { display:inline-block;margin:0 auto 8px;border:0;outline:none }
|
||||
.email-brand { margin:0;font-size:18px;font-weight:700;color:#1e293b;letter-spacing:-0.3px }
|
||||
.email-header { padding:28px 32px 18px;background:linear-gradient(135deg,#dbeafe,#e0e7ff,#e8f0fe);border-bottom:1px solid rgba(59,130,246,0.1);text-align:center }
|
||||
.email-header { padding:28px 32px 18px;background:linear-gradient(135deg,#dbeafe,#e0e7ff,#e8f0fe);border-bottom:1px solid #3b82f61a;text-align:center }
|
||||
|
||||
/* Card */
|
||||
.email-card { max-width:600px;margin:24px auto;background:#ffffff;border-radius:16px;box-shadow:0 2px 4px rgba(0,0,0,0.06),0 8px 24px rgba(0,0,0,0.06),0 0 0 1px rgba(0,0,0,0.04);overflow:hidden }
|
||||
.email-card { max-width:600px;margin:24px auto;background:#ffffff;border-radius:16px;box-shadow:0 2px 4px #0000000f,0 8px 24px #0000000f,0 0 0 1px #0000000a;overflow:hidden }
|
||||
.email-text { margin:0 0 20px;font-size:15px;line-height:1.6;color:#475569 }
|
||||
|
||||
/* Button */
|
||||
@@ -27,12 +27,12 @@
|
||||
.email-btn { display:inline-block;padding:14px 40px;font-size:15px;font-weight:600;color:#ffffff!important;text-decoration:none;background-color:#3b82f6;border-radius:40px;border:1px solid #3b82f6;letter-spacing:0.2px }
|
||||
|
||||
/* Fallback link */
|
||||
.email-link-box { background:linear-gradient(135deg,#eff4fd,#f5f7fe);border:1px solid rgba(59,130,246,0.1);border-radius:12px;padding:16px 18px;margin:24px 0 16px;box-shadow:inset 0 1px 0 rgba(255,255,255,0.9) }
|
||||
.email-link-box { background:linear-gradient(135deg,#eff4fd,#f5f7fe);border:1px solid #3b82f61a;border-radius:12px;padding:16px 18px;margin:24px 0 16px;box-shadow:inset 0 1px 0 #ffffffe6 }
|
||||
.email-link-label { margin:0 0 8px;font-size:13px;color:#64748b;line-height:1.5 }
|
||||
.email-link-url { margin:0;font-size:13px;color:#3b82f6;background:#ffffff;padding:10px 12px;border-radius:8px;border:1px solid rgba(0,0,0,0.06);word-break:break-all;font-family:monospace }
|
||||
.email-link-url { margin:0;font-size:13px;color:#3b82f6;background:#ffffff;padding:10px 12px;border-radius:8px;border:1px solid #0000000f;word-break:break-all;font-family:monospace }
|
||||
|
||||
/* Footer */
|
||||
.email-footer { padding:18px 32px 22px;background:linear-gradient(135deg,#f8f9fc,#f4f6fb);border-top:1px solid rgba(0,0,0,0.06);text-align:center }
|
||||
.email-footer { padding:18px 32px 22px;background:linear-gradient(135deg,#f8f9fc,#f4f6fb);border-top:1px solid #0000000f;text-align:center }
|
||||
.email-footer-text { margin:0;font-size:13px;color:#94a3b8 }
|
||||
.email-footer-link { color:#3b82f6;text-decoration:none;font-weight:500 }
|
||||
</style>
|
||||
|
||||
@@ -16,16 +16,16 @@
|
||||
/* Header */
|
||||
.email-logo { display:inline-block;margin:0 auto 8px;border:0;outline:none }
|
||||
.email-brand { margin:0;font-size:18px;font-weight:700;color:#1e293b;letter-spacing:-0.3px }
|
||||
.email-header { padding:28px 32px 18px;background:linear-gradient(135deg,#dbeafe,#e0e7ff,#e8f0fe);border-bottom:1px solid rgba(59,130,246,0.1);text-align:center }
|
||||
.email-header { padding:28px 32px 18px;background:linear-gradient(135deg,#dbeafe,#e0e7ff,#e8f0fe);border-bottom:1px solid #3b82f61a;text-align:center }
|
||||
|
||||
/* Card */
|
||||
.email-card { max-width:600px;margin:24px auto;background:#ffffff;border-radius:16px;box-shadow:0 2px 4px rgba(0,0,0,0.06),0 8px 24px rgba(0,0,0,0.06),0 0 0 1px rgba(0,0,0,0.04);overflow:hidden }
|
||||
.email-card { max-width:600px;margin:24px auto;background:#ffffff;border-radius:16px;box-shadow:0 2px 4px #0000000f,0 8px 24px #0000000f,0 0 0 1px #0000000a;overflow:hidden }
|
||||
.email-text { margin:0 0 16px;font-size:15px;line-height:1.6;color:#475569 }
|
||||
|
||||
/* Content */
|
||||
blockquote { padding-left:1em;margin:1em 0;border-left:2px solid #dbeafe;color:#64748b }
|
||||
pre { background:#eff4fd;padding:12px;border-radius:8px;overflow-x:auto;font-size:13px;line-height:1.5;border:1px solid rgba(0,0,0,0.06) }
|
||||
hr { border:none;border-top:1px solid rgba(0,0,0,0.06);margin:20px 0 }
|
||||
pre { background:#eff4fd;padding:12px;border-radius:8px;overflow-x:auto;font-size:13px;line-height:1.5;border:1px solid #0000000f }
|
||||
hr { border:none;border-top:1px solid #0000000f;margin:20px 0 }
|
||||
.review-path { margin:8px 0;font-size:13px;color:#64748b }
|
||||
.review-content { padding-left:1em;margin:1em 0 }
|
||||
.review-body { margin-top:8px;font-size:14px;line-height:1.6 }
|
||||
@@ -38,12 +38,12 @@
|
||||
.email-btn { display:inline-block;padding:14px 40px;font-size:15px;font-weight:600;color:#ffffff!important;text-decoration:none;background-color:#3b82f6;border-radius:40px;border:1px solid #3b82f6;letter-spacing:0.2px }
|
||||
|
||||
/* Fallback link */
|
||||
.email-link-box { background:linear-gradient(135deg,#eff4fd,#f5f7fe);border:1px solid rgba(59,130,246,0.1);border-radius:12px;padding:16px 18px;margin:24px 0 16px;box-shadow:inset 0 1px 0 rgba(255,255,255,0.9) }
|
||||
.email-link-box { background:linear-gradient(135deg,#eff4fd,#f5f7fe);border:1px solid #3b82f61a;border-radius:12px;padding:16px 18px;margin:24px 0 16px;box-shadow:inset 0 1px 0 #ffffffe6 }
|
||||
.email-link-label { margin:0 0 8px;font-size:13px;color:#64748b;line-height:1.5 }
|
||||
.email-link-url { margin:0;font-size:13px;color:#3b82f6;background:#ffffff;padding:10px 12px;border-radius:8px;border:1px solid rgba(0,0,0,0.06);word-break:break-all;font-family:monospace }
|
||||
.email-link-url { margin:0;font-size:13px;color:#3b82f6;background:#ffffff;padding:10px 12px;border-radius:8px;border:1px solid #0000000f;word-break:break-all;font-family:monospace }
|
||||
|
||||
/* Footer */
|
||||
.email-footer { padding:18px 32px 22px;background:linear-gradient(135deg,#f8f9fc,#f4f6fb);border-top:1px solid rgba(0,0,0,0.06);text-align:center }
|
||||
.email-footer { padding:18px 32px 22px;background:linear-gradient(135deg,#f8f9fc,#f4f6fb);border-top:1px solid #0000000f;text-align:center }
|
||||
.email-footer-text { margin:0;font-size:13px;color:#94a3b8 }
|
||||
.email-footer-link { color:#3b82f6;text-decoration:none;font-weight:500 }
|
||||
</style>
|
||||
@@ -124,9 +124,9 @@
|
||||
<ul class="commit-list">
|
||||
{{range .Comment.Commits}}
|
||||
<li class="commit-item">
|
||||
<a href="{{$.Comment.Issue.PullRequest.BaseRepo.HTMLURL}}/commit/{{.ID}}" class="commit-link">
|
||||
{{ShortSha .ID.String}}
|
||||
</a> — {{.MessageTitle}}
|
||||
<a href="{{$.Comment.Issue.PullRequest.BaseRepo.HTMLURL}}/commit/{{.UserCommit.GitCommit.ID}}" class="commit-link">
|
||||
{{ShortSha .UserCommit.GitCommit.ID.String}}
|
||||
</a> — {{.UserCommit.GitCommit.MessageTitle}}
|
||||
</li>
|
||||
{{end}}
|
||||
</ul>
|
||||
|
||||
@@ -16,10 +16,10 @@
|
||||
/* Header */
|
||||
.email-logo { display:inline-block;margin:0 auto 8px;border:0;outline:none }
|
||||
.email-brand { margin:0;font-size:18px;font-weight:700;color:#1e293b;letter-spacing:-0.3px }
|
||||
.email-header { padding:28px 32px 18px;background:linear-gradient(135deg,#dbeafe,#e0e7ff,#e8f0fe);border-bottom:1px solid rgba(59,130,246,0.1);text-align:center }
|
||||
.email-header { padding:28px 32px 18px;background:linear-gradient(135deg,#dbeafe,#e0e7ff,#e8f0fe);border-bottom:1px solid #3b82f61a;text-align:center }
|
||||
|
||||
/* Card */
|
||||
.email-card { max-width:600px;margin:24px auto;background:#ffffff;border-radius:16px;box-shadow:0 2px 4px rgba(0,0,0,0.06),0 8px 24px rgba(0,0,0,0.06),0 0 0 1px rgba(0,0,0,0.04);overflow:hidden }
|
||||
.email-card { max-width:600px;margin:24px auto;background:#ffffff;border-radius:16px;box-shadow:0 2px 4px #0000000f,0 8px 24px #0000000f,0 0 0 1px #0000000a;overflow:hidden }
|
||||
.email-heading { margin:20px 0 8px;font-size:17px;font-weight:600;color:#1e293b }
|
||||
.email-subheading { margin:20px 0 8px;font-weight:600;color:#1e293b }
|
||||
.email-text { margin:0 0 16px;font-size:15px;line-height:1.6;color:#475569 }
|
||||
@@ -35,12 +35,12 @@
|
||||
.email-btn { display:inline-block;padding:14px 40px;font-size:15px;font-weight:600;color:#ffffff!important;text-decoration:none;background-color:#3b82f6;border-radius:40px;border:1px solid #3b82f6;letter-spacing:0.2px }
|
||||
|
||||
/* Fallback link */
|
||||
.email-link-box { background:linear-gradient(135deg,#eff4fd,#f5f7fe);border:1px solid rgba(59,130,246,0.1);border-radius:12px;padding:16px 18px;margin:24px 0 16px;box-shadow:inset 0 1px 0 rgba(255,255,255,0.9) }
|
||||
.email-link-box { background:linear-gradient(135deg,#eff4fd,#f5f7fe);border:1px solid #3b82f61a;border-radius:12px;padding:16px 18px;margin:24px 0 16px;box-shadow:inset 0 1px 0 #ffffffe6 }
|
||||
.email-link-label { margin:0 0 8px;font-size:13px;color:#64748b;line-height:1.5 }
|
||||
.email-link-url { margin:0;font-size:13px;color:#3b82f6;background:#ffffff;padding:10px 12px;border-radius:8px;border:1px solid rgba(0,0,0,0.06);word-break:break-all;font-family:monospace }
|
||||
.email-link-url { margin:0;font-size:13px;color:#3b82f6;background:#ffffff;padding:10px 12px;border-radius:8px;border:1px solid #0000000f;word-break:break-all;font-family:monospace }
|
||||
|
||||
/* Footer */
|
||||
.email-footer { padding:18px 32px 22px;background:linear-gradient(135deg,#f8f9fc,#f4f6fb);border-top:1px solid rgba(0,0,0,0.06);text-align:center }
|
||||
.email-footer { padding:18px 32px 22px;background:linear-gradient(135deg,#f8f9fc,#f4f6fb);border-top:1px solid #0000000f;text-align:center }
|
||||
.email-footer-text { margin:0;font-size:13px;color:#94a3b8 }
|
||||
.email-footer-link { color:#3b82f6;text-decoration:none;font-weight:500 }
|
||||
</style>
|
||||
|
||||
@@ -16,10 +16,10 @@
|
||||
/* Header */
|
||||
.email-logo { display:inline-block;margin:0 auto 8px;border:0;outline:none }
|
||||
.email-brand { margin:0;font-size:18px;font-weight:700;color:#1e293b;letter-spacing:-0.3px }
|
||||
.email-header { padding:28px 32px 18px;background:linear-gradient(135deg,#dbeafe,#e0e7ff,#e8f0fe);border-bottom:1px solid rgba(59,130,246,0.1);text-align:center }
|
||||
.email-header { padding:28px 32px 18px;background:linear-gradient(135deg,#dbeafe,#e0e7ff,#e8f0fe);border-bottom:1px solid #3b82f61a;text-align:center }
|
||||
|
||||
/* Card */
|
||||
.email-card { max-width:600px;margin:24px auto;background:#ffffff;border-radius:16px;box-shadow:0 2px 4px rgba(0,0,0,0.06),0 8px 24px rgba(0,0,0,0.06),0 0 0 1px rgba(0,0,0,0.04);overflow:hidden }
|
||||
.email-card { max-width:600px;margin:24px auto;background:#ffffff;border-radius:16px;box-shadow:0 2px 4px #0000000f,0 8px 24px #0000000f,0 0 0 1px #0000000a;overflow:hidden }
|
||||
.email-text { margin:0 0 20px;font-size:15px;line-height:1.6;color:#475569 }
|
||||
|
||||
/* Button */
|
||||
@@ -27,12 +27,12 @@
|
||||
.email-btn { display:inline-block;padding:14px 40px;font-size:15px;font-weight:600;color:#ffffff!important;text-decoration:none;background-color:#3b82f6;border-radius:40px;border:1px solid #3b82f6;letter-spacing:0.2px }
|
||||
|
||||
/* Fallback link */
|
||||
.email-link-box { background:linear-gradient(135deg,#eff4fd,#f5f7fe);border:1px solid rgba(59,130,246,0.1);border-radius:12px;padding:16px 18px;margin:24px 0 16px;box-shadow:inset 0 1px 0 rgba(255,255,255,0.9) }
|
||||
.email-link-box { background:linear-gradient(135deg,#eff4fd,#f5f7fe);border:1px solid #3b82f61a;border-radius:12px;padding:16px 18px;margin:24px 0 16px;box-shadow:inset 0 1px 0 #ffffffe6 }
|
||||
.email-link-label { margin:0 0 8px;font-size:13px;color:#64748b;line-height:1.5 }
|
||||
.email-link-url { margin:0;font-size:13px;color:#3b82f6;background:#ffffff;padding:10px 12px;border-radius:8px;border:1px solid rgba(0,0,0,0.06);word-break:break-all;font-family:monospace }
|
||||
.email-link-url { margin:0;font-size:13px;color:#3b82f6;background:#ffffff;padding:10px 12px;border-radius:8px;border:1px solid #0000000f;word-break:break-all;font-family:monospace }
|
||||
|
||||
/* Footer */
|
||||
.email-footer { padding:18px 32px 22px;background:linear-gradient(135deg,#f8f9fc,#f4f6fb);border-top:1px solid rgba(0,0,0,0.06);text-align:center }
|
||||
.email-footer { padding:18px 32px 22px;background:linear-gradient(135deg,#f8f9fc,#f4f6fb);border-top:1px solid #0000000f;text-align:center }
|
||||
.email-footer-text { margin:0;font-size:13px;color:#94a3b8 }
|
||||
.email-footer-link { color:#3b82f6;text-decoration:none;font-weight:500 }
|
||||
</style>
|
||||
|
||||
@@ -16,10 +16,10 @@
|
||||
/* Header */
|
||||
.email-logo { display:inline-block;margin:0 auto 8px;border:0;outline:none }
|
||||
.email-brand { margin:0;font-size:18px;font-weight:700;color:#1e293b;letter-spacing:-0.3px }
|
||||
.email-header { padding:28px 32px 18px;background:linear-gradient(135deg,#dbeafe,#e0e7ff,#e8f0fe);border-bottom:1px solid rgba(59,130,246,0.1);text-align:center }
|
||||
.email-header { padding:28px 32px 18px;background:linear-gradient(135deg,#dbeafe,#e0e7ff,#e8f0fe);border-bottom:1px solid #3b82f61a;text-align:center }
|
||||
|
||||
/* Card */
|
||||
.email-card { max-width:600px;margin:24px auto;background:#ffffff;border-radius:16px;box-shadow:0 2px 4px rgba(0,0,0,0.06),0 8px 24px rgba(0,0,0,0.06),0 0 0 1px rgba(0,0,0,0.04);overflow:hidden }
|
||||
.email-card { max-width:600px;margin:24px auto;background:#ffffff;border-radius:16px;box-shadow:0 2px 4px #0000000f,0 8px 24px #0000000f,0 0 0 1px #0000000a;overflow:hidden }
|
||||
.email-heading { margin:0 0 12px;font-size:17px;line-height:1.5;color:#1e293b;font-weight:600 }
|
||||
.email-text { margin:0 0 8px;font-size:15px;line-height:1.6;color:#475569 }
|
||||
.email-subtext { margin:0 0 20px;font-size:14px;line-height:1.6;color:#64748b }
|
||||
@@ -29,12 +29,12 @@
|
||||
.email-btn { display:inline-block;padding:14px 40px;font-size:15px;font-weight:600;color:#ffffff!important;text-decoration:none;background-color:#3b82f6;border-radius:40px;border:1px solid #3b82f6;letter-spacing:0.2px }
|
||||
|
||||
/* Fallback link */
|
||||
.email-link-box { background:linear-gradient(135deg,#eff4fd,#f5f7fe);border:1px solid rgba(59,130,246,0.1);border-radius:12px;padding:16px 18px;margin:24px 0 16px;box-shadow:inset 0 1px 0 rgba(255,255,255,0.9) }
|
||||
.email-link-box { background:linear-gradient(135deg,#eff4fd,#f5f7fe);border:1px solid #3b82f61a;border-radius:12px;padding:16px 18px;margin:24px 0 16px;box-shadow:inset 0 1px 0 #ffffffe6 }
|
||||
.email-link-label { margin:0 0 8px;font-size:13px;color:#64748b;line-height:1.5 }
|
||||
.email-link-url { margin:0;font-size:13px;color:#3b82f6;background:#ffffff;padding:10px 12px;border-radius:8px;border:1px solid rgba(0,0,0,0.06);word-break:break-all;font-family:monospace }
|
||||
.email-link-url { margin:0;font-size:13px;color:#3b82f6;background:#ffffff;padding:10px 12px;border-radius:8px;border:1px solid #0000000f;word-break:break-all;font-family:monospace }
|
||||
|
||||
/* Footer */
|
||||
.email-footer { padding:18px 32px 22px;background:linear-gradient(135deg,#f8f9fc,#f4f6fb);border-top:1px solid rgba(0,0,0,0.06);text-align:center }
|
||||
.email-footer { padding:18px 32px 22px;background:linear-gradient(135deg,#f8f9fc,#f4f6fb);border-top:1px solid #0000000f;text-align:center }
|
||||
.email-footer-text { margin:0;font-size:13px;color:#94a3b8 }
|
||||
.email-footer-link { color:#3b82f6;text-decoration:none;font-weight:500 }
|
||||
</style>
|
||||
|
||||
@@ -16,10 +16,10 @@
|
||||
/* Header */
|
||||
.email-logo { display:inline-block;margin:0 auto 8px;border:0;outline:none }
|
||||
.email-brand { margin:0;font-size:18px;font-weight:700;color:#1e293b;letter-spacing:-0.3px }
|
||||
.email-header { padding:28px 32px 18px;background:linear-gradient(135deg,#dbeafe,#e0e7ff,#e8f0fe);border-bottom:1px solid rgba(59,130,246,0.1);text-align:center }
|
||||
.email-header { padding:28px 32px 18px;background:linear-gradient(135deg,#dbeafe,#e0e7ff,#e8f0fe);border-bottom:1px solid #3b82f61a;text-align:center }
|
||||
|
||||
/* Card */
|
||||
.email-card { max-width:600px;margin:24px auto;background:#ffffff;border-radius:16px;box-shadow:0 2px 4px rgba(0,0,0,0.06),0 8px 24px rgba(0,0,0,0.06),0 0 0 1px rgba(0,0,0,0.04);overflow:hidden }
|
||||
.email-card { max-width:600px;margin:24px auto;background:#ffffff;border-radius:16px;box-shadow:0 2px 4px #0000000f,0 8px 24px #0000000f,0 0 0 1px #0000000a;overflow:hidden }
|
||||
.email-heading { margin:0 0 12px;font-size:17px;line-height:1.5;color:#1e293b;font-weight:600 }
|
||||
.email-text { margin:0 0 20px;font-size:15px;line-height:1.6;color:#475569 }
|
||||
|
||||
@@ -28,12 +28,12 @@
|
||||
.email-btn { display:inline-block;padding:14px 40px;font-size:15px;font-weight:600;color:#ffffff!important;text-decoration:none;background-color:#3b82f6;border-radius:40px;border:1px solid #3b82f6;letter-spacing:0.2px }
|
||||
|
||||
/* Fallback link */
|
||||
.email-link-box { background:linear-gradient(135deg,#eff4fd,#f5f7fe);border:1px solid rgba(59,130,246,0.1);border-radius:12px;padding:16px 18px;margin:24px 0 16px;box-shadow:inset 0 1px 0 rgba(255,255,255,0.9) }
|
||||
.email-link-box { background:linear-gradient(135deg,#eff4fd,#f5f7fe);border:1px solid #3b82f61a;border-radius:12px;padding:16px 18px;margin:24px 0 16px;box-shadow:inset 0 1px 0 #ffffffe6 }
|
||||
.email-link-label { margin:0 0 8px;font-size:13px;color:#64748b;line-height:1.5 }
|
||||
.email-link-url { margin:0;font-size:13px;color:#3b82f6;background:#ffffff;padding:10px 12px;border-radius:8px;border:1px solid rgba(0,0,0,0.06);word-break:break-all;font-family:monospace }
|
||||
.email-link-url { margin:0;font-size:13px;color:#3b82f6;background:#ffffff;padding:10px 12px;border-radius:8px;border:1px solid #0000000f;word-break:break-all;font-family:monospace }
|
||||
|
||||
/* Footer */
|
||||
.email-footer { padding:18px 32px 22px;background:linear-gradient(135deg,#f8f9fc,#f4f6fb);border-top:1px solid rgba(0,0,0,0.06);text-align:center }
|
||||
.email-footer { padding:18px 32px 22px;background:linear-gradient(135deg,#f8f9fc,#f4f6fb);border-top:1px solid #0000000f;text-align:center }
|
||||
.email-footer-text { margin:0;font-size:13px;color:#94a3b8 }
|
||||
.email-footer-link { color:#3b82f6;text-decoration:none;font-weight:500 }
|
||||
</style>
|
||||
|
||||
@@ -16,10 +16,10 @@
|
||||
/* Header */
|
||||
.email-logo { display:inline-block;margin:0 auto 8px;border:0;outline:none }
|
||||
.email-brand { margin:0;font-size:18px;font-weight:700;color:#1e293b;letter-spacing:-0.3px }
|
||||
.email-header { padding:28px 32px 18px;background:linear-gradient(135deg,#dbeafe,#e0e7ff,#e8f0fe);border-bottom:1px solid rgba(59,130,246,0.1);text-align:center }
|
||||
.email-header { padding:28px 32px 18px;background:linear-gradient(135deg,#dbeafe,#e0e7ff,#e8f0fe);border-bottom:1px solid #3b82f61a;text-align:center }
|
||||
|
||||
/* Card */
|
||||
.email-card { max-width:600px;margin:24px auto;background:#ffffff;border-radius:16px;box-shadow:0 2px 4px rgba(0,0,0,0.06),0 8px 24px rgba(0,0,0,0.06),0 0 0 1px rgba(0,0,0,0.04);overflow:hidden }
|
||||
.email-card { max-width:600px;margin:24px auto;background:#ffffff;border-radius:16px;box-shadow:0 2px 4px #0000000f,0 8px 24px #0000000f,0 0 0 1px #0000000a;overflow:hidden }
|
||||
.email-heading { margin:0 0 12px;font-size:17px;line-height:1.5;color:#1e293b;font-weight:600 }
|
||||
.email-text { margin:0 0 8px;font-size:15px;line-height:1.6;color:#475569 }
|
||||
.email-subtext { margin:0 0 20px;font-size:14px;line-height:1.6;color:#64748b }
|
||||
@@ -29,12 +29,12 @@
|
||||
.email-btn { display:inline-block;padding:14px 40px;font-size:15px;font-weight:600;color:#ffffff!important;text-decoration:none;background-color:#3b82f6;border-radius:40px;border:1px solid #3b82f6;letter-spacing:0.2px }
|
||||
|
||||
/* Fallback link */
|
||||
.email-link-box { background:linear-gradient(135deg,#eff4fd,#f5f7fe);border:1px solid rgba(59,130,246,0.1);border-radius:12px;padding:16px 18px;margin:24px 0 16px;box-shadow:inset 0 1px 0 rgba(255,255,255,0.9) }
|
||||
.email-link-box { background:linear-gradient(135deg,#eff4fd,#f5f7fe);border:1px solid #3b82f61a;border-radius:12px;padding:16px 18px;margin:24px 0 16px;box-shadow:inset 0 1px 0 #ffffffe6 }
|
||||
.email-link-label { margin:0 0 8px;font-size:13px;color:#64748b;line-height:1.5 }
|
||||
.email-link-url { margin:0;font-size:13px;color:#3b82f6;background:#ffffff;padding:10px 12px;border-radius:8px;border:1px solid rgba(0,0,0,0.06);word-break:break-all;font-family:monospace }
|
||||
.email-link-url { margin:0;font-size:13px;color:#3b82f6;background:#ffffff;padding:10px 12px;border-radius:8px;border:1px solid #0000000f;word-break:break-all;font-family:monospace }
|
||||
|
||||
/* Footer */
|
||||
.email-footer { padding:18px 32px 22px;background:linear-gradient(135deg,#f8f9fc,#f4f6fb);border-top:1px solid rgba(0,0,0,0.06);text-align:center }
|
||||
.email-footer { padding:18px 32px 22px;background:linear-gradient(135deg,#f8f9fc,#f4f6fb);border-top:1px solid #0000000f;text-align:center }
|
||||
.email-footer-text { margin:0;font-size:13px;color:#94a3b8 }
|
||||
.email-footer-link { color:#3b82f6;text-decoration:none;font-weight:500 }
|
||||
</style>
|
||||
|
||||
@@ -16,10 +16,10 @@
|
||||
/* Header */
|
||||
.email-logo { display:inline-block;margin:0 auto 8px;border:0;outline:none }
|
||||
.email-brand { margin:0;font-size:18px;font-weight:700;color:#1e293b;letter-spacing:-0.3px }
|
||||
.email-header { padding:28px 32px 18px;background:linear-gradient(135deg,#dbeafe,#e0e7ff,#e8f0fe);border-bottom:1px solid rgba(59,130,246,0.1);text-align:center }
|
||||
.email-header { padding:28px 32px 18px;background:linear-gradient(135deg,#dbeafe,#e0e7ff,#e8f0fe);border-bottom:1px solid #3b82f61a;text-align:center }
|
||||
|
||||
/* Card */
|
||||
.email-card { max-width:600px;margin:24px auto;background:#ffffff;border-radius:16px;box-shadow:0 2px 4px rgba(0,0,0,0.06),0 8px 24px rgba(0,0,0,0.06),0 0 0 1px rgba(0,0,0,0.04);overflow:hidden }
|
||||
.email-card { max-width:600px;margin:24px auto;background:#ffffff;border-radius:16px;box-shadow:0 2px 4px #0000000f,0 8px 24px #0000000f,0 0 0 1px #0000000a;overflow:hidden }
|
||||
.email-heading { margin:0 0 12px;font-size:17px;line-height:1.5;color:#1e293b;font-weight:600 }
|
||||
.email-text { margin:0 0 20px;font-size:15px;line-height:1.6;color:#475569 }
|
||||
|
||||
@@ -28,12 +28,12 @@
|
||||
.email-btn { display:inline-block;padding:14px 40px;font-size:15px;font-weight:600;color:#ffffff!important;text-decoration:none;background-color:#3b82f6;border-radius:40px;border:1px solid #3b82f6;letter-spacing:0.2px }
|
||||
|
||||
/* Fallback link */
|
||||
.email-link-box { background:linear-gradient(135deg,#eff4fd,#f5f7fe);border:1px solid rgba(59,130,246,0.1);border-radius:12px;padding:16px 18px;margin:24px 0 16px;box-shadow:inset 0 1px 0 rgba(255,255,255,0.9) }
|
||||
.email-link-box { background:linear-gradient(135deg,#eff4fd,#f5f7fe);border:1px solid #3b82f61a;border-radius:12px;padding:16px 18px;margin:24px 0 16px;box-shadow:inset 0 1px 0 #ffffffe6 }
|
||||
.email-link-label { margin:0 0 8px;font-size:13px;color:#64748b;line-height:1.5 }
|
||||
.email-link-url { margin:0;font-size:13px;color:#3b82f6;background:#ffffff;padding:10px 12px;border-radius:8px;border:1px solid rgba(0,0,0,0.06);word-break:break-all;font-family:monospace }
|
||||
.email-link-url { margin:0;font-size:13px;color:#3b82f6;background:#ffffff;padding:10px 12px;border-radius:8px;border:1px solid #0000000f;word-break:break-all;font-family:monospace }
|
||||
|
||||
/* Footer */
|
||||
.email-footer { padding:18px 32px 22px;background:linear-gradient(135deg,#f8f9fc,#f4f6fb);border-top:1px solid rgba(0,0,0,0.06);text-align:center }
|
||||
.email-footer { padding:18px 32px 22px;background:linear-gradient(135deg,#f8f9fc,#f4f6fb);border-top:1px solid #0000000f;text-align:center }
|
||||
.email-footer-text { margin:0;font-size:13px;color:#94a3b8 }
|
||||
.email-footer-link { color:#3b82f6;text-decoration:none;font-weight:500 }
|
||||
</style>
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
.email-header { padding:28px 32px 16px;border-bottom:1px solid #fed7aa;background:linear-gradient(135deg,#fff7ed,#ffffff) }
|
||||
|
||||
/* Card */
|
||||
.email-card { max-width:600px;margin:20px auto;background:#ffffff;border-radius:16px;box-shadow:0 2px 16px rgba(234,88,12,0.08);overflow:hidden;border:1px solid #fed7aa }
|
||||
.email-card { max-width:600px;margin:20px auto;background:#ffffff;border-radius:16px;box-shadow:0 2px 16px #ea580c14;overflow:hidden;border:1px solid #fed7aa }
|
||||
.email-heading { margin:0 0 12px;font-size:17px;line-height:1.5;color:#9a3412;font-family:Georgia,'Times New Roman',serif;font-weight:600 }
|
||||
.email-text { margin:0 0 8px;font-size:16px;line-height:1.6;color:#78350f }
|
||||
.email-subtext { margin:0 0 20px;font-size:15px;line-height:1.6;color:#92400e }
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
.email-header { padding:28px 32px 16px;border-bottom:1px solid #fed7aa;background:linear-gradient(135deg,#fff7ed,#ffffff) }
|
||||
|
||||
/* Card */
|
||||
.email-card { max-width:600px;margin:20px auto;background:#ffffff;border-radius:16px;box-shadow:0 2px 16px rgba(234,88,12,0.08);overflow:hidden;border:1px solid #fed7aa }
|
||||
.email-card { max-width:600px;margin:20px auto;background:#ffffff;border-radius:16px;box-shadow:0 2px 16px #ea580c14;overflow:hidden;border:1px solid #fed7aa }
|
||||
.email-heading { font-size:19px;font-weight:700;color:#9a3412;margin:0 0 16px;font-family:Georgia,'Times New Roman',serif }
|
||||
|
||||
/* Content */
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
.email-header { padding:28px 32px 16px;border-bottom:1px solid #fed7aa;background:linear-gradient(135deg,#fff7ed,#ffffff) }
|
||||
|
||||
/* Card */
|
||||
.email-card { max-width:600px;margin:20px auto;background:#ffffff;border-radius:16px;box-shadow:0 2px 16px rgba(234,88,12,0.08);overflow:hidden;border:1px solid #fed7aa }
|
||||
.email-card { max-width:600px;margin:20px auto;background:#ffffff;border-radius:16px;box-shadow:0 2px 16px #ea580c14;overflow:hidden;border:1px solid #fed7aa }
|
||||
.email-text { margin:0 0 20px;font-size:16px;line-height:1.6;color:#78350f }
|
||||
|
||||
/* Typography utilities */
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
.email-header { padding:28px 32px 16px;border-bottom:1px solid #fed7aa;background:linear-gradient(135deg,#fff7ed,#ffffff) }
|
||||
|
||||
/* Card */
|
||||
.email-card { max-width:600px;margin:20px auto;background:#ffffff;border-radius:16px;box-shadow:0 2px 16px rgba(234,88,12,0.08);overflow:hidden;border:1px solid #fed7aa }
|
||||
.email-card { max-width:600px;margin:20px auto;background:#ffffff;border-radius:16px;box-shadow:0 2px 16px #ea580c14;overflow:hidden;border:1px solid #fed7aa }
|
||||
.email-text { margin:0 0 20px;font-size:16px;line-height:1.6;color:#78350f }
|
||||
|
||||
/* Button */
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
.email-header { padding:28px 32px 16px;border-bottom:1px solid #fed7aa;background:linear-gradient(135deg,#fff7ed,#ffffff) }
|
||||
|
||||
/* Card */
|
||||
.email-card { max-width:600px;margin:20px auto;background:#ffffff;border-radius:16px;box-shadow:0 2px 16px rgba(234,88,12,0.08);overflow:hidden;border:1px solid #fed7aa }
|
||||
.email-card { max-width:600px;margin:20px auto;background:#ffffff;border-radius:16px;box-shadow:0 2px 16px #ea580c14;overflow:hidden;border:1px solid #fed7aa }
|
||||
.email-text { margin:0 0 16px;font-size:16px;line-height:1.6;color:#78350f }
|
||||
|
||||
/* Content */
|
||||
@@ -129,9 +129,9 @@
|
||||
<ul class="commit-list">
|
||||
{{range .Comment.Commits}}
|
||||
<li class="commit-item">
|
||||
<a href="{{$.Comment.Issue.PullRequest.BaseRepo.HTMLURL}}/commit/{{.ID}}" class="commit-link">
|
||||
{{ShortSha .ID.String}}
|
||||
</a> — {{.MessageTitle}}
|
||||
<a href="{{$.Comment.Issue.PullRequest.BaseRepo.HTMLURL}}/commit/{{.UserCommit.GitCommit.ID}}" class="commit-link">
|
||||
{{ShortSha .UserCommit.GitCommit.ID.String}}
|
||||
</a> — {{.UserCommit.GitCommit.MessageTitle}}
|
||||
</li>
|
||||
{{end}}
|
||||
</ul>
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
.email-header { padding:28px 32px 16px;border-bottom:1px solid #fed7aa;background:linear-gradient(135deg,#fff7ed,#ffffff) }
|
||||
|
||||
/* Card */
|
||||
.email-card { max-width:600px;margin:20px auto;background:#ffffff;border-radius:16px;box-shadow:0 2px 16px rgba(234,88,12,0.08);overflow:hidden;border:1px solid #fed7aa }
|
||||
.email-card { max-width:600px;margin:20px auto;background:#ffffff;border-radius:16px;box-shadow:0 2px 16px #ea580c14;overflow:hidden;border:1px solid #fed7aa }
|
||||
.email-heading { margin:20px 0 8px;font-size:19px;font-weight:700;color:#9a3412;font-family:Georgia,'Times New Roman',serif }
|
||||
.email-subheading { margin:20px 0 8px;font-weight:600;color:#9a3412 }
|
||||
.email-text { margin:0 0 16px;font-size:16px;line-height:1.6;color:#78350f }
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
.email-header { padding:28px 32px 16px;border-bottom:1px solid #fed7aa;background:linear-gradient(135deg,#fff7ed,#ffffff) }
|
||||
|
||||
/* Card */
|
||||
.email-card { max-width:600px;margin:20px auto;background:#ffffff;border-radius:16px;box-shadow:0 2px 16px rgba(234,88,12,0.08);overflow:hidden;border:1px solid #fed7aa }
|
||||
.email-card { max-width:600px;margin:20px auto;background:#ffffff;border-radius:16px;box-shadow:0 2px 16px #ea580c14;overflow:hidden;border:1px solid #fed7aa }
|
||||
.email-text { margin:0 0 20px;font-size:16px;line-height:1.6;color:#78350f }
|
||||
|
||||
/* Button */
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
.email-header { padding:28px 32px 16px;border-bottom:1px solid #fed7aa;background:linear-gradient(135deg,#fff7ed,#ffffff) }
|
||||
|
||||
/* Card */
|
||||
.email-card { max-width:600px;margin:20px auto;background:#ffffff;border-radius:16px;box-shadow:0 2px 16px rgba(234,88,12,0.08);overflow:hidden;border:1px solid #fed7aa }
|
||||
.email-card { max-width:600px;margin:20px auto;background:#ffffff;border-radius:16px;box-shadow:0 2px 16px #ea580c14;overflow:hidden;border:1px solid #fed7aa }
|
||||
.email-heading { margin:0 0 12px;font-size:17px;line-height:1.5;color:#9a3412;font-family:Georgia,'Times New Roman',serif;font-weight:600 }
|
||||
.email-text { margin:0 0 8px;font-size:16px;line-height:1.6;color:#78350f }
|
||||
.email-subtext { margin:0 0 20px;font-size:15px;line-height:1.6;color:#92400e }
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
.email-header { padding:28px 32px 16px;border-bottom:1px solid #fed7aa;background:linear-gradient(135deg,#fff7ed,#ffffff) }
|
||||
|
||||
/* Card */
|
||||
.email-card { max-width:600px;margin:20px auto;background:#ffffff;border-radius:16px;box-shadow:0 2px 16px rgba(234,88,12,0.08);overflow:hidden;border:1px solid #fed7aa }
|
||||
.email-card { max-width:600px;margin:20px auto;background:#ffffff;border-radius:16px;box-shadow:0 2px 16px #ea580c14;overflow:hidden;border:1px solid #fed7aa }
|
||||
.email-heading { margin:0 0 12px;font-size:17px;line-height:1.5;color:#9a3412;font-family:Georgia,'Times New Roman',serif;font-weight:600 }
|
||||
.email-text { margin:0 0 20px;font-size:16px;line-height:1.6;color:#78350f }
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
.email-header { padding:28px 32px 16px;border-bottom:1px solid #fed7aa;background:linear-gradient(135deg,#fff7ed,#ffffff) }
|
||||
|
||||
/* Card */
|
||||
.email-card { max-width:600px;margin:20px auto;background:#ffffff;border-radius:16px;box-shadow:0 2px 16px rgba(234,88,12,0.08);overflow:hidden;border:1px solid #fed7aa }
|
||||
.email-card { max-width:600px;margin:20px auto;background:#ffffff;border-radius:16px;box-shadow:0 2px 16px #ea580c14;overflow:hidden;border:1px solid #fed7aa }
|
||||
.email-heading { margin:0 0 12px;font-size:17px;line-height:1.5;color:#9a3412;font-family:Georgia,'Times New Roman',serif;font-weight:600 }
|
||||
.email-text { margin:0 0 8px;font-size:16px;line-height:1.6;color:#78350f }
|
||||
.email-subtext { margin:0 0 20px;font-size:15px;line-height:1.6;color:#92400e }
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
.email-header { padding:28px 32px 16px;border-bottom:1px solid #fed7aa;background:linear-gradient(135deg,#fff7ed,#ffffff) }
|
||||
|
||||
/* Card */
|
||||
.email-card { max-width:600px;margin:20px auto;background:#ffffff;border-radius:16px;box-shadow:0 2px 16px rgba(234,88,12,0.08);overflow:hidden;border:1px solid #fed7aa }
|
||||
.email-card { max-width:600px;margin:20px auto;background:#ffffff;border-radius:16px;box-shadow:0 2px 16px #ea580c14;overflow:hidden;border:1px solid #fed7aa }
|
||||
.email-heading { margin:0 0 12px;font-size:17px;line-height:1.5;color:#9a3412;font-family:Georgia,'Times New Roman',serif;font-weight:600 }
|
||||
.email-text { margin:0 0 20px;font-size:16px;line-height:1.6;color:#78350f }
|
||||
|
||||
|
||||
@@ -122,9 +122,9 @@
|
||||
<ul class="commit-list">
|
||||
{{range .Comment.Commits}}
|
||||
<li class="commit-item">
|
||||
<a href="{{$.Comment.Issue.PullRequest.BaseRepo.HTMLURL}}/commit/{{.ID}}" class="commit-link">
|
||||
{{ShortSha .ID.String}}
|
||||
</a> — {{.MessageTitle}}
|
||||
<a href="{{$.Comment.Issue.PullRequest.BaseRepo.HTMLURL}}/commit/{{.UserCommit.GitCommit.ID}}" class="commit-link">
|
||||
{{ShortSha .UserCommit.GitCommit.ID.String}}
|
||||
</a> — {{.UserCommit.GitCommit.MessageTitle}}
|
||||
</li>
|
||||
{{end}}
|
||||
</ul>
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
|
||||
<body style="margin:0;padding:0;background:#f4f6f9;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
|
||||
<center style="width:100%;table-layout:fixed;">
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;background:#ffffff;border-radius:12px;box-shadow:0 4px 12px rgba(0,0,0,0.05);overflow:hidden;" class="email-wrap">
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;background:#ffffff;border-radius:12px;box-shadow:0 4px 12px #0000000d;overflow:hidden;" class="email-wrap">
|
||||
|
||||
<!-- Floating Title -->
|
||||
<tr>
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
|
||||
<body style="margin:0;padding:0;background:#f4f6f9;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
|
||||
<center style="width:100%;table-layout:fixed;">
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;background:#ffffff;border-radius:12px;box-shadow:0 4px 12px rgba(0,0,0,0.05);overflow:hidden;" class="email-wrap">
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;background:#ffffff;border-radius:12px;box-shadow:0 4px 12px #0000000d;overflow:hidden;" class="email-wrap">
|
||||
|
||||
<!-- Floating Title -->
|
||||
<tr>
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
|
||||
<body style="margin:0;padding:0;background:#f4f6f9;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
|
||||
<center style="width:100%;table-layout:fixed;">
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;background:#ffffff;border-radius:12px;box-shadow:0 4px 12px rgba(0,0,0,0.05);overflow:hidden;" class="email-wrap">
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;background:#ffffff;border-radius:12px;box-shadow:0 4px 12px #0000000d;overflow:hidden;" class="email-wrap">
|
||||
|
||||
<!-- Floating Title -->
|
||||
<tr>
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
|
||||
<body style="margin:0;padding:0;background:#f4f6f9;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
|
||||
<center style="width:100%;table-layout:fixed;">
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;background:#ffffff;border-radius:12px;box-shadow:0 4px 12px rgba(0,0,0,0.05);overflow:hidden;" class="email-wrap">
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;background:#ffffff;border-radius:12px;box-shadow:0 4px 12px #0000000d;overflow:hidden;" class="email-wrap">
|
||||
|
||||
<!-- Floating Title -->
|
||||
<tr>
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
|
||||
<body style="margin:0;padding:0;background:#f4f6f9;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
|
||||
<center style="width:100%;table-layout:fixed;">
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;background:#ffffff;border-radius:12px;box-shadow:0 4px 12px rgba(0,0,0,0.05);overflow:hidden;" class="email-wrap">
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;background:#ffffff;border-radius:12px;box-shadow:0 4px 12px #0000000d;overflow:hidden;" class="email-wrap">
|
||||
|
||||
<!-- Floating Title -->
|
||||
<tr>
|
||||
@@ -150,7 +150,7 @@
|
||||
<ul>
|
||||
{{range .Comment.Commits}}
|
||||
<li>
|
||||
<a href="{{$.Comment.Issue.PullRequest.BaseRepo.HTMLURL}}/commit/{{.ID}}">{{ShortSha .ID.String}}</a> - {{.MessageTitle}}
|
||||
<a href="{{$.Comment.Issue.PullRequest.BaseRepo.HTMLURL}}/commit/{{.UserCommit.GitCommit.ID}}">{{ShortSha .UserCommit.GitCommit.ID.String}}</a> - {{.UserCommit.GitCommit.MessageTitle}}
|
||||
</li>
|
||||
{{end}}
|
||||
</ul>
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
|
||||
<body style="margin:0;padding:0;background:#f4f6f9;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
|
||||
<center style="width:100%;table-layout:fixed;">
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;background:#ffffff;border-radius:12px;box-shadow:0 4px 12px rgba(0,0,0,0.05);overflow:hidden;" class="email-wrap">
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;background:#ffffff;border-radius:12px;box-shadow:0 4px 12px #0000000d;overflow:hidden;" class="email-wrap">
|
||||
|
||||
<!-- Floating Title -->
|
||||
<tr>
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
|
||||
<body style="margin:0;padding:0;background:#f4f6f9;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
|
||||
<center style="width:100%;table-layout:fixed;">
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;background:#ffffff;border-radius:12px;box-shadow:0 4px 12px rgba(0,0,0,0.05);overflow:hidden;" class="email-wrap">
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;background:#ffffff;border-radius:12px;box-shadow:0 4px 12px #0000000d;overflow:hidden;" class="email-wrap">
|
||||
|
||||
<!-- Floating Title -->
|
||||
<tr>
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
|
||||
<body style="margin:0;padding:0;background:#f4f6f9;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
|
||||
<center style="width:100%;table-layout:fixed;">
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;background:#ffffff;border-radius:12px;box-shadow:0 4px 12px rgba(0,0,0,0.05);overflow:hidden;" class="email-wrap">
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;background:#ffffff;border-radius:12px;box-shadow:0 4px 12px #0000000d;overflow:hidden;" class="email-wrap">
|
||||
|
||||
<!-- Floating Title -->
|
||||
<tr>
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
|
||||
<body style="margin:0;padding:0;background:#f4f6f9;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
|
||||
<center style="width:100%;table-layout:fixed;">
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;background:#ffffff;border-radius:12px;box-shadow:0 4px 12px rgba(0,0,0,0.05);overflow:hidden;" class="email-wrap">
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;background:#ffffff;border-radius:12px;box-shadow:0 4px 12px #0000000d;overflow:hidden;" class="email-wrap">
|
||||
|
||||
<!-- Floating Title -->
|
||||
<tr>
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
|
||||
<body style="margin:0;padding:0;background:#f4f6f9;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
|
||||
<center style="width:100%;table-layout:fixed;">
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;background:#ffffff;border-radius:12px;box-shadow:0 4px 12px rgba(0,0,0,0.05);overflow:hidden;" class="email-wrap">
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;background:#ffffff;border-radius:12px;box-shadow:0 4px 12px #0000000d;overflow:hidden;" class="email-wrap">
|
||||
|
||||
<!-- Floating Title -->
|
||||
<tr>
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
|
||||
<body style="margin:0;padding:0;background:#f4f6f9;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
|
||||
<center style="width:100%;table-layout:fixed;">
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;background:#ffffff;border-radius:12px;box-shadow:0 4px 12px rgba(0,0,0,0.05);overflow:hidden;" class="email-wrap">
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;background:#ffffff;border-radius:12px;box-shadow:0 4px 12px #0000000d;overflow:hidden;" class="email-wrap">
|
||||
|
||||
<!-- Floating Title -->
|
||||
<tr>
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
|
||||
/* Card */
|
||||
.email-card { padding:24px 24px 16px 28px;vertical-align:top;color:#333 }
|
||||
.email-sidebar { padding:24px 28px 16px 0;vertical-align:top;border-left:1px solid #ddd }
|
||||
.email-heading { margin:0 0 16px;font-size:15px;color:#333;line-height:1.7 }
|
||||
.email-text { margin:0 0 12px;font-size:13px;line-height:1.8;color:#444 }
|
||||
.email-subtext { margin:0 0 20px;font-size:12px;line-height:1.8;color:#666;font-style:italic }
|
||||
@@ -51,16 +52,25 @@
|
||||
|
||||
/* Responsive */
|
||||
@media only screen and (max-width:480px) {
|
||||
/* Stack layout — convert table rows to blocks */
|
||||
.email-wrap,.email-wrap tbody,.email-wrap tr{ display:block!important;width:100%!important }
|
||||
.email-wrap td{ box-sizing:border-box!important }
|
||||
.email-header { padding-left:16px!important;padding-right:16px!important }
|
||||
.email-card { width:100%!important;display:block!important;border-left:none!important;padding-left:28px!important;padding-right:28px!important;padding-top:0!important }
|
||||
.email-card { width:100%!important;display:block!important;border-left:none!important;padding:0 16px 16px!important }
|
||||
.email-sidebar { width:100%!important;display:block!important;padding:0 16px 16px!important;border-left:none!important;border-top:1px solid #ddd!important }
|
||||
.email-btn { display:block!important;width:auto!important;text-align:center!important }
|
||||
.email-footer { padding-left:16px!important;padding-right:16px!important }
|
||||
/* Prevent content overflow */
|
||||
.email-wrap,.email-wrap td,.email-wrap th{ word-break:break-word!important;overflow-wrap:break-word!important }
|
||||
img{ max-width:100%!important;height:auto!important }
|
||||
pre,code{ white-space:pre-wrap!important;word-break:break-all!important }
|
||||
table{ max-width:100%!important }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body style="margin:0;padding:0;background:#ede4d4;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
|
||||
<center style="width:100%;table-layout:fixed;">
|
||||
<center style="width:100%;">
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="email-wrap">
|
||||
|
||||
<!-- Floating Title -->
|
||||
@@ -70,7 +80,7 @@
|
||||
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="24" height="24" class="email-logo" />
|
||||
<span class="email-brand">{{AppName}}</span>
|
||||
<br />
|
||||
<span style="font-size:11px;color:#888;font-style:italic;">Gitea Mail Templates</span>
|
||||
<span style="font-size:11px;color:#888;font-style:italic;">Git with a cup of tea</span>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@@ -115,7 +125,7 @@
|
||||
|
||||
</td>
|
||||
<!-- right column / sidebar -->
|
||||
<td width="36%" style="padding:24px 28px 16px 0;vertical-align:top;border-left:1px solid #ddd;">
|
||||
<td width="36%" class="email-sidebar">
|
||||
|
||||
<p style="margin:0 0 10px;font-size:10px;color:#888;text-transform:uppercase;letter-spacing:1px;font-family:system-ui,sans-serif;font-weight:700;">Quick Info</p>
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-top:1px solid #ddd;border-bottom:1px solid #ddd;">
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
|
||||
/* Card */
|
||||
.email-card { padding:24px 24px 16px 28px;vertical-align:top;color:#333 }
|
||||
.email-sidebar { padding:24px 28px 16px 0;vertical-align:top;border-left:1px solid #ddd }
|
||||
.email-heading { margin:0 0 16px;font-size:15px;color:#333;line-height:1.7 }
|
||||
.email-text { margin:0 0 12px;font-size:13px;line-height:1.8;color:#444 }
|
||||
.email-subtext { margin:0 0 20px;font-size:12px;line-height:1.8;color:#666;font-style:italic }
|
||||
@@ -53,16 +54,25 @@
|
||||
|
||||
/* Responsive */
|
||||
@media only screen and (max-width:480px) {
|
||||
/* Stack layout — convert table rows to blocks */
|
||||
.email-wrap,.email-wrap tbody,.email-wrap tr{ display:block!important;width:100%!important }
|
||||
.email-wrap td{ box-sizing:border-box!important }
|
||||
.email-header { padding-left:16px!important;padding-right:16px!important }
|
||||
.email-card { width:100%!important;display:block!important;border-left:none!important;padding-left:28px!important;padding-right:28px!important;padding-top:0!important }
|
||||
.email-card { width:100%!important;display:block!important;border-left:none!important;padding:0 16px 16px!important }
|
||||
.email-sidebar { width:100%!important;display:block!important;padding:0 16px 16px!important;border-left:none!important;border-top:1px solid #ddd!important }
|
||||
.email-btn { display:block!important;width:auto!important;text-align:center!important }
|
||||
.email-footer { padding-left:16px!important;padding-right:16px!important }
|
||||
/* Prevent content overflow */
|
||||
.email-wrap,.email-wrap td,.email-wrap th{ word-break:break-word!important;overflow-wrap:break-word!important }
|
||||
img{ max-width:100%!important;height:auto!important }
|
||||
pre,code{ white-space:pre-wrap!important;word-break:break-all!important }
|
||||
table{ max-width:100%!important }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body style="margin:0;padding:0;background:#ede4d4;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
|
||||
<center style="width:100%;table-layout:fixed;">
|
||||
<center style="width:100%;">
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="email-wrap">
|
||||
|
||||
<!-- Floating Title -->
|
||||
@@ -72,7 +82,7 @@
|
||||
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="24" height="24" class="email-logo" />
|
||||
<span class="email-brand">{{AppName}}</span>
|
||||
<br />
|
||||
<span style="font-size:11px;color:#888;font-style:italic;">Gitea Mail Templates</span>
|
||||
<span style="font-size:11px;color:#888;font-style:italic;">Git with a cup of tea</span>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@@ -111,7 +121,7 @@
|
||||
|
||||
</td>
|
||||
<!-- right column / sidebar -->
|
||||
<td width="36%" style="padding:24px 28px 16px 0;vertical-align:top;border-left:1px solid #ddd;">
|
||||
<td width="36%" class="email-sidebar">
|
||||
|
||||
<p style="margin:0 0 10px;font-size:10px;color:#888;text-transform:uppercase;letter-spacing:1px;font-family:system-ui,sans-serif;font-weight:700;">Quick Info</p>
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-top:1px solid #ddd;border-bottom:1px solid #ddd;">
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
|
||||
/* Card */
|
||||
.email-card { padding:24px 24px 16px 28px;vertical-align:top;color:#333 }
|
||||
.email-sidebar { padding:24px 28px 16px 0;vertical-align:top;border-left:1px solid #ddd }
|
||||
.email-heading { margin:0 0 16px;font-size:15px;color:#333;line-height:1.7 }
|
||||
.email-text { margin:0 0 12px;font-size:13px;line-height:1.8;color:#444 }
|
||||
.email-subtext { margin:0 0 20px;font-size:12px;line-height:1.8;color:#666;font-style:italic }
|
||||
@@ -51,16 +52,25 @@
|
||||
|
||||
/* Responsive */
|
||||
@media only screen and (max-width:480px) {
|
||||
/* Stack layout — convert table rows to blocks */
|
||||
.email-wrap,.email-wrap tbody,.email-wrap tr{ display:block!important;width:100%!important }
|
||||
.email-wrap td{ box-sizing:border-box!important }
|
||||
.email-header { padding-left:16px!important;padding-right:16px!important }
|
||||
.email-card { width:100%!important;display:block!important;border-left:none!important;padding-left:28px!important;padding-right:28px!important;padding-top:0!important }
|
||||
.email-card { width:100%!important;display:block!important;border-left:none!important;padding:0 16px 16px!important }
|
||||
.email-sidebar { width:100%!important;display:block!important;padding:0 16px 16px!important;border-left:none!important;border-top:1px solid #ddd!important }
|
||||
.email-btn { display:block!important;width:auto!important;text-align:center!important }
|
||||
.email-footer { padding-left:16px!important;padding-right:16px!important }
|
||||
/* Prevent content overflow */
|
||||
.email-wrap,.email-wrap td,.email-wrap th{ word-break:break-word!important;overflow-wrap:break-word!important }
|
||||
img{ max-width:100%!important;height:auto!important }
|
||||
pre,code{ white-space:pre-wrap!important;word-break:break-all!important }
|
||||
table{ max-width:100%!important }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body style="margin:0;padding:0;background:#ede4d4;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
|
||||
<center style="width:100%;table-layout:fixed;">
|
||||
<center style="width:100%;">
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="email-wrap">
|
||||
|
||||
<!-- Floating Title -->
|
||||
@@ -70,7 +80,7 @@
|
||||
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="24" height="24" class="email-logo" />
|
||||
<span class="email-brand">{{AppName}}</span>
|
||||
<br />
|
||||
<span style="font-size:11px;color:#888;font-style:italic;">Gitea Mail Templates</span>
|
||||
<span style="font-size:11px;color:#888;font-style:italic;">Git with a cup of tea</span>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@@ -103,7 +113,7 @@
|
||||
|
||||
</td>
|
||||
<!-- right column / sidebar -->
|
||||
<td width="36%" style="padding:24px 28px 16px 0;vertical-align:top;border-left:1px solid #ddd;">
|
||||
<td width="36%" class="email-sidebar">
|
||||
|
||||
<p style="margin:0 0 10px;font-size:10px;color:#888;text-transform:uppercase;letter-spacing:1px;font-family:system-ui,sans-serif;font-weight:700;">Quick Info</p>
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-top:1px solid #ddd;border-bottom:1px solid #ddd;">
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
|
||||
/* Card */
|
||||
.email-card { padding:24px 24px 16px 28px;vertical-align:top;color:#333 }
|
||||
.email-sidebar { padding:24px 28px 16px 0;vertical-align:top;border-left:1px solid #ddd }
|
||||
.email-heading { margin:0 0 16px;font-size:15px;color:#333;line-height:1.7 }
|
||||
.email-text { margin:0 0 12px;font-size:13px;line-height:1.8;color:#444 }
|
||||
.email-subtext { margin:0 0 20px;font-size:12px;line-height:1.8;color:#666;font-style:italic }
|
||||
@@ -51,16 +52,25 @@
|
||||
|
||||
/* Responsive */
|
||||
@media only screen and (max-width:480px) {
|
||||
/* Stack layout — convert table rows to blocks */
|
||||
.email-wrap,.email-wrap tbody,.email-wrap tr{ display:block!important;width:100%!important }
|
||||
.email-wrap td{ box-sizing:border-box!important }
|
||||
.email-header { padding-left:16px!important;padding-right:16px!important }
|
||||
.email-card { width:100%!important;display:block!important;border-left:none!important;padding-left:28px!important;padding-right:28px!important;padding-top:0!important }
|
||||
.email-card { width:100%!important;display:block!important;border-left:none!important;padding:0 16px 16px!important }
|
||||
.email-sidebar { width:100%!important;display:block!important;padding:0 16px 16px!important;border-left:none!important;border-top:1px solid #ddd!important }
|
||||
.email-btn { display:block!important;width:auto!important;text-align:center!important }
|
||||
.email-footer { padding-left:16px!important;padding-right:16px!important }
|
||||
/* Prevent content overflow */
|
||||
.email-wrap,.email-wrap td,.email-wrap th{ word-break:break-word!important;overflow-wrap:break-word!important }
|
||||
img{ max-width:100%!important;height:auto!important }
|
||||
pre,code{ white-space:pre-wrap!important;word-break:break-all!important }
|
||||
table{ max-width:100%!important }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body style="margin:0;padding:0;background:#ede4d4;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
|
||||
<center style="width:100%;table-layout:fixed;">
|
||||
<center style="width:100%;">
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="email-wrap">
|
||||
|
||||
<!-- Floating Title -->
|
||||
@@ -70,7 +80,7 @@
|
||||
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="24" height="24" class="email-logo" />
|
||||
<span class="email-brand">{{AppName}}</span>
|
||||
<br />
|
||||
<span style="font-size:11px;color:#888;font-style:italic;">Gitea Mail Templates</span>
|
||||
<span style="font-size:11px;color:#888;font-style:italic;">Git with a cup of tea</span>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@@ -109,7 +119,7 @@
|
||||
|
||||
</td>
|
||||
<!-- right column / sidebar -->
|
||||
<td width="36%" style="padding:24px 28px 16px 0;vertical-align:top;border-left:1px solid #ddd;">
|
||||
<td width="36%" class="email-sidebar">
|
||||
|
||||
<p style="margin:0 0 10px;font-size:10px;color:#888;text-transform:uppercase;letter-spacing:1px;font-family:system-ui,sans-serif;font-weight:700;">Quick Info</p>
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-top:1px solid #ddd;border-bottom:1px solid #ddd;">
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
|
||||
/* Card */
|
||||
.email-card { padding:24px 24px 16px 28px;vertical-align:top;color:#333 }
|
||||
.email-sidebar { padding:24px 28px 16px 0;vertical-align:top;border-left:1px solid #ddd }
|
||||
.email-heading { margin:0 0 16px;font-size:15px;color:#333;line-height:1.7 }
|
||||
.email-text { margin:0 0 12px;font-size:13px;line-height:1.8;color:#444 }
|
||||
.email-subtext { margin:0 0 20px;font-size:12px;line-height:1.8;color:#666;font-style:italic }
|
||||
@@ -61,16 +62,25 @@
|
||||
|
||||
/* Responsive */
|
||||
@media only screen and (max-width:480px) {
|
||||
/* Stack layout — convert table rows to blocks */
|
||||
.email-wrap,.email-wrap tbody,.email-wrap tr{ display:block!important;width:100%!important }
|
||||
.email-wrap td{ box-sizing:border-box!important }
|
||||
.email-header { padding-left:16px!important;padding-right:16px!important }
|
||||
.email-card { width:100%!important;display:block!important;border-left:none!important;padding-left:28px!important;padding-right:28px!important;padding-top:0!important }
|
||||
.email-card { width:100%!important;display:block!important;border-left:none!important;padding:0 16px 16px!important }
|
||||
.email-sidebar { width:100%!important;display:block!important;padding:0 16px 16px!important;border-left:none!important;border-top:1px solid #ddd!important }
|
||||
.email-btn { display:block!important;width:auto!important;text-align:center!important }
|
||||
.email-footer { padding-left:16px!important;padding-right:16px!important }
|
||||
/* Prevent content overflow */
|
||||
.email-wrap,.email-wrap td,.email-wrap th{ word-break:break-word!important;overflow-wrap:break-word!important }
|
||||
img{ max-width:100%!important;height:auto!important }
|
||||
pre,code{ white-space:pre-wrap!important;word-break:break-all!important }
|
||||
table{ max-width:100%!important }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body style="margin:0;padding:0;background:#ede4d4;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
|
||||
<center style="width:100%;table-layout:fixed;">
|
||||
<center style="width:100%;">
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="email-wrap">
|
||||
|
||||
<!-- Floating Title -->
|
||||
@@ -80,7 +90,7 @@
|
||||
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="24" height="24" class="email-logo" />
|
||||
<span class="email-brand">{{AppName}}</span>
|
||||
<br />
|
||||
<span style="font-size:11px;color:#888;font-style:italic;">Gitea Mail Templates</span>
|
||||
<span style="font-size:11px;color:#888;font-style:italic;">Git with a cup of tea</span>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@@ -153,7 +163,7 @@
|
||||
<ul>
|
||||
{{range .Comment.Commits}}
|
||||
<li>
|
||||
<a href="{{$.Comment.Issue.PullRequest.BaseRepo.HTMLURL}}/commit/{{.ID}}">{{ShortSha .ID.String}}</a> - {{.MessageTitle}}
|
||||
<a href="{{$.Comment.Issue.PullRequest.BaseRepo.HTMLURL}}/commit/{{.UserCommit.GitCommit.ID}}">{{ShortSha .UserCommit.GitCommit.ID.String}}</a> - {{.UserCommit.GitCommit.MessageTitle}}
|
||||
</li>
|
||||
{{end}}
|
||||
</ul>
|
||||
@@ -181,7 +191,7 @@
|
||||
|
||||
</td>
|
||||
<!-- right column / sidebar -->
|
||||
<td width="36%" style="padding:24px 28px 16px 0;vertical-align:top;border-left:1px solid #ddd;">
|
||||
<td width="36%" class="email-sidebar">
|
||||
|
||||
<p style="margin:0 0 10px;font-size:10px;color:#888;text-transform:uppercase;letter-spacing:1px;font-family:system-ui,sans-serif;font-weight:700;">Quick Info</p>
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-top:1px solid #ddd;border-bottom:1px solid #ddd;">
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
|
||||
/* Card */
|
||||
.email-card { padding:24px 24px 16px 28px;vertical-align:top;color:#333 }
|
||||
.email-sidebar { padding:24px 28px 16px 0;vertical-align:top;border-left:1px solid #ddd }
|
||||
.email-heading { margin:0 0 16px;font-size:15px;color:#333;line-height:1.7 }
|
||||
.email-text { margin:0 0 12px;font-size:13px;line-height:1.8;color:#444 }
|
||||
.email-subtext { margin:0 0 20px;font-size:12px;line-height:1.8;color:#666;font-style:italic }
|
||||
@@ -56,16 +57,25 @@
|
||||
|
||||
/* Responsive */
|
||||
@media only screen and (max-width:480px) {
|
||||
/* Stack layout — convert table rows to blocks */
|
||||
.email-wrap,.email-wrap tbody,.email-wrap tr{ display:block!important;width:100%!important }
|
||||
.email-wrap td{ box-sizing:border-box!important }
|
||||
.email-header { padding-left:16px!important;padding-right:16px!important }
|
||||
.email-card { width:100%!important;display:block!important;border-left:none!important;padding-left:28px!important;padding-right:28px!important;padding-top:0!important }
|
||||
.email-card { width:100%!important;display:block!important;border-left:none!important;padding:0 16px 16px!important }
|
||||
.email-sidebar { width:100%!important;display:block!important;padding:0 16px 16px!important;border-left:none!important;border-top:1px solid #ddd!important }
|
||||
.email-btn { display:block!important;width:auto!important;text-align:center!important }
|
||||
.email-footer { padding-left:16px!important;padding-right:16px!important }
|
||||
/* Prevent content overflow */
|
||||
.email-wrap,.email-wrap td,.email-wrap th{ word-break:break-word!important;overflow-wrap:break-word!important }
|
||||
img{ max-width:100%!important;height:auto!important }
|
||||
pre,code{ white-space:pre-wrap!important;word-break:break-all!important }
|
||||
table{ max-width:100%!important }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body style="margin:0;padding:0;background:#ede4d4;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
|
||||
<center style="width:100%;table-layout:fixed;">
|
||||
<center style="width:100%;">
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="email-wrap">
|
||||
|
||||
<!-- Floating Title -->
|
||||
@@ -75,7 +85,7 @@
|
||||
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="24" height="24" class="email-logo" />
|
||||
<span class="email-brand">{{AppName}}</span>
|
||||
<br />
|
||||
<span style="font-size:11px;color:#888;font-style:italic;">Gitea Mail Templates</span>
|
||||
<span style="font-size:11px;color:#888;font-style:italic;">Git with a cup of tea</span>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@@ -130,7 +140,7 @@
|
||||
|
||||
</td>
|
||||
<!-- right column / sidebar -->
|
||||
<td width="36%" style="padding:24px 28px 16px 0;vertical-align:top;border-left:1px solid #ddd;">
|
||||
<td width="36%" class="email-sidebar">
|
||||
|
||||
<p style="margin:0 0 10px;font-size:10px;color:#888;text-transform:uppercase;letter-spacing:1px;font-family:system-ui,sans-serif;font-weight:700;">Quick Info</p>
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-top:1px solid #ddd;border-bottom:1px solid #ddd;">
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
|
||||
/* Card */
|
||||
.email-card { padding:24px 24px 16px 28px;vertical-align:top;color:#333 }
|
||||
.email-sidebar { padding:24px 28px 16px 0;vertical-align:top;border-left:1px solid #ddd }
|
||||
.email-heading { margin:0 0 16px;font-size:15px;color:#333;line-height:1.7 }
|
||||
.email-text { margin:0 0 12px;font-size:13px;line-height:1.8;color:#444 }
|
||||
.email-subtext { margin:0 0 20px;font-size:12px;line-height:1.8;color:#666;font-style:italic }
|
||||
@@ -51,16 +52,25 @@
|
||||
|
||||
/* Responsive */
|
||||
@media only screen and (max-width:480px) {
|
||||
/* Stack layout — convert table rows to blocks */
|
||||
.email-wrap,.email-wrap tbody,.email-wrap tr{ display:block!important;width:100%!important }
|
||||
.email-wrap td{ box-sizing:border-box!important }
|
||||
.email-header { padding-left:16px!important;padding-right:16px!important }
|
||||
.email-card { width:100%!important;display:block!important;border-left:none!important;padding-left:28px!important;padding-right:28px!important;padding-top:0!important }
|
||||
.email-card { width:100%!important;display:block!important;border-left:none!important;padding:0 16px 16px!important }
|
||||
.email-sidebar { width:100%!important;display:block!important;padding:0 16px 16px!important;border-left:none!important;border-top:1px solid #ddd!important }
|
||||
.email-btn { display:block!important;width:auto!important;text-align:center!important }
|
||||
.email-footer { padding-left:16px!important;padding-right:16px!important }
|
||||
/* Prevent content overflow */
|
||||
.email-wrap,.email-wrap td,.email-wrap th{ word-break:break-word!important;overflow-wrap:break-word!important }
|
||||
img{ max-width:100%!important;height:auto!important }
|
||||
pre,code{ white-space:pre-wrap!important;word-break:break-all!important }
|
||||
table{ max-width:100%!important }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body style="margin:0;padding:0;background:#ede4d4;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
|
||||
<center style="width:100%;table-layout:fixed;">
|
||||
<center style="width:100%;">
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="email-wrap">
|
||||
|
||||
<!-- Floating Title -->
|
||||
@@ -70,7 +80,7 @@
|
||||
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="24" height="24" class="email-logo" />
|
||||
<span class="email-brand">{{AppName}}</span>
|
||||
<br />
|
||||
<span style="font-size:11px;color:#888;font-style:italic;">Gitea Mail Templates</span>
|
||||
<span style="font-size:11px;color:#888;font-style:italic;">Git with a cup of tea</span>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@@ -104,7 +114,7 @@
|
||||
|
||||
</td>
|
||||
<!-- right column / sidebar -->
|
||||
<td width="36%" style="padding:24px 28px 16px 0;vertical-align:top;border-left:1px solid #ddd;">
|
||||
<td width="36%" class="email-sidebar">
|
||||
|
||||
<p style="margin:0 0 10px;font-size:10px;color:#888;text-transform:uppercase;letter-spacing:1px;font-family:system-ui,sans-serif;font-weight:700;">Quick Info</p>
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-top:1px solid #ddd;border-bottom:1px solid #ddd;">
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
|
||||
/* Card */
|
||||
.email-card { padding:24px 24px 16px 28px;vertical-align:top;color:#333 }
|
||||
.email-sidebar { padding:24px 28px 16px 0;vertical-align:top;border-left:1px solid #ddd }
|
||||
.email-heading { margin:0 0 16px;font-size:15px;color:#333;line-height:1.7 }
|
||||
.email-text { margin:0 0 12px;font-size:13px;line-height:1.8;color:#444 }
|
||||
.email-subtext { margin:0 0 20px;font-size:12px;line-height:1.8;color:#666;font-style:italic }
|
||||
@@ -51,16 +52,25 @@
|
||||
|
||||
/* Responsive */
|
||||
@media only screen and (max-width:480px) {
|
||||
/* Stack layout — convert table rows to blocks */
|
||||
.email-wrap,.email-wrap tbody,.email-wrap tr{ display:block!important;width:100%!important }
|
||||
.email-wrap td{ box-sizing:border-box!important }
|
||||
.email-header { padding-left:16px!important;padding-right:16px!important }
|
||||
.email-card { width:100%!important;display:block!important;border-left:none!important;padding-left:28px!important;padding-right:28px!important;padding-top:0!important }
|
||||
.email-card { width:100%!important;display:block!important;border-left:none!important;padding:0 16px 16px!important }
|
||||
.email-sidebar { width:100%!important;display:block!important;padding:0 16px 16px!important;border-left:none!important;border-top:1px solid #ddd!important }
|
||||
.email-btn { display:block!important;width:auto!important;text-align:center!important }
|
||||
.email-footer { padding-left:16px!important;padding-right:16px!important }
|
||||
/* Prevent content overflow */
|
||||
.email-wrap,.email-wrap td,.email-wrap th{ word-break:break-word!important;overflow-wrap:break-word!important }
|
||||
img{ max-width:100%!important;height:auto!important }
|
||||
pre,code{ white-space:pre-wrap!important;word-break:break-all!important }
|
||||
table{ max-width:100%!important }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body style="margin:0;padding:0;background:#ede4d4;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
|
||||
<center style="width:100%;table-layout:fixed;">
|
||||
<center style="width:100%;">
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="email-wrap">
|
||||
|
||||
<!-- Floating Title -->
|
||||
@@ -70,7 +80,7 @@
|
||||
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="24" height="24" class="email-logo" />
|
||||
<span class="email-brand">{{AppName}}</span>
|
||||
<br />
|
||||
<span style="font-size:11px;color:#888;font-style:italic;">Gitea Mail Templates</span>
|
||||
<span style="font-size:11px;color:#888;font-style:italic;">Git with a cup of tea</span>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@@ -109,7 +119,7 @@
|
||||
|
||||
</td>
|
||||
<!-- right column / sidebar -->
|
||||
<td width="36%" style="padding:24px 28px 16px 0;vertical-align:top;border-left:1px solid #ddd;">
|
||||
<td width="36%" class="email-sidebar">
|
||||
|
||||
<p style="margin:0 0 10px;font-size:10px;color:#888;text-transform:uppercase;letter-spacing:1px;font-family:system-ui,sans-serif;font-weight:700;">Quick Info</p>
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-top:1px solid #ddd;border-bottom:1px solid #ddd;">
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
|
||||
/* Card */
|
||||
.email-card { padding:24px 24px 16px 28px;vertical-align:top;color:#333 }
|
||||
.email-sidebar { padding:24px 28px 16px 0;vertical-align:top;border-left:1px solid #ddd }
|
||||
.email-heading { margin:0 0 16px;font-size:15px;color:#333;line-height:1.7 }
|
||||
.email-text { margin:0 0 12px;font-size:13px;line-height:1.8;color:#444 }
|
||||
.email-subtext { margin:0 0 20px;font-size:12px;line-height:1.8;color:#666;font-style:italic }
|
||||
@@ -51,16 +52,25 @@
|
||||
|
||||
/* Responsive */
|
||||
@media only screen and (max-width:480px) {
|
||||
/* Stack layout — convert table rows to blocks */
|
||||
.email-wrap,.email-wrap tbody,.email-wrap tr{ display:block!important;width:100%!important }
|
||||
.email-wrap td{ box-sizing:border-box!important }
|
||||
.email-header { padding-left:16px!important;padding-right:16px!important }
|
||||
.email-card { width:100%!important;display:block!important;border-left:none!important;padding-left:28px!important;padding-right:28px!important;padding-top:0!important }
|
||||
.email-card { width:100%!important;display:block!important;border-left:none!important;padding:0 16px 16px!important }
|
||||
.email-sidebar { width:100%!important;display:block!important;padding:0 16px 16px!important;border-left:none!important;border-top:1px solid #ddd!important }
|
||||
.email-btn { display:block!important;width:auto!important;text-align:center!important }
|
||||
.email-footer { padding-left:16px!important;padding-right:16px!important }
|
||||
/* Prevent content overflow */
|
||||
.email-wrap,.email-wrap td,.email-wrap th{ word-break:break-word!important;overflow-wrap:break-word!important }
|
||||
img{ max-width:100%!important;height:auto!important }
|
||||
pre,code{ white-space:pre-wrap!important;word-break:break-all!important }
|
||||
table{ max-width:100%!important }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body style="margin:0;padding:0;background:#ede4d4;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
|
||||
<center style="width:100%;table-layout:fixed;">
|
||||
<center style="width:100%;">
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="email-wrap">
|
||||
|
||||
<!-- Floating Title -->
|
||||
@@ -70,7 +80,7 @@
|
||||
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="24" height="24" class="email-logo" />
|
||||
<span class="email-brand">{{AppName}}</span>
|
||||
<br />
|
||||
<span style="font-size:11px;color:#888;font-style:italic;">Gitea Mail Templates</span>
|
||||
<span style="font-size:11px;color:#888;font-style:italic;">Git with a cup of tea</span>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@@ -109,7 +119,7 @@
|
||||
|
||||
</td>
|
||||
<!-- right column / sidebar -->
|
||||
<td width="36%" style="padding:24px 28px 16px 0;vertical-align:top;border-left:1px solid #ddd;">
|
||||
<td width="36%" class="email-sidebar">
|
||||
|
||||
<p style="margin:0 0 10px;font-size:10px;color:#888;text-transform:uppercase;letter-spacing:1px;font-family:system-ui,sans-serif;font-weight:700;">Quick Info</p>
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-top:1px solid #ddd;border-bottom:1px solid #ddd;">
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
|
||||
/* Card */
|
||||
.email-card { padding:24px 24px 16px 28px;vertical-align:top;color:#333 }
|
||||
.email-sidebar { padding:24px 28px 16px 0;vertical-align:top;border-left:1px solid #ddd }
|
||||
.email-heading { margin:0 0 16px;font-size:15px;color:#333;line-height:1.7 }
|
||||
.email-text { margin:0 0 12px;font-size:13px;line-height:1.8;color:#444 }
|
||||
.email-subtext { margin:0 0 20px;font-size:12px;line-height:1.8;color:#666;font-style:italic }
|
||||
@@ -51,16 +52,25 @@
|
||||
|
||||
/* Responsive */
|
||||
@media only screen and (max-width:480px) {
|
||||
/* Stack layout — convert table rows to blocks */
|
||||
.email-wrap,.email-wrap tbody,.email-wrap tr{ display:block!important;width:100%!important }
|
||||
.email-wrap td{ box-sizing:border-box!important }
|
||||
.email-header { padding-left:16px!important;padding-right:16px!important }
|
||||
.email-card { width:100%!important;display:block!important;border-left:none!important;padding-left:28px!important;padding-right:28px!important;padding-top:0!important }
|
||||
.email-card { width:100%!important;display:block!important;border-left:none!important;padding:0 16px 16px!important }
|
||||
.email-sidebar { width:100%!important;display:block!important;padding:0 16px 16px!important;border-left:none!important;border-top:1px solid #ddd!important }
|
||||
.email-btn { display:block!important;width:auto!important;text-align:center!important }
|
||||
.email-footer { padding-left:16px!important;padding-right:16px!important }
|
||||
/* Prevent content overflow */
|
||||
.email-wrap,.email-wrap td,.email-wrap th{ word-break:break-word!important;overflow-wrap:break-word!important }
|
||||
img{ max-width:100%!important;height:auto!important }
|
||||
pre,code{ white-space:pre-wrap!important;word-break:break-all!important }
|
||||
table{ max-width:100%!important }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body style="margin:0;padding:0;background:#ede4d4;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
|
||||
<center style="width:100%;table-layout:fixed;">
|
||||
<center style="width:100%;">
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="email-wrap">
|
||||
|
||||
<!-- Floating Title -->
|
||||
@@ -70,7 +80,7 @@
|
||||
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="24" height="24" class="email-logo" />
|
||||
<span class="email-brand">{{AppName}}</span>
|
||||
<br />
|
||||
<span style="font-size:11px;color:#888;font-style:italic;">Gitea Mail Templates</span>
|
||||
<span style="font-size:11px;color:#888;font-style:italic;">Git with a cup of tea</span>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@@ -113,7 +123,7 @@
|
||||
|
||||
</td>
|
||||
<!-- right column / sidebar -->
|
||||
<td width="36%" style="padding:24px 28px 16px 0;vertical-align:top;border-left:1px solid #ddd;">
|
||||
<td width="36%" class="email-sidebar">
|
||||
|
||||
<p style="margin:0 0 10px;font-size:10px;color:#888;text-transform:uppercase;letter-spacing:1px;font-family:system-ui,sans-serif;font-weight:700;">Quick Info</p>
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-top:1px solid #ddd;border-bottom:1px solid #ddd;">
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
|
||||
/* Card */
|
||||
.email-card { padding:24px 24px 16px 28px;vertical-align:top;color:#333 }
|
||||
.email-sidebar { padding:24px 28px 16px 0;vertical-align:top;border-left:1px solid #ddd }
|
||||
.email-heading { margin:0 0 16px;font-size:15px;color:#333;line-height:1.7 }
|
||||
.email-text { margin:0 0 12px;font-size:13px;line-height:1.8;color:#444 }
|
||||
.email-subtext { margin:0 0 20px;font-size:12px;line-height:1.8;color:#666;font-style:italic }
|
||||
@@ -51,16 +52,25 @@
|
||||
|
||||
/* Responsive */
|
||||
@media only screen and (max-width:480px) {
|
||||
/* Stack layout — convert table rows to blocks */
|
||||
.email-wrap,.email-wrap tbody,.email-wrap tr{ display:block!important;width:100%!important }
|
||||
.email-wrap td{ box-sizing:border-box!important }
|
||||
.email-header { padding-left:16px!important;padding-right:16px!important }
|
||||
.email-card { width:100%!important;display:block!important;border-left:none!important;padding-left:28px!important;padding-right:28px!important;padding-top:0!important }
|
||||
.email-card { width:100%!important;display:block!important;border-left:none!important;padding:0 16px 16px!important }
|
||||
.email-sidebar { width:100%!important;display:block!important;padding:0 16px 16px!important;border-left:none!important;border-top:1px solid #ddd!important }
|
||||
.email-btn { display:block!important;width:auto!important;text-align:center!important }
|
||||
.email-footer { padding-left:16px!important;padding-right:16px!important }
|
||||
/* Prevent content overflow */
|
||||
.email-wrap,.email-wrap td,.email-wrap th{ word-break:break-word!important;overflow-wrap:break-word!important }
|
||||
img{ max-width:100%!important;height:auto!important }
|
||||
pre,code{ white-space:pre-wrap!important;word-break:break-all!important }
|
||||
table{ max-width:100%!important }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body style="margin:0;padding:0;background:#ede4d4;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
|
||||
<center style="width:100%;table-layout:fixed;">
|
||||
<center style="width:100%;">
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="email-wrap">
|
||||
|
||||
<!-- Floating Title -->
|
||||
@@ -70,7 +80,7 @@
|
||||
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="24" height="24" class="email-logo" />
|
||||
<span class="email-brand">{{AppName}}</span>
|
||||
<br />
|
||||
<span style="font-size:11px;color:#888;font-style:italic;">Gitea Mail Templates</span>
|
||||
<span style="font-size:11px;color:#888;font-style:italic;">Git with a cup of tea</span>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@@ -109,7 +119,7 @@
|
||||
|
||||
</td>
|
||||
<!-- right column / sidebar -->
|
||||
<td width="36%" style="padding:24px 28px 16px 0;vertical-align:top;border-left:1px solid #ddd;">
|
||||
<td width="36%" class="email-sidebar">
|
||||
|
||||
<p style="margin:0 0 10px;font-size:10px;color:#888;text-transform:uppercase;letter-spacing:1px;font-family:system-ui,sans-serif;font-weight:700;">Quick Info</p>
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-top:1px solid #ddd;border-bottom:1px solid #ddd;">
|
||||
|
||||
@@ -150,7 +150,7 @@
|
||||
<ul>
|
||||
{{range .Comment.Commits}}
|
||||
<li>
|
||||
<a href="{{$.Comment.Issue.PullRequest.BaseRepo.HTMLURL}}/commit/{{.ID}}">{{ShortSha .ID.String}}</a> - {{.MessageTitle}}
|
||||
<a href="{{$.Comment.Issue.PullRequest.BaseRepo.HTMLURL}}/commit/{{.UserCommit.GitCommit.ID}}">{{ShortSha .UserCommit.GitCommit.ID.String}}</a> - {{.UserCommit.GitCommit.MessageTitle}}
|
||||
</li>
|
||||
{{end}}
|
||||
</ul>
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<style type="text/css">
|
||||
/* Base */
|
||||
body,.ExternalClass,.ReadMsgBody { background-color:#0a0a0f }
|
||||
.email-wrap { max-width:600px;margin:40px auto;font-family:system-ui,-apple-system,sans-serif;background:#0d0d18;border:1px solid #ff2d95;box-shadow:0 0 20px rgba(255,45,149,0.3),0 0 60px rgba(0,212,255,0.1) }
|
||||
.email-wrap { max-width:600px;margin:40px auto;font-family:system-ui,-apple-system,sans-serif;background:#0d0d18;border:1px solid #ff2d95;box-shadow:0 0 20px #ff2d954d,0 0 60px #00d4ff1a }
|
||||
|
||||
/* Header */
|
||||
.email-logo { display:block;margin:0 auto 14px;border:0;outline:none;opacity:0.5 }
|
||||
@@ -26,20 +26,20 @@
|
||||
.email-subtext { margin:0;font-size:13px;line-height:1.6;color:#64748b;font-weight:400 }
|
||||
|
||||
/* Divider */
|
||||
.email-divider { height:1px;background:linear-gradient(90deg,transparent,rgba(255,45,149,0.3),transparent) }
|
||||
.email-divider { height:1px;background:linear-gradient(90deg,transparent,#ff2d954d,transparent) }
|
||||
|
||||
/* Button */
|
||||
.email-btn-row { padding:40px 40px;text-align:center }
|
||||
.email-btn { display:inline-block;padding:13px 36px;font-size:14px;font-weight:700;color:#0a0a0f!important;text-decoration:none;background:linear-gradient(135deg,#ff2d95,#e0115f);border:1px solid #ff2d95;box-shadow:0 0 16px rgba(255,45,149,0.4);letter-spacing:1px;text-transform:uppercase }
|
||||
.email-btn { display:inline-block;padding:13px 36px;font-size:14px;font-weight:700;color:#0a0a0f!important;text-decoration:none;background:linear-gradient(135deg,#ff2d95,#e0115f);border:1px solid #ff2d95;box-shadow:0 0 16px #ff2d9566;letter-spacing:1px;text-transform:uppercase }
|
||||
.email-btn-table { margin:0 0 24px }
|
||||
|
||||
/* Fallback link */
|
||||
.email-link-box { border:1px solid rgba(0,212,255,0.2);background:rgba(0,212,255,0.04) }
|
||||
.email-link-box { border:1px solid #00d4ff33;background:#00d4ff0a }
|
||||
.email-link-label { margin:0 0 8px;font-size:12px;color:#64748b;font-weight:400 }
|
||||
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#00d4ff;background:rgba(0,0,0,0.3);padding:8px 10px;border:1px solid rgba(0,212,255,0.15);word-break:break-all }
|
||||
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#00d4ff;background:#0000004d;padding:8px 10px;border:1px solid #00d4ff26;word-break:break-all }
|
||||
|
||||
/* Footer */
|
||||
.email-footer { padding:16px 32px;border-top:1px solid rgba(255,45,149,0.15);background:rgba(255,45,149,0.03);text-align:center }
|
||||
.email-footer { padding:16px 32px;border-top:1px solid #ff2d9526;background:#ff2d9508;text-align:center }
|
||||
.email-footer-text { margin:0;font-size:11px;color:#475569;font-weight:400 }
|
||||
.email-footer-link { color:#ff2d95;text-decoration:none;font-weight:600 }
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<style type="text/css">
|
||||
/* Base */
|
||||
body,.ExternalClass,.ReadMsgBody { background-color:#0a0a0f }
|
||||
.email-wrap { max-width:600px;margin:40px auto;font-family:system-ui,-apple-system,sans-serif;background:#0d0d18;border:1px solid #ff2d95;box-shadow:0 0 20px rgba(255,45,149,0.3),0 0 60px rgba(0,212,255,0.1) }
|
||||
.email-wrap { max-width:600px;margin:40px auto;font-family:system-ui,-apple-system,sans-serif;background:#0d0d18;border:1px solid #ff2d95;box-shadow:0 0 20px #ff2d954d,0 0 60px #00d4ff1a }
|
||||
|
||||
/* Header */
|
||||
.email-logo { display:block;margin:0 auto 14px;border:0;outline:none;opacity:0.5 }
|
||||
@@ -26,20 +26,20 @@
|
||||
.email-subtext { margin:0;font-size:13px;line-height:1.6;color:#64748b;font-weight:400 }
|
||||
|
||||
/* Divider */
|
||||
.email-divider { height:1px;background:linear-gradient(90deg,transparent,rgba(255,45,149,0.3),transparent) }
|
||||
.email-divider { height:1px;background:linear-gradient(90deg,transparent,#ff2d954d,transparent) }
|
||||
|
||||
/* Button */
|
||||
.email-btn-row { padding:40px 40px;text-align:center }
|
||||
.email-btn { display:inline-block;padding:13px 36px;font-size:14px;font-weight:700;color:#0a0a0f!important;text-decoration:none;background:linear-gradient(135deg,#ff2d95,#e0115f);border:1px solid #ff2d95;box-shadow:0 0 16px rgba(255,45,149,0.4);letter-spacing:1px;text-transform:uppercase }
|
||||
.email-btn { display:inline-block;padding:13px 36px;font-size:14px;font-weight:700;color:#0a0a0f!important;text-decoration:none;background:linear-gradient(135deg,#ff2d95,#e0115f);border:1px solid #ff2d95;box-shadow:0 0 16px #ff2d9566;letter-spacing:1px;text-transform:uppercase }
|
||||
.email-btn-table { margin:0 0 24px }
|
||||
|
||||
/* Fallback link */
|
||||
.email-link-box { border:1px solid rgba(0,212,255,0.2);background:rgba(0,212,255,0.04) }
|
||||
.email-link-box { border:1px solid #00d4ff33;background:#00d4ff0a }
|
||||
.email-link-label { margin:0 0 8px;font-size:12px;color:#64748b;font-weight:400 }
|
||||
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#00d4ff;background:rgba(0,0,0,0.3);padding:8px 10px;border:1px solid rgba(0,212,255,0.15);word-break:break-all }
|
||||
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#00d4ff;background:#0000004d;padding:8px 10px;border:1px solid #00d4ff26;word-break:break-all }
|
||||
|
||||
/* Footer */
|
||||
.email-footer { padding:16px 32px;border-top:1px solid rgba(255,45,149,0.15);background:rgba(255,45,149,0.03);text-align:center }
|
||||
.email-footer { padding:16px 32px;border-top:1px solid #ff2d9526;background:#ff2d9508;text-align:center }
|
||||
.email-footer-text { margin:0;font-size:11px;color:#475569;font-weight:400 }
|
||||
.email-footer-link { color:#ff2d95;text-decoration:none;font-weight:600 }
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<style type="text/css">
|
||||
/* Base */
|
||||
body,.ExternalClass,.ReadMsgBody { background-color:#0a0a0f }
|
||||
.email-wrap { max-width:600px;margin:40px auto;font-family:system-ui,-apple-system,sans-serif;background:#0d0d18;border:1px solid #ff2d95;box-shadow:0 0 20px rgba(255,45,149,0.3),0 0 60px rgba(0,212,255,0.1) }
|
||||
.email-wrap { max-width:600px;margin:40px auto;font-family:system-ui,-apple-system,sans-serif;background:#0d0d18;border:1px solid #ff2d95;box-shadow:0 0 20px #ff2d954d,0 0 60px #00d4ff1a }
|
||||
|
||||
/* Header */
|
||||
.email-logo { display:block;margin:0 auto 14px;border:0;outline:none;opacity:0.5 }
|
||||
@@ -26,20 +26,20 @@
|
||||
.email-subtext { margin:0;font-size:13px;line-height:1.6;color:#64748b;font-weight:400 }
|
||||
|
||||
/* Divider */
|
||||
.email-divider { height:1px;background:linear-gradient(90deg,transparent,rgba(255,45,149,0.3),transparent) }
|
||||
.email-divider { height:1px;background:linear-gradient(90deg,transparent,#ff2d954d,transparent) }
|
||||
|
||||
/* Button */
|
||||
.email-btn-row { padding:40px 40px;text-align:center }
|
||||
.email-btn { display:inline-block;padding:13px 36px;font-size:14px;font-weight:700;color:#0a0a0f!important;text-decoration:none;background:linear-gradient(135deg,#ff2d95,#e0115f);border:1px solid #ff2d95;box-shadow:0 0 16px rgba(255,45,149,0.4);letter-spacing:1px;text-transform:uppercase }
|
||||
.email-btn { display:inline-block;padding:13px 36px;font-size:14px;font-weight:700;color:#0a0a0f!important;text-decoration:none;background:linear-gradient(135deg,#ff2d95,#e0115f);border:1px solid #ff2d95;box-shadow:0 0 16px #ff2d9566;letter-spacing:1px;text-transform:uppercase }
|
||||
.email-btn-table { margin:0 0 24px }
|
||||
|
||||
/* Fallback link */
|
||||
.email-link-box { border:1px solid rgba(0,212,255,0.2);background:rgba(0,212,255,0.04) }
|
||||
.email-link-box { border:1px solid #00d4ff33;background:#00d4ff0a }
|
||||
.email-link-label { margin:0 0 8px;font-size:12px;color:#64748b;font-weight:400 }
|
||||
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#00d4ff;background:rgba(0,0,0,0.3);padding:8px 10px;border:1px solid rgba(0,212,255,0.15);word-break:break-all }
|
||||
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#00d4ff;background:#0000004d;padding:8px 10px;border:1px solid #00d4ff26;word-break:break-all }
|
||||
|
||||
/* Footer */
|
||||
.email-footer { padding:16px 32px;border-top:1px solid rgba(255,45,149,0.15);background:rgba(255,45,149,0.03);text-align:center }
|
||||
.email-footer { padding:16px 32px;border-top:1px solid #ff2d9526;background:#ff2d9508;text-align:center }
|
||||
.email-footer-text { margin:0;font-size:11px;color:#475569;font-weight:400 }
|
||||
.email-footer-link { color:#ff2d95;text-decoration:none;font-weight:600 }
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<style type="text/css">
|
||||
/* Base */
|
||||
body,.ExternalClass,.ReadMsgBody { background-color:#0a0a0f }
|
||||
.email-wrap { max-width:600px;margin:40px auto;font-family:system-ui,-apple-system,sans-serif;background:#0d0d18;border:1px solid #ff2d95;box-shadow:0 0 20px rgba(255,45,149,0.3),0 0 60px rgba(0,212,255,0.1) }
|
||||
.email-wrap { max-width:600px;margin:40px auto;font-family:system-ui,-apple-system,sans-serif;background:#0d0d18;border:1px solid #ff2d95;box-shadow:0 0 20px #ff2d954d,0 0 60px #00d4ff1a }
|
||||
|
||||
/* Header */
|
||||
.email-logo { display:block;margin:0 auto 14px;border:0;outline:none;opacity:0.5 }
|
||||
@@ -26,20 +26,20 @@
|
||||
.email-subtext { margin:0;font-size:13px;line-height:1.6;color:#64748b;font-weight:400 }
|
||||
|
||||
/* Divider */
|
||||
.email-divider { height:1px;background:linear-gradient(90deg,transparent,rgba(255,45,149,0.3),transparent) }
|
||||
.email-divider { height:1px;background:linear-gradient(90deg,transparent,#ff2d954d,transparent) }
|
||||
|
||||
/* Button */
|
||||
.email-btn-row { padding:40px 40px;text-align:center }
|
||||
.email-btn { display:inline-block;padding:13px 36px;font-size:14px;font-weight:700;color:#0a0a0f!important;text-decoration:none;background:linear-gradient(135deg,#ff2d95,#e0115f);border:1px solid #ff2d95;box-shadow:0 0 16px rgba(255,45,149,0.4);letter-spacing:1px;text-transform:uppercase }
|
||||
.email-btn { display:inline-block;padding:13px 36px;font-size:14px;font-weight:700;color:#0a0a0f!important;text-decoration:none;background:linear-gradient(135deg,#ff2d95,#e0115f);border:1px solid #ff2d95;box-shadow:0 0 16px #ff2d9566;letter-spacing:1px;text-transform:uppercase }
|
||||
.email-btn-table { margin:0 0 24px }
|
||||
|
||||
/* Fallback link */
|
||||
.email-link-box { border:1px solid rgba(0,212,255,0.2);background:rgba(0,212,255,0.04) }
|
||||
.email-link-box { border:1px solid #00d4ff33;background:#00d4ff0a }
|
||||
.email-link-label { margin:0 0 8px;font-size:12px;color:#64748b;font-weight:400 }
|
||||
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#00d4ff;background:rgba(0,0,0,0.3);padding:8px 10px;border:1px solid rgba(0,212,255,0.15);word-break:break-all }
|
||||
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#00d4ff;background:#0000004d;padding:8px 10px;border:1px solid #00d4ff26;word-break:break-all }
|
||||
|
||||
/* Footer */
|
||||
.email-footer { padding:16px 32px;border-top:1px solid rgba(255,45,149,0.15);background:rgba(255,45,149,0.03);text-align:center }
|
||||
.email-footer { padding:16px 32px;border-top:1px solid #ff2d9526;background:#ff2d9508;text-align:center }
|
||||
.email-footer-text { margin:0;font-size:11px;color:#475569;font-weight:400 }
|
||||
.email-footer-link { color:#ff2d95;text-decoration:none;font-weight:600 }
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<style type="text/css">
|
||||
/* Base */
|
||||
body,.ExternalClass,.ReadMsgBody { background-color:#0a0a0f }
|
||||
.email-wrap { max-width:600px;margin:40px auto;font-family:system-ui,-apple-system,sans-serif;background:#0d0d18;border:1px solid #ff2d95;box-shadow:0 0 20px rgba(255,45,149,0.3),0 0 60px rgba(0,212,255,0.1) }
|
||||
.email-wrap { max-width:600px;margin:40px auto;font-family:system-ui,-apple-system,sans-serif;background:#0d0d18;border:1px solid #ff2d95;box-shadow:0 0 20px #ff2d954d,0 0 60px #00d4ff1a }
|
||||
|
||||
/* Header */
|
||||
.email-logo { display:block;margin:0 auto 14px;border:0;outline:none;opacity:0.5 }
|
||||
@@ -26,20 +26,20 @@
|
||||
.email-subtext { margin:0;font-size:13px;line-height:1.6;color:#64748b;font-weight:400 }
|
||||
|
||||
/* Divider */
|
||||
.email-divider { height:1px;background:linear-gradient(90deg,transparent,rgba(255,45,149,0.3),transparent) }
|
||||
.email-divider { height:1px;background:linear-gradient(90deg,transparent,#ff2d954d,transparent) }
|
||||
|
||||
/* Button */
|
||||
.email-btn-row { padding:40px 40px;text-align:center }
|
||||
.email-btn { display:inline-block;padding:13px 36px;font-size:14px;font-weight:700;color:#0a0a0f!important;text-decoration:none;background:linear-gradient(135deg,#ff2d95,#e0115f);border:1px solid #ff2d95;box-shadow:0 0 16px rgba(255,45,149,0.4);letter-spacing:1px;text-transform:uppercase }
|
||||
.email-btn { display:inline-block;padding:13px 36px;font-size:14px;font-weight:700;color:#0a0a0f!important;text-decoration:none;background:linear-gradient(135deg,#ff2d95,#e0115f);border:1px solid #ff2d95;box-shadow:0 0 16px #ff2d9566;letter-spacing:1px;text-transform:uppercase }
|
||||
.email-btn-table { margin:0 0 24px }
|
||||
|
||||
/* Fallback link */
|
||||
.email-link-box { border:1px solid rgba(0,212,255,0.2);background:rgba(0,212,255,0.04) }
|
||||
.email-link-box { border:1px solid #00d4ff33;background:#00d4ff0a }
|
||||
.email-link-label { margin:0 0 8px;font-size:12px;color:#64748b;font-weight:400 }
|
||||
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#00d4ff;background:rgba(0,0,0,0.3);padding:8px 10px;border:1px solid rgba(0,212,255,0.15);word-break:break-all }
|
||||
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#00d4ff;background:#0000004d;padding:8px 10px;border:1px solid #00d4ff26;word-break:break-all }
|
||||
|
||||
/* Footer */
|
||||
.email-footer { padding:16px 32px;border-top:1px solid rgba(255,45,149,0.15);background:rgba(255,45,149,0.03);text-align:center }
|
||||
.email-footer { padding:16px 32px;border-top:1px solid #ff2d9526;background:#ff2d9508;text-align:center }
|
||||
.email-footer-text { margin:0;font-size:11px;color:#475569;font-weight:400 }
|
||||
.email-footer-link { color:#ff2d95;text-decoration:none;font-weight:600 }
|
||||
|
||||
@@ -49,8 +49,8 @@
|
||||
.card-body a:hover,.card-body a:active { color:#ff6db5!important }
|
||||
.card-body li { color:#cbd5e1!important }
|
||||
.card-body blockquote { padding-left:1em;margin:1em 0;border-left:2px solid #ff00ff;color:#aaa }
|
||||
.card-body code,.card-body pre { color:#00d4ff;background:rgba(0,0,0,0.3);border:1px solid rgba(0,212,255,0.15) }
|
||||
.card-body hr { border-color:rgba(255,45,149,0.3) }
|
||||
.card-body code,.card-body pre { color:#00d4ff;background:#0000004d;border:1px solid #00d4ff26 }
|
||||
.card-body hr { border-color:#ff2d954d }
|
||||
|
||||
/* Responsive */
|
||||
@media only screen and (max-width:480px) {
|
||||
@@ -142,7 +142,7 @@
|
||||
<ul>
|
||||
{{range .Comment.Commits}}
|
||||
<li>
|
||||
<a href="{{$.Comment.Issue.PullRequest.BaseRepo.HTMLURL}}/commit/{{.ID}}">{{ShortSha .ID.String}}</a> - {{.MessageTitle}}
|
||||
<a href="{{$.Comment.Issue.PullRequest.BaseRepo.HTMLURL}}/commit/{{.UserCommit.GitCommit.ID}}">{{ShortSha .UserCommit.GitCommit.ID.String}}</a> - {{.UserCommit.GitCommit.MessageTitle}}
|
||||
</li>
|
||||
{{end}}
|
||||
</ul>
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<style type="text/css">
|
||||
/* Base */
|
||||
body,.ExternalClass,.ReadMsgBody { background-color:#0a0a0f }
|
||||
.email-wrap { max-width:600px;margin:40px auto;font-family:system-ui,-apple-system,sans-serif;background:#0d0d18;border:1px solid #ff2d95;box-shadow:0 0 20px rgba(255,45,149,0.3),0 0 60px rgba(0,212,255,0.1) }
|
||||
.email-wrap { max-width:600px;margin:40px auto;font-family:system-ui,-apple-system,sans-serif;background:#0d0d18;border:1px solid #ff2d95;box-shadow:0 0 20px #ff2d954d,0 0 60px #00d4ff1a }
|
||||
|
||||
/* Header */
|
||||
.email-logo { display:block;margin:0 auto 14px;border:0;outline:none;opacity:0.5 }
|
||||
@@ -26,20 +26,20 @@
|
||||
.email-subtext { margin:0;font-size:13px;line-height:1.6;color:#64748b;font-weight:400 }
|
||||
|
||||
/* Divider */
|
||||
.email-divider { height:1px;background:linear-gradient(90deg,transparent,rgba(255,45,149,0.3),transparent) }
|
||||
.email-divider { height:1px;background:linear-gradient(90deg,transparent,#ff2d954d,transparent) }
|
||||
|
||||
/* Button */
|
||||
.email-btn-row { padding:40px 40px;text-align:center }
|
||||
.email-btn { display:inline-block;padding:13px 36px;font-size:14px;font-weight:700;color:#0a0a0f!important;text-decoration:none;background:linear-gradient(135deg,#ff2d95,#e0115f);border:1px solid #ff2d95;box-shadow:0 0 16px rgba(255,45,149,0.4);letter-spacing:1px;text-transform:uppercase }
|
||||
.email-btn { display:inline-block;padding:13px 36px;font-size:14px;font-weight:700;color:#0a0a0f!important;text-decoration:none;background:linear-gradient(135deg,#ff2d95,#e0115f);border:1px solid #ff2d95;box-shadow:0 0 16px #ff2d9566;letter-spacing:1px;text-transform:uppercase }
|
||||
.email-btn-table { margin:0 0 24px }
|
||||
|
||||
/* Fallback link */
|
||||
.email-link-box { border:1px solid rgba(0,212,255,0.2);background:rgba(0,212,255,0.04) }
|
||||
.email-link-box { border:1px solid #00d4ff33;background:#00d4ff0a }
|
||||
.email-link-label { margin:0 0 8px;font-size:12px;color:#64748b;font-weight:400 }
|
||||
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#00d4ff;background:rgba(0,0,0,0.3);padding:8px 10px;border:1px solid rgba(0,212,255,0.15);word-break:break-all }
|
||||
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#00d4ff;background:#0000004d;padding:8px 10px;border:1px solid #00d4ff26;word-break:break-all }
|
||||
|
||||
/* Footer */
|
||||
.email-footer { padding:16px 32px;border-top:1px solid rgba(255,45,149,0.15);background:rgba(255,45,149,0.03);text-align:center }
|
||||
.email-footer { padding:16px 32px;border-top:1px solid #ff2d9526;background:#ff2d9508;text-align:center }
|
||||
.email-footer-text { margin:0;font-size:11px;color:#475569;font-weight:400 }
|
||||
.email-footer-link { color:#ff2d95;text-decoration:none;font-weight:600 }
|
||||
|
||||
@@ -48,9 +48,9 @@
|
||||
.card-body a,.card-body a:link,.card-body a:visited { color:#ff2d95!important;text-decoration:underline!important }
|
||||
.card-body a:hover,.card-body a:active { color:#ff6db5!important }
|
||||
.card-body li { color:#cbd5e1!important }
|
||||
.card-body code,.card-body pre { color:#00d4ff;background:rgba(0,0,0,0.3);border:1px solid rgba(0,212,255,0.15) }
|
||||
.card-body blockquote { color:rgba(255,255,255,0.6);border-left:2px solid rgba(0,212,255,0.2);padding-left:1em;margin:1em 0 }
|
||||
.card-body hr { border-color:rgba(255,45,149,0.3) }
|
||||
.card-body code,.card-body pre { color:#00d4ff;background:#0000004d;border:1px solid #00d4ff26 }
|
||||
.card-body blockquote { color:#ffffff99;border-left:2px solid #00d4ff33;padding-left:1em;margin:1em 0 }
|
||||
.card-body hr { border-color:#ff2d954d }
|
||||
|
||||
/* Responsive */
|
||||
@media only screen and (max-width:480px) {
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<style type="text/css">
|
||||
/* Base */
|
||||
body,.ExternalClass,.ReadMsgBody { background-color:#0a0a0f }
|
||||
.email-wrap { max-width:600px;margin:40px auto;font-family:system-ui,-apple-system,sans-serif;background:#0d0d18;border:1px solid #ff2d95;box-shadow:0 0 20px rgba(255,45,149,0.3),0 0 60px rgba(0,212,255,0.1) }
|
||||
.email-wrap { max-width:600px;margin:40px auto;font-family:system-ui,-apple-system,sans-serif;background:#0d0d18;border:1px solid #ff2d95;box-shadow:0 0 20px #ff2d954d,0 0 60px #00d4ff1a }
|
||||
|
||||
/* Header */
|
||||
.email-logo { display:block;margin:0 auto 14px;border:0;outline:none;opacity:0.5 }
|
||||
@@ -26,20 +26,20 @@
|
||||
.email-subtext { margin:0;font-size:13px;line-height:1.6;color:#64748b;font-weight:400 }
|
||||
|
||||
/* Divider */
|
||||
.email-divider { height:1px;background:linear-gradient(90deg,transparent,rgba(255,45,149,0.3),transparent) }
|
||||
.email-divider { height:1px;background:linear-gradient(90deg,transparent,#ff2d954d,transparent) }
|
||||
|
||||
/* Button */
|
||||
.email-btn-row { padding:40px 40px;text-align:center }
|
||||
.email-btn { display:inline-block;padding:13px 36px;font-size:14px;font-weight:700;color:#0a0a0f!important;text-decoration:none;background:linear-gradient(135deg,#ff2d95,#e0115f);border:1px solid #ff2d95;box-shadow:0 0 16px rgba(255,45,149,0.4);letter-spacing:1px;text-transform:uppercase }
|
||||
.email-btn { display:inline-block;padding:13px 36px;font-size:14px;font-weight:700;color:#0a0a0f!important;text-decoration:none;background:linear-gradient(135deg,#ff2d95,#e0115f);border:1px solid #ff2d95;box-shadow:0 0 16px #ff2d9566;letter-spacing:1px;text-transform:uppercase }
|
||||
.email-btn-table { margin:0 0 24px }
|
||||
|
||||
/* Fallback link */
|
||||
.email-link-box { border:1px solid rgba(0,212,255,0.2);background:rgba(0,212,255,0.04) }
|
||||
.email-link-box { border:1px solid #00d4ff33;background:#00d4ff0a }
|
||||
.email-link-label { margin:0 0 8px;font-size:12px;color:#64748b;font-weight:400 }
|
||||
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#00d4ff;background:rgba(0,0,0,0.3);padding:8px 10px;border:1px solid rgba(0,212,255,0.15);word-break:break-all }
|
||||
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#00d4ff;background:#0000004d;padding:8px 10px;border:1px solid #00d4ff26;word-break:break-all }
|
||||
|
||||
/* Footer */
|
||||
.email-footer { padding:16px 32px;border-top:1px solid rgba(255,45,149,0.15);background:rgba(255,45,149,0.03);text-align:center }
|
||||
.email-footer { padding:16px 32px;border-top:1px solid #ff2d9526;background:#ff2d9508;text-align:center }
|
||||
.email-footer-text { margin:0;font-size:11px;color:#475569;font-weight:400 }
|
||||
.email-footer-link { color:#ff2d95;text-decoration:none;font-weight:600 }
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<style type="text/css">
|
||||
/* Base */
|
||||
body,.ExternalClass,.ReadMsgBody { background-color:#0a0a0f }
|
||||
.email-wrap { max-width:600px;margin:40px auto;font-family:system-ui,-apple-system,sans-serif;background:#0d0d18;border:1px solid #ff2d95;box-shadow:0 0 20px rgba(255,45,149,0.3),0 0 60px rgba(0,212,255,0.1) }
|
||||
.email-wrap { max-width:600px;margin:40px auto;font-family:system-ui,-apple-system,sans-serif;background:#0d0d18;border:1px solid #ff2d95;box-shadow:0 0 20px #ff2d954d,0 0 60px #00d4ff1a }
|
||||
|
||||
/* Header */
|
||||
.email-logo { display:block;margin:0 auto 14px;border:0;outline:none;opacity:0.5 }
|
||||
@@ -26,20 +26,20 @@
|
||||
.email-subtext { margin:0;font-size:13px;line-height:1.6;color:#64748b;font-weight:400 }
|
||||
|
||||
/* Divider */
|
||||
.email-divider { height:1px;background:linear-gradient(90deg,transparent,rgba(255,45,149,0.3),transparent) }
|
||||
.email-divider { height:1px;background:linear-gradient(90deg,transparent,#ff2d954d,transparent) }
|
||||
|
||||
/* Button */
|
||||
.email-btn-row { padding:40px 40px;text-align:center }
|
||||
.email-btn { display:inline-block;padding:13px 36px;font-size:14px;font-weight:700;color:#0a0a0f!important;text-decoration:none;background:linear-gradient(135deg,#ff2d95,#e0115f);border:1px solid #ff2d95;box-shadow:0 0 16px rgba(255,45,149,0.4);letter-spacing:1px;text-transform:uppercase }
|
||||
.email-btn { display:inline-block;padding:13px 36px;font-size:14px;font-weight:700;color:#0a0a0f!important;text-decoration:none;background:linear-gradient(135deg,#ff2d95,#e0115f);border:1px solid #ff2d95;box-shadow:0 0 16px #ff2d9566;letter-spacing:1px;text-transform:uppercase }
|
||||
.email-btn-table { margin:0 0 24px }
|
||||
|
||||
/* Fallback link */
|
||||
.email-link-box { border:1px solid rgba(0,212,255,0.2);background:rgba(0,212,255,0.04) }
|
||||
.email-link-box { border:1px solid #00d4ff33;background:#00d4ff0a }
|
||||
.email-link-label { margin:0 0 8px;font-size:12px;color:#64748b;font-weight:400 }
|
||||
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#00d4ff;background:rgba(0,0,0,0.3);padding:8px 10px;border:1px solid rgba(0,212,255,0.15);word-break:break-all }
|
||||
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#00d4ff;background:#0000004d;padding:8px 10px;border:1px solid #00d4ff26;word-break:break-all }
|
||||
|
||||
/* Footer */
|
||||
.email-footer { padding:16px 32px;border-top:1px solid rgba(255,45,149,0.15);background:rgba(255,45,149,0.03);text-align:center }
|
||||
.email-footer { padding:16px 32px;border-top:1px solid #ff2d9526;background:#ff2d9508;text-align:center }
|
||||
.email-footer-text { margin:0;font-size:11px;color:#475569;font-weight:400 }
|
||||
.email-footer-link { color:#ff2d95;text-decoration:none;font-weight:600 }
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<style type="text/css">
|
||||
/* Base */
|
||||
body,.ExternalClass,.ReadMsgBody { background-color:#0a0a0f }
|
||||
.email-wrap { max-width:600px;margin:40px auto;font-family:system-ui,-apple-system,sans-serif;background:#0d0d18;border:1px solid #ff2d95;box-shadow:0 0 20px rgba(255,45,149,0.3),0 0 60px rgba(0,212,255,0.1) }
|
||||
.email-wrap { max-width:600px;margin:40px auto;font-family:system-ui,-apple-system,sans-serif;background:#0d0d18;border:1px solid #ff2d95;box-shadow:0 0 20px #ff2d954d,0 0 60px #00d4ff1a }
|
||||
|
||||
/* Header */
|
||||
.email-logo { display:block;margin:0 auto 14px;border:0;outline:none;opacity:0.5 }
|
||||
@@ -26,20 +26,20 @@
|
||||
.email-subtext { margin:0;font-size:13px;line-height:1.6;color:#64748b;font-weight:400 }
|
||||
|
||||
/* Divider */
|
||||
.email-divider { height:1px;background:linear-gradient(90deg,transparent,rgba(255,45,149,0.3),transparent) }
|
||||
.email-divider { height:1px;background:linear-gradient(90deg,transparent,#ff2d954d,transparent) }
|
||||
|
||||
/* Button */
|
||||
.email-btn-row { padding:40px 40px;text-align:center }
|
||||
.email-btn { display:inline-block;padding:13px 36px;font-size:14px;font-weight:700;color:#0a0a0f!important;text-decoration:none;background:linear-gradient(135deg,#ff2d95,#e0115f);border:1px solid #ff2d95;box-shadow:0 0 16px rgba(255,45,149,0.4);letter-spacing:1px;text-transform:uppercase }
|
||||
.email-btn { display:inline-block;padding:13px 36px;font-size:14px;font-weight:700;color:#0a0a0f!important;text-decoration:none;background:linear-gradient(135deg,#ff2d95,#e0115f);border:1px solid #ff2d95;box-shadow:0 0 16px #ff2d9566;letter-spacing:1px;text-transform:uppercase }
|
||||
.email-btn-table { margin:0 0 24px }
|
||||
|
||||
/* Fallback link */
|
||||
.email-link-box { border:1px solid rgba(0,212,255,0.2);background:rgba(0,212,255,0.04) }
|
||||
.email-link-box { border:1px solid #00d4ff33;background:#00d4ff0a }
|
||||
.email-link-label { margin:0 0 8px;font-size:12px;color:#64748b;font-weight:400 }
|
||||
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#00d4ff;background:rgba(0,0,0,0.3);padding:8px 10px;border:1px solid rgba(0,212,255,0.15);word-break:break-all }
|
||||
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#00d4ff;background:#0000004d;padding:8px 10px;border:1px solid #00d4ff26;word-break:break-all }
|
||||
|
||||
/* Footer */
|
||||
.email-footer { padding:16px 32px;border-top:1px solid rgba(255,45,149,0.15);background:rgba(255,45,149,0.03);text-align:center }
|
||||
.email-footer { padding:16px 32px;border-top:1px solid #ff2d9526;background:#ff2d9508;text-align:center }
|
||||
.email-footer-text { margin:0;font-size:11px;color:#475569;font-weight:400 }
|
||||
.email-footer-link { color:#ff2d95;text-decoration:none;font-weight:600 }
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<style type="text/css">
|
||||
/* Base */
|
||||
body,.ExternalClass,.ReadMsgBody { background-color:#0a0a0f }
|
||||
.email-wrap { max-width:600px;margin:40px auto;font-family:system-ui,-apple-system,sans-serif;background:#0d0d18;border:1px solid #ff2d95;box-shadow:0 0 20px rgba(255,45,149,0.3),0 0 60px rgba(0,212,255,0.1) }
|
||||
.email-wrap { max-width:600px;margin:40px auto;font-family:system-ui,-apple-system,sans-serif;background:#0d0d18;border:1px solid #ff2d95;box-shadow:0 0 20px #ff2d954d,0 0 60px #00d4ff1a }
|
||||
|
||||
/* Header */
|
||||
.email-logo { display:block;margin:0 auto 14px;border:0;outline:none;opacity:0.5 }
|
||||
@@ -26,20 +26,20 @@
|
||||
.email-subtext { margin:0;font-size:13px;line-height:1.6;color:#64748b;font-weight:400 }
|
||||
|
||||
/* Divider */
|
||||
.email-divider { height:1px;background:linear-gradient(90deg,transparent,rgba(255,45,149,0.3),transparent) }
|
||||
.email-divider { height:1px;background:linear-gradient(90deg,transparent,#ff2d954d,transparent) }
|
||||
|
||||
/* Button */
|
||||
.email-btn-row { padding:40px 40px;text-align:center }
|
||||
.email-btn { display:inline-block;padding:13px 36px;font-size:14px;font-weight:700;color:#0a0a0f!important;text-decoration:none;background:linear-gradient(135deg,#ff2d95,#e0115f);border:1px solid #ff2d95;box-shadow:0 0 16px rgba(255,45,149,0.4);letter-spacing:1px;text-transform:uppercase }
|
||||
.email-btn { display:inline-block;padding:13px 36px;font-size:14px;font-weight:700;color:#0a0a0f!important;text-decoration:none;background:linear-gradient(135deg,#ff2d95,#e0115f);border:1px solid #ff2d95;box-shadow:0 0 16px #ff2d9566;letter-spacing:1px;text-transform:uppercase }
|
||||
.email-btn-table { margin:0 0 24px }
|
||||
|
||||
/* Fallback link */
|
||||
.email-link-box { border:1px solid rgba(0,212,255,0.2);background:rgba(0,212,255,0.04) }
|
||||
.email-link-box { border:1px solid #00d4ff33;background:#00d4ff0a }
|
||||
.email-link-label { margin:0 0 8px;font-size:12px;color:#64748b;font-weight:400 }
|
||||
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#00d4ff;background:rgba(0,0,0,0.3);padding:8px 10px;border:1px solid rgba(0,212,255,0.15);word-break:break-all }
|
||||
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#00d4ff;background:#0000004d;padding:8px 10px;border:1px solid #00d4ff26;word-break:break-all }
|
||||
|
||||
/* Footer */
|
||||
.email-footer { padding:16px 32px;border-top:1px solid rgba(255,45,149,0.15);background:rgba(255,45,149,0.03);text-align:center }
|
||||
.email-footer { padding:16px 32px;border-top:1px solid #ff2d9526;background:#ff2d9508;text-align:center }
|
||||
.email-footer-text { margin:0;font-size:11px;color:#475569;font-weight:400 }
|
||||
.email-footer-link { color:#ff2d95;text-decoration:none;font-weight:600 }
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<style type="text/css">
|
||||
/* Base */
|
||||
body,.ExternalClass,.ReadMsgBody { background-color:#0a0a0f }
|
||||
.email-wrap { max-width:600px;margin:40px auto;font-family:system-ui,-apple-system,sans-serif;background:#0d0d18;border:1px solid #ff2d95;box-shadow:0 0 20px rgba(255,45,149,0.3),0 0 60px rgba(0,212,255,0.1) }
|
||||
.email-wrap { max-width:600px;margin:40px auto;font-family:system-ui,-apple-system,sans-serif;background:#0d0d18;border:1px solid #ff2d95;box-shadow:0 0 20px #ff2d954d,0 0 60px #00d4ff1a }
|
||||
|
||||
/* Header */
|
||||
.email-logo { display:block;margin:0 auto 14px;border:0;outline:none;opacity:0.5 }
|
||||
@@ -26,20 +26,20 @@
|
||||
.email-subtext { margin:0;font-size:13px;line-height:1.6;color:#64748b;font-weight:400 }
|
||||
|
||||
/* Divider */
|
||||
.email-divider { height:1px;background:linear-gradient(90deg,transparent,rgba(255,45,149,0.3),transparent) }
|
||||
.email-divider { height:1px;background:linear-gradient(90deg,transparent,#ff2d954d,transparent) }
|
||||
|
||||
/* Button */
|
||||
.email-btn-row { padding:40px 40px;text-align:center }
|
||||
.email-btn { display:inline-block;padding:13px 36px;font-size:14px;font-weight:700;color:#0a0a0f!important;text-decoration:none;background:linear-gradient(135deg,#ff2d95,#e0115f);border:1px solid #ff2d95;box-shadow:0 0 16px rgba(255,45,149,0.4);letter-spacing:1px;text-transform:uppercase }
|
||||
.email-btn { display:inline-block;padding:13px 36px;font-size:14px;font-weight:700;color:#0a0a0f!important;text-decoration:none;background:linear-gradient(135deg,#ff2d95,#e0115f);border:1px solid #ff2d95;box-shadow:0 0 16px #ff2d9566;letter-spacing:1px;text-transform:uppercase }
|
||||
.email-btn-table { margin:0 0 24px }
|
||||
|
||||
/* Fallback link */
|
||||
.email-link-box { border:1px solid rgba(0,212,255,0.2);background:rgba(0,212,255,0.04) }
|
||||
.email-link-box { border:1px solid #00d4ff33;background:#00d4ff0a }
|
||||
.email-link-label { margin:0 0 8px;font-size:12px;color:#64748b;font-weight:400 }
|
||||
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#00d4ff;background:rgba(0,0,0,0.3);padding:8px 10px;border:1px solid rgba(0,212,255,0.15);word-break:break-all }
|
||||
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#00d4ff;background:#0000004d;padding:8px 10px;border:1px solid #00d4ff26;word-break:break-all }
|
||||
|
||||
/* Footer */
|
||||
.email-footer { padding:16px 32px;border-top:1px solid rgba(255,45,149,0.15);background:rgba(255,45,149,0.03);text-align:center }
|
||||
.email-footer { padding:16px 32px;border-top:1px solid #ff2d9526;background:#ff2d9508;text-align:center }
|
||||
.email-footer-text { margin:0;font-size:11px;color:#475569;font-weight:400 }
|
||||
.email-footer-link { color:#ff2d95;text-decoration:none;font-weight:600 }
|
||||
|
||||
|
||||
@@ -140,7 +140,7 @@
|
||||
<ul>
|
||||
{{range .Comment.Commits}}
|
||||
<li>
|
||||
<a href="{{$.Comment.Issue.PullRequest.BaseRepo.HTMLURL}}/commit/{{.ID}}">{{ShortSha .ID.String}}</a> - {{.MessageTitle}}
|
||||
<a href="{{$.Comment.Issue.PullRequest.BaseRepo.HTMLURL}}/commit/{{.UserCommit.GitCommit.ID}}">{{ShortSha .UserCommit.GitCommit.ID.String}}</a> - {{.UserCommit.GitCommit.MessageTitle}}
|
||||
</li>
|
||||
{{end}}
|
||||
</ul>
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
/* Header */
|
||||
.email-logo { display:block;margin:0 auto 10px;border:0;outline:none }
|
||||
.email-brand { font-size:20px;font-weight:700;color:#fff;letter-spacing:1px;text-shadow:0 1px 2px rgba(0,0,0,0.1) }
|
||||
.email-brand { font-size:20px;font-weight:700;color:#fff;letter-spacing:1px;text-shadow:0 1px 2px #0000001a }
|
||||
.email-header { padding:0;background:linear-gradient(180deg,#c67b5c,#d4956e,#e8c4a8);height:100px;text-align:center;vertical-align:bottom }
|
||||
|
||||
/* Card */
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
/* Header */
|
||||
.email-logo { display:block;margin:0 auto 10px;border:0;outline:none }
|
||||
.email-brand { font-size:20px;font-weight:700;color:#fff;letter-spacing:1px;text-shadow:0 1px 2px rgba(0,0,0,0.1) }
|
||||
.email-brand { font-size:20px;font-weight:700;color:#fff;letter-spacing:1px;text-shadow:0 1px 2px #0000001a }
|
||||
.email-header { padding:0;background:linear-gradient(180deg,#c67b5c,#d4956e,#e8c4a8);height:100px;text-align:center;vertical-align:bottom }
|
||||
|
||||
/* Card */
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
/* Header */
|
||||
.email-logo { display:block;margin:0 auto 10px;border:0;outline:none }
|
||||
.email-brand { font-size:20px;font-weight:700;color:#fff;letter-spacing:1px;text-shadow:0 1px 2px rgba(0,0,0,0.1) }
|
||||
.email-brand { font-size:20px;font-weight:700;color:#fff;letter-spacing:1px;text-shadow:0 1px 2px #0000001a }
|
||||
.email-header { padding:0;background:linear-gradient(180deg,#c67b5c,#d4956e,#e8c4a8);height:100px;text-align:center;vertical-align:bottom }
|
||||
|
||||
/* Card */
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
/* Header */
|
||||
.email-logo { display:block;margin:0 auto 10px;border:0;outline:none }
|
||||
.email-brand { font-size:20px;font-weight:700;color:#fff;letter-spacing:1px;text-shadow:0 1px 2px rgba(0,0,0,0.1) }
|
||||
.email-brand { font-size:20px;font-weight:700;color:#fff;letter-spacing:1px;text-shadow:0 1px 2px #0000001a }
|
||||
.email-header { padding:0;background:linear-gradient(180deg,#c67b5c,#d4956e,#e8c4a8);height:100px;text-align:center;vertical-align:bottom }
|
||||
|
||||
/* Card */
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
/* Header */
|
||||
.email-logo { display:block;margin:0 auto 10px;border:0;outline:none }
|
||||
.email-brand { font-size:20px;font-weight:700;color:#fff;letter-spacing:1px;text-shadow:0 1px 2px rgba(0,0,0,0.1) }
|
||||
.email-brand { font-size:20px;font-weight:700;color:#fff;letter-spacing:1px;text-shadow:0 1px 2px #0000001a }
|
||||
.email-header { padding:0;background:linear-gradient(180deg,#c67b5c,#d4956e,#e8c4a8);height:100px;text-align:center;vertical-align:bottom }
|
||||
|
||||
/* Card */
|
||||
@@ -141,7 +141,7 @@
|
||||
<ul>
|
||||
{{range .Comment.Commits}}
|
||||
<li>
|
||||
<a href="{{$.Comment.Issue.PullRequest.BaseRepo.HTMLURL}}/commit/{{.ID}}">{{ShortSha .ID.String}}</a> - {{.MessageTitle}}
|
||||
<a href="{{$.Comment.Issue.PullRequest.BaseRepo.HTMLURL}}/commit/{{.UserCommit.GitCommit.ID}}">{{ShortSha .UserCommit.GitCommit.ID.String}}</a> - {{.UserCommit.GitCommit.MessageTitle}}
|
||||
</li>
|
||||
{{end}}
|
||||
</ul>
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
/* Header */
|
||||
.email-logo { display:block;margin:0 auto 10px;border:0;outline:none }
|
||||
.email-brand { font-size:20px;font-weight:700;color:#fff;letter-spacing:1px;text-shadow:0 1px 2px rgba(0,0,0,0.1) }
|
||||
.email-brand { font-size:20px;font-weight:700;color:#fff;letter-spacing:1px;text-shadow:0 1px 2px #0000001a }
|
||||
.email-header { padding:0;background:linear-gradient(180deg,#c67b5c,#d4956e,#e8c4a8);height:100px;text-align:center;vertical-align:bottom }
|
||||
|
||||
/* Card */
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
/* Header */
|
||||
.email-logo { display:block;margin:0 auto 10px;border:0;outline:none }
|
||||
.email-brand { font-size:20px;font-weight:700;color:#fff;letter-spacing:1px;text-shadow:0 1px 2px rgba(0,0,0,0.1) }
|
||||
.email-brand { font-size:20px;font-weight:700;color:#fff;letter-spacing:1px;text-shadow:0 1px 2px #0000001a }
|
||||
.email-header { padding:0;background:linear-gradient(180deg,#c67b5c,#d4956e,#e8c4a8);height:100px;text-align:center;vertical-align:bottom }
|
||||
|
||||
/* Card */
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
/* Header */
|
||||
.email-logo { display:block;margin:0 auto 10px;border:0;outline:none }
|
||||
.email-brand { font-size:20px;font-weight:700;color:#fff;letter-spacing:1px;text-shadow:0 1px 2px rgba(0,0,0,0.1) }
|
||||
.email-brand { font-size:20px;font-weight:700;color:#fff;letter-spacing:1px;text-shadow:0 1px 2px #0000001a }
|
||||
.email-header { padding:0;background:linear-gradient(180deg,#c67b5c,#d4956e,#e8c4a8);height:100px;text-align:center;vertical-align:bottom }
|
||||
|
||||
/* Card */
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
/* Header */
|
||||
.email-logo { display:block;margin:0 auto 10px;border:0;outline:none }
|
||||
.email-brand { font-size:20px;font-weight:700;color:#fff;letter-spacing:1px;text-shadow:0 1px 2px rgba(0,0,0,0.1) }
|
||||
.email-brand { font-size:20px;font-weight:700;color:#fff;letter-spacing:1px;text-shadow:0 1px 2px #0000001a }
|
||||
.email-header { padding:0;background:linear-gradient(180deg,#c67b5c,#d4956e,#e8c4a8);height:100px;text-align:center;vertical-align:bottom }
|
||||
|
||||
/* Card */
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
/* Header */
|
||||
.email-logo { display:block;margin:0 auto 10px;border:0;outline:none }
|
||||
.email-brand { font-size:20px;font-weight:700;color:#fff;letter-spacing:1px;text-shadow:0 1px 2px rgba(0,0,0,0.1) }
|
||||
.email-brand { font-size:20px;font-weight:700;color:#fff;letter-spacing:1px;text-shadow:0 1px 2px #0000001a }
|
||||
.email-header { padding:0;background:linear-gradient(180deg,#c67b5c,#d4956e,#e8c4a8);height:100px;text-align:center;vertical-align:bottom }
|
||||
|
||||
/* Card */
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
/* Header */
|
||||
.email-logo { display:block;margin:0 auto 10px;border:0;outline:none }
|
||||
.email-brand { font-size:20px;font-weight:700;color:#fff;letter-spacing:1px;text-shadow:0 1px 2px rgba(0,0,0,0.1) }
|
||||
.email-brand { font-size:20px;font-weight:700;color:#fff;letter-spacing:1px;text-shadow:0 1px 2px #0000001a }
|
||||
.email-header { padding:0;background:linear-gradient(180deg,#c67b5c,#d4956e,#e8c4a8);height:100px;text-align:center;vertical-align:bottom }
|
||||
|
||||
/* Card */
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
package preview
|
||||
|
||||
import (
|
||||
"html/template"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"gitea-mail-templates/tools/config"
|
||||
)
|
||||
|
||||
type testCommitID string
|
||||
|
||||
func (id testCommitID) String() string { return string(id) }
|
||||
|
||||
// Exercise the push-only branch with Gitea's nested commit data shape.
|
||||
// The normal preview fixture has no commits, so it cannot catch stale .ID paths.
|
||||
func TestPushCommitTemplates(t *testing.T) {
|
||||
cfg, err := config.Load(filepath.Join("..", "data", "templates_config.json"))
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
const sha = "0123456789abcdef0123456789abcdef01234567"
|
||||
data := cfg.Templates["default"].Params
|
||||
data["ActionName"] = "push"
|
||||
data["locale"] = Locale{}
|
||||
comment := data["Comment"].(map[string]any)
|
||||
comment["Commits"] = []any{map[string]any{
|
||||
"UserCommit": map[string]any{
|
||||
"GitCommit": map[string]any{
|
||||
"ID": testCommitID(sha),
|
||||
"MessageTitle": "Test push commit",
|
||||
},
|
||||
},
|
||||
}}
|
||||
markSafeHTML(data)
|
||||
|
||||
themesDir := filepath.Join("..", "..", "themes")
|
||||
themes, err := os.ReadDir(themesDir)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
for _, theme := range themes {
|
||||
if !theme.IsDir() {
|
||||
continue
|
||||
}
|
||||
t.Run(theme.Name(), func(t *testing.T) {
|
||||
path := filepath.Join(themesDir, theme.Name(), "mail", "repo", "issue", "default.tmpl")
|
||||
content, err := os.ReadFile(path)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
tmpl, err := template.New("push").Funcs(TemplateFuncs).Parse(string(content))
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
var html strings.Builder
|
||||
if err := tmpl.Execute(&html, data); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if !strings.Contains(html.String(), "/commit/"+sha) || !strings.Contains(html.String(), sha[:10]) {
|
||||
t.Fatal("push commit link or abbreviated hash missing from rendered email")
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user