@tangle-network/ui 11.43.0 → 11.44.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 (300) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/_virtual/_rolldown/runtime.js +1 -2
  3. package/dist/auth/auth.d.ts +1 -3
  4. package/dist/auth/auth.js +1 -2
  5. package/dist/auth/login-layout.d.ts +1 -3
  6. package/dist/auth/login-layout.js +1 -2
  7. package/dist/chat/agent-timeline.d.ts +1 -3
  8. package/dist/chat/agent-timeline.js +1 -2
  9. package/dist/chat/chat-container.d.ts +1 -3
  10. package/dist/chat/chat-container.js +3 -4
  11. package/dist/chat/chat-message.d.ts +1 -3
  12. package/dist/chat/chat-message.js +1 -2
  13. package/dist/chat/message-author.d.ts +1 -3
  14. package/dist/chat/message-author.js +1 -2
  15. package/dist/chat/message-list.d.ts +1 -3
  16. package/dist/chat/message-list.js +1 -2
  17. package/dist/chat/synthetic-text.js +1 -2
  18. package/dist/chat/thinking-indicator.d.ts +1 -3
  19. package/dist/chat/thinking-indicator.js +1 -2
  20. package/dist/chat/transcript-text.d.ts +1 -3
  21. package/dist/chat/transcript-text.js +1 -2
  22. package/dist/chat/user-message.d.ts +1 -3
  23. package/dist/chat/user-message.js +1 -2
  24. package/dist/code-presentation.js +1 -2
  25. package/dist/editor/document-editor-pane.d.ts +1 -3
  26. package/dist/editor/document-editor-pane.js +3 -4
  27. package/dist/editor/editor-lazy.js +1 -2
  28. package/dist/editor/editor-loading.js +1 -2
  29. package/dist/editor/editor-peers.js +1 -2
  30. package/dist/editor/editor-provider.d.ts +1 -3
  31. package/dist/editor/editor-provider.js +1 -2
  32. package/dist/editor/editor-toolbar.d.ts +1 -3
  33. package/dist/editor/editor-toolbar.js +1 -2
  34. package/dist/editor/markdown-conversion.js +1 -2
  35. package/dist/editor/markdown-document-editor.js +1 -2
  36. package/dist/editor/source-markdown-editor.js +1 -2
  37. package/dist/editor/source-markdown.js +1 -2
  38. package/dist/editor/tiptap-editor.d.ts +0 -2
  39. package/dist/editor/tiptap-editor.js +1 -2
  40. package/dist/editor/use-editor.d.ts +1 -3
  41. package/dist/editor/use-editor.js +1 -2
  42. package/dist/files/file-artifact-pane.d.ts +1 -3
  43. package/dist/files/file-artifact-pane.js +4 -5
  44. package/dist/files/file-card.d.ts +1 -3
  45. package/dist/files/file-card.js +1 -2
  46. package/dist/files/file-format.d.ts +1 -3
  47. package/dist/files/file-format.js +1 -2
  48. package/dist/files/file-list.d.ts +1 -3
  49. package/dist/files/file-list.js +1 -2
  50. package/dist/files/file-preview.d.ts +1 -3
  51. package/dist/files/file-preview.js +1 -2
  52. package/dist/files/file-tabs.d.ts +1 -3
  53. package/dist/files/file-tabs.js +1 -2
  54. package/dist/files/file-tree.d.ts +1 -3
  55. package/dist/files/file-tree.js +1 -2
  56. package/dist/files/pdf-loader.d.ts +1 -3
  57. package/dist/files/pdf-loader.js +1 -2
  58. package/dist/files/pdf-viewer.d.ts +1 -3
  59. package/dist/files/pdf-viewer.js +1 -2
  60. package/dist/files/rich-file-tree.d.ts +1 -3
  61. package/dist/files/rich-file-tree.js +1 -2
  62. package/dist/hooks/use-auth.d.ts +1 -3
  63. package/dist/hooks/use-auth.js +1 -2
  64. package/dist/hooks/use-auto-scroll.d.ts +1 -3
  65. package/dist/hooks/use-auto-scroll.js +1 -2
  66. package/dist/hooks/use-dropdown-menu.d.ts +1 -2
  67. package/dist/hooks/use-dropdown-menu.js +1 -2
  68. package/dist/hooks/use-live-time.d.ts +1 -3
  69. package/dist/hooks/use-live-time.js +1 -2
  70. package/dist/hooks/use-realtime-session.d.ts +1 -3
  71. package/dist/hooks/use-realtime-session.js +1 -2
  72. package/dist/hooks/use-run-collapse-state.d.ts +1 -3
  73. package/dist/hooks/use-run-collapse-state.js +1 -2
  74. package/dist/hooks/use-run-groups.d.ts +1 -3
  75. package/dist/hooks/use-run-groups.js +1 -2
  76. package/dist/hooks/use-sdk-session.d.ts +1 -3
  77. package/dist/hooks/use-sdk-session.js +1 -2
  78. package/dist/hooks/use-sse-stream.d.ts +1 -3
  79. package/dist/hooks/use-sse-stream.js +1 -2
  80. package/dist/hooks/use-tool-call-stream.d.ts +1 -3
  81. package/dist/hooks/use-tool-call-stream.js +1 -2
  82. package/dist/lib/code-presentation.d.ts +1 -3
  83. package/dist/lib/code-presentation.js +1 -2
  84. package/dist/lib/control-presentation.d.ts +0 -2
  85. package/dist/lib/control-presentation.js +1 -2
  86. package/dist/lib/focus.d.ts +1 -3
  87. package/dist/lib/focus.js +1 -2
  88. package/dist/lib/interaction.d.ts +1 -3
  89. package/dist/lib/interaction.js +1 -2
  90. package/dist/lib/motion.d.ts +1 -3
  91. package/dist/lib/motion.js +1 -2
  92. package/dist/lib/optional-peer.js +1 -2
  93. package/dist/lib/series.d.ts +1 -3
  94. package/dist/lib/series.js +1 -2
  95. package/dist/lib/surface-motion.js +1 -2
  96. package/dist/lib/utils.d.ts +1 -3
  97. package/dist/lib/utils.js +1 -2
  98. package/dist/markdown/api-schema.d.ts +1 -3
  99. package/dist/markdown/api-schema.js +1 -2
  100. package/dist/markdown/code-block.d.ts +0 -2
  101. package/dist/markdown/code-block.js +1 -2
  102. package/dist/markdown/code-meta.d.ts +1 -3
  103. package/dist/markdown/code-meta.js +1 -2
  104. package/dist/markdown/markdown-table.d.ts +1 -3
  105. package/dist/markdown/markdown-table.js +1 -2
  106. package/dist/markdown/markdown.d.ts +1 -3
  107. package/dist/markdown/markdown.js +1 -2
  108. package/dist/nav.d.ts +0 -2
  109. package/dist/nav.js +1 -2
  110. package/dist/openui/openui-artifact-renderer.d.ts +1 -2
  111. package/dist/openui/openui-artifact-renderer.js +1 -2
  112. package/dist/openui/schema-compiled.js +1 -2
  113. package/dist/openui/schema-data.d.ts +1 -3
  114. package/dist/openui/schema-data.js +1 -2
  115. package/dist/openui-schema.d.ts +0 -2
  116. package/dist/openui-schema.js +1 -2
  117. package/dist/presentation.d.ts +0 -2
  118. package/dist/presentation.js +1 -2
  119. package/dist/primitives/alert-dialog.d.ts +0 -2
  120. package/dist/primitives/alert-dialog.js +1 -2
  121. package/dist/primitives/alert.d.ts +1 -3
  122. package/dist/primitives/alert.js +1 -2
  123. package/dist/primitives/artifact-pane.d.ts +1 -3
  124. package/dist/primitives/artifact-pane.js +1 -2
  125. package/dist/primitives/avatar.d.ts +0 -2
  126. package/dist/primitives/avatar.js +1 -2
  127. package/dist/primitives/badge.d.ts +0 -2
  128. package/dist/primitives/badge.js +1 -2
  129. package/dist/primitives/breadcrumb.d.ts +0 -2
  130. package/dist/primitives/breadcrumb.js +1 -2
  131. package/dist/primitives/button.d.ts +0 -2
  132. package/dist/primitives/button.js +1 -2
  133. package/dist/primitives/calendar.d.ts +0 -2
  134. package/dist/primitives/calendar.js +1 -2
  135. package/dist/primitives/card.d.ts +0 -2
  136. package/dist/primitives/card.js +1 -2
  137. package/dist/primitives/checkbox.d.ts +0 -2
  138. package/dist/primitives/checkbox.js +1 -2
  139. package/dist/primitives/chip.d.ts +0 -2
  140. package/dist/primitives/chip.js +1 -2
  141. package/dist/primitives/code-block.d.ts +0 -2
  142. package/dist/primitives/code-block.js +1 -2
  143. package/dist/primitives/collapsible.d.ts +0 -2
  144. package/dist/primitives/collapsible.js +1 -2
  145. package/dist/primitives/compliance-badge.d.ts +0 -2
  146. package/dist/primitives/compliance-badge.js +3 -4
  147. package/dist/primitives/context-menu.d.ts +0 -2
  148. package/dist/primitives/context-menu.js +1 -2
  149. package/dist/primitives/date-picker.d.ts +0 -2
  150. package/dist/primitives/date-picker.js +1 -2
  151. package/dist/primitives/dialog.d.ts +0 -2
  152. package/dist/primitives/dialog.js +3 -4
  153. package/dist/primitives/drop-zone.d.ts +1 -3
  154. package/dist/primitives/drop-zone.js +1 -2
  155. package/dist/primitives/dropdown-menu.d.ts +0 -2
  156. package/dist/primitives/dropdown-menu.js +1 -2
  157. package/dist/primitives/empty-state.d.ts +0 -2
  158. package/dist/primitives/empty-state.js +1 -2
  159. package/dist/primitives/field.d.ts +1 -3
  160. package/dist/primitives/field.js +1 -2
  161. package/dist/primitives/heading.d.ts +0 -2
  162. package/dist/primitives/heading.js +1 -2
  163. package/dist/primitives/help-text.d.ts +0 -2
  164. package/dist/primitives/help-text.js +1 -2
  165. package/dist/primitives/hover-card.d.ts +0 -2
  166. package/dist/primitives/hover-card.js +1 -2
  167. package/dist/primitives/icon-tile.d.ts +0 -2
  168. package/dist/primitives/icon-tile.js +1 -2
  169. package/dist/primitives/info-tip.js +1 -2
  170. package/dist/primitives/input.d.ts +0 -2
  171. package/dist/primitives/input.js +1 -2
  172. package/dist/primitives/label.d.ts +0 -2
  173. package/dist/primitives/label.js +1 -2
  174. package/dist/primitives/metric-chart.d.ts +0 -2
  175. package/dist/primitives/metric-chart.js +1 -2
  176. package/dist/primitives/metric-strip.d.ts +0 -2
  177. package/dist/primitives/metric-strip.js +1 -2
  178. package/dist/primitives/page-header.d.ts +0 -2
  179. package/dist/primitives/page-header.js +1 -2
  180. package/dist/primitives/page-shell.d.ts +1 -3
  181. package/dist/primitives/page-shell.js +1 -2
  182. package/dist/primitives/pagination.d.ts +1 -2
  183. package/dist/primitives/pagination.js +1 -2
  184. package/dist/primitives/popover.d.ts +0 -2
  185. package/dist/primitives/popover.js +1 -2
  186. package/dist/primitives/progress.d.ts +0 -2
  187. package/dist/primitives/progress.js +1 -2
  188. package/dist/primitives/radio-group.d.ts +0 -2
  189. package/dist/primitives/radio-group.js +1 -2
  190. package/dist/primitives/segmented-control.d.ts +1 -3
  191. package/dist/primitives/segmented-control.js +4 -5
  192. package/dist/primitives/select.d.ts +0 -2
  193. package/dist/primitives/select.js +1 -2
  194. package/dist/primitives/separator.d.ts +0 -2
  195. package/dist/primitives/separator.js +1 -2
  196. package/dist/primitives/series-sparkline.d.ts +0 -2
  197. package/dist/primitives/series-sparkline.js +1 -2
  198. package/dist/primitives/settings.d.ts +8 -6
  199. package/dist/primitives/settings.js +13 -8
  200. package/dist/primitives/sheet.d.ts +0 -2
  201. package/dist/primitives/sheet.js +3 -4
  202. package/dist/primitives/sidebar-drop-zone.d.ts +1 -3
  203. package/dist/primitives/sidebar-drop-zone.js +1 -2
  204. package/dist/primitives/skeleton.d.ts +0 -2
  205. package/dist/primitives/skeleton.js +1 -2
  206. package/dist/primitives/slider.d.ts +0 -2
  207. package/dist/primitives/slider.js +1 -2
  208. package/dist/primitives/stat-card.d.ts +0 -2
  209. package/dist/primitives/stat-card.js +1 -2
  210. package/dist/primitives/status-pill.d.ts +0 -2
  211. package/dist/primitives/status-pill.js +1 -2
  212. package/dist/primitives/switch.d.ts +0 -2
  213. package/dist/primitives/switch.js +1 -2
  214. package/dist/primitives/table.d.ts +0 -2
  215. package/dist/primitives/table.js +1 -2
  216. package/dist/primitives/tabs.d.ts +0 -2
  217. package/dist/primitives/tabs.js +1 -2
  218. package/dist/primitives/tag.d.ts +0 -2
  219. package/dist/primitives/tag.js +1 -2
  220. package/dist/primitives/terminal-display.d.ts +0 -2
  221. package/dist/primitives/terminal-display.js +1 -2
  222. package/dist/primitives/text-shimmer.d.ts +1 -3
  223. package/dist/primitives/text-shimmer.js +1 -2
  224. package/dist/primitives/theme-toggle.d.ts +1 -2
  225. package/dist/primitives/theme-toggle.js +1 -2
  226. package/dist/primitives/time-select.d.ts +0 -2
  227. package/dist/primitives/time-select.js +1 -2
  228. package/dist/primitives/toast.d.ts +1 -2
  229. package/dist/primitives/toast.js +1 -2
  230. package/dist/primitives/tone.d.ts +1 -3
  231. package/dist/primitives/tone.js +1 -2
  232. package/dist/primitives/toolbar.d.ts +0 -2
  233. package/dist/primitives/toolbar.js +1 -2
  234. package/dist/primitives/tooltip.d.ts +0 -2
  235. package/dist/primitives/tooltip.js +1 -2
  236. package/dist/primitives/upload-progress.d.ts +1 -3
  237. package/dist/primitives/upload-progress.js +1 -2
  238. package/dist/primitives/wizard.d.ts +1 -3
  239. package/dist/primitives/wizard.js +1 -2
  240. package/dist/redaction/redacted-document.d.ts +1 -3
  241. package/dist/redaction/redacted-document.js +1 -2
  242. package/dist/redaction.js +1 -2
  243. package/dist/run/approval-card.d.ts +1 -3
  244. package/dist/run/approval-card.js +1 -2
  245. package/dist/run/expandable-content.js +1 -2
  246. package/dist/run/expanded-tool-detail.d.ts +1 -3
  247. package/dist/run/expanded-tool-detail.js +1 -2
  248. package/dist/run/inline-thinking-item.d.ts +1 -3
  249. package/dist/run/inline-thinking-item.js +1 -2
  250. package/dist/run/inline-tool-item.d.ts +1 -3
  251. package/dist/run/inline-tool-item.js +1 -2
  252. package/dist/run/run-group.d.ts +1 -3
  253. package/dist/run/run-group.js +1 -2
  254. package/dist/run/run-item-primitives.d.ts +1 -3
  255. package/dist/run/run-item-primitives.js +1 -2
  256. package/dist/run/run-phase-list.d.ts +1 -3
  257. package/dist/run/run-phase-list.js +1 -2
  258. package/dist/run/run-row-shell.d.ts +1 -3
  259. package/dist/run/run-row-shell.js +1 -2
  260. package/dist/run/task-list.d.ts +1 -3
  261. package/dist/run/task-list.js +1 -2
  262. package/dist/run/tool-call-feed.d.ts +1 -3
  263. package/dist/run/tool-call-feed.js +1 -2
  264. package/dist/run/tool-call-step.d.ts +1 -3
  265. package/dist/run/tool-call-step.js +1 -2
  266. package/dist/stores/active-sessions-store.d.ts +1 -3
  267. package/dist/stores/active-sessions-store.js +1 -2
  268. package/dist/stores/chat-store.d.ts +1 -3
  269. package/dist/stores/chat-store.js +1 -2
  270. package/dist/tool-previews/command-preview.d.ts +1 -3
  271. package/dist/tool-previews/command-preview.js +1 -2
  272. package/dist/tool-previews/diff-preview.d.ts +1 -3
  273. package/dist/tool-previews/diff-preview.js +1 -2
  274. package/dist/tool-previews/glob-results-preview.d.ts +1 -3
  275. package/dist/tool-previews/glob-results-preview.js +1 -2
  276. package/dist/tool-previews/grep-results-preview.d.ts +1 -3
  277. package/dist/tool-previews/grep-results-preview.js +1 -2
  278. package/dist/tool-previews/preview-primitives.js +1 -2
  279. package/dist/tool-previews/question-preview.d.ts +1 -3
  280. package/dist/tool-previews/question-preview.js +1 -2
  281. package/dist/tool-previews/web-search-preview.d.ts +1 -3
  282. package/dist/tool-previews/web-search-preview.js +1 -2
  283. package/dist/tool-previews/write-file-preview.d.ts +1 -3
  284. package/dist/tool-previews/write-file-preview.js +1 -2
  285. package/dist/types/branding.d.ts +1 -3
  286. package/dist/types/message.d.ts +1 -3
  287. package/dist/types/parts.d.ts +1 -3
  288. package/dist/types/run.d.ts +1 -3
  289. package/dist/types/tool-display.d.ts +1 -3
  290. package/dist/utils/copy-text.d.ts +1 -3
  291. package/dist/utils/copy-text.js +1 -2
  292. package/dist/utils/format.d.ts +1 -3
  293. package/dist/utils/format.js +1 -2
  294. package/dist/utils/time-ago.d.ts +1 -3
  295. package/dist/utils/time-ago.js +1 -2
  296. package/dist/utils/tool-display.d.ts +1 -3
  297. package/dist/utils/tool-display.js +1 -2
  298. package/package.json +38 -38
  299. package/src/primitives/settings.stories.tsx +37 -0
  300. package/src/primitives/settings.tsx +17 -8
