@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,138 @@
1
+ import { jsx as n, jsxs as d } from "react/jsx-runtime";
2
+ import { Avatar as p } from "../Avatar.js";
3
+ import { AlertDialog as g } from "../Dialog.js";
4
+ import { IconButton as v } from "../IconButton.js";
5
+ import { Icon as u } from "../Icon.js";
6
+ import { Select as h, SelectItem as x } from "../Select.js";
7
+ import { TableEmptyState as y, DataTable as R, CellStack as b } from "../Table.js";
8
+ import { RelativeTime as C } from "../RelativeTime.js";
9
+ import { useUiStrings as m } from "../../lib/i18n/provider.js";
10
+ function N({
11
+ member: e,
12
+ assignableRoles: l,
13
+ busy: s,
14
+ onChangeRole: a
15
+ }) {
16
+ const t = m().membersPanel, c = l.some((o) => o.id === e.role.id) ? l : [...l, e.role], i = s || e.disabledReason !== void 0;
17
+ return /* @__PURE__ */ d("div", { className: "flex flex-col gap-1", children: [
18
+ /* @__PURE__ */ n(
19
+ h,
20
+ {
21
+ "aria-label": t.roleFor(e.user.name),
22
+ value: e.role.id,
23
+ onValueChange: (o) => {
24
+ const r = o;
25
+ r && r !== e.role.id && a(e.user.id, r);
26
+ },
27
+ disabled: i,
28
+ size: "sm",
29
+ children: c.map((o) => /* @__PURE__ */ n(x, { value: o.id, children: o.label }, o.id))
30
+ }
31
+ ),
32
+ e.disabledReason && /* @__PURE__ */ n("span", { className: "text-2xs text-tertiary", children: e.disabledReason })
33
+ ] });
34
+ }
35
+ function j({
36
+ member: e,
37
+ busy: l,
38
+ onRemove: s
39
+ }) {
40
+ const a = m().membersPanel, t = e.disabledReason ?? (l ? a.removing : void 0);
41
+ return /* @__PURE__ */ n(
42
+ g,
43
+ {
44
+ trigger: /* @__PURE__ */ n(
45
+ v,
46
+ {
47
+ icon: /* @__PURE__ */ n(u, { name: "trash-2", size: "sm" }),
48
+ label: a.remove(e.user.name),
49
+ tone: "danger",
50
+ size: "sm",
51
+ disabledReason: t
52
+ }
53
+ ),
54
+ title: a.removeTitle(e.user.name),
55
+ description: e.disabledReason ?? a.removeDescription(e.user.name),
56
+ confirmLabel: a.removeConfirm,
57
+ destructive: !0,
58
+ loading: l,
59
+ onConfirm: () => s(e.user.id)
60
+ }
61
+ );
62
+ }
63
+ function S(e, l, s, a, t, c) {
64
+ return [
65
+ {
66
+ id: "member",
67
+ header: e.columnMember,
68
+ accessorFn: (i) => i.user.name,
69
+ cell: ({ row: i }) => {
70
+ const { user: o } = i.original, r = /* @__PURE__ */ n(b, { primary: o.name, secondary: o.email });
71
+ return /* @__PURE__ */ d("div", { className: "flex items-center gap-3", children: [
72
+ /* @__PURE__ */ n(p, { src: o.avatarUrl, name: o.name, size: "sm" }),
73
+ c === void 0 ? r : /* @__PURE__ */ d("div", { className: "flex min-w-0 flex-col gap-1", children: [
74
+ r,
75
+ c(i.original)
76
+ ] })
77
+ ] });
78
+ }
79
+ },
80
+ {
81
+ id: "role",
82
+ header: e.columnRole,
83
+ accessorFn: (i) => i.role.label,
84
+ cell: ({ row: i }) => /* @__PURE__ */ n(
85
+ N,
86
+ {
87
+ member: i.original,
88
+ assignableRoles: l,
89
+ busy: s === i.original.user.id,
90
+ onChangeRole: a
91
+ }
92
+ )
93
+ },
94
+ {
95
+ id: "joined",
96
+ header: e.columnJoined,
97
+ accessorFn: (i) => i.joinedAt,
98
+ cell: ({ row: i }) => /* @__PURE__ */ n("span", { className: "text-secondary", children: /* @__PURE__ */ n(C, { at: i.original.joinedAt }) })
99
+ },
100
+ {
101
+ id: "actions",
102
+ header: "",
103
+ enableSorting: !1,
104
+ cell: ({ row: i }) => /* @__PURE__ */ n("div", { className: "flex justify-end", children: /* @__PURE__ */ n(
105
+ j,
106
+ {
107
+ member: i.original,
108
+ busy: s === i.original.user.id,
109
+ onRemove: t
110
+ }
111
+ ) })
112
+ }
113
+ ];
114
+ }
115
+ function J({
116
+ members: e,
117
+ assignableRoles: l,
118
+ onChangeRole: s,
119
+ onRemove: a,
120
+ busyUserId: t,
121
+ renderMemberExtra: c,
122
+ emptyState: i,
123
+ className: o
124
+ }) {
125
+ const r = m().membersPanel, f = S(r, l, t, s, a, c);
126
+ return e.length === 0 ? i ?? /* @__PURE__ */ n(
127
+ y,
128
+ {
129
+ icon: /* @__PURE__ */ n(u, { name: "users", size: "lg", className: "text-tertiary" }),
130
+ title: r.emptyTitle,
131
+ description: r.emptyDescription
132
+ }
133
+ ) : /* @__PURE__ */ n(R, { columns: f, data: e, className: o });
134
+ }
135
+ export {
136
+ J as MembersPanel
137
+ };
138
+ //# sourceMappingURL=MembersPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MembersPanel.js","sources":["../../../src/components/rbac/MembersPanel.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport type { ColumnDef } from \"@tanstack/react-table\";\nimport { Avatar } from \"../Avatar\";\nimport { AlertDialog } from \"../Dialog\";\nimport { IconButton } from \"../IconButton\";\nimport { Icon } from \"../Icon\";\nimport { Select, SelectItem } from \"../Select\";\nimport { CellStack, DataTable, TableEmptyState } from \"../Table\";\nimport { RelativeTime } from \"../RelativeTime\";\nimport { useUiStrings } from \"../../lib/i18n\";\nimport type { UiStrings } from \"../../lib/i18n\";\nimport type { Role, User } from \"./types\";\n\n/* ----------------------------------------------------------------------------\n MEMBERS PANEL\n\n A team's member list: who's in it, their role, when they joined, and the\n two mutations a member list ever needs — change a member's role, or remove\n them. Composes `DataTable` (PLN-13 R-3/plan direction, 2026-09-27: \"there\n are no team-specific table components\" — this is the library's ONE table\n primitive, fed team-member rows, not a second one).\n\n PRESENTATIONAL ONLY. Every mutation is a callback; the panel never fetches\n and knows nothing about HTTP, permission keys, or what \"owner\" means to a\n consumer's own catalog — it renders whatever `members[]` / `assignableRoles[]`\n it is handed, same relationship every other `rbac/` component has with its\n data (see `types.ts`'s own header).\n\n `disabledReason` is per-row, not a panel-wide flag: a consumer computes it\n once (e.g. \"the team's only owner\" for the sole `role.key === \"owner\"` row)\n and the row's role Select and remove control both go inert with that text\n as their tooltip/description, rather than the caller re-deriving the same\n rule in two places or the panel guessing at role semantics it has no\n business knowing.\n -------------------------------------------------------------------------- */\n\nexport interface MembersPanelMember {\n user: User;\n /** The member's CURRENT role. */\n role: Role;\n /** ISO timestamp of when the member joined the team. */\n joinedAt: string;\n /** Non-null disables this row's role Select and remove control, with this\n * text as the reason shown alongside them (e.g. \"The team's only owner\"). */\n disabledReason?: string;\n}\n\nexport interface MembersPanelProps {\n members: MembersPanelMember[];\n /** The roles a member may be changed TO — the role Select's options. A row\n * whose own role is not listed still shows that role (its label is kept as\n * that row's one extra option); it is never offered to any other row. */\n assignableRoles: Role[];\n onChangeRole: (userId: string, roleId: string) => void;\n onRemove: (userId: string) => void;\n /** The id of a row currently mid-mutation. Disables just that row rather\n * than the whole panel, so an operator working through several rows in a\n * row is never blocked on the last one's round trip. */\n busyUserId?: string | null;\n /** Extra content drawn inside each member's row, below the name and email,\n * given that row's member. Absent, the row is exactly the default one. */\n renderMemberExtra?: (member: MembersPanelMember) => ReactNode;\n emptyState?: ReactNode;\n className?: string;\n}\n\nfunction RoleCell({\n member,\n assignableRoles,\n busy,\n onChangeRole,\n}: {\n member: MembersPanelMember;\n assignableRoles: Role[];\n busy: boolean;\n onChangeRole: (userId: string, roleId: string) => void;\n}) {\n const strings = useUiStrings().membersPanel;\n const options = assignableRoles.some((r) => r.id === member.role.id)\n ? assignableRoles\n : [...assignableRoles, member.role];\n const disabled = busy || member.disabledReason !== undefined;\n return (\n <div className=\"flex flex-col gap-1\">\n <Select\n aria-label={strings.roleFor(member.user.name)}\n value={member.role.id}\n onValueChange={(value) => {\n const roleId = value as string | null;\n if (roleId && roleId !== member.role.id) onChangeRole(member.user.id, roleId);\n }}\n disabled={disabled}\n size=\"sm\"\n >\n {options.map((role) => (\n <SelectItem key={role.id} value={role.id}>\n {role.label}\n </SelectItem>\n ))}\n </Select>\n {member.disabledReason && <span className=\"text-2xs text-tertiary\">{member.disabledReason}</span>}\n </div>\n );\n}\n\nfunction RemoveCell({\n member,\n busy,\n onRemove,\n}: {\n member: MembersPanelMember;\n busy: boolean;\n onRemove: (userId: string) => void;\n}) {\n const strings = useUiStrings().membersPanel;\n const disabledReason = member.disabledReason ?? (busy ? strings.removing : undefined);\n return (\n <AlertDialog\n trigger={\n <IconButton\n icon={<Icon name=\"trash-2\" size=\"sm\" />}\n label={strings.remove(member.user.name)}\n tone=\"danger\"\n size=\"sm\"\n disabledReason={disabledReason}\n />\n }\n title={strings.removeTitle(member.user.name)}\n description={member.disabledReason ?? strings.removeDescription(member.user.name)}\n confirmLabel={strings.removeConfirm}\n destructive\n loading={busy}\n onConfirm={() => onRemove(member.user.id)}\n />\n );\n}\n\nfunction buildColumns(\n strings: UiStrings[\"membersPanel\"],\n assignableRoles: Role[],\n busyUserId: string | null | undefined,\n onChangeRole: (userId: string, roleId: string) => void,\n onRemove: (userId: string) => void,\n renderMemberExtra: ((member: MembersPanelMember) => ReactNode) | undefined,\n): ColumnDef<MembersPanelMember, unknown>[] {\n return [\n {\n id: \"member\",\n header: strings.columnMember,\n accessorFn: (m) => m.user.name,\n cell: ({ row }) => {\n const { user } = row.original;\n const stack = <CellStack primary={user.name} secondary={user.email} />;\n return (\n <div className=\"flex items-center gap-3\">\n <Avatar src={user.avatarUrl} name={user.name} size=\"sm\" />\n {renderMemberExtra === undefined ? (\n stack\n ) : (\n <div className=\"flex min-w-0 flex-col gap-1\">\n {stack}\n {renderMemberExtra(row.original)}\n </div>\n )}\n </div>\n );\n },\n },\n {\n id: \"role\",\n header: strings.columnRole,\n accessorFn: (m) => m.role.label,\n cell: ({ row }) => (\n <RoleCell\n member={row.original}\n assignableRoles={assignableRoles}\n busy={busyUserId === row.original.user.id}\n onChangeRole={onChangeRole}\n />\n ),\n },\n {\n id: \"joined\",\n header: strings.columnJoined,\n accessorFn: (m) => m.joinedAt,\n cell: ({ row }) => <span className=\"text-secondary\"><RelativeTime at={row.original.joinedAt} /></span>,\n },\n {\n id: \"actions\",\n header: \"\",\n enableSorting: false,\n cell: ({ row }) => (\n <div className=\"flex justify-end\">\n <RemoveCell\n member={row.original}\n busy={busyUserId === row.original.user.id}\n onRemove={onRemove}\n />\n </div>\n ),\n },\n ];\n}\n\nexport function MembersPanel({\n members,\n assignableRoles,\n onChangeRole,\n onRemove,\n busyUserId,\n renderMemberExtra,\n emptyState,\n className,\n}: MembersPanelProps) {\n const strings = useUiStrings().membersPanel;\n const columns = buildColumns(strings, assignableRoles, busyUserId, onChangeRole, onRemove, renderMemberExtra);\n\n if (members.length === 0) {\n return (\n emptyState ?? (\n <TableEmptyState\n icon={<Icon name=\"users\" size=\"lg\" className=\"text-tertiary\" />}\n title={strings.emptyTitle}\n description={strings.emptyDescription}\n />\n )\n );\n }\n\n return <DataTable columns={columns} data={members} className={className} />;\n}\n"],"names":["RoleCell","member","assignableRoles","busy","onChangeRole","strings","useUiStrings","options","r","disabled","jsxs","jsx","Select","value","roleId","role","SelectItem","RemoveCell","onRemove","disabledReason","AlertDialog","IconButton","Icon","buildColumns","busyUserId","renderMemberExtra","m","row","user","stack","CellStack","Avatar","RelativeTime","MembersPanel","members","emptyState","className","columns","TableEmptyState","DataTable"],"mappings":";;;;;;;;;AAkEA,SAASA,EAAS;AAAA,EAChB,QAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,MAAAC;AAAA,EACA,cAAAC;AACF,GAKG;AACD,QAAMC,IAAUC,IAAe,cACzBC,IAAUL,EAAgB,KAAK,CAACM,MAAMA,EAAE,OAAOP,EAAO,KAAK,EAAE,IAC/DC,IACA,CAAC,GAAGA,GAAiBD,EAAO,IAAI,GAC9BQ,IAAWN,KAAQF,EAAO,mBAAmB;AACnD,SACE,gBAAAS,EAAC,OAAA,EAAI,WAAU,uBACb,UAAA;AAAA,IAAA,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,cAAYP,EAAQ,QAAQJ,EAAO,KAAK,IAAI;AAAA,QAC5C,OAAOA,EAAO,KAAK;AAAA,QACnB,eAAe,CAACY,MAAU;AACxB,gBAAMC,IAASD;AACf,UAAIC,KAAUA,MAAWb,EAAO,KAAK,MAAIG,EAAaH,EAAO,KAAK,IAAIa,CAAM;AAAA,QAC9E;AAAA,QACA,UAAAL;AAAA,QACA,MAAK;AAAA,QAEJ,UAAAF,EAAQ,IAAI,CAACQ,MACZ,gBAAAJ,EAACK,GAAA,EAAyB,OAAOD,EAAK,IACnC,UAAAA,EAAK,MAAA,GADSA,EAAK,EAEtB,CACD;AAAA,MAAA;AAAA,IAAA;AAAA,IAEFd,EAAO,kBAAkB,gBAAAU,EAAC,UAAK,WAAU,0BAA0B,YAAO,eAAA,CAAe;AAAA,EAAA,GAC5F;AAEJ;AAEA,SAASM,EAAW;AAAA,EAClB,QAAAhB;AAAA,EACA,MAAAE;AAAA,EACA,UAAAe;AACF,GAIG;AACD,QAAMb,IAAUC,IAAe,cACzBa,IAAiBlB,EAAO,mBAAmBE,IAAOE,EAAQ,WAAW;AAC3E,SACE,gBAAAM;AAAA,IAACS;AAAA,IAAA;AAAA,MACC,SACE,gBAAAT;AAAA,QAACU;AAAA,QAAA;AAAA,UACC,MAAM,gBAAAV,EAACW,GAAA,EAAK,MAAK,WAAU,MAAK,MAAK;AAAA,UACrC,OAAOjB,EAAQ,OAAOJ,EAAO,KAAK,IAAI;AAAA,UACtC,MAAK;AAAA,UACL,MAAK;AAAA,UACL,gBAAAkB;AAAA,QAAA;AAAA,MAAA;AAAA,MAGJ,OAAOd,EAAQ,YAAYJ,EAAO,KAAK,IAAI;AAAA,MAC3C,aAAaA,EAAO,kBAAkBI,EAAQ,kBAAkBJ,EAAO,KAAK,IAAI;AAAA,MAChF,cAAcI,EAAQ;AAAA,MACtB,aAAW;AAAA,MACX,SAASF;AAAA,MACT,WAAW,MAAMe,EAASjB,EAAO,KAAK,EAAE;AAAA,IAAA;AAAA,EAAA;AAG9C;AAEA,SAASsB,EACPlB,GACAH,GACAsB,GACApB,GACAc,GACAO,GAC0C;AAC1C,SAAO;AAAA,IACL;AAAA,MACE,IAAI;AAAA,MACJ,QAAQpB,EAAQ;AAAA,MAChB,YAAY,CAACqB,MAAMA,EAAE,KAAK;AAAA,MAC1B,MAAM,CAAC,EAAE,KAAAC,QAAU;AACjB,cAAM,EAAE,MAAAC,MAASD,EAAI,UACfE,sBAASC,GAAA,EAAU,SAASF,EAAK,MAAM,WAAWA,EAAK,OAAO;AACpE,eACE,gBAAAlB,EAAC,OAAA,EAAI,WAAU,2BACb,UAAA;AAAA,UAAA,gBAAAC,EAACoB,GAAA,EAAO,KAAKH,EAAK,WAAW,MAAMA,EAAK,MAAM,MAAK,KAAA,CAAK;AAAA,UACvDH,MAAsB,SACrBI,IAEA,gBAAAnB,EAAC,OAAA,EAAI,WAAU,+BACZ,UAAA;AAAA,YAAAmB;AAAA,YACAJ,EAAkBE,EAAI,QAAQ;AAAA,UAAA,EAAA,CACjC;AAAA,QAAA,GAEJ;AAAA,MAEJ;AAAA,IAAA;AAAA,IAEF;AAAA,MACE,IAAI;AAAA,MACJ,QAAQtB,EAAQ;AAAA,MAChB,YAAY,CAACqB,MAAMA,EAAE,KAAK;AAAA,MAC1B,MAAM,CAAC,EAAE,KAAAC,EAAA,MACP,gBAAAhB;AAAA,QAACX;AAAA,QAAA;AAAA,UACC,QAAQ2B,EAAI;AAAA,UACZ,iBAAAzB;AAAA,UACA,MAAMsB,MAAeG,EAAI,SAAS,KAAK;AAAA,UACvC,cAAAvB;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,IAGJ;AAAA,MACE,IAAI;AAAA,MACJ,QAAQC,EAAQ;AAAA,MAChB,YAAY,CAACqB,MAAMA,EAAE;AAAA,MACrB,MAAM,CAAC,EAAE,KAAAC,EAAA,MAAU,gBAAAhB,EAAC,QAAA,EAAK,WAAU,kBAAiB,4BAACqB,GAAA,EAAa,IAAIL,EAAI,SAAS,UAAU,EAAA,CAAE;AAAA,IAAA;AAAA,IAEjG;AAAA,MACE,IAAI;AAAA,MACJ,QAAQ;AAAA,MACR,eAAe;AAAA,MACf,MAAM,CAAC,EAAE,KAAAA,EAAA,MACP,gBAAAhB,EAAC,OAAA,EAAI,WAAU,oBACb,UAAA,gBAAAA;AAAA,QAACM;AAAA,QAAA;AAAA,UACC,QAAQU,EAAI;AAAA,UACZ,MAAMH,MAAeG,EAAI,SAAS,KAAK;AAAA,UACvC,UAAAT;AAAA,QAAA;AAAA,MAAA,EACF,CACF;AAAA,IAAA;AAAA,EAEJ;AAEJ;AAEO,SAASe,EAAa;AAAA,EAC3B,SAAAC;AAAA,EACA,iBAAAhC;AAAA,EACA,cAAAE;AAAA,EACA,UAAAc;AAAA,EACA,YAAAM;AAAA,EACA,mBAAAC;AAAA,EACA,YAAAU;AAAA,EACA,WAAAC;AACF,GAAsB;AACpB,QAAM/B,IAAUC,IAAe,cACzB+B,IAAUd,EAAalB,GAASH,GAAiBsB,GAAYpB,GAAcc,GAAUO,CAAiB;AAE5G,SAAIS,EAAQ,WAAW,IAEnBC,KACE,gBAAAxB;AAAA,IAAC2B;AAAA,IAAA;AAAA,MACC,wBAAOhB,GAAA,EAAK,MAAK,SAAQ,MAAK,MAAK,WAAU,iBAAgB;AAAA,MAC7D,OAAOjB,EAAQ;AAAA,MACf,aAAaA,EAAQ;AAAA,IAAA;AAAA,EAAA,IAMtB,gBAAAM,EAAC4B,GAAA,EAAU,SAAAF,GAAkB,MAAMH,GAAS,WAAAE,GAAsB;AAC3E;"}
@@ -0,0 +1,141 @@
1
+ import { jsxs as p, jsx as e, Fragment as u } from "react/jsx-runtime";
2
+ import { useState as j } from "react";
3
+ import { Callout as C } from "../Callout.js";
4
+ import { CheckboxField as q } from "../Choice.js";
5
+ import { DescriptionList as G } from "../DescriptionList.js";
6
+ import { FieldSet as A } from "../Field.js";
7
+ import { cn as H } from "../../lib/cn.js";
8
+ import { DateTimeText as S } from "../DateTimeText.js";
9
+ import { RelativeTime as W } from "../RelativeTime.js";
10
+ import { useApprovalActions as O, ApprovalHeader as U, ConfirmCodeCallout as z, ApprovalError as I, ApprovalButtons as J, ExpiredNotice as M, TerminalCallout as b } from "./approvalPanelParts.js";
11
+ import { groupByCategory as Q } from "./permissionSections.js";
12
+ import { useUiStrings as x } from "../../lib/i18n/provider.js";
13
+ function D(t, r) {
14
+ return [...new Set(t)].map((i) => r.find((o) => o.key === i) ?? { key: i, label: i });
15
+ }
16
+ function V(t, r, i) {
17
+ const { permissionRequest: o, approval: n } = t;
18
+ return [
19
+ { key: "key", term: o.key, value: r.keyName },
20
+ {
21
+ key: "requested",
22
+ term: n.requested,
23
+ value: /* @__PURE__ */ p(u, { children: [
24
+ /* @__PURE__ */ e(S, { at: r.requestedAt }),
25
+ " (",
26
+ /* @__PURE__ */ e(W, { at: r.requestedAt, tooltip: !1 }),
27
+ ")"
28
+ ] })
29
+ },
30
+ i && r.expiresAt ? { key: "expires", term: n.expires, value: /* @__PURE__ */ e(S, { at: r.expiresAt }) } : null
31
+ ].filter((c) => c !== null);
32
+ }
33
+ function T({ labels: t }) {
34
+ return /* @__PURE__ */ e("ul", { className: "mt-1 list-disc pl-5", children: t.map((r) => /* @__PURE__ */ e("li", { children: r }, r)) });
35
+ }
36
+ function X({
37
+ state: t,
38
+ request: r,
39
+ permissions: i,
40
+ expiredNote: o
41
+ }) {
42
+ const n = x().permissionRequest, a = r.grantedKeys && r.grantedKeys.length > 0 ? D(r.grantedKeys, i).map((c) => c.label) : null;
43
+ switch (t) {
44
+ case "approved":
45
+ return /* @__PURE__ */ e(b, { state: t, children: a ? /* @__PURE__ */ p(u, { children: [
46
+ n.approvedWithList,
47
+ /* @__PURE__ */ e(T, { labels: a })
48
+ ] }) : n.approvedNoList });
49
+ case "claimed":
50
+ return /* @__PURE__ */ e(b, { state: t, children: a ? /* @__PURE__ */ p(u, { children: [
51
+ n.claimedWithList,
52
+ /* @__PURE__ */ e(T, { labels: a })
53
+ ] }) : n.claimedNoList });
54
+ case "denied":
55
+ return /* @__PURE__ */ e(b, { state: t, children: n.denied });
56
+ case "expired":
57
+ return /* @__PURE__ */ e(M, { note: o, fallback: n.expiredFallback });
58
+ }
59
+ }
60
+ function Y({
61
+ permission: t,
62
+ held: r,
63
+ checked: i,
64
+ disabled: o,
65
+ onCheckedChange: n
66
+ }) {
67
+ const a = x().permissionRequest, c = t.description || !r ? /* @__PURE__ */ p(u, { children: [
68
+ t.description && /* @__PURE__ */ e("span", { className: "block", children: t.description }),
69
+ !r && /* @__PURE__ */ e("span", { className: "block text-danger-text", children: a.notHeld })
70
+ ] }) : void 0;
71
+ return /* @__PURE__ */ e(
72
+ q,
73
+ {
74
+ label: t.label,
75
+ description: c,
76
+ checked: i,
77
+ disabled: o || !r,
78
+ onCheckedChange: n
79
+ }
80
+ );
81
+ }
82
+ function ce({
83
+ request: t,
84
+ state: r,
85
+ permissions: i,
86
+ ownPermissionKeys: o,
87
+ onApprove: n,
88
+ onDeny: a,
89
+ expiredNote: c,
90
+ className: L
91
+ }) {
92
+ const f = x(), s = f.permissionRequest, k = new Set(o), g = D(t.permissionKeys, i), v = g.filter((l) => k.has(l.key)), [R, K] = j(/* @__PURE__ */ new Set()), y = v.filter((l) => !R.has(l.key)).map((l) => l.key), F = new Set(y), { busy: N, error: P, run: B } = O(), w = r === "pending";
93
+ function E(l, h) {
94
+ K((d) => {
95
+ const m = new Set(d);
96
+ return h ? m.delete(l) : m.add(l), m;
97
+ });
98
+ }
99
+ return /* @__PURE__ */ p("div", { className: H("flex flex-col gap-5", L), children: [
100
+ /* @__PURE__ */ e(U, { title: s.title, state: r }),
101
+ /* @__PURE__ */ e(G, { entries: V(f, t, w), className: "divide-y divide-border-subtle" }),
102
+ /* @__PURE__ */ p("figure", { className: "flex flex-col gap-1.5", children: [
103
+ /* @__PURE__ */ e("figcaption", { className: "text-xs font-medium text-secondary", children: s.reasonGiven }),
104
+ /* @__PURE__ */ e("blockquote", { className: "border-l-2 border-accent-border bg-surface-sunken py-2 pl-3 text-sm break-words whitespace-pre-wrap text-secondary", children: t.reason })
105
+ ] }),
106
+ w ? /* @__PURE__ */ p(u, { children: [
107
+ /* @__PURE__ */ e(z, { code: t.confirmCode }),
108
+ /* @__PURE__ */ e(C, { tone: "warning", title: f.approval.approveOnlyTitle, children: s.approveBody }),
109
+ /* @__PURE__ */ e(I, { error: P }),
110
+ v.length === 0 && /* @__PURE__ */ e(C, { tone: "danger", title: s.emptyTitle, children: s.emptyDescription }),
111
+ g.length > 0 && /* @__PURE__ */ e(A, { legend: s.legend, description: s.legendDescription, children: Q(g, s.otherCategory).map((l) => {
112
+ const h = l.items.map((d) => /* @__PURE__ */ e(
113
+ Y,
114
+ {
115
+ permission: d,
116
+ held: k.has(d.key),
117
+ checked: F.has(d.key),
118
+ disabled: N !== null,
119
+ onCheckedChange: (m) => E(d.key, m)
120
+ },
121
+ d.key
122
+ ));
123
+ return l.label === void 0 ? /* @__PURE__ */ e("div", { className: "flex flex-col gap-3", children: h }, "all") : /* @__PURE__ */ e(A, { legend: l.label, className: "gap-2.5", children: h }, l.label);
124
+ }) }),
125
+ /* @__PURE__ */ e(
126
+ J,
127
+ {
128
+ busy: N,
129
+ run: B,
130
+ onApprove: () => n(y),
131
+ onDeny: a,
132
+ approveDisabled: y.length === 0
133
+ }
134
+ )
135
+ ] }) : /* @__PURE__ */ e(X, { state: r, request: t, permissions: i, expiredNote: c })
136
+ ] });
137
+ }
138
+ export {
139
+ ce as PermissionRequestPanel
140
+ };
141
+ //# sourceMappingURL=PermissionRequestPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PermissionRequestPanel.js","sources":["../../../src/components/rbac/PermissionRequestPanel.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { Callout } from \"../Callout\";\nimport { CheckboxField } from \"../Choice\";\nimport { DescriptionList, type DescriptionListEntry } from \"../DescriptionList\";\nimport { FieldSet } from \"../Field\";\nimport { cn } from \"../../lib/cn\";\nimport { DateTimeText } from \"../DateTimeText\";\nimport { RelativeTime } from \"../RelativeTime\";\nimport { useUiStrings } from \"../../lib/i18n\";\nimport type { UiStrings } from \"../../lib/i18n\";\nimport {\n ApprovalButtons,\n ApprovalError,\n ApprovalHeader,\n ConfirmCodeCallout,\n ExpiredNotice,\n TerminalCallout,\n useApprovalActions,\n type AccessRequestState,\n type ExpiredNote,\n} from \"./approvalPanelParts\";\nimport { groupByCategory } from \"./permissionSections\";\nimport type { Permission } from \"./types\";\n\n/* ----------------------------------------------------------------------------\n PERMISSION REQUEST PANEL (DX-4433)\n\n THE SCREEN A PERSON SEES WHEN AN AGENT THAT ALREADY HOLDS A KEY ASKS FOR MORE.\n The key exists and acts with a role; the agent hit something that role does\n not allow and asked for specific permissions, with a reason. Approving adds\n the ones the person leaves checked to that key, on top of its role. This\n panel is the whole decision: which key is asking, why, the code to compare,\n which of the requested permissions to grant, approve or deny. It is the\n sibling of `AccessRequestPanel` (a request for a key and a role), and shares\n its header, confirm code, terminal callouts and busy / error handling with it\n (`approvalPanelParts`), so the two cards read as one screen.\n\n PRESENTATIONAL, like its sibling. It fetches nothing and knows no endpoint.\n `state` is whatever the consumer's server derived and is never assumed to\n follow a click: after `onApprove` resolves the panel stays \"pending\" until\n the consumer hands it `state=\"approved\"` (and `request.grantedKeys`).\n A rejection from `onApprove` / `onDeny` shows its message and re-enables the\n buttons.\n\n THE PERSON CAN GRANT LESS, NEVER MORE. Every grantable permission starts\n CHECKED, because the person is answering the agent's own ask, and unchecking\n is how a subset is approved: `onApprove` receives exactly the checked keys.\n A requested permission the approver does not hold (`ownPermissionKeys`) is\n shown unchecked and disabled with the reason, and is never passed to\n `onApprove`: nobody can hand out what they lack. The server refuses it\n anyway, so the disabled row is the same rule shown before the round trip.\n Approve is disabled while nothing is checked; Deny never is. With nothing\n grantable the panel says so and keeps only Deny.\n\n THE REASON IS THE AGENT'S WORDS, SO IT IS DATA. It renders as quoted plain\n text (React escapes it; no markdown, no links). The confirm code is for\n comparing, not copying, exactly as in `AccessRequestPanel`.\n\n A permission key the catalog does not know renders with the raw key as its\n label: an agent can ask for a key this consumer's catalog lacks, and the\n person must still see what is being asked rather than a blank row.\n ---------------------------------------------------------------------------- */\n\nexport interface PermissionRequest {\n /** The name of the key that is asking: what the agent's key is called. */\n keyName: string;\n /** The agent's stated reason, plain text. */\n reason: string;\n /** The permission keys requested, in the order the agent listed them. */\n permissionKeys: string[];\n /** ISO instant. */\n requestedAt: string;\n /** ISO instant. Shown while the request is pending. */\n expiresAt?: string;\n /** The short code the agent also displays. Compared by eye, never entered. */\n confirmCode: string;\n /** What was actually granted (a subset of `permissionKeys`). Shown once the request is approved or claimed. */\n grantedKeys?: string[];\n}\n\nexport interface PermissionRequestPanelProps {\n request: PermissionRequest;\n state: AccessRequestState;\n /** The permission catalog: labels, categories and descriptions for the requested keys. */\n permissions: Permission[];\n /** What the approver holds. A requested permission outside this set is shown disabled and can never be granted. */\n ownPermissionKeys: string[];\n /** Receives exactly the permission keys left checked. */\n onApprove: (permissionKeys: string[]) => Promise<void>;\n onDeny: () => Promise<void>;\n /**\n * Why an expired request expired and what its requester does next. Used only in the `expired` state; without it the readout says only\n * that nothing was granted.\n */\n expiredNote?: ExpiredNote;\n className?: string;\n}\n\n/** The catalog entry for each distinct requested key, in request order; a key the catalog lacks stands for itself. */\nfunction requestedPermissions(keys: string[], catalog: Permission[]): Permission[] {\n return [...new Set(keys)].map((key) => catalog.find((p) => p.key === key) ?? { key, label: key });\n}\n\nfunction factEntries(strings: UiStrings, request: PermissionRequest, pending: boolean): DescriptionListEntry[] {\n const { permissionRequest, approval } = strings;\n const entries: (DescriptionListEntry | null)[] = [\n { key: \"key\", term: permissionRequest.key, value: request.keyName },\n {\n key: \"requested\",\n term: approval.requested,\n value: (\n <>\n <DateTimeText at={request.requestedAt} /> (<RelativeTime at={request.requestedAt} tooltip={false} />)\n </>\n ),\n },\n pending && request.expiresAt ? { key: \"expires\", term: approval.expires, value: <DateTimeText at={request.expiresAt} /> } : null,\n ];\n return entries.filter((entry): entry is DescriptionListEntry => entry !== null);\n}\n\nfunction GrantedList({ labels }: { labels: string[] }) {\n return (\n <ul className=\"mt-1 list-disc pl-5\">\n {labels.map((label) => (\n <li key={label}>{label}</li>\n ))}\n </ul>\n );\n}\n\nfunction TerminalNotice({\n state,\n request,\n permissions,\n expiredNote,\n}: {\n state: Exclude<AccessRequestState, \"pending\">;\n request: PermissionRequest;\n permissions: Permission[];\n expiredNote: ExpiredNote | undefined;\n}) {\n const strings = useUiStrings().permissionRequest;\n const granted = request.grantedKeys && request.grantedKeys.length > 0\n ? requestedPermissions(request.grantedKeys, permissions).map((p) => p.label)\n : null;\n switch (state) {\n case \"approved\":\n return (\n <TerminalCallout state={state}>\n {granted ? (\n <>\n {strings.approvedWithList}\n <GrantedList labels={granted} />\n </>\n ) : (\n strings.approvedNoList\n )}\n </TerminalCallout>\n );\n case \"claimed\":\n return (\n <TerminalCallout state={state}>\n {granted ? (\n <>\n {strings.claimedWithList}\n <GrantedList labels={granted} />\n </>\n ) : (\n strings.claimedNoList\n )}\n </TerminalCallout>\n );\n case \"denied\":\n return (\n <TerminalCallout state={state}>\n {strings.denied}\n </TerminalCallout>\n );\n case \"expired\":\n return <ExpiredNotice note={expiredNote} fallback={strings.expiredFallback} />;\n }\n}\n\nfunction PermissionCheckbox({\n permission,\n held,\n checked,\n disabled,\n onCheckedChange,\n}: {\n permission: Permission;\n held: boolean;\n checked: boolean;\n disabled: boolean;\n onCheckedChange: (checked: boolean) => void;\n}) {\n const strings = useUiStrings().permissionRequest;\n const description =\n permission.description || !held ? (\n <>\n {permission.description && <span className=\"block\">{permission.description}</span>}\n {!held && <span className=\"block text-danger-text\">{strings.notHeld}</span>}\n </>\n ) : undefined;\n return (\n <CheckboxField\n label={permission.label}\n description={description}\n checked={checked}\n disabled={disabled || !held}\n onCheckedChange={onCheckedChange}\n />\n );\n}\n\nexport function PermissionRequestPanel({\n request,\n state,\n permissions,\n ownPermissionKeys,\n onApprove,\n onDeny,\n expiredNote,\n className,\n}: PermissionRequestPanelProps) {\n const allStrings = useUiStrings();\n const strings = allStrings.permissionRequest;\n const own = new Set(ownPermissionKeys);\n const requested = requestedPermissions(request.permissionKeys, permissions);\n const grantable = requested.filter((p) => own.has(p.key));\n // What the person unchecked, not what they checked: every grantable permission starts checked, and the checked set is\n // derived, so permissions that arrive or become grantable after mount start checked too and Approve can never submit a\n // key the rows show as unavailable.\n const [dropped, setDropped] = useState<ReadonlySet<string>>(new Set());\n const checkedKeys = grantable.filter((p) => !dropped.has(p.key)).map((p) => p.key);\n const checked = new Set(checkedKeys);\n const { busy, error, run } = useApprovalActions();\n\n const pending = state === \"pending\";\n\n function toggle(key: string, on: boolean) {\n setDropped((prev) => {\n const next = new Set(prev);\n if (on) next.delete(key);\n else next.add(key);\n return next;\n });\n }\n\n return (\n <div className={cn(\"flex flex-col gap-5\", className)}>\n <ApprovalHeader title={strings.title} state={state} />\n\n <DescriptionList entries={factEntries(allStrings, request, pending)} className=\"divide-y divide-border-subtle\" />\n\n <figure className=\"flex flex-col gap-1.5\">\n <figcaption className=\"text-xs font-medium text-secondary\">{strings.reasonGiven}</figcaption>\n <blockquote className=\"border-l-2 border-accent-border bg-surface-sunken py-2 pl-3 text-sm break-words whitespace-pre-wrap text-secondary\">\n {request.reason}\n </blockquote>\n </figure>\n\n {pending ? (\n <>\n <ConfirmCodeCallout code={request.confirmCode} />\n\n <Callout tone=\"warning\" title={allStrings.approval.approveOnlyTitle}>\n {strings.approveBody}\n </Callout>\n\n <ApprovalError error={error} />\n\n {grantable.length === 0 && (\n <Callout tone=\"danger\" title={strings.emptyTitle}>\n {strings.emptyDescription}\n </Callout>\n )}\n\n {requested.length > 0 && (\n <FieldSet legend={strings.legend} description={strings.legendDescription}>\n {groupByCategory(requested, strings.otherCategory).map((section) => {\n const rows = section.items.map((permission) => (\n <PermissionCheckbox\n key={permission.key}\n permission={permission}\n held={own.has(permission.key)}\n checked={checked.has(permission.key)}\n disabled={busy !== null}\n onCheckedChange={(on) => toggle(permission.key, on)}\n />\n ));\n return section.label === undefined ? (\n <div key=\"all\" className=\"flex flex-col gap-3\">\n {rows}\n </div>\n ) : (\n <FieldSet key={section.label} legend={section.label} className=\"gap-2.5\">\n {rows}\n </FieldSet>\n );\n })}\n </FieldSet>\n )}\n\n <ApprovalButtons\n busy={busy}\n run={run}\n onApprove={() => onApprove(checkedKeys)}\n onDeny={onDeny}\n approveDisabled={checkedKeys.length === 0}\n />\n </>\n ) : (\n <TerminalNotice state={state} request={request} permissions={permissions} expiredNote={expiredNote} />\n )}\n </div>\n );\n}\n"],"names":["requestedPermissions","keys","catalog","key","p","factEntries","strings","request","pending","permissionRequest","approval","jsxs","Fragment","jsx","DateTimeText","RelativeTime","entry","GrantedList","labels","label","TerminalNotice","state","permissions","expiredNote","useUiStrings","granted","TerminalCallout","ExpiredNotice","PermissionCheckbox","permission","held","checked","disabled","onCheckedChange","description","CheckboxField","PermissionRequestPanel","ownPermissionKeys","onApprove","onDeny","className","allStrings","own","requested","grantable","dropped","setDropped","useState","checkedKeys","busy","error","run","useApprovalActions","toggle","on","prev","next","cn","ApprovalHeader","DescriptionList","ConfirmCodeCallout","Callout","ApprovalError","FieldSet","section","rows","ApprovalButtons"],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ import { jsx as i, jsxs as y } from "react/jsx-runtime";
2
+ import { useState as p } from "react";
3
+ import { Callout as C } from "../Callout.js";
4
+ import { Field as u } from "../Field.js";
5
+ import { ImageUploadField as T } from "../ImageUploadField.js";
6
+ import { Input as h } from "../Input.js";
7
+ import { useSaveFlow as k, StagedFormActions as q } from "./stagedForm.js";
8
+ import { useStagedImage as z } from "./useStagedImage.js";
9
+ import { useUiStrings as B } from "../../lib/i18n/provider.js";
10
+ function X({
11
+ account: e,
12
+ onSave: N,
13
+ onUploadAvatar: D,
14
+ saveLabel: c,
15
+ discardLabel: I,
16
+ className: j
17
+ }) {
18
+ const g = B(), l = g.profileForm, [n, f] = p(e.name), [d, S] = p(e.username ?? ""), [s, F] = p(e.email), a = z(e.avatarUrl, D), { saving: t, saved: w, error: U, edit: m, save: A } = k(l.failedMessage), o = e.username !== void 0, v = e.username ?? "", b = n.trim() !== e.name || o && d.trim() !== v || s.trim() !== e.email || a.dirty, E = n !== e.name || o && d !== v || s !== e.email || a.dirty, x = b && n.trim().length > 0 && s.trim().length > 0 && !t && !a.uploading;
19
+ function M() {
20
+ if (!x) return;
21
+ const r = {
22
+ name: n.trim(),
23
+ username: o ? d.trim() : void 0,
24
+ email: s.trim()
25
+ };
26
+ a.dirty && (r.avatarUrl = a.value), A(() => N(r));
27
+ }
28
+ function P() {
29
+ m(() => {
30
+ f(e.name), S(v), F(e.email), a.discard();
31
+ });
32
+ }
33
+ return /* @__PURE__ */ i("div", { className: j, children: /* @__PURE__ */ y("div", { className: "flex flex-col gap-5", children: [
34
+ w && !b && /* @__PURE__ */ i(C, { tone: "success", title: l.saved }),
35
+ U && /* @__PURE__ */ i(C, { tone: "danger", title: l.failedTitle, children: U }),
36
+ /* @__PURE__ */ i(
37
+ T,
38
+ {
39
+ label: l.avatar,
40
+ value: a.value,
41
+ shape: "circle",
42
+ disabled: t,
43
+ onUpload: a.upload,
44
+ onChange: (r) => m(() => a.stage(r)),
45
+ description: a.dirty ? g.stagedForm.imageNote("avatar", c ?? g.stagedForm.save, a.value === null) : void 0
46
+ }
47
+ ),
48
+ /* @__PURE__ */ y("div", { className: "grid gap-4 sm:grid-cols-2", children: [
49
+ /* @__PURE__ */ i(u, { label: l.name, children: /* @__PURE__ */ i(h, { value: n, onChange: (r) => m(() => f(r.target.value)), disabled: t }) }),
50
+ o && /* @__PURE__ */ i(u, { label: l.username, children: /* @__PURE__ */ i(
51
+ h,
52
+ {
53
+ value: d,
54
+ onChange: (r) => m(() => S(r.target.value)),
55
+ disabled: t,
56
+ leading: /* @__PURE__ */ i("span", { "aria-hidden": !0, children: "@" })
57
+ }
58
+ ) }),
59
+ /* @__PURE__ */ i(u, { label: l.email, children: /* @__PURE__ */ i(
60
+ h,
61
+ {
62
+ type: "email",
63
+ value: s,
64
+ onChange: (r) => m(() => F(r.target.value)),
65
+ disabled: t
66
+ }
67
+ ) })
68
+ ] }),
69
+ /* @__PURE__ */ i(
70
+ q,
71
+ {
72
+ onSave: M,
73
+ onDiscard: P,
74
+ canSave: x,
75
+ canDiscard: E && !a.uploading,
76
+ saving: t,
77
+ saveLabel: c,
78
+ discardLabel: I
79
+ }
80
+ )
81
+ ] }) });
82
+ }
83
+ export {
84
+ X as ProfileForm
85
+ };
86
+ //# sourceMappingURL=ProfileForm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProfileForm.js","sources":["../../../src/components/rbac/ProfileForm.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { Callout } from \"../Callout\";\nimport { Field } from \"../Field\";\nimport { ImageUploadField } from \"../ImageUploadField\";\nimport { Input } from \"../Input\";\nimport { useUiStrings } from \"../../lib/i18n\";\nimport { StagedFormActions, useSaveFlow } from \"./stagedForm\";\nimport { useStagedImage } from \"./useStagedImage\";\n\n/* ============================================================================\n PROFILE FORM\n\n THE ATOMIC, CONTROLLED HALF OF ACCOUNT IDENTITY — name, username, email,\n avatar, and one `onSave`. Nothing here reads `useRBAC()`, knows about roles\n or permissions, or has an opinion about impersonation; that is precisely\n what makes it a separate component from `ProfilePage` rather than a mode of\n it (see that file's own header for how the two compose). A consumer that\n only wants an identity-editing card somewhere OTHER than a full profile\n page — a settings drawer, an onboarding step — uses this directly.\n\n DX-4131 — THE AVATAR IS STAGED, NOT SAVED ON UPLOAD. `onUploadAvatar` only\n has to put the file somewhere and resolve with its URL; nothing about the\n account may change then. The picked (or removed) avatar is held as form\n state, previewed at once with a \"Not saved yet\" note, and handed to `onSave`\n — with the text fields — when Save is clicked. Discard drops every edit,\n the avatar included, without a request. (The avatar used to persist the\n moment its upload resolved while the text fields waited for Save, so one\n form had two save models and a new picture could not be taken back.)\n\n `onSave` RECEIVES `avatarUrl` ONLY WHEN THE AVATAR CHANGED. The key is\n absent for a text-only Save (keep the stored avatar), `null` for a staged\n removal, a URL for a staged upload — the same three states a `PATCH` body\n carries (omitted keeps, `null` clears, string sets).\n\n SEEDED ONCE FROM `account`, THEN LOCAL — same convention `RoleEditorDialog`\n uses for its own label/description fields (see that file's header): this\n form's local draft does not silently overwrite itself if `account` changes\n underneath it (e.g. a background refetch), because that would discard\n whatever the operator is mid-typing. A consumer that needs the draft to\n follow a genuinely new account (switching accounts, not refreshing the same\n one) remounts this component with a `key` — the standard React answer to\n \"start this local state over.\" (The staged avatar follows the saved one\n until it is staged — see `useStagedImage`.)\n ========================================================================= */\n\nexport interface ProfileFormAccount {\n name: string;\n /** Omit entirely for a consumer whose account model has no separate\n * username concept — the field simply does not render (see `types.ts`'s\n * own `User.username` doc for the same optional-field convention). */\n username?: string;\n email: string;\n avatarUrl?: string | null;\n}\n\nexport interface ProfileFormSaveInput {\n name: string;\n username?: string;\n email: string;\n /** Present only when the avatar changed: a URL sets it, `null` removes it. */\n avatarUrl?: string | null;\n}\n\nexport interface ProfileFormProps {\n account: ProfileFormAccount;\n onSave: (input: ProfileFormSaveInput) => Promise<void>;\n /** Uploads the file to storage and resolves with its URL. Must NOT change the\n * account — the avatar is only persisted by `onSave`. */\n onUploadAvatar: (file: File) => Promise<string>;\n saveLabel?: string;\n discardLabel?: string;\n className?: string;\n}\n\nexport function ProfileForm({\n account,\n onSave,\n onUploadAvatar,\n saveLabel,\n discardLabel,\n className,\n}: ProfileFormProps) {\n const allStrings = useUiStrings();\n const strings = allStrings.profileForm;\n const [name, setName] = useState(account.name);\n const [username, setUsername] = useState(account.username ?? \"\");\n const [email, setEmail] = useState(account.email);\n const avatar = useStagedImage(account.avatarUrl, onUploadAvatar);\n const { saving, saved, error, edit, save } = useSaveFlow(strings.failedMessage);\n\n const hasUsername = account.username !== undefined;\n const savedUsername = account.username ?? \"\";\n // `changed` is what Save would send (trimmed values); `touched` is any difference at all, so\n // a stray trailing space can still be discarded though there is nothing to save.\n const changed =\n name.trim() !== account.name ||\n (hasUsername && username.trim() !== savedUsername) ||\n email.trim() !== account.email ||\n avatar.dirty;\n const touched =\n name !== account.name || (hasUsername && username !== savedUsername) || email !== account.email || avatar.dirty;\n const canSave = changed && name.trim().length > 0 && email.trim().length > 0 && !saving && !avatar.uploading;\n\n function handleSave() {\n if (!canSave) return;\n const input: ProfileFormSaveInput = {\n name: name.trim(),\n username: hasUsername ? username.trim() : undefined,\n email: email.trim(),\n };\n if (avatar.dirty) input.avatarUrl = avatar.value;\n void save(() => onSave(input));\n }\n\n function handleDiscard() {\n edit(() => {\n setName(account.name);\n setUsername(savedUsername);\n setEmail(account.email);\n avatar.discard();\n });\n }\n\n return (\n <div className={className}>\n <div className=\"flex flex-col gap-5\">\n {saved && !changed && <Callout tone=\"success\" title={strings.saved} />}\n {error && <Callout tone=\"danger\" title={strings.failedTitle}>{error}</Callout>}\n\n <ImageUploadField\n label={strings.avatar}\n value={avatar.value}\n shape=\"circle\"\n disabled={saving}\n onUpload={avatar.upload}\n onChange={(url) => edit(() => avatar.stage(url))}\n description={avatar.dirty ? allStrings.stagedForm.imageNote(\"avatar\", saveLabel ?? allStrings.stagedForm.save, avatar.value === null) : undefined}\n />\n\n <div className=\"grid gap-4 sm:grid-cols-2\">\n <Field label={strings.name}>\n <Input value={name} onChange={(event) => edit(() => setName(event.target.value))} disabled={saving} />\n </Field>\n {hasUsername && (\n <Field label={strings.username}>\n <Input\n value={username}\n onChange={(event) => edit(() => setUsername(event.target.value))}\n disabled={saving}\n leading={<span aria-hidden>@</span>}\n />\n </Field>\n )}\n <Field label={strings.email}>\n <Input\n type=\"email\"\n value={email}\n onChange={(event) => edit(() => setEmail(event.target.value))}\n disabled={saving}\n />\n </Field>\n </div>\n\n <StagedFormActions\n onSave={handleSave}\n onDiscard={handleDiscard}\n canSave={canSave}\n canDiscard={touched && !avatar.uploading}\n saving={saving}\n saveLabel={saveLabel}\n discardLabel={discardLabel}\n />\n </div>\n </div>\n );\n}\n"],"names":["ProfileForm","account","onSave","onUploadAvatar","saveLabel","discardLabel","className","allStrings","useUiStrings","strings","name","setName","useState","username","setUsername","email","setEmail","avatar","useStagedImage","saving","saved","error","edit","save","useSaveFlow","hasUsername","savedUsername","changed","touched","canSave","handleSave","input","handleDiscard","jsxs","jsx","Callout","ImageUploadField","url","Field","Input","event","StagedFormActions"],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import { jsx as e, jsxs as a, Fragment as P } from "react/jsx-runtime";
2
+ import { useState as h } from "react";
3
+ import { Avatar as R } from "../Avatar.js";
4
+ import { Field as g } from "../Field.js";
5
+ import { Icon as I } from "../Icon.js";
6
+ import { Input as u } from "../Input.js";
7
+ import { useRBAC as y } from "./RBACProvider.js";
8
+ import { ProfileForm as k } from "./ProfileForm.js";
9
+ import { useUiStrings as b } from "../../lib/i18n/provider.js";
10
+ import { emphasis as N } from "../../lib/i18n/emphasis.js";
11
+ function S({
12
+ account: r,
13
+ onSave: s,
14
+ onUploadAvatar: i,
15
+ heading: m = !0,
16
+ className: n
17
+ }) {
18
+ const t = b().profilePage, { actualUser: l, actualRole: p, effectiveRole: o, grantedPermissions: f, isImpersonating: v, currentTeam: c } = y(), d = !!(r && s && i);
19
+ return /* @__PURE__ */ e("div", { className: n, children: /* @__PURE__ */ a("div", { className: "flex flex-col gap-6", children: [
20
+ (m || !d) && /* @__PURE__ */ a("div", { className: "flex items-center gap-4", children: [
21
+ !d && /* @__PURE__ */ e(R, { name: l.name, src: l.avatarUrl, size: "xl" }),
22
+ m && /* @__PURE__ */ a("div", { className: "min-w-0", children: [
23
+ /* @__PURE__ */ e("h1", { className: "font-display text-xl font-semibold text-primary", children: t.title }),
24
+ c && /* @__PURE__ */ e("p", { className: "truncate text-sm text-tertiary", children: c.name })
25
+ ] })
26
+ ] }),
27
+ d ? /* @__PURE__ */ e(
28
+ k,
29
+ {
30
+ account: r,
31
+ onSave: s,
32
+ onUploadAvatar: i
33
+ }
34
+ ) : /* @__PURE__ */ e(C, {}),
35
+ /* @__PURE__ */ a("div", { className: "flex flex-col gap-3 border-t border-border-subtle pt-5", children: [
36
+ /* @__PURE__ */ e("h2", { className: "font-display text-md font-semibold text-primary", children: t.rolesHeading }),
37
+ v && p && /* @__PURE__ */ e("p", { role: "status", className: "text-xs text-tertiary", children: t.viewingAs(o?.label ?? "", p.label, N) }),
38
+ o ? /* @__PURE__ */ a(P, { children: [
39
+ /* @__PURE__ */ e("p", { className: "text-sm text-secondary", children: t.holdsRole(o.label, c?.name, N) }),
40
+ f.length > 0 ? /* @__PURE__ */ e("ul", { className: "flex flex-col gap-2", children: f.map((x) => /* @__PURE__ */ a("li", { className: "flex items-start gap-2 text-sm text-secondary", children: [
41
+ /* @__PURE__ */ e(I, { name: "check", size: "sm", className: "mt-0.5 shrink-0 text-success" }),
42
+ /* @__PURE__ */ e("span", { children: x.label })
43
+ ] }, x.key)) }) : /* @__PURE__ */ e("p", { className: "text-sm text-tertiary", children: t.noPermissions })
44
+ ] }) : /* @__PURE__ */ e("p", { className: "text-sm text-tertiary", children: t.noRole })
45
+ ] })
46
+ ] }) });
47
+ }
48
+ function C() {
49
+ const r = b().profilePage, { actualUser: s } = y(), [i, m] = h(s.name), [n, t] = h(s.email);
50
+ return /* @__PURE__ */ a("div", { className: "grid gap-4 sm:grid-cols-2", children: [
51
+ /* @__PURE__ */ e(g, { label: r.name, children: /* @__PURE__ */ e(u, { value: i, onChange: (l) => m(l.target.value) }) }),
52
+ /* @__PURE__ */ e(g, { label: r.email, children: /* @__PURE__ */ e(u, { type: "email", value: n, onChange: (l) => t(l.target.value) }) })
53
+ ] });
54
+ }
55
+ export {
56
+ S as ProfilePage
57
+ };
58
+ //# sourceMappingURL=ProfilePage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProfilePage.js","sources":["../../../src/components/rbac/ProfilePage.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { Avatar } from \"../Avatar\";\nimport { Field } from \"../Field\";\nimport { Icon } from \"../Icon\";\nimport { Input } from \"../Input\";\nimport { emphasis, useUiStrings } from \"../../lib/i18n\";\nimport { useRBAC } from \"./RBACProvider\";\nimport { ProfileForm, type ProfileFormAccount, type ProfileFormSaveInput } from \"./ProfileForm\";\n\n/* ============================================================================\n PROFILE PAGE\n\n IDENTITY VS. ROLE, KEPT DELIBERATELY SEPARATE. The name/email/avatar block\n always shows `actualUser` — impersonation swaps which ROLE the app treats\n you as, never which USER you are, so \"who am I\" and \"what can I currently\n do\" are two different questions answered from two different fields\n (`actualUser` vs. `effectiveRole`).\n\n \"WHAT CAN I CURRENTLY DO\" USES `effectiveRole`, ON PURPOSE. Everywhere else\n in an app built on this library, impersonation is meant to change what the\n UI shows — that is the entire feature. Profile is an ordinary page, not\n Dev Tools, so it plays along with the impersonated view like any other\n screen would; the one exemption from that rule belongs solely to\n `canAccessDevTools` (see `RBACProvider.tsx`). A banner still names the\n difference explicitly while impersonating, so nobody reads a stranger's\n permissions and mistakes them for their own standing access.\n\n DX-3411 — PROPS-DRIVEN IDENTITY, OPTIONAL AND BACKWARD-COMPATIBLE. This page\n used to have no props at all: the name/email inputs were local `useState`,\n editable but inert, on purpose (this library never owns a save action).\n `account` / `onSave` / `onUploadAvatar` add that save action WITHOUT taking\n away the old shape — omit all three (or just `onSave`/`onUploadAvatar`, the\n two this page actually needs to make identity SAVABLE) and the page falls\n straight back to the original read-only-but-editable `actualUser` display,\n pixel for pixel, exactly as every existing consumer already gets. Passing\n them swaps that block for `ProfileForm` — the new, atomic, `useRBAC()`-free\n controlled component this card also introduces (see its own header) — while\n the roles & permissions section below stays exactly what it always was:\n read-only, sourced from `useRBAC()`, and unaffected by whether identity is\n savable.\n ========================================================================= */\n\nexport interface ProfilePageProps {\n /** The identity fields to edit. Omit to keep the original read-only (but\n * still locally-editable) `actualUser` display. */\n account?: ProfileFormAccount;\n onSave?: (input: ProfileFormSaveInput) => Promise<void>;\n /** Uploads the file and resolves with its URL; the avatar is persisted only by `onSave` (DX-4131). */\n onUploadAvatar?: (file: File) => Promise<string>;\n /** DX-4029: `false` omits the page's own title text (the `<h1>` and the\n * team-name line) so a host layout can own the screen's one `<h1>`. The\n * read-only avatar (content, not title) stays, and the default `true` is\n * the unchanged render. */\n heading?: boolean;\n className?: string;\n}\n\nexport function ProfilePage({\n account,\n onSave,\n onUploadAvatar,\n heading = true,\n className,\n}: ProfilePageProps) {\n const strings = useUiStrings().profilePage;\n const { actualUser, actualRole, effectiveRole, grantedPermissions, isImpersonating, currentTeam } = useRBAC();\n\n /* All three of `account`/`onSave`/`onUploadAvatar` are needed to make\n identity genuinely savable — a consumer that supplies `account` without\n the two callbacks would get a form with no way to act on it, which is\n worse than the plain read-only display it would otherwise fall back to. */\n const savable = Boolean(account && onSave && onUploadAvatar);\n\n return (\n <div className={className}>\n <div className=\"flex flex-col gap-6\">\n {(heading || !savable) && (\n <div className=\"flex items-center gap-4\">\n {/* The savable form renders its OWN avatar control (`ImageUploadField`,\n inside `ProfileForm`) — showing a second, read-only avatar here\n too would just be the same picture twice. */}\n {!savable && <Avatar name={actualUser.name} src={actualUser.avatarUrl} size=\"xl\" />}\n {/* DX-4029: no title block at all when the host owns the h1, so no empty\n row or gap is left behind. */}\n {heading && (\n <div className=\"min-w-0\">\n <h1 className=\"font-display text-xl font-semibold text-primary\">{strings.title}</h1>\n {currentTeam && <p className=\"truncate text-sm text-tertiary\">{currentTeam.name}</p>}\n </div>\n )}\n </div>\n )}\n\n {savable ? (\n <ProfileForm\n account={account!}\n onSave={onSave!}\n onUploadAvatar={onUploadAvatar!}\n />\n ) : (\n <ProfilePageReadOnlyIdentity />\n )}\n\n <div className=\"flex flex-col gap-3 border-t border-border-subtle pt-5\">\n <h2 className=\"font-display text-md font-semibold text-primary\">{strings.rolesHeading}</h2>\n\n {isImpersonating && actualRole && (\n <p role=\"status\" className=\"text-xs text-tertiary\">\n {strings.viewingAs(effectiveRole?.label ?? \"\", actualRole.label, emphasis)}\n </p>\n )}\n\n {effectiveRole ? (\n <>\n <p className=\"text-sm text-secondary\">\n {strings.holdsRole(effectiveRole.label, currentTeam?.name, emphasis)}\n </p>\n {grantedPermissions.length > 0 ? (\n <ul className=\"flex flex-col gap-2\">\n {grantedPermissions.map((permission) => (\n <li key={permission.key} className=\"flex items-start gap-2 text-sm text-secondary\">\n <Icon name=\"check\" size=\"sm\" className=\"mt-0.5 shrink-0 text-success\" />\n <span>{permission.label}</span>\n </li>\n ))}\n </ul>\n ) : (\n <p className=\"text-sm text-tertiary\">{strings.noPermissions}</p>\n )}\n </>\n ) : (\n <p className=\"text-sm text-tertiary\">{strings.noRole}</p>\n )}\n </div>\n </div>\n </div>\n );\n}\n\n/**\n * The ORIGINAL name/email block, unmoved and unchanged — `useState` seeded\n * from `actualUser`, editable but wired to nothing, exactly as this page has\n * always behaved for a consumer that supplies no save action. Split into its\n * own function only so `ProfilePage` doesn't have to hold two unrelated\n * `useState` pairs (this one, and whatever `ProfileForm` owns) live in the\n * same component at once depending on a prop.\n */\nfunction ProfilePageReadOnlyIdentity() {\n const strings = useUiStrings().profilePage;\n const { actualUser } = useRBAC();\n const [name, setName] = useState(actualUser.name);\n const [email, setEmail] = useState(actualUser.email);\n\n return (\n <div className=\"grid gap-4 sm:grid-cols-2\">\n <Field label={strings.name}>\n <Input value={name} onChange={(event) => setName(event.target.value)} />\n </Field>\n <Field label={strings.email}>\n <Input type=\"email\" value={email} onChange={(event) => setEmail(event.target.value)} />\n </Field>\n </div>\n );\n}\n"],"names":["ProfilePage","account","onSave","onUploadAvatar","heading","className","strings","useUiStrings","actualUser","actualRole","effectiveRole","grantedPermissions","isImpersonating","currentTeam","useRBAC","savable","jsxs","jsx","Avatar","ProfileForm","ProfilePageReadOnlyIdentity","emphasis","Fragment","permission","Icon","name","setName","useState","email","setEmail","Field","Input","event"],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ import { jsx as r } from "react/jsx-runtime";
2
+ import { useState as y, useMemo as i, useCallback as I, useContext as k, createContext as K } from "react";
3
+ const x = K(null);
4
+ function j({
5
+ currentUser: t,
6
+ roles: o,
7
+ permissions: u,
8
+ teams: c,
9
+ memberships: d,
10
+ currentTeamId: f,
11
+ canAccessDevTools: C,
12
+ children: B
13
+ }) {
14
+ const [e, g] = y(null), R = i(
15
+ () => c.find((n) => n.id === f),
16
+ [c, f]
17
+ ), l = i(() => {
18
+ const n = d.find(
19
+ (v) => v.userId === t.id && v.teamId === f
20
+ );
21
+ if (n)
22
+ return o.find((v) => v.id === n.roleId);
23
+ }, [d, o, t.id, f]), a = i(
24
+ () => e ? o.find((n) => n.id === e) : l,
25
+ [e, o, l]
26
+ ), s = i(
27
+ () => new Set(a?.permissionKeys ?? []),
28
+ [a]
29
+ ), A = I(
30
+ (n) => s.has(n),
31
+ [s]
32
+ ), w = i(
33
+ () => u.filter((n) => s.has(n.key)),
34
+ [u, s]
35
+ ), P = i(
36
+ () => C(t, o, d),
37
+ [C, t, o, d]
38
+ ), h = i(
39
+ () => ({
40
+ actualUser: t,
41
+ currentTeam: R,
42
+ actualRole: l,
43
+ viewingAsRoleId: e,
44
+ setViewingAsRoleId: g,
45
+ effectiveRole: a,
46
+ effectivePermissionKeys: s,
47
+ grantedPermissions: w,
48
+ hasPermission: A,
49
+ canAccessDevTools: P,
50
+ isImpersonating: e !== null,
51
+ roles: o,
52
+ permissions: u,
53
+ teams: c
54
+ }),
55
+ [
56
+ t,
57
+ R,
58
+ l,
59
+ e,
60
+ a,
61
+ s,
62
+ w,
63
+ A,
64
+ P,
65
+ o,
66
+ u,
67
+ c
68
+ ]
69
+ );
70
+ return /* @__PURE__ */ r(x.Provider, { value: h, children: B });
71
+ }
72
+ function D() {
73
+ const t = k(x);
74
+ if (!t)
75
+ throw new Error("useRBAC must be used within an <RBACProvider>.");
76
+ return t;
77
+ }
78
+ export {
79
+ j as RBACProvider,
80
+ D as useRBAC
81
+ };
82
+ //# sourceMappingURL=RBACProvider.js.map