@toon-protocol/views 0.2.0 → 0.4.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.
@@ -1 +1 @@
1
- {"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../../src/atoms/interactive.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,IAAI,EAAyC,MAAM,YAAY,CAAC;AAmM9E,eAAO,MAAM,gBAAgB,EAAE,IAAI,EAIlC,CAAC"}
1
+ {"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../../src/atoms/interactive.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,IAAI,EAAyC,MAAM,YAAY,CAAC;AAyQ9E,eAAO,MAAM,gBAAgB,EAAE,IAAI,EAIlC,CAAC"}
@@ -1,10 +1,22 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  /** Interactive atoms that hold local UI state (composer, tabs, pay-confirm). */
3
3
  import { Children, useEffect, useState } from 'react';
4
+ import { ArrowLeft, CircleCheck, Coins, Loader2 } from 'lucide-react';
4
5
  import { Button } from '@/components/ui/button.js';
5
6
  import { Textarea } from '@/components/ui/textarea.js';
6
7
  import { MonoId } from '@/components/mono-id.js';
7
8
  import {} from './types.js';
9
+ import { byteLength } from './social-ui.js';
10
+ /**
11
+ * The shared composer surface: an auto-sizing textarea over a footer toolbar
12
+ * that carries the byte counter (TOON fees scale with encoded bytes) and the
13
+ * primary action. Used by both the free `composer` and the paid `pay-confirm`
14
+ * idle phase so the two read as the same control.
15
+ */
16
+ const ComposerSurface = ({ value, onChange, placeholder, actionLabel, actionIcon, disabled, onSubmit }) => {
17
+ const bytes = byteLength(value);
18
+ return (_jsxs("div", { className: "rounded-xl border border-border bg-card focus-within:border-ring focus-within:ring-3 focus-within:ring-ring/30", children: [_jsx(Textarea, { value: value, onChange: (e) => onChange(e.target.value), placeholder: placeholder, rows: 3, className: "min-h-20 resize-none border-0 bg-transparent px-3.5 pt-3.5 text-base focus-visible:border-0 focus-visible:ring-0 md:text-sm" }), _jsxs("div", { className: "flex items-center justify-between gap-2 border-t border-border px-3 py-2", children: [_jsxs("span", { className: "font-mono text-xs text-muted-foreground tabular-nums", "aria-label": `${bytes} bytes, the unit pay-to-write fees scale with`, title: "Fees scale with encoded bytes", children: [bytes, " ", bytes === 1 ? 'byte' : 'bytes'] }), _jsxs(Button, { size: "sm", disabled: disabled, onClick: onSubmit, children: [actionIcon, actionLabel] })] })] }));
19
+ };
8
20
  const Composer = ({ props, actions }) => {
9
21
  const [text, setText] = useState('');
10
22
  const placeholder = typeof props['placeholder'] === 'string' ? props['placeholder'] : "What's happening?";
@@ -16,7 +28,7 @@ const Composer = ({ props, actions }) => {
16
28
  void actions['post']({ content: value });
17
29
  setText('');
18
30
  };
19
- return (_jsxs("div", { className: "flex flex-col gap-2", children: [_jsx(Textarea, { value: text, onChange: (e) => setText(e.target.value), placeholder: placeholder, rows: 3 }), _jsx("div", { className: "flex justify-end", children: _jsx(Button, { size: "sm", disabled: !text.trim() || !actions['post'], onClick: submit, children: label }) })] }));
31
+ return (_jsx(ComposerSurface, { value: text, onChange: setText, placeholder: placeholder, actionLabel: label, disabled: !text.trim() || !actions['post'], onSubmit: submit }));
20
32
  };
21
33
  const Tabs = ({ props, children }) => {
22
34
  const labels = Array.isArray(props['labels'])
@@ -43,11 +55,17 @@ const PayConfirm = ({ props, actions, readStatus }) => {
43
55
  return;
44
56
  let cancelled = false;
45
57
  void readStatus()
46
- .then((s) => { if (!cancelled)
47
- setStatus(s); })
48
- .catch(() => { if (!cancelled)
49
- setStatusError(true); });
50
- return () => { cancelled = true; };
58
+ .then((s) => {
59
+ if (!cancelled)
60
+ setStatus(s);
61
+ })
62
+ .catch(() => {
63
+ if (!cancelled)
64
+ setStatusError(true);
65
+ });
66
+ return () => {
67
+ cancelled = true;
68
+ };
51
69
  }, [phase, status, statusError, readStatus]);
