├── dist.zip ├── .output ├── public │ ├── _payload.json │ ├── news │ │ └── _payload.json │ ├── zh-CN │ │ ├── _payload.json │ │ ├── download │ │ │ └── _payload.json │ │ └── download.html │ ├── download │ │ └── _payload.json │ ├── _nuxt │ │ ├── builds │ │ │ ├── latest.json │ │ │ └── meta │ │ │ │ └── aa3fe343-e854-4b9a-a0e1-51d8d9c364d8.json │ │ ├── DlAUqK2U.js │ │ ├── Cp5OmZP0.js │ │ ├── logo-512.QxRaHRJG.png │ │ ├── default.CuqUisdm.css │ │ ├── _...Drtw1eNH.css │ │ ├── entry.fm9D5BVR.css │ │ ├── DVZgQkfD.js │ │ ├── index.CxmtasCu.css │ │ ├── BeqbHBdo.js │ │ ├── CfrowSII.js │ │ ├── CGc4XQCy.js │ │ ├── error-500.BbRvet6e.css │ │ ├── DMWal4P1.js │ │ ├── D0X_Gh3A.js │ │ ├── B91cUC4l.js │ │ ├── error-404.ChZaS9la.css │ │ ├── CfNJ4R0Q.js │ │ ├── 7mXSOByi.js │ │ ├── C10QlJ6W.js │ │ └── Dt4uv5Vt.js │ ├── favicon.ico │ ├── img │ │ ├── yidrop.webp │ │ └── screenshot-pc.webp │ ├── apple-touch-icon.png │ ├── sitemap.xml.html │ ├── sitemap_index.xml │ ├── zh-CN-sitemap.xml │ ├── en-sitemap.xml │ ├── __sitemap__ │ │ └── style.xsl │ ├── 200.html │ ├── 404.html │ ├── news.html │ ├── download.html │ └── zh-CN.html └── nitro.json ├── public ├── favicon.ico ├── img │ ├── yidrop.webp │ └── screenshot-pc.webp └── apple-touch-icon.png ├── assets └── img │ └── logo-512.png ├── tsconfig.json ├── tailwind.config.ts ├── .gitignore ├── README.md ├── components ├── MentionedCard.vue ├── ColorMode.vue ├── FeatureCard.vue ├── TextButton.vue ├── AppFooter.vue ├── layout │ ├── LegalLayout.vue │ ├── SecondaryLayoutX.vue │ └── SecondaryLayout.vue ├── AppButton.vue ├── InfiniteHorizontalScroll.vue └── LanguageSwitcher.vue ├── package.json ├── app.vue ├── pages ├── news │ ├── index.vue │ └── [...slug].vue ├── download.vue └── index.vue ├── layouts └── default.vue ├── nuxt.config.ts ├── i18n └── locales │ ├── zh-CN.json │ └── en.json └── LICENSE /dist.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingyicute/YiDropWebsite/HEAD/dist.zip -------------------------------------------------------------------------------- /.output/public/_payload.json: -------------------------------------------------------------------------------- 1 | [{"data":1,"prerenderedAt":3},["ShallowReactive",2],{},1738847934507] -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingyicute/YiDropWebsite/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /.output/public/news/_payload.json: -------------------------------------------------------------------------------- 1 | [{"data":1,"prerenderedAt":3},["ShallowReactive",2],{},1738847934705] -------------------------------------------------------------------------------- /.output/public/zh-CN/_payload.json: -------------------------------------------------------------------------------- 1 | [{"data":1,"prerenderedAt":3},["ShallowReactive",2],{},1738847934705] -------------------------------------------------------------------------------- /.output/public/download/_payload.json: -------------------------------------------------------------------------------- 1 | [{"data":1,"prerenderedAt":3},["ShallowReactive",2],{},1738847934704] -------------------------------------------------------------------------------- /assets/img/logo-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingyicute/YiDropWebsite/HEAD/assets/img/logo-512.png -------------------------------------------------------------------------------- /public/img/yidrop.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingyicute/YiDropWebsite/HEAD/public/img/yidrop.webp -------------------------------------------------------------------------------- /.output/public/_nuxt/builds/latest.json: -------------------------------------------------------------------------------- 1 | {"id":"aa3fe343-e854-4b9a-a0e1-51d8d9c364d8","timestamp":1738847922441} -------------------------------------------------------------------------------- /.output/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingyicute/YiDropWebsite/HEAD/.output/public/favicon.ico -------------------------------------------------------------------------------- /.output/public/zh-CN/download/_payload.json: -------------------------------------------------------------------------------- 1 | [{"data":1,"prerenderedAt":3},["ShallowReactive",2],{},1738847934704] -------------------------------------------------------------------------------- /public/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingyicute/YiDropWebsite/HEAD/public/apple-touch-icon.png -------------------------------------------------------------------------------- /public/img/screenshot-pc.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingyicute/YiDropWebsite/HEAD/public/img/screenshot-pc.webp -------------------------------------------------------------------------------- /.output/public/img/yidrop.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingyicute/YiDropWebsite/HEAD/.output/public/img/yidrop.webp -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | // https://nuxt.com/docs/guide/concepts/typescript 3 | "extends": "./.nuxt/tsconfig.json" 4 | } 5 | -------------------------------------------------------------------------------- /.output/public/_nuxt/DlAUqK2U.js: -------------------------------------------------------------------------------- 1 | const s=(t,r)=>{const o=t.__vccOpts||t;for(const[c,e]of r)o[c]=e;return o};export{s as _}; 2 | -------------------------------------------------------------------------------- /.output/public/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingyicute/YiDropWebsite/HEAD/.output/public/apple-touch-icon.png -------------------------------------------------------------------------------- /.output/public/img/screenshot-pc.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingyicute/YiDropWebsite/HEAD/.output/public/img/screenshot-pc.webp -------------------------------------------------------------------------------- /.output/public/sitemap.xml.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import type {Config} from 'tailwindcss' 2 | 3 | export default >{ 4 | darkMode: 'class', 5 | } 6 | -------------------------------------------------------------------------------- /.output/public/_nuxt/Cp5OmZP0.js: -------------------------------------------------------------------------------- 1 | import"./7iU6E5Xm.js";const r=""+new URL("logo-512.QxRaHRJG.png",import.meta.url).href;export{r as _}; 2 | -------------------------------------------------------------------------------- /.output/public/_nuxt/logo-512.QxRaHRJG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingyicute/YiDropWebsite/HEAD/.output/public/_nuxt/logo-512.QxRaHRJG.png -------------------------------------------------------------------------------- /.output/public/_nuxt/default.CuqUisdm.css: -------------------------------------------------------------------------------- 1 | @font-face{font-display:block;font-family:Starry;font-style:normal;font-weight:400;src:url(/font/starry.woff2) format("woff2")}body,html{font-family:Starry,sans-serif} 2 | -------------------------------------------------------------------------------- /.output/public/_nuxt/_...Drtw1eNH.css: -------------------------------------------------------------------------------- 1 | .article h1{font-size:2rem;font-weight:700}.article h2{font-size:1.2rem;font-weight:600;margin-top:1rem}.article ul{list-style-position:inside;list-style-type:circle;padding:0} 2 | -------------------------------------------------------------------------------- /.output/public/_nuxt/entry.fm9D5BVR.css: -------------------------------------------------------------------------------- 1 | .page-enter-active,.page-leave-active{transition:all .2s}.page-enter-from{opacity:0;transform:translate(20px)}.page-leave-to{opacity:0;transform:translate(-20px)}body{overflow-x:hidden} 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Nuxt dev/build outputs 2 | dist 3 | .data 4 | .nuxt 5 | .nitro 6 | .cache 7 | 8 | # Node dependencies 9 | node_modules 10 | 11 | # Logs 12 | logs 13 | *.log 14 | 15 | # Misc 16 | .DS_Store 17 | .fleet 18 | .idea 19 | 20 | # Local env files 21 | .env 22 | .env.* 23 | !.env.example 24 | -------------------------------------------------------------------------------- /.output/public/_nuxt/builds/meta/aa3fe343-e854-4b9a-a0e1-51d8d9c364d8.json: -------------------------------------------------------------------------------- 1 | {"id":"aa3fe343-e854-4b9a-a0e1-51d8d9c364d8","timestamp":1738847922441,"matcher":{"static":{"/sitemap.xml":{"redirect":"/sitemap_index.xml"}},"wildcard":{},"dynamic":{}},"prerendered":["/","/zh-CN","/news","/download","/zh-CN/download"]} -------------------------------------------------------------------------------- /.output/nitro.json: -------------------------------------------------------------------------------- 1 | { 2 | "date": "2025-02-06T13:18:57.554Z", 3 | "preset": "static", 4 | "framework": { 5 | "name": "nuxt", 6 | "version": "3.15.4" 7 | }, 8 | "versions": { 9 | "nitro": "2.10.4" 10 | }, 11 | "commands": { 12 | "preview": "npx serve ./public" 13 | }, 14 | "config": {} 15 | } -------------------------------------------------------------------------------- /.output/public/_nuxt/DVZgQkfD.js: -------------------------------------------------------------------------------- 1 | import{$ as o,y as u,a0 as f,B as d,N as v,a1 as l,a2 as i,G as h,a3 as m}from"./7iU6E5Xm.js";function U(t,a={}){const e=a.head||o();if(e)return e.ssr?e.push(t,a):p(e,t,a)}function p(t,a,e={}){const s=u(!1),n=u({});f(()=>{n.value=s.value?{}:m(a)});const r=t.push(n.value,e);return d(n,c=>{r.patch(c)}),h()&&(v(()=>{r.dispose()}),l(()=>{s.value=!0}),i(()=>{s.value=!1})),r}export{U as u}; 2 | -------------------------------------------------------------------------------- /.output/public/_nuxt/index.CxmtasCu.css: -------------------------------------------------------------------------------- 1 | #logo[data-v-3809a6f1]{animation:rotating-3809a6f1 40s linear infinite}.slogan[data-v-3809a6f1]{animation:fadeIn-3809a6f1 .2s ease-out .3s forwards;opacity:0}.buttons[data-v-3809a6f1]{animation:fadeIn-3809a6f1 .2s ease-out .5s forwards;opacity:0}@keyframes rotating-3809a6f1{0%{rotate:0deg}to{rotate:1turn}}@keyframes fadeIn-3809a6f1{0%{opacity:0;transform:translateY(-20px)}to{opacity:1}} 2 | -------------------------------------------------------------------------------- /.output/public/sitemap_index.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | https://drop.92li.us.kg/en-sitemap.xml 5 | 6 | 7 | https://drop.92li.us.kg/zh-CN-sitemap.xml 8 | 9 | 10 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # YiDrop Website 2 | 3 | ## Setup 4 | 5 | Make sure to install [pnpm](https://pnpm.io). 6 | 7 | ```bash 8 | npm install -g pnpm 9 | ``` 10 | 11 | Get dependencies 12 | 13 | ```bash 14 | pnpm install 15 | ``` 16 | 17 | Start the development server 18 | 19 | ```bash 20 | pnpm run dev 21 | ``` 22 | 23 | ## Deployment 24 | 25 | Generates the static website in the `dist` directory. 26 | 27 | ```bash 28 | pnpm run generate 29 | ``` 30 | 31 | ## Contributing 32 | 33 | ### Adding a new language 34 | 35 | 1. Add new JSON file in `i18n/locales/` directory. 36 | 2. Add the new language in `nuxt.config.ts`. 37 | -------------------------------------------------------------------------------- /components/MentionedCard.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 18 | -------------------------------------------------------------------------------- /components/ColorMode.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 20 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "yidrop-website", 3 | "private": true, 4 | "type": "module", 5 | "scripts": { 6 | "build": "nuxt build", 7 | "dev": "nuxt dev", 8 | "generate": "nuxt generate", 9 | "preview": "nuxt preview", 10 | "postinstall": "nuxt prepare" 11 | }, 12 | "dependencies": { 13 | "@vueuse/core": "^12.5.0", 14 | "@vueuse/nuxt": "^12.5.0", 15 | "nuxt": "^3.15.4", 16 | "vue": "^3.5.13", 17 | "vue-router": "^4.5.0" 18 | }, 19 | "devDependencies": { 20 | "@nuxt/icon": "^1.10.3", 21 | "@nuxtjs/i18n": "^9.1.4", 22 | "@nuxtjs/sitemap": "^5.3.5", 23 | "@nuxtjs/tailwindcss": "^6.13.1", 24 | "tailwindcss": "^3.4.17" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /components/FeatureCard.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 20 | -------------------------------------------------------------------------------- /app.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 16 | 17 | 37 | -------------------------------------------------------------------------------- /components/TextButton.vue: -------------------------------------------------------------------------------- 1 | 21 | 22 | 29 | -------------------------------------------------------------------------------- /.output/public/_nuxt/BeqbHBdo.js: -------------------------------------------------------------------------------- 1 | import{_ as d}from"./Dt4uv5Vt.js";import{_ as p}from"./CGc4XQCy.js";import{e as m,u,i as g,w as s,h,K as f,o,a as e,b as a,c as r,F as b,j as x,t as n}from"./7iU6E5Xm.js";import"./Cp5OmZP0.js";const k={class:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4"},w={class:"bg-gray-300 dark:bg-gray-700 rounded p-4 cursor-pointer"},C={class:"text-2xl font-bold"},L={class:"mb-2"},V=m({__name:"index",setup(v){const{t:i}=u();return(y,B)=>{const c=d,_=f("ContentList");return o(),g(p,{"sub-title":h(i)("news.title")},{content:s(()=>[e("div",k,[a(_,{path:"/news"},{default:s(({list:l})=>[(o(!0),r(b,null,x(l,t=>(o(),r("div",{key:t._path},[a(c,{to:t._path,class:"mb-4 inline-block dark:text-white"},{default:s(()=>[e("div",w,[e("h2",C,n(t.title),1),e("p",L,n(new Date(t.date).toLocaleDateString()),1),e("p",null,n(t.description),1)])]),_:2},1032,["to"])]))),128))]),_:1})])]),_:1},8,["sub-title"])}}});export{V as default}; 2 | -------------------------------------------------------------------------------- /components/AppFooter.vue: -------------------------------------------------------------------------------- 1 | 27 | 28 | 32 | -------------------------------------------------------------------------------- /components/layout/LegalLayout.vue: -------------------------------------------------------------------------------- 1 | 30 | 31 | 34 | -------------------------------------------------------------------------------- /.output/public/_nuxt/CfrowSII.js: -------------------------------------------------------------------------------- 1 | import{e as u,c as a,o as t,q as l,i as s,s as c,r as d,k as i}from"./7iU6E5Xm.js";const g={class:"inline-block"},b=["href","target"],k=u({__name:"AppButton",props:{href:{type:String,required:!1},target:{type:String,required:!1},dark:{type:Boolean,required:!1,default:!1},icon:{type:String,required:!1}},setup(e){const r=e;return(n,f)=>{const o=i;return t(),a("div",g,[e.href?(t(),a("a",{key:0,href:e.href,target:e.target,class:l(["flex items-center rounded-lg px-4 py-2 font-bold text-white hover:bg-blue-700 dark:text-gray-300 dark:hover:bg-blue-800",e.dark?"bg-blue-950":"bg-blue-600"])},[r.icon?(t(),s(o,{key:0,name:r.icon,class:"me-2 dark:text-gray-300"},null,8,["name"])):c("",!0),d(n.$slots,"default")],10,b)):(t(),a("button",{key:1,class:l(["flex items-center rounded-lg px-4 py-2 font-bold text-white hover:bg-blue-700 dark:text-gray-300 dark:hover:bg-blue-800",e.dark?"bg-blue-950":"bg-blue-600"])},[r.icon?(t(),s(o,{key:0,name:r.icon,class:"me-2 dark:text-gray-300"},null,8,["name"])):c("",!0),d(n.$slots,"default")],2))])}}});export{k as _}; 2 | -------------------------------------------------------------------------------- /pages/news/index.vue: -------------------------------------------------------------------------------- 1 | 23 | 24 | 31 | -------------------------------------------------------------------------------- /components/AppButton.vue: -------------------------------------------------------------------------------- 1 | 31 | 32 | 40 | -------------------------------------------------------------------------------- /.output/public/_nuxt/CGc4XQCy.js: -------------------------------------------------------------------------------- 1 | import{_}from"./Dt4uv5Vt.js";import{e as h,u as f,f as g,g as x,c as b,a as t,b as o,r as a,w as r,h as n,t as c,q as y,o as k,_ as w,d as v}from"./7iU6E5Xm.js";import{_ as $}from"./Cp5OmZP0.js";const B={class:"flex min-h-screen justify-center pb-12 pt-12 dark:text-gray-300"},L={class:"flex flex-col items-center"},N={class:"text-2xl font-light dark:text-white"},q=h({__name:"SecondaryLayout",props:{subTitle:{type:String,required:!0}},setup(d){const m=d,{t:S}=f(),l=g(),p=x({}).value.htmlAttrs.dir;return(s,e)=>{const i=_,u=w;return k(),b("div",null,[t("div",B,[t("div",L,[o(i,{to:n(l)({path:"/"})},{default:r(()=>e[0]||(e[0]=[t("img",{src:$,alt:"YiDrop Logo",style:{height:"200px"}},null,-1)])),_:1},8,["to"]),e[1]||(e[1]=t("h1",{class:"text-5xl font-black dark:text-white"},"YiDrop",-1)),t("h2",N,c(m.subTitle),1),a(s.$slots,"tabs"),t("div",{class:y(["rounded-lg bg-gray-200 p-4 dark:bg-gray-800",s.$slots.tabs?"":"mt-8"]),style:{width:"calc(min(1200px, 100vw))"}},[a(s.$slots,"content")],2),a(s.$slots,"back",{},()=>[o(i,{to:n(l)({path:"/"}),class:"mt-8"},{default:r(()=>[o(u,{icon:n(p)==="ltr"?"material-symbols:arrow-back":"material-symbols:arrow-forward",class:"dark:text-gray-300"},{default:r(()=>[v(c(s.$t("homepageButton")),1)]),_:1},8,["icon"])]),_:1},8,["to"])])])])])}}});export{q as _}; 2 | -------------------------------------------------------------------------------- /layouts/default.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 32 | 33 | 46 | -------------------------------------------------------------------------------- /nuxt.config.ts: -------------------------------------------------------------------------------- 1 | // https://nuxt.com/docs/api/configuration/nuxt-config 2 | export default defineNuxtConfig({ 3 | modules: [ 4 | "@nuxt/icon", 5 | "@nuxtjs/tailwindcss", 6 | "@nuxtjs/i18n", 7 | "@nuxtjs/sitemap", 8 | ], 9 | 10 | devtools: { enabled: true }, 11 | 12 | app: { 13 | pageTransition: { 14 | name: "page", 15 | mode: "out-in", 16 | }, 17 | head: { 18 | link: [ 19 | { 20 | rel: "icon", 21 | href: "/favicon.ico", 22 | }, 23 | { 24 | rel: "apple-touch-icon", 25 | sizes: "180x180", 26 | href: "/apple-touch-icon.png", 27 | }, 28 | ], 29 | }, 30 | }, 31 | 32 | site: { 33 | url: "https://drop.92li.us.kg", 34 | }, 35 | 36 | i18n: { 37 | baseUrl: "https://drop.92li.us.kg", 38 | strategy: "prefix_except_default", 39 | defaultLocale: "en", 40 | pages: { 41 | privacy: false, 42 | terms: false, 43 | imprint: false, 44 | contact: false, 45 | news: false, 46 | }, 47 | locales: [ 48 | { 49 | code: "en", 50 | language: "en-US", 51 | file: "en.json", 52 | name: "English", 53 | isCatchallLocale: true, 54 | }, 55 | { 56 | code: "zh-CN", 57 | language: "zh-CN", 58 | file: "zh-CN.json", 59 | name: "简体中文", 60 | }, 61 | ], 62 | }, 63 | 64 | nitro: { 65 | prerender: { 66 | autoSubfolderIndex: false, 67 | }, 68 | }, 69 | 70 | compatibilityDate: "2024-10-20", 71 | }); 72 | -------------------------------------------------------------------------------- /pages/download.vue: -------------------------------------------------------------------------------- 1 | 19 | 20 | -------------------------------------------------------------------------------- /components/layout/SecondaryLayoutX.vue: -------------------------------------------------------------------------------- 1 | 40 | 41 | 55 | -------------------------------------------------------------------------------- /.output/public/zh-CN-sitemap.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | https://drop.92li.us.kg/zh-CN 5 | 6 | 7 | 8 | 9 | https://drop.92li.us.kg/zh-CN/download 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /components/InfiniteHorizontalScroll.vue: -------------------------------------------------------------------------------- 1 | 40 | 41 | 48 | 49 | 76 | -------------------------------------------------------------------------------- /pages/news/[...slug].vue: -------------------------------------------------------------------------------- 1 | 34 | 35 | 49 | 50 | -------------------------------------------------------------------------------- /.output/public/_nuxt/error-500.BbRvet6e.css: -------------------------------------------------------------------------------- 1 | .spotlight[data-v-a98cb344]{background:linear-gradient(45deg,#00dc82,#36e4da 50%,#0047e1);filter:blur(20vh)}.fixed[data-v-a98cb344]{position:fixed}.-bottom-1\/2[data-v-a98cb344]{bottom:-50%}.left-0[data-v-a98cb344]{left:0}.right-0[data-v-a98cb344]{right:0}.grid[data-v-a98cb344]{display:grid}.mb-16[data-v-a98cb344]{margin-bottom:4rem}.mb-8[data-v-a98cb344]{margin-bottom:2rem}.h-1\/2[data-v-a98cb344]{height:50%}.max-w-520px[data-v-a98cb344]{max-width:520px}.min-h-screen[data-v-a98cb344]{min-height:100vh}.place-content-center[data-v-a98cb344]{place-content:center}.overflow-hidden[data-v-a98cb344]{overflow:hidden}.bg-white[data-v-a98cb344]{--un-bg-opacity:1;background-color:rgb(255 255 255/var(--un-bg-opacity))}.px-8[data-v-a98cb344]{padding-left:2rem;padding-right:2rem}.text-center[data-v-a98cb344]{text-align:center}.text-8xl[data-v-a98cb344]{font-size:6rem;line-height:1}.text-xl[data-v-a98cb344]{font-size:1.25rem;line-height:1.75rem}.text-black[data-v-a98cb344]{--un-text-opacity:1;color:rgb(0 0 0/var(--un-text-opacity))}.font-light[data-v-a98cb344]{font-weight:300}.font-medium[data-v-a98cb344]{font-weight:500}.leading-tight[data-v-a98cb344]{line-height:1.25}.font-sans[data-v-a98cb344]{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.antialiased[data-v-a98cb344]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){.dark\:bg-black[data-v-a98cb344]{--un-bg-opacity:1;background-color:rgb(0 0 0/var(--un-bg-opacity))}.dark\:text-white[data-v-a98cb344]{--un-text-opacity:1;color:rgb(255 255 255/var(--un-text-opacity))}}@media (min-width:640px){.sm\:px-0[data-v-a98cb344]{padding-left:0;padding-right:0}.sm\:text-4xl[data-v-a98cb344]{font-size:2.25rem;line-height:2.5rem}} 2 | -------------------------------------------------------------------------------- /components/layout/SecondaryLayout.vue: -------------------------------------------------------------------------------- 1 | 48 | 49 | 63 | -------------------------------------------------------------------------------- /.output/public/_nuxt/DMWal4P1.js: -------------------------------------------------------------------------------- 1 | import{_ as g}from"./CfrowSII.js";import{_ as L}from"./Dt4uv5Vt.js";import{e as f,u as h,f as D,g as v,c as x,o as d,a as o,b as r,r as m,w as n,h as i,t as u,_ as B,d as w,i as $,F as A,j as N}from"./7iU6E5Xm.js";import{_ as C}from"./Cp5OmZP0.js";const I={class:"flex min-h-screen justify-center pb-12 pt-12 dark:text-gray-300"},R={class:"flex flex-col items-center"},T={class:"text-2xl font-light dark:text-white"},W=f({__name:"SecondaryLayoutX",props:{subTitle:{type:String,required:!0}},setup(t){const l=t,{t:_}=h(),s=D(),c=v({}).value.htmlAttrs.dir;return(e,a)=>{const p=L,y=B;return d(),x("div",null,[o("div",I,[o("div",R,[r(p,{to:i(s)({path:"/"})},{default:n(()=>a[0]||(a[0]=[o("img",{src:C,alt:"YiDrop Logo",style:{height:"200px"}},null,-1)])),_:1},8,["to"]),a[1]||(a[1]=o("h1",{class:"text-5xl font-black dark:text-white"},"YiDrop",-1)),o("h2",T,u(l.subTitle),1),m(e.$slots,"tabs"),m(e.$slots,"back",{},()=>[r(p,{to:i(s)({path:"/"}),class:"mt-8"},{default:n(()=>[r(y,{icon:i(c)==="ltr"?"material-symbols:arrow-back":"material-symbols:arrow-forward",class:"dark:text-gray-300"},{default:n(()=>[w(u(e.$t("homepageButton")),1)]),_:1},8,["icon"])]),_:1},8,["to"])])])])])}}}),Y={class:"mt-8 flex flex-wrap justify-center dark:text-gray-300"};var b=(t=>(t.windows="Windows",t.linux="Linux",t.android="Android",t))(b||{});const j="https://github.com/lingyicute/yidrop/releases/latest/download/YiDrop-Installer.exe",F="https://github.com/lingyicute/yidrop/releases/latest/download/YiDrop_arm64-v8a_opt.apk",S="https://github.com/lingyicute/yidrop/releases/latest",E=f({__name:"download",setup(t){const{t:l}=h();function _(s){switch(s){case"Windows":window.location.href=j;break;case"Android":window.location.href=F;break;case"Linux":default:window.location.href=S}}return(s,k)=>{const c=g;return d(),$(W,{"sub-title":i(l)("download.title")},{tabs:n(()=>[o("div",Y,[(d(),x(A,null,N(b,e=>r(c,{key:e,class:"mx-2 mb-4",onClick:a=>_(e),dark:!1},{default:n(()=>[w(u(e),1)]),_:2},1032,["onClick"])),64))])]),_:1},8,["sub-title"])}}});export{E as default}; 2 | -------------------------------------------------------------------------------- /components/LanguageSwitcher.vue: -------------------------------------------------------------------------------- 1 | 27 | 28 | 67 | -------------------------------------------------------------------------------- /i18n/locales/zh-CN.json: -------------------------------------------------------------------------------- 1 | { 2 | "home": { 3 | "seo": { 4 | "title": "YiDrop:快速且安全地分享文件", 5 | "description": "YiDrop 是一个开源、免费、跨平台的文件分享工具,帮助你将文件快速且安全地分享到附近的设备。" 6 | }, 7 | "slogan1": "快速且安全地分享文件,", 8 | "slogan2": "开源、免费、跨平台。", 9 | "download": "下载", 10 | "community": "社区", 11 | "features": { 12 | "title": "特点", 13 | "decentralized": "去中心化", 14 | "decentralizedDescription": "文件在局域网里悄悄旅行,无需服务器中转,又快又安全。", 15 | "crossPlatform": "跨平台", 16 | "crossPlatformDescription": "YiDrop 带着跨平台的使命出发,支持 Android、Windows 和 Linux 全架构。", 17 | "free": "清爽,纯粹", 18 | "freeDescription": "像清晨第一缕阳光般干净,没有广告弹窗打扰,也没有讨厌的跟踪。", 19 | "openSource": "开源", 20 | "openSourceDescription": "源代码在 GitHub 上公开可用,任何人都可以为项目做出贡献。", 21 | "secure": "安全", 22 | "secureDescription": "端到端加密确保只有你和接收者可以访问你的文件。", 23 | "easy": "简单", 24 | "easyDescription": "轻松上手的用户界面,发送文件比吹散蒲公英还简单~" 25 | }, 26 | "get": "获取 YiDrop" 27 | }, 28 | "download": { 29 | "seo": { 30 | "title": "YiDrop - 下载", 31 | "description": "下载适用于 Android、Windows 和 Linux 的 YiDrop。" 32 | }, 33 | "title": "下载", 34 | "subTitle": "{os}版下载", 35 | "appStores": "应用商店", 36 | "appStoresDescription": "适合大多数用户", 37 | "binaries": "二进制文件", 38 | "allReleases": "所有版本", 39 | "copiedToClipboard": "已复制到剪贴板!" 40 | }, 41 | "community": { 42 | "seo": { 43 | "title": "YiDrop - 社区", 44 | "description": "获取帮助,参与其中,并为YiDrop做出贡献。" 45 | }, 46 | "title": "社区", 47 | "getHelp": "获取帮助", 48 | "getHelpDescription": "在GitHub讨论区提问或寻找答案", 49 | "getInvolved": "参与其中", 50 | "getInvolvedDescription": "与开发人员联系并直接为项目做出贡献", 51 | "discord": "Discord", 52 | "issues": "问题", 53 | "pullRequests": "拉取请求" 54 | }, 55 | "footer": { 56 | "underlicense": "根据", 57 | "license": "Apache 2.0许可证", 58 | "github": "GitHub", 59 | "discord": "Discord", 60 | "privacy": "隐私", 61 | "terms": "条款", 62 | "imprint": "版权声明", 63 | "contact": "联系方式" 64 | }, 65 | "homepageButton": "主页", 66 | "improveWebsite": "参与改进此网站" 67 | } 68 | -------------------------------------------------------------------------------- /.output/public/en-sitemap.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | https://drop.92li.us.kg/ 5 | 6 | 7 | 8 | 9 | https://drop.92li.us.kg/download 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | https://drop.92li.us.kg/news 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /i18n/locales/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "home": { 3 | "seo": { 4 | "title": "YiDrop: Share files to nearby devices", 5 | "description": "YiDrop is a free, open-source, cross-platform file sharing tool that allows you to share files to nearby devices." 6 | }, 7 | "slogan1": "Share files to nearby devices.", 8 | "slogan2": "Free, open-source, cross-platform.", 9 | "download": "Download", 10 | "community": "Community", 11 | "features": { 12 | "title": "Features", 13 | "decentralized": "Decentralized", 14 | "decentralizedDescription": "Share files without a central server. The file transfer is completely peer-to-peer.", 15 | "crossPlatform": "Cross-platform", 16 | "crossPlatformDescription": "YiDrop is available for Windows, macOS, Linux, Android, and iOS.", 17 | "free": "Free", 18 | "freeDescription": "YiDrop is free to use. No ads, no tracking, no hidden costs.", 19 | "openSource": "Open Source", 20 | "openSourceDescription": "The source code is publicly available. Everyone can contribute to the project.", 21 | "secure": "Secure", 22 | "secureDescription": "End-to-end encryption ensures that only you and the recipient can access your files.", 23 | "easy": "Easy to Use", 24 | "easyDescription": "A simple user interface without registration. Other devices are discovered automatically." 25 | }, 26 | "get": "Get YiDrop" 27 | }, 28 | "download": { 29 | "seo": { 30 | "title": "YiDrop - Downloads", 31 | "description": "Download YiDrop for Windows, macOS, Linux, Android, and iOS." 32 | }, 33 | "title": "Downloads", 34 | "subTitle": "{os} Downloads", 35 | "appStores": "App Stores", 36 | "appStoresDescription": "Recommended for most users.", 37 | "binaries": "Binaries", 38 | "allReleases": "All Releases", 39 | "copiedToClipboard": "Copied to clipboard!" 40 | }, 41 | "community": { 42 | "seo": { 43 | "title": "YiDrop - Community", 44 | "description": "Get help, get involved, and contribute to YiDrop." 45 | }, 46 | "title": "Community", 47 | "getHelp": "Get Help", 48 | "getHelpDescription": "Ask or look for answers on GitHub Discussions.", 49 | "getInvolved": "Get Involved", 50 | "getInvolvedDescription": "Get in contact with the developers and contribute directly to the project.", 51 | "discord": "Discord", 52 | "issues": "Issues", 53 | "pullRequests": "Pull Requests" 54 | }, 55 | "news": { 56 | "title": "News", 57 | "showAll": "Show all news" 58 | }, 59 | "footer": { 60 | "underlicense": "Licensed under the", 61 | "license": "Apache License 2.0", 62 | "github": "GitHub", 63 | "discord": "Discord", 64 | "privacy": "Privacy", 65 | "terms": "Terms", 66 | "imprint": "Imprint", 67 | "contact": "Contacts" 68 | }, 69 | "homepageButton": "Homepage", 70 | "improveWebsite": "Improve this website" 71 | } 72 | -------------------------------------------------------------------------------- /.output/public/_nuxt/D0X_Gh3A.js: -------------------------------------------------------------------------------- 1 | import{u as N}from"./DVZgQkfD.js";import{e as l,Z as P,u as q,g as x,R as y,c as f,o as s,b as c,w as g,i as m,s as E,d as L,t as j,h as a,F as h,j as _,r as M}from"./7iU6E5Xm.js";const T=n=>{const t=Object.create(null);for(const r in n){const e=n[r];e!==void 0&&(t[r]=e)}return t},u=(n,t)=>(r,e)=>(N(()=>n({...T(r),...e.attrs},e)),()=>{var o,d;return t?(d=(o=e.slots).default)==null?void 0:d.call(o):null}),p={accesskey:String,autocapitalize:String,autofocus:{type:Boolean,default:void 0},class:[String,Object,Array],contenteditable:{type:Boolean,default:void 0},contextmenu:String,dir:String,draggable:{type:Boolean,default:void 0},enterkeyhint:String,exportparts:String,hidden:{type:Boolean,default:void 0},id:String,inputmode:String,is:String,itemid:String,itemprop:String,itemref:String,itemscope:String,itemtype:String,lang:String,nonce:String,part:String,slot:String,spellcheck:{type:Boolean,default:void 0},style:[String,Object,Array],tabindex:String,title:String,translate:String},z=l({name:"Link",inheritAttrs:!1,props:{...p,as:String,crossorigin:String,disabled:Boolean,fetchpriority:String,href:String,hreflang:String,imagesizes:String,imagesrcset:String,integrity:String,media:String,prefetch:{type:Boolean,default:void 0},referrerpolicy:String,rel:String,sizes:String,title:String,type:String,methods:String,target:String,body:Boolean,renderPriority:[String,Number]},setup:u(n=>({link:[n]}))}),C=l({name:"Title",inheritAttrs:!1,setup:u((n,{slots:t})=>{var r,e,o;return{title:((o=(e=(r=t.default)==null?void 0:r.call(t))==null?void 0:e[0])==null?void 0:o.children)||null}})}),F=l({name:"Meta",inheritAttrs:!1,props:{...p,charset:String,content:String,httpEquiv:String,name:String,body:Boolean,renderPriority:[String,Number]},setup:u(n=>{const t={...n};return t.httpEquiv&&(t["http-equiv"]=t.httpEquiv,delete t.httpEquiv),{meta:[t]}})}),O=l({name:"Head",inheritAttrs:!1,setup:(n,t)=>()=>{var r,e;return(e=(r=t.slots).default)==null?void 0:e.call(r)}}),V=l({name:"Html",inheritAttrs:!1,props:{...p,manifest:String,version:String,xmlns:String,renderPriority:[String,Number]},setup:u(n=>({htmlAttrs:n}),!0)}),w=l({name:"Body",inheritAttrs:!1,props:{...p,renderPriority:[String,Number]},setup:u(n=>({bodyAttrs:n}),!0)}),I={__name:"default",setup(n){const t=P(),{t:r}=q(),e=x({}),o=y(()=>t.meta.title?r(t.meta.title):"YiDrop"),d=y(()=>t.meta.description?r(t.meta.description):null);return(b,D)=>{const B=C,S=F,k=z,A=O,v=w,H=V;return s(),f("div",null,[c(H,{lang:a(e).htmlAttrs.lang,dir:a(e).htmlAttrs.dir},{default:g(()=>[c(A,null,{default:g(()=>[c(B,null,{default:g(()=>[L(j(a(o)),1)]),_:1}),a(d)?(s(),m(S,{key:0,name:"description",content:a(d)},null,8,["content"])):E("",!0),(s(!0),f(h,null,_(a(e).link,i=>(s(),m(k,{key:i.id,id:i.id,rel:i.rel,href:i.href,hreflang:i.hreflang},null,8,["id","rel","href","hreflang"]))),128)),(s(!0),f(h,null,_(a(e).meta,i=>(s(),m(S,{key:i.id,id:i.id,property:i.property,content:i.content},null,8,["id","property","content"]))),128))]),_:1}),c(v,{class:"dark:bg-gray-900"},{default:g(()=>[M(b.$slots,"default")]),_:3})]),_:3},8,["lang","dir"])])}}};export{I as default}; 2 | -------------------------------------------------------------------------------- /.output/public/_nuxt/B91cUC4l.js: -------------------------------------------------------------------------------- 1 | import{_ as s}from"./DlAUqK2U.js";import{u as a}from"./DVZgQkfD.js";import{c as i,o as u,a as e,t as o}from"./7iU6E5Xm.js";const l={class:"antialiased bg-white dark:bg-black dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-black"},c={class:"max-w-520px text-center"},d=["textContent"],p=["textContent"],f={__name:"error-500",props:{appName:{type:String,default:"Nuxt"},version:{type:String,default:""},statusCode:{type:Number,default:500},statusMessage:{type:String,default:"Server error"},description:{type:String,default:"This page is temporarily unavailable."}},setup(t){const r=t;return a({title:`${r.statusCode} - ${r.statusMessage} | ${r.appName}`,script:[{children:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver((e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)})).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{children:'*,:after,:before{border-color:var(--un-default-border-color,#e5e7eb);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}h1{font-size:inherit;font-weight:inherit}h1,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(g,n)=>(u(),i("div",l,[n[0]||(n[0]=e("div",{class:"-bottom-1/2 fixed h-1/2 left-0 right-0 spotlight"},null,-1)),e("div",c,[e("h1",{class:"font-medium mb-8 sm:text-10xl text-8xl",textContent:o(t.statusCode)},null,8,d),e("p",{class:"font-light leading-tight mb-16 px-8 sm:px-0 sm:text-4xl text-xl",textContent:o(t.description)},null,8,p)])]))}},x=s(f,[["__scopeId","data-v-a98cb344"]]);export{x as default}; 2 | -------------------------------------------------------------------------------- /.output/public/_nuxt/error-404.ChZaS9la.css: -------------------------------------------------------------------------------- 1 | .spotlight[data-v-b1a74e1b]{background:linear-gradient(45deg,#00dc82,#36e4da 50%,#0047e1);bottom:-30vh;filter:blur(20vh);height:40vh}.gradient-border[data-v-b1a74e1b]{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:.5rem;position:relative}@media (prefers-color-scheme:light){.gradient-border[data-v-b1a74e1b]{background-color:#ffffff4d}.gradient-border[data-v-b1a74e1b]:before{background:linear-gradient(90deg,#e2e2e2,#e2e2e2 25%,#00dc82,#36e4da 75%,#0047e1)}}@media (prefers-color-scheme:dark){.gradient-border[data-v-b1a74e1b]{background-color:#1414144d}.gradient-border[data-v-b1a74e1b]:before{background:linear-gradient(90deg,#303030,#303030 25%,#00dc82,#36e4da 75%,#0047e1)}}.gradient-border[data-v-b1a74e1b]:before{background-size:400% auto;border-radius:.5rem;bottom:0;content:"";left:0;-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;opacity:.5;padding:2px;position:absolute;right:0;top:0;transition:background-position .3s ease-in-out,opacity .2s ease-in-out;width:100%}.gradient-border[data-v-b1a74e1b]:hover:before{background-position:-50% 0;opacity:1}.fixed[data-v-b1a74e1b]{position:fixed}.left-0[data-v-b1a74e1b]{left:0}.right-0[data-v-b1a74e1b]{right:0}.z-10[data-v-b1a74e1b]{z-index:10}.z-20[data-v-b1a74e1b]{z-index:20}.grid[data-v-b1a74e1b]{display:grid}.mb-16[data-v-b1a74e1b]{margin-bottom:4rem}.mb-8[data-v-b1a74e1b]{margin-bottom:2rem}.max-w-520px[data-v-b1a74e1b]{max-width:520px}.min-h-screen[data-v-b1a74e1b]{min-height:100vh}.w-full[data-v-b1a74e1b]{width:100%}.flex[data-v-b1a74e1b]{display:flex}.cursor-pointer[data-v-b1a74e1b]{cursor:pointer}.place-content-center[data-v-b1a74e1b]{place-content:center}.items-center[data-v-b1a74e1b]{align-items:center}.justify-center[data-v-b1a74e1b]{justify-content:center}.overflow-hidden[data-v-b1a74e1b]{overflow:hidden}.bg-white[data-v-b1a74e1b]{--un-bg-opacity:1;background-color:rgb(255 255 255/var(--un-bg-opacity))}.px-4[data-v-b1a74e1b]{padding-left:1rem;padding-right:1rem}.px-8[data-v-b1a74e1b]{padding-left:2rem;padding-right:2rem}.py-2[data-v-b1a74e1b]{padding-bottom:.5rem;padding-top:.5rem}.text-center[data-v-b1a74e1b]{text-align:center}.text-8xl[data-v-b1a74e1b]{font-size:6rem;line-height:1}.text-xl[data-v-b1a74e1b]{font-size:1.25rem;line-height:1.75rem}.text-black[data-v-b1a74e1b]{--un-text-opacity:1;color:rgb(0 0 0/var(--un-text-opacity))}.font-light[data-v-b1a74e1b]{font-weight:300}.font-medium[data-v-b1a74e1b]{font-weight:500}.leading-tight[data-v-b1a74e1b]{line-height:1.25}.font-sans[data-v-b1a74e1b]{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.antialiased[data-v-b1a74e1b]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){.dark\:bg-black[data-v-b1a74e1b]{--un-bg-opacity:1;background-color:rgb(0 0 0/var(--un-bg-opacity))}.dark\:text-white[data-v-b1a74e1b]{--un-text-opacity:1;color:rgb(255 255 255/var(--un-text-opacity))}}@media (min-width:640px){.sm\:px-0[data-v-b1a74e1b]{padding-left:0;padding-right:0}.sm\:px-6[data-v-b1a74e1b]{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-3[data-v-b1a74e1b]{padding-bottom:.75rem;padding-top:.75rem}.sm\:text-4xl[data-v-b1a74e1b]{font-size:2.25rem;line-height:2.5rem}.sm\:text-xl[data-v-b1a74e1b]{font-size:1.25rem;line-height:1.75rem}} 2 | -------------------------------------------------------------------------------- /.output/public/_nuxt/CfNJ4R0Q.js: -------------------------------------------------------------------------------- 1 | import{_ as a}from"./Dt4uv5Vt.js";import{_ as i}from"./DlAUqK2U.js";import{u}from"./DVZgQkfD.js";import{c,o as l,a as e,t as r,b as d,w as p,d as f}from"./7iU6E5Xm.js";const m={class:"antialiased bg-white dark:bg-black dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-black"},g={class:"max-w-520px text-center z-20"},h=["textContent"],b=["textContent"],x={class:"flex items-center justify-center w-full"},y={__name:"error-404",props:{appName:{type:String,default:"Nuxt"},version:{type:String,default:""},statusCode:{type:Number,default:404},statusMessage:{type:String,default:"Not Found"},description:{type:String,default:"Sorry, the page you are looking for could not be found."},backHome:{type:String,default:"Go back home"}},setup(t){const n=t;return u({title:`${n.statusCode} - ${n.statusMessage} | ${n.appName}`,script:[{children:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver((e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)})).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{children:'*,:after,:before{border-color:var(--un-default-border-color,#e5e7eb);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}h1{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}h1,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(k,o)=>{const s=a;return l(),c("div",m,[o[0]||(o[0]=e("div",{class:"fixed left-0 right-0 spotlight z-10"},null,-1)),e("div",g,[e("h1",{class:"font-medium mb-8 sm:text-10xl text-8xl",textContent:r(t.statusCode)},null,8,h),e("p",{class:"font-light leading-tight mb-16 px-8 sm:px-0 sm:text-4xl text-xl",textContent:r(t.description)},null,8,b),e("div",x,[d(s,{to:"/",class:"cursor-pointer gradient-border px-4 py-2 sm:px-6 sm:py-3 sm:text-xl text-md"},{default:p(()=>[f(r(t.backHome),1)]),_:1})])])])}}},N=i(y,[["__scopeId","data-v-b1a74e1b"]]);export{N as default}; 2 | -------------------------------------------------------------------------------- /.output/public/_nuxt/7mXSOByi.js: -------------------------------------------------------------------------------- 1 | import{v as H,x as _,y as v,z as S,A as z,B as T,C as M,D as $,E as G,h as w,G as I,H as K,I as L,e as j,u as q,J as F,l as J,i as N,w as f,K as V,o as x,b as y,_ as U,d as E,t as g,s as W,a as C}from"./7iU6E5Xm.js";import{_ as k}from"./Dt4uv5Vt.js";import{_ as Q}from"./CGc4XQCy.js";import"./Cp5OmZP0.js";const X=s=>s==="defer"||s===!1;function Y(...s){var R;const r=typeof s[s.length-1]=="string"?s.pop():void 0;typeof s[0]!="string"&&s.unshift(r);let[a,l,e={}]=s;if(typeof a!="string")throw new TypeError("[nuxt] [asyncData] key must be a string.");if(typeof l!="function")throw new TypeError("[nuxt] [asyncData] handler must be a function.");const t=H(),h=l,m=()=>_.value,p=()=>t.isHydrating?t.payload.data[a]:t.static.data[a];e.server=e.server??!0,e.default=e.default??m,e.getCachedData=e.getCachedData??p,e.lazy=e.lazy??!1,e.immediate=e.immediate??!0,e.deep=e.deep??_.deep,e.dedupe=e.dedupe??"cancel";const u=e.getCachedData(a,t),P=u!=null;if(!t._asyncData[a]||!e.immediate){(R=t.payload._errors)[a]??(R[a]=_.errorValue);const i=e.deep?v:S;t._asyncData[a]={data:i(P?u:e.default()),pending:v(!P),error:z(t.payload._errors,a),status:v("idle"),_default:e.default}}const n={...t._asyncData[a]};delete n._default,n.refresh=n.execute=(i={})=>{if(t._asyncDataPromises[a]){if(X(i.dedupe??e.dedupe))return t._asyncDataPromises[a];t._asyncDataPromises[a].cancelled=!0}if(i._initial||t.isHydrating&&i._initial!==!1){const c=i._initial?u:e.getCachedData(a,t);if(c!=null)return Promise.resolve(c)}n.pending.value=!0,n.status.value="pending";const d=new Promise((c,o)=>{try{c(h(t))}catch(D){o(D)}}).then(async c=>{if(d.cancelled)return t._asyncDataPromises[a];let o=c;e.transform&&(o=await e.transform(c)),e.pick&&(o=A(o,e.pick)),t.payload.data[a]=o,n.data.value=o,n.error.value=_.errorValue,n.status.value="success"}).catch(c=>{if(d.cancelled)return t._asyncDataPromises[a];n.error.value=G(c),n.data.value=w(e.default()),n.status.value="error"}).finally(()=>{d.cancelled||(n.pending.value=!1,delete t._asyncDataPromises[a])});return t._asyncDataPromises[a]=d,t._asyncDataPromises[a]},n.clear=()=>Z(t,a);const b=()=>n.refresh({_initial:!0}),B=e.server!==!1&&t.payload.serverRendered;{const i=I();if(i&&B&&e.immediate&&!i.sp&&(i.sp=[]),i&&!i._nuxtOnBeforeMountCbs){i._nuxtOnBeforeMountCbs=[];const o=i._nuxtOnBeforeMountCbs;K(()=>{o.forEach(D=>{D()}),o.splice(0,o.length)}),L(()=>o.splice(0,o.length))}B&&t.isHydrating&&(n.error.value||u!=null)?(n.pending.value=!1,n.status.value=n.error.value?"error":"success"):i&&(t.payload.serverRendered&&t.isHydrating||e.lazy)&&e.immediate?i._nuxtOnBeforeMountCbs.push(b):e.immediate&&b();const d=$();if(e.watch){const o=T(e.watch,()=>n.refresh());d&&M(o)}const c=t.hook("app:data:refresh",async o=>{(!o||o.includes(a))&&await n.refresh()});d&&M(c)}const O=Promise.resolve(t._asyncDataPromises[a]).then(()=>n);return Object.assign(O,n),O}function Z(s,r){r in s.payload.data&&(s.payload.data[r]=void 0),r in s.payload._errors&&(s.payload._errors[r]=_.errorValue),s._asyncData[r]&&(s._asyncData[r].data.value=void 0,s._asyncData[r].error.value=_.errorValue,s._asyncData[r].pending.value=!1,s._asyncData[r].status.value="idle"),r in s._asyncDataPromises&&(s._asyncDataPromises[r]&&(s._asyncDataPromises[r].cancelled=!0),s._asyncDataPromises[r]=void 0)}function A(s,r){const a={};for(const l of r)a[l]=s[l];return a}const ee={class:"article"},ae={class:"mb-4"},oe=j({__name:"[...slug]",setup(s){const{t:r}=q(),a=F();return J(async()=>{const l=a.currentRoute.value.fullPath;await Y(()=>queryContent(l).findOne(),"$ok6Mx3ME21")}),(l,e)=>{const t=V("ContentRenderer"),h=V("ContentDoc"),m=U,p=k;return x(),N(Q,{"sub-title":w(r)("news.title")},{content:f(()=>[y(h,null,{default:f(({doc:u})=>[C("article",ee,[C("h1",null,g(u.title),1),C("p",ae,g(new Date(u.date).toLocaleDateString()),1),y(t,{value:u},null,8,["value"])])]),_:1}),w(a).currentRoute.value.fullPath.startsWith("/news/releases")?(x(),N(m,{key:0,href:"https://github.com/lingyicute/yidrop/blob/main/app/assets/CHANGELOG.md",class:"mt-4 underline"},{default:f(()=>e[0]||(e[0]=[E(" Checkout the full changelog ")])),_:1})):W("",!0)]),back:f(()=>[y(p,{to:"/news",class:"mt-8"},{default:f(()=>[y(m,{class:"dark:text-gray-300"},{default:f(()=>[E(g(l.$t("news.showAll")),1)]),_:1})]),_:1})]),_:1},8,["sub-title"])}}});export{oe as default}; 2 | -------------------------------------------------------------------------------- /.output/public/_nuxt/C10QlJ6W.js: -------------------------------------------------------------------------------- 1 | import{_ as v}from"./CfrowSII.js";import{_ as b}from"./Dt4uv5Vt.js";import{e as f,c as u,o as h,b as o,a as s,k as w,t as a,p as g,u as k,f as j,l as D,n as c,m as S,h as e,w as l,d as _}from"./7iU6E5Xm.js";import{_ as P}from"./Cp5OmZP0.js";import{_ as $}from"./DlAUqK2U.js";const C={class:"flex flex-col items-center rounded-xl bg-gray-100 pb-4 pl-4 pr-4 pt-8 dark:bg-gray-800 dark:text-gray-300"},N={class:"mt-4 text-center text-xl font-bold dark:text-white"},B={class:"mt-2 text-center dark:text-gray-400"},L=f({__name:"FeatureCard",props:{title:{type:String,required:!0},description:{type:String,required:!0},icon:{type:String,required:!0}},setup(d){const t=d;return(y,r)=>{const m=w;return h(),u("div",C,[o(m,{name:t.icon,class:"text-6xl dark:text-gray-300"},null,8,["name"]),s("h3",N,a(t.title),1),s("p",B,a(t.description),1)])}}}),V=g("/img/yidrop.webp"),q=g("/img/screenshot-pc.webp"),I={class:"flex min-h-screen items-center justify-center pt-12 md:pt-0"},z={style:{"max-width":"1800px"},class:"grid grid-cols-12"},A={class:"col-span-12 grid grid-cols-12 pb-12 sm:col-span-12 md:col-span-8 md:pb-0 lg:col-span-7"},F={class:"col-span-12 flex items-center justify-center md:col-span-8 md:justify-start lg:pl-2"},T={class:"slogan mt-2 px-4 text-center text-xl font-light dark:text-gray-300 md:px-0 md:text-start md:text-xl xl:text-2xl 2xl:text-3xl"},Y={class:"slogan px-4 text-center text-xl font-light dark:text-gray-300 md:px-0 md:text-start md:text-xl xl:text-2xl 2xl:text-3xl"},E={class:"buttons mt-4 flex flex-wrap justify-center gap-4 px-4 md:justify-start md:px-0 xl:mt-6"},M={class:"m-auto mt-4 flex max-w-screen-lg flex-col items-center px-4 lg:px-12"},R={class:"text-3xl font-bold dark:text-white"},U={class:"mt-8 grid grid-cols-1 gap-4 sm:grid-cols-2 md:grid-cols-3 lg:gap-12"},G={class:"mt-24 text-center text-3xl font-bold dark:text-white"},H={class:"mb-36 mt-8 flex items-center justify-center gap-4"},J=f({__name:"index",setup(d){const{t,locale:y}=k(),r=j();return D(()=>{window.location.hash==="#/privacy"&&c("/privacy"),window.location.hash==="#/terms-of-service"&&c("/terms"),window.location.hash==="#/contact"&&c("/contact")}),(m,i)=>{const p=v,x=b,n=L;return h(),u("div",null,[s("div",I,[s("div",z,[s("div",A,[i[1]||(i[1]=s("div",{class:"col-span-12 mt-0 flex items-center justify-center md:col-span-4 md:justify-end lg:mt-2"},[s("img",{id:"logo",src:P,alt:"YiDrop Logo",class:"h-52 object-contain md:h-40 lg:h-40 xl:h-48 2xl:h-56"})],-1)),s("div",F,[s("div",null,[i[0]||(i[0]=s("h1",{class:"text-center text-5xl font-black dark:text-white sm:text-5xl md:text-start xl:text-7xl 2xl:text-8xl"}," YiDrop ",-1)),s("h2",T,a(e(t)("home.slogan1")),1),s("h2",Y,a(e(t)("home.slogan2")),1),s("div",E,[o(x,{to:e(r)({path:"/download"})},{default:l(()=>[o(p,{icon:"material-symbols:arrow-downward",dark:!0},{default:l(()=>[_(a(e(t)("home.download")),1)]),_:1})]),_:1},8,["to"])])])])]),i[2]||(i[2]=S('
iPhone Screenshot
PC Screenshot
',1))])]),s("div",M,[s("h2",R,a(e(t)("home.features.title")),1),s("div",U,[o(n,{title:e(t)("home.features.decentralized"),description:e(t)("home.features.decentralizedDescription"),icon:"material-symbols:share"},null,8,["title","description"]),o(n,{title:e(t)("home.features.crossPlatform"),description:e(t)("home.features.crossPlatformDescription"),icon:"material-symbols:devices"},null,8,["title","description"]),o(n,{title:e(t)("home.features.free"),description:e(t)("home.features.freeDescription"),icon:"material-symbols:volunteer-activism"},null,8,["title","description"]),o(n,{title:e(t)("home.features.openSource"),description:e(t)("home.features.openSourceDescription"),icon:"material-symbols:code"},null,8,["title","description"]),o(n,{title:e(t)("home.features.secure"),description:e(t)("home.features.secureDescription"),icon:"material-symbols:lock"},null,8,["title","description"]),o(n,{title:e(t)("home.features.easy"),description:e(t)("home.features.easyDescription"),icon:"material-symbols:gesture"},null,8,["title","description"])]),s("h2",G,a(e(t)("home.get")),1),s("div",H,[o(x,{to:e(r)({path:"/download"})},{default:l(()=>[o(p,{icon:"material-symbols:download",dark:!0},{default:l(()=>[_(a(e(t)("home.download")),1)]),_:1})]),_:1},8,["to"])])])])}}}),Z=$(J,[["__scopeId","data-v-3809a6f1"]]);export{Z as default}; 2 | -------------------------------------------------------------------------------- /.output/public/_nuxt/Dt4uv5Vt.js: -------------------------------------------------------------------------------- 1 | import{J as C,e as T,y as w,v as _,l as U,L as B,M as E,N as I,O as V,P as A,K as L,Q as F,R as x,n as H,S as O,T as D,U as M,V as N,W,X as z,Y as Q}from"./7iU6E5Xm.js";async function j(t,n=C()){const{path:d,matched:p}=n.resolve(t);if(!p.length||(n._routePreloaded||(n._routePreloaded=new Set),n._routePreloaded.has(d)))return;const g=n._preloadPromises=n._preloadPromises||[];if(g.length>4)return Promise.all(g).then(()=>j(t,n));n._routePreloaded.add(d);const e=p.map(a=>{var f;return(f=a.components)==null?void 0:f.default}).filter(a=>typeof a=="function");for(const a of e){const f=Promise.resolve(a()).catch(()=>{}).finally(()=>g.splice(g.indexOf(f)));g.push(f)}await Promise.all(g)}const $=(...t)=>t.find(n=>n!==void 0);function G(t){const n=t.componentName||"NuxtLink";function d(e){return typeof e=="string"&&e.startsWith("#")}function p(e,a){if(!e||t.trailingSlash!=="append"&&t.trailingSlash!=="remove")return e;if(typeof e=="string")return k(e,t.trailingSlash);const f="path"in e&&e.path!==void 0?e.path:a(e).path;return{...e,name:void 0,path:k(f,t.trailingSlash)}}function g(e){const a=C(),f=M(),i=x(()=>!!e.target&&e.target!=="_self"),v=x(()=>{const o=e.to||e.href||"";return typeof o=="string"&&N(o,{acceptRelative:!0})}),P=L("RouterLink"),y=P&&typeof P!="string"?P.useLink:void 0,m=x(()=>{if(e.external)return!0;const o=e.to||e.href||"";return typeof o=="object"?!1:o===""||v.value}),r=x(()=>{const o=e.to||e.href||"";return m.value?o:p(o,a.resolve)}),c=m.value||y==null?void 0:y({...e,to:r}),b=x(()=>{var o;if(!r.value||v.value||d(r.value))return r.value;if(m.value){const R=typeof r.value=="object"&&"path"in r.value?O(r.value):r.value,S=typeof R=="object"?a.resolve(R).href:R;return p(S,a.resolve)}return typeof r.value=="object"?((o=a.resolve(r.value))==null?void 0:o.href)??null:p(D(f.app.baseURL,r.value),a.resolve)});return{to:r,hasTarget:i,isAbsoluteUrl:v,isExternal:m,href:b,isActive:(c==null?void 0:c.isActive)??x(()=>r.value===a.currentRoute.value.path),isExactActive:(c==null?void 0:c.isExactActive)??x(()=>r.value===a.currentRoute.value.path),route:(c==null?void 0:c.route)??x(()=>a.resolve(r.value)),async navigate(){await H(b.value,{replace:e.replace,external:m.value||i.value})}}}return T({name:n,props:{to:{type:[String,Object],default:void 0,required:!1},href:{type:[String,Object],default:void 0,required:!1},target:{type:String,default:void 0,required:!1},rel:{type:String,default:void 0,required:!1},noRel:{type:Boolean,default:void 0,required:!1},prefetch:{type:Boolean,default:void 0,required:!1},prefetchOn:{type:[String,Object],default:void 0,required:!1},noPrefetch:{type:Boolean,default:void 0,required:!1},activeClass:{type:String,default:void 0,required:!1},exactActiveClass:{type:String,default:void 0,required:!1},prefetchedClass:{type:String,default:void 0,required:!1},replace:{type:Boolean,default:void 0,required:!1},ariaCurrentValue:{type:String,default:void 0,required:!1},external:{type:Boolean,default:void 0,required:!1},custom:{type:Boolean,default:void 0,required:!1}},useLink:g,setup(e,{slots:a}){const f=C(),{to:i,href:v,navigate:P,isExternal:y,hasTarget:m,isAbsoluteUrl:r}=g(e),c=w(!1),b=w(null),o=l=>{var s;b.value=e.custom?(s=l==null?void 0:l.$el)==null?void 0:s.nextElementSibling:l==null?void 0:l.$el};function R(l){var s,u;return!c.value&&(typeof e.prefetchOn=="string"?e.prefetchOn===l:((s=e.prefetchOn)==null?void 0:s[l])??((u=t.prefetchOn)==null?void 0:u[l]))&&(e.prefetch??t.prefetch)!==!1&&e.noPrefetch!==!0&&e.target!=="_blank"&&!X()}async function S(l=_()){if(c.value)return;c.value=!0;const s=typeof i.value=="string"?i.value:y.value?O(i.value):f.resolve(i.value).fullPath,u=y.value?new URL(s,window.location.href).href:s;await Promise.all([l.hooks.callHook("link:prefetch",u).catch(()=>{}),!y.value&&!m.value&&j(i.value,f).catch(()=>{})])}if(R("visibility")){const l=_();let s,u=null;U(()=>{const h=J();B(()=>{s=E(()=>{var q;(q=b==null?void 0:b.value)!=null&&q.tagName&&(u=h.observe(b.value,async()=>{u==null||u(),u=null,await S(l)}))})})}),I(()=>{s&&V(s),u==null||u(),u=null})}return()=>{var u;if(!y.value&&!m.value&&!d(i.value)){const h={ref:o,to:i.value,activeClass:e.activeClass||t.activeClass,exactActiveClass:e.exactActiveClass||t.exactActiveClass,replace:e.replace,ariaCurrentValue:e.ariaCurrentValue,custom:e.custom};return e.custom||(R("interaction")&&(h.onPointerenter=S.bind(null,void 0),h.onFocus=S.bind(null,void 0)),c.value&&(h.class=e.prefetchedClass||t.prefetchedClass),h.rel=e.rel||void 0),A(L("RouterLink"),h,a.default)}const l=e.target||null,s=$(e.noRel?"":e.rel,t.externalRelAttribute,r.value||m.value?"noopener noreferrer":"")||null;return e.custom?a.default?a.default({href:v.value,navigate:P,prefetch:S,get route(){if(!v.value)return;const h=new URL(v.value,window.location.href);return{path:h.pathname,fullPath:h.pathname,get query(){return F(h.search)},hash:h.hash,params:{},name:void 0,matched:[],redirectedFrom:void 0,meta:{},href:v.value}},rel:s,target:l,isExternal:y.value||m.value,isActive:!1,isExactActive:!1}):null:A("a",{ref:b,href:v.value||null,rel:s,target:l},(u=a.default)==null?void 0:u.call(a))}}})}const Z=G(Q);function k(t,n){const d=n==="append"?W:z;return N(t)&&!t.startsWith("http")?t:d(t,!0)}function J(){const t=_();if(t._observer)return t._observer;let n=null;const d=new Map,p=(e,a)=>(n||(n=new IntersectionObserver(f=>{for(const i of f){const v=d.get(i.target);(i.isIntersecting||i.intersectionRatio>0)&&v&&v()}})),d.set(e,a),n.observe(e),()=>{d.delete(e),n==null||n.unobserve(e),d.size===0&&(n==null||n.disconnect(),n=null)});return t._observer={observe:p}}const K=/2g/;function X(){const t=navigator.connection;return!!(t&&(t.saveData||K.test(t.effectiveType)))}export{Z as _}; 2 | -------------------------------------------------------------------------------- /pages/index.vue: -------------------------------------------------------------------------------- 1 | 138 | 139 | 165 | 166 | 202 | -------------------------------------------------------------------------------- /.output/public/__sitemap__/style.xsl: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | XML Sitemap 14 | 15 | 106 | 107 | 108 |
109 |
110 |
111 |

