@toon-protocol/views 0.7.1 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/app/index.html +68 -68
  2. package/dist/atoms/media.d.ts.map +1 -1
  3. package/dist/atoms/media.js +21 -6
  4. package/dist/atoms/media.js.map +1 -1
  5. package/dist/atoms/profile-editor.d.ts +3 -0
  6. package/dist/atoms/profile-editor.d.ts.map +1 -0
  7. package/dist/atoms/profile-editor.js +144 -0
  8. package/dist/atoms/profile-editor.js.map +1 -0
  9. package/dist/atoms/registry.d.ts.map +1 -1
  10. package/dist/atoms/registry.js +2 -0
  11. package/dist/atoms/registry.js.map +1 -1
  12. package/dist/atoms/social.d.ts.map +1 -1
  13. package/dist/atoms/social.js +31 -4
  14. package/dist/atoms/social.js.map +1 -1
  15. package/dist/atoms/types.d.ts +10 -0
  16. package/dist/atoms/types.d.ts.map +1 -1
  17. package/dist/catalog.d.ts.map +1 -1
  18. package/dist/catalog.js +14 -2
  19. package/dist/catalog.js.map +1 -1
  20. package/dist/examples.d.ts +6 -0
  21. package/dist/examples.d.ts.map +1 -1
  22. package/dist/examples.js +25 -1
  23. package/dist/examples.js.map +1 -1
  24. package/dist/runtime.d.ts.map +1 -1
  25. package/dist/runtime.js +65 -3
  26. package/dist/runtime.js.map +1 -1
  27. package/dist/server/apps-server.js +2 -2
  28. package/dist/server/backend.d.ts +9 -9
  29. package/dist/server/backend.d.ts.map +1 -1
  30. package/dist/server/daemon-backend.d.ts +2 -2
  31. package/dist/server/daemon-backend.d.ts.map +1 -1
  32. package/dist/server/daemon-backend.js +1 -1
  33. package/dist/server/daemon-backend.js.map +1 -1
  34. package/dist/server/fake-backend.js +1 -1
  35. package/dist/spec.d.ts +7 -0
  36. package/dist/spec.d.ts.map +1 -1
  37. package/dist/spec.js +4 -1
  38. package/dist/spec.js.map +1 -1
  39. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../src/atoms/media.tsx"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,OAAO,EAAoB,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,KAAK,YAAY,EAAuD,MAAM,qBAAqB,CAAC;AAG7G,OAAO,EAAE,KAAK,IAAI,EAAwB,MAAM,YAAY,CAAC;AA6C7D,4EAA4E;AAC5E,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC;IAAE,QAAQ,EAAE,YAAY,EAAE,CAAA;CAAE,CAS5D,CAAC;AAgFF,eAAO,MAAM,UAAU,EAAE,IAAI,EAO5B,CAAC"}
1
+ {"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../src/atoms/media.tsx"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,OAAO,EAAoB,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,KAAK,YAAY,EAAuD,MAAM,qBAAqB,CAAC;AAG7G,OAAO,EAAE,KAAK,IAAI,EAAwB,MAAM,YAAY,CAAC;AA6C7D,4EAA4E;AAC5E,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC;IAAE,QAAQ,EAAE,YAAY,EAAE,CAAA;CAAE,CAS5D,CAAC;AAkGF,eAAO,MAAM,UAAU,EAAE,IAAI,EAO5B,CAAC"}
@@ -51,16 +51,26 @@ const MediaEmbed = ({ events }) => {
51
51
  const { variants } = variantsFor(event);
52
52
  return _jsx(InlineMediaList, { variants: variants });
53
53
  };
54
+ /**
55
+ * Compose the uploader's error line: the recognizable "Upload failed" label,
56
+ * suffixed with the real underlying error (the daemon labels which leg —
57
+ * Arweave upload vs. post-upload publish — failed) when one is present. Falls
58
+ * back to the bare label when no diagnostic string is available.
59
+ */
60
+ function uploadErrorMessage(detail) {
61
+ const trimmed = detail?.trim();
62
+ return trimmed ? `Upload failed: ${trimmed}` : 'Upload failed.';
63
+ }
54
64
  const MediaUploader = ({ props, actions }) => {
55
65
  const label = typeof props['label'] === 'string' ? props['label'] : 'Upload media';
56
66
  const inputRef = useRef(null);
57
67
  const [busy, setBusy] = useState(false);
58
68
  const [uploadedOk, setUploadedOk] = useState(false);
59
- const [uploadError, setUploadError] = useState(false);
69
+ const [uploadError, setUploadError] = useState(null);
60
70
  const handleFile = async (file) => {
61
71
  setBusy(true);
62
72
  setUploadedOk(false);
63
- setUploadError(false);
73
+ setUploadError(null);
64
74
  try {
65
75
  const buf = await new Promise((resolve, reject) => {
66
76
  const reader = new FileReader();
@@ -77,14 +87,19 @@ const MediaUploader = ({ props, actions }) => {
77
87
  const dataBase64 = btoa(binary);
78
88
  const outcome = await actions['upload']?.({ dataBase64, mime: file.type || undefined });
79
89
  if (outcome?.ok === false) {
80
- setUploadError(true);
90
+ // Surface the real underlying error so the failing leg (Arweave upload
91
+ // vs. post-upload kind:20 publish) is diagnosable from the UI; the
92
+ // daemon labels each leg in its error text. Keep the recognizable
93
+ // "Upload failed" affordance as a prefix, degrading gracefully to it
94
+ // alone when no error string is present.
95
+ setUploadError(uploadErrorMessage(outcome.error));
81
96
  }
82
97
  else {
83
98
  setUploadedOk(true);
84
99
  }
85
100
  }
86
- catch {
87
- setUploadError(true);
101
+ catch (err) {
102
+ setUploadError(uploadErrorMessage(err instanceof Error ? err.message : String(err)));
88
103
  }
89
104
  finally {
90
105
  setBusy(false);
@@ -96,7 +111,7 @@ const MediaUploader = ({ props, actions }) => {
96
111
  const file = e.target.files?.[0];
97
112
  if (file)
98
113
  void handleFile(file);
99
- } }), _jsxs("button", { type: "button", disabled: busy || !actions['upload'], className: "rounded-md border border-dashed border-border px-3 py-2 text-sm hover:bg-muted disabled:opacity-50", onClick: () => inputRef.current?.click(), children: [busy ? 'Uploading…' : label, ' ', _jsx("span", { className: "text-xs text-muted-foreground", children: "(pays to publish)" })] }), uploadedOk && (_jsx("p", { className: "text-xs text-muted-foreground", children: "Uploaded successfully." })), uploadError && (_jsx("p", { className: "text-xs text-destructive", children: "Upload failed." }))] }));
114
+ } }), _jsxs("button", { type: "button", disabled: busy || !actions['upload'], className: "rounded-md border border-dashed border-border px-3 py-2 text-sm hover:bg-muted disabled:opacity-50", onClick: () => inputRef.current?.click(), children: [busy ? 'Uploading…' : label, ' ', _jsx("span", { className: "text-xs text-muted-foreground", children: "(pays to publish)" })] }), uploadedOk && (_jsx("p", { className: "text-xs text-muted-foreground", children: "Uploaded successfully." })), uploadError && (_jsx("p", { className: "text-xs text-destructive whitespace-pre-wrap break-words", children: uploadError }))] }));
100
115
  };
