@50arms/ui 0.0.0-stage → 35.1.0

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 (1256) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +193 -2
  3. package/dist/components/Accordion.js +68 -0
  4. package/dist/components/Accordion.js.map +1 -0
  5. package/dist/components/AgentWorkingSpinner.js +46 -0
  6. package/dist/components/AgentWorkingSpinner.js.map +1 -0
  7. package/dist/components/AppShell.js +228 -0
  8. package/dist/components/AppShell.js.map +1 -0
  9. package/dist/components/Attention.js +130 -0
  10. package/dist/components/Attention.js.map +1 -0
  11. package/dist/components/Avatar.js +99 -0
  12. package/dist/components/Avatar.js.map +1 -0
  13. package/dist/components/Badge.js +143 -0
  14. package/dist/components/Badge.js.map +1 -0
  15. package/dist/components/Board.js +292 -0
  16. package/dist/components/Board.js.map +1 -0
  17. package/dist/components/Button.js +327 -0
  18. package/dist/components/Button.js.map +1 -0
  19. package/dist/components/Callout.js +106 -0
  20. package/dist/components/Callout.js.map +1 -0
  21. package/dist/components/Card.js +140 -0
  22. package/dist/components/Card.js.map +1 -0
  23. package/dist/components/Choice.js +361 -0
  24. package/dist/components/Choice.js.map +1 -0
  25. package/dist/components/CodeEditor.js +384 -0
  26. package/dist/components/CodeEditor.js.map +1 -0
  27. package/dist/components/ColorPicker.js +174 -0
  28. package/dist/components/ColorPicker.js.map +1 -0
  29. package/dist/components/Combobox.js +212 -0
  30. package/dist/components/Combobox.js.map +1 -0
  31. package/dist/components/CommandPalette.js +163 -0
  32. package/dist/components/CommandPalette.js.map +1 -0
  33. package/dist/components/ConcentricRing.js +60 -0
  34. package/dist/components/ConcentricRing.js.map +1 -0
  35. package/dist/components/ConnectionCard.js +98 -0
  36. package/dist/components/ConnectionCard.js.map +1 -0
  37. package/dist/components/ContextItemRow.js +49 -0
  38. package/dist/components/ContextItemRow.js.map +1 -0
  39. package/dist/components/CopyValue.js +57 -0
  40. package/dist/components/CopyValue.js.map +1 -0
  41. package/dist/components/CountBadge.js +26 -0
  42. package/dist/components/CountBadge.js.map +1 -0
  43. package/dist/components/DateCalendar.js +156 -0
  44. package/dist/components/DateCalendar.js.map +1 -0
  45. package/dist/components/DateField.js +166 -0
  46. package/dist/components/DateField.js.map +1 -0
  47. package/dist/components/DatePicker.js +56 -0
  48. package/dist/components/DatePicker.js.map +1 -0
  49. package/dist/components/DateTimeText.js +19 -0
  50. package/dist/components/DateTimeText.js.map +1 -0
  51. package/dist/components/DescriptionList.js +25 -0
  52. package/dist/components/DescriptionList.js.map +1 -0
  53. package/dist/components/Dialog.js +332 -0
  54. package/dist/components/Dialog.js.map +1 -0
  55. package/dist/components/DragDrop.js +395 -0
  56. package/dist/components/DragDrop.js.map +1 -0
  57. package/dist/components/Drawer.js +100 -0
  58. package/dist/components/Drawer.js.map +1 -0
  59. package/dist/components/EditGutter.js +110 -0
  60. package/dist/components/EditGutter.js.map +1 -0
  61. package/dist/components/EmojiPicker.js +174 -0
  62. package/dist/components/EmojiPicker.js.map +1 -0
  63. package/dist/components/ErrorBoundary.js +47 -0
  64. package/dist/components/ErrorBoundary.js.map +1 -0
  65. package/dist/components/Field.js +115 -0
  66. package/dist/components/Field.js.map +1 -0
  67. package/dist/components/FileUpload.js +128 -0
  68. package/dist/components/FileUpload.js.map +1 -0
  69. package/dist/components/FilterMenu.js +256 -0
  70. package/dist/components/FilterMenu.js.map +1 -0
  71. package/dist/components/GatesSection.js +79 -0
  72. package/dist/components/GatesSection.js.map +1 -0
  73. package/dist/components/Icon.js +50 -0
  74. package/dist/components/Icon.js.map +1 -0
  75. package/dist/components/IconButton.js +59 -0
  76. package/dist/components/IconButton.js.map +1 -0
  77. package/dist/components/IconStack.js +69 -0
  78. package/dist/components/IconStack.js.map +1 -0
  79. package/dist/components/ImageUploadField.js +146 -0
  80. package/dist/components/ImageUploadField.js.map +1 -0
  81. package/dist/components/InlineEdit.js +432 -0
  82. package/dist/components/InlineEdit.js.map +1 -0
  83. package/dist/components/InlineMarkdownEdit.js +184 -0
  84. package/dist/components/InlineMarkdownEdit.js.map +1 -0
  85. package/dist/components/Input.js +156 -0
  86. package/dist/components/Input.js.map +1 -0
  87. package/dist/components/LegalDocument.js +155 -0
  88. package/dist/components/LegalDocument.js.map +1 -0
  89. package/dist/components/LineDiff.js +95 -0
  90. package/dist/components/LineDiff.js.map +1 -0
  91. package/dist/components/ListHeader.js +72 -0
  92. package/dist/components/ListHeader.js.map +1 -0
  93. package/dist/components/Loading.js +111 -0
  94. package/dist/components/Loading.js.map +1 -0
  95. package/dist/components/Markdown.js +28 -0
  96. package/dist/components/Markdown.js.map +1 -0
  97. package/dist/components/MarkdownEditor.js +467 -0
  98. package/dist/components/MarkdownEditor.js.map +1 -0
  99. package/dist/components/Menu.js +185 -0
  100. package/dist/components/Menu.js.map +1 -0
  101. package/dist/components/Navigation.js +87 -0
  102. package/dist/components/Navigation.js.map +1 -0
  103. package/dist/components/NumberInput.js +119 -0
  104. package/dist/components/NumberInput.js.map +1 -0
  105. package/dist/components/OTPInput.js +71 -0
  106. package/dist/components/OTPInput.js.map +1 -0
  107. package/dist/components/OrderedEntityManager.js +170 -0
  108. package/dist/components/OrderedEntityManager.js.map +1 -0
  109. package/dist/components/PagedWindowList.js +74 -0
  110. package/dist/components/PagedWindowList.js.map +1 -0
  111. package/dist/components/PaginationBar.js +95 -0
  112. package/dist/components/PaginationBar.js.map +1 -0
  113. package/dist/components/Panel.js +396 -0
  114. package/dist/components/Panel.js.map +1 -0
  115. package/dist/components/PasswordInput.js +32 -0
  116. package/dist/components/PasswordInput.js.map +1 -0
  117. package/dist/components/PasswordRequirements.js +25 -0
  118. package/dist/components/PasswordRequirements.js.map +1 -0
  119. package/dist/components/PatchDiff.js +96 -0
  120. package/dist/components/PatchDiff.js.map +1 -0
  121. package/dist/components/PendingVeil.js +18 -0
  122. package/dist/components/PendingVeil.js.map +1 -0
  123. package/dist/components/Popover.js +214 -0
  124. package/dist/components/Popover.js.map +1 -0
  125. package/dist/components/Progress.js +419 -0
  126. package/dist/components/Progress.js.map +1 -0
  127. package/dist/components/RatingScale.js +89 -0
  128. package/dist/components/RatingScale.js.map +1 -0
  129. package/dist/components/ReadMore.js +232 -0
  130. package/dist/components/ReadMore.js.map +1 -0
  131. package/dist/components/RecordCard.js +202 -0
  132. package/dist/components/RecordCard.js.map +1 -0
  133. package/dist/components/RelativeTime.js +29 -0
  134. package/dist/components/RelativeTime.js.map +1 -0
  135. package/dist/components/SandboxedFrame.js +135 -0
  136. package/dist/components/SandboxedFrame.js.map +1 -0
  137. package/dist/components/SearchInput.js +38 -0
  138. package/dist/components/SearchInput.js.map +1 -0
  139. package/dist/components/SecretField.js +228 -0
  140. package/dist/components/SecretField.js.map +1 -0
  141. package/dist/components/SectionNav.js +42 -0
  142. package/dist/components/SectionNav.js.map +1 -0
  143. package/dist/components/Select.js +172 -0
  144. package/dist/components/Select.js.map +1 -0
  145. package/dist/components/SequenceDiagram.js +109 -0
  146. package/dist/components/SequenceDiagram.js.map +1 -0
  147. package/dist/components/SettingRow.js +124 -0
  148. package/dist/components/SettingRow.js.map +1 -0
  149. package/dist/components/SignOffRings.js +36 -0
  150. package/dist/components/SignOffRings.js.map +1 -0
  151. package/dist/components/Slider.js +353 -0
  152. package/dist/components/Slider.js.map +1 -0
  153. package/dist/components/SolutionChoice.js +89 -0
  154. package/dist/components/SolutionChoice.js.map +1 -0
  155. package/dist/components/SortMenu.js +75 -0
  156. package/dist/components/SortMenu.js.map +1 -0
  157. package/dist/components/Spinner.js +42 -0
  158. package/dist/components/Spinner.js.map +1 -0
  159. package/dist/components/Stat.js +148 -0
  160. package/dist/components/Stat.js.map +1 -0
  161. package/dist/components/StatusSelect.js +119 -0
  162. package/dist/components/StatusSelect.js.map +1 -0
  163. package/dist/components/Surface.js +210 -0
  164. package/dist/components/Surface.js.map +1 -0
  165. package/dist/components/Table.js +300 -0
  166. package/dist/components/Table.js.map +1 -0
  167. package/dist/components/Tabs.js +288 -0
  168. package/dist/components/Tabs.js.map +1 -0
  169. package/dist/components/ThemeMenu.js +198 -0
  170. package/dist/components/ThemeMenu.js.map +1 -0
  171. package/dist/components/Toast.js +217 -0
  172. package/dist/components/Toast.js.map +1 -0
  173. package/dist/components/Toggle.js +147 -0
  174. package/dist/components/Toggle.js.map +1 -0
  175. package/dist/components/ToggleMatrix.js +157 -0
  176. package/dist/components/ToggleMatrix.js.map +1 -0
  177. package/dist/components/Tree.js +125 -0
  178. package/dist/components/Tree.js.map +1 -0
  179. package/dist/components/TriStateSwitch.js +111 -0
  180. package/dist/components/TriStateSwitch.js.map +1 -0
  181. package/dist/components/VideoPlayer.js +64 -0
  182. package/dist/components/VideoPlayer.js.map +1 -0
  183. package/dist/components/auth/AcceptInvitationCard.js +110 -0
  184. package/dist/components/auth/AcceptInvitationCard.js.map +1 -0
  185. package/dist/components/auth/AuthLayout.js +18 -0
  186. package/dist/components/auth/AuthLayout.js.map +1 -0
  187. package/dist/components/auth/ForgotPasswordForm.js +44 -0
  188. package/dist/components/auth/ForgotPasswordForm.js.map +1 -0
  189. package/dist/components/auth/LoginForm.js +76 -0
  190. package/dist/components/auth/LoginForm.js.map +1 -0
  191. package/dist/components/auth/ResetPasswordForm.js +69 -0
  192. package/dist/components/auth/ResetPasswordForm.js.map +1 -0
  193. package/dist/components/auth/SignInProviders.js +45 -0
  194. package/dist/components/auth/SignInProviders.js.map +1 -0
  195. package/dist/components/auth/SignupCard.js +204 -0
  196. package/dist/components/auth/SignupCard.js.map +1 -0
  197. package/dist/components/auth/TermsAcceptance.js +43 -0
  198. package/dist/components/auth/TermsAcceptance.js.map +1 -0
  199. package/dist/components/board/context.js +32 -0
  200. package/dist/components/board/context.js.map +1 -0
  201. package/dist/components/board/recipe.js +94 -0
  202. package/dist/components/board/recipe.js.map +1 -0
  203. package/dist/components/calendar/CalendarMonth.js +299 -0
  204. package/dist/components/calendar/CalendarMonth.js.map +1 -0
  205. package/dist/components/calendar/CalendarTimeGrid.js +430 -0
  206. package/dist/components/calendar/CalendarTimeGrid.js.map +1 -0
  207. package/dist/components/calendar/EventActions.js +101 -0
  208. package/dist/components/calendar/EventActions.js.map +1 -0
  209. package/dist/components/calendar/format.js +73 -0
  210. package/dist/components/calendar/format.js.map +1 -0
  211. package/dist/components/calendar/palette.js +31 -0
  212. package/dist/components/calendar/palette.js.map +1 -0
  213. package/dist/components/calendar/use-calendar-drag.js +149 -0
  214. package/dist/components/calendar/use-calendar-drag.js.map +1 -0
  215. package/dist/components/calendar/use-event-keyboard.js +87 -0
  216. package/dist/components/calendar/use-event-keyboard.js.map +1 -0
  217. package/dist/components/calendar/use-grid-navigation.js +79 -0
  218. package/dist/components/calendar/use-grid-navigation.js.map +1 -0
  219. package/dist/components/calendar/use-now.js +27 -0
  220. package/dist/components/calendar/use-now.js.map +1 -0
  221. package/dist/components/card-face/AcRingGlyph.js +39 -0
  222. package/dist/components/card-face/AcRingGlyph.js.map +1 -0
  223. package/dist/components/card-face/BoardCardAgentSlot.js +17 -0
  224. package/dist/components/card-face/BoardCardAgentSlot.js.map +1 -0
  225. package/dist/components/card-face/CardFace.js +109 -0
  226. package/dist/components/card-face/CardFace.js.map +1 -0
  227. package/dist/components/card-face/CardTypeBadge.js +17 -0
  228. package/dist/components/card-face/CardTypeBadge.js.map +1 -0
  229. package/dist/components/card-face/EffortBadge.js +11 -0
  230. package/dist/components/card-face/EffortBadge.js.map +1 -0
  231. package/dist/components/card-face/GateRingGlyph.js +31 -0
  232. package/dist/components/card-face/GateRingGlyph.js.map +1 -0
  233. package/dist/components/card-face/OverflowRow.js +70 -0
  234. package/dist/components/card-face/OverflowRow.js.map +1 -0
  235. package/dist/components/card-face/TapTip.js +32 -0
  236. package/dist/components/card-face/TapTip.js.map +1 -0
  237. package/dist/components/card-face/hit-area.js +6 -0
  238. package/dist/components/card-face/hit-area.js.map +1 -0
  239. package/dist/components/card-face/vocabulary.js +102 -0
  240. package/dist/components/card-face/vocabulary.js.map +1 -0
  241. package/dist/components/chart/BarList.js +78 -0
  242. package/dist/components/chart/BarList.js.map +1 -0
  243. package/dist/components/chart/LineChart.js +310 -0
  244. package/dist/components/chart/LineChart.js.map +1 -0
  245. package/dist/components/chart/ShareBar.js +141 -0
  246. package/dist/components/chart/ShareBar.js.map +1 -0
  247. package/dist/components/chart/TimeSeriesChart.js +305 -0
  248. package/dist/components/chart/TimeSeriesChart.js.map +1 -0
  249. package/dist/components/chart/label-metrics.js +17 -0
  250. package/dist/components/chart/label-metrics.js.map +1 -0
  251. package/dist/components/chart/line-chart-axis.js +38 -0
  252. package/dist/components/chart/line-chart-axis.js.map +1 -0
  253. package/dist/components/chart/line-chart-scale.js +132 -0
  254. package/dist/components/chart/line-chart-scale.js.map +1 -0
  255. package/dist/components/chart/line-series-style.js +22 -0
  256. package/dist/components/chart/line-series-style.js.map +1 -0
  257. package/dist/components/chart/share-bar-labels.js +14 -0
  258. package/dist/components/chart/share-bar-labels.js.map +1 -0
  259. package/dist/components/chart/shared.js +157 -0
  260. package/dist/components/chart/shared.js.map +1 -0
  261. package/dist/components/chart/time-series-scale.js +51 -0
  262. package/dist/components/chart/time-series-scale.js.map +1 -0
  263. package/dist/components/chat/Attachment.js +316 -0
  264. package/dist/components/chat/Attachment.js.map +1 -0
  265. package/dist/components/chat/Chat.js +171 -0
  266. package/dist/components/chat/Chat.js.map +1 -0
  267. package/dist/components/chat/Composer.js +274 -0
  268. package/dist/components/chat/Composer.js.map +1 -0
  269. package/dist/components/chat/ContextMeter.js +202 -0
  270. package/dist/components/chat/ContextMeter.js.map +1 -0
  271. package/dist/components/chat/EffortControl.js +116 -0
  272. package/dist/components/chat/EffortControl.js.map +1 -0
  273. package/dist/components/chat/FileCover.js +78 -0
  274. package/dist/components/chat/FileCover.js.map +1 -0
  275. package/dist/components/chat/Message.js +356 -0
  276. package/dist/components/chat/Message.js.map +1 -0
  277. package/dist/components/chat/MessageScroller.js +104 -0
  278. package/dist/components/chat/MessageScroller.js.map +1 -0
  279. package/dist/components/chat/ModelSelector.js +156 -0
  280. package/dist/components/chat/ModelSelector.js.map +1 -0
  281. package/dist/components/chat/StreamingMarkdown.js +42 -0
  282. package/dist/components/chat/StreamingMarkdown.js.map +1 -0
  283. package/dist/components/chat/download-file.js +9 -0
  284. package/dist/components/chat/download-file.js.map +1 -0
  285. package/dist/components/chat/file-icon.js +39 -0
  286. package/dist/components/chat/file-icon.js.map +1 -0
  287. package/dist/components/checklist/StatusChecklist.js +103 -0
  288. package/dist/components/checklist/StatusChecklist.js.map +1 -0
  289. package/dist/components/checklist/tally.js +29 -0
  290. package/dist/components/checklist/tally.js.map +1 -0
  291. package/dist/components/code-editor/context.js +13 -0
  292. package/dist/components/code-editor/context.js.map +1 -0
  293. package/dist/components/code-editor/editing.js +93 -0
  294. package/dist/components/code-editor/editing.js.map +1 -0
  295. package/dist/components/code-editor/highlight.js +27 -0
  296. package/dist/components/code-editor/highlight.js.map +1 -0
  297. package/dist/components/code-editor/recipe.js +75 -0
  298. package/dist/components/code-editor/recipe.js.map +1 -0
  299. package/dist/components/date-timeline/DateTimeline.js +358 -0
  300. package/dist/components/date-timeline/DateTimeline.js.map +1 -0
  301. package/dist/components/date-timeline/TimelineRow.js +100 -0
  302. package/dist/components/date-timeline/TimelineRow.js.map +1 -0
  303. package/dist/components/date-timeline/useBarDrag.js +44 -0
  304. package/dist/components/date-timeline/useBarDrag.js.map +1 -0
  305. package/dist/components/date-timeline/useMarkerDrag.js +40 -0
  306. package/dist/components/date-timeline/useMarkerDrag.js.map +1 -0
  307. package/dist/components/date-timeline/useTimelineZoom.js +44 -0
  308. package/dist/components/date-timeline/useTimelineZoom.js.map +1 -0
  309. package/dist/components/drag-drop/context.js +37 -0
  310. package/dist/components/drag-drop/context.js.map +1 -0
  311. package/dist/components/drag-drop/recipe.js +270 -0
  312. package/dist/components/drag-drop/recipe.js.map +1 -0
  313. package/dist/components/drag-drop/shift.js +157 -0
  314. package/dist/components/drag-drop/shift.js.map +1 -0
  315. package/dist/components/edit/activation.js +10 -0
  316. package/dist/components/edit/activation.js.map +1 -0
  317. package/dist/components/edit/outcome.js +47 -0
  318. package/dist/components/edit/outcome.js.map +1 -0
  319. package/dist/components/edit/use-edit-session.js +146 -0
  320. package/dist/components/edit/use-edit-session.js.map +1 -0
  321. package/dist/components/file-viewer/FileViewer.js +97 -0
  322. package/dist/components/file-viewer/FileViewer.js.map +1 -0
  323. package/dist/components/file-viewer/PageNumberJumpField.js +47 -0
  324. package/dist/components/file-viewer/PageNumberJumpField.js.map +1 -0
  325. package/dist/components/file-viewer/ViewerControls.js +122 -0
  326. package/dist/components/file-viewer/ViewerControls.js.map +1 -0
  327. package/dist/components/file-viewer/ViewerRail.js +57 -0
  328. package/dist/components/file-viewer/ViewerRail.js.map +1 -0
  329. package/dist/components/file-viewer/ViewerStage.js +112 -0
  330. package/dist/components/file-viewer/ViewerStage.js.map +1 -0
  331. package/dist/components/file-viewer/frames.js +37 -0
  332. package/dist/components/file-viewer/frames.js.map +1 -0
  333. package/dist/components/file-viewer/use-frame-cursor.js +32 -0
  334. package/dist/components/file-viewer/use-frame-cursor.js.map +1 -0
  335. package/dist/components/file-viewer/use-viewer-keys.js +50 -0
  336. package/dist/components/file-viewer/use-viewer-keys.js.map +1 -0
  337. package/dist/components/file-viewer/use-viewer-zoom.js +68 -0
  338. package/dist/components/file-viewer/use-viewer-zoom.js.map +1 -0
  339. package/dist/components/focus-web/FocusWeb.js +322 -0
  340. package/dist/components/focus-web/FocusWeb.js.map +1 -0
  341. package/dist/components/focus-web/layout.js +34 -0
  342. package/dist/components/focus-web/layout.js.map +1 -0
  343. package/dist/components/graph-explorer/GraphExplorer.js +441 -0
  344. package/dist/components/graph-explorer/GraphExplorer.js.map +1 -0
  345. package/dist/components/graph-explorer/camera-math.js +102 -0
  346. package/dist/components/graph-explorer/camera-math.js.map +1 -0
  347. package/dist/components/graph-explorer/tree-layout.js +103 -0
  348. package/dist/components/graph-explorer/tree-layout.js.map +1 -0
  349. package/dist/components/graph-explorer/use-camera.js +82 -0
  350. package/dist/components/graph-explorer/use-camera.js.map +1 -0
  351. package/dist/components/graph-explorer/viewport-gesture.js +107 -0
  352. package/dist/components/graph-explorer/viewport-gesture.js.map +1 -0
  353. package/dist/components/kanban/KanbanBoard.js +219 -0
  354. package/dist/components/kanban/KanbanBoard.js.map +1 -0
  355. package/dist/components/kanban/recipe.js +144 -0
  356. package/dist/components/kanban/recipe.js.map +1 -0
  357. package/dist/components/markdown/Affordances.js +398 -0
  358. package/dist/components/markdown/Affordances.js.map +1 -0
  359. package/dist/components/markdown/AttachmentStrip.js +128 -0
  360. package/dist/components/markdown/AttachmentStrip.js.map +1 -0
  361. package/dist/components/markdown/ImageUpload.js +45 -0
  362. package/dist/components/markdown/ImageUpload.js.map +1 -0
  363. package/dist/components/media-error.js +7 -0
  364. package/dist/components/media-error.js.map +1 -0
  365. package/dist/components/nav-sections.js +61 -0
  366. package/dist/components/nav-sections.js.map +1 -0
  367. package/dist/components/node-canvas/NodeCanvas.js +384 -0
  368. package/dist/components/node-canvas/NodeCanvas.js.map +1 -0
  369. package/dist/components/node-canvas/layout.js +237 -0
  370. package/dist/components/node-canvas/layout.js.map +1 -0
  371. package/dist/components/node-canvas/use-canvas-gestures.js +143 -0
  372. package/dist/components/node-canvas/use-canvas-gestures.js.map +1 -0
  373. package/dist/components/openapi/OpenApiViewer.js +137 -0
  374. package/dist/components/openapi/OpenApiViewer.js.map +1 -0
  375. package/dist/components/openapi/OperationCard.js +145 -0
  376. package/dist/components/openapi/OperationCard.js.map +1 -0
  377. package/dist/components/openapi/SchemaView.js +68 -0
  378. package/dist/components/openapi/SchemaView.js.map +1 -0
  379. package/dist/components/openapi/resolve.js +102 -0
  380. package/dist/components/openapi/resolve.js.map +1 -0
  381. package/dist/components/openapi/types.js +5 -0
  382. package/dist/components/openapi/types.js.map +1 -0
  383. package/dist/components/overlay-shell.js +29 -0
  384. package/dist/components/overlay-shell.js.map +1 -0
  385. package/dist/components/overlay-stack.js +27 -0
  386. package/dist/components/overlay-stack.js.map +1 -0
  387. package/dist/components/paged-window/PageBlock.js +50 -0
  388. package/dist/components/paged-window/PageBlock.js.map +1 -0
  389. package/dist/components/provenance/ConfidenceBar.js +60 -0
  390. package/dist/components/provenance/ConfidenceBar.js.map +1 -0
  391. package/dist/components/provenance/ConfidenceMeter.js +36 -0
  392. package/dist/components/provenance/ConfidenceMeter.js.map +1 -0
  393. package/dist/components/provenance/ConfidenceReadout.js +31 -0
  394. package/dist/components/provenance/ConfidenceReadout.js.map +1 -0
  395. package/dist/components/provenance/ProvenanceBadge.js +44 -0
  396. package/dist/components/provenance/ProvenanceBadge.js.map +1 -0
  397. package/dist/components/provenance/ProvenanceDetail.js +114 -0
  398. package/dist/components/provenance/ProvenanceDetail.js.map +1 -0
  399. package/dist/components/provenance/ProvenanceDisclosure.js +111 -0
  400. package/dist/components/provenance/ProvenanceDisclosure.js.map +1 -0
  401. package/dist/components/provenance/absence.js +31 -0
  402. package/dist/components/provenance/absence.js.map +1 -0
  403. package/dist/components/provenance/types.js +30 -0
  404. package/dist/components/provenance/types.js.map +1 -0
  405. package/dist/components/rbac/AccessRequestPanel.js +153 -0
  406. package/dist/components/rbac/AccessRequestPanel.js.map +1 -0
  407. package/dist/components/rbac/AccountMenu.js +118 -0
  408. package/dist/components/rbac/AccountMenu.js.map +1 -0
  409. package/dist/components/rbac/AgentKeysList.js +20 -0
  410. package/dist/components/rbac/AgentKeysList.js.map +1 -0
  411. package/dist/components/rbac/ApiKeysPanel.js +172 -0
  412. package/dist/components/rbac/ApiKeysPanel.js.map +1 -0
  413. package/dist/components/rbac/ApiKeysTable.js +167 -0
  414. package/dist/components/rbac/ApiKeysTable.js.map +1 -0
  415. package/dist/components/rbac/Brand.js +13 -0
  416. package/dist/components/rbac/Brand.js.map +1 -0
  417. package/dist/components/rbac/Can.js +18 -0
  418. package/dist/components/rbac/Can.js.map +1 -0
  419. package/dist/components/rbac/ChangePasswordForm.js +73 -0
  420. package/dist/components/rbac/ChangePasswordForm.js.map +1 -0
  421. package/dist/components/rbac/DangerZone.js +27 -0
  422. package/dist/components/rbac/DangerZone.js.map +1 -0
  423. package/dist/components/rbac/DevToolsPopover.js +140 -0
  424. package/dist/components/rbac/DevToolsPopover.js.map +1 -0
  425. package/dist/components/rbac/EndedLine.js +24 -0
  426. package/dist/components/rbac/EndedLine.js.map +1 -0
  427. package/dist/components/rbac/InvitationsList.js +148 -0
  428. package/dist/components/rbac/InvitationsList.js.map +1 -0
  429. package/dist/components/rbac/InviteMembersDialog.js +97 -0
  430. package/dist/components/rbac/InviteMembersDialog.js.map +1 -0
  431. package/dist/components/rbac/MembersPanel.js +138 -0
  432. package/dist/components/rbac/MembersPanel.js.map +1 -0
  433. package/dist/components/rbac/PermissionRequestPanel.js +141 -0
  434. package/dist/components/rbac/PermissionRequestPanel.js.map +1 -0
  435. package/dist/components/rbac/ProfileForm.js +86 -0
  436. package/dist/components/rbac/ProfileForm.js.map +1 -0
  437. package/dist/components/rbac/ProfilePage.js +58 -0
  438. package/dist/components/rbac/ProfilePage.js.map +1 -0
  439. package/dist/components/rbac/RBACProvider.js +82 -0
  440. package/dist/components/rbac/RBACProvider.js.map +1 -0
  441. package/dist/components/rbac/RoleEditorDialog.js +90 -0
  442. package/dist/components/rbac/RoleEditorDialog.js.map +1 -0
  443. package/dist/components/rbac/RoleKeyPicker.js +77 -0
  444. package/dist/components/rbac/RoleKeyPicker.js.map +1 -0
  445. package/dist/components/rbac/RolePermissionMatrix.js +37 -0
  446. package/dist/components/rbac/RolePermissionMatrix.js.map +1 -0
  447. package/dist/components/rbac/RolesPermissionsPage.js +142 -0
  448. package/dist/components/rbac/RolesPermissionsPage.js.map +1 -0
  449. package/dist/components/rbac/SessionsList.js +146 -0
  450. package/dist/components/rbac/SessionsList.js.map +1 -0
  451. package/dist/components/rbac/TeamSettingsForm.js +69 -0
  452. package/dist/components/rbac/TeamSettingsForm.js.map +1 -0
  453. package/dist/components/rbac/TeamSwitcher.js +66 -0
  454. package/dist/components/rbac/TeamSwitcher.js.map +1 -0
  455. package/dist/components/rbac/approvalPanelParts.js +130 -0
  456. package/dist/components/rbac/approvalPanelParts.js.map +1 -0
  457. package/dist/components/rbac/permissionSections.js +8 -0
  458. package/dist/components/rbac/permissionSections.js.map +1 -0
  459. package/dist/components/rbac/stagedForm.js +42 -0
  460. package/dist/components/rbac/stagedForm.js.map +1 -0
  461. package/dist/components/rbac/useStagedImage.js +21 -0
  462. package/dist/components/rbac/useStagedImage.js.map +1 -0
  463. package/dist/components/roadmap/PhaseManager.js +48 -0
  464. package/dist/components/roadmap/PhaseManager.js.map +1 -0
  465. package/dist/components/roadmap/RoadmapItemCard.js +96 -0
  466. package/dist/components/roadmap/RoadmapItemCard.js.map +1 -0
  467. package/dist/components/roadmap/RoadmapPage.js +34 -0
  468. package/dist/components/roadmap/RoadmapPage.js.map +1 -0
  469. package/dist/components/roadmap/RoadmapSwimlaneBoard.js +91 -0
  470. package/dist/components/roadmap/RoadmapSwimlaneBoard.js.map +1 -0
  471. package/dist/components/roadmap/TrackManager.js +58 -0
  472. package/dist/components/roadmap/TrackManager.js.map +1 -0
  473. package/dist/components/roadmap/UseCaseCard.js +93 -0
  474. package/dist/components/roadmap/UseCaseCard.js.map +1 -0
  475. package/dist/components/roadmap/UseCaseLedgerPage.js +98 -0
  476. package/dist/components/roadmap/UseCaseLedgerPage.js.map +1 -0
  477. package/dist/components/roadmap/chip-tones.js +9 -0
  478. package/dist/components/roadmap/chip-tones.js.map +1 -0
  479. package/dist/components/roadmap/derive.js +28 -0
  480. package/dist/components/roadmap/derive.js.map +1 -0
  481. package/dist/components/stepper/Stepper.js +276 -0
  482. package/dist/components/stepper/Stepper.js.map +1 -0
  483. package/dist/components/stepper/derive.js +53 -0
  484. package/dist/components/stepper/derive.js.map +1 -0
  485. package/dist/confidence.css +222 -0
  486. package/dist/fonts/bricolage-grotesque-0.woff2 +0 -0
  487. package/dist/fonts/bricolage-grotesque-1.woff2 +0 -0
  488. package/dist/fonts/bricolage-grotesque-2.woff2 +0 -0
  489. package/dist/fonts/figtree-0.woff2 +0 -0
  490. package/dist/fonts/figtree-1.woff2 +0 -0
  491. package/dist/fonts/figtree-2.woff2 +0 -0
  492. package/dist/fonts/figtree-3.woff2 +0 -0
  493. package/dist/fonts/jetbrains-mono-0.woff2 +0 -0
  494. package/dist/fonts/jetbrains-mono-1.woff2 +0 -0
  495. package/dist/fonts/jetbrains-mono-10.woff2 +0 -0
  496. package/dist/fonts/jetbrains-mono-11.woff2 +0 -0
  497. package/dist/fonts/jetbrains-mono-2.woff2 +0 -0
  498. package/dist/fonts/jetbrains-mono-3.woff2 +0 -0
  499. package/dist/fonts/jetbrains-mono-4.woff2 +0 -0
  500. package/dist/fonts/jetbrains-mono-5.woff2 +0 -0
  501. package/dist/fonts/jetbrains-mono-6.woff2 +0 -0
  502. package/dist/fonts/jetbrains-mono-7.woff2 +0 -0
  503. package/dist/fonts/jetbrains-mono-8.woff2 +0 -0
  504. package/dist/fonts/jetbrains-mono-9.woff2 +0 -0
  505. package/dist/fonts.css +187 -0
  506. package/dist/icons/data.js +233 -0
  507. package/dist/icons/data.js.map +1 -0
  508. package/dist/index.js +942 -0
  509. package/dist/index.js.map +1 -0
  510. package/dist/lib/attention.js +75 -0
  511. package/dist/lib/attention.js.map +1 -0
  512. package/dist/lib/board/anchor.js +14 -0
  513. package/dist/lib/board/anchor.js.map +1 -0
  514. package/dist/lib/board/model.js +41 -0
  515. package/dist/lib/board/model.js.map +1 -0
  516. package/dist/lib/board/move.js +161 -0
  517. package/dist/lib/board/move.js.map +1 -0
  518. package/dist/lib/board/position.js +11 -0
  519. package/dist/lib/board/position.js.map +1 -0
  520. package/dist/lib/board/rejection.js +22 -0
  521. package/dist/lib/board/rejection.js.map +1 -0
  522. package/dist/lib/board/use-board.js +43 -0
  523. package/dist/lib/board/use-board.js.map +1 -0
  524. package/dist/lib/calendar/band-packer.js +44 -0
  525. package/dist/lib/calendar/band-packer.js.map +1 -0
  526. package/dist/lib/calendar/drag.js +74 -0
  527. package/dist/lib/calendar/drag.js.map +1 -0
  528. package/dist/lib/calendar/lane-packer.js +67 -0
  529. package/dist/lib/calendar/lane-packer.js.map +1 -0
  530. package/dist/lib/calendar/segments.js +82 -0
  531. package/dist/lib/calendar/segments.js.map +1 -0
  532. package/dist/lib/calendar/types.js +7 -0
  533. package/dist/lib/calendar/types.js.map +1 -0
  534. package/dist/lib/chart-palette.js +27 -0
  535. package/dist/lib/chart-palette.js.map +1 -0
  536. package/dist/lib/clipboard.js +30 -0
  537. package/dist/lib/clipboard.js.map +1 -0
  538. package/dist/lib/cn.js +9 -0
  539. package/dist/lib/cn.js.map +1 -0
  540. package/dist/lib/color.js +24 -0
  541. package/dist/lib/color.js.map +1 -0
  542. package/dist/lib/component-guidance.js +297 -0
  543. package/dist/lib/component-guidance.js.map +1 -0
  544. package/dist/lib/confidence.js +22 -0
  545. package/dist/lib/confidence.js.map +1 -0
  546. package/dist/lib/date-timeline/scale.js +197 -0
  547. package/dist/lib/date-timeline/scale.js.map +1 -0
  548. package/dist/lib/design-frame/document.js +44 -0
  549. package/dist/lib/design-frame/document.js.map +1 -0
  550. package/dist/lib/design-frame/mini-app-script.js +107 -0
  551. package/dist/lib/design-frame/mini-app-script.js.map +1 -0
  552. package/dist/lib/design-frame/mini-app.js +12 -0
  553. package/dist/lib/design-frame/mini-app.js.map +1 -0
  554. package/dist/lib/design-frame/protocol.js +46 -0
  555. package/dist/lib/design-frame/protocol.js.map +1 -0
  556. package/dist/lib/dev-warn.js +17 -0
  557. package/dist/lib/dev-warn.js.map +1 -0
  558. package/dist/lib/dnd/announce.js +120 -0
  559. package/dist/lib/dnd/announce.js.map +1 -0
  560. package/dist/lib/dnd/autoscroll.js +123 -0
  561. package/dist/lib/dnd/autoscroll.js.map +1 -0
  562. package/dist/lib/dnd/cross-drop.js +11 -0
  563. package/dist/lib/dnd/cross-drop.js.map +1 -0
  564. package/dist/lib/dnd/geometry.js +99 -0
  565. package/dist/lib/dnd/geometry.js.map +1 -0
  566. package/dist/lib/dnd/sensors/gesture.js +86 -0
  567. package/dist/lib/dnd/sensors/gesture.js.map +1 -0
  568. package/dist/lib/dnd/sensors/keyboard.js +47 -0
  569. package/dist/lib/dnd/sensors/keyboard.js.map +1 -0
  570. package/dist/lib/dnd/sensors/pointer.js +32 -0
  571. package/dist/lib/dnd/sensors/pointer.js.map +1 -0
  572. package/dist/lib/dnd/session.js +256 -0
  573. package/dist/lib/dnd/session.js.map +1 -0
  574. package/dist/lib/dnd/use-drag.js +90 -0
  575. package/dist/lib/dnd/use-drag.js.map +1 -0
  576. package/dist/lib/dom/scroll-ancestor.js +18 -0
  577. package/dist/lib/dom/scroll-ancestor.js.map +1 -0
  578. package/dist/lib/format.js +23 -0
  579. package/dist/lib/format.js.map +1 -0
  580. package/dist/lib/group-in-order.js +13 -0
  581. package/dist/lib/group-in-order.js.map +1 -0
  582. package/dist/lib/header-fold.js +11 -0
  583. package/dist/lib/header-fold.js.map +1 -0
  584. package/dist/lib/i18n/areas/auth-provenance-flows.js +156 -0
  585. package/dist/lib/i18n/areas/auth-provenance-flows.js.map +1 -0
  586. package/dist/lib/i18n/areas/board.js +35 -0
  587. package/dist/lib/i18n/areas/board.js.map +1 -0
  588. package/dist/lib/i18n/areas/card-face.js +10 -0
  589. package/dist/lib/i18n/areas/card-face.js.map +1 -0
  590. package/dist/lib/i18n/areas/chat-chart.js +118 -0
  591. package/dist/lib/i18n/areas/chat-chart.js.map +1 -0
  592. package/dist/lib/i18n/areas/code-editor.js +24 -0
  593. package/dist/lib/i18n/areas/code-editor.js.map +1 -0
  594. package/dist/lib/i18n/areas/date-timeline.js +21 -0
  595. package/dist/lib/i18n/areas/date-timeline.js.map +1 -0
  596. package/dist/lib/i18n/areas/dates.js +71 -0
  597. package/dist/lib/i18n/areas/dates.js.map +1 -0
  598. package/dist/lib/i18n/areas/docs-views.js +183 -0
  599. package/dist/lib/i18n/areas/docs-views.js.map +1 -0
  600. package/dist/lib/i18n/areas/feedback.js +75 -0
  601. package/dist/lib/i18n/areas/feedback.js.map +1 -0
  602. package/dist/lib/i18n/areas/formats.js +24 -0
  603. package/dist/lib/i18n/areas/formats.js.map +1 -0
  604. package/dist/lib/i18n/areas/forms.js +110 -0
  605. package/dist/lib/i18n/areas/forms.js.map +1 -0
  606. package/dist/lib/i18n/areas/keys.js +25 -0
  607. package/dist/lib/i18n/areas/keys.js.map +1 -0
  608. package/dist/lib/i18n/areas/markdown.js +136 -0
  609. package/dist/lib/i18n/areas/markdown.js.map +1 -0
  610. package/dist/lib/i18n/areas/move-rejected.js +14 -0
  611. package/dist/lib/i18n/areas/move-rejected.js.map +1 -0
  612. package/dist/lib/i18n/areas/navigation.js +104 -0
  613. package/dist/lib/i18n/areas/navigation.js.map +1 -0
  614. package/dist/lib/i18n/areas/rbac.js +331 -0
  615. package/dist/lib/i18n/areas/rbac.js.map +1 -0
  616. package/dist/lib/i18n/emphasis.js +6 -0
  617. package/dist/lib/i18n/emphasis.js.map +1 -0
  618. package/dist/lib/i18n/number-format.js +9 -0
  619. package/dist/lib/i18n/number-format.js.map +1 -0
  620. package/dist/lib/i18n/plural.js +9 -0
  621. package/dist/lib/i18n/plural.js.map +1 -0
  622. package/dist/lib/i18n/provider.js +27 -0
  623. package/dist/lib/i18n/provider.js.map +1 -0
  624. package/dist/lib/i18n/strings.js +38 -0
  625. package/dist/lib/i18n/strings.js.map +1 -0
  626. package/dist/lib/icons.js +17 -0
  627. package/dist/lib/icons.js.map +1 -0
  628. package/dist/lib/interactive-target.js +9 -0
  629. package/dist/lib/interactive-target.js.map +1 -0
  630. package/dist/lib/intl-cache.js +69 -0
  631. package/dist/lib/intl-cache.js.map +1 -0
  632. package/dist/lib/legal-document.js +37 -0
  633. package/dist/lib/legal-document.js.map +1 -0
  634. package/dist/lib/line-diff-model.js +51 -0
  635. package/dist/lib/line-diff-model.js.map +1 -0
  636. package/dist/lib/markdown/attachments.js +71 -0
  637. package/dist/lib/markdown/attachments.js.map +1 -0
  638. package/dist/lib/markdown/caret-map.js +153 -0
  639. package/dist/lib/markdown/caret-map.js.map +1 -0
  640. package/dist/lib/markdown/caret.js +35 -0
  641. package/dist/lib/markdown/caret.js.map +1 -0
  642. package/dist/lib/markdown/commands.js +443 -0
  643. package/dist/lib/markdown/commands.js.map +1 -0
  644. package/dist/lib/markdown/convert.js +153 -0
  645. package/dist/lib/markdown/convert.js.map +1 -0
  646. package/dist/lib/markdown/dom.js +89 -0
  647. package/dist/lib/markdown/dom.js.map +1 -0
  648. package/dist/lib/markdown/edit.js +92 -0
  649. package/dist/lib/markdown/edit.js.map +1 -0
  650. package/dist/lib/markdown/history.js +79 -0
  651. package/dist/lib/markdown/history.js.map +1 -0
  652. package/dist/lib/markdown/hotkeys.js +63 -0
  653. package/dist/lib/markdown/hotkeys.js.map +1 -0
  654. package/dist/lib/markdown/image-pipeline.js +236 -0
  655. package/dist/lib/markdown/image-pipeline.js.map +1 -0
  656. package/dist/lib/markdown/images.js +85 -0
  657. package/dist/lib/markdown/images.js.map +1 -0
  658. package/dist/lib/markdown/input.js +210 -0
  659. package/dist/lib/markdown/input.js.map +1 -0
  660. package/dist/lib/markdown/keys.js +37 -0
  661. package/dist/lib/markdown/keys.js.map +1 -0
  662. package/dist/lib/markdown/paste.js +180 -0
  663. package/dist/lib/markdown/paste.js.map +1 -0
  664. package/dist/lib/markdown/position.js +111 -0
  665. package/dist/lib/markdown/position.js.map +1 -0
  666. package/dist/lib/markdown/project.js +108 -0
  667. package/dist/lib/markdown/project.js.map +1 -0
  668. package/dist/lib/markdown/reconcile.js +127 -0
  669. package/dist/lib/markdown/reconcile.js.map +1 -0
  670. package/dist/lib/markdown/surface.js +373 -0
  671. package/dist/lib/markdown/surface.js.map +1 -0
  672. package/dist/lib/motion.js +22 -0
  673. package/dist/lib/motion.js.map +1 -0
  674. package/dist/lib/pad.js +7 -0
  675. package/dist/lib/pad.js.map +1 -0
  676. package/dist/lib/paged-window/layout.js +15 -0
  677. package/dist/lib/paged-window/layout.js.map +1 -0
  678. package/dist/lib/paged-window/list-owner.js +21 -0
  679. package/dist/lib/paged-window/list-owner.js.map +1 -0
  680. package/dist/lib/paged-window/records-binding.js +239 -0
  681. package/dist/lib/paged-window/records-binding.js.map +1 -0
  682. package/dist/lib/paged-window/store.js +562 -0
  683. package/dist/lib/paged-window/store.js.map +1 -0
  684. package/dist/lib/paged-window/use-measured-pitch.js +38 -0
  685. package/dist/lib/paged-window/use-measured-pitch.js.map +1 -0
  686. package/dist/lib/paged-window/use-page-visibility.js +36 -0
  687. package/dist/lib/paged-window/use-page-visibility.js.map +1 -0
  688. package/dist/lib/paged-window/use-paged-window.js +43 -0
  689. package/dist/lib/paged-window/use-paged-window.js.map +1 -0
  690. package/dist/lib/paged-window/use-scroll-root.js +12 -0
  691. package/dist/lib/paged-window/use-scroll-root.js.map +1 -0
  692. package/dist/lib/persist.js +84 -0
  693. package/dist/lib/persist.js.map +1 -0
  694. package/dist/lib/preference-values.js +13 -0
  695. package/dist/lib/preference-values.js.map +1 -0
  696. package/dist/lib/preferences.js +86 -0
  697. package/dist/lib/preferences.js.map +1 -0
  698. package/dist/lib/reads/hooks.js +156 -0
  699. package/dist/lib/reads/hooks.js.map +1 -0
  700. package/dist/lib/reads/optimistic.js +169 -0
  701. package/dist/lib/reads/optimistic.js.map +1 -0
  702. package/dist/lib/reads/refetch.js +108 -0
  703. package/dist/lib/reads/refetch.js.map +1 -0
  704. package/dist/lib/reads/slots.js +215 -0
  705. package/dist/lib/reads/slots.js.map +1 -0
  706. package/dist/lib/realtime/hooks.js +40 -0
  707. package/dist/lib/realtime/hooks.js.map +1 -0
  708. package/dist/lib/realtime/provider.js +25 -0
  709. package/dist/lib/realtime/provider.js.map +1 -0
  710. package/dist/lib/realtime/registry.js +472 -0
  711. package/dist/lib/realtime/registry.js.map +1 -0
  712. package/dist/lib/records/define-record-type.js +33 -0
  713. package/dist/lib/records/define-record-type.js.map +1 -0
  714. package/dist/lib/records/hooks.js +39 -0
  715. package/dist/lib/records/hooks.js.map +1 -0
  716. package/dist/lib/records/store.js +572 -0
  717. package/dist/lib/records/store.js.map +1 -0
  718. package/dist/lib/records/wire.js +58 -0
  719. package/dist/lib/records/wire.js.map +1 -0
  720. package/dist/lib/reduced-motion-help.js +19 -0
  721. package/dist/lib/reduced-motion-help.js.map +1 -0
  722. package/dist/lib/scroll-caret.js +18 -0
  723. package/dist/lib/scroll-caret.js.map +1 -0
  724. package/dist/lib/sim/createSimStore.js +54 -0
  725. package/dist/lib/sim/createSimStore.js.map +1 -0
  726. package/dist/lib/sim/latency.js +28 -0
  727. package/dist/lib/sim/latency.js.map +1 -0
  728. package/dist/lib/sim/registry.js +13 -0
  729. package/dist/lib/sim/registry.js.map +1 -0
  730. package/dist/lib/sim/settings.js +41 -0
  731. package/dist/lib/sim/settings.js.map +1 -0
  732. package/dist/lib/submit-shortcut.js +25 -0
  733. package/dist/lib/submit-shortcut.js.map +1 -0
  734. package/dist/lib/syntax/index.js +33 -0
  735. package/dist/lib/syntax/index.js.map +1 -0
  736. package/dist/lib/syntax/languages/bash.js +77 -0
  737. package/dist/lib/syntax/languages/bash.js.map +1 -0
  738. package/dist/lib/syntax/languages/css.js +81 -0
  739. package/dist/lib/syntax/languages/css.js.map +1 -0
  740. package/dist/lib/syntax/languages/html.js +91 -0
  741. package/dist/lib/syntax/languages/html.js.map +1 -0
  742. package/dist/lib/syntax/languages/index.js +49 -0
  743. package/dist/lib/syntax/languages/index.js.map +1 -0
  744. package/dist/lib/syntax/languages/javascript.js +133 -0
  745. package/dist/lib/syntax/languages/javascript.js.map +1 -0
  746. package/dist/lib/syntax/languages/json.js +45 -0
  747. package/dist/lib/syntax/languages/json.js.map +1 -0
  748. package/dist/lib/syntax/languages/mongodb.js +24 -0
  749. package/dist/lib/syntax/languages/mongodb.js.map +1 -0
  750. package/dist/lib/syntax/languages/plain.js +10 -0
  751. package/dist/lib/syntax/languages/plain.js.map +1 -0
  752. package/dist/lib/syntax/languages/sql.js +113 -0
  753. package/dist/lib/syntax/languages/sql.js.map +1 -0
  754. package/dist/lib/syntax/languages/vue.js +31 -0
  755. package/dist/lib/syntax/languages/vue.js.map +1 -0
  756. package/dist/lib/syntax/languages/yaml.js +55 -0
  757. package/dist/lib/syntax/languages/yaml.js.map +1 -0
  758. package/dist/lib/syntax/markdown/grammar.js +52 -0
  759. package/dist/lib/syntax/markdown/grammar.js.map +1 -0
  760. package/dist/lib/syntax/markdown/inline.js +477 -0
  761. package/dist/lib/syntax/markdown/inline.js.map +1 -0
  762. package/dist/lib/syntax/markdown/parse.js +464 -0
  763. package/dist/lib/syntax/markdown/parse.js.map +1 -0
  764. package/dist/lib/syntax/markdown/refs.js +94 -0
  765. package/dist/lib/syntax/markdown/refs.js.map +1 -0
  766. package/dist/lib/syntax/markdown/render.js +230 -0
  767. package/dist/lib/syntax/markdown/render.js.map +1 -0
  768. package/dist/lib/syntax/markdown/spans.js +40 -0
  769. package/dist/lib/syntax/markdown/spans.js.map +1 -0
  770. package/dist/lib/syntax/registry.js +55 -0
  771. package/dist/lib/syntax/registry.js.map +1 -0
  772. package/dist/lib/syntax/tokenize.js +96 -0
  773. package/dist/lib/syntax/tokenize.js.map +1 -0
  774. package/dist/lib/time/instant.js +7 -0
  775. package/dist/lib/time/instant.js.map +1 -0
  776. package/dist/lib/time/plain.js +83 -0
  777. package/dist/lib/time/plain.js.map +1 -0
  778. package/dist/lib/time/relativeAge.js +20 -0
  779. package/dist/lib/time/relativeAge.js.map +1 -0
  780. package/dist/lib/time/relativeClock.js +59 -0
  781. package/dist/lib/time/relativeClock.js.map +1 -0
  782. package/dist/lib/time/types.js +23 -0
  783. package/dist/lib/time/types.js.map +1 -0
  784. package/dist/lib/time/zone.js +148 -0
  785. package/dist/lib/time/zone.js.map +1 -0
  786. package/dist/lib/use-controllable.js +16 -0
  787. package/dist/lib/use-controllable.js.map +1 -0
  788. package/dist/lib/use-fill-height.js +49 -0
  789. package/dist/lib/use-fill-height.js.map +1 -0
  790. package/dist/lib/use-hydrated.js +14 -0
  791. package/dist/lib/use-hydrated.js.map +1 -0
  792. package/dist/lib/use-media-query.js +30 -0
  793. package/dist/lib/use-media-query.js.map +1 -0
  794. package/dist/lib/use-relabel-base-ui-dismiss.js +26 -0
  795. package/dist/lib/use-relabel-base-ui-dismiss.js.map +1 -0
  796. package/dist/lib/use-release-snap-drag.js +29 -0
  797. package/dist/lib/use-release-snap-drag.js.map +1 -0
  798. package/dist/lib/use-roving-options.js +18 -0
  799. package/dist/lib/use-roving-options.js.map +1 -0
  800. package/dist/lib/values/absent.js +5 -0
  801. package/dist/lib/values/absent.js.map +1 -0
  802. package/dist/lib/values/boolean.js +13 -0
  803. package/dist/lib/values/boolean.js.map +1 -0
  804. package/dist/lib/values/currency.js +23 -0
  805. package/dist/lib/values/currency.js.map +1 -0
  806. package/dist/lib/values/date.js +35 -0
  807. package/dist/lib/values/date.js.map +1 -0
  808. package/dist/lib/values/datetime.js +54 -0
  809. package/dist/lib/values/datetime.js.map +1 -0
  810. package/dist/lib/values/locale-date.js +60 -0
  811. package/dist/lib/values/locale-date.js.map +1 -0
  812. package/dist/lib/values/number.js +16 -0
  813. package/dist/lib/values/number.js.map +1 -0
  814. package/dist/pure.js +379 -0
  815. package/dist/pure.js.map +1 -0
  816. package/dist/styles.css +190 -0
  817. package/dist/theme.css +360 -0
  818. package/dist/types/components/Accordion.d.ts +15 -0
  819. package/dist/types/components/AgentWorkingSpinner.d.ts +23 -0
  820. package/dist/types/components/AppShell.d.ts +164 -0
  821. package/dist/types/components/Attention.d.ts +87 -0
  822. package/dist/types/components/Avatar.d.ts +154 -0
  823. package/dist/types/components/Badge.d.ts +131 -0
  824. package/dist/types/components/Board.d.ts +239 -0
  825. package/dist/types/components/Button.d.ts +208 -0
  826. package/dist/types/components/Callout.d.ts +163 -0
  827. package/dist/types/components/Card.d.ts +219 -0
  828. package/dist/types/components/Choice.d.ts +127 -0
  829. package/dist/types/components/CodeEditor.d.ts +86 -0
  830. package/dist/types/components/ColorPicker.d.ts +14 -0
  831. package/dist/types/components/Combobox.d.ts +43 -0
  832. package/dist/types/components/CommandPalette.d.ts +35 -0
  833. package/dist/types/components/ConcentricRing.d.ts +61 -0
  834. package/dist/types/components/ConnectionCard.d.ts +64 -0
  835. package/dist/types/components/ContextItemRow.d.ts +35 -0
  836. package/dist/types/components/CopyValue.d.ts +14 -0
  837. package/dist/types/components/CountBadge.d.ts +14 -0
  838. package/dist/types/components/DateCalendar.d.ts +30 -0
  839. package/dist/types/components/DateField.d.ts +29 -0
  840. package/dist/types/components/DatePicker.d.ts +20 -0
  841. package/dist/types/components/DateTimeText.d.ts +9 -0
  842. package/dist/types/components/DescriptionList.d.ts +40 -0
  843. package/dist/types/components/Dialog.d.ts +269 -0
  844. package/dist/types/components/DragDrop.d.ts +196 -0
  845. package/dist/types/components/Drawer.d.ts +163 -0
  846. package/dist/types/components/EditGutter.d.ts +44 -0
  847. package/dist/types/components/EmojiPicker.d.ts +30 -0
  848. package/dist/types/components/ErrorBoundary.d.ts +43 -0
  849. package/dist/types/components/Field.d.ts +37 -0
  850. package/dist/types/components/FileUpload.d.ts +22 -0
  851. package/dist/types/components/FilterMenu.d.ts +120 -0
  852. package/dist/types/components/GatesSection.d.ts +79 -0
  853. package/dist/types/components/Icon.d.ts +40 -0
  854. package/dist/types/components/IconButton.d.ts +69 -0
  855. package/dist/types/components/IconStack.d.ts +28 -0
  856. package/dist/types/components/ImageUploadField.d.ts +38 -0
  857. package/dist/types/components/InlineEdit.d.ts +183 -0
  858. package/dist/types/components/InlineMarkdownEdit.d.ts +100 -0
  859. package/dist/types/components/Input.d.ts +128 -0
  860. package/dist/types/components/LegalDocument.d.ts +23 -0
  861. package/dist/types/components/LineDiff.d.ts +53 -0
  862. package/dist/types/components/ListHeader.d.ts +45 -0
  863. package/dist/types/components/Loading.d.ts +131 -0
  864. package/dist/types/components/Markdown.d.ts +35 -0
  865. package/dist/types/components/MarkdownEditor.d.ts +129 -0
  866. package/dist/types/components/Menu.d.ts +157 -0
  867. package/dist/types/components/Navigation.d.ts +67 -0
  868. package/dist/types/components/NumberInput.d.ts +177 -0
  869. package/dist/types/components/OTPInput.d.ts +13 -0
  870. package/dist/types/components/OrderedEntityManager.d.ts +64 -0
  871. package/dist/types/components/PagedWindowList.d.ts +23 -0
  872. package/dist/types/components/PaginationBar.d.ts +31 -0
  873. package/dist/types/components/Panel.d.ts +94 -0
  874. package/dist/types/components/PasswordInput.d.ts +7 -0
  875. package/dist/types/components/PasswordRequirements.d.ts +11 -0
  876. package/dist/types/components/PatchDiff.d.ts +38 -0
  877. package/dist/types/components/PendingVeil.d.ts +8 -0
  878. package/dist/types/components/Popover.d.ts +231 -0
  879. package/dist/types/components/Progress.d.ts +580 -0
  880. package/dist/types/components/RatingScale.d.ts +30 -0
  881. package/dist/types/components/ReadMore.d.ts +26 -0
  882. package/dist/types/components/RecordCard.d.ts +413 -0
  883. package/dist/types/components/RelativeTime.d.ts +17 -0
  884. package/dist/types/components/SandboxedFrame.d.ts +37 -0
  885. package/dist/types/components/SearchInput.d.ts +6 -0
  886. package/dist/types/components/SecretField.d.ts +90 -0
  887. package/dist/types/components/SectionNav.d.ts +15 -0
  888. package/dist/types/components/Select.d.ts +53 -0
  889. package/dist/types/components/SequenceDiagram.d.ts +15 -0
  890. package/dist/types/components/SettingRow.d.ts +144 -0
  891. package/dist/types/components/SignOffRings.d.ts +29 -0
  892. package/dist/types/components/Slider.d.ts +255 -0
  893. package/dist/types/components/SolutionChoice.d.ts +49 -0
  894. package/dist/types/components/SortMenu.d.ts +45 -0
  895. package/dist/types/components/Spinner.d.ts +29 -0
  896. package/dist/types/components/Stat.d.ts +136 -0
  897. package/dist/types/components/StatusSelect.d.ts +93 -0
  898. package/dist/types/components/Surface.d.ts +145 -0
  899. package/dist/types/components/Table.d.ts +164 -0
  900. package/dist/types/components/Tabs.d.ts +142 -0
  901. package/dist/types/components/ThemeMenu.d.ts +56 -0
  902. package/dist/types/components/Toast.d.ts +63 -0
  903. package/dist/types/components/Toggle.d.ts +168 -0
  904. package/dist/types/components/ToggleMatrix.d.ts +51 -0
  905. package/dist/types/components/Tree.d.ts +20 -0
  906. package/dist/types/components/TriStateSwitch.d.ts +63 -0
  907. package/dist/types/components/VideoPlayer.d.ts +26 -0
  908. package/dist/types/components/auth/AcceptInvitationCard.d.ts +54 -0
  909. package/dist/types/components/auth/AuthLayout.d.ts +12 -0
  910. package/dist/types/components/auth/ForgotPasswordForm.d.ts +6 -0
  911. package/dist/types/components/auth/LoginForm.d.ts +13 -0
  912. package/dist/types/components/auth/ResetPasswordForm.d.ts +9 -0
  913. package/dist/types/components/auth/SignInProviders.d.ts +56 -0
  914. package/dist/types/components/auth/SignupCard.d.ts +62 -0
  915. package/dist/types/components/auth/TermsAcceptance.d.ts +14 -0
  916. package/dist/types/components/auth/index.d.ts +8 -0
  917. package/dist/types/components/board/context.d.ts +65 -0
  918. package/dist/types/components/board/recipe.d.ts +97 -0
  919. package/dist/types/components/calendar/CalendarMonth.d.ts +32 -0
  920. package/dist/types/components/calendar/CalendarTimeGrid.d.ts +74 -0
  921. package/dist/types/components/calendar/EventActions.d.ts +16 -0
  922. package/dist/types/components/calendar/format.d.ts +42 -0
  923. package/dist/types/components/calendar/palette.d.ts +17 -0
  924. package/dist/types/components/calendar/use-calendar-drag.d.ts +53 -0
  925. package/dist/types/components/calendar/use-event-keyboard.d.ts +23 -0
  926. package/dist/types/components/calendar/use-grid-navigation.d.ts +47 -0
  927. package/dist/types/components/calendar/use-now.d.ts +20 -0
  928. package/dist/types/components/card-face/AcRingGlyph.d.ts +20 -0
  929. package/dist/types/components/card-face/BoardCardAgentSlot.d.ts +19 -0
  930. package/dist/types/components/card-face/CardFace.d.ts +106 -0
  931. package/dist/types/components/card-face/CardTypeBadge.d.ts +21 -0
  932. package/dist/types/components/card-face/EffortBadge.d.ts +9 -0
  933. package/dist/types/components/card-face/GateRingGlyph.d.ts +22 -0
  934. package/dist/types/components/card-face/OverflowRow.d.ts +40 -0
  935. package/dist/types/components/card-face/TapTip.d.ts +15 -0
  936. package/dist/types/components/card-face/hit-area.d.ts +20 -0
  937. package/dist/types/components/card-face/vocabulary.d.ts +83 -0
  938. package/dist/types/components/chart/BarList.d.ts +27 -0
  939. package/dist/types/components/chart/LineChart.d.ts +64 -0
  940. package/dist/types/components/chart/ShareBar.d.ts +26 -0
  941. package/dist/types/components/chart/TimeSeriesChart.d.ts +60 -0
  942. package/dist/types/components/chart/label-metrics.d.ts +9 -0
  943. package/dist/types/components/chart/line-chart-axis.d.ts +14 -0
  944. package/dist/types/components/chart/line-chart-scale.d.ts +55 -0
  945. package/dist/types/components/chart/line-series-style.d.ts +14 -0
  946. package/dist/types/components/chart/share-bar-labels.d.ts +17 -0
  947. package/dist/types/components/chart/shared.d.ts +122 -0
  948. package/dist/types/components/chart/time-series-scale.d.ts +29 -0
  949. package/dist/types/components/chat/Attachment.d.ts +125 -0
  950. package/dist/types/components/chat/Chat.d.ts +60 -0
  951. package/dist/types/components/chat/Composer.d.ts +62 -0
  952. package/dist/types/components/chat/ContextMeter.d.ts +45 -0
  953. package/dist/types/components/chat/EffortControl.d.ts +23 -0
  954. package/dist/types/components/chat/FileCover.d.ts +14 -0
  955. package/dist/types/components/chat/Message.d.ts +66 -0
  956. package/dist/types/components/chat/MessageScroller.d.ts +18 -0
  957. package/dist/types/components/chat/ModelSelector.d.ts +44 -0
  958. package/dist/types/components/chat/StreamingMarkdown.d.ts +11 -0
  959. package/dist/types/components/chat/download-file.d.ts +7 -0
  960. package/dist/types/components/chat/file-icon.d.ts +29 -0
  961. package/dist/types/components/chat/types.d.ts +165 -0
  962. package/dist/types/components/checklist/StatusChecklist.d.ts +37 -0
  963. package/dist/types/components/checklist/index.d.ts +3 -0
  964. package/dist/types/components/checklist/tally.d.ts +19 -0
  965. package/dist/types/components/checklist/types.d.ts +28 -0
  966. package/dist/types/components/code-editor/context.d.ts +32 -0
  967. package/dist/types/components/code-editor/editing.d.ts +39 -0
  968. package/dist/types/components/code-editor/highlight.d.ts +20 -0
  969. package/dist/types/components/code-editor/recipe.d.ts +109 -0
  970. package/dist/types/components/date-timeline/DateTimeline.d.ts +99 -0
  971. package/dist/types/components/date-timeline/TimelineRow.d.ts +22 -0
  972. package/dist/types/components/date-timeline/useBarDrag.d.ts +15 -0
  973. package/dist/types/components/date-timeline/useMarkerDrag.d.ts +14 -0
  974. package/dist/types/components/date-timeline/useTimelineZoom.d.ts +23 -0
  975. package/dist/types/components/drag-drop/context.d.ts +85 -0
  976. package/dist/types/components/drag-drop/recipe.d.ts +163 -0
  977. package/dist/types/components/drag-drop/shift.d.ts +153 -0
  978. package/dist/types/components/edit/activation.d.ts +21 -0
  979. package/dist/types/components/edit/outcome.d.ts +29 -0
  980. package/dist/types/components/edit/use-edit-session.d.ts +77 -0
  981. package/dist/types/components/file-viewer/FileViewer.d.ts +2 -0
  982. package/dist/types/components/file-viewer/PageNumberJumpField.d.ts +9 -0
  983. package/dist/types/components/file-viewer/ViewerControls.d.ts +20 -0
  984. package/dist/types/components/file-viewer/ViewerRail.d.ts +10 -0
  985. package/dist/types/components/file-viewer/ViewerStage.d.ts +22 -0
  986. package/dist/types/components/file-viewer/frames.d.ts +28 -0
  987. package/dist/types/components/file-viewer/index.d.ts +3 -0
  988. package/dist/types/components/file-viewer/types.d.ts +70 -0
  989. package/dist/types/components/file-viewer/use-frame-cursor.d.ts +13 -0
  990. package/dist/types/components/file-viewer/use-viewer-keys.d.ts +24 -0
  991. package/dist/types/components/file-viewer/use-viewer-zoom.d.ts +29 -0
  992. package/dist/types/components/focus-web/FocusWeb.d.ts +3 -0
  993. package/dist/types/components/focus-web/index.d.ts +4 -0
  994. package/dist/types/components/focus-web/layout.d.ts +55 -0
  995. package/dist/types/components/focus-web/types.d.ts +131 -0
  996. package/dist/types/components/graph-explorer/GraphExplorer.d.ts +42 -0
  997. package/dist/types/components/graph-explorer/camera-math.d.ts +119 -0
  998. package/dist/types/components/graph-explorer/index.d.ts +5 -0
  999. package/dist/types/components/graph-explorer/tree-layout.d.ts +67 -0
  1000. package/dist/types/components/graph-explorer/types.d.ts +62 -0
  1001. package/dist/types/components/graph-explorer/use-camera.d.ts +81 -0
  1002. package/dist/types/components/graph-explorer/viewport-gesture.d.ts +32 -0
  1003. package/dist/types/components/kanban/KanbanBoard.d.ts +72 -0
  1004. package/dist/types/components/kanban/recipe.d.ts +73 -0
  1005. package/dist/types/components/kanban/types.d.ts +55 -0
  1006. package/dist/types/components/markdown/Affordances.d.ts +105 -0
  1007. package/dist/types/components/markdown/AttachmentStrip.d.ts +25 -0
  1008. package/dist/types/components/markdown/ImageUpload.d.ts +56 -0
  1009. package/dist/types/components/media-error.d.ts +11 -0
  1010. package/dist/types/components/nav-sections.d.ts +10 -0
  1011. package/dist/types/components/node-canvas/NodeCanvas.d.ts +66 -0
  1012. package/dist/types/components/node-canvas/index.d.ts +3 -0
  1013. package/dist/types/components/node-canvas/layout.d.ts +29 -0
  1014. package/dist/types/components/node-canvas/types.d.ts +207 -0
  1015. package/dist/types/components/node-canvas/use-canvas-gestures.d.ts +39 -0
  1016. package/dist/types/components/openapi/OpenApiViewer.d.ts +14 -0
  1017. package/dist/types/components/openapi/OperationCard.d.ts +33 -0
  1018. package/dist/types/components/openapi/SchemaView.d.ts +14 -0
  1019. package/dist/types/components/openapi/index.d.ts +6 -0
  1020. package/dist/types/components/openapi/resolve.d.ts +72 -0
  1021. package/dist/types/components/openapi/types.d.ts +128 -0
  1022. package/dist/types/components/overlay-shell.d.ts +48 -0
  1023. package/dist/types/components/overlay-stack.d.ts +18 -0
  1024. package/dist/types/components/paged-window/PageBlock.d.ts +31 -0
  1025. package/dist/types/components/provenance/ConfidenceBar.d.ts +118 -0
  1026. package/dist/types/components/provenance/ConfidenceMeter.d.ts +21 -0
  1027. package/dist/types/components/provenance/ConfidenceReadout.d.ts +17 -0
  1028. package/dist/types/components/provenance/ProvenanceBadge.d.ts +23 -0
  1029. package/dist/types/components/provenance/ProvenanceDetail.d.ts +109 -0
  1030. package/dist/types/components/provenance/ProvenanceDisclosure.d.ts +107 -0
  1031. package/dist/types/components/provenance/absence.d.ts +37 -0
  1032. package/dist/types/components/provenance/index.d.ts +7 -0
  1033. package/dist/types/components/provenance/types.d.ts +137 -0
  1034. package/dist/types/components/rbac/AccessRequestPanel.d.ts +92 -0
  1035. package/dist/types/components/rbac/AccountMenu.d.ts +46 -0
  1036. package/dist/types/components/rbac/AgentKeysList.d.ts +20 -0
  1037. package/dist/types/components/rbac/ApiKeysPanel.d.ts +26 -0
  1038. package/dist/types/components/rbac/ApiKeysTable.d.ts +63 -0
  1039. package/dist/types/components/rbac/Brand.d.ts +8 -0
  1040. package/dist/types/components/rbac/Can.d.ts +19 -0
  1041. package/dist/types/components/rbac/ChangePasswordForm.d.ts +18 -0
  1042. package/dist/types/components/rbac/DangerZone.d.ts +8 -0
  1043. package/dist/types/components/rbac/DevToolsPopover.d.ts +36 -0
  1044. package/dist/types/components/rbac/EndedLine.d.ts +21 -0
  1045. package/dist/types/components/rbac/InvitationsList.d.ts +39 -0
  1046. package/dist/types/components/rbac/InviteMembersDialog.d.ts +21 -0
  1047. package/dist/types/components/rbac/MembersPanel.d.ts +31 -0
  1048. package/dist/types/components/rbac/PermissionRequestPanel.d.ts +36 -0
  1049. package/dist/types/components/rbac/ProfileForm.d.ts +27 -0
  1050. package/dist/types/components/rbac/ProfilePage.d.ts +16 -0
  1051. package/dist/types/components/rbac/RBACProvider.d.ts +69 -0
  1052. package/dist/types/components/rbac/RoleEditorDialog.d.ts +28 -0
  1053. package/dist/types/components/rbac/RoleKeyPicker.d.ts +24 -0
  1054. package/dist/types/components/rbac/RolePermissionMatrix.d.ts +21 -0
  1055. package/dist/types/components/rbac/RolesPermissionsPage.d.ts +24 -0
  1056. package/dist/types/components/rbac/SessionsList.d.ts +35 -0
  1057. package/dist/types/components/rbac/TeamSettingsForm.d.ts +22 -0
  1058. package/dist/types/components/rbac/TeamSwitcher.d.ts +5 -0
  1059. package/dist/types/components/rbac/approvalPanelParts.d.ts +69 -0
  1060. package/dist/types/components/rbac/index.d.ts +25 -0
  1061. package/dist/types/components/rbac/permissionSections.d.ts +8 -0
  1062. package/dist/types/components/rbac/stagedForm.d.ts +25 -0
  1063. package/dist/types/components/rbac/types.d.ts +65 -0
  1064. package/dist/types/components/rbac/useStagedImage.d.ts +15 -0
  1065. package/dist/types/components/roadmap/PhaseManager.d.ts +19 -0
  1066. package/dist/types/components/roadmap/RoadmapItemCard.d.ts +51 -0
  1067. package/dist/types/components/roadmap/RoadmapPage.d.ts +12 -0
  1068. package/dist/types/components/roadmap/RoadmapSwimlaneBoard.d.ts +15 -0
  1069. package/dist/types/components/roadmap/TrackManager.d.ts +19 -0
  1070. package/dist/types/components/roadmap/UseCaseCard.d.ts +30 -0
  1071. package/dist/types/components/roadmap/UseCaseLedgerPage.d.ts +29 -0
  1072. package/dist/types/components/roadmap/chip-tones.d.ts +2 -0
  1073. package/dist/types/components/roadmap/derive.d.ts +39 -0
  1074. package/dist/types/components/roadmap/index.d.ts +10 -0
  1075. package/dist/types/components/roadmap/types.d.ts +86 -0
  1076. package/dist/types/components/stepper/Stepper.d.ts +79 -0
  1077. package/dist/types/components/stepper/derive.d.ts +49 -0
  1078. package/dist/types/components/stepper/index.d.ts +3 -0
  1079. package/dist/types/components/stepper/types.d.ts +118 -0
  1080. package/dist/types/icons/data.d.ts +2054 -0
  1081. package/dist/types/index.d.ts +209 -0
  1082. package/dist/types/lib/attention.d.ts +62 -0
  1083. package/dist/types/lib/board/anchor.d.ts +69 -0
  1084. package/dist/types/lib/board/index.d.ts +17 -0
  1085. package/dist/types/lib/board/model.d.ts +43 -0
  1086. package/dist/types/lib/board/move.d.ts +181 -0
  1087. package/dist/types/lib/board/position.d.ts +22 -0
  1088. package/dist/types/lib/board/rejection.d.ts +8 -0
  1089. package/dist/types/lib/board/types.d.ts +294 -0
  1090. package/dist/types/lib/board/use-board.d.ts +47 -0
  1091. package/dist/types/lib/calendar/band-packer.d.ts +53 -0
  1092. package/dist/types/lib/calendar/drag.d.ts +125 -0
  1093. package/dist/types/lib/calendar/index.d.ts +4 -0
  1094. package/dist/types/lib/calendar/lane-packer.d.ts +88 -0
  1095. package/dist/types/lib/calendar/segments.d.ts +91 -0
  1096. package/dist/types/lib/calendar/types.d.ts +166 -0
  1097. package/dist/types/lib/chart-palette.d.ts +14 -0
  1098. package/dist/types/lib/clipboard.d.ts +12 -0
  1099. package/dist/types/lib/cn.d.ts +7 -0
  1100. package/dist/types/lib/color.d.ts +14 -0
  1101. package/dist/types/lib/component-guidance.d.ts +15 -0
  1102. package/dist/types/lib/confidence.d.ts +28 -0
  1103. package/dist/types/lib/date-timeline/scale.d.ts +143 -0
  1104. package/dist/types/lib/design-frame/document.d.ts +39 -0
  1105. package/dist/types/lib/design-frame/mini-app-script.d.ts +29 -0
  1106. package/dist/types/lib/design-frame/mini-app.d.ts +17 -0
  1107. package/dist/types/lib/design-frame/protocol.d.ts +78 -0
  1108. package/dist/types/lib/dev-warn.d.ts +10 -0
  1109. package/dist/types/lib/dnd/announce.d.ts +124 -0
  1110. package/dist/types/lib/dnd/autoscroll.d.ts +88 -0
  1111. package/dist/types/lib/dnd/cross-drop.d.ts +18 -0
  1112. package/dist/types/lib/dnd/geometry.d.ts +126 -0
  1113. package/dist/types/lib/dnd/index.d.ts +17 -0
  1114. package/dist/types/lib/dnd/sensors/gesture.d.ts +37 -0
  1115. package/dist/types/lib/dnd/sensors/keyboard.d.ts +54 -0
  1116. package/dist/types/lib/dnd/sensors/pointer.d.ts +59 -0
  1117. package/dist/types/lib/dnd/session.d.ts +124 -0
  1118. package/dist/types/lib/dnd/types.d.ts +226 -0
  1119. package/dist/types/lib/dnd/use-drag.d.ts +82 -0
  1120. package/dist/types/lib/dom/scroll-ancestor.d.ts +15 -0
  1121. package/dist/types/lib/format.d.ts +33 -0
  1122. package/dist/types/lib/group-in-order.d.ts +13 -0
  1123. package/dist/types/lib/header-fold.d.ts +10 -0
  1124. package/dist/types/lib/i18n/areas/auth-provenance-flows.d.ts +287 -0
  1125. package/dist/types/lib/i18n/areas/board.d.ts +51 -0
  1126. package/dist/types/lib/i18n/areas/card-face.d.ts +8 -0
  1127. package/dist/types/lib/i18n/areas/chat-chart.d.ts +202 -0
  1128. package/dist/types/lib/i18n/areas/code-editor.d.ts +40 -0
  1129. package/dist/types/lib/i18n/areas/date-timeline.d.ts +36 -0
  1130. package/dist/types/lib/i18n/areas/dates.d.ts +103 -0
  1131. package/dist/types/lib/i18n/areas/docs-views.d.ts +297 -0
  1132. package/dist/types/lib/i18n/areas/feedback.d.ts +132 -0
  1133. package/dist/types/lib/i18n/areas/formats.d.ts +30 -0
  1134. package/dist/types/lib/i18n/areas/forms.d.ts +182 -0
  1135. package/dist/types/lib/i18n/areas/keys.d.ts +15 -0
  1136. package/dist/types/lib/i18n/areas/markdown.d.ts +150 -0
  1137. package/dist/types/lib/i18n/areas/move-rejected.d.ts +16 -0
  1138. package/dist/types/lib/i18n/areas/navigation.d.ts +185 -0
  1139. package/dist/types/lib/i18n/areas/rbac.d.ts +633 -0
  1140. package/dist/types/lib/i18n/emphasis.d.ts +3 -0
  1141. package/dist/types/lib/i18n/index.d.ts +10 -0
  1142. package/dist/types/lib/i18n/number-format.d.ts +5 -0
  1143. package/dist/types/lib/i18n/plural.d.ts +7 -0
  1144. package/dist/types/lib/i18n/provider.d.ts +16 -0
  1145. package/dist/types/lib/i18n/strings.d.ts +18 -0
  1146. package/dist/types/lib/icons.d.ts +22 -0
  1147. package/dist/types/lib/interactive-target.d.ts +3 -0
  1148. package/dist/types/lib/intl-cache.d.ts +31 -0
  1149. package/dist/types/lib/legal-document.d.ts +82 -0
  1150. package/dist/types/lib/line-diff-model.d.ts +39 -0
  1151. package/dist/types/lib/markdown/attachments.d.ts +50 -0
  1152. package/dist/types/lib/markdown/caret-map.d.ts +69 -0
  1153. package/dist/types/lib/markdown/caret.d.ts +6 -0
  1154. package/dist/types/lib/markdown/commands.d.ts +186 -0
  1155. package/dist/types/lib/markdown/convert.d.ts +99 -0
  1156. package/dist/types/lib/markdown/dom.d.ts +30 -0
  1157. package/dist/types/lib/markdown/edit.d.ts +16 -0
  1158. package/dist/types/lib/markdown/history.d.ts +59 -0
  1159. package/dist/types/lib/markdown/hotkeys.d.ts +63 -0
  1160. package/dist/types/lib/markdown/image-pipeline.d.ts +173 -0
  1161. package/dist/types/lib/markdown/images.d.ts +138 -0
  1162. package/dist/types/lib/markdown/input.d.ts +38 -0
  1163. package/dist/types/lib/markdown/keys.d.ts +34 -0
  1164. package/dist/types/lib/markdown/paste.d.ts +9 -0
  1165. package/dist/types/lib/markdown/position.d.ts +43 -0
  1166. package/dist/types/lib/markdown/project.d.ts +88 -0
  1167. package/dist/types/lib/markdown/reconcile.d.ts +63 -0
  1168. package/dist/types/lib/markdown/surface.d.ts +236 -0
  1169. package/dist/types/lib/motion.d.ts +30 -0
  1170. package/dist/types/lib/pad.d.ts +6 -0
  1171. package/dist/types/lib/paged-window/index.d.ts +2 -0
  1172. package/dist/types/lib/paged-window/layout.d.ts +21 -0
  1173. package/dist/types/lib/paged-window/list-owner.d.ts +12 -0
  1174. package/dist/types/lib/paged-window/records-binding.d.ts +102 -0
  1175. package/dist/types/lib/paged-window/store.d.ts +307 -0
  1176. package/dist/types/lib/paged-window/use-measured-pitch.d.ts +34 -0
  1177. package/dist/types/lib/paged-window/use-page-visibility.d.ts +20 -0
  1178. package/dist/types/lib/paged-window/use-paged-window.d.ts +61 -0
  1179. package/dist/types/lib/paged-window/use-scroll-root.d.ts +18 -0
  1180. package/dist/types/lib/persist.d.ts +57 -0
  1181. package/dist/types/lib/preference-values.d.ts +72 -0
  1182. package/dist/types/lib/preferences.d.ts +26 -0
  1183. package/dist/types/lib/reads/hooks.d.ts +49 -0
  1184. package/dist/types/lib/reads/index.d.ts +5 -0
  1185. package/dist/types/lib/reads/optimistic.d.ts +119 -0
  1186. package/dist/types/lib/reads/refetch.d.ts +83 -0
  1187. package/dist/types/lib/reads/slots.d.ts +137 -0
  1188. package/dist/types/lib/reads/types.d.ts +155 -0
  1189. package/dist/types/lib/realtime/hooks.d.ts +38 -0
  1190. package/dist/types/lib/realtime/index.d.ts +4 -0
  1191. package/dist/types/lib/realtime/provider.d.ts +38 -0
  1192. package/dist/types/lib/realtime/registry.d.ts +225 -0
  1193. package/dist/types/lib/realtime/types.d.ts +242 -0
  1194. package/dist/types/lib/records/define-record-type.d.ts +29 -0
  1195. package/dist/types/lib/records/hooks.d.ts +46 -0
  1196. package/dist/types/lib/records/index.d.ts +5 -0
  1197. package/dist/types/lib/records/store.d.ts +289 -0
  1198. package/dist/types/lib/records/types.d.ts +195 -0
  1199. package/dist/types/lib/records/wire.d.ts +96 -0
  1200. package/dist/types/lib/reduced-motion-help.d.ts +23 -0
  1201. package/dist/types/lib/scroll-caret.d.ts +6 -0
  1202. package/dist/types/lib/sim/createSimStore.d.ts +18 -0
  1203. package/dist/types/lib/sim/index.d.ts +5 -0
  1204. package/dist/types/lib/sim/latency.d.ts +10 -0
  1205. package/dist/types/lib/sim/registry.d.ts +14 -0
  1206. package/dist/types/lib/sim/settings.d.ts +11 -0
  1207. package/dist/types/lib/sim/types.d.ts +3 -0
  1208. package/dist/types/lib/submit-shortcut.d.ts +24 -0
  1209. package/dist/types/lib/syntax/index.d.ts +16 -0
  1210. package/dist/types/lib/syntax/languages/bash.d.ts +1 -0
  1211. package/dist/types/lib/syntax/languages/css.d.ts +1 -0
  1212. package/dist/types/lib/syntax/languages/html.d.ts +17 -0
  1213. package/dist/types/lib/syntax/languages/index.d.ts +33 -0
  1214. package/dist/types/lib/syntax/languages/javascript.d.ts +22 -0
  1215. package/dist/types/lib/syntax/languages/json.d.ts +1 -0
  1216. package/dist/types/lib/syntax/languages/mongodb.d.ts +1 -0
  1217. package/dist/types/lib/syntax/languages/plain.d.ts +9 -0
  1218. package/dist/types/lib/syntax/languages/sql.d.ts +4 -0
  1219. package/dist/types/lib/syntax/languages/vue.d.ts +1 -0
  1220. package/dist/types/lib/syntax/languages/yaml.d.ts +1 -0
  1221. package/dist/types/lib/syntax/markdown/frames.d.ts +145 -0
  1222. package/dist/types/lib/syntax/markdown/grammar.d.ts +1 -0
  1223. package/dist/types/lib/syntax/markdown/index.d.ts +5 -0
  1224. package/dist/types/lib/syntax/markdown/inline.d.ts +21 -0
  1225. package/dist/types/lib/syntax/markdown/parse.d.ts +15 -0
  1226. package/dist/types/lib/syntax/markdown/refs.d.ts +47 -0
  1227. package/dist/types/lib/syntax/markdown/render.d.ts +25 -0
  1228. package/dist/types/lib/syntax/markdown/spans.d.ts +84 -0
  1229. package/dist/types/lib/syntax/markdown/types.d.ts +108 -0
  1230. package/dist/types/lib/syntax/registry.d.ts +37 -0
  1231. package/dist/types/lib/syntax/tokenize.d.ts +17 -0
  1232. package/dist/types/lib/syntax/types.d.ts +119 -0
  1233. package/dist/types/lib/time/index.d.ts +4 -0
  1234. package/dist/types/lib/time/instant.d.ts +2 -0
  1235. package/dist/types/lib/time/plain.d.ts +61 -0
  1236. package/dist/types/lib/time/relativeAge.d.ts +18 -0
  1237. package/dist/types/lib/time/relativeClock.d.ts +8 -0
  1238. package/dist/types/lib/time/types.d.ts +87 -0
  1239. package/dist/types/lib/time/zone.d.ts +106 -0
  1240. package/dist/types/lib/use-controllable.d.ts +14 -0
  1241. package/dist/types/lib/use-fill-height.d.ts +26 -0
  1242. package/dist/types/lib/use-hydrated.d.ts +8 -0
  1243. package/dist/types/lib/use-media-query.d.ts +29 -0
  1244. package/dist/types/lib/use-relabel-base-ui-dismiss.d.ts +6 -0
  1245. package/dist/types/lib/use-release-snap-drag.d.ts +25 -0
  1246. package/dist/types/lib/use-roving-options.d.ts +10 -0
  1247. package/dist/types/lib/values/absent.d.ts +7 -0
  1248. package/dist/types/lib/values/boolean.d.ts +29 -0
  1249. package/dist/types/lib/values/currency.d.ts +22 -0
  1250. package/dist/types/lib/values/date.d.ts +30 -0
  1251. package/dist/types/lib/values/datetime.d.ts +48 -0
  1252. package/dist/types/lib/values/index.d.ts +5 -0
  1253. package/dist/types/lib/values/locale-date.d.ts +34 -0
  1254. package/dist/types/lib/values/number.d.ts +27 -0
  1255. package/dist/types/pure.d.ts +48 -0
  1256. package/package.json +136 -4