XML Sitemap

112 |

yidrop-website

113 | 114 | 115 |

116 | This XML Sitemap Index file contains 117 | sitemaps. 118 |

119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 137 | 141 | 142 | 143 | 144 |
SitemapLast Modified
133 | 134 | 135 | 136 | 138 | 140 |
145 |
146 | 147 |

148 | This XML Sitemap contains 149 | URLs. 150 |

151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 172 | 175 | 178 | 179 | 180 | 181 |
URLImagesLast Updated
165 | 166 | 167 | 168 | 169 | 170 | 171 | 173 | 174 | 176 | 177 |
182 |
183 |
184 |
185 | 186 |
187 | 188 | 189 |
190 |
191 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright 2022-2024 Tien Do Nam 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /.output/public/200.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | -------------------------------------------------------------------------------- /.output/public/404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | -------------------------------------------------------------------------------- /.output/public/news.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | YiDrop 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 |
33 | -------------------------------------------------------------------------------- /.output/public/download.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | YiDrop - Downloads 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 |
YiDrop Logo

YiDrop

Downloads

Homepage

© 2025 lingyicute

35 | -------------------------------------------------------------------------------- /.output/public/zh-CN/download.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | YiDrop - 下载 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 |
YiDrop Logo

YiDrop

下载

主页

© 2025 lingyicute

35 | -------------------------------------------------------------------------------- /.output/public/zh-CN.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | YiDrop:快速且安全地分享文件 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 |

YiDrop

快速且安全地分享文件,

开源、免费、跨平台。

iPhone Screenshot
PC Screenshot

特点

去中心化

文件在局域网里悄悄旅行,无需服务器中转,又快又安全。

跨平台

YiDrop 带着跨平台的使命出发,支持 Android、Windows 和 Linux 全架构。

清爽,纯粹

像清晨第一缕阳光般干净,没有广告弹窗打扰,也没有讨厌的跟踪。

开源

源代码在 GitHub 上公开可用,任何人都可以为项目做出贡献。

安全

端到端加密确保只有你和接收者可以访问你的文件。

简单

轻松上手的用户界面,发送文件比吹散蒲公英还简单~

获取 YiDrop

© 2025 lingyicute

36 | --------------------------------------------------------------------------------