22 <div class =" seventv-settings-home" >
33 <div class =" seventv-settings-home-body" >
44 <UiScrollable >
5+ <div v-if =" !ctx.newExtensionNoticeDismissed" class =" seventv-settings-new-extension-notice" >
6+ <div class =" seventv-settings-new-extension-copy" >
7+ <strong >Try the new 7TV extension</strong >
8+ <span >Give the new 7TV extension a try and see what we've been working on.</span >
9+ </div >
10+ <div class =" seventv-settings-new-extension-actions" >
11+ <UiButton class =" ui-button-important" @click =" openNewExtension" >Check it out</UiButton >
12+ <button
13+ v-tooltip =" 'Dismiss'"
14+ aria-label =" Dismiss notice"
15+ class =" seventv-settings-new-extension-dismiss"
16+ type =" button"
17+ @click =" ctx.dismissNewExtensionNotice()"
18+ >
19+ <CloseIcon />
20+ </button >
21+ </div >
22+ </div >
523 <div class =" seventv-settings-home-changelog" >
624 <Changelog />
725 </div >
2543 </div >
2644</template >
2745<script setup lang="ts">
46+ import { useUserAgent } from " @/composable/useUserAgent" ;
2847import Changelog from " @/site/global/Changelog.vue" ;
48+ import CloseIcon from " @/assets/svg/icons/CloseIcon.vue" ;
2949import CloudIcon from " @/assets/svg/icons/CloudIcon.vue" ;
50+ import { useSettingsMenu } from " ./Settings" ;
51+ import UiButton from " @/ui/UiButton.vue" ;
3052import UiScrollable from " @/ui/UiScrollable.vue" ;
3153
3254const appName = import .meta .env .VITE_APP_NAME ;
@@ -35,6 +57,18 @@ const appServer = import.meta.env.VITE_APP_API ?? "Offline";
3557const version = import .meta .env .VITE_APP_VERSION ;
3658const isRemote = seventv .hosted || false ;
3759const remoteVersion = seventv .host_manifest ?.version ;
60+
61+ const ctx = useSettingsMenu ();
62+ const { browser } = useUserAgent ();
63+
64+ function openNewExtension(): void {
65+ const url =
66+ browser .name === " Firefox"
67+ ? " https://addons.mozilla.org/en-US/firefox/addon/7tv-new/"
68+ : " https://chromewebstore.google.com/detail/7tv/lppmekppnliemjclknbagdhoocikieoi" ;
69+
70+ window .open (url , " _blank" );
71+ }
3872 </script >
3973<style scoped lang="scss">
4074.seventv-settings-home {
@@ -47,6 +81,61 @@ const remoteVersion = seventv.host_manifest?.version;
4781 min-width : 30rem ;
4882 overflow : auto ;
4983
84+ .seventv-settings-new-extension-notice {
85+ display : grid ;
86+ grid-template-columns : 1fr auto ;
87+ align-items : center ;
88+ column-gap : 1rem ;
89+ padding : 1rem 1.25rem ;
90+ border-top : 0.1rem solid var (--seventv-primary );
91+ border-bottom : 0.1rem solid var (--seventv-border-transparent-1 );
92+ background-color : var (--seventv-background-shade-3 );
93+
94+ .seventv-settings-new-extension-copy {
95+ display : grid ;
96+ gap : 0.35rem ;
97+ min-width : 0 ;
98+
99+ > strong {
100+ color : var (--seventv-text-color-normal );
101+ font-size : 1.3rem ;
102+ }
103+
104+ > span {
105+ color : var (--seventv-text-color-secondary );
106+ line-height : 1.35 ;
107+ }
108+ }
109+
110+ .seventv-settings-new-extension-actions {
111+ display : flex ;
112+ align-items : center ;
113+ gap : 0.75rem ;
114+ min-height : 3rem ;
115+ }
116+
117+ .seventv-settings-new-extension-dismiss {
118+ all : unset ;
119+ cursor : pointer ;
120+ display : grid ;
121+ place-items : center ;
122+ width : 3rem ;
123+ height : 3rem ;
124+ border-radius : 0.25rem ;
125+ color : var (--seventv-text-color-secondary );
126+
127+ & :hover {
128+ background-color : var (--seventv-highlight-neutral-1 );
129+ color : var (--seventv-text-color-normal );
130+ }
131+
132+ > svg {
133+ width : 1.25rem ;
134+ height : 1.25rem ;
135+ }
136+ }
137+ }
138+
50139 .seventv-settings-home-changelog {
51140 flex-grow : 1 ;
52141 }
0 commit comments