Add keyboard mode toggle and QR scanner improvements

- Add keyboard mode toggle button (⇧K) in sidebar
- Triple-Escape to quickly exit keyboard mode
- Extract QrScannerModal to shared component
- Add QR scanner for NWC wallet connection in Settings
- Update Help page with keyboard toggle documentation
- Fix keyboard navigation getting stuck on inbox
- Improve feed loading after login (loads immediately)
- DM conversation page layout improvements

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
woikos
2026-01-04 11:08:06 +01:00
parent 4c3e8d5cc7
commit d1ec24b85a
16 changed files with 1224 additions and 476 deletions

View File

@@ -135,10 +135,10 @@ export default function ZapButton({ stuff }: { stuff: Event | string }) {
<>
<button
className={cn(
'flex items-center gap-1 select-none px-3 h-full cursor-pointer enabled:hover:text-yellow-400 disabled:text-muted-foreground/40 disabled:cursor-default',
'flex items-center gap-1 select-none px-3 h-full cursor-pointer enabled:hover:text-yellow-400 disabled:text-muted-foreground/40 disabled:cursor-default group',
hasZapped ? 'text-yellow-400' : 'text-muted-foreground'
)}
title={t('Zap')}
title={t('Zap (z)')}
disabled={disable || zapping}
data-action="zap"
onMouseDown={handleClickStart}
@@ -147,11 +147,14 @@ export default function ZapButton({ stuff }: { stuff: Event | string }) {
onTouchStart={handleClickStart}
onTouchEnd={handleClickEnd}
>
{zapping ? (
<Loader className="animate-spin" />
) : (
<Zap className={hasZapped ? 'fill-yellow-400' : ''} />
)}
<span className="relative">
{zapping ? (
<Loader className="animate-spin" />
) : (
<Zap className={hasZapped ? 'fill-yellow-400' : ''} />
)}
<kbd className="absolute -top-1.5 -right-2 text-[9px] font-mono opacity-50 group-hover:opacity-100">z</kbd>
</span>
{!!zapAmount && <div className="text-sm">{formatAmount(zapAmount)}</div>}
</button>
{event && (