diff --git a/packages/app/src/components/content/NostrGrid.vue b/packages/app/src/components/content/NostrGrid.vue index 25f37f2f..38b492c9 100644 --- a/packages/app/src/components/content/NostrGrid.vue +++ b/packages/app/src/components/content/NostrGrid.vue @@ -154,6 +154,12 @@ {{ note.content }}

+
+ + + @@ -199,6 +213,7 @@ import { ref, computed, onMounted, nextTick } from 'vue' import NostrDMs from './NostrDMs.vue' import NostrRelayManager from './NostrRelayManager.vue' import NostrProfileEditor from './NostrProfileEditor.vue' +import ZapDialog from './ZapDialog.vue' import { useNostr, type NostrNote, type PublishResult } from '@/composables/useNostr' import { useNostrIdentity } from '@/composables/useNostrIdentity' @@ -223,6 +238,17 @@ const composeRef = ref(null) const isPublishing = ref(false) const publishResults = ref([]) +const zapOpen = ref(false) +const zapTargetName = ref('') +const zapLightningAddress = ref(undefined) + +function openZap(note: NostrNote) { + zapTargetName.value = note.authorName ?? note.pubkey.slice(0, 12) + // In a full implementation, we'd fetch the profile to get their Lightning address + zapLightningAddress.value = undefined + zapOpen.value = true +} + const noteKinds = [ { id: 1, label: 'Notes' }, { id: 30023, label: 'Articles' }, diff --git a/packages/app/src/components/content/ZapDialog.vue b/packages/app/src/components/content/ZapDialog.vue new file mode 100644 index 00000000..5be0abd7 --- /dev/null +++ b/packages/app/src/components/content/ZapDialog.vue @@ -0,0 +1,225 @@ + + +