Update (ui)

This commit is contained in:
2023-11-23 15:47:16 +08:00
parent 03427352d1
commit 66da557eb8
21 changed files with 107 additions and 45 deletions

View File

@@ -1 +1 @@
import{_ as i}from"./vue-b2389a11.js";const n={name:"LqipLoader",mounted(){this.initLqipLoading()},methods:{initLqipLoading(){const e=document.getElementsByTagName("img");for(let t=0;t<e.length;t++)e[t].getAttribute("data-src")&&(e[t].onload=function(){this.classList.remove("lqip-blur")},e[t].setAttribute("src",e[t].getAttribute("data-src")))}}};function o(e,t,r,s,a,c){return null}const m=i(n,[["render",o]]);export{m as default};
import{_ as i}from"./vue-9d41a690.js";const n={name:"LqipLoader",mounted(){this.initLqipLoading()},methods:{initLqipLoading(){const e=document.getElementsByTagName("img");for(let t=0;t<e.length;t++)e[t].getAttribute("data-src")&&(e[t].onload=function(){this.classList.remove("lqip-blur")},e[t].setAttribute("src",e[t].getAttribute("data-src")))}}};function o(e,t,r,s,a,c){return null}const m=i(n,[["render",o]]);export{m as default};

View File

@@ -0,0 +1 @@
import{_ as u,l as b,c as r,i as t,j as p,k as h,o as n,m as _,n as m}from"./vue-9d41a690.js";const f={name:"ShareToFriends",data(){return{showModal:!1,shareUrl:null}},computed:{isMobileDevice(){return!!/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)}},methods:{handleShareButton(){if(navigator.share){const s=document.title,e=document.querySelector('meta[name="description"]'),d=e?"Check this out: "+e.content:"",c=s||"FutureWalker",a=d||"Check this AI & tech news platform out!";navigator.share({title:c,text:a,url:this.shareUrl}).then(()=>{}).catch(o=>{})}else this.showModal=!0},copyLink(){navigator.clipboard.writeText(this.shareUrl).then(()=>{b("Copied!",{position:"bottom-center",type:"success",timeout:1500,closeOnClick:!0,pauseOnFocusLoss:!0,pauseOnHover:!0,draggable:!0,draggablePercent:.6,showCloseButtonOnHover:!1,hideProgressBar:!1,closeButton:!0,icon:!0,rtl:!1})}).catch(s=>{})}},mounted(){this.shareUrl=window.location.href}},i=s=>(_("data-v-e7f1c1a4"),s=s(),m(),s),y={class:"d-flex",style:{height:"100%"}},g=i(()=>t("i",{class:"bi bi-share-fill"},null,-1)),k=[g],v=i(()=>t("i",{class:"bi bi-share-fill"},null,-1)),w={key:0,class:"modal fade show",id:"shareModal",tabindex:"-1","aria-labelledby":"shareModalLabel",style:{display:"block"},"aria-modal":"true",role:"dialog"},x={class:"modal-dialog modal-dialog-centered"},S={class:"modal-content"},B={class:"modal-header"},C=i(()=>t("h1",{class:"modal-title fs-5 text-black fw-bold",id:"shareModalLabel"}," Share to Friends ",-1)),M={class:"modal-body d-grid gap-2"},T=["value"],L={key:1,class:"modal-backdrop fade show"};function F(s,e,d,c,a,o){return n(),r("div",null,[t("div",y,[o.isMobileDevice?(n(),r("button",{key:0,type:"button",class:"align-self-center btn btn-link text-white ms-1 btn-lg px-1 hover-opacity",onClick:e[0]||(e[0]=(...l)=>o.handleShareButton&&o.handleShareButton(...l))},k)):(n(),r("button",{key:1,type:"button",class:"align-self-center btn btn-light ms-2 mb-0",onClick:e[1]||(e[1]=(...l)=>o.handleShareButton&&o.handleShareButton(...l))},[v,p(" Share ")]))]),a.showModal?(n(),r("div",w,[t("div",x,[t("div",S,[t("div",B,[C,t("button",{type:"button",class:"btn-close",onClick:e[2]||(e[2]=l=>a.showModal=!1),"aria-label":"Close"})]),t("div",M,[t("input",{type:"text",readonly:"",class:"form-control",value:a.shareUrl},null,8,T),t("button",{class:"btn btn-primary w-full",onClick:e[3]||(e[3]=(...l)=>o.copyLink&&o.copyLink(...l))}," Copy Link ")])])])])):h("",!0),a.showModal?(n(),r("div",L)):h("",!0)])}const O=u(f,[["render",F],["__scopeId","data-v-e7f1c1a4"]]);export{O as default};

