@toon-protocol/views 0.4.0 → 0.6.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.
@@ -0,0 +1,6 @@
1
+ import { type Atom } from './types.js';
2
+ /** Status tone → semantic colour, shared by `stat` and `badge`. */
3
+ export type Tone = 'default' | 'success' | 'warn' | 'danger';
4
+ export declare function toTone(value: unknown): Tone;
5
+ export declare const contentAtoms: Atom[];
6
+ //# sourceMappingURL=content.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../src/atoms/content.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,IAAI,EAAwB,MAAM,YAAY,CAAC;AAE7D,mEAAmE;AACnE,MAAM,MAAM,IAAI,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;AAiB7D,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAE3C;AAqED,eAAO,MAAM,YAAY,EAAE,IAAI,EAM9B,CAAC"}
@@ -0,0 +1,83 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * Generic content primitives — the props-driven vocabulary the agent composes
4
+ * with to render arbitrary, non-event structured data (daemon status, write
5
+ * targets, balances, identity) without falling back to plain text. Like
6
+ * `composer`/`tabs`, these are pure and carry no event `kinds`: they render
7
+ * exactly what the ViewSpec hands them.
8
+ */
9
+ import {} from 'react';
10
+ import { cn } from '@/lib/utils.js';
11
+ import { Badge } from '@/components/ui/badge.js';
12
+ import {} from './types.js';
13
+ const TONE_TEXT = {
14
+ default: 'text-foreground',
15
+ success: 'text-emerald-600 dark:text-emerald-400',
16
+ warn: 'text-amber-600 dark:text-amber-400',
17
+ danger: 'text-destructive',
18
+ };
19
+ /** shadcn badge variant for each tone (the pill colours). */
20
+ const TONE_BADGE = {
21
+ default: 'secondary',
22
+ success: 'default',
23
+ warn: 'secondary',
24
+ danger: 'destructive',
25
+ };
26
+ export function toTone(value) {
27
+ return value === 'success' || value === 'warn' || value === 'danger' ? value : 'default';
28
+ }
29
+ const str = (v, fallback = '') => typeof v === 'string' ? v : typeof v === 'number' ? String(v) : fallback;
30
+ const Heading = ({ props }) => {
31
+ const text = str(props['text']);
32
+ if (!text)
33
+ return null;
34
+ const level = props['level'] === 2 || props['level'] === 3 ? props['level'] : 1;
35
+ const cls = level === 1
36
+ ? 'text-lg font-semibold tracking-tight'
37
+ : level === 2
38
+ ? 'text-base font-semibold'
39
+ : 'text-sm font-semibold uppercase tracking-wide text-muted-foreground';
40
+ if (level === 2)
41
+ return _jsx("h2", { className: cls, children: text });
42
+ if (level === 3)
43
+ return _jsx("h3", { className: cls, children: text });
44
+ return _jsx("h1", { className: cls, children: text });
45
+ };
46
+ const Text = ({ props }) => {
47
+ const text = str(props['text']);
48
+ if (!text)
49
+ return null;
50
+ const muted = props['muted'] === true;
51
+ return (_jsx("p", { className: cn('text-sm leading-relaxed', muted && 'text-muted-foreground'), children: text }));
52
+ };
53
+ const Stat = ({ props }) => {
54
+ const label = str(props['label']);
55
+ const value = str(props['value'], '—');
56
+ const tone = toTone(props['tone']);
57
+ return (_jsxs("div", { className: "flex flex-col gap-0.5", children: [_jsx("span", { className: "text-xs font-medium uppercase tracking-wide text-muted-foreground", children: label }), _jsx("span", { className: cn('text-xl font-semibold tabular-nums', TONE_TEXT[tone]), children: value })] }));
58
+ };
59
+ const KeyValue = ({ props }) => {
60
+ const rows = Array.isArray(props['rows'])
61
+ ? props['rows']
62
+ .filter((r) => !!r && typeof r === 'object')
63
+ .map((r) => ({ label: str(r['label']), value: str(r['value'], '—') }))
64
+ : [];
65
+ if (rows.length === 0)
66
+ return null;
67
+ return (_jsx("dl", { className: "grid grid-cols-[auto_1fr] gap-x-4 gap-y-1.5 text-sm", children: rows.map((row, i) => (_jsxs("div", { className: "contents", children: [_jsx("dt", { className: "text-muted-foreground", children: row.label }), _jsx("dd", { className: "min-w-0 break-words text-right font-medium tabular-nums", children: row.value })] }, i))) }));
68
+ };
69
+ const BadgeAtom = ({ props }) => {
70
+ const label = str(props['label']);
71
+ if (!label)
72
+ return null;
73
+ const tone = toTone(props['tone']);
74
+ return _jsx(Badge, { variant: TONE_BADGE[tone], children: label });
75
+ };
76
+ export const contentAtoms = [
77
+ { id: 'heading', Component: Heading },
78
+ { id: 'text', Component: Text },
79
+ { id: 'stat', Component: Stat },
80
+ { id: 'key-value', Component: KeyValue },
81
+ { id: 'badge', Component: BadgeAtom },
82
+ ];
83
+ //# sourceMappingURL=content.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content.js","sourceRoot":"","sources":["../../src/atoms/content.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;AAQvC,OAAO,EAAgB,eAAe,EAAE,MAAM,eAAe,CAAC;AAa9D,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;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"}
@@ -14,6 +14,8 @@ 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 { contentAtoms } from './content.js';
18
+ import { statusAtoms } from './status.js';
17
19
  import { fallbackAtom, GENERIC_ATOM_ID } from './fallback.js';
