@theoremjs/react 0.0.0-stage → 0.3.1

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.
Files changed (320) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +772 -2
  3. package/client/attachment-hover-preview.d.ts +11 -0
  4. package/client/attachment-hover-preview.js +36 -0
  5. package/client/audio-level.d.ts +5 -0
  6. package/client/audio-level.js +24 -0
  7. package/client/composer-attachments.d.ts +30 -0
  8. package/client/composer-attachments.js +33 -0
  9. package/client/composer-drawer.d.ts +19 -0
  10. package/client/composer-drawer.js +15 -0
  11. package/client/composer-hints.d.ts +25 -0
  12. package/client/composer-hints.js +20 -0
  13. package/client/composer-primary.d.ts +16 -0
  14. package/client/composer-primary.js +25 -0
  15. package/client/decision-images.d.ts +76 -0
  16. package/client/decision-images.js +139 -0
  17. package/client/decision-transport.d.ts +70 -0
  18. package/client/decision-transport.js +175 -0
  19. package/client/decode-composer-draft.d.ts +11 -0
  20. package/client/decode-composer-draft.js +12 -0
  21. package/client/embedding-input.d.ts +84 -0
  22. package/client/embedding-input.js +194 -0
  23. package/client/embedding-space.d.ts +82 -0
  24. package/client/embedding-space.js +389 -0
  25. package/client/embedding-transport.d.ts +40 -0
  26. package/client/embedding-transport.js +71 -0
  27. package/client/encode-composer-draft.d.ts +9 -0
  28. package/client/encode-composer-draft.js +34 -0
  29. package/client/encode-files.d.ts +18 -0
  30. package/client/encode-files.js +54 -0
  31. package/client/failure.d.ts +29 -0
  32. package/client/failure.js +34 -0
  33. package/client/generation-selection.d.ts +15 -0
  34. package/client/generation-selection.js +24 -0
  35. package/client/host-call.d.ts +51 -0
  36. package/client/host-call.js +47 -0
  37. package/client/host-transport.d.ts +70 -0
  38. package/client/host-transport.js +75 -0
  39. package/client/image-output.d.ts +6 -0
  40. package/client/image-output.js +13 -0
  41. package/client/index.d.ts +28 -0
  42. package/client/index.js +22 -0
  43. package/client/ink-waveform.d.ts +17 -0
  44. package/client/ink-waveform.js +68 -0
  45. package/client/live/apply-live-turn-tool-event.d.ts +14 -0
  46. package/client/live/apply-live-turn-tool-event.js +39 -0
  47. package/client/live/live-captions.d.ts +53 -0
  48. package/client/live/live-captions.js +174 -0
  49. package/client/live/live-mic-forward.d.ts +30 -0
  50. package/client/live/live-mic-forward.js +46 -0
  51. package/client/live/live-page-tool.d.ts +34 -0
  52. package/client/live/live-page-tool.js +11 -0
  53. package/client/live/live-state.d.ts +13 -0
  54. package/client/live/live-state.js +22 -0
  55. package/client/live/live-tool.d.ts +11 -0
  56. package/client/live/live-tool.js +1 -0
  57. package/client/live/live-video.d.ts +10 -0
  58. package/client/live/live-video.js +71 -0
  59. package/client/live/run-live-tool-call.d.ts +22 -0
  60. package/client/live/run-live-tool-call.js +70 -0
  61. package/client/live/use-live-caption-log.d.ts +17 -0
  62. package/client/live/use-live-caption-log.js +51 -0
  63. package/client/live-client.d.ts +189 -0
  64. package/client/live-client.js +829 -0
  65. package/client/live-errors.d.ts +2 -0
  66. package/client/live-errors.js +9 -0
  67. package/client/live-messages.d.ts +148 -0
  68. package/client/live-messages.js +100 -0
  69. package/client/mic-capture.d.ts +4 -0
  70. package/client/mic-capture.js +6 -0
  71. package/client/oauth-popup.d.ts +26 -0
  72. package/client/oauth-popup.js +30 -0
  73. package/client/page-dispatch.d.ts +15 -0
  74. package/client/page-dispatch.js +63 -0
  75. package/client/pcm-downsample.d.ts +4 -0
  76. package/client/pcm-downsample.js +45 -0
  77. package/client/run-commit.d.ts +34 -0
  78. package/client/run-commit.js +49 -0
  79. package/client/run-session.d.ts +79 -0
  80. package/client/run-session.js +207 -0
  81. package/client/schema-fields.d.ts +63 -0
  82. package/client/schema-fields.js +199 -0
  83. package/client/shaped-data.d.ts +118 -0
  84. package/client/shaped-data.js +343 -0
  85. package/client/source-citations.d.ts +13 -0
  86. package/client/source-citations.js +56 -0
  87. package/client/space-geometry.d.ts +39 -0
  88. package/client/space-geometry.js +183 -0
  89. package/client/state-fields.d.ts +16 -0
  90. package/client/state-fields.js +44 -0
  91. package/client/tool-result.d.ts +78 -0
  92. package/client/tool-result.js +293 -0
  93. package/client/tool-resume.d.ts +50 -0
  94. package/client/tool-resume.js +14 -0
  95. package/client/trace-feed.d.ts +13 -0
  96. package/client/trace-feed.js +18 -0
  97. package/client/trace-story.d.ts +163 -0
  98. package/client/trace-story.js +440 -0
  99. package/client/trace-view.d.ts +130 -0
  100. package/client/trace-view.js +333 -0
  101. package/client/transcript-groups.d.ts +140 -0
  102. package/client/transcript-groups.js +217 -0
  103. package/client/transcript-schema.d.ts +10 -0
  104. package/client/transcript-schema.js +120 -0
  105. package/client/transcript-scroll.d.ts +7 -0
  106. package/client/transcript-scroll.js +6 -0
  107. package/client/transport.d.ts +264 -0
  108. package/client/transport.js +330 -0
  109. package/client/turn-client.d.ts +44 -0
  110. package/client/turn-client.js +88 -0
  111. package/client/voice-label.d.ts +2 -0
  112. package/client/voice-label.js +15 -0
  113. package/client/voice-recorder.d.ts +27 -0
  114. package/client/voice-recorder.js +162 -0
  115. package/client/wire-line.d.ts +56 -0
  116. package/client/wire-line.js +90 -0
  117. package/client/worklets/mic-capture.js +16 -0
  118. package/components/InkWaveform.d.ts +21 -0
  119. package/components/InkWaveform.js +131 -0
  120. package/components/live/use-live-runner-controls.d.ts +47 -0
  121. package/components/live/use-live-runner-controls.js +96 -0
  122. package/components/live/use-live-runner-model.d.ts +49 -0
  123. package/components/live/use-live-runner-model.js +190 -0
  124. package/components/live/use-live-runner-ui.d.ts +67 -0
  125. package/components/live/use-live-runner-ui.js +167 -0
  126. package/components/live/use-live-session-client.d.ts +41 -0
  127. package/components/live/use-live-session-client.js +126 -0
  128. package/components/use-composer-voice.d.ts +28 -0
  129. package/components/use-composer-voice.js +90 -0
  130. package/components/use-editor-selection.d.ts +3 -0
  131. package/components/use-editor-selection.js +19 -0
  132. package/components/use-voice-playback.d.ts +17 -0
  133. package/components/use-voice-playback.js +68 -0
  134. package/hooks/use-described.d.ts +12 -0
  135. package/hooks/use-described.js +25 -0
  136. package/hooks/use-embedding-index.d.ts +27 -0
  137. package/hooks/use-embedding-index.js +43 -0
  138. package/hooks/use-one-call.d.ts +31 -0
  139. package/hooks/use-one-call.js +76 -0
  140. package/hooks/use-page-tool-warnings.d.ts +6 -0
  141. package/hooks/use-page-tool-warnings.js +25 -0
  142. package/hooks/use-second-ticker.d.ts +2 -0
  143. package/hooks/use-second-ticker.js +13 -0
  144. package/hooks/use-theorem-chat-actions.d.ts +79 -0
  145. package/hooks/use-theorem-chat-actions.js +287 -0
  146. package/hooks/use-theorem-chat-state.d.ts +66 -0
  147. package/hooks/use-theorem-chat-state.js +122 -0
  148. package/hooks/use-theorem-chat.d.ts +97 -0
  149. package/hooks/use-theorem-chat.js +528 -0
  150. package/hooks/use-theorem-decision.d.ts +18 -0
  151. package/hooks/use-theorem-decision.js +12 -0
  152. package/hooks/use-theorem-embedding.d.ts +18 -0
  153. package/hooks/use-theorem-embedding.js +12 -0
  154. package/hooks/use-theorem-host.d.ts +45 -0
  155. package/hooks/use-theorem-host.js +135 -0
  156. package/hooks/use-theorem-interface.d.ts +22 -0
  157. package/hooks/use-theorem-interface.js +15 -0
  158. package/hooks/use-trace-records.d.ts +4 -0
  159. package/hooks/use-trace-records.js +7 -0
  160. package/index.d.ts +17 -0
  161. package/index.js +17 -0
  162. package/live.d.ts +9 -0
  163. package/live.js +10 -0
  164. package/package.json +74 -4
  165. package/server/checkpoint-ownership.d.ts +6 -0
  166. package/server/checkpoint-ownership.js +42 -0
  167. package/server/conversation-store.d.ts +92 -0
  168. package/server/conversation-store.js +131 -0
  169. package/server/conversation.d.ts +193 -0
  170. package/server/conversation.js +552 -0
  171. package/server/credential-store.d.ts +24 -0
  172. package/server/credential-store.js +14 -0
  173. package/server/decision-handler.d.ts +42 -0
  174. package/server/decision-handler.js +46 -0
  175. package/server/embedding-handler.d.ts +33 -0
  176. package/server/embedding-handler.js +45 -0
  177. package/server/handler.d.ts +152 -0
  178. package/server/handler.js +771 -0
  179. package/server/json-response.d.ts +2 -0
  180. package/server/json-response.js +7 -0
  181. package/server/mod.d.ts +25 -0
  182. package/server/mod.js +23 -0
  183. package/server/page-dispatch.d.ts +22 -0
  184. package/server/page-dispatch.js +127 -0
  185. package/server/request-body.d.ts +2 -0
  186. package/server/request-body.js +42 -0
  187. package/server/request-check.d.ts +21 -0
  188. package/server/request-check.js +49 -0
  189. package/server/session-authority.d.ts +8 -0
  190. package/server/session-authority.js +78 -0
  191. package/server/session-boundary.d.ts +26 -0
  192. package/server/session-boundary.js +64 -0
  193. package/server/session-identity.d.ts +16 -0
  194. package/server/session-identity.js +41 -0
  195. package/server/session-limits.d.ts +12 -0
  196. package/server/session-limits.js +59 -0
  197. package/server/session-store.d.ts +123 -0
  198. package/server/session-store.js +264 -0
  199. package/server/single-action.d.ts +21 -0
  200. package/server/single-action.js +30 -0
  201. package/server/steer-inbox.d.ts +35 -0
  202. package/server/steer-inbox.js +52 -0
  203. package/server/tool-operations.d.ts +6 -0
  204. package/server/tool-operations.js +132 -0
  205. package/server/turn-input.d.ts +10 -0
  206. package/server/turn-input.js +29 -0
  207. package/styles/ink-controls.css +134 -0
  208. package/ui/CardWall.d.ts +10 -0
  209. package/ui/CardWall.js +61 -0
  210. package/ui/ChatComposerBar.d.ts +62 -0
  211. package/ui/ChatComposerBar.js +306 -0
  212. package/ui/ChatTranscript.d.ts +43 -0
  213. package/ui/ChatTranscript.js +527 -0
  214. package/ui/ConsoleFrame.d.ts +104 -0
  215. package/ui/ConsoleFrame.js +146 -0
  216. package/ui/DecisionAnswers.d.ts +53 -0
  217. package/ui/DecisionAnswers.js +233 -0
  218. package/ui/DecisionImages.d.ts +16 -0
  219. package/ui/DecisionImages.js +46 -0
  220. package/ui/EmbeddingDocuments.d.ts +78 -0
  221. package/ui/EmbeddingDocuments.js +278 -0
  222. package/ui/EmbeddingQuery.d.ts +27 -0
  223. package/ui/EmbeddingQuery.js +95 -0
  224. package/ui/EmbeddingResults.d.ts +41 -0
  225. package/ui/EmbeddingResults.js +165 -0
  226. package/ui/EmbeddingSpace.d.ts +26 -0
  227. package/ui/EmbeddingSpace.js +106 -0
  228. package/ui/LiveCaptionsPanel.d.ts +22 -0
  229. package/ui/LiveCaptionsPanel.js +27 -0
  230. package/ui/LiveRunner.d.ts +30 -0
  231. package/ui/LiveRunner.js +180 -0
  232. package/ui/PaneState.d.ts +33 -0
  233. package/ui/PaneState.js +50 -0
  234. package/ui/SchemaFields.d.ts +10 -0
  235. package/ui/SchemaFields.js +150 -0
  236. package/ui/ShapedData.d.ts +11 -0
  237. package/ui/ShapedData.js +196 -0
  238. package/ui/SidePanel.d.ts +126 -0
  239. package/ui/SidePanel.js +123 -0
  240. package/ui/StateFields.d.ts +44 -0
  241. package/ui/StateFields.js +139 -0
  242. package/ui/TheoremChat.d.ts +122 -0
  243. package/ui/TheoremChat.js +134 -0
  244. package/ui/TheoremDecision.d.ts +30 -0
  245. package/ui/TheoremDecision.js +130 -0
  246. package/ui/TheoremEmbedding.d.ts +27 -0
  247. package/ui/TheoremEmbedding.js +122 -0
  248. package/ui/TheoremHost.d.ts +55 -0
  249. package/ui/TheoremHost.js +240 -0
  250. package/ui/ToolGateCard.d.ts +32 -0
  251. package/ui/ToolGateCard.js +107 -0
  252. package/ui/ToolResult.d.ts +10 -0
  253. package/ui/ToolResult.js +62 -0
  254. package/ui/ToolResultCharts.d.ts +5 -0
  255. package/ui/ToolResultCharts.js +103 -0
  256. package/ui/TraceCharts.d.ts +13 -0
  257. package/ui/TraceCharts.js +266 -0
  258. package/ui/TraceGuardrails.d.ts +11 -0
  259. package/ui/TraceGuardrails.js +74 -0
  260. package/ui/TraceInspector.d.ts +16 -0
  261. package/ui/TraceInspector.js +206 -0
  262. package/ui/TraceInspectorPanel.d.ts +46 -0
  263. package/ui/TraceInspectorPanel.js +95 -0
  264. package/ui/TraceOverview.d.ts +38 -0
  265. package/ui/TraceOverview.js +126 -0
  266. package/ui/TraceSpanDetail.d.ts +10 -0
  267. package/ui/TraceSpanDetail.js +190 -0
  268. package/ui/TraceStory.d.ts +20 -0
  269. package/ui/TraceStory.js +108 -0
  270. package/ui/TraceValues.d.ts +36 -0
  271. package/ui/TraceValues.js +123 -0
  272. package/ui/TraceWaterfall.d.ts +13 -0
  273. package/ui/TraceWaterfall.js +135 -0
  274. package/ui/VoiceNote.d.ts +12 -0
  275. package/ui/VoiceNote.js +28 -0
  276. package/ui/approval-heading.d.ts +4 -0
  277. package/ui/approval-heading.js +9 -0
  278. package/ui/arrive.d.ts +18 -0
  279. package/ui/arrive.js +46 -0
  280. package/ui/built/theme.css +792 -0
  281. package/ui/built/theme.css.d.ts +9 -0
  282. package/ui/built/theorem.d.ts +13 -0
  283. package/ui/built/theorem.js +660 -0
  284. package/ui/built/theorem.variants.d.ts +22 -0
  285. package/ui/code-language.d.ts +12 -0
  286. package/ui/code-language.js +50 -0
  287. package/ui/disclosure-motion.d.ts +6 -0
  288. package/ui/disclosure-motion.js +207 -0
  289. package/ui/embedding-space-gl.d.ts +37 -0
  290. package/ui/embedding-space-gl.js +663 -0
  291. package/ui/embedding-space-view.d.ts +8 -0
  292. package/ui/embedding-space-view.js +8 -0
  293. package/ui/glide.d.ts +7 -0
  294. package/ui/glide.js +44 -0
  295. package/ui/icons.d.ts +4 -0
  296. package/ui/icons.js +38 -0
  297. package/ui/index.d.ts +36 -0
  298. package/ui/index.js +39 -0
  299. package/ui/labels-provider.d.ts +16 -0
  300. package/ui/labels-provider.js +64 -0
  301. package/ui/labels.d.ts +1442 -0
  302. package/ui/labels.js +1443 -0
  303. package/ui/markdown-plugins.d.ts +9 -0
  304. package/ui/markdown-plugins.js +13 -0
  305. package/ui/mcp-icon.d.ts +6 -0
  306. package/ui/mcp-icon.js +8 -0
  307. package/ui/row-keys.d.ts +19 -0
  308. package/ui/row-keys.js +33 -0
  309. package/ui/theme.d.ts +10 -0
  310. package/ui/theme.js +13 -0
  311. package/ui/theorem-theme.d.ts +10 -0
  312. package/ui/theorem-theme.js +105 -0
  313. package/ui/trace-palette.d.ts +10 -0
  314. package/ui/trace-palette.js +10 -0
  315. package/ui/trace-patterns.d.ts +40 -0
  316. package/ui/trace-patterns.js +57 -0
  317. package/ui/transcript-copy-text.d.ts +4 -0
  318. package/ui/transcript-copy-text.js +40 -0
  319. package/ui/wall-columns.d.ts +8 -0
  320. package/ui/wall-columns.js +19 -0
