@@ -9,11 +9,14 @@ import NavLink from "@/components/modules/navigation/NavLink.vue"
99
1010/** Utils */
1111import { getNetworkName } from " @/services/utils/general"
12+ import { StatusMap } from " @/services/constants/node"
1213
1314/** Store */
1415import { useAppStore } from " ~/store/app"
16+ import { useNodeStore } from " ~/store/node"
1517import { useModalsStore } from " ~/store/modals"
1618const appStore = useAppStore ()
19+ const nodeStore = useNodeStore ()
1720const modalsStore = useModalsStore ()
1821
1922const { isMobile } = useDevice ()
@@ -231,15 +234,34 @@ const handleNavigate = (url) => {
231234 <AdvBanner />
232235 </Flex >
233236
234- <Flex direction =" column" gap =" 12" style =" margin-right : 20px " >
237+ <Flex direction =" column" gap =" 16" style =" margin-right : 20px " >
238+ <Flex @click =" modalsStore.open('lightNode')" align =" center" gap =" 8" justify =" between" :class =" $style.light_node_btn" >
239+ <Flex align =" center" gap =" 8" >
240+ <Icon
241+ v-if =" nodeStore.status === StatusMap.Started"
242+ name =" lumina"
243+ size =" 14"
244+ color =" brand"
245+ :class =" $style.light_node_running_icon"
246+ />
247+ <Icon v-else name =" lumina" size =" 14" color =" secondary" />
248+
249+ <Text v-if =" nodeStore.status === StatusMap.Started" size =" 13" weight =" 600" color =" primary" >Running</Text >
250+ <Text size =" 13" weight =" 600" color =" secondary" >Node</Text >
251+ </Flex >
252+
253+ <Icon v-if =" nodeStore.status !== StatusMap.Started" name =" arrow-narrow-right" size =" 14" color =" secondary" />
254+ <Text v-else size =" 12" weight =" 600" color =" tertiary" >{{ nodeStore.percentage.toFixed(0) }}%</Text >
255+ </Flex >
256+
235257 <!-- <Flex justify="end" :class="$style.ad">
236- <Flex justify="end" direction="column" gap="8">
237- <Text size="12" weight="500" color="brand">Introducing Celenium API</Text>
238- <Text size="12" weight="500" height="140" color="secondary">
239- Unlock the power of Celestia: Scalable, Secure and Modular.
240- </Text>
241- </Flex>
242- </Flex> -->
258+ <Flex justify="end" direction="column" gap="8">
259+ <Text size="12" weight="500" color="brand">Introducing Celenium API</Text>
260+ <Text size="12" weight="500" height="140" color="secondary">
261+ Unlock the power of Celestia: Scalable, Secure and Modular.
262+ </Text>
263+ </Flex>
264+ </Flex> -->
243265
244266 <Dropdown position =" end" fullWidth >
245267 <Flex align =" center" gap =" 8" justify =" between" :class =" $style.network_selector" >
@@ -299,6 +321,7 @@ const handleNavigate = (url) => {
299321 display : flex ;
300322
301323 background : var (--app-background );
324+ overflow : auto ;
302325
303326 z-index : 100 ;
304327 }
@@ -339,6 +362,22 @@ const handleNavigate = (url) => {
339362 }
340363}
341364
365+ .light_node_btn {
366+ height : 32px ;
367+
368+ cursor : pointer ;
369+ border-radius : 6px ;
370+ background : var (--op-5 );
371+
372+ padding : 0 8px ;
373+
374+ transition : all 0.2s ease ;
375+
376+ &:hover {
377+ background : var (--op-8 );
378+ }
379+ }
380+
342381.network_selector {
343382 height : 32px ;
344383
@@ -367,6 +406,27 @@ const handleNavigate = (url) => {
367406 margin-right : 20px ;
368407}
369408
409+ .light_node_running_icon {
410+ animation : lightNodeIcon 2s ease infinite ;
411+ }
412+
413+ @keyframes lightNodeIcon {
414+ 0% {
415+ opacity : 1 ;
416+ filter : drop-shadow (0 0 8px var (--brand ));
417+ }
418+
419+ 50% {
420+ opacity : 0.3 ;
421+ filter : drop-shadow (0 0 2px var (--brand ));
422+ }
423+
424+ 100% {
425+ opacity : 1 ;
426+ filter : drop-shadow (0 0 8px var (--brand ));
427+ }
428+ }
429+
370430@media (max-width : 1300px ) {
371431 .close_btn {
372432 display : flex ;
0 commit comments