@@ -1,4 +1,4 @@
1
- //#region src/utils/tool-display.ts
1
+ // src/utils/tool-display.ts
2
2
  const TOOL_NAME_PREFIX = "tool:";
3
3
  function normalizeToolName(tool) {
4
4
  const n = tool?.toLowerCase() ?? "";
@@ -154,5 +154,4 @@ function getToolErrorText(part, fallback) {
154
154
  if (part.state.status !== "error") return void 0;
155
155
  return part.state.error || fallback;
156
156
  }
157
- //#endregion
158
157
  export { TOOL_CATEGORY_ICONS, getToolCategory, getToolDisplayMetadata, getToolErrorText };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tangle-network/ui",
3
- "version": "11.43.0",
3
+ "version": "11.44.1",
4
4
  "description": "Generic React UI components for Tangle products — primitives, chat, run, files, editor, markdown.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -130,43 +130,43 @@
130
130
  "dependencies": {
131
131
  "@pierre/theme": "1.1.0",
132
132
  "@pierre/trees": "1.0.0-beta.6",
133
- "@radix-ui/react-alert-dialog": "^1.1.23",
134
- "@radix-ui/react-avatar": "^1.2.6",
135
- "@radix-ui/react-checkbox": "^1.3.11",
136
- "@radix-ui/react-collapsible": "^1.1.20",
137
- "@radix-ui/react-context-menu": "^2.3.7",
138
- "@radix-ui/react-dialog": "^1.1.23",
139
- "@radix-ui/react-dropdown-menu": "^2.1.24",
133
+ "@radix-ui/react-alert-dialog": "^1.2.1",
134
+ "@radix-ui/react-avatar": "^1.3.1",
135
+ "@radix-ui/react-checkbox": "^1.4.1",
136
+ "@radix-ui/react-collapsible": "^1.2.1",
137
+ "@radix-ui/react-context-menu": "^2.4.1",
138
+ "@radix-ui/react-dialog": "^1.3.1",
139
+ "@radix-ui/react-dropdown-menu": "^2.2.1",
140
140
  "@radix-ui/react-hover-card": "^1.2.1",
141
- "@radix-ui/react-label": "^2.1.15",
142
- "@radix-ui/react-popover": "^1.1.23",
143
- "@radix-ui/react-progress": "^1.1.16",
144
- "@radix-ui/react-radio-group": "^1.4.8",
145
- "@radix-ui/react-select": "^2.3.7",
146
- "@radix-ui/react-separator": "^1.1.15",
147
- "@radix-ui/react-slider": "^1.4.7",
148
- "@radix-ui/react-slot": "^1.3.3",
149
- "@radix-ui/react-switch": "^1.3.7",
150
- "@radix-ui/react-tabs": "^1.1.21",
151
- "@radix-ui/react-tooltip": "^1.2.16",
141
+ "@radix-ui/react-label": "^2.1.17",
142
+ "@radix-ui/react-popover": "^1.3.1",
143
+ "@radix-ui/react-progress": "^1.2.1",
144
+ "@radix-ui/react-radio-group": "^1.5.1",
145
+ "@radix-ui/react-select": "^2.4.1",
146
+ "@radix-ui/react-separator": "^1.2.0",
147
+ "@radix-ui/react-slider": "^1.6.1",
148
+ "@radix-ui/react-slot": "^1.5.0",
149
+ "@radix-ui/react-switch": "^1.4.1",
150
+ "@radix-ui/react-tabs": "^1.2.1",
151
+ "@radix-ui/react-tooltip": "^1.4.1",
152
152
  "class-variance-authority": "^0.7.1",
153
153
  "clsx": "^2.1.1",
154
154
  "github-slugger": "^2.0.0",
155
- "lucide-react": "^1.48.0",
156
- "marked": "^18.0.14",
157
- "motion": "14.1.0",
155
+ "lucide-react": "^1.61.0",
156
+ "marked": "^18.1.1",
157
+ "motion": "14.6.0",
158
158
  "react-markdown": "^10.1.0",
159
159
  "rehype-sanitize": "^6.0.0",
160
160
  "rehype-slug": "^6.0.0",
161
161
  "remark-gfm": "^4.0.1",
162
- "shiki": "^4.4.3",
162
+ "shiki": "^4.5.0",
163
163
  "tailwind-merge": "^3.7.0",
164
164
  "turndown": "^7.2.4"
165
165
  },
166
166
  "peerDependencies": {
167
167
  "@hocuspocus/provider": ">=2.15.0 <5.0.0",
168
168
  "@nanostores/react": ">=0.8.4 <3.0.0",
169
- "@tangle-network/brand": "^1.27.0",
169
+ "@tangle-network/brand": "^1.27.1",
170
170
  "@tiptap/core": ">=3.20.4 <4.0.0",
171
171
  "@tiptap/extension-collaboration": ">=3.20.4 <4.0.0",
172
172
  "@tiptap/extension-collaboration-caret": ">=3.7.0 <4.0.0",
@@ -215,24 +215,24 @@
215
215
  }
216
216
  },