package/ui/glide.js ADDED
@@ -0,0 +1,44 @@
1
+ import { useLayoutEffect, useRef } from 'react';
2
+ /** Reads an Astryx duration token ("410ms" / "0.4s") as milliseconds. */
3
+ function tokenMs(value, fallback) {
4
+ const n = Number.parseFloat(value);
5
+ if (Number.isNaN(n))
6
+ return fallback;
7
+ return value.trim().endsWith('ms') ? n : n * 1_000;
8
+ }
9
+ /**
10
+ * Eases an element from where it sat while `held` to where it lands once `held`
11
+ * turns false (FLIP). Astryx has no layout-transition helper, so this uses its
12
+ * `--duration-medium` / `--ease-standard` tokens. `onLand` runs as it lands.
13
+ */
14
+ export function useGlide(held, onLand) {
15
+ const ref = useRef(null);
16
+ const heldTop = useRef(null);
17
+ useLayoutEffect(() => {
18
+ const el = ref.current;
19
+ if (!el)
20
+ return;
21
+ if (held) {
22
+ heldTop.current = el.getBoundingClientRect().top;
23
+ return;
24
+ }
25
+ const from = heldTop.current;
26
+ if (from === null)
27
+ return;
28
+ heldTop.current = null;
29
+ onLand?.();
30
+ glideFrom(el, from);
31
+ });
32
+ return ref;
33
+ }
34
+ /** Slides `el` from where it was held, `from`, to where it now sits, unless motion is reduced. */
35
+ function glideFrom(el, from) {
36
+ const delta = from - el.getBoundingClientRect().top;
37
+ if (delta === 0 || globalThis.matchMedia?.('(prefers-reduced-motion: reduce)').matches)
38
+ return;
39
+ const tokens = getComputedStyle(el);
40
+ el.animate([{ transform: `translateY(${String(delta)}px)` }, { transform: 'none' }], {
41
+ duration: tokenMs(tokens.getPropertyValue('--duration-medium'), 410),
42
+ easing: tokens.getPropertyValue('--ease-standard').trim() || 'ease-out',
43
+ });
44
+ }
package/ui/icons.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ import type { IconName } from '@astryxdesign/core/Icon';
2
+ import { type ReactNode } from 'react';
3
+ /** Astryx semantic icon registry drawn from Tabler (replaces neutral's lucide set). */
4
+ export declare const tablerIcons: Record<IconName, ReactNode>;
package/ui/icons.js ADDED
@@ -0,0 +1,38 @@
1
+ import { IconAlertTriangle, IconArrowDown, IconArrowsSort, IconArrowUp, IconCalendar, IconCheck, IconChecks, IconChevronDown, IconChevronLeft, IconChevronRight, IconChevronsLeft, IconChevronsRight, IconCircleCheck, IconCircleX, IconClock, IconColumns, IconCopy, IconDots, IconExternalLink, IconEyeOff, IconFilter, IconInfoCircle, IconMenu2, IconMicrophone, IconPlayerStopFilled, IconSearch, IconTool, IconUpload, IconX, } from '@tabler/icons-react';
2
+ import { createElement } from 'react';
3
+ const TABLER_BY_NAME = {
4
+ close: IconX,
5
+ chevronDown: IconChevronDown,
6
+ chevronLeft: IconChevronLeft,
7
+ chevronRight: IconChevronRight,
8
+ chevronsLeft: IconChevronsLeft,
9
+ chevronsRight: IconChevronsRight,
10
+ check: IconCheck,
11
+ success: IconCircleCheck,
12
+ error: IconCircleX,
13
+ warning: IconAlertTriangle,
14
+ info: IconInfoCircle,
15
+ calendar: IconCalendar,
16
+ clock: IconClock,
17
+ externalLink: IconExternalLink,
18
+ menu: IconMenu2,
19
+ moreHorizontal: IconDots,
20
+ search: IconSearch,
21
+ arrowUp: IconArrowUp,
22
+ arrowDown: IconArrowDown,
23
+ arrowsUpDown: IconArrowsSort,
24
+ funnel: IconFilter,
25
+ eyeSlash: IconEyeOff,
26
+ viewColumns: IconColumns,
27
+ copy: IconCopy,
28
+ checkDouble: IconChecks,
29
+ wrench: IconTool,
30
+ stop: IconPlayerStopFilled,
31
+ microphone: IconMicrophone,
32
+ upload: IconUpload,
33
+ };
34
+ /** Astryx semantic icon registry drawn from Tabler (replaces neutral's lucide set). */
35
+ export const tablerIcons = Object.fromEntries(Object.entries(TABLER_BY_NAME).map(([name, Glyph]) => [
36
+ name,
37
+ createElement(Glyph, { size: '1em', stroke: 1.75, 'aria-hidden': true }),
38
+ ]));
package/ui/index.d.ts ADDED
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Astryx UI for Theorem — `<TheoremChat />` plus the pieces it is built from,
3
+ * `<TheoremDecision />` for decision profiles, `<TheoremEmbedding />` for
4
+ * embedding profiles, and `<TheoremHost />` for host profiles.
5
+ *
6
+ * Styling is Astryx: pass `theme` (any `defineTheme` result, e.g. one that
7
+ * `extends: theoremTheme`) or wrap your app in your own `<Theme>`.
8
+ *
9
+ * @module
10
+ */
11
+ export type { InkWaveStatus } from '../client/ink-waveform.ts';
12
+ export type { LiveCallOptions, PageTool, PageToolAnswer, PageTools, } from '../client/live/live-page-tool.ts';
13
+ export { useLiveCaptionLog } from '../client/live/use-live-caption-log.ts';
14
+ export { InkWaveform, type InkWaveformProps, type InkWaveLevels, } from '../components/InkWaveform.tsx';
15
+ export { useLiveRunnerModel } from '../components/live/use-live-runner-model.ts';
16
+ export { theoremTheme } from './built/theorem.js';
17
+ export { ChatComposerBar, type ChatComposerBarProps, EFFORT_ICON, type LiveComposerBarProps, } from './ChatComposerBar.tsx';
18
+ export { ChatTranscript, type ChatTranscriptProps } from './ChatTranscript.tsx';
19
+ export { ConsoleFrame, type ConsoleFrameProps, type ConsolePageProps, RequestCard, ResponseColumn, RunBar, useBytes, } from './ConsoleFrame.tsx';
20
+ export { TheoremDecisionAnswers, type TheoremDecisionAnswersProps } from './DecisionAnswers.tsx';
21
+ export { useDisclosureMotion } from './disclosure-motion.ts';
22
+ export { EmbeddingSpaceView, type EmbeddingSpaceViewProps } from './EmbeddingSpace.tsx';
23
+ export { tablerIcons } from './icons.ts';
24
+ export { LiveCaptionsPanel, type LiveCaptionsPanelProps } from './LiveCaptionsPanel.tsx';
25
+ export { composerDrawerLabel, type LabelText, liveStateLabel, THEOREM_UI_CATALOG, type TheoremLabelKey, type TheoremLabelOverrides, type TheoremLabels, type TheoremLabelValues, type TheoremUiCatalog, voiceNoteName, workStatusLabel, } from './labels.ts';
26
+ export { TheoremLabelsProvider, type TheoremLabelsProviderProps, useLabels, } from './labels-provider.tsx';
27
+ export { PaneFailure, PaneLoading, PaneState } from './PaneState.tsx';
28
+ export { InPlace, PaneLayout, PanePanel, Prose, RaisedPane } from './SidePanel.tsx';
29
+ export { DEFAULT_CHAT_MAX_WIDTH, TheoremChat, type TheoremChatHandle, type TheoremChatProps, } from './TheoremChat.tsx';
30
+ export { TheoremDecision, type TheoremDecisionProps } from './TheoremDecision.tsx';
31
+ export { TheoremEmbedding, type TheoremEmbeddingProps } from './TheoremEmbedding.tsx';
32
+ export { TheoremHost, type TheoremHostProps } from './TheoremHost.tsx';
33
+ export { ApprovalCard, type ApprovalCardProps, AuthChallengeCard, type AuthChallengeCardProps, type ToolDecision, } from './ToolGateCard.tsx';
34
+ export { ToolResult } from './ToolResult.tsx';
35
+ export { TraceGuardrailsView, TracePlacement, useTraceInspector } from './TraceInspectorPanel.tsx';
36
+ export { TheoremThemeProvider, type TheoremThemeProviderProps } from './theme.tsx';
package/ui/index.js ADDED
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Astryx UI for Theorem — `<TheoremChat />` plus the pieces it is built from,
3
+ * `<TheoremDecision />` for decision profiles, `<TheoremEmbedding />` for
4
+ * embedding profiles, and `<TheoremHost />` for host profiles.
5
+ *
6
+ * Styling is Astryx: pass `theme` (any `defineTheme` result, e.g. one that
7
+ * `extends: theoremTheme`) or wrap your app in your own `<Theme>`.
8
+ *
9
+ * @module
10
+ */
11
+ // why: Astryx's documented order: reset → components → theme. The reset lives in
12
+ // `@layer reset`, so any unlayered host CSS still wins over it.
13
+ import '@astryxdesign/core/reset.css';
14
+ import '@astryxdesign/core/astryx.css';
15
+ import './built/theme.css';
16
+ export { useLiveCaptionLog } from "../client/live/use-live-caption-log.js";
17
+ export { InkWaveform, } from "../components/InkWaveform.js";
18
+ export { useLiveRunnerModel } from "../components/live/use-live-runner-model.js";
19
+ export { theoremTheme } from './built/theorem.js';
20
+ export { ChatComposerBar, EFFORT_ICON, } from "./ChatComposerBar.js";
21
+ export { ChatTranscript } from "./ChatTranscript.js";
22
+ export { ConsoleFrame, RequestCard, ResponseColumn, RunBar, useBytes, } from "./ConsoleFrame.js";
23
+ export { TheoremDecisionAnswers } from "./DecisionAnswers.js";
24
+ export { useDisclosureMotion } from "./disclosure-motion.js";
25
+ export { EmbeddingSpaceView } from "./EmbeddingSpace.js";
26
+ export { tablerIcons } from "./icons.js";
27
+ export { LiveCaptionsPanel } from "./LiveCaptionsPanel.js";
28
+ export { composerDrawerLabel, liveStateLabel, THEOREM_UI_CATALOG, voiceNoteName, workStatusLabel, } from "./labels.js";
29
+ export { TheoremLabelsProvider, useLabels, } from "./labels-provider.js";
30
+ export { PaneFailure, PaneLoading, PaneState } from "./PaneState.js";
31
+ export { InPlace, PaneLayout, PanePanel, Prose, RaisedPane } from "./SidePanel.js";
32
+ export { DEFAULT_CHAT_MAX_WIDTH, TheoremChat, } from "./TheoremChat.js";
33
+ export { TheoremDecision } from "./TheoremDecision.js";
34
+ export { TheoremEmbedding } from "./TheoremEmbedding.js";
35
+ export { TheoremHost } from "./TheoremHost.js";
36
+ export { ApprovalCard, AuthChallengeCard, } from "./ToolGateCard.js";
37
+ export { ToolResult } from "./ToolResult.js";
38
+ export { TraceGuardrailsView, TracePlacement, useTraceInspector } from "./TraceInspectorPanel.js";
39
+ export { TheoremThemeProvider } from "./theme.js";
@@ -0,0 +1,16 @@
1
+ import { type ReactNode } from 'react';
2
+ import { type LabelText, type TheoremLabels } from './labels.ts';
3
+ export type TheoremLabelsProviderProps = {
4
+ /** Replacements by locale for any `@theorem.*` or `@astryx.*` line; checked on mount. */
5
+ labels?: TheoremLabels;
6
+ children: ReactNode;
7
+ };
8
+ /**
9
+ * Makes Theorem's lines resolvable under the host's Astryx locale, messages
10
+ * and overrides (or Astryx's `en` default), adding `labels` on top. Every
11
+ * exported component renders one, so none shows a raw key; nested ones pass
12
+ * straight through.
13
+ */
14
+ export declare function TheoremLabelsProvider({ labels, children }: TheoremLabelsProviderProps): import("react").JSX.Element;
15
+ /** The default UI's words, from the nearest Theorem labels provider. */
16
+ export declare function useLabels(): LabelText;
@@ -0,0 +1,64 @@
1
+ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
2
+ import { InternationalizationContext, InternationalizationProvider, useTranslator, } from '@astryxdesign/core/i18n';
3
+ import { use, useMemo } from 'react';
4
+ import { assertLabelOverrides, THEOREM_UI_CATALOG, } from "./labels.js";
5
+ /** Message tables this module built, by the base language their catalog sits under. */
6
+ const WITH_CATALOG = new WeakMap();
7
+ /** `en-GB` → `en`: the last step of Astryx's locale fallback chain. */
8
+ function baseLanguage(locale) {
9
+ try {
10
+ return new Intl.Locale(locale).language;
11
+ }
12
+ catch {
13
+ return locale.split('-')[0] ?? locale;
14
+ }
15
+ }
16
+ /**
17
+ * The host's messages with Theorem's catalog under the locale's base language,
18
+ * beneath the host's own entries there — so a host translation wins and a
19
+ * missing one falls back to the default line, never to the raw key.
20
+ */
21
+ function withCatalog(messages, locale) {
22
+ const base = baseLanguage(locale);
23
+ if (WITH_CATALOG.get(messages) === base)
24
+ return messages;
25
+ const next = {
26
+ ...messages,
27
+ [base]: { ...THEOREM_UI_CATALOG, ...messages[base] },
28
+ };
29
+ WITH_CATALOG.set(next, base);
30
+ return next;
31
+ }
32
+ /** The host's overrides, then `labels` over them, locale by locale. */
33
+ function withLabels(host, labels) {
34
+ if (!labels)
35
+ return host;
36
+ const merged = {};
37
+ for (const [locale, table] of [...Object.entries(host ?? {}), ...Object.entries(labels)]) {
38
+ merged[locale] = { ...merged[locale], ...table };
39
+ }
40
+ return merged;
41
+ }
42
+ /**
43
+ * Makes Theorem's lines resolvable under the host's Astryx locale, messages
44
+ * and overrides (or Astryx's `en` default), adding `labels` on top. Every
45
+ * exported component renders one, so none shows a raw key; nested ones pass
46
+ * straight through.
47
+ */
48
+ export function TheoremLabelsProvider({ labels, children }) {
49
+ const host = use(InternationalizationContext);
50
+ const messages = useMemo(() => withCatalog(host.messages, host.locale), [host.messages, host.locale]);
51
+ const overrides = useMemo(() => {
52
+ assertLabelOverrides(host.overrides ?? {}, false);
53
+ if (labels)
54
+ assertLabelOverrides(labels, true);
55
+ return withLabels(host.overrides, labels);
56
+ }, [host.overrides, labels]);
57
+ if (messages === host.messages && overrides === host.overrides)
58
+ return _jsx(_Fragment, { children: children });
59
+ return (_jsx(InternationalizationProvider, { locale: host.locale, dir: host.direction, messages: messages, overrides: overrides, children: children }));
60
+ }
61
+ /** The default UI's words, from the nearest Theorem labels provider. */
62
+ export function useLabels() {
63
+ return useTranslator();
64
+ }