Tools for the Atmosphere tools.slices.network
quickslice atproto html

feat(lexicon-explorer): add Bluesky share button and fix mobile zoom

- Add share to Bluesky button next to copy link
- Fix iOS auto-zoom by setting input font-size to 16px

+22 -6
+22 -6
lexicon-explorer.html
··· 117 border: 1px solid var(--border); 118 border-radius: 0.5rem; 119 color: var(--text-primary); 120 - font-size: 0.9375rem; 121 } 122 123 .search-input:focus { ··· 228 text-decoration: underline; 229 } 230 231 - .copy-btn { 232 background: none; 233 border: none; 234 padding: 0.25rem; ··· 238 transition: opacity 0.15s; 239 } 240 241 - .copy-btn:hover { 242 opacity: 1; 243 } 244 245 - .copy-btn.copied { 246 opacity: 1; 247 } 248 249 .card-meta { ··· 789 </div> 790 ${descriptionHtml} 791 </div> 792 - <button class="copy-btn" onclick="copyLink()" title="Copy link">🔗</button> 793 </div> 794 <div class="card-body"> 795 <pre class="card-json">${highlightJson(fullJson)}</pre> ··· 873 const url = window.location.href; 874 await navigator.clipboard.writeText(url); 875 876 - const btn = document.querySelector('.copy-btn'); 877 if (btn) { 878 btn.textContent = '✓'; 879 btn.classList.add('copied'); ··· 882 btn.classList.remove('copied'); 883 }, 1500); 884 } 885 } 886 887 // =============================================================================
··· 117 border: 1px solid var(--border); 118 border-radius: 0.5rem; 119 color: var(--text-primary); 120 + font-size: 1rem; 121 } 122 123 .search-input:focus { ··· 228 text-decoration: underline; 229 } 230 231 + .action-btn { 232 background: none; 233 border: none; 234 padding: 0.25rem; ··· 238 transition: opacity 0.15s; 239 } 240 241 + .action-btn:hover { 242 opacity: 1; 243 } 244 245 + .action-btn.copied { 246 opacity: 1; 247 + } 248 + 249 + .action-buttons { 250 + display: flex; 251 + gap: 0.25rem; 252 } 253 254 .card-meta { ··· 794 </div> 795 ${descriptionHtml} 796 </div> 797 + <div class="action-buttons"> 798 + <button class="action-btn" onclick="copyLink()" title="Copy link">🔗</button> 799 + <button class="action-btn" onclick="shareToBluesky()" title="Share on Bluesky">🦋</button> 800 + </div> 801 </div> 802 <div class="card-body"> 803 <pre class="card-json">${highlightJson(fullJson)}</pre> ··· 881 const url = window.location.href; 882 await navigator.clipboard.writeText(url); 883 884 + const btn = event.target; 885 if (btn) { 886 btn.textContent = '✓'; 887 btn.classList.add('copied'); ··· 890 btn.classList.remove('copied'); 891 }, 1500); 892 } 893 + } 894 + 895 + function shareToBluesky() { 896 + const url = window.location.href; 897 + const nsid = state.currentLexicon?.id || ''; 898 + const text = `Check out the ${nsid} lexicon\n\n${url}`; 899 + const intentUrl = `https://bsky.app/intent/compose?text=${encodeURIComponent(text)}`; 900 + window.open(intentUrl, '_blank'); 901 } 902 903 // =============================================================================