@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 @@
1
+ {"version":3,"file":"SortMenu.js","sources":["../../src/components/SortMenu.tsx"],"sourcesContent":["import { useId } from \"react\";\nimport { cn } from \"../lib/cn\";\nimport { useUiStrings } from \"../lib/i18n\";\nimport type { ButtonProps } from \"./Button\";\nimport { Icon, type IconName } from \"./Icon\";\nimport { IconButton } from \"./IconButton\";\nimport { Popover, PopoverClose } from \"./Popover\";\n\n/* ============================================================================\n SORT MENU — the one control for ordering a list: every field it can be\n ordered by, each with its own up and down arrow, in a popover.\n\n WHY A COMPONENT AND NOT A `Menu` OF RADIO ITEMS. A radio list can offer one\n order per row, so a list sortable by three fields in both directions becomes\n six rows (\"Name, A-Z\", \"Name, Z-A\", ...) the person has to read to find the\n field they mean, and a list that grows a field grows two rows. Here a row is\n a FIELD, and the direction is a second, separate choice on the same row —\n two arrow buttons, the pressed one being the active order. The person who\n knows what they want to sort by never reads a direction word; the one who\n does not sees every field once.\n\n THE TRIGGER IS ICON-ONLY (DX-4378, DX-4615). The closed control is an\n `IconButton` drawing the arrow of the CURRENT direction (up for ascending,\n down for descending), preceded by the sorted field's own icon when its\n option carries one: no field name, no chevron. The field and the\n direction, in the field's own words (\"Sort plans: Created, Newest first\"),\n are its accessible name and its tooltip, which is the non-enterable label\n `IconButton` always gives. A text trigger (\"↓ Created\" + chevron) spent a\n row's width on a word the list already implies and was not what was asked\n for; the icon and arrow answer \"what, which way?\" at a glance and the\n tooltip spells it out on hover or focus. There is no text variant. The\n trigger's resting look is one of two, `triggerVariant` \"outline\" (default)\n or \"ghost\" (borderless, for a header of bare icons).\n\n STRUCTURE ONLY. This knows nothing of any list: `SortOption` is a plain\n `{value, label}` and the caller maps `{field, direction}` to whatever its\n data layer accepts. Choosing an arrow picks field AND direction in one click\n and closes the popover; picking the active order again closes it unchanged.\n ========================================================================== */\n\nexport type SortDirection = \"asc\" | \"desc\";\n\nexport interface SortOption<Field extends string = string> {\n value: Field;\n /** The field as a person names it (\"Name\", \"Created\"). */\n label: string;\n /**\n * What each direction means for THIS field, in the words that fit it\n * (\"A to Z\" / \"Z to A\", \"Oldest first\" / \"Newest first\"). Absent, the\n * directions read the built-in \"Ascending\" / \"Descending\" words of the active `UiLocaleProvider`. It names the arrows to\n * assistive technology and appears in their tooltips, so a person is never\n * left decoding which way an arrow sorts a date.\n */\n directions?: { asc: string; desc: string };\n /**\n * A registered icon for the field (DX-4615). When the sorted field carries one, the closed control draws it before the\n * direction's arrow (\"what\" then \"which way\"), and the popover draws it beside the field's label. A list whose options\n * carry none renders exactly as it did; give every option an icon or none, so the rows and the trigger stay one shape.\n */\n icon?: IconName;\n}\n\nexport interface SortValue<Field extends string = string> {\n field: Field;\n direction: SortDirection;\n}\n\nexport interface SortMenuProps<Field extends string = string> {\n options: readonly SortOption<Field>[];\n value: SortValue<Field>;\n onValueChange: (value: SortValue<Field>) => void;\n /** Names the control for assistive technology, e.g. \"Sort plans\". The active order is appended to it. */\n \"aria-label\": string;\n size?: ButtonProps[\"size\"];\n /**\n * The trigger's resting look (DX-4615). `outline` (default) draws the bordered button; `ghost` draws the bare arrow, for a\n * header that already holds other borderless icons (a board lane's title row). Same arrow, same tooltip, same popover.\n */\n triggerVariant?: \"outline\" | \"ghost\";\n align?: \"start\" | \"center\" | \"end\";\n className?: string;\n}\n\nfunction directionLabel(option: SortOption, direction: SortDirection, defaults: { asc: string; desc: string }): string {\n return (option.directions ?? defaults)[direction];\n}\n\nexport function SortMenu<Field extends string = string>({\n options,\n value,\n onValueChange,\n \"aria-label\": ariaLabel,\n size = \"sm\",\n triggerVariant = \"outline\",\n align = \"end\",\n className,\n}: SortMenuProps<Field>) {\n const strings = useUiStrings().sortMenu;\n const nameId = useId();\n const current = options.find((option) => option.value === value.field);\n if (current === undefined) {\n throw new Error(\n `SortMenu: no option carries the sorted field ${JSON.stringify(value.field)}. ` +\n `The control would name an order that is not on offer; pass an option for the field the list is actually sorted by.`,\n );\n }\n const currentDirection = directionLabel(current, value.direction, strings.directions);\n\n return (\n <Popover\n align={align}\n aria-labelledby={nameId}\n width=\"calc(16rem*var(--ui-scale))\"\n trigger={\n <IconButton\n icon={\n <>\n {current.icon !== undefined && <Icon name={current.icon} size=\"sm\" />}\n <Icon name={value.direction === \"asc\" ? \"arrow-up\" : \"arrow-down\"} size=\"sm\" />\n </>\n }\n label={strings.currentOrder(ariaLabel, current.label, currentDirection)}\n variant={triggerVariant}\n size={size}\n className={cn(current.icon !== undefined && \"aspect-auto w-auto gap-0.5 px-1.5\", className)}\n />\n }\n >\n <div className=\"flex w-full min-w-0 flex-col gap-0.5\">\n <span id={nameId} className=\"px-1.5 pb-1 text-2xs font-medium uppercase tracking-wide text-tertiary\">\n {ariaLabel}\n </span>\n {options.map((option) => (\n <div key={option.value} className=\"flex items-center justify-between gap-2 rounded-md px-1.5 py-0.5\">\n <span className={cn(\"flex min-w-0 items-center gap-1.5 text-sm\", option.value === value.field ? \"font-medium text-primary\" : \"text-secondary\")}>\n {option.icon !== undefined && <Icon name={option.icon} size=\"sm\" />}\n <span className=\"min-w-0 truncate\">{option.label}</span>\n </span>\n <span className=\"flex shrink-0 items-center gap-0.5\">\n {([\"asc\", \"desc\"] as const).map((direction) => {\n const active = option.value === value.field && direction === value.direction;\n const words = directionLabel(option, direction, strings.directions);\n return (\n <PopoverClose key={direction}>\n <IconButton\n icon={<Icon name={direction === \"asc\" ? \"arrow-up\" : \"arrow-down\"} size=\"xs\" />}\n label={strings.optionDirection(option.label, words)}\n variant={active ? \"subtle\" : \"ghost\"}\n size=\"xs\"\n aria-pressed={active}\n onClick={() => onValueChange({ field: option.value, direction })}\n />\n </PopoverClose>\n );\n })}\n </span>\n </div>\n ))}\n </div>\n </Popover>\n );\n}\n"],"names":["directionLabel","option","direction","defaults","SortMenu","options","value","onValueChange","ariaLabel","size","triggerVariant","align","className","strings","useUiStrings","nameId","useId","current","currentDirection","jsx","Popover","IconButton","jsxs","Fragment","Icon","cn","active","words","PopoverClose"],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import { jsxs as a, jsx as i } from "react/jsx-runtime";
2
+ import { cn as t } from "../lib/cn.js";
3
+ const l = {
4
+ xs: "var(--icon-xs)",
5
+ sm: "var(--icon-sm)",
6
+ md: "var(--icon-md)",
7
+ lg: "var(--icon-lg)",
8
+ xl: "var(--icon-xl)"
9
+ };
10
+ function x({ size: n = "md", label: r, className: o, style: e, ref: s, ...c }) {
11
+ return /* @__PURE__ */ a(
12
+ "svg",
13
+ {
14
+ ref: s,
15
+ viewBox: "0 0 24 24",
16
+ fill: "none",
17
+ className: t("dx-icon shrink-0 animate-spin", o),
18
+ style: { "--dx-icon-size": l[n], ...e },
19
+ ...r ? { role: "status", "aria-label": r } : { "aria-hidden": !0 },
20
+ ...c,
21
+ children: [
22
+ /* @__PURE__ */ i("circle", { cx: "12", cy: "12", r: "9", stroke: "currentColor", strokeWidth: "2.5", opacity: "0.18" }),
23
+ /* @__PURE__ */ i(
24
+ "circle",
25
+ {
26
+ cx: "12",
27
+ cy: "12",
28
+ r: "9",
29
+ stroke: "currentColor",
30
+ strokeWidth: "2.5",
31
+ strokeLinecap: "round",
32
+ className: "[animation:var(--animate-spinner-dash)]"
33
+ }
34
+ )
35
+ ]
36
+ }
37
+ );
38
+ }
39
+ export {
40
+ x as Spinner
41
+ };
42
+ //# sourceMappingURL=Spinner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Spinner.js","sources":["../../src/components/Spinner.tsx"],"sourcesContent":["import type { CSSProperties, Ref, SVGProps } from \"react\";\nimport { cn } from \"../lib/cn\";\nimport type { IconSize } from \"./Icon\";\n\nexport interface SpinnerProps extends Omit<SVGProps<SVGSVGElement>, \"ref\"> {\n size?: IconSize;\n /**\n * An accessible name. Omitted by default because a spinner is almost always\n * inside something that already announces its own busy state — a button with\n * `aria-busy`, or a region with `aria-live`. Announcing \"Loading\" a second\n * time from the spinner itself is noise, not help.\n */\n label?: string;\n ref?: Ref<SVGSVGElement>;\n}\n\nconst SIZE_VAR: Record<IconSize, string> = {\n xs: \"var(--icon-xs)\",\n sm: \"var(--icon-sm)\",\n md: \"var(--icon-md)\",\n lg: \"var(--icon-lg)\",\n xl: \"var(--icon-xl)\",\n};\n\n/**\n * An indeterminate spinner built from TWO nested rates: the whole SVG rotates\n * at a constant speed while the visible arc grows and shrinks underneath it.\n *\n * That combination is what separates a spinner that reads as alive from one\n * that reads as mechanical. A single constant rotation has one frequency, and\n * the eye locks onto it within a second — which is precisely when a spinner\n * starts feeling like the app has hung. The second rate keeps the motion from\n * ever repeating exactly where the eye expects it.\n *\n * Both animations are transform / stroke-dash on a ~20px element, so the cost\n * is inside the paint budget even though `stroke-dasharray` is a paint\n * property: the rule is animated AREA x FREQUENCY, and this loops forever but\n * over almost no area.\n */\nexport function Spinner({ size = \"md\", label, className, style, ref, ...props }: SpinnerProps) {\n return (\n <svg\n ref={ref}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n className={cn(\"dx-icon shrink-0 animate-spin\", className)}\n style={{ \"--dx-icon-size\": SIZE_VAR[size], ...style } as CSSProperties}\n {...(label ? { role: \"status\", \"aria-label\": label } : { \"aria-hidden\": true })}\n {...props}\n >\n {/* The track. Faint rather than absent, so the spinner keeps a stable\n silhouette instead of appearing to change size as the arc travels. */}\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" strokeWidth=\"2.5\" opacity=\"0.18\" />\n <circle\n cx=\"12\"\n cy=\"12\"\n r=\"9\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n className=\"[animation:var(--animate-spinner-dash)]\"\n />\n </svg>\n );\n}\n"],"names":["SIZE_VAR","Spinner","size","label","className","style","ref","props","jsxs","cn","jsx"],"mappings":";;AAgBA,MAAMA,IAAqC;AAAA,EACzC,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAiBO,SAASC,EAAQ,EAAE,MAAAC,IAAO,MAAM,OAAAC,GAAO,WAAAC,GAAW,OAAAC,GAAO,KAAAC,GAAK,GAAGC,KAAuB;AAC7F,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAF;AAAA,MACA,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,WAAWG,EAAG,iCAAiCL,CAAS;AAAA,MACxD,OAAO,EAAE,kBAAkBJ,EAASE,CAAI,GAAG,GAAGG,EAAA;AAAA,MAC7C,GAAIF,IAAQ,EAAE,MAAM,UAAU,cAAcA,EAAA,IAAU,EAAE,eAAe,GAAA;AAAA,MACvE,GAAGI;AAAA,MAIJ,UAAA;AAAA,QAAA,gBAAAG,EAAC,UAAA,EAAO,IAAG,MAAK,IAAG,MAAK,GAAE,KAAI,QAAO,gBAAe,aAAY,OAAM,SAAQ,QAAO;AAAA,QACrF,gBAAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,IAAG;AAAA,YACH,IAAG;AAAA,YACH,GAAE;AAAA,YACF,QAAO;AAAA,YACP,aAAY;AAAA,YACZ,eAAc;AAAA,YACd,WAAU;AAAA,UAAA;AAAA,QAAA;AAAA,MACZ;AAAA,IAAA;AAAA,EAAA;AAGN;"}
@@ -0,0 +1,148 @@
1
+ import { jsxs as l, jsx as a } from "react/jsx-runtime";
2
+ import { tv as h } from "tailwind-variants";
3
+ import { cn as p } from "../lib/cn.js";
4
+ import { Icon as b } from "./Icon.js";
5
+ const g = "max-w-[var(--stat-measure,var(--stat-measure-default))]", y = h({
6
+ slots: {
7
+ /* The outer box carries the size's default measure, so both prose slots
8
+ inherit it — and a consumer's `className` lands here too, which is where
9
+ a per-instance `[--stat-measure:…]` belongs. */
10
+ box: "flex items-start justify-between gap-4",
11
+ root: "flex min-w-0 flex-col gap-1",
12
+ label: `text-2xs font-semibold tracking-widest text-tertiary uppercase ${g}`,
13
+ value: "font-display font-bold tabular-nums text-primary",
14
+ unit: "font-sans text-sm font-medium text-tertiary",
15
+ delta: "inline-flex items-center gap-1 text-xs font-semibold tabular-nums",
16
+ hint: `text-2xs text-tertiary text-pretty ${g}`
17
+ },
18
+ variants: {
19
+ size: {
20
+ /* THE ROW SIZE — five across a 722px header column. 7rem is the measured
21
+ one: 836.51px across two rows becomes 672px across one, five 112px
22
+ stats plus four 28px gaps. Not less, either: "Declinations" is one
23
+ unbreakable word 106px wide, and a budget under that leaves a label
24
+ overflowing its own box with nothing to break at. */
25
+ xs: { box: "[--stat-measure-default:calc(var(--spacing)*28)]", value: "text-base" },
26
+ sm: { box: "[--stat-measure-default:calc(var(--spacing)*36)]", value: "text-xl" },
27
+ md: { box: "[--stat-measure-default:calc(var(--spacing)*44)]", value: "text-3xl" },
28
+ /* The hero. One or two of these own a band, so the measure is the widest
29
+ on the ladder — still narrow enough to bind on a long label. */
30
+ lg: { box: "[--stat-measure-default:calc(var(--spacing)*52)]", value: "text-4xl" }
31
+ }
32
+ },
33
+ defaultVariants: { size: "md" }
34
+ }), w = {
35
+ positive: "text-success",
36
+ negative: "text-danger",
37
+ neutral: "text-tertiary"
38
+ }, N = { up: "trending-up", down: "trending-down", flat: "arrow-right" };
39
+ function k({
40
+ label: e,
41
+ value: r,
42
+ unit: i,
43
+ delta: s,
44
+ trend: o,
45
+ sentiment: c = "neutral",
46
+ hint: n,
47
+ visual: x,
48
+ size: m,
49
+ className: u,
50
+ ref: d
51
+ }) {
52
+ const t = y({ size: m });
53
+ return /* @__PURE__ */ l("div", { ref: d, className: p(t.box(), u), children: [
54
+ /* @__PURE__ */ l("div", { className: t.root(), children: [
55
+ /* @__PURE__ */ a("span", { className: t.label(), children: e }),
56
+ /* @__PURE__ */ l("span", { className: "flex items-baseline gap-1.5", children: [
57
+ /* @__PURE__ */ a("span", { className: t.value(), children: r }),
58
+ i && /* @__PURE__ */ a("span", { className: t.unit(), children: i })
59
+ ] }),
60
+ (s || n) && /* @__PURE__ */ l("span", { className: "flex flex-wrap items-center gap-2", children: [
61
+ s && /* @__PURE__ */ l("span", { className: p(t.delta(), w[c]), children: [
62
+ o && /* @__PURE__ */ a(b, { name: N[o], size: "xs" }),
63
+ s
64
+ ] }),
65
+ n && /* @__PURE__ */ a("span", { className: t.hint(), children: n })
66
+ ] })
67
+ ] }),
68
+ x
69
+ ] });
70
+ }
71
+ const j = h({
72
+ base: "flex flex-wrap",
73
+ variants: {
74
+ /* GAPS RIDE THE SIZE, because a fixed gap reads as crowded beside a `lg`
75
+ figure and as a chasm beside an `xs` one. The column gap is roughly a
76
+ quarter of the measure at each step, which is what keeps the boundary
77
+ between two stats unambiguous once labels wrap onto two lines. */
78
+ size: {
79
+ xs: "gap-x-7 gap-y-3",
80
+ sm: "gap-x-8 gap-y-4",
81
+ md: "gap-x-10 gap-y-5",
82
+ lg: "gap-x-12 gap-y-6"
83
+ },
84
+ align: {
85
+ start: "justify-start",
86
+ end: "justify-end",
87
+ between: "justify-between"
88
+ }
89
+ },
90
+ defaultVariants: { size: "md", align: "start" }
91
+ });
92
+ function M({ stats: e, size: r = "md", align: i = "start", className: s, ref: o }) {
93
+ return e.length === 0 ? null : /* @__PURE__ */ a("div", { ref: o, className: p(j({ size: r, align: i }), s), children: e.map((c, n) => (
94
+ /* INDEX IS THE KEY DELIBERATELY. A readout is a fixed, hand-authored
95
+ list per screen — never reordered, never filtered — so there is no
96
+ identity for a key to preserve. Keying on the label would read better
97
+ and would break the first time two stats legitimately share one. */
98
+ /* @__PURE__ */ a(k, { size: r, ...c }, n)
99
+ )) });
100
+ }
101
+ const E = {
102
+ positive: "text-success",
103
+ negative: "text-danger",
104
+ neutral: "text-accent"
105
+ };
106
+ function z({ values: e, sentiment: r = "neutral", className: i }) {
107
+ if (e.length < 2) return null;
108
+ const s = Math.min(...e), c = Math.max(...e) - s || 1, n = 100 / (e.length - 1), x = e.map((t, f) => [f * n, 30 - (t - s) / c * 26 - 2]), m = x.map(([t, f], v) => `${v ? "L" : "M"}${t.toFixed(2)} ${f.toFixed(2)}`).join(" "), [u, d] = x[x.length - 1];
109
+ return /* @__PURE__ */ l(
110
+ "svg",
111
+ {
112
+ viewBox: "0 0 100 30",
113
+ preserveAspectRatio: "none",
114
+ "aria-hidden": !0,
115
+ className: p("h-10 w-24 shrink-0 overflow-visible", E[r], i),
116
+ children: [
117
+ /* @__PURE__ */ a(
118
+ "path",
119
+ {
120
+ d: `${m} L100 30 L0 30 Z`,
121
+ fill: "currentColor",
122
+ opacity: "0.12",
123
+ stroke: "none"
124
+ }
125
+ ),
126
+ /* @__PURE__ */ a(
127
+ "path",
128
+ {
129
+ d: m,
130
+ fill: "none",
131
+ stroke: "currentColor",
132
+ strokeWidth: "1.75",
133
+ strokeLinecap: "round",
134
+ strokeLinejoin: "round",
135
+ vectorEffect: "non-scaling-stroke"
136
+ }
137
+ ),
138
+ /* @__PURE__ */ a("circle", { cx: u, cy: d, r: "2.5", fill: "currentColor", vectorEffect: "non-scaling-stroke" })
139
+ ]
140
+ }
141
+ );
142
+ }
143
+ export {
144
+ z as Sparkline,
145
+ k as Stat,
146
+ M as StatRow
147
+ };
148
+ //# sourceMappingURL=Stat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Stat.js","sources":["../../src/components/Stat.tsx"],"sourcesContent":["import type { ReactNode, Ref } from \"react\";\nimport { tv, type VariantProps } from \"tailwind-variants\";\nimport { cn } from \"../lib/cn\";\nimport { Icon } from \"./Icon\";\n\n/* ----------------------------------------------------------------------------\n STAT — a single number, given the room to be read at a glance.\n\n TABULAR FIGURES ARE NOT OPTIONAL. A row of stats that updates live will\n visibly jitter as proportional digits change width — 1 is much narrower than\n 8 in most faces — and the jitter is far more distracting than the number is\n informative.\n\n DIRECTION IS NOT SENTIMENT. \"Up\" is good for throughput and bad for error\n rate, so the arrow and the colour are separate props. Tying them together is\n how dashboards end up showing a cheerful green arrow next to a rising\n failure count.\n -------------------------------------------------------------------------- */\n\n/* ----------------------------------------------------------------------------\n THE PROSE BUDGET — `--stat-measure`, and why it is a custom property.\n\n THE DEFECT IT CLOSES, at EVERY size. A flex item's preferred size is its\n max-content width, and in a wrapping row the browser only shrinks an item\n that cannot fit a line by itself — so a stat claims its longest unbroken line\n of prose. That line is the LABEL, or the HINT where the hint is longer.\n Neither is `nowrap`; they are simply never given a reason to break.\n\n MEASURED on the case that reported it: five stats in a 722px page-header\n column needed 836.51px and wrapped four-then-one. The FIGURES were 15 to 30px\n wide; the LABELS were 133 to 158px. A smaller number moved the total by\n single digits, which is why \"use a smaller size\" is not the fix and never was.\n\n 2.9.0 put a 7rem budget on `xs` alone, reasoning that `sm`/`md`/`lg` were\n already placed and should not move. That was the wrong branch: those three\n have the identical defect and were waiting for a consumer with a long label.\n Every size now has one.\n\n THE LADDER IS NOT A FORMULA, and pretending otherwise would be worse than\n saying so. The label and hint are `text-2xs` at every size — the same type —\n so nothing about the prose itself derives a per-size number. What the size\n ramp expresses is how much of a row this stat is meant to own: `xs` is the\n row size, five across a header column; `lg` is a hero, one or two across. The\n budget follows that, +2rem a step from the 7rem that was measured, and each\n step was verified to bind on a long label rather than assumed to:\n\n xs 28 7rem 112px sm 36 9rem 144px\n md 44 11rem 176px lg 52 13rem 208px\n\n WHAT IT MAKES A STAT'S WIDTH, exactly, because it is not what it looks like.\n A capped line still STRETCHES to its budget, so a stat whose prose is longer\n than the budget is exactly the budget wide — not the width of its widest\n wrapped line. That is the useful behaviour rather than a side effect: every\n over-long stat in a row lands on the same width, and a label gaining a word\n stops shoving its neighbours along. Shorter prose still takes only what it\n needs.\n\n A CUSTOM PROPERTY RATHER THAN FOUR `max-w-*` VARIANTS, for two reasons.\n\n It is a knob a consumer can legitimately need: a readout in a full-width\n panel has room for a wider measure than one in a header column, and\n `className=\"[--stat-measure:16rem]\"` says so in one place instead of\n reaching past the component into a slot it does not expose.\n\n And `[--stat-measure:none]` turns the fix OFF, which is what makes the\n defect measurable. `probe-stat-row.mjs` renders an unbudgeted row every run\n and asserts it does NOT fit — so the probe proves it can still see the bug it\n was written for, rather than remembering that it could.\n\n TWO PROPERTIES, NOT ONE, and the second is what makes the first work. The\n per-size value is set ON THE STAT, so an override set on an ANCESTOR — a\n `StatRow`, a panel — would be overwritten by the stat's own declaration the\n moment it inherited past it. So the size writes `--stat-measure-default` and\n the prose reads `var(--stat-measure, var(--stat-measure-default))`: the\n public knob is consulted first and can be set at any depth, while the size\n still supplies the value when nobody has.\n\n `var(--spacing)` and not a literal `7rem`: the size control multiplies the\n spacing scale, and a budget in fixed rem would stop tracking it. Where\n `--spacing` is undefined the whole `max-width` is invalid and drops to\n `none`, which is exactly the pre-2.9.0 behaviour — a degradation, not a break.\n\n NOT ON THE ROOT COLUMN, and not on the outer box. A cap on the column would\n also cap the FIGURE, which must never wrap and which `tabular-nums` exists to\n keep still. A cap on the outer box would squeeze a `visual` — a sparkline is\n 6rem on its own — into the same budget as the text beside it. It goes on the\n two prose slots, which are the only two lines that can usefully break.\n -------------------------------------------------------------------------- */\nconst MEASURE = \"max-w-[var(--stat-measure,var(--stat-measure-default))]\";\n\nconst stat = tv({\n slots: {\n /* The outer box carries the size's default measure, so both prose slots\n inherit it — and a consumer's `className` lands here too, which is where\n a per-instance `[--stat-measure:…]` belongs. */\n box: \"flex items-start justify-between gap-4\",\n root: \"flex min-w-0 flex-col gap-1\",\n label: `text-2xs font-semibold tracking-widest text-tertiary uppercase ${MEASURE}`,\n value: \"font-display font-bold tabular-nums text-primary\",\n unit: \"font-sans text-sm font-medium text-tertiary\",\n delta: \"inline-flex items-center gap-1 text-xs font-semibold tabular-nums\",\n hint: `text-2xs text-tertiary text-pretty ${MEASURE}`,\n },\n variants: {\n size: {\n /* THE ROW SIZE — five across a 722px header column. 7rem is the measured\n one: 836.51px across two rows becomes 672px across one, five 112px\n stats plus four 28px gaps. Not less, either: \"Declinations\" is one\n unbreakable word 106px wide, and a budget under that leaves a label\n overflowing its own box with nothing to break at. */\n xs: { box: \"[--stat-measure-default:calc(var(--spacing)*28)]\", value: \"text-base\" },\n sm: { box: \"[--stat-measure-default:calc(var(--spacing)*36)]\", value: \"text-xl\" },\n md: { box: \"[--stat-measure-default:calc(var(--spacing)*44)]\", value: \"text-3xl\" },\n /* The hero. One or two of these own a band, so the measure is the widest\n on the ladder — still narrow enough to bind on a long label. */\n lg: { box: \"[--stat-measure-default:calc(var(--spacing)*52)]\", value: \"text-4xl\" },\n },\n },\n defaultVariants: { size: \"md\" },\n});\n\nexport type StatSize = NonNullable<VariantProps<typeof stat>[\"size\"]>;\n\nexport type StatTrend = \"up\" | \"down\" | \"flat\";\n/** Whether this movement is good news, bad news, or neither. */\nexport type StatSentiment = \"positive\" | \"negative\" | \"neutral\";\n\nconst SENTIMENT: Record<StatSentiment, string> = {\n positive: \"text-success\",\n negative: \"text-danger\",\n neutral: \"text-tertiary\",\n};\n\nconst TREND_ICON = { up: \"trending-up\", down: \"trending-down\", flat: \"arrow-right\" } as const;\n\nexport interface StatProps extends VariantProps<typeof stat> {\n label: ReactNode;\n value: ReactNode;\n /** Rendered smaller, beside the value — \"ms\", \"/min\", \"GB\". */\n unit?: ReactNode;\n /** The change itself — \"12%\", \"+1.2K\". */\n delta?: ReactNode;\n trend?: StatTrend;\n /** Whether that movement is good. Independent of direction, on purpose. */\n sentiment?: StatSentiment;\n hint?: ReactNode;\n /** A sparkline, ring, or icon shown alongside. */\n visual?: ReactNode;\n className?: string;\n ref?: Ref<HTMLDivElement>;\n}\n\nexport function Stat({\n label,\n value,\n unit,\n delta,\n trend,\n sentiment = \"neutral\",\n hint,\n visual,\n size,\n className,\n ref,\n}: StatProps) {\n const s = stat({ size });\n\n return (\n <div ref={ref} className={cn(s.box(), className)}>\n <div className={s.root()}>\n <span className={s.label()}>{label}</span>\n <span className=\"flex items-baseline gap-1.5\">\n <span className={s.value()}>{value}</span>\n {unit && <span className={s.unit()}>{unit}</span>}\n </span>\n {(delta || hint) && (\n <span className=\"flex flex-wrap items-center gap-2\">\n {delta && (\n <span className={cn(s.delta(), SENTIMENT[sentiment])}>\n {trend && <Icon name={TREND_ICON[trend]} size=\"xs\" />}\n {delta}\n </span>\n )}\n {hint && <span className={s.hint()}>{hint}</span>}\n </span>\n )}\n </div>\n {visual}\n </div>\n );\n}\n\n/* ----------------------------------------------------------------------------\n STAT ROW — the layout algorithm for a SET of stats, which used to live in\n every consumer.\n\n WHY IT SHIPS. Every application that shows more than one stat hand-writes the\n same wrapper: `flex flex-wrap gap-x-7 gap-y-3`, sometimes with an alignment,\n sometimes as a grid instead. Eight screens of one consuming app each wrote\n their own before a ninth pulled them into a local `PageHeader` — and that\n local component then carried the reasoning for the whole layout, including\n the part that is not the consumer's business. A row of stats has a right\n answer and the library owns the pieces; owning the arrangement too is what\n stops nine screens drifting into nine arrangements.\n\n FLEX, NEVER GRID, and this is the part most consumers get wrong. A grid gives\n every stat an equal share of the row whether it needs one or not — so four\n numbers on a wide screen become four enormous columns, and the count of rows\n in a screen gets the visual weight of the screen's title. A wrapping flex row\n lets each stat take the width of its own content, bounded by the prose budget\n above. That is why `Stat` needed the budget before this could exist: without\n it, \"the width of its own content\" is the width of its longest sentence.\n\n THE STATS ARE DATA, not children. A caller handed `ReactNode` can pass a\n `Stat` at any size, or a `div`, and the row is back to being a convention\n with a component around it. `stats` plus one `size` is the whole API, and it\n is also what makes `size` a property of the ROW — five stats at four sizes is\n not a readout, it is a mistake, and there is now no way to write it.\n\n ALIGNMENT CARRIES NO BREAKPOINT. `align=\"end\"` is `justify-end` and nothing\n more. The row cannot know that its container stacks at some width, and a\n library that guesses a breakpoint into an alignment prop is a library that is\n wrong on every consumer whose layout breaks somewhere else. A consumer that\n wants \"end once there is room\" passes `className=\"md:justify-end\"`, which is\n one utility and says exactly what it means.\n -------------------------------------------------------------------------- */\n\nconst statRow = tv({\n base: \"flex flex-wrap\",\n variants: {\n /* GAPS RIDE THE SIZE, because a fixed gap reads as crowded beside a `lg`\n figure and as a chasm beside an `xs` one. The column gap is roughly a\n quarter of the measure at each step, which is what keeps the boundary\n between two stats unambiguous once labels wrap onto two lines. */\n size: {\n xs: \"gap-x-7 gap-y-3\",\n sm: \"gap-x-8 gap-y-4\",\n md: \"gap-x-10 gap-y-5\",\n lg: \"gap-x-12 gap-y-6\",\n },\n align: {\n start: \"justify-start\",\n end: \"justify-end\",\n between: \"justify-between\",\n },\n },\n defaultVariants: { size: \"md\", align: \"start\" },\n});\n\nexport interface StatRowProps {\n /**\n * The readout, as DATA. Every entry is the props of one `Stat`; `size` is the\n * row's, not each stat's, so they cannot disagree.\n */\n stats: readonly Omit<StatProps, \"size\">[];\n size?: StatSize;\n /** Which edge the row settles against when it has spare width. */\n align?: \"start\" | \"end\" | \"between\";\n className?: string;\n ref?: Ref<HTMLDivElement>;\n}\n\nexport function StatRow({ stats, size = \"md\", align = \"start\", className, ref }: StatRowProps) {\n if (stats.length === 0) return null;\n\n return (\n <div ref={ref} className={cn(statRow({ size, align }), className)}>\n {stats.map((props, i) => (\n /* INDEX IS THE KEY DELIBERATELY. A readout is a fixed, hand-authored\n list per screen — never reordered, never filtered — so there is no\n identity for a key to preserve. Keying on the label would read better\n and would break the first time two stats legitimately share one. */\n <Stat key={i} size={size} {...props} />\n ))}\n </div>\n );\n}\n\nexport interface SparklineProps {\n values: number[];\n /** Matches the stat's sentiment, so the line agrees with the delta beside it. */\n sentiment?: StatSentiment;\n className?: string;\n}\n\nconst SPARK_STROKE: Record<StatSentiment, string> = {\n positive: \"text-success\",\n negative: \"text-danger\",\n neutral: \"text-accent\",\n};\n\n/**\n * A bare trend line — no axes, no grid, no labels.\n *\n * A sparkline answers \"which way, and how steadily\", not \"what value\". Adding\n * axes makes it a bad chart instead of a good sparkline, and at this size the\n * ink spent on them is ink taken from the only thing being communicated.\n *\n * The last point is marked, because \"where it ended up\" is the one specific\n * value anyone reads off a shape this small.\n */\nexport function Sparkline({ values, sentiment = \"neutral\", className }: SparklineProps) {\n if (values.length < 2) return null;\n\n const min = Math.min(...values);\n const max = Math.max(...values);\n /* A flat series would divide by zero; drawing it down the middle is the\n honest rendering of \"no change\". */\n const span = max - min || 1;\n const step = 100 / (values.length - 1);\n\n const points = values.map((v, i) => [i * step, 30 - ((v - min) / span) * 26 - 2] as const);\n const path = points.map(([x, y], i) => `${i ? \"L\" : \"M\"}${x.toFixed(2)} ${y.toFixed(2)}`).join(\" \");\n const [lastX, lastY] = points[points.length - 1];\n\n return (\n <svg\n viewBox=\"0 0 100 30\"\n preserveAspectRatio=\"none\"\n aria-hidden\n className={cn(\"h-10 w-24 shrink-0 overflow-visible\", SPARK_STROKE[sentiment], className)}\n >\n {/* A faint fill under the line gives the shape weight without competing\n with it — at this size a fill alone would read as a blob. */}\n <path\n d={`${path} L100 30 L0 30 Z`}\n fill=\"currentColor\"\n opacity=\"0.12\"\n stroke=\"none\"\n />\n <path\n d={path}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.75\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n vectorEffect=\"non-scaling-stroke\"\n />\n <circle cx={lastX} cy={lastY} r=\"2.5\" fill=\"currentColor\" vectorEffect=\"non-scaling-stroke\" />\n </svg>\n );\n}\n"],"names":["MEASURE","stat","tv","SENTIMENT","TREND_ICON","Stat","label","value","unit","delta","trend","sentiment","hint","visual","size","className","ref","s","jsxs","cn","jsx","Icon","statRow","StatRow","stats","align","props","i","SPARK_STROKE","Sparkline","values","min","span","step","points","v","path","x","y","lastX","lastY"],"mappings":"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"}
@@ -0,0 +1,119 @@
1
+ import { jsx as a, jsxs as d } from "react/jsx-runtime";
2
+ import { useId as N, useState as k } from "react";
3
+ import { Badge as P } from "./Badge.js";
4
+ import { Icon as E } from "./Icon.js";
5
+ import { Popover as O, PopoverClose as j } from "./Popover.js";
6
+ import { cn as l } from "../lib/cn.js";
7
+ import { devWarn as C } from "../lib/dev-warn.js";
8
+ import { useUiStrings as A } from "../lib/i18n/provider.js";
9
+ const T = { sm: "text-xs", md: "text-sm", lg: "text-base" };
10
+ function u({ option: t, size: o, id: c, children: r }) {
11
+ return t?.plain ? /* @__PURE__ */ a("span", { id: c, className: l("text-muted-text", T[o]), children: t.label }) : /* @__PURE__ */ a(P, { id: c, size: o, tone: t?.tone ?? "neutral", color: t?.color, dot: t?.dot, pulse: t?.pulse, icon: t?.icon, children: r ?? t?.label });
12
+ }
13
+ function D({
14
+ value: t,
15
+ options: o,
16
+ onValueChange: c,
17
+ size: r = "sm",
18
+ "aria-label": f,
19
+ disabled: h = !1,
20
+ busy: s = !1,
21
+ readOnly: I = !1,
22
+ changeIcon: m = !1,
23
+ placeholder: p,
24
+ className: v
25
+ }) {
26
+ const x = A().statusSelect, i = o.find((e) => e.value === t), _ = N(), b = N(), [g, w] = k(!1);
27
+ s && g && w(!1);
28
+ for (const e of o) {
29
+ if (e.plain && (e.tone !== void 0 || e.color !== void 0 || e.icon !== void 0 || e.dot))
30
+ throw new Error(`StatusSelect: option "${e.value}" is plain but also carries a tone, color, icon or dot. Plain is text only.`);
31
+ if (e.tone !== void 0 && e.color !== void 0)
32
+ throw new Error(`StatusSelect: option "${e.value}" carries both a tone and a color. Pass one.`);
33
+ if (e.refusal === "")
34
+ throw new Error(
35
+ `StatusSelect: option "${e.value}" refuses with an empty reason. A reason nobody can read leaves a dead row with nothing beside it — omit \`refusal\` to allow the option, or say why it cannot be chosen.`
36
+ );
37
+ }
38
+ return i === void 0 && C(
39
+ "StatusSelect",
40
+ `no option carries ${JSON.stringify(t)} — the trigger is showing the placeholder rather than painting the raw value into the interface. Either the value is stale, or \`options\` is missing a status the record can actually hold; a status the consumer does not assign belongs in the list with a \`refusal\`, not out of it.`
41
+ ), I ? /* @__PURE__ */ a("span", { role: "group", className: l("inline-flex", v), "aria-label": f, children: /* @__PURE__ */ a(u, { option: i, size: r, children: i === void 0 ? p ?? x.unknown : void 0 }) }) : /* @__PURE__ */ a(
42
+ O,
43
+ {
44
+ open: g && !s,
45
+ onOpenChange: (e) => !s && w(e),
46
+ align: "start",
47
+ width: "calc(15rem*var(--ui-scale))",
48
+ trigger: /* @__PURE__ */ d(
49
+ "button",
50
+ {
51
+ type: "button",
52
+ disabled: h,
53
+ "aria-label": f,
54
+ "aria-describedby": b,
55
+ "aria-disabled": s || void 0,
56
+ "aria-busy": s || void 0,
57
+ className: l(
58
+ s && "cursor-wait opacity-50",
59
+ "dx-tap group/status inline-flex items-center gap-1 rounded-full outline-none",
60
+ "transition-[var(--tx-colors),box-shadow,opacity] duration-(--dur-fast) ease-hover",
61
+ /* DX-5143: a busy trigger is aria-disabled, not natively disabled, so it must also be excluded here or it undims under the pointer. */
62
+ "hover:not-disabled:not-aria-busy:opacity-85",
63
+ "focus-visible:shadow-[0_0_0_3px_var(--control-focus-halo)]",
64
+ "disabled:cursor-not-allowed disabled:opacity-50",
65
+ v
66
+ ),
67
+ children: [
68
+ /* @__PURE__ */ a(u, { option: i, size: r, id: b, children: i === void 0 ? p ?? x.unknown : void 0 }),
69
+ !h && /* @__PURE__ */ a(
70
+ E,
71
+ {
72
+ name: m ? "pencil" : "chevron-down",
73
+ size: r === "lg" ? "sm" : "xs",
74
+ className: l("text-tertiary transition-[var(--tx-colors),transform] duration-(--dur-fast)", !m && "group-data-popup-open/status:rotate-180")
75
+ }
76
+ )
77
+ ]
78
+ }
79
+ ),
80
+ children: /* @__PURE__ */ a("div", { className: "flex w-full min-w-0 flex-col gap-0.5", children: o.map((e, $) => {
81
+ const n = e.refusal !== void 0, y = `${_}-${$}`, S = /* @__PURE__ */ d(
82
+ "button",
83
+ {
84
+ type: "button",
85
+ onClick: n ? void 0 : () => c(e.value),
86
+ "aria-label": e.label,
87
+ "aria-current": e.value === t ? "true" : void 0,
88
+ "aria-disabled": n || void 0,
89
+ "aria-describedby": n ? y : void 0,
90
+ className: l(
91
+ "dx-tap flex items-center justify-between gap-2 rounded-md px-1.5 py-1.5",
92
+ "text-left outline-none transition-[var(--tx-colors)] duration-(--dur-instant)",
93
+ "focus-visible:bg-surface-hover",
94
+ n ? (
95
+ /* Dimmed by LUMINANCE, and a cursor the pointer actually
96
+ reaches — same treatment `IconButton` gives a refusing
97
+ control, and for the same reason: it must not look
98
+ armed, but it must still be askable. */
99
+ "cursor-not-allowed opacity-60"
100
+ ) : "hover:bg-surface-hover"
101
+ ),
102
+ children: [
103
+ /* @__PURE__ */ d("span", { className: "flex min-w-0 flex-col items-start gap-1", children: [
104
+ /* @__PURE__ */ a(u, { option: e, size: r }),
105
+ n && /* @__PURE__ */ a("span", { id: y, className: "text-2xs leading-snug text-tertiary", children: e.refusal })
106
+ ] }),
107
+ e.value === t && /* @__PURE__ */ a(E, { name: "check", size: "xs", className: "shrink-0 text-success" })
108
+ ]
109
+ }
110
+ );
111
+ return n ? /* @__PURE__ */ a("div", { children: S }, e.value) : /* @__PURE__ */ a(j, { children: S }, e.value);
112
+ }) })
113
+ }
114
+ );
115
+ }
116
+ export {
117
+ D as StatusSelect
118
+ };
119
+ //# sourceMappingURL=StatusSelect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatusSelect.js","sources":["../../src/components/StatusSelect.tsx"],"sourcesContent":["import { useId, useState, type ReactNode } from \"react\";\nimport { Badge, type BadgeProps } from \"./Badge\";\nimport { Icon } from \"./Icon\";\nimport { Popover, PopoverClose } from \"./Popover\";\nimport { cn } from \"../lib/cn\";\nimport { useUiStrings } from \"../lib/i18n\";\nimport { devWarn } from \"../lib/dev-warn\";\n\n/* ============================================================================\n STATUS SELECT — a status picker whose TRIGGER is the colored Badge itself,\n not a boxed input field with the badge trapped inside it. Opens a Popover\n listing every option the same way — each one its own full Badge, not a row\n of plain text — so picking a status is a visual scan, not a read.\n\n STRUCTURE ONLY. This has no idea what a \"status\" is — `StatusOption` is a\n plain `{value, label, tone, icon?, dot?, pulse?}`, the same arm's-length\n relationship `Badge` already has with its own `tone` prop. A consumer's\n fixed status enum (this library's own `UseCaseStatus`, or a future\n vertical's order-fulfillment states) supplies the concrete options; this\n component only ever renders whatever list it's handed.\n\n WHY A POPOVER OF BUTTONS, NOT `<Select>`. `<Select>` already exists and\n already supports custom content per item — but its trigger is a bordered\n field box (`border border-field-border bg-field ...`) that any child sits\n INSIDE, so a Badge placed in it still reads as \"a dropdown containing a\n badge,\" not \"a badge that happens to be clickable.\" Personality here means\n the colored pill IS the control — no separate box drawn around it — which\n is a Popover of plain buttons, the same primitive `AccountMenu`'s \"Switch\n team\" rows already use.\n\n NOT EVERY STATUS IS ASSIGNABLE, AND THE LIST MUST STILL CARRY ALL OF THEM.\n A consumer whose pipeline enters three of its six stages by itself had no\n way to say so: passing the three assignable ones painted the raw value into\n the trigger for a record sitting in any of the others, and passing all six\n made three lanes look choosable until the click. `StatusOption.refusal` is\n `KanbanLane.refusal` per option — the reason is on screen before anyone\n tries, and the row never accepts. Pass EVERY status the record can hold and\n refuse the ones the consumer does not assign by hand.\n ========================================================================= */\n\nexport interface StatusOption<Value extends string = string> {\n value: Value;\n label: string;\n /** One of the fixed tones. Absent when `color` or `plain` draws the option instead. */\n tone?: BadgeProps[\"tone\"];\n /**\n * DX-5143 - a CSS colour the option's Badge is drawn in, for a colour the consuming app lets a person choose (a board list's\n * colour) and so cannot be one of the fixed tones. See `Badge`'s `color`. Not with `tone`.\n */\n color?: string;\n /**\n * DX-5143 - the option is \"nothing chosen\" (Not mapped, None): drawn as plain muted text, with no pill, in the trigger, the\n * popover row and the read-only form alike. Not with `tone`, `color`, `icon` or `dot`.\n */\n plain?: boolean;\n /** Rendered inside the Badge via its own `icon` slot — pass an `<Icon>`. */\n icon?: ReactNode;\n dot?: boolean;\n /** Reserved for a genuinely live state — see `Badge`'s own `pulse` doc. */\n pulse?: boolean;\n /**\n * Why this status cannot be chosen HERE. Absent means it can.\n *\n * The option is still listed, still carries its own tone and label, and is\n * still what the trigger shows when the record is sitting in it — it simply\n * never accepts. That is the difference between a status the consumer does\n * not assign and a status the consumer does not have, and only one of them\n * belongs out of the list.\n *\n * Written for the person who would have picked it — \"the pipeline enters\n * this stage on its own\", not \"not allowed\". It is rendered under the badge\n * rather than only dimming the row, and attached to the row as its\n * description, so the refusal is never mute. Same call `IconButton`'s\n * `disabledReason` makes, and it is `aria-disabled` there for the same\n * reason: a natively disabled control cannot be reached to be asked why.\n *\n * AN EMPTY STRING THROWS, matching `Step.blocked` rather than\n * `KanbanLane.refusal`. There the reason is supporting detail on a lane that\n * is already visibly refusing; here the sentence IS the mechanism, and an\n * empty one produces exactly the dead row with nothing beside it that this\n * prop exists to prevent.\n */\n refusal?: string;\n}\n\nexport interface StatusSelectProps<Value extends string = string> {\n value: Value;\n options: StatusOption<Value>[];\n onValueChange: (value: Value) => void;\n /**\n * The same three steps `Badge` has, because the trigger IS a Badge.\n *\n * It stopped at `md` for no reason anybody could point at, and the cost was\n * paid one surface at a time: a consumer that wanted the status at the weight\n * of a page heading pinned the metrics by hand, beside a component that\n * already knew how to draw them and would have kept them in step with the\n * rest of the scale for free.\n *\n * The chevron travels with it — see the trigger below. Defaults to `sm`,\n * unchanged: this is a step ADDED to the top of the scale, not a new default.\n */\n size?: \"sm\" | \"md\" | \"lg\";\n /** Accessible name for the trigger — there is no visible label otherwise. */\n \"aria-label\"?: string;\n disabled?: boolean;\n /**\n * DX-5143 - a change is being saved: the trigger refuses to open and is dimmed, but stays a FOCUSABLE button (`aria-disabled` +\n * `aria-busy`, never the native `disabled`). A natively disabled button drops keyboard focus to <body> the moment it is disabled, so a\n * person who chose by keyboard lost their place on every save; this keeps it. The chevron or pencil is still drawn.\n */\n busy?: boolean;\n /**\n * DX-5143 - draw a pencil after the value instead of the dropdown chevron, saying \"this value can be changed\" rather than \"this\n * is a menu\". The whole value plus the pencil stays the one click target. Never drawn read-only or disabled.\n */\n changeIcon?: boolean;\n /**\n * DX-5143 - the person may see the value but not change it: the current option is drawn at full strength with no chevron, no\n * popover and no button (unlike `disabled`, which dims a control that exists). The caller says why elsewhere on the screen.\n */\n readOnly?: boolean;\n /**\n * What the trigger says when `value` matches no option — a state that is\n * always a mistake somewhere, so this is the wording of the report rather\n * than a label anyone should be seeing.\n *\n * Absent, the built-in \"Unknown\" word of the active `UiLocaleProvider`. It is NOT the raw value: see the component body.\n */\n placeholder?: ReactNode;\n className?: string;\n}\n\n/** One option drawn the one way everywhere it appears: the trigger, each popover row and the read-only form. */\nconst PLAIN_TEXT_SIZE = { sm: \"text-xs\", md: \"text-sm\", lg: \"text-base\" } as const;\n\nfunction OptionFace({ option, size, id, children }: { option: StatusOption | undefined; size: \"sm\" | \"md\" | \"lg\"; id?: string; children?: ReactNode }) {\n if (option?.plain) return <span id={id} className={cn(\"text-muted-text\", PLAIN_TEXT_SIZE[size])}>{option.label}</span>;\n return (\n <Badge id={id} size={size} tone={option?.tone ?? \"neutral\"} color={option?.color} dot={option?.dot} pulse={option?.pulse} icon={option?.icon}>\n {children ?? option?.label}\n </Badge>\n );\n}\n\nexport function StatusSelect<Value extends string = string>({\n value,\n options,\n onValueChange,\n size = \"sm\",\n \"aria-label\": ariaLabel,\n disabled = false,\n busy = false,\n readOnly = false,\n changeIcon = false,\n placeholder,\n className,\n}: StatusSelectProps<Value>) {\n const strings = useUiStrings().statusSelect;\n const current = options.find((option) => option.value === value);\n /* One base id, indexed per option. A `useId()` per row is not expressible —\n the row count is data — and a key built from the value would collide with\n anything else on the page holding the same status. */\n const reasonIds = useId();\n /* DX-5143: the trigger's `aria-label` REPLACES its content as its name, so the value would never be announced; the face is its description. */\n const faceId = useId();\n /* Always controlled, so a busy StatusSelect can refuse to open (and close an open popover) without switching between controlled and uncontrolled. */\n const [open, setOpen] = useState(false);\n /* DX-5143: a save that starts while the popover is open closes it for good; without this, `open` stays true and the popover reopens when the save ends. */\n if (busy && open) setOpen(false);\n\n for (const option of options) {\n if (option.plain && (option.tone !== undefined || option.color !== undefined || option.icon !== undefined || option.dot)) {\n throw new Error(`StatusSelect: option \"${option.value}\" is plain but also carries a tone, color, icon or dot. Plain is text only.`);\n }\n if (option.tone !== undefined && option.color !== undefined) {\n throw new Error(`StatusSelect: option \"${option.value}\" carries both a tone and a color. Pass one.`);\n }\n if (option.refusal === \"\") {\n throw new Error(\n `StatusSelect: option \"${option.value}\" refuses with an empty reason. ` +\n `A reason nobody can read leaves a dead row with nothing beside it — ` +\n `omit \\`refusal\\` to allow the option, or say why it cannot be chosen.`,\n );\n }\n }\n\n if (current === undefined) {\n /* THE RAW VALUE NEVER REACHES THE INTERFACE. It used to: `current?.label ??\n value` painted the key into the badge, so a record in a stage the caller\n had not listed rendered a coloured pill reading `extracting`. That is the\n same defect `Select` shipped and fixed — a key where a label belongs —\n and it is worse here, because a pill reads as a designed label rather\n than as a fallback. See `select-label.test.tsx` for the reported case.\n\n A placeholder alone would be QUIET, which is how the stale value stays in\n the consumer's state unreported, so the warning names the value. */\n devWarn(\n \"StatusSelect\",\n `no option carries ${JSON.stringify(value)} — the trigger is showing the placeholder ` +\n \"rather than painting the raw value into the interface. Either the value is stale, or \" +\n \"`options` is missing a status the record can actually hold; a status the consumer does \" +\n \"not assign belongs in the list with a `refusal`, not out of it.\",\n );\n }\n\n if (readOnly) {\n return (\n <span role=\"group\" className={cn(\"inline-flex\", className)} aria-label={ariaLabel}>\n <OptionFace option={current} size={size}>{current === undefined ? (placeholder ?? strings.unknown) : undefined}</OptionFace>\n </span>\n );\n }\n\n return (\n <Popover\n open={open && !busy}\n onOpenChange={(next) => !busy && setOpen(next)}\n align=\"start\"\n width=\"calc(15rem*var(--ui-scale))\"\n trigger={\n <button\n type=\"button\"\n disabled={disabled}\n aria-label={ariaLabel}\n aria-describedby={faceId}\n aria-disabled={busy || undefined}\n aria-busy={busy || undefined}\n className={cn(\n busy && \"cursor-wait opacity-50\",\n \"dx-tap group/status inline-flex items-center gap-1 rounded-full outline-none\",\n \"transition-[var(--tx-colors),box-shadow,opacity] duration-(--dur-fast) ease-hover\",\n /* DX-5143: a busy trigger is aria-disabled, not natively disabled, so it must also be excluded here or it undims under the pointer. */\n \"hover:not-disabled:not-aria-busy:opacity-85\",\n \"focus-visible:shadow-[0_0_0_3px_var(--control-focus-halo)]\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n >\n <OptionFace option={current} size={size} id={faceId}>{current === undefined ? (placeholder ?? strings.unknown) : undefined}</OptionFace>\n {!disabled && (\n <Icon\n name={changeIcon ? \"pencil\" : \"chevron-down\"}\n /* THE GLYPH IS PART OF THE SIZE STEP, not a fixed ornament beside\n it. An `lg` pill (h-7, text-sm) with an `xs` chevron reads as a\n large badge that somebody forgot to finish — and \"the scale is\n consistent across components\" is the whole reason the step was\n added. `sm` and `md` keep the `xs` glyph they have always had,\n so nothing existing moves. */\n size={size === \"lg\" ? \"sm\" : \"xs\"}\n /* The colour half is not optional: naming a transition REPLACES\n the global one, so a bare `transition-transform` leaves this\n chevron cutting between themes while the badge beside it fades.\n The rendered walk in `audit:motion` never saw this — the\n chevron only exists inside an expanded card. The source sweep\n does. */\n className={cn(\"text-tertiary transition-[var(--tx-colors),transform] duration-(--dur-fast)\", !changeIcon && \"group-data-popup-open/status:rotate-180\")}\n />\n )}\n </button>\n }\n >\n <div className=\"flex w-full min-w-0 flex-col gap-0.5\">\n {options.map((option, index) => {\n const refused = option.refusal !== undefined;\n const reasonId = `${reasonIds}-${index}`;\n\n const row = (\n <button\n type=\"button\"\n /* The guard is the ABSENCE of a handler rather than a check\n inside one, so there is no path where a refused row reports a\n change. `aria-disabled` keeps it focusable, which is the only\n way a keyboard user ever reaches the sentence below. */\n onClick={refused ? undefined : () => onValueChange(option.value)}\n /* THE NAME IS THE LABEL, NOT THE LABEL PLUS THE REASON. The\n refusal sentence lives inside this button AND is pointed at by\n `aria-describedby`, so without this the row computed its name\n from its own contents and announced the sentence twice:\n\n NAME: \"Extracting documents The pipeline enters this stage on its own.\"\n DESC: \"The pipeline enters this stage on its own.\"\n\n `IconButton` documents the exact guard — \"`aria-label` replaces\n content outright, which is the one place that behaviour is\n working for us\" — and puts its own `sr-only` reason inside a\n button that carries one. This row cited that precedent without\n applying it. */\n aria-label={option.label}\n aria-current={option.value === value ? \"true\" : undefined}\n aria-disabled={refused || undefined}\n aria-describedby={refused ? reasonId : undefined}\n className={cn(\n \"dx-tap flex items-center justify-between gap-2 rounded-md px-1.5 py-1.5\",\n \"text-left outline-none transition-[var(--tx-colors)] duration-(--dur-instant)\",\n \"focus-visible:bg-surface-hover\",\n refused\n ? /* Dimmed by LUMINANCE, and a cursor the pointer actually\n reaches — same treatment `IconButton` gives a refusing\n control, and for the same reason: it must not look\n armed, but it must still be askable. */\n \"cursor-not-allowed opacity-60\"\n : \"hover:bg-surface-hover\",\n )}\n >\n <span className=\"flex min-w-0 flex-col items-start gap-1\">\n <OptionFace option={option} size={size} />\n {refused && (\n <span id={reasonId} className=\"text-2xs leading-snug text-tertiary\">\n {option.refusal}\n </span>\n )}\n </span>\n {option.value === value && <Icon name=\"check\" size=\"xs\" className=\"shrink-0 text-success\" />}\n </button>\n );\n\n /* A REFUSING ROW IS NOT WRAPPED IN `PopoverClose`. Wrapped, clicking\n it dismisses the popup — which is exactly what a successful pick\n looks like, so the refusal would read as having worked. The list\n staying open IS the feedback. */\n return refused ? (\n <div key={option.value}>{row}</div>\n ) : (\n <PopoverClose key={option.value}>{row}</PopoverClose>\n );\n })}\n </div>\n </Popover>\n );\n}\n"],"names":["PLAIN_TEXT_SIZE","OptionFace","option","size","id","children","jsx","cn","Badge","StatusSelect","value","options","onValueChange","ariaLabel","disabled","busy","readOnly","changeIcon","placeholder","className","strings","useUiStrings","current","reasonIds","useId","faceId","open","setOpen","useState","devWarn","Popover","next","jsxs","Icon","index","refused","reasonId","row","PopoverClose"],"mappings":"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"}