@mieweb/ui 0.6.1-dev.148 → 0.6.1-dev.150
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/dist/brands/index.cjs +22 -22
- package/dist/brands/index.js +5 -5
- package/dist/chunk-2T4JU5RH.cjs +1156 -0
- package/dist/chunk-2T4JU5RH.cjs.map +1 -0
- package/dist/chunk-3SSXDWD7.js +363 -0
- package/dist/chunk-3SSXDWD7.js.map +1 -0
- package/dist/{chunk-MARLXJQO.cjs → chunk-6R2ZPDN7.cjs} +7 -7
- package/dist/{chunk-MARLXJQO.cjs.map → chunk-6R2ZPDN7.cjs.map} +1 -1
- package/dist/{chunk-WHUD3XHR.cjs → chunk-7PA26KBF.cjs} +15 -3
- package/dist/chunk-7PA26KBF.cjs.map +1 -0
- package/dist/chunk-ASLZUFH4.js +1967 -0
- package/dist/chunk-ASLZUFH4.js.map +1 -0
- package/dist/chunk-FADQVM4M.cjs +2017 -0
- package/dist/chunk-FADQVM4M.cjs.map +1 -0
- package/dist/{chunk-DFT7TYKL.cjs → chunk-H4T5T65N.cjs} +6 -3
- package/dist/chunk-H4T5T65N.cjs.map +1 -0
- package/dist/chunk-I6CY5C6A.js +12 -0
- package/dist/chunk-I6CY5C6A.js.map +1 -0
- package/dist/chunk-JFLC7SHM.cjs +35 -0
- package/dist/chunk-JFLC7SHM.cjs.map +1 -0
- package/dist/chunk-LZPPH5BW.cjs +368 -0
- package/dist/chunk-LZPPH5BW.cjs.map +1 -0
- package/dist/{chunk-3OHVUXDG.js → chunk-M7BLVBL4.js} +6 -3
- package/dist/chunk-M7BLVBL4.js.map +1 -0
- package/dist/chunk-PM2I3QKM.cjs +1419 -0
- package/dist/chunk-PM2I3QKM.cjs.map +1 -0
- package/dist/{chunk-TW6DXMSD.js → chunk-R6PBBPU3.js} +2 -2
- package/dist/{chunk-TW6DXMSD.js.map → chunk-R6PBBPU3.js.map} +1 -1
- package/dist/{chunk-33PO3J4O.js → chunk-RXY5SD3O.js} +15 -3
- package/dist/chunk-RXY5SD3O.js.map +1 -0
- package/dist/{chunk-AEGYWRSL.js → chunk-TXYTMU3K.js} +3 -3
- package/dist/{chunk-AEGYWRSL.js.map → chunk-TXYTMU3K.js.map} +1 -1
- package/dist/chunk-UHPQYBXQ.js +1124 -0
- package/dist/chunk-UHPQYBXQ.js.map +1 -0
- package/dist/chunk-XQE26F3G.js +1383 -0
- package/dist/chunk-XQE26F3G.js.map +1 -0
- package/dist/{chunk-26YNFCOC.cjs → chunk-Z6NRP4Z5.cjs} +2 -2
- package/dist/{chunk-26YNFCOC.cjs.map → chunk-Z6NRP4Z5.cjs.map} +1 -1
- package/dist/components/Dropdown/index.cjs +7 -7
- package/dist/components/Dropdown/index.d.cts +1 -1
- package/dist/components/Dropdown/index.d.ts +1 -1
- package/dist/components/Dropdown/index.js +1 -1
- package/dist/components/RichTextEditor/index.cjs +5 -5
- package/dist/components/RichTextEditor/index.js +2 -2
- package/dist/components/SuperChat/index.cjs +1319 -0
- package/dist/components/SuperChat/index.cjs.map +1 -0
- package/dist/components/SuperChat/index.d.cts +189 -0
- package/dist/components/SuperChat/index.d.ts +189 -0
- package/dist/components/SuperChat/index.js +1282 -0
- package/dist/components/SuperChat/index.js.map +1 -0
- package/dist/components/SuperChat/plugins/index.cjs +1221 -0
- package/dist/components/SuperChat/plugins/index.cjs.map +1 -0
- package/dist/components/SuperChat/plugins/index.d.cts +253 -0
- package/dist/components/SuperChat/plugins/index.d.ts +253 -0
- package/dist/components/SuperChat/plugins/index.js +1181 -0
- package/dist/components/SuperChat/plugins/index.js.map +1 -0
- package/dist/datavis.cjs +18 -362
- package/dist/datavis.cjs.map +1 -1
- package/dist/datavis.js +1 -361
- package/dist/datavis.js.map +1 -1
- package/dist/index.cjs +1297 -5412
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +44 -240
- package/dist/index.d.ts +44 -240
- package/dist/index.js +759 -5037
- package/dist/index.js.map +1 -1
- package/dist/nitroTableGrid-FWRCDE4N.js +22 -0
- package/dist/nitroTableGrid-FWRCDE4N.js.map +1 -0
- package/dist/nitroTableGrid-IY75TQJ2.cjs +44 -0
- package/dist/nitroTableGrid-IY75TQJ2.cjs.map +1 -0
- package/dist/styles.css +1 -1
- package/dist/tailwind-preset.cjs +4 -4
- package/dist/tailwind-preset.js +1 -1
- package/dist/types-BFFgW6qy.d.ts +240 -0
- package/dist/types-BzeY_kYO.d.cts +242 -0
- package/dist/types-BzeY_kYO.d.ts +242 -0
- package/dist/types-CRt5IPNL.d.cts +240 -0
- package/package.json +41 -4
- package/dist/chunk-33PO3J4O.js.map +0 -1
- package/dist/chunk-3OHVUXDG.js.map +0 -1
- package/dist/chunk-DFT7TYKL.cjs.map +0 -1
- package/dist/chunk-WHUD3XHR.cjs.map +0 -1
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* AI Component Types
|
|
5
|
+
*
|
|
6
|
+
* Type definitions for AI-related components including MCP (Model Context Protocol)
|
|
7
|
+
* interactions, tool calls, and chat messages.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Status of an MCP tool invocation
|
|
12
|
+
*/
|
|
13
|
+
type MCPToolStatus = 'pending' | 'running' | 'success' | 'error' | 'cancelled';
|
|
14
|
+
/**
|
|
15
|
+
* MCP Tool parameter definition
|
|
16
|
+
*/
|
|
17
|
+
interface MCPToolParameter {
|
|
18
|
+
name: string;
|
|
19
|
+
type: string;
|
|
20
|
+
value: unknown;
|
|
21
|
+
description?: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* MCP Tool invocation
|
|
25
|
+
*/
|
|
26
|
+
interface MCPToolCall {
|
|
27
|
+
/** Unique identifier for this tool call */
|
|
28
|
+
id: string;
|
|
29
|
+
/** Name of the tool being invoked */
|
|
30
|
+
toolName: string;
|
|
31
|
+
/** Human-readable description of what the tool does */
|
|
32
|
+
description?: string;
|
|
33
|
+
/** Parameters passed to the tool */
|
|
34
|
+
parameters: MCPToolParameter[];
|
|
35
|
+
/** Current status of the tool execution */
|
|
36
|
+
status: MCPToolStatus;
|
|
37
|
+
/** Timestamp when tool was invoked */
|
|
38
|
+
startedAt: Date | string;
|
|
39
|
+
/** Timestamp when tool completed */
|
|
40
|
+
completedAt?: Date | string;
|
|
41
|
+
/** Duration in milliseconds */
|
|
42
|
+
duration?: number;
|
|
43
|
+
/** Result data if successful */
|
|
44
|
+
result?: MCPToolResult;
|
|
45
|
+
/** Error message if failed */
|
|
46
|
+
error?: string;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Result from an MCP tool execution
|
|
50
|
+
*/
|
|
51
|
+
interface MCPToolResult {
|
|
52
|
+
/** Type of result data */
|
|
53
|
+
type: 'text' | 'json' | 'link' | 'resource' | 'error';
|
|
54
|
+
/** The result data */
|
|
55
|
+
data: unknown;
|
|
56
|
+
/** Human-readable summary of the result */
|
|
57
|
+
summary?: string;
|
|
58
|
+
/** Link to a resource (for link type) */
|
|
59
|
+
link?: MCPResourceLink;
|
|
60
|
+
/** Resources created or modified */
|
|
61
|
+
resources?: MCPResource[];
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Link to a resource
|
|
65
|
+
*/
|
|
66
|
+
interface MCPResourceLink {
|
|
67
|
+
/** URL or path to the resource */
|
|
68
|
+
href: string;
|
|
69
|
+
/** Display text for the link */
|
|
70
|
+
label: string;
|
|
71
|
+
/** Type of resource */
|
|
72
|
+
type?: 'patient' | 'document' | 'appointment' | 'order' | 'provider' | 'external' | 'internal';
|
|
73
|
+
/** Icon name or component */
|
|
74
|
+
icon?: string;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* MCP Resource definition
|
|
78
|
+
*/
|
|
79
|
+
interface MCPResource {
|
|
80
|
+
/** Unique identifier */
|
|
81
|
+
id: string;
|
|
82
|
+
/** Resource type (e.g., 'patient', 'appointment', 'document') */
|
|
83
|
+
type: string;
|
|
84
|
+
/** Display name */
|
|
85
|
+
name: string;
|
|
86
|
+
/** URL to access the resource */
|
|
87
|
+
uri?: string;
|
|
88
|
+
/** Brief description */
|
|
89
|
+
description?: string;
|
|
90
|
+
/** Additional metadata */
|
|
91
|
+
metadata?: Record<string, unknown>;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Role of the message sender
|
|
95
|
+
*/
|
|
96
|
+
type AIMessageRole = 'user' | 'assistant' | 'system' | 'tool';
|
|
97
|
+
/**
|
|
98
|
+
* Status of an AI message
|
|
99
|
+
*/
|
|
100
|
+
type AIMessageStatus = 'pending' | 'streaming' | 'complete' | 'error';
|
|
101
|
+
/**
|
|
102
|
+
* Content block within a message
|
|
103
|
+
*/
|
|
104
|
+
interface AIMessageContent {
|
|
105
|
+
/** Type of content */
|
|
106
|
+
type: 'text' | 'tool_use' | 'tool_result' | 'thinking' | 'code' | 'image' | 'file';
|
|
107
|
+
/** Text content */
|
|
108
|
+
text?: string;
|
|
109
|
+
/** Tool call reference */
|
|
110
|
+
toolCall?: MCPToolCall;
|
|
111
|
+
/** Language for code blocks */
|
|
112
|
+
language?: string;
|
|
113
|
+
/** Whether this content is collapsed by default */
|
|
114
|
+
collapsed?: boolean;
|
|
115
|
+
/** Image source URL (for `image` blocks) */
|
|
116
|
+
imageUrl?: string;
|
|
117
|
+
/** Alt text / file name (for `image` and `file` blocks) */
|
|
118
|
+
name?: string;
|
|
119
|
+
/** File size in bytes (for `file` blocks) */
|
|
120
|
+
fileSize?: number;
|
|
121
|
+
/** MIME type (for `file` blocks) */
|
|
122
|
+
mimeType?: string;
|
|
123
|
+
/** Download/open URL (for `file` blocks) */
|
|
124
|
+
fileUrl?: string;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* AI Chat Message
|
|
128
|
+
*/
|
|
129
|
+
interface AIMessage {
|
|
130
|
+
/** Unique identifier */
|
|
131
|
+
id: string;
|
|
132
|
+
/** Role of sender */
|
|
133
|
+
role: AIMessageRole;
|
|
134
|
+
/** Message content blocks */
|
|
135
|
+
content: AIMessageContent[];
|
|
136
|
+
/** Timestamp */
|
|
137
|
+
timestamp: Date | string;
|
|
138
|
+
/** Current status */
|
|
139
|
+
status: AIMessageStatus;
|
|
140
|
+
/** Model used (for assistant messages) */
|
|
141
|
+
model?: string;
|
|
142
|
+
/** Token usage info */
|
|
143
|
+
usage?: {
|
|
144
|
+
promptTokens?: number;
|
|
145
|
+
completionTokens?: number;
|
|
146
|
+
totalTokens?: number;
|
|
147
|
+
};
|
|
148
|
+
/** Custom metadata */
|
|
149
|
+
metadata?: Record<string, unknown>;
|
|
150
|
+
}
|
|
151
|
+
/** Context passed to a custom text content renderer. */
|
|
152
|
+
interface AITextRenderContext {
|
|
153
|
+
/** id of the parent message (useful as a render cache key) */
|
|
154
|
+
messageId: string;
|
|
155
|
+
/** true while the message is still streaming */
|
|
156
|
+
streaming: boolean;
|
|
157
|
+
/** role of the parent message */
|
|
158
|
+
role: AIMessage['role'];
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Render-prop for customizing `text` content blocks. Host is responsible
|
|
162
|
+
* for sanitizing untrusted input.
|
|
163
|
+
*/
|
|
164
|
+
type AIRenderTextContent = (text: string, ctx: AITextRenderContext) => React.ReactNode;
|
|
165
|
+
/**
|
|
166
|
+
* Suggested action/prompt
|
|
167
|
+
*/
|
|
168
|
+
interface AISuggestedAction {
|
|
169
|
+
/** Unique identifier */
|
|
170
|
+
id: string;
|
|
171
|
+
/** Display label */
|
|
172
|
+
label: string;
|
|
173
|
+
/** Full prompt text */
|
|
174
|
+
prompt: string;
|
|
175
|
+
/** Icon name */
|
|
176
|
+
icon?: string;
|
|
177
|
+
/** Category for grouping */
|
|
178
|
+
category?: string;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* AI Chat session
|
|
182
|
+
*/
|
|
183
|
+
interface AIChatSession {
|
|
184
|
+
/** Unique session identifier */
|
|
185
|
+
id: string;
|
|
186
|
+
/** Session title */
|
|
187
|
+
title?: string;
|
|
188
|
+
/** Messages in the session */
|
|
189
|
+
messages: AIMessage[];
|
|
190
|
+
/** Available tools */
|
|
191
|
+
availableTools?: MCPToolInfo[];
|
|
192
|
+
/** Created timestamp */
|
|
193
|
+
createdAt: Date | string;
|
|
194
|
+
/** Last updated timestamp */
|
|
195
|
+
updatedAt: Date | string;
|
|
196
|
+
/** Whether the assistant is currently generating */
|
|
197
|
+
isGenerating: boolean;
|
|
198
|
+
/** Context information */
|
|
199
|
+
context?: {
|
|
200
|
+
/** Current page/location */
|
|
201
|
+
page?: string;
|
|
202
|
+
/** Selected entity */
|
|
203
|
+
entity?: MCPResource;
|
|
204
|
+
/** Additional context */
|
|
205
|
+
custom?: Record<string, unknown>;
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Information about an available MCP tool
|
|
210
|
+
*/
|
|
211
|
+
interface MCPToolInfo {
|
|
212
|
+
/** Tool name */
|
|
213
|
+
name: string;
|
|
214
|
+
/** Human-readable description */
|
|
215
|
+
description: string;
|
|
216
|
+
/** Input schema */
|
|
217
|
+
inputSchema?: Record<string, unknown>;
|
|
218
|
+
/** Category for grouping */
|
|
219
|
+
category?: string;
|
|
220
|
+
/** Whether the tool is enabled */
|
|
221
|
+
enabled?: boolean;
|
|
222
|
+
}
|
|
223
|
+
interface AIChatCallbacks {
|
|
224
|
+
/** Called when user sends a message */
|
|
225
|
+
onSendMessage?: (message: string) => void | Promise<void>;
|
|
226
|
+
/** Called when a tool call is initiated */
|
|
227
|
+
onToolCall?: (toolCall: MCPToolCall) => void | Promise<void>;
|
|
228
|
+
/** Called when a tool call completes */
|
|
229
|
+
onToolComplete?: (toolCall: MCPToolCall, result: MCPToolResult) => void;
|
|
230
|
+
/** Called when user clicks a resource link */
|
|
231
|
+
onResourceClick?: (resource: MCPResource | MCPResourceLink) => void;
|
|
232
|
+
/** Called when user selects a suggested action */
|
|
233
|
+
onSuggestedAction?: (action: AISuggestedAction) => void;
|
|
234
|
+
/** Called when user wants to cancel generation */
|
|
235
|
+
onCancel?: () => void;
|
|
236
|
+
/** Called when user wants to retry */
|
|
237
|
+
onRetry?: () => void;
|
|
238
|
+
/** Called when session is cleared */
|
|
239
|
+
onClear?: () => void;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
export type { AIMessageContent as A, MCPResourceLink as M, AIMessageStatus as a, AIRenderTextContent as b, AITextRenderContext as c, MCPToolCall as d, MCPToolStatus as e, AIMessage as f, AIChatCallbacks as g, AIChatSession as h, AISuggestedAction as i, AIMessageRole as j, MCPResource as k, MCPToolInfo as l, MCPToolParameter as m, MCPToolResult as n };
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { A as AIMessageContent, a as AIMessageStatus } from './types-BzeY_kYO.cjs';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* SuperChat Types
|
|
6
|
+
*
|
|
7
|
+
* A multi-participant chat model that generalizes the AI module's
|
|
8
|
+
* `user`/`assistant` roles and the standalone `chat-component`'s
|
|
9
|
+
* `external`/`internal`/`system` roles into a single **participant** concept,
|
|
10
|
+
* plus the pluggable Markdown render pipeline contracts.
|
|
11
|
+
*
|
|
12
|
+
* See `MAINTAINERS.md` (Mission → Decisions 2 & 3) for the design rationale.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
/** What kind of actor a participant is. */
|
|
16
|
+
type ParticipantKind = 'human' | 'agent' | 'system';
|
|
17
|
+
/** Presence/activity status for a participant. */
|
|
18
|
+
type ParticipantStatus = 'online' | 'offline' | 'busy' | 'typing';
|
|
19
|
+
/**
|
|
20
|
+
* A single actor in a conversation. Any mix of multiple agents and multiple
|
|
21
|
+
* humans can participate in one conversation.
|
|
22
|
+
*/
|
|
23
|
+
interface Participant {
|
|
24
|
+
/** Stable unique id, referenced by `SuperChatMessage.participantId`. */
|
|
25
|
+
id: string;
|
|
26
|
+
/** Whether this is a human, an AI agent, or the system. */
|
|
27
|
+
kind: ParticipantKind;
|
|
28
|
+
/** Display name. */
|
|
29
|
+
name: string;
|
|
30
|
+
/** Optional avatar image URL. */
|
|
31
|
+
avatar?: string;
|
|
32
|
+
/**
|
|
33
|
+
* Optional accent color (any CSS color) used as a visual cue so concurrent /
|
|
34
|
+
* interleaved replies from multiple agents stay legible.
|
|
35
|
+
*/
|
|
36
|
+
color?: string;
|
|
37
|
+
/** Optional sub-label, e.g. "Triage agent" or "Front desk". */
|
|
38
|
+
role?: string;
|
|
39
|
+
/** Optional presence indicator. */
|
|
40
|
+
status?: ParticipantStatus;
|
|
41
|
+
}
|
|
42
|
+
/** Channel a message arrived/was sent on (healthcare-messaging compatible). */
|
|
43
|
+
type SuperChatChannel = 'portal' | 'sms' | 'voicemail' | 'auto' | (string & {});
|
|
44
|
+
/** Reference attachment carried by a `ref` thread item. */
|
|
45
|
+
interface SuperChatRef {
|
|
46
|
+
/** Kind of referenced entity. */
|
|
47
|
+
refType: 'doc' | 'rx' | 'appt' | (string & {});
|
|
48
|
+
/** Id of the referenced entity. */
|
|
49
|
+
refId: string;
|
|
50
|
+
/** Display title for the reference. */
|
|
51
|
+
title: string;
|
|
52
|
+
}
|
|
53
|
+
/** Kind of thread item. */
|
|
54
|
+
type SuperChatItemType = 'message' | 'ref' | 'system';
|
|
55
|
+
/**
|
|
56
|
+
* A single thread item. Preserves the `chat-component` thread-item shape
|
|
57
|
+
* (`senderId`/`sender_name`/`channel`/`time`/`text`) while adding a
|
|
58
|
+
* `participantId` (Decision 2) and optional rich `content` blocks reused from
|
|
59
|
+
* the AI module.
|
|
60
|
+
*/
|
|
61
|
+
interface SuperChatMessage {
|
|
62
|
+
/** Unique identifier. */
|
|
63
|
+
id: string;
|
|
64
|
+
/** Item type. Defaults to `'message'`. */
|
|
65
|
+
type?: SuperChatItemType;
|
|
66
|
+
/** Participant who authored the item. */
|
|
67
|
+
participantId: string;
|
|
68
|
+
/** Plain-text body (rendered through the Markdown pipeline). */
|
|
69
|
+
text?: string;
|
|
70
|
+
/**
|
|
71
|
+
* Optional rich content blocks (text / tool_use / tool_result / thinking /
|
|
72
|
+
* code), reused from the AI module for tool-call visualization etc.
|
|
73
|
+
*/
|
|
74
|
+
content?: AIMessageContent[];
|
|
75
|
+
/** Timestamp; the thread is append-only and ordered by `time`. */
|
|
76
|
+
time: Date | string;
|
|
77
|
+
/**
|
|
78
|
+
* Timestamp of the most recent edit, if the message has been edited. When
|
|
79
|
+
* set, surfaces an "(edited)" indicator next to the message time.
|
|
80
|
+
*/
|
|
81
|
+
editedAt?: Date | string;
|
|
82
|
+
/** Delivery/generation status. */
|
|
83
|
+
status?: AIMessageStatus;
|
|
84
|
+
/** Channel the item belongs to. */
|
|
85
|
+
channel?: SuperChatChannel;
|
|
86
|
+
/** Reference payload when `type === 'ref'`. */
|
|
87
|
+
ref?: SuperChatRef;
|
|
88
|
+
/** Participant ids addressed via `@`-mention. */
|
|
89
|
+
mentions?: string[];
|
|
90
|
+
/** Custom metadata. */
|
|
91
|
+
metadata?: Record<string, unknown>;
|
|
92
|
+
/** @deprecated use `participantId`. */
|
|
93
|
+
senderId?: string;
|
|
94
|
+
/** @deprecated derive from the participant. */
|
|
95
|
+
sender_name?: string;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* A file (typically an image) the local user pasted or attached in the
|
|
99
|
+
* composer, surfaced to the host via the send callback so it can be embedded,
|
|
100
|
+
* uploaded, or otherwise added to the conversation.
|
|
101
|
+
*/
|
|
102
|
+
interface ComposerAttachment {
|
|
103
|
+
/** Stable id for the attachment (unique within a single draft). */
|
|
104
|
+
id: string;
|
|
105
|
+
/** File name, derived from the pasted file or a generated fallback. */
|
|
106
|
+
name: string;
|
|
107
|
+
/** MIME type, e.g. `image/png`. */
|
|
108
|
+
type: string;
|
|
109
|
+
/** Base64 `data:` URL of the file contents. */
|
|
110
|
+
dataUrl: string;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Categories of files the composer can accept. Developers pick which kinds are
|
|
114
|
+
* allowed via `acceptedFileTypes`; each maps to an `<input accept>` token and a
|
|
115
|
+
* MIME matcher used to filter pastes and file-picker selections.
|
|
116
|
+
* - `image` → `image/*`
|
|
117
|
+
* - `video` → `video/*`
|
|
118
|
+
* - `audio` → `audio/*`
|
|
119
|
+
* - `pdf` → `application/pdf`
|
|
120
|
+
*/
|
|
121
|
+
type AttachmentKind = 'image' | 'video' | 'audio' | 'pdf';
|
|
122
|
+
/** A conversation: participants + an ordered thread. */
|
|
123
|
+
interface SuperChatConversation {
|
|
124
|
+
/** Unique identifier. */
|
|
125
|
+
id: string;
|
|
126
|
+
/** Display title. */
|
|
127
|
+
title: string;
|
|
128
|
+
/** Optional external reference id (e.g. patient/chart id). */
|
|
129
|
+
reference_id?: string;
|
|
130
|
+
/** Whether the conversation is currently open. */
|
|
131
|
+
open?: boolean;
|
|
132
|
+
/** Unread message count. */
|
|
133
|
+
unread?: number;
|
|
134
|
+
/** Timestamp of the last activity (used for sidebar ordering). */
|
|
135
|
+
lastActivity?: Date | string;
|
|
136
|
+
/** Everyone taking part in this conversation. */
|
|
137
|
+
participants: Participant[];
|
|
138
|
+
/** Ordered thread items. */
|
|
139
|
+
thread: SuperChatMessage[];
|
|
140
|
+
}
|
|
141
|
+
/** Builds an href for a reference item (e.g. doc/rx/appt deep link). */
|
|
142
|
+
type SuperChatLinkBuilder = (ref: SuperChatRef) => string | undefined;
|
|
143
|
+
/**
|
|
144
|
+
* A unified remark/rehype plugin entry. Kept dependency-light here (the public
|
|
145
|
+
* type surface stays zero-dep); the composer casts to the concrete
|
|
146
|
+
* `react-markdown` `PluggableList` type.
|
|
147
|
+
*/
|
|
148
|
+
type SuperChatPluggable = unknown;
|
|
149
|
+
type SuperChatPluggableList = SuperChatPluggable[];
|
|
150
|
+
/**
|
|
151
|
+
* A render plugin contributes remark/rehype plugins, custom node components,
|
|
152
|
+
* and/or GenUI widgets to the Markdown pipeline. Plugins are composed into a
|
|
153
|
+
* single `renderTextContent` implementation.
|
|
154
|
+
*/
|
|
155
|
+
interface SuperChatRenderPlugin {
|
|
156
|
+
/** Unique plugin name. */
|
|
157
|
+
name: string;
|
|
158
|
+
/** remark plugins to add (operate on the Markdown AST). */
|
|
159
|
+
remarkPlugins?: SuperChatPluggableList;
|
|
160
|
+
/** rehype plugins to add (operate on the HTML AST). */
|
|
161
|
+
rehypePlugins?: SuperChatPluggableList;
|
|
162
|
+
/** Custom React components keyed by node/tag name. */
|
|
163
|
+
components?: Record<string, React.ComponentType<Record<string, unknown>>>;
|
|
164
|
+
/** Named interactive widgets for fenced ```genui blocks. */
|
|
165
|
+
widgets?: GenUIRegistry;
|
|
166
|
+
/**
|
|
167
|
+
* Optional contribution to the `rehype-sanitize` allow-list schema, merged by
|
|
168
|
+
* the composer so token classNames / KaTeX markup survive sanitization.
|
|
169
|
+
*/
|
|
170
|
+
sanitizeSchema?: Record<string, unknown>;
|
|
171
|
+
}
|
|
172
|
+
/** When to prefetch a GenUI widget's code/data. */
|
|
173
|
+
type GenUIPrefetchPolicy = 'eager' | 'visible' | 'idle';
|
|
174
|
+
/**
|
|
175
|
+
* Minimal subset of the Standard Schema (https://standardschema.dev) interface,
|
|
176
|
+
* implemented by zod v4 and others, used to validate untrusted widget payloads.
|
|
177
|
+
*/
|
|
178
|
+
interface StandardSchemaV1<Output = unknown, Input = Output> {
|
|
179
|
+
readonly '~standard': {
|
|
180
|
+
readonly version: 1;
|
|
181
|
+
readonly vendor: string;
|
|
182
|
+
readonly validate: (value: unknown) => {
|
|
183
|
+
readonly value: Output;
|
|
184
|
+
} | {
|
|
185
|
+
readonly issues: ReadonlyArray<{
|
|
186
|
+
readonly message: string;
|
|
187
|
+
}>;
|
|
188
|
+
} | Promise<{
|
|
189
|
+
readonly value: Output;
|
|
190
|
+
} | {
|
|
191
|
+
readonly issues: ReadonlyArray<{
|
|
192
|
+
readonly message: string;
|
|
193
|
+
}>;
|
|
194
|
+
}>;
|
|
195
|
+
readonly types?: {
|
|
196
|
+
readonly input: Input;
|
|
197
|
+
readonly output: Output;
|
|
198
|
+
};
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
/** Props passed to a host-registered GenUI widget. */
|
|
202
|
+
interface GenUIWidgetProps<T = unknown> {
|
|
203
|
+
/** Payload, validated against the entry's `schema` when provided. */
|
|
204
|
+
data: T;
|
|
205
|
+
/** Render-time metadata. */
|
|
206
|
+
meta: {
|
|
207
|
+
name: string;
|
|
208
|
+
version?: number;
|
|
209
|
+
messageId: string;
|
|
210
|
+
streaming: boolean;
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
/** A single registry entry: lazy code + optional schema/prefetch policy. */
|
|
214
|
+
interface GenUIWidgetEntry<T = unknown> {
|
|
215
|
+
/** Lazy chunk — keeps the widget out of the base bundle. */
|
|
216
|
+
component: () => Promise<{
|
|
217
|
+
default: React.ComponentType<GenUIWidgetProps<T>>;
|
|
218
|
+
}>;
|
|
219
|
+
/** Optional runtime validation of the untrusted payload. */
|
|
220
|
+
schema?: StandardSchemaV1<T>;
|
|
221
|
+
/** Default policy if the wire payload omits one. */
|
|
222
|
+
prefetch?: GenUIPrefetchPolicy;
|
|
223
|
+
/** Optional data prefetch, distinct from loading the component code. */
|
|
224
|
+
prefetchData?: (data: T) => Promise<unknown>;
|
|
225
|
+
}
|
|
226
|
+
/** Map of widget base-name → entry. Versions are resolved explicitly. */
|
|
227
|
+
type GenUIRegistry = Record<string, GenUIWidgetEntry>;
|
|
228
|
+
/** Parsed body of a fenced ```genui block. */
|
|
229
|
+
interface GenUIBlockPayload {
|
|
230
|
+
/** Widget base name (resolved against the registry). */
|
|
231
|
+
widget: string;
|
|
232
|
+
/** Explicit version selector. */
|
|
233
|
+
version?: number;
|
|
234
|
+
/** Wire-level prefetch hint (registry policy overrides this). */
|
|
235
|
+
prefetch?: GenUIPrefetchPolicy;
|
|
236
|
+
/** Arbitrary widget props. */
|
|
237
|
+
props?: unknown;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
export type { AttachmentKind as A, ComposerAttachment as C, GenUIBlockPayload as G, Participant as P, SuperChatConversation as S, SuperChatRenderPlugin as a, SuperChatLinkBuilder as b, SuperChatRef as c, GenUIPrefetchPolicy as d, GenUIRegistry as e, GenUIWidgetEntry as f, GenUIWidgetProps as g, ParticipantKind as h, ParticipantStatus as i, StandardSchemaV1 as j, SuperChatChannel as k, SuperChatItemType as l, SuperChatMessage as m, SuperChatPluggable as n, SuperChatPluggableList as o };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mieweb/ui",
|
|
3
|
-
"version": "0.6.1-dev.
|
|
3
|
+
"version": "0.6.1-dev.150",
|
|
4
4
|
"description": "A themeable, accessible React component library built with Tailwind CSS",
|
|
5
5
|
"author": "Medical Informatics Engineering, Inc.",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|
|
@@ -239,10 +239,17 @@
|
|
|
239
239
|
"ag-grid-react": ">=32.0.0",
|
|
240
240
|
"datavis-ace": "=4.0.0-PRE.2",
|
|
241
241
|
"js-yaml": ">=4.0.0",
|
|
242
|
-
"
|
|
242
|
+
"katex": ">=0.16.0",
|
|
243
|
+
"mermaid": ">=11.0.0",
|
|
243
244
|
"papaparse": ">=5.0.0",
|
|
244
245
|
"react": ">=18.0.0",
|
|
245
246
|
"react-dom": ">=18.0.0",
|
|
247
|
+
"react-markdown": ">=9.0.0",
|
|
248
|
+
"rehype-highlight": ">=7.0.0",
|
|
249
|
+
"rehype-katex": ">=7.0.0",
|
|
250
|
+
"rehype-sanitize": ">=6.0.0",
|
|
251
|
+
"remark-gfm": ">=4.0.0",
|
|
252
|
+
"remark-math": ">=6.0.0",
|
|
246
253
|
"wavesurfer.js": ">=7.0.0"
|
|
247
254
|
},
|
|
248
255
|
"peerDependenciesMeta": {
|
|
@@ -276,6 +283,27 @@
|
|
|
276
283
|
"papaparse": {
|
|
277
284
|
"optional": true
|
|
278
285
|
},
|
|
286
|
+
"react-markdown": {
|
|
287
|
+
"optional": true
|
|
288
|
+
},
|
|
289
|
+
"remark-gfm": {
|
|
290
|
+
"optional": true
|
|
291
|
+
},
|
|
292
|
+
"remark-math": {
|
|
293
|
+
"optional": true
|
|
294
|
+
},
|
|
295
|
+
"rehype-katex": {
|
|
296
|
+
"optional": true
|
|
297
|
+
},
|
|
298
|
+
"katex": {
|
|
299
|
+
"optional": true
|
|
300
|
+
},
|
|
301
|
+
"rehype-sanitize": {
|
|
302
|
+
"optional": true
|
|
303
|
+
},
|
|
304
|
+
"rehype-highlight": {
|
|
305
|
+
"optional": true
|
|
306
|
+
},
|
|
279
307
|
"react": {
|
|
280
308
|
"optional": false
|
|
281
309
|
},
|
|
@@ -288,6 +316,7 @@
|
|
|
288
316
|
},
|
|
289
317
|
"dependencies": {
|
|
290
318
|
"@swc/helpers": "^0.5.19",
|
|
319
|
+
"@tanstack/react-virtual": "^3.14.2",
|
|
291
320
|
"class-variance-authority": "^0.7.1",
|
|
292
321
|
"clsx": "^2.1.1",
|
|
293
322
|
"dompurify": "^3.4.0",
|
|
@@ -313,6 +342,7 @@
|
|
|
313
342
|
"@kerebron/editor": "0.7.9",
|
|
314
343
|
"@kerebron/editor-kits": "0.7.9",
|
|
315
344
|
"@kerebron/wasm": "0.7.9",
|
|
345
|
+
"@mieweb/datavis": "=0.0.0-PRE.4",
|
|
316
346
|
"@monaco-editor/react": "^4.7.0",
|
|
317
347
|
"@playwright/test": "^1.58.2",
|
|
318
348
|
"@storybook/addon-a11y": "^10.2.11",
|
|
@@ -350,21 +380,28 @@
|
|
|
350
380
|
"d3-selection": "^3.0.0",
|
|
351
381
|
"d3-shape": "^3.2.0",
|
|
352
382
|
"d3-zoom": "^3.0.0",
|
|
353
|
-
"@mieweb/datavis": "=0.0.0-PRE.4",
|
|
354
383
|
"eslint": "^9.39.3",
|
|
355
384
|
"eslint-plugin-jsx-a11y": "^6.10.2",
|
|
356
385
|
"eslint-plugin-react": "^7.37.5",
|
|
357
386
|
"eslint-plugin-react-hooks": "^5.2.0",
|
|
358
387
|
"eslint-plugin-storybook": "^10.2.11",
|
|
388
|
+
"fake-indexeddb": "^6.2.5",
|
|
359
389
|
"js-yaml": "^4.1.1",
|
|
360
390
|
"jsdom": "^26.1.0",
|
|
361
|
-
"
|
|
391
|
+
"katex": "^0.17.0",
|
|
392
|
+
"mermaid": "^11.15.0",
|
|
362
393
|
"papaparse": "^5.5.3",
|
|
363
394
|
"postcss": "^8.5.10",
|
|
364
395
|
"prettier": "^3.8.1",
|
|
365
396
|
"prettier-plugin-tailwindcss": "^0.6.14",
|
|
366
397
|
"react": "^19.2.4",
|
|
367
398
|
"react-dom": "^19.2.4",
|
|
399
|
+
"react-markdown": "^10.1.0",
|
|
400
|
+
"rehype-highlight": "^7.0.2",
|
|
401
|
+
"rehype-katex": "^7.0.1",
|
|
402
|
+
"rehype-sanitize": "^6.0.0",
|
|
403
|
+
"remark-gfm": "^4.0.1",
|
|
404
|
+
"remark-math": "^6.0.0",
|
|
368
405
|
"sass": "1.100.0",
|
|
369
406
|
"sortablejs": "^1.15.7",
|
|
370
407
|
"storybook": "^10.2.11",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/tailwind-preset.ts"],"names":[],"mappings":"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","file":"chunk-33PO3J4O.js","sourcesContent":["/**\n * @mieweb/ui Tailwind CSS Preset\n *\n * This preset provides the default theme configuration for @mieweb/ui components.\n * Consumers can extend or override these values in their own tailwind.config.js\n *\n * Usage:\n * ```js\n * // tailwind.config.js\n * module.exports = {\n * presets: [require('@mieweb/ui/tailwind-preset')],\n * theme: {\n * extend: {\n * colors: {\n * primary: {\n * 500: '#your-brand-color',\n * },\n * },\n * },\n * },\n * };\n * ```\n */\n\n/**\n * Safelist of classes used by @mieweb/ui components.\n *\n * **Tailwind CSS 3**: These must be safelisted because Tailwind may not detect\n * them when components are imported from node_modules.\n *\n * **Tailwind CSS 4**: The safelist is NOT needed if you add the `@source`\n * directive to your CSS. Add this line to your main CSS file:\n *\n * @source \"../node_modules/@mieweb/ui/dist\";\n *\n * This tells Tailwind 4 to scan @mieweb/ui's dist folder for class names,\n * replacing the need for a manual safelist.\n *\n * @deprecated For Tailwind CSS 4 users — use the `@source` directive instead.\n */\nexport const miewebUISafelist = [\n // Semantic colors\n 'border-border',\n 'border-input',\n 'ring-ring',\n 'bg-background',\n 'bg-card',\n 'bg-muted',\n 'bg-primary',\n 'bg-primary-800',\n 'dark:bg-primary-500',\n 'checked:border-primary-500',\n 'dark:checked:border-primary-800',\n 'bg-success',\n 'bg-warning',\n 'bg-destructive',\n 'bg-info',\n 'text-foreground',\n 'text-card-foreground',\n 'text-muted-foreground',\n 'text-primary',\n 'text-primary-foreground',\n 'text-success',\n 'text-success-foreground',\n 'text-warning',\n 'text-warning-foreground',\n 'text-destructive',\n 'text-destructive-foreground',\n 'text-info',\n 'text-info-foreground',\n 'focus:ring-ring',\n 'focus:ring-primary',\n 'focus:border-transparent',\n 'focus:ring-destructive',\n 'border-primary',\n 'border-destructive',\n 'border-success',\n 'focus:ring-success/20',\n 'focus:ring-destructive/20',\n 'opacity-0',\n 'group-hover:opacity-100',\n 'focus:opacity-100',\n // Markdown SurveyBlock\n 'accent-primary-500',\n // Opacity-modifier variants for semantic colors used by components\n 'bg-background/60',\n 'bg-background/80',\n 'bg-background/90',\n 'bg-background/95',\n 'bg-card/80',\n 'bg-destructive/5',\n 'bg-destructive/10',\n 'bg-foreground/50',\n 'bg-info/10',\n 'bg-muted/10',\n 'bg-muted/30',\n 'bg-muted/50',\n 'bg-primary/5',\n 'bg-primary/10',\n 'bg-success/10',\n 'bg-warning/10',\n 'border-border/80',\n 'border-destructive/20',\n 'border-destructive/30',\n 'border-destructive/50',\n 'border-info/30',\n 'border-muted-foreground/25',\n 'border-muted-foreground/40',\n 'border-primary/30',\n 'border-primary/50',\n 'border-success/30',\n 'border-success/50',\n 'border-warning/30',\n 'hover:bg-destructive/10',\n 'hover:bg-muted/10',\n 'hover:bg-muted/20',\n 'hover:bg-muted/50',\n 'hover:bg-muted/80',\n 'hover:bg-primary/5',\n 'hover:bg-primary/10',\n 'hover:bg-primary/20',\n 'hover:bg-primary/90',\n 'hover:border-border/80',\n 'hover:border-muted-foreground/50',\n 'hover:text-destructive/80',\n 'hover:text-primary/80',\n 'text-muted-foreground/30',\n 'text-muted-foreground/40',\n 'text-muted-foreground/50',\n 'text-muted-foreground/60',\n 'text-muted-foreground/70',\n 'text-primary/80',\n 'text-primary-foreground/90',\n 'ring-primary',\n 'ring-2',\n 'ring-offset-2',\n // Grid classes for QuickAction and responsive layouts\n 'grid-cols-1',\n 'grid-cols-2',\n 'grid-cols-3',\n 'grid-cols-4',\n 'grid-cols-6',\n 'sm:grid-cols-1',\n 'sm:grid-cols-2',\n 'sm:grid-cols-3',\n 'sm:grid-cols-4',\n 'sm:grid-cols-6',\n 'md:grid-cols-2',\n 'md:grid-cols-3',\n 'md:grid-cols-4',\n 'lg:grid-cols-2',\n 'lg:grid-cols-3',\n 'lg:grid-cols-4',\n // ── Expanded Color Scales ────────────────────────────────────────\n // Secondary scale\n 'bg-secondary',\n 'bg-secondary-50',\n 'bg-secondary-100',\n 'bg-secondary-500',\n 'bg-secondary-600',\n 'text-secondary',\n 'text-secondary-500',\n 'text-secondary-600',\n 'text-secondary-700',\n 'text-secondary-foreground',\n 'border-secondary',\n 'border-secondary-200',\n // Neutral scale\n 'bg-neutral-50',\n 'bg-neutral-100',\n 'bg-neutral-200',\n 'bg-neutral-300',\n 'bg-neutral-800',\n 'bg-neutral-900',\n 'text-neutral-500',\n 'text-neutral-600',\n 'text-neutral-700',\n 'text-neutral-400',\n 'border-neutral-200',\n 'border-neutral-300',\n 'dark:bg-neutral-700',\n 'dark:bg-neutral-800',\n 'dark:text-neutral-300',\n 'dark:text-neutral-400',\n 'dark:border-neutral-600',\n 'dark:border-neutral-700',\n // Indigo (StripeBadge)\n 'bg-indigo-500/10',\n 'dark:bg-indigo-400/20',\n 'text-indigo-700',\n 'dark:text-indigo-300',\n 'border-indigo-500/30',\n 'hover:text-indigo-700',\n 'dark:hover:text-indigo-300',\n // Destructive scale\n 'bg-destructive-50',\n 'bg-destructive-100',\n 'bg-destructive-500',\n 'bg-destructive-600',\n 'bg-destructive-700',\n 'hover:bg-destructive-800',\n 'text-destructive-500',\n 'text-destructive-600',\n 'text-destructive-700',\n 'text-destructive-800',\n 'text-destructive-900',\n 'border-destructive-200',\n 'border-destructive-300',\n 'dark:bg-destructive-900',\n 'dark:bg-destructive-950',\n 'dark:text-destructive-300',\n 'dark:text-destructive-400',\n // Success scale\n 'bg-success-50',\n 'bg-success-100',\n 'bg-success-500',\n 'bg-success-600',\n 'bg-success-700',\n 'hover:bg-success-800',\n 'text-success-500',\n 'text-success-600',\n 'text-success-700',\n 'text-success-800',\n 'text-success-900',\n 'border-success-200',\n 'border-success-300',\n 'dark:bg-success-900',\n 'dark:bg-success-950',\n 'dark:text-success-300',\n 'dark:text-success-400',\n // Warning scale\n 'bg-warning-50',\n 'bg-warning-100',\n 'bg-warning-500',\n 'bg-warning-600',\n 'bg-warning-700',\n 'text-warning-900',\n 'text-warning-500',\n 'text-warning-600',\n 'text-warning-700',\n 'text-warning-800',\n 'text-warning-900',\n 'border-warning-200',\n 'border-warning-300',\n 'dark:bg-warning-900',\n 'dark:bg-warning-950',\n 'dark:text-warning-300',\n 'dark:text-warning-400',\n // Info scale\n 'bg-info-50',\n 'bg-info-100',\n 'bg-info-500',\n 'bg-info-600',\n 'text-info-500',\n 'text-info-600',\n 'text-info-700',\n 'text-info-800',\n 'text-info-900',\n 'border-info-200',\n 'border-info-300',\n 'dark:bg-info-900',\n 'dark:bg-info-950',\n 'dark:text-info-300',\n 'dark:text-info-400',\n // Chart colors\n 'bg-chart-1',\n 'bg-chart-2',\n 'bg-chart-3',\n 'bg-chart-4',\n 'bg-chart-5',\n 'text-chart-1',\n 'text-chart-2',\n 'text-chart-3',\n 'text-chart-4',\n 'text-chart-5',\n 'border-chart-1',\n 'border-chart-2',\n 'border-chart-3',\n 'border-chart-4',\n 'border-chart-5',\n // Switch component\n 'bg-primary-500',\n // Primary scale (a11y contrast)\n 'text-primary-800',\n 'dark:text-primary-300',\n // Text decoration\n 'underline',\n 'h-5',\n 'w-9',\n 'h-6',\n 'w-11',\n 'h-7',\n 'w-14',\n 'h-4',\n 'w-4',\n 'w-5',\n 'w-6',\n 'translate-x-0.5',\n 'translate-x-4',\n 'translate-x-5',\n 'translate-x-7',\n // SchedulePicker / overflow handling\n 'overflow-x-auto',\n 'overflow-hidden',\n // Select component\n 'truncate',\n // AIReconciliationPanel\n 'ring-primary-200',\n 'dark:ring-primary-900',\n 'border-primary-300',\n 'dark:border-primary-700',\n 'bg-primary-50/60',\n 'dark:bg-primary-950/30',\n 'text-primary-700',\n 'dark:text-primary-400',\n 'border-border/60',\n 'bg-muted/40',\n 'bg-muted/60',\n 'divide-border',\n 'max-h-[60vh]',\n 'bg-success-100',\n 'dark:bg-success-900/30',\n 'bg-amber-100',\n 'bg-amber-200',\n 'text-amber-700',\n 'text-amber-800',\n 'text-amber-200',\n 'text-amber-300',\n 'dark:bg-amber-900/30',\n 'dark:bg-amber-900/40',\n 'dark:text-amber-200',\n 'dark:text-amber-300',\n 'ring-1',\n 'last:border-b-0',\n 'border-dashed',\n 'text-[11px]',\n];\n\nexport interface MiewebUIPreset {\n darkMode: ['class', '[data-theme=\"dark\"]'];\n safelist: string[];\n theme: {\n extend: Record<string, unknown>;\n };\n}\n\nexport const miewebUIPreset: MiewebUIPreset = {\n darkMode: ['class', '[data-theme=\"dark\"]'],\n safelist: miewebUISafelist,\n theme: {\n extend: {\n colors: {\n // Primary color scale - easily overridable by consumers\n primary: {\n DEFAULT: 'var(--mieweb-primary, var(--mieweb-primary-500, #27aae1))',\n 50: 'var(--mieweb-primary-50, #e6f7fc)',\n 100: 'var(--mieweb-primary-100, #b3e6f6)',\n 200: 'var(--mieweb-primary-200, #80d5f0)',\n 300: 'var(--mieweb-primary-300, #4dc4ea)',\n 400: 'var(--mieweb-primary-400, #27aae1)',\n 500: 'var(--mieweb-primary-500, #27aae1)',\n 600: 'var(--mieweb-primary-600, #1f98ca)',\n 700: 'var(--mieweb-primary-700, #1786b3)',\n 800: 'var(--mieweb-primary-800, #0f749c)',\n 900: 'var(--mieweb-primary-900, #086285)',\n 950: 'var(--mieweb-primary-950, #00506e)',\n foreground: 'var(--mieweb-primary-foreground, hsl(210 40% 98%))',\n },\n // Secondary color scale\n secondary: {\n DEFAULT: 'var(--mieweb-secondary-500, #6366f1)',\n 50: 'var(--mieweb-secondary-50, #eef2ff)',\n 100: 'var(--mieweb-secondary-100, #e0e7ff)',\n 200: 'var(--mieweb-secondary-200, #c7d2fe)',\n 300: 'var(--mieweb-secondary-300, #a5b4fc)',\n 400: 'var(--mieweb-secondary-400, #818cf8)',\n 500: 'var(--mieweb-secondary-500, #6366f1)',\n 600: 'var(--mieweb-secondary-600, #4f46e5)',\n 700: 'var(--mieweb-secondary-700, #4338ca)',\n 800: 'var(--mieweb-secondary-800, #3730a3)',\n 900: 'var(--mieweb-secondary-900, #312e81)',\n 950: 'var(--mieweb-secondary-950, #1e1b4b)',\n foreground: 'var(--mieweb-secondary-foreground, #ffffff)',\n },\n // Neutral / gray scale\n neutral: {\n DEFAULT: 'var(--mieweb-neutral-500, #737373)',\n 50: 'var(--mieweb-neutral-50, #fafafa)',\n 100: 'var(--mieweb-neutral-100, #f5f5f5)',\n 200: 'var(--mieweb-neutral-200, #e5e5e5)',\n 300: 'var(--mieweb-neutral-300, #d4d4d4)',\n 400: 'var(--mieweb-neutral-400, #a3a3a3)',\n 500: 'var(--mieweb-neutral-500, #737373)',\n 600: 'var(--mieweb-neutral-600, #525252)',\n 700: 'var(--mieweb-neutral-700, #404040)',\n 800: 'var(--mieweb-neutral-800, #262626)',\n 900: 'var(--mieweb-neutral-900, #171717)',\n 950: 'var(--mieweb-neutral-950, #0a0a0a)',\n },\n // Semantic colors using CSS variables for theming\n border: 'var(--mieweb-border, hsl(214.3 31.8% 91.4%))',\n input: 'var(--mieweb-input, hsl(214.3 31.8% 91.4%))',\n ring: 'var(--mieweb-ring, hsl(221.2 83.2% 53.3%))',\n background: 'var(--mieweb-background, hsl(0 0% 100%))',\n foreground: 'var(--mieweb-foreground, hsl(222.2 84% 4.9%))',\n // Component-specific semantic colors\n card: {\n DEFAULT: 'var(--mieweb-card, hsl(0 0% 100%))',\n foreground: 'var(--mieweb-card-foreground, hsl(222.2 84% 4.9%))',\n },\n muted: {\n DEFAULT: 'var(--mieweb-muted, hsl(210 40% 96.1%))',\n foreground: 'var(--mieweb-muted-foreground, hsl(215.4 16.3% 46.9%))',\n },\n // Destructive / error scale\n destructive: {\n DEFAULT:\n 'var(--mieweb-destructive, var(--mieweb-destructive-500, #dc2626))',\n 50: 'var(--mieweb-destructive-50, #fef2f2)',\n 100: 'var(--mieweb-destructive-100, #fee2e2)',\n 200: 'var(--mieweb-destructive-200, #fecaca)',\n 300: 'var(--mieweb-destructive-300, #fca5a5)',\n 400: 'var(--mieweb-destructive-400, #f87171)',\n 500: 'var(--mieweb-destructive-500, #dc2626)',\n 600: 'var(--mieweb-destructive-600, #dc2626)',\n 700: 'var(--mieweb-destructive-700, #b91c1c)',\n 800: 'var(--mieweb-destructive-800, #991b1b)',\n 900: 'var(--mieweb-destructive-900, #7f1d1d)',\n 950: 'var(--mieweb-destructive-950, #450a0a)',\n foreground: 'var(--mieweb-destructive-foreground, hsl(210 40% 98%))',\n },\n // Success scale\n success: {\n DEFAULT: 'var(--mieweb-success-500, #22c55e)',\n 50: 'var(--mieweb-success-50, #f0fdf4)',\n 100: 'var(--mieweb-success-100, #dcfce7)',\n 200: 'var(--mieweb-success-200, #bbf7d0)',\n 300: 'var(--mieweb-success-300, #86efac)',\n 400: 'var(--mieweb-success-400, #4ade80)',\n 500: 'var(--mieweb-success-500, #22c55e)',\n 600: 'var(--mieweb-success-600, #16a34a)',\n 700: 'var(--mieweb-success-700, #15803d)',\n 800: 'var(--mieweb-success-800, #166534)',\n 900: 'var(--mieweb-success-900, #14532d)',\n 950: 'var(--mieweb-success-950, #052e16)',\n foreground: 'var(--mieweb-success-foreground, hsl(355.7 100% 97.3%))',\n },\n // Warning scale\n warning: {\n DEFAULT: 'var(--mieweb-warning-500, #f59e0b)',\n 50: 'var(--mieweb-warning-50, #fffbeb)',\n 100: 'var(--mieweb-warning-100, #fef3c7)',\n 200: 'var(--mieweb-warning-200, #fde68a)',\n 300: 'var(--mieweb-warning-300, #fcd34d)',\n 400: 'var(--mieweb-warning-400, #fbbf24)',\n 500: 'var(--mieweb-warning-500, #f59e0b)',\n 600: 'var(--mieweb-warning-600, #d97706)',\n 700: 'var(--mieweb-warning-700, #b45309)',\n 800: 'var(--mieweb-warning-800, #92400e)',\n 900: 'var(--mieweb-warning-900, #78350f)',\n 950: 'var(--mieweb-warning-950, #451a03)',\n foreground: 'var(--mieweb-warning-foreground, hsl(26 83.3% 14.1%))',\n },\n // Info scale\n info: {\n DEFAULT: 'var(--mieweb-info-500, #0ea5e9)',\n 50: 'var(--mieweb-info-50, #f0f9ff)',\n 100: 'var(--mieweb-info-100, #e0f2fe)',\n 200: 'var(--mieweb-info-200, #bae6fd)',\n 300: 'var(--mieweb-info-300, #7dd3fc)',\n 400: 'var(--mieweb-info-400, #38bdf8)',\n 500: 'var(--mieweb-info-500, #0ea5e9)',\n 600: 'var(--mieweb-info-600, #0284c7)',\n 700: 'var(--mieweb-info-700, #0369a1)',\n 800: 'var(--mieweb-info-800, #075985)',\n 900: 'var(--mieweb-info-900, #0c4a6e)',\n 950: 'var(--mieweb-info-950, #082f49)',\n foreground: 'var(--mieweb-info-foreground, #ffffff)',\n },\n // Chart / data visualization\n chart: {\n 1: 'var(--mieweb-chart-1, #27aae1)',\n 2: 'var(--mieweb-chart-2, #22c55e)',\n 3: 'var(--mieweb-chart-3, #f59e0b)',\n 4: 'var(--mieweb-chart-4, #ef4444)',\n 5: 'var(--mieweb-chart-5, #6366f1)',\n },\n },\n fontFamily: {\n sans: [\n 'var(--mieweb-font-sans, ui-sans-serif)',\n 'system-ui',\n 'sans-serif',\n ],\n },\n borderRadius: {\n '2xl': 'var(--mieweb-radius-2xl, 1rem)',\n lg: 'var(--mieweb-radius-lg, 0.75rem)',\n md: 'var(--mieweb-radius-md, 0.5rem)',\n sm: 'var(--mieweb-radius-sm, 0.25rem)',\n xl: 'var(--mieweb-radius-xl, 1rem)',\n },\n boxShadow: {\n card: 'var(--mieweb-shadow-card, 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1))',\n },\n keyframes: {\n 'fade-in': {\n '0%': { opacity: '0' },\n '100%': { opacity: '1' },\n },\n 'fade-out': {\n '0%': { opacity: '1' },\n '100%': { opacity: '0' },\n },\n 'slide-in-from-top': {\n '0%': { transform: 'translateY(-0.5rem)', opacity: '0' },\n '100%': { transform: 'translateY(0)', opacity: '1' },\n },\n 'slide-in-from-bottom': {\n '0%': { transform: 'translateY(0.5rem)', opacity: '0' },\n '100%': { transform: 'translateY(0)', opacity: '1' },\n },\n 'slide-in-right': {\n '0%': { transform: 'translateX(100%)', opacity: '0' },\n '100%': { transform: 'translateX(0)', opacity: '1' },\n },\n 'slide-in-left': {\n '0%': { transform: 'translateX(-100%)', opacity: '0' },\n '100%': { transform: 'translateX(0)', opacity: '1' },\n },\n 'scale-in': {\n '0%': { transform: 'scale(0.95)', opacity: '0' },\n '100%': { transform: 'scale(1)', opacity: '1' },\n },\n },\n animation: {\n 'fade-in': 'fade-in 150ms ease-out',\n 'fade-out': 'fade-out 150ms ease-in',\n 'slide-in-from-top': 'slide-in-from-top 150ms ease-out',\n 'slide-in-from-bottom': 'slide-in-from-bottom 150ms ease-out',\n 'slide-in-right': 'slide-in-right 300ms ease-out',\n 'slide-in-left': 'slide-in-left 300ms ease-out',\n 'scale-in': 'scale-in 150ms ease-out',\n },\n },\n },\n};\n\nexport default miewebUIPreset;\n"]}
|