@mastra/playground-ui 51.1.0 → 51.2.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +66 -0
- package/dist/components/Comment.cjs.js +170 -0
- package/dist/components/Comment.cjs.js.map +1 -0
- package/dist/components/Comment.d.ts +2 -0
- package/dist/components/Comment.es.js +156 -0
- package/dist/components/Comment.es.js.map +1 -0
- package/dist/components/DataList.cjs.js +9 -9
- package/dist/components/DataList.cjs.js.map +1 -1
- package/dist/components/DataList.es.js +9 -9
- package/dist/components/DataList.es.js.map +1 -1
- package/dist/components/DateTimePicker.cjs.js +1 -1
- package/dist/components/DateTimePicker.es.js +1 -1
- package/dist/components/EnvironmentVariablesEditor.cjs.js +6 -6
- package/dist/components/EnvironmentVariablesEditor.cjs.js.map +1 -1
- package/dist/components/EnvironmentVariablesEditor.es.js +6 -6
- package/dist/components/EnvironmentVariablesEditor.es.js.map +1 -1
- package/dist/components/FormFieldBlocks.cjs.js +1 -1
- package/dist/components/FormFieldBlocks.es.js +1 -1
- package/dist/components/JSONSchemaForm.cjs.js +1 -1
- package/dist/components/JSONSchemaForm.es.js +1 -1
- package/dist/components/LogsDataList.cjs.js +2 -3
- package/dist/components/LogsDataList.cjs.js.map +1 -1
- package/dist/components/LogsDataList.es.js +2 -3
- package/dist/components/LogsDataList.es.js.map +1 -1
- package/dist/components/SettingsRow.cjs.js +35 -14
- package/dist/components/SettingsRow.cjs.js.map +1 -1
- package/dist/components/SettingsRow.es.js +35 -14
- package/dist/components/SettingsRow.es.js.map +1 -1
- package/dist/{data-list-CfsEAR2E.js → data-list-BOI8fRuk.js} +7 -9
- package/dist/data-list-BOI8fRuk.js.map +1 -0
- package/dist/{data-list-BK_lJxMN.cjs → data-list-CCacNODd.cjs} +7 -9
- package/dist/data-list-CCacNODd.cjs.map +1 -0
- package/dist/{data-list-skeleton-dVbplSiW.cjs → data-list-skeleton-BHBSIQHN.cjs} +8 -4
- package/dist/data-list-skeleton-BHBSIQHN.cjs.map +1 -0
- package/dist/{data-list-skeleton-DQp3KwVO.js → data-list-skeleton-DDO_OE14.js} +8 -4
- package/dist/data-list-skeleton-DDO_OE14.js.map +1 -0
- package/dist/{data-list-top-cell-DyBSefIr.cjs → data-list-top-cell-BOXO5s7I.cjs} +55 -104
- package/dist/data-list-top-cell-BOXO5s7I.cjs.map +1 -0
- package/dist/{data-list-top-cell-DZiX9cTb.js → data-list-top-cell-CC5jjv5s.js} +54 -104
- package/dist/data-list-top-cell-CC5jjv5s.js.map +1 -0
- package/dist/domains/logs/components/logs-list-view.cjs.js +2 -2
- package/dist/domains/logs/components/logs-list-view.es.js +2 -2
- package/dist/domains/metrics/components/memory-card-view.cjs.js +3 -3
- package/dist/domains/metrics/components/memory-card-view.cjs.js.map +1 -1
- package/dist/domains/metrics/components/memory-card-view.es.js +3 -3
- package/dist/domains/metrics/components/memory-card-view.es.js.map +1 -1
- package/dist/domains/metrics/components/model-usage-cost-card-view.cjs.js +2 -2
- package/dist/domains/metrics/components/model-usage-cost-card-view.cjs.js.map +1 -1
- package/dist/domains/metrics/components/model-usage-cost-card-view.es.js +2 -2
- package/dist/domains/metrics/components/model-usage-cost-card-view.es.js.map +1 -1
- package/dist/domains/metrics/components/scores-card-view.cjs.js +2 -2
- package/dist/domains/metrics/components/scores-card-view.cjs.js.map +1 -1
- package/dist/domains/metrics/components/scores-card-view.es.js +2 -2
- package/dist/domains/metrics/components/scores-card-view.es.js.map +1 -1
- package/dist/domains/traces/components/traces-list-view.cjs.js +4 -4
- package/dist/domains/traces/components/traces-list-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-list-view.es.js +4 -4
- package/dist/domains/traces/components/traces-list-view.es.js.map +1 -1
- package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +1 -1
- package/dist/ee/topics/components/topic-trace-summary-list.es.js +1 -1
- package/dist/{logs-data-list-COfm0LbS.js → logs-data-list-DRXJ89IZ.js} +7 -7
- package/dist/logs-data-list-DRXJ89IZ.js.map +1 -0
- package/dist/{logs-data-list-CEPdgKxp.cjs → logs-data-list-Xayqbjw4.cjs} +7 -7
- package/dist/logs-data-list-Xayqbjw4.cjs.map +1 -0
- package/dist/metrics-kpi-card-AhIw9eyu.js.map +1 -1
- package/dist/metrics-kpi-card-tAReOFYk.cjs.map +1 -1
- package/dist/src/ds/components/Comment/comment-composer.d.ts +12 -0
- package/dist/src/ds/components/Comment/comment-context.d.ts +3 -0
- package/dist/src/ds/components/Comment/comment.d.ts +21 -0
- package/dist/src/ds/components/Comment/comment.stories.d.ts +10 -0
- package/dist/src/ds/components/Comment/index.d.ts +5 -0
- package/dist/src/ds/components/DataList/data-list-cells.d.ts +16 -18
- package/dist/src/ds/components/DataList/data-list-root.d.ts +6 -7
- package/dist/src/ds/components/DataList/data-list-row-link.d.ts +1 -1
- package/dist/src/ds/components/DataList/data-list-row-wrapper.d.ts +2 -2
- package/dist/src/ds/components/DataList/data-list.d.ts +2 -2
- package/dist/src/ds/components/DataList/data-list.stories.d.ts +1 -1
- package/dist/src/ds/components/DataList/shared.d.ts +18 -18
- package/dist/src/ds/components/MetricsKpiCard/metrics-kpi-card-value.d.ts +2 -1
- package/dist/src/ds/components/SettingsRow/settings-row.d.ts +8 -3
- package/dist/src/ds/components/SettingsRow/settings-row.stories.d.ts +1 -0
- package/dist/style.css +58 -232
- package/dist/{text-field-block-BGlwSFYC.cjs → text-field-block-B4CvIwKh.cjs} +2 -1
- package/dist/text-field-block-B4CvIwKh.cjs.map +1 -0
- package/dist/{text-field-block-DOiM0dpY.js → text-field-block-Ddl2tJ6D.js} +2 -1
- package/dist/{text-field-block-DOiM0dpY.js.map → text-field-block-Ddl2tJ6D.js.map} +1 -1
- package/dist/{traces-data-list-CyaLRi1n.cjs → traces-data-list-BLZgf-Es.cjs} +7 -7
- package/dist/traces-data-list-BLZgf-Es.cjs.map +1 -0
- package/dist/{traces-data-list-BURMAmFH.js → traces-data-list-DmXGwe4Q.js} +7 -7
- package/dist/traces-data-list-DmXGwe4Q.js.map +1 -0
- package/package.json +7 -7
- package/theme.css +7 -0
- package/dist/data-list-BK_lJxMN.cjs.map +0 -1
- package/dist/data-list-CfsEAR2E.js.map +0 -1
- package/dist/data-list-skeleton-DQp3KwVO.js.map +0 -1
- package/dist/data-list-skeleton-dVbplSiW.cjs.map +0 -1
- package/dist/data-list-top-cell-DZiX9cTb.js.map +0 -1
- package/dist/data-list-top-cell-DyBSefIr.cjs.map +0 -1
- package/dist/logs-data-list-CEPdgKxp.cjs.map +0 -1
- package/dist/logs-data-list-COfm0LbS.js.map +0 -1
- package/dist/text-field-block-BGlwSFYC.cjs.map +0 -1
- package/dist/traces-data-list-BURMAmFH.js.map +0 -1
- package/dist/traces-data-list-CyaLRi1n.cjs.map +0 -1
|
@@ -3,7 +3,7 @@ import { SearchIcon } from 'lucide-react';
|
|
|
3
3
|
import { useState, useMemo } from 'react';
|
|
4
4
|
import { getVisibleTraceSummaries } from '../utils.es.js';
|
|
5
5
|
import { B as Button } from '../../../Button-vr_I4iME.js';
|
|
6
|
-
import { D as DataList } from '../../../data-list-
|
|
6
|
+
import { D as DataList } from '../../../data-list-BOI8fRuk.js';
|
|
7
7
|
import { u as useDataListKeyboard } from '../../../use-data-list-keyboard-BzZmvqE_.js';
|
|
8
8
|
import { I as InputGroup, a as InputGroupAddon, c as InputGroupInput } from '../../../input-group-U2f3A4Ya.js';
|
|
9
9
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as DataListCell, b as
|
|
1
|
+
import { a as DataListCell, b as DataListTextCell, D as DataListRoot, c as DataListNextPageLoading, e as DataListTimeCell, f as DataListDateCell, g as DataListNoMatch, h as DataListSpacer, i as DataListRowLink, j as DataListRowButton, k as DataListRowWrapper, l as DataListTopCellSmart, m as DataListTopCellWithTooltip, n as DataListTopCell, o as DataListTop } from './data-list-top-cell-CC5jjv5s.js';
|
|
2
2
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
3
3
|
import { AgentIcon } from './icons/AgentIcon.es.js';
|
|
4
4
|
import { ToolsIcon } from './icons/ToolsIcon.es.js';
|
|
@@ -14,7 +14,7 @@ const LEVEL_CONFIG = {
|
|
|
14
14
|
};
|
|
15
15
|
function LogsDataListLevelCell({ level }) {
|
|
16
16
|
const config = LEVEL_CONFIG[level];
|
|
17
|
-
return /* @__PURE__ */ jsx(DataListCell, {
|
|
17
|
+
return /* @__PURE__ */ jsx(DataListCell, { children: /* @__PURE__ */ jsx("span", { className: "text-ui-sm font-semibold uppercase", style: { color: config.color }, children: config.label }) });
|
|
18
18
|
}
|
|
19
19
|
function EntityTypeIcon({ entityType, className }) {
|
|
20
20
|
const iconClass = cn("size-3.5 shrink-0 text-neutral2", className);
|
|
@@ -33,17 +33,17 @@ function EntityTypeIcon({ entityType, className }) {
|
|
|
33
33
|
}
|
|
34
34
|
function LogsDataListEntityCell({ entityType, entityName }) {
|
|
35
35
|
const type = entityType ?? "";
|
|
36
|
-
return /* @__PURE__ */ jsxs(DataListCell, {
|
|
36
|
+
return /* @__PURE__ */ jsxs(DataListCell, { className: "flex min-w-0 items-center gap-2", children: [
|
|
37
37
|
/* @__PURE__ */ jsx(EntityTypeIcon, { entityType: type }),
|
|
38
38
|
entityName ? /* @__PURE__ */ jsx("span", { className: "text-ui-smd min-w-0 truncate", children: entityName }) : "-"
|
|
39
39
|
] });
|
|
40
40
|
}
|
|
41
41
|
function LogsDataListMessageCell({ message }) {
|
|
42
|
-
return /* @__PURE__ */ jsx(DataListCell, {
|
|
42
|
+
return /* @__PURE__ */ jsx(DataListCell, { className: "text-ui-smd text-neutral4 min-w-0 truncate font-mono", children: message });
|
|
43
43
|
}
|
|
44
44
|
function LogsDataListDataCell({ data }) {
|
|
45
45
|
if (!data || Object.keys(data).length === 0) {
|
|
46
|
-
return /* @__PURE__ */ jsx(DataListCell, {
|
|
46
|
+
return /* @__PURE__ */ jsx(DataListCell, { children: null });
|
|
47
47
|
}
|
|
48
48
|
const summary = Object.entries(data).map(([k, v]) => {
|
|
49
49
|
if (typeof v === "string") return `${k}: ${v}`;
|
|
@@ -53,7 +53,7 @@ function LogsDataListDataCell({ data }) {
|
|
|
53
53
|
return `${k}: <unserializable>`;
|
|
54
54
|
}
|
|
55
55
|
}).join(", ");
|
|
56
|
-
return /* @__PURE__ */ jsx(
|
|
56
|
+
return /* @__PURE__ */ jsx(DataListTextCell, { font: "mono", children: summary });
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
const LogsDataList = Object.assign(DataListRoot, {
|
|
@@ -76,4 +76,4 @@ const LogsDataList = Object.assign(DataListRoot, {
|
|
|
76
76
|
});
|
|
77
77
|
|
|
78
78
|
export { LogsDataList as L };
|
|
79
|
-
//# sourceMappingURL=logs-data-list-
|
|
79
|
+
//# sourceMappingURL=logs-data-list-DRXJ89IZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs-data-list-DRXJ89IZ.js","sources":["../src/ds/components/LogsDataList/logs-data-list-cells.tsx","../src/ds/components/LogsDataList/logs-data-list.tsx"],"sourcesContent":["import { DataListCell, DataListTextCell } from '../DataList/data-list-cells';\ntype LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'fatal';\nimport { AgentIcon } from '@/ds/icons/AgentIcon';\nimport { ToolsIcon } from '@/ds/icons/ToolsIcon';\nimport { WorkflowIcon } from '@/ds/icons/WorkflowIcon';\nimport { cn } from '@/lib/utils';\n\nconst LEVEL_CONFIG: Record<LogLevel, { label: string; color: string }> = {\n debug: { label: 'DEBUG', color: '#71717a' },\n info: { label: 'INFO', color: '#60a5fa' },\n warn: { label: 'WARN', color: '#facc15' },\n error: { label: 'ERROR', color: '#f87171' },\n fatal: { label: 'FATAL', color: '#dc2626' },\n};\n\n// ---------------------------------------------------------------------------\n// LevelCell\n// ---------------------------------------------------------------------------\n\nexport interface LogsDataListLevelCellProps {\n level: LogLevel;\n}\n\nexport function LogsDataListLevelCell({ level }: LogsDataListLevelCellProps) {\n const config = LEVEL_CONFIG[level];\n\n return (\n <DataListCell>\n <span className=\"text-ui-sm font-semibold uppercase\" style={{ color: config.color }}>\n {config.label}\n </span>\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// EntityCell\n// ---------------------------------------------------------------------------\n\nfunction EntityTypeIcon({ entityType, className }: { entityType: string; className?: string }) {\n const iconClass = cn('size-3.5 shrink-0 text-neutral2', className);\n const normalizedEntityType = entityType.toLowerCase();\n\n switch (normalizedEntityType) {\n case 'agent':\n return <AgentIcon className={iconClass} aria-hidden />;\n case 'workflow':\n case 'workflow_run':\n return <WorkflowIcon className={iconClass} aria-hidden />;\n case 'tool':\n return <ToolsIcon className={iconClass} aria-hidden />;\n default:\n return null;\n }\n}\n\nexport interface LogsDataListEntityCellProps {\n entityType?: string | null;\n entityName?: string | null;\n}\n\nexport function LogsDataListEntityCell({ entityType, entityName }: LogsDataListEntityCellProps) {\n const type = entityType ?? '';\n\n return (\n <DataListCell className=\"flex min-w-0 items-center gap-2\">\n <EntityTypeIcon entityType={type} />\n {entityName ? <span className=\"text-ui-smd min-w-0 truncate\">{entityName}</span> : '-'}\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// MessageCell\n// ---------------------------------------------------------------------------\n\nexport interface LogsDataListMessageCellProps {\n message: string;\n}\n\nexport function LogsDataListMessageCell({ message }: LogsDataListMessageCellProps) {\n return <DataListCell className=\"text-ui-smd text-neutral4 min-w-0 truncate font-mono\">{message}</DataListCell>;\n}\n\n// ---------------------------------------------------------------------------\n// DataCell\n// ---------------------------------------------------------------------------\n\nexport interface LogsDataListDataCellProps {\n data?: Record<string, unknown> | null;\n}\n\nexport function LogsDataListDataCell({ data }: LogsDataListDataCellProps) {\n if (!data || Object.keys(data).length === 0) {\n return <DataListCell>{null}</DataListCell>;\n }\n\n const summary = Object.entries(data)\n .map(([k, v]) => {\n if (typeof v === 'string') return `${k}: ${v}`;\n try {\n return `${k}: ${JSON.stringify(v)}`;\n } catch {\n return `${k}: <unserializable>`;\n }\n })\n .join(', ');\n\n return <DataListTextCell font=\"mono\">{summary}</DataListTextCell>;\n}\n","import { DataListDateCell, DataListTimeCell } from '../DataList/data-list-cells';\nimport { DataListNextPageLoading } from '../DataList/data-list-next-page-loading';\nimport { DataListNoMatch } from '../DataList/data-list-no-match';\nimport { DataListRoot } from '../DataList/data-list-root';\nimport { DataListRowButton } from '../DataList/data-list-row-button';\nimport { DataListRowLink } from '../DataList/data-list-row-link';\nimport { DataListRowWrapper } from '../DataList/data-list-row-wrapper';\nimport { DataListSpacer } from '../DataList/data-list-spacer';\nimport { DataListTop } from '../DataList/data-list-top';\nimport { DataListTopCell, DataListTopCellWithTooltip, DataListTopCellSmart } from '../DataList/data-list-top-cell';\nimport {\n LogsDataListLevelCell,\n LogsDataListEntityCell,\n LogsDataListMessageCell,\n LogsDataListDataCell,\n} from './logs-data-list-cells';\n\nexport const LogsDataList = Object.assign(DataListRoot, {\n Top: DataListTop,\n TopCell: DataListTopCell,\n TopCellWithTooltip: DataListTopCellWithTooltip,\n TopCellSmart: DataListTopCellSmart,\n RowWrapper: DataListRowWrapper,\n RowButton: DataListRowButton,\n RowLink: DataListRowLink,\n Spacer: DataListSpacer,\n NoMatch: DataListNoMatch,\n DateCell: DataListDateCell,\n TimeCell: DataListTimeCell,\n LevelCell: LogsDataListLevelCell,\n EntityCell: LogsDataListEntityCell,\n MessageCell: LogsDataListMessageCell,\n DataCell: LogsDataListDataCell,\n NextPageLoading: DataListNextPageLoading,\n});\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
const dataListTopCell = require('./data-list-top-cell-
|
|
3
|
+
const dataListTopCell = require('./data-list-top-cell-BOXO5s7I.cjs');
|
|
4
4
|
const jsxRuntime = require('react/jsx-runtime');
|
|
5
5
|
const icons_AgentIcon = require('./icons/AgentIcon.cjs.js');
|
|
6
6
|
const icons_ToolsIcon = require('./icons/ToolsIcon.cjs.js');
|
|
@@ -16,7 +16,7 @@ const LEVEL_CONFIG = {
|
|
|
16
16
|
};
|
|
17
17
|
function LogsDataListLevelCell({ level }) {
|
|
18
18
|
const config = LEVEL_CONFIG[level];
|
|
19
|
-
return /* @__PURE__ */ jsxRuntime.jsx(dataListTopCell.DataListCell, {
|
|
19
|
+
return /* @__PURE__ */ jsxRuntime.jsx(dataListTopCell.DataListCell, { children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-ui-sm font-semibold uppercase", style: { color: config.color }, children: config.label }) });
|
|
20
20
|
}
|
|
21
21
|
function EntityTypeIcon({ entityType, className }) {
|
|
22
22
|
const iconClass = utils_cn.cn("size-3.5 shrink-0 text-neutral2", className);
|
|
@@ -35,17 +35,17 @@ function EntityTypeIcon({ entityType, className }) {
|
|
|
35
35
|
}
|
|
36
36
|
function LogsDataListEntityCell({ entityType, entityName }) {
|
|
37
37
|
const type = entityType ?? "";
|
|
38
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(dataListTopCell.DataListCell, {
|
|
38
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(dataListTopCell.DataListCell, { className: "flex min-w-0 items-center gap-2", children: [
|
|
39
39
|
/* @__PURE__ */ jsxRuntime.jsx(EntityTypeIcon, { entityType: type }),
|
|
40
40
|
entityName ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-ui-smd min-w-0 truncate", children: entityName }) : "-"
|
|
41
41
|
] });
|
|
42
42
|
}
|
|
43
43
|
function LogsDataListMessageCell({ message }) {
|
|
44
|
-
return /* @__PURE__ */ jsxRuntime.jsx(dataListTopCell.DataListCell, {
|
|
44
|
+
return /* @__PURE__ */ jsxRuntime.jsx(dataListTopCell.DataListCell, { className: "text-ui-smd text-neutral4 min-w-0 truncate font-mono", children: message });
|
|
45
45
|
}
|
|
46
46
|
function LogsDataListDataCell({ data }) {
|
|
47
47
|
if (!data || Object.keys(data).length === 0) {
|
|
48
|
-
return /* @__PURE__ */ jsxRuntime.jsx(dataListTopCell.DataListCell, {
|
|
48
|
+
return /* @__PURE__ */ jsxRuntime.jsx(dataListTopCell.DataListCell, { children: null });
|
|
49
49
|
}
|
|
50
50
|
const summary = Object.entries(data).map(([k, v]) => {
|
|
51
51
|
if (typeof v === "string") return `${k}: ${v}`;
|
|
@@ -55,7 +55,7 @@ function LogsDataListDataCell({ data }) {
|
|
|
55
55
|
return `${k}: <unserializable>`;
|
|
56
56
|
}
|
|
57
57
|
}).join(", ");
|
|
58
|
-
return /* @__PURE__ */ jsxRuntime.jsx(dataListTopCell.
|
|
58
|
+
return /* @__PURE__ */ jsxRuntime.jsx(dataListTopCell.DataListTextCell, { font: "mono", children: summary });
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
const LogsDataList = Object.assign(dataListTopCell.DataListRoot, {
|
|
@@ -78,4 +78,4 @@ const LogsDataList = Object.assign(dataListTopCell.DataListRoot, {
|
|
|
78
78
|
});
|
|
79
79
|
|
|
80
80
|
exports.LogsDataList = LogsDataList;
|
|
81
|
-
//# sourceMappingURL=logs-data-list-
|
|
81
|
+
//# sourceMappingURL=logs-data-list-Xayqbjw4.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs-data-list-Xayqbjw4.cjs","sources":["../src/ds/components/LogsDataList/logs-data-list-cells.tsx","../src/ds/components/LogsDataList/logs-data-list.tsx"],"sourcesContent":["import { DataListCell, DataListTextCell } from '../DataList/data-list-cells';\ntype LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'fatal';\nimport { AgentIcon } from '@/ds/icons/AgentIcon';\nimport { ToolsIcon } from '@/ds/icons/ToolsIcon';\nimport { WorkflowIcon } from '@/ds/icons/WorkflowIcon';\nimport { cn } from '@/lib/utils';\n\nconst LEVEL_CONFIG: Record<LogLevel, { label: string; color: string }> = {\n debug: { label: 'DEBUG', color: '#71717a' },\n info: { label: 'INFO', color: '#60a5fa' },\n warn: { label: 'WARN', color: '#facc15' },\n error: { label: 'ERROR', color: '#f87171' },\n fatal: { label: 'FATAL', color: '#dc2626' },\n};\n\n// ---------------------------------------------------------------------------\n// LevelCell\n// ---------------------------------------------------------------------------\n\nexport interface LogsDataListLevelCellProps {\n level: LogLevel;\n}\n\nexport function LogsDataListLevelCell({ level }: LogsDataListLevelCellProps) {\n const config = LEVEL_CONFIG[level];\n\n return (\n <DataListCell>\n <span className=\"text-ui-sm font-semibold uppercase\" style={{ color: config.color }}>\n {config.label}\n </span>\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// EntityCell\n// ---------------------------------------------------------------------------\n\nfunction EntityTypeIcon({ entityType, className }: { entityType: string; className?: string }) {\n const iconClass = cn('size-3.5 shrink-0 text-neutral2', className);\n const normalizedEntityType = entityType.toLowerCase();\n\n switch (normalizedEntityType) {\n case 'agent':\n return <AgentIcon className={iconClass} aria-hidden />;\n case 'workflow':\n case 'workflow_run':\n return <WorkflowIcon className={iconClass} aria-hidden />;\n case 'tool':\n return <ToolsIcon className={iconClass} aria-hidden />;\n default:\n return null;\n }\n}\n\nexport interface LogsDataListEntityCellProps {\n entityType?: string | null;\n entityName?: string | null;\n}\n\nexport function LogsDataListEntityCell({ entityType, entityName }: LogsDataListEntityCellProps) {\n const type = entityType ?? '';\n\n return (\n <DataListCell className=\"flex min-w-0 items-center gap-2\">\n <EntityTypeIcon entityType={type} />\n {entityName ? <span className=\"text-ui-smd min-w-0 truncate\">{entityName}</span> : '-'}\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// MessageCell\n// ---------------------------------------------------------------------------\n\nexport interface LogsDataListMessageCellProps {\n message: string;\n}\n\nexport function LogsDataListMessageCell({ message }: LogsDataListMessageCellProps) {\n return <DataListCell className=\"text-ui-smd text-neutral4 min-w-0 truncate font-mono\">{message}</DataListCell>;\n}\n\n// ---------------------------------------------------------------------------\n// DataCell\n// ---------------------------------------------------------------------------\n\nexport interface LogsDataListDataCellProps {\n data?: Record<string, unknown> | null;\n}\n\nexport function LogsDataListDataCell({ data }: LogsDataListDataCellProps) {\n if (!data || Object.keys(data).length === 0) {\n return <DataListCell>{null}</DataListCell>;\n }\n\n const summary = Object.entries(data)\n .map(([k, v]) => {\n if (typeof v === 'string') return `${k}: ${v}`;\n try {\n return `${k}: ${JSON.stringify(v)}`;\n } catch {\n return `${k}: <unserializable>`;\n }\n })\n .join(', ');\n\n return <DataListTextCell font=\"mono\">{summary}</DataListTextCell>;\n}\n","import { DataListDateCell, DataListTimeCell } from '../DataList/data-list-cells';\nimport { DataListNextPageLoading } from '../DataList/data-list-next-page-loading';\nimport { DataListNoMatch } from '../DataList/data-list-no-match';\nimport { DataListRoot } from '../DataList/data-list-root';\nimport { DataListRowButton } from '../DataList/data-list-row-button';\nimport { DataListRowLink } from '../DataList/data-list-row-link';\nimport { DataListRowWrapper } from '../DataList/data-list-row-wrapper';\nimport { DataListSpacer } from '../DataList/data-list-spacer';\nimport { DataListTop } from '../DataList/data-list-top';\nimport { DataListTopCell, DataListTopCellWithTooltip, DataListTopCellSmart } from '../DataList/data-list-top-cell';\nimport {\n LogsDataListLevelCell,\n LogsDataListEntityCell,\n LogsDataListMessageCell,\n LogsDataListDataCell,\n} from './logs-data-list-cells';\n\nexport const LogsDataList = Object.assign(DataListRoot, {\n Top: DataListTop,\n TopCell: DataListTopCell,\n TopCellWithTooltip: DataListTopCellWithTooltip,\n TopCellSmart: DataListTopCellSmart,\n RowWrapper: DataListRowWrapper,\n RowButton: DataListRowButton,\n RowLink: DataListRowLink,\n Spacer: DataListSpacer,\n NoMatch: DataListNoMatch,\n DateCell: DataListDateCell,\n TimeCell: DataListTimeCell,\n LevelCell: LogsDataListLevelCell,\n EntityCell: LogsDataListEntityCell,\n MessageCell: LogsDataListMessageCell,\n DataCell: LogsDataListDataCell,\n NextPageLoading: DataListNextPageLoading,\n});\n"],"names":["jsx","DataListCell","cn","AgentIcon","WorkflowIcon","ToolsIcon","jsxs","DataListTextCell","DataListRoot","DataListTop","DataListTopCell","DataListTopCellWithTooltip","DataListTopCellSmart","DataListRowWrapper","DataListRowButton","DataListRowLink","DataListSpacer","DataListNoMatch","DataListDateCell","DataListTimeCell","DataListNextPageLoading"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics-kpi-card-AhIw9eyu.js","sources":["../src/ds/components/MetricsKpiCard/metrics-kpi-card-change.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-error.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-label.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-loading.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-no-change.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-no-data.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-root.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-value.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card.tsx"],"sourcesContent":["import { TrendingUpIcon, TrendingDownIcon } from 'lucide-react';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardChange({\n changePct,\n prevValue,\n lowerIsBetter,\n className,\n}: {\n changePct: number;\n prevValue?: string;\n lowerIsBetter?: boolean;\n className?: string;\n}) {\n const isGood = lowerIsBetter ? changePct < 0 : changePct >= 0;\n\n return (\n <div className={cn('flex flex-wrap items-center gap-1 text-sm text-neutral1', className)}>\n <div className=\"flex items-center gap-1\">\n <span className={cn('[&>svg]:size-4', isGood ? 'text-green-600' : 'text-red-600')}>\n {changePct >= 0 ? <TrendingUpIcon /> : <TrendingDownIcon />}\n </span>\n <span\n className={cn(isGood ? 'text-green-600' : 'text-red-600')}\n >{`${changePct >= 0 ? '+' : '-'}${Math.abs(changePct).toFixed(1)}%`}</span>\n </div>\n {prevValue && (\n <div>\n vs previous <b className=\"text-neutral2 font-semibold\">{prevValue}</b>\n </div>\n )}\n </div>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardError({\n message = 'Failed to load data',\n className,\n}: {\n message?: string;\n className?: string;\n}) {\n return <span className={cn('text-ui-sm text-accent2', className)}>{message}</span>;\n}\n","import { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardLabel({ children, className }: { children: string; className?: string }) {\n return <span className={cn('text-ui-md leading-relaxed text-neutral3', className)}>{children}</span>;\n}\n","import { Spinner } from '@/ds/components/Spinner/spinner';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardLoading({ className }: { className?: string }) {\n return (\n <span className={cn('text-sm', className)}>\n <Spinner size=\"md\" variant=\"pulse\" className=\"text-neutral1\" />\n </span>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardNoChange({\n message = 'No previous value to compare',\n className,\n}: {\n message?: string;\n className?: string;\n}) {\n return <span className={cn('text-sm text-neutral1', className)}>{message}</span>;\n}\n","import { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardNoData({ message = 'No data yet', className }: { message?: string; className?: string }) {\n return <span className={cn('text-sm text-neutral1', className)}>{message}</span>;\n}\n","import type { ReactNode } from 'react';\nimport { DashboardCard } from '@/ds/components/DashboardCard';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardRoot({ children, className }: { children: ReactNode; className?: string }) {\n return (\n <DashboardCard className={cn('min-w-72 flex-1', className)}>\n <div className=\"grid gap-1\">{children}</div>\n </DashboardCard>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardValue({ children, className }: { children:
|
|
1
|
+
{"version":3,"file":"metrics-kpi-card-AhIw9eyu.js","sources":["../src/ds/components/MetricsKpiCard/metrics-kpi-card-change.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-error.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-label.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-loading.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-no-change.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-no-data.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-root.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-value.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card.tsx"],"sourcesContent":["import { TrendingUpIcon, TrendingDownIcon } from 'lucide-react';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardChange({\n changePct,\n prevValue,\n lowerIsBetter,\n className,\n}: {\n changePct: number;\n prevValue?: string;\n lowerIsBetter?: boolean;\n className?: string;\n}) {\n const isGood = lowerIsBetter ? changePct < 0 : changePct >= 0;\n\n return (\n <div className={cn('flex flex-wrap items-center gap-1 text-sm text-neutral1', className)}>\n <div className=\"flex items-center gap-1\">\n <span className={cn('[&>svg]:size-4', isGood ? 'text-green-600' : 'text-red-600')}>\n {changePct >= 0 ? <TrendingUpIcon /> : <TrendingDownIcon />}\n </span>\n <span\n className={cn(isGood ? 'text-green-600' : 'text-red-600')}\n >{`${changePct >= 0 ? '+' : '-'}${Math.abs(changePct).toFixed(1)}%`}</span>\n </div>\n {prevValue && (\n <div>\n vs previous <b className=\"text-neutral2 font-semibold\">{prevValue}</b>\n </div>\n )}\n </div>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardError({\n message = 'Failed to load data',\n className,\n}: {\n message?: string;\n className?: string;\n}) {\n return <span className={cn('text-ui-sm text-accent2', className)}>{message}</span>;\n}\n","import { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardLabel({ children, className }: { children: string; className?: string }) {\n return <span className={cn('text-ui-md leading-relaxed text-neutral3', className)}>{children}</span>;\n}\n","import { Spinner } from '@/ds/components/Spinner/spinner';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardLoading({ className }: { className?: string }) {\n return (\n <span className={cn('text-sm', className)}>\n <Spinner size=\"md\" variant=\"pulse\" className=\"text-neutral1\" />\n </span>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardNoChange({\n message = 'No previous value to compare',\n className,\n}: {\n message?: string;\n className?: string;\n}) {\n return <span className={cn('text-sm text-neutral1', className)}>{message}</span>;\n}\n","import { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardNoData({ message = 'No data yet', className }: { message?: string; className?: string }) {\n return <span className={cn('text-sm text-neutral1', className)}>{message}</span>;\n}\n","import type { ReactNode } from 'react';\nimport { DashboardCard } from '@/ds/components/DashboardCard';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardRoot({ children, className }: { children: ReactNode; className?: string }) {\n return (\n <DashboardCard className={cn('min-w-72 flex-1', className)}>\n <div className=\"grid gap-1\">{children}</div>\n </DashboardCard>\n );\n}\n","import type { ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardValue({ children, className }: { children: ReactNode; className?: string }) {\n return <strong className={cn('text-header-lg font-semibold text-neutral4', className)}>{children}</strong>;\n}\n","import { MetricsKpiCardChange } from './metrics-kpi-card-change';\nimport { MetricsKpiCardError } from './metrics-kpi-card-error';\nimport { MetricsKpiCardLabel } from './metrics-kpi-card-label';\nimport { MetricsKpiCardLoading } from './metrics-kpi-card-loading';\nimport { MetricsKpiCardNoChange } from './metrics-kpi-card-no-change';\nimport { MetricsKpiCardNoData } from './metrics-kpi-card-no-data';\nimport { MetricsKpiCardRoot } from './metrics-kpi-card-root';\nimport { MetricsKpiCardValue } from './metrics-kpi-card-value';\n\nexport const MetricsKpiCard = Object.assign(MetricsKpiCardRoot, {\n Label: MetricsKpiCardLabel,\n Value: MetricsKpiCardValue,\n Change: MetricsKpiCardChange,\n NoChange: MetricsKpiCardNoChange,\n NoData: MetricsKpiCardNoData,\n Error: MetricsKpiCardError,\n Loading: MetricsKpiCardLoading,\n});\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics-kpi-card-tAReOFYk.cjs","sources":["../src/ds/components/MetricsKpiCard/metrics-kpi-card-change.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-error.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-label.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-loading.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-no-change.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-no-data.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-root.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-value.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card.tsx"],"sourcesContent":["import { TrendingUpIcon, TrendingDownIcon } from 'lucide-react';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardChange({\n changePct,\n prevValue,\n lowerIsBetter,\n className,\n}: {\n changePct: number;\n prevValue?: string;\n lowerIsBetter?: boolean;\n className?: string;\n}) {\n const isGood = lowerIsBetter ? changePct < 0 : changePct >= 0;\n\n return (\n <div className={cn('flex flex-wrap items-center gap-1 text-sm text-neutral1', className)}>\n <div className=\"flex items-center gap-1\">\n <span className={cn('[&>svg]:size-4', isGood ? 'text-green-600' : 'text-red-600')}>\n {changePct >= 0 ? <TrendingUpIcon /> : <TrendingDownIcon />}\n </span>\n <span\n className={cn(isGood ? 'text-green-600' : 'text-red-600')}\n >{`${changePct >= 0 ? '+' : '-'}${Math.abs(changePct).toFixed(1)}%`}</span>\n </div>\n {prevValue && (\n <div>\n vs previous <b className=\"text-neutral2 font-semibold\">{prevValue}</b>\n </div>\n )}\n </div>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardError({\n message = 'Failed to load data',\n className,\n}: {\n message?: string;\n className?: string;\n}) {\n return <span className={cn('text-ui-sm text-accent2', className)}>{message}</span>;\n}\n","import { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardLabel({ children, className }: { children: string; className?: string }) {\n return <span className={cn('text-ui-md leading-relaxed text-neutral3', className)}>{children}</span>;\n}\n","import { Spinner } from '@/ds/components/Spinner/spinner';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardLoading({ className }: { className?: string }) {\n return (\n <span className={cn('text-sm', className)}>\n <Spinner size=\"md\" variant=\"pulse\" className=\"text-neutral1\" />\n </span>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardNoChange({\n message = 'No previous value to compare',\n className,\n}: {\n message?: string;\n className?: string;\n}) {\n return <span className={cn('text-sm text-neutral1', className)}>{message}</span>;\n}\n","import { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardNoData({ message = 'No data yet', className }: { message?: string; className?: string }) {\n return <span className={cn('text-sm text-neutral1', className)}>{message}</span>;\n}\n","import type { ReactNode } from 'react';\nimport { DashboardCard } from '@/ds/components/DashboardCard';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardRoot({ children, className }: { children: ReactNode; className?: string }) {\n return (\n <DashboardCard className={cn('min-w-72 flex-1', className)}>\n <div className=\"grid gap-1\">{children}</div>\n </DashboardCard>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardValue({ children, className }: { children:
|
|
1
|
+
{"version":3,"file":"metrics-kpi-card-tAReOFYk.cjs","sources":["../src/ds/components/MetricsKpiCard/metrics-kpi-card-change.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-error.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-label.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-loading.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-no-change.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-no-data.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-root.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-value.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card.tsx"],"sourcesContent":["import { TrendingUpIcon, TrendingDownIcon } from 'lucide-react';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardChange({\n changePct,\n prevValue,\n lowerIsBetter,\n className,\n}: {\n changePct: number;\n prevValue?: string;\n lowerIsBetter?: boolean;\n className?: string;\n}) {\n const isGood = lowerIsBetter ? changePct < 0 : changePct >= 0;\n\n return (\n <div className={cn('flex flex-wrap items-center gap-1 text-sm text-neutral1', className)}>\n <div className=\"flex items-center gap-1\">\n <span className={cn('[&>svg]:size-4', isGood ? 'text-green-600' : 'text-red-600')}>\n {changePct >= 0 ? <TrendingUpIcon /> : <TrendingDownIcon />}\n </span>\n <span\n className={cn(isGood ? 'text-green-600' : 'text-red-600')}\n >{`${changePct >= 0 ? '+' : '-'}${Math.abs(changePct).toFixed(1)}%`}</span>\n </div>\n {prevValue && (\n <div>\n vs previous <b className=\"text-neutral2 font-semibold\">{prevValue}</b>\n </div>\n )}\n </div>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardError({\n message = 'Failed to load data',\n className,\n}: {\n message?: string;\n className?: string;\n}) {\n return <span className={cn('text-ui-sm text-accent2', className)}>{message}</span>;\n}\n","import { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardLabel({ children, className }: { children: string; className?: string }) {\n return <span className={cn('text-ui-md leading-relaxed text-neutral3', className)}>{children}</span>;\n}\n","import { Spinner } from '@/ds/components/Spinner/spinner';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardLoading({ className }: { className?: string }) {\n return (\n <span className={cn('text-sm', className)}>\n <Spinner size=\"md\" variant=\"pulse\" className=\"text-neutral1\" />\n </span>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardNoChange({\n message = 'No previous value to compare',\n className,\n}: {\n message?: string;\n className?: string;\n}) {\n return <span className={cn('text-sm text-neutral1', className)}>{message}</span>;\n}\n","import { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardNoData({ message = 'No data yet', className }: { message?: string; className?: string }) {\n return <span className={cn('text-sm text-neutral1', className)}>{message}</span>;\n}\n","import type { ReactNode } from 'react';\nimport { DashboardCard } from '@/ds/components/DashboardCard';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardRoot({ children, className }: { children: ReactNode; className?: string }) {\n return (\n <DashboardCard className={cn('min-w-72 flex-1', className)}>\n <div className=\"grid gap-1\">{children}</div>\n </DashboardCard>\n );\n}\n","import type { ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardValue({ children, className }: { children: ReactNode; className?: string }) {\n return <strong className={cn('text-header-lg font-semibold text-neutral4', className)}>{children}</strong>;\n}\n","import { MetricsKpiCardChange } from './metrics-kpi-card-change';\nimport { MetricsKpiCardError } from './metrics-kpi-card-error';\nimport { MetricsKpiCardLabel } from './metrics-kpi-card-label';\nimport { MetricsKpiCardLoading } from './metrics-kpi-card-loading';\nimport { MetricsKpiCardNoChange } from './metrics-kpi-card-no-change';\nimport { MetricsKpiCardNoData } from './metrics-kpi-card-no-data';\nimport { MetricsKpiCardRoot } from './metrics-kpi-card-root';\nimport { MetricsKpiCardValue } from './metrics-kpi-card-value';\n\nexport const MetricsKpiCard = Object.assign(MetricsKpiCardRoot, {\n Label: MetricsKpiCardLabel,\n Value: MetricsKpiCardValue,\n Change: MetricsKpiCardChange,\n NoChange: MetricsKpiCardNoChange,\n NoData: MetricsKpiCardNoData,\n Error: MetricsKpiCardError,\n Loading: MetricsKpiCardLoading,\n});\n"],"names":["cn","jsxs","jsx","TrendingUpIcon","TrendingDownIcon","Spinner","DashboardCard"],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ComponentPropsWithoutRef, ReactNode } from 'react';
|
|
2
|
+
import { InputGroupButtonProps, InputGroupInputProps } from '../InputGroup';
|
|
3
|
+
export type CommentComposerProps = ComponentPropsWithoutRef<'form'>;
|
|
4
|
+
export declare const CommentComposer: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').FormHTMLAttributes<HTMLFormElement>, HTMLFormElement>, "ref"> & import('react').RefAttributes<HTMLFormElement>>;
|
|
5
|
+
export interface CommentComposerInputProps extends InputGroupInputProps {
|
|
6
|
+
/** Layout classes for the surrounding InputGroup. */
|
|
7
|
+
groupClassName?: string;
|
|
8
|
+
children?: ReactNode;
|
|
9
|
+
}
|
|
10
|
+
export declare const CommentComposerInput: import('react').ForwardRefExoticComponent<CommentComposerInputProps & import('react').RefAttributes<HTMLInputElement>>;
|
|
11
|
+
export type CommentComposerSendProps = Omit<InputGroupButtonProps, 'children'>;
|
|
12
|
+
export declare const CommentComposerSend: import('react').ForwardRefExoticComponent<CommentComposerSendProps & import('react').RefAttributes<HTMLButtonElement>>;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ComponentPropsWithoutRef } from 'react';
|
|
2
|
+
import { CommentVariant } from './comment-context';
|
|
3
|
+
export interface CommentProps extends ComponentPropsWithoutRef<'div'> {
|
|
4
|
+
variant?: CommentVariant;
|
|
5
|
+
}
|
|
6
|
+
export declare const Comment: import('react').ForwardRefExoticComponent<CommentProps & import('react').RefAttributes<HTMLDivElement>>;
|
|
7
|
+
export type CommentListProps = ComponentPropsWithoutRef<'ul'>;
|
|
8
|
+
export declare const CommentList: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLUListElement>, HTMLUListElement>, "ref"> & import('react').RefAttributes<HTMLUListElement>>;
|
|
9
|
+
export type CommentItemProps = ComponentPropsWithoutRef<'li'>;
|
|
10
|
+
export declare const CommentItem: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>, "ref"> & import('react').RefAttributes<HTMLLIElement>>;
|
|
11
|
+
export type CommentItemHeaderProps = ComponentPropsWithoutRef<'div'>;
|
|
12
|
+
export declare const CommentItemHeader: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & import('react').RefAttributes<HTMLDivElement>>;
|
|
13
|
+
export type CommentItemAuthorProps = ComponentPropsWithoutRef<'span'>;
|
|
14
|
+
export declare const CommentItemAuthor: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & import('react').RefAttributes<HTMLElement>>;
|
|
15
|
+
export type CommentItemTimestampProps = ComponentPropsWithoutRef<'time'>;
|
|
16
|
+
export declare const CommentItemTimestamp: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').TimeHTMLAttributes<HTMLTimeElement>, HTMLTimeElement>, "ref"> & import('react').RefAttributes<HTMLTimeElement>>;
|
|
17
|
+
export type CommentItemBodyProps = ComponentPropsWithoutRef<'p'>;
|
|
18
|
+
export declare const CommentItemBody: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, "ref"> & import('react').RefAttributes<HTMLElement>>;
|
|
19
|
+
export type CommentItemActionsProps = ComponentPropsWithoutRef<'div'>;
|
|
20
|
+
/** Hidden in the `embed` variant, which drops per-item actions. */
|
|
21
|
+
export declare const CommentItemActions: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & import('react').RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import { Comment } from './comment';
|
|
3
|
+
declare const meta: Meta<typeof Comment>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof Comment>;
|
|
6
|
+
export declare const Default: Story;
|
|
7
|
+
/** Card surface, compact composer, no per-item actions. */
|
|
8
|
+
export declare const Embed: Story;
|
|
9
|
+
export declare const ComposerOnly: Story;
|
|
10
|
+
export declare const Interactive: Story;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { Comment, CommentItem, CommentItemActions, CommentItemAuthor, CommentItemBody, CommentItemHeader, CommentItemTimestamp, CommentList, } from './comment';
|
|
2
|
+
export type { CommentItemActionsProps, CommentItemAuthorProps, CommentItemBodyProps, CommentItemHeaderProps, CommentItemProps, CommentItemTimestampProps, CommentListProps, CommentProps, } from './comment';
|
|
3
|
+
export { CommentComposer, CommentComposerInput, CommentComposerSend } from './comment-composer';
|
|
4
|
+
export type { CommentComposerInputProps, CommentComposerProps, CommentComposerSendProps } from './comment-composer';
|
|
5
|
+
export type { CommentVariant } from './comment-context';
|
|
@@ -3,7 +3,6 @@ import { DataListSticky } from './shared';
|
|
|
3
3
|
export type DataListCellProps = {
|
|
4
4
|
children?: ReactNode;
|
|
5
5
|
className?: string;
|
|
6
|
-
height?: 'default' | 'compact';
|
|
7
6
|
/**
|
|
8
7
|
* HTML element rendered for the cell. Defaults to `span`. Use `'label'` when
|
|
9
8
|
* the cell wraps a labelable control (e.g. a Checkbox), so the whole cell
|
|
@@ -16,8 +15,20 @@ export type DataListCellProps = {
|
|
|
16
15
|
*/
|
|
17
16
|
sticky?: DataListSticky;
|
|
18
17
|
} & Omit<ComponentPropsWithoutRef<'div'>, 'children' | 'className'>;
|
|
19
|
-
export declare function DataListCell({ children, className,
|
|
20
|
-
|
|
18
|
+
export declare function DataListCell({ children, className, as, sticky, ...rest }: DataListCellProps): import("react").JSX.Element;
|
|
19
|
+
/**
|
|
20
|
+
* Trailing cell for row actions, revealed on row hover or keyboard focus.
|
|
21
|
+
* Sits beside a `DataList.RowButton` inside a `DataList.RowWrapper`.
|
|
22
|
+
*/
|
|
23
|
+
export declare function DataListActionsCell({ children, className, ...rest }: DataListCellProps): import("react").JSX.Element;
|
|
24
|
+
export type DataListTextCellProps = DataListCellProps & {
|
|
25
|
+
/**
|
|
26
|
+
* Typeface for the cell text. `mono` is for genuine code — paths, env values,
|
|
27
|
+
* serialized JSON — and drops a size step to match the sans columns optically.
|
|
28
|
+
*/
|
|
29
|
+
font?: 'sans' | 'mono';
|
|
30
|
+
};
|
|
31
|
+
export declare function DataListTextCell({ children, className, font, ...rest }: DataListTextCellProps): import("react").JSX.Element;
|
|
21
32
|
export declare function DataListNameCell({ children, className }: DataListCellProps): import("react").JSX.Element;
|
|
22
33
|
export declare function DataListDescriptionCell({ children, className }: DataListCellProps): import("react").JSX.Element;
|
|
23
34
|
export type DataListRowHeaderCellProps = Omit<DataListCellProps, 'sticky'>;
|
|
@@ -31,10 +42,9 @@ export type DataListNumberCellProps = DataListCellProps & {
|
|
|
31
42
|
};
|
|
32
43
|
/**
|
|
33
44
|
* Right-aligned numeric cell with tabular figures, for metric and summary
|
|
34
|
-
* tables.
|
|
35
|
-
* for the emphasized column.
|
|
45
|
+
* tables. Pass `highlight` for the emphasized column.
|
|
36
46
|
*/
|
|
37
|
-
export declare function DataListNumberCell({ children, className, highlight,
|
|
47
|
+
export declare function DataListNumberCell({ children, className, highlight, ...rest }: DataListNumberCellProps): import("react").JSX.Element;
|
|
38
48
|
export interface DataListIdCellProps {
|
|
39
49
|
id: string;
|
|
40
50
|
}
|
|
@@ -52,18 +62,6 @@ export interface DataListSelectCellProps {
|
|
|
52
62
|
'aria-label'?: string;
|
|
53
63
|
}
|
|
54
64
|
export declare function DataListSelectCell({ checked, onToggle, disabled, ...rest }: DataListSelectCellProps): import("react").JSX.Element;
|
|
55
|
-
export interface DataListMonoCellProps {
|
|
56
|
-
children: ReactNode;
|
|
57
|
-
/** Override classes on the inner span (e.g. swap the default `text-neutral3` tone). */
|
|
58
|
-
className?: string;
|
|
59
|
-
/** Cell vertical padding. Defaults to `compact` to match other identifier cells. */
|
|
60
|
-
height?: 'default' | 'compact';
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Mono-typography cell with truncation. Shared by any column that
|
|
64
|
-
* shows code-like text (input previews, JSON summaries, identifiers, etc.).
|
|
65
|
-
*/
|
|
66
|
-
export declare function DataListMonoCell({ children, className, height }: DataListMonoCellProps): import("react").JSX.Element;
|
|
67
65
|
export interface DataListDateCellProps {
|
|
68
66
|
timestamp: Date | string;
|
|
69
67
|
}
|
|
@@ -3,12 +3,11 @@ import { ScrollAreaMask, ScrollAreaProps } from '../ScrollArea/scroll-area';
|
|
|
3
3
|
/**
|
|
4
4
|
* Visual treatment for the whole list.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* and use subtle separators instead of zebra tints.
|
|
6
|
+
* Both are borderless and full-bleed, with a contrasting sticky header band and
|
|
7
|
+
* no row separators. `striped` adds a zebra tint to every other row; `plain`
|
|
8
|
+
* leaves rows transparent so only hover and selection tint them.
|
|
10
9
|
*/
|
|
11
|
-
export type DataListVariant = 'striped' | '
|
|
10
|
+
export type DataListVariant = 'striped' | 'plain';
|
|
12
11
|
/**
|
|
13
12
|
* Horizontal sizing of the list grid.
|
|
14
13
|
*
|
|
@@ -28,8 +27,8 @@ export type DataListRootProps = Omit<ScrollAreaProps, 'children' | 'orientation'
|
|
|
28
27
|
fit?: DataListFit;
|
|
29
28
|
/**
|
|
30
29
|
* Shared fill for the sticky top header and sticky row-header column.
|
|
31
|
-
* `tinted` is
|
|
32
|
-
*
|
|
30
|
+
* `tinted` is the opaque `--surface-header` band, so sticky headers do not
|
|
31
|
+
* reveal scrolled content beneath them.
|
|
33
32
|
*/
|
|
34
33
|
stickyHeaderBackground?: DataListStickyHeaderBackground;
|
|
35
34
|
/**
|
|
@@ -8,4 +8,4 @@ export type DataListRowLinkProps = DataListRowSharedProps & {
|
|
|
8
8
|
style?: CSSProperties;
|
|
9
9
|
LinkComponent?: LinkComponent;
|
|
10
10
|
} & Omit<ComponentPropsWithoutRef<'a'>, 'href' | 'children' | 'className' | 'style'>;
|
|
11
|
-
export declare function DataListRowLink({ children, to, className, style, LinkComponent: Link,
|
|
11
|
+
export declare function DataListRowLink({ children, to, className, style, LinkComponent: Link, colStart, colEnd, featured, variant, ...rest }: DataListRowLinkProps): import("react").JSX.Element;
|
|
@@ -6,7 +6,7 @@ export type DataListRowWrapperProps = ComponentPropsWithoutRef<'div'>;
|
|
|
6
6
|
* hover/focus/click only apply to the button portion. For standalone
|
|
7
7
|
* interactive rows, use `DataList.RowButton` directly without this wrapper.
|
|
8
8
|
*
|
|
9
|
-
* Carries the
|
|
10
|
-
*
|
|
9
|
+
* Carries the `.data-list-row` marker so root-level row styling behaves the
|
|
10
|
+
* same in wrapped and standalone rows.
|
|
11
11
|
*/
|
|
12
12
|
export declare const DataListRowWrapper: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & import('react').RefAttributes<HTMLDivElement>>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DataListCell, DataListTextCell, DataListNameCell, DataListDescriptionCell, DataListIdCell, DataListRowHeaderCell, DataListNumberCell, DataListSelectCell,
|
|
1
|
+
import { DataListActionsCell, DataListCell, DataListTextCell, DataListNameCell, DataListDescriptionCell, DataListIdCell, DataListRowHeaderCell, DataListNumberCell, DataListSelectCell, DataListDateCell, DataListTimeCell } from './data-list-cells';
|
|
2
2
|
import { DataListNextPageLoading } from './data-list-next-page-loading';
|
|
3
3
|
import { DataListNoMatch } from './data-list-no-match';
|
|
4
4
|
import { DataListPagination } from './data-list-pagination';
|
|
@@ -28,13 +28,13 @@ export declare const DataList: typeof DataListRoot & {
|
|
|
28
28
|
RowLink: typeof DataListRowLink;
|
|
29
29
|
RowStatic: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & import('./shared').DataListRowSharedProps & import('react').RefAttributes<HTMLDivElement>>;
|
|
30
30
|
Cell: typeof DataListCell;
|
|
31
|
+
ActionsCell: typeof DataListActionsCell;
|
|
31
32
|
TextCell: typeof DataListTextCell;
|
|
32
33
|
NameCell: typeof DataListNameCell;
|
|
33
34
|
DescriptionCell: typeof DataListDescriptionCell;
|
|
34
35
|
IdCell: typeof DataListIdCell;
|
|
35
36
|
RowHeaderCell: typeof DataListRowHeaderCell;
|
|
36
37
|
NumberCell: typeof DataListNumberCell;
|
|
37
|
-
MonoCell: typeof DataListMonoCell;
|
|
38
38
|
DateCell: typeof DataListDateCell;
|
|
39
39
|
TimeCell: typeof DataListTimeCell;
|
|
40
40
|
SelectCell: typeof DataListSelectCell;
|
|
@@ -20,7 +20,7 @@ export declare const WithErrorRows: Story;
|
|
|
20
20
|
export declare const WithRowLink: Story;
|
|
21
21
|
/** Multi-select with a leading checkbox column. Click the header checkbox to toggle all rows. */
|
|
22
22
|
export declare const WithSelection: Story;
|
|
23
|
-
/** Trailing actions column: the row click area is bounded by `colEnd={-2}
|
|
23
|
+
/** Trailing actions column: the row click area is bounded by `colEnd={-2}`, and the last cell hosts per-row controls. */
|
|
24
24
|
export declare const WithTrailingCell: Story;
|
|
25
25
|
/** Use `featured` to highlight the row whose detail panel is currently open. */
|
|
26
26
|
export declare const Featured: Story;
|
|
@@ -3,13 +3,25 @@
|
|
|
3
3
|
* chain — applied to `DataList.RowButton` / `DataList.RowLink` when used
|
|
4
4
|
* standalone, and to `DataList.RowWrapper` when used as a shell around them.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
* separator rules), the full-width separator treatment, and rounded corners.
|
|
6
|
+
* Carries the `.data-list-row` marker class the root styles target.
|
|
8
7
|
*/
|
|
9
|
-
export declare const dataListRowOuterStyles: readonly ["data-list-row col-span-full relative
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
export declare const dataListRowOuterStyles: readonly ["group/data-list-row data-list-row col-span-full relative min-h-9", "transition-colors duration-200 rounded-lg"];
|
|
9
|
+
/**
|
|
10
|
+
* Layout + focus ring only. The root paints the hover/focus fill on
|
|
11
|
+
* `.data-list-row`, so a wrapped row and its button never show two tints.
|
|
12
|
+
*/
|
|
13
|
+
export declare const dataListRowInteractiveStyles: readonly ["grid grid-cols-subgrid gap-8 px-5 outline-none cursor-pointer", "focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-accent1", "transition-colors duration-200 rounded-lg"];
|
|
14
|
+
export declare const dataListRowStyles: readonly ["grid grid-cols-subgrid gap-8 px-5 outline-none cursor-pointer", "focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-accent1", "transition-colors duration-200 rounded-lg", "group/data-list-row data-list-row col-span-full relative min-h-9", "transition-colors duration-200 rounded-lg"];
|
|
15
|
+
export declare const dataListRowStaticStyles: readonly ["grid grid-cols-subgrid gap-8 px-5", "group/data-list-row data-list-row col-span-full relative min-h-9", "transition-colors duration-200 rounded-lg"];
|
|
16
|
+
/**
|
|
17
|
+
* Row controls that stay out of the way until the row is hovered or focused.
|
|
18
|
+
* Opacity, not display, so the column keeps its width and nothing shifts. A
|
|
19
|
+
* coarse pointer never hovers, so there they stay visible — hidden controls
|
|
20
|
+
* that still take taps would be worse than no reveal at all.
|
|
21
|
+
*/
|
|
22
|
+
export declare const dataListRowRevealStyles = "opacity-0 pointer-coarse:opacity-100 group-focus-within/data-list-row:opacity-100 group-hover/data-list-row:opacity-100";
|
|
23
|
+
/** Header counterpart of {@link dataListRowRevealStyles}. */
|
|
24
|
+
export declare const dataListTopRevealStyles = "opacity-0 pointer-coarse:opacity-100 group-focus-within/data-list-top:opacity-100 group-hover/data-list-top:opacity-100";
|
|
13
25
|
export type DataListSticky = 'start';
|
|
14
26
|
export declare const dataListStickyStartStyles: readonly ["data-list-sticky-start sticky left-0 z-10 isolate self-stretch overflow-visible", "after:absolute after:-right-4 after:top-1/2 after:-translate-y-1/2 after:h-4 after:w-px after:bg-border2 after:content-[\"\"] after:pointer-events-none"];
|
|
15
27
|
/** Tone for a single row. `error` lays a subtle, theme-aware destructive tint
|
|
@@ -30,18 +42,6 @@ export declare const dataListRowVariants: (props?: ({
|
|
|
30
42
|
export type DataListRowSharedProps = {
|
|
31
43
|
/** Row tone — `error` applies a subtle destructive background tint. */
|
|
32
44
|
variant?: DataListRowVariant;
|
|
33
|
-
/**
|
|
34
|
-
* Drop the row's default left margin. Use when the row is wrapped in a
|
|
35
|
-
* `DataList.RowWrapper` that owns the leading inset (e.g. for selection rows where
|
|
36
|
-
* the checkbox cell sits on the left).
|
|
37
|
-
*/
|
|
38
|
-
flushLeft?: boolean;
|
|
39
|
-
/**
|
|
40
|
-
* Drop the row's default right margin. Use when the row is wrapped in a
|
|
41
|
-
* `DataList.RowWrapper` that owns the trailing inset (e.g. for rows with a
|
|
42
|
-
* trailing actions cell on the right).
|
|
43
|
-
*/
|
|
44
|
-
flushRight?: boolean;
|
|
45
45
|
/**
|
|
46
46
|
* Place the row starting at this column line. Defaults to column 1. Use
|
|
47
47
|
* when the row sits beside a leading cell that owns column 1.
|
|
@@ -1,9 +1,14 @@
|
|
|
1
|
+
import { VariantProps } from 'class-variance-authority';
|
|
1
2
|
import { ReactNode } from 'react';
|
|
3
|
+
declare const settingsRowVariants: (props?: ({
|
|
4
|
+
variant?: "default" | "factory" | null | undefined;
|
|
5
|
+
} & import('class-variance-authority/types').ClassProp) | undefined) => string;
|
|
2
6
|
export type SettingsRowProps = {
|
|
3
7
|
label: ReactNode;
|
|
4
8
|
description?: ReactNode;
|
|
5
9
|
htmlFor?: string;
|
|
6
10
|
className?: string;
|
|
7
|
-
children
|
|
8
|
-
}
|
|
9
|
-
export declare function SettingsRow({ label, description, htmlFor, className, children }: SettingsRowProps): import("react").JSX.Element;
|
|
11
|
+
children?: ReactNode;
|
|
12
|
+
} & VariantProps<typeof settingsRowVariants>;
|
|
13
|
+
export declare function SettingsRow({ label, description, htmlFor, variant, className, children }: SettingsRowProps): import("react").JSX.Element;
|
|
14
|
+
export {};
|