101
116
  export const mediaAtoms = [
102
117
  { id: 'media-embed', kinds: [20, 21, 22, 1063], Component: MediaEmbed },
@@ -1 +1 @@
1
- {"version":3,"file":"media.js","sourceRoot":"","sources":["../../src/atoms/media.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"media.js","sourceRoot":"","sources":["../../src/atoms/media.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { type Atom } from './types.js';
2
+ export declare const profileEditorAtoms: Atom[];
3
+ //# sourceMappingURL=profile-editor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile-editor.d.ts","sourceRoot":"","sources":["../../src/atoms/profile-editor.tsx"],"names":[],"mappings":"AAiBA,OAAO,EAAE,KAAK,IAAI,EAAyC,MAAM,YAAY,CAAC;AA+S9E,eAAO,MAAM,kBAAkB,EAAE,IAAI,EAMpC,CAAC"}
@@ -0,0 +1,144 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ /**
3
+ * Profile editor atom — compose/update a NIP-01 kind:0 metadata event.
4
+ *
5
+ * Unlike `onboard-card` (which fires a preset publish with hardcoded args), this
6
+ * atom collects the profile fields (name / display name / picture / about /
7
+ * nip05) from input fields, serializes them into the kind:0 `content` JSON, and
8
+ * publishes via `toon_publish_unsigned` ({ kind: 0, content }) through the normal
9
+ * pay-to-write confirm flow. When a kind:0 event is bound (free read), the form
10
+ * pre-fills from it and unknown JSON fields are preserved on republish.
11
+ */
12
+ import { useEffect, useState } from 'react';
13
+ import { ArrowLeft, CircleCheck, Coins, Loader2 } from 'lucide-react';
14
+ import { Button } from '@/components/ui/button.js';
15
+ import { Input } from '@/components/ui/input.js';
16
+ import { Textarea } from '@/components/ui/textarea.js';
17
+ import { MonoId } from '@/components/mono-id.js';
18
+ import { parseProfile } from '../parsers/social.js';
19
+ import {} from './types.js';
20
+ import { byteLength } from './social-ui.js';
21
+ const EMPTY_FORM = {
22
+ name: '',
23
+ display_name: '',
24
+ picture: '',
25
+ about: '',
26
+ nip05: '',
27
+ };
28
+ /** kind:0 keys this editor owns; everything else on a bound profile is preserved. */
29
+ const EDITOR_KEYS = new Set([
30
+ 'name',
31
+ 'display_name',
32
+ 'displayName',
33
+ 'picture',
34
+ 'about',
35
+ 'nip05',
36
+ ]);
37
+ /**
38
+ * Build the kind:0 `content` JSON from the form. Starts from any preserved
39
+ * fields the bound profile carried (banner / lud16 / website / …) so a republish
40
+ * doesn't drop metadata the editor doesn't surface; empty inputs delete their key.
41
+ */
42
+ function buildContent(form, preserved) {
43
+ // `preserved` never carries the editor's own keys, so trimmed-empty fields are
44
+ // simply omitted (no delete) and a cleared field drops from the published JSON.
45
+ const content = { ...preserved };
46
+ for (const [key, value] of Object.entries(form)) {
47
+ const trimmed = value.trim();
48
+ if (trimmed)
49
+ content[key] = trimmed;
50
+ }
51
+ return JSON.stringify(content);
52
+ }
53
+ const FieldRow = ({ id, label, hint, children }) => (_jsxs("label", { htmlFor: id, className: "flex flex-col gap-1", children: [_jsxs("span", { className: "text-xs font-medium text-muted-foreground", children: [label, hint ? _jsx("span", { className: "ml-1.5 font-normal opacity-70", children: hint }) : null] }), children] }));
54
+ const ProfileEditor = ({ events, props, actions, readStatus }) => {
55
+ const label = typeof props['label'] === 'string' ? props['label'] : 'Save profile';
56
+ // Pre-fill from a bound kind:0, when present. Preserve unknown raw fields so a
57
+ // republish keeps metadata this editor doesn't surface (banner, lud16, …).
58
+ const bound = events.map(parseProfile).find((p) => p !== null) ?? null;
59
+ const [form, setForm] = useState(EMPTY_FORM);
60
+ const [preserved, setPreserved] = useState({});
61
+ const [hydrated, setHydrated] = useState(false);
62
+ useEffect(() => {
63
+ if (hydrated || !bound)
64
+ return;
65
+ setForm({
66
+ name: bound.name ?? '',
67
+ display_name: bound.displayName ?? '',
68
+ picture: bound.picture ?? '',
69
+ about: bound.about ?? '',
70
+ nip05: bound.nip05 ?? '',
71
+ });
72
+ setPreserved(Object.fromEntries(Object.entries(bound.raw).filter(([k]) => !EDITOR_KEYS.has(k))));
73
+ setHydrated(true);
74
+ }, [bound, hydrated]);
75
+ const [phase, setPhase] = useState('idle');
76
+ const [status, setStatus] = useState(null);
77
+ const [statusError, setStatusError] = useState(false);
78
+ const [eventId, setEventId] = useState(null);
79
+ const [failed, setFailed] = useState(null);
80
+ useEffect(() => {
81
+ if (phase !== 'confirming' || status || statusError || !readStatus)
82
+ return;
83
+ let cancelled = false;
84
+ void readStatus()
85
+ .then((s) => {
86
+ if (!cancelled)
87
+ setStatus(s);
88
+ })
89
+ .catch(() => {
90
+ if (!cancelled)
91
+ setStatusError(true);
92
+ });
93
+ return () => {
94
+ cancelled = true;
95
+ };
96
+ }, [phase, status, statusError, readStatus]);
97
+ const set = (key) => (value) => setForm((prev) => ({ ...prev, [key]: value }));
98
+ const hasAny = Object.values(form).some((v) => v.trim());
99
+ const content = buildContent(form, preserved);
100
+ const bytes = byteLength(content);
101
+ const review = () => {
102
+ if (!hasAny || !actions['publish'])
103
+ return;
104
+ setFailed(null);
105
+ setPhase('confirming');
106
+ };
107
+ const cancel = () => setPhase('idle');
108
+ const confirm = async () => {
109
+ if (!hasAny || !actions['publish'])
110
+ return;
111
+ setPhase('publishing');
112
+ const outcome = await actions['publish']({ content });
113
+ if (!outcome || outcome.ok === false) {
114
+ setFailed(outcome?.error ?? 'unknown');
115
+ setPhase('confirming');
116
+ return;
117
+ }
118
+ setEventId(outcome.eventId ?? null);
119
+ setPhase('receipt');
120
+ };
121
+ const feeLabel = status
122
+ ? `${status.feePerEvent}${status.asset ? ` ${status.asset}` : ''}`
123
+ : statusError
124
+ ? 'unavailable'
125
+ : '…';
126
+ const chainLabel = status ? status.settlementChain : statusError ? 'unknown' : '…';
127
+ if (phase === 'receipt') {
128
+ return (_jsxs("div", { className: "overflow-hidden rounded-xl border border-primary/30 bg-card", children: [_jsxs("div", { className: "flex items-center gap-2.5 border-b border-primary/20 bg-primary/5 px-4 py-3", children: [_jsx(CircleCheck, { "aria-hidden": "true", className: "size-5 text-primary" }), _jsxs("div", { children: [_jsx("div", { className: "font-semibold leading-tight", children: "Profile saved \u2014 and paid" }), _jsx("p", { className: "text-xs text-muted-foreground", children: "Your kind:0 metadata is live." })] })] }), _jsxs("dl", { className: "grid grid-cols-[auto_1fr] gap-x-4 gap-y-1.5 px-4 py-3 text-xs", children: [_jsx("dt", { className: "text-muted-foreground", children: "Event" }), _jsx("dd", { children: eventId ? _jsx(MonoId, { value: eventId, prefixLen: 12, suffixLen: 6 }) : '—' }), _jsx("dt", { className: "text-muted-foreground", children: "Fee paid" }), _jsxs("dd", { className: "font-medium", children: [feeLabel, " on ", chainLabel] })] }), _jsx("div", { className: "flex justify-end border-t border-border px-4 py-2.5", children: _jsx(Button, { variant: "outline", size: "sm", onClick: () => setPhase('idle'), children: "Edit again" }) })] }));
129
+ }
130
+ if (phase === 'confirming' || phase === 'publishing') {
131
+ const publishing = phase === 'publishing';
132
+ const displayName = form.display_name.trim() || form.name.trim() || 'your profile';
133
+ return (_jsxs("div", { className: "overflow-hidden rounded-xl border border-border bg-card", children: [_jsxs("div", { className: "flex items-center gap-2 border-b border-border px-4 py-3", children: [_jsx(Coins, { "aria-hidden": "true", className: "size-4 text-primary" }), _jsx("span", { className: "text-sm font-semibold", children: "Confirm pay-to-write" })] }), _jsxs("div", { className: "flex flex-col gap-3 px-4 py-3", children: [_jsxs("p", { className: "text-sm", children: ["Publish profile metadata for ", _jsx("span", { className: "font-semibold", children: displayName }), " as a kind:0 event."] }), _jsxs("dl", { className: "flex flex-wrap items-center gap-x-6 gap-y-1 text-xs", children: [_jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx("dt", { className: "text-muted-foreground", children: "Fee" }), _jsx("dd", { className: "font-medium tabular-nums", children: feeLabel })] }), _jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx("dt", { className: "text-muted-foreground", children: "Settles on" }), _jsx("dd", { className: "font-medium", children: chainLabel })] }), _jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx("dt", { className: "text-muted-foreground", children: "Size" }), _jsxs("dd", { className: "font-mono font-medium tabular-nums", children: [bytes, " bytes"] })] })] }), _jsx("p", { className: "text-xs text-muted-foreground", children: "Saving your profile pays the fee above. The message is the money." }), failed ? (_jsxs("p", { className: "text-xs text-destructive", children: ["Publish failed: ", failed] })) : null] }), _jsxs("div", { className: "flex justify-end gap-2 border-t border-border px-4 py-2.5", children: [_jsxs(Button, { variant: "outline", size: "sm", disabled: publishing, onClick: cancel, children: [_jsx(ArrowLeft, { "aria-hidden": "true" }), "Back"] }), _jsx(Button, { size: "sm", disabled: publishing || statusError, onClick: () => void confirm(), children: publishing ? (_jsxs(_Fragment, { children: [_jsx(Loader2, { "aria-hidden": "true", className: "animate-spin" }), "Publishing\u2026"] })) : (_jsxs(_Fragment, { children: [_jsx(Coins, { "aria-hidden": "true" }), "Confirm & pay"] })) })] })] }));
134
+ }
135
+ return (_jsxs("div", { className: "overflow-hidden rounded-xl border border-border bg-card", children: [_jsxs("div", { className: "flex items-center justify-between gap-2 border-b border-border px-4 py-3", children: [_jsx("span", { className: "text-sm font-semibold", children: bound ? 'Edit profile' : 'Create profile' }), bound ? (_jsx(MonoId, { value: bound.pubkey, className: "text-muted-foreground" })) : null] }), _jsxs("div", { className: "flex flex-col gap-3 px-4 py-3", children: [_jsx(FieldRow, { id: "profile-name", label: "Name", children: _jsx(Input, { id: "profile-name", value: form.name, onChange: (e) => set('name')(e.target.value), placeholder: "satoshi" }) }), _jsx(FieldRow, { id: "profile-display-name", label: "Display name", hint: "optional", children: _jsx(Input, { id: "profile-display-name", value: form.display_name, onChange: (e) => set('display_name')(e.target.value), placeholder: "Satoshi Nakamoto" }) }), _jsx(FieldRow, { id: "profile-picture", label: "Picture URL", hint: "optional", children: _jsx(Input, { id: "profile-picture", type: "url", inputMode: "url", value: form.picture, onChange: (e) => set('picture')(e.target.value), placeholder: "https://\u2026/avatar.png" }) }), _jsx(FieldRow, { id: "profile-about", label: "About", hint: "optional", children: _jsx(Textarea, { id: "profile-about", value: form.about, onChange: (e) => set('about')(e.target.value), placeholder: "A short bio.", rows: 3, className: "resize-none text-base md:text-sm" }) }), _jsx(FieldRow, { id: "profile-nip05", label: "NIP-05 identifier", hint: "optional", children: _jsx(Input, { id: "profile-nip05", value: form.nip05, onChange: (e) => set('nip05')(e.target.value), placeholder: "name@example.com" }) })] }), _jsxs("div", { className: "flex items-center justify-between gap-2 border-t border-border px-4 py-2.5", children: [_jsxs("span", { className: "font-mono text-xs text-muted-foreground tabular-nums", title: "Fees scale with encoded bytes", children: [bytes, " ", bytes === 1 ? 'byte' : 'bytes'] }), _jsxs(Button, { size: "sm", disabled: !hasAny || !actions['publish'], onClick: review, children: [_jsx(Coins, { "aria-hidden": "true" }), label] })] })] }));
136
+ };
137
+ export const profileEditorAtoms = [
138
+ {
139
+ id: 'profile-editor',
140
+ writes: [{ name: 'toon_publish_unsigned' }],
141
+ Component: ProfileEditor,
142
+ },
143
+ ];
144
+ //# sourceMappingURL=profile-editor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile-editor.js","sourceRoot":"","sources":["../../src/atoms/profile-editor.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/atoms/registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AAUvC,OAAO,EAAgB,eAAe,EAAE,MAAM,eAAe,CAAC;AAe9D,sBAAsB;AACtB,eAAO,MAAM,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAA4C,CAAC;AAEzF,kEAAkE;AAClE,eAAO,MAAM,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAyB,CAAC;AAYnE,mEAAmE;AACnE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAErD;AAED,0EAA0E;AAC1E,wBAAgB,eAAe,IAAI,IAAI,CAEtC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,IAAI,YAAY,CAAC,IAAI,CAAC,CAStD;AAED,OAAO,EAAE,eAAe,EAAE,CAAC;AAC3B,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,eAAe,EAAE,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/atoms/registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AAWvC,OAAO,EAAgB,eAAe,EAAE,MAAM,eAAe,CAAC;AAgB9D,sBAAsB;AACtB,eAAO,MAAM,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAA4C,CAAC;AAEzF,kEAAkE;AAClE,eAAO,MAAM,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAyB,CAAC;AAYnE,mEAAmE;AACnE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAErD;AAED,0EAA0E;AAC1E,wBAAgB,eAAe,IAAI,IAAI,CAEtC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,IAAI,YAAY,CAAC,IAAI,CAAC,CAStD;AAED,OAAO,EAAE,eAAe,EAAE,CAAC;AAC3B,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,eAAe,EAAE,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC"}
@@ -14,6 +14,7 @@ import { forgeAtoms } from './forge.js';
14
14
  import { interactiveAtoms } from './interactive.js';
