@codesweep-ai/ui 0.2.1-dev.20260830023458.856ea8f
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/LICENSE +202 -0
- package/NOTICE +2 -0
- package/README.md +124 -0
- package/dist/BUILD.json +1 -0
- package/dist/chart.d.ts +3 -0
- package/dist/chart.d.ts.map +1 -0
- package/dist/chart.js +3 -0
- package/dist/code.d.ts +2 -0
- package/dist/code.d.ts.map +1 -0
- package/dist/code.js +2 -0
- package/dist/components/AgentStatus.d.ts +15 -0
- package/dist/components/AgentStatus.d.ts.map +1 -0
- package/dist/components/AgentStatus.js +38 -0
- package/dist/components/AgentTrace.d.ts +42 -0
- package/dist/components/AgentTrace.d.ts.map +1 -0
- package/dist/components/AgentTrace.js +140 -0
- package/dist/components/AppShell.d.ts +29 -0
- package/dist/components/AppShell.d.ts.map +1 -0
- package/dist/components/AppShell.js +71 -0
- package/dist/components/Button.d.ts +10 -0
- package/dist/components/Button.d.ts.map +1 -0
- package/dist/components/Button.js +41 -0
- package/dist/components/Card.d.ts +19 -0
- package/dist/components/Card.d.ts.map +1 -0
- package/dist/components/Card.js +96 -0
- package/dist/components/CardGroup.d.ts +16 -0
- package/dist/components/CardGroup.d.ts.map +1 -0
- package/dist/components/CardGroup.js +33 -0
- package/dist/components/CardGroupContext.d.ts +14 -0
- package/dist/components/CardGroupContext.d.ts.map +1 -0
- package/dist/components/CardGroupContext.js +8 -0
- package/dist/components/ChartFrame.d.ts +30 -0
- package/dist/components/ChartFrame.d.ts.map +1 -0
- package/dist/components/ChartFrame.js +96 -0
- package/dist/components/ChartTooltip.d.ts +22 -0
- package/dist/components/ChartTooltip.d.ts.map +1 -0
- package/dist/components/ChartTooltip.js +26 -0
- package/dist/components/CheckboxGroup.d.ts +37 -0
- package/dist/components/CheckboxGroup.d.ts.map +1 -0
- package/dist/components/CheckboxGroup.js +198 -0
- package/dist/components/Chip.d.ts +9 -0
- package/dist/components/Chip.d.ts.map +1 -0
- package/dist/components/Chip.js +31 -0
- package/dist/components/CodeBlock.d.ts +30 -0
- package/dist/components/CodeBlock.d.ts.map +1 -0
- package/dist/components/CodeBlock.js +112 -0
- package/dist/components/Dropdown.d.ts +28 -0
- package/dist/components/Dropdown.d.ts.map +1 -0
- package/dist/components/Dropdown.js +50 -0
- package/dist/components/EventLanes.d.ts +93 -0
- package/dist/components/EventLanes.d.ts.map +1 -0
- package/dist/components/EventLanes.js +445 -0
- package/dist/components/FormGroup.d.ts +29 -0
- package/dist/components/FormGroup.d.ts.map +1 -0
- package/dist/components/FormGroup.js +48 -0
- package/dist/components/HighlightText.d.ts +15 -0
- package/dist/components/HighlightText.d.ts.map +1 -0
- package/dist/components/HighlightText.js +28 -0
- package/dist/components/Input.d.ts +35 -0
- package/dist/components/Input.d.ts.map +1 -0
- package/dist/components/Input.js +61 -0
- package/dist/components/Legend.d.ts +21 -0
- package/dist/components/Legend.d.ts.map +1 -0
- package/dist/components/Legend.js +61 -0
- package/dist/components/LightweightMarkdown.d.ts +3 -0
- package/dist/components/LightweightMarkdown.d.ts.map +1 -0
- package/dist/components/LightweightMarkdown.js +249 -0
- package/dist/components/MarkdownMinimap.d.ts +7 -0
- package/dist/components/MarkdownMinimap.d.ts.map +1 -0
- package/dist/components/MarkdownMinimap.js +84 -0
- package/dist/components/MarkdownViewer.d.ts +51 -0
- package/dist/components/MarkdownViewer.d.ts.map +1 -0
- package/dist/components/MarkdownViewer.js +455 -0
- package/dist/components/MermaidDiagram.d.ts +11 -0
- package/dist/components/MermaidDiagram.d.ts.map +1 -0
- package/dist/components/MermaidDiagram.js +119 -0
- package/dist/components/Modal.d.ts +13 -0
- package/dist/components/Modal.d.ts.map +1 -0
- package/dist/components/Modal.js +91 -0
- package/dist/components/Panel.d.ts +13 -0
- package/dist/components/Panel.d.ts.map +1 -0
- package/dist/components/Panel.js +44 -0
- package/dist/components/PulseBadge.d.ts +15 -0
- package/dist/components/PulseBadge.d.ts.map +1 -0
- package/dist/components/PulseBadge.js +22 -0
- package/dist/components/RadioGroup.d.ts +20 -0
- package/dist/components/RadioGroup.d.ts.map +1 -0
- package/dist/components/RadioGroup.js +63 -0
- package/dist/components/RichMarkdownRenderer.d.ts +10 -0
- package/dist/components/RichMarkdownRenderer.d.ts.map +1 -0
- package/dist/components/RichMarkdownRenderer.js +18 -0
- package/dist/components/SearchInput.d.ts +25 -0
- package/dist/components/SearchInput.d.ts.map +1 -0
- package/dist/components/SearchInput.js +92 -0
- package/dist/components/SectionedTree.d.ts +36 -0
- package/dist/components/SectionedTree.d.ts.map +1 -0
- package/dist/components/SectionedTree.js +173 -0
- package/dist/components/SegmentedControl.d.ts +16 -0
- package/dist/components/SegmentedControl.d.ts.map +1 -0
- package/dist/components/SegmentedControl.js +48 -0
- package/dist/components/Skeleton.d.ts +8 -0
- package/dist/components/Skeleton.d.ts.map +1 -0
- package/dist/components/Skeleton.js +25 -0
- package/dist/components/SplitPane.d.ts +16 -0
- package/dist/components/SplitPane.d.ts.map +1 -0
- package/dist/components/SplitPane.js +118 -0
- package/dist/components/StatusBadge.d.ts +15 -0
- package/dist/components/StatusBadge.d.ts.map +1 -0
- package/dist/components/StatusBadge.js +40 -0
- package/dist/components/StreamingText.d.ts +20 -0
- package/dist/components/StreamingText.d.ts.map +1 -0
- package/dist/components/StreamingText.js +50 -0
- package/dist/components/Table.d.ts +62 -0
- package/dist/components/Table.d.ts.map +1 -0
- package/dist/components/Table.js +256 -0
- package/dist/components/ThemeToggle.d.ts +11 -0
- package/dist/components/ThemeToggle.d.ts.map +1 -0
- package/dist/components/ThemeToggle.js +55 -0
- package/dist/components/Toast.d.ts +8 -0
- package/dist/components/Toast.d.ts.map +1 -0
- package/dist/components/Toast.js +51 -0
- package/dist/components/ToastContainer.d.ts +5 -0
- package/dist/components/ToastContainer.d.ts.map +1 -0
- package/dist/components/ToastContainer.js +29 -0
- package/dist/components/Tree.d.ts +50 -0
- package/dist/components/Tree.d.ts.map +1 -0
- package/dist/components/Tree.js +528 -0
- package/dist/components/TreeDnd.d.ts +18 -0
- package/dist/components/TreeDnd.d.ts.map +1 -0
- package/dist/components/TreeDnd.js +39 -0
- package/dist/index.d.ts +50 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +35 -0
- package/dist/lib/accentToken.d.ts +3 -0
- package/dist/lib/accentToken.d.ts.map +1 -0
- package/dist/lib/accentToken.js +12 -0
- package/dist/lib/chartTheme.d.ts +45 -0
- package/dist/lib/chartTheme.d.ts.map +1 -0
- package/dist/lib/chartTheme.js +64 -0
- package/dist/lib/cn.d.ts +6 -0
- package/dist/lib/cn.d.ts.map +1 -0
- package/dist/lib/cn.js +11 -0
- package/dist/lib/forwardRefToRoot.d.ts +8 -0
- package/dist/lib/forwardRefToRoot.d.ts.map +1 -0
- package/dist/lib/forwardRefToRoot.js +18 -0
- package/dist/lib/markdownUrl.d.ts +5 -0
- package/dist/lib/markdownUrl.d.ts.map +1 -0
- package/dist/lib/markdownUrl.js +24 -0
- package/dist/lib/toast.d.ts +30 -0
- package/dist/lib/toast.d.ts.map +1 -0
- package/dist/lib/toast.js +34 -0
- package/dist/lib/useTheme.d.ts +22 -0
- package/dist/lib/useTheme.d.ts.map +1 -0
- package/dist/lib/useTheme.js +62 -0
- package/dist/markdown/rich.d.ts +10 -0
- package/dist/markdown/rich.d.ts.map +1 -0
- package/dist/markdown/rich.js +8 -0
- package/dist/markdown.d.ts +3 -0
- package/dist/markdown.d.ts.map +1 -0
- package/dist/markdown.js +2 -0
- package/dist/mermaid.d.ts +2 -0
- package/dist/mermaid.d.ts.map +1 -0
- package/dist/mermaid.js +2 -0
- package/dist/minimap.d.ts +2 -0
- package/dist/minimap.d.ts.map +1 -0
- package/dist/minimap.js +2 -0
- package/dist/styles/base.css +98 -0
- package/dist/styles/components/agent-status.css +52 -0
- package/dist/styles/components/agent-trace.css +206 -0
- package/dist/styles/components/app-shell.css +195 -0
- package/dist/styles/components/button.css +172 -0
- package/dist/styles/components/card-group.css +20 -0
- package/dist/styles/components/card.css +200 -0
- package/dist/styles/components/chart-frame.css +144 -0
- package/dist/styles/components/chart-tooltip.css +54 -0
- package/dist/styles/components/checkbox-group.css +281 -0
- package/dist/styles/components/chip.css +61 -0
- package/dist/styles/components/code-block.css +215 -0
- package/dist/styles/components/dropdown.css +131 -0
- package/dist/styles/components/event-lanes.css +159 -0
- package/dist/styles/components/form-group.css +34 -0
- package/dist/styles/components/highlight-text.css +17 -0
- package/dist/styles/components/input.css +168 -0
- package/dist/styles/components/legend.css +80 -0
- package/dist/styles/components/markdown-minimap.css +13 -0
- package/dist/styles/components/markdown-viewer.css +354 -0
- package/dist/styles/components/mermaid-diagram.css +8 -0
- package/dist/styles/components/modal.css +167 -0
- package/dist/styles/components/panel.css +126 -0
- package/dist/styles/components/pulse-badge.css +56 -0
- package/dist/styles/components/radio-group.css +89 -0
- package/dist/styles/components/search-input.css +153 -0
- package/dist/styles/components/sectioned-tree.css +183 -0
- package/dist/styles/components/segmented-control.css +54 -0
- package/dist/styles/components/skeleton.css +21 -0
- package/dist/styles/components/split-pane.css +78 -0
- package/dist/styles/components/status-badge.css +94 -0
- package/dist/styles/components/streaming-text.css +38 -0
- package/dist/styles/components/table.css +235 -0
- package/dist/styles/components/theme-toggle.css +123 -0
- package/dist/styles/components/toast-container.css +34 -0
- package/dist/styles/components/toast.css +169 -0
- package/dist/styles/components/tree.css +375 -0
- package/dist/styles/components.css +37 -0
- package/dist/styles/core.css +3 -0
- package/dist/styles/markdown-content.css +368 -0
- package/dist/styles/print.css +55 -0
- package/dist/styles/reset.css +202 -0
- package/dist/styles/syntax.css +62 -0
- package/dist/styles/tokens.css +344 -0
- package/dist/styles/utilities.css +7 -0
- package/dist/testing/index.d.ts +39 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +119 -0
- package/package.json +138 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface SegmentedControlOption {
|
|
2
|
+
value: string;
|
|
3
|
+
label: React.ReactNode;
|
|
4
|
+
disabled?: boolean;
|
|
5
|
+
/** Accessible name for icon-only labels. */
|
|
6
|
+
ariaLabel?: string;
|
|
7
|
+
}
|
|
8
|
+
interface SegmentedControlProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onChange"> {
|
|
9
|
+
options: SegmentedControlOption[];
|
|
10
|
+
value: string;
|
|
11
|
+
onChange: (value: string) => void;
|
|
12
|
+
disabled?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare const SegmentedControl: import("react").ForwardRefExoticComponent<SegmentedControlProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=SegmentedControl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SegmentedControl.d.ts","sourceRoot":"","sources":["../../src/components/SegmentedControl.tsx"],"names":[],"mappings":"AAMA,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,qBAAsB,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IAC5F,OAAO,EAAE,sBAAsB,EAAE,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAuFD,eAAO,MAAM,gBAAgB,kHAAgF,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use client";
|
|
3
|
+
import { forwardRefToRoot as e } from "../lib/forwardRefToRoot.js";
|
|
4
|
+
import { cn as t } from "../lib/cn.js";
|
|
5
|
+
import { useRef as n } from "react";
|
|
6
|
+
import { jsx as r } from "react/jsx-runtime";
|
|
7
|
+
//#region src/components/SegmentedControl.tsx
|
|
8
|
+
function i({ options: e, value: i, onChange: a, disabled: o = !1, className: s, "aria-label": c = "Options", ...l }) {
|
|
9
|
+
if (e.length < 2 || e.length > 5) throw Error("SegmentedControl requires 2–5 options");
|
|
10
|
+
let u = n([]), d = e.map((e, t) => !o && !e.disabled ? t : -1).filter((e) => e >= 0), f = e.findIndex((e) => e.value === i), p = d.includes(f) ? f : d[0], m = (t) => {
|
|
11
|
+
u.current[t]?.focus(), a(e[t].value);
|
|
12
|
+
}, h = (e, t) => {
|
|
13
|
+
let n = d.indexOf(t);
|
|
14
|
+
if (n < 0 || d.length === 0) return;
|
|
15
|
+
let r;
|
|
16
|
+
e.key === "ArrowRight" || e.key === "ArrowDown" ? r = d[(n + 1) % d.length] : e.key === "ArrowLeft" || e.key === "ArrowUp" ? r = d[(n - 1 + d.length) % d.length] : e.key === "Home" ? r = d[0] : e.key === "End" && (r = d[d.length - 1]), r != null && (e.preventDefault(), m(r));
|
|
17
|
+
};
|
|
18
|
+
return /* @__PURE__ */ r("div", {
|
|
19
|
+
...l,
|
|
20
|
+
"data-component": "SegmentedControl",
|
|
21
|
+
role: "radiogroup",
|
|
22
|
+
"aria-label": c,
|
|
23
|
+
className: t("cs-component-segmented-control-1", s),
|
|
24
|
+
children: e.map((e, n) => {
|
|
25
|
+
let s = e.value === i, c = o || e.disabled;
|
|
26
|
+
return /* @__PURE__ */ r("button", {
|
|
27
|
+
"data-segmented-option": e.value,
|
|
28
|
+
"data-segmented-active": s ? "" : void 0,
|
|
29
|
+
ref: (e) => {
|
|
30
|
+
u.current[n] = e;
|
|
31
|
+
},
|
|
32
|
+
type: "button",
|
|
33
|
+
role: "radio",
|
|
34
|
+
"aria-checked": s,
|
|
35
|
+
"aria-label": e.ariaLabel,
|
|
36
|
+
disabled: c,
|
|
37
|
+
tabIndex: n === p ? 0 : -1,
|
|
38
|
+
onClick: () => a(e.value),
|
|
39
|
+
onKeyDown: (e) => h(e, n),
|
|
40
|
+
className: t("cs-component-segmented-control-2", s ? "cs-component-segmented-control-3" : "cs-component-segmented-control-4", c && "cs-component-segmented-control-5"),
|
|
41
|
+
children: e.label
|
|
42
|
+
}, e.value);
|
|
43
|
+
})
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
var a = e(i);
|
|
47
|
+
//#endregion
|
|
48
|
+
export { a as SegmentedControl };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface SkeletonProps {
|
|
2
|
+
width?: string | number;
|
|
3
|
+
height?: string | number;
|
|
4
|
+
variant?: "text" | "rect" | "circle";
|
|
5
|
+
className?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare const Skeleton: import("react").ForwardRefExoticComponent<SkeletonProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
8
|
+
//# sourceMappingURL=Skeleton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Skeleton.d.ts","sourceRoot":"","sources":["../../src/components/Skeleton.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAoCD,eAAO,MAAM,QAAQ,0GAAgE,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { forwardRefToRoot as e } from "../lib/forwardRefToRoot.js";
|
|
2
|
+
import { cn as t } from "../lib/cn.js";
|
|
3
|
+
import { jsx as n } from "react/jsx-runtime";
|
|
4
|
+
//#region src/components/Skeleton.tsx
|
|
5
|
+
function r(e) {
|
|
6
|
+
if (e != null) return typeof e == "number" ? `${e}px` : e;
|
|
7
|
+
}
|
|
8
|
+
function i({ width: e = "100%", height: i, variant: a = "text", className: o }) {
|
|
9
|
+
let s = i ?? (a === "text" ? "1em" : "100%"), c = a === "circle";
|
|
10
|
+
return /* @__PURE__ */ n("span", {
|
|
11
|
+
"data-component": "Skeleton",
|
|
12
|
+
role: "status",
|
|
13
|
+
"aria-busy": "true",
|
|
14
|
+
"aria-label": "Loading",
|
|
15
|
+
className: t("cs-skeleton", c && "cs-skeleton--circle", o),
|
|
16
|
+
style: {
|
|
17
|
+
width: r(e),
|
|
18
|
+
height: r(s),
|
|
19
|
+
borderRadius: c ? "50%" : a === "rect" ? "var(--radius-sm)" : "2px"
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
var a = e(i);
|
|
24
|
+
//#endregion
|
|
25
|
+
export { a as Skeleton };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
interface PaneConfig {
|
|
2
|
+
id: string;
|
|
3
|
+
children: React.ReactNode;
|
|
4
|
+
defaultWidth?: number;
|
|
5
|
+
minWidth?: number;
|
|
6
|
+
maxWidth?: number;
|
|
7
|
+
collapsed?: boolean;
|
|
8
|
+
storageKey?: string;
|
|
9
|
+
}
|
|
10
|
+
interface SplitPaneProps {
|
|
11
|
+
panes: PaneConfig[];
|
|
12
|
+
className?: string;
|
|
13
|
+
}
|
|
14
|
+
export declare const SplitPane: import("react").ForwardRefExoticComponent<SplitPaneProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=SplitPane.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SplitPane.d.ts","sourceRoot":"","sources":["../../src/components/SplitPane.tsx"],"names":[],"mappings":"AAOA,UAAU,UAAU;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,cAAc;IACtB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAgMD,eAAO,MAAM,SAAS,2GAAkE,CAAC"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use client";
|
|
3
|
+
import { forwardRefToRoot as e } from "../lib/forwardRefToRoot.js";
|
|
4
|
+
import { cn as t } from "../lib/cn.js";
|
|
5
|
+
import { useCallback as n, useEffect as r, useRef as i, useState as a } from "react";
|
|
6
|
+
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
7
|
+
//#region src/components/SplitPane.tsx
|
|
8
|
+
function c(e, t) {
|
|
9
|
+
if (!e) return t;
|
|
10
|
+
try {
|
|
11
|
+
let t = localStorage.getItem(e);
|
|
12
|
+
if (t) return parseInt(t, 10);
|
|
13
|
+
} catch {}
|
|
14
|
+
return t;
|
|
15
|
+
}
|
|
16
|
+
function l(e, t, n) {
|
|
17
|
+
let r = e.defaultWidth === void 0, i = r ? t : e, a = n[i.id] ?? i.defaultWidth ?? 200;
|
|
18
|
+
return {
|
|
19
|
+
paneId: i.id,
|
|
20
|
+
currentWidth: a,
|
|
21
|
+
min: i.minWidth ?? 120,
|
|
22
|
+
max: i.maxWidth ?? 500,
|
|
23
|
+
direction: r ? -1 : 1,
|
|
24
|
+
storageKey: i.storageKey
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
function u({ panes: e, className: u }) {
|
|
28
|
+
let [d, f] = a(() => {
|
|
29
|
+
let t = {};
|
|
30
|
+
return e.forEach((e) => {
|
|
31
|
+
e.defaultWidth !== void 0 && (t[e.id] = c(e.storageKey, e.defaultWidth));
|
|
32
|
+
}), t;
|
|
33
|
+
}), p = i(null), m = n((e, t, n) => {
|
|
34
|
+
e.preventDefault();
|
|
35
|
+
let { paneId: r, currentWidth: i, min: a, max: o, direction: s, storageKey: c } = l(t, n, d);
|
|
36
|
+
p.current = {
|
|
37
|
+
paneId: r,
|
|
38
|
+
startX: e.clientX,
|
|
39
|
+
startWidth: i,
|
|
40
|
+
min: a,
|
|
41
|
+
max: o,
|
|
42
|
+
direction: s,
|
|
43
|
+
storageKey: c
|
|
44
|
+
}, document.body.style.cursor = "col-resize", document.body.style.userSelect = "none";
|
|
45
|
+
}, [d]), h = n((e, t) => (n) => {
|
|
46
|
+
if (![
|
|
47
|
+
"ArrowLeft",
|
|
48
|
+
"ArrowRight",
|
|
49
|
+
"Home",
|
|
50
|
+
"End"
|
|
51
|
+
].includes(n.key)) return;
|
|
52
|
+
n.preventDefault();
|
|
53
|
+
let { paneId: r, currentWidth: i, min: a, max: o, direction: s } = l(e, t, d), c = i;
|
|
54
|
+
if (n.key === "ArrowRight" ? c = Math.min(o, i + 10 * s) : n.key === "ArrowLeft" ? c = Math.max(a, i - 10 * s) : n.key === "Home" ? c = a : n.key === "End" && (c = o), c !== i) {
|
|
55
|
+
f((e) => ({
|
|
56
|
+
...e,
|
|
57
|
+
[r]: c
|
|
58
|
+
}));
|
|
59
|
+
let n = e.defaultWidth === void 0 ? t.storageKey : e.storageKey;
|
|
60
|
+
if (n) try {
|
|
61
|
+
localStorage.setItem(n, String(c));
|
|
62
|
+
} catch {}
|
|
63
|
+
}
|
|
64
|
+
}, [d]);
|
|
65
|
+
return r(() => {
|
|
66
|
+
let e = (e) => {
|
|
67
|
+
if (!p.current) return;
|
|
68
|
+
let { paneId: t, startX: n, startWidth: r, min: i, max: a, direction: o } = p.current, s = (e.clientX - n) * o, c = Math.min(a, Math.max(i, r + s));
|
|
69
|
+
f((e) => ({
|
|
70
|
+
...e,
|
|
71
|
+
[t]: c
|
|
72
|
+
}));
|
|
73
|
+
}, t = () => {
|
|
74
|
+
if (!p.current) return;
|
|
75
|
+
let { paneId: e, storageKey: t } = p.current;
|
|
76
|
+
if (t) try {
|
|
77
|
+
localStorage.setItem(t, String(d[e]));
|
|
78
|
+
} catch {}
|
|
79
|
+
p.current = null, document.body.style.cursor = "", document.body.style.userSelect = "";
|
|
80
|
+
};
|
|
81
|
+
return window.addEventListener("pointermove", e), window.addEventListener("pointerup", t), () => {
|
|
82
|
+
window.removeEventListener("pointermove", e), window.removeEventListener("pointerup", t);
|
|
83
|
+
};
|
|
84
|
+
}, [d]), /* @__PURE__ */ o("div", {
|
|
85
|
+
"data-component": "SplitPane",
|
|
86
|
+
className: t("cs-component-split-pane-20 ", u),
|
|
87
|
+
children: e.map((n, r) => {
|
|
88
|
+
if (n.collapsed) return null;
|
|
89
|
+
let i = n.defaultWidth !== void 0, a = i ? d[n.id] ?? n.defaultWidth : void 0, c = r < e.length - 1 ? e[r + 1] : null, u = c && !c.collapsed, f = u ? l(n, c, d) : null;
|
|
90
|
+
return /* @__PURE__ */ s("div", {
|
|
91
|
+
className: "cs-component-split-pane-21",
|
|
92
|
+
children: [/* @__PURE__ */ o("div", {
|
|
93
|
+
className: t("cs-component-split-pane-22", !i && "cs-component-split-pane-23 "),
|
|
94
|
+
style: i ? {
|
|
95
|
+
width: `${a}px`,
|
|
96
|
+
flexShrink: 0
|
|
97
|
+
} : void 0,
|
|
98
|
+
children: n.children
|
|
99
|
+
}), u && f && /* @__PURE__ */ o("div", {
|
|
100
|
+
role: "separator",
|
|
101
|
+
"aria-orientation": "vertical",
|
|
102
|
+
"aria-valuenow": f.currentWidth,
|
|
103
|
+
"aria-valuemin": f.min,
|
|
104
|
+
"aria-valuemax": f.max,
|
|
105
|
+
"aria-label": `Resize ${f.paneId} pane`,
|
|
106
|
+
tabIndex: 0,
|
|
107
|
+
className: "cs-component-split-pane-30 ",
|
|
108
|
+
onPointerDown: (e) => m(e, n, c),
|
|
109
|
+
onKeyDown: h(n, c),
|
|
110
|
+
children: /* @__PURE__ */ o("div", { className: "cs-component-split-pane-31 " })
|
|
111
|
+
})]
|
|
112
|
+
}, n.id);
|
|
113
|
+
})
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
var d = e(u);
|
|
117
|
+
//#endregion
|
|
118
|
+
export { d as SplitPane };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
interface StatusBadgeProps {
|
|
2
|
+
label: string;
|
|
3
|
+
status: "success" | "info" | "warning" | "error" | "severe" | "neutral";
|
|
4
|
+
/** Override the leading dot colour with any CSS colour. */
|
|
5
|
+
color?: string;
|
|
6
|
+
size?: "sm" | "md" | "lg";
|
|
7
|
+
emphasis?: "default" | "ring" | "label";
|
|
8
|
+
/** Announce changing badge content through a polite live region. */
|
|
9
|
+
announce?: boolean;
|
|
10
|
+
full?: boolean;
|
|
11
|
+
className?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare const StatusBadge: import("react").ForwardRefExoticComponent<StatusBadgeProps & import("react").RefAttributes<HTMLSpanElement>>;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=StatusBadge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatusBadge.d.ts","sourceRoot":"","sources":["../../src/components/StatusBadge.tsx"],"names":[],"mappings":"AAGA,UAAU,gBAAgB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;IACxE,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;IACxC,oEAAoE;IACpE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA4DD,eAAO,MAAM,WAAW,8GAAuE,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { forwardRefToRoot as e } from "../lib/forwardRefToRoot.js";
|
|
2
|
+
import { cn as t } from "../lib/cn.js";
|
|
3
|
+
import { jsx as n, jsxs as r } from "react/jsx-runtime";
|
|
4
|
+
//#region src/components/StatusBadge.tsx
|
|
5
|
+
var i = {
|
|
6
|
+
success: "var(--color-success)",
|
|
7
|
+
warning: "var(--color-warning)",
|
|
8
|
+
error: "var(--color-error)",
|
|
9
|
+
neutral: "var(--color-neutral)",
|
|
10
|
+
info: "var(--color-info)",
|
|
11
|
+
severe: "var(--color-severe)"
|
|
12
|
+
}, a = {
|
|
13
|
+
error: "var(--color-error-text)",
|
|
14
|
+
severe: "var(--color-severe)"
|
|
15
|
+
};
|
|
16
|
+
function o({ label: e, status: o, full: s, className: c, color: l, size: u = "md", emphasis: d = "default", announce: f = !1 }) {
|
|
17
|
+
return /* @__PURE__ */ r("span", {
|
|
18
|
+
"data-component": "StatusBadge",
|
|
19
|
+
role: f ? "status" : "img",
|
|
20
|
+
"aria-live": f ? "polite" : void 0,
|
|
21
|
+
"aria-label": `${e}: ${o}`,
|
|
22
|
+
style: {
|
|
23
|
+
"--status-badge-color": l ?? i[o],
|
|
24
|
+
"--status-badge-label-color": a[o] ?? "var(--muted)"
|
|
25
|
+
},
|
|
26
|
+
className: t("cs-component-status-badge-15 ", "cs-component-status-badge-16 ", "cs-component-status-badge-17 ", s && "cs-component-status-badge-18", u === "sm" && "cs-component-status-badge-22", u === "lg" && "cs-component-status-badge-23", d === "ring" && "cs-component-status-badge-24", d === "label" && "cs-component-status-badge-25", c),
|
|
27
|
+
children: [/* @__PURE__ */ n("span", {
|
|
28
|
+
className: "cs-component-status-badge-19 ",
|
|
29
|
+
style: { backgroundColor: "var(--status-badge-color)" },
|
|
30
|
+
"aria-hidden": "true"
|
|
31
|
+
}), /* @__PURE__ */ n("span", {
|
|
32
|
+
"data-status-badge-label": "",
|
|
33
|
+
className: "text-label-upper cs-component-status-badge-21",
|
|
34
|
+
children: e
|
|
35
|
+
})]
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
var s = e(o);
|
|
39
|
+
//#endregion
|
|
40
|
+
export { s as StatusBadge };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
interface StreamingTextProps {
|
|
2
|
+
/** Full target string. The component reveals characters of this string over time. */
|
|
3
|
+
text: string;
|
|
4
|
+
/** Characters revealed per second. Default: 40 */
|
|
5
|
+
speed?: number;
|
|
6
|
+
/**
|
|
7
|
+
* When true, snap to full `text` and hide the cursor. Use when the upstream
|
|
8
|
+
* source is no longer producing new tokens. Default: false.
|
|
9
|
+
*/
|
|
10
|
+
done?: boolean;
|
|
11
|
+
/** Fires once after the last character is revealed. */
|
|
12
|
+
onDone?: () => void;
|
|
13
|
+
/** Disable cursor rendering even while streaming. Default: false. */
|
|
14
|
+
hideCursor?: boolean;
|
|
15
|
+
/** Additional className on the wrapper. */
|
|
16
|
+
className?: string;
|
|
17
|
+
}
|
|
18
|
+
export declare const StreamingText: import("react").ForwardRefExoticComponent<StreamingTextProps & import("react").RefAttributes<HTMLSpanElement>>;
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=StreamingText.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StreamingText.d.ts","sourceRoot":"","sources":["../../src/components/StreamingText.tsx"],"names":[],"mappings":"AAOA,UAAU,kBAAkB;IAC1B,qFAAqF;IACrF,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,qEAAqE;IACrE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA0FD,eAAO,MAAM,aAAa,gHAA2E,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use client";
|
|
3
|
+
import { forwardRefToRoot as e } from "../lib/forwardRefToRoot.js";
|
|
4
|
+
import { cn as t } from "../lib/cn.js";
|
|
5
|
+
import { useEffect as n, useRef as r, useState as i } from "react";
|
|
6
|
+
import { jsx as a, jsxs as o } from "react/jsx-runtime";
|
|
7
|
+
//#region src/components/StreamingText.tsx
|
|
8
|
+
var s = "(prefers-reduced-motion: reduce)";
|
|
9
|
+
function c() {
|
|
10
|
+
return typeof window > "u" || !window.matchMedia ? !1 : window.matchMedia(s).matches;
|
|
11
|
+
}
|
|
12
|
+
function l({ text: e, speed: s = 40, done: l = !1, onDone: u, hideCursor: d = !1, className: f }) {
|
|
13
|
+
let [p, m] = i(() => l || c() ? e.length : 0), h = r(u);
|
|
14
|
+
h.current = u;
|
|
15
|
+
let g = r(!1);
|
|
16
|
+
n(() => {
|
|
17
|
+
if (l || c()) {
|
|
18
|
+
m(e.length);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
if (m((t) => Math.min(t, e.length)), g.current = !1, s <= 0) {
|
|
22
|
+
m(e.length);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
let t = Math.max(8, Math.floor(1e3 / s)), n = setInterval(() => {
|
|
26
|
+
m((t) => t >= e.length ? (clearInterval(n), t) : t + 1);
|
|
27
|
+
}, t);
|
|
28
|
+
return () => clearInterval(n);
|
|
29
|
+
}, [
|
|
30
|
+
e,
|
|
31
|
+
s,
|
|
32
|
+
l
|
|
33
|
+
]), n(() => {
|
|
34
|
+
p >= e.length && !g.current && e.length > 0 && (g.current = !0, h.current?.());
|
|
35
|
+
}, [p, e.length]);
|
|
36
|
+
let _ = !l && p < e.length, v = !d && (_ || !l && e.length === 0);
|
|
37
|
+
return /* @__PURE__ */ o("span", {
|
|
38
|
+
"data-component": "StreamingText",
|
|
39
|
+
"data-streaming": _ ? "true" : "false",
|
|
40
|
+
className: t("cs-component-streaming-text-8 ", "cs-component-streaming-text-9 ", f),
|
|
41
|
+
children: [e.slice(0, p), v && /* @__PURE__ */ a("span", {
|
|
42
|
+
"aria-hidden": "true",
|
|
43
|
+
"data-testid": "streamingtext-cursor",
|
|
44
|
+
className: "cs-stream-cursor"
|
|
45
|
+
})]
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
var u = e(l);
|
|
49
|
+
//#endregion
|
|
50
|
+
export { u as StreamingText };
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { type ReactElement, type RefAttributes } from "react";
|
|
2
|
+
export interface TableColumn<T> {
|
|
3
|
+
id: string;
|
|
4
|
+
header: string;
|
|
5
|
+
cell: (row: T, filterQuery?: string) => React.ReactNode;
|
|
6
|
+
sortable?: boolean;
|
|
7
|
+
/** Keep this sortable column fixed to one direction when activated. */
|
|
8
|
+
sortDirection?: "asc" | "desc";
|
|
9
|
+
align?: "left" | "right" | "center";
|
|
10
|
+
/** Column width (any CSS value: "30%", "200px", "12rem"). Works best with fixed layout. */
|
|
11
|
+
width?: string;
|
|
12
|
+
/** Returns searchable plain text. If provided, column participates in filtering. */
|
|
13
|
+
searchValue?: (row: T) => string;
|
|
14
|
+
/** Allow text to wrap in this column. Default: false (single-line with ellipsis). */
|
|
15
|
+
wrap?: boolean;
|
|
16
|
+
}
|
|
17
|
+
interface TableProps<T> {
|
|
18
|
+
columns: TableColumn<T>[];
|
|
19
|
+
data: T[];
|
|
20
|
+
rowKey: (row: T) => string;
|
|
21
|
+
onSort?: (columnId: string, direction: "asc" | "desc") => void;
|
|
22
|
+
sort?: {
|
|
23
|
+
columnId: string;
|
|
24
|
+
direction: "asc" | "desc";
|
|
25
|
+
};
|
|
26
|
+
onRowClick?: (row: T) => void;
|
|
27
|
+
selectedKey?: string | null;
|
|
28
|
+
fixed?: boolean;
|
|
29
|
+
className?: string;
|
|
30
|
+
/** Show filter bar above the table. Needs at least one column with searchValue. */
|
|
31
|
+
filterable?: boolean;
|
|
32
|
+
/** Placeholder for the filter input. Default: "Filter..." */
|
|
33
|
+
filterPlaceholder?: string;
|
|
34
|
+
/** Controlled filter value. */
|
|
35
|
+
filter?: string;
|
|
36
|
+
onFilterChange?: (value: string) => void;
|
|
37
|
+
/** Rows per page. Omit = no pagination. */
|
|
38
|
+
pageSize?: number;
|
|
39
|
+
/** Controlled zero-based page index. */
|
|
40
|
+
page?: number;
|
|
41
|
+
onPageChange?: (page: number) => void;
|
|
42
|
+
/** Loading state: render skeleton rows instead of data. */
|
|
43
|
+
loading?: boolean;
|
|
44
|
+
/** Error state: when set, render the error block instead of rows. */
|
|
45
|
+
error?: Error | string | null;
|
|
46
|
+
/** Optional error message override (defaults to "Something went wrong"). */
|
|
47
|
+
errorMessage?: string;
|
|
48
|
+
/** Retry handler. When provided, renders a Retry button in the error state. */
|
|
49
|
+
onRetry?: () => void;
|
|
50
|
+
/** Empty state primary text. Default: "No results." */
|
|
51
|
+
emptyMessage?: string;
|
|
52
|
+
/** Empty state secondary text. */
|
|
53
|
+
emptyHint?: string;
|
|
54
|
+
/** Empty state CTA. */
|
|
55
|
+
emptyAction?: {
|
|
56
|
+
label: string;
|
|
57
|
+
onClick: () => void;
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
export declare const Table: <T>(props: TableProps<T> & RefAttributes<HTMLDivElement>) => ReactElement | null;
|
|
61
|
+
export {};
|
|
62
|
+
//# sourceMappingURL=Table.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../src/components/Table.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAqD,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAmBjH,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;IACxD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uEAAuE;IACvE,aAAa,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IACpC,2FAA2F;IAC3F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oFAAoF;IACpF,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC;IACjC,qFAAqF;IACrF,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,UAAU,UAAU,CAAC,CAAC;IACpB,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1B,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,GAAG,MAAM,KAAK,IAAI,CAAC;IAC/D,IAAI,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,KAAK,GAAG,MAAM,CAAA;KAAE,CAAC;IACvD,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mFAAmF;IACnF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,6DAA6D;IAC7D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,+BAA+B;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,2DAA2D;IAC3D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,qEAAqE;IACrE,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC;IAC9B,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,uDAAuD;IACvD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uBAAuB;IACvB,WAAW,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC;CACtD;AAobD,eAAO,MAAM,KAAK,EAAmB,CAAC,CAAC,EACrC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,cAAc,CAAC,KACjD,YAAY,GAAG,IAAI,CAAC"}
|