@osdk/react-components 0.33.0 → 0.34.0-main-d24cc61b1e7fde7722d8229ed2b6821f5ce1bf8a
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/AGENTS.md +3 -0
- package/CHANGELOG.md +19 -0
- package/README.md +14 -13
- package/build/browser/aip-agent-chat/AipAgentChat.js +113 -0
- package/build/browser/aip-agent-chat/AipAgentChat.js.map +1 -0
- package/build/browser/aip-agent-chat/AipAgentChat.module.css +231 -0
- package/build/browser/aip-agent-chat/AipAgentChat.module.css.js +29 -0
- package/build/browser/aip-agent-chat/AipAgentChatApi.js +2 -0
- package/build/browser/aip-agent-chat/AipAgentChatApi.js.map +1 -0
- package/build/browser/aip-agent-chat/BaseAipAgentChat.js +67 -0
- package/build/browser/aip-agent-chat/BaseAipAgentChat.js.map +1 -0
- package/build/browser/aip-agent-chat/components/AipAgentChatComposer.js +96 -0
- package/build/browser/aip-agent-chat/components/AipAgentChatComposer.js.map +1 -0
- package/build/browser/aip-agent-chat/components/AipAgentChatLoader.js +43 -0
- package/build/browser/aip-agent-chat/components/AipAgentChatLoader.js.map +1 -0
- package/build/browser/aip-agent-chat/components/AipAgentChatMessage.js +60 -0
- package/build/browser/aip-agent-chat/components/AipAgentChatMessage.js.map +1 -0
- package/build/browser/aip-agent-chat/components/AipAgentChatMessageList.js +60 -0
- package/build/browser/aip-agent-chat/components/AipAgentChatMessageList.js.map +1 -0
- package/build/browser/aip-agent-chat/components/AipAgentChatModelPicker.js +56 -0
- package/build/browser/aip-agent-chat/components/AipAgentChatModelPicker.js.map +1 -0
- package/build/browser/aip-agent-chat/hooks/useChatAutoScroll.js +61 -0
- package/build/browser/aip-agent-chat/hooks/useChatAutoScroll.js.map +1 -0
- package/build/browser/base-components/callout/Callout.js +65 -0
- package/build/browser/base-components/callout/Callout.js.map +1 -0
- package/build/browser/base-components/callout/Callout.module.css +59 -0
- package/build/browser/base-components/callout/Callout.module.css.js +15 -0
- package/build/browser/public/experimental/aip-agent-chat.js +22 -0
- package/build/browser/public/experimental/aip-agent-chat.js.map +1 -0
- package/build/browser/styles.css +402 -0
- package/build/browser/tokens/base-tokens/dark.css +10 -0
- package/build/browser/tokens/component-tokens/aip-agent-chat.css +56 -0
- package/build/browser/tokens/component-tokens/callout.css +40 -0
- package/build/browser/tokens.css +2 -0
- package/build/browser/util/UserAgent.js +1 -1
- package/build/browser/util/UserAgent.js.map +1 -1
- package/build/cjs/{chunk-N5NOB4G4.cjs → chunk-4SBWDLNA.cjs} +4 -4
- package/build/cjs/{chunk-N5NOB4G4.cjs.map → chunk-4SBWDLNA.cjs.map} +1 -1
- package/build/cjs/{chunk-PFGIO77A.cjs → chunk-5JPP5IKU.cjs} +4 -4
- package/build/cjs/{chunk-PFGIO77A.cjs.map → chunk-5JPP5IKU.cjs.map} +1 -1
- package/build/cjs/{chunk-56CFJTXV.cjs → chunk-73EYJP6Z.cjs} +6 -6
- package/build/cjs/{chunk-56CFJTXV.cjs.map → chunk-73EYJP6Z.cjs.map} +1 -1
- package/build/cjs/{chunk-XCZD54BD.cjs → chunk-ABKLMCWO.cjs} +4 -4
- package/build/cjs/{chunk-XCZD54BD.cjs.map → chunk-ABKLMCWO.cjs.map} +1 -1
- package/build/cjs/{chunk-QWFT3G4W.cjs → chunk-EOXGPHI7.cjs} +4 -4
- package/build/cjs/{chunk-QWFT3G4W.cjs.map → chunk-EOXGPHI7.cjs.map} +1 -1
- package/build/cjs/chunk-HM6F2PSA.cjs +11 -0
- package/build/cjs/{chunk-N7TOWLUY.cjs.map → chunk-HM6F2PSA.cjs.map} +1 -1
- package/build/cjs/chunk-ILBAVINW.cjs +11 -0
- package/build/cjs/{chunk-SUEZQS7M.cjs.map → chunk-ILBAVINW.cjs.map} +1 -1
- package/build/cjs/chunk-MSUA3D5M.cjs +11 -0
- package/build/cjs/{chunk-AEFCONAY.cjs.map → chunk-MSUA3D5M.cjs.map} +1 -1
- package/build/cjs/{chunk-4AGEVOFW.cjs → chunk-MV4WJDCS.cjs} +4 -4
- package/build/cjs/{chunk-4AGEVOFW.cjs.map → chunk-MV4WJDCS.cjs.map} +1 -1
- package/build/cjs/{chunk-LYAAHEAS.cjs → chunk-PSXAPQB3.cjs} +4 -4
- package/build/cjs/{chunk-LYAAHEAS.cjs.map → chunk-PSXAPQB3.cjs.map} +1 -1
- package/build/cjs/chunk-RCL5R3P4.cjs +11 -0
- package/build/cjs/{chunk-D6RQIMMX.cjs.map → chunk-RCL5R3P4.cjs.map} +1 -1
- package/build/cjs/{chunk-OTAWBR27.cjs → chunk-S7Z4MCUS.cjs} +4 -4
- package/build/cjs/{chunk-OTAWBR27.cjs.map → chunk-S7Z4MCUS.cjs.map} +1 -1
- package/build/cjs/{chunk-364UCCB2.cjs → chunk-WVRYCKJY.cjs} +3 -3
- package/build/cjs/chunk-WVRYCKJY.cjs.map +1 -0
- package/build/cjs/chunk-YNECVUTQ.cjs +11 -0
- package/build/cjs/{chunk-3MDT2TJK.cjs.map → chunk-YNECVUTQ.cjs.map} +1 -1
- package/build/cjs/public/experimental/action-form.cjs +4 -4
- package/build/cjs/public/experimental/aip-agent-chat.cjs +434 -0
- package/build/cjs/public/experimental/aip-agent-chat.cjs.map +1 -0
- package/build/cjs/public/experimental/aip-agent-chat.css +304 -0
- package/build/cjs/public/experimental/aip-agent-chat.css.map +1 -0
- package/build/cjs/public/experimental/aip-agent-chat.d.cts +202 -0
- package/build/cjs/public/experimental/cbac-picker.cjs +11 -11
- package/build/cjs/public/experimental/document-viewer.cjs +6 -6
- package/build/cjs/public/experimental/email-viewer.cjs +3 -3
- package/build/cjs/public/experimental/excel-viewer.cjs +3 -3
- package/build/cjs/public/experimental/filter-list.cjs +15 -15
- package/build/cjs/public/experimental/image-viewer.cjs +3 -3
- package/build/cjs/public/experimental/markdown-renderer.cjs +3 -3
- package/build/cjs/public/experimental/object-table.cjs +8 -8
- package/build/cjs/public/experimental/pdf-viewer.cjs +7 -7
- package/build/cjs/public/experimental/tiff-renderer.cjs +3 -3
- package/build/cjs/public/experimental/video-viewer.cjs +3 -3
- package/build/cjs/public/experimental/xml-viewer.cjs +3 -3
- package/build/cjs/public/experimental.cjs +74 -74
- package/build/esm/aip-agent-chat/AipAgentChat.js +113 -0
- package/build/esm/aip-agent-chat/AipAgentChat.js.map +1 -0
- package/build/esm/aip-agent-chat/AipAgentChat.module.css +231 -0
- package/build/esm/aip-agent-chat/AipAgentChatApi.js +2 -0
- package/build/esm/aip-agent-chat/AipAgentChatApi.js.map +1 -0
- package/build/esm/aip-agent-chat/BaseAipAgentChat.js +67 -0
- package/build/esm/aip-agent-chat/BaseAipAgentChat.js.map +1 -0
- package/build/esm/aip-agent-chat/components/AipAgentChatComposer.js +96 -0
- package/build/esm/aip-agent-chat/components/AipAgentChatComposer.js.map +1 -0
- package/build/esm/aip-agent-chat/components/AipAgentChatLoader.js +43 -0
- package/build/esm/aip-agent-chat/components/AipAgentChatLoader.js.map +1 -0
- package/build/esm/aip-agent-chat/components/AipAgentChatMessage.js +60 -0
- package/build/esm/aip-agent-chat/components/AipAgentChatMessage.js.map +1 -0
- package/build/esm/aip-agent-chat/components/AipAgentChatMessageList.js +60 -0
- package/build/esm/aip-agent-chat/components/AipAgentChatMessageList.js.map +1 -0
- package/build/esm/aip-agent-chat/components/AipAgentChatModelPicker.js +56 -0
- package/build/esm/aip-agent-chat/components/AipAgentChatModelPicker.js.map +1 -0
- package/build/esm/aip-agent-chat/hooks/useChatAutoScroll.js +61 -0
- package/build/esm/aip-agent-chat/hooks/useChatAutoScroll.js.map +1 -0
- package/build/esm/base-components/callout/Callout.js +65 -0
- package/build/esm/base-components/callout/Callout.js.map +1 -0
- package/build/esm/base-components/callout/Callout.module.css +59 -0
- package/build/esm/public/experimental/aip-agent-chat.js +22 -0
- package/build/esm/public/experimental/aip-agent-chat.js.map +1 -0
- package/build/esm/tokens/base-tokens/dark.css +10 -0
- package/build/esm/tokens/component-tokens/aip-agent-chat.css +56 -0
- package/build/esm/tokens/component-tokens/callout.css +40 -0
- package/build/esm/tokens.css +2 -0
- package/build/esm/util/UserAgent.js +1 -1
- package/build/esm/util/UserAgent.js.map +1 -1
- package/build/types/aip-agent-chat/AipAgentChat.d.ts +10 -0
- package/build/types/aip-agent-chat/AipAgentChat.d.ts.map +1 -0
- package/build/types/aip-agent-chat/AipAgentChatApi.d.ts +135 -0
- package/build/types/aip-agent-chat/AipAgentChatApi.d.ts.map +1 -0
- package/build/types/aip-agent-chat/BaseAipAgentChat.d.ts +55 -0
- package/build/types/aip-agent-chat/BaseAipAgentChat.d.ts.map +1 -0
- package/build/types/aip-agent-chat/components/AipAgentChatComposer.d.ts +19 -0
- package/build/types/aip-agent-chat/components/AipAgentChatComposer.d.ts.map +1 -0
- package/build/types/aip-agent-chat/components/AipAgentChatLoader.d.ts +9 -0
- package/build/types/aip-agent-chat/components/AipAgentChatLoader.d.ts.map +1 -0
- package/build/types/aip-agent-chat/components/AipAgentChatMessage.d.ts +12 -0
- package/build/types/aip-agent-chat/components/AipAgentChatMessage.d.ts.map +1 -0
- package/build/types/aip-agent-chat/components/AipAgentChatMessageList.d.ts +11 -0
- package/build/types/aip-agent-chat/components/AipAgentChatMessageList.d.ts.map +1 -0
- package/build/types/aip-agent-chat/components/AipAgentChatModelPicker.d.ts +16 -0
- package/build/types/aip-agent-chat/components/AipAgentChatModelPicker.d.ts.map +1 -0
- package/build/types/aip-agent-chat/hooks/useChatAutoScroll.d.ts +11 -0
- package/build/types/aip-agent-chat/hooks/useChatAutoScroll.d.ts.map +1 -0
- package/build/types/base-components/callout/Callout.d.ts +33 -0
- package/build/types/base-components/callout/Callout.d.ts.map +1 -0
- package/build/types/public/experimental/aip-agent-chat.d.ts +7 -0
- package/build/types/public/experimental/aip-agent-chat.d.ts.map +1 -0
- package/docs/AipAgentChat.md +207 -0
- package/docs/CSSVariables.md +52 -0
- package/docs/Welcome.md +1 -0
- package/package.json +24 -8
- package/build/cjs/chunk-364UCCB2.cjs.map +0 -1
- package/build/cjs/chunk-3MDT2TJK.cjs +0 -11
- package/build/cjs/chunk-AEFCONAY.cjs +0 -11
- package/build/cjs/chunk-D6RQIMMX.cjs +0 -11
- package/build/cjs/chunk-N7TOWLUY.cjs +0 -11
- package/build/cjs/chunk-SUEZQS7M.cjs +0 -11
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
# AipAgentChat
|
|
2
|
+
|
|
3
|
+
A React component for rendering an AI chat surface backed by Foundry's
|
|
4
|
+
LMS via `useChat` from `@osdk/react/experimental/aip`. Importing the
|
|
5
|
+
component is sufficient — consumers do not need to import `useChat` or
|
|
6
|
+
`foundryModel` themselves.
|
|
7
|
+
|
|
8
|
+
## Import
|
|
9
|
+
|
|
10
|
+
```tsx
|
|
11
|
+
import {
|
|
12
|
+
AipAgentChat,
|
|
13
|
+
BaseAipAgentChat,
|
|
14
|
+
} from "@osdk/react-components/experimental/aip-agent-chat";
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
- **`AipAgentChat`** — Primary component for OSDK usage. Accepts a
|
|
18
|
+
Foundry `PlatformClient` and an LMS model API name; constructs the
|
|
19
|
+
language-model handle, drives `useChat`, and renders the chat UI.
|
|
20
|
+
- **`BaseAipAgentChat`** — Lower-level OSDK-agnostic component that
|
|
21
|
+
accepts `messages`, `status`, and `onSendMessage` directly. Use this
|
|
22
|
+
when you already manage chat state yourself (a custom hook, a
|
|
23
|
+
non-OSDK backend, etc.).
|
|
24
|
+
|
|
25
|
+
## Usage
|
|
26
|
+
|
|
27
|
+
### Minimal
|
|
28
|
+
|
|
29
|
+
```tsx
|
|
30
|
+
import { AipAgentChat } from "@osdk/react-components/experimental/aip-agent-chat";
|
|
31
|
+
import { platformClient } from "./foundryClient.js";
|
|
32
|
+
|
|
33
|
+
// `model` and `defaultModel` are both optional — falls back to "gpt-4o".
|
|
34
|
+
<AipAgentChat client={platformClient} />;
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Pinned model
|
|
38
|
+
|
|
39
|
+
```tsx
|
|
40
|
+
<AipAgentChat
|
|
41
|
+
client={platformClient}
|
|
42
|
+
model="gpt-4o"
|
|
43
|
+
system="You are a concise assistant. Keep answers short."
|
|
44
|
+
/>;
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### With model picker (controlled)
|
|
48
|
+
|
|
49
|
+
```tsx
|
|
50
|
+
function MyChat() {
|
|
51
|
+
const [model, setModel] = useState("gpt-4o");
|
|
52
|
+
return (
|
|
53
|
+
<AipAgentChat
|
|
54
|
+
client={platformClient}
|
|
55
|
+
model={model}
|
|
56
|
+
availableModels={["gpt-4o", "AnthropicClaude_4_6_Sonnet"]}
|
|
57
|
+
onModelChange={setModel}
|
|
58
|
+
/>
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### With model picker (uncontrolled)
|
|
64
|
+
|
|
65
|
+
```tsx
|
|
66
|
+
<AipAgentChat
|
|
67
|
+
client={platformClient}
|
|
68
|
+
defaultModel="gpt-4o"
|
|
69
|
+
availableModels={["gpt-4o", "AnthropicClaude_4_6_Sonnet"]}
|
|
70
|
+
onModelChange={(modelName) => analytics.track({ modelName })}
|
|
71
|
+
/>;
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
The component manages model state internally; `onModelChange` is a
|
|
75
|
+
non-controlling listener (analytics, persistence, etc.).
|
|
76
|
+
|
|
77
|
+
### Custom render
|
|
78
|
+
|
|
79
|
+
```tsx
|
|
80
|
+
import {
|
|
81
|
+
AipAgentChat,
|
|
82
|
+
getUIMessageText,
|
|
83
|
+
type UIMessage,
|
|
84
|
+
} from "@osdk/react-components/experimental/aip-agent-chat";
|
|
85
|
+
|
|
86
|
+
<AipAgentChat
|
|
87
|
+
client={platformClient}
|
|
88
|
+
model="gpt-4o"
|
|
89
|
+
renderMessage={(message: UIMessage) => (
|
|
90
|
+
<div>
|
|
91
|
+
<strong>{message.role}:</strong> {getUIMessageText(message)}
|
|
92
|
+
</div>
|
|
93
|
+
)}
|
|
94
|
+
renderEmptyState={() => <p>Ready when you are.</p>}
|
|
95
|
+
/>;
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Drop down to BaseAipAgentChat
|
|
99
|
+
|
|
100
|
+
`BaseAipAgentChat` is OSDK-agnostic — the consumer drives the chat by
|
|
101
|
+
passing the current `messages`, `status`, `error`, and an `onSendMessage`
|
|
102
|
+
callback that resolves once the user's message has been forwarded.
|
|
103
|
+
Use it for non-OSDK backends, custom transports, or unit tests.
|
|
104
|
+
|
|
105
|
+
```tsx
|
|
106
|
+
import {
|
|
107
|
+
BaseAipAgentChat,
|
|
108
|
+
type ChatStatus,
|
|
109
|
+
type UIMessage,
|
|
110
|
+
} from "@osdk/react-components/experimental/aip-agent-chat";
|
|
111
|
+
|
|
112
|
+
function MyChat() {
|
|
113
|
+
const [messages, setMessages] = useState<ReadonlyArray<UIMessage>>([]);
|
|
114
|
+
const [status, setStatus] = useState<ChatStatus>("ready");
|
|
115
|
+
const [error, setError] = useState<Error | undefined>();
|
|
116
|
+
|
|
117
|
+
return (
|
|
118
|
+
<BaseAipAgentChat
|
|
119
|
+
messages={messages}
|
|
120
|
+
status={status}
|
|
121
|
+
error={error}
|
|
122
|
+
onSendMessage={async (text) => {
|
|
123
|
+
setStatus("submitted");
|
|
124
|
+
try {
|
|
125
|
+
const reply = await callMyBackend(text, { history: messages });
|
|
126
|
+
setMessages((prev) => [
|
|
127
|
+
...prev,
|
|
128
|
+
{
|
|
129
|
+
id: crypto.randomUUID(),
|
|
130
|
+
role: "user",
|
|
131
|
+
parts: [{ type: "text", text }],
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
id: crypto.randomUUID(),
|
|
135
|
+
role: "assistant",
|
|
136
|
+
parts: [{ type: "text", text: reply }],
|
|
137
|
+
},
|
|
138
|
+
]);
|
|
139
|
+
setStatus("ready");
|
|
140
|
+
} catch (err) {
|
|
141
|
+
setError(err as Error);
|
|
142
|
+
setStatus("error");
|
|
143
|
+
}
|
|
144
|
+
}}
|
|
145
|
+
onStop={() => setStatus("ready")}
|
|
146
|
+
onClearError={() => setError(undefined)}
|
|
147
|
+
/>
|
|
148
|
+
);
|
|
149
|
+
}
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### Drop further: useChat directly
|
|
153
|
+
|
|
154
|
+
For full control over the chat hook (regenerate, multi-step agent
|
|
155
|
+
loops, custom transports), call `useChat` from `@osdk/react/experimental/aip`
|
|
156
|
+
yourself and feed the result into your own UI.
|
|
157
|
+
|
|
158
|
+
```tsx
|
|
159
|
+
import { foundryModel } from "@osdk/aip-core";
|
|
160
|
+
import { useChat } from "@osdk/react/experimental/aip";
|
|
161
|
+
|
|
162
|
+
function MyChat() {
|
|
163
|
+
const lmsModel = useMemo(
|
|
164
|
+
() => foundryModel({ client: platformClient, model: "gpt-4o" }),
|
|
165
|
+
[],
|
|
166
|
+
);
|
|
167
|
+
const { messages, status, error, sendMessage, stop, clearError } = useChat({
|
|
168
|
+
model: lmsModel,
|
|
169
|
+
});
|
|
170
|
+
|
|
171
|
+
return (
|
|
172
|
+
<YourCustomChatLayout
|
|
173
|
+
messages={messages}
|
|
174
|
+
status={status}
|
|
175
|
+
error={error}
|
|
176
|
+
onSend={(text) => void sendMessage({ text })}
|
|
177
|
+
onStop={stop}
|
|
178
|
+
onClearError={clearError}
|
|
179
|
+
/>
|
|
180
|
+
);
|
|
181
|
+
}
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
## Props
|
|
185
|
+
|
|
186
|
+
See [`AipAgentChatApi.ts`](../src/aip-agent-chat/AipAgentChatApi.ts) for
|
|
187
|
+
the full prop list with JSDoc. `client` is the only required prop.
|
|
188
|
+
`model` (controlled) and `defaultModel` (uncontrolled) are both
|
|
189
|
+
optional; if neither is supplied the chat falls back to the first
|
|
190
|
+
entry of `availableModels` (when provided), or to `"gpt-4o"`. Notable
|
|
191
|
+
optional props:
|
|
192
|
+
|
|
193
|
+
- `availableModels` + `onModelChange` — render a model picker in the
|
|
194
|
+
composer footer.
|
|
195
|
+
- `system` — system prompt prepended to every request.
|
|
196
|
+
- `initialMessages` — seed conversation snapshot.
|
|
197
|
+
- `enableAutoScroll` (default `true`) — auto-pin to the bottom of the
|
|
198
|
+
message list as new tokens arrive.
|
|
199
|
+
- `renderEmptyState` / `renderMessage` — render overrides.
|
|
200
|
+
- `onError`, `onFinish` — listeners forwarded to `useChat`.
|
|
201
|
+
|
|
202
|
+
## Theming
|
|
203
|
+
|
|
204
|
+
CSS variables are documented in
|
|
205
|
+
[`docs/CSSVariables.md`](./CSSVariables.md). The `--osdk-aip-agent-chat-*`
|
|
206
|
+
namespace covers spacing, bubble colors, composer styling, and the
|
|
207
|
+
3-dot loader.
|
package/docs/CSSVariables.md
CHANGED
|
@@ -232,6 +232,58 @@ Component-specific semantic tokens that may reference Blueprint tokens or define
|
|
|
232
232
|
| `--osdk-surface-border` | `var(--osdk-surface-border-width) solid var(--osdk-surface-border-color-default)` | Reusable border shorthand |
|
|
233
233
|
| `--osdk-disabled-opacity` | `0.5` | Disabled state opacity |
|
|
234
234
|
|
|
235
|
+
### AIP Agent Chat
|
|
236
|
+
|
|
237
|
+
Tokens for the `AipAgentChat` chat surface (container, message bubbles, composer, empty state, loader, error banner).
|
|
238
|
+
|
|
239
|
+
| Variable | Default Value | Description |
|
|
240
|
+
| ---------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------- |
|
|
241
|
+
| `--osdk-aip-agent-chat-background` | `var(--osdk-background-primary)` | Chat container background |
|
|
242
|
+
| `--osdk-aip-agent-chat-border-color` | `var(--osdk-surface-border-color-default)` | Container and composer separator color |
|
|
243
|
+
| `--osdk-aip-agent-chat-border-radius` | `var(--osdk-surface-border-radius)` | Container corner radius |
|
|
244
|
+
| `--osdk-aip-agent-chat-padding` | `calc(var(--osdk-surface-spacing) * 5)` | Outer padding for message list and composer |
|
|
245
|
+
| `--osdk-aip-agent-chat-message-gap` | `calc(var(--osdk-surface-spacing) * 5)` | Vertical gap between messages |
|
|
246
|
+
| `--osdk-aip-agent-chat-section-gap` | `calc(var(--osdk-surface-spacing) * 2.5)` | Gap between composer rows / footer items |
|
|
247
|
+
| `--osdk-aip-agent-chat-content-max-width` | `780px` | Maximum width of the chat content area |
|
|
248
|
+
| `--osdk-aip-agent-chat-bubble-padding` | `calc(var(--osdk-surface-spacing) * 3)` | Padding inside each message bubble |
|
|
249
|
+
| `--osdk-aip-agent-chat-bubble-border-radius` | `var(--osdk-surface-border-radius)` | Bubble corner radius |
|
|
250
|
+
| `--osdk-aip-agent-chat-bubble-max-width` | `80%` | Maximum bubble width |
|
|
251
|
+
| `--osdk-aip-agent-chat-user-bubble-background` | `var(--osdk-background-secondary)` | User-message bubble background |
|
|
252
|
+
| `--osdk-aip-agent-chat-user-bubble-color` | `var(--osdk-typography-color-default-rest)` | User-message text color |
|
|
253
|
+
| `--osdk-aip-agent-chat-user-bubble-border-radius` | `var(--osdk-surface-border-radius) var(--osdk-surface-border-radius) 0 var(--osdk-surface-border-radius)` | User-message bubble corner radius (chat-tail shape) |
|
|
254
|
+
| `--osdk-aip-agent-chat-assistant-bubble-color` | `var(--osdk-typography-color-default-rest)` | Assistant-message text color |
|
|
255
|
+
| `--osdk-aip-agent-chat-composer-border-radius` | `calc(var(--osdk-surface-spacing) * 2.5)` | Composer input border radius |
|
|
256
|
+
| `--osdk-aip-agent-chat-composer-background` | `var(--osdk-surface-background-color-default-rest)` | Composer background |
|
|
257
|
+
| `--osdk-aip-agent-chat-composer-textarea-min-height` | `calc(var(--osdk-surface-spacing) * 14)` | Textarea minimum height |
|
|
258
|
+
| `--osdk-aip-agent-chat-composer-textarea-max-height` | `200px` | Textarea maximum height |
|
|
259
|
+
| `--osdk-aip-agent-chat-empty-color` | `var(--osdk-typography-color-muted)` | Empty-state subtext color |
|
|
260
|
+
| `--osdk-aip-agent-chat-empty-icon-color` | `var(--osdk-intent-primary-rest)` | Empty-state icon color |
|
|
261
|
+
| `--osdk-aip-agent-chat-empty-icon-size` | `calc(var(--osdk-surface-spacing) * 12)` | Empty-state icon size |
|
|
262
|
+
| `--osdk-aip-agent-chat-loader-color` | `var(--osdk-typography-color-muted)` | 3-dot streaming loader color |
|
|
263
|
+
| `--osdk-aip-agent-chat-loader-dot-size` | `calc(var(--osdk-surface-spacing) * 1.5)` | Loader dot diameter |
|
|
264
|
+
| `--osdk-aip-agent-chat-loader-dot-gap` | `calc(var(--osdk-surface-spacing) * 0.5)` | Loader dot gap |
|
|
265
|
+
|
|
266
|
+
### Callout
|
|
267
|
+
|
|
268
|
+
Tokens for the `Callout` component used for error, warning, success, and info banners. In dark mode, the intent text colors switch to brighter `--rest` shades for readability.
|
|
269
|
+
|
|
270
|
+
| Variable | Default Value | Description |
|
|
271
|
+
| ----------------------------------- | ---------------------------------------------------------------------------- | ------------------------- |
|
|
272
|
+
| `--osdk-callout-padding` | `calc(var(--osdk-surface-spacing) * 4)` | Inner padding |
|
|
273
|
+
| `--osdk-callout-gap` | `calc(var(--osdk-surface-spacing) * 2)` | Gap between icon and text |
|
|
274
|
+
| `--osdk-callout-border-radius` | `var(--osdk-surface-border-radius)` | Corner radius |
|
|
275
|
+
| `--osdk-callout-title-font-size` | `var(--osdk-typography-size-body-medium)` | Title font size |
|
|
276
|
+
| `--osdk-callout-title-font-weight` | `var(--osdk-typography-weight-bold)` | Title font weight |
|
|
277
|
+
| `--osdk-callout-message-font-size` | `var(--osdk-typography-size-body-small)` | Message body font size |
|
|
278
|
+
| `--osdk-callout-error-background` | `color-mix(in srgb, var(--osdk-intent-danger-rest) 10%, transparent)` | Error intent background |
|
|
279
|
+
| `--osdk-callout-error-color` | `var(--osdk-intent-danger-hover)` (dark: `var(--osdk-intent-danger-rest)`) | Error intent text color |
|
|
280
|
+
| `--osdk-callout-warning-background` | `color-mix(in srgb, var(--osdk-intent-warning-rest) 10%, transparent)` | Warning intent background |
|
|
281
|
+
| `--osdk-callout-warning-color` | `var(--osdk-intent-warning-hover)` (dark: `var(--osdk-intent-warning-rest)`) | Warning intent text color |
|
|
282
|
+
| `--osdk-callout-success-background` | `color-mix(in srgb, var(--osdk-intent-success-rest) 10%, transparent)` | Success intent background |
|
|
283
|
+
| `--osdk-callout-success-color` | `var(--osdk-intent-success-hover)` (dark: `var(--osdk-intent-success-rest)`) | Success intent text color |
|
|
284
|
+
| `--osdk-callout-info-background` | `color-mix(in srgb, var(--osdk-intent-primary-rest) 10%, transparent)` | Info intent background |
|
|
285
|
+
| `--osdk-callout-info-color` | `var(--osdk-intent-primary-hover)` (dark: `var(--osdk-intent-primary-rest)`) | Info intent text color |
|
|
286
|
+
|
|
235
287
|
### Drag Handle
|
|
236
288
|
|
|
237
289
|
Shared tokens for drag handle styling across components.
|
package/docs/Welcome.md
CHANGED
|
@@ -18,6 +18,7 @@ forms, and filters.
|
|
|
18
18
|
| `FilterList` | Interactive filter panel with histogram filters, date ranges, and search |
|
|
19
19
|
| `ActionForm` | Auto-generated form for executing Ontology Actions |
|
|
20
20
|
| `DocumentViewer` | Unified media viewer that auto-detects file type (PDF, Excel, images, video) |
|
|
21
|
+
| `AipAgentChat` | Chat surface backed by Foundry LMS |
|
|
21
22
|
|
|
22
23
|
All components are exported under `@osdk/react-components/experimental/*`
|
|
23
24
|
sub-paths (e.g. `@osdk/react-components/experimental/object-table`).
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@osdk/react-components",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.34.0-main-d24cc61b1e7fde7722d8229ed2b6821f5ce1bf8a",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -43,6 +43,15 @@
|
|
|
43
43
|
"require": "./build/cjs/public/experimental/action-form.cjs",
|
|
44
44
|
"default": "./build/browser/public/experimental/action-form.js"
|
|
45
45
|
},
|
|
46
|
+
"./experimental/aip-agent-chat": {
|
|
47
|
+
"browser": "./build/browser/public/experimental/aip-agent-chat.js",
|
|
48
|
+
"import": {
|
|
49
|
+
"types": "./build/types/public/experimental/aip-agent-chat.d.ts",
|
|
50
|
+
"default": "./build/esm/public/experimental/aip-agent-chat.js"
|
|
51
|
+
},
|
|
52
|
+
"require": "./build/cjs/public/experimental/aip-agent-chat.cjs",
|
|
53
|
+
"default": "./build/browser/public/experimental/aip-agent-chat.js"
|
|
54
|
+
},
|
|
46
55
|
"./experimental/cbac-picker": {
|
|
47
56
|
"browser": "./build/browser/public/experimental/cbac-picker.js",
|
|
48
57
|
"import": {
|
|
@@ -193,14 +202,20 @@
|
|
|
193
202
|
"xlsx-republish": "0.20.3"
|
|
194
203
|
},
|
|
195
204
|
"peerDependencies": {
|
|
196
|
-
"@osdk/
|
|
197
|
-
"@osdk/
|
|
198
|
-
"@osdk/
|
|
205
|
+
"@osdk/aip-core": ">=0.5.0 <1.0.0",
|
|
206
|
+
"@osdk/api": ">=2.41.0-beta.0",
|
|
207
|
+
"@osdk/client": ">=2.41.0-beta.0",
|
|
208
|
+
"@osdk/react": ">=2.41.0-beta.0",
|
|
199
209
|
"@types/react": "^17 || ^18 || ^19",
|
|
200
210
|
"classnames": "^2.0.0",
|
|
201
211
|
"react": "^17 || ^18 || ^19",
|
|
202
212
|
"react-dom": "^17 || ^18 || ^19"
|
|
203
213
|
},
|
|
214
|
+
"peerDependenciesMeta": {
|
|
215
|
+
"@osdk/aip-core": {
|
|
216
|
+
"optional": true
|
|
217
|
+
}
|
|
218
|
+
},
|
|
204
219
|
"devDependencies": {
|
|
205
220
|
"@testing-library/react": "^16.3.0",
|
|
206
221
|
"@types/lodash-es": "^4.17.12",
|
|
@@ -213,11 +228,12 @@
|
|
|
213
228
|
"react": "^18.3.1",
|
|
214
229
|
"react-dom": "^18.3.1",
|
|
215
230
|
"typescript": "~5.5.4",
|
|
216
|
-
"@osdk/
|
|
231
|
+
"@osdk/aip-core": "0.6.0-main-d24cc61b1e7fde7722d8229ed2b6821f5ce1bf8a",
|
|
232
|
+
"@osdk/api": "2.41.0-main-d24cc61b1e7fde7722d8229ed2b6821f5ce1bf8a",
|
|
233
|
+
"@osdk/client": "2.41.0-main-d24cc61b1e7fde7722d8229ed2b6821f5ce1bf8a",
|
|
217
234
|
"@osdk/monorepo.api-extractor": "~0.7.0",
|
|
218
|
-
"@osdk/
|
|
219
|
-
"@osdk/
|
|
220
|
-
"@osdk/monorepo.tsconfig": "~0.7.0"
|
|
235
|
+
"@osdk/monorepo.tsconfig": "~0.7.0",
|
|
236
|
+
"@osdk/react": "2.41.0-main-d24cc61b1e7fde7722d8229ed2b6821f5ce1bf8a"
|
|
221
237
|
},
|
|
222
238
|
"publishConfig": {
|
|
223
239
|
"access": "public"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/util/UserAgent.ts","../../src/util/withOsdkMetrics.ts"],"names":["useRegisterUserAgent","React"],"mappings":";;;;;;;;;;;;AAgBA,IAAM,kBAAA,GAAqB,yBAAyB,QAA2B,CAAA,CAAA;AACxE,SAAS,mBAAmB,aAAA,EAAe;AAChD,EAAA,OAAO,CAAA,EAAG,kBAAkB,CAAA,CAAA,EAAI,aAAa,CAAA,CAAA;AAC/C;;;ACKO,SAAS,eAAA,CAAgB,WAAW,IAAA,EAAM;AAC/C,EAAA,MAAM,UAAU,CAAA,KAAA,KAAS;AACvB,IAAAA,0BAAA,CAAqB,kBAAA,CAAmB,IAAI,CAAC,CAAA;AAC7C,IAAA,uBAAoBC,sBAAA,CAAM,aAAA,CAAc,SAAA,EAAW,KAAK,CAAA;AAAA,EAC1D,CAAA;AACA,EAAA,OAAA,CAAQ,WAAA,GAAc,mBAAmB,IAAI,CAAA,CAAA,CAAA;AAC7C,EAAA,OAAO,OAAA;AACT","file":"chunk-364UCCB2.cjs","sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst PACKAGE_USER_AGENT = `osdk-react-components/${process.env.PACKAGE_VERSION}`;\nexport function componentUserAgent(componentName) {\n return `${PACKAGE_USER_AGENT}/${componentName}`;\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useRegisterUserAgent } from \"@osdk/react\";\nimport React from \"react\";\nimport { componentUserAgent } from \"./UserAgent.js\";\n\n// `any` is required: FunctionComponent defaults to FunctionComponent<{}> which\n// rejects components with required props. A generic P parameter doesn't help\n// because TS can't infer both P and C simultaneously from a single argument.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function withOsdkMetrics(Component, name) {\n const Wrapped = props => {\n useRegisterUserAgent(componentUserAgent(name));\n return /*#__PURE__*/React.createElement(Component, props);\n };\n Wrapped.displayName = `withOsdkMetrics(${name})`;\n return Wrapped;\n}"]}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var chunkVOROB7KJ_cjs = require('./chunk-VOROB7KJ.cjs');
|
|
4
|
-
var chunk364UCCB2_cjs = require('./chunk-364UCCB2.cjs');
|
|
5
|
-
|
|
6
|
-
// src/public/experimental/image-viewer.ts
|
|
7
|
-
var ImageViewer2 = chunk364UCCB2_cjs.withOsdkMetrics(chunkVOROB7KJ_cjs.ImageViewer, "ImageViewer");
|
|
8
|
-
|
|
9
|
-
exports.ImageViewer = ImageViewer2;
|
|
10
|
-
//# sourceMappingURL=chunk-3MDT2TJK.cjs.map
|
|
11
|
-
//# sourceMappingURL=chunk-3MDT2TJK.cjs.map
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var chunkKHMOMROL_cjs = require('./chunk-KHMOMROL.cjs');
|
|
4
|
-
var chunk364UCCB2_cjs = require('./chunk-364UCCB2.cjs');
|
|
5
|
-
|
|
6
|
-
// src/public/experimental/video-viewer.ts
|
|
7
|
-
var VideoViewer2 = chunk364UCCB2_cjs.withOsdkMetrics(chunkKHMOMROL_cjs.VideoViewer, "VideoViewer");
|
|
8
|
-
|
|
9
|
-
exports.VideoViewer = VideoViewer2;
|
|
10
|
-
//# sourceMappingURL=chunk-AEFCONAY.cjs.map
|
|
11
|
-
//# sourceMappingURL=chunk-AEFCONAY.cjs.map
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var chunkPKJFOG2Z_cjs = require('./chunk-PKJFOG2Z.cjs');
|
|
4
|
-
var chunk364UCCB2_cjs = require('./chunk-364UCCB2.cjs');
|
|
5
|
-
|
|
6
|
-
// src/public/experimental/email-viewer.ts
|
|
7
|
-
var EmailViewer2 = chunk364UCCB2_cjs.withOsdkMetrics(chunkPKJFOG2Z_cjs.EmailViewer, "EmailViewer");
|
|
8
|
-
|
|
9
|
-
exports.EmailViewer = EmailViewer2;
|
|
10
|
-
//# sourceMappingURL=chunk-D6RQIMMX.cjs.map
|
|
11
|
-
//# sourceMappingURL=chunk-D6RQIMMX.cjs.map
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var chunkOUJQJQ7N_cjs = require('./chunk-OUJQJQ7N.cjs');
|
|
4
|
-
var chunk364UCCB2_cjs = require('./chunk-364UCCB2.cjs');
|
|
5
|
-
|
|
6
|
-
// src/public/experimental/xml-viewer.ts
|
|
7
|
-
var XmlViewer2 = chunk364UCCB2_cjs.withOsdkMetrics(chunkOUJQJQ7N_cjs.XmlViewer, "XmlViewer");
|
|
8
|
-
|
|
9
|
-
exports.XmlViewer = XmlViewer2;
|
|
10
|
-
//# sourceMappingURL=chunk-N7TOWLUY.cjs.map
|
|
11
|
-
//# sourceMappingURL=chunk-N7TOWLUY.cjs.map
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var chunk3SJODG6U_cjs = require('./chunk-3SJODG6U.cjs');
|
|
4
|
-
var chunk364UCCB2_cjs = require('./chunk-364UCCB2.cjs');
|
|
5
|
-
|
|
6
|
-
// src/public/experimental/excel-viewer.ts
|
|
7
|
-
var ExcelViewer2 = chunk364UCCB2_cjs.withOsdkMetrics(chunk3SJODG6U_cjs.ExcelViewer, "ExcelViewer");
|
|
8
|
-
|
|
9
|
-
exports.ExcelViewer = ExcelViewer2;
|
|
10
|
-
//# sourceMappingURL=chunk-SUEZQS7M.cjs.map
|
|
11
|
-
//# sourceMappingURL=chunk-SUEZQS7M.cjs.map
|