diff --git a/web/src/views/PastebinView.tsx b/web/src/views/PastebinView.tsx index d5a4833..191e3de 100644 --- a/web/src/views/PastebinView.tsx +++ b/web/src/views/PastebinView.tsx @@ -1,13 +1,14 @@ import { getPastebin, type PastebinTemplate } from '../api'; import { usePoll } from '../usePoll'; +import { Card, VStack, HStack, Button, Pill, Muted, ErrText, Title } from '../ui'; /** Read-only view of the live 🌹 canon templates (synced from Notes by macsync). * Editing happens in the Apple Note; this surfaces what the engine will render. */ export function PastebinView(): JSX.Element { const { data, error, loading } = usePoll<{ templates: PastebinTemplate[] }>(() => getPastebin(), 60000); - if (error) return
{error}
; - if (loading || !data) return
Loading pastebin…
; + if (error) return {error}; + if (loading || !data) return Loading pastebin…; const sync = (): void => { alert('Sync from macsync (iNotes) requested — macsync pushes updates to /pastebin via webhook. Re-polling now.'); @@ -15,34 +16,47 @@ export function PastebinView(): JSX.Element { }; return ( -
-
-
- 🌹 Pastebin Editor — macsync + Apple Notes - - 🌹 canon — {data.templates.length} templates · live-synced from the Apple Note (edit in Notes, macsync pushes). Apply from Triage/Detail composer. - -
-
- live poll - -
-
+ + + + + 🌹 Pastebin Editor — macsync + Apple Notes + + 🌹 canon — {data.templates.length} templates · live-synced from the Apple Note (edit in Notes, macsync pushes). Apply from Triage/Detail composer. + + + + live poll + + + + {data.templates.length === 0 ? ( -
No templates — macsync unreachable or the note is empty. Sends hold until available.
+ No templates — macsync unreachable or the note is empty. Sends hold until available. ) : null} -
- {data.templates.map((t) => ( -
-
- {t.key} -
-
{t.body}
-
- ))} -
-
+ + + {data.templates.map((t) => ( + + + {t.key} + + {t.body} + + ))} + + + ); }