217
217
  "devDependencies": {
218
- "@hocuspocus/provider": "^4.7.0",
218
+ "@hocuspocus/provider": "^4.7.1",
219
219
  "@nanostores/react": "^2.0.1",
220
- "@storybook/react": "^10.6.0",
221
- "@tiptap/core": "^3.31.3",
222
- "@tiptap/extension-collaboration": "^3.31.3",
223
- "@tiptap/extension-collaboration-caret": "^3.31.3",
224
- "@tiptap/react": "^3.31.3",
225
- "@tiptap/starter-kit": "^3.31.3",
226
- "@tiptap/y-tiptap": "^3.0.9",
220
+ "@storybook/react": "^10.6.3",
221
+ "@tiptap/core": "^3.32.0",
222
+ "@tiptap/extension-collaboration": "^3.32.0",
223
+ "@tiptap/extension-collaboration-caret": "^3.32.0",
224
+ "@tiptap/react": "^3.32.0",
225
+ "@tiptap/starter-kit": "^3.32.0",
226
+ "@tiptap/y-tiptap": "^3.0.10",
227
227
  "@types/react": "^19.3.0",
228
228
  "@types/turndown": "^5.0.6",
229
- "ajv": "8.17.1",
230
- "nanostores": "^1.5.4",
229
+ "ajv": "8.20.0",
230
+ "nanostores": "^1.5.5",
231
231
  "pdfjs-dist": "^6.4.299",
232
- "react": "^19.3.0",
233
- "react-dom": "^19.3.0",
234
- "react-router": "^8.4.0",
235
- "tsdown": "^0.23.0",
232
+ "react": "^19.3.1",
233
+ "react-dom": "^19.3.1",
234
+ "react-router": "^8.5.0",
235
+ "tsdown": "0.23.1",
236
236
  "typescript": "^7.0.2",
237
237
  "yjs": "^13.6.33"
238
238
  },
