akanjs 3.0.0-alpha.28 → 3.0.0-alpha.29
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/local/apps/serverLifecycle/serverLifecycle-local.db-shm +0 -0
- package/local/apps/serverLifecycle/serverLifecycle-local_solid.db-shm +0 -0
- package/package.json +1 -5
- package/types/ui/Constant/Graph.d.ts +10 -0
- package/types/ui/Constant/index.d.ts +2 -1
- package/types/ui/Constant/schemaGraph.d.ts +39 -0
- package/types/ui/DraggableList.d.ts +1 -1
- package/types/ui/Layout/BottomTab.d.ts +3 -2
- package/types/ui/Loading/ProgressBar.d.ts +4 -0
- package/types/ui/Loading/Spin.d.ts +2 -1
- package/types/ui/Model/EditModal.d.ts +1 -1
- package/types/ui/Pagination.d.ts +2 -2
- package/types/ui/Radio.d.ts +1 -1
- package/types/ui/Reference/Collapse.d.ts +11 -0
- package/types/ui/Reference/Panel.d.ts +29 -0
- package/types/ui/Reference/Segmented.d.ts +17 -0
- package/types/ui/Reference/Summary.d.ts +13 -0
- package/types/ui/Reference/Toolbar.d.ts +21 -0
- package/types/ui/Reference/dictText.d.ts +6 -0
- package/types/ui/Reference/index.d.ts +7 -0
- package/types/ui/Reference/style.d.ts +20 -0
- package/types/ui/Reference.d.ts +1 -0
- package/types/ui/Signal/Doc.d.ts +3 -1
- package/types/ui/Signal/Object.d.ts +2 -1
- package/types/ui/Signal/RestApi.d.ts +2 -1
- package/types/ui/Signal/WebSocket.d.ts +2 -1
- package/types/ui/Signal/endpointEntries.d.ts +10 -0
- package/types/ui/Signal/style.d.ts +8 -10
- package/types/ui/System/Messages.d.ts +1 -1
- package/ui/Agent/Approval.tsx +1 -1
- package/ui/Agent/Bubble.tsx +3 -3
- package/ui/Agent/Chat.tsx +3 -3
- package/ui/Agent/Context.tsx +1 -1
- package/ui/Agent/Dock.tsx +1 -1
- package/ui/Agent/Markdown.tsx +2 -2
- package/ui/Agent/StateKey.tsx +3 -1
- package/ui/Agent/Tool.tsx +1 -1
- package/ui/Agent/Transcript.tsx +1 -1
- package/ui/BottomSheet.tsx +31 -35
- package/ui/Clipboard.tsx +3 -6
- package/ui/Constant/Doc.tsx +265 -254
- package/ui/Constant/Graph.tsx +151 -0
- package/ui/Constant/index.ts +3 -2
- package/ui/Constant/schemaGraph.ts +232 -0
- package/ui/Data/Item.tsx +1 -1
- package/ui/Data/ListContainer.tsx +2 -2
- package/ui/Dialog/Modal.tsx +48 -53
- package/ui/DraggableList.tsx +1 -1
- package/ui/Dropdown.tsx +1 -1
- package/ui/Empty.tsx +6 -4
- package/ui/Field.tsx +3 -3
- package/ui/Input.tsx +13 -4
- package/ui/Layout/BottomTab.tsx +32 -37
- package/ui/Layout/Sider.tsx +24 -13
- package/ui/Loading/Area.tsx +7 -6
- package/ui/Loading/Button.tsx +7 -9
- package/ui/Loading/Input.tsx +7 -9
- package/ui/Loading/ProgressBar.tsx +16 -7
- package/ui/Loading/Skeleton.tsx +8 -13
- package/ui/Loading/Spin.tsx +20 -14
- package/ui/Model/EditModal.tsx +2 -2
- package/ui/Model/index_.tsx +1 -1
- package/ui/Pagination.tsx +51 -66
- package/ui/Popconfirm.tsx +46 -54
- package/ui/Radio.tsx +53 -24
- package/ui/Reference/Collapse.tsx +26 -0
- package/ui/Reference/Panel.tsx +79 -0
- package/ui/Reference/Segmented.tsx +41 -0
- package/ui/Reference/Summary.tsx +25 -0
- package/ui/Reference/Toolbar.tsx +44 -0
- package/ui/Reference/dictText.ts +9 -0
- package/ui/Reference/index.ts +7 -0
- package/ui/Reference/style.ts +45 -0
- package/ui/Select.tsx +3 -3
- package/ui/Signal/Arg.tsx +50 -52
- package/ui/Signal/Doc.tsx +122 -102
- package/ui/Signal/Listener.tsx +24 -28
- package/ui/Signal/Message.tsx +86 -135
- package/ui/Signal/Object.tsx +79 -57
- package/ui/Signal/PubSub.tsx +71 -113
- package/ui/Signal/Request.tsx +2 -22
- package/ui/Signal/Response.tsx +19 -45
- package/ui/Signal/RestApi.tsx +163 -204
- package/ui/Signal/WebSocket.tsx +22 -26
- package/ui/Signal/endpointEntries.ts +29 -0
- package/ui/Signal/style.ts +34 -34
- package/ui/System/Messages.tsx +51 -30
- package/ui/System/Reconnect.tsx +22 -56
- package/ui/Tab/Menu.tsx +12 -5
- package/ui/Tab/Menus.tsx +6 -3
- package/ui/Table.tsx +65 -59
- package/ui/ToggleSelect.tsx +4 -6
- package/ui/Tooltip.tsx +15 -1
- package/ui/Unauthorized.tsx +6 -4
- package/types/ui/Constant/Mermaid.d.ts +0 -8
- package/types/ui/Signal/Collapse.d.ts +0 -12
- package/ui/Constant/Mermaid.tsx +0 -149
- package/ui/Signal/Collapse.tsx +0 -29
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "akanjs",
|
|
3
|
-
"version": "3.0.0-alpha.
|
|
3
|
+
"version": "3.0.0-alpha.29",
|
|
4
4
|
"sourceType": "module",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"publishConfig": {
|
|
@@ -213,7 +213,6 @@
|
|
|
213
213
|
"firebase": "^12.13.0",
|
|
214
214
|
"happy-dom": "^20.11.2",
|
|
215
215
|
"ioredis": "^5.10.1",
|
|
216
|
-
"mermaid": "^11.15.0",
|
|
217
216
|
"postgres": "^3.4.9",
|
|
218
217
|
"protobufjs": "^8.4.0",
|
|
219
218
|
"react": "19.2.7",
|
|
@@ -316,9 +315,6 @@
|
|
|
316
315
|
"ioredis": {
|
|
317
316
|
"optional": true
|
|
318
317
|
},
|
|
319
|
-
"mermaid": {
|
|
320
|
-
"optional": true
|
|
321
|
-
},
|
|
322
318
|
"postgres": {
|
|
323
319
|
"optional": true
|
|
324
320
|
},
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type SchemaGraphEdge, type SchemaGraphNode } from "./schemaGraph.d.ts";
|
|
2
|
+
export interface GraphProps {
|
|
3
|
+
className?: string;
|
|
4
|
+
title?: string;
|
|
5
|
+
nodes: SchemaGraphNode[];
|
|
6
|
+
edges: SchemaGraphEdge[];
|
|
7
|
+
selectedId?: string | null;
|
|
8
|
+
onSelect?: (nodeId: string) => void;
|
|
9
|
+
}
|
|
10
|
+
export declare const Graph: ({ className, title, nodes, edges, selectedId, onSelect }: GraphProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import Doc from "./Doc.d.ts";
|
|
2
2
|
export * from "./schemaDoc.d.ts";
|
|
3
|
+
export * from "./schemaGraph.d.ts";
|
|
3
4
|
export declare const Constant: {
|
|
4
5
|
Doc: typeof Doc;
|
|
5
|
-
|
|
6
|
+
Graph: ({ className, title, nodes, edges, selectedId, onSelect }: import("./Graph.d.ts").GraphProps) => import("react/jsx-runtime").JSX.Element;
|
|
6
7
|
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export type SchemaNodeKind = "database" | "scalar" | "external";
|
|
2
|
+
export interface SchemaGraphNode {
|
|
3
|
+
id: string;
|
|
4
|
+
refName: string;
|
|
5
|
+
title: string;
|
|
6
|
+
subtitle: string;
|
|
7
|
+
kind: SchemaNodeKind;
|
|
8
|
+
}
|
|
9
|
+
export interface SchemaGraphEdge {
|
|
10
|
+
from: string;
|
|
11
|
+
to: string;
|
|
12
|
+
label: string;
|
|
13
|
+
}
|
|
14
|
+
export interface PlacedNode extends SchemaGraphNode {
|
|
15
|
+
x: number;
|
|
16
|
+
y: number;
|
|
17
|
+
width: number;
|
|
18
|
+
height: number;
|
|
19
|
+
textX: number;
|
|
20
|
+
titleText: string;
|
|
21
|
+
subtitleText: string;
|
|
22
|
+
}
|
|
23
|
+
export interface PlacedEdge extends SchemaGraphEdge {
|
|
24
|
+
path: string;
|
|
25
|
+
labelX: number;
|
|
26
|
+
labelY: number;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Layered left-to-right placement (longest-path layering + barycenter ordering), the same shape a `flowchart LR`
|
|
30
|
+
* produces without the renderer. Pure geometry so it is unit-testable and runs identically on the server.
|
|
31
|
+
*/
|
|
32
|
+
export declare class SchemaGraphLayout {
|
|
33
|
+
#private;
|
|
34
|
+
readonly nodes: PlacedNode[];
|
|
35
|
+
readonly edges: PlacedEdge[];
|
|
36
|
+
readonly width: number;
|
|
37
|
+
readonly height: number;
|
|
38
|
+
constructor(nodes: SchemaGraphNode[], edges: SchemaGraphEdge[]);
|
|
39
|
+
}
|
|
@@ -3,4 +3,8 @@ export interface ProgressBarProps {
|
|
|
3
3
|
value: number;
|
|
4
4
|
max: number;
|
|
5
5
|
}
|
|
6
|
+
/**
|
|
7
|
+
* A div track rather than a native `<progress>`. `accent-color` themes only the fill; the track keeps the UA
|
|
8
|
+
* grey, which reads as a light bar on a dark theme, and no browser applies the element's radius to the fill.
|
|
9
|
+
*/
|
|
6
10
|
export declare const ProgressBar: ({ className, value, max }: ProgressBarProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -3,5 +3,6 @@ export interface SpinProps {
|
|
|
3
3
|
indicator?: ReactNode;
|
|
4
4
|
isCenter?: boolean;
|
|
5
5
|
className?: string;
|
|
6
|
+
size?: "sm" | "md" | "lg";
|
|
6
7
|
}
|
|
7
|
-
export declare const Spin: ({ indicator, isCenter, className }: SpinProps) => import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export declare const Spin: ({ indicator, isCenter, className, size }: SpinProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -14,7 +14,7 @@ interface EditModelProps<Full> {
|
|
|
14
14
|
edit?: ClientEdit<string, Full> | Partial<Full>;
|
|
15
15
|
/** Store modal name that should activate this editor. */
|
|
16
16
|
modal?: string;
|
|
17
|
-
children:
|
|
17
|
+
children: ReactNode;
|
|
18
18
|
/** Custom loading overlay wrapper, or false to disable the default overlay. */
|
|
19
19
|
loadingWrapper?: boolean | ((props: {
|
|
20
20
|
children?: any;
|
package/types/ui/Pagination.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
2
|
export interface PaginationProps {
|
|
3
3
|
/** Current 1-based page number. */
|
|
4
4
|
currentPage: number;
|
|
@@ -17,7 +17,7 @@ export interface PaginationProps {
|
|
|
17
17
|
pageNumClassName?: string;
|
|
18
18
|
};
|
|
19
19
|
}
|
|
20
|
-
export declare const DefaultPagination:
|
|
20
|
+
export declare const DefaultPagination: ({ currentPage, total, onPageSelect, itemsPerPage, renderEmpty, classNames, }: PaginationProps) => import("react/jsx-runtime").JSX.Element | null;
|
|
21
21
|
/**
|
|
22
22
|
* Pager. Resolves to a route-scoped override when a `page/**\/_overrides.tsx` in
|
|
23
23
|
* the route's ancestry declares one, otherwise renders {@link DefaultPagination}.
|
package/types/ui/Radio.d.ts
CHANGED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
interface CollapseProps {
|
|
3
|
+
className?: string;
|
|
4
|
+
contentClassName?: string;
|
|
5
|
+
summary: ReactNode;
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
open?: boolean;
|
|
8
|
+
}
|
|
9
|
+
/** 레퍼런스 카드의 접이식 컨테이너. daisyui `collapse` 대신 네이티브 `<details>/<summary>` — 열고 닫는 데 JS 가 없다. */
|
|
10
|
+
export declare const Collapse: ({ summary, children, open, className, contentClassName }: CollapseProps) => import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { ReactNode, RefObject } from "react";
|
|
2
|
+
import { docBorder } from "./style.d.ts";
|
|
3
|
+
interface PanelProps {
|
|
4
|
+
className?: string;
|
|
5
|
+
bodyClassName?: string;
|
|
6
|
+
label?: string;
|
|
7
|
+
meta?: ReactNode;
|
|
8
|
+
tone?: Parameters<typeof docBorder>[0];
|
|
9
|
+
/** Rendered outside the scrolling body so it can cover the whole panel. */
|
|
10
|
+
overlay?: ReactNode;
|
|
11
|
+
children: ReactNode;
|
|
12
|
+
}
|
|
13
|
+
export declare const Panel: ({ className, bodyClassName, label, meta, tone, overlay, children }: PanelProps) => import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
interface CodeProps {
|
|
15
|
+
className?: string;
|
|
16
|
+
label?: string;
|
|
17
|
+
code: string;
|
|
18
|
+
tone?: PanelProps["tone"];
|
|
19
|
+
meta?: ReactNode;
|
|
20
|
+
placeholder?: string;
|
|
21
|
+
bodyRef?: RefObject<HTMLPreElement | null>;
|
|
22
|
+
overlay?: ReactNode;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Read-only code surface. A `<pre>` rather than a `<textarea>`: every one of these panels ignored what was typed
|
|
26
|
+
* into it, so the caret and the resize grip were promising an edit that never landed anywhere.
|
|
27
|
+
*/
|
|
28
|
+
export declare const Code: ({ className, label, code, tone, meta, placeholder, bodyRef, overlay }: CodeProps) => import("react/jsx-runtime").JSX.Element;
|
|
29
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
export interface SegmentedItem<Key extends string> {
|
|
3
|
+
key: Key;
|
|
4
|
+
label: ReactNode;
|
|
5
|
+
icon?: ReactNode;
|
|
6
|
+
}
|
|
7
|
+
interface SegmentedProps<Key extends string> {
|
|
8
|
+
className?: string;
|
|
9
|
+
items: readonly SegmentedItem<Key>[];
|
|
10
|
+
value: Key;
|
|
11
|
+
onChange: (value: Key) => void;
|
|
12
|
+
}
|
|
13
|
+
/** The track and its items are also the shape of a multi-select chip group, which `Segmented` itself cannot be. */
|
|
14
|
+
export declare const segmentTrackClass = "inline-flex w-fit flex-wrap gap-1 rounded-field bg-muted p-1";
|
|
15
|
+
export declare const segmentItemClass: (active: boolean) => string;
|
|
16
|
+
export declare const Segmented: <Key extends string>({ className, items, value, onChange }: SegmentedProps<Key>) => import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
interface SummaryCardProps {
|
|
3
|
+
className?: string;
|
|
4
|
+
label: string;
|
|
5
|
+
value: number | string;
|
|
6
|
+
}
|
|
7
|
+
export declare const SummaryCard: ({ className, label, value }: SummaryCardProps) => import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
interface SummaryGridProps {
|
|
9
|
+
className?: string;
|
|
10
|
+
children: ReactNode;
|
|
11
|
+
}
|
|
12
|
+
export declare const SummaryGrid: ({ className, children }: SummaryGridProps) => import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
interface ToolbarProps {
|
|
3
|
+
className?: string;
|
|
4
|
+
children: ReactNode;
|
|
5
|
+
}
|
|
6
|
+
export declare const Toolbar: ({ className, children }: ToolbarProps) => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
interface ToolbarFieldProps {
|
|
8
|
+
className?: string;
|
|
9
|
+
label: string;
|
|
10
|
+
children: ReactNode;
|
|
11
|
+
}
|
|
12
|
+
export declare const ToolbarField: ({ className, label, children }: ToolbarFieldProps) => import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
interface SectionProps {
|
|
14
|
+
className?: string;
|
|
15
|
+
title: string;
|
|
16
|
+
action?: ReactNode;
|
|
17
|
+
children: ReactNode;
|
|
18
|
+
}
|
|
19
|
+
/** Titled band with a rule running to the edge, so a long document reads as sections rather than as one list. */
|
|
20
|
+
export declare const Section: ({ className, title, action, children }: SectionProps) => import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { Collapse } from "./Collapse.d.ts";
|
|
2
|
+
export { dictText } from "./dictText.d.ts";
|
|
3
|
+
export { Code, Panel } from "./Panel.d.ts";
|
|
4
|
+
export { Segmented, type SegmentedItem, segmentItemClass, segmentTrackClass } from "./Segmented.d.ts";
|
|
5
|
+
export { SummaryCard, SummaryGrid } from "./Summary.d.ts";
|
|
6
|
+
export { docDash, docPill, docUi, type Tone } from "./style.d.ts";
|
|
7
|
+
export { Section, Toolbar, ToolbarField } from "./Toolbar.d.ts";
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export type Tone = "info" | "success" | "warning" | "error" | "muted";
|
|
2
|
+
/** Shared vocabulary for the generated reference surfaces — Constant schema docs and Signal API docs. */
|
|
3
|
+
export declare const docUi: {
|
|
4
|
+
card: string;
|
|
5
|
+
panel: string;
|
|
6
|
+
tablePanel: string;
|
|
7
|
+
sectionLabel: string;
|
|
8
|
+
sectionTitle: string;
|
|
9
|
+
pageTitle: string;
|
|
10
|
+
sectionDescription: string;
|
|
11
|
+
prose: string;
|
|
12
|
+
key: string;
|
|
13
|
+
subLabel: string;
|
|
14
|
+
tableClass: string;
|
|
15
|
+
emptyPanel: string;
|
|
16
|
+
};
|
|
17
|
+
export declare const docPill: (tone: Tone, className?: string) => string;
|
|
18
|
+
export declare const docBorder: (tone: Tone) => string;
|
|
19
|
+
/** Absent optional cell. One glyph everywhere, so an empty column reads as empty rather than as data. */
|
|
20
|
+
export declare const docDash = "text-foreground/25";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./Reference/index.d.ts";
|
package/types/ui/Signal/Doc.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { type FetchProxy } from "akanjs/fetch";
|
|
|
2
2
|
import { type ReactNode } from "react";
|
|
3
3
|
declare function Doc(): import("react/jsx-runtime").JSX.Element;
|
|
4
4
|
declare namespace Doc {
|
|
5
|
-
var Setting: ({ guardNames, roleTypes, roleKeys, }: DocSettingProps) => import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
var Setting: ({ guardNames, roleTypes, roleKeys, search, onSearch, }: DocSettingProps) => import("react/jsx-runtime").JSX.Element;
|
|
6
6
|
var AuthModal: ({ children }: DocAuthModalProps) => import("react/jsx-runtime").JSX.Element;
|
|
7
7
|
var DocSignals: ({ fetch }: DocSignalsProps) => import("react/jsx-runtime").JSX.Element;
|
|
8
8
|
var DocSignal: ({ refName, fetch }: DocSignalProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -15,6 +15,8 @@ interface DocSettingProps {
|
|
|
15
15
|
roleKeys?: {
|
|
16
16
|
[key: string]: string;
|
|
17
17
|
};
|
|
18
|
+
search?: string;
|
|
19
|
+
onSearch?: (search: string) => void;
|
|
18
20
|
}
|
|
19
21
|
interface DocAuthModalProps {
|
|
20
22
|
children: ReactNode;
|
|
@@ -3,7 +3,7 @@ import { type ConstantCls } from "akanjs/constant";
|
|
|
3
3
|
declare function Object(): import("react/jsx-runtime").JSX.Element;
|
|
4
4
|
declare namespace Object {
|
|
5
5
|
var Type: ({ objRef, arrDepth, nullable }: ObjectTypeProps) => import("react/jsx-runtime").JSX.Element;
|
|
6
|
-
var Detail: ({ objRef }: ObjectDetailProps) => import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
var Detail: ({ className, objRef }: ObjectDetailProps) => import("react/jsx-runtime").JSX.Element;
|
|
7
7
|
var Schema: ({ objRef }: ObjectSchemaProps) => import("react/jsx-runtime").JSX.Element;
|
|
8
8
|
}
|
|
9
9
|
export default Object;
|
|
@@ -13,6 +13,7 @@ interface ObjectTypeProps {
|
|
|
13
13
|
nullable?: boolean;
|
|
14
14
|
}
|
|
15
15
|
interface ObjectDetailProps {
|
|
16
|
+
className?: string;
|
|
16
17
|
objRef: ConstantCls;
|
|
17
18
|
}
|
|
18
19
|
interface ObjectSchemaProps {
|
|
@@ -2,7 +2,7 @@ import { type FetchProxy } from "akanjs/fetch";
|
|
|
2
2
|
import type { SerializedEndpoint } from "akanjs/signal";
|
|
3
3
|
declare function RestApi(): import("react/jsx-runtime").JSX.Element;
|
|
4
4
|
declare namespace RestApi {
|
|
5
|
-
var Endpoints: ({ refName, fetch, prefix, endpoints, openAll, httpUri }: RestApiEndpointsProps) => import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
var Endpoints: ({ refName, fetch, prefix, endpoints, openAll, httpUri, search }: RestApiEndpointsProps) => import("react/jsx-runtime").JSX.Element;
|
|
6
6
|
var Endpoint: ({ refName, fetch, signalPrefix, endpointKey, endpoint, open, httpUri, }: RestApiEndpointProps) => import("react/jsx-runtime").JSX.Element;
|
|
7
7
|
var Interface: ({ refName, endpointKey, endpoint }: RestApiInterfaceProps) => import("react/jsx-runtime").JSX.Element;
|
|
8
8
|
var Try: ({ signalPrefix, refName, endpointKey, endpoint, fetch, httpUri }: RestApiTryProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -15,6 +15,7 @@ interface RestApiEndpointsProps {
|
|
|
15
15
|
endpoints?: string[];
|
|
16
16
|
openAll?: boolean;
|
|
17
17
|
httpUri?: string;
|
|
18
|
+
search?: string;
|
|
18
19
|
}
|
|
19
20
|
interface RestApiEndpointProps {
|
|
20
21
|
refName: string;
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import type { FetchProxy } from "akanjs/fetch";
|
|
2
2
|
declare function WebSocket(): import("react/jsx-runtime").JSX.Element;
|
|
3
3
|
declare namespace WebSocket {
|
|
4
|
-
var Endpoints: ({ refName, fetch, openAll }: WebSocketEndpointsProps) => import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
var Endpoints: ({ refName, fetch, openAll, search }: WebSocketEndpointsProps) => import("react/jsx-runtime").JSX.Element;
|
|
5
5
|
}
|
|
6
6
|
export default WebSocket;
|
|
7
7
|
interface WebSocketEndpointsProps {
|
|
8
8
|
refName: string;
|
|
9
9
|
fetch: FetchProxy;
|
|
10
10
|
openAll?: boolean;
|
|
11
|
+
search?: string;
|
|
11
12
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type FetchProxy } from "akanjs/fetch";
|
|
2
|
+
import type { SerializedEndpoint } from "akanjs/signal";
|
|
3
|
+
export interface EndpointEntry {
|
|
4
|
+
key: string;
|
|
5
|
+
endpoint: SerializedEndpoint;
|
|
6
|
+
}
|
|
7
|
+
export declare const isWsEndpoint: (endpoint: SerializedEndpoint) => boolean;
|
|
8
|
+
/** Generated CRUD, slice reads, and hand-written endpoints in one list — what the summary counts and the list share. */
|
|
9
|
+
export declare const endpointEntriesOf: (refName: string, fetch: FetchProxy) => EndpointEntry[];
|
|
10
|
+
export declare const matchesSearch: (key: string, path: string, search: string) => boolean;
|
|
@@ -1,17 +1,15 @@
|
|
|
1
|
+
import { type Tone } from "../Reference.d.ts";
|
|
1
2
|
export declare const signalUi: {
|
|
2
|
-
sectionTitle: string;
|
|
3
|
-
sectionDescription: string;
|
|
4
|
-
sectionPanel: string;
|
|
5
|
-
tablePanel: string;
|
|
6
|
-
tableClass: string;
|
|
7
3
|
inputRow: string;
|
|
8
4
|
inputLabel: string;
|
|
9
|
-
codePanel: string;
|
|
10
5
|
};
|
|
11
|
-
/**
|
|
12
|
-
|
|
6
|
+
/** Only a mutation is a POST — enumerating that side leaves a `prompt` a GET beside the queries, and lets a
|
|
7
|
+
* read-shaped type added later inherit the right verb rather than be mislabelled. */
|
|
8
|
+
export declare const getMethodLabel: (type: string) => string;
|
|
9
|
+
export declare const getMethodBadgeClassName: (type: string) => string;
|
|
10
|
+
export declare const getWsBadgeClassName: (type: string) => string;
|
|
13
11
|
export declare const getGuardBadgeClassName: (guard: string) => string;
|
|
14
|
-
/** Published to agents
|
|
12
|
+
/** Published to agents is quiet; refused is amber, because it is a thing to go fix. */
|
|
15
13
|
export declare const getMcpBadgeClassName: (exposed: boolean) => string;
|
|
14
|
+
export declare const getStatusTone: (status: string) => Tone;
|
|
16
15
|
export declare const getStatusBadgeClassName: (status: string) => string;
|
|
17
|
-
export declare const getStatusTextareaClassName: (status: string) => "" | "border-primary" | "pointer-events-none opacity-50" | "border-destructive text-destructive";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const Messages: () => import("react
|
|
1
|
+
export declare const Messages: () => import("react").ReactPortal | null;
|
package/ui/Agent/Approval.tsx
CHANGED
|
@@ -13,7 +13,7 @@ export default function Approval({ className, approval }: ApprovalProps) {
|
|
|
13
13
|
return (
|
|
14
14
|
<div className={cn("flex flex-col gap-2 border-warning/30 border-t bg-warning/10 px-4 py-3", className)}>
|
|
15
15
|
<p className="text-sm">{approval.message}</p>
|
|
16
|
-
<pre className="max-h-24 overflow-auto rounded-field bg-background/60 p-2 font-mono text-[10px]">
|
|
16
|
+
<pre className="scrollbar-thin max-h-24 overflow-auto rounded-field bg-background/60 p-2 font-mono text-[10px]">
|
|
17
17
|
{JSON.stringify(approval.args, null, 2)}
|
|
18
18
|
</pre>
|
|
19
19
|
<div className="flex justify-end gap-2">
|
package/ui/Agent/Bubble.tsx
CHANGED
|
@@ -24,7 +24,7 @@ interface RowProps {
|
|
|
24
24
|
const Row = ({ name, args, result }: RowProps) => (
|
|
25
25
|
<div className="flex items-baseline gap-2 rounded-field bg-muted px-2 py-1">
|
|
26
26
|
{result ? (
|
|
27
|
-
<span className={cn("shrink-0 text-[10px]", result.error ? "text-
|
|
27
|
+
<span className={cn("shrink-0 text-[10px]", result.error ? "text-destructive" : "text-success")}>
|
|
28
28
|
{result.error ? "✕" : "✓"}
|
|
29
29
|
</span>
|
|
30
30
|
) : (
|
|
@@ -34,7 +34,7 @@ const Row = ({ name, args, result }: RowProps) => (
|
|
|
34
34
|
{args && Object.keys(args).length ? (
|
|
35
35
|
<span className="truncate font-mono text-[10px] text-foreground/50">{JSON.stringify(args)}</span>
|
|
36
36
|
) : null}
|
|
37
|
-
{result?.error ? <span className="truncate text-[10px] text-
|
|
37
|
+
{result?.error ? <span className="truncate text-[10px] text-destructive">{result.error}</span> : null}
|
|
38
38
|
{result?.changes?.length ? (
|
|
39
39
|
<span className="ml-auto shrink-0 text-[10px] text-foreground/40">Δ {result.changes.length}</span>
|
|
40
40
|
) : null}
|
|
@@ -68,7 +68,7 @@ export default function Bubble({ className, message, results }: BubbleProps) {
|
|
|
68
68
|
{(message.toolCalls ?? []).map((call) => (
|
|
69
69
|
<Row key={call.id} args={call.args} name={call.name} result={results?.get(call.id)} />
|
|
70
70
|
))}
|
|
71
|
-
{message.error ? <p className="text-
|
|
71
|
+
{message.error ? <p className="text-destructive text-xs">{message.error}</p> : null}
|
|
72
72
|
{isDrafting ? <span className="size-2 animate-pulse rounded-full bg-foreground/30" /> : null}
|
|
73
73
|
</div>
|
|
74
74
|
);
|
package/ui/Agent/Chat.tsx
CHANGED
|
@@ -155,7 +155,7 @@ export const DefaultChat = ({
|
|
|
155
155
|
type="button"
|
|
156
156
|
>
|
|
157
157
|
{hotkey ? (
|
|
158
|
-
<kbd className="pointer-events-none absolute right-full mr-3 hidden rounded-
|
|
158
|
+
<kbd className="pointer-events-none absolute right-full mr-3 hidden rounded-field border border-border bg-background px-2 py-0.5 font-mono text-foreground/50 text-xs opacity-0 shadow-sm group-hover/agent:opacity-100 group-focus-visible/agent:opacity-100 md:block">
|
|
159
159
|
{hotkey.label}
|
|
160
160
|
</kbd>
|
|
161
161
|
) : null}
|
|
@@ -206,7 +206,7 @@ export const DefaultChat = ({
|
|
|
206
206
|
</button>
|
|
207
207
|
</span>
|
|
208
208
|
</header>
|
|
209
|
-
<div className="flex flex-1 flex-col gap-2 overflow-y-auto px-4 py-3" ref={listRef}>
|
|
209
|
+
<div className="scrollbar-thin flex flex-1 flex-col gap-2 overflow-y-auto px-4 py-3" ref={listRef}>
|
|
210
210
|
{bubbles.length ? (
|
|
211
211
|
bubbles
|
|
212
212
|
) : (
|
|
@@ -215,7 +215,7 @@ export const DefaultChat = ({
|
|
|
215
215
|
</div>
|
|
216
216
|
{session.pendingApproval ? <Approval approval={session.pendingApproval} /> : null}
|
|
217
217
|
{menu.length ? (
|
|
218
|
-
<div className="flex max-h-40 flex-col overflow-y-auto border-foreground/5 border-t py-1">
|
|
218
|
+
<div className="scrollbar-thin flex max-h-40 flex-col overflow-y-auto border-foreground/5 border-t py-1">
|
|
219
219
|
{menu.map((prompt) => (
|
|
220
220
|
<button
|
|
221
221
|
className="flex items-baseline gap-2 px-4 py-1.5 text-left hover:bg-muted"
|
package/ui/Agent/Context.tsx
CHANGED
|
@@ -29,7 +29,7 @@ export default function Context({ className }: ContextProps) {
|
|
|
29
29
|
Assemble
|
|
30
30
|
</button>
|
|
31
31
|
{shown ? (
|
|
32
|
-
<pre className="mt-2 max-h-60 overflow-auto rounded-field bg-background/60 p-2 text-[10px] leading-tight">
|
|
32
|
+
<pre className="scrollbar-thin mt-2 max-h-60 overflow-auto rounded-field bg-background/60 p-2 text-[10px] leading-tight">
|
|
33
33
|
{shown}
|
|
34
34
|
</pre>
|
|
35
35
|
) : null}
|
package/ui/Agent/Dock.tsx
CHANGED
|
@@ -41,7 +41,7 @@ export const Dock = ({ className, bridge, surface, open = false }: DockProps) =>
|
|
|
41
41
|
<aside
|
|
42
42
|
data-agent-ui=""
|
|
43
43
|
className={cn(
|
|
44
|
-
"fixed right-4 bottom-4 z-50 flex max-h-[70vh] w-80 flex-col gap-2 overflow-y-auto rounded-box border border-
|
|
44
|
+
"scrollbar-thin fixed right-4 bottom-4 z-50 flex max-h-[70vh] w-80 flex-col gap-2 overflow-y-auto rounded-box border border-border bg-background/95 p-3 shadow-lg",
|
|
45
45
|
className,
|
|
46
46
|
)}
|
|
47
47
|
>
|
package/ui/Agent/Markdown.tsx
CHANGED
|
@@ -53,7 +53,7 @@ const Table = ({ block }: TableProps) => {
|
|
|
53
53
|
<thead>
|
|
54
54
|
<tr className="bg-muted/40">
|
|
55
55
|
{block.head.map((cell, idx) => (
|
|
56
|
-
<th className={cn("border-
|
|
56
|
+
<th className={cn("border-border border-b px-2 py-1 text-left", cellClass[idx])} key={idx}>
|
|
57
57
|
{spans(cell)}
|
|
58
58
|
</th>
|
|
59
59
|
))}
|
|
@@ -63,7 +63,7 @@ const Table = ({ block }: TableProps) => {
|
|
|
63
63
|
{block.rows.map((row, rowIdx) => (
|
|
64
64
|
<tr key={rowIdx}>
|
|
65
65
|
{row.map((cell, idx) => (
|
|
66
|
-
<td className={cn("border-
|
|
66
|
+
<td className={cn("border-border/60 border-b px-2 py-1 text-left", cellClass[idx])} key={idx}>
|
|
67
67
|
{spans(cell)}
|
|
68
68
|
</td>
|
|
69
69
|
))}
|
package/ui/Agent/StateKey.tsx
CHANGED
|
@@ -37,7 +37,9 @@ export default function StateKey({ className, bridge, name, entry, live }: State
|
|
|
37
37
|
</span>
|
|
38
38
|
</button>
|
|
39
39
|
{shown ? (
|
|
40
|
-
<pre className="max-h-40 overflow-auto rounded-field bg-muted p-2 text-[10px] leading-tight">
|
|
40
|
+
<pre className="scrollbar-thin max-h-40 overflow-auto rounded-field bg-muted p-2 text-[10px] leading-tight">
|
|
41
|
+
{shown}
|
|
42
|
+
</pre>
|
|
41
43
|
) : null}
|
|
42
44
|
</div>
|
|
43
45
|
);
|
package/ui/Agent/Tool.tsx
CHANGED
|
@@ -66,7 +66,7 @@ export default function Tool({ className, surface, tool, onRun }: ToolProps) {
|
|
|
66
66
|
<button className={buttonRecipe({ size: "xs" })} onClick={run} type="button">
|
|
67
67
|
Run
|
|
68
68
|
</button>
|
|
69
|
-
{error ? <p className="text-
|
|
69
|
+
{error ? <p className="text-destructive text-xs">{error}</p> : null}
|
|
70
70
|
</div>
|
|
71
71
|
</details>
|
|
72
72
|
);
|
package/ui/Agent/Transcript.tsx
CHANGED
|
@@ -25,7 +25,7 @@ export default function Transcript({ className, calls }: TranscriptProps) {
|
|
|
25
25
|
</span>
|
|
26
26
|
</div>
|
|
27
27
|
<span className="truncate font-mono text-[10px] text-foreground/50">{JSON.stringify(call.args)}</span>
|
|
28
|
-
{call.error ? <span className="text-[10px] text-
|
|
28
|
+
{call.error ? <span className="text-[10px] text-destructive">{call.error}</span> : null}
|
|
29
29
|
</div>
|
|
30
30
|
))}
|
|
31
31
|
</div>
|