52
70
  const review = () => {
53
71
  if (!text.trim() || !actions['confirm'])
@@ -80,16 +98,19 @@ const PayConfirm = ({ props, actions, readStatus }) => {
80
98
  };
81
99
  const feeLabel = status
82
100
  ? `${status.feePerEvent}${status.asset ? ` ${status.asset}` : ''}`
83
- : statusError ? 'unavailable' : '…';
101
+ : statusError
102
+ ? 'unavailable'
103
+ : '…';
84
104
  const chainLabel = status ? status.settlementChain : statusError ? 'unknown' : '…';
105
+ const bytes = byteLength(text.trim());
85
106
  if (phase === 'receipt') {
86
- return (_jsxs("div", { className: "rounded-lg border-l-2 border-primary bg-primary/5 p-4", children: [_jsx("div", { className: "mb-1 font-semibold text-primary", children: "Posted \u2014 and paid." }), _jsx("p", { className: "mb-3 text-xs text-muted-foreground", children: "The message is the money." }), _jsxs("dl", { className: "grid grid-cols-[auto_1fr] gap-x-4 gap-y-1 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", { children: [feeLabel, " on ", chainLabel] })] }), _jsx("div", { className: "mt-3 flex justify-end", children: _jsx(Button, { variant: "outline", size: "sm", onClick: reset, children: "Post another" }) })] }));
107
+ 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: "Posted \u2014 and paid" }), _jsx("p", { className: "text-xs text-muted-foreground", children: "The message is the money." })] })] }), _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: reset, children: "Post another" }) })] }));
87
108
  }
88
109
  if (phase === 'confirming' || phase === 'publishing') {
89
110
  const publishing = phase === 'publishing';
90
- return (_jsxs("div", { className: "flex flex-col gap-3 rounded-lg border-l-2 border-ring bg-card p-4", children: [_jsx("div", { className: "font-semibold text-sm", children: "Confirm pay-to-write" }), _jsx("blockquote", { className: "whitespace-pre-wrap rounded-md border-l-2 border-primary/40 bg-muted/50 px-3 py-2 text-sm", children: text }), _jsxs("p", { className: "text-xs text-muted-foreground", children: ["Sending this message pays", ' ', _jsx("span", { className: "font-medium text-foreground", children: feeLabel }), " per event, settling on", ' ', _jsx("span", { className: "font-medium text-foreground", children: chainLabel }), ". 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", children: [_jsx(Button, { variant: "outline", size: "sm", disabled: publishing, onClick: cancel, children: "Cancel" }), _jsx(Button, { size: "sm", disabled: publishing || statusError, onClick: () => void confirm(), children: publishing ? 'Publishing…' : 'Confirm & pay' })] })] }));
111
+ 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: [_jsx("blockquote", { className: "max-h-40 overflow-y-auto whitespace-pre-wrap break-words rounded-lg border-l-2 border-primary/40 bg-muted/50 px-3 py-2 text-sm", children: text }), _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: "Posting pays the fee above per event. 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"] })) })] })] }));
91
112
  }
92
- return (_jsxs("div", { className: "flex flex-col gap-2", children: [_jsx(Textarea, { value: text, onChange: (e) => setText(e.target.value), placeholder: placeholder, rows: 3 }), _jsx("div", { className: "flex justify-end", children: _jsx(Button, { size: "sm", disabled: !text.trim() || !actions['confirm'], onClick: review, children: label }) })] }));
113
+ return (_jsx(ComposerSurface, { value: text, onChange: setText, placeholder: placeholder, actionLabel: label, actionIcon: _jsx(Coins, { "aria-hidden": "true" }), disabled: !text.trim() || !actions['confirm'], onSubmit: review }));
93
114
  };
