@mastra/playground-ui 46.0.0-alpha.5 → 46.0.0-alpha.7
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 +60 -0
- package/dist/Composer.css +80 -0
- package/dist/components/ChatShell.cjs.js +1 -1
- package/dist/components/ChatShell.es.js +1 -1
- package/dist/components/Composer.cjs.js +46 -0
- package/dist/components/Composer.cjs.js.map +1 -1
- package/dist/components/Composer.es.js +48 -3
- package/dist/components/Composer.es.js.map +1 -1
- package/dist/components/DataList.cjs.js +4 -4
- package/dist/components/DataList.es.js +4 -4
- package/dist/components/EnvironmentVariablesEditor.cjs.js +1 -1
- package/dist/components/EnvironmentVariablesEditor.es.js +1 -1
- package/dist/components/LogsDataList.cjs.js +2 -2
- package/dist/components/LogsDataList.es.js +2 -2
- package/dist/components/MainSidebar.cjs.js +213 -208
- package/dist/components/MainSidebar.cjs.js.map +1 -1
- package/dist/components/MainSidebar.es.js +213 -210
- package/dist/components/MainSidebar.es.js.map +1 -1
- package/dist/components/MessageScroller.cjs.js +1 -1
- package/dist/components/MessageScroller.es.js +1 -1
- package/dist/components/SankeyChart.cjs.js +3 -4
- package/dist/components/SankeyChart.cjs.js.map +1 -1
- package/dist/components/SankeyChart.es.js +3 -4
- package/dist/components/SankeyChart.es.js.map +1 -1
- package/dist/components/ThreadRail.cjs.js +2 -2
- package/dist/components/ThreadRail.cjs.js.map +1 -1
- package/dist/components/ThreadRail.es.js +1 -1
- package/dist/components/ThreadRail.es.js.map +1 -1
- package/dist/{data-list-CEGVpKNo.cjs → data-list-B3P5IlxV.cjs} +31 -8
- package/dist/data-list-B3P5IlxV.cjs.map +1 -0
- package/dist/{data-list-SGIqDkMi.js → data-list-CZC8N3I4.js} +26 -5
- package/dist/data-list-CZC8N3I4.js.map +1 -0
- package/dist/{data-list-skeleton-CQvX7jIh.js → data-list-skeleton-BDQEjCWH.js} +2 -2
- package/dist/{data-list-skeleton-CQvX7jIh.js.map → data-list-skeleton-BDQEjCWH.js.map} +1 -1
- package/dist/{data-list-skeleton-CmCTE-HQ.cjs → data-list-skeleton-ClGPuUja.cjs} +2 -2
- package/dist/{data-list-skeleton-CmCTE-HQ.cjs.map → data-list-skeleton-ClGPuUja.cjs.map} +1 -1
- package/dist/{data-list-top-cell-DoeqMbd1.cjs → data-list-top-cell-Dfg0AKmr.cjs} +54 -5
- package/dist/data-list-top-cell-Dfg0AKmr.cjs.map +1 -0
- package/dist/{data-list-top-cell-D9EsRa0k.js → data-list-top-cell-S98SdRsx.js} +53 -2
- package/dist/data-list-top-cell-S98SdRsx.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 +1 -1
- package/dist/domains/metrics/components/memory-card-view.es.js +1 -1
- package/dist/domains/metrics/components/model-usage-cost-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/model-usage-cost-card-view.es.js +1 -1
- package/dist/domains/metrics/components/scores-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/scores-card-view.es.js +1 -1
- package/dist/domains/traces/components/span-data-panel-view.cjs.js +3 -3
- package/dist/domains/traces/components/span-data-panel-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-data-panel-view.es.js +4 -4
- package/dist/domains/traces/components/span-data-panel-view.es.js.map +1 -1
- package/dist/domains/traces/components/span-details-view.cjs.js +4 -3
- package/dist/domains/traces/components/span-details-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-details-view.es.js +4 -3
- package/dist/domains/traces/components/span-details-view.es.js.map +1 -1
- package/dist/domains/traces/components/trace-columns-menu.cjs.js +144 -0
- package/dist/domains/traces/components/trace-columns-menu.cjs.js.map +1 -0
- package/dist/domains/traces/components/trace-columns-menu.d.ts +2 -0
- package/dist/domains/traces/components/trace-columns-menu.es.js +140 -0
- package/dist/domains/traces/components/trace-columns-menu.es.js.map +1 -0
- package/dist/domains/traces/components/traces-list-view.cjs.js +30 -11
- package/dist/domains/traces/components/traces-list-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-list-view.es.js +31 -12
- package/dist/domains/traces/components/traces-list-view.es.js.map +1 -1
- package/dist/domains/traces/hooks/use-trace-column-preferences.cjs.js +80 -0
- package/dist/domains/traces/hooks/use-trace-column-preferences.cjs.js.map +1 -0
- package/dist/domains/traces/hooks/use-trace-column-preferences.d.ts +2 -0
- package/dist/domains/traces/hooks/use-trace-column-preferences.es.js +76 -0
- package/dist/domains/traces/hooks/use-trace-column-preferences.es.js.map +1 -0
- package/dist/domains/traces/hooks/use-trace-usage.cjs.js +99 -0
- package/dist/domains/traces/hooks/use-trace-usage.cjs.js.map +1 -0
- package/dist/domains/traces/hooks/use-trace-usage.d.ts +2 -0
- package/dist/domains/traces/hooks/use-trace-usage.es.js +95 -0
- package/dist/domains/traces/hooks/use-trace-usage.es.js.map +1 -0
- package/dist/domains/traces/hooks/use-traces.cjs.js.map +1 -1
- package/dist/domains/traces/hooks/use-traces.es.js.map +1 -1
- package/dist/domains/traces/trace-list-columns.cjs.js +106 -0
- package/dist/domains/traces/trace-list-columns.cjs.js.map +1 -0
- package/dist/domains/traces/trace-list-columns.d.ts +2 -0
- package/dist/domains/traces/trace-list-columns.es.js +93 -0
- package/dist/domains/traces/trace-list-columns.es.js.map +1 -0
- package/dist/domains/traces/utils/span-utils.cjs.js +13 -0
- package/dist/domains/traces/utils/span-utils.cjs.js.map +1 -1
- package/dist/domains/traces/utils/span-utils.es.js +13 -1
- package/dist/domains/traces/utils/span-utils.es.js.map +1 -1
- package/dist/domains/traces/utils.cjs.js +1 -0
- package/dist/domains/traces/utils.cjs.js.map +1 -1
- package/dist/domains/traces/utils.es.js +1 -1
- package/dist/domains/traces.cjs.js +1 -0
- package/dist/domains/traces.cjs.js.map +1 -1
- package/dist/domains/traces.es.js +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-BhDEUkXZ.js → logs-data-list-C9Q9MHsz.js} +2 -3
- package/dist/{logs-data-list-BhDEUkXZ.js.map → logs-data-list-C9Q9MHsz.js.map} +1 -1
- package/dist/{logs-data-list-C_FyPCxE.cjs → logs-data-list-DTt_DmNk.cjs} +4 -5
- package/dist/{logs-data-list-C_FyPCxE.cjs.map → logs-data-list-DTt_DmNk.cjs.map} +1 -1
- package/dist/{message-scroller-DIgCd5n3.cjs → message-scroller-BmzjZZNs.cjs} +12 -2
- package/dist/message-scroller-BmzjZZNs.cjs.map +1 -0
- package/dist/{message-scroller-BQpwFsqj.js → message-scroller-D5O7sUS5.js} +12 -2
- package/dist/message-scroller-D5O7sUS5.js.map +1 -0
- package/dist/src/domains/traces/components/trace-columns-menu.d.ts +11 -0
- package/dist/src/domains/traces/components/traces-list-view.d.ts +9 -1
- package/dist/src/domains/traces/hooks/use-trace-column-preferences.d.ts +8 -0
- package/dist/src/domains/traces/hooks/use-trace-usage.d.ts +6 -0
- package/dist/src/domains/traces/hooks/use-traces.d.ts +3 -3
- package/dist/src/domains/traces/trace-list-columns.d.ts +21 -0
- package/dist/src/domains/traces/utils/index.d.ts +1 -1
- package/dist/src/domains/traces/utils/span-utils.d.ts +1 -0
- package/dist/src/ds/components/Composer/composer.d.ts +12 -0
- package/dist/src/ds/components/Composer/composer.stories.d.ts +3 -0
- package/dist/src/ds/components/Composer/index.d.ts +2 -2
- package/dist/src/ds/components/Composer/use-composer-pointer-angle.d.ts +2 -0
- package/dist/src/ds/components/MainSidebar/main-sidebar-context.d.ts +10 -33
- package/dist/src/ds/components/MainSidebar/main-sidebar-provider.d.ts +29 -0
- package/dist/src/ds/components/MainSidebar/main-sidebar.d.ts +3 -2
- package/dist/src/ds/components/SankeyChart/sankey-chart.stories.d.ts +1 -0
- package/dist/style.css +4 -4
- package/dist/{traces-data-list-CwGS6fk9.cjs → traces-data-list-D3TOjHkm.cjs} +9 -7
- package/dist/traces-data-list-D3TOjHkm.cjs.map +1 -0
- package/dist/{traces-data-list-CB4kjGeS.js → traces-data-list-a3sYTxch.js} +7 -5
- package/dist/traces-data-list-a3sYTxch.js.map +1 -0
- package/package.json +7 -7
- package/dist/data-list-CEGVpKNo.cjs.map +0 -1
- package/dist/data-list-SGIqDkMi.js.map +0 -1
- package/dist/data-list-row-wrapper-C-77LgWH.cjs +0 -61
- package/dist/data-list-row-wrapper-C-77LgWH.cjs.map +0 -1
- package/dist/data-list-row-wrapper-DbGQIaO1.js +0 -58
- package/dist/data-list-row-wrapper-DbGQIaO1.js.map +0 -1
- package/dist/data-list-subheading-CtKxxvFr.js +0 -29
- package/dist/data-list-subheading-CtKxxvFr.js.map +0 -1
- package/dist/data-list-subheading-e_PjriQo.cjs +0 -32
- package/dist/data-list-subheading-e_PjriQo.cjs.map +0 -1
- package/dist/data-list-top-cell-D9EsRa0k.js.map +0 -1
- package/dist/data-list-top-cell-DoeqMbd1.cjs.map +0 -1
- package/dist/message-scroller-BQpwFsqj.js.map +0 -1
- package/dist/message-scroller-DIgCd5n3.cjs.map +0 -1
- package/dist/traces-data-list-CB4kjGeS.js.map +0 -1
- package/dist/traces-data-list-CwGS6fk9.cjs.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,65 @@
|
|
|
1
1
|
# @mastra/playground-ui
|
|
2
2
|
|
|
3
|
+
## 46.0.0-alpha.7
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [[`d94b8e1`](https://github.com/mastra-ai/mastra/commit/d94b8e1cee67416d518a8c30099040061bef6a1c)]:
|
|
8
|
+
- @mastra/core@1.56.0-alpha.7
|
|
9
|
+
- @mastra/client-js@1.37.0-alpha.7
|
|
10
|
+
- @mastra/react@1.4.0-alpha.7
|
|
11
|
+
|
|
12
|
+
## 46.0.0-alpha.6
|
|
13
|
+
|
|
14
|
+
### Minor Changes
|
|
15
|
+
|
|
16
|
+
- Added per-project trace list columns for duration, token usage, estimated cost, and custom metadata. ([#20535](https://github.com/mastra-ai/mastra/pull/20535))
|
|
17
|
+
|
|
18
|
+
- Preserved browser shortcuts by making the MainSidebar Command+B toggle opt-in. Consumers that want the previous shortcut can enable it explicitly: ([#20614](https://github.com/mastra-ai/mastra/pull/20614))
|
|
19
|
+
|
|
20
|
+
```tsx
|
|
21
|
+
<MainSidebarProvider disableKeyboardShortcut={false}>{children}</MainSidebarProvider>
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Added selective hooks for consumers that only need sidebar state or mobile drawer state:
|
|
25
|
+
|
|
26
|
+
```tsx
|
|
27
|
+
import { useMaybeSidebarState, useMobileDrawer } from '@mastra/playground-ui/components/MainSidebar';
|
|
28
|
+
|
|
29
|
+
const sidebar = useMaybeSidebarState();
|
|
30
|
+
const { openMobile } = useMobileDrawer();
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
- Added a pointer-aware ring around the chat composer. At rest it is a plain border; on hover or focus a soft arc lights the edge under the cursor, and while the agent is running the arc rotates on its own so the composer itself shows the run instead of a separate "working…" label. ([#20630](https://github.com/mastra-ai/mastra/pull/20630))
|
|
34
|
+
|
|
35
|
+
```tsx
|
|
36
|
+
import { ComposerBox, ComposerRing } from '@mastra/playground-ui/components/Composer';
|
|
37
|
+
|
|
38
|
+
<ComposerRing busy={isRunning}>
|
|
39
|
+
<ComposerBox>{/* input and actions */}</ComposerBox>
|
|
40
|
+
</ComposerRing>;
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Wrap `ComposerBox` with it and pass `busy` — the ring becomes the composer's edge, so the box no longer needs a border of its own.
|
|
44
|
+
|
|
45
|
+
### Patch Changes
|
|
46
|
+
|
|
47
|
+
- Fixed three problems with the conversation rail in chat threads. ([#20615](https://github.com/mastra-ai/mastra/pull/20615))
|
|
48
|
+
|
|
49
|
+
**The rail now marks the turn you are reading after older history loads.** Scrolling up to load earlier messages used to leave the oldest message highlighted as the current turn, so the marker jumped to the top of the thread instead of following the transcript.
|
|
50
|
+
|
|
51
|
+
**Scrolling stays responsive in long threads.** The rail re-derived the order of every message on each scroll event. It now does that only when messages are added or removed.
|
|
52
|
+
|
|
53
|
+
**The rail can be used in a browser-only app.** Importing it no longer drags the whole `@mastra/react` entry point into the bundle.
|
|
54
|
+
|
|
55
|
+
- Fixed the last column header in Sankey charts (for example SENTIMENT on the Trace Intelligence page) rendering right up against the chart's edge. It now keeps the same spacing as the first column's header. ([#20589](https://github.com/mastra-ai/mastra/pull/20589))
|
|
56
|
+
|
|
57
|
+
- Updated dependencies [[`82201f7`](https://github.com/mastra-ai/mastra/commit/82201f75fae8e050a8de2df08b74875ee74c6b83), [`fb18da5`](https://github.com/mastra-ai/mastra/commit/fb18da56fc35689ae370621a8f10b5b0d8606e20), [`fb18da5`](https://github.com/mastra-ai/mastra/commit/fb18da56fc35689ae370621a8f10b5b0d8606e20), [`0a6598b`](https://github.com/mastra-ai/mastra/commit/0a6598bde80bde008986ad6616bed9632b9294cb), [`9e1dad8`](https://github.com/mastra-ai/mastra/commit/9e1dad8f7b1cab2bb7ade90e5b7561f24577b88a), [`2f43145`](https://github.com/mastra-ai/mastra/commit/2f4314504c03cbba280414ac81ba3197448ee6b0), [`34d34d8`](https://github.com/mastra-ai/mastra/commit/34d34d8c811df512fef4dd5459f79b7821be1866), [`19ccefa`](https://github.com/mastra-ai/mastra/commit/19ccefa628dc971b4bfa2058a324a6ac9b846358), [`34d34d8`](https://github.com/mastra-ai/mastra/commit/34d34d8c811df512fef4dd5459f79b7821be1866)]:
|
|
58
|
+
- @mastra/core@1.56.0-alpha.6
|
|
59
|
+
- @mastra/client-js@1.37.0-alpha.6
|
|
60
|
+
- @mastra/memory@1.25.0-alpha.2
|
|
61
|
+
- @mastra/react@1.4.0-alpha.6
|
|
62
|
+
|
|
3
63
|
## 46.0.0-alpha.5
|
|
4
64
|
|
|
5
65
|
### Patch Changes
|
package/dist/Composer.css
CHANGED
|
@@ -1,3 +1,83 @@
|
|
|
1
|
+
/* All three must be registered: an unregistered custom property is a raw token,
|
|
2
|
+
it cannot be interpolated by a transition or a keyframe. */
|
|
3
|
+
@property --composer-ring-angle {
|
|
4
|
+
syntax: '<angle>';
|
|
5
|
+
inherits: false;
|
|
6
|
+
initial-value: 0deg;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/* Offset rather than a second driver of the angle: the spin picks up from
|
|
10
|
+
wherever the pointer left the arc instead of snapping back to 0deg. */
|
|
11
|
+
@property --composer-ring-spin {
|
|
12
|
+
syntax: '<angle>';
|
|
13
|
+
inherits: false;
|
|
14
|
+
initial-value: 0deg;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
@property --composer-ring-strength {
|
|
18
|
+
syntax: '<number>';
|
|
19
|
+
inherits: false;
|
|
20
|
+
initial-value: 0;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.composer-ring {
|
|
24
|
+
--composer-ring-color: var(--accent1);
|
|
25
|
+
|
|
26
|
+
position: relative;
|
|
27
|
+
border-radius: 23px;
|
|
28
|
+
padding: 1px;
|
|
29
|
+
background-color: color-mix(in oklab, var(--border2) 40%, transparent);
|
|
30
|
+
background-image: conic-gradient(
|
|
31
|
+
from calc(var(--composer-ring-angle) + var(--composer-ring-spin) - 60deg),
|
|
32
|
+
transparent 0deg,
|
|
33
|
+
color-mix(in oklab, var(--composer-ring-color) calc(var(--composer-ring-strength) * 100%), transparent) 60deg,
|
|
34
|
+
transparent 120deg
|
|
35
|
+
);
|
|
36
|
+
transition:
|
|
37
|
+
--composer-ring-strength 320ms ease-out,
|
|
38
|
+
box-shadow 320ms ease-out;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/* The ring is the composer's only edge. */
|
|
42
|
+
.composer-ring > [data-slot='composer-box'] {
|
|
43
|
+
border-color: transparent;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.composer-ring:focus-within {
|
|
47
|
+
background-color: var(--border2);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.composer-ring:hover,
|
|
51
|
+
.composer-ring:focus-within {
|
|
52
|
+
--composer-ring-strength: 0.4;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.composer-ring[data-busy='true'] {
|
|
56
|
+
--composer-ring-strength: 0.65;
|
|
57
|
+
|
|
58
|
+
animation: composer-ring-spin 2.4s linear infinite;
|
|
59
|
+
box-shadow: 0 4px 20px -4px color-mix(in oklab, var(--composer-ring-color) 12%, transparent);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
@keyframes composer-ring-spin {
|
|
63
|
+
from {
|
|
64
|
+
--composer-ring-spin: 0deg;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
to {
|
|
68
|
+
--composer-ring-spin: 360deg;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
@media (prefers-reduced-motion: reduce) {
|
|
73
|
+
.composer-ring {
|
|
74
|
+
transition: none;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.composer-ring[data-busy='true'] {
|
|
78
|
+
animation: none;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
1
81
|
@keyframes composer-sending {
|
|
2
82
|
0% {
|
|
3
83
|
transform: translate3d(0, 300%, 0);
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
4
|
|
|
5
5
|
const jsxRuntime = require('react/jsx-runtime');
|
|
6
|
-
const messageScroller = require('../message-scroller-
|
|
6
|
+
const messageScroller = require('../message-scroller-BmzjZZNs.cjs');
|
|
7
7
|
const utils_cn = require('../cn-vA5sWo9W.cjs');
|
|
8
8
|
|
|
9
9
|
function ChatShellRoot({ className, scroller, ...props }) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { d as MessageScrollerProvider, e as MessageScrollerViewport, M as MessageScroller, a as MessageScrollerButton, b as MessageScrollerContent } from '../message-scroller-
|
|
2
|
+
import { d as MessageScrollerProvider, e as MessageScrollerViewport, M as MessageScroller, a as MessageScrollerButton, b as MessageScrollerContent } from '../message-scroller-D5O7sUS5.js';
|
|
3
3
|
import { c as cn } from '../cn-BakJzhuv.js';
|
|
4
4
|
|
|
5
5
|
function ChatShellRoot({ className, scroller, ...props }) {
|
|
@@ -7,6 +7,37 @@ const React = require('react');
|
|
|
7
7
|
const scrollArea = require('../scroll-area-Dv6QagXt.cjs');
|
|
8
8
|
const utils_cn = require('../cn-vA5sWo9W.cjs');
|
|
9
9
|
|
|
10
|
+
function useComposerPointerAngle(enabled) {
|
|
11
|
+
const elementRef = React.useRef(null);
|
|
12
|
+
React.useEffect(() => {
|
|
13
|
+
const element = elementRef.current;
|
|
14
|
+
if (!element || !enabled) return;
|
|
15
|
+
let animationFrame;
|
|
16
|
+
let clientX = 0;
|
|
17
|
+
let clientY = 0;
|
|
18
|
+
const paintAngle = () => {
|
|
19
|
+
animationFrame = void 0;
|
|
20
|
+
const bounds = element.getBoundingClientRect();
|
|
21
|
+
const radians = Math.atan2(
|
|
22
|
+
clientY - (bounds.top + bounds.height / 2),
|
|
23
|
+
clientX - (bounds.left + bounds.width / 2)
|
|
24
|
+
);
|
|
25
|
+
element.style.setProperty("--composer-ring-angle", `${radians * 180 / Math.PI + 90}deg`);
|
|
26
|
+
};
|
|
27
|
+
const trackPointer = (event) => {
|
|
28
|
+
clientX = event.clientX;
|
|
29
|
+
clientY = event.clientY;
|
|
30
|
+
animationFrame ??= requestAnimationFrame(paintAngle);
|
|
31
|
+
};
|
|
32
|
+
window.addEventListener("pointermove", trackPointer, { passive: true });
|
|
33
|
+
return () => {
|
|
34
|
+
window.removeEventListener("pointermove", trackPointer);
|
|
35
|
+
if (animationFrame !== void 0) cancelAnimationFrame(animationFrame);
|
|
36
|
+
};
|
|
37
|
+
}, [enabled]);
|
|
38
|
+
return elementRef;
|
|
39
|
+
}
|
|
40
|
+
|
|
10
41
|
const Composer = React.forwardRef(({ children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("form", { ref, "data-slot": "composer", ...props, children }));
|
|
11
42
|
Composer.displayName = "Composer";
|
|
12
43
|
const ComposerBox = React.forwardRef(
|
|
@@ -28,6 +59,20 @@ const ComposerBox = React.forwardRef(
|
|
|
28
59
|
)
|
|
29
60
|
);
|
|
30
61
|
ComposerBox.displayName = "ComposerBox";
|
|
62
|
+
const ComposerRing = ({ busy = false, className, ...props }) => {
|
|
63
|
+
const ringRef = useComposerPointerAngle(!busy);
|
|
64
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
65
|
+
"div",
|
|
66
|
+
{
|
|
67
|
+
ref: ringRef,
|
|
68
|
+
"data-slot": "composer-ring",
|
|
69
|
+
"data-busy": busy ? "true" : "false",
|
|
70
|
+
className: utils_cn.cn("composer-ring mx-auto w-full max-w-3xl", className),
|
|
71
|
+
...props
|
|
72
|
+
}
|
|
73
|
+
);
|
|
74
|
+
};
|
|
75
|
+
ComposerRing.displayName = "ComposerRing";
|
|
31
76
|
const ComposerAttachments = React.forwardRef(
|
|
32
77
|
({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
33
78
|
"div",
|
|
@@ -98,4 +143,5 @@ exports.ComposerActions = ComposerActions;
|
|
|
98
143
|
exports.ComposerAttachments = ComposerAttachments;
|
|
99
144
|
exports.ComposerBox = ComposerBox;
|
|
100
145
|
exports.ComposerInput = ComposerInput;
|
|
146
|
+
exports.ComposerRing = ComposerRing;
|
|
101
147
|
//# sourceMappingURL=Composer.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Composer.cjs.js","sources":["../../src/ds/components/Composer/composer.tsx"],"sourcesContent":["import type { ComponentPropsWithoutRef } from 'react';\nimport { forwardRef } from 'react';\n\nimport { ScrollArea } from '../ScrollArea';\nimport { cn } from '@/lib/utils';\n\nimport './composer-sending.css';\n\nexport type ComposerProps = ComponentPropsWithoutRef<'form'>;\n\nexport interface ComposerInputProps extends ComponentPropsWithoutRef<'textarea'> {\n /** Maximum height of the scrolling input viewport. */\n maxHeight?: string;\n}\n\nexport const Composer = forwardRef<HTMLFormElement, ComposerProps>(({ children, ...props }, ref) => (\n <form ref={ref} data-slot=\"composer\" {...props}>\n {children}\n </form>\n));\nComposer.displayName = 'Composer';\n\nexport interface ComposerBoxProps extends ComponentPropsWithoutRef<'div'> {\n sendingPulseKey?: number;\n}\n\nexport const ComposerBox = forwardRef<HTMLDivElement, ComposerBoxProps>(\n ({ children, className, sendingPulseKey = 0, ...props }, ref) => (\n <div\n ref={ref}\n data-slot=\"composer-box\"\n className={cn(\n 'duration-normal @container relative mx-auto mt-auto w-full max-w-3xl overflow-hidden rounded-[22px] border border-border2/40 bg-surface3 transition-colors focus-within:border-border2',\n className,\n )}\n {...props}\n >\n <ComposerSendingPulse pulseKey={sendingPulseKey} />\n <div className=\"relative z-10\">{children}</div>\n </div>\n ),\n);\nComposerBox.displayName = 'ComposerBox';\n\nexport const ComposerAttachments = forwardRef<HTMLDivElement, ComponentPropsWithoutRef<'div'>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n role=\"region\"\n data-slot=\"composer-attachments\"\n className={cn('mx-auto w-full max-w-3xl pb-2', className)}\n {...props}\n />\n ),\n);\nComposerAttachments.displayName = 'ComposerAttachments';\n\nexport const ComposerInput = forwardRef<HTMLTextAreaElement, ComposerInputProps>(\n ({ className, maxHeight = '212px', ...props }, ref) => (\n <ScrollArea maxHeight={maxHeight}>\n <textarea\n ref={ref}\n data-slot=\"composer-input\"\n className={cn(\n 'min-h-17 field-sizing-content w-full resize-none overflow-hidden bg-transparent px-3 pt-3 pb-2 text-ui-lg leading-ui-lg text-neutral6 outline-hidden placeholder:text-neutral3 focus:outline-hidden disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n />\n </ScrollArea>\n ),\n);\nComposerInput.displayName = 'ComposerInput';\n\nexport const ComposerActions = forwardRef<HTMLDivElement, ComponentPropsWithoutRef<'div'>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n role=\"region\"\n data-slot=\"composer-actions\"\n className={cn('flex flex-wrap-reverse items-center justify-between gap-2 px-1.5 pb-1.5', className)}\n {...props}\n />\n ),\n);\nComposerActions.displayName = 'ComposerActions';\n\nconst ComposerGradientColumn = ({ className }: { className?: string }) => (\n <div className={cn('flex size-full flex-col -space-y-3', className)}>\n <div className=\"bg-accent1 w-full flex-1 blur-xl\" />\n <div className=\"bg-accent1Dark w-full flex-1 blur-xl\" />\n <div className=\"bg-accent1 w-full flex-1 blur-xl\" />\n <div className=\"bg-accent1Darker w-full flex-1 blur-xl\" />\n </div>\n);\n\nconst ComposerSendingPulse = ({ pulseKey }: { pulseKey: number }) => {\n if (pulseKey === 0) return null;\n\n return (\n <div\n key={pulseKey}\n aria-hidden=\"true\"\n data-slot=\"composer-sending-pulse\"\n className=\"composer-sending pointer-events-none absolute top-0 left-[-10%] z-0 flex h-10 w-[120%] transform-gpu\"\n >\n <ComposerGradientColumn />\n <ComposerGradientColumn className=\"-translate-y-2\" />\n <ComposerGradientColumn />\n </div>\n );\n};\n"],"names":["forwardRef","jsx","jsxs","cn","ScrollArea"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Composer.cjs.js","sources":["../../src/ds/components/Composer/use-composer-pointer-angle.ts","../../src/ds/components/Composer/composer.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\n/** Aims the composer ring at the cursor without re-rendering on every move. */\nexport function useComposerPointerAngle(enabled: boolean) {\n const elementRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const element = elementRef.current;\n if (!element || !enabled) return;\n\n let animationFrame: number | undefined;\n let clientX = 0;\n let clientY = 0;\n\n const paintAngle = () => {\n animationFrame = undefined;\n const bounds = element.getBoundingClientRect();\n const radians = Math.atan2(\n clientY - (bounds.top + bounds.height / 2),\n clientX - (bounds.left + bounds.width / 2),\n );\n // conic-gradient starts at 12 o'clock, atan2 at 3 o'clock\n element.style.setProperty('--composer-ring-angle', `${(radians * 180) / Math.PI + 90}deg`);\n };\n\n const trackPointer = (event: PointerEvent) => {\n clientX = event.clientX;\n clientY = event.clientY;\n animationFrame ??= requestAnimationFrame(paintAngle);\n };\n\n window.addEventListener('pointermove', trackPointer, { passive: true });\n return () => {\n window.removeEventListener('pointermove', trackPointer);\n if (animationFrame !== undefined) cancelAnimationFrame(animationFrame);\n };\n }, [enabled]);\n\n return elementRef;\n}\n","import type { ComponentPropsWithoutRef } from 'react';\nimport { forwardRef } from 'react';\n\nimport { ScrollArea } from '../ScrollArea';\nimport { useComposerPointerAngle } from './use-composer-pointer-angle';\nimport { cn } from '@/lib/utils';\n\nimport './composer-ring.css';\nimport './composer-sending.css';\n\nexport type ComposerProps = ComponentPropsWithoutRef<'form'>;\n\nexport interface ComposerInputProps extends ComponentPropsWithoutRef<'textarea'> {\n /** Maximum height of the scrolling input viewport. */\n maxHeight?: string;\n}\n\nexport const Composer = forwardRef<HTMLFormElement, ComposerProps>(({ children, ...props }, ref) => (\n <form ref={ref} data-slot=\"composer\" {...props}>\n {children}\n </form>\n));\nComposer.displayName = 'Composer';\n\nexport interface ComposerBoxProps extends ComponentPropsWithoutRef<'div'> {\n sendingPulseKey?: number;\n}\n\nexport const ComposerBox = forwardRef<HTMLDivElement, ComposerBoxProps>(\n ({ children, className, sendingPulseKey = 0, ...props }, ref) => (\n <div\n ref={ref}\n data-slot=\"composer-box\"\n className={cn(\n 'duration-normal @container relative mx-auto mt-auto w-full max-w-3xl overflow-hidden rounded-[22px] border border-border2/40 bg-surface3 transition-colors focus-within:border-border2',\n className,\n )}\n {...props}\n >\n <ComposerSendingPulse pulseKey={sendingPulseKey} />\n <div className=\"relative z-10\">{children}</div>\n </div>\n ),\n);\nComposerBox.displayName = 'ComposerBox';\n\nexport interface ComposerRingProps extends ComponentPropsWithoutRef<'div'> {\n busy?: boolean;\n}\n\n/**\n * Edge for the composer box it wraps: a conic arc lit under the cursor on hover,\n * spinning on its own while the agent runs, never both at once. Wraps rather\n * than decorates because the box clips its overflow and would cut the arc off.\n */\nexport const ComposerRing = ({ busy = false, className, ...props }: ComposerRingProps) => {\n const ringRef = useComposerPointerAngle(!busy);\n\n return (\n <div\n ref={ringRef}\n data-slot=\"composer-ring\"\n data-busy={busy ? 'true' : 'false'}\n className={cn('composer-ring mx-auto w-full max-w-3xl', className)}\n {...props}\n />\n );\n};\nComposerRing.displayName = 'ComposerRing';\n\nexport const ComposerAttachments = forwardRef<HTMLDivElement, ComponentPropsWithoutRef<'div'>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n role=\"region\"\n data-slot=\"composer-attachments\"\n className={cn('mx-auto w-full max-w-3xl pb-2', className)}\n {...props}\n />\n ),\n);\nComposerAttachments.displayName = 'ComposerAttachments';\n\nexport const ComposerInput = forwardRef<HTMLTextAreaElement, ComposerInputProps>(\n ({ className, maxHeight = '212px', ...props }, ref) => (\n <ScrollArea maxHeight={maxHeight}>\n <textarea\n ref={ref}\n data-slot=\"composer-input\"\n className={cn(\n 'min-h-17 field-sizing-content w-full resize-none overflow-hidden bg-transparent px-3 pt-3 pb-2 text-ui-lg leading-ui-lg text-neutral6 outline-hidden placeholder:text-neutral3 focus:outline-hidden disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n />\n </ScrollArea>\n ),\n);\nComposerInput.displayName = 'ComposerInput';\n\nexport const ComposerActions = forwardRef<HTMLDivElement, ComponentPropsWithoutRef<'div'>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n role=\"region\"\n data-slot=\"composer-actions\"\n className={cn('flex flex-wrap-reverse items-center justify-between gap-2 px-1.5 pb-1.5', className)}\n {...props}\n />\n ),\n);\nComposerActions.displayName = 'ComposerActions';\n\nconst ComposerGradientColumn = ({ className }: { className?: string }) => (\n <div className={cn('flex size-full flex-col -space-y-3', className)}>\n <div className=\"bg-accent1 w-full flex-1 blur-xl\" />\n <div className=\"bg-accent1Dark w-full flex-1 blur-xl\" />\n <div className=\"bg-accent1 w-full flex-1 blur-xl\" />\n <div className=\"bg-accent1Darker w-full flex-1 blur-xl\" />\n </div>\n);\n\nconst ComposerSendingPulse = ({ pulseKey }: { pulseKey: number }) => {\n if (pulseKey === 0) return null;\n\n return (\n <div\n key={pulseKey}\n aria-hidden=\"true\"\n data-slot=\"composer-sending-pulse\"\n className=\"composer-sending pointer-events-none absolute top-0 left-[-10%] z-0 flex h-10 w-[120%] transform-gpu\"\n >\n <ComposerGradientColumn />\n <ComposerGradientColumn className=\"-translate-y-2\" />\n <ComposerGradientColumn />\n </div>\n );\n};\n"],"names":["useRef","useEffect","forwardRef","jsx","jsxs","cn","ScrollArea"],"mappings":"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"}
|
|
@@ -1,9 +1,40 @@
|
|
|
1
1
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
-
import { forwardRef } from 'react';
|
|
2
|
+
import { useRef, useEffect, forwardRef } from 'react';
|
|
3
3
|
import { S as ScrollArea } from '../scroll-area-DZrEuKjC.js';
|
|
4
4
|
import { c as cn } from '../cn-BakJzhuv.js';
|
|
5
5
|
|
|
6
|
-
import '../Composer.css';
|
|
6
|
+
import '../Composer.css';function useComposerPointerAngle(enabled) {
|
|
7
|
+
const elementRef = useRef(null);
|
|
8
|
+
useEffect(() => {
|
|
9
|
+
const element = elementRef.current;
|
|
10
|
+
if (!element || !enabled) return;
|
|
11
|
+
let animationFrame;
|
|
12
|
+
let clientX = 0;
|
|
13
|
+
let clientY = 0;
|
|
14
|
+
const paintAngle = () => {
|
|
15
|
+
animationFrame = void 0;
|
|
16
|
+
const bounds = element.getBoundingClientRect();
|
|
17
|
+
const radians = Math.atan2(
|
|
18
|
+
clientY - (bounds.top + bounds.height / 2),
|
|
19
|
+
clientX - (bounds.left + bounds.width / 2)
|
|
20
|
+
);
|
|
21
|
+
element.style.setProperty("--composer-ring-angle", `${radians * 180 / Math.PI + 90}deg`);
|
|
22
|
+
};
|
|
23
|
+
const trackPointer = (event) => {
|
|
24
|
+
clientX = event.clientX;
|
|
25
|
+
clientY = event.clientY;
|
|
26
|
+
animationFrame ??= requestAnimationFrame(paintAngle);
|
|
27
|
+
};
|
|
28
|
+
window.addEventListener("pointermove", trackPointer, { passive: true });
|
|
29
|
+
return () => {
|
|
30
|
+
window.removeEventListener("pointermove", trackPointer);
|
|
31
|
+
if (animationFrame !== void 0) cancelAnimationFrame(animationFrame);
|
|
32
|
+
};
|
|
33
|
+
}, [enabled]);
|
|
34
|
+
return elementRef;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const Composer = forwardRef(({ children, ...props }, ref) => /* @__PURE__ */ jsx("form", { ref, "data-slot": "composer", ...props, children }));
|
|
7
38
|
Composer.displayName = "Composer";
|
|
8
39
|
const ComposerBox = forwardRef(
|
|
9
40
|
({ children, className, sendingPulseKey = 0, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
@@ -24,6 +55,20 @@ const ComposerBox = forwardRef(
|
|
|
24
55
|
)
|
|
25
56
|
);
|
|
26
57
|
ComposerBox.displayName = "ComposerBox";
|
|
58
|
+
const ComposerRing = ({ busy = false, className, ...props }) => {
|
|
59
|
+
const ringRef = useComposerPointerAngle(!busy);
|
|
60
|
+
return /* @__PURE__ */ jsx(
|
|
61
|
+
"div",
|
|
62
|
+
{
|
|
63
|
+
ref: ringRef,
|
|
64
|
+
"data-slot": "composer-ring",
|
|
65
|
+
"data-busy": busy ? "true" : "false",
|
|
66
|
+
className: cn("composer-ring mx-auto w-full max-w-3xl", className),
|
|
67
|
+
...props
|
|
68
|
+
}
|
|
69
|
+
);
|
|
70
|
+
};
|
|
71
|
+
ComposerRing.displayName = "ComposerRing";
|
|
27
72
|
const ComposerAttachments = forwardRef(
|
|
28
73
|
({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
29
74
|
"div",
|
|
@@ -89,5 +134,5 @@ const ComposerSendingPulse = ({ pulseKey }) => {
|
|
|
89
134
|
);
|
|
90
135
|
};
|
|
91
136
|
|
|
92
|
-
export { Composer, ComposerActions, ComposerAttachments, ComposerBox, ComposerInput };
|
|
137
|
+
export { Composer, ComposerActions, ComposerAttachments, ComposerBox, ComposerInput, ComposerRing };
|
|
93
138
|
//# sourceMappingURL=Composer.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Composer.es.js","sources":["../../src/ds/components/Composer/composer.tsx"],"sourcesContent":["import type { ComponentPropsWithoutRef } from 'react';\nimport { forwardRef } from 'react';\n\nimport { ScrollArea } from '../ScrollArea';\nimport { cn } from '@/lib/utils';\n\nimport './composer-sending.css';\n\nexport type ComposerProps = ComponentPropsWithoutRef<'form'>;\n\nexport interface ComposerInputProps extends ComponentPropsWithoutRef<'textarea'> {\n /** Maximum height of the scrolling input viewport. */\n maxHeight?: string;\n}\n\nexport const Composer = forwardRef<HTMLFormElement, ComposerProps>(({ children, ...props }, ref) => (\n <form ref={ref} data-slot=\"composer\" {...props}>\n {children}\n </form>\n));\nComposer.displayName = 'Composer';\n\nexport interface ComposerBoxProps extends ComponentPropsWithoutRef<'div'> {\n sendingPulseKey?: number;\n}\n\nexport const ComposerBox = forwardRef<HTMLDivElement, ComposerBoxProps>(\n ({ children, className, sendingPulseKey = 0, ...props }, ref) => (\n <div\n ref={ref}\n data-slot=\"composer-box\"\n className={cn(\n 'duration-normal @container relative mx-auto mt-auto w-full max-w-3xl overflow-hidden rounded-[22px] border border-border2/40 bg-surface3 transition-colors focus-within:border-border2',\n className,\n )}\n {...props}\n >\n <ComposerSendingPulse pulseKey={sendingPulseKey} />\n <div className=\"relative z-10\">{children}</div>\n </div>\n ),\n);\nComposerBox.displayName = 'ComposerBox';\n\nexport const ComposerAttachments = forwardRef<HTMLDivElement, ComponentPropsWithoutRef<'div'>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n role=\"region\"\n data-slot=\"composer-attachments\"\n className={cn('mx-auto w-full max-w-3xl pb-2', className)}\n {...props}\n />\n ),\n);\nComposerAttachments.displayName = 'ComposerAttachments';\n\nexport const ComposerInput = forwardRef<HTMLTextAreaElement, ComposerInputProps>(\n ({ className, maxHeight = '212px', ...props }, ref) => (\n <ScrollArea maxHeight={maxHeight}>\n <textarea\n ref={ref}\n data-slot=\"composer-input\"\n className={cn(\n 'min-h-17 field-sizing-content w-full resize-none overflow-hidden bg-transparent px-3 pt-3 pb-2 text-ui-lg leading-ui-lg text-neutral6 outline-hidden placeholder:text-neutral3 focus:outline-hidden disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n />\n </ScrollArea>\n ),\n);\nComposerInput.displayName = 'ComposerInput';\n\nexport const ComposerActions = forwardRef<HTMLDivElement, ComponentPropsWithoutRef<'div'>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n role=\"region\"\n data-slot=\"composer-actions\"\n className={cn('flex flex-wrap-reverse items-center justify-between gap-2 px-1.5 pb-1.5', className)}\n {...props}\n />\n ),\n);\nComposerActions.displayName = 'ComposerActions';\n\nconst ComposerGradientColumn = ({ className }: { className?: string }) => (\n <div className={cn('flex size-full flex-col -space-y-3', className)}>\n <div className=\"bg-accent1 w-full flex-1 blur-xl\" />\n <div className=\"bg-accent1Dark w-full flex-1 blur-xl\" />\n <div className=\"bg-accent1 w-full flex-1 blur-xl\" />\n <div className=\"bg-accent1Darker w-full flex-1 blur-xl\" />\n </div>\n);\n\nconst ComposerSendingPulse = ({ pulseKey }: { pulseKey: number }) => {\n if (pulseKey === 0) return null;\n\n return (\n <div\n key={pulseKey}\n aria-hidden=\"true\"\n data-slot=\"composer-sending-pulse\"\n className=\"composer-sending pointer-events-none absolute top-0 left-[-10%] z-0 flex h-10 w-[120%] transform-gpu\"\n >\n <ComposerGradientColumn />\n <ComposerGradientColumn className=\"-translate-y-2\" />\n <ComposerGradientColumn />\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Composer.es.js","sources":["../../src/ds/components/Composer/use-composer-pointer-angle.ts","../../src/ds/components/Composer/composer.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\n/** Aims the composer ring at the cursor without re-rendering on every move. */\nexport function useComposerPointerAngle(enabled: boolean) {\n const elementRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const element = elementRef.current;\n if (!element || !enabled) return;\n\n let animationFrame: number | undefined;\n let clientX = 0;\n let clientY = 0;\n\n const paintAngle = () => {\n animationFrame = undefined;\n const bounds = element.getBoundingClientRect();\n const radians = Math.atan2(\n clientY - (bounds.top + bounds.height / 2),\n clientX - (bounds.left + bounds.width / 2),\n );\n // conic-gradient starts at 12 o'clock, atan2 at 3 o'clock\n element.style.setProperty('--composer-ring-angle', `${(radians * 180) / Math.PI + 90}deg`);\n };\n\n const trackPointer = (event: PointerEvent) => {\n clientX = event.clientX;\n clientY = event.clientY;\n animationFrame ??= requestAnimationFrame(paintAngle);\n };\n\n window.addEventListener('pointermove', trackPointer, { passive: true });\n return () => {\n window.removeEventListener('pointermove', trackPointer);\n if (animationFrame !== undefined) cancelAnimationFrame(animationFrame);\n };\n }, [enabled]);\n\n return elementRef;\n}\n","import type { ComponentPropsWithoutRef } from 'react';\nimport { forwardRef } from 'react';\n\nimport { ScrollArea } from '../ScrollArea';\nimport { useComposerPointerAngle } from './use-composer-pointer-angle';\nimport { cn } from '@/lib/utils';\n\nimport './composer-ring.css';\nimport './composer-sending.css';\n\nexport type ComposerProps = ComponentPropsWithoutRef<'form'>;\n\nexport interface ComposerInputProps extends ComponentPropsWithoutRef<'textarea'> {\n /** Maximum height of the scrolling input viewport. */\n maxHeight?: string;\n}\n\nexport const Composer = forwardRef<HTMLFormElement, ComposerProps>(({ children, ...props }, ref) => (\n <form ref={ref} data-slot=\"composer\" {...props}>\n {children}\n </form>\n));\nComposer.displayName = 'Composer';\n\nexport interface ComposerBoxProps extends ComponentPropsWithoutRef<'div'> {\n sendingPulseKey?: number;\n}\n\nexport const ComposerBox = forwardRef<HTMLDivElement, ComposerBoxProps>(\n ({ children, className, sendingPulseKey = 0, ...props }, ref) => (\n <div\n ref={ref}\n data-slot=\"composer-box\"\n className={cn(\n 'duration-normal @container relative mx-auto mt-auto w-full max-w-3xl overflow-hidden rounded-[22px] border border-border2/40 bg-surface3 transition-colors focus-within:border-border2',\n className,\n )}\n {...props}\n >\n <ComposerSendingPulse pulseKey={sendingPulseKey} />\n <div className=\"relative z-10\">{children}</div>\n </div>\n ),\n);\nComposerBox.displayName = 'ComposerBox';\n\nexport interface ComposerRingProps extends ComponentPropsWithoutRef<'div'> {\n busy?: boolean;\n}\n\n/**\n * Edge for the composer box it wraps: a conic arc lit under the cursor on hover,\n * spinning on its own while the agent runs, never both at once. Wraps rather\n * than decorates because the box clips its overflow and would cut the arc off.\n */\nexport const ComposerRing = ({ busy = false, className, ...props }: ComposerRingProps) => {\n const ringRef = useComposerPointerAngle(!busy);\n\n return (\n <div\n ref={ringRef}\n data-slot=\"composer-ring\"\n data-busy={busy ? 'true' : 'false'}\n className={cn('composer-ring mx-auto w-full max-w-3xl', className)}\n {...props}\n />\n );\n};\nComposerRing.displayName = 'ComposerRing';\n\nexport const ComposerAttachments = forwardRef<HTMLDivElement, ComponentPropsWithoutRef<'div'>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n role=\"region\"\n data-slot=\"composer-attachments\"\n className={cn('mx-auto w-full max-w-3xl pb-2', className)}\n {...props}\n />\n ),\n);\nComposerAttachments.displayName = 'ComposerAttachments';\n\nexport const ComposerInput = forwardRef<HTMLTextAreaElement, ComposerInputProps>(\n ({ className, maxHeight = '212px', ...props }, ref) => (\n <ScrollArea maxHeight={maxHeight}>\n <textarea\n ref={ref}\n data-slot=\"composer-input\"\n className={cn(\n 'min-h-17 field-sizing-content w-full resize-none overflow-hidden bg-transparent px-3 pt-3 pb-2 text-ui-lg leading-ui-lg text-neutral6 outline-hidden placeholder:text-neutral3 focus:outline-hidden disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n />\n </ScrollArea>\n ),\n);\nComposerInput.displayName = 'ComposerInput';\n\nexport const ComposerActions = forwardRef<HTMLDivElement, ComponentPropsWithoutRef<'div'>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n role=\"region\"\n data-slot=\"composer-actions\"\n className={cn('flex flex-wrap-reverse items-center justify-between gap-2 px-1.5 pb-1.5', className)}\n {...props}\n />\n ),\n);\nComposerActions.displayName = 'ComposerActions';\n\nconst ComposerGradientColumn = ({ className }: { className?: string }) => (\n <div className={cn('flex size-full flex-col -space-y-3', className)}>\n <div className=\"bg-accent1 w-full flex-1 blur-xl\" />\n <div className=\"bg-accent1Dark w-full flex-1 blur-xl\" />\n <div className=\"bg-accent1 w-full flex-1 blur-xl\" />\n <div className=\"bg-accent1Darker w-full flex-1 blur-xl\" />\n </div>\n);\n\nconst ComposerSendingPulse = ({ pulseKey }: { pulseKey: number }) => {\n if (pulseKey === 0) return null;\n\n return (\n <div\n key={pulseKey}\n aria-hidden=\"true\"\n data-slot=\"composer-sending-pulse\"\n className=\"composer-sending pointer-events-none absolute top-0 left-[-10%] z-0 flex h-10 w-[120%] transform-gpu\"\n >\n <ComposerGradientColumn />\n <ComposerGradientColumn className=\"-translate-y-2\" />\n <ComposerGradientColumn />\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
4
|
|
|
5
|
-
const dataList = require('../data-list-
|
|
6
|
-
const dataListSkeleton = require('../data-list-skeleton-
|
|
5
|
+
const dataList = require('../data-list-B3P5IlxV.cjs');
|
|
6
|
+
const dataListSkeleton = require('../data-list-skeleton-ClGPuUja.cjs');
|
|
7
7
|
const jsxRuntime = require('react/jsx-runtime');
|
|
8
|
-
const dataListTopCell = require('../data-list-top-cell-
|
|
8
|
+
const dataListTopCell = require('../data-list-top-cell-Dfg0AKmr.cjs');
|
|
9
9
|
const dateFns = require('date-fns');
|
|
10
|
-
const tracesDataList = require('../traces-data-list-
|
|
10
|
+
const tracesDataList = require('../traces-data-list-D3TOjHkm.cjs');
|
|
11
11
|
|
|
12
12
|
function toDate(value) {
|
|
13
13
|
const date = value instanceof Date ? value : new Date(value);
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export { D as DataList } from '../data-list-
|
|
2
|
-
export { D as DataListSkeleton } from '../data-list-skeleton-
|
|
1
|
+
export { D as DataList } from '../data-list-CZC8N3I4.js';
|
|
2
|
+
export { D as DataListSkeleton } from '../data-list-skeleton-BDQEjCWH.js';
|
|
3
3
|
import { jsx } from 'react/jsx-runtime';
|
|
4
|
-
import { a as DataListCell, c as DataListNextPageLoading, f as DataListNoMatch,
|
|
4
|
+
import { a as DataListCell, c as DataListNextPageLoading, f as DataListNoMatch, i as DataListRowButton, m as DataListTopCell, n as DataListTop, D as DataListRoot } from '../data-list-top-cell-S98SdRsx.js';
|
|
5
5
|
import { format, isToday } from 'date-fns';
|
|
6
|
-
export { T as TracesDataList } from '../traces-data-list-
|
|
6
|
+
export { T as TracesDataList } from '../traces-data-list-a3sYTxch.js';
|
|
7
7
|
|
|
8
8
|
function toDate(value) {
|
|
9
9
|
const date = value instanceof Date ? value : new Date(value);
|
|
@@ -10,7 +10,7 @@ const Button = require('../Button-Bm94fEF2.cjs');
|
|
|
10
10
|
const Notice = require('../Notice-B9cdEg8R.cjs');
|
|
11
11
|
const envFile = require('../env-file-BU2hStkm.cjs');
|
|
12
12
|
const Txt = require('../Txt-I5lK8zy7.cjs');
|
|
13
|
-
const dataList = require('../data-list-
|
|
13
|
+
const dataList = require('../data-list-B3P5IlxV.cjs');
|
|
14
14
|
const hooks_useCopyToClipboard = require('../hooks/use-copy-to-clipboard.cjs.js');
|
|
15
15
|
const fieldBlock = require('../field-block-BcTR08I7.cjs');
|
|
16
16
|
const inputGroup = require('../input-group-CH72YUVL.cjs');
|
|
@@ -6,7 +6,7 @@ import { B as Button } from '../Button-Bx2lFdqb.js';
|
|
|
6
6
|
import { N as Notice } from '../Notice-DIK9IZsq.js';
|
|
7
7
|
import { D as DUPLICATE_ENVIRONMENT_VARIABLE_MESSAGE } from '../env-file-BITYowCx.js';
|
|
8
8
|
import { T as Txt } from '../Txt-Df42XG5p.js';
|
|
9
|
-
import { D as DataList } from '../data-list-
|
|
9
|
+
import { D as DataList } from '../data-list-CZC8N3I4.js';
|
|
10
10
|
import { useCopyToClipboard } from '../hooks/use-copy-to-clipboard.es.js';
|
|
11
11
|
import { F as FieldBlock } from '../field-block-B63CpA4d.js';
|
|
12
12
|
import { I as InputGroup, c as InputGroupInput, a as InputGroupAddon, b as InputGroupButton } from '../input-group-Dzs-ai0n.js';
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
4
|
|
|
5
|
-
const logsDataList = require('../logs-data-list-
|
|
6
|
-
const dataListSkeleton = require('../data-list-skeleton-
|
|
5
|
+
const logsDataList = require('../logs-data-list-DTt_DmNk.cjs');
|
|
6
|
+
const dataListSkeleton = require('../data-list-skeleton-ClGPuUja.cjs');
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { L as LogsDataList } from '../logs-data-list-
|
|
2
|
-
export { D as LogsDataListSkeleton } from '../data-list-skeleton-
|
|
1
|
+
export { L as LogsDataList } from '../logs-data-list-C9Q9MHsz.js';
|
|
2
|
+
export { D as LogsDataListSkeleton } from '../data-list-skeleton-BDQEjCWH.js';
|
|
3
3
|
//# sourceMappingURL=LogsDataList.es.js.map
|