A music player that connects to your cloud/distributed storage.
at v4 89 lines 1.9 kB view raw
1<main> 2 <div class="panel"> 3 <p> 4 Import data from the previous version of Diffuse (v3). Upload the snapshot JSON file you 5 exported. 6 </p> 7 <hr /> 8 <div class="row"> 9 <label class="with-icon" for="file"> 10 <i class="ph-bold ph-upload"></i> 11 <input id="file" type="file" accept=".json,application/json" /> 12 </label> 13 </div> 14 <hr /> 15 <div class="row"> 16 <button id="import-favourites" disabled> 17 <span class="with-icon"><i class="ph-fill ph-star"></i> Import favourites</span> 18 </button> 19 </div> 20 <div class="row"> 21 <button id="import-playlist-items" disabled> 22 <span class="with-icon"><i class="ph-bold ph-playlist"></i> Import playlist items</span> 23 </button> 24 </div> 25 <div id="status" class="status" hidden></div> 26 </div> 27</main> 28 29<style> 30 @import "./styles/base.css"; 31 @import "./styles/wireframe/ui.css"; 32 @import "./vendor/@phosphor-icons/web/bold/style.css"; 33 @import "./vendor/@phosphor-icons/web/fill/style.css"; 34 35 body { 36 display: flex; 37 align-items: center; 38 justify-content: center; 39 height: 100dvh; 40 } 41 42 main { 43 opacity: 0; 44 padding: var(--space-md); 45 pointer-events: none; 46 transition: opacity 750ms; 47 48 &.has-loaded { 49 opacity: 1; 50 pointer-events: auto; 51 } 52 } 53 54 p { 55 line-height: var(--leading-relaxed); 56 max-width: 42ch; 57 } 58 59 label { 60 flex: 1; 61 } 62 63 input[type="file"] { 64 flex: 1; 65 } 66 67 .status { 68 margin-top: var(--space-sm); 69 font-size: var(--text-sm); 70 } 71 72 .status--success { 73 color: var(--accent); 74 75 @media (prefers-color-scheme: dark) { 76 color: var(--accent-twist-4); 77 } 78 } 79 80 .status--error { 81 color: var(--accent-twist-5); 82 83 @media (prefers-color-scheme: dark) { 84 color: var(--accent-twist-3); 85 } 86 } 87</style> 88 89<script type="module" src="facets/data/v3-import/index.inline.js"></script>