@reforma/components 0.3.1 → 0.3.3

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.
@@ -1 +1 @@
1
- @layer components{.Popover_popover_D8IlUx{font-weight:400;font-size:var(--text-sm);line-height:var(--leading-sm);font-family:Onest,sans-serif;letter-spacing:0;--popover-origin: top center;--popover-from: 0 calc(-1 * var(--spacing-sm));--popover-ease: cubic-bezier(.22, 1.2, .28, 1);--popover-shadow: 0 var(--spacing-16) var(--spacing-32) 0 var(--color-dark-a10);--popover-shadow-enter: 0 var(--spacing-8) var(--spacing-16) 0 var(--color-dark-a5);display:flex;flex-flow:column;border-radius:calc(var(--radius-lg) * var(--squircle-radius-factor));corner-shape:superellipse(var(--squircle-value));transform-origin:var(--trigger-anchor-point, var(--popover-origin));translate:0;scale:1;opacity:1;z-index:var(--z-popover)!important;transition:opacity .28s var(--popover-ease),translate .28s var(--popover-ease),scale .28s var(--popover-ease),box-shadow .28s var(--popover-ease);outline:none;box-shadow:var(--popover-shadow);border:1px solid var(--color-surface-border);background:var(--color-surface-float);min-width:var(--spacing-192);max-width:min(calc(100vw - var(--spacing-16)),20rem);color:var(--color-text)}.Popover_popover_D8IlUx:focus-visible{outline:none}.Popover_popover_D8IlUx[data-entering]{translate:var(--popover-from);scale:.97;opacity:.6;box-shadow:var(--popover-shadow-enter)}.Popover_popover_D8IlUx[data-exiting]{translate:var(--popover-from);scale:.97;opacity:0;transition-duration:.12s;transition-timing-function:var(--ease);box-shadow:var(--popover-shadow-enter)}.Popover_popover_D8IlUx[data-placement^=bottom]{--popover-origin: top center;--popover-from: 0 calc(-1 * var(--spacing-sm))}.Popover_popover_D8IlUx[data-placement^=top]{--popover-origin: bottom center;--popover-from: 0 var(--spacing-sm)}.Popover_popover_D8IlUx[data-placement^=left],.Popover_popover_D8IlUx[data-placement^=start]{--popover-origin: center right;--popover-from: var(--spacing-sm) 0}.Popover_popover_D8IlUx[data-placement^=right],.Popover_popover_D8IlUx[data-placement^=end]{--popover-origin: center left;--popover-from: calc(-1 * var(--spacing-sm)) 0}@media(prefers-reduced-motion:reduce){.Popover_popover_D8IlUx{transition:opacity var(--transition-duration-fast) var(--ease)}.Popover_popover_D8IlUx[data-entering],.Popover_popover_D8IlUx[data-exiting]{translate:0;scale:1;box-shadow:var(--popover-shadow)}}.Popover_popover_D8IlUx .Popover_react-aria-OverlayArrow_fQ32wo svg{display:block;fill:var(--color-surface-float)}}
1
+ @layer components{.Popover_popover_D8IlUx{font-weight:400;font-size:var(--text-sm);line-height:var(--leading-sm);font-family:Onest,sans-serif;letter-spacing:0;--popover-origin: top center;--popover-from: 0 calc(-1 * var(--spacing-sm));--popover-ease: cubic-bezier(.22, 1.2, .28, 1);--popover-shadow: 0 var(--spacing-16) var(--spacing-32) 0 var(--color-dark-a10);--popover-shadow-enter: 0 var(--spacing-8) var(--spacing-16) 0 var(--color-dark-a5);display:flex;flex-flow:column;border-radius:calc(var(--radius-lg) * var(--squircle-radius-factor));corner-shape:superellipse(var(--squircle-value));transform-origin:var(--trigger-anchor-point, var(--popover-origin));translate:0;scale:1;opacity:1;z-index:var(--z-popover)!important;transition:opacity .28s var(--popover-ease),translate .28s var(--popover-ease),scale .28s var(--popover-ease),box-shadow .28s var(--popover-ease);outline:none;box-shadow:var(--popover-shadow);border:1px solid var(--color-surface-border);background:var(--color-surface-float);min-width:var(--spacing-192);max-width:min(calc(100vw - var(--spacing-16)),20rem);color:var(--color-text)}.Popover_popover_D8IlUx:focus-visible{outline:none}.Popover_popover_D8IlUx[data-entering]{translate:var(--popover-from);scale:.97;opacity:.6;box-shadow:var(--popover-shadow-enter)}.Popover_popover_D8IlUx[data-exiting]{translate:var(--popover-from);scale:.97;opacity:0;transition-duration:.12s;transition-timing-function:var(--ease);box-shadow:var(--popover-shadow-enter);pointer-events:none}.Popover_popover_D8IlUx[data-placement^=bottom]{--popover-origin: top center;--popover-from: 0 calc(-1 * var(--spacing-sm))}.Popover_popover_D8IlUx[data-placement^=top]{--popover-origin: bottom center;--popover-from: 0 var(--spacing-sm)}.Popover_popover_D8IlUx[data-placement^=left],.Popover_popover_D8IlUx[data-placement^=start]{--popover-origin: center right;--popover-from: var(--spacing-sm) 0}.Popover_popover_D8IlUx[data-placement^=right],.Popover_popover_D8IlUx[data-placement^=end]{--popover-origin: center left;--popover-from: calc(-1 * var(--spacing-sm)) 0}@media(prefers-reduced-motion:reduce){.Popover_popover_D8IlUx{transition:opacity var(--transition-duration-fast) var(--ease)}.Popover_popover_D8IlUx[data-entering],.Popover_popover_D8IlUx[data-exiting]{translate:0;scale:1;box-shadow:var(--popover-shadow)}}.Popover_popover_D8IlUx .Popover_react-aria-OverlayArrow_fQ32wo svg{display:block;fill:var(--color-surface-float)}}
@@ -1 +1 @@
1
- {"version":3,"file":"MessageAssistantBody.d.ts","sourceRoot":"","sources":["../../../../src/chat/Message/turn/MessageAssistantBody.tsx"],"names":[],"mappings":"AAwIA;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,uBAE9B;IACC,kEAAkE;IAClE,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;IAFG,kEAAkE;kBACpD,OAAO;;uCAFtB;QACC,kEAAkE;QAClE,WAAW,CAAC,EAAE,OAAO,CAAC;KACzB;CA8EC,CAAC"}
1
+ {"version":3,"file":"MessageAssistantBody.d.ts","sourceRoot":"","sources":["../../../../src/chat/Message/turn/MessageAssistantBody.tsx"],"names":[],"mappings":"AAmJA;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,uBAE9B;IACC,kEAAkE;IAClE,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;IAFG,kEAAkE;kBACpD,OAAO;;uCAFtB;QACC,kEAAkE;QAClE,WAAW,CAAC,EAAE,OAAO,CAAC;KACzB;CA8EC,CAAC"}
@@ -1,16 +1,16 @@
1
1
  import { ChevronDown as A } from "@reforma/icons/8";