18
20
  const ALL_ATOMS = [
19
21
  ...layoutAtoms,
@@ -23,6 +25,8 @@ const ALL_ATOMS = [
23
25
  ...interactiveAtoms,
24
26
  ...defiAtoms,
25
27
  ...onboardAtoms,
28
+ ...contentAtoms,
29
+ ...statusAtoms,
26
30
  fallbackAtom,
27
31
  ];
28
32
  /** Atom id → Atom. */
@@ -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,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,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,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 +1 @@
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
+ {"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,10 +1,11 @@
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
  /** Social atoms — NIP-01 profile/note, NIP-25 reactions, NIP-02 follow. */
3
- import {} from 'react';
4
- import { Heart, MessageCircle } from 'lucide-react';
3
+ import { useState } from 'react';
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';
7
7
  import { MonoId } from '@/components/mono-id.js';
8
+ import { cn } from '@/lib/utils.js';
8
9
  import { parseProfile, parseNote, parseReaction, } from '../parsers/social.js';
9
10
  import { parseInlineMedia } from '../parsers/media.js';
10
11
  import {} from '../types.js';
@@ -18,13 +19,43 @@ const ProfileHeader = ({ events }) => {
18
19
  const name = profile.displayName ?? profile.name ?? profile.pubkey;
19
20
  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
  };
22
+ /**
23
+ * One X-style action: an icon + optional count, rendered as a quiet muted
24
+ * button that accents on hover/focus (and stays accented while `active`). Counts
25
+ * sit to the right of the icon, X-style. `accent` tints the hover/active state
26
+ * so Like reads rose while Reply/etc. settle on the foreground.
27
+ */
28
+ const ActionButton = ({ label, icon, text, count, active = false, accent = 'foreground', onClick }) => {
29
+ const accentClass = accent === 'rose'
30
+ ? cn('hover:text-rose-500 focus-visible:text-rose-500', active && 'text-rose-500')
31
+ : cn('hover:text-foreground focus-visible:text-foreground', active && 'text-foreground');
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
+ };
21
34
  /** A single feed item: identity row, note body, inline media, engagement. */
22
35
  const NoteRow = ({ event, note, profile, reactionCount, actions }) => {
23
36
  const media = parseInlineMedia(event);
24
37
  const displayName = profile?.displayName ?? profile?.name;
25
38
  const reply = actions['reply'];
26
39
  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] })] }));
40
+ const follow = actions['follow'];
41
+ // Pay-to-write actions settle a channel fee per event. We toggle optimistically
42
+ // for a snappy feel; the publish itself is routed through the paid write path.
43
+ const [liked, setLiked] = useState(false);
44
+ const [followed, setFollowed] = useState(false);
45
+ const onLike = () => {
46
+ if (!react)
47
+ return;
48
+ setLiked((v) => !v);
49
+ void react({ content: '+' });
50
+ };
51
+ const onFollow = () => {
52
+ if (!follow)
53
+ return;
54
+ setFollowed(true);
55
+ void follow({ tags: [['p', note.authorPubkey]] });
56
+ };
57
+ const likeCount = reactionCount + (liked ? 1 : 0);
58
+ 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] })] }));
28
59
  };
