@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":"AccountMenu.js","sources":["../../../src/components/rbac/AccountMenu.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { Avatar } from \"../Avatar\";\nimport { Badge } from \"../Badge\";\nimport { Icon, type IconName } from \"../Icon\";\nimport { Popover, PopoverClose } from \"../Popover\";\nimport { cn } from \"../../lib/cn\";\nimport { emphasis, useUiStrings } from \"../../lib/i18n\";\nimport { useRBAC } from \"./RBACProvider\";\n\n/* ============================================================================\n ACCOUNT MENU\n\n Button trigger + Popover content, the exact shape `ThemeMenu` uses — read\n that file first if this one looks unfamiliar. The header avatar is the\n trigger; the popup is content, not a list of commands, which is why this is\n built on `Popover` rather than `Menu` (see the block comment atop\n `Popover.tsx` for that distinction). A couple of these rows genuinely need a\n focused, keyboard-reachable control (a team picker) rather than a single-select action list.\n\n NO ROUTER. This library has no opinion on how a consumer navigates, so\n \"Profile\" and \"Roles & Permissions\" are optional callbacks rather than\n links — supply the one that makes sense for your router (or none, and the\n row simply does not render). `PopoverClose` wraps every row that FIRES a\n callback so choosing an action also dismisses the menu; it is deliberately\n NOT wrapped around the plain-text role line when no callback is supplied.\n ========================================================================= */\n\nconst ITEM = [\n \"dx-tap flex w-full items-center gap-2.5 rounded-md px-2.5 py-2\",\n \"text-left text-sm text-secondary outline-none\",\n \"transition-[var(--tx-colors)] duration-(--dur-instant)\",\n \"hover:bg-surface-hover hover:text-primary\",\n \"focus-visible:bg-surface-hover focus-visible:text-primary\",\n];\n\nconst SECTION_LABEL = \"text-2xs font-semibold tracking-widest text-tertiary uppercase\";\n\n/** DX-4067 — one titled block inside the menu, drawn exactly like the built-in \"Your access\" block so a consumer's extra section cannot look foreign. */\nexport function AccountMenuSection({ title, children }: { title: string; children: ReactNode }) {\n return (\n <div className=\"flex flex-col gap-1.5 border-t border-border-subtle px-1 py-3\">\n <span className={SECTION_LABEL}>{title}</span>\n {children}\n </div>\n );\n}\n\n/** DX-5319 - one header control that no longer fits the header and lives in the account menu instead. */\nexport interface AccountMenuAction {\n id: string;\n label: string;\n icon: IconName;\n /** Runs when the row is chosen; the menu closes with it (`PopoverClose`), so what it opens (a dialog, a page) is not left under the popover. */\n onSelect: () => void;\n /**\n * DX-5319 - a count the control's header button carried (unread replies), kept on its row so folding it does not hide the number.\n * `label` is required: the chip is a number with no words, so the row's assistive name needs them (the same reason `BadgeDismiss.label` is).\n * Omitted, or `value` of 0 -> no chip.\n */\n badge?: { value: number; label: string };\n}\n\nexport interface AccountMenuProps {\n /**\n * DX-5319 - header controls folded into the menu because the header ran out of room (`useHeaderFold`), as the first group of\n * rows, in the order given. The consumer passes only the controls that are folded right now, so a control is in the header\n * or in this list, never both and never neither. Omitted or empty -> no group.\n */\n actions?: AccountMenuAction[];\n /** DX-4067 — a mark beside the person's name in the header (a \"Beta\" badge). Presentational: the menu only places it. */\n nameBadge?: ReactNode;\n /** DX-4067 — extra blocks, drawn after \"Your access\". Wrap each in `AccountMenuSection`. */\n sections?: ReactNode;\n /** DX-4067 — a muted line at the very bottom (the running version). Omitted → no footer. */\n footer?: ReactNode;\n onNavigateProfile?: () => void;\n onNavigateRoles?: () => void;\n /** Where the role line leads — the page listing every granted permission. Omitted → the line is plain text. */\n onNavigateAccess?: () => void;\n onSwitchTeam?: (teamId: string) => void;\n onSignOut?: () => void;\n className?: string;\n}\n\nexport function AccountMenu({\n actions,\n nameBadge,\n sections,\n footer,\n onNavigateProfile,\n onNavigateRoles,\n onNavigateAccess,\n onSwitchTeam,\n onSignOut,\n className,\n}: AccountMenuProps) {\n const strings = useUiStrings().accountMenu;\n const { actualUser, effectiveRole, teams } = useRBAC();\n\n /* The trigger always shows `actualUser` — never `effectiveRole`'s owner,\n because impersonation swaps ROLE, not IDENTITY. There is no \"become a\n different person\" concept anywhere in the type contract (`types.ts`);\n the avatar in the header is always, unambiguously, whoever is really\n signed in. */\n\n return (\n <Popover\n align=\"end\"\n width=\"calc(20rem*var(--ui-scale))\"\n className={className}\n trigger={\n <button\n type=\"button\"\n aria-label={strings.triggerLabel(actualUser.name)}\n className=\"dx-tap shrink-0 rounded-full transition-[var(--tx-colors),box-shadow] duration-(--dur-fast) ease-hover focus-visible:shadow-[0_0_0_3px_var(--focus-halo)]\"\n >\n <Avatar name={actualUser.name} src={actualUser.avatarUrl} size=\"sm\" />\n </button>\n }\n >\n {/* DX-4086 — the design width lives on the popup (`width` below), which renders at\n exactly that width capped by the clamp (Popover.tsx), so the panel just fills it. */}\n <div data-account-menu-panel=\"\" className=\"flex w-full min-w-0 flex-col gap-1\">\n <div className=\"flex items-center gap-3 px-1 pb-3\">\n <Avatar name={actualUser.name} src={actualUser.avatarUrl} size=\"md\" />\n <div className=\"flex min-w-0 flex-col\">\n <span className=\"flex min-w-0 items-center gap-1.5\">\n <span className=\"truncate text-sm font-semibold text-primary\">{actualUser.name}</span>\n {nameBadge}\n </span>\n <span className=\"truncate text-xs text-tertiary\">{actualUser.email}</span>\n </div>\n </div>\n\n {actions && actions.length > 0 && (\n <div data-account-menu-actions=\"\" className=\"flex flex-col gap-0.5 border-t border-border-subtle pt-2 pb-2\">\n {actions.map((action) => (\n <PopoverClose key={action.id}>\n <button type=\"button\" data-action-id={action.id} className={cn(ITEM)} onClick={action.onSelect}>\n <Icon name={action.icon} size=\"sm\" />\n {action.label}\n {action.badge && action.badge.value > 0 && (\n <Badge size=\"sm\" tone=\"info\" className=\"ml-auto\" aria-label={action.badge.label} data-action-badge=\"\">\n {action.badge.value}\n </Badge>\n )}\n </button>\n </PopoverClose>\n ))}\n </div>\n )}\n\n {(onNavigateProfile || onNavigateRoles) && (\n <div className=\"flex flex-col gap-0.5 border-t border-border-subtle pt-2\">\n {/* An item without its handler simply is not rendered — there is\n nowhere for it to send the click, and a dead menu row is worse\n than a shorter menu. */}\n {onNavigateProfile && (\n <PopoverClose>\n <button type=\"button\" className={cn(ITEM)} onClick={onNavigateProfile}>\n <Icon name=\"user\" size=\"sm\" />\n {strings.profile}\n </button>\n </PopoverClose>\n )}\n {onNavigateRoles && (\n <PopoverClose>\n <button type=\"button\" className={cn(ITEM)} onClick={onNavigateRoles}>\n <Icon name=\"shield-check\" size=\"sm\" />\n {strings.roles}\n </button>\n </PopoverClose>\n )}\n </div>\n )}\n\n {/* DX-4009: the role is named here and the full permission list lives\n only on the account page (`ProfilePage`'s \"Your roles &\n permissions\"), reached through `onNavigateAccess` when supplied.\n Listing every grant in a header popover scrolled past 30 rows.\n The line always renders so a person has an answer to \"which role\n am I acting as\" without leaving the header. */}\n <div className=\"flex flex-col gap-1.5 border-t border-border-subtle px-1 py-3\">\n <span className={SECTION_LABEL}>{strings.yourAccess}</span>\n {effectiveRole ? (\n onNavigateAccess ? (\n <PopoverClose>\n <button\n type=\"button\"\n className=\"text-left text-xs text-secondary underline-offset-2 outline-none hover:underline focus-visible:underline\"\n onClick={onNavigateAccess}\n >\n {strings.hasRole(effectiveRole.label, emphasis)}\n </button>\n </PopoverClose>\n ) : (\n <p className=\"text-xs text-secondary\">\n {strings.hasRole(effectiveRole.label, emphasis)}\n </p>\n )\n ) : (\n <p className=\"text-xs text-tertiary\">{strings.noRole}</p>\n )}\n </div>\n\n {sections}\n\n {teams.length > 1 && onSwitchTeam && (\n <div className=\"flex flex-col gap-0.5 border-t border-border-subtle pt-2\">\n <span className={cn(SECTION_LABEL, \"px-1 pb-1\")}>{strings.switchTeam}</span>\n {teams.map((team) => (\n <PopoverClose key={team.id}>\n <button type=\"button\" className={cn(ITEM)} onClick={() => onSwitchTeam(team.id)}>\n <Icon name=\"users\" size=\"sm\" />\n {team.name}\n </button>\n </PopoverClose>\n ))}\n </div>\n )}\n\n {onSignOut && (\n <div className=\"flex flex-col gap-0.5 border-t border-border-subtle pt-2\">\n <PopoverClose>\n <button\n type=\"button\"\n className={cn(ITEM, \"text-danger-text hover:bg-danger-subtle hover:text-danger-text focus-visible:bg-danger-subtle focus-visible:text-danger-text\")}\n onClick={onSignOut}\n >\n <Icon name=\"log-out\" size=\"sm\" />\n {strings.signOut}\n </button>\n </PopoverClose>\n </div>\n )}\n\n {footer && <div className=\"border-t border-border-subtle px-1 pt-2 text-2xs text-tertiary\">{footer}</div>}\n </div>\n </Popover>\n );\n}\n"],"names":["ITEM","SECTION_LABEL","AccountMenuSection","title","children","jsxs","jsx","AccountMenu","actions","nameBadge","sections","footer","onNavigateProfile","onNavigateRoles","onNavigateAccess","onSwitchTeam","onSignOut","className","strings","useUiStrings","actualUser","effectiveRole","teams","useRBAC","Popover","Avatar","action","PopoverClose","cn","Icon","Badge","emphasis","team"],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { jsx as t } from "react/jsx-runtime";
2
+ import { Icon as f } from "../Icon.js";
3
+ import { TableEmptyState as l } from "../Table.js";
4
+ import { ApiKeysTable as g } from "./ApiKeysTable.js";
5
+ import { useUiStrings as y } from "../../lib/i18n/provider.js";
6
+ function A({ keys: e, onRevoke: r, busyId: o, roleEditor: m, onRevokeGrant: n, renderName: s, renderStatus: p, emptyState: a, className: c }) {
7
+ const i = y().agentKeysList;
8
+ return e.length === 0 ? a ?? /* @__PURE__ */ t(
9
+ l,
10
+ {
11
+ icon: /* @__PURE__ */ t(f, { name: "bot", size: "lg", className: "text-tertiary" }),
12
+ title: i.emptyTitle,
13
+ description: i.emptyDescription
14
+ }
15
+ ) : /* @__PURE__ */ t(g, { keys: e, onRevoke: r, busyId: o, roleEditor: m, onRevokeGrant: n, renderName: s, renderStatus: p, className: c });
16
+ }
17
+ export {
18
+ A as AgentKeysList
19
+ };
20
+ //# sourceMappingURL=AgentKeysList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentKeysList.js","sources":["../../../src/components/rbac/AgentKeysList.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { Icon } from \"../Icon\";\nimport { TableEmptyState } from \"../Table\";\nimport { useUiStrings } from \"../../lib/i18n\";\nimport { ApiKeysTable, type ApiKey, type KeyRoleEditor } from \"./ApiKeysTable\";\n\n/* ----------------------------------------------------------------------------\n AGENT KEYS LIST (DX-4425)\n\n THE KEYS A WORKER OR AN AGENT SESSION MINTED ON A PERSON'S BEHALF, ALONE. They\n were a second group inside `ApiKeysPanel`, which made a page that wanted only\n the agent list render a \"Create key\" button and a personal-keys heading it did\n not own. A person never creates one of these here (an approved access request\n or a dispatch mints it), so this list has no create flow: rows, a confirmed\n revoke, and an empty state. It shares its table with `ApiKeysPanel`\n (`ApiKeysTable`), so the two never disagree about a column.\n\n `roleEditor` (DX-4427) turns each role badge into an in-place picker, so an\n agent's permissions can be raised or lowered without revoking it: a revoke is\n terminal (the agent is told to stop), a role change is not.\n\n A KEY SHOWS THE PERMISSIONS ADDED TO IT (DX-4433). A key's `grants` are what\n approved permission requests (`PermissionRequestPanel`) added on top of its\n role. `onRevokeGrant` makes each removable behind its own confirm, without\n touching the key or its role.\n\n A ROW CAN LINK AND SHOW A LIVE STATUS (DX-4487): `renderName` replaces the\n name text (a router link to what the key belongs to) and `renderStatus` adds\n a line under it (a worker's readiness), both given the row.\n\n PRESENTATIONAL ONLY: `onRevoke` and `onRevokeGrant` (each after its confirm\n dialog) and `roleEditor.onChange` are the side effects.\n ---------------------------------------------------------------------------- */\n\nexport interface AgentKeysListProps {\n /** The keys agents hold, already scoped to the person. */\n keys: ApiKey[];\n onRevoke: (id: number) => Promise<void>;\n /** The id of a key currently mid-revoke, mid-role-change or mid-grant-removal. Disables just that row's controls. */\n busyId?: number | null;\n /** Makes each key's role editable in place. Omit for a read-only role badge. */\n roleEditor?: KeyRoleEditor;\n /** Makes each key's grant chips removable (DX-4433). Omit and keys that carry grants show them read-only. */\n onRevokeGrant?: (keyId: number, grantId: number) => Promise<void>;\n /** Replaces a key's name text, e.g. with a link to the worker the key belongs to (DX-4487). Return `null` to keep the plain name. */\n renderName?: (apiKey: ApiKey) => ReactNode;\n /** One line under a key's name, e.g. the worker's readiness badge (DX-4487). Return `null` for a key with none. */\n renderStatus?: (apiKey: ApiKey) => ReactNode;\n emptyState?: ReactNode;\n className?: string;\n}\n\nexport function AgentKeysList({ keys, onRevoke, busyId, roleEditor, onRevokeGrant, renderName, renderStatus, emptyState, className }: AgentKeysListProps) {\n const strings = useUiStrings().agentKeysList;\n if (keys.length === 0) {\n return (\n emptyState ?? (\n <TableEmptyState\n icon={<Icon name=\"bot\" size=\"lg\" className=\"text-tertiary\" />}\n title={strings.emptyTitle}\n description={strings.emptyDescription}\n />\n )\n );\n }\n return <ApiKeysTable keys={keys} onRevoke={onRevoke} busyId={busyId} roleEditor={roleEditor} onRevokeGrant={onRevokeGrant} renderName={renderName} renderStatus={renderStatus} className={className} />;\n}\n"],"names":["AgentKeysList","keys","onRevoke","busyId","roleEditor","onRevokeGrant","renderName","renderStatus","emptyState","className","strings","useUiStrings","jsx","TableEmptyState","Icon","ApiKeysTable"],"mappings":";;;;;AAoDO,SAASA,EAAc,EAAE,MAAAC,GAAM,UAAAC,GAAU,QAAAC,GAAQ,YAAAC,GAAY,eAAAC,GAAe,YAAAC,GAAY,cAAAC,GAAc,YAAAC,GAAY,WAAAC,EAAA,GAAiC;AACxJ,QAAMC,IAAUC,IAAe;AAC/B,SAAIV,EAAK,WAAW,IAEhBO,KACE,gBAAAI;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,wBAAOC,GAAA,EAAK,MAAK,OAAM,MAAK,MAAK,WAAU,iBAAgB;AAAA,MAC3D,OAAOJ,EAAQ;AAAA,MACf,aAAaA,EAAQ;AAAA,IAAA;AAAA,EAAA,IAKtB,gBAAAE,EAACG,KAAa,MAAAd,GAAY,UAAAC,GAAoB,QAAAC,GAAgB,YAAAC,GAAwB,eAAAC,GAA8B,YAAAC,GAAwB,cAAAC,GAA4B,WAAAE,EAAA,CAAsB;AACvM;"}
@@ -0,0 +1,172 @@
1
+ import { jsxs as a, jsx as n, Fragment as j } from "react/jsx-runtime";
2
+ import { useState as i } from "react";
3
+ import { Dialog as k } from "../Dialog.js";
4
+ import { Button as d } from "../Button.js";
5
+ import { Callout as L } from "../Callout.js";
6
+ import { TableEmptyState as A } from "../Table.js";
7
+ import { Field as I } from "../Field.js";
8
+ import { Icon as f } from "../Icon.js";
9
+ import { IconButton as B } from "../IconButton.js";
10
+ import { Input as M } from "../Input.js";
11
+ import { NumberInput as U } from "../NumberInput.js";
12
+ import { SecretField as q } from "../SecretField.js";
13
+ import { copyText as G } from "../../lib/clipboard.js";
14
+ import { ApiKeysTable as H } from "./ApiKeysTable.js";
15
+ import { RoleKeyPicker as J } from "./RoleKeyPicker.js";
16
+ import { useUiStrings as Q } from "../../lib/i18n/provider.js";
17
+ function de({
18
+ keys: h,
19
+ roles: N,
20
+ permissions: T,
21
+ ownPermissionKeys: D,
22
+ onCreate: K,
23
+ onRevoke: E,
24
+ busyId: P,
25
+ emptyState: w,
26
+ className: z
27
+ }) {
28
+ const e = Q().apiKeysPanel, [F, r] = i(!1), [o, g] = i(""), [s, v] = i(""), [y, x] = i(null), [t, b] = i(!1), [C, m] = i(null), [p, u] = i(null), [O, c] = i({ kind: "unchanged" });
29
+ function R() {
30
+ g(""), v(""), x(null), m(null), r(!0);
31
+ }
32
+ async function S() {
33
+ if (!(!o.trim() || s === "")) {
34
+ b(!0), m(null);
35
+ try {
36
+ const l = await K({ name: o.trim(), roleId: s, expiresInDays: y });
37
+ r(!1), u(l.token), c({ kind: "set", value: l.token });
38
+ } catch (l) {
39
+ m(l instanceof Error ? l.message : e.failedMessage);
40
+ } finally {
41
+ b(!1);
42
+ }
43
+ }
44
+ }
45
+ async function V() {
46
+ if (p)
47
+ try {
48
+ await G(p);
49
+ } catch {
50
+ }
51
+ }
52
+ return /* @__PURE__ */ a("div", { className: z, children: [
53
+ /* @__PURE__ */ a("div", { className: "flex flex-col gap-3", children: [
54
+ /* @__PURE__ */ a("div", { className: "flex items-center justify-between gap-3", children: [
55
+ /* @__PURE__ */ n("h2", { className: "text-xs font-semibold tracking-widest text-tertiary uppercase", children: e.title }),
56
+ /* @__PURE__ */ n(d, { size: "sm", leadingIcon: /* @__PURE__ */ n(f, { name: "plus", size: "sm" }), onClick: R, children: e.createKey })
57
+ ] }),
58
+ h.length === 0 ? w ?? /* @__PURE__ */ n(
59
+ A,
60
+ {
61
+ icon: /* @__PURE__ */ n(f, { name: "lock", size: "lg", className: "text-tertiary" }),
62
+ title: e.emptyTitle,
63
+ description: e.emptyDescription
64
+ }
65
+ ) : /* @__PURE__ */ n(H, { keys: h, onRevoke: E, busyId: P })
66
+ ] }),
67
+ /* @__PURE__ */ n(
68
+ k,
69
+ {
70
+ open: F,
71
+ onOpenChange: r,
72
+ title: e.dialogTitle,
73
+ description: e.dialogDescription,
74
+ actions: /* @__PURE__ */ a(j, { children: [
75
+ /* @__PURE__ */ n(d, { variant: "outline", onClick: () => r(!1), disabled: t, children: e.cancel }),
76
+ /* @__PURE__ */ n(
77
+ d,
78
+ {
79
+ onClick: () => {
80
+ S();
81
+ },
82
+ disabled: !o.trim() || s === "" || t,
83
+ loading: t,
84
+ children: e.create
85
+ }
86
+ )
87
+ ] }),
88
+ children: /* @__PURE__ */ a("div", { className: "flex flex-col gap-4", children: [
89
+ C && /* @__PURE__ */ n(L, { tone: "danger", title: e.failedTitle, children: C }),
90
+ /* @__PURE__ */ n(I, { label: e.nameLabel, description: e.nameDescription, children: /* @__PURE__ */ n(
91
+ M,
92
+ {
93
+ value: o,
94
+ onChange: (l) => g(l.target.value),
95
+ placeholder: e.namePlaceholder,
96
+ disabled: t,
97
+ autoFocus: !0
98
+ }
99
+ ) }),
100
+ /* @__PURE__ */ n(
101
+ J,
102
+ {
103
+ roles: N,
104
+ permissions: T,
105
+ ownPermissionKeys: D,
106
+ value: s,
107
+ onValueChange: v,
108
+ disabled: t
109
+ }
110
+ ),
111
+ /* @__PURE__ */ n(I, { label: e.expiresLabel, description: e.expiresDescription, children: /* @__PURE__ */ n(
112
+ U,
113
+ {
114
+ value: y ?? void 0,
115
+ onValueChange: (l) => x(l ?? null),
116
+ min: 1,
117
+ placeholder: e.expiresPlaceholder,
118
+ disabled: t
119
+ }
120
+ ) })
121
+ ] })
122
+ }
123
+ ),
124
+ /* @__PURE__ */ n(
125
+ k,
126
+ {
127
+ open: p !== null,
128
+ onOpenChange: (l) => {
129
+ l || (u(null), c({ kind: "unchanged" }));
130
+ },
131
+ title: e.revealedTitle,
132
+ description: e.revealedDescription,
133
+ actions: /* @__PURE__ */ n(
134
+ d,
135
+ {
136
+ onClick: () => {
137
+ u(null), c({ kind: "unchanged" });
138
+ },
139
+ children: e.done
140
+ }
141
+ ),
142
+ children: /* @__PURE__ */ a("div", { className: "flex items-end gap-2", children: [
143
+ /* @__PURE__ */ n(
144
+ q,
145
+ {
146
+ className: "flex-1",
147
+ label: e.revealedLabel,
148
+ value: O,
149
+ onChange: c,
150
+ configured: !1,
151
+ revealable: !0
152
+ }
153
+ ),
154
+ /* @__PURE__ */ n(
155
+ B,
156
+ {
157
+ icon: /* @__PURE__ */ n(f, { name: "copy", size: "sm" }),
158
+ label: e.copyKey,
159
+ onClick: () => {
160
+ V();
161
+ }
162
+ }
163
+ )
164
+ ] })
165
+ }
166
+ )
167
+ ] });
168
+ }
169
+ export {
170
+ de as ApiKeysPanel
171
+ };
172
+ //# sourceMappingURL=ApiKeysPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApiKeysPanel.js","sources":["../../../src/components/rbac/ApiKeysPanel.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { useState } from \"react\";\nimport { Dialog } from \"../Dialog\";\nimport { Button } from \"../Button\";\nimport { Callout } from \"../Callout\";\nimport { TableEmptyState } from \"../Table\";\nimport { Field } from \"../Field\";\nimport { Icon } from \"../Icon\";\nimport { IconButton } from \"../IconButton\";\nimport { Input } from \"../Input\";\nimport { NumberInput } from \"../NumberInput\";\nimport { SecretField, type SecretValue } from \"../SecretField\";\nimport { copyText } from \"../../lib/clipboard\";\nimport { useUiStrings } from \"../../lib/i18n\";\nimport { ApiKeysTable, type ApiKey } from \"./ApiKeysTable\";\nimport { RoleKeyPicker } from \"./RoleKeyPicker\";\nimport type { Permission, Role } from \"./types\";\n\n/* ----------------------------------------------------------------------------\n API KEYS PANEL\n\n THE SAME `DataTable` SHAPE AS `SessionsList`, MINUS THE FIELDS A KEY\n DOESN'T HAVE. An API key has no `current`/`userAgent`/`ip` — it isn't a\n signed-in session, it's a bearer credential a script or an agent holds — so\n this is a sibling component with its own row type, not `SessionsList` with\n optional columns. See `types.ts`'s own header for why this library prefers\n a second small type over one type trying to serve two shapes. The table\n itself is `ApiKeysTable`, shared with `AgentKeysList`.\n\n A KEY ACTS AS ITS OWNER, WITH A ROLE CHOSEN AT CREATION. The create dialog\n makes the role a required choice (no preselected default: a scoped\n credential should never be broad by omission) and DISABLES every role that\n holds a permission its owner lacks, saying which one — the server refuses\n such a role anyway, so the disabled card is the same rule shown before the\n round trip rather than a second rule. The panel never knows what a role or\n permission IS: it compares `Role.permissionKeys` against the\n `ownPermissionKeys` the consumer hands it, and names the missing ones\n through `permissions[].label`.\n\n ONLY THE PERSON'S OWN KEYS. Credentials a worker or an agent session minted on\n their behalf are `AgentKeysList`'s (DX-4425): a page that shows both puts each\n in its own place instead of this panel carrying a second group.\n\n THE CREATED KEY IS SHOWN EXACTLY ONCE, AND THIS COMPONENT NEVER HOLDS ON TO\n IT LONGER THAN THAT. `onCreate` resolves with `{ token }` — the only moment\n the raw secret exists anywhere in this UI — and it lives in local state only\n until the operator dismisses the reveal, via `SecretField` (see that\n component's own header for the three-state model it exists to enforce.)\n There is no way to see a previously-created key again through this panel,\n on purpose: neither this library nor a well-behaved backend stores the\n plaintext past creation.\n ---------------------------------------------------------------------------- */\n\nexport interface ApiKeysPanelProps {\n /** The keys the person made for themselves. */\n keys: ApiKey[];\n /** The roles the create dialog offers. */\n roles: Role[];\n /** The permission catalog, used to name the permissions that make a role unavailable. */\n permissions: Permission[];\n /** What the key's owner holds. A role holding anything outside this set cannot be chosen. */\n ownPermissionKeys: string[];\n onCreate: (input: { name: string; roleId: string; expiresInDays?: number | null }) => Promise<{ token: string }>;\n onRevoke: (id: number) => Promise<void>;\n /** The id of a key currently mid-revoke. Disables just that row. */\n busyId?: number | null;\n emptyState?: ReactNode;\n className?: string;\n}\n\nexport function ApiKeysPanel({\n keys,\n roles,\n permissions,\n ownPermissionKeys,\n onCreate,\n onRevoke,\n busyId,\n emptyState,\n className,\n}: ApiKeysPanelProps) {\n const strings = useUiStrings().apiKeysPanel;\n const [createOpen, setCreateOpen] = useState(false);\n const [name, setName] = useState(\"\");\n const [roleId, setRoleId] = useState(\"\");\n const [expiresInDays, setExpiresInDays] = useState<number | null>(null);\n const [creating, setCreating] = useState(false);\n const [createError, setCreateError] = useState<string | null>(null);\n const [revealedToken, setRevealedToken] = useState<string | null>(null);\n const [revealedValue, setRevealedValue] = useState<SecretValue>({ kind: \"unchanged\" });\n\n function openCreate() {\n setName(\"\");\n setRoleId(\"\");\n setExpiresInDays(null);\n setCreateError(null);\n setCreateOpen(true);\n }\n\n async function handleCreate() {\n if (!name.trim() || roleId === \"\") return;\n setCreating(true);\n setCreateError(null);\n try {\n const result = await onCreate({ name: name.trim(), roleId, expiresInDays });\n setCreateOpen(false);\n setRevealedToken(result.token);\n setRevealedValue({ kind: \"set\", value: result.token });\n } catch (cause) {\n setCreateError(cause instanceof Error ? cause.message : strings.failedMessage);\n } finally {\n setCreating(false);\n }\n }\n\n async function handleCopy() {\n if (!revealedToken) return;\n try {\n await copyText(revealedToken);\n } catch {\n // Both the async Clipboard API and the execCommand fallback failed\n // (DX-3661) — the key stays selectable/visible either way, so there\n // is nothing further to surface here.\n }\n }\n\n return (\n <div className={className}>\n <div className=\"flex flex-col gap-3\">\n <div className=\"flex items-center justify-between gap-3\">\n <h2 className=\"text-xs font-semibold tracking-widest text-tertiary uppercase\">{strings.title}</h2>\n <Button size=\"sm\" leadingIcon={<Icon name=\"plus\" size=\"sm\" />} onClick={openCreate}>\n {strings.createKey}\n </Button>\n </div>\n\n {keys.length === 0 ? (\n emptyState ?? (\n <TableEmptyState\n icon={<Icon name=\"lock\" size=\"lg\" className=\"text-tertiary\" />}\n title={strings.emptyTitle}\n description={strings.emptyDescription}\n />\n )\n ) : (\n <ApiKeysTable keys={keys} onRevoke={onRevoke} busyId={busyId} />\n )}\n </div>\n\n <Dialog\n open={createOpen}\n onOpenChange={setCreateOpen}\n title={strings.dialogTitle}\n description={strings.dialogDescription}\n actions={\n <>\n <Button variant=\"outline\" onClick={() => setCreateOpen(false)} disabled={creating}>\n {strings.cancel}\n </Button>\n {/* Named \"Create\" rather than repeating \"Create key\" — the\n panel's own trigger button already carries that label, and\n `getByRole(\"button\", { name: \"Create key\" })` needs exactly\n one match once this dialog is open. */}\n <Button\n onClick={() => void handleCreate()}\n disabled={!name.trim() || roleId === \"\" || creating}\n loading={creating}\n >\n {strings.create}\n </Button>\n </>\n }\n >\n <div className=\"flex flex-col gap-4\">\n {createError && <Callout tone=\"danger\" title={strings.failedTitle}>{createError}</Callout>}\n <Field label={strings.nameLabel} description={strings.nameDescription}>\n <Input\n value={name}\n onChange={(event) => setName(event.target.value)}\n placeholder={strings.namePlaceholder}\n disabled={creating}\n autoFocus\n />\n </Field>\n <RoleKeyPicker\n roles={roles}\n permissions={permissions}\n ownPermissionKeys={ownPermissionKeys}\n value={roleId}\n onValueChange={setRoleId}\n disabled={creating}\n />\n <Field label={strings.expiresLabel} description={strings.expiresDescription}>\n <NumberInput\n value={expiresInDays ?? undefined}\n onValueChange={(value) => setExpiresInDays(value ?? null)}\n min={1}\n placeholder={strings.expiresPlaceholder}\n disabled={creating}\n />\n </Field>\n </div>\n </Dialog>\n\n <Dialog\n open={revealedToken !== null}\n onOpenChange={(next) => {\n if (!next) {\n setRevealedToken(null);\n setRevealedValue({ kind: \"unchanged\" });\n }\n }}\n title={strings.revealedTitle}\n description={strings.revealedDescription}\n actions={\n <Button\n onClick={() => {\n setRevealedToken(null);\n setRevealedValue({ kind: \"unchanged\" });\n }}\n >\n {strings.done}\n </Button>\n }\n >\n <div className=\"flex items-end gap-2\">\n <SecretField\n className=\"flex-1\"\n label={strings.revealedLabel}\n value={revealedValue}\n onChange={setRevealedValue}\n configured={false}\n revealable\n />\n <IconButton\n icon={<Icon name=\"copy\" size=\"sm\" />}\n label={strings.copyKey}\n onClick={() => void handleCopy()}\n />\n </div>\n </Dialog>\n </div>\n );\n}\n"],"names":["ApiKeysPanel","keys","roles","permissions","ownPermissionKeys","onCreate","onRevoke","busyId","emptyState","className","strings","useUiStrings","createOpen","setCreateOpen","useState","name","setName","roleId","setRoleId","expiresInDays","setExpiresInDays","creating","setCreating","createError","setCreateError","revealedToken","setRevealedToken","revealedValue","setRevealedValue","openCreate","handleCreate","result","cause","handleCopy","copyText","jsxs","jsx","Button","Icon","TableEmptyState","ApiKeysTable","Dialog","Fragment","Callout","Field","Input","event","RoleKeyPicker","NumberInput","value","next","SecretField","IconButton"],"mappings":";;;;;;;;;;;;;;;;AAsEO,SAASA,GAAa;AAAA,EAC3B,MAAAC;AAAA,EACA,OAAAC;AAAA,EACA,aAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,QAAAC;AAAA,EACA,YAAAC;AAAA,EACA,WAAAC;AACF,GAAsB;AACpB,QAAMC,IAAUC,IAAe,cACzB,CAACC,GAAYC,CAAa,IAAIC,EAAS,EAAK,GAC5C,CAACC,GAAMC,CAAO,IAAIF,EAAS,EAAE,GAC7B,CAACG,GAAQC,CAAS,IAAIJ,EAAS,EAAE,GACjC,CAACK,GAAeC,CAAgB,IAAIN,EAAwB,IAAI,GAChE,CAACO,GAAUC,CAAW,IAAIR,EAAS,EAAK,GACxC,CAACS,GAAaC,CAAc,IAAIV,EAAwB,IAAI,GAC5D,CAACW,GAAeC,CAAgB,IAAIZ,EAAwB,IAAI,GAChE,CAACa,GAAeC,CAAgB,IAAId,EAAsB,EAAE,MAAM,aAAa;AAErF,WAASe,IAAa;AACpB,IAAAb,EAAQ,EAAE,GACVE,EAAU,EAAE,GACZE,EAAiB,IAAI,GACrBI,EAAe,IAAI,GACnBX,EAAc,EAAI;AAAA,EACpB;AAEA,iBAAeiB,IAAe;AAC5B,QAAI,GAACf,EAAK,UAAUE,MAAW,KAC/B;AAAA,MAAAK,EAAY,EAAI,GAChBE,EAAe,IAAI;AACnB,UAAI;AACF,cAAMO,IAAS,MAAM1B,EAAS,EAAE,MAAMU,EAAK,KAAA,GAAQ,QAAAE,GAAQ,eAAAE,GAAe;AAC1E,QAAAN,EAAc,EAAK,GACnBa,EAAiBK,EAAO,KAAK,GAC7BH,EAAiB,EAAE,MAAM,OAAO,OAAOG,EAAO,OAAO;AAAA,MACvD,SAASC,GAAO;AACd,QAAAR,EAAeQ,aAAiB,QAAQA,EAAM,UAAUtB,EAAQ,aAAa;AAAA,MAC/E,UAAA;AACE,QAAAY,EAAY,EAAK;AAAA,MACnB;AAAA;AAAA,EACF;AAEA,iBAAeW,IAAa;AAC1B,QAAKR;AACL,UAAI;AACF,cAAMS,EAAST,CAAa;AAAA,MAC9B,QAAQ;AAAA,MAIR;AAAA,EACF;AAEA,SACE,gBAAAU,EAAC,SAAI,WAAA1B,GACH,UAAA;AAAA,IAAA,gBAAA0B,EAAC,OAAA,EAAI,WAAU,uBACb,UAAA;AAAA,MAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,2CACb,UAAA;AAAA,QAAA,gBAAAC,EAAC,MAAA,EAAG,WAAU,iEAAiE,UAAA1B,EAAQ,OAAM;AAAA,QAC7F,gBAAA0B,EAACC,GAAA,EAAO,MAAK,MAAK,aAAa,gBAAAD,EAACE,GAAA,EAAK,MAAK,QAAO,MAAK,KAAA,CAAK,GAAI,SAAST,GACrE,YAAQ,UAAA,CACX;AAAA,MAAA,GACF;AAAA,MAEC5B,EAAK,WAAW,IACfO,KACE,gBAAA4B;AAAA,QAACG;AAAA,QAAA;AAAA,UACC,wBAAOD,GAAA,EAAK,MAAK,QAAO,MAAK,MAAK,WAAU,iBAAgB;AAAA,UAC5D,OAAO5B,EAAQ;AAAA,UACf,aAAaA,EAAQ;AAAA,QAAA;AAAA,MAAA,IAIzB,gBAAA0B,EAACI,GAAA,EAAa,MAAAvC,GAAY,UAAAK,GAAoB,QAAAC,EAAA,CAAgB;AAAA,IAAA,GAElE;AAAA,IAEA,gBAAA6B;AAAA,MAACK;AAAA,MAAA;AAAA,QACC,MAAM7B;AAAA,QACN,cAAcC;AAAA,QACd,OAAOH,EAAQ;AAAA,QACf,aAAaA,EAAQ;AAAA,QACrB,SACE,gBAAAyB,EAAAO,GAAA,EACE,UAAA;AAAA,UAAA,gBAAAN,EAACC,GAAA,EAAO,SAAQ,WAAU,SAAS,MAAMxB,EAAc,EAAK,GAAG,UAAUQ,GACtE,UAAAX,EAAQ,OAAA,CACX;AAAA,UAKA,gBAAA0B;AAAA,YAACC;AAAA,YAAA;AAAA,cACC,SAAS,MAAA;AAAM,gBAAKP,EAAA;AAAA;AAAA,cACpB,UAAU,CAACf,EAAK,KAAA,KAAUE,MAAW,MAAMI;AAAA,cAC3C,SAASA;AAAA,cAER,UAAAX,EAAQ;AAAA,YAAA;AAAA,UAAA;AAAA,QACX,GACF;AAAA,QAGF,UAAA,gBAAAyB,EAAC,OAAA,EAAI,WAAU,uBACZ,UAAA;AAAA,UAAAZ,uBAAgBoB,GAAA,EAAQ,MAAK,UAAS,OAAOjC,EAAQ,aAAc,UAAAa,EAAA,CAAY;AAAA,4BAC/EqB,GAAA,EAAM,OAAOlC,EAAQ,WAAW,aAAaA,EAAQ,iBACpD,UAAA,gBAAA0B;AAAA,YAACS;AAAA,YAAA;AAAA,cACC,OAAO9B;AAAA,cACP,UAAU,CAAC+B,MAAU9B,EAAQ8B,EAAM,OAAO,KAAK;AAAA,cAC/C,aAAapC,EAAQ;AAAA,cACrB,UAAUW;AAAA,cACV,WAAS;AAAA,YAAA;AAAA,UAAA,GAEb;AAAA,UACA,gBAAAe;AAAA,YAACW;AAAA,YAAA;AAAA,cACC,OAAA7C;AAAA,cACA,aAAAC;AAAA,cACA,mBAAAC;AAAA,cACA,OAAOa;AAAA,cACP,eAAeC;AAAA,cACf,UAAUG;AAAA,YAAA;AAAA,UAAA;AAAA,4BAEXuB,GAAA,EAAM,OAAOlC,EAAQ,cAAc,aAAaA,EAAQ,oBACvD,UAAA,gBAAA0B;AAAA,YAACY;AAAA,YAAA;AAAA,cACC,OAAO7B,KAAiB;AAAA,cACxB,eAAe,CAAC8B,MAAU7B,EAAiB6B,KAAS,IAAI;AAAA,cACxD,KAAK;AAAA,cACL,aAAavC,EAAQ;AAAA,cACrB,UAAUW;AAAA,YAAA;AAAA,UAAA,EACZ,CACF;AAAA,QAAA,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,IAGF,gBAAAe;AAAA,MAACK;AAAA,MAAA;AAAA,QACC,MAAMhB,MAAkB;AAAA,QACxB,cAAc,CAACyB,MAAS;AACtB,UAAKA,MACHxB,EAAiB,IAAI,GACrBE,EAAiB,EAAE,MAAM,aAAa;AAAA,QAE1C;AAAA,QACA,OAAOlB,EAAQ;AAAA,QACf,aAAaA,EAAQ;AAAA,QACrB,SACE,gBAAA0B;AAAA,UAACC;AAAA,UAAA;AAAA,YACC,SAAS,MAAM;AACb,cAAAX,EAAiB,IAAI,GACrBE,EAAiB,EAAE,MAAM,aAAa;AAAA,YACxC;AAAA,YAEC,UAAAlB,EAAQ;AAAA,UAAA;AAAA,QAAA;AAAA,QAIb,UAAA,gBAAAyB,EAAC,OAAA,EAAI,WAAU,wBACb,UAAA;AAAA,UAAA,gBAAAC;AAAA,YAACe;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,OAAOzC,EAAQ;AAAA,cACf,OAAOiB;AAAA,cACP,UAAUC;AAAA,cACV,YAAY;AAAA,cACZ,YAAU;AAAA,YAAA;AAAA,UAAA;AAAA,UAEZ,gBAAAQ;AAAA,YAACgB;AAAA,YAAA;AAAA,cACC,MAAM,gBAAAhB,EAACE,GAAA,EAAK,MAAK,QAAO,MAAK,MAAK;AAAA,cAClC,OAAO5B,EAAQ;AAAA,cACf,SAAS,MAAA;AAAM,gBAAKuB,EAAA;AAAA;AAAA,YAAW;AAAA,UAAA;AAAA,QACjC,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EACF,GACF;AAEJ;"}
@@ -0,0 +1,167 @@
1
+ import { jsx as l, jsxs as f } from "react/jsx-runtime";
2
+ import { useState as u } from "react";
3
+ import { AlertDialog as g } from "../Dialog.js";
4
+ import { Badge as v } from "../Badge.js";
5
+ import { DataTable as h, CellStack as C } from "../Table.js";
6
+ import { Icon as p } from "../Icon.js";
7
+ import { IconButton as b } from "../IconButton.js";
8
+ import { StatusSelect as A } from "../StatusSelect.js";
9
+ import { roleUnavailableReason as T } from "./RoleKeyPicker.js";
10
+ import { DateTimeText as k } from "../DateTimeText.js";
11
+ import { RelativeTime as N, useRelativeText as x } from "../RelativeTime.js";
12
+ import { EndedLine as R, IdleLine as L } from "./EndedLine.js";
13
+ import { useUiStrings as m } from "../../lib/i18n/provider.js";
14
+ function O({
15
+ apiKey: e,
16
+ busy: o,
17
+ editor: r
18
+ }) {
19
+ const { apiKeysTable: i, roleKeyPicker: a } = m();
20
+ if (r === void 0 || e.roleId === void 0 || e.ended !== void 0)
21
+ return /* @__PURE__ */ l(v, { tone: "neutral", children: e.roleLabel });
22
+ const t = new Set(r.ownPermissionKeys), n = (typeof r.roles == "function" ? r.roles(e) : r.roles).map((s) => {
23
+ const c = T(s, t, r.permissions, a.unavailable);
24
+ return { value: s.id, label: s.label, tone: "neutral", ...c === null ? {} : { refusal: c } };
25
+ });
26
+ return n.some((s) => s.value === e.roleId) || n.unshift({ value: e.roleId, label: e.roleLabel, tone: "neutral", refusal: i.roleNotAssignable }), /* @__PURE__ */ l(
27
+ A,
28
+ {
29
+ value: e.roleId,
30
+ options: n,
31
+ "aria-label": i.roleOf(e.name),
32
+ disabled: o,
33
+ onValueChange: (s) => {
34
+ s !== e.roleId && r.onChange(e.id, s);
35
+ }
36
+ }
37
+ );
38
+ }
39
+ function S({
40
+ apiKey: e,
41
+ busy: o,
42
+ onRevoke: r
43
+ }) {
44
+ const i = m().apiKeysTable, [a, t] = u(!1);
45
+ return /* @__PURE__ */ l(
46
+ g,
47
+ {
48
+ open: a,
49
+ onOpenChange: t,
50
+ trigger: /* @__PURE__ */ l(
51
+ b,
52
+ {
53
+ icon: /* @__PURE__ */ l(p, { name: "trash-2", size: "sm" }),
54
+ label: i.revoke(e.name),
55
+ tone: "danger",
56
+ size: "sm",
57
+ disabledReason: o ? i.revoking : void 0
58
+ }
59
+ ),
60
+ title: i.revokeTitle(e.name),
61
+ description: i.revokeDescription,
62
+ confirmLabel: i.revokeConfirm,
63
+ destructive: !0,
64
+ loading: o,
65
+ onConfirm: () => {
66
+ r(e.id), t(!1);
67
+ }
68
+ }
69
+ );
70
+ }
71
+ function U({
72
+ apiKey: e,
73
+ grant: o,
74
+ busy: r,
75
+ onRevokeGrant: i
76
+ }) {
77
+ const a = m().apiKeysTable, t = x(o.grantedAt), [d, n] = u(!1);
78
+ return /* @__PURE__ */ f("li", { className: "flex min-w-0 flex-col gap-0.5", children: [
79
+ /* @__PURE__ */ f("div", { className: "flex min-w-0 items-center gap-1", children: [
80
+ /* @__PURE__ */ l(v, { tone: "accent", size: "sm", children: `+ ${o.label}` }),
81
+ i && /* @__PURE__ */ l(
82
+ g,
83
+ {
84
+ open: d,
85
+ onOpenChange: n,
86
+ trigger: /* @__PURE__ */ l(
87
+ b,
88
+ {
89
+ icon: /* @__PURE__ */ l(p, { name: "x", size: "xs" }),
90
+ label: a.removeGrant(o.label, e.name),
91
+ tone: "danger",
92
+ size: "sm",
93
+ disabledReason: r ? a.updating : void 0
94
+ }
95
+ ),
96
+ title: a.removeGrantTitle(o.label),
97
+ description: a.removeGrantDescription,
98
+ confirmLabel: a.removeGrantConfirm,
99
+ destructive: !0,
100
+ loading: r,
101
+ onConfirm: () => {
102
+ i(e.id, o.id), n(!1);
103
+ }
104
+ }
105
+ )
106
+ ] }),
107
+ /* @__PURE__ */ l("span", { className: "text-xs break-words text-tertiary", children: a.granted(t, o.reason || void 0) })
108
+ ] });
109
+ }
110
+ function I({
111
+ apiKey: e,
112
+ busy: o,
113
+ onRevokeGrant: r,
114
+ renderName: i,
115
+ renderStatus: a
116
+ }) {
117
+ const t = m().apiKeysTable, d = x(e.createdAt), n = e.grants ?? [], s = a?.(e);
118
+ return /* @__PURE__ */ f("div", { className: "flex min-w-0 flex-col gap-2", children: [
119
+ /* @__PURE__ */ l(C, { primary: i?.(e) ?? e.name, secondary: t.created(d) }),
120
+ e.ended && /* @__PURE__ */ l(R, { ended: e.ended }),
121
+ e.idle && /* @__PURE__ */ l(L, { idle: e.idle }),
122
+ s,
123
+ n.length > 0 && /* @__PURE__ */ l("ul", { "aria-label": t.grantsOf(e.name), className: "flex min-w-0 flex-col gap-1.5", children: n.map((c) => /* @__PURE__ */ l(U, { apiKey: e, grant: c, busy: o, onRevokeGrant: e.ended === void 0 ? r : void 0 }, c.id)) })
124
+ ] });
125
+ }
126
+ function z(e, o, r, i, a, t, d) {
127
+ return [
128
+ {
129
+ id: "key",
130
+ header: e.columnKey,
131
+ accessorFn: (n) => n.name,
132
+ cell: ({ row: n }) => /* @__PURE__ */ l(I, { apiKey: n.original, busy: o === n.original.id, onRevokeGrant: a, renderName: t, renderStatus: d })
133
+ },
134
+ {
135
+ id: "role",
136
+ header: e.columnRole,
137
+ accessorFn: (n) => n.roleLabel,
138
+ cell: ({ row: n }) => /* @__PURE__ */ l(O, { apiKey: n.original, busy: o === n.original.id, editor: i })
139
+ },
140
+ {
141
+ id: "lastUsed",
142
+ header: e.columnLastUsed,
143
+ accessorFn: (n) => n.lastUsedAt ?? "",
144
+ cell: ({ row: n }) => /* @__PURE__ */ l("span", { className: "text-secondary", children: n.original.lastUsedAt ? /* @__PURE__ */ l(N, { at: n.original.lastUsedAt }) : e.never })
145
+ },
146
+ {
147
+ id: "expires",
148
+ header: e.columnExpires,
149
+ accessorFn: (n) => n.expiresAt ?? "",
150
+ cell: ({ row: n }) => /* @__PURE__ */ l("span", { className: "text-secondary", children: n.original.expiresAt ? /* @__PURE__ */ l(k, { at: n.original.expiresAt }) : e.never })
151
+ },
152
+ {
153
+ id: "actions",
154
+ header: "",
155
+ enableSorting: !1,
156
+ cell: ({ row: n }) => /* @__PURE__ */ l("div", { className: "flex justify-end", children: n.original.ended === void 0 && /* @__PURE__ */ l(S, { apiKey: n.original, busy: o === n.original.id, onRevoke: r }) })
157
+ }
158
+ ];
159
+ }
160
+ function M({ keys: e, onRevoke: o, busyId: r, roleEditor: i, onRevokeGrant: a, renderName: t, renderStatus: d, className: n }) {
161
+ const s = m().apiKeysTable;
162
+ return /* @__PURE__ */ l(h, { columns: z(s, r, o, i, a, t, d), data: e, getRowId: (c) => String(c.id), className: n });
163
+ }
164
+ export {
165
+ M as ApiKeysTable
166
+ };
167
+ //# sourceMappingURL=ApiKeysTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApiKeysTable.js","sources":["../../../src/components/rbac/ApiKeysTable.tsx"],"sourcesContent":["import { useState, type ReactNode } from \"react\";\nimport type { ColumnDef } from \"@tanstack/react-table\";\nimport { AlertDialog } from \"../Dialog\";\nimport { Badge } from \"../Badge\";\nimport { CellStack, DataTable } from \"../Table\";\nimport { Icon } from \"../Icon\";\nimport { IconButton } from \"../IconButton\";\nimport { StatusSelect, type StatusOption } from \"../StatusSelect\";\nimport { roleUnavailableReason } from \"./RoleKeyPicker\";\nimport type { Permission, Role } from \"./types\";\nimport { DateTimeText } from \"../DateTimeText\";\nimport { RelativeTime, useRelativeText } from \"../RelativeTime\";\nimport { useUiStrings } from \"../../lib/i18n\";\nimport type { UiStrings } from \"../../lib/i18n\";\nimport { EndedLine, IdleLine, type EndedState, type IdleState } from \"./EndedLine\";\n\n/* ----------------------------------------------------------------------------\n API KEYS TABLE (DX-4425)\n\n THE ONE ROW SHAPE EVERY KEY LIST SHARES. `ApiKeysPanel` (the keys a person\n made for themselves) and `AgentKeysList` (the keys a worker or an agent\n session minted on their behalf) list the same credential: a name, the role it\n acts with, when it was last used, when it expires, and a confirmed revoke.\n Both render this table so a column change lands once. It is not exported from\n the package: a consumer reaches it through the two components that frame it.\n\n PRESENTATIONAL ONLY, like `SessionsList`: `onRevoke` fires only after the\n `AlertDialog` confirms.\n\n THE ROLE CELL EDITS IN PLACE (DX-4427) when the consumer passes `roleEditor`:\n the role badge IS the control (`StatusSelect`), so raising or lowering a live\n key's permissions needs no dialog and no revoke. A role the owner may not\n grant is listed with the reason (`roleUnavailableReason`, the same rule\n `RoleKeyPicker` applies when a key is issued). A key with no `roleId`, or no\n `roleEditor`, keeps the read-only badge.\n\n A KEY'S GRANTS SIT UNDER ITS NAME (DX-4433). An agent can ask its owner for a\n permission its role lacks (`PermissionRequestPanel`); an approval adds it to\n that one key on top of its role. Each grant shows as a \"+ Label\" chip with\n when it was granted and why, as text rather than a tooltip so a phone reads it\n too. With `onRevokeGrant` each chip carries its own remove control behind a\n confirm: dropping a grant is not revoking the key, and the role is untouched.\n Without the handler the chips are read-only, and a key with no grants renders\n exactly as before.\n\n A ROW CAN LINK AND CARRY A LIVE STATUS (DX-4487). `renderName` replaces the\n name text (a consumer renders its router's link, so the library stays\n router-agnostic) and `renderStatus` adds one line under the name (a readiness\n badge for a worker's key). Both are given the row; either may return `null`\n for a key that has neither, and omitting them renders exactly as before.\n ---------------------------------------------------------------------------- */\n\nexport interface ApiKey {\n id: number;\n name: string;\n /** The label of the role this key acts with. A label, not an id: a key can carry a role of a team other than the one whose\n * `roles` the create dialog offers, and only the consumer's server can name that one. */\n roleLabel: string;\n /** The id of that role, matching a `Role.id` in `roleEditor.roles`. Needed only for a key whose role is editable. */\n roleId?: string;\n /** ISO instant. */\n createdAt: string;\n /** ISO instant, or `null`/omitted if it has never been used. */\n lastUsedAt?: string | null;\n /** ISO instant, or `null`/omitted for a key with no expiry. */\n expiresAt?: string | null;\n /** Permissions added to this key on top of its role (DX-4433). Omit, or leave empty, for a key that holds only its role. */\n grants?: KeyGrant[];\n /** DX-5246: set on a key that has ended (revoked, expired or retired): the consumer's own words for how it ended (`label`) and the ISO instant it did (`at`). An ended row shows them under its name and offers no revoke, role change or grant removal. */\n ended?: EndedState;\n /** DX-5246: set on a key that still works but nobody is using (its session gone quiet, a script that stopped): the consumer's own words (`label`) and the ISO instant it was last in use (`at`). An idle row shows them under its name and keeps its revoke, role change and grant removal. */\n idle?: IdleState;\n}\n\n/** One permission an approved request added to a key, on top of its role. */\nexport interface KeyGrant {\n id: number;\n /** The permission key granted. Compared for equality only. */\n permissionKey: string;\n /** The permission's label, as shown on the chip and in the confirm. */\n label: string;\n /** ISO instant. */\n grantedAt: string;\n /** The reason the agent gave when it asked. Plain text. */\n reason?: string;\n}\n\n/** Makes a key's role editable in place. `roles` are the roles the owner may pick from: one list for every key, or a function\n * of the key when the keys do not share one (DX-4431: an agent session takes agent roles, a worker a human role that can manage workers). */\nexport interface KeyRoleEditor {\n roles: Role[] | ((apiKey: ApiKey) => Role[]);\n /** The permission catalog, used to name the permissions that make a role unavailable. */\n permissions: Permission[];\n /** What the owner holds. A role holding anything outside this set is listed but cannot be chosen. */\n ownPermissionKeys: string[];\n /** Fired when a different role is picked. The consumer saves it and refreshes `keys`. */\n onChange: (id: number, roleId: string) => Promise<void>;\n}\n\nfunction RoleCell({\n apiKey,\n busy,\n editor,\n}: {\n apiKey: ApiKey;\n busy: boolean;\n editor: KeyRoleEditor | undefined;\n}) {\n const { apiKeysTable: strings, roleKeyPicker } = useUiStrings();\n if (editor === undefined || apiKey.roleId === undefined || apiKey.ended !== undefined) {\n return <Badge tone=\"neutral\">{apiKey.roleLabel}</Badge>;\n }\n const own = new Set(editor.ownPermissionKeys);\n const roles = typeof editor.roles === \"function\" ? editor.roles(apiKey) : editor.roles;\n const options: StatusOption[] = roles.map((role) => {\n const refusal = roleUnavailableReason(role, own, editor.permissions, roleKeyPicker.unavailable);\n return { value: role.id, label: role.label, tone: \"neutral\", ...(refusal === null ? {} : { refusal }) };\n });\n // A key can carry a role outside the offered set (another team's); it is shown, never silently swapped for a listed one.\n if (!options.some((o) => o.value === apiKey.roleId)) {\n options.unshift({ value: apiKey.roleId, label: apiKey.roleLabel, tone: \"neutral\", refusal: strings.roleNotAssignable });\n }\n return (\n <StatusSelect\n value={apiKey.roleId}\n options={options}\n aria-label={strings.roleOf(apiKey.name)}\n disabled={busy}\n onValueChange={(roleId) => {\n if (roleId !== apiKey.roleId) void editor.onChange(apiKey.id, roleId);\n }}\n />\n );\n}\n\nfunction RevokeCell({\n apiKey,\n busy,\n onRevoke,\n}: {\n apiKey: ApiKey;\n busy: boolean;\n onRevoke: (id: number) => Promise<void>;\n}) {\n const strings = useUiStrings().apiKeysTable;\n const [confirmOpen, setConfirmOpen] = useState(false);\n\n return (\n <AlertDialog\n open={confirmOpen}\n onOpenChange={setConfirmOpen}\n trigger={\n <IconButton\n icon={<Icon name=\"trash-2\" size=\"sm\" />}\n label={strings.revoke(apiKey.name)}\n tone=\"danger\"\n size=\"sm\"\n disabledReason={busy ? strings.revoking : undefined}\n />\n }\n title={strings.revokeTitle(apiKey.name)}\n description={strings.revokeDescription}\n confirmLabel={strings.revokeConfirm}\n destructive\n loading={busy}\n onConfirm={() => {\n void onRevoke(apiKey.id);\n setConfirmOpen(false);\n }}\n />\n );\n}\n\nfunction GrantChip({\n apiKey,\n grant,\n busy,\n onRevokeGrant,\n}: {\n apiKey: ApiKey;\n grant: KeyGrant;\n busy: boolean;\n onRevokeGrant: ((keyId: number, grantId: number) => Promise<void>) | undefined;\n}) {\n const strings = useUiStrings().apiKeysTable;\n const grantedAge = useRelativeText(grant.grantedAt);\n const [confirmOpen, setConfirmOpen] = useState(false);\n return (\n <li className=\"flex min-w-0 flex-col gap-0.5\">\n <div className=\"flex min-w-0 items-center gap-1\">\n <Badge tone=\"accent\" size=\"sm\">{`+ ${grant.label}`}</Badge>\n {onRevokeGrant && (\n <AlertDialog\n open={confirmOpen}\n onOpenChange={setConfirmOpen}\n trigger={\n <IconButton\n icon={<Icon name=\"x\" size=\"xs\" />}\n label={strings.removeGrant(grant.label, apiKey.name)}\n tone=\"danger\"\n size=\"sm\"\n disabledReason={busy ? strings.updating : undefined}\n />\n }\n title={strings.removeGrantTitle(grant.label)}\n description={strings.removeGrantDescription}\n confirmLabel={strings.removeGrantConfirm}\n destructive\n loading={busy}\n onConfirm={() => {\n void onRevokeGrant(apiKey.id, grant.id);\n setConfirmOpen(false);\n }}\n />\n )}\n </div>\n <span className=\"text-xs break-words text-tertiary\">\n {strings.granted(grantedAge, grant.reason || undefined)}\n </span>\n </li>\n );\n}\n\nfunction KeyCell({\n apiKey,\n busy,\n onRevokeGrant,\n renderName,\n renderStatus,\n}: {\n apiKey: ApiKey;\n busy: boolean;\n onRevokeGrant: ((keyId: number, grantId: number) => Promise<void>) | undefined;\n renderName: ((apiKey: ApiKey) => ReactNode) | undefined;\n renderStatus: ((apiKey: ApiKey) => ReactNode) | undefined;\n}) {\n const strings = useUiStrings().apiKeysTable;\n const createdAge = useRelativeText(apiKey.createdAt);\n const grants = apiKey.grants ?? [];\n const status = renderStatus?.(apiKey);\n return (\n <div className=\"flex min-w-0 flex-col gap-2\">\n <CellStack primary={renderName?.(apiKey) ?? apiKey.name} secondary={strings.created(createdAge)} />\n {apiKey.ended && <EndedLine ended={apiKey.ended} />}\n {apiKey.idle && <IdleLine idle={apiKey.idle} />}\n {status}\n {grants.length > 0 && (\n <ul aria-label={strings.grantsOf(apiKey.name)} className=\"flex min-w-0 flex-col gap-1.5\">\n {grants.map((grant) => (\n <GrantChip key={grant.id} apiKey={apiKey} grant={grant} busy={busy} onRevokeGrant={apiKey.ended === undefined ? onRevokeGrant : undefined} />\n ))}\n </ul>\n )}\n </div>\n );\n}\n\nfunction buildColumns(\n strings: UiStrings[\"apiKeysTable\"],\n busyId: number | null | undefined,\n onRevoke: (id: number) => Promise<void>,\n roleEditor: KeyRoleEditor | undefined,\n onRevokeGrant: ((keyId: number, grantId: number) => Promise<void>) | undefined,\n renderName: ((apiKey: ApiKey) => ReactNode) | undefined,\n renderStatus: ((apiKey: ApiKey) => ReactNode) | undefined,\n): ColumnDef<ApiKey, unknown>[] {\n return [\n {\n id: \"key\",\n header: strings.columnKey,\n accessorFn: (k) => k.name,\n cell: ({ row }) => <KeyCell apiKey={row.original} busy={busyId === row.original.id} onRevokeGrant={onRevokeGrant} renderName={renderName} renderStatus={renderStatus} />,\n },\n {\n id: \"role\",\n header: strings.columnRole,\n accessorFn: (k) => k.roleLabel,\n cell: ({ row }) => <RoleCell apiKey={row.original} busy={busyId === row.original.id} editor={roleEditor} />,\n },\n {\n id: \"lastUsed\",\n header: strings.columnLastUsed,\n accessorFn: (k) => k.lastUsedAt ?? \"\",\n cell: ({ row }) => (\n <span className=\"text-secondary\">\n {row.original.lastUsedAt ? <RelativeTime at={row.original.lastUsedAt} /> : strings.never}\n </span>\n ),\n },\n {\n id: \"expires\",\n header: strings.columnExpires,\n accessorFn: (k) => k.expiresAt ?? \"\",\n cell: ({ row }) => (\n <span className=\"text-secondary\">\n {row.original.expiresAt ? <DateTimeText at={row.original.expiresAt} /> : strings.never}\n </span>\n ),\n },\n {\n id: \"actions\",\n header: \"\",\n enableSorting: false,\n cell: ({ row }) => (\n <div className=\"flex justify-end\">\n {row.original.ended === undefined && <RevokeCell apiKey={row.original} busy={busyId === row.original.id} onRevoke={onRevoke} />}\n </div>\n ),\n },\n ];\n}\n\nexport interface ApiKeysTableProps {\n keys: ApiKey[];\n onRevoke: (id: number) => Promise<void>;\n /** The id of a key currently mid-revoke, mid-role-change or mid-grant-removal. Disables just that row's controls. */\n busyId?: number | null;\n /** Makes each key's role editable in place (DX-4427). Omit for a read-only role badge. */\n roleEditor?: KeyRoleEditor;\n /** Makes each grant's chip removable (DX-4433). Fired only after the confirm dialog. Omit for read-only grant chips. */\n onRevokeGrant?: (keyId: number, grantId: number) => Promise<void>;\n /** Replaces a key's name text, e.g. with a link to what the key belongs to (DX-4487). Return `null` to keep the plain name. */\n renderName?: (apiKey: ApiKey) => ReactNode;\n /** One line under a key's name, e.g. a live status badge (DX-4487). Return `null` for a key with none. */\n renderStatus?: (apiKey: ApiKey) => ReactNode;\n className?: string;\n}\n\nexport function ApiKeysTable({ keys, onRevoke, busyId, roleEditor, onRevokeGrant, renderName, renderStatus, className }: ApiKeysTableProps) {\n const strings = useUiStrings().apiKeysTable;\n return <DataTable columns={buildColumns(strings, busyId, onRevoke, roleEditor, onRevokeGrant, renderName, renderStatus)} data={keys} getRowId={(k) => String(k.id)} className={className} />;\n}\n"],"names":["RoleCell","apiKey","busy","editor","strings","roleKeyPicker","useUiStrings","jsx","Badge","own","options","role","refusal","roleUnavailableReason","o","StatusSelect","roleId","RevokeCell","onRevoke","confirmOpen","setConfirmOpen","useState","AlertDialog","IconButton","Icon","GrantChip","grant","onRevokeGrant","grantedAge","useRelativeText","jsxs","KeyCell","renderName","renderStatus","createdAge","grants","status","CellStack","EndedLine","IdleLine","buildColumns","busyId","roleEditor","k","row","RelativeTime","DateTimeText","ApiKeysTable","keys","className","DataTable"],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { jsxs as m, jsx as e } from "react/jsx-runtime";
2
+ import { Avatar as n } from "../Avatar.js";
3
+ import { cn as i } from "../../lib/cn.js";
4
+ function d({ name: r, logoUrl: s, compact: t = !1, className: a }) {
5
+ return /* @__PURE__ */ m("span", { className: i("flex min-w-0 items-center gap-2.5", a), children: [
6
+ /* @__PURE__ */ e(n, { name: r, src: s ?? void 0, size: "sm", shape: "rounded" }),
7
+ !t && /* @__PURE__ */ e("span", { className: "truncate text-sm font-semibold text-primary", children: r })
8
+ ] });
9
+ }
10
+ export {
11
+ d as Brand
12
+ };
13
+ //# sourceMappingURL=Brand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Brand.js","sources":["../../../src/components/rbac/Brand.tsx"],"sourcesContent":["import { Avatar } from \"../Avatar\";\nimport { cn } from \"../../lib/cn\";\n\n/* ============================================================================\n BRAND\n\n A team's own brand mark — logo + name — for the ONE place every consuming\n app needs it rendered generically: the shell's sidebar brand slot\n (`AppShell`'s `brand`/`brandCollapsed` props) and the mobile top bar.\n `TeamSwitcher` already renders an equivalent brand inline as its trigger\n (see that file's own `brand` const) but is a heavier component — a\n popover, team-switching logic, membership data — that a consumer with\n only ONE team, or a plain \"show the current brand\" spot with no switching\n affordance (a collapsed rail, the mobile top bar), should not have to pull\n in. `Brand` is the split of that same visual out into its own reusable,\n presentational piece: data + a `compact` flag in, nothing else.\n\n `compact` IS THE LOGO-ONLY MODE `AppShell`'s `brandCollapsed` slot needs\n (DX-3412) — the team name is dropped entirely rather than truncated,\n since the collapsed rail has no room for text at all.\n ========================================================================= */\n\nexport interface BrandProps {\n name: string;\n logoUrl?: string | null;\n /** Logo only, no team name — the collapsed-rail / icon-only rendering. */\n compact?: boolean;\n className?: string;\n}\n\nexport function Brand({ name, logoUrl, compact = false, className }: BrandProps) {\n return (\n <span className={cn(\"flex min-w-0 items-center gap-2.5\", className)}>\n <Avatar name={name} src={logoUrl ?? undefined} size=\"sm\" shape=\"rounded\" />\n {!compact && <span className=\"truncate text-sm font-semibold text-primary\">{name}</span>}\n </span>\n );\n}\n"],"names":["Brand","name","logoUrl","compact","className","cn","jsx","Avatar"],"mappings":";;;AA8BO,SAASA,EAAM,EAAE,MAAAC,GAAM,SAAAC,GAAS,SAAAC,IAAU,IAAO,WAAAC,KAAyB;AAC/E,2BACG,QAAA,EAAK,WAAWC,EAAG,qCAAqCD,CAAS,GAChE,UAAA;AAAA,IAAA,gBAAAE,EAACC,GAAA,EAAO,MAAAN,GAAY,KAAKC,KAAW,QAAW,MAAK,MAAK,OAAM,UAAA,CAAU;AAAA,IACxE,CAACC,KAAW,gBAAAG,EAAC,QAAA,EAAK,WAAU,+CAA+C,UAAAL,EAAA,CAAK;AAAA,EAAA,GACnF;AAEJ;"}
@@ -0,0 +1,18 @@
1
+ import { useRBAC as n } from "./RBACProvider.js";
2
+ function d(o) {
3
+ const { hasPermission: r } = n();
4
+ return r(o);
5
+ }
6
+ function l({ permission: o, anyOf: r, fallback: i = null, children: t }) {
7
+ const { hasPermission: e } = n();
8
+ if (o !== void 0 && r !== void 0)
9
+ throw new Error("<Can> takes exactly one of `permission` or `anyOf`, not both.");
10
+ if (o === void 0 && r === void 0)
11
+ throw new Error("<Can> requires either `permission` or `anyOf`.");
12
+ return (o !== void 0 ? e(o) : r.some((s) => e(s))) ? t : i;
13
+ }
14
+ export {
15
+ l as Can,
16
+ d as useHasPermission
17
+ };
18
+ //# sourceMappingURL=Can.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Can.js","sources":["../../../src/components/rbac/Can.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { useRBAC } from \"./RBACProvider\";\n\n/* ============================================================================\n CAN — the one place a consumer answers \"should this control even be on\n screen right now.\"\n\n READS effectivePermissionKeys THROUGH `hasPermission`, NEVER A ROLE NAME.\n Same arm's-length relationship the rest of this folder keeps with a\n consumer's data (see the block comment atop `types.ts`): this component has\n no idea what permission key `\"cards.delete\"` means, only whether the\n CURRENT effective role (impersonation-aware, via `RBACProvider`) carries it.\n A gate keyed on a role's `id`/`label` instead of a permission key is exactly\n the coupling this component exists to avoid — it would silently drift the\n moment a consumer renamed or re-scoped a role without also touching every\n gate.\n\n EXACTLY ONE OF `permission` / `anyOf`, ON PURPOSE. A component that silently\n accepted both, or neither, would leave a caller guessing which one won. Both\n throw, the same \"fail loud at the call site\" convention `useRBAC` itself\n uses for a missing provider — a gate that silently defaults to \"show\" or\n \"hide\" on a malformed call is worse than one that refuses to render at all,\n since the malformed call is exactly the case where the person reading the\n screen most needs the mistake to be visible.\n\n HIDE IS THE ONLY BUILT-IN OUTCOME. This deliberately does not grow a\n `mode=\"disable\"` — disabling a `Button` and disabling a `ToggleGroup` are\n different props on different components, so there is no one generic way to\n \"disable the children\" that would not eventually special-case every\n component in the library. A consumer that wants a disabled-with-tooltip\n affordance instead of hiding reads `useHasPermission` directly and passes\n the result to whichever control's own `disabled`/tooltip props fit that\n control — `Can` stays the right tool for \"don't render this at all,\" which\n is what most of a permission-gated app actually needs.\n ========================================================================= */\n\nexport interface CanProps {\n /** A single permission key the effective role must carry. */\n permission?: string;\n /** Rendered when the effective role carries ANY of these keys. */\n anyOf?: string[];\n /** Shown when the permission check fails. Defaults to nothing at all. */\n fallback?: ReactNode;\n children: ReactNode;\n}\n\n/**\n * Reads `hasPermission` off `useRBAC()` directly — the same derived function\n * `Can` itself calls — so a consumer that needs the boolean without wanting\n * `Can`'s all-or-nothing render (to feed a `disabled` prop, a tooltip, a\n * conditional menu section) never has to reach past this component's own\n * public surface to get it.\n */\nexport function useHasPermission(key: string): boolean {\n const { hasPermission } = useRBAC();\n return hasPermission(key);\n}\n\nexport function Can({ permission, anyOf, fallback = null, children }: CanProps): ReactNode {\n const { hasPermission } = useRBAC();\n\n if (permission !== undefined && anyOf !== undefined) {\n throw new Error(\"<Can> takes exactly one of `permission` or `anyOf`, not both.\");\n }\n if (permission === undefined && anyOf === undefined) {\n throw new Error(\"<Can> requires either `permission` or `anyOf`.\");\n }\n\n const allowed =\n permission !== undefined ? hasPermission(permission) : anyOf!.some((key) => hasPermission(key));\n\n return allowed ? children : fallback;\n}\n"],"names":["useHasPermission","key","hasPermission","useRBAC","Can","permission","anyOf","fallback","children"],"mappings":";AAqDO,SAASA,EAAiBC,GAAsB;AACrD,QAAM,EAAE,eAAAC,EAAA,IAAkBC,EAAA;AAC1B,SAAOD,EAAcD,CAAG;AAC1B;AAEO,SAASG,EAAI,EAAE,YAAAC,GAAY,OAAAC,GAAO,UAAAC,IAAW,MAAM,UAAAC,KAAiC;AACzF,QAAM,EAAE,eAAAN,EAAA,IAAkBC,EAAA;AAE1B,MAAIE,MAAe,UAAaC,MAAU;AACxC,UAAM,IAAI,MAAM,+DAA+D;AAEjF,MAAID,MAAe,UAAaC,MAAU;AACxC,UAAM,IAAI,MAAM,gDAAgD;AAMlE,UAFED,MAAe,SAAYH,EAAcG,CAAU,IAAIC,EAAO,KAAK,CAACL,MAAQC,EAAcD,CAAG,CAAC,KAE/EO,IAAWD;AAC9B;"}
@@ -0,0 +1,73 @@
1
+ import { jsx as s, jsxs as M } from "react/jsx-runtime";
2
+ import { useState as l } from "react";
3
+ import { Button as N } from "../Button.js";
4
+ import { Callout as R } from "../Callout.js";
5
+ import { Field as c } from "../Field.js";
6
+ import { PasswordInput as f } from "../PasswordInput.js";
7
+ import { PasswordRequirements as j } from "../PasswordRequirements.js";
8
+ import { useUiStrings as E } from "../../lib/i18n/provider.js";
9
+ function G(a) {
10
+ const { passwordRules: P, submitLabel: y, className: F } = a, t = E().changePasswordForm, [o, g] = l(""), [r, h] = l(""), [n, b] = l(""), [i, w] = l(!1), [p, C] = l(null), u = a.hasCurrentPassword !== !1, m = u ? { failedTitle: t.failedTitle, failedMessage: t.failedMessage, submit: t.submit } : { failedTitle: t.setFailedTitle, failedMessage: t.setFailedMessage, submit: t.setSubmit }, d = P(r), T = d.length === 0 || d.every((e) => e.met), v = n.length > 0 && n !== r, S = (!u || o.length > 0) && r.length > 0 && n.length > 0 && T && !v && !i;
11
+ async function q(e) {
12
+ if (e.preventDefault(), !!S) {
13
+ w(!0), C(null);
14
+ try {
15
+ a.hasCurrentPassword === !1 ? await a.onSubmit(r) : await a.onSubmit(o, r), g(""), h(""), b("");
16
+ } catch (x) {
17
+ C(x instanceof Error ? x.message : m.failedMessage);
18
+ } finally {
19
+ w(!1);
20
+ }
21
+ }
22
+ }
23
+ return /* @__PURE__ */ s("form", { className: F, onSubmit: (e) => {
24
+ q(e);
25
+ }, children: /* @__PURE__ */ M("div", { className: "flex flex-col gap-4", children: [
26
+ p && /* @__PURE__ */ s(R, { tone: "danger", title: m.failedTitle, children: p }),
27
+ u && /* @__PURE__ */ s(c, { label: t.current, children: /* @__PURE__ */ s(
28
+ f,
29
+ {
30
+ value: o,
31
+ onChange: (e) => g(e.target.value),
32
+ autoComplete: "current-password",
33
+ disabled: i,
34
+ required: !0
35
+ }
36
+ ) }),
37
+ /* @__PURE__ */ M(c, { label: t.next, children: [
38
+ /* @__PURE__ */ s(
39
+ f,
40
+ {
41
+ value: r,
42
+ onChange: (e) => h(e.target.value),
43
+ autoComplete: "new-password",
44
+ disabled: i,
45
+ required: !0
46
+ }
47
+ ),
48
+ /* @__PURE__ */ s(j, { rules: d, className: "mt-2" })
49
+ ] }),
50
+ /* @__PURE__ */ s(
51
+ c,
52
+ {
53
+ label: t.confirmPassword,
54
+ error: v ? t.mismatch : void 0,
55
+ children: /* @__PURE__ */ s(
56
+ f,
57
+ {
58
+ value: n,
59
+ onChange: (e) => b(e.target.value),
60
+ autoComplete: "new-password",
61
+ disabled: i,
62
+ required: !0
63
+ }
64
+ )
65
+ }
66
+ ),
67
+ /* @__PURE__ */ s("div", { children: /* @__PURE__ */ s(N, { type: "submit", disabled: !S, loading: i, children: y ?? m.submit }) })
68
+ ] }) });
69
+ }
70
+ export {
71
+ G as ChangePasswordForm
72
+ };
73
+ //# sourceMappingURL=ChangePasswordForm.js.map