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.
Files changed (98) hide show
  1. package/local/apps/serverLifecycle/serverLifecycle-local.db-shm +0 -0
  2. package/local/apps/serverLifecycle/serverLifecycle-local_solid.db-shm +0 -0
  3. package/package.json +1 -5
  4. package/types/ui/Constant/Graph.d.ts +10 -0
  5. package/types/ui/Constant/index.d.ts +2 -1
  6. package/types/ui/Constant/schemaGraph.d.ts +39 -0
  7. package/types/ui/DraggableList.d.ts +1 -1
  8. package/types/ui/Layout/BottomTab.d.ts +3 -2
  9. package/types/ui/Loading/ProgressBar.d.ts +4 -0
  10. package/types/ui/Loading/Spin.d.ts +2 -1
  11. package/types/ui/Model/EditModal.d.ts +1 -1
  12. package/types/ui/Pagination.d.ts +2 -2
  13. package/types/ui/Radio.d.ts +1 -1
  14. package/types/ui/Reference/Collapse.d.ts +11 -0
  15. package/types/ui/Reference/Panel.d.ts +29 -0
  16. package/types/ui/Reference/Segmented.d.ts +17 -0
  17. package/types/ui/Reference/Summary.d.ts +13 -0
  18. package/types/ui/Reference/Toolbar.d.ts +21 -0
  19. package/types/ui/Reference/dictText.d.ts +6 -0
  20. package/types/ui/Reference/index.d.ts +7 -0
  21. package/types/ui/Reference/style.d.ts +20 -0
  22. package/types/ui/Reference.d.ts +1 -0
  23. package/types/ui/Signal/Doc.d.ts +3 -1
  24. package/types/ui/Signal/Object.d.ts +2 -1
  25. package/types/ui/Signal/RestApi.d.ts +2 -1
  26. package/types/ui/Signal/WebSocket.d.ts +2 -1
  27. package/types/ui/Signal/endpointEntries.d.ts +10 -0
  28. package/types/ui/Signal/style.d.ts +8 -10
  29. package/types/ui/System/Messages.d.ts +1 -1
  30. package/ui/Agent/Approval.tsx +1 -1
  31. package/ui/Agent/Bubble.tsx +3 -3
  32. package/ui/Agent/Chat.tsx +3 -3
  33. package/ui/Agent/Context.tsx +1 -1
  34. package/ui/Agent/Dock.tsx +1 -1
  35. package/ui/Agent/Markdown.tsx +2 -2
  36. package/ui/Agent/StateKey.tsx +3 -1
  37. package/ui/Agent/Tool.tsx +1 -1
  38. package/ui/Agent/Transcript.tsx +1 -1
  39. package/ui/BottomSheet.tsx +31 -35
  40. package/ui/Clipboard.tsx +3 -6
  41. package/ui/Constant/Doc.tsx +265 -254
  42. package/ui/Constant/Graph.tsx +151 -0
  43. package/ui/Constant/index.ts +3 -2
  44. package/ui/Constant/schemaGraph.ts +232 -0
  45. package/ui/Data/Item.tsx +1 -1
  46. package/ui/Data/ListContainer.tsx +2 -2
  47. package/ui/Dialog/Modal.tsx +48 -53
  48. package/ui/DraggableList.tsx +1 -1
  49. package/ui/Dropdown.tsx +1 -1
  50. package/ui/Empty.tsx +6 -4
  51. package/ui/Field.tsx +3 -3
  52. package/ui/Input.tsx +13 -4
  53. package/ui/Layout/BottomTab.tsx +32 -37
  54. package/ui/Layout/Sider.tsx +24 -13
  55. package/ui/Loading/Area.tsx +7 -6
  56. package/ui/Loading/Button.tsx +7 -9
  57. package/ui/Loading/Input.tsx +7 -9
  58. package/ui/Loading/ProgressBar.tsx +16 -7
  59. package/ui/Loading/Skeleton.tsx +8 -13
  60. package/ui/Loading/Spin.tsx +20 -14
  61. package/ui/Model/EditModal.tsx +2 -2
  62. package/ui/Model/index_.tsx +1 -1
  63. package/ui/Pagination.tsx +51 -66
  64. package/ui/Popconfirm.tsx +46 -54
  65. package/ui/Radio.tsx +53 -24
  66. package/ui/Reference/Collapse.tsx +26 -0
  67. package/ui/Reference/Panel.tsx +79 -0
  68. package/ui/Reference/Segmented.tsx +41 -0
  69. package/ui/Reference/Summary.tsx +25 -0
  70. package/ui/Reference/Toolbar.tsx +44 -0
  71. package/ui/Reference/dictText.ts +9 -0
  72. package/ui/Reference/index.ts +7 -0
  73. package/ui/Reference/style.ts +45 -0
  74. package/ui/Select.tsx +3 -3
  75. package/ui/Signal/Arg.tsx +50 -52
  76. package/ui/Signal/Doc.tsx +122 -102
  77. package/ui/Signal/Listener.tsx +24 -28
  78. package/ui/Signal/Message.tsx +86 -135
  79. package/ui/Signal/Object.tsx +79 -57
  80. package/ui/Signal/PubSub.tsx +71 -113
  81. package/ui/Signal/Request.tsx +2 -22
  82. package/ui/Signal/Response.tsx +19 -45
  83. package/ui/Signal/RestApi.tsx +163 -204
  84. package/ui/Signal/WebSocket.tsx +22 -26
  85. package/ui/Signal/endpointEntries.ts +29 -0
  86. package/ui/Signal/style.ts +34 -34
  87. package/ui/System/Messages.tsx +51 -30
  88. package/ui/System/Reconnect.tsx +22 -56
  89. package/ui/Tab/Menu.tsx +12 -5
  90. package/ui/Tab/Menus.tsx +6 -3
  91. package/ui/Table.tsx +65 -59
  92. package/ui/ToggleSelect.tsx +4 -6
  93. package/ui/Tooltip.tsx +15 -1
  94. package/ui/Unauthorized.tsx +6 -4
  95. package/types/ui/Constant/Mermaid.d.ts +0 -8
  96. package/types/ui/Signal/Collapse.d.ts +0 -12
  97. package/ui/Constant/Mermaid.tsx +0 -149
  98. package/ui/Signal/Collapse.tsx +0 -29
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "akanjs",
3
- "version": "3.0.0-alpha.28",
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
- Mermaid: ({ chart, title, className, highlightNodes, onSelectNode }: import("./Mermaid.d.ts").MermaidProps) => import("react/jsx-runtime").JSX.Element;
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
+ }
@@ -12,7 +12,7 @@ interface DragListProps<V> {
12
12
  }