29
60
  const NoteCard = ({ events, actions }) => {
30
61
  const noteItems = events
@@ -67,7 +98,14 @@ const FollowButton = ({ props, actions }) => {
67
98
  };
68
99
  export const socialAtoms = [
69
100
  { id: 'profile-header', kinds: [0], Component: ProfileHeader },
70
- { id: 'note-card', kinds: [1], Component: NoteCard },
101
+ {
102
+ id: 'note-card',
103
+ kinds: [1],
104
+ // reply (kind:1), react/like (kind:7) and follow (kind:3) all publish via
105
+ // the unsigned-publish tool; the runtime supplies the kind + tags per action.
106
+ writes: [{ name: 'toon_publish_unsigned' }],
107
+ Component: NoteCard,
108
+ },
71
109
  { id: 'reaction-bar', kinds: [7], Component: ReactionBar },
72
110
  {
73
111
  id: 'follow-button',
@@ -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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"}
@@ -0,0 +1,3 @@
1
+ import { type Atom } from './types.js';
2
+ export declare const statusAtoms: Atom[];
3
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/atoms/status.tsx"],"names":[],"mappings":"AAgBA,OAAO,EAAE,KAAK,IAAI,EAAyC,MAAM,YAAY,CAAC;AAmO9E,eAAO,MAAM,WAAW,EAAE,IAAI,EAAuD,CAAC"}
@@ -0,0 +1,83 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ /**
3
+ * `client-status` — the daemon-health dashboard.
4
+ *
5
+ * Closes the render-vocabulary gap for non-event data: before this atom the
6
+ * agent had no way to render "show me my status" and fell back to plain text.
7
+ * It sources everything from the live `toon_status` read seam ({@link
8
+ * AtomRenderProps.readStatus}) — atoms never call the bridge directly — and
9
+ * renders ready/bootstrapping state, uptime, relay, transport, settlement,
10
+ * per-chain readiness, and identity as a clean card built from the shadcn
11
+ * primitives + the generic content tokens.
12
+ */
13
+ import { useEffect, useState } from 'react';
14
+ import { Activity, Loader2, Radio } from 'lucide-react';
15
+ import { Badge } from '@/components/ui/badge.js';
16
+ import { Separator } from '@/components/ui/separator.js';
17
+ import { MonoId } from '@/components/mono-id.js';
18
+ import {} from './types.js';
19
+ /** Format an uptime in ms as a compact human string (e.g. "1d 2h", "5m"). */
20
+ function formatUptime(ms) {
21
+ if (!Number.isFinite(ms) || ms < 0)
22
+ return '—';
23
+ const s = Math.floor(ms / 1000);
24
+ const d = Math.floor(s / 86400);
25
+ const h = Math.floor((s % 86400) / 3600);
26
+ const m = Math.floor((s % 3600) / 60);
27
+ if (d > 0)
28
+ return `${d}d ${h}h`;
29
+ if (h > 0)
30
+ return `${h}h ${m}m`;
31
+ if (m > 0)
32
+ return `${m}m`;
33
+ return `${s}s`;
34
+ }
35
+ const Row = ({ label, children }) => (_jsxs("div", { className: "flex items-baseline justify-between gap-4", children: [_jsx("dt", { className: "text-sm text-muted-foreground", children: label }), _jsx("dd", { className: "min-w-0 text-right text-sm font-medium tabular-nums", children: children })] }));
36
+ const ChainBadge = ({ chain, ready, detail, }) => (_jsx(Badge, { variant: ready ? 'default' : 'secondary', title: detail, "aria-label": `${chain} settlement ${ready ? 'ready' : 'not ready'}`, children: chain }));
37
+ const ClientStatus = ({ readStatus }) => {
38
+ const [status, setStatus] = useState(null);
39
+ const [error, setError] = useState(false);
40
+ const [loading, setLoading] = useState(true);
41
+ useEffect(() => {
42
+ if (!readStatus) {
43
+ setLoading(false);
44
+ setError(true);
45
+ return;
46
+ }
47
+ let cancelled = false;
48
+ void readStatus()
49
+ .then((s) => {
50
+ if (!cancelled) {
51
+ setStatus(s);
52
+ setLoading(false);
53
+ }
54
+ })
55
+ .catch(() => {
56
+ if (!cancelled) {
57
+ setError(true);
58
+ setLoading(false);
59
+ }
60
+ });
61
+ return () => {
62
+ cancelled = true;
63
+ };
64
+ }, [readStatus]);
65
+ if (loading) {
66
+ return (_jsxs("div", { className: "flex items-center gap-2 rounded-xl border border-border bg-card p-4 text-sm text-muted-foreground", role: "status", "aria-live": "polite", children: [_jsx(Loader2, { "aria-hidden": "true", className: "size-4 animate-spin" }), "Loading client status\u2026"] }));
67
+ }
68
+ if (error || !status) {
69
+ return (_jsx("div", { className: "rounded-xl border border-destructive/40 bg-destructive/5 p-4 text-sm text-destructive", children: "Client status is unavailable." }));
70
+ }
71
+ const ready = status.ready === true;
72
+ const bootstrapping = status.bootstrapping === true;
73
+ const stateLabel = ready ? 'Ready' : bootstrapping ? 'Bootstrapping' : 'Offline';
74
+ const stateVariant = ready ? 'default' : bootstrapping ? 'secondary' : 'destructive';
75
+ const relay = status.relay;
76
+ const identity = status.identity;
77
+ const feeLabel = `${status.feePerEvent}${status.asset ? ` ${status.asset}` : ''}`;
78
+ return (_jsxs("div", { className: "overflow-hidden rounded-xl border border-border bg-card text-card-foreground shadow-sm", children: [_jsxs("div", { className: "flex items-center justify-between gap-3 border-b border-border px-4 py-3", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Activity, { "aria-hidden": "true", className: "size-4 text-primary" }), _jsx("span", { className: "text-sm font-semibold", children: "Client status" })] }), _jsxs("div", { className: "flex items-center gap-2", children: [typeof status.uptimeMs === 'number' ? (_jsxs("span", { className: "text-xs text-muted-foreground tabular-nums", children: ["up ", formatUptime(status.uptimeMs)] })) : null, _jsx(Badge, { variant: stateVariant, "aria-label": `Daemon state: ${stateLabel}`, children: stateLabel })] })] }), _jsxs("div", { className: "flex flex-col gap-4 px-4 py-3", children: [_jsxs("dl", { className: "flex flex-col gap-2", children: [_jsx(Row, { label: "Settlement chain", children: status.settlementChain }), _jsx(Row, { label: "Fee per event", children: feeLabel })] }), relay || status.transport ? (_jsxs(_Fragment, { children: [_jsx(Separator, {}), _jsxs("dl", { className: "flex flex-col gap-2", children: [relay ? (_jsxs(_Fragment, { children: [_jsx(Row, { label: "Relay", children: _jsxs("span", { className: "inline-flex items-center gap-1.5", children: [_jsx(Radio, { "aria-hidden": "true", className: relay.connected
79
+ ? 'size-3.5 text-emerald-500'
80
+ : 'size-3.5 text-muted-foreground' }), _jsx("span", { className: "font-mono text-xs", children: relay.url ?? '—' })] }) }), _jsx(Row, { label: "Connection", children: _jsx(Badge, { variant: relay.connected ? 'default' : 'destructive', children: relay.connected ? 'connected' : 'disconnected' }) }), _jsx(Row, { label: "Buffered events", children: relay.buffered ?? 0 }), _jsx(Row, { label: "Subscriptions", children: relay.subscriptions?.length ?? 0 })] })) : null, status.transport ? (_jsxs(Row, { label: "Transport", children: [status.transport.type ?? 'direct', status.transport.btpUrl ? (_jsx("span", { className: "ml-1 font-mono text-xs text-muted-foreground", children: status.transport.btpUrl })) : null] })) : null] })] })) : null, status.network && status.network.length > 0 ? (_jsxs(_Fragment, { children: [_jsx(Separator, {}), _jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx("span", { className: "text-xs font-medium uppercase tracking-wide text-muted-foreground", children: "Chains" }), _jsx("div", { className: "flex flex-wrap gap-1.5", children: status.network.map((c) => (_jsx(ChainBadge, { chain: c.chain, ready: c.ready, detail: c.detail }, c.chain))) })] })] })) : null, identity ? (_jsxs(_Fragment, { children: [_jsx(Separator, {}), _jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx("span", { className: "text-xs font-medium uppercase tracking-wide text-muted-foreground", children: "Identity" }), _jsxs("dl", { className: "flex flex-col gap-1.5", children: [identity.nostrPubkey ? (_jsx(Row, { label: "npub", children: _jsx(MonoId, { value: identity.nostrPubkey, prefixLen: 10, suffixLen: 6 }) })) : null, identity.evmAddress ? (_jsx(Row, { label: "EVM", children: _jsx(MonoId, { value: identity.evmAddress, prefixLen: 8, suffixLen: 6 }) })) : null, identity.solanaAddress ? (_jsx(Row, { label: "Solana", children: _jsx(MonoId, { value: identity.solanaAddress, prefixLen: 8, suffixLen: 6 }) })) : null, identity.minaAddress ? (_jsx(Row, { label: "Mina", children: _jsx(MonoId, { value: identity.minaAddress, prefixLen: 8, suffixLen: 6 }) })) : null] })] })] })) : null, status.lastError ? (_jsxs("p", { className: "text-xs text-amber-600 dark:text-amber-400", children: ["Last error: ", status.lastError] })) : null] })] }));
81
+ };
82
+ export const statusAtoms = [{ id: 'client-status', Component: ClientStatus }];
83
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/atoms/status.tsx"],"names":[],"mappings":"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"}
@@ -28,15 +28,55 @@ export interface ActionOutcome {
28
28
  * Resolves to an {@link ActionOutcome} (`ok` plus the published `eventId`/`data`),
29
29
  * or `void` if the call site doesn't read it. */
30
30
  export type AtomAction = (runtimeArgs?: Record<string, unknown>) => ActionOutcome | void | Promise<ActionOutcome | void>;
31
+ /** Per-chain settlement readiness, mirrored from the daemon `toon_status`. */
32
+ export interface AtomChainStatus {
33
+ chain: string;
34
+ ready: boolean;
35
+ detail?: string;
36
+ }
31
37
  /**
32
- * The current pay-to-write status, as surfaced by the `toon_status` tool. Atoms
33
- * that show a fee (e.g. the pay-confirm receipt) read it via
34
- * {@link AtomRenderProps.readStatus} rather than hardcoding it.
38
+ * The current daemon + pay-to-write status, as surfaced by the `toon_status`
39
+ * tool. Atoms that show a fee (e.g. the pay-confirm receipt) read the
40
+ * `feePerEvent`/`settlementChain`/`asset` fields via
41
+ * {@link AtomRenderProps.readStatus} rather than hardcoding them; the richer
42
+ * fields below let the `client-status` dashboard render the whole daemon health
43
+ * snapshot (ready state, uptime, relay, transport, per-chain readiness,
44
+ * identity) from the same single read seam. All non-fee fields are optional so
45
+ * older render paths / minimal stubs keep working.
35
46
  */
36
47
  export interface AtomStatus {
37
48
  feePerEvent: string;
38
49
  settlementChain: string;
39
50
  asset?: string;
51
+ /** Daemon process uptime, ms. */
52
+ uptimeMs?: number;
53
+ /** True once a channel is open and the client can publish. */
54
+ ready?: boolean;
55
+ /** True while the BTP session / channel are still coming up. */
56
+ bootstrapping?: boolean;
57
+ /** Identity: Nostr pubkey (hex) + optional per-chain addresses. */
58
+ identity?: {
59
+ nostrPubkey?: string;
60
+ evmAddress?: string;
61
+ solanaAddress?: string;
62
+ minaAddress?: string;
63
+ };
64
+ /** Write transport (BTP) summary. */
65
+ transport?: {
66
+ type?: string;
67
+ btpUrl?: string;
68
+ };
69
+ /** Read-relay connection summary. */
70
+ relay?: {
71
+ url?: string;
72
+ connected?: boolean;
73
+ buffered?: number;
74
+ subscriptions?: string[];
75
+ };
76
+ /** Per-chain settlement readiness, when a network tier is configured. */
77
+ network?: AtomChainStatus[];
78
+ /** Last non-fatal bootstrap error, if any. */
79
+ lastError?: string;
40
80
  }
41
81
  export interface AtomRenderProps {
42
82
  /** Events resolved from the node's `bind` (empty when there is no binding). */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/atoms/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAChD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,OAAO,CAAC;IACZ,oFAAoF;IACpF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mDAAmD;IACnD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;iDAEiD;AACjD,MAAM,MAAM,UAAU,GAAG,CACvB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAClC,aAAa,GAAG,IAAI,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;AAE1D;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,+EAA+E;IAC/E,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,8EAA8E;IAC9E,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACpC,4BAA4B;IAC5B,QAAQ,EAAE,SAAS,CAAC;IACpB,+EAA+E;IAC/E,WAAW,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,SAAS,CAAC;IAC9C;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC;CACxC;AAED,yBAAyB;AACzB,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,8EAA8E;IAC9E,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;IAC9C,SAAS,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC;CAChC"}
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,EAsHlC,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,EA6KlC,CAAC;AAEF,+DAA+D;AAC/D,eAAO,MAAM,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAA0C,CAAC"}
package/dist/catalog.js CHANGED
@@ -24,7 +24,15 @@ export const ATOM_CATALOG = [
24
24
  },
25
25
  // social
26
26
  { id: 'profile-header', description: 'NIP-01 kind:0 profile header (avatar, name, nip05, bio).', kinds: [0] },
27
- { id: 'note-card', description: 'NIP-01 kind:1 text note; optional "reply" action.', kinds: [1] },
27
+ {
28
+ id: 'note-card',
29
+ description: 'NIP-01 kind:1 text note, rendered as an X-style post (author header with ' +
30
+ 'a Follow button, body + inline media, action bar). Optional "reply" ' +
31
+ '(kind:1), "react"/Like (kind:7 "+"), and "follow" (kind:3) actions — all ' +
32
+ 'paid writes via toon_publish_unsigned.',
33
+ kinds: [1],
34
+ writes: [{ name: 'toon_publish_unsigned' }],
35
+ },
28
36
  { id: 'reaction-bar', description: 'NIP-25 kind:7 reaction counts; optional "react" action.', kinds: [7] },
29
37
  {
30
38
  id: 'follow-button',
@@ -113,6 +121,49 @@ export const ATOM_CATALOG = [
113
121
  label: 'string (optional publish-profile button label)',
114
122
  },
115
123
  },
124
+ // content — generic, props-driven primitives for ANY structured (non-event)
125
+ // data: daemon status, write targets, balances, identity. Compose these inside
126
+ // layout atoms instead of falling back to plain text. No event kinds.
127
+ {
128
+ id: 'heading',
129
+ description: 'A heading/title for a section of arbitrary content.',
130
+ propsSchema: { text: 'string', level: '1 | 2 | 3 (heading level, default 1)' },
131
+ },
132
+ {
133
+ id: 'text',
134
+ description: 'A paragraph / label of plain text.',
135
+ propsSchema: { text: 'string', muted: 'boolean (render dimmed, optional)' },
136
+ },
137
+ {
138
+ id: 'stat',
139
+ description: 'A labeled metric (KPI) with an optional status colour.',
140
+ propsSchema: {
141
+ label: 'string',
142
+ value: 'string | number',
143
+ tone: "'default' | 'success' | 'warn' | 'danger' (optional)",
144
+ },
145
+ },
146
+ {
147
+ id: 'key-value',
148
+ description: 'A definition list of aligned label → value rows (for details / identity / targets).',
149
+ propsSchema: { rows: '{ label: string, value: string | number }[]' },
150
+ },
151
+ {
152
+ id: 'badge',
153
+ description: 'A small status pill.',
154
+ propsSchema: {
155
+ label: 'string',
156
+ tone: "'default' | 'success' | 'warn' | 'danger' (optional)",
157
+ },
158
+ },
159
+ // status — daemon health dashboard
160
+ {
161
+ id: 'client-status',
162
+ description: 'Daemon status dashboard: reads live toon_status and renders the ready/' +
163
+ 'bootstrapping state (badge), uptime, settlement chain + fee, relay (url, ' +
164
+ 'connected, buffered, subscriptions), transport, per-chain readiness, and ' +
165
+ 'identity (npub + chain addresses). No props; use to answer "show me my status".',
166
+ },
116
167
  // fallback
117
168
  { id: 'generic-event', description: 'Fallback: decoded JSON + tags for any kind without a bespoke atom.' },
118
169
  ];
@@ -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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"}
@@ -29,6 +29,19 @@ export declare function mediaView(): ViewSpec;
29
29
  export declare function onboardView(pubkey: string): ViewSpec;
30
30
  /** A DeFi panel: pre-open a channel, run a swap, show the settlement receipt. */
31
31
  export declare function swapView(): ViewSpec;
32
+ /**
33
+ * Daemon status dashboard: a single `client-status` atom. It reads the live
34
+ * `toon_status` itself (no bind/props), so this is the answer to "show me my
35
+ * status" — render this instead of falling back to plain text.
36
+ */
37
+ export declare function clientStatusView(): ViewSpec;
38
+ /**
39
+ * A generic info view composed from content primitives — the pattern for
40
+ * rendering ANY non-event structured data (targets, identity, balances). Here:
41
+ * a heading, an aligned label→value list, and a status badge. Swap the rows for
42
+ * whatever the agent has in hand.
43
+ */
44
+ export declare function infoView(): ViewSpec;
32
45
  export interface ExampleView {
33
46
  name: string;
34
47
  description: string;
@@ -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,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,EAS1C,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,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"}