Binary file not shown.

View File

@@ -1 +0,0 @@
import{_ as u,l as b,c as r,i as p,j as t,k as h,o as n,m as _,n as m}from"./vue-b2389a11.js";const f={name:"ShareToFriends",data(){return{showModal:!1,shareUrl:null}},computed:{isMobileDevice(){return!!/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)}},methods:{handleShareButton(){if(navigator.share){const s=document.title,e=document.querySelector('meta[name="description"]'),d=e?"Check this out: "+e.content:"",c=s||"FutureWalker",a=d||"Check this AI & tech news platform out!";navigator.share({title:c,text:a,url:this.shareUrl}).then(()=>{}).catch(o=>{})}else this.showModal=!0},copyLink(){navigator.clipboard.writeText(this.shareUrl).then(()=>{b("Copied!",{position:"bottom-center",type:"success",timeout:1500,closeOnClick:!0,pauseOnFocusLoss:!0,pauseOnHover:!0,draggable:!0,draggablePercent:.6,showCloseButtonOnHover:!1,hideProgressBar:!1,closeButton:!0,icon:!0,rtl:!1})}).catch(s=>{})}},mounted(){this.shareUrl=window.location.href}},i=s=>(_("data-v-707bcf70"),s=s(),m(),s),k=i(()=>t("i",{class:"bi bi-share-fill"},null,-1)),y=[k],g=i(()=>t("i",{class:"bi bi-share-fill"},null,-1)),v={key:2,class:"modal fade show",id:"shareModal",tabindex:"-1","aria-labelledby":"shareModalLabel",style:{display:"block"},"aria-modal":"true",role:"dialog"},w={class:"modal-dialog modal-dialog-centered"},S={class:"modal-content"},x={class:"modal-header"},B=i(()=>t("h1",{class:"modal-title fs-5 text-black fw-bold",id:"shareModalLabel"}," Share to Friends ",-1)),C={class:"modal-body d-grid gap-2"},M=["value"],T={key:3,class:"modal-backdrop fade show"};function L(s,e,d,c,a,o){return n(),r("div",null,[o.isMobileDevice?(n(),r("button",{key:0,type:"button",class:"align-self-center btn btn-link text-white ms-2",onClick:e[0]||(e[0]=(...l)=>o.handleShareButton&&o.handleShareButton(...l))},y)):(n(),r("button",{key:1,type:"button",class:"align-self-center btn btn-light ms-2",onClick:e[1]||(e[1]=(...l)=>o.handleShareButton&&o.handleShareButton(...l))},[g,p(" Share ")])),a.showModal?(n(),r("div",v,[t("div",w,[t("div",S,[t("div",x,[B,t("button",{type:"button",class:"btn-close",onClick:e[2]||(e[2]=l=>a.showModal=!1),"aria-label":"Close"})]),t("div",C,[t("input",{type:"text",readonly:"",class:"form-control",value:a.shareUrl},null,8,M),t("button",{class:"btn btn-primary w-full",onClick:e[3]||(e[3]=(...l)=>o.copyLink&&o.copyLink(...l))}," Copy Link ")])])])])):h("",!0),a.showModal?(n(),r("div",T)):h("",!0)])}const I=u(f,[["render",L],["__scopeId","data-v-707bcf70"]]);export{I as default};

View File