13
13
  interface Cursor {
14
14
  className?: string;
15
- children: any;
15
+ children: ReactNode;
16
16
  }
17
17
  interface ItemProps {
18
18
  value: any;
@@ -1,7 +1,8 @@
1
+ import type { ReactNode } from "react";
1
2
  interface TabType {
2
3
  name: string;
3
- icon: React.ReactNode;
4
- activeIcon?: React.ReactNode;
4
+ icon: ReactNode;
5
+ activeIcon?: ReactNode;
5
6
  notiCount?: number;
6
7
  href: string;
7
8
  }
@@ -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: any;
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;
@@ -1,4 +1,4 @@
1
- import type { FC, ReactNode } from "react";
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: FC<PaginationProps>;
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}.
@@ -1,4 +1,4 @@
1
- import type { ReactElement, ReactNode } from "react";
1
+ import { type ReactElement, type ReactNode } from "react";
2
2
  export interface RadioProps {
3
3
  value: string | number | null;
4
4
  className?: string;
@@ -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,6 @@
1
+ interface Translator {
2
+ _: (key: string) => string;
3
+ }
4
+ /** `l._` echoes an absent key back, and a raw `user.signal.x.desc` reads as prose on a document surface. */
5
+ export declare const dictText: (l: Translator, key: string) => string;
6
+ 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";
@@ -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
- /** Writes carry the accent, reads do not so the two write types are named and everything else reads. */
12
- export declare const getEndpointBadgeClassName: (type: string) => string;
6
+ /** Only a mutation is a POSTenumerating 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 carries the accent; opted in and refused is outlined, because it is a thing to go fix. */
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/jsx-runtime").JSX.Element | null;
1
+ export declare const Messages: () => import("react").ReactPortal | null;
@@ -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">
@@ -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-error" : "text-success")}>
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-error">{result.error}</span> : null}
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-error text-xs">{message.error}</p> : null}
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-lg 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">
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"
@@ -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-foreground/10 bg-background/95 p-3 shadow-lg",
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
  >
@@ -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-base-content/10 border-b px-2 py-1 text-left", cellClass[idx])} key={idx}>
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-base-content/5 border-b px-2 py-1 text-left", cellClass[idx])} key={idx}>
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
  ))}
@@ -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">{shown}</pre>
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-error text-xs">{error}</p> : null}
69
+ {error ? <p className="text-destructive text-xs">{error}</p> : null}
70
70
  </div>
71
71
  </details>
72
72
  );
@@ -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-error">{call.error}</span> : null}
28
+ {call.error ? <span className="text-[10px] text-destructive">{call.error}</span> : null}
29
29
  </div>
30
30
  ))}
31
31
  </div>