@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.
- package/dist/app/index.html +86 -71
- package/dist/atoms/content.d.ts +6 -0
- package/dist/atoms/content.d.ts.map +1 -0
- package/dist/atoms/content.js +83 -0
- package/dist/atoms/content.js.map +1 -0
- package/dist/atoms/registry.d.ts.map +1 -1
- package/dist/atoms/registry.js +4 -0
- package/dist/atoms/registry.js.map +1 -1
- package/dist/atoms/social.d.ts.map +1 -1
- package/dist/atoms/social.js +43 -5
- package/dist/atoms/social.js.map +1 -1
- package/dist/atoms/status.d.ts +3 -0
- package/dist/atoms/status.d.ts.map +1 -0
- package/dist/atoms/status.js +83 -0
- package/dist/atoms/status.js.map +1 -0
- package/dist/atoms/types.d.ts +43 -3
- package/dist/atoms/types.d.ts.map +1 -1
- package/dist/catalog.d.ts.map +1 -1
- package/dist/catalog.js +52 -1
- package/dist/catalog.js.map +1 -1
- package/dist/examples.d.ts +13 -0
- package/dist/examples.d.ts.map +1 -1
- package/dist/examples.js +46 -0
- package/dist/examples.js.map +1 -1
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +12 -0
- package/dist/runtime.js.map +1 -1
- package/package.json +1 -1
|
@@ -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;
|
|
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"}
|
package/dist/atoms/registry.js
CHANGED
|
@@ -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":"
|
|
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"}
|
package/dist/atoms/social.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
{
|
|
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',
|
package/dist/atoms/social.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"social.js","sourceRoot":"","sources":["../../src/atoms/social.tsx"],"names":[],"mappings":";AAAA,2EAA2E;AAC3E,OAAO,
|
|
1
|
+
{"version":3,"file":"social.js","sourceRoot":"","sources":["../../src/atoms/social.tsx"],"names":[],"mappings":"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"}
|
|
@@ -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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"}
|
package/dist/atoms/types.d.ts
CHANGED
|
@@ -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`
|
|
33
|
-
* that show a fee (e.g. the pay-confirm receipt) read
|
|
34
|
-
*
|
|
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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/atoms/types.ts"],"names":[],"mappings":"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"}
|
package/dist/catalog.d.ts.map
CHANGED
|
@@ -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,
|
|
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
|
-
{
|
|
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
|
];
|
package/dist/catalog.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAkB/D,MAAM,CAAC,MAAM,YAAY,GAAe;IACtC,SAAS;IACT;QACE,EAAE,EAAE,OAAO;QACX,WAAW,EAAE,wDAAwD;QACrE,WAAW,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,EAAE,4BAA4B,EAAE;KAC/E;IACD,EAAE,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,yBAAyB,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;IAC3F,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,0BAA0B,EAAE;IACvD;QACE,EAAE,EAAE,MAAM;QACV,WAAW,EAAE,2EAA2E;QACxF,WAAW,EAAE,EAAE,MAAM,EAAE,sCAAsC,EAAE;KAChE;IAED,SAAS;IACT,EAAE,EAAE,EAAE,gBAAgB,EAAE,WAAW,EAAE,0DAA0D,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE;IAC7G,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"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"}
|
package/dist/examples.d.ts
CHANGED
|
@@ -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;
|
package/dist/examples.d.ts.map
CHANGED
|
@@ -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,
|
|
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"}
|