@@ -243,6 +243,40 @@ function FieldsExample() {
243
243
  );
244
244
  }
245
245
 
246
+ /** Read-only product data beside existing controls; all values here are sample data. */
247
+ function SettingsValuesExample() {
248
+ const [details, setDetails] = useState(false);
249
+ return (
250
+ <div className="mx-auto max-w-4xl space-y-6 p-6">
251
+ <SettingsSection id="read-only-values" title="Account values">
252
+ <SettingsRow id="value-zero" label="Active sessions" value={0} layout="compact" />
253
+ <SettingsRow id="value-empty" label="Empty value" value="" layout="compact" />
254
+ <SettingsRow id="value-false" label="False value" value={false} layout="compact" />
255
+ <SettingsRow id="value-null" label="Null value" value={null} layout="compact" />
256
+ <SettingsRow id="value-undefined" label="Undefined value" value={undefined} layout="compact" />
257
+ <SettingsRow id="value-mixed" label="Projected monthly cost" value={<>$0.00 <span className="text-muted-foreground">/month</span></>} layout="compact" />
258
+ <SettingsRow id="value-long" label="Session identifier" value="session_with_a_long_unbroken_identifier_that_must_wrap_inside_its_settings_card_without_hiding_the_label_or_overflowing" mono layout="compact" />
259
+ <SettingsRow id="value-agent" label="Agent identifier" value="research-agent" mono layout="compact" />
260
+ <SettingsRow id="value-model" label="Model identifier" value="workspace-model" mono layout="compact" />
261
+ <SettingsRow id="value-provider" label="Provider identifier" value="workspace-provider" mono layout="compact" />
262
+ <SettingsRow id="value-stacked" label="Stacked summary" value="Workspace summary" layout="stacked" />
263
+ <SettingsRow id="value-action" label="Value with action" value="workspace-provider" status={details ? "Details shown" : undefined} layout="compact">
264
+ <Button type="button" variant="outline" onClick={() => setDetails((shown) => !shown)}>{details ? "Hide details" : "Show details"}</Button>
265
+ </SettingsRow>
266
+ <SettingsRow id="value-control" label="Value with input" value="UTC" htmlFor="value-timezone" description="The original input keeps its message wiring.">
267
+ <Input id="value-timezone" defaultValue="UTC" />
268
+ </SettingsRow>
269
+ </SettingsSection>
270
+ <div className="max-w-sm">
271
+ <SettingsSection id="narrow-values" title="Narrow card in any window">
272
+ <SettingsRow id="narrow-value" label="Account email" value="reader@workspace.example" layout="compact" />
273
+ <SettingsRow id="legacy-compact" label="Daily digest" htmlFor="value-digest" layout="compact"><Switch id="value-digest" defaultChecked /></SettingsRow>
274
+ </SettingsSection>
275
+ </div>
276
+ </div>
277
+ );
278
+ }
279
+
246
280
  const meta = {
247
281
  title: "Primitives/Settings",
248
282
  component: SettingsSection,
@@ -265,3 +299,6 @@ export const Bounded: Story = { render: () => <SettingsPage className="mx-auto m
265
299
 
266
300
  /** The promoted Field: hint, info tip with an aside action, a live error, and a status. */
267
301
  export const Fields: Story = { render: () => <FieldsExample /> };
302
+
303
+ /** Values preserve ReactNode content and coexist with controls; only value rows stack in a narrow compact layout. */
304
+ export const Values: Story = { render: () => <SettingsValuesExample /> };
@@ -67,12 +67,16 @@ export interface SettingsRowProps {
67
67
  onRetry?: () => void;
68
68
  /**
69
69
  * `inline` (default): text left, control right, stacked below 34rem.
70
- * `compact`: the control keeps its own width and stays on the line (switches, single buttons).
70
+ * `compact`: the control keeps its own width and stays on the line (switches, single buttons); a row with a value uses `inline`.
71
71
  * `stacked`: the control spans the row under the text (textareas, lists).
72
72
  */
73
73
  layout?: SettingsRowLayout;
74
74
  /** Why the control is unavailable, naming who can change it. Replaces the description after a lock glyph. */
75
75
  disabledReason?: React.ReactNode;
76
+ /** A read-only value before any children; supplying even an empty value keeps its span. */
77
+ value?: React.ReactNode;
78
+ /** Use mono for the value, such as an identifier; children keep their own font. */
79
+ mono?: boolean;
76
80
  children?: React.ReactNode;
77
81
  }
78
82
 
@@ -101,14 +105,16 @@ function describeControl(children: React.ReactNode, htmlFor: string | undefined,
101
105
  }
102
106
 
103
107
  /**
104
- * One setting: its label, an optional consequence line and its control. The
108
+ * One setting: its label, an optional consequence line, read-only value and control. The
105
109
  * label carries the save status after it; an error or a lock reason replaces
106
110
  * the description. Rows inside a {@link SettingsSection} are divided by a
107
111
  * hairline and stack when the card is narrower than 34rem.
108
112
  */
109
- export function SettingsRow({
110
- id, label, description, info, htmlFor, status, error, onRetry, layout = "inline", disabledReason, children,
111
- }: SettingsRowProps) {
113
+ export function SettingsRow(props: SettingsRowProps) {
114
+ const {
115
+ id, label, description, info, htmlFor, status, error, onRetry, layout = "inline", disabledReason, value, mono, children,
116
+ } = props;
117
+ const hasValue = Object.hasOwn(props, "value");
112
118
  const messageId = htmlFor ? fieldMessageId(htmlFor) : undefined;
113
119
  const hasMessage = error != null || disabledReason != null || description != null;
114
120
  const control = describeControl(children, htmlFor, hasMessage ? messageId : undefined, error != null);
@@ -120,7 +126,7 @@ export function SettingsRow({
120
126
  "grid min-w-0 items-center gap-x-8 gap-y-3 px-5 py-4 @max-[34rem]/settings-section:px-4",
121
127
  SCROLL_OFFSET,
122
128
  DIVIDED,
123
- ROW_COLUMNS[layout],
129
+ ROW_COLUMNS[hasValue && layout === "compact" ? "inline" : layout],
124
130
  )}
125
131
  >
126
132
  <div className="min-w-0">
@@ -142,8 +148,11 @@ export function SettingsRow({
142
148
  <div id={messageId} className="mt-0.5 text-sm leading-5 text-muted-foreground [overflow-wrap:anywhere]">{description}</div>
143
149
  )}
144
150
  </div>
145
- {control != null && control !== false && (
146
- <div className={cn("flex min-w-0 items-center gap-2", ROW_CONTROL[layout])}>{control}</div>
151
+ {(hasValue || (control != null && control !== false)) && (
152
+ <div className={cn("flex min-w-0 items-center gap-2", ROW_CONTROL[hasValue && layout === "compact" ? "inline" : layout])}>
153
+ {hasValue && <span data-slot="settings-value" className={cn("min-w-0 text-foreground text-sm [overflow-wrap:anywhere] @min-[34rem]/settings-section:text-right", mono && "font-mono")}>{value}</span>}
154
+ {control}
155
+ </div>
147
156
  )}
148
157
  </div>
149
158
  );