index.html 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  6. <!-- Web App Config -->
  7. <title>Snapdrop</title>
  8. <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
  9. <meta name="theme-color" content="#3367d6">
  10. <meta name="color-scheme" content="dark light">
  11. <meta name="apple-mobile-web-app-capable" content="no">
  12. <meta name="apple-mobile-web-app-title" content="Snapdrop">
  13. <!-- Descriptions -->
  14. <meta property="og:title" content="Snapdrop">
  15. <meta property="og:type" content="article">
  16. <meta property="og:url" content="https://snapdrop.net/">
  17. <meta property="og:author" content="https://facebook.com/RobinLinus">
  18. <meta name="twitter:author" content="@RobinLinus">
  19. <meta name="twitter:card" content="summary_large_image">
  20. <meta name="twitter:description" content="Instantly share images, videos, PDFs, and links with people nearby. Peer2Peer and Open Source. No Setup, No Signup.">
  21. <meta name="og:description" content="Instantly share images, videos, PDFs, and links with people nearby. Peer2Peer and Open Source. No Setup, No Signup.">
  22. <!-- Icons -->
  23. <link rel="icon" sizes="96x96" href="images/favicon-96x96.png">
  24. <link rel="shortcut icon" href="images/favicon-96x96.png">
  25. <link rel="apple-touch-icon" href="images/apple-touch-icon.png">
  26. <meta name="msapplication-TileImage" content="images/mstile-150x150.png">
  27. <link rel="fluid-icon" type="image/png" href="images/android-chrome-192x192.png">
  28. <meta name="twitter:image" content="https://snapdrop.net/images/twitter-stream.jpg">
  29. <meta property="og:image" content="https://snapdrop.net/images/twitter-stream.jpg">
  30. <!-- Resources -->
  31. <link rel="stylesheet" type="text/css" href="styles.css">
  32. <link rel="manifest" href="manifest.json">
  33. </head>
  34. <body translate="no">
  35. <header class="row-reverse">
  36. <a href="#about" class="icon-button" title="About Snapdrop">
  37. <svg class="icon">
  38. <use xlink:href="#info-outline" />
  39. </svg>
  40. </a>
  41. <a href="#" id="theme" class="icon-button" title="Change Theme" >
  42. <svg class="icon">
  43. <use xlink:href="#icon-theme" />
  44. </svg>
  45. </a>
  46. <a href="#" id="notification" class="icon-button" title="Enable Notifications" hidden>
  47. <svg class="icon">
  48. <use xlink:href="#notifications" />
  49. </svg>
  50. </a>
  51. <a href="#" id="install" class="icon-button" title="Install Snapdrop" hidden>
  52. <svg class="icon">
  53. <use xlink:href="#homescreen" />
  54. </svg>
  55. </a>
  56. </header>
  57. <!-- Peers -->
  58. <x-peers class="center"></x-peers>
  59. <x-no-peers>
  60. <h2>Open Snapdrop on other devices to send files.</h2>
  61. </x-no-peers>
  62. <x-instructions desktop="Click to send files or right click to send a message." mobile="Tap to send files or long tap to send a message."></x-instructions>
  63. <!-- Footer -->
  64. <footer class="column">
  65. <svg class="icon logo">
  66. <use xlink:href="#wifi-tethering" />
  67. </svg>
  68. <div id="displayName">The easiest way to transfer data across devices.</div>
  69. <div class="font-body2">Allow me to be discovered by: Everyone in this network.</div>
  70. </footer>
  71. <!-- Receive Dialog -->
  72. <x-dialog id="receiveDialog">
  73. <x-background class="full center">
  74. <x-paper shadow="2">
  75. <h3>File Received</h3>
  76. <div class="font-subheading" id="fileName">Filename</div>
  77. <div class="font-body2" id="fileSize"></div>
  78. <div class="row-reverse">
  79. <a class="button" close id="download" title="Download File" autofocus>Download</a>
  80. <button class="button" close>Ignore</button>
  81. </div>
  82. </x-paper>
  83. </x-background>
  84. </x-dialog>
  85. <!-- Send Text Dialog -->
  86. <x-dialog id="sendTextDialog">
  87. <form action="#">
  88. <x-background class="full center">
  89. <x-paper shadow="2">
  90. <h3>Send a Message</h3>
  91. <input id="textInput" placeholder="Send a message" autocomplete="off" autofocus>
  92. <div class="row-reverse">
  93. <button class="button" type="submit" close>Send</button>
  94. <a class="button" close>Cancel</a>
  95. </div>
  96. </x-paper>
  97. </x-background>
  98. </form>
  99. </x-dialog>
  100. <!-- Receive Text Dialog -->
  101. <x-dialog id="receiveTextDialog">
  102. <x-background class="full center">
  103. <x-paper shadow="2">
  104. <h3>Message Received</h3>
  105. <div class="font-subheading" id="text"></div>
  106. <div class="row-reverse">
  107. <button class="button" id="copy" close autofocus>Copy</button>
  108. <button class="button" close>Close</button>
  109. </div>
  110. </x-paper>
  111. </x-background>
  112. </x-dialog>
  113. <!-- Toast -->
  114. <div class="toast-container full center">
  115. <x-toast class="row" shadow="1" id="toast">File Transfer Completed</x-toast>
  116. </div>
  117. <!-- About Page -->
  118. <x-about id="about" class="full center column">
  119. <section class="center column fade-in">
  120. <header class="row-reverse">
  121. <a href="#" class="close icon-button">
  122. <svg class="icon">
  123. <use xlink:href="#close" />
  124. </svg>
  125. </a>
  126. </header>
  127. <svg class="icon logo">
  128. <use xlink:href="#wifi-tethering" />
  129. </svg>
  130. <h1>Snapdrop</h1>
  131. <div class="font-subheading">The easiest way to transfer files across devices.</div>
  132. <div class="row">
  133. <a class="icon-button" target="_blank" href="https://github.com/RobinLinus/snapdrop" title="Snapdrop on Github" rel="noreferrer">
  134. <svg class="icon">
  135. <use xlink:href="#github" />
  136. </svg>
  137. </a>
  138. <a class="icon-button" target="_blank" href="https://github.com/RobinLinus/snapdrop#support-the-snapdrop-community" title="Contribute to keep Snapdrop free" rel="noreferrer">
  139. <svg class="icon">
  140. <use xlink:href="#monetarization" />
  141. </svg>
  142. </a>
  143. <a class="icon-button" target="_blank" href="https://twitter.com/intent/tweet?text=https://snapdrop.net%20by%20@robin_linus%20&" title="Tweet about Snapdrop" rel="noreferrer">
  144. <svg class="icon">
  145. <use xlink:href="#twitter" />
  146. </svg>
  147. </a>
  148. <a class="icon-button" target="_blank" href="https://github.com/RobinLinus/snapdrop/docs/faq.md" title="Frequently asked questions" rel="noreferrer">
  149. <svg class="icon">
  150. <use xlink:href="#help-outline" />
  151. </svg>
  152. </a>
  153. </div>
  154. </section>
  155. <x-background></x-background>
  156. </x-about>
  157. <!-- SVG Icon Library -->
  158. <svg style="display: none;">
  159. <symbol id=wifi-tethering viewBox="0 0 24 24">
  160. <path d="M12 11c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm6 2c0-3.31-2.69-6-6-6s-6 2.69-6 6c0 2.22 1.21 4.15 3 5.19l1-1.74c-1.19-.7-2-1.97-2-3.45 0-2.21 1.79-4 4-4s4 1.79 4 4c0 1.48-.81 2.75-2 3.45l1 1.74c1.79-1.04 3-2.97 3-5.19zM12 3C6.48 3 2 7.48 2 13c0 3.7 2.01 6.92 4.99 8.65l1-1.73C5.61 18.53 4 15.96 4 13c0-4.42 3.58-8 8-8s8 3.58 8 8c0 2.96-1.61 5.53-4 6.92l1 1.73c2.99-1.73 5-4.95 5-8.65 0-5.52-4.48-10-10-10z"></path>
  161. </symbol>
  162. <symbol id=desktop-mac viewBox="0 0 24 24">
  163. <path d="M21 2H3c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h7l-2 3v1h8v-1l-2-3h7c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 12H3V4h18v10z"></path>
  164. </symbol>
  165. <symbol id=phone-iphone viewBox="0 0 24 24">
  166. <path d="M15.5 1h-8C6.12 1 5 2.12 5 3.5v17C5 21.88 6.12 23 7.5 23h8c1.38 0 2.5-1.12 2.5-2.5v-17C18 2.12 16.88 1 15.5 1zm-4 21c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm4.5-4H7V4h9v14z"></path>
  167. </symbol>
  168. <symbol id=tablet-mac viewBox="0 0 24 24">
  169. <path d="M18.5 0h-14C3.12 0 2 1.12 2 2.5v19C2 22.88 3.12 24 4.5 24h14c1.38 0 2.5-1.12 2.5-2.5v-19C21 1.12 19.88 0 18.5 0zm-7 23c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm7.5-4H4V3h15v16z"></path>
  170. </symbol>
  171. <symbol id=info-outline viewBox="0 0 24 24">
  172. <path d="M11 17h2v-6h-2v6zm1-15C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zM11 9h2V7h-2v2z"></path>
  173. </symbol>
  174. <symbol id=close viewBox="0 0 24 24">
  175. <path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path>
  176. </symbol>
  177. <symbol id=help-outline viewBox="0 0 24 24">
  178. <path d="M11 18h2v-2h-2v2zm1-16C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm0-14c-2.21 0-4 1.79-4 4h2c0-1.1.9-2 2-2s2 .9 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5 0-2.21-1.79-4-4-4z"></path>
  179. </symbol>
  180. <symbol id="twitter">
  181. <path d="M23.954 4.569c-.885.389-1.83.654-2.825.775 1.014-.611 1.794-1.574 2.163-2.723-.951.555-2.005.959-3.127 1.184-.896-.959-2.173-1.559-3.591-1.559-2.717 0-4.92 2.203-4.92 4.917 0 .39.045.765.127 1.124C7.691 8.094 4.066 6.13 1.64 3.161c-.427.722-.666 1.561-.666 2.475 0 1.71.87 3.213 2.188 4.096-.807-.026-1.566-.248-2.228-.616v.061c0 2.385 1.693 4.374 3.946 4.827-.413.111-.849.171-1.296.171-.314 0-.615-.03-.916-.086.631 1.953 2.445 3.377 4.604 3.417-1.68 1.319-3.809 2.105-6.102 2.105-.39 0-.779-.023-1.17-.067 2.189 1.394 4.768 2.209 7.557 2.209 9.054 0 13.999-7.496 13.999-13.986 0-.209 0-.42-.015-.63.961-.689 1.8-1.56 2.46-2.548l-.047-.02z" />
  182. </symbol>
  183. <symbol id="github">
  184. <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12" />
  185. </symbol>
  186. <g id="notifications">
  187. <path d="M12 22c1.1 0 2-.9 2-2h-4c0 1.1.89 2 2 2zm6-6v-5c0-3.07-1.64-5.64-4.5-6.32V4c0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5v.68C7.63 5.36 6 7.92 6 11v5l-2 2v1h16v-1l-2-2z" />
  188. </g>
  189. <symbol id="homescreen">
  190. <path fill="none" d="M0 0h24v24H0V0z" />
  191. <path d="M18 1.01L8 1c-1.1 0-2 .9-2 2v3h2V5h10v14H8v-1H6v3c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2V3c0-1.1-.9-1.99-2-1.99zM10 15h2V8H5v2h3.59L3 15.59 4.41 17 10 11.41z" />
  192. <path fill="none" d="M0 0h24v24H0V0z" />
  193. </symbol>
  194. <symbol id="monetarization">
  195. <path d="M0 0h24v24H0z" fill="none" />
  196. <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1.41 16.09V20h-2.67v-1.93c-1.71-.36-3.16-1.46-3.27-3.4h1.96c.1 1.05.82 1.87 2.65 1.87 1.96 0 2.4-.98 2.4-1.59 0-.83-.44-1.61-2.67-2.14-2.48-.6-4.18-1.62-4.18-3.67 0-1.72 1.39-2.84 3.11-3.21V4h2.67v1.95c1.86.45 2.79 1.86 2.85 3.39H14.3c-.05-1.11-.64-1.87-2.22-1.87-1.5 0-2.4.68-2.4 1.64 0 .84.65 1.39 2.67 1.91s4.18 1.39 4.18 3.91c-.01 1.83-1.38 2.83-3.12 3.16z" />
  197. </symbol>
  198. <symbol id="icon-theme" viewBox="0 0 40 40">
  199. <circle cx="20" cy="20" r="16"/>
  200. </symbol>
  201. </svg>
  202. <!-- Scripts -->
  203. <script src="scripts/network.js"></script>
  204. <script src="scripts/theme.js"></script>
  205. <script src="scripts/ui.js"></script>
  206. <!-- Sounds -->
  207. <audio id="blop" autobuffer="true">
  208. <source src="/sounds/blop.mp3" type="audio/mpeg">
  209. <source src="/sounds/blop.ogg" type="audio/ogg">
  210. </audio>
  211. <!-- no script -->
  212. <noscript>
  213. <x-noscript class="full center column">
  214. <h1>Enable Javascript</h1>
  215. <h3>Snapdrop works only with Javascript.</h3>
  216. </x-noscript>
  217. <style>
  218. x-noscript {
  219. background: #599cfc;
  220. color: white;
  221. z-index: 2;
  222. }
  223. a[href="#info"] {
  224. color: white;
  225. }
  226. </style>
  227. </noscript>
  228. </body>