@@ -0,0 +1,184 @@
1
+ import { jsx as i, jsxs as p, Fragment as H } from "react/jsx-runtime";
2
+ import { useRef as c, useEffect as E, useState as U, useId as q } from "react";
3
+ import { cn as P } from "../lib/cn.js";
4
+ import { Markdown as G } from "./Markdown.js";
5
+ import { MarkdownEditor as J } from "./MarkdownEditor.js";
6
+ import { Tooltip as Q } from "./Popover.js";
7
+ import { ReadMore as V } from "./ReadMore.js";
8
+ import { Spinner as X } from "./Spinner.js";
9
+ import { assertActivationPair as Y } from "./edit/activation.js";
10
+ import { OutcomeMessage as Z } from "./edit/outcome.js";
11
+ import { useEditSession as _ } from "./edit/use-edit-session.js";
12
+ import { useUiStrings as M } from "../lib/i18n/provider.js";
13
+ import { chordLabel as $ } from "../lib/i18n/areas/keys.js";
14
+ function ge(e) {
15
+ Y("InlineMarkdownEdit", e.editing, e.onEditingChange);
16
+ const { inlineEdit: a, keyNames: u } = M(), o = a.failure($("ctrl+enter", u)), { editing: t, onEditingChange: r } = e, l = e.readOnly !== void 0, d = c(null), s = _({
17
+ component: "InlineMarkdownEdit",
18
+ value: e.value,
19
+ onCommit: e.onCommit,
20
+ onError: e.onError,
21
+ failureMessage: e.failureMessage ?? o,
22
+ close: () => r(!1),
23
+ refocus: () => d.current?.focus(),
24
+ commitMode: e.commitMode,
25
+ reopen: () => r(!0)
26
+ });
27
+ return E(() => {
28
+ t && l && r(!1);
29
+ }, [t, l, r]), t && !l ? /* @__PURE__ */ i(ee, { ...e, session: s, editorRef: d }) : /* @__PURE__ */ i(O, { ...e });
30
+ }
31
+ function O({
32
+ value: e,
33
+ label: a,
34
+ placeholder: u,
35
+ collapsedLines: o,
36
+ restingFooter: t,
37
+ readOnly: r,
38
+ className: l
39
+ }) {
40
+ const d = M().inlineMarkdownEdit, s = q(), f = e.length === 0 ? /* @__PURE__ */ i("p", { className: "text-sm text-tertiary", children: u ?? d.empty }) : /* @__PURE__ */ i(G, { children: e }), g = /* @__PURE__ */ p(H, { children: [
41
+ f,
42
+ t
43
+ ] }), w = e.length > 0 || t != null, v = /* @__PURE__ */ p(
44
+ "div",
45
+ {
46
+ role: "group",
47
+ "aria-label": a,
48
+ "aria-disabled": r !== void 0 || void 0,
49
+ "aria-describedby": r !== void 0 ? s : void 0,
50
+ "data-slot": "inline-markdown-edit",
51
+ className: P("min-w-0 rounded-lg border border-transparent", l),
52
+ children: [
53
+ o !== void 0 && w ? /* @__PURE__ */ i(V, { lines: o, children: g }) : g,
54
+ r !== void 0 && /* @__PURE__ */ i("span", { id: s, className: "sr-only", children: r.reason })
55
+ ]
56
+ }
57
+ );
58
+ return r === void 0 ? v : /* @__PURE__ */ i(Q, { content: r.reason, children: v });
59
+ }
60
+ function ee({
61
+ value: e,
62
+ onEditingChange: a,
63
+ label: u,
64
+ placeholder: o,
65
+ toolbar: t,
66
+ uploadImage: r,
67
+ uploadFile: l,
68
+ imageTypes: d,
69
+ isFileUrl: s,
70
+ onUploadStateChange: f,
71
+ initialDraft: g,
72
+ onDraftChange: w,
73
+ className: v,
74
+ session: m,
75
+ editorRef: R
76
+ }) {
77
+ const k = M().inlineMarkdownEdit, [C] = U(() => m.restored()), y = C?.text ?? g ?? e, [W, j] = U(y), I = c(y), S = c(w);
78
+ S.current = w;
79
+ const D = c(0), { pending: h, refusal: A, blocked: b } = m, F = c(b);
80
+ F.current = b;
81
+ function N() {
82
+ m.commit(I.current, () => D.current > 0 ? k.unstoredImageRefusal : null);
83
+ }
84
+ const L = c(f);
85
+ L.current = f;
86
+ const T = c(!1);
87
+ function x(n) {
88
+ T.current !== n && (T.current = n, L.current?.(n));
89
+ }
90
+ E(() => () => x(!1), []);
91
+ const B = ne({
92
+ shouldCommit: () => !m.isPending() && F.current === null,
93
+ commit: N
94
+ });
95
+ E(() => {
96
+ m.begin(e, null, C);
97
+ const n = R.current;
98
+ if (!n) throw new Error("InlineMarkdownEdit: the editor was not mounted when the field opened.");
99
+ return n.focus("end"), () => m.end();
100
+ }, []);
101
+ function K(n) {
102
+ I.current = n, j(n), S.current?.(n), m.setRefusal(null), m.clearFailure();
103
+ }
104
+ function z(n) {
105
+ if (!(n.defaultPrevented || h || n.nativeEvent.isComposing) && n.currentTarget.contains(n.target) && n.key === "Escape") {
106
+ n.preventDefault(), a(!1);
107
+ return;
108
+ }
109
+ }
110
+ return /* @__PURE__ */ p(
111
+ "div",
112
+ {
113
+ "data-slot": "inline-markdown-edit",
114
+ "data-editing": "true",
115
+ "aria-busy": h || void 0,
116
+ className: P("relative min-w-0 rounded-lg border", A !== null ? "border-danger" : "border-border-subtle", v),
117
+ onFocus: B.onFocus,
118
+ onBlur: B.onBlur,
119
+ onKeyDown: z,
120
+ children: [
121
+ /* @__PURE__ */ i("div", { inert: h || void 0, children: /* @__PURE__ */ i(
122
+ J,
123
+ {
124
+ ref: R,
125
+ label: u,
126
+ hideLabel: !0,
127
+ value: W,
128
+ onChange: K,
129
+ placeholder: o ?? k.empty,
130
+ toolbar: t,
131
+ minHeight: 0,
132
+ uploadImage: r,
133
+ uploadFile: l,
134
+ imageTypes: d,
135
+ isFileUrl: s,
136
+ onImageUploadStateChange: (n) => {
137
+ D.current = n.unstored, x(n.unstored > 0);
138
+ },
139
+ chrome: "flush",
140
+ submit: { onSubmit: N, label: k.saveAction, disabled: h }
141
+ }
142
+ ) }),
143
+ h && /* @__PURE__ */ i("span", { className: "pointer-events-none absolute top-2 right-2", "data-slot": "inline-markdown-edit-saving", children: /* @__PURE__ */ i(X, { size: "sm" }) }),
144
+ b !== null && /* @__PURE__ */ i(Z, { children: b })
145
+ ]
146
+ }
147
+ );
148
+ }
149
+ function ne({ shouldCommit: e, commit: a }) {
150
+ const u = c(!1), o = c(null), t = c(null), r = c({ shouldCommit: e, commit: a });
151
+ r.current = { shouldCommit: e, commit: a };
152
+ function l() {
153
+ o.current !== null && clearTimeout(o.current), o.current = null, t.current !== null && window.removeEventListener("focus", t.current), t.current = null;
154
+ }
155
+ E(() => l, []);
156
+ function d() {
157
+ o.current !== null && clearTimeout(o.current), o.current = setTimeout(s, 0);
158
+ }
159
+ function s() {
160
+ if (o.current = null, !u.current) {
161
+ if (!document.hasFocus()) {
162
+ if (t.current !== null) return;
163
+ const f = () => {
164
+ window.removeEventListener("focus", f), t.current = null, d();
165
+ };
166
+ t.current = f, window.addEventListener("focus", f);
167
+ return;
168
+ }
169
+ r.current.shouldCommit() && r.current.commit();
170
+ }
171
+ }
172
+ return {
173
+ onFocus() {
174
+ u.current = !0;
175
+ },
176
+ onBlur() {
177
+ u.current = !1, d();
178
+ }
179
+ };
180
+ }
181
+ export {
182
+ ge as InlineMarkdownEdit
183
+ };
184
+ //# sourceMappingURL=InlineMarkdownEdit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InlineMarkdownEdit.js","sources":["../../src/components/InlineMarkdownEdit.tsx"],"sourcesContent":["import { useEffect, useId, useRef, useState, type ReactNode, type RefObject } from \"react\";\nimport { cn } from \"../lib/cn\";\nimport { chordLabel, useUiStrings } from \"../lib/i18n\";\nimport type { ImageUploader } from \"../lib/markdown/image-pipeline\";\nimport { Markdown } from \"./Markdown\";\nimport { MarkdownEditor, type MarkdownEditorHandle } from \"./MarkdownEditor\";\nimport { Tooltip } from \"./Popover\";\nimport { ReadMore } from \"./ReadMore\";\nimport { Spinner } from \"./Spinner\";\nimport { assertActivationPair, type EditActivation } from \"./edit/activation\";\nimport { OutcomeMessage, type EditCommit } from \"./edit/outcome\";\nimport { useEditSession, type CommitMode, type EditSession } from \"./edit/use-edit-session\";\n\n/* ============================================================================\n INLINE MARKDOWN EDIT — markdown, read in place, edited in place. DX-3372.\n\n `InlineEdit`'s markdown sibling, for the danxbot fields that hold a document\n rather than a line (a card's context, a plan record's body, an architecture\n section, a comment). At rest it IS the rendered `Markdown` — optionally\n collapsed in a `ReadMore` — and it becomes the library's own\n `MarkdownEditor`, in the same place, only when its caller says so.\n\n ACTIVATION IS ALWAYS EXTERNAL. Unlike `InlineEdit` there is no self-opening\n mode: rendered markdown holds links, task boxes and code blocks, so a click\n on it already means something, and hijacking that click to open an editor is\n exactly the \"click text and it turns into an input\" pattern the operator\n ruled out (DX-3371). `editing` + `onEditingChange` (`EditActivation`) are\n therefore REQUIRED — the pair `EditGutter` hands out, so the pencil wiring\n is identical for either field.\n\n OPENING MOVES FOCUS INTO THE EDITOR, OR THROWS. `MarkdownEditorHandle.focus`\n throws when focus cannot land, and the field only counts itself \"inside\"\n once a real focus event says so — before DX-3372 review P0 a focus that\n silently missed left an open field that could never blur, so never commit.\n\n COMMIT WHEN FOCUS LEAVES THE WHOLE FIELD — not the editable surface. The\n editor's own toolbar, its line handle and menus, and any popover rendered\n through a portal are all part of the field; focus moving into any of them\n must not commit. A DOM `contains` check cannot see a portal, so this follows\n the REACT tree instead: `onFocus`/`onBlur` bubble through portals to this\n component, a blur only schedules the check, and a focus arriving anywhere\n inside (portal included) before the check runs cancels it. `focusout` fires\n before `focusin` in the same task, so the check is a macrotask, not a\n microtask.\n\n A BLUR WHILE THE WINDOW ITSELF HAS LOST FOCUS IS NOT LEAVING (review H1).\n The OS file picker the Attach file button opens, a tab switch and an app switch\n all blur the editor with no `relatedTarget` while `document.activeElement`\n stays inside. Committing then closed the field under the picker, losing the\n picked file (or saving the text before it). So while `document.hasFocus()`\n is false the check waits, and runs again once the window's `focus` fires —\n by which time focus is back inside (no commit) or somewhere else (commit).\n\n THE SAME OUTCOME CONTRACT AS `InlineEdit`, through the same edit session\n (`edit/use-edit-session.ts`): an unchanged value is not a write;\n `onCommit(next, base)` may return a promise (the field freezes, text intact,\n until it settles), resolve `{ refusal }` to keep the editor open showing the\n caller's reason, or reject to keep it open showing `failureMessage` and\n reporting to `onError`; either way focus returns to the editor. An empty\n refusal reason throws. After a refusal or failure, blur does not re-attempt\n the same text — it would fail identically and the field could never be\n left; the next edit re-arms it, and Ctrl/Cmd+Enter retries explicitly. At\n most one save is out at a time, and a save that settles after its opening\n ended is dropped (see `editing` below).\n\n IMAGES ARE A SAVE GATE (PLN-10 R-1, the consumer obligation\n `MarkdownEditorProps.onImageUploadStateChange` documents): a value still\n holding an image that is not stored anywhere is refused locally rather than\n committed with a `blob:` URL no other reader can load.\n\n NAVIGATION HOLD WHILE AN UPLOAD IS PENDING — DX-3388. The commit-time REFUSAL\n above is not enough on its own: nothing stops the reader navigating AWAY from\n the open field entirely while an image is mid-upload, which drops the draft\n with no refusal ever firing (there is no commit to refuse — the field just\n unmounts). Before this app-side navigation guards (`useNavigationGuard` /\n `useMarkdownImageGate` in the danxbot frontend, DX-3136) held this for the\n library's OWN `MarkdownEditor` via its `onImageUploadStateChange` prop; this\n component wrapped that same editor but never re-exposed the count, so a card's\n title/context/comment fields built on `InlineMarkdownEdit` had no way to arm\n the app's guard at all.\n\n THE DESIGN CHOICE: `onUploadStateChange?: (uploading: boolean) => void`, a\n plain callback, NOT a router hook. A library cannot know which router (or\n whether ANY router) the host app uses — this repo's own demo has none, and\n the danxbot app's `useNavigationGuard` is a hand-rolled click/popstate\n interceptor because `<BrowserRouter>` has no data-router `useBlocker` to hand\n a hook off to (see that file's own header). A callback needs no such\n knowledge: it reports one fact — \"this field currently holds an unstored\n image\" — collapsed from the same per-image counts `unstored > 0` already\n drives for the local commit refusal, and the caller decides what \"hold\n navigation\" means for it. It fires `false` on UNMOUNT too (the field closing\n while an upload is still out, exactly the case that motivated this), so a\n caller wiring it straight into a guard's `blocked` flag can never leave that\n guard armed after the field that armed it is gone.\n\n KEYS. Escape cancels: the draft is dropped, nothing is written, the rendered\n view returns. Ctrl/Cmd+Enter commits. Neither acts during IME composition\n (review M3), nor when the key was pressed inside a portalled layer the field\n owns — Escape in a menu closes the menu, not the edit (review M4).\n ========================================================================= */\n\nexport interface InlineMarkdownEditProps extends EditActivation {\n /** The committed markdown. Controlled — the field only ever holds a draft. */\n value: string;\n /**\n * Commit a new value — the same contract as `InlineEdit.onCommit`: called\n * only when the draft differs from `value`, with `base` = the value editing\n * began from; return/resolve `{ refusal }` to refuse with a reason, throw or\n * reject to report a failed save.\n */\n onCommit: EditCommit;\n /**\n * Whether the editor is open — REQUIRED, see the module comment. The field\n * hands the closed state back through `onEditingChange(false)` once a commit\n * lands, on Escape, and when asked to open while `readOnly`. Setting it\n * `false` yourself drops the draft exactly as Escape does. A save already\n * out when you do cannot be recalled: your `onCommit` promise still settles,\n * but its outcome no longer touches the field — no message, no focus move,\n * no `onEditingChange(false)` — and a commit from the next opening waits for\n * it before starting.\n */\n editing: boolean;\n /**\n * What each opening starts from instead of `value` — a draft the caller kept\n * from an earlier, unfinished edit (DX-5229). `value` stays the committed text\n * and `onCommit`'s `base`, so \"unchanged\" and conflict checks still measure\n * against the record, not the draft. Read once per opening.\n */\n initialDraft?: string;\n /**\n * Fires with the whole draft after each change the reader makes in the open\n * editor (not on opening, not on a commit). It is how a caller keeps an\n * unsent edit somewhere durable; cancelling is the caller's own\n * `onEditingChange(false)`.\n */\n onDraftChange?: (draft: string) => void;\n /** The accessible name of the field and of its editor. */\n label: string;\n /** Shown at rest and in the editor when the value is empty. Omit for the built-in text. */\n placeholder?: string;\n /** Collapse the rendered view to this many lines behind a `ReadMore`. */\n collapsedLines?: number;\n /**\n * Shown at rest after the rendered value, never in the editor. With\n * `collapsedLines` it sits inside the same `ReadMore`, under the fold: a\n * card's description lists its decisions there (DX-6416).\n */\n restingFooter?: ReactNode;\n /** Extra toolbar content for the editor, after its built-in groups. */\n toolbar?: ReactNode;\n /** Stores a pasted/dropped/picked image — see `MarkdownEditorProps.uploadImage`. */\n uploadImage?: ImageUploader;\n /** DXUI-74: stores any other file as a link — see `MarkdownEditorProps.uploadFile`. */\n uploadFile?: ImageUploader;\n /** DXUI-74: the picture types `uploadImage` stores — see `MarkdownEditorProps.imageTypes`. */\n imageTypes?: readonly string[];\n /** DXUI-74: whether a link's destination is a stored file, so it gets a tile — see `MarkdownEditorProps.isFileUrl`. */\n isFileUrl?: (url: string) => boolean;\n /**\n * Fires whenever the open draft's image-upload state changes: `true` while\n * any image in it is uploading, failed, or otherwise unstored; `false` once\n * none are — INCLUDING when the field closes or unmounts with an upload\n * still pending, so a caller wiring this straight into its own navigation\n * guard can never get stuck armed after the field that armed it is gone.\n * See the module comment (\"NAVIGATION HOLD WHILE AN UPLOAD IS PENDING\") for\n * why this is a callback rather than a router hook.\n */\n onUploadStateChange?: (uploading: boolean) => void;\n /**\n * This value cannot be edited at all, AND WHY — `InlineEdit.readOnly`'s\n * shape and rule: asked to open, the field hands `onEditingChange(false)`\n * straight back, and the reason is the rest view's accessible description.\n */\n readOnly?: { reason: string };\n /**\n * What is shown when the commit REJECTS (never a `{ refusal }`, which\n * renders its own text).\n *\n * Omit for the built-in sentence, which names Ctrl+Enter as the retry key.\n */\n failureMessage?: string;\n /** The rejected error, handed on so it can be logged or reported. */\n onError?: (error: unknown) => void;\n /**\n * `\"close\"` closes the field (`onEditingChange(false)`) the moment a commit\n * that returns a promise is sent, instead of freezing it until the promise\n * settles. A refusal or failure that lands afterwards reopens it\n * (`onEditingChange(true)`) with the text that was sent and the message under\n * it, unless the field was opened again meanwhile. Default `\"wait\"`.\n */\n commitMode?: CommitMode;\n className?: string;\n}\n\nexport function InlineMarkdownEdit(props: InlineMarkdownEditProps) {\n assertActivationPair(\"InlineMarkdownEdit\", props.editing, props.onEditingChange);\n /* The one retry sentence both inline editors share; this field commits on Ctrl+Enter. */\n const { inlineEdit, keyNames } = useUiStrings();\n const retryMessage = inlineEdit.failure(chordLabel(\"ctrl+enter\", keyNames));\n const { editing, onEditingChange } = props;\n const unavailable = props.readOnly !== undefined;\n const editorRef = useRef<MarkdownEditorHandle>(null);\n\n /* THE SESSION OUTLIVES EVERY OPENING. The open editor mounts and unmounts\n with each opening, but a save it sent can still be out after it closes —\n so the session (and its record of that save) lives here, where a\n reopening sees it and waits for it. */\n const session = useEditSession({\n component: \"InlineMarkdownEdit\",\n value: props.value,\n onCommit: props.onCommit,\n onError: props.onError,\n failureMessage: props.failureMessage ?? retryMessage,\n close: () => onEditingChange(false),\n refocus: () => editorRef.current?.focus(),\n commitMode: props.commitMode,\n reopen: () => onEditingChange(true),\n });\n\n /* H3 parity: a read-only field asked to open hands the closed state back. */\n useEffect(() => {\n if (editing && unavailable) onEditingChange(false);\n }, [editing, unavailable, onEditingChange]);\n\n if (editing && !unavailable) return <OpenMarkdownEdit {...props} session={session} editorRef={editorRef} />;\n return <RestingMarkdown {...props} />;\n}\n\nfunction RestingMarkdown({\n value,\n label,\n placeholder,\n collapsedLines,\n restingFooter,\n readOnly,\n className,\n}: InlineMarkdownEditProps) {\n const strings = useUiStrings().inlineMarkdownEdit;\n const reasonId = useId();\n const body =\n value.length === 0 ? <p className=\"text-sm text-tertiary\">{placeholder ?? strings.empty}</p> : <Markdown>{value}</Markdown>;\n const rendered = (\n <>\n {body}\n {restingFooter}\n </>\n );\n const foldable = value.length > 0 || restingFooter != null;\n const view = (\n <div\n role=\"group\"\n aria-label={label}\n aria-disabled={readOnly !== undefined || undefined}\n aria-describedby={readOnly !== undefined ? reasonId : undefined}\n data-slot=\"inline-markdown-edit\"\n className={cn(\"min-w-0 rounded-lg border border-transparent\", className)}\n >\n {collapsedLines !== undefined && foldable ? <ReadMore lines={collapsedLines}>{rendered}</ReadMore> : rendered}\n {readOnly !== undefined && (\n <span id={reasonId} className=\"sr-only\">\n {readOnly.reason}\n </span>\n )}\n </div>\n );\n if (readOnly === undefined) return view;\n /* The visual twin of the `sr-only` reason — the same call `InlineEdit` makes. */\n return <Tooltip content={readOnly.reason}>{view}</Tooltip>;\n}\n\n/**\n * The open field. Mounted once per opening, so every opening is one edit\n * session from mount to unmount: `begin` on mount, `end` on unmount.\n */\nfunction OpenMarkdownEdit({\n value,\n onEditingChange,\n label,\n placeholder,\n toolbar,\n uploadImage,\n uploadFile,\n imageTypes,\n isFileUrl,\n onUploadStateChange,\n initialDraft,\n onDraftChange,\n className,\n session,\n editorRef,\n}: InlineMarkdownEditProps & { session: EditSession; editorRef: RefObject<MarkdownEditorHandle | null> }) {\n const strings = useUiStrings().inlineMarkdownEdit;\n /* A save refused after the field closed reopens it with the text it sent. */\n const [restore] = useState(() => session.restored());\n const startDraft = restore?.text ?? initialDraft ?? value;\n const [draft, setDraft] = useState(startDraft);\n const draftRef = useRef(startDraft);\n const onDraftChangeRef = useRef(onDraftChange);\n onDraftChangeRef.current = onDraftChange;\n const unstoredRef = useRef(0);\n const { pending, refusal, blocked } = session;\n const liveBlocked = useRef(blocked);\n liveBlocked.current = blocked;\n\n function commit() {\n session.commit(draftRef.current, () => (unstoredRef.current > 0 ? strings.unstoredImageRefusal : null));\n }\n\n /* DX-3388 — see the module comment (\"NAVIGATION HOLD WHILE AN UPLOAD IS\n PENDING\"). `onUploadStateChangeRef` reads the CURRENT callback rather than\n whatever was in scope when the field opened — the same `latest.current`\n pattern `markdown-image-gate.ts`'s own `guardClose` uses, for the same\n reason: the unmount cleanup below fires from React's teardown, long after\n the render that created it, and must not call a stale closure.\n `reportedUploadingRef` collapses the per-image counts to ONE edge-triggered\n boolean so a caller that turns this straight into `setState` is not\n re-rendered on every unrelated keystroke. */\n const onUploadStateChangeRef = useRef(onUploadStateChange);\n onUploadStateChangeRef.current = onUploadStateChange;\n const reportedUploadingRef = useRef(false);\n\n function reportUploadState(uploading: boolean) {\n if (reportedUploadingRef.current === uploading) return;\n reportedUploadingRef.current = uploading;\n onUploadStateChangeRef.current?.(uploading);\n }\n\n /* The field closing/unmounting with an upload still pending is exactly the\n case this exists for: nothing else will ever report `false` for it once\n the editor is gone. */\n useEffect(() => () => reportUploadState(false), []);\n\n const leave = useLeaveDetection({\n shouldCommit: () => !session.isPending() && liveBlocked.current === null,\n commit,\n });\n\n /* THE START-OF-EDIT SNAPSHOT, and focus into the editor with the caret at\n the end. Runs once per opening (this component mounts once per opening);\n `value` moving underneath an open editor must not reset the draft — that\n is what `base` is for. `focus` throws if it cannot land (review P0). */\n useEffect(() => {\n session.begin(value, null, restore);\n const editor = editorRef.current;\n if (!editor) throw new Error(\"InlineMarkdownEdit: the editor was not mounted when the field opened.\");\n editor.focus(\"end\");\n return () => session.end();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n function handleChange(next: string) {\n draftRef.current = next;\n setDraft(next);\n onDraftChangeRef.current?.(next);\n session.setRefusal(null);\n session.clearFailure();\n }\n\n function handleKeyDown(event: React.KeyboardEvent<HTMLDivElement>) {\n if (event.defaultPrevented || pending || event.nativeEvent.isComposing) return;\n /* A key pressed inside a portalled layer (a menu, a consumer popover)\n bubbles here through React but belongs to that layer (review M4). */\n if (!event.currentTarget.contains(event.target as Node)) return;\n if (event.key === \"Escape\") {\n event.preventDefault();\n onEditingChange(false);\n return;\n }\n }\n\n return (\n <div\n data-slot=\"inline-markdown-edit\"\n data-editing=\"true\"\n aria-busy={pending || undefined}\n /* DX-3374: the border lives HERE now, not on `MarkdownEditor`'s own root\n (`chrome=\"flush\"` below strips that) — the exact geometry `RestingMarkdown`\n draws its own `rounded-lg border` on, so the box the reader sees is the\n SAME box in both states, 1px border reserved at all times, only its\n colour changing (transparent at rest, `border-border-subtle` open,\n `border-danger` refused) — the identical technique `InlineEdit`'s own\n module comment documents for the same reason: a border that appears\n only in one state moves the text by its own width. */\n className={cn(\"relative min-w-0 rounded-lg border\", refusal !== null ? \"border-danger\" : \"border-border-subtle\", className)}\n onFocus={leave.onFocus}\n onBlur={leave.onBlur}\n onKeyDown={handleKeyDown}\n >\n {/* `inert` while a save is out: the draft stays on screen, but no further\n keystroke can land in text that is already on its way to the server. */}\n <div inert={pending || undefined}>\n <MarkdownEditor\n ref={editorRef}\n label={label}\n hideLabel\n value={draft}\n onChange={handleChange}\n placeholder={placeholder ?? strings.empty}\n toolbar={toolbar}\n minHeight={0}\n uploadImage={uploadImage}\n uploadFile={uploadFile}\n imageTypes={imageTypes}\n isFileUrl={isFileUrl}\n onImageUploadStateChange={(state) => {\n unstoredRef.current = state.unstored;\n reportUploadState(state.unstored > 0);\n }}\n /* DX-3374: `flush` — no border/background/padding of its own, the\n toolbar floats outside instead of pushing the text down, and the\n line handle moves into the external gutter. The border above is\n what the reader sees; this component draws none. */\n chrome=\"flush\"\n /* DX-5596: Ctrl/Cmd+Enter saves, through the editor's own submit contract so the hint line names it. */\n submit={{ onSubmit: commit, label: strings.saveAction, disabled: pending }}\n />\n </div>\n {pending && (\n <span className=\"pointer-events-none absolute top-2 right-2\" data-slot=\"inline-markdown-edit-saving\">\n <Spinner size=\"sm\" />\n </span>\n )}\n {blocked !== null && <OutcomeMessage>{blocked}</OutcomeMessage>}\n </div>\n );\n}\n\n/**\n * \"Has focus left the whole field?\" — see the module comment for why this is\n * React-tree focus tracking plus a macrotask, and why a blur while the window\n * is unfocused waits for the window to come back (review H1).\n */\nfunction useLeaveDetection({ shouldCommit, commit }: { shouldCommit: () => boolean; commit: () => void }) {\n const insideRef = useRef(false);\n const checkRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const windowWaitRef = useRef<(() => void) | null>(null);\n /* Read through a ref: the check runs a task after the render that\n scheduled it, and a save or refusal may have landed in between. */\n const latest = useRef({ shouldCommit, commit });\n latest.current = { shouldCommit, commit };\n\n function stopWaiting() {\n if (checkRef.current !== null) clearTimeout(checkRef.current);\n checkRef.current = null;\n if (windowWaitRef.current !== null) window.removeEventListener(\"focus\", windowWaitRef.current);\n windowWaitRef.current = null;\n }\n\n useEffect(() => stopWaiting, []);\n\n function schedule() {\n if (checkRef.current !== null) clearTimeout(checkRef.current);\n checkRef.current = setTimeout(check, 0);\n }\n\n function check() {\n checkRef.current = null;\n if (insideRef.current) return;\n if (!document.hasFocus()) {\n if (windowWaitRef.current !== null) return;\n const onWindowFocus = () => {\n window.removeEventListener(\"focus\", onWindowFocus);\n windowWaitRef.current = null;\n schedule();\n };\n windowWaitRef.current = onWindowFocus;\n window.addEventListener(\"focus\", onWindowFocus);\n return;\n }\n /* BLUR DOES NOT RE-ATTEMPT A VALUE THAT WAS JUST REFUSED OR FAILED, and\n never starts a second save while one is out. */\n if (latest.current.shouldCommit()) latest.current.commit();\n }\n\n return {\n onFocus() {\n insideRef.current = true;\n },\n onBlur() {\n insideRef.current = false;\n schedule();\n },\n };\n}\n"],"names":["InlineMarkdownEdit","props","assertActivationPair","inlineEdit","keyNames","useUiStrings","retryMessage","chordLabel","editing","onEditingChange","unavailable","editorRef","useRef","session","useEditSession","useEffect","OpenMarkdownEdit","jsx","RestingMarkdown","value","label","placeholder","collapsedLines","restingFooter","readOnly","className","strings","reasonId","useId","body","Markdown","rendered","jsxs","Fragment","foldable","view","cn","ReadMore","Tooltip","toolbar","uploadImage","uploadFile","imageTypes","isFileUrl","onUploadStateChange","initialDraft","onDraftChange","restore","useState","startDraft","draft","setDraft","draftRef","onDraftChangeRef","unstoredRef","pending","refusal","blocked","liveBlocked","commit","onUploadStateChangeRef","reportedUploadingRef","reportUploadState","uploading","leave","useLeaveDetection","editor","handleChange","next","handleKeyDown","event","MarkdownEditor","state","Spinner","OutcomeMessage","shouldCommit","insideRef","checkRef","windowWaitRef","latest","stopWaiting","schedule","check","onWindowFocus"],"mappings":"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"}
@@ -0,0 +1,156 @@
1
+ import { jsx as e, jsxs as h } from "react/jsx-runtime";
2
+ import { Input as x } from "@base-ui/react/input";
3
+ import { tv as p } from "tailwind-variants";
4
+ import { cn as u } from "../lib/cn.js";
5
+ import { handleSubmitChord as v, SubmitHint as z } from "../lib/submit-shortcut.js";
6
+ import { Spinner as w } from "./Spinner.js";
7
+ const _ = p({
8
+ base: [
9
+ /* dx-field carries the WebKit search-clear suppression in components.css —
10
+ without it a `type="search"` field with a trailing clear action renders
11
+ two clear buttons side by side. */
12
+ "dx-field w-full min-w-0 font-sans text-primary",
13
+ "border border-field-border bg-field",
14
+ "transition-[var(--tx-colors),box-shadow] duration-(--dur-fast) ease-hover",
15
+ "placeholder:text-field-placeholder",
16
+ "hover:not-disabled:border-field-border-hover hover:not-disabled:bg-field-hover",
17
+ "focus:border-control focus:bg-field focus:shadow-[0_0_0_3px_var(--control-focus-halo)]",
18
+ "focus:outline-none",
19
+ "disabled:cursor-not-allowed disabled:opacity-45",
20
+ /* Invalid is driven by the Field wrapper, so a control never has to be told
21
+ twice and can never disagree with its own error message. */
22
+ "data-invalid:border-danger data-invalid:focus:shadow-[0_0_0_3px_var(--danger-subtle)]",
23
+ "read-only:bg-surface-sunken"
24
+ ],
25
+ variants: {
26
+ size: {
27
+ sm: "h-control-sm rounded-md px-3 text-xs",
28
+ md: "h-control-md rounded-md px-3.5 text-sm",
29
+ lg: "h-control-lg rounded-lg px-4 text-md"
30
+ },
31
+ hasLeading: { true: "", false: "" },
32
+ hasTrailing: { true: "", false: "" }
33
+ },
34
+ compoundVariants: [
35
+ /* Padding is widened per SIZE, not by one shared value: an adornment is
36
+ sized from the icon ramp, so the gap it needs is different at each
37
+ control height. A single number leaves the text either crowded at lg or
38
+ adrift at sm.
39
+
40
+ The `pointer-coarse` pairs keep that promise once the adornment is
41
+ floored to --tap-target: text that stayed at pl-9 would run underneath
42
+ the widened slot. `lg` needs no pair — 3rem is already past the floor. */
43
+ { size: "sm", hasLeading: !0, class: "pl-9 pointer-coarse:pl-(--tap-target)" },
44
+ { size: "md", hasLeading: !0, class: "pl-10 pointer-coarse:pl-(--tap-target)" },
45
+ { size: "lg", hasLeading: !0, class: "pl-12" },
46
+ { size: "sm", hasTrailing: !0, class: "pr-9 pointer-coarse:pr-(--tap-target)" },
47
+ { size: "md", hasTrailing: !0, class: "pr-10 pointer-coarse:pr-(--tap-target)" },
48
+ { size: "lg", hasTrailing: !0, class: "pr-12" }
49
+ ],
50
+ defaultVariants: { size: "md" }
51
+ }), g = p({
52
+ base: [
53
+ /* dx-tap on the SLOT, not just on whatever is dropped into it: a trailing
54
+ clear button is a Button, so it reaches 44px on a coarse pointer from
55
+ --control-* on its own — and then hangs 4px over each side of a 36px
56
+ adornment box. The slot has to grow with it. The matching text padding
57
+ is in the compound variants below. */
58
+ "dx-tap pointer-events-none absolute inset-y-0 grid place-items-center text-tertiary",
59
+ "transition-colors duration-(--dur-fast)",
60
+ /* The adornment tints with the field it belongs to, so focus reads as one
61
+ object lighting up rather than a border and an icon changing separately. */
62
+ "group-focus-within/input:text-control-text",
63
+ "group-has-data-invalid/input:text-danger-text"
64
+ ],
65
+ variants: {
66
+ side: { leading: "left-0", trailing: "right-0" },
67
+ size: {
68
+ sm: "w-9",
69
+ md: "w-10",
70
+ lg: "w-12"
71
+ }
72
+ },
73
+ defaultVariants: { size: "md" }
74
+ });
75
+ function j(a) {
76
+ const {
77
+ className: i,
78
+ size: t = "md",
79
+ leading: s,
80
+ trailing: d,
81
+ loading: r = !1,
82
+ ref: l,
83
+ ...c
84
+ } = a, o = r ? /* @__PURE__ */ e(w, { size: "sm" }) : d, n = !!s, f = !!o, b = "leading" in a || "trailing" in a || r, m = /* @__PURE__ */ e(
85
+ x,
86
+ {
87
+ ref: l,
88
+ className: u(_({ size: t, hasLeading: n, hasTrailing: f }), i),
89
+ ...c
90
+ }
91
+ );
92
+ return b ? /* @__PURE__ */ h("div", { className: "group/input relative flex w-full min-w-0 items-center", children: [
93
+ n && /* @__PURE__ */ e("span", { className: g({ side: "leading", size: t }), children: s }),
94
+ m,
95
+ f && /* Trailing content is often interactive (a clear button, a reveal
96
+ toggle), so pointer events are restored here even though the
97
+ wrapper disables them for the common decorative case. */
98
+ /* @__PURE__ */ e("span", { className: u(g({ side: "trailing", size: t }), "[&>*]:pointer-events-auto"), children: o })
99
+ ] }) : m;
100
+ }
101
+ const y = p({
102
+ base: [
103
+ "w-full min-w-0 font-sans text-primary",
104
+ "border border-field-border bg-field",
105
+ "transition-[var(--tx-colors),box-shadow] duration-(--dur-fast) ease-hover",
106
+ "placeholder:text-field-placeholder",
107
+ "hover:not-disabled:border-field-border-hover hover:not-disabled:bg-field-hover",
108
+ "focus:border-control focus:shadow-[0_0_0_3px_var(--control-focus-halo)] focus:outline-none",
109
+ "disabled:cursor-not-allowed disabled:opacity-45",
110
+ "data-invalid:border-danger data-invalid:focus:shadow-[0_0_0_3px_var(--danger-subtle)]",
111
+ "read-only:bg-surface-sunken"
112
+ ],
113
+ variants: {
114
+ size: {
115
+ sm: "rounded-md px-3 py-2 text-xs",
116
+ md: "rounded-md px-3.5 py-2.5 text-sm",
117
+ lg: "rounded-lg px-4 py-3 text-md"
118
+ },
119
+ /**
120
+ * `auto` uses field-sizing, which grows the box with its content with no
121
+ * JS, no hidden mirror element and no scroll-height measuring — the three
122
+ * things every auto-resize textarea implementation has needed until now.
123
+ * Engines without it simply keep the fixed height and a scrollbar, which
124
+ * is the correct graceful degradation.
125
+ */
126
+ resize: {
127
+ none: "resize-none",
128
+ vertical: "resize-y",
129
+ auto: "resize-none field-sizing-content"
130
+ }
131
+ },
132
+ defaultVariants: { size: "md", resize: "vertical" }
133
+ });
134
+ function k({ className: a, size: i, resize: t, rows: s = 4, ref: d, submit: r, onKeyDown: l, ...c }) {
135
+ const o = /* @__PURE__ */ e(
136
+ x,
137
+ {
138
+ ref: d,
139
+ render: /* @__PURE__ */ e("textarea", { rows: s }),
140
+ className: u(y({ size: i, resize: t }), a),
141
+ ...c,
142
+ onKeyDown: (n) => {
143
+ l?.(n), v(n, r);
144
+ }
145
+ }
146
+ );
147
+ return r ? /* @__PURE__ */ h("div", { className: "flex flex-col gap-1", children: [
148
+ o,
149
+ /* @__PURE__ */ e(z, { submit: r })
150
+ ] }) : o;
151
+ }
152
+ export {
153
+ j as Input,
154
+ k as Textarea
155
+ };
156
+ //# sourceMappingURL=Input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Input.js","sources":["../../src/components/Input.tsx"],"sourcesContent":["import type { KeyboardEvent, ReactNode, Ref, TextareaHTMLAttributes } from \"react\";\r\nimport { Input as BaseInput } from \"@base-ui/react/input\";\r\nimport { tv, type VariantProps } from \"tailwind-variants\";\r\nimport { cn } from \"../lib/cn\";\r\nimport { handleSubmitChord, SubmitHint, type SubmitAction } from \"../lib/submit-shortcut\";\r\nimport { Spinner } from \"./Spinner\";\r\n\r\n/* ----------------------------------------------------------------------------\r\n FOCUS ON A TEXT FIELD IS A RING THAT GROWS, NOT A BORDER THAT CHANGES COLOUR.\r\n\r\n The ring is a `box-shadow` spread rather than an `outline`, for one specific\r\n reason: box-shadow is animatable and respects border-radius on every engine,\r\n while `outline` jumps to its final width instantly. Growing from 0 to 3px\r\n over --dur-fast is what makes focus feel like the field OPENING rather than\r\n like a state flag being set.\r\n\r\n Keyboard focus additionally gets the global `:focus-visible` outline from\r\n index.css on top — this ring is the field's own affordance and applies to\r\n pointer focus too, where an outline would be wrong.\r\n -------------------------------------------------------------------------- */\r\n\r\nconst control = tv({\r\n base: [\r\n /* dx-field carries the WebKit search-clear suppression in components.css —\r\n without it a `type=\"search\"` field with a trailing clear action renders\r\n two clear buttons side by side. */\r\n \"dx-field w-full min-w-0 font-sans text-primary\",\r\n \"border border-field-border bg-field\",\r\n \"transition-[var(--tx-colors),box-shadow] duration-(--dur-fast) ease-hover\",\r\n \"placeholder:text-field-placeholder\",\r\n \"hover:not-disabled:border-field-border-hover hover:not-disabled:bg-field-hover\",\r\n \"focus:border-control focus:bg-field focus:shadow-[0_0_0_3px_var(--control-focus-halo)]\",\r\n \"focus:outline-none\",\r\n \"disabled:cursor-not-allowed disabled:opacity-45\",\r\n /* Invalid is driven by the Field wrapper, so a control never has to be told\r\n twice and can never disagree with its own error message. */\r\n \"data-invalid:border-danger data-invalid:focus:shadow-[0_0_0_3px_var(--danger-subtle)]\",\r\n \"read-only:bg-surface-sunken\",\r\n ],\r\n variants: {\r\n size: {\r\n sm: \"h-control-sm rounded-md px-3 text-xs\",\r\n md: \"h-control-md rounded-md px-3.5 text-sm\",\r\n lg: \"h-control-lg rounded-lg px-4 text-md\",\r\n },\r\n hasLeading: { true: \"\", false: \"\" },\r\n hasTrailing: { true: \"\", false: \"\" },\r\n },\r\n compoundVariants: [\r\n /* Padding is widened per SIZE, not by one shared value: an adornment is\r\n sized from the icon ramp, so the gap it needs is different at each\r\n control height. A single number leaves the text either crowded at lg or\r\n adrift at sm.\r\n\r\n The `pointer-coarse` pairs keep that promise once the adornment is\r\n floored to --tap-target: text that stayed at pl-9 would run underneath\r\n the widened slot. `lg` needs no pair — 3rem is already past the floor. */\r\n { size: \"sm\", hasLeading: true, class: \"pl-9 pointer-coarse:pl-(--tap-target)\" },\r\n { size: \"md\", hasLeading: true, class: \"pl-10 pointer-coarse:pl-(--tap-target)\" },\r\n { size: \"lg\", hasLeading: true, class: \"pl-12\" },\r\n { size: \"sm\", hasTrailing: true, class: \"pr-9 pointer-coarse:pr-(--tap-target)\" },\r\n { size: \"md\", hasTrailing: true, class: \"pr-10 pointer-coarse:pr-(--tap-target)\" },\r\n { size: \"lg\", hasTrailing: true, class: \"pr-12\" },\r\n ],\r\n defaultVariants: { size: \"md\" },\r\n});\r\n\r\nconst adornment = tv({\r\n base: [\r\n /* dx-tap on the SLOT, not just on whatever is dropped into it: a trailing\r\n clear button is a Button, so it reaches 44px on a coarse pointer from\r\n --control-* on its own — and then hangs 4px over each side of a 36px\r\n adornment box. The slot has to grow with it. The matching text padding\r\n is in the compound variants below. */\r\n \"dx-tap pointer-events-none absolute inset-y-0 grid place-items-center text-tertiary\",\r\n \"transition-colors duration-(--dur-fast)\",\r\n /* The adornment tints with the field it belongs to, so focus reads as one\r\n object lighting up rather than a border and an icon changing separately. */\r\n \"group-focus-within/input:text-control-text\",\r\n \"group-has-data-invalid/input:text-danger-text\",\r\n ],\r\n variants: {\r\n side: { leading: \"left-0\", trailing: \"right-0\" },\r\n size: {\r\n sm: \"w-9\",\r\n md: \"w-10\",\r\n lg: \"w-12\",\r\n },\r\n },\r\n defaultVariants: { size: \"md\" },\r\n});\r\n\r\nexport interface InputProps\r\n extends Omit<BaseInput.Props, \"className\" | \"render\" | \"size\">,\r\n VariantProps<typeof control> {\r\n className?: string;\r\n /** Icon or text shown inside the field's leading edge. */\r\n leading?: ReactNode;\r\n /** Icon, unit or action shown inside the field's trailing edge. */\r\n trailing?: ReactNode;\r\n /**\r\n * Replaces the trailing adornment with a spinner — for a field doing its own\r\n * async work (an availability check, a lookup) rather than a form-wide submit.\r\n */\r\n loading?: boolean;\r\n ref?: Ref<HTMLInputElement>;\r\n}\r\n\r\nexport function Input(allProps: InputProps) {\r\n const {\r\n className,\r\n size = \"md\",\r\n leading,\r\n trailing,\r\n loading = false,\r\n ref,\r\n ...props\r\n } = allProps;\r\n const trailingContent = loading ? <Spinner size=\"sm\" /> : trailing;\r\n const hasLeading = Boolean(leading);\r\n const hasTrailing = Boolean(trailingContent);\r\n\r\n /* STRUCTURE FOLLOWS PROP PRESENCE; PADDING FOLLOWS CURRENT VALUE. These look\r\n like the same question and are not, and conflating them cost a real bug.\r\n\r\n This component returns a BARE <input> when unadorned and a WRAPPED one\r\n otherwise. React reconciles by element type at a position, so flipping\r\n between those two shapes unmounts the real <input> and mounts a fresh one\r\n — the DOM node the user is typing into is destroyed, taking focus and the\r\n caret with it.\r\n\r\n That is not hypothetical. A consumer rendering\r\n `trailing={canReveal ? <IconButton/> : undefined}` — a reveal toggle that\r\n appears once there is something to reveal — flips `canReveal` on the FIRST\r\n KEYSTROKE, so the field lost focus on the one keystroke that mattered.\r\n\r\n Keying the wrapper off whether the prop was PASSED, rather than whether it\r\n currently holds a node, makes the shape stable for the whole life of the\r\n component. It has to be `\"trailing\" in allProps` and not\r\n `trailing !== undefined`: destructuring collapses `trailing={undefined}`\r\n and an omitted `trailing` into the same `undefined`, and the conditional\r\n case — the one with the bug — is precisely the one that passes\r\n `undefined`. The first attempt at this fix used `!== undefined` and was a\r\n no-op for the exact case it was written for; the test below is what caught\r\n that. A consumer that never passes an adornment still gets exactly the\r\n bare input it always got — nothing about that path changes. `hasLeading` /\r\n `hasTrailing` keep tracking the current value, because the padding really\r\n should come and go with the icon. */\r\n const adorned = \"leading\" in allProps || \"trailing\" in allProps || loading;\r\n\r\n const input = (\r\n <BaseInput\r\n ref={ref}\r\n className={cn(control({ size, hasLeading, hasTrailing }), className)}\r\n {...props}\r\n />\r\n );\r\n\r\n if (!adorned) return input;\r\n\r\n return (\r\n <div className=\"group/input relative flex w-full min-w-0 items-center\">\r\n {hasLeading && <span className={adornment({ side: \"leading\", size })}>{leading}</span>}\r\n {input}\r\n {hasTrailing && (\r\n /* Trailing content is often interactive (a clear button, a reveal\r\n toggle), so pointer events are restored here even though the\r\n wrapper disables them for the common decorative case. */\r\n <span className={cn(adornment({ side: \"trailing\", size }), \"[&>*]:pointer-events-auto\")}>\r\n {trailingContent}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nconst textarea = tv({\r\n base: [\r\n \"w-full min-w-0 font-sans text-primary\",\r\n \"border border-field-border bg-field\",\r\n \"transition-[var(--tx-colors),box-shadow] duration-(--dur-fast) ease-hover\",\r\n \"placeholder:text-field-placeholder\",\r\n \"hover:not-disabled:border-field-border-hover hover:not-disabled:bg-field-hover\",\r\n \"focus:border-control focus:shadow-[0_0_0_3px_var(--control-focus-halo)] focus:outline-none\",\r\n \"disabled:cursor-not-allowed disabled:opacity-45\",\r\n \"data-invalid:border-danger data-invalid:focus:shadow-[0_0_0_3px_var(--danger-subtle)]\",\r\n \"read-only:bg-surface-sunken\",\r\n ],\r\n variants: {\r\n size: {\r\n sm: \"rounded-md px-3 py-2 text-xs\",\r\n md: \"rounded-md px-3.5 py-2.5 text-sm\",\r\n lg: \"rounded-lg px-4 py-3 text-md\",\r\n },\r\n /**\r\n * `auto` uses field-sizing, which grows the box with its content with no\r\n * JS, no hidden mirror element and no scroll-height measuring — the three\r\n * things every auto-resize textarea implementation has needed until now.\r\n * Engines without it simply keep the fixed height and a scrollbar, which\r\n * is the correct graceful degradation.\r\n */\r\n resize: {\r\n none: \"resize-none\",\r\n vertical: \"resize-y\",\r\n auto: \"resize-none field-sizing-content\",\r\n },\r\n },\r\n defaultVariants: { size: \"md\", resize: \"vertical\" },\r\n});\r\n\r\nexport interface TextareaProps\r\n extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, \"size\">,\r\n VariantProps<typeof textarea> {\r\n ref?: Ref<HTMLTextAreaElement>;\r\n /**\r\n * DX-5596: Ctrl+Enter (Cmd+Enter on a Mac) runs `onSubmit` and a hint line under the box names it\r\n * (\"Ctrl+Enter to post\"). Same contract as `MarkdownEditor`'s `submit`: `disabled` is the caller's\r\n * own can't-submit rule, the chord is swallowed while it is true. Without it the box has no\r\n * submit shortcut and no hint line.\r\n */\r\n submit?: SubmitAction;\r\n}\r\n\r\nexport function Textarea({ className, size, resize, rows = 4, ref, submit, onKeyDown, ...props }: TextareaProps) {\r\n const box = (\r\n <BaseInput\r\n ref={ref as Ref<HTMLInputElement>}\r\n render={<textarea rows={rows} />}\r\n className={cn(textarea({ size, resize }), className)}\r\n {...(props as BaseInput.Props)}\r\n onKeyDown={(event) => {\r\n (onKeyDown as ((e: typeof event) => void) | undefined)?.(event);\r\n handleSubmitChord(event as unknown as KeyboardEvent<HTMLElement>, submit);\r\n }}\r\n />\r\n );\r\n if (!submit) return box;\r\n return (\r\n <div className=\"flex flex-col gap-1\">\r\n {box}\r\n <SubmitHint submit={submit} />\r\n </div>\r\n );\r\n}\r\n"],"names":["control","tv","adornment","Input","allProps","className","size","leading","trailing","loading","ref","props","trailingContent","jsx","Spinner","hasLeading","hasTrailing","adorned","input","BaseInput","cn","jsxs","textarea","Textarea","resize","rows","submit","onKeyDown","box","event","handleSubmitChord","SubmitHint"],"mappings":"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"}
@@ -0,0 +1,155 @@
1
+ import { jsxs as n, jsx as t, Fragment as w } from "react/jsx-runtime";
2
+ import { useMemo as h, useState as y, useEffect as I } from "react";
3
+ import { cn as p } from "../lib/cn.js";
4
+ import { countUnconfirmed as C, legalSectionAnchor as o, splitUnconfirmed as S, isAllCaps as A } from "../lib/legal-document.js";
5
+ import { Callout as $ } from "./Callout.js";
6
+ import { SectionNav as k } from "./SectionNav.js";
7
+ import { useUiStrings as D } from "../lib/i18n/provider.js";
8
+ import { useNumberFormat as E } from "../lib/i18n/number-format.js";
9
+ function u() {
10
+ const e = window.location.hash.slice(1);
11
+ if (e)
12
+ try {
13
+ return decodeURIComponent(e);
14
+ } catch {
15
+ return;
16
+ }
17
+ }
18
+ function T({
19
+ document: e,
20
+ titleAs: r = "h1",
21
+ contentsLabel: a,
22
+ onNavigate: l,
23
+ className: c
24
+ }) {
25
+ const s = D().legalDocument, g = E(), d = h(() => C(e), [e]), [b, f] = B(), v = h(
26
+ () => [
27
+ {
28
+ items: e.sections.map((i) => ({
29
+ id: o(i.number),
30
+ label: `${i.number}. ${i.title}`,
31
+ icon: "file-text",
32
+ href: `#${o(i.number)}`,
33
+ onClick: (N) => {
34
+ const x = o(i.number);
35
+ f(x), l?.(x, N);
36
+ }
37
+ }))
38
+ }
39
+ ],
40
+ [e.sections, l, f]
41
+ );
42
+ return /* @__PURE__ */ n(
43
+ "div",
44
+ {
45
+ "data-legal-document": "",
46
+ className: p("lg:grid lg:grid-cols-[16rem_minmax(0,1fr)] lg:gap-12 xl:grid-cols-[20rem_minmax(0,1fr)]", c),
47
+ children: [
48
+ /* @__PURE__ */ t(
49
+ "div",
50
+ {
51
+ "data-legal-screen-only": "",
52
+ className: "mb-6 lg:sticky lg:top-[var(--legal-document-toc-top,1rem)] lg:mb-0 lg:max-h-[calc(100dvh-var(--legal-document-toc-top,1rem)-1rem)] lg:self-start lg:overflow-y-auto",
53
+ children: /* @__PURE__ */ t(k, { label: a ?? s.contents, sections: v, activeId: b })
54
+ }
55
+ ),
56
+ /* @__PURE__ */ n("div", { className: "min-w-0", children: [
57
+ d > 0 ? /* @__PURE__ */ t("div", { "data-legal-screen-only": "", className: "mb-6 max-w-3xl", children: /* @__PURE__ */ t(
58
+ $,
59
+ {
60
+ tone: "warning",
61
+ title: s.unconfirmedTitle(d, g(d)),
62
+ children: s.unconfirmedBody
63
+ }
64
+ ) }) : null,
65
+ /* @__PURE__ */ n("article", { className: "max-w-3xl text-sm leading-7 text-primary", children: [
66
+ /* @__PURE__ */ n("header", { className: "mb-10 border-b border-border-subtle pb-8", children: [
67
+ /* @__PURE__ */ t(r, { className: "font-display text-2xl font-bold tracking-tight text-primary sm:text-3xl", children: e.title }),
68
+ /* @__PURE__ */ t("p", { className: "mt-2 font-display text-md font-semibold tracking-wide text-secondary", children: e.issuer }),
69
+ /* @__PURE__ */ n("p", { className: "mt-4 text-xs text-tertiary", children: [
70
+ s.effectiveDate,
71
+ " ",
72
+ /* @__PURE__ */ t(m, { text: e.effectiveDate })
73
+ ] }),
74
+ /* @__PURE__ */ n("p", { className: "text-xs text-tertiary", children: [
75
+ s.version,
76
+ " ",
77
+ /* @__PURE__ */ t(m, { text: e.version })
78
+ ] })
79
+ ] }),
80
+ /* @__PURE__ */ t("div", { className: "flex flex-col gap-10", children: e.sections.map((i) => /* @__PURE__ */ t(F, { section: i }, i.number)) })
81
+ ] })
82
+ ] })
83
+ ]
84
+ }
85
+ );
86
+ }
87
+ function F({ section: e }) {
88
+ const r = o(e.number);
89
+ return /* @__PURE__ */ n("section", { id: r, "aria-labelledby": `${r}-heading`, className: "scroll-mt-[var(--legal-document-toc-top,1.5rem)]", children: [
90
+ /* @__PURE__ */ n("h2", { id: `${r}-heading`, className: "mb-4 font-display text-md font-bold tracking-wide text-primary", children: [
91
+ /* @__PURE__ */ n("span", { className: "tabular-nums text-accent-text", children: [
92
+ e.number,
93
+ "."
94
+ ] }),
95
+ " ",
96
+ e.title
97
+ ] }),
98
+ /* @__PURE__ */ t("div", { className: "flex flex-col gap-4", children: e.blocks.map((a, l) => /* @__PURE__ */ t(U, { block: a }, l)) })
99
+ ] });
100
+ }
101
+ function U({ block: e }) {
102
+ return e.kind === "list" ? /* @__PURE__ */ t("ul", { className: "flex list-disc flex-col gap-2 pl-6 marker:text-tertiary", children: e.items.map((r, a) => /* @__PURE__ */ t("li", { className: "pl-1", children: /* @__PURE__ */ t(m, { text: r }) }, a)) }) : /* @__PURE__ */ n(
103
+ "p",
104
+ {
105
+ id: e.clause ? o(e.clause.number) : void 0,
106
+ className: p(
107
+ "scroll-mt-[var(--legal-document-toc-top,1.5rem)]",
108
+ A(e.text) && "border-l-2 border-border-strong pl-4 text-xs leading-6 tracking-[0.02em] text-secondary"
109
+ ),
110
+ children: [
111
+ e.clause ? /* @__PURE__ */ n(w, { children: [
112
+ /* @__PURE__ */ n("strong", { className: "font-semibold text-primary", children: [
113
+ e.clause.number,
114
+ " ",
115
+ e.clause.heading
116
+ ] }),
117
+ " "
118
+ ] }) : null,
119
+ /* @__PURE__ */ t(m, { text: e.text })
120
+ ]
121
+ }
122
+ );
123
+ }
124
+ function m({ text: e }) {
125
+ return S(e).map(
126
+ (r, a) => r.unconfirmed ? /* @__PURE__ */ t(
127
+ "mark",
128
+ {
129
+ "data-unconfirmed": "",
130
+ className: "rounded-sm bg-warning-subtle px-0.5 text-warning-text underline decoration-warning-border decoration-dashed underline-offset-4",
131
+ children: r.text
132
+ },
133
+ a
134
+ ) : r.text
135
+ );
136
+ }
137
+ function B() {
138
+ const e = y(void 0), r = e[1];
139
+ return I(() => {
140
+ r(u());
141
+ const a = requestAnimationFrame(() => {
142
+ const c = u();
143
+ c && window.document.getElementById(c)?.scrollIntoView({ block: "start" });
144
+ }), l = () => {
145
+ r(u());
146
+ };
147
+ return window.addEventListener("hashchange", l), () => {
148
+ cancelAnimationFrame(a), window.removeEventListener("hashchange", l);
149
+ };
150
+ }, [r]), e;
151
+ }
152
+ export {
153
+ T as LegalDocument
154
+ };
155
+ //# sourceMappingURL=LegalDocument.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LegalDocument.js","sources":["../../src/components/LegalDocument.tsx"],"sourcesContent":["import { useEffect, useMemo, useState, type MouseEvent, type ReactNode } from \"react\";\nimport { cn } from \"../lib/cn\";\nimport { useNumberFormat, useUiStrings } from \"../lib/i18n\";\nimport {\n countUnconfirmed,\n isAllCaps,\n legalSectionAnchor,\n splitUnconfirmed,\n type LegalBlock,\n type LegalDocumentValue,\n type LegalSection,\n} from \"../lib/legal-document\";\nimport type { NavSection } from \"./AppShell\";\nimport { Callout } from \"./Callout\";\nimport { SectionNav } from \"./SectionNav\";\n\n/* ============================================================================\n LEGAL DOCUMENT — one version of a legal text, rendered. DX-4022.\n\n THE WORDS COME FROM DATA, THE LOOK COMES FROM HERE. Nothing in this file\n writes a word of the document: every sentence is a string in a\n `LegalDocumentValue`, and this only decides how it sits on the page: run-in\n clause headings, anchors, bullets, a rule beside an all-caps disclaimer, a\n visible flag on each value the draft has not filled in.\n\n ANCHORS ARE KEYED ON THE SECTION NUMBER (`section-7`, `section-7-2`), never\n the title, so a link a lawyer pastes into an email survives a heading being\n reworded in the next version. `legalSectionAnchor` is exported so a consumer\n that cites \"Section 4\" elsewhere links to exactly this id.\n\n THE HEADING LEVELS. Inside an app shell the page's `<h1>` belongs to the\n shell's top bar, and the shell allows exactly one; there `titleAs=\"p\"` sets\n the document's own title line as a paragraph. On a page with no bar the title\n line IS the `<h1>` (the default). Either way each section is an `<h2>`\n directly under it, so no level is skipped.\n\n THE CONTENTS ARE `SectionNav`, so they follow its one-form-at-a-time rule: a\n sticky column from `lg`, one control that opens the list below it. The\n two-column layout switches at that same `lg` for the same reason, so the\n column exists exactly when the list is drawn as one.\n\n PRINTING. `legal-document.css` is keyed on `[data-legal-document]` being on\n the page: when it is, printing outputs the document and nothing around it,\n whatever chrome that is.\n ========================================================================= */\n\nexport interface LegalDocumentProps {\n document: LegalDocumentValue;\n /**\n * The element the title line is. `h1` when the document is the page's own\n * heading, `p` when something else (an app shell's top bar) already owns the\n * page's one `h1`.\n */\n titleAs?: \"h1\" | \"p\";\n /** Names the contents list, and is the collapsed control's text until a section is current. */\n contentsLabel?: string;\n /**\n * Runs when a contents link is clicked, with the section's anchor id and the\n * click. The links are real `<a href=\"#section-N\">`, which a path-based\n * router leaves to the browser. A router that owns the fragment itself (a\n * hash router) suppresses the browser's jump here, as `SectionNav` documents\n * for its own rows, and scrolls the section into view instead.\n */\n onNavigate?: (anchor: string, event: MouseEvent<HTMLAnchorElement>) => void;\n className?: string;\n}\n\n/**\n * The fragment currently in the address bar, as an element id, or `undefined`.\n *\n * A fragment that is not valid percent-encoding (a link cut off mid-escape)\n * names no element, so it reads as no fragment: `decodeURIComponent` would\n * throw on it, and this runs during render.\n */\nfunction readHashId(): string | undefined {\n const raw = window.location.hash.slice(1);\n if (!raw) return undefined;\n try {\n return decodeURIComponent(raw);\n } catch {\n return undefined;\n }\n}\n\nexport function LegalDocument({\n document: legal,\n titleAs: Title = \"h1\",\n contentsLabel,\n onNavigate,\n className,\n}: LegalDocumentProps) {\n const strings = useUiStrings().legalDocument;\n const fmt = useNumberFormat();\n const unconfirmed = useMemo(() => countUnconfirmed(legal), [legal]);\n const [currentId, setCurrentId] = useCurrentSectionId();\n\n const contents: NavSection[] = useMemo(\n () => [\n {\n items: legal.sections.map((section) => ({\n id: legalSectionAnchor(section.number),\n label: `${section.number}. ${section.title}`,\n icon: \"file-text\",\n href: `#${legalSectionAnchor(section.number)}`,\n onClick: (event: MouseEvent<HTMLAnchorElement>) => {\n const anchor = legalSectionAnchor(section.number);\n setCurrentId(anchor);\n onNavigate?.(anchor, event);\n },\n })),\n },\n ],\n [legal.sections, onNavigate, setCurrentId],\n );\n\n return (\n <div\n data-legal-document=\"\"\n className={cn(\"lg:grid lg:grid-cols-[16rem_minmax(0,1fr)] lg:gap-12 xl:grid-cols-[20rem_minmax(0,1fr)]\", className)}\n >\n <div\n data-legal-screen-only=\"\"\n className=\"mb-6 lg:sticky lg:top-[var(--legal-document-toc-top,1rem)] lg:mb-0 lg:max-h-[calc(100dvh-var(--legal-document-toc-top,1rem)-1rem)] lg:self-start lg:overflow-y-auto\"\n >\n <SectionNav label={contentsLabel ?? strings.contents} sections={contents} activeId={currentId} />\n </div>\n\n <div className=\"min-w-0\">\n {unconfirmed > 0 ? (\n <div data-legal-screen-only=\"\" className=\"mb-6 max-w-3xl\">\n <Callout\n tone=\"warning\"\n title={strings.unconfirmedTitle(unconfirmed, fmt(unconfirmed))}\n >\n {strings.unconfirmedBody}\n </Callout>\n </div>\n ) : null}\n\n <article className=\"max-w-3xl text-sm leading-7 text-primary\">\n <header className=\"mb-10 border-b border-border-subtle pb-8\">\n <Title className=\"font-display text-2xl font-bold tracking-tight text-primary sm:text-3xl\">\n {legal.title}\n </Title>\n <p className=\"mt-2 font-display text-md font-semibold tracking-wide text-secondary\">{legal.issuer}</p>\n <p className=\"mt-4 text-xs text-tertiary\">\n {strings.effectiveDate} <Prose text={legal.effectiveDate} />\n </p>\n <p className=\"text-xs text-tertiary\">\n {strings.version} <Prose text={legal.version} />\n </p>\n </header>\n\n <div className=\"flex flex-col gap-10\">\n {legal.sections.map((section) => (\n <Section key={section.number} section={section} />\n ))}\n </div>\n </article>\n </div>\n </div>\n );\n}\n\nfunction Section({ section }: { section: LegalSection }) {\n const anchor = legalSectionAnchor(section.number);\n return (\n <section id={anchor} aria-labelledby={`${anchor}-heading`} className=\"scroll-mt-[var(--legal-document-toc-top,1.5rem)]\">\n <h2 id={`${anchor}-heading`} className=\"mb-4 font-display text-md font-bold tracking-wide text-primary\">\n <span className=\"tabular-nums text-accent-text\">{section.number}.</span> {section.title}\n </h2>\n <div className=\"flex flex-col gap-4\">\n {section.blocks.map((block, index) => (\n <Block key={index} block={block} />\n ))}\n </div>\n </section>\n );\n}\n\nfunction Block({ block }: { block: LegalBlock }) {\n if (block.kind === \"list\") {\n return (\n <ul className=\"flex list-disc flex-col gap-2 pl-6 marker:text-tertiary\">\n {block.items.map((item, index) => (\n <li key={index} className=\"pl-1\">\n <Prose text={item} />\n </li>\n ))}\n </ul>\n );\n }\n\n return (\n <p\n id={block.clause ? legalSectionAnchor(block.clause.number) : undefined}\n className={cn(\n \"scroll-mt-[var(--legal-document-toc-top,1.5rem)]\",\n isAllCaps(block.text) &&\n \"border-l-2 border-border-strong pl-4 text-xs leading-6 tracking-[0.02em] text-secondary\",\n )}\n >\n {block.clause ? (\n <>\n <strong className=\"font-semibold text-primary\">\n {block.clause.number} {block.clause.heading}\n </strong>{\" \"}\n </>\n ) : null}\n <Prose text={block.text} />\n </p>\n );\n}\n\n/** Text, with each unfilled bracketed value marked so it cannot pass for an agreed term. */\nfunction Prose({ text }: { text: string }): ReactNode {\n return splitUnconfirmed(text).map((run, index) =>\n run.unconfirmed ? (\n <mark\n key={index}\n data-unconfirmed=\"\"\n className=\"rounded-sm bg-warning-subtle px-0.5 text-warning-text underline decoration-warning-border decoration-dashed underline-offset-4\"\n >\n {run.text}\n </mark>\n ) : (\n run.text\n ),\n );\n}\n\n/**\n * The section the contents mark as current: the id in the address bar's\n * fragment, scrolled to on arrival, and kept in step as it changes.\n *\n * The browser's own fragment scroll runs at load, before this has rendered the\n * element the fragment names, so a shared deep link would otherwise open at the\n * top. A later in-page jump needs no help: the contents are real\n * `<a href=\"#...\">` links, so the browser scrolls the right box itself and\n * fires `hashchange`, which only moves the contents' current-section marker.\n * The arrival scroll is deferred a frame so a layout that resets its scroller\n * on mount cannot undo it.\n */\nfunction useCurrentSectionId() {\n /* DX-5411: NO fragment on the first render. A server has no address bar, and a hydrating client must draw what the server\n drew, so the fragment is read in the effect, after hydration, like every other browser-only read here. */\n const state = useState<string | undefined>(undefined);\n const setId = state[1];\n\n useEffect(() => {\n setId(readHashId());\n const frame = requestAnimationFrame(() => {\n const target = readHashId();\n if (target) window.document.getElementById(target)?.scrollIntoView({ block: \"start\" });\n });\n const onHashChange = () => {\n setId(readHashId());\n };\n window.addEventListener(\"hashchange\", onHashChange);\n return () => {\n cancelAnimationFrame(frame);\n window.removeEventListener(\"hashchange\", onHashChange);\n };\n }, [setId]);\n\n return state;\n}\n"],"names":["readHashId","raw","LegalDocument","legal","Title","contentsLabel","onNavigate","className","strings","useUiStrings","fmt","useNumberFormat","unconfirmed","useMemo","countUnconfirmed","currentId","setCurrentId","useCurrentSectionId","contents","section","legalSectionAnchor","event","anchor","jsxs","cn","jsx","SectionNav","Callout","Prose","Section","block","index","Block","item","isAllCaps","Fragment","text","splitUnconfirmed","run","state","useState","setId","useEffect","frame","target","onHashChange"],"mappings":"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"}