2
2
  import { cn as C } from "@reforma/lib";
3
- import { observer as P } from "mobx-react-lite";
4
- import { Button as T } from "../../../Button/Button.js";
5
- import { Collapsible as F, CollapsibleContent as y, useCollapsible as L, CollapsibleTrigger as M } from "../../../Collapsible/Collapsible.js";
6
- import { For as N } from "../../../For/For.js";
7
- import { Show as x } from "../../../Show/Show.js";
3
+ import { observer as T } from "mobx-react-lite";
4
+ import { Button as F } from "../../../Button/Button.js";
5
+ import { Collapsible as y, useCollapsible as P, CollapsibleTrigger as L, CollapsibleContent as M } from "../../../Collapsible/Collapsible.js";
6
+ import { For as W } from "../../../For/For.js";
7
+ import { Show as w } from "../../../Show/Show.js";
8
8
  import { ConversationPendingLoader as S } from "../../Conversation/ConversationPendingLoader.js";
9
- import { streamingPhaseActiveIndex as W, partsFromSegmentGroups as j } from "../normalize/normalizeMessageParts.js";
9
+ import { streamingPhaseActiveIndex as N, partsFromSegmentGroups as j } from "../normalize/normalizeMessageParts.js";
10
10
  import { MessagePhaseSection as B } from "../segments/MessagePhaseSection.js";
11
11
  import v from "./Message.module.css.js";
12
- import { useMessageTurn as $ } from "./messageTurnContext.js";
13
- import { splitFinishedWork as D, workedForLabel as E } from "./workedCollapse.js";
12
+ import { useMessageTurn as E } from "./messageTurnContext.js";
13
+ import { splitFinishedWork as $, workedForLabel as D } from "./workedCollapse.js";
14
14
  import { jsx as r, jsxs as d, Fragment as b } from "react/jsx-runtime";