@@ -1 +1 @@
import{_ as o,o as p,c,a as r,b as u,p as i,d as m,e as g,f as _,g as d,v as f,Z as n,h as l}from"./vue-b2389a11.js";const A={name:"AppAuth"};function $(s,a,t,Z,w,x){return p(),c("div")}const h=o(A,[["render",$]]),e=r({AppAuth:h}),v=Object.assign({});e.use(u());e.use(i,m);e.use(g);e.use(_);e.use(d);e.use(f.ZiggyVue,n);window.Ziggy=n;Object.entries({...v}).forEach(([s,a])=>{const t=s.split("/").pop().replace(/\.\w+$/,"").replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase();e.component(t,l(a))});e.mount("#app");
import{_ as o,o as p,c,a as r,b as u,p as i,d as m,e as g,f as _,g as d,v as f,Z as n,h as l}from"./vue-9d41a690.js";const A={name:"AppAuth"};function $(s,a,t,Z,w,x){return p(),c("div")}const h=o(A,[["render",$]]),e=r({AppAuth:h}),v=Object.assign({});e.use(u());e.use(i,m);e.use(g);e.use(_);e.use(d);e.use(f.ZiggyVue,n);window.Ziggy=n;Object.entries({...v}).forEach(([s,a])=>{const t=s.split("/").pop().replace(/\.\w+$/,"").replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase();e.component(t,l(a))});e.mount("#app");

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,9 +1,9 @@
{
"_vue-b2389a11.js": {
"_vue-9d41a690.js": {
"css": [
"assets/vue-935fc652.css"
],
"file": "assets/vue-b2389a11.js"
"file": "assets/vue-9d41a690.js"
},
"node_modules/bootstrap-icons/font/fonts/bootstrap-icons.woff": {
"file": "assets/bootstrap-icons-4d4572ef.woff",
@@ -178,9 +178,9 @@
"src": "resources/images/tints/tint-9.png"
},
"resources/js/app-auth.js": {
"file": "assets/app-auth-e1d708f4.js",
"file": "assets/app-auth-9eb438e3.js",
"imports": [
"_vue-b2389a11.js"
"_vue-9d41a690.js"
],
"isEntry": true,
"src": "resources/js/app-auth.js"
@@ -190,17 +190,17 @@
"resources/js/vue/front/LqipLoader.vue",
"resources/js/vue/front/ShareToFriends.vue"
],
"file": "assets/app-front-584f3b52.js",
"file": "assets/app-front-28da81e8.js",
"imports": [
"_vue-b2389a11.js"
"_vue-9d41a690.js"
],
"isEntry": true,
"src": "resources/js/app-front.js"
},
"resources/js/vue/front/LqipLoader.vue": {
"file": "assets/LqipLoader-fe076e09.js",
"file": "assets/LqipLoader-08f53114.js",
"imports": [
"_vue-b2389a11.js"
"_vue-9d41a690.js"
],
"isDynamicEntry": true,
"src": "resources/js/vue/front/LqipLoader.vue"
@@ -213,9 +213,9 @@
"css": [
"assets/ShareToFriends-e3b0c442.css"
],
"file": "assets/ShareToFriends-c67367f7.js",
"file": "assets/ShareToFriends-65ab958a.js",
"imports": [
"_vue-b2389a11.js"
"_vue-9d41a690.js"
],
"isDynamicEntry": true,
"src": "resources/js/vue/front/ShareToFriends.vue"
@@ -226,7 +226,7 @@
"src": "resources/sass/app-auth.scss"
},
"resources/sass/app-front.scss": {
"file": "assets/app-front-b83f66f0.css",
"file": "assets/app-front-3d95cb53.css",
"isEntry": true,
"src": "resources/sass/app-front.scss"
},

Binary file not shown.

View File

@@ -1,3 +1,15 @@
.bg-gradient-rainbow {
background: linear-gradient(
270deg,
#ffa63d,
#ff3d77,
#338aff,
#3cf0c5,
#ffa63d
);
background-size: 400% 400%;
}
.bg-hero {
background: transparent;
background: linear-gradient(
@@ -70,7 +82,7 @@ .illuminated {
position: relative;
overflow: hidden;
z-index: 1;
animation: shimmer 2s infinite linear; /* Apply the animation to the button */
animation: shimmer 3s infinite linear; /* Apply the animation to the button */
}
/* Shimmer gradient */
@@ -92,6 +104,33 @@ .illuminated::before {
animation: shimmer 3s infinite; /* Apply the animation to the gradient */
}
/* Custom illuminated button style */
.illuminated-slow {
position: relative;
overflow: hidden;
z-index: 1;
animation: shimmer 10s infinite linear; /* Apply the animation to the button */
}
/* Shimmer gradient */
.illuminated-slow::before {
content: "";
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
background: linear-gradient(
-45deg,
rgba(255, 255, 255, 0) 25%,
rgba(255, 255, 255, 0.6) 50%,
rgba(255, 255, 255, 0) 75%
);
background-size: 400% 400%;
z-index: -1;
animation: shimmer 10s infinite; /* Apply the animation to the gradient */
}
/* Define the shimmer effect using keyframes */
@keyframes shimmer {
0% {
@@ -106,3 +145,18 @@ .word-wrap-break-word {
word-wrap: break-word;
overflow-wrap: break-word;
}
.hover-opacity:hover {
opacity: 0.7 !important;
}
.hover-grow {
transition: 0.3s;
transform: scale(1);
}
.hover-grow:hover,
.d-grow {
transform: scale(1.03);
transition: 0.3s;
}

View File

@@ -1,21 +1,23 @@
<template>
<div>
<button
v-if="isMobileDevice"
type="button"
class="align-self-center btn btn-link text-white ms-2"
@click="handleShareButton"
>
<i class="bi bi-share-fill"></i>
</button>
<button
v-else
type="button"
class="align-self-center btn btn-light ms-2"
@click="handleShareButton"
>
<i class="bi bi-share-fill"></i> Share
</button>
<div class="d-flex" style="height: 100%">
<button
v-if="isMobileDevice"
type="button"
class="align-self-center btn btn-link text-white ms-1 btn-lg px-1 hover-opacity"
@click="handleShareButton"
>
<i class="bi bi-share-fill"></i>
</button>
<button
v-else
type="button"
class="align-self-center btn btn-light ms-2 mb-0"
@click="handleShareButton"
>
<i class="bi bi-share-fill"></i> Share
</button>
</div>
<!-- Modal -->
<div

View File

@@ -30,6 +30,12 @@
<div class="d-flex d-justify-content-end">
<div class="align-self-center d-none d-md-block">Important news shaping the digital future</div>
<button type="button"
class="align-self-center ms-1 btn btn-link text-white btn-lg px-1 hover-opacity"
onclick="window.location.reload()">
<i class="bi bi-arrow-clockwise"></i>
</button>
<share-to-friends></share-to-friends>
</div>

View File

@@ -23,7 +23,7 @@
@foreach ($top_rss_keywords as $rss_keyword)
<a href="{{ get_route_search_result($rss_keyword->value_lowercased) }}"
class="mb-1 pb-1 badge text-bg-light border me-1 fw-bold shadow">
class="mb-1 pb-1 badge text-primary border me-1 fw-bold shadow hover-grow">
<span class="h6">#{{ $rss_keyword->value }}</span>
</a>
@endforeach
@@ -80,7 +80,7 @@ class="text-secondary">{{ $post->published_at->diffForHumans() }}</small>
🍪 Tech Bites </h2>
<div class="align-self-center">
<span
class="mb-2 ms-2 badge illuminated text-bg-primary d-inline-flex font-family-roboto-condensed"><i
class="mb-2 ms-2 badge illuminated-slow bg-gradient-rainbow text-white d-inline-flex font-family-roboto-condensed"><i
class="bi bi-clock-history me-1"></i> UPDATED HOURLY</span>
</div>