94
115
  export const interactiveAtoms = [
95
116
  { id: 'composer', writes: [{ name: 'toon_publish_unsigned' }], Component: Composer },
@@ -1 +1 @@
1
- {"version":3,"file":"interactive.js","sourceRoot":"","sources":["../../src/atoms/interactive.tsx"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAW,MAAM,OAAO,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAoD,MAAM,YAAY,CAAC;AAE9E,MAAM,QAAQ,GAAwB,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;IAC3D,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACrC,MAAM,WAAW,GACf,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC;IACxF,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAE3E,MAAM,MAAM,GAAG,GAAS,EAAE;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO;QACvC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QACzC,OAAO,CAAC,EAAE,CAAC,CAAC;IACd,CAAC,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,qBAAqB,aAClC,KAAC,QAAQ,IACP,KAAK,EAAE,IAAI,EACX,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACxC,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,CAAC,GACP,EACF,cAAK,SAAS,EAAC,kBAAkB,YAC/B,KAAC,MAAM,IACL,IAAI,EAAC,IAAI,EACT,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAC1C,OAAO,EAAE,MAAM,YAEd,KAAK,GACC,GACL,IACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,IAAI,GAAwB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;IACxD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC3C,CAAC,CAAE,KAAK,CAAC,QAAQ,CAAe,CAAC,GAAG,CAAC,MAAM,CAAC;QAC5C,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1C,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAExC,OAAO,CACL,eAAK,SAAS,EAAC,qBAAqB,aAClC,cAAK,SAAS,EAAC,mCAAmC,YAC/C,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CACpB,iBAEE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,EAC3B,SAAS,EACP,kDAAkD;wBAClD,CAAC,CAAC,KAAK,MAAM;4BACX,CAAC,CAAC,kDAAkD;4BACpD,CAAC,CAAC,6CAA6C,CAAC,YAGnD,MAAM,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,IAVvB,CAAC,CAWC,CACV,CAAC,GACE,EACN,wBAAM,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,GAAO,IAC/B,CACP,CAAC;AACJ,CAAC,CAAC;AAIF,MAAM,UAAU,GAAwB,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE;IACzE,MAAM,WAAW,GACf,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC;IACxF,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;IAElF,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACrC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAW,MAAM,CAAC,CAAC;IACrD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAoB,IAAI,CAAC,CAAC;IAC9D,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAC5D,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAE1D,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,KAAK,KAAK,YAAY,IAAI,MAAM,IAAI,WAAW,IAAI,CAAC,UAAU;YAAE,OAAO;QAC3E,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,KAAK,UAAU,EAAE;aACd,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,SAAS;YAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAC9C,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS;YAAE,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,OAAO,GAAG,EAAE,GAAG,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;IAE7C,MAAM,MAAM,GAAG,GAAS,EAAE;QACxB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;YAAE,OAAO;QAChD,SAAS,CAAC,IAAI,CAAC,CAAC;QAChB,QAAQ,CAAC,YAAY,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,GAAS,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE5C,MAAM,OAAO,GAAG,KAAK,IAAmB,EAAE;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;YAAE,OAAO;QAC1C,QAAQ,CAAC,YAAY,CAAC,CAAC;QACvB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;YACrC,SAAS,CAAC,OAAO,EAAE,KAAK,IAAI,SAAS,CAAC,CAAC;YACvC,QAAQ,CAAC,YAAY,CAAC,CAAC;YACvB,OAAO;QACT,CAAC;QACD,UAAU,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;QACpC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACtB,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,GAAS,EAAE;QACvB,OAAO,CAAC,EAAE,CAAC,CAAC;QACZ,SAAS,CAAC,IAAI,CAAC,CAAC;QAChB,cAAc,CAAC,KAAK,CAAC,CAAC;QACtB,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,SAAS,CAAC,IAAI,CAAC,CAAC;QAChB,QAAQ,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM;QACrB,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;QAClE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC;IACtC,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;IAEnF,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,CACL,eAAK,SAAS,EAAC,uDAAuD,aACpE,cAAK,SAAS,EAAC,iCAAiC,wCAAyB,EACzE,YAAG,SAAS,EAAC,oCAAoC,0CAA8B,EAC/E,cAAI,SAAS,EAAC,mDAAmD,aAC/D,aAAI,SAAS,EAAC,uBAAuB,sBAAW,EAChD,uBAAK,OAAO,CAAC,CAAC,CAAC,KAAC,MAAM,IAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,GAAI,CAAC,CAAC,CAAC,GAAG,GAAM,EAClF,aAAI,SAAS,EAAC,uBAAuB,yBAAc,EACnD,yBAAK,QAAQ,UAAM,UAAU,IAAM,IAChC,EACL,cAAK,SAAS,EAAC,uBAAuB,YACpC,KAAC,MAAM,IAAC,OAAO,EAAC,SAAS,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAE,KAAK,6BAEzC,GACL,IACF,CACP,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,KAAK,YAAY,IAAI,KAAK,KAAK,YAAY,EAAE,CAAC;QACrD,MAAM,UAAU,GAAG,KAAK,KAAK,YAAY,CAAC;QAC1C,OAAO,CACL,eAAK,SAAS,EAAC,mEAAmE,aAChF,cAAK,SAAS,EAAC,uBAAuB,qCAA2B,EACjE,qBAAY,SAAS,EAAC,2FAA2F,YAC9G,IAAI,GACM,EACb,aAAG,SAAS,EAAC,+BAA+B,0CAChB,GAAG,EAC7B,eAAM,SAAS,EAAC,6BAA6B,YAAE,QAAQ,GAAQ,6BAAwB,GAAG,EAC1F,eAAM,SAAS,EAAC,6BAA6B,YAAE,UAAU,GAAQ,mCAC/D,EACH,MAAM,CAAC,CAAC,CAAC,CACR,aAAG,SAAS,EAAC,0BAA0B,iCAAkB,MAAM,IAAK,CACrE,CAAC,CAAC,CAAC,IAAI,EACR,eAAK,SAAS,EAAC,wBAAwB,aACrC,KAAC,MAAM,IAAC,OAAO,EAAC,SAAS,EAAC,IAAI,EAAC,IAAI,EAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,uBAEhE,EACT,KAAC,MAAM,IAAC,IAAI,EAAC,IAAI,EAAC,QAAQ,EAAE,UAAU,IAAI,WAAW,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,EAAE,YACjF,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,GACtC,IACL,IACF,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,eAAK,SAAS,EAAC,qBAAqB,aAClC,KAAC,QAAQ,IACP,KAAK,EAAE,IAAI,EACX,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACxC,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,CAAC,GACP,EACF,cAAK,SAAS,EAAC,kBAAkB,YAC/B,KAAC,MAAM,IACL,IAAI,EAAC,IAAI,EACT,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAC7C,OAAO,EAAE,MAAM,YAEd,KAAK,GACC,GACL,IACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAW;IACtC,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE;IACpF,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE;IAC/B,EAAE,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE;CAC1F,CAAC"}
1
+ {"version":3,"file":"interactive.js","sourceRoot":"","sources":["../../src/atoms/interactive.tsx"],"names":[],"mappings":"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"}
@@ -1,3 +1,10 @@
1
+ /** Media atoms — NIP-68/71 posts + NIP-94 files (read), and the spendy uploader. */
2
+ import { type FC } from 'react';
3
+ import { type MediaVariant } from '../parsers/media.js';
1
4
  import { type Atom } from './types.js';
5
+ /** Renders a list of NIP-92 media variants (image → img, video → video). */
6
+ export declare const InlineMediaList: FC<{
7
+ variants: MediaVariant[];
8
+ }>;
2
9
  export declare const mediaAtoms: Atom[];
3
10
  //# sourceMappingURL=media.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../src/atoms/media.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,IAAI,EAAwB,MAAM,YAAY,CAAC;AAmH7D,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;AAE7G,OAAO,EAAE,KAAK,IAAI,EAAwB,MAAM,YAAY,CAAC;AAoB7D,4EAA4E;AAC5E,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC;IAAE,QAAQ,EAAE,YAAY,EAAE,CAAA;CAAE,CAmB5D,CAAC;AAgFF,eAAO,MAAM,UAAU,EAAE,IAAI,EAO5B,CAAC"}
@@ -23,17 +23,21 @@ function variantsFor(event) {
23
23
  }
24
24
  return { variants: parseInlineMedia(event), video: false };
25
25
  }
26
- const MediaEmbed = ({ events }) => {
27
- const event = events[0];
28
- if (!event)
29
- return null;
30
- const { variants } = variantsFor(event);
26
+ /** Renders a list of NIP-92 media variants (image img, video → video). */
27
+ export const InlineMediaList = ({ variants }) => {
31
28
  if (variants.length === 0)
32
29
  return null;
33
30
  return (_jsx("div", { className: "flex flex-col gap-2", children: variants.map((v, i) => isVideo(v) ? (
34
31
  // eslint-disable-next-line jsx-a11y/media-has-caption
35
32
  _jsx("video", { src: v.url, controls: true, className: "max-h-96 w-full rounded-md" }, i)) : (_jsx("img", { src: v.url, alt: v.alt ?? '', className: "max-h-96 w-full rounded-md object-contain" }, i))) }));
36
33
  };
34
+ const MediaEmbed = ({ events }) => {
35
+ const event = events[0];
36
+ if (!event)
37
+ return null;
38
+ const { variants } = variantsFor(event);
39
+ return _jsx(InlineMediaList, { variants: variants });
40
+ };
37
41
  const MediaUploader = ({ props, actions }) => {
38
42
  const label = typeof props['label'] === 'string' ? props['label'] : 'Upload media';
39
43
  const inputRef = useRef(null);
@@ -1 +1 @@
1
- {"version":3,"file":"media.js","sourceRoot":"","sources":["../../src/atoms/media.tsx"],"names":[],"mappings":";AAAA,oFAAoF;AACpF,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAW,MAAM,OAAO,CAAC;AAClD,OAAO,EAAqB,cAAc,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC7G,OAAO,EAAmB,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAmC,MAAM,YAAY,CAAC;AAE7D,SAAS,OAAO,CAAC,OAAqB;IACpC,OAAO,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC;AACrD,CAAC;AAED,kEAAkE;AAClE,SAAS,WAAW,CAAC,KAAiB;IACpC,MAAM,IAAI,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACnC,IAAI,IAAI;QAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;IAChF,MAAM,IAAI,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,CAAC,GAAiB,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;QACzD,IAAI,IAAI,CAAC,IAAI;YAAE,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAClC,IAAI,IAAI,CAAC,GAAG;YAAE,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAC/B,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,IAAI,KAAK,EAAE,CAAC;IAC5E,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,gBAAgB,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,GAAwB,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;IACrD,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IACxC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,OAAO,CACL,cAAK,SAAS,EAAC,qBAAqB,YACjC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACrB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACX,sDAAsD;QACtD,gBAAe,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,QAAQ,QAAC,SAAS,EAAC,4BAA4B,IAA9D,CAAC,CAAgE,CAC9E,CAAC,CAAC,CAAC,CACF,cAEE,GAAG,EAAE,CAAC,CAAC,GAAG,EACV,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,EAChB,SAAS,EAAC,2CAA2C,IAHhD,CAAC,CAIN,CACH,CACF,GACG,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,aAAa,GAAwB,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;IAChE,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;IACnF,MAAM,QAAQ,GAAG,MAAM,CAAmB,IAAI,CAAC,CAAC;IAChD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEtD,MAAM,UAAU,GAAG,KAAK,EAAE,IAAU,EAAiB,EAAE;QACrD,OAAO,CAAC,IAAI,CAAC,CAAC;QACd,aAAa,CAAC,KAAK,CAAC,CAAC;QACrB,cAAc,CAAC,KAAK,CAAC,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,IAAI,OAAO,CAAc,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC7D,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;gBAChC,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAqB,CAAC,CAAC;gBAC5D,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC5C,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;YAClC,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,MAAM,KAAK,GAAG,IAAI,CAAC;YACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;gBAC7C,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;YACjE,CAAC;YACD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;YAChC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC,CAAC;YACxF,IAAI,OAAO,EAAE,EAAE,KAAK,KAAK,EAAE,CAAC;gBAC1B,cAAc,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC;iBAAM,CAAC;gBACN,aAAa,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,cAAc,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,KAAK,CAAC,CAAC;YACf,IAAI,QAAQ,CAAC,OAAO;gBAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC;QACpD,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,qBAAqB,aAClC,gBACE,GAAG,EAAE,QAAQ,EACb,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,iBAAiB,EACxB,SAAS,EAAC,SAAS,EACnB,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EACpC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;oBACd,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;oBACjC,IAAI,IAAI;wBAAE,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC;gBAClC,CAAC,GACD,EACF,kBACE,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EACpC,SAAS,EAAC,oGAAoG,EAC9G,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,aAEvC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,EACjC,eAAM,SAAS,EAAC,+BAA+B,kCAAyB,IACjE,EACR,UAAU,IAAI,CACb,YAAG,SAAS,EAAC,+BAA+B,uCAA2B,CACxE,EACA,WAAW,IAAI,CACd,YAAG,SAAS,EAAC,0BAA0B,+BAAmB,CAC3D,IACG,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAW;IAChC,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE;IACvE;QACE,EAAE,EAAE,gBAAgB;QACpB,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QACrD,SAAS,EAAE,aAAa;KACzB;CACF,CAAC"}
1
+ {"version":3,"file":"media.js","sourceRoot":"","sources":["../../src/atoms/media.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Shared presentational helpers for the social atoms.
3
+ *
4
+ * Pure, deterministic, no network calls and no new deps — everything is derived
5
+ * from the data already on the event (pubkey, timestamps, content bytes).
6
+ */
7
+ import { type FC } from 'react';
8
+ /** Two-char initials from a pubkey/npub, for the avatar fallback. */
9
+ export declare function initialsFor(pubkey: string): string;
10
+ /**
11
+ * A deterministic gradient + readable foreground for an identity, derived from
12
+ * its pubkey. No network, no persisted state — the same key always renders the
13
+ * same colour, so a feed reads as a set of stable identities. Hue comes from the
14
+ * hash; lightness/chroma are fixed so it stays legible in light and dark.
15
+ */
16
+ export declare function avatarColorsFor(pubkey: string): {
17
+ from: string;
18
+ to: string;
19
+ fg: string;
20
+ };
21
+ /**
22
+ * Format a unix timestamp (seconds) as a compact relative label: now, 5m, 3h,
23
+ * 2d, then an absolute month/day for anything older than a week. `nowMs` is
24
+ * injectable for deterministic tests.
25
+ */
26
+ export declare function relativeTime(createdAtSec: number, nowMs?: number): string;
27
+ /** UTF-8 byte length of a string — the unit pay-to-write fees scale with. */
28
+ export declare function byteLength(value: string): number;
29
+ /**
30
+ * Identity avatar: profile picture when we have one, otherwise a deterministic
31
+ * gradient fallback with initials. The gradient hue is the only inline style and
32
+ * is derived from the pubkey; everything else rides the design tokens.
33
+ */
34
+ export declare const IdentityAvatar: FC<{
35
+ pubkey: string;
36
+ name?: string | undefined;
37
+ picture?: string | undefined;
38
+ className?: string;
39
+ size?: 'default' | 'sm' | 'lg';
40
+ }>;
41
+ //# sourceMappingURL=social-ui.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"social-ui.d.ts","sourceRoot":"","sources":["../../src/atoms/social-ui.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAchC,qEAAqE;AACrE,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGlD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAQxF;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,GAAE,MAAmB,GAAG,MAAM,CAWrF;AAED,6EAA6E;AAC7E,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGhD;AAED;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC;CAChC,CAiBA,CAAC"}
@@ -0,0 +1,80 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * Shared presentational helpers for the social atoms.
4
+ *
5
+ * Pure, deterministic, no network calls and no new deps — everything is derived
6
+ * from the data already on the event (pubkey, timestamps, content bytes).
7
+ */
8
+ import {} from 'react';
9
+ import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar.js';
10
+ import { cn } from '@/lib/utils.js';
11
+ /** A small fnv-1a hash → 32-bit unsigned int, stable for a given string. */
12
+ function hashString(value) {
13
+ let h = 0x811c9dc5;
14
+ for (let i = 0; i < value.length; i++) {
15
+ h ^= value.charCodeAt(i);
16
+ h = Math.imul(h, 0x01000193);
17
+ }
18
+ return h >>> 0;
19
+ }
20
+ /** Two-char initials from a pubkey/npub, for the avatar fallback. */
21
+ export function initialsFor(pubkey) {
22
+ const cleaned = pubkey.replace(/^npub1?/i, '') || pubkey;
23
+ return cleaned.slice(0, 2).toUpperCase();
24
+ }
25
+ /**
26
+ * A deterministic gradient + readable foreground for an identity, derived from
27
+ * its pubkey. No network, no persisted state — the same key always renders the
28
+ * same colour, so a feed reads as a set of stable identities. Hue comes from the
29
+ * hash; lightness/chroma are fixed so it stays legible in light and dark.
30
+ */
31
+ export function avatarColorsFor(pubkey) {
32
+ const hue = hashString(pubkey) % 360;
33
+ const hue2 = (hue + 38) % 360;
34
+ return {
35
+ from: `oklch(0.62 0.17 ${hue})`,
36
+ to: `oklch(0.55 0.19 ${hue2})`,
37
+ fg: 'oklch(0.99 0 0)',
38
+ };
39
+ }
40
+ /**
41
+ * Format a unix timestamp (seconds) as a compact relative label: now, 5m, 3h,
42
+ * 2d, then an absolute month/day for anything older than a week. `nowMs` is
43
+ * injectable for deterministic tests.
44
+ */
45
+ export function relativeTime(createdAtSec, nowMs = Date.now()) {
46
+ const deltaSec = Math.max(0, Math.floor(nowMs / 1000 - createdAtSec));
47
+ if (deltaSec < 45)
48
+ return 'now';
49
+ const min = Math.floor(deltaSec / 60);
50
+ if (min < 60)
51
+ return `${min}m`;
52
+ const hr = Math.floor(min / 60);
53
+ if (hr < 24)
54
+ return `${hr}h`;
55
+ const day = Math.floor(hr / 24);
56
+ if (day < 7)
57
+ return `${day}d`;
58
+ const d = new Date(createdAtSec * 1000);
59
+ return d.toLocaleDateString(undefined, { month: 'short', day: 'numeric' });
60
+ }
61
+ /** UTF-8 byte length of a string — the unit pay-to-write fees scale with. */
62
+ export function byteLength(value) {
63
+ if (typeof TextEncoder !== 'undefined')
64
+ return new TextEncoder().encode(value).length;
65
+ return unescape(encodeURIComponent(value)).length;
66
+ }
67
+ /**
68
+ * Identity avatar: profile picture when we have one, otherwise a deterministic
69
+ * gradient fallback with initials. The gradient hue is the only inline style and
70
+ * is derived from the pubkey; everything else rides the design tokens.
71
+ */
72
+ export const IdentityAvatar = ({ pubkey, name, picture, className, size = 'lg' }) => {
73
+ const colors = avatarColorsFor(pubkey);
74
+ const label = name ?? pubkey;
75
+ return (_jsxs(Avatar, { size: size, className: cn('shrink-0', className), children: [picture ? _jsx(AvatarImage, { src: picture, alt: `${label} avatar` }) : null, _jsx(AvatarFallback, { className: "font-semibold tracking-tight", style: {
76
+ backgroundImage: `linear-gradient(135deg, ${colors.from}, ${colors.to})`,
77
+ color: colors.fg,
78
+ }, children: initialsFor(pubkey) })] }));
79
+ };
80
+ //# sourceMappingURL=social-ui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"social-ui.js","sourceRoot":"","sources":["../../src/atoms/social-ui.tsx"],"names":[],"mappings":";AAAA;;;;;GAKG;AACH,OAAO,EAAW,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAEpC,4EAA4E;AAC5E,SAAS,UAAU,CAAC,KAAa;IAC/B,IAAI,CAAC,GAAG,UAAU,CAAC;IACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC;IACzD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AAC3C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;IACrC,MAAM,IAAI,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC;IAC9B,OAAO;QACL,IAAI,EAAE,mBAAmB,GAAG,GAAG;QAC/B,EAAE,EAAE,mBAAmB,IAAI,GAAG;QAC9B,EAAE,EAAE,iBAAiB;KACtB,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,YAAoB,EAAE,QAAgB,IAAI,CAAC,GAAG,EAAE;IAC3E,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC;IACtE,IAAI,QAAQ,GAAG,EAAE;QAAE,OAAO,KAAK,CAAC;IAChC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;IACtC,IAAI,GAAG,GAAG,EAAE;QAAE,OAAO,GAAG,GAAG,GAAG,CAAC;IAC/B,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;IAChC,IAAI,EAAE,GAAG,EAAE;QAAE,OAAO,GAAG,EAAE,GAAG,CAAC;IAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAChC,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO,GAAG,GAAG,GAAG,CAAC;IAC9B,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IACxC,OAAO,CAAC,CAAC,kBAAkB,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;AAC7E,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,IAAI,OAAO,WAAW,KAAK,WAAW;QAAE,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;IACtF,OAAO,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;AACpD,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAMtB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE;IACzD,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,IAAI,IAAI,MAAM,CAAC;IAC7B,OAAO,CACL,MAAC,MAAM,IAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,aACrD,OAAO,CAAC,CAAC,CAAC,KAAC,WAAW,IAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,SAAS,GAAI,CAAC,CAAC,CAAC,IAAI,EACvE,KAAC,cAAc,IACb,SAAS,EAAC,8BAA8B,EACxC,KAAK,EAAE;oBACL,eAAe,EAAE,2BAA2B,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE,GAAG;oBACxE,KAAK,EAAE,MAAM,CAAC,EAAE;iBACjB,YAEA,WAAW,CAAC,MAAM,CAAC,GACL,IACV,CACV,CAAC;AACJ,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"social.d.ts","sourceRoot":"","sources":["../../src/atoms/social.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,IAAI,EAAwB,MAAM,YAAY,CAAC;AAyG7D,eAAO,MAAM,WAAW,EAAE,IAAI,EAS7B,CAAC"}
1
+ {"version":3,"file":"social.d.ts","sourceRoot":"","sources":["../../src/atoms/social.tsx"],"names":[],"mappings":"AAgBA,OAAO,EAAE,KAAK,IAAI,EAAwB,MAAM,YAAY,CAAC;AAgM7D,eAAO,MAAM,WAAW,EAAE,IAAI,EAS7B,CAAC"}
@@ -1,28 +1,54 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  /** Social atoms — NIP-01 profile/note, NIP-25 reactions, NIP-02 follow. */
3
3
  import {} from 'react';
4
+ import { Heart, MessageCircle } from 'lucide-react';
4
5
  import { Button } from '@/components/ui/button.js';
5
6
  import { Badge } from '@/components/ui/badge.js';
6
- import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar.js';
7
7
  import { MonoId } from '@/components/mono-id.js';
8
- import { parseProfile, parseNote, parseReaction } from '../parsers/social.js';
8
+ import { parseProfile, parseNote, parseReaction, } from '../parsers/social.js';
9
+ import { parseInlineMedia } from '../parsers/media.js';
10
+ import {} from '../types.js';
11
+ import { InlineMediaList } from './media.js';
9
12
  import {} from './types.js';
10
- function displayName(pubkey) {
11
- return pubkey.slice(0, 2).toUpperCase();
12
- }
13
+ import { IdentityAvatar, relativeTime } from './social-ui.js';
13
14
  const ProfileHeader = ({ events }) => {
14
15
  const profile = events.map(parseProfile).find((p) => p !== null) ?? null;
15
16
  if (!profile)
16
17
  return null;
17
18
  const name = profile.displayName ?? profile.name ?? profile.pubkey;
18
- const initials = displayName(profile.pubkey);
19
- return (_jsxs("div", { className: "flex items-center gap-3", children: [_jsxs(Avatar, { className: "h-11 w-11", children: [_jsx(AvatarImage, { src: profile.picture, alt: name }), _jsx(AvatarFallback, { className: "text-xs font-semibold", children: initials })] }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("div", { className: "truncate font-semibold leading-tight", children: name }), profile.nip05 ? (_jsx("div", { className: "truncate text-xs text-muted-foreground", children: profile.nip05 })) : (_jsx(MonoId, { value: profile.pubkey, className: "text-muted-foreground" })), profile.about ? (_jsx("p", { className: "mt-1 line-clamp-2 text-sm text-muted-foreground", children: profile.about })) : null] })] }));
19
+ return (_jsxs("div", { className: "flex items-center gap-3", children: [_jsx(IdentityAvatar, { pubkey: profile.pubkey, name: name, picture: profile.picture }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("div", { className: "truncate font-semibold leading-tight", children: name }), profile.nip05 ? (_jsx("div", { className: "truncate text-xs text-muted-foreground", children: profile.nip05 })) : (_jsx(MonoId, { value: profile.pubkey, className: "text-muted-foreground" })), profile.about ? (_jsx("p", { className: "mt-1 line-clamp-2 text-sm text-muted-foreground", children: profile.about })) : null] })] }));
20
+ };
21
+ /** A single feed item: identity row, note body, inline media, engagement. */
22
+ const NoteRow = ({ event, note, profile, reactionCount, actions }) => {
23
+ const media = parseInlineMedia(event);
24
+ const displayName = profile?.displayName ?? profile?.name;
25
+ const reply = actions['reply'];
26
+ const react = actions['react'];
27
+ 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-baseline gap-2", children: [displayName ? (_jsx("span", { className: "truncate font-semibold leading-tight", children: displayName })) : (_jsx(MonoId, { value: note.authorPubkey })), note.isReply ? (_jsx(Badge, { variant: "secondary", className: "px-1.5 py-0 text-[10px] font-normal", children: "reply" })) : null, _jsx("span", { className: "ml-auto shrink-0 text-xs text-muted-foreground tabular-nums", children: relativeTime(note.createdAt) })] }), 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: "mt-1 flex items-center gap-1 text-muted-foreground", children: [reply ? (_jsxs(Button, { variant: "ghost", size: "sm", "aria-label": "Reply to this note", className: "h-7 gap-1.5 px-2 text-xs hover:text-foreground", onClick: () => void reply({ parentId: note.eventId }), children: [_jsx(MessageCircle, { "aria-hidden": "true" }), "Reply"] })) : null, react ? (_jsxs(Button, { variant: "ghost", size: "sm", "aria-label": "React to this note", className: "h-7 gap-1.5 px-2 text-xs hover:text-foreground", onClick: () => void react({ content: '+' }), children: [_jsx(Heart, { "aria-hidden": "true" }), "React", reactionCount > 0 ? (_jsx("span", { className: "tabular-nums", children: reactionCount })) : null] })) : null] })) : null] })] }));
20
28
  };
21
29
  const NoteCard = ({ events, actions }) => {
22
- const notes = events.map(parseNote).filter((n) => n !== null);
23
- if (notes.length === 0)
30
+ const noteItems = events
31
+ .map((event) => ({ event, note: parseNote(event) }))
32
+ .filter((item) => item.note !== null);
33
+ if (noteItems.length === 0)
24
34
  return null;
25
- return (_jsx("div", { className: "flex flex-col divide-y divide-border", children: notes.map((note) => (_jsxs("article", { className: "flex flex-col gap-1.5 py-3 first:pt-0 last:pb-0", children: [_jsxs("header", { className: "flex items-center gap-2", children: [_jsx(MonoId, { value: note.authorPubkey }), note.isReply ? (_jsx(Badge, { variant: "secondary", className: "text-[10px]", children: "reply" })) : null] }), _jsx("p", { className: "whitespace-pre-wrap break-words text-sm leading-relaxed", children: note.content }), actions['reply'] ? (_jsx(Button, { variant: "ghost", size: "sm", className: "self-start h-6 px-0 text-xs text-muted-foreground hover:text-foreground", onClick: () => void actions['reply']?.({ parentId: note.eventId }), children: "Reply" })) : null] }, note.eventId))) }));
35
+ // A feed bind may carry kind:0 profiles alongside the notes; join them by
36
+ // pubkey so an author renders with a real name/picture when one is present.
37
+ const profiles = new Map();
38
+ for (const event of events) {
39
+ const profile = parseProfile(event);
40
+ if (profile)
41
+ profiles.set(profile.pubkey, profile);
42
+ }
43
+ // Reaction counts, keyed by the targeted note (NIP-25 `e` tag).
44
+ const reactionCounts = new Map();
45
+ for (const event of events) {
46
+ const reaction = parseReaction(event);
47
+ if (reaction?.targetEventId) {
48
+ reactionCounts.set(reaction.targetEventId, (reactionCounts.get(reaction.targetEventId) ?? 0) + 1);
49
+ }
50
+ }
51
+ 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))) }));
26
52
  };