15
15
  import { defiAtoms } from './defi.js';
16
16
  import { onboardAtoms } from './onboard.js';
17
+ import { profileEditorAtoms } from './profile-editor.js';
17
18
  import { contentAtoms } from './content.js';
18
19
  import { statusAtoms } from './status.js';
19
20
  import { fallbackAtom, GENERIC_ATOM_ID } from './fallback.js';
@@ -25,6 +26,7 @@ const ALL_ATOMS = [
25
26
  ...interactiveAtoms,
26
27
  ...defiAtoms,
27
28
  ...onboardAtoms,
29
+ ...profileEditorAtoms,
28
30
  ...contentAtoms,
29
31
  ...statusAtoms,
30
32
  fallbackAtom,
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/atoms/registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAa,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAE9D,MAAM,SAAS,GAAW;IACxB,GAAG,WAAW;IACd,GAAG,WAAW;IACd,GAAG,UAAU;IACb,GAAG,UAAU;IACb,GAAG,gBAAgB;IACnB,GAAG,SAAS;IACZ,GAAG,YAAY;IACf,GAAG,YAAY;IACf,GAAG,WAAW;IACd,YAAY;CACb,CAAC;AAEF,sBAAsB;AACtB,MAAM,CAAC,MAAM,KAAK,GAA8B,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAEzF,kEAAkE;AAClE,MAAM,CAAC,MAAM,QAAQ,GAAwB,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AAEnE,MAAM,YAAY,GAA8B,CAAC,GAAG,EAAE;IACpD,MAAM,GAAG,GAAG,IAAI,GAAG,EAAgB,CAAC;IACpC,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;YACpC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC,EAAE,CAAC;AAEL,mEAAmE;AACnE,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC;AAChD,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,eAAe;IAC7B,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,QAAQ,GAAG,IAAI,YAAY,EAAQ,CAAC;IAC1C,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,IAAI,IAAI,KAAK,YAAY;YAAE,SAAS;QACpC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;YACpC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,OAAO,EAAE,eAAe,EAAE,CAAC;AAC3B,OAAO,EAAwE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/atoms/registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAa,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAE9D,MAAM,SAAS,GAAW;IACxB,GAAG,WAAW;IACd,GAAG,WAAW;IACd,GAAG,UAAU;IACb,GAAG,UAAU;IACb,GAAG,gBAAgB;IACnB,GAAG,SAAS;IACZ,GAAG,YAAY;IACf,GAAG,kBAAkB;IACrB,GAAG,YAAY;IACf,GAAG,WAAW;IACd,YAAY;CACb,CAAC;AAEF,sBAAsB;AACtB,MAAM,CAAC,MAAM,KAAK,GAA8B,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAEzF,kEAAkE;AAClE,MAAM,CAAC,MAAM,QAAQ,GAAwB,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AAEnE,MAAM,YAAY,GAA8B,CAAC,GAAG,EAAE;IACpD,MAAM,GAAG,GAAG,IAAI,GAAG,EAAgB,CAAC;IACpC,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;YACpC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC,EAAE,CAAC;AAEL,mEAAmE;AACnE,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC;AAChD,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,eAAe;IAC7B,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,QAAQ,GAAG,IAAI,YAAY,EAAQ,CAAC;IAC1C,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,IAAI,IAAI,KAAK,YAAY;YAAE,SAAS;QACpC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;YACpC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,OAAO,EAAE,eAAe,EAAE,CAAC;AAC3B,OAAO,EAAwE,MAAM,YAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"social.d.ts","sourceRoot":"","sources":["../../src/atoms/social.tsx"],"names":[],"mappings":"AAiBA,OAAO,EAAE,KAAK,IAAI,EAAwB,MAAM,YAAY,CAAC;AAoR7D,eAAO,MAAM,WAAW,EAAE,IAAI,EAgB7B,CAAC"}
1
+ {"version":3,"file":"social.d.ts","sourceRoot":"","sources":["../../src/atoms/social.tsx"],"names":[],"mappings":"AAiBA,OAAO,EAAE,KAAK,IAAI,EAAwB,MAAM,YAAY,CAAC;AAmT7D,eAAO,MAAM,WAAW,EAAE,IAAI,EAgB7B,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  /** Social atoms — NIP-01 profile/note, NIP-25 reactions, NIP-02 follow. */
3
- import { useState } from 'react';
3
+ import { useEffect, useState } from 'react';
4
4
  import { Heart, MessageCircle, UserPlus } from 'lucide-react';
5
5
  import { Button } from '@/components/ui/button.js';
6
6
  import { Badge } from '@/components/ui/badge.js';
@@ -31,8 +31,35 @@ const ActionButton = ({ label, icon, text, count, active = false, accent = 'fore
31
31
  : cn('hover:text-foreground focus-visible:text-foreground', active && 'text-foreground');
32
32
  return (_jsxs(Button, { type: "button", variant: "ghost", size: "sm", "aria-label": label, "aria-pressed": active, className: cn('h-8 gap-1.5 px-2 text-xs text-muted-foreground transition-colors', accentClass), onClick: onClick, children: [icon, _jsx("span", { children: text }), typeof count === 'number' && count > 0 ? (_jsx("span", { className: "tabular-nums", children: count })) : null] }));
33
33
  };
34
+ /**
35
+ * Resolve an author's kind:0 profile. A profile already joined from the bind's
36
+ * own events (`seeded`) wins immediately; otherwise — the feed case, where the
37
+ * bind carries only `kinds:[1]` — we lazily pull the author's kind:0 via the
38
+ * runtime-wired `resolveProfile` seam. Authors with no kind:0 stay `undefined`,
39
+ * so the avatar/name degrade to the deterministic placeholder.
40
+ */
41
+ function useAuthorProfile(pubkey, seeded, resolveProfile) {
42
+ const [fetched, setFetched] = useState(undefined);
43
+ useEffect(() => {
44
+ if (seeded || !resolveProfile)
45
+ return;
46
+ let cancelled = false;
47
+ void resolveProfile(pubkey).then((profileEvent) => {
48
+ if (cancelled || !profileEvent)
49
+ return;
50
+ const parsed = parseProfile(profileEvent);
51
+ if (parsed)
52
+ setFetched(parsed);
53
+ });
54
+ return () => {
55
+ cancelled = true;
56
+ };
57
+ }, [pubkey, seeded, resolveProfile]);
58
+ return seeded ?? fetched;
59
+ }
34
60
  /** A single feed item: identity row, note body, inline media, engagement. */
35
- const NoteRow = ({ event, note, profile, reactionCount, actions }) => {
61
+ const NoteRow = ({ event, note, profile: seededProfile, resolveProfile, reactionCount, actions }) => {
62
+ const profile = useAuthorProfile(note.authorPubkey, seededProfile, resolveProfile);
36
63
  const media = parseInlineMedia(event);
37
64
  const displayName = profile?.displayName ?? profile?.name;
38
65
  const reply = actions['reply'];
@@ -57,7 +84,7 @@ const NoteRow = ({ event, note, profile, reactionCount, actions }) => {
57
84
  const likeCount = reactionCount + (liked ? 1 : 0);
58
85
  return (_jsxs("article", { className: "group/note flex gap-3 px-1 py-3 transition-colors first:pt-0 last:pb-0 hover:bg-muted/30", children: [_jsx(IdentityAvatar, { pubkey: note.authorPubkey, name: displayName, picture: profile?.picture }), _jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [_jsxs("header", { className: "flex items-center gap-1.5", children: [_jsxs("div", { className: "flex min-w-0 flex-1 items-baseline gap-1.5", children: [displayName ? (_jsxs(_Fragment, { children: [_jsx("span", { className: "truncate font-semibold leading-tight text-foreground", children: displayName }), _jsx(MonoId, { value: note.authorPubkey, className: "shrink-0 text-muted-foreground" })] })) : (_jsx(MonoId, { value: note.authorPubkey, className: "text-muted-foreground" })), _jsx("span", { "aria-hidden": "true", className: "text-muted-foreground", children: "\u00B7" }), _jsx("span", { className: "shrink-0 text-xs text-muted-foreground tabular-nums", children: relativeTime(note.createdAt) }), note.isReply ? (_jsx(Badge, { variant: "secondary", className: "px-1.5 py-0 text-[10px] font-normal", children: "reply" })) : null] }), follow ? (_jsxs(Button, { type: "button", variant: followed ? 'secondary' : 'outline', size: "sm", "aria-label": followed ? 'Following this author' : 'Follow this author', "aria-pressed": followed, className: "h-7 shrink-0 rounded-full px-3 text-xs font-semibold", onClick: onFollow, children: [_jsx(UserPlus, { "aria-hidden": "true" }), followed ? 'Following' : 'Follow'] })) : null] }), note.content ? (_jsx("p", { className: "whitespace-pre-wrap break-words text-sm leading-relaxed text-foreground", children: note.content })) : null, media.length > 0 ? (_jsx("div", { className: "mt-1", children: _jsx(InlineMediaList, { variants: media }) })) : null, reply || react ? (_jsxs("footer", { className: "-ml-2 mt-1 flex items-center gap-6", children: [reply ? (_jsx(ActionButton, { label: "Reply to this note", icon: _jsx(MessageCircle, { "aria-hidden": "true" }), text: "Reply", onClick: () => void reply({ parentId: note.eventId }) })) : null, react ? (_jsx(ActionButton, { label: liked ? 'Liked this note' : 'Like this note', icon: _jsx(Heart, { "aria-hidden": "true", className: liked ? 'fill-current' : undefined }), text: "Like", count: likeCount, active: liked, accent: "rose", onClick: onLike })) : null] })) : null, react || follow ? (_jsx("p", { className: "mt-0.5 text-[10px] text-muted-foreground/70", children: "Like and follow are paid writes \u2014 each spends the per-event channel fee." })) : null] })] }));
59
86
  };
60
- const NoteCard = ({ events, actions }) => {
87
+ const NoteCard = ({ events, actions, resolveProfile }) => {
61
88
  const noteItems = events
62
89
  .map((event) => ({ event, note: parseNote(event) }))
63
90
  .filter((item) => item.note !== null);
@@ -79,7 +106,7 @@ const NoteCard = ({ events, actions }) => {
79
106
  reactionCounts.set(reaction.targetEventId, (reactionCounts.get(reaction.targetEventId) ?? 0) + 1);
80
107
  }
81
108
  }
82
- return (_jsx("div", { className: "flex flex-col divide-y divide-border", children: noteItems.map(({ event, note }) => (_jsx(NoteRow, { event: event, note: note, profile: profiles.get(note.authorPubkey), reactionCount: reactionCounts.get(note.eventId) ?? 0, actions: actions }, note.eventId))) }));
109
+ return (_jsx("div", { className: "flex flex-col divide-y divide-border", children: noteItems.map(({ event, note }) => (_jsx(NoteRow, { event: event, note: note, profile: profiles.get(note.authorPubkey), resolveProfile: resolveProfile, reactionCount: reactionCounts.get(note.eventId) ?? 0, actions: actions }, note.eventId))) }));
83
110
  };
84
111
  const ReactionBar = ({ events, actions }) => {
85
112
  const counts = new Map();
@@ -1 +1 @@
1
- {"version":3,"file":"social.js","sourceRoot":"","sources":["../../src/atoms/social.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"social.js","sourceRoot":"","sources":["../../src/atoms/social.tsx"],"names":[],"mappings":";AAAA,2EAA2E;AAC3E,OAAO,EAA2B,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACpC,OAAO,EACL,YAAY,EACZ,SAAS,EACT,aAAa,GAGd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAmB,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAmC,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9D,MAAM,aAAa,GAAwB,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;IACxD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC;IACzE,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IACnE,OAAO,CACL,eAAK,SAAS,EAAC,yBAAyB,aACtC,KAAC,cAAc,IAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,GAAI,EAChF,eAAK,SAAS,EAAC,gBAAgB,aAC7B,cAAK,SAAS,EAAC,sCAAsC,YAAE,IAAI,GAAO,EACjE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CACf,cAAK,SAAS,EAAC,wCAAwC,YAAE,OAAO,CAAC,KAAK,GAAO,CAC9E,CAAC,CAAC,CAAC,CACF,KAAC,MAAM,IAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,EAAC,uBAAuB,GAAG,CACpE,EACA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CACf,YAAG,SAAS,EAAC,iDAAiD,YAAE,OAAO,CAAC,KAAK,GAAK,CACnF,CAAC,CAAC,CAAC,IAAI,IACJ,IACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,YAAY,GAQb,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,MAAM,GAAG,YAAY,EAAE,OAAO,EAAE,EAAE,EAAE;IACpF,MAAM,WAAW,GACf,MAAM,KAAK,MAAM;QACf,CAAC,CAAC,EAAE,CAAC,iDAAiD,EAAE,MAAM,IAAI,eAAe,CAAC;QAClF,CAAC,CAAC,EAAE,CAAC,qDAAqD,EAAE,MAAM,IAAI,iBAAiB,CAAC,CAAC;IAC7F,OAAO,CACL,MAAC,MAAM,IACL,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,IAAI,gBACG,KAAK,kBACH,MAAM,EACpB,SAAS,EAAE,EAAE,CAAC,kEAAkE,EAAE,WAAW,CAAC,EAC9F,OAAO,EAAE,OAAO,aAEf,IAAI,EACL,yBAAO,IAAI,GAAQ,EAClB,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CACxC,eAAM,SAAS,EAAC,cAAc,YAAE,KAAK,GAAQ,CAC9C,CAAC,CAAC,CAAC,IAAI,IACD,CACV,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,SAAS,gBAAgB,CACvB,MAAc,EACd,MAAmC,EACnC,cAAiD;IAEjD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAA8B,SAAS,CAAC,CAAC;IAC/E,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,MAAM,IAAI,CAAC,cAAc;YAAE,OAAO;QACtC,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,KAAK,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,EAAE;YAChD,IAAI,SAAS,IAAI,CAAC,YAAY;gBAAE,OAAO;YACvC,MAAM,MAAM,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;YAC1C,IAAI,MAAM;gBAAE,UAAU,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;IACrC,OAAO,MAAM,IAAI,OAAO,CAAC;AAC3B,CAAC;AAED,6EAA6E;AAC7E,MAAM,OAAO,GAOR,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE;IACvF,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,YAAY,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;IACnF,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,OAAO,EAAE,IAAI,CAAC;IAC1D,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEjC,gFAAgF;IAChF,+EAA+E;IAC/E,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEhD,MAAM,MAAM,GAAG,GAAS,EAAE;QACxB,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACpB,KAAK,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IAC/B,CAAC,CAAC;IACF,MAAM,QAAQ,GAAG,GAAS,EAAE;QAC1B,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,WAAW,CAAC,IAAI,CAAC,CAAC;QAClB,KAAK,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,aAAa,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAElD,OAAO,CACL,mBAAS,SAAS,EAAC,0FAA0F,aAC3G,KAAC,cAAc,IACb,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,OAAO,EAAE,OAAO,GACzB,EACF,eAAK,SAAS,EAAC,oCAAoC,aACjD,kBAAQ,SAAS,EAAC,2BAA2B,aAC3C,eAAK,SAAS,EAAC,4CAA4C,aACxD,WAAW,CAAC,CAAC,CAAC,CACb,8BACE,eAAM,SAAS,EAAC,sDAAsD,YACnE,WAAW,GACP,EACP,KAAC,MAAM,IAAC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,EAAC,gCAAgC,GAAG,IAC9E,CACJ,CAAC,CAAC,CAAC,CACF,KAAC,MAAM,IAAC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,EAAC,uBAAuB,GAAG,CACvE,EACD,8BAAkB,MAAM,EAAC,SAAS,EAAC,uBAAuB,uBAEnD,EACP,eAAM,SAAS,EAAC,qDAAqD,YAClE,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,GACxB,EACN,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CACd,KAAC,KAAK,IAAC,OAAO,EAAC,WAAW,EAAC,SAAS,EAAC,qCAAqC,sBAElE,CACT,CAAC,CAAC,CAAC,IAAI,IACJ,EACL,MAAM,CAAC,CAAC,CAAC,CACR,MAAC,MAAM,IACL,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAC3C,IAAI,EAAC,IAAI,gBACG,QAAQ,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,oBAAoB,kBACvD,QAAQ,EACtB,SAAS,EAAC,sDAAsD,EAChE,OAAO,EAAE,QAAQ,aAEjB,KAAC,QAAQ,mBAAa,MAAM,GAAG,EAC9B,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,IAC3B,CACV,CAAC,CAAC,CAAC,IAAI,IACD,EAER,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CACd,YAAG,SAAS,EAAC,yEAAyE,YACnF,IAAI,CAAC,OAAO,GACX,CACL,CAAC,CAAC,CAAC,IAAI,EAEP,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAClB,cAAK,SAAS,EAAC,MAAM,YACnB,KAAC,eAAe,IAAC,QAAQ,EAAE,KAAK,GAAI,GAChC,CACP,CAAC,CAAC,CAAC,IAAI,EAEP,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAChB,kBAAQ,SAAS,EAAC,oCAAoC,aACnD,KAAK,CAAC,CAAC,CAAC,CACP,KAAC,YAAY,IACX,KAAK,EAAC,oBAAoB,EAC1B,IAAI,EAAE,KAAC,aAAa,mBAAa,MAAM,GAAG,EAC1C,IAAI,EAAC,OAAO,EACZ,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,GACrD,CACH,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,CAAC,CAAC,CAAC,CACP,KAAC,YAAY,IACX,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,gBAAgB,EACnD,IAAI,EACF,KAAC,KAAK,mBACQ,MAAM,EAClB,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,GAC7C,EAEJ,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,KAAK,EACb,MAAM,EAAC,MAAM,EACb,OAAO,EAAE,MAAM,GACf,CACH,CAAC,CAAC,CAAC,IAAI,IACD,CACV,CAAC,CAAC,CAAC,IAAI,EAEP,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,CACjB,YAAG,SAAS,EAAC,6CAA6C,8FAEtD,CACL,CAAC,CAAC,CAAC,IAAI,IACJ,IACE,CACX,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAwB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE;IAC5E,MAAM,SAAS,GAAG,MAAM;SACrB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;SACnD,MAAM,CAAC,CAAC,IAAI,EAAqD,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAC3F,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAExC,0EAA0E;IAC1E,4EAA4E;IAC5E,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA2B,CAAC;IACpD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,OAAO;YAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAED,gEAAgE;IAChE,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;IACjD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,QAAQ,EAAE,aAAa,EAAE,CAAC;YAC5B,cAAc,CAAC,GAAG,CAChB,QAAQ,CAAC,aAAa,EACtB,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CACtD,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,CACL,cAAK,SAAS,EAAC,sCAAsC,YAClD,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAClC,KAAC,OAAO,IAEN,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,EACxC,cAAc,EAAE,cAAc,EAC9B,aAAa,EAAE,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EACpD,OAAO,EAAE,OAAO,IANX,IAAI,CAAC,OAAO,CAOjB,CACH,CAAC,GACE,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,WAAW,GAAwB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;IAC/D,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,CAAC,QAAQ;YAAE,SAAS;QACxB,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,IAAI,GAAG,CAAC;QACpC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,CACL,eAAK,SAAS,EAAC,qCAAqC,aACjD,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CACzC,MAAC,KAAK,IAAa,OAAO,EAAC,WAAW,EAAC,SAAS,EAAC,oBAAoB,aAClE,KAAK,OAAG,CAAC,KADA,KAAK,CAET,CACT,CAAC,EACD,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAClB,MAAC,MAAM,IACL,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,IAAI,gBACE,gBAAgB,EAC3B,SAAS,EAAC,qCAAqC,EAC/C,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,aAExD,KAAC,KAAK,mBAAa,MAAM,GAAG,aAErB,CACV,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,YAAY,GAAwB,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;IAC/D,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC7E,OAAO,CACL,KAAC,MAAM,IAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAC,IAAI,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,YACtF,KAAK,GACC,CACV,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAW;IACjC,EAAE,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE;IAC9D;QACE,EAAE,EAAE,WAAW;QACf,KAAK,EAAE,CAAC,CAAC,CAAC;QACV,0EAA0E;QAC1E,8EAA8E;QAC9E,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAC;QAC3C,SAAS,EAAE,QAAQ;KACpB;IACD,EAAE,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE;IAC1D;QACE,EAAE,EAAE,eAAe;QACnB,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAC;QAC3C,SAAS,EAAE,YAAY;KACxB;CACF,CAAC"}
@@ -96,6 +96,16 @@ export interface AtomRenderProps {
96
96
  * never call the bridge directly, so this is the single read seam for the fee.
97
97
  */
98
98
  readStatus?: () => Promise<AtomStatus>;
99
+ /**
100
+ * Resolve an author's kind:0 profile event by pubkey, lazily and cached for
101
+ * the session. A feed bind only carries the notes (`kinds:[1]`), so an atom
102
+ * cannot find the author's metadata in its own `events`; this seam lets it
103
+ * pull the kind:0 on demand. Returns the newest kind:0 for the pubkey, or
104
+ * `null` when the author has never published one. Wired to the bridge by the
105
+ * runtime (atoms never call the bridge directly); `undefined` only in older
106
+ * render paths / tests that don't provide it.
107
+ */
108
+ resolveProfile?: (pubkey: string) => Promise<NostrEvent | null>;
99
109
  }
100
110
  /** A registered atom. */
101
111
  export interface Atom {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/atoms/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/atoms/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,sCAAsC;IACtC,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC;IACzB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAED,eAAO,MAAM,YAAY,EAAE,QAAQ,EA6KlC,CAAC;AAEF,+DAA+D;AAC/D,eAAO,MAAM,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAA0C,CAAC"}
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,sCAAsC;IACtC,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC;IACzB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAED,eAAO,MAAM,YAAY,EAAE,QAAQ,EA0LlC,CAAC;AAEF,+DAA+D;AAC/D,eAAO,MAAM,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAA0C,CAAC"}
package/dist/catalog.js CHANGED
@@ -96,8 +96,8 @@ export const ATOM_CATALOG = [
96
96
  description: 'Interactive: collects swap params and fires a cross-asset swap. Spendy.',
97
97
  writes: [{ name: SWAP_TOOL, spendy: true }],
98
98
  propsSchema: {
99
- destination: 'string (mill ILP destination)',
100
- millPubkey: 'string (mill 64-char hex Nostr pubkey)',
99
+ destination: 'string (swap peer ILP destination)',
100
+ swapPubkey: 'string (swap peer 64-char hex Nostr pubkey)',
101
101
  pair: 'SwapPair ({ from, to, rate, … })',
102
102
  chainRecipient: 'string (payout address on pair.to.chain)',
103
103
  label: 'string (submit button label)',
@@ -121,6 +121,18 @@ export const ATOM_CATALOG = [
121
121
  label: 'string (optional publish-profile button label)',
122
122
  },
123
123
  },
124
+ {
125
+ id: 'profile-editor',
126
+ description: 'Edit/create a NIP-01 kind:0 profile: input fields for name, display_name, ' +
127
+ 'picture (URL), about, and nip05, serialized into the kind:0 content JSON ' +
128
+ 'and published via toon_publish_unsigned ({ kind: 0, content }) through a ' +
129
+ 'pay-to-write confirm. Bind a kind:0 event to pre-fill the form (unknown ' +
130
+ 'fields are preserved on republish). The "publish" action fires the write.',
131
+ writes: [{ name: 'toon_publish_unsigned' }],
132
+ propsSchema: {
133
+ label: 'string (optional save-button label)',
134
+ },
135
+ },
124
136
  // content — generic, props-driven primitives for ANY structured (non-event)
125
137
  // data: daemon status, write targets, balances, identity. Compose these inside
126
138
  // layout atoms instead of falling back to plain text. No event kinds.
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,12 @@ export declare function forgeView(ownerPubkey: string, repoId: string): ViewSpec
27
27
  export declare function mediaView(): ViewSpec;
28
28
  /** An onboarding journey: get-started card + the new user's profile header. */
29
29
  export declare function onboardView(pubkey: string): ViewSpec;
30
+ /**
31
+ * A profile editor: input fields for name/picture/about (pre-filled from the
32
+ * user's existing kind:0, when bound) that publish an updated kind:0 via a
33
+ * pay-to-write confirm, with the live header below so the change shows up.
34
+ */
35
+ export declare function profileEditorView(pubkey: string): ViewSpec;
30
36
  /** A DeFi panel: pre-open a channel, run a swap, show the settlement receipt. */
31
37
  export declare function swapView(): ViewSpec;
32
38
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"examples.d.ts","sourceRoot":"","sources":["../src/examples.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAY1C,8DAA8D;AAC9D,wBAAgB,QAAQ,IAAI,QAAQ,CAWnC;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,IAAI,QAAQ,CAezC;AAED,oEAAoE;AACpE,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAgBpD;AAED,kEAAkE;AAClE,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAgBnD;AAED,uDAAuD;AACvD,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,CAsBvE;AAED,kCAAkC;AAClC,wBAAgB,SAAS,IAAI,QAAQ,CAWpC;AAED,+EAA+E;AAC/E,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAepD;AAED,iFAAiF;AACjF,wBAAgB,QAAQ,IAAI,QAAQ,CAiBnC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,QAAQ,CAK3C;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,IAAI,QAAQ,CA0BnC;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED,kFAAkF;AAClF,eAAO,MAAM,iBAAiB,EAAE,WAAW,EAW1C,CAAC"}
1
+ {"version":3,"file":"examples.d.ts","sourceRoot":"","sources":["../src/examples.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAY1C,8DAA8D;AAC9D,wBAAgB,QAAQ,IAAI,QAAQ,CAWnC;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,IAAI,QAAQ,CAezC;AAED,oEAAoE;AACpE,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAgBpD;AAED,kEAAkE;AAClE,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAiBnD;AAED,uDAAuD;AACvD,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,CAsBvE;AAED,kCAAkC;AAClC,wBAAgB,SAAS,IAAI,QAAQ,CAWpC;AAED,+EAA+E;AAC/E,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAepD;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAgB1D;AAED,iFAAiF;AACjF,wBAAgB,QAAQ,IAAI,QAAQ,CAiBnC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,QAAQ,CAK3C;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,IAAI,QAAQ,CA0BnC;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED,kFAAkF;AAClF,eAAO,MAAM,iBAAiB,EAAE,WAAW,EAY1C,CAAC"}
package/dist/examples.js CHANGED
@@ -71,7 +71,8 @@ export function threadView(rootId) {
71
71
  atom: 'stack',
72
72
  children: [
73
73
  { atom: 'note-card', bind: { query: buildEventByIdFilter([rootId]), kindAuto: true } },
74
- { atom: 'note-card', bind: { query: buildCommentFilter([rootId]), kindAuto: true } },
74
+ // Replies read oldest-first so the conversation flows top-to-bottom.
75
+ { atom: 'note-card', bind: { query: buildCommentFilter([rootId]), kindAuto: true, sort: 'asc' } },
75
76
  {
76
77
  atom: 'composer',
77
78
  props: { placeholder: 'Reply…', label: 'Reply' },
@@ -135,6 +136,28 @@ export function onboardView(pubkey) {
135
136
  },
136
137
  };
137
138
  }
139
+ /**
140
+ * A profile editor: input fields for name/picture/about (pre-filled from the
141
+ * user's existing kind:0, when bound) that publish an updated kind:0 via a
142
+ * pay-to-write confirm, with the live header below so the change shows up.
143
+ */
144
+ export function profileEditorView(pubkey) {
145
+ return {
146
+ title: 'Edit profile',
147
+ root: {
148
+ atom: 'stack',
149
+ children: [
150
+ {
151
+ atom: 'profile-editor',
152
+ props: { label: 'Save profile' },
153
+ bind: { query: buildProfileFilter([pubkey]) },
154
+ actions: { publish: { tool: PUBLISH_TOOL, args: { kind: 0 } } },
155
+ },
156
+ { atom: 'profile-header', bind: { query: buildProfileFilter([pubkey]) } },
157
+ ],
158
+ },
159
+ };
160
+ }
138
161
  /** A DeFi panel: pre-open a channel, run a swap, show the settlement receipt. */
139
162
  export function swapView() {
140
163
  return {
@@ -207,6 +230,7 @@ export const EXAMPLE_VIEWSPECS = [
207
230
  { name: 'forge', description: 'Tabbed repos + issues (NIP-34).', spec: forgeView('<owner-pubkey>', '<repo-id>') },
208
231
  { name: 'media', description: 'Media gallery with an uploader.', spec: mediaView() },
209
232
  { name: 'onboard', description: 'Get-started card + the new user’s profile header.', spec: onboardView('<pubkey-hex>') },
233
+ { name: 'profile-editor', description: 'Edit name/picture/about → publish kind:0 via pay-to-write (pre-fills from the bound profile).', spec: profileEditorView('<pubkey-hex>') },
210
234
  { name: 'swap', description: 'Open a channel, run a swap, show the settlement receipt.', spec: swapView() },
211
235
  { name: 'client-status', description: 'Daemon health dashboard (ready/relay/chains/identity) from live toon_status — answers "show me my status".', spec: clientStatusView() },
212
236
  { name: 'info', description: 'Generic info view from content primitives (heading + key-value + badge) — the pattern for any non-event data.', spec: infoView() },