aboutsummaryrefslogtreecommitdiffstats
path: root/pug
diff options
context:
space:
mode:
authorManeraKai <manerakai@protonmail.com>2022-04-15 00:26:03 +0300
committerManeraKai <manerakai@protonmail.com>2022-04-15 00:26:11 +0300
commit7cc326eb659de0346f873d9fc96cd303479e3a58 (patch)
treefb4f6c22b85a43c09e41617896d04973160fdafa /pug
parentMerge branch 'master' of https://github.com/libredirect/libredirect (diff)
downloadlibredirect-7cc326eb659de0346f873d9fc96cd303479e3a58.zip
Still makin Pug structure. Finished adding LibreSpeed #170
Diffstat (limited to '')
-rw-r--r--pug/options/general/general.pug3
-rw-r--r--pug/options/speedtest/speedtest.pug31
-rw-r--r--pug/options/spotify/spotify.pug31
-rw-r--r--pug/options/tiktok/tiktok.pug31
-rw-r--r--pug/options/translate/translate.pug67
-rw-r--r--pug/options/twitter/twitter.pug116
-rw-r--r--pug/options/wikipedia/wikipedia.pug36
-rw-r--r--pug/options/youtube/youtube.pug725
-rw-r--r--pug/options/youtubeMusic/youtubeMusic.pug21
-rw-r--r--pug/widgets/captions_options.pug130
-rw-r--r--pug/widgets/from-to.pug108
-rw-r--r--pug/widgets/instances.pug15
-rw-r--r--pug/widgets/links.pug143
13 files changed, 1385 insertions, 72 deletions
diff --git a/pug/options/general/general.pug b/pug/options/general/general.pug
index 5f38822f..1f49363d 100644
--- a/pug/options/general/general.pug
+++ b/pug/options/general/general.pug
@@ -1,9 +1,10 @@
doctype html
html(lang="en")
include ../../widgets/head.pug
- title Document
+ title General
body.option(dir="auto")
include ../../widgets/links.pug
+ +links('general')
section.option-block
.some-block.option-block
diff --git a/pug/options/speedtest/speedtest.pug b/pug/options/speedtest/speedtest.pug
new file mode 100644
index 00000000..2e3b3a82
--- /dev/null
+++ b/pug/options/speedtest/speedtest.pug
@@ -0,0 +1,31 @@
+doctype html
+html(lang="en")
+ include ../../widgets/head.pug
+ title General
+body.option(dir="auto")
+ include ../../widgets/links.pug
+ +links('speedtest')
+
+ section.option-block
+ .some-block.option-block
+ h4(data-localise="__MSG_enable__") Enable
+ input#disable-speedtest(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_protocol__") Protocol
+ select#protocol
+ option(value="normal" data-localise="__MSG_normal__") Normal
+ option(value="tor" data-localise="__MSG_tor__") Tor
+
+ #librespeed
+ hr
+ .normal
+ include ../../widgets/instances.pug
+ +instances('https://librespeed.com')
+ .tor
+ include ../../widgets/instances.pug
+ +instances('https://librespeed.onion')
+
+ script(type="module" src="../init.js")
+ script(type="module" src="./speedtest.js")
+ script(type="module" src="../../../assets/javascripts/localise.js") \ No newline at end of file
diff --git a/pug/options/spotify/spotify.pug b/pug/options/spotify/spotify.pug
new file mode 100644
index 00000000..21fc3968
--- /dev/null
+++ b/pug/options/spotify/spotify.pug
@@ -0,0 +1,31 @@
+doctype html
+html(lang="en")
+ include ../../widgets/head.pug
+ title General
+body.option(dir="auto")
+ include ../../widgets/links.pug
+ +links('spotify')
+
+ section.option-block
+ .some-block.option-block
+ h4(data-localise="__MSG_enable__") Enable
+ input#disable-spotify(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_protocol__") Protocol
+ select#protocol
+ option(value="normal" data-localise="__MSG_normal__") Normal
+ option(value="tor" data-localise="__MSG_tor__") Tor
+
+ #soju
+ hr
+ .normal
+ include ../../widgets/instances.pug
+ +instances('https://soju.com')
+ .tor
+ include ../../widgets/instances.pug
+ +instances('https://soju.onion')
+
+ script(type="module" src="../init.js")
+ script(type="module" src="./spotify.js")
+ script(type="module" src="../../../assets/javascripts/localise.js") \ No newline at end of file
diff --git a/pug/options/tiktok/tiktok.pug b/pug/options/tiktok/tiktok.pug
new file mode 100644
index 00000000..99a7e6bd
--- /dev/null
+++ b/pug/options/tiktok/tiktok.pug
@@ -0,0 +1,31 @@
+doctype html
+html(lang="en")
+ include ../../widgets/head.pug
+ title General
+body.option(dir="auto")
+ include ../../widgets/links.pug
+ +links('tiktok')
+
+ section.option-block
+ .some-block.option-block
+ h4(data-localise="__MSG_enable__") Enable
+ input#disable-tiktok(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_protocol__") Protocol
+ select#protocol
+ option(value="normal" data-localise="__MSG_normal__") Normal
+ option(value="tor" data-localise="__MSG_tor__") Tor
+
+ #proxiTok
+ hr
+ .normal
+ include ../../widgets/instances.pug
+ +instances('https://proxitok.com')
+ .tor
+ include ../../widgets/instances.pug
+ +instances('https://proxitok.onion')
+
+ script(type="module" src="../init.js")
+ script(type="module" src="./tiktok.js")
+ script(type="module" src="../../../assets/javascripts/localise.js") \ No newline at end of file
diff --git a/pug/options/translate/translate.pug b/pug/options/translate/translate.pug
new file mode 100644
index 00000000..cf616ad2
--- /dev/null
+++ b/pug/options/translate/translate.pug
@@ -0,0 +1,67 @@
+doctype html
+html(lang="en")
+ include ../../widgets/head.pug
+ title General
+body.option(dir="auto")
+ include ../../widgets/links.pug
+ +links('translate')
+
+ section.option-block
+ .some-block.option-block
+ h4(data-localise="__MSG_enable__") Enable
+ input#disable-simplyTranslate(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_frontend__") Frontend
+ select#translate-frontend
+ option(value="simplyTranslate") SimplyTranslate
+ option(value="lingva") Lingva
+
+ .some-block.option-block
+ h4(data-localise="__MSG_protocol__") Protocol
+ select#protocol
+ option(value="normal" data-localise="__MSG_normal__") Normal
+ option(value="tor" data-localise="__MSG_tor__") Tor
+
+ hr
+
+ #simplyTranslate
+ .some-block.option-block
+ h4(data-localise="__MSG_from__") From
+ select.from
+ option(value="auto") Auto
+ include ../../widgets/from-to.pug
+
+ .some-block.option-block
+ h4(data-localise="__MSG_to__") To
+ select.to
+ include ../../widgets/from-to.pug
+
+ .some-block.option-block
+ h4(data-localise="__MSG_engine__") Engine
+ select.engine
+ option(value="google") Google
+ option(value="libre") Libre
+ option(value="deepl") Deepl
+ option(value="iciba") ICIBA
+ option(value="reverso") Reverso
+
+ .normal
+ include ../../widgets/instances.pug
+ +instances('https://simplytranslate.org')
+ .tor
+ include ../../widgets/instances.pug
+ +instances('http://hxecvvetgrznmprg.onion')
+
+ #lingva
+
+ .normal
+ include ../../widgets/instances.pug
+ +instances('https://lingvatranslate.com')
+ .tor
+ include ../../widgets/instances.pug
+ +instances('http://tyzxppdeoojdnaux.onion')
+
+ script(type="module" src="../init.js")
+ script(type="module" src="./translate.js")
+ script(type="module" src="../../../assets/javascripts/localise.js") \ No newline at end of file
diff --git a/pug/options/twitter/twitter.pug b/pug/options/twitter/twitter.pug
new file mode 100644
index 00000000..d40b41a4
--- /dev/null
+++ b/pug/options/twitter/twitter.pug
@@ -0,0 +1,116 @@
+doctype html
+html(lang="en")
+ include ../../widgets/head.pug
+ title General
+body.option(dir="auto")
+ include ../../widgets/links.pug
+ +links('twitter')
+
+ section.option-block
+ .some-block.option-block
+ h4(data-localise="__MSG_enable__") Enable
+ input#disable-nitter(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_protocol__") Protocol
+ select#protocol
+ option(value="normal" data-localise="__MSG_normal__") Normal
+ option(value="tor" data-localise="__MSG_tor__") Tor
+ option(value="i2p" data-localise="__MSG_i2p__") I2P
+
+ .some-block.option-block
+ h4(data-localise="__MSG_bypassTwitter__") Bypass "Open in Twitter"
+ input#bypass-watch-on-twitter(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_enableCustomNitter__") Enable Custom Settings (will use cookies)
+ input#enable-twitter-custom-settings(type="checkbox")
+
+ #nitter
+ .custom-settings
+ .some-block.option-block
+ h2 Display
+
+ .some-block.option-block
+ h4(data-localise="__MSG_theme__") Theme
+ select.theme
+ option(value="Auto") Auto
+ option(value="Auto (Twitter)") Auto (Twitter)
+ option(value="Black") Black
+ option(value="Mastodon") Mastodon
+ option(value="Nitter") Nitter
+ option(value="Pleroma") Pleroma
+ option(value="Twitter") Twitter
+ option(value="Twitter Dark") Twitter Dark
+
+ .some-block.option-block
+ h4(data-localise="__MSG_infiniteScroll__") Infinite scrolling (experimental, requires JavaScript)
+ input.infiniteScroll(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_stickyProfile__") Make profile sidebar stick to top
+ input.stickyProfile(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_bidiSupport__") Support bidirectional text (makes clicking on tweets harder)
+ input.bidiSupport(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_hideTweetStats__") Hide tweet stats (replies, retweets, likes)
+ input.hideTweetStats(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_hideBanner__") Hide profile banner
+ input.hideBanner(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_hidePins__") Hide pinned tweets
+ input.hidePins(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_hideReplies__") Hide tweet replies
+ input.hideReplies(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_squareAvatars__") Square profile pictures
+ input.squareAvatars(type="checkbox")
+
+ hr
+
+ .some-block.option-block
+ h2 Media
+
+ .some-block.option-block
+ h4(data-localise="__MSG_mp4Playback__") Enable mp4 video playback (only for gifs)
+ input.mp4Playback(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_hlsPlayback__") Enable hls video streaming (requires JavaScript)
+ input.hlsPlayback(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_proxyVideos__") Proxy video streaming through the server (might be slow)
+ input.proxyVideos(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_muteVideos__") Mute videos by default
+ input.muteVideos(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_autoplayGifs__") Autoplay gifs
+ input.autoplayGifs(type="checkbox")
+
+ .normal
+ include ../../widgets/instances.pug
+ +instances('https://nitter.com')
+ .tor
+ include ../../widgets/instances.pug
+ +instances('https://nitter.onion')
+ .i2p
+ include ../../widgets/instances.pug
+ +instances('https://nitter.i2p')
+
+
+ script(type="module" src="../init.js")
+ script(type="module" src="./twitter.js")
+ script(type="module" src="../../../assets/javascripts/localise.js") \ No newline at end of file
diff --git a/pug/options/wikipedia/wikipedia.pug b/pug/options/wikipedia/wikipedia.pug
new file mode 100644
index 00000000..c7482696
--- /dev/null
+++ b/pug/options/wikipedia/wikipedia.pug
@@ -0,0 +1,36 @@
+doctype html
+html(lang="en")
+ include ../../widgets/head.pug
+ title Wikipedia
+body.option(dir="auto")
+ include ../../widgets/links.pug
+ +links('wikipedia')
+
+ section.option-block
+ .some-block.option-block
+ h4(data-localise="__MSG_enable__") Enable
+ input#disable-wikipedia(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_protocol__") Protocol
+ select#protocol
+ option(value="normal" data-localise="__MSG_normal__") Normal
+ option(value="tor" data-localise="__MSG_tor__") Tor
+ option(value="i2p" data-localise="__MSG_i2p__") I2P
+
+ #wikiless
+ hr
+ .normal
+ include ../../widgets/instances.pug
+ +instances('https://wikiless.com')
+ .tor
+ include ../../widgets/instances.pug
+ +instances('https://wikiless.onion')
+
+ .i2p
+ include ../../widgets/instances.pug
+ +instances('https://wikiless.i2p')
+
+ script(type="module" src="../init.js")
+ script(type="module" src="./wikipedia.js")
+ script(type="module" src="../../../assets/javascripts/localise.js") \ No newline at end of file
diff --git a/pug/options/youtube/youtube.pug b/pug/options/youtube/youtube.pug
new file mode 100644
index 00000000..633e7e07
--- /dev/null
+++ b/pug/options/youtube/youtube.pug
@@ -0,0 +1,725 @@
+doctype html
+html(lang="en")
+ include ../../widgets/head.pug
+ title Document
+body.option(dir="auto")
+ include ../../widgets/links.pug
+ +links('youtube')
+
+ section.option-block
+ .some-block.option-block
+ h4(data-localise="__MSG_enable__") Enable
+ input#disable-invidious(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_frontend__") Frontend
+ select#youtube-frontend
+ option(value="invidious") Invidious
+ option(value="piped") Piped
+ option(value="pipedMaterial") Piped-Material
+ option(value="freetube") FreeTube
+ option(value="yatte") Yattee
+
+ hr
+
+ #freetube-yatte
+ .some-block.option-block
+ h4(data-localise="__MSG_embeddedVids__") Embedded Videos Frontend
+ select#youtube-embed-frontend
+ option(value="invidious") Invidious
+ option(value="piped") Piped
+ option(value="pipedMaterial") Piped-Material
+ option(value="youtube") Youtube
+ hr
+
+ #invidious-piped-pipedMaterial
+ .some-block.option-block
+ h4(data-localise="__MSG_protocol__") Protocol
+ select#protocol
+ option(value="normal" data-localise="__MSG_normal__") Normal
+ option(value="tor" data-localise="__MSG_tor__") Tor
+
+ .some-block.option-block
+ h4(data-localise="__MSG_redirectType") Redirect Type
+ select#only-embed
+ option(value="both" data-localise="__MSG_both__") both
+ option(value="onlyEmbedded" data-localise="__MSG_onlyEmbedded__") Only Embedded
+ option(value="onlyNotEmbedded" data-localise="__MSG_onlyNotEmbedded__") Only Not Embedded
+
+ .some-block.option-block
+ h4(data-localise="__MSG_bypassYoutube__") Bypass "Watch On YouTube"
+ input#bypass-watch-on-youtube(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_enableCustom__") Enable Custom Settings (will use cookies and localStorage)
+ input#enable-youtube-custom-settings(type="checkbox")
+
+ #invidious
+ .custom-settings
+ hr
+ .some-block.option-block
+ h4(data-localise="__MSG_alwaysLoop__") Always loop
+ input.video_loop(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_autoplayVid__") Autoplay Video
+ input.youtubeAutoplay(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_playNext__") Play next by default
+ input.continue(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_autoplayNext__") Autoplay next video
+ input.continue_autoplay(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_alwaysProxy__") Always proxy videos
+ input.local(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_listenByDefault__") Listen by default
+ input.listen(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_defaultSpeed__") Default speed
+ select.speed
+ option 2.0
+ option 1.75
+ option 1.5
+ option 1.25
+ option 1.0
+ option 0.75
+ option 0.5
+ option 0.25
+
+ .some-block.option-block
+ h4(data-localise="__MSG_prefQuality__") Preferred video quality
+ select.quality
+ option(value="hd720") 720p
+ option(value="medium") 480p
+ option(value="dash" data-localise="__MSG_dash__") DASH (adaptive quality)
+
+ .some-block.option-block
+ h4(data-localise="__MSG_prefDashQuality__") Preferred DASH video quality
+ select.quality_dash
+ option(value="auto" data-localise="__MSG_auto__") Auto
+ option(value="best" data-localise="__MSG_best__") Best
+ option(value="4320p") 4320p
+ option(value="2160p") 2160p
+ option(value="1440p") 1440p
+ option(value="1080p") 1080p
+ option(value="720p") 720p
+ option(value="480p") 480p
+ option(value="360p") 360p
+ option(value="240p") 240p
+ option(value="144p") 144p
+ option(value="worst" data-localise="__MSG_worst__") Worst
+
+ .some-block.option-block
+ h4
+ x(data-localise="__MSG_volume__") Volume:
+ span.volume-value --%
+ input.volume(type="range" min="0" max="100" step="1")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_prefDashQuality__") Default comments
+ select(class="comments[0]")
+ option(value="" data-localise="__MSG_none__") none
+ option(value="youtube") YouTube
+ option(value="reddit") Reddit
+ |&nbsp;
+ select(class="comments[1]")
+ option(value="" data-localise="__MSG_none__") none
+ option(value="youtube") YouTube
+ option(value="reddit") Reddit
+
+ .some-block.option-block
+ h4(data-localise="__MSG_defaultCaptions__") Default captions
+ select(class="captions[0]")
+ include ../../widgets/captions_options.pug
+
+ |&nbsp;
+
+ select(class="captions[1]")
+ include ../../widgets/captions_options.pug
+
+ |&nbsp;
+
+ select(class="captions[2]")
+ include ../../widgets/captions_options.pug
+
+ .some-block.option-block
+ h4(data-localise="__MSG_showRelated__") Show related videos
+ input.related_videos(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_showAnnotations__") Show annotations by default
+ input.annotations(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_autoExtendDesc__") Automatically extend video description
+ input.extend_desc(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_interactive360__") Interactive 360 degree videos (requires WebGL)
+ input.vr_mode(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_savePlaybackPos__") Save playback position
+ input.save_player_pos(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_region__") Select country
+ select.region
+ option(value="AE") AE
+ option(value="AR") AR
+ option(value="AT") AT
+ option(value="AU") AU
+ option(value="AZ") AZ
+ option(value="BA") BA
+ option(value="BD") BD
+ option(value="BE") BE
+ option(value="BG") BG
+ option(value="BH") BH
+ option(value="BO") BO
+ option(value="BR") BR
+ option(value="BY") BY
+ option(value="CA") CA
+ option(value="CH") CH
+ option(value="CL") CL
+ option(value="CO") CO
+ option(value="CR") CR
+ option(value="CY") CY
+ option(value="CZ") CZ
+ option(value="DE") DE
+ option(value="DK") DK
+ option(value="DO") DO
+ option(value="DZ") DZ
+ option(value="EC") EC
+ option(value="EE") EE
+ option(value="EG") EG
+ option(value="ES") ES
+ option(value="FI") FI
+ option(value="FR") FR
+ option(value="GB") GB
+ option(value="GE") GE
+ option(value="GH") GH
+ option(value="GR") GR
+ option(value="GT") GT
+ option(value="HK") HK
+ option(value="HN") HN
+ option(value="HR") HR
+ option(value="HU") HU
+ option(value="ID") ID
+ option(value="IE") IE
+ option(value="IL") IL
+ option(value="IN") IN
+ option(value="IQ") IQ
+ option(value="IS") IS
+ option(value="IT") IT
+ option(value="JM") JM
+ option(value="JO") JO
+ option(value="JP") JP
+ option(value="KE") KE
+ option(value="KR") KR
+ option(value="KW") KW
+ option(value="KZ") KZ
+ option(value="LB") LB
+ option(value="LI") LI
+ option(value="LK") LK
+ option(value="LT") LT
+ option(value="LU") LU
+ option(value="LV") LV
+ option(value="LY") LY
+ option(value="MA") MA
+ option(value="ME") ME
+ option(value="MK") MK
+ option(value="MT") MT
+ option(value="MX") MX
+ option(value="MY") MY
+ option(value="NG") NG
+ option(value="NI") NI
+ option(value="NL") NL
+ option(value="NO") NO
+ option(value="NP") NP
+ option(value="NZ") NZ
+ option(value="OM") OM
+ option(value="PA") PA
+ option(value="PE") PE
+ option(value="PG") PG
+ option(value="PH") PH
+ option(value="PK") PK
+ option(value="PL") PL
+ option(value="PR") PR
+ option(value="PT") PT
+ option(value="PY") PY
+ option(value="QA") QA
+ option(value="RO") RO
+ option(value="RS") RS
+ option(value="RU") RU
+ option(value="SA") SA
+ option(value="SE") SE
+ option(value="SG") SG
+ option(value="SI") SI
+ option(value="SK") SK
+ option(value="SN") SN
+ option(value="SV") SV
+ option(value="TH") TH
+ option(value="TN") TN
+ option(value="TR") TR
+ option(value="TW") TW
+ option(value="TZ") TZ
+ option(value="UA") UA
+ option(value="UG") UG
+ option(value="US") US
+ option(value="UY") UY
+ option(value="VE") VE
+ option(value="VN") VN
+ option(value="YE") YE
+ option(value="ZA") ZA
+ option(value="ZW") ZW
+
+ .some-block.option-block
+ h4(data-localise="__MSG_playerStyle__") Player Style
+ select.player_style
+ option(value="invidious" data-localise="__MSG_invidious__") Invidious
+ option(value="youtube" data-localise="__MSG_youtube__") YouTube
+
+ .some-block.option-block
+ h4(data-localise="__MSG_theme__") Theme
+ select.dark_mode
+ option(value="") auto
+ option(value="light") light
+ option(value="dark") dark
+
+ .some-block.option-block
+ h4(data-localise="__MSG_thin_mode__") Thin mode
+ input.thin_mode(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_default_home__") Default homepage
+ select.default_home
+ option(value="") Search
+ option(value="Popular") Popular
+ option(value="Trending") Trending
+
+ .some-block.option-block
+ h4(data-localise="__MSG_feedMenu__") Feed menu
+ select(class="feed_menu[0]")
+ option(value="") Search
+ option(value="Popular") Popular
+ option(value="Trending") Trending
+
+ |&nbsp;
+
+ select(class="feed_menu[1]")
+ option(value="") Search
+ option(value="Popular") Popular
+ option(value="Trending") Trending
+ hr
+ .normal
+ include ../../widgets/instances.pug
+ +instances('https://invidious.com')
+ .tor
+ include ../../widgets/instances.pug
+ +instances('https://invidious.onion')
+
+ #piped
+ hr
+ .custom-settings
+ hr
+ .some-block.option-block
+ h4
+ x(data-localise="__MSG_volume__") Volume:
+ span.volume-value --%
+ input.volume(type="range" min="0" max="100" step="1")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_enableSponsorBlock__") Enable Sponsorblock
+ input.sponsorblock(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_skipSponsors__") Skip Sponsors
+ input.selectedSkip-sponsor(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_skipIntermission__") Skip Intermission/Intro Animation
+ input.selectedSkip-intro(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_skripEndcars__") Skip Endcards/Credits
+ input.selectedSkip-outro(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_skripPreview__") Skip Preview/Recap
+ input.selectedSkip-preview(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_skipReminder__") Skip Interaction Reminder (Subscribe)
+ input.selectedSkip-interaction(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_skipUnpaidPromo__") Skip Unpaid/Self Promotion(Subscribe)
+ input.selectedSkip-selfpromo(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_skipMusic__") Skip Music: Non-Music Section(Subscribe)
+ input.selectedSkip-music_offtopic(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_skipHighlight__") Skip Highlight(Subscribe)
+ input.selectedSkip-poi_highlight(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_skipFiller__") Skip Filler Tangent
+ input.selectedSkip-filler(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_theme__") Theme
+ select.ddlTheme
+ option(value="auto") Auto
+ option(value="dark") Dark
+ option(value="light") Light
+
+ .some-block.option-block
+ h4(data-localise="__MSG_autoplayVid__") Autoplay Video
+ input.youtubeAutoplay(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_audioOnly__") Audio Only
+ input.listen(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_defaultQuality__") Default Quality
+ select.quality
+ option(value="0") Auto
+ option(value="144") 144p
+ option(value="240") 240p
+ option(value="360") 360p
+ option(value="480") 480p
+ option(value="720") 720p
+ option(value="1080") 1080p
+ option(value="1440") 1440p
+ option(value="2160") 2160p
+ option(value="4320") 4320p
+
+ .some-block.option-block
+ h4(data-localise="__MSG_bufferingGoal__") Buffering Goal (in seconds)
+ input.bufferGoal(type="number" min="10")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_countrySelection__") Country Selection
+ select.region
+ option(value="AF") Afghanistan
+ option(value="AL") Albania
+ option(value="DZ") Algeria
+ option(value="AD") Andorra
+ option(value="AO") Angola
+ option(value="AG") Antigua and Barbuda
+ option(value="AR") Argentina
+ option(value="AM") Armenia
+ option(value="AU") Australia
+ option(value="AT") Austria
+ option(value="AZ") Azerbaijan
+ option(value="BS") Bahamas
+ option(value="BH") Bahrain
+ option(value="BD") Bangladesh
+ option(value="BB") Barbados
+ option(value="BY") Belarus
+ option(value="BE") Belgium
+ option(value="BZ") Belize
+ option(value="BJ") Benin
+ option(value="BT") Bhutan
+ option(value="BO") Bolivia (Plurinational State of)
+ option(value="BA") Bosnia and Herzegovina
+ option(value="BW") Botswana
+ option(value="BR") Brazil
+ option(value="BN") Brunei Darussalam
+ option(value="BG") Bulgaria
+ option(value="BF") Burkina Faso
+ option(value="BI") Burundi
+ option(value="CV") Cabo Verde
+ option(value="KH") Cambodia
+ option(value="CM") Cameroon
+ option(value="CA") Canada
+ option(value="CF") Central African Republic
+ option(value="TD") Chad
+ option(value="CL") Chile
+ option(value="CN") China
+ option(value="CO") Colombia
+ option(value="KM") Comoros
+ option(value="CG") Congo
+ option(value="CD") Congo, Democratic Republic of the
+ option(value="CR") Costa Rica
+ option(value="CI") Côte d'Ivoire
+ option(value="HR") Croatia
+ option(value="CU") Cuba
+ option(value="CY") Cyprus
+ option(value="CZ") Czechia
+ option(value="DK") Denmark
+ option(value="DJ") Djibouti
+ option(value="DM") Dominica
+ option(value="DO") Dominican Republic
+ option(value="EC") Ecuador
+ option(value="EG") Egypt
+ option(value="SV") El Salvador
+ option(value="GQ") Equatorial Guinea
+ option(value="ER") Eritrea
+ option(value="EE") Estonia
+ option(value="SZ") Eswatini
+ option(value="ET") Ethiopia
+ option(value="FJ") Fiji
+ option(value="FI") Finland
+ option(value="FR") France
+ option(value="GA") Gabon
+ option(value="GM") Gambia
+ option(value="GE") Georgia
+ option(value="DE") Germany
+ option(value="GH") Ghana
+ option(value="GR") Greece
+ option(value="GD") Grenada
+ option(value="GT") Guatemala
+ option(value="GN") Guinea
+ option(value="GW") Guinea-Bissau
+ option(value="GY") Guyana
+ option(value="HT") Haiti
+ option(value="HN") Honduras
+ option(value="HU") Hungary
+ option(value="IS") Iceland
+ option(value="IN") India
+ option(value="ID") Indonesia
+ option(value="IR") Iran (Islamic Republic of)
+ option(value="IQ") Iraq
+ option(value="IE") Ireland
+ option(value="IL") Israel
+ option(value="IT") Italy
+ option(value="JM") Jamaica
+ option(value="JP") Japan
+ option(value="JO") Jordan
+ option(value="KZ") Kazakhstan
+ option(value="KE") Kenya
+ option(value="KI") Kiribati
+ option(value="KP") Korea (Democratic People's Republic of)
+ option(value="KR") Korea, Republic of
+ option(value="KW") Kuwait
+ option(value="KG") Kyrgyzstan
+ option(value="LA") Lao People's Democratic Republic
+ option(value="LV") Latvia
+ option(value="LB") Lebanon
+ option(value="LS") Lesotho
+ option(value="LR") Liberia
+ option(value="LY") Libya
+ option(value="LI") Liechtenstein
+ option(value="LT") Lithuania
+ option(value="LU") Luxembourg
+ option(value="MG") Madagascar
+ option(value="MW") Malawi
+ option(value="MY") Malaysia
+ option(value="MV") Maldives
+ option(value="ML") Mali
+ option(value="MT") Malta
+ option(value="MH") Marshall Islands
+ option(value="MR") Mauritania
+ option(value="MU") Mauritius
+ option(value="MX") Mexico
+ option(value="FM") Micronesia (Federated States of)
+ option(value="MD") Moldova, Republic of
+ option(value="MC") Monaco
+ option(value="MN") Mongolia
+ option(value="ME") Montenegro
+ option(value="MA") Morocco
+ option(value="MZ") Mozambique
+ option(value="MM") Myanmar
+ option(value="NA") Namibia
+ option(value="NR") Nauru
+ option(value="NP") Nepal
+ option(value="NL") Netherlands
+ option(value="NZ") New Zealand
+ option(value="NI") Nicaragua
+ option(value="NE") Niger
+ option(value="NG") Nigeria
+ option(value="MK") North Macedonia
+ option(value="NO") Norway
+ option(value="OM") Oman
+ option(value="PK") Pakistan
+ option(value="PW") Palau
+ option(value="PA") Panama
+ option(value="PG") Papua New Guinea
+ option(value="PY") Paraguay
+ option(value="PE") Peru
+ option(value="PH") Philippines
+ option(value="PL") Poland
+ option(value="PT") Portugal
+ option(value="QA") Qatar
+ option(value="RO") Romania
+ option(value="RU") Russian Federation
+ option(value="RW") Rwanda
+ option(value="KN") Saint Kitts and Nevis
+ option(value="LC") Saint Lucia
+ option(value="VC") Saint Vincent and the Grenadines
+ option(value="WS") Samoa
+ option(value="SM") San Marino
+ option(value="ST") Sao Tome and Principe
+ option(value="SA") Saudi Arabia
+ option(value="SN") Senegal
+ option(value="RS") Serbia
+ option(value="SC") Seychelles
+ option(value="SL") Sierra Leone
+ option(value="SG") Singapore
+ option(value="SK") Slovakia
+ option(value="SI") Slovenia
+ option(value="SB") Solomon Islands
+ option(value="SO") Somalia
+ option(value="ZA") South Africa
+ option(value="SS") South Sudan
+ option(value="ES") Spain
+ option(value="LK") Sri Lanka
+ option(value="SD") Sudan
+ option(value="SR") Suriname
+ option(value="SE") Sweden
+ option(value="CH") Switzerland
+ option(value="SY") Syrian Arab Republic
+ option(value="TJ") Tajikistan
+ option(value="TZ") Tanzania, United Republic of
+ option(value="TH") Thailand
+ option(value="TL") Timor-Leste
+ option(value="TG") Togo
+ option(value="TO") Tonga
+ option(value="TT") Trinidad and Tobago
+ option(value="TN") Tunisia
+ option(value="TR") Turkey
+ option(value="TM") Turkmenistan
+ option(value="TV") Tuvalu
+ option(value="UG") Uganda
+ option(value="UA") Ukraine
+ option(value="AE") United Arab Emirates
+ option(value="GB") United Kingdom of Great Britain and Northern Ireland
+ option(value="US") United States of America
+ option(value="UY") Uruguay
+ option(value="UZ") Uzbekistan
+ option(value="VU") Vanuatu
+ option(value="VE") Venezuela (Bolivarian Republic of)
+ option(value="VN") Viet Nam
+ option(value="YE") Yemen
+ option(value="ZM") Zambia
+ option(value="ZW") Zimbabwe
+
+ .some-block.option-block
+ h4(data-localise="__MSG_defaultHomepage__") Default Homepage
+ select.homepage
+ option(value="trending" data-localise="__MSG_trending__") Trending
+ option(value="feed" data-localise="__MSG_feed__") Feed
+
+ .some-block.option-block
+ h4(data-localise="__MSG_showComments__") Show Comments
+ input.comments(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_minimizeDesc__") Minimize Description by default
+ input.minimizeDescription(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_storeHistory__") Store Watch History
+ input.watchHistory(type="checkbox")
+
+
+ .some-block.option-block
+ h4(data-localise="__MSG_enabledCodecs__") Enabled Codecs (Multiple)
+ select.enabledCodecs
+ option(value="av1") AV1
+ option(value="vp9") VP9
+ option(value="avc") AVC (h.264)
+
+ .some-block.option-block
+ h4(data-localise="__MSG_disableLBRY__") Disable LBRY for Streaming
+ input.disableLBRY(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_enableProxyLBRY__") Enable Proxy for LBRY
+ input.proxyLBRY(type="checkbox")
+
+ .normal
+ include ../../widgets/instances.pug
+ +instances('https://piped.com')
+ .tor
+ include ../../widgets/instances.pug
+ +instances('https://piped.onion')
+
+ #pipedMaterial
+ hr
+ .custom-settings
+ .some-block.option-block
+ h4(data-localise="__MSG_autoplayVid__") Autoplay Video
+ input.youtubeAutoplay(type="checkbox")
+
+ .some-block.option-block
+ h4
+ x(data-localise="__MSG_volume__") Volume:
+ span.volume-value --%
+ input.volume(type="range" min="0" max="100" step="1")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_audioOnly__") Audio Only
+ input.listen(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_disableLBRY__") Disable LBRY
+ input.disableLBRY(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_proxyLBRY__") Proxy LBRY videos
+ input.proxyLBRY(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_enableSponsorBlock__") Enable Sponsorblock
+ input.sponsorblock(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_skipNote__") Skip to the last watched point when encountering a video already seen
+ input.skipToLastPoint(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_skipSponsors__") Skip Sponsors
+ input.selectedSkip-sponsor(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_skipIntermission__") Skip Intermission/Intro Animation
+ input.selectedSkip-intro(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_skripEndcars__") Skip Endcards/Credits
+ input.selectedSkip-outro(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_skripPreview__") Skip Preview/Recap
+ input.selectedSkip-preview(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_skipReminder__") Skip Interaction Reminder (Subscribe)
+ input.selectedSkip-interaction(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_skipUnpaidPromo__") Skip Unpaid/Self Promotion
+ input.selectedSkip-selfpromo(type="checkbox")
+
+ .some-block.option-block
+ h4(data-localise="__MSG_skipMusic__") Skip Music: Non-Music Section
+ input.selectedSkip-music_offtopic(type="checkbox")
+
+ hr
+
+ .normal
+ include ../../widgets/instances.pug
+ +instances('https://piped-material.com')
+ .tor
+ include ../../widgets/instances.pug
+ +instances('https://piped-material.onion')
+
+
+ script(type="module" src="../init.js")
+ script(type="module" src="./youtube.js")
+ script(type="module" src="./invidious.js")
+ script(type="module" src="./piped.js")
+ script(type="module" src="./pipedMaterial.js")
+ script(type="module" src="../../../assets/javascripts/localise.js") \ No newline at end of file
diff --git a/pug/options/youtubeMusic/youtubeMusic.pug b/pug/options/youtubeMusic/youtubeMusic.pug
new file mode 100644
index 00000000..6df2e868
--- /dev/null
+++ b/pug/options/youtubeMusic/youtubeMusic.pug
@@ -0,0 +1,21 @@
+doctype html
+html(lang="en")
+ include ../../widgets/head.pug
+ title Document
+body.option(dir="auto")
+ include ../../widgets/links.pug
+ +links('youtubeMusic')
+
+ section.option-block
+ .some-block.option-block
+ h4(data-localise="__MSG_enable__") Enable
+ input#disable-beatbump(type="checkbox")
+
+ #beatbump
+ hr
+ .normal
+ include ../../widgets/instances.pug
+ +instances('https://beatbump.wewe')
+ script(type="module" src="../init.js")
+ script(type="module" src="./youtubeMusic.js")
+ script(type="module" src="../../../assets/javascripts/localise.js") \ No newline at end of file
diff --git a/pug/widgets/captions_options.pug b/pug/widgets/captions_options.pug
new file mode 100644
index 00000000..51d18d62
--- /dev/null
+++ b/pug/widgets/captions_options.pug
@@ -0,0 +1,130 @@
+option(value="" data-localise="__MSG_none__") none
+option(value="English") English
+option(value="English (auto-generated)") English (auto-generated)
+option(value="English (United Kingdom)") English (United Kingdom)
+option(value="English (United States)") English (United States)
+option(value="Afrikaans") Afrikaans
+option(value="Albanian") Albanian
+option(value="Amharic") Amharic
+option(value="Arabic") Arabic
+option(value="Armenian") Armenian
+option(value="Azerbaijani") Azerbaijani
+option(value="Bangla") Bangla
+option(value="Basque") Basque
+option(value="Belarusian") Belarusian
+option(value="Bosnian") Bosnian
+option(value="Bulgarian") Bulgarian
+option(value="Burmese") Burmese
+option(value="Cantonese (Hong Kong)") Cantonese (Hong Kong)
+option(value="Catalan") Catalan
+option(value="Cebuano") Cebuano
+option(value="Chinese") Chinese
+option(value="Chinese (China)") Chinese (China)
+option(value="Chinese (Hong Kong)") Chinese (Hong Kong)
+option(value="Chinese (Simplified)") Chinese (Simplified)
+option(value="Chinese (Taiwan)") Chinese (Taiwan)
+option(value="Chinese (Traditional)") Chinese (Traditional)
+option(value="Corsican") Corsican
+option(value="Croatian") Croatian
+option(value="Czech") Czech
+option(value="Danish") Danish
+option(value="Dutch") Dutch
+option(value="Dutch (auto-generated)") Dutch (auto-generated)
+option(value="Esperanto") Esperanto
+option(value="Estonian") Estonian
+option(value="Filipino") Filipino
+option(value="Finnish") Finnish
+option(value="French") French
+option(value="French (auto-generated)") French (auto-generated)
+option(value="Galician") Galician
+option(value="Georgian") Georgian
+option(value="German") German
+option(value="German (auto-generated)") German (auto-generated)
+option(value="Greek") Greek
+option(value="Gujarati") Gujarati
+option(value="Haitian Creole") Haitian Creole
+option(value="Hausa") Hausa
+option(value="Hawaiian") Hawaiian
+option(value="Hebrew") Hebrew
+option(value="Hindi") Hindi
+option(value="Hmong") Hmong
+option(value="Hungarian") Hungarian
+option(value="Icelandic") Icelandic
+option(value="Igbo") Igbo
+option(value="Indonesian") Indonesian
+option(value="Indonesian (auto-generated)") Indonesian (auto-generated)
+option(value="Interlingue") Interlingue
+option(value="Irish") Irish
+option(value="Italian") Italian
+option(value="Italian (auto-generated)") Italian (auto-generated)
+option(value="Japanese") Japanese
+option(value="Japanese (auto-generated)") Japanese (auto-generated)
+option(value="Javanese") Javanese
+option(value="Kannada") Kannada
+option(value="Kazakh") Kazakh
+option(value="Khmer") Khmer
+option(value="Korean") Korean
+option(value="Korean (auto-generated)") Korean (auto-generated)
+option(value="Kurdish") Kurdish
+option(value="Kyrgyz") Kyrgyz
+option(value="Lao") Lao
+option(value="Latin") Latin
+option(value="Latvian") Latvian
+option(value="Lithuanian") Lithuanian
+option(value="Luxembourgish") Luxembourgish
+option(value="Macedonian") Macedonian
+option(value="Malagasy") Malagasy
+option(value="Malay") Malay
+option(value="Malayalam") Malayalam
+option(value="Maltese") Maltese
+option(value="Maori") Maori
+option(value="Marathi") Marathi
+option(value="Mongolian") Mongolian
+option(value="Nepali") Nepali
+option(value="Norwegian Bokmål") Norwegian Bokmål
+option(value="Nyanja") Nyanja
+option(value="Pashto") Pashto
+option(value="Persian") Persian
+option(value="Polish") Polish
+option(value="Portuguese") Portuguese
+option(value="Portuguese (auto-generated)") Portuguese (auto-generated)
+option(value="Portuguese (Brazil)") Portuguese (Brazil)
+option(value="Punjabi") Punjabi
+option(value="Romanian") Romanian
+option(value="Russian") Russian
+option(value="Russian (auto-generated)") Russian (auto-generated)
+option(value="Samoan") Samoan
+option(value="Scottish Gaelic") Scottish Gaelic
+option(value="Serbian") Serbian
+option(value="Shona") Shona
+option(value="Sindhi") Sindhi
+option(value="Sinhala") Sinhala
+option(value="Slovak") Slovak
+option(value="Slovenian") Slovenian
+option(value="Somali") Somali
+option(value="Southern Sotho") Southern Sotho
+option(value="Spanish") Spanish
+option(value="Spanish (auto-generated)") Spanish (auto-generated)
+option(value="Spanish (Latin America)") Spanish (Latin America)
+option(value="Spanish (Mexico)") Spanish (Mexico)
+option(value="Spanish (Spain)") Spanish (Spain)
+option(value="Sundanese") Sundanese
+option(value="Swahili") Swahili
+option(value="Swedish") Swedish
+option(value="Tajik") Tajik
+option(value="Tamil") Tamil
+option(value="Telugu") Telugu
+option(value="Thai") Thai
+option(value="Turkish") Turkish
+option(value="Turkish (auto-generated)") Turkish (auto-generated)
+option(value="Ukrainian") Ukrainian
+option(value="Urdu") Urdu
+option(value="Uzbek") Uzbek
+option(value="Vietnamese") Vietnamese
+option(value="Vietnamese (auto-generated)") Vietnamese (auto-generated)
+option(value="Welsh") Welsh
+option(value="Western Frisian") Western Frisian
+option(value="Xhosa") Xhosa
+option(value="Yiddish") Yiddish
+option(value="Yoruba") Yoruba
+option(value="Zulu") Zulu \ No newline at end of file
diff --git a/pug/widgets/from-to.pug b/pug/widgets/from-to.pug
new file mode 100644
index 00000000..9140e094
--- /dev/null
+++ b/pug/widgets/from-to.pug
@@ -0,0 +1,108 @@
+option(value="af") Afrikaans
+option(value="sq") Albanian
+option(value="am") Amharic
+option(value="ar") Arabic
+option(value="hy") Armenian
+option(value="az") Azerbaijani
+option(value="eu") Basque
+option(value="be") Belarusian
+option(value="bn") Bengali
+option(value="bs") Bosnian
+option(value="bg") Bulgarian
+option(value="ca") Catalan
+option(value="ceb") Cebuano
+option(value="ny") Chichewa
+option(value="zh-CN") Chinese
+option(value="co") Corsican
+option(value="hr") Croatian
+option(value="cs") Czech
+option(value="da") Danish
+option(value="nl") Dutch
+option(value="en") English
+option(value="eo") Esperanto
+option(value="et") Estonian
+option(value="tl") Filipino
+option(value="fi") Finnish
+option(value="fr") French
+option(value="fy") Frisian
+option(value="gl") Galician
+option(value="ka") Georgian
+option(value="de") German
+option(value="el") Greek
+option(value="gu") Gujarati
+option(value="ht") Haitian Creole
+option(value="ha") Hausa
+option(value="haw") Hawaiian
+option(value="iw") Hebrew
+option(value="hi") Hindi
+option(value="hmn") Hmong
+option(value="hu") Hungarian
+option(value="is") Icelandic
+option(value="ig") Igbo
+option(value="id") Indonesian
+option(value="ga") Irish
+option(value="it") Italian
+option(value="ja") Japanese
+option(value="jw") Javanese
+option(value="kn") Kannada
+option(value="kk") Kazakh
+option(value="km") Khmer
+option(value="rw") Kinyarwanda
+option(value="ko") Korean
+option(value="ku") Kurdish (Kurmanji)
+option(value="ky") Kyrgyz
+option(value="lo") Lao
+option(value="la") Latin
+option(value="lv") Latvian
+option(value="lt") Lithuanian
+option(value="lb") Luxembourgish
+option(value="mk") Macedonian
+option(value="mg") Malagasy
+option(value="ms") Malay
+option(value="ml") Malayalam
+option(value="mt") Maltese
+option(value="mi") Maori
+option(value="mr") Marathi
+option(value="mn") Mongolian
+option(value="my") Myanmar (Burmese)
+option(value="ne") Nepali
+option(value="no") Norwegian
+option(value="or") Odia (Oriya)
+option(value="ps") Pashto
+option(value="fa") Persian
+option(value="pl") Polish
+option(value="pt") Portuguese
+option(value="pa") Punjabi
+option(value="ro") Romanian
+option(value="ru") Russian
+option(value="sm") Samoan
+option(value="gd") Scots Gaelic
+option(value="sr") Serbian
+option(value="st") Sesotho
+option(value="sn") Shona
+option(value="sd") Sindhi
+option(value="si") Sinhala
+option(value="sk") Slovak
+option(value="sl") Slovenian
+option(value="so") Somali
+option(value="es") Spanish
+option(value="su") Sundanese
+option(value="sw") Swahili
+option(value="sv") Swedish
+option(value="tg") Tajik
+option(value="ta") Tamil
+option(value="tt") Tatar
+option(value="te") Telugu
+option(value="th") Thai
+option(value="tr") Turkish
+option(value="tk") Turkmen
+option(value="uk") Ukrainian
+option(value="ur") Urdu
+option(value="ug") Uyghur
+option(value="uz") Uzbek
+option(value="vi") Vietnamese
+option(value="cy") Welsh
+option(value="xh") Xhosa
+option(value="yi") Yiddish
+option(value="yo") Yoruba
+option(value="zu") Zulu \ No newline at end of file
diff --git a/pug/widgets/instances.pug b/pug/widgets/instances.pug
new file mode 100644
index 00000000..4f20d466
--- /dev/null
+++ b/pug/widgets/instances.pug
@@ -0,0 +1,15 @@
+mixin instances(myPlaceholder)
+ .some-block.option-block
+ h4(data-localise="__MSG_defaultInstances__") Default Instances
+
+ .checklist
+ hr
+ .some-block.option-block
+ h4(data-localise="__MSG_customInstances__") Custom Instances
+ form.custom-instance-form
+ .some-block.option-block
+ input.custom-instance(placeholder=myPlaceholder type="url")
+ button.add.add-instance(type="submit")
+ svg(xmlns="https://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px" fill="currentColor")
+ path(d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z")
+ .checklist.custom-checklist \ No newline at end of file
diff --git a/pug/widgets/links.pug b/pug/widgets/links.pug
index ddd139b3..5141d907 100644
--- a/pug/widgets/links.pug
+++ b/pug/widgets/links.pug
@@ -1,87 +1,88 @@
-section.links
- .title
- svg(xmlns="http://www.w3.org/2000/svg"
- enable-background="new 0 0 24 24"
- height="26px" viewBox="0 0 24 24"
- width="26px" fill="currentColor")
- path(d="M19.14,12.94c0.04-0.3,0.06-0.61,0.06-0.94c0-0.32-0.02-0.64-0.07-0.94l2.03-1.58c0.18-0.14,0.23-0.41,0.12-0.61 l-1.92-3.32c-0.12-0.22-0.37-0.29-0.59-0.22l-2.39,0.96c-0.5-0.38-1.03-0.7-1.62-0.94L14.4,2.81c-0.04-0.24-0.24-0.41-0.48-0.41 h-3.84c-0.24,0-0.43,0.17-0.47,0.41L9.25,5.35C8.66,5.59,8.12,5.92,7.63,6.29L5.24,5.33c-0.22-0.08-0.47,0-0.59,0.22L2.74,8.87 C2.62,9.08,2.66,9.34,2.86,9.48l2.03,1.58C4.84,11.36,4.8,11.69,4.8,12s0.02,0.64,0.07,0.94l-2.03,1.58 c-0.18,0.14-0.23,0.41-0.12,0.61l1.92,3.32c0.12,0.22,0.37,0.29,0.59,0.22l2.39-0.96c0.5,0.38,1.03,0.7,1.62,0.94l0.36,2.54 c0.05,0.24,0.24,0.41,0.48,0.41h3.84c0.24,0,0.44-0.17,0.47-0.41l0.36-2.54c0.59-0.24,1.13-0.56,1.62-0.94l2.39,0.96 c0.22,0.08,0.47,0,0.59-0.22l1.92-3.32c0.12-0.22,0.07-0.47-0.12-0.61L19.14,12.94z M12,15.6c-1.98,0-3.6-1.62-3.6-3.6 s1.62-3.6,3.6-3.6s3.6,1.62,3.6,3.6S13.98,15.6,12,15.6z")
- a(href="../general/general.html" data-localise="__MSG_general__") General
+mixin links(service)
+ section.links
+ .title
+ svg(xmlns="http://www.w3.org/2000/svg"
+ enable-background="new 0 0 24 24"
+ height="26px" viewBox="0 0 24 24"
+ width="26px" fill="currentColor")
+ path(d="M19.14,12.94c0.04-0.3,0.06-0.61,0.06-0.94c0-0.32-0.02-0.64-0.07-0.94l2.03-1.58c0.18-0.14,0.23-0.41,0.12-0.61 l-1.92-3.32c-0.12-0.22-0.37-0.29-0.59-0.22l-2.39,0.96c-0.5-0.38-1.03-0.7-1.62-0.94L14.4,2.81c-0.04-0.24-0.24-0.41-0.48-0.41 h-3.84c-0.24,0-0.43,0.17-0.47,0.41L9.25,5.35C8.66,5.59,8.12,5.92,7.63,6.29L5.24,5.33c-0.22-0.08-0.47,0-0.59,0.22L2.74,8.87 C2.62,9.08,2.66,9.34,2.86,9.48l2.03,1.58C4.84,11.36,4.8,11.69,4.8,12s0.02,0.64,0.07,0.94l-2.03,1.58 c-0.18,0.14-0.23,0.41-0.12,0.61l1.92,3.32c0.12,0.22,0.37,0.29,0.59,0.22l2.39-0.96c0.5,0.38,1.03,0.7,1.62,0.94l0.36,2.54 c0.05,0.24,0.24,0.41,0.48,0.41h3.84c0.24,0,0.44-0.17,0.47-0.41l0.36-2.54c0.59-0.24,1.13-0.56,1.62-0.94l2.39,0.96 c0.22,0.08,0.47,0,0.59-0.22l1.92-3.32c0.12-0.22,0.07-0.47-0.12-0.61L19.14,12.94z M12,15.6c-1.98,0-3.6-1.62-3.6-3.6 s1.62-3.6,3.6-3.6s3.6,1.62,3.6,3.6S13.98,15.6,12,15.6z")
+ a(href="../general/general.html" data-localise="__MSG_general__" class=service == "general" ? "selected" : "") General
- .title
- img(src="../../../assets/images/youtube-icon.png")
- a(href="../youtube/youtube.html" data-localise="__MSG_youtube__") YouTube
+ .title
+ img(src="../../../assets/images/youtube-icon.png")
+ a(href="../youtube/youtube.html" data-localise="__MSG_youtube__" class=service == "youtube" ? "selected" : "") YouTube
- .title
- img(src="../../../assets/images/youtube-music-icon.png")
- a(href="../youtubeMusic/youtubeMusic.html" data-localise="__MSG_ytmusic__") YT Music
+ .title
+ img(src="../../../assets/images/youtube-music-icon.png")
+ a(href="../youtubeMusic/youtubeMusic.html" data-localise="__MSG_ytmusic__" class=service == "youtubeMusic" ? "selected" : "") YT Music
- .title
- img(src="../../../assets/images/twitter-icon.png")
- a(href="../twitter/twitter.html" data-localise="__MSG_twitter__") Twitter
+ .title
+ img(src="../../../assets/images/twitter-icon.png")
+ a(href="../twitter/twitter.html" class=service == "twitter" ? "selected" : "" data-localise="__MSG_twitter__") Twitter
- .title
- img(src="../../../assets/images/instagram-icon.png")
- a(href="../instagram/instagram.html" data-localise="__MSG_instagram__") Instagram
+ .title
+ img(src="../../../assets/images/instagram-icon.png")
+ a(href="../instagram/instagram.html" data-localise="__MSG_instagram__" class=service == "instagram" ? "selected" : "") Instagram
- .title
- img(src="../../../assets/images/tiktok-icon.png")
- a(href="../tiktok/tiktok.html" data-localise="__MSG_tiktok__") TikTok
+ .title
+ img(src="../../../assets/images/tiktok-icon.png")
+ a(href="../tiktok/tiktok.html" data-localise="__MSG_tiktok__" class=service == "tiktok" ? "selected" : "") TikTok
- .title
- img(src="../../../assets/images/reddit-icon.png")
- a(href="../reddit/reddit.html" data-localise="__MSG_reddit__") Reddit
+ .title
+ img(src="../../../assets/images/reddit-icon.png")
+ a(href="../reddit/reddit.html" data-localise="__MSG_reddit__" class=service == "reddit" ? "selected" : "") Reddit
- .title
- img(src="../../../assets/images/imgur-icon.png")
- a(href="../imgur/imgur.html" data-localise="__MSG_imgur__") Imgur
+ .title
+ img(src="../../../assets/images/imgur-icon.png")
+ a(href="../imgur/imgur.html" data-localise="__MSG_imgur__" class=service == "imgur" ? "selected" : "") Imgur
- .title
- img(src="../../../assets/images/pixiv-icon.svg")
- a(href="../pixiv/pixiv.html" data-localise="__MSG_pixiv__") Pixiv
+ .title
+ img(src="../../../assets/images/pixiv-icon.svg")
+ a(href="../pixiv/pixiv.html" data-localise="__MSG_pixiv__" class=service == "pixiv" ? "selected" : "") Pixiv
- .title
- img(src="../../../assets/images/librespeed-icon.svg")
- a(href="../speedtest/speedtest.html" data-localise="__MSG_speedtest__") Speedtest
+ .title
+ img(src="../../../assets/images/librespeed-icon.svg")
+ a(href="../speedtest/speedtest.html" data-localise="__MSG_speedtest__" class=service == "speedtest" ? "selected" : "") Speedtest
- .title
- img(src="../../../assets/images/spotify-icon.png")
- a(href="../spotify/spotify.html" data-localise="__MSG_spotify__") Spotify
+ .title
+ img(src="../../../assets/images/spotify-icon.png")
+ a(href="../spotify/spotify.html" data-localise="__MSG_spotify__" class=service == "spotify" ? "selected" : "") Spotify
- .title
- img(src="../../../assets/images/wikipedia-icon.svg")
- a(href="../wikipedia/wikipedia.html" data-localise="__MSG_wikipedia__") Wikipedia
+ .title
+ img(src="../../../assets/images/wikipedia-icon.svg")
+ a(href="../wikipedia/wikipedia.html" data-localise="__MSG_wikipedia__" class=service == "wikipedia" ? "selected" : "") Wikipedia
- .title
- svg(xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1770 1000" fill="currentColor")
- circle(cx="500" cy="500" r="500")
- ellipse(ry="475" rx="250" cy="501" cx="1296")
- ellipse(cx="1682" cy="502" rx="88" ry="424")
- a(href="../medium/medium.html" data-localise="__MSG_medium__") Medium
-
- .title
- img(src="../../../assets/images/peertube-icon.svg")
- a(href="../peertube/peertube.html" data-localise="__MSG_peertube__") Peertube
-
- .title
- img(src="../../../assets/images/lbry-icon.png")
- a(href="../lbry/lbry.html" data-localise="__MSG_lbry__") LBRY/Odysee
+ .title
+ svg(xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1770 1000" fill="currentColor")
+ circle(cx="500" cy="500" r="500")
+ ellipse(ry="475" rx="250" cy="501" cx="1296")
+ ellipse(cx="1682" cy="502" rx="88" ry="424")
+ a(href="../medium/medium.html" data-localise="__MSG_medium__" class=service == "medium" ? "selected" : "") Medium
- .title
- svg(xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor")
- path(d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z")
- a(href="../search/search.html" data-localise="__MSG_search__") Search
+ .title
+ img(src="../../../assets/images/peertube-icon.svg")
+ a(href="../peertube/peertube.html" data-localise="__MSG_peertube__" class=service == "peertube" ? "selected" : "") Peertube
- .title
- svg(xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor")
- path(d="M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z")
- a(href="../translate/translate.html" data-localise="__MSG_translate__") Translate
+ .title
+ img(src="../../../assets/images/lbry-icon.png")
+ a(href="../lbry/lbry.html" data-localise="__MSG_lbry__" class=service == "lbry" ? "selected" : "") LBRY/Odysee
- .title
- svg(xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor")
- path(d="M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z")
- a(href="../maps/maps.html" data-localise="__MSG_maps__") Maps
+ .title
+ svg(xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor")
+ path(d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z")
+ a(href="../search/search.html" data-localise="__MSG_search__" class=service == "search" ? "selected" : "") Search
- .title
- svg(xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor")
- path(d="M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM14 13v4h-4v-4H7l5-5 5 5h-3z")
- a(href="../sendTargets/sendTargets.html" data-localise="__MSG_sendFiles__") Send Files \ No newline at end of file
+ .title
+ svg(xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor")
+ path(d="M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z")
+ a(href="../translate/translate.html" data-localise="__MSG_translate__" class=service == "translate" ? "selected" : "") Translate
+
+ .title
+ svg(xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor")
+ path(d="M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z")
+ a(href="../maps/maps.html" data-localise="__MSG_maps__" class=service == "maps" ? "selected" : "") Maps
+
+ .title
+ svg(xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor")
+ path(d="M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM14 13v4h-4v-4H7l5-5 5 5h-3z")
+ a(href="../sendTargets/sendTargets.html" data-localise="__MSG_sendFiles__" class=service == "sendTargets" ? "selected" : "") Send Files \ No newline at end of file