15
15
  function G(t) {
16
16
  const e = [];
@@ -32,27 +32,27 @@ function k({
32
32
  phaseActiveIndex: u,
33
33
  getPhaseStats: o,
34
34
  lastPart: p,
35
- loaderParts: g,
35
+ loaderParts: f,
36
36
  markTail: a
37
37
  }) {
38
- return /* @__PURE__ */ r(N, {
38
+ return /* @__PURE__ */ r(W, {
39
39
  each: t,
40
- children: (i, m, {
41
- isLast: f
40
+ children: (i, c, {
41
+ isLast: g
42
42
  }) => {
43
- const c = a && f;
43
+ const m = a && g;
44
44
  return /* @__PURE__ */ r(B, {
45
45
  segment: i,
46
46
  messageId: e,
47
47
  isStreaming: s,
48
48
  isLiveMessage: n,
49
- isLastSegment: c,
50
- streamActive: l && (c || m === u),
49
+ isLastSegment: m,
50
+ streamActive: l && (m || c === u),
51
51
  fileStats: i.layout === "grouped" ? o?.(j(i.groups)) : void 0,
52
- children: c && s ? /* @__PURE__ */ r(S, {
52
+ children: m && s ? /* @__PURE__ */ r(S, {
53
53
  lastPart: p,
54
54
  messageId: e,
55
- parts: g
55
+ parts: f
56
56
  }) : null
57
57
  }, `${e}-${i.index}`);
58
58
  }
@@ -63,10 +63,10 @@ function I({
63
63
  }) {
64
64
  const {
65
65
  state: e
66
- } = L();
67
- return /* @__PURE__ */ r(M, {
66
+ } = P();
67
+ return /* @__PURE__ */ r(L, {
68
68
  asChild: !0,
69
- children: /* @__PURE__ */ d(T, {
69
+ children: /* @__PURE__ */ d(F, {
70
70
  type: "button",
71
71
  variant: "inline",
72
72
  color: "secondary",
@@ -80,24 +80,37 @@ function I({
80
80
  });
81
81
  }
82
82
  function O({
83
+ children: t
84
+ }) {
85
+ const {
86
+ state: e
87
+ } = P();
88
+ return /* @__PURE__ */ r(w, {
89
+ when: e.isExpanded,
90
+ children: /* @__PURE__ */ r(M, {
91
+ className: v.workedPanel,
92
+ children: t
93
+ })
94
+ });
95
+ }
96
+ function R({
83
97
  label: t,
84
98
  children: e
85
99
  }) {
86
- return /* @__PURE__ */ d(F, {
100
+ return /* @__PURE__ */ d(y, {
87
101
  className: v.worked,
88
102
  defaultOpen: !1,
89
103
  children: [/* @__PURE__ */ r(I, {
90
104
  label: t
91
- }), /* @__PURE__ */ r(y, {
92
- className: v.workedPanel,
105
+ }), /* @__PURE__ */ r(O, {
93
106
  children: e
94
107
  })]
95
108
  });
96
109
  }
97
- const re = P(({
110
+ const te = T(({
98
111
  hideSources: t = !1
99
112
  } = {}) => {
100
- const e = $();
113
+ const e = E();
101
114
  if (e?.role !== "assistant" || e.message.role !== "assistant")
102
115
  return null;
103
116
  const {
@@ -107,31 +120,31 @@ const re = P(({
107
120
  turnActive: u,
108
121
  isStreaming: o,
109
122
  isLastMessage: p,
110
- getPhaseStats: g
111
- } = e, a = t ? G(n) : n, i = e.message.parts, m = e.message.metadata;
123
+ getPhaseStats: f
124
+ } = e, a = t ? G(n) : n, i = e.message.parts, c = e.message.metadata;
112
125
  if (a.length === 0 && !o)
113
126
  return null;
114
- const f = W(a, o), c = D(a, {
127
+ const g = N(a, o), m = $(a, {
115
128
  streaming: o,
116
- cancelled: m?.stopReason === "cancelled"
129
+ cancelled: c?.stopReason === "cancelled"
117
130
  }), h = {
118
131
  messageId: s,
119
132
  isStreaming: o,
120
133
  isLiveMessage: p,
121
134
  turnActive: u,
122
- phaseActiveIndex: f,
123
- getPhaseStats: g,
135
+ phaseActiveIndex: g,
136
+ getPhaseStats: f,
124
137
  lastPart: l,
125
138
  loaderParts: i
126
139
  };
127
- return /* @__PURE__ */ r(x, {
128
- when: c,
140
+ return /* @__PURE__ */ r(w, {
141
+ when: m,
129
142
  fallback: /* @__PURE__ */ d(b, {
130
143
  children: [/* @__PURE__ */ r(k, {
131
144
  ...h,
132
145
  segments: a,
133
146
  markTail: !0
134
- }), /* @__PURE__ */ r(x, {
147
+ }), /* @__PURE__ */ r(w, {
135
148
  when: o && a.length === 0,
136
149
  children: /* @__PURE__ */ r(S, {
137
150
  lastPart: l,
@@ -140,23 +153,23 @@ const re = P(({
140
153
  })
141
154
  })]
142
155
  }),
143
- children: (w) => /* @__PURE__ */ d(b, {
144
- children: [/* @__PURE__ */ r(O, {
145
- label: E(m?.startedAt, m?.endedAt),
156
+ children: (x) => /* @__PURE__ */ d(b, {
157
+ children: [/* @__PURE__ */ r(R, {
158
+ label: D(c?.startedAt, c?.endedAt),
146
159
  children: /* @__PURE__ */ r(k, {
147
160
  ...h,
148
- segments: w.work,
161
+ segments: x.work,
149
162
  markTail: !1
150
163
  })
151
164
  }), /* @__PURE__ */ r(k, {
152
165
  ...h,
153
- segments: [w.answer],
166
+ segments: [x.answer],
154
167
  markTail: !0
155
168
  })]
156
169
  })
157
170
  });
158
171
  });
159
172
  export {
160
- re as MessageAssistantBody
173
+ te as MessageAssistantBody
161
174
  };
162
175
  //# sourceMappingURL=MessageAssistantBody.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MessageAssistantBody.js","sources":["../../../../src/chat/Message/turn/MessageAssistantBody.tsx"],"sourcesContent":["'use client';\n\nimport { ChevronDown } from '@reforma/icons/8';\nimport { cn } from '@reforma/lib';\nimport { observer } from 'mobx-react-lite';\n\nimport { Button } from '../../../Button';\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n useCollapsible,\n} from '../../../Collapsible';\nimport { For } from '../../../For';\nimport { Show } from '../../../Show';\nimport { ConversationPendingLoader } from '../../Conversation/ConversationPendingLoader';\nimport { partsFromSegmentGroups, streamingPhaseActiveIndex } from '../normalize/normalizeMessageParts';\nimport { MessagePhaseSection } from '../segments';\nimport styles from './Message.module.css';\nimport { useMessageTurn } from './messageTurnContext';\nimport { splitFinishedWork, workedForLabel } from './workedCollapse';\n\nimport type { ReactNode } from 'react';\nimport type { MessageSegment } from '../normalize/normalizeMessageParts';\nimport type { ReformaUIMessagePart } from '../types';\nimport type { GetPhaseStats } from './messageTurnContext';\n\nfunction segmentsWithoutSources(segments: readonly MessageSegment[]): MessageSegment[] {\n const next: MessageSegment[] = [];\n\n for (const segment of segments) {\n const groups = segment.groups.filter(group => group.kind !== 'sources');\n\n if (groups.length > 0) {\n next.push({ ...segment, groups });\n }\n }\n\n return next;\n}\n\ntype SegmentListProps = {\n segments: readonly MessageSegment[];\n messageId: string;\n isStreaming: boolean;\n isLiveMessage: boolean;\n turnActive: boolean;\n phaseActiveIndex: number;\n getPhaseStats: GetPhaseStats | undefined;\n lastPart: ReformaUIMessagePart | undefined;\n loaderParts: readonly ReformaUIMessagePart[];\n /** Work under the spoiler is not the message tail, so its phases stay closed. */\n markTail: boolean;\n};\n\nfunction AssistantSegments({\n segments,\n messageId,\n isStreaming,\n isLiveMessage,\n turnActive,\n phaseActiveIndex,\n getPhaseStats,\n lastPart,\n loaderParts,\n markTail,\n}: SegmentListProps) {\n return (\n <For each={ segments }>\n { (segment, segIndex, { isLast }) => {\n const isLastSegment = markTail && isLast;\n\n return (\n <MessagePhaseSection\n key={ `${ messageId }-${ segment.index }` }\n segment={ segment }\n messageId={ messageId }\n isStreaming={ isStreaming }\n isLiveMessage={ isLiveMessage }\n isLastSegment={ isLastSegment }\n streamActive={ turnActive && (isLastSegment || segIndex === phaseActiveIndex) }\n fileStats={\n segment.layout === 'grouped'\n ? getPhaseStats?.(partsFromSegmentGroups(segment.groups))\n : undefined\n }\n >\n { isLastSegment && isStreaming\n ? (\n <ConversationPendingLoader\n lastPart={ lastPart }\n messageId={ messageId }\n parts={ loaderParts }\n />\n )\n : null }\n </MessagePhaseSection>\n );\n } }\n </For>\n );\n}\n\nfunction WorkedTrigger({ label }: { label: string }) {\n const { state } = useCollapsible();\n\n return (\n <CollapsibleTrigger asChild>\n <Button\n type=\"button\"\n variant=\"inline\"\n color=\"secondary\"\n className={ styles.workedTrigger }\n >\n { label }\n <ChevronDown\n className={ cn('chevron', 'next') }\n aria-expanded={ state.isExpanded }\n aria-hidden\n />\n </Button>\n </CollapsibleTrigger>\n );\n}\n\nfunction WorkedFor({ label, children }: { label: string; children: ReactNode }) {\n return (\n <Collapsible className={ styles.worked } defaultOpen={ false }>\n <WorkedTrigger label={ label } />\n <CollapsibleContent className={ styles.workedPanel }>\n { children }\n </CollapsibleContent>\n </Collapsible>\n );\n}\n\n/**\n * Assistant turn segments and streaming pending loader.\n * A finished text answer folds the work into one \"Worked for …\" disclosure.\n * Cancelled turns and turns that do not end on text keep the phase rows open.\n */\nexport const MessageAssistantBody = observer(({\n hideSources = false,\n}: {\n /** Editor footer owns citations — drop in-body Sources groups. */\n hideSources?: boolean;\n} = {}) => {\n const turn = useMessageTurn();\n\n if (turn?.role !== 'assistant' || turn.message.role !== 'assistant') {\n return null;\n }\n\n const {\n messageId,\n segments: rawSegments,\n lastPart,\n turnActive,\n isStreaming,\n isLastMessage,\n getPhaseStats,\n } = turn;\n const segments = hideSources ? segmentsWithoutSources(rawSegments) : rawSegments;\n const loaderParts = turn.message.parts;\n const metadata = turn.message.metadata;\n\n if (segments.length === 0 && !isStreaming) {\n return null;\n }\n\n const phaseActiveIndex = streamingPhaseActiveIndex(segments, isStreaming);\n const finished = splitFinishedWork(segments, {\n streaming: isStreaming,\n cancelled: metadata?.stopReason === 'cancelled',\n });\n const listProps = {\n messageId,\n isStreaming,\n isLiveMessage: isLastMessage,\n turnActive,\n phaseActiveIndex,\n getPhaseStats,\n lastPart,\n loaderParts,\n };\n\n return (\n <Show\n when={ finished }\n fallback={ (\n <>\n <AssistantSegments\n { ...listProps }\n segments={ segments }\n markTail\n />\n <Show when={ isStreaming && segments.length === 0 }>\n <ConversationPendingLoader\n lastPart={ lastPart }\n messageId={ messageId }\n parts={ loaderParts }\n />\n </Show>\n </>\n ) }\n >\n { split => (\n <>\n <WorkedFor label={ workedForLabel(metadata?.startedAt, metadata?.endedAt) }>\n <AssistantSegments\n { ...listProps }\n segments={ split.work }\n markTail={ false }\n />\n </WorkedFor>\n <AssistantSegments\n { ...listProps }\n segments={ [split.answer] }\n markTail\n />\n </>\n ) }\n </Show>\n );\n});\n"],"names":["segmentsWithoutSources","segments","next","segment","groups","group","AssistantSegments","messageId","isStreaming","isLiveMessage","turnActive","phaseActiveIndex","getPhaseStats","lastPart","loaderParts","markTail","For","segIndex","isLast","isLastSegment","MessagePhaseSection","partsFromSegmentGroups","_jsx","ConversationPendingLoader","WorkedTrigger","label","state","useCollapsible","CollapsibleTrigger","Button","styles","ChevronDown","cn","WorkedFor","children","Collapsible","CollapsibleContent","MessageAssistantBody","observer","hideSources","turn","useMessageTurn","rawSegments","isLastMessage","metadata","streamingPhaseActiveIndex","finished","splitFinishedWork","listProps","Show","_Fragment","split","_jsxs","workedForLabel"],"mappings":"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"}
1
+ {"version":3,"file":"MessageAssistantBody.js","sources":["../../../../src/chat/Message/turn/MessageAssistantBody.tsx"],"sourcesContent":["'use client';\n\nimport { ChevronDown } from '@reforma/icons/8';\nimport { cn } from '@reforma/lib';\nimport { observer } from 'mobx-react-lite';\n\nimport { Button } from '../../../Button';\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n useCollapsible,\n} from '../../../Collapsible';\nimport { For } from '../../../For';\nimport { Show } from '../../../Show';\nimport { ConversationPendingLoader } from '../../Conversation/ConversationPendingLoader';\nimport { partsFromSegmentGroups, streamingPhaseActiveIndex } from '../normalize/normalizeMessageParts';\nimport { MessagePhaseSection } from '../segments';\nimport styles from './Message.module.css';\nimport { useMessageTurn } from './messageTurnContext';\nimport { splitFinishedWork, workedForLabel } from './workedCollapse';\n\nimport type { ReactNode } from 'react';\nimport type { MessageSegment } from '../normalize/normalizeMessageParts';\nimport type { ReformaUIMessagePart } from '../types';\nimport type { GetPhaseStats } from './messageTurnContext';\n\nfunction segmentsWithoutSources(segments: readonly MessageSegment[]): MessageSegment[] {\n const next: MessageSegment[] = [];\n\n for (const segment of segments) {\n const groups = segment.groups.filter(group => group.kind !== 'sources');\n\n if (groups.length > 0) {\n next.push({ ...segment, groups });\n }\n }\n\n return next;\n}\n\ntype SegmentListProps = {\n segments: readonly MessageSegment[];\n messageId: string;\n isStreaming: boolean;\n isLiveMessage: boolean;\n turnActive: boolean;\n phaseActiveIndex: number;\n getPhaseStats: GetPhaseStats | undefined;\n lastPart: ReformaUIMessagePart | undefined;\n loaderParts: readonly ReformaUIMessagePart[];\n /** Work under the spoiler is not the message tail, so its phases stay closed. */\n markTail: boolean;\n};\n\nfunction AssistantSegments({\n segments,\n messageId,\n isStreaming,\n isLiveMessage,\n turnActive,\n phaseActiveIndex,\n getPhaseStats,\n lastPart,\n loaderParts,\n markTail,\n}: SegmentListProps) {\n return (\n <For each={ segments }>\n { (segment, segIndex, { isLast }) => {\n const isLastSegment = markTail && isLast;\n\n return (\n <MessagePhaseSection\n key={ `${ messageId }-${ segment.index }` }\n segment={ segment }\n messageId={ messageId }\n isStreaming={ isStreaming }\n isLiveMessage={ isLiveMessage }\n isLastSegment={ isLastSegment }\n streamActive={ turnActive && (isLastSegment || segIndex === phaseActiveIndex) }\n fileStats={\n segment.layout === 'grouped'\n ? getPhaseStats?.(partsFromSegmentGroups(segment.groups))\n : undefined\n }\n >\n { isLastSegment && isStreaming\n ? (\n <ConversationPendingLoader\n lastPart={ lastPart }\n messageId={ messageId }\n parts={ loaderParts }\n />\n )\n : null }\n </MessagePhaseSection>\n );\n } }\n </For>\n );\n}\n\nfunction WorkedTrigger({ label }: { label: string }) {\n const { state } = useCollapsible();\n\n return (\n <CollapsibleTrigger asChild>\n <Button\n type=\"button\"\n variant=\"inline\"\n color=\"secondary\"\n className={ styles.workedTrigger }\n >\n { label }\n <ChevronDown\n className={ cn('chevron', 'next') }\n aria-expanded={ state.isExpanded }\n aria-hidden\n />\n </Button>\n </CollapsibleTrigger>\n );\n}\n\n/** Closed panel stays out of the DOM. `hidden=until-found` is still a flex item and keeps `.worked`'s gap. */\nfunction WorkedPanel({ children }: { children: ReactNode }) {\n const { state } = useCollapsible();\n\n return (\n <Show when={ state.isExpanded }>\n <CollapsibleContent className={ styles.workedPanel }>\n { children }\n </CollapsibleContent>\n </Show>\n );\n}\n\nfunction WorkedFor({ label, children }: { label: string; children: ReactNode }) {\n return (\n <Collapsible className={ styles.worked } defaultOpen={ false }>\n <WorkedTrigger label={ label } />\n <WorkedPanel>{ children }</WorkedPanel>\n </Collapsible>\n );\n}\n\n/**\n * Assistant turn segments and streaming pending loader.\n * A finished text answer folds the work into one \"Worked for …\" disclosure.\n * Cancelled turns and turns that do not end on text keep the phase rows open.\n */\nexport const MessageAssistantBody = observer(({\n hideSources = false,\n}: {\n /** Editor footer owns citations — drop in-body Sources groups. */\n hideSources?: boolean;\n} = {}) => {\n const turn = useMessageTurn();\n\n if (turn?.role !== 'assistant' || turn.message.role !== 'assistant') {\n return null;\n }\n\n const {\n messageId,\n segments: rawSegments,\n lastPart,\n turnActive,\n isStreaming,\n isLastMessage,\n getPhaseStats,\n } = turn;\n const segments = hideSources ? segmentsWithoutSources(rawSegments) : rawSegments;\n const loaderParts = turn.message.parts;\n const metadata = turn.message.metadata;\n\n if (segments.length === 0 && !isStreaming) {\n return null;\n }\n\n const phaseActiveIndex = streamingPhaseActiveIndex(segments, isStreaming);\n const finished = splitFinishedWork(segments, {\n streaming: isStreaming,\n cancelled: metadata?.stopReason === 'cancelled',\n });\n const listProps = {\n messageId,\n isStreaming,\n isLiveMessage: isLastMessage,\n turnActive,\n phaseActiveIndex,\n getPhaseStats,\n lastPart,\n loaderParts,\n };\n\n return (\n <Show\n when={ finished }\n fallback={ (\n <>\n <AssistantSegments\n { ...listProps }\n segments={ segments }\n markTail\n />\n <Show when={ isStreaming && segments.length === 0 }>\n <ConversationPendingLoader\n lastPart={ lastPart }\n messageId={ messageId }\n parts={ loaderParts }\n />\n </Show>\n </>\n ) }\n >\n { split => (\n <>\n <WorkedFor label={ workedForLabel(metadata?.startedAt, metadata?.endedAt) }>\n <AssistantSegments\n { ...listProps }\n segments={ split.work }\n markTail={ false }\n />\n </WorkedFor>\n <AssistantSegments\n { ...listProps }\n segments={ [split.answer] }\n markTail\n />\n </>\n ) }\n </Show>\n );\n});\n"],"names":["segmentsWithoutSources","segments","next","segment","groups","group","AssistantSegments","messageId","isStreaming","isLiveMessage","turnActive","phaseActiveIndex","getPhaseStats","lastPart","loaderParts","markTail","For","segIndex","isLast","isLastSegment","MessagePhaseSection","partsFromSegmentGroups","_jsx","ConversationPendingLoader","WorkedTrigger","label","state","useCollapsible","CollapsibleTrigger","Button","styles","ChevronDown","cn","WorkedPanel","children","Show","CollapsibleContent","WorkedFor","Collapsible","MessageAssistantBody","observer","hideSources","turn","useMessageTurn","rawSegments","isLastMessage","metadata","streamingPhaseActiveIndex","finished","splitFinishedWork","listProps","_Fragment","split","_jsxs","workedForLabel"],"mappings":"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"}
@@ -5,6 +5,64 @@
5
5
  * and @Now. Bad arguments, or a throw, make a call evaluate to null.
6
6
  */
7
7
  export declare const functions: (import("@openuidev/lang-core").DefinedFunction<import("zod/v4").ZodObject<{
8
+ list: import("zod/v4").ZodUnion<readonly [import("zod/v4").ZodArray<import("zod/v4").ZodAny>, import("zod/v4").ZodString]>;
9
+ item: import("zod/v4").ZodAny;
10
+ }, import("zod/v4/core").$strip>, import("zod/v4").ZodBoolean> | import("@openuidev/lang-core").DefinedFunction<import("zod/v4").ZodObject<{
11
+ list: import("zod/v4").ZodArray<import("zod/v4").ZodAny>;
12
+ item: import("zod/v4").ZodAny;
13
+ }, import("zod/v4/core").$strip>, import("zod/v4").ZodNumber> | import("@openuidev/lang-core").DefinedFunction<import("zod/v4").ZodObject<{
14
+ list: import("zod/v4").ZodUnion<readonly [import("zod/v4").ZodArray<import("zod/v4").ZodAny>, import("zod/v4").ZodString]>;
15
+ start: import("zod/v4").ZodNumber;
16
+ end: import("zod/v4").ZodOptional<import("zod/v4").ZodNumber>;
17
+ }, import("zod/v4/core").$strip>, import("zod/v4").ZodUnion<readonly [import("zod/v4").ZodArray<import("zod/v4").ZodAny>, import("zod/v4").ZodString]>> | import("@openuidev/lang-core").DefinedFunction<import("zod/v4").ZodObject<{
18
+ list: import("zod/v4").ZodArray<import("zod/v4").ZodAny>;
19
+ }, import("zod/v4/core").$strip>, import("zod/v4").ZodArray<import("zod/v4").ZodAny>> | import("@openuidev/lang-core").DefinedFunction<import("zod/v4").ZodObject<{
20
+ start: import("zod/v4").ZodNumber;
21
+ end: import("zod/v4").ZodNumber;
22
+ step: import("zod/v4").ZodOptional<import("zod/v4").ZodNumber>;
23
+ }, import("zod/v4/core").$strip>, import("zod/v4").ZodArray<import("zod/v4").ZodNumber>> | import("@openuidev/lang-core").DefinedFunction<import("zod/v4").ZodObject<{
24
+ list: import("zod/v4").ZodArray<import("zod/v4").ZodAny>;
25
+ }, import("zod/v4/core").$strip>, import("zod/v4").ZodAny> | import("@openuidev/lang-core").DefinedFunction<import("zod/v4").ZodObject<{
26
+ list: import("zod/v4").ZodArray<import("zod/v4").ZodAny>;
27
+ size: import("zod/v4").ZodNumber;
28
+ }, import("zod/v4/core").$strip>, import("zod/v4").ZodArray<import("zod/v4").ZodArray<import("zod/v4").ZodAny>>> | import("@openuidev/lang-core").DefinedFunction<import("zod/v4").ZodObject<{
29
+ base: import("zod/v4").ZodNumber;
30
+ exponent: import("zod/v4").ZodNumber;
31
+ }, import("zod/v4/core").$strip>, import("zod/v4").ZodNumber> | import("@openuidev/lang-core").DefinedFunction<import("zod/v4").ZodObject<{
32
+ number: import("zod/v4").ZodNumber;
33
+ }, import("zod/v4/core").$strip>, import("zod/v4").ZodNumber> | import("@openuidev/lang-core").DefinedFunction<import("zod/v4").ZodObject<{
34
+ min: import("zod/v4").ZodNumber;
35
+ max: import("zod/v4").ZodNumber;
36
+ integer: import("zod/v4").ZodOptional<import("zod/v4").ZodBoolean>;
37
+ }, import("zod/v4/core").$strip>, import("zod/v4").ZodNumber> | import("@openuidev/lang-core").DefinedFunction<import("zod/v4").ZodObject<{
38
+ part: import("zod/v4").ZodNumber;
39
+ total: import("zod/v4").ZodNumber;
40
+ }, import("zod/v4/core").$strip>, import("zod/v4").ZodNumber> | import("@openuidev/lang-core").DefinedFunction<import("zod/v4").ZodObject<{
41
+ a: import("zod/v4").ZodNumber;
42
+ b: import("zod/v4").ZodNumber;
43
+ t: import("zod/v4").ZodNumber;
44
+ }, import("zod/v4/core").$strip>, import("zod/v4").ZodNumber> | import("@openuidev/lang-core").DefinedFunction<import("zod/v4").ZodObject<{
45
+ total: import("zod/v4").ZodNumber;
46
+ weights: import("zod/v4").ZodArray<import("zod/v4").ZodNumber>;
47
+ decimals: import("zod/v4").ZodOptional<import("zod/v4").ZodNumber>;
48
+ }, import("zod/v4/core").$strip>, import("zod/v4").ZodArray<import("zod/v4").ZodNumber>> | import("@openuidev/lang-core").DefinedFunction<import("zod/v4").ZodObject<{
49
+ principal: import("zod/v4").ZodNumber;
50
+ rate: import("zod/v4").ZodNumber;
51
+ periods: import("zod/v4").ZodNumber;
52
+ }, import("zod/v4/core").$strip>, import("zod/v4").ZodNumber> | import("@openuidev/lang-core").DefinedFunction<import("zod/v4").ZodObject<{
53
+ value: import("zod/v4").ZodNumber;
54
+ from: import("zod/v4").ZodString;
55
+ to: import("zod/v4").ZodString;
56
+ }, import("zod/v4/core").$strip>, import("zod/v4").ZodNumber> | import("@openuidev/lang-core").DefinedFunction<import("zod/v4").ZodObject<{
57
+ text: import("zod/v4").ZodString;
58
+ sep: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
59
+ }, import("zod/v4/core").$strip>, import("zod/v4").ZodArray<import("zod/v4").ZodString>> | import("@openuidev/lang-core").DefinedFunction<import("zod/v4").ZodObject<{
60
+ value: import("zod/v4").ZodOptional<import("zod/v4").ZodAny>;
61
+ fallback: import("zod/v4").ZodAny;
62
+ }, import("zod/v4/core").$strip>, import("zod/v4").ZodAny> | import("@openuidev/lang-core").DefinedFunction<import("zod/v4").ZodObject<{}, import("zod/v4/core").$strip>, import("zod/v4").ZodString> | import("@openuidev/lang-core").DefinedFunction<import("zod/v4").ZodObject<{
63
+ from: import("zod/v4").ZodUnion<readonly [import("zod/v4").ZodString, import("zod/v4").ZodNumber]>;
64
+ to: import("zod/v4").ZodUnion<readonly [import("zod/v4").ZodString, import("zod/v4").ZodNumber]>;
65
+ }, import("zod/v4/core").$strip>, import("zod/v4").ZodNumber> | import("@openuidev/lang-core").DefinedFunction<import("zod/v4").ZodObject<{
8
66
  rows: import("zod/v4").ZodArray<import("zod/v4").ZodAny>;
9
67
  key: import("zod/v4").ZodString;
10
68
  field: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
@@ -74,63 +132,5 @@ export declare const functions: (import("@openuidev/lang-core").DefinedFunction<
74
132
  mean: import("zod/v4").ZodNumber;
75
133
  median: import("zod/v4").ZodNumber;
76
134
  stdev: import("zod/v4").ZodNumber;
77
- }, import("zod/v4/core").$strip>> | import("@openuidev/lang-core").DefinedFunction<import("zod/v4").ZodObject<{
78
- list: import("zod/v4").ZodUnion<readonly [import("zod/v4").ZodArray<import("zod/v4").ZodAny>, import("zod/v4").ZodString]>;
79
- item: import("zod/v4").ZodAny;
80
- }, import("zod/v4/core").$strip>, import("zod/v4").ZodBoolean> | import("@openuidev/lang-core").DefinedFunction<import("zod/v4").ZodObject<{
81
- list: import("zod/v4").ZodArray<import("zod/v4").ZodAny>;
82
- item: import("zod/v4").ZodAny;
83
- }, import("zod/v4/core").$strip>, import("zod/v4").ZodNumber> | import("@openuidev/lang-core").DefinedFunction<import("zod/v4").ZodObject<{
84
- list: import("zod/v4").ZodUnion<readonly [import("zod/v4").ZodArray<import("zod/v4").ZodAny>, import("zod/v4").ZodString]>;
85
- start: import("zod/v4").ZodNumber;
86
- end: import("zod/v4").ZodOptional<import("zod/v4").ZodNumber>;
87
- }, import("zod/v4/core").$strip>, import("zod/v4").ZodUnion<readonly [import("zod/v4").ZodArray<import("zod/v4").ZodAny>, import("zod/v4").ZodString]>> | import("@openuidev/lang-core").DefinedFunction<import("zod/v4").ZodObject<{
88
- list: import("zod/v4").ZodArray<import("zod/v4").ZodAny>;
89
- }, import("zod/v4/core").$strip>, import("zod/v4").ZodArray<import("zod/v4").ZodAny>> | import("@openuidev/lang-core").DefinedFunction<import("zod/v4").ZodObject<{
90
- start: import("zod/v4").ZodNumber;
91
- end: import("zod/v4").ZodNumber;
92
- step: import("zod/v4").ZodOptional<import("zod/v4").ZodNumber>;
93
- }, import("zod/v4/core").$strip>, import("zod/v4").ZodArray<import("zod/v4").ZodNumber>> | import("@openuidev/lang-core").DefinedFunction<import("zod/v4").ZodObject<{
94
- list: import("zod/v4").ZodArray<import("zod/v4").ZodAny>;
95
- }, import("zod/v4/core").$strip>, import("zod/v4").ZodAny> | import("@openuidev/lang-core").DefinedFunction<import("zod/v4").ZodObject<{
96
- list: import("zod/v4").ZodArray<import("zod/v4").ZodAny>;
97
- size: import("zod/v4").ZodNumber;
98
- }, import("zod/v4/core").$strip>, import("zod/v4").ZodArray<import("zod/v4").ZodArray<import("zod/v4").ZodAny>>> | import("@openuidev/lang-core").DefinedFunction<import("zod/v4").ZodObject<{
99
- base: import("zod/v4").ZodNumber;
100
- exponent: import("zod/v4").ZodNumber;
101
- }, import("zod/v4/core").$strip>, import("zod/v4").ZodNumber> | import("@openuidev/lang-core").DefinedFunction<import("zod/v4").ZodObject<{
102
- number: import("zod/v4").ZodNumber;
103
- }, import("zod/v4/core").$strip>, import("zod/v4").ZodNumber> | import("@openuidev/lang-core").DefinedFunction<import("zod/v4").ZodObject<{
104
- min: import("zod/v4").ZodNumber;
105
- max: import("zod/v4").ZodNumber;
106
- integer: import("zod/v4").ZodOptional<import("zod/v4").ZodBoolean>;
107
- }, import("zod/v4/core").$strip>, import("zod/v4").ZodNumber> | import("@openuidev/lang-core").DefinedFunction<import("zod/v4").ZodObject<{
108
- part: import("zod/v4").ZodNumber;
109
- total: import("zod/v4").ZodNumber;
110
- }, import("zod/v4/core").$strip>, import("zod/v4").ZodNumber> | import("@openuidev/lang-core").DefinedFunction<import("zod/v4").ZodObject<{
111
- a: import("zod/v4").ZodNumber;
112
- b: import("zod/v4").ZodNumber;
113
- t: import("zod/v4").ZodNumber;
114
- }, import("zod/v4/core").$strip>, import("zod/v4").ZodNumber> | import("@openuidev/lang-core").DefinedFunction<import("zod/v4").ZodObject<{
115
- total: import("zod/v4").ZodNumber;
116
- weights: import("zod/v4").ZodArray<import("zod/v4").ZodNumber>;
117
- decimals: import("zod/v4").ZodOptional<import("zod/v4").ZodNumber>;
118
- }, import("zod/v4/core").$strip>, import("zod/v4").ZodArray<import("zod/v4").ZodNumber>> | import("@openuidev/lang-core").DefinedFunction<import("zod/v4").ZodObject<{
119
- principal: import("zod/v4").ZodNumber;
120
- rate: import("zod/v4").ZodNumber;
121
- periods: import("zod/v4").ZodNumber;
122
- }, import("zod/v4/core").$strip>, import("zod/v4").ZodNumber> | import("@openuidev/lang-core").DefinedFunction<import("zod/v4").ZodObject<{
123
- value: import("zod/v4").ZodNumber;
124
- from: import("zod/v4").ZodString;
125
- to: import("zod/v4").ZodString;
126
- }, import("zod/v4/core").$strip>, import("zod/v4").ZodNumber> | import("@openuidev/lang-core").DefinedFunction<import("zod/v4").ZodObject<{
127
- text: import("zod/v4").ZodString;
128
- sep: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
129
- }, import("zod/v4/core").$strip>, import("zod/v4").ZodArray<import("zod/v4").ZodString>> | import("@openuidev/lang-core").DefinedFunction<import("zod/v4").ZodObject<{
130
- value: import("zod/v4").ZodOptional<import("zod/v4").ZodAny>;
131
- fallback: import("zod/v4").ZodAny;
132
- }, import("zod/v4/core").$strip>, import("zod/v4").ZodAny> | import("@openuidev/lang-core").DefinedFunction<import("zod/v4").ZodObject<{}, import("zod/v4/core").$strip>, import("zod/v4").ZodString> | import("@openuidev/lang-core").DefinedFunction<import("zod/v4").ZodObject<{
133
- from: import("zod/v4").ZodUnion<readonly [import("zod/v4").ZodString, import("zod/v4").ZodNumber]>;
134
- to: import("zod/v4").ZodUnion<readonly [import("zod/v4").ZodString, import("zod/v4").ZodNumber]>;
135
- }, import("zod/v4/core").$strip>, import("zod/v4").ZodNumber>)[];
135
+ }, import("zod/v4/core").$strip>>)[];
136
136
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/openui/functions/index.ts"],"names":[],"mappings":"AAOA;;;;;GAKG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gEAAkH,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/openui/functions/index.ts"],"names":[],"mappings":"AAOA;;;;;GAKG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCAAkH,CAAC"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@reforma/components",
3
3
  "description": "A components library for Reforma",
4
4
  "type": "module",
5
- "version": "0.3.1",
5
+ "version": "0.3.3",
6
6
  "license": "UNLICENSED",
7
7
  "author": "Reforma, Inc. <dev@reforma.ai>",
8
8
  "repository": {
@@ -69,10 +69,10 @@
69
69
  "@openuidev/react-lang": "^1.0.1",
70
70
  "@react-aria/dnd": "^3.11.6",
71
71
  "@react-stately/utils": "^3.11.0",
72
- "@reforma/constants": "workspace:*",
73
- "@reforma/icons": "workspace:*",
74
- "@reforma/lib": "workspace:*",
75
- "@reforma/types": "workspace:*",
72
+ "@reforma/constants": "1.0.1",
73
+ "@reforma/icons": "0.1.0",
74
+ "@reforma/lib": "0.1.5",
75
+ "@reforma/types": "1.2.1",
76
76
  "@shikijs/transformers": "^4.0.2",
77
77
  "@streamdown/cjk": "1.0.3",
78
78
  "@streamdown/code": "1.1.1",
@@ -114,14 +114,6 @@
114
114
  "streamdown": "2.5.0",
115
115
  "zod": "^4.4.3"
116
116
  },
117
- "devDependencies": {
118
- "@babel/preset-react": "^7.26.3",
119
- "@reforma/styles": "workspace:*",
120
- "@vitejs/plugin-react-swc": "^3.7.0",
121
- "vite": "^7.0.0",
122
- "vite-plugin-babel": "^1.3.0",
123
- "vite-plugin-dts": "4.5.4"
124
- },
125
117
  "peerDependencies": {
126
118
  "react": "^19.2.8",
127
119
  "react-dom": "^19.2.8"