27
53
  const ReactionBar = ({ events, actions }) => {
28
54
  const counts = new Map();
@@ -33,7 +59,7 @@ const ReactionBar = ({ events, actions }) => {
33
59
  const key = reaction.content || '+';
34
60
  counts.set(key, (counts.get(key) ?? 0) + 1);
35
61
  }
36
- return (_jsxs("div", { className: "flex flex-wrap items-center gap-1.5", children: [[...counts.entries()].map(([emoji, n]) => (_jsxs(Badge, { variant: "secondary", children: [emoji, " ", n] }, emoji))), actions['react'] ? (_jsx(Button, { variant: "outline", size: "sm", className: "h-6 rounded-full px-2 text-xs", onClick: () => void actions['react']?.({ content: '+' }), children: "+ React" })) : null] }));
62
+ return (_jsxs("div", { className: "flex flex-wrap items-center gap-1.5", children: [[...counts.entries()].map(([emoji, n]) => (_jsxs(Badge, { variant: "secondary", className: "gap-1 tabular-nums", children: [emoji, " ", n] }, emoji))), actions['react'] ? (_jsxs(Button, { variant: "outline", size: "sm", "aria-label": "Add a reaction", className: "h-6 gap-1 rounded-full px-2 text-xs", onClick: () => void actions['react']?.({ content: '+' }), children: [_jsx(Heart, { "aria-hidden": "true" }), "React"] })) : null] }));
37
63
  };
38
64
  const FollowButton = ({ props, actions }) => {
39
65
  const label = typeof props['label'] === 'string' ? props['label'] : 'Follow';
@@ -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":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@toon-protocol/views",
3
- "version": "0.2.0",
3
+ "version": "0.4.0",
4
4
  "description": "Shared TOON kind→atom registry, NIP parsers, ViewSpec composition runtime, and MCP-app iframe bundle. Consumed by rig and the toon-mcp apps surface.",
5
5
  "type": "module",
6
6
  "publishConfig": {