diff --git a/internal/domain/config.go b/internal/domain/config.go
index 926d13c..b0a8283 100644
--- a/internal/domain/config.go
+++ b/internal/domain/config.go
@@ -18,5 +18,6 @@ type (
Kofi string `env:"KOFI"`
DonationAlerts string `env:"DONATION_ALERTS"`
BuyMeACoffee string `env:"BUY_ME_A_COFFEE"`
+ Tribute string `env:"TRIBUTE"`
}
)
diff --git a/web/static/styles.css b/web/static/styles.css
index 8cb09a3..80d580b 100644
--- a/web/static/styles.css
+++ b/web/static/styles.css
@@ -117,6 +117,12 @@ button[href*='buymeacoffee.com'] {
--color: hsl(243, 49%, 9%);
}
+.button[href*='t.me'],
+button[href*='t.me'] {
+ --background: hsl(204, 78%, 50%);
+ --color: hsl(0, 0%, 100%);
+}
+
.with-icon .icon,
.button .icon,
.button svg,
diff --git a/web/template/template.qtpl b/web/template/template.qtpl
index 22124a8..8ca81fb 100644
--- a/web/template/template.qtpl
+++ b/web/template/template.qtpl
@@ -186,6 +186,19 @@ func NewContext(processors domain.ConfigProcessors, lang language.Tag, amount ui
{% endif %}
+ {% if ctx.processors.Tribute != "" %}
+
+
+
+ {%= icon("telegram") %}
+ Telegram
+
+
+ {% endif %}
{% endfunc %}
@@ -322,6 +335,18 @@ func NewContext(processors domain.ConfigProcessors, lang language.Tag, amount ui
+ {% case "telegram" %}
+
{% endswitch %}
{% endfunc %}
{% endstripspace %}
diff --git a/web/template/template.qtpl.go b/web/template/template.qtpl.go
index ba5d7a8..95098a8 100644
--- a/web/template/template.qtpl.go
+++ b/web/template/template.qtpl.go
@@ -526,440 +526,502 @@ func (ctx Context) streambody(qw422016 *qt422016.Writer) {
qw422016.N().S(`Buy me a coffee`)
//line web/template/template.qtpl:188
}
-//line web/template/template.qtpl:188
- qw422016.N().S(``)
-//line web/template/template.qtpl:190
-}
-
-//line web/template/template.qtpl:190
-func (ctx Context) writebody(qq422016 qtio422016.Writer) {
-//line web/template/template.qtpl:190
- qw422016 := qt422016.AcquireWriter(qq422016)
-//line web/template/template.qtpl:190
- ctx.streambody(qw422016)
-//line web/template/template.qtpl:190
- qt422016.ReleaseWriter(qw422016)
-//line web/template/template.qtpl:190
-}
-
-//line web/template/template.qtpl:190
-func (ctx Context) body() string {
-//line web/template/template.qtpl:190
- qb422016 := qt422016.AcquireByteBuffer()
-//line web/template/template.qtpl:190
- ctx.writebody(qb422016)
-//line web/template/template.qtpl:190
- qs422016 := string(qb422016.B)
-//line web/template/template.qtpl:190
- qt422016.ReleaseByteBuffer(qb422016)
-//line web/template/template.qtpl:190
- return qs422016
-//line web/template/template.qtpl:190
-}
-
+//line web/template/template.qtpl:189
+ if ctx.processors.Tribute != "" {
+//line web/template/template.qtpl:189
+ qw422016.N().S(``)
+//line web/template/template.qtpl:197
+ streamicon(qw422016, "telegram")
+//line web/template/template.qtpl:197
+ qw422016.N().S(`Telegram`)
//line web/template/template.qtpl:201
-func (ctx Context) streamlang(qw422016 *qt422016.Writer) {
-//line web/template/template.qtpl:202
- base, _ := ctx.language.Base()
+ }
+//line web/template/template.qtpl:201
+ qw422016.N().S(``)
+//line web/template/template.qtpl:203
+}
//line web/template/template.qtpl:203
- qw422016.E().S(base.String())
-//line web/template/template.qtpl:204
-}
-
-//line web/template/template.qtpl:204
-func (ctx Context) writelang(qq422016 qtio422016.Writer) {
-//line web/template/template.qtpl:204
+func (ctx Context) writebody(qq422016 qtio422016.Writer) {
+//line web/template/template.qtpl:203
qw422016 := qt422016.AcquireWriter(qq422016)
-//line web/template/template.qtpl:204
- ctx.streamlang(qw422016)
-//line web/template/template.qtpl:204
+//line web/template/template.qtpl:203
+ ctx.streambody(qw422016)
+//line web/template/template.qtpl:203
qt422016.ReleaseWriter(qw422016)
-//line web/template/template.qtpl:204
+//line web/template/template.qtpl:203
}
-//line web/template/template.qtpl:204
-func (ctx Context) lang() string {
-//line web/template/template.qtpl:204
+//line web/template/template.qtpl:203
+func (ctx Context) body() string {
+//line web/template/template.qtpl:203
qb422016 := qt422016.AcquireByteBuffer()
-//line web/template/template.qtpl:204
- ctx.writelang(qb422016)
-//line web/template/template.qtpl:204
+//line web/template/template.qtpl:203
+ ctx.writebody(qb422016)
+//line web/template/template.qtpl:203
qs422016 := string(qb422016.B)
-//line web/template/template.qtpl:204
+//line web/template/template.qtpl:203
qt422016.ReleaseByteBuffer(qb422016)
-//line web/template/template.qtpl:204
+//line web/template/template.qtpl:203
return qs422016
-//line web/template/template.qtpl:204
+//line web/template/template.qtpl:203
}
+//line web/template/template.qtpl:205
+func (ctx Context) streamdir(qw422016 *qt422016.Writer) {
//line web/template/template.qtpl:206
-func (ctx Context) streamt(qw422016 *qt422016.Writer, format message.Reference, v ...any) {
+ switch ctx.language {
//line web/template/template.qtpl:207
- qw422016.E().S(ctx.printer.Sprintf(format, v...))
-//line web/template/template.qtpl:208
-}
-
-//line web/template/template.qtpl:208
-func (ctx Context) writet(qq422016 qtio422016.Writer, format message.Reference, v ...any) {
-//line web/template/template.qtpl:208
- qw422016 := qt422016.AcquireWriter(qq422016)
-//line web/template/template.qtpl:208
- ctx.streamt(qw422016, format, v...)
-//line web/template/template.qtpl:208
- qt422016.ReleaseWriter(qw422016)
-//line web/template/template.qtpl:208
-}
-
-//line web/template/template.qtpl:208
-func (ctx Context) t(format message.Reference, v ...any) string {
-//line web/template/template.qtpl:208
- qb422016 := qt422016.AcquireByteBuffer()
-//line web/template/template.qtpl:208
- ctx.writet(qb422016, format, v...)
-//line web/template/template.qtpl:208
- qs422016 := string(qb422016.B)
-//line web/template/template.qtpl:208
- qt422016.ReleaseByteBuffer(qb422016)
-//line web/template/template.qtpl:208
- return qs422016
-//line web/template/template.qtpl:208
-}
-
-//line web/template/template.qtpl:210
-func (ctx Context) streamtitle(qw422016 *qt422016.Writer) {
-//line web/template/template.qtpl:210
- qw422016.N().S(`NotDotPay`)
-//line web/template/template.qtpl:212
-}
-
-//line web/template/template.qtpl:212
-func (ctx Context) writetitle(qq422016 qtio422016.Writer) {
-//line web/template/template.qtpl:212
- qw422016 := qt422016.AcquireWriter(qq422016)
-//line web/template/template.qtpl:212
- ctx.streamtitle(qw422016)
-//line web/template/template.qtpl:212
- qt422016.ReleaseWriter(qw422016)
-//line web/template/template.qtpl:212
-}
-
-//line web/template/template.qtpl:212
-func (ctx Context) title() string {
-//line web/template/template.qtpl:212
- qb422016 := qt422016.AcquireByteBuffer()
-//line web/template/template.qtpl:212
- ctx.writetitle(qb422016)
-//line web/template/template.qtpl:212
- qs422016 := string(qb422016.B)
-//line web/template/template.qtpl:212
- qt422016.ReleaseByteBuffer(qb422016)
-//line web/template/template.qtpl:212
- return qs422016
-//line web/template/template.qtpl:212
-}
-
-//line web/template/template.qtpl:214
-func StreamTemplate(qw422016 *qt422016.Writer, p Page) {
-//line web/template/template.qtpl:214
- qw422016.N().S(`NotDotPay`)
-//line web/template/template.qtpl:224
- p.streamhead(qw422016)
-//line web/template/template.qtpl:224
- qw422016.N().S(``)
-//line web/template/template.qtpl:228
- p.streambody(qw422016)
-//line web/template/template.qtpl:228
- qw422016.N().S(``)
-//line web/template/template.qtpl:236
-}
-
-//line web/template/template.qtpl:236
-func WriteTemplate(qq422016 qtio422016.Writer, p Page) {
-//line web/template/template.qtpl:236
- qw422016 := qt422016.AcquireWriter(qq422016)
-//line web/template/template.qtpl:236
- StreamTemplate(qw422016, p)
-//line web/template/template.qtpl:236
- qt422016.ReleaseWriter(qw422016)
-//line web/template/template.qtpl:236
-}
-
-//line web/template/template.qtpl:236
-func Template(p Page) string {
-//line web/template/template.qtpl:236
- qb422016 := qt422016.AcquireByteBuffer()
-//line web/template/template.qtpl:236
- WriteTemplate(qb422016, p)
-//line web/template/template.qtpl:236
- qs422016 := string(qb422016.B)
-//line web/template/template.qtpl:236
- qt422016.ReleaseByteBuffer(qb422016)
-//line web/template/template.qtpl:236
- return qs422016
-//line web/template/template.qtpl:236
-}
-
-//line web/template/template.qtpl:238
-func streamicon(qw422016 *qt422016.Writer, id string) {
-//line web/template/template.qtpl:239
- switch id {
-//line web/template/template.qtpl:240
- case "liberapay":
-//line web/template/template.qtpl:240
- qw422016.N().S(``)
-//line web/template/template.qtpl:251
- case "paypal":
-//line web/template/template.qtpl:251
- qw422016.N().S(``)
-//line web/template/template.qtpl:267
- case "yoomoney":
-//line web/template/template.qtpl:267
- qw422016.N().S(``)
-//line web/template/template.qtpl:279
- case "kofi":
-//line web/template/template.qtpl:279
- qw422016.N().S(``)
-//line web/template/template.qtpl:300
- case "da":
-//line web/template/template.qtpl:300
- qw422016.N().S(``)
-//line web/template/template.qtpl:311
- case "bmc":
-//line web/template/template.qtpl:311
- qw422016.N().S(``)
-//line web/template/template.qtpl:325
+ default:
+//line web/template/template.qtpl:207
+ qw422016.N().S(`ltr`)
+//line web/template/template.qtpl:209
+ case language.Arabic, language.Persian, language.Hebrew, language.Urdu:
+//line web/template/template.qtpl:209
+ qw422016.N().S(`rtl`)
+//line web/template/template.qtpl:211
}
-//line web/template/template.qtpl:326
+//line web/template/template.qtpl:212
}
-//line web/template/template.qtpl:326
-func writeicon(qq422016 qtio422016.Writer, id string) {
-//line web/template/template.qtpl:326
+//line web/template/template.qtpl:212
+func (ctx Context) writedir(qq422016 qtio422016.Writer) {
+//line web/template/template.qtpl:212
qw422016 := qt422016.AcquireWriter(qq422016)
-//line web/template/template.qtpl:326
- streamicon(qw422016, id)
-//line web/template/template.qtpl:326
+//line web/template/template.qtpl:212
+ ctx.streamdir(qw422016)
+//line web/template/template.qtpl:212
qt422016.ReleaseWriter(qw422016)
-//line web/template/template.qtpl:326
+//line web/template/template.qtpl:212
}
-//line web/template/template.qtpl:326
-func icon(id string) string {
-//line web/template/template.qtpl:326
+//line web/template/template.qtpl:212
+func (ctx Context) dir() string {
+//line web/template/template.qtpl:212
qb422016 := qt422016.AcquireByteBuffer()
-//line web/template/template.qtpl:326
- writeicon(qb422016, id)
-//line web/template/template.qtpl:326
+//line web/template/template.qtpl:212
+ ctx.writedir(qb422016)
+//line web/template/template.qtpl:212
qs422016 := string(qb422016.B)
-//line web/template/template.qtpl:326
+//line web/template/template.qtpl:212
qt422016.ReleaseByteBuffer(qb422016)
-//line web/template/template.qtpl:326
+//line web/template/template.qtpl:212
return qs422016
-//line web/template/template.qtpl:326
+//line web/template/template.qtpl:212
+}
+
+//line web/template/template.qtpl:214
+func (ctx Context) streamlang(qw422016 *qt422016.Writer) {
+//line web/template/template.qtpl:215
+ base, _ := ctx.language.Base()
+
+//line web/template/template.qtpl:216
+ qw422016.E().S(base.String())
+//line web/template/template.qtpl:217
+}
+
+//line web/template/template.qtpl:217
+func (ctx Context) writelang(qq422016 qtio422016.Writer) {
+//line web/template/template.qtpl:217
+ qw422016 := qt422016.AcquireWriter(qq422016)
+//line web/template/template.qtpl:217
+ ctx.streamlang(qw422016)
+//line web/template/template.qtpl:217
+ qt422016.ReleaseWriter(qw422016)
+//line web/template/template.qtpl:217
+}
+
+//line web/template/template.qtpl:217
+func (ctx Context) lang() string {
+//line web/template/template.qtpl:217
+ qb422016 := qt422016.AcquireByteBuffer()
+//line web/template/template.qtpl:217
+ ctx.writelang(qb422016)
+//line web/template/template.qtpl:217
+ qs422016 := string(qb422016.B)
+//line web/template/template.qtpl:217
+ qt422016.ReleaseByteBuffer(qb422016)
+//line web/template/template.qtpl:217
+ return qs422016
+//line web/template/template.qtpl:217
+}
+
+//line web/template/template.qtpl:219
+func (ctx Context) streamt(qw422016 *qt422016.Writer, format message.Reference, v ...any) {
+//line web/template/template.qtpl:220
+ qw422016.E().S(ctx.printer.Sprintf(format, v...))
+//line web/template/template.qtpl:221
+}
+
+//line web/template/template.qtpl:221
+func (ctx Context) writet(qq422016 qtio422016.Writer, format message.Reference, v ...any) {
+//line web/template/template.qtpl:221
+ qw422016 := qt422016.AcquireWriter(qq422016)
+//line web/template/template.qtpl:221
+ ctx.streamt(qw422016, format, v...)
+//line web/template/template.qtpl:221
+ qt422016.ReleaseWriter(qw422016)
+//line web/template/template.qtpl:221
+}
+
+//line web/template/template.qtpl:221
+func (ctx Context) t(format message.Reference, v ...any) string {
+//line web/template/template.qtpl:221
+ qb422016 := qt422016.AcquireByteBuffer()
+//line web/template/template.qtpl:221
+ ctx.writet(qb422016, format, v...)
+//line web/template/template.qtpl:221
+ qs422016 := string(qb422016.B)
+//line web/template/template.qtpl:221
+ qt422016.ReleaseByteBuffer(qb422016)
+//line web/template/template.qtpl:221
+ return qs422016
+//line web/template/template.qtpl:221
+}
+
+//line web/template/template.qtpl:223
+func (ctx Context) streamtitle(qw422016 *qt422016.Writer) {
+//line web/template/template.qtpl:223
+ qw422016.N().S(`NotDotPay`)
+//line web/template/template.qtpl:225
+}
+
+//line web/template/template.qtpl:225
+func (ctx Context) writetitle(qq422016 qtio422016.Writer) {
+//line web/template/template.qtpl:225
+ qw422016 := qt422016.AcquireWriter(qq422016)
+//line web/template/template.qtpl:225
+ ctx.streamtitle(qw422016)
+//line web/template/template.qtpl:225
+ qt422016.ReleaseWriter(qw422016)
+//line web/template/template.qtpl:225
+}
+
+//line web/template/template.qtpl:225
+func (ctx Context) title() string {
+//line web/template/template.qtpl:225
+ qb422016 := qt422016.AcquireByteBuffer()
+//line web/template/template.qtpl:225
+ ctx.writetitle(qb422016)
+//line web/template/template.qtpl:225
+ qs422016 := string(qb422016.B)
+//line web/template/template.qtpl:225
+ qt422016.ReleaseByteBuffer(qb422016)
+//line web/template/template.qtpl:225
+ return qs422016
+//line web/template/template.qtpl:225
+}
+
+//line web/template/template.qtpl:227
+func StreamTemplate(qw422016 *qt422016.Writer, p Page) {
+//line web/template/template.qtpl:227
+ qw422016.N().S(`NotDotPay`)
+//line web/template/template.qtpl:237
+ p.streamhead(qw422016)
+//line web/template/template.qtpl:237
+ qw422016.N().S(``)
+//line web/template/template.qtpl:241
+ p.streambody(qw422016)
+//line web/template/template.qtpl:241
+ qw422016.N().S(``)
+//line web/template/template.qtpl:249
+}
+
+//line web/template/template.qtpl:249
+func WriteTemplate(qq422016 qtio422016.Writer, p Page) {
+//line web/template/template.qtpl:249
+ qw422016 := qt422016.AcquireWriter(qq422016)
+//line web/template/template.qtpl:249
+ StreamTemplate(qw422016, p)
+//line web/template/template.qtpl:249
+ qt422016.ReleaseWriter(qw422016)
+//line web/template/template.qtpl:249
+}
+
+//line web/template/template.qtpl:249
+func Template(p Page) string {
+//line web/template/template.qtpl:249
+ qb422016 := qt422016.AcquireByteBuffer()
+//line web/template/template.qtpl:249
+ WriteTemplate(qb422016, p)
+//line web/template/template.qtpl:249
+ qs422016 := string(qb422016.B)
+//line web/template/template.qtpl:249
+ qt422016.ReleaseByteBuffer(qb422016)
+//line web/template/template.qtpl:249
+ return qs422016
+//line web/template/template.qtpl:249
+}
+
+//line web/template/template.qtpl:251
+func streamicon(qw422016 *qt422016.Writer, id string) {
+//line web/template/template.qtpl:252
+ switch id {
+//line web/template/template.qtpl:253
+ case "liberapay":
+//line web/template/template.qtpl:253
+ qw422016.N().S(``)
+//line web/template/template.qtpl:264
+ case "paypal":
+//line web/template/template.qtpl:264
+ qw422016.N().S(``)
+//line web/template/template.qtpl:280
+ case "yoomoney":
+//line web/template/template.qtpl:280
+ qw422016.N().S(``)
+//line web/template/template.qtpl:292
+ case "kofi":
+//line web/template/template.qtpl:292
+ qw422016.N().S(``)
+//line web/template/template.qtpl:313
+ case "da":
+//line web/template/template.qtpl:313
+ qw422016.N().S(``)
+//line web/template/template.qtpl:324
+ case "bmc":
+//line web/template/template.qtpl:324
+ qw422016.N().S(``)
+//line web/template/template.qtpl:338
+ case "telegram":
+//line web/template/template.qtpl:338
+ qw422016.N().S(``)
+//line web/template/template.qtpl:350
+ }
+//line web/template/template.qtpl:351
+}
+
+//line web/template/template.qtpl:351
+func writeicon(qq422016 qtio422016.Writer, id string) {
+//line web/template/template.qtpl:351
+ qw422016 := qt422016.AcquireWriter(qq422016)
+//line web/template/template.qtpl:351
+ streamicon(qw422016, id)
+//line web/template/template.qtpl:351
+ qt422016.ReleaseWriter(qw422016)
+//line web/template/template.qtpl:351
+}
+
+//line web/template/template.qtpl:351
+func icon(id string) string {
+//line web/template/template.qtpl:351
+ qb422016 := qt422016.AcquireByteBuffer()
+//line web/template/template.qtpl:351
+ writeicon(qb422016, id)
+//line web/template/template.qtpl:351
+ qs422016 := string(qb422016.B)
+//line web/template/template.qtpl:351
+ qt422016.ReleaseByteBuffer(qb422016)
+//line web/template/template.qtpl:351
+ return qs422016
+//line web/template/template.qtpl:351
}