@50arms/ui 0.0.0-stage → 35.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1256) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +193 -2
  3. package/dist/components/Accordion.js +68 -0
  4. package/dist/components/Accordion.js.map +1 -0
  5. package/dist/components/AgentWorkingSpinner.js +46 -0
  6. package/dist/components/AgentWorkingSpinner.js.map +1 -0
  7. package/dist/components/AppShell.js +228 -0
  8. package/dist/components/AppShell.js.map +1 -0
  9. package/dist/components/Attention.js +130 -0
  10. package/dist/components/Attention.js.map +1 -0
  11. package/dist/components/Avatar.js +99 -0
  12. package/dist/components/Avatar.js.map +1 -0
  13. package/dist/components/Badge.js +143 -0
  14. package/dist/components/Badge.js.map +1 -0
  15. package/dist/components/Board.js +292 -0
  16. package/dist/components/Board.js.map +1 -0
  17. package/dist/components/Button.js +327 -0
  18. package/dist/components/Button.js.map +1 -0
  19. package/dist/components/Callout.js +106 -0
  20. package/dist/components/Callout.js.map +1 -0
  21. package/dist/components/Card.js +140 -0
  22. package/dist/components/Card.js.map +1 -0
  23. package/dist/components/Choice.js +361 -0
  24. package/dist/components/Choice.js.map +1 -0
  25. package/dist/components/CodeEditor.js +384 -0
  26. package/dist/components/CodeEditor.js.map +1 -0
  27. package/dist/components/ColorPicker.js +174 -0
  28. package/dist/components/ColorPicker.js.map +1 -0
  29. package/dist/components/Combobox.js +212 -0
  30. package/dist/components/Combobox.js.map +1 -0
  31. package/dist/components/CommandPalette.js +163 -0
  32. package/dist/components/CommandPalette.js.map +1 -0
  33. package/dist/components/ConcentricRing.js +60 -0
  34. package/dist/components/ConcentricRing.js.map +1 -0
  35. package/dist/components/ConnectionCard.js +98 -0
  36. package/dist/components/ConnectionCard.js.map +1 -0
  37. package/dist/components/ContextItemRow.js +49 -0
  38. package/dist/components/ContextItemRow.js.map +1 -0
  39. package/dist/components/CopyValue.js +57 -0
  40. package/dist/components/CopyValue.js.map +1 -0
  41. package/dist/components/CountBadge.js +26 -0
  42. package/dist/components/CountBadge.js.map +1 -0
  43. package/dist/components/DateCalendar.js +156 -0
  44. package/dist/components/DateCalendar.js.map +1 -0
  45. package/dist/components/DateField.js +166 -0
  46. package/dist/components/DateField.js.map +1 -0
  47. package/dist/components/DatePicker.js +56 -0
  48. package/dist/components/DatePicker.js.map +1 -0
  49. package/dist/components/DateTimeText.js +19 -0
  50. package/dist/components/DateTimeText.js.map +1 -0
  51. package/dist/components/DescriptionList.js +25 -0
  52. package/dist/components/DescriptionList.js.map +1 -0
  53. package/dist/components/Dialog.js +332 -0
  54. package/dist/components/Dialog.js.map +1 -0
  55. package/dist/components/DragDrop.js +395 -0
  56. package/dist/components/DragDrop.js.map +1 -0
  57. package/dist/components/Drawer.js +100 -0
  58. package/dist/components/Drawer.js.map +1 -0
  59. package/dist/components/EditGutter.js +110 -0
  60. package/dist/components/EditGutter.js.map +1 -0
  61. package/dist/components/EmojiPicker.js +174 -0
  62. package/dist/components/EmojiPicker.js.map +1 -0
  63. package/dist/components/ErrorBoundary.js +47 -0
  64. package/dist/components/ErrorBoundary.js.map +1 -0
  65. package/dist/components/Field.js +115 -0
  66. package/dist/components/Field.js.map +1 -0
  67. package/dist/components/FileUpload.js +128 -0
  68. package/dist/components/FileUpload.js.map +1 -0
  69. package/dist/components/FilterMenu.js +256 -0
  70. package/dist/components/FilterMenu.js.map +1 -0
  71. package/dist/components/GatesSection.js +79 -0
  72. package/dist/components/GatesSection.js.map +1 -0
  73. package/dist/components/Icon.js +50 -0
  74. package/dist/components/Icon.js.map +1 -0
  75. package/dist/components/IconButton.js +59 -0
  76. package/dist/components/IconButton.js.map +1 -0
  77. package/dist/components/IconStack.js +69 -0
  78. package/dist/components/IconStack.js.map +1 -0
  79. package/dist/components/ImageUploadField.js +146 -0
  80. package/dist/components/ImageUploadField.js.map +1 -0
  81. package/dist/components/InlineEdit.js +432 -0
  82. package/dist/components/InlineEdit.js.map +1 -0
  83. package/dist/components/InlineMarkdownEdit.js +184 -0
  84. package/dist/components/InlineMarkdownEdit.js.map +1 -0
  85. package/dist/components/Input.js +156 -0
  86. package/dist/components/Input.js.map +1 -0
  87. package/dist/components/LegalDocument.js +155 -0
  88. package/dist/components/LegalDocument.js.map +1 -0
  89. package/dist/components/LineDiff.js +95 -0
  90. package/dist/components/LineDiff.js.map +1 -0
  91. package/dist/components/ListHeader.js +72 -0
  92. package/dist/components/ListHeader.js.map +1 -0
  93. package/dist/components/Loading.js +111 -0
  94. package/dist/components/Loading.js.map +1 -0
  95. package/dist/components/Markdown.js +28 -0
  96. package/dist/components/Markdown.js.map +1 -0
  97. package/dist/components/MarkdownEditor.js +467 -0
  98. package/dist/components/MarkdownEditor.js.map +1 -0
  99. package/dist/components/Menu.js +185 -0
  100. package/dist/components/Menu.js.map +1 -0
  101. package/dist/components/Navigation.js +87 -0
  102. package/dist/components/Navigation.js.map +1 -0
  103. package/dist/components/NumberInput.js +119 -0
  104. package/dist/components/NumberInput.js.map +1 -0
  105. package/dist/components/OTPInput.js +71 -0
  106. package/dist/components/OTPInput.js.map +1 -0
  107. package/dist/components/OrderedEntityManager.js +170 -0
  108. package/dist/components/OrderedEntityManager.js.map +1 -0
  109. package/dist/components/PagedWindowList.js +74 -0
  110. package/dist/components/PagedWindowList.js.map +1 -0
  111. package/dist/components/PaginationBar.js +95 -0
  112. package/dist/components/PaginationBar.js.map +1 -0
  113. package/dist/components/Panel.js +396 -0
  114. package/dist/components/Panel.js.map +1 -0
  115. package/dist/components/PasswordInput.js +32 -0
  116. package/dist/components/PasswordInput.js.map +1 -0
  117. package/dist/components/PasswordRequirements.js +25 -0
  118. package/dist/components/PasswordRequirements.js.map +1 -0
  119. package/dist/components/PatchDiff.js +96 -0
  120. package/dist/components/PatchDiff.js.map +1 -0
  121. package/dist/components/PendingVeil.js +18 -0
  122. package/dist/components/PendingVeil.js.map +1 -0
  123. package/dist/components/Popover.js +214 -0
  124. package/dist/components/Popover.js.map +1 -0
  125. package/dist/components/Progress.js +419 -0
  126. package/dist/components/Progress.js.map +1 -0
  127. package/dist/components/RatingScale.js +89 -0
  128. package/dist/components/RatingScale.js.map +1 -0
  129. package/dist/components/ReadMore.js +232 -0
  130. package/dist/components/ReadMore.js.map +1 -0
  131. package/dist/components/RecordCard.js +202 -0
  132. package/dist/components/RecordCard.js.map +1 -0
  133. package/dist/components/RelativeTime.js +29 -0
  134. package/dist/components/RelativeTime.js.map +1 -0
  135. package/dist/components/SandboxedFrame.js +135 -0
  136. package/dist/components/SandboxedFrame.js.map +1 -0
  137. package/dist/components/SearchInput.js +38 -0
  138. package/dist/components/SearchInput.js.map +1 -0
  139. package/dist/components/SecretField.js +228 -0
  140. package/dist/components/SecretField.js.map +1 -0
  141. package/dist/components/SectionNav.js +42 -0
  142. package/dist/components/SectionNav.js.map +1 -0
  143. package/dist/components/Select.js +172 -0
  144. package/dist/components/Select.js.map +1 -0
  145. package/dist/components/SequenceDiagram.js +109 -0
  146. package/dist/components/SequenceDiagram.js.map +1 -0
  147. package/dist/components/SettingRow.js +124 -0
  148. package/dist/components/SettingRow.js.map +1 -0
  149. package/dist/components/SignOffRings.js +36 -0
  150. package/dist/components/SignOffRings.js.map +1 -0
  151. package/dist/components/Slider.js +353 -0
  152. package/dist/components/Slider.js.map +1 -0
  153. package/dist/components/SolutionChoice.js +89 -0
  154. package/dist/components/SolutionChoice.js.map +1 -0
  155. package/dist/components/SortMenu.js +75 -0
  156. package/dist/components/SortMenu.js.map +1 -0
  157. package/dist/components/Spinner.js +42 -0
  158. package/dist/components/Spinner.js.map +1 -0
  159. package/dist/components/Stat.js +148 -0
  160. package/dist/components/Stat.js.map +1 -0
  161. package/dist/components/StatusSelect.js +119 -0
  162. package/dist/components/StatusSelect.js.map +1 -0
  163. package/dist/components/Surface.js +210 -0
  164. package/dist/components/Surface.js.map +1 -0
  165. package/dist/components/Table.js +300 -0
  166. package/dist/components/Table.js.map +1 -0
  167. package/dist/components/Tabs.js +288 -0
  168. package/dist/components/Tabs.js.map +1 -0
  169. package/dist/components/ThemeMenu.js +198 -0
  170. package/dist/components/ThemeMenu.js.map +1 -0
  171. package/dist/components/Toast.js +217 -0
  172. package/dist/components/Toast.js.map +1 -0
  173. package/dist/components/Toggle.js +147 -0
  174. package/dist/components/Toggle.js.map +1 -0
  175. package/dist/components/ToggleMatrix.js +157 -0
  176. package/dist/components/ToggleMatrix.js.map +1 -0
  177. package/dist/components/Tree.js +125 -0
  178. package/dist/components/Tree.js.map +1 -0
  179. package/dist/components/TriStateSwitch.js +111 -0
  180. package/dist/components/TriStateSwitch.js.map +1 -0
  181. package/dist/components/VideoPlayer.js +64 -0
  182. package/dist/components/VideoPlayer.js.map +1 -0
  183. package/dist/components/auth/AcceptInvitationCard.js +110 -0
  184. package/dist/components/auth/AcceptInvitationCard.js.map +1 -0
  185. package/dist/components/auth/AuthLayout.js +18 -0
  186. package/dist/components/auth/AuthLayout.js.map +1 -0
  187. package/dist/components/auth/ForgotPasswordForm.js +44 -0
  188. package/dist/components/auth/ForgotPasswordForm.js.map +1 -0
  189. package/dist/components/auth/LoginForm.js +76 -0
  190. package/dist/components/auth/LoginForm.js.map +1 -0
  191. package/dist/components/auth/ResetPasswordForm.js +69 -0
  192. package/dist/components/auth/ResetPasswordForm.js.map +1 -0
  193. package/dist/components/auth/SignInProviders.js +45 -0
  194. package/dist/components/auth/SignInProviders.js.map +1 -0
  195. package/dist/components/auth/SignupCard.js +204 -0
  196. package/dist/components/auth/SignupCard.js.map +1 -0
  197. package/dist/components/auth/TermsAcceptance.js +43 -0
  198. package/dist/components/auth/TermsAcceptance.js.map +1 -0
  199. package/dist/components/board/context.js +32 -0
  200. package/dist/components/board/context.js.map +1 -0
  201. package/dist/components/board/recipe.js +94 -0
  202. package/dist/components/board/recipe.js.map +1 -0
  203. package/dist/components/calendar/CalendarMonth.js +299 -0
  204. package/dist/components/calendar/CalendarMonth.js.map +1 -0
  205. package/dist/components/calendar/CalendarTimeGrid.js +430 -0
  206. package/dist/components/calendar/CalendarTimeGrid.js.map +1 -0
  207. package/dist/components/calendar/EventActions.js +101 -0
  208. package/dist/components/calendar/EventActions.js.map +1 -0
  209. package/dist/components/calendar/format.js +73 -0
  210. package/dist/components/calendar/format.js.map +1 -0
  211. package/dist/components/calendar/palette.js +31 -0
  212. package/dist/components/calendar/palette.js.map +1 -0
  213. package/dist/components/calendar/use-calendar-drag.js +149 -0
  214. package/dist/components/calendar/use-calendar-drag.js.map +1 -0
  215. package/dist/components/calendar/use-event-keyboard.js +87 -0
  216. package/dist/components/calendar/use-event-keyboard.js.map +1 -0
  217. package/dist/components/calendar/use-grid-navigation.js +79 -0
  218. package/dist/components/calendar/use-grid-navigation.js.map +1 -0
  219. package/dist/components/calendar/use-now.js +27 -0
  220. package/dist/components/calendar/use-now.js.map +1 -0
  221. package/dist/components/card-face/AcRingGlyph.js +39 -0
  222. package/dist/components/card-face/AcRingGlyph.js.map +1 -0
  223. package/dist/components/card-face/BoardCardAgentSlot.js +17 -0
  224. package/dist/components/card-face/BoardCardAgentSlot.js.map +1 -0
  225. package/dist/components/card-face/CardFace.js +109 -0
  226. package/dist/components/card-face/CardFace.js.map +1 -0
  227. package/dist/components/card-face/CardTypeBadge.js +17 -0
  228. package/dist/components/card-face/CardTypeBadge.js.map +1 -0
  229. package/dist/components/card-face/EffortBadge.js +11 -0
  230. package/dist/components/card-face/EffortBadge.js.map +1 -0
  231. package/dist/components/card-face/GateRingGlyph.js +31 -0
  232. package/dist/components/card-face/GateRingGlyph.js.map +1 -0
  233. package/dist/components/card-face/OverflowRow.js +70 -0
  234. package/dist/components/card-face/OverflowRow.js.map +1 -0
  235. package/dist/components/card-face/TapTip.js +32 -0
  236. package/dist/components/card-face/TapTip.js.map +1 -0
  237. package/dist/components/card-face/hit-area.js +6 -0
  238. package/dist/components/card-face/hit-area.js.map +1 -0
  239. package/dist/components/card-face/vocabulary.js +102 -0
  240. package/dist/components/card-face/vocabulary.js.map +1 -0
  241. package/dist/components/chart/BarList.js +78 -0
  242. package/dist/components/chart/BarList.js.map +1 -0
  243. package/dist/components/chart/LineChart.js +310 -0
  244. package/dist/components/chart/LineChart.js.map +1 -0
  245. package/dist/components/chart/ShareBar.js +141 -0
  246. package/dist/components/chart/ShareBar.js.map +1 -0
  247. package/dist/components/chart/TimeSeriesChart.js +305 -0
  248. package/dist/components/chart/TimeSeriesChart.js.map +1 -0
  249. package/dist/components/chart/label-metrics.js +17 -0
  250. package/dist/components/chart/label-metrics.js.map +1 -0
  251. package/dist/components/chart/line-chart-axis.js +38 -0
  252. package/dist/components/chart/line-chart-axis.js.map +1 -0
  253. package/dist/components/chart/line-chart-scale.js +132 -0
  254. package/dist/components/chart/line-chart-scale.js.map +1 -0
  255. package/dist/components/chart/line-series-style.js +22 -0
  256. package/dist/components/chart/line-series-style.js.map +1 -0
  257. package/dist/components/chart/share-bar-labels.js +14 -0
  258. package/dist/components/chart/share-bar-labels.js.map +1 -0
  259. package/dist/components/chart/shared.js +157 -0
  260. package/dist/components/chart/shared.js.map +1 -0
  261. package/dist/components/chart/time-series-scale.js +51 -0
  262. package/dist/components/chart/time-series-scale.js.map +1 -0
  263. package/dist/components/chat/Attachment.js +316 -0
  264. package/dist/components/chat/Attachment.js.map +1 -0
  265. package/dist/components/chat/Chat.js +171 -0
  266. package/dist/components/chat/Chat.js.map +1 -0
  267. package/dist/components/chat/Composer.js +274 -0
  268. package/dist/components/chat/Composer.js.map +1 -0
  269. package/dist/components/chat/ContextMeter.js +202 -0
  270. package/dist/components/chat/ContextMeter.js.map +1 -0
  271. package/dist/components/chat/EffortControl.js +116 -0
  272. package/dist/components/chat/EffortControl.js.map +1 -0
  273. package/dist/components/chat/FileCover.js +78 -0
  274. package/dist/components/chat/FileCover.js.map +1 -0
  275. package/dist/components/chat/Message.js +356 -0
  276. package/dist/components/chat/Message.js.map +1 -0
  277. package/dist/components/chat/MessageScroller.js +104 -0
  278. package/dist/components/chat/MessageScroller.js.map +1 -0
  279. package/dist/components/chat/ModelSelector.js +156 -0
  280. package/dist/components/chat/ModelSelector.js.map +1 -0
  281. package/dist/components/chat/StreamingMarkdown.js +42 -0
  282. package/dist/components/chat/StreamingMarkdown.js.map +1 -0
  283. package/dist/components/chat/download-file.js +9 -0
  284. package/dist/components/chat/download-file.js.map +1 -0
  285. package/dist/components/chat/file-icon.js +39 -0
  286. package/dist/components/chat/file-icon.js.map +1 -0
  287. package/dist/components/checklist/StatusChecklist.js +103 -0
  288. package/dist/components/checklist/StatusChecklist.js.map +1 -0
  289. package/dist/components/checklist/tally.js +29 -0
  290. package/dist/components/checklist/tally.js.map +1 -0
  291. package/dist/components/code-editor/context.js +13 -0
  292. package/dist/components/code-editor/context.js.map +1 -0
  293. package/dist/components/code-editor/editing.js +93 -0
  294. package/dist/components/code-editor/editing.js.map +1 -0
  295. package/dist/components/code-editor/highlight.js +27 -0
  296. package/dist/components/code-editor/highlight.js.map +1 -0
  297. package/dist/components/code-editor/recipe.js +75 -0
  298. package/dist/components/code-editor/recipe.js.map +1 -0
  299. package/dist/components/date-timeline/DateTimeline.js +358 -0
  300. package/dist/components/date-timeline/DateTimeline.js.map +1 -0
  301. package/dist/components/date-timeline/TimelineRow.js +100 -0
  302. package/dist/components/date-timeline/TimelineRow.js.map +1 -0
  303. package/dist/components/date-timeline/useBarDrag.js +44 -0
  304. package/dist/components/date-timeline/useBarDrag.js.map +1 -0
  305. package/dist/components/date-timeline/useMarkerDrag.js +40 -0
  306. package/dist/components/date-timeline/useMarkerDrag.js.map +1 -0
  307. package/dist/components/date-timeline/useTimelineZoom.js +44 -0
  308. package/dist/components/date-timeline/useTimelineZoom.js.map +1 -0
  309. package/dist/components/drag-drop/context.js +37 -0
  310. package/dist/components/drag-drop/context.js.map +1 -0
  311. package/dist/components/drag-drop/recipe.js +270 -0
  312. package/dist/components/drag-drop/recipe.js.map +1 -0
  313. package/dist/components/drag-drop/shift.js +157 -0
  314. package/dist/components/drag-drop/shift.js.map +1 -0
  315. package/dist/components/edit/activation.js +10 -0
  316. package/dist/components/edit/activation.js.map +1 -0
  317. package/dist/components/edit/outcome.js +47 -0
  318. package/dist/components/edit/outcome.js.map +1 -0
  319. package/dist/components/edit/use-edit-session.js +146 -0
  320. package/dist/components/edit/use-edit-session.js.map +1 -0
  321. package/dist/components/file-viewer/FileViewer.js +97 -0
  322. package/dist/components/file-viewer/FileViewer.js.map +1 -0
  323. package/dist/components/file-viewer/PageNumberJumpField.js +47 -0
  324. package/dist/components/file-viewer/PageNumberJumpField.js.map +1 -0
  325. package/dist/components/file-viewer/ViewerControls.js +122 -0
  326. package/dist/components/file-viewer/ViewerControls.js.map +1 -0
  327. package/dist/components/file-viewer/ViewerRail.js +57 -0
  328. package/dist/components/file-viewer/ViewerRail.js.map +1 -0
  329. package/dist/components/file-viewer/ViewerStage.js +112 -0
  330. package/dist/components/file-viewer/ViewerStage.js.map +1 -0
  331. package/dist/components/file-viewer/frames.js +37 -0
  332. package/dist/components/file-viewer/frames.js.map +1 -0
  333. package/dist/components/file-viewer/use-frame-cursor.js +32 -0
  334. package/dist/components/file-viewer/use-frame-cursor.js.map +1 -0
  335. package/dist/components/file-viewer/use-viewer-keys.js +50 -0
  336. package/dist/components/file-viewer/use-viewer-keys.js.map +1 -0
  337. package/dist/components/file-viewer/use-viewer-zoom.js +68 -0
  338. package/dist/components/file-viewer/use-viewer-zoom.js.map +1 -0
  339. package/dist/components/focus-web/FocusWeb.js +322 -0
  340. package/dist/components/focus-web/FocusWeb.js.map +1 -0
  341. package/dist/components/focus-web/layout.js +34 -0
  342. package/dist/components/focus-web/layout.js.map +1 -0
  343. package/dist/components/graph-explorer/GraphExplorer.js +441 -0
  344. package/dist/components/graph-explorer/GraphExplorer.js.map +1 -0
  345. package/dist/components/graph-explorer/camera-math.js +102 -0
  346. package/dist/components/graph-explorer/camera-math.js.map +1 -0
  347. package/dist/components/graph-explorer/tree-layout.js +103 -0
  348. package/dist/components/graph-explorer/tree-layout.js.map +1 -0
  349. package/dist/components/graph-explorer/use-camera.js +82 -0
  350. package/dist/components/graph-explorer/use-camera.js.map +1 -0
  351. package/dist/components/graph-explorer/viewport-gesture.js +107 -0
  352. package/dist/components/graph-explorer/viewport-gesture.js.map +1 -0
  353. package/dist/components/kanban/KanbanBoard.js +219 -0
  354. package/dist/components/kanban/KanbanBoard.js.map +1 -0
  355. package/dist/components/kanban/recipe.js +144 -0
  356. package/dist/components/kanban/recipe.js.map +1 -0
  357. package/dist/components/markdown/Affordances.js +398 -0
  358. package/dist/components/markdown/Affordances.js.map +1 -0
  359. package/dist/components/markdown/AttachmentStrip.js +128 -0
  360. package/dist/components/markdown/AttachmentStrip.js.map +1 -0
  361. package/dist/components/markdown/ImageUpload.js +45 -0
  362. package/dist/components/markdown/ImageUpload.js.map +1 -0
  363. package/dist/components/media-error.js +7 -0
  364. package/dist/components/media-error.js.map +1 -0
  365. package/dist/components/nav-sections.js +61 -0
  366. package/dist/components/nav-sections.js.map +1 -0
  367. package/dist/components/node-canvas/NodeCanvas.js +384 -0
  368. package/dist/components/node-canvas/NodeCanvas.js.map +1 -0
  369. package/dist/components/node-canvas/layout.js +237 -0
  370. package/dist/components/node-canvas/layout.js.map +1 -0
  371. package/dist/components/node-canvas/use-canvas-gestures.js +143 -0
  372. package/dist/components/node-canvas/use-canvas-gestures.js.map +1 -0
  373. package/dist/components/openapi/OpenApiViewer.js +137 -0
  374. package/dist/components/openapi/OpenApiViewer.js.map +1 -0
  375. package/dist/components/openapi/OperationCard.js +145 -0
  376. package/dist/components/openapi/OperationCard.js.map +1 -0
  377. package/dist/components/openapi/SchemaView.js +68 -0
  378. package/dist/components/openapi/SchemaView.js.map +1 -0
  379. package/dist/components/openapi/resolve.js +102 -0
  380. package/dist/components/openapi/resolve.js.map +1 -0
  381. package/dist/components/openapi/types.js +5 -0
  382. package/dist/components/openapi/types.js.map +1 -0
  383. package/dist/components/overlay-shell.js +29 -0
  384. package/dist/components/overlay-shell.js.map +1 -0
  385. package/dist/components/overlay-stack.js +27 -0
  386. package/dist/components/overlay-stack.js.map +1 -0
  387. package/dist/components/paged-window/PageBlock.js +50 -0
  388. package/dist/components/paged-window/PageBlock.js.map +1 -0
  389. package/dist/components/provenance/ConfidenceBar.js +60 -0
  390. package/dist/components/provenance/ConfidenceBar.js.map +1 -0
  391. package/dist/components/provenance/ConfidenceMeter.js +36 -0
  392. package/dist/components/provenance/ConfidenceMeter.js.map +1 -0
  393. package/dist/components/provenance/ConfidenceReadout.js +31 -0
  394. package/dist/components/provenance/ConfidenceReadout.js.map +1 -0
  395. package/dist/components/provenance/ProvenanceBadge.js +44 -0
  396. package/dist/components/provenance/ProvenanceBadge.js.map +1 -0
  397. package/dist/components/provenance/ProvenanceDetail.js +114 -0
  398. package/dist/components/provenance/ProvenanceDetail.js.map +1 -0
  399. package/dist/components/provenance/ProvenanceDisclosure.js +111 -0
  400. package/dist/components/provenance/ProvenanceDisclosure.js.map +1 -0
  401. package/dist/components/provenance/absence.js +31 -0
  402. package/dist/components/provenance/absence.js.map +1 -0
  403. package/dist/components/provenance/types.js +30 -0
  404. package/dist/components/provenance/types.js.map +1 -0
  405. package/dist/components/rbac/AccessRequestPanel.js +153 -0
  406. package/dist/components/rbac/AccessRequestPanel.js.map +1 -0
  407. package/dist/components/rbac/AccountMenu.js +118 -0
  408. package/dist/components/rbac/AccountMenu.js.map +1 -0
  409. package/dist/components/rbac/AgentKeysList.js +20 -0
  410. package/dist/components/rbac/AgentKeysList.js.map +1 -0
  411. package/dist/components/rbac/ApiKeysPanel.js +172 -0
  412. package/dist/components/rbac/ApiKeysPanel.js.map +1 -0
  413. package/dist/components/rbac/ApiKeysTable.js +167 -0
  414. package/dist/components/rbac/ApiKeysTable.js.map +1 -0
  415. package/dist/components/rbac/Brand.js +13 -0
  416. package/dist/components/rbac/Brand.js.map +1 -0
  417. package/dist/components/rbac/Can.js +18 -0
  418. package/dist/components/rbac/Can.js.map +1 -0
  419. package/dist/components/rbac/ChangePasswordForm.js +73 -0
  420. package/dist/components/rbac/ChangePasswordForm.js.map +1 -0
  421. package/dist/components/rbac/DangerZone.js +27 -0
  422. package/dist/components/rbac/DangerZone.js.map +1 -0
  423. package/dist/components/rbac/DevToolsPopover.js +140 -0
  424. package/dist/components/rbac/DevToolsPopover.js.map +1 -0
  425. package/dist/components/rbac/EndedLine.js +24 -0
  426. package/dist/components/rbac/EndedLine.js.map +1 -0
  427. package/dist/components/rbac/InvitationsList.js +148 -0
  428. package/dist/components/rbac/InvitationsList.js.map +1 -0
  429. package/dist/components/rbac/InviteMembersDialog.js +97 -0
  430. package/dist/components/rbac/InviteMembersDialog.js.map +1 -0
  431. package/dist/components/rbac/MembersPanel.js +138 -0
  432. package/dist/components/rbac/MembersPanel.js.map +1 -0
  433. package/dist/components/rbac/PermissionRequestPanel.js +141 -0
  434. package/dist/components/rbac/PermissionRequestPanel.js.map +1 -0
  435. package/dist/components/rbac/ProfileForm.js +86 -0
  436. package/dist/components/rbac/ProfileForm.js.map +1 -0
  437. package/dist/components/rbac/ProfilePage.js +58 -0
  438. package/dist/components/rbac/ProfilePage.js.map +1 -0
  439. package/dist/components/rbac/RBACProvider.js +82 -0
  440. package/dist/components/rbac/RBACProvider.js.map +1 -0
  441. package/dist/components/rbac/RoleEditorDialog.js +90 -0
  442. package/dist/components/rbac/RoleEditorDialog.js.map +1 -0
  443. package/dist/components/rbac/RoleKeyPicker.js +77 -0
  444. package/dist/components/rbac/RoleKeyPicker.js.map +1 -0
  445. package/dist/components/rbac/RolePermissionMatrix.js +37 -0
  446. package/dist/components/rbac/RolePermissionMatrix.js.map +1 -0
  447. package/dist/components/rbac/RolesPermissionsPage.js +142 -0
  448. package/dist/components/rbac/RolesPermissionsPage.js.map +1 -0
  449. package/dist/components/rbac/SessionsList.js +146 -0
  450. package/dist/components/rbac/SessionsList.js.map +1 -0
  451. package/dist/components/rbac/TeamSettingsForm.js +69 -0
  452. package/dist/components/rbac/TeamSettingsForm.js.map +1 -0
  453. package/dist/components/rbac/TeamSwitcher.js +66 -0
  454. package/dist/components/rbac/TeamSwitcher.js.map +1 -0
  455. package/dist/components/rbac/approvalPanelParts.js +130 -0
  456. package/dist/components/rbac/approvalPanelParts.js.map +1 -0
  457. package/dist/components/rbac/permissionSections.js +8 -0
  458. package/dist/components/rbac/permissionSections.js.map +1 -0
  459. package/dist/components/rbac/stagedForm.js +42 -0
  460. package/dist/components/rbac/stagedForm.js.map +1 -0
  461. package/dist/components/rbac/useStagedImage.js +21 -0
  462. package/dist/components/rbac/useStagedImage.js.map +1 -0
  463. package/dist/components/roadmap/PhaseManager.js +48 -0
  464. package/dist/components/roadmap/PhaseManager.js.map +1 -0
  465. package/dist/components/roadmap/RoadmapItemCard.js +96 -0
  466. package/dist/components/roadmap/RoadmapItemCard.js.map +1 -0
  467. package/dist/components/roadmap/RoadmapPage.js +34 -0
  468. package/dist/components/roadmap/RoadmapPage.js.map +1 -0
  469. package/dist/components/roadmap/RoadmapSwimlaneBoard.js +91 -0
  470. package/dist/components/roadmap/RoadmapSwimlaneBoard.js.map +1 -0
  471. package/dist/components/roadmap/TrackManager.js +58 -0
  472. package/dist/components/roadmap/TrackManager.js.map +1 -0
  473. package/dist/components/roadmap/UseCaseCard.js +93 -0
  474. package/dist/components/roadmap/UseCaseCard.js.map +1 -0
  475. package/dist/components/roadmap/UseCaseLedgerPage.js +98 -0
  476. package/dist/components/roadmap/UseCaseLedgerPage.js.map +1 -0
  477. package/dist/components/roadmap/chip-tones.js +9 -0
  478. package/dist/components/roadmap/chip-tones.js.map +1 -0
  479. package/dist/components/roadmap/derive.js +28 -0
  480. package/dist/components/roadmap/derive.js.map +1 -0
  481. package/dist/components/stepper/Stepper.js +276 -0
  482. package/dist/components/stepper/Stepper.js.map +1 -0
  483. package/dist/components/stepper/derive.js +53 -0
  484. package/dist/components/stepper/derive.js.map +1 -0
  485. package/dist/confidence.css +222 -0
  486. package/dist/fonts/bricolage-grotesque-0.woff2 +0 -0
  487. package/dist/fonts/bricolage-grotesque-1.woff2 +0 -0
  488. package/dist/fonts/bricolage-grotesque-2.woff2 +0 -0
  489. package/dist/fonts/figtree-0.woff2 +0 -0
  490. package/dist/fonts/figtree-1.woff2 +0 -0
  491. package/dist/fonts/figtree-2.woff2 +0 -0
  492. package/dist/fonts/figtree-3.woff2 +0 -0
  493. package/dist/fonts/jetbrains-mono-0.woff2 +0 -0
  494. package/dist/fonts/jetbrains-mono-1.woff2 +0 -0
  495. package/dist/fonts/jetbrains-mono-10.woff2 +0 -0
  496. package/dist/fonts/jetbrains-mono-11.woff2 +0 -0
  497. package/dist/fonts/jetbrains-mono-2.woff2 +0 -0
  498. package/dist/fonts/jetbrains-mono-3.woff2 +0 -0
  499. package/dist/fonts/jetbrains-mono-4.woff2 +0 -0
  500. package/dist/fonts/jetbrains-mono-5.woff2 +0 -0
  501. package/dist/fonts/jetbrains-mono-6.woff2 +0 -0
  502. package/dist/fonts/jetbrains-mono-7.woff2 +0 -0
  503. package/dist/fonts/jetbrains-mono-8.woff2 +0 -0
  504. package/dist/fonts/jetbrains-mono-9.woff2 +0 -0
  505. package/dist/fonts.css +187 -0
  506. package/dist/icons/data.js +233 -0
  507. package/dist/icons/data.js.map +1 -0
  508. package/dist/index.js +942 -0
  509. package/dist/index.js.map +1 -0
  510. package/dist/lib/attention.js +75 -0
  511. package/dist/lib/attention.js.map +1 -0
  512. package/dist/lib/board/anchor.js +14 -0
  513. package/dist/lib/board/anchor.js.map +1 -0
  514. package/dist/lib/board/model.js +41 -0
  515. package/dist/lib/board/model.js.map +1 -0
  516. package/dist/lib/board/move.js +161 -0
  517. package/dist/lib/board/move.js.map +1 -0
  518. package/dist/lib/board/position.js +11 -0
  519. package/dist/lib/board/position.js.map +1 -0
  520. package/dist/lib/board/rejection.js +22 -0
  521. package/dist/lib/board/rejection.js.map +1 -0
  522. package/dist/lib/board/use-board.js +43 -0
  523. package/dist/lib/board/use-board.js.map +1 -0
  524. package/dist/lib/calendar/band-packer.js +44 -0
  525. package/dist/lib/calendar/band-packer.js.map +1 -0
  526. package/dist/lib/calendar/drag.js +74 -0
  527. package/dist/lib/calendar/drag.js.map +1 -0
  528. package/dist/lib/calendar/lane-packer.js +67 -0
  529. package/dist/lib/calendar/lane-packer.js.map +1 -0
  530. package/dist/lib/calendar/segments.js +82 -0
  531. package/dist/lib/calendar/segments.js.map +1 -0
  532. package/dist/lib/calendar/types.js +7 -0
  533. package/dist/lib/calendar/types.js.map +1 -0
  534. package/dist/lib/chart-palette.js +27 -0
  535. package/dist/lib/chart-palette.js.map +1 -0
  536. package/dist/lib/clipboard.js +30 -0
  537. package/dist/lib/clipboard.js.map +1 -0
  538. package/dist/lib/cn.js +9 -0
  539. package/dist/lib/cn.js.map +1 -0
  540. package/dist/lib/color.js +24 -0
  541. package/dist/lib/color.js.map +1 -0
  542. package/dist/lib/component-guidance.js +297 -0
  543. package/dist/lib/component-guidance.js.map +1 -0
  544. package/dist/lib/confidence.js +22 -0
  545. package/dist/lib/confidence.js.map +1 -0
  546. package/dist/lib/date-timeline/scale.js +197 -0
  547. package/dist/lib/date-timeline/scale.js.map +1 -0
  548. package/dist/lib/design-frame/document.js +44 -0
  549. package/dist/lib/design-frame/document.js.map +1 -0
  550. package/dist/lib/design-frame/mini-app-script.js +107 -0
  551. package/dist/lib/design-frame/mini-app-script.js.map +1 -0
  552. package/dist/lib/design-frame/mini-app.js +12 -0
  553. package/dist/lib/design-frame/mini-app.js.map +1 -0
  554. package/dist/lib/design-frame/protocol.js +46 -0
  555. package/dist/lib/design-frame/protocol.js.map +1 -0
  556. package/dist/lib/dev-warn.js +17 -0
  557. package/dist/lib/dev-warn.js.map +1 -0
  558. package/dist/lib/dnd/announce.js +120 -0
  559. package/dist/lib/dnd/announce.js.map +1 -0
  560. package/dist/lib/dnd/autoscroll.js +123 -0
  561. package/dist/lib/dnd/autoscroll.js.map +1 -0
  562. package/dist/lib/dnd/cross-drop.js +11 -0
  563. package/dist/lib/dnd/cross-drop.js.map +1 -0
  564. package/dist/lib/dnd/geometry.js +99 -0
  565. package/dist/lib/dnd/geometry.js.map +1 -0
  566. package/dist/lib/dnd/sensors/gesture.js +86 -0
  567. package/dist/lib/dnd/sensors/gesture.js.map +1 -0
  568. package/dist/lib/dnd/sensors/keyboard.js +47 -0
  569. package/dist/lib/dnd/sensors/keyboard.js.map +1 -0
  570. package/dist/lib/dnd/sensors/pointer.js +32 -0
  571. package/dist/lib/dnd/sensors/pointer.js.map +1 -0
  572. package/dist/lib/dnd/session.js +256 -0
  573. package/dist/lib/dnd/session.js.map +1 -0
  574. package/dist/lib/dnd/use-drag.js +90 -0
  575. package/dist/lib/dnd/use-drag.js.map +1 -0
  576. package/dist/lib/dom/scroll-ancestor.js +18 -0
  577. package/dist/lib/dom/scroll-ancestor.js.map +1 -0
  578. package/dist/lib/format.js +23 -0
  579. package/dist/lib/format.js.map +1 -0
  580. package/dist/lib/group-in-order.js +13 -0
  581. package/dist/lib/group-in-order.js.map +1 -0
  582. package/dist/lib/header-fold.js +11 -0
  583. package/dist/lib/header-fold.js.map +1 -0
  584. package/dist/lib/i18n/areas/auth-provenance-flows.js +156 -0
  585. package/dist/lib/i18n/areas/auth-provenance-flows.js.map +1 -0
  586. package/dist/lib/i18n/areas/board.js +35 -0
  587. package/dist/lib/i18n/areas/board.js.map +1 -0
  588. package/dist/lib/i18n/areas/card-face.js +10 -0
  589. package/dist/lib/i18n/areas/card-face.js.map +1 -0
  590. package/dist/lib/i18n/areas/chat-chart.js +118 -0
  591. package/dist/lib/i18n/areas/chat-chart.js.map +1 -0
  592. package/dist/lib/i18n/areas/code-editor.js +24 -0
  593. package/dist/lib/i18n/areas/code-editor.js.map +1 -0
  594. package/dist/lib/i18n/areas/date-timeline.js +21 -0
  595. package/dist/lib/i18n/areas/date-timeline.js.map +1 -0
  596. package/dist/lib/i18n/areas/dates.js +71 -0
  597. package/dist/lib/i18n/areas/dates.js.map +1 -0
  598. package/dist/lib/i18n/areas/docs-views.js +183 -0
  599. package/dist/lib/i18n/areas/docs-views.js.map +1 -0
  600. package/dist/lib/i18n/areas/feedback.js +75 -0
  601. package/dist/lib/i18n/areas/feedback.js.map +1 -0
  602. package/dist/lib/i18n/areas/formats.js +24 -0
  603. package/dist/lib/i18n/areas/formats.js.map +1 -0
  604. package/dist/lib/i18n/areas/forms.js +110 -0
  605. package/dist/lib/i18n/areas/forms.js.map +1 -0
  606. package/dist/lib/i18n/areas/keys.js +25 -0
  607. package/dist/lib/i18n/areas/keys.js.map +1 -0
  608. package/dist/lib/i18n/areas/markdown.js +136 -0
  609. package/dist/lib/i18n/areas/markdown.js.map +1 -0
  610. package/dist/lib/i18n/areas/move-rejected.js +14 -0
  611. package/dist/lib/i18n/areas/move-rejected.js.map +1 -0
  612. package/dist/lib/i18n/areas/navigation.js +104 -0
  613. package/dist/lib/i18n/areas/navigation.js.map +1 -0
  614. package/dist/lib/i18n/areas/rbac.js +331 -0
  615. package/dist/lib/i18n/areas/rbac.js.map +1 -0
  616. package/dist/lib/i18n/emphasis.js +6 -0
  617. package/dist/lib/i18n/emphasis.js.map +1 -0
  618. package/dist/lib/i18n/number-format.js +9 -0
  619. package/dist/lib/i18n/number-format.js.map +1 -0
  620. package/dist/lib/i18n/plural.js +9 -0
  621. package/dist/lib/i18n/plural.js.map +1 -0
  622. package/dist/lib/i18n/provider.js +27 -0
  623. package/dist/lib/i18n/provider.js.map +1 -0
  624. package/dist/lib/i18n/strings.js +38 -0
  625. package/dist/lib/i18n/strings.js.map +1 -0
  626. package/dist/lib/icons.js +17 -0
  627. package/dist/lib/icons.js.map +1 -0
  628. package/dist/lib/interactive-target.js +9 -0
  629. package/dist/lib/interactive-target.js.map +1 -0
  630. package/dist/lib/intl-cache.js +69 -0
  631. package/dist/lib/intl-cache.js.map +1 -0
  632. package/dist/lib/legal-document.js +37 -0
  633. package/dist/lib/legal-document.js.map +1 -0
  634. package/dist/lib/line-diff-model.js +51 -0
  635. package/dist/lib/line-diff-model.js.map +1 -0
  636. package/dist/lib/markdown/attachments.js +71 -0
  637. package/dist/lib/markdown/attachments.js.map +1 -0
  638. package/dist/lib/markdown/caret-map.js +153 -0
  639. package/dist/lib/markdown/caret-map.js.map +1 -0
  640. package/dist/lib/markdown/caret.js +35 -0
  641. package/dist/lib/markdown/caret.js.map +1 -0
  642. package/dist/lib/markdown/commands.js +443 -0
  643. package/dist/lib/markdown/commands.js.map +1 -0
  644. package/dist/lib/markdown/convert.js +153 -0
  645. package/dist/lib/markdown/convert.js.map +1 -0
  646. package/dist/lib/markdown/dom.js +89 -0
  647. package/dist/lib/markdown/dom.js.map +1 -0
  648. package/dist/lib/markdown/edit.js +92 -0
  649. package/dist/lib/markdown/edit.js.map +1 -0
  650. package/dist/lib/markdown/history.js +79 -0
  651. package/dist/lib/markdown/history.js.map +1 -0
  652. package/dist/lib/markdown/hotkeys.js +63 -0
  653. package/dist/lib/markdown/hotkeys.js.map +1 -0
  654. package/dist/lib/markdown/image-pipeline.js +236 -0
  655. package/dist/lib/markdown/image-pipeline.js.map +1 -0
  656. package/dist/lib/markdown/images.js +85 -0
  657. package/dist/lib/markdown/images.js.map +1 -0
  658. package/dist/lib/markdown/input.js +210 -0
  659. package/dist/lib/markdown/input.js.map +1 -0
  660. package/dist/lib/markdown/keys.js +37 -0
  661. package/dist/lib/markdown/keys.js.map +1 -0
  662. package/dist/lib/markdown/paste.js +180 -0
  663. package/dist/lib/markdown/paste.js.map +1 -0
  664. package/dist/lib/markdown/position.js +111 -0
  665. package/dist/lib/markdown/position.js.map +1 -0
  666. package/dist/lib/markdown/project.js +108 -0
  667. package/dist/lib/markdown/project.js.map +1 -0
  668. package/dist/lib/markdown/reconcile.js +127 -0
  669. package/dist/lib/markdown/reconcile.js.map +1 -0
  670. package/dist/lib/markdown/surface.js +373 -0
  671. package/dist/lib/markdown/surface.js.map +1 -0
  672. package/dist/lib/motion.js +22 -0
  673. package/dist/lib/motion.js.map +1 -0
  674. package/dist/lib/pad.js +7 -0
  675. package/dist/lib/pad.js.map +1 -0
  676. package/dist/lib/paged-window/layout.js +15 -0
  677. package/dist/lib/paged-window/layout.js.map +1 -0
  678. package/dist/lib/paged-window/list-owner.js +21 -0
  679. package/dist/lib/paged-window/list-owner.js.map +1 -0
  680. package/dist/lib/paged-window/records-binding.js +239 -0
  681. package/dist/lib/paged-window/records-binding.js.map +1 -0
  682. package/dist/lib/paged-window/store.js +562 -0
  683. package/dist/lib/paged-window/store.js.map +1 -0
  684. package/dist/lib/paged-window/use-measured-pitch.js +38 -0
  685. package/dist/lib/paged-window/use-measured-pitch.js.map +1 -0
  686. package/dist/lib/paged-window/use-page-visibility.js +36 -0
  687. package/dist/lib/paged-window/use-page-visibility.js.map +1 -0
  688. package/dist/lib/paged-window/use-paged-window.js +43 -0
  689. package/dist/lib/paged-window/use-paged-window.js.map +1 -0
  690. package/dist/lib/paged-window/use-scroll-root.js +12 -0
  691. package/dist/lib/paged-window/use-scroll-root.js.map +1 -0
  692. package/dist/lib/persist.js +84 -0
  693. package/dist/lib/persist.js.map +1 -0
  694. package/dist/lib/preference-values.js +13 -0
  695. package/dist/lib/preference-values.js.map +1 -0
  696. package/dist/lib/preferences.js +86 -0
  697. package/dist/lib/preferences.js.map +1 -0
  698. package/dist/lib/reads/hooks.js +156 -0
  699. package/dist/lib/reads/hooks.js.map +1 -0
  700. package/dist/lib/reads/optimistic.js +169 -0
  701. package/dist/lib/reads/optimistic.js.map +1 -0
  702. package/dist/lib/reads/refetch.js +108 -0
  703. package/dist/lib/reads/refetch.js.map +1 -0
  704. package/dist/lib/reads/slots.js +215 -0
  705. package/dist/lib/reads/slots.js.map +1 -0
  706. package/dist/lib/realtime/hooks.js +40 -0
  707. package/dist/lib/realtime/hooks.js.map +1 -0
  708. package/dist/lib/realtime/provider.js +25 -0
  709. package/dist/lib/realtime/provider.js.map +1 -0
  710. package/dist/lib/realtime/registry.js +472 -0
  711. package/dist/lib/realtime/registry.js.map +1 -0
  712. package/dist/lib/records/define-record-type.js +33 -0
  713. package/dist/lib/records/define-record-type.js.map +1 -0
  714. package/dist/lib/records/hooks.js +39 -0
  715. package/dist/lib/records/hooks.js.map +1 -0
  716. package/dist/lib/records/store.js +572 -0
  717. package/dist/lib/records/store.js.map +1 -0
  718. package/dist/lib/records/wire.js +58 -0
  719. package/dist/lib/records/wire.js.map +1 -0
  720. package/dist/lib/reduced-motion-help.js +19 -0
  721. package/dist/lib/reduced-motion-help.js.map +1 -0
  722. package/dist/lib/scroll-caret.js +18 -0
  723. package/dist/lib/scroll-caret.js.map +1 -0
  724. package/dist/lib/sim/createSimStore.js +54 -0
  725. package/dist/lib/sim/createSimStore.js.map +1 -0
  726. package/dist/lib/sim/latency.js +28 -0
  727. package/dist/lib/sim/latency.js.map +1 -0
  728. package/dist/lib/sim/registry.js +13 -0
  729. package/dist/lib/sim/registry.js.map +1 -0
  730. package/dist/lib/sim/settings.js +41 -0
  731. package/dist/lib/sim/settings.js.map +1 -0
  732. package/dist/lib/submit-shortcut.js +25 -0
  733. package/dist/lib/submit-shortcut.js.map +1 -0
  734. package/dist/lib/syntax/index.js +33 -0
  735. package/dist/lib/syntax/index.js.map +1 -0
  736. package/dist/lib/syntax/languages/bash.js +77 -0
  737. package/dist/lib/syntax/languages/bash.js.map +1 -0
  738. package/dist/lib/syntax/languages/css.js +81 -0
  739. package/dist/lib/syntax/languages/css.js.map +1 -0
  740. package/dist/lib/syntax/languages/html.js +91 -0
  741. package/dist/lib/syntax/languages/html.js.map +1 -0
  742. package/dist/lib/syntax/languages/index.js +49 -0
  743. package/dist/lib/syntax/languages/index.js.map +1 -0
  744. package/dist/lib/syntax/languages/javascript.js +133 -0
  745. package/dist/lib/syntax/languages/javascript.js.map +1 -0
  746. package/dist/lib/syntax/languages/json.js +45 -0
  747. package/dist/lib/syntax/languages/json.js.map +1 -0
  748. package/dist/lib/syntax/languages/mongodb.js +24 -0
  749. package/dist/lib/syntax/languages/mongodb.js.map +1 -0
  750. package/dist/lib/syntax/languages/plain.js +10 -0
  751. package/dist/lib/syntax/languages/plain.js.map +1 -0
  752. package/dist/lib/syntax/languages/sql.js +113 -0
  753. package/dist/lib/syntax/languages/sql.js.map +1 -0
  754. package/dist/lib/syntax/languages/vue.js +31 -0
  755. package/dist/lib/syntax/languages/vue.js.map +1 -0
  756. package/dist/lib/syntax/languages/yaml.js +55 -0
  757. package/dist/lib/syntax/languages/yaml.js.map +1 -0
  758. package/dist/lib/syntax/markdown/grammar.js +52 -0
  759. package/dist/lib/syntax/markdown/grammar.js.map +1 -0
  760. package/dist/lib/syntax/markdown/inline.js +477 -0
  761. package/dist/lib/syntax/markdown/inline.js.map +1 -0
  762. package/dist/lib/syntax/markdown/parse.js +464 -0
  763. package/dist/lib/syntax/markdown/parse.js.map +1 -0
  764. package/dist/lib/syntax/markdown/refs.js +94 -0
  765. package/dist/lib/syntax/markdown/refs.js.map +1 -0
  766. package/dist/lib/syntax/markdown/render.js +230 -0
  767. package/dist/lib/syntax/markdown/render.js.map +1 -0
  768. package/dist/lib/syntax/markdown/spans.js +40 -0
  769. package/dist/lib/syntax/markdown/spans.js.map +1 -0
  770. package/dist/lib/syntax/registry.js +55 -0
  771. package/dist/lib/syntax/registry.js.map +1 -0
  772. package/dist/lib/syntax/tokenize.js +96 -0
  773. package/dist/lib/syntax/tokenize.js.map +1 -0
  774. package/dist/lib/time/instant.js +7 -0
  775. package/dist/lib/time/instant.js.map +1 -0
  776. package/dist/lib/time/plain.js +83 -0
  777. package/dist/lib/time/plain.js.map +1 -0
  778. package/dist/lib/time/relativeAge.js +20 -0
  779. package/dist/lib/time/relativeAge.js.map +1 -0
  780. package/dist/lib/time/relativeClock.js +59 -0
  781. package/dist/lib/time/relativeClock.js.map +1 -0
  782. package/dist/lib/time/types.js +23 -0
  783. package/dist/lib/time/types.js.map +1 -0
  784. package/dist/lib/time/zone.js +148 -0
  785. package/dist/lib/time/zone.js.map +1 -0
  786. package/dist/lib/use-controllable.js +16 -0
  787. package/dist/lib/use-controllable.js.map +1 -0
  788. package/dist/lib/use-fill-height.js +49 -0
  789. package/dist/lib/use-fill-height.js.map +1 -0
  790. package/dist/lib/use-hydrated.js +14 -0
  791. package/dist/lib/use-hydrated.js.map +1 -0
  792. package/dist/lib/use-media-query.js +30 -0
  793. package/dist/lib/use-media-query.js.map +1 -0
  794. package/dist/lib/use-relabel-base-ui-dismiss.js +26 -0
  795. package/dist/lib/use-relabel-base-ui-dismiss.js.map +1 -0
  796. package/dist/lib/use-release-snap-drag.js +29 -0
  797. package/dist/lib/use-release-snap-drag.js.map +1 -0
  798. package/dist/lib/use-roving-options.js +18 -0
  799. package/dist/lib/use-roving-options.js.map +1 -0
  800. package/dist/lib/values/absent.js +5 -0
  801. package/dist/lib/values/absent.js.map +1 -0
  802. package/dist/lib/values/boolean.js +13 -0
  803. package/dist/lib/values/boolean.js.map +1 -0
  804. package/dist/lib/values/currency.js +23 -0
  805. package/dist/lib/values/currency.js.map +1 -0
  806. package/dist/lib/values/date.js +35 -0
  807. package/dist/lib/values/date.js.map +1 -0
  808. package/dist/lib/values/datetime.js +54 -0
  809. package/dist/lib/values/datetime.js.map +1 -0
  810. package/dist/lib/values/locale-date.js +60 -0
  811. package/dist/lib/values/locale-date.js.map +1 -0
  812. package/dist/lib/values/number.js +16 -0
  813. package/dist/lib/values/number.js.map +1 -0
  814. package/dist/pure.js +379 -0
  815. package/dist/pure.js.map +1 -0
  816. package/dist/styles.css +190 -0
  817. package/dist/theme.css +360 -0
  818. package/dist/types/components/Accordion.d.ts +15 -0
  819. package/dist/types/components/AgentWorkingSpinner.d.ts +23 -0
  820. package/dist/types/components/AppShell.d.ts +164 -0
  821. package/dist/types/components/Attention.d.ts +87 -0
  822. package/dist/types/components/Avatar.d.ts +154 -0
  823. package/dist/types/components/Badge.d.ts +131 -0
  824. package/dist/types/components/Board.d.ts +239 -0
  825. package/dist/types/components/Button.d.ts +208 -0
  826. package/dist/types/components/Callout.d.ts +163 -0
  827. package/dist/types/components/Card.d.ts +219 -0
  828. package/dist/types/components/Choice.d.ts +127 -0
  829. package/dist/types/components/CodeEditor.d.ts +86 -0
  830. package/dist/types/components/ColorPicker.d.ts +14 -0
  831. package/dist/types/components/Combobox.d.ts +43 -0
  832. package/dist/types/components/CommandPalette.d.ts +35 -0
  833. package/dist/types/components/ConcentricRing.d.ts +61 -0
  834. package/dist/types/components/ConnectionCard.d.ts +64 -0
  835. package/dist/types/components/ContextItemRow.d.ts +35 -0
  836. package/dist/types/components/CopyValue.d.ts +14 -0
  837. package/dist/types/components/CountBadge.d.ts +14 -0
  838. package/dist/types/components/DateCalendar.d.ts +30 -0
  839. package/dist/types/components/DateField.d.ts +29 -0
  840. package/dist/types/components/DatePicker.d.ts +20 -0
  841. package/dist/types/components/DateTimeText.d.ts +9 -0
  842. package/dist/types/components/DescriptionList.d.ts +40 -0
  843. package/dist/types/components/Dialog.d.ts +269 -0
  844. package/dist/types/components/DragDrop.d.ts +196 -0
  845. package/dist/types/components/Drawer.d.ts +163 -0
  846. package/dist/types/components/EditGutter.d.ts +44 -0
  847. package/dist/types/components/EmojiPicker.d.ts +30 -0
  848. package/dist/types/components/ErrorBoundary.d.ts +43 -0
  849. package/dist/types/components/Field.d.ts +37 -0
  850. package/dist/types/components/FileUpload.d.ts +22 -0
  851. package/dist/types/components/FilterMenu.d.ts +120 -0
  852. package/dist/types/components/GatesSection.d.ts +79 -0
  853. package/dist/types/components/Icon.d.ts +40 -0
  854. package/dist/types/components/IconButton.d.ts +69 -0
  855. package/dist/types/components/IconStack.d.ts +28 -0
  856. package/dist/types/components/ImageUploadField.d.ts +38 -0
  857. package/dist/types/components/InlineEdit.d.ts +183 -0
  858. package/dist/types/components/InlineMarkdownEdit.d.ts +100 -0
  859. package/dist/types/components/Input.d.ts +128 -0
  860. package/dist/types/components/LegalDocument.d.ts +23 -0
  861. package/dist/types/components/LineDiff.d.ts +53 -0
  862. package/dist/types/components/ListHeader.d.ts +45 -0
  863. package/dist/types/components/Loading.d.ts +131 -0
  864. package/dist/types/components/Markdown.d.ts +35 -0
  865. package/dist/types/components/MarkdownEditor.d.ts +129 -0
  866. package/dist/types/components/Menu.d.ts +157 -0
  867. package/dist/types/components/Navigation.d.ts +67 -0
  868. package/dist/types/components/NumberInput.d.ts +177 -0
  869. package/dist/types/components/OTPInput.d.ts +13 -0
  870. package/dist/types/components/OrderedEntityManager.d.ts +64 -0
  871. package/dist/types/components/PagedWindowList.d.ts +23 -0
  872. package/dist/types/components/PaginationBar.d.ts +31 -0
  873. package/dist/types/components/Panel.d.ts +94 -0
  874. package/dist/types/components/PasswordInput.d.ts +7 -0
  875. package/dist/types/components/PasswordRequirements.d.ts +11 -0
  876. package/dist/types/components/PatchDiff.d.ts +38 -0
  877. package/dist/types/components/PendingVeil.d.ts +8 -0
  878. package/dist/types/components/Popover.d.ts +231 -0
  879. package/dist/types/components/Progress.d.ts +580 -0
  880. package/dist/types/components/RatingScale.d.ts +30 -0
  881. package/dist/types/components/ReadMore.d.ts +26 -0
  882. package/dist/types/components/RecordCard.d.ts +413 -0
  883. package/dist/types/components/RelativeTime.d.ts +17 -0
  884. package/dist/types/components/SandboxedFrame.d.ts +37 -0
  885. package/dist/types/components/SearchInput.d.ts +6 -0
  886. package/dist/types/components/SecretField.d.ts +90 -0
  887. package/dist/types/components/SectionNav.d.ts +15 -0
  888. package/dist/types/components/Select.d.ts +53 -0
  889. package/dist/types/components/SequenceDiagram.d.ts +15 -0
  890. package/dist/types/components/SettingRow.d.ts +144 -0
  891. package/dist/types/components/SignOffRings.d.ts +29 -0
  892. package/dist/types/components/Slider.d.ts +255 -0
  893. package/dist/types/components/SolutionChoice.d.ts +49 -0
  894. package/dist/types/components/SortMenu.d.ts +45 -0
  895. package/dist/types/components/Spinner.d.ts +29 -0
  896. package/dist/types/components/Stat.d.ts +136 -0
  897. package/dist/types/components/StatusSelect.d.ts +93 -0
  898. package/dist/types/components/Surface.d.ts +145 -0
  899. package/dist/types/components/Table.d.ts +164 -0
  900. package/dist/types/components/Tabs.d.ts +142 -0
  901. package/dist/types/components/ThemeMenu.d.ts +56 -0
  902. package/dist/types/components/Toast.d.ts +63 -0
  903. package/dist/types/components/Toggle.d.ts +168 -0
  904. package/dist/types/components/ToggleMatrix.d.ts +51 -0
  905. package/dist/types/components/Tree.d.ts +20 -0
  906. package/dist/types/components/TriStateSwitch.d.ts +63 -0
  907. package/dist/types/components/VideoPlayer.d.ts +26 -0
  908. package/dist/types/components/auth/AcceptInvitationCard.d.ts +54 -0
  909. package/dist/types/components/auth/AuthLayout.d.ts +12 -0
  910. package/dist/types/components/auth/ForgotPasswordForm.d.ts +6 -0
  911. package/dist/types/components/auth/LoginForm.d.ts +13 -0
  912. package/dist/types/components/auth/ResetPasswordForm.d.ts +9 -0
  913. package/dist/types/components/auth/SignInProviders.d.ts +56 -0
  914. package/dist/types/components/auth/SignupCard.d.ts +62 -0
  915. package/dist/types/components/auth/TermsAcceptance.d.ts +14 -0
  916. package/dist/types/components/auth/index.d.ts +8 -0
  917. package/dist/types/components/board/context.d.ts +65 -0
  918. package/dist/types/components/board/recipe.d.ts +97 -0
  919. package/dist/types/components/calendar/CalendarMonth.d.ts +32 -0
  920. package/dist/types/components/calendar/CalendarTimeGrid.d.ts +74 -0
  921. package/dist/types/components/calendar/EventActions.d.ts +16 -0
  922. package/dist/types/components/calendar/format.d.ts +42 -0
  923. package/dist/types/components/calendar/palette.d.ts +17 -0
  924. package/dist/types/components/calendar/use-calendar-drag.d.ts +53 -0
  925. package/dist/types/components/calendar/use-event-keyboard.d.ts +23 -0
  926. package/dist/types/components/calendar/use-grid-navigation.d.ts +47 -0
  927. package/dist/types/components/calendar/use-now.d.ts +20 -0
  928. package/dist/types/components/card-face/AcRingGlyph.d.ts +20 -0
  929. package/dist/types/components/card-face/BoardCardAgentSlot.d.ts +19 -0
  930. package/dist/types/components/card-face/CardFace.d.ts +106 -0
  931. package/dist/types/components/card-face/CardTypeBadge.d.ts +21 -0
  932. package/dist/types/components/card-face/EffortBadge.d.ts +9 -0
  933. package/dist/types/components/card-face/GateRingGlyph.d.ts +22 -0
  934. package/dist/types/components/card-face/OverflowRow.d.ts +40 -0
  935. package/dist/types/components/card-face/TapTip.d.ts +15 -0
  936. package/dist/types/components/card-face/hit-area.d.ts +20 -0
  937. package/dist/types/components/card-face/vocabulary.d.ts +83 -0
  938. package/dist/types/components/chart/BarList.d.ts +27 -0
  939. package/dist/types/components/chart/LineChart.d.ts +64 -0
  940. package/dist/types/components/chart/ShareBar.d.ts +26 -0
  941. package/dist/types/components/chart/TimeSeriesChart.d.ts +60 -0
  942. package/dist/types/components/chart/label-metrics.d.ts +9 -0
  943. package/dist/types/components/chart/line-chart-axis.d.ts +14 -0
  944. package/dist/types/components/chart/line-chart-scale.d.ts +55 -0
  945. package/dist/types/components/chart/line-series-style.d.ts +14 -0
  946. package/dist/types/components/chart/share-bar-labels.d.ts +17 -0
  947. package/dist/types/components/chart/shared.d.ts +122 -0
  948. package/dist/types/components/chart/time-series-scale.d.ts +29 -0
  949. package/dist/types/components/chat/Attachment.d.ts +125 -0
  950. package/dist/types/components/chat/Chat.d.ts +60 -0
  951. package/dist/types/components/chat/Composer.d.ts +62 -0
  952. package/dist/types/components/chat/ContextMeter.d.ts +45 -0
  953. package/dist/types/components/chat/EffortControl.d.ts +23 -0
  954. package/dist/types/components/chat/FileCover.d.ts +14 -0
  955. package/dist/types/components/chat/Message.d.ts +66 -0
  956. package/dist/types/components/chat/MessageScroller.d.ts +18 -0
  957. package/dist/types/components/chat/ModelSelector.d.ts +44 -0
  958. package/dist/types/components/chat/StreamingMarkdown.d.ts +11 -0
  959. package/dist/types/components/chat/download-file.d.ts +7 -0
  960. package/dist/types/components/chat/file-icon.d.ts +29 -0
  961. package/dist/types/components/chat/types.d.ts +165 -0
  962. package/dist/types/components/checklist/StatusChecklist.d.ts +37 -0
  963. package/dist/types/components/checklist/index.d.ts +3 -0
  964. package/dist/types/components/checklist/tally.d.ts +19 -0
  965. package/dist/types/components/checklist/types.d.ts +28 -0
  966. package/dist/types/components/code-editor/context.d.ts +32 -0
  967. package/dist/types/components/code-editor/editing.d.ts +39 -0
  968. package/dist/types/components/code-editor/highlight.d.ts +20 -0
  969. package/dist/types/components/code-editor/recipe.d.ts +109 -0
  970. package/dist/types/components/date-timeline/DateTimeline.d.ts +99 -0
  971. package/dist/types/components/date-timeline/TimelineRow.d.ts +22 -0
  972. package/dist/types/components/date-timeline/useBarDrag.d.ts +15 -0
  973. package/dist/types/components/date-timeline/useMarkerDrag.d.ts +14 -0
  974. package/dist/types/components/date-timeline/useTimelineZoom.d.ts +23 -0
  975. package/dist/types/components/drag-drop/context.d.ts +85 -0
  976. package/dist/types/components/drag-drop/recipe.d.ts +163 -0
  977. package/dist/types/components/drag-drop/shift.d.ts +153 -0
  978. package/dist/types/components/edit/activation.d.ts +21 -0
  979. package/dist/types/components/edit/outcome.d.ts +29 -0
  980. package/dist/types/components/edit/use-edit-session.d.ts +77 -0
  981. package/dist/types/components/file-viewer/FileViewer.d.ts +2 -0
  982. package/dist/types/components/file-viewer/PageNumberJumpField.d.ts +9 -0
  983. package/dist/types/components/file-viewer/ViewerControls.d.ts +20 -0
  984. package/dist/types/components/file-viewer/ViewerRail.d.ts +10 -0
  985. package/dist/types/components/file-viewer/ViewerStage.d.ts +22 -0
  986. package/dist/types/components/file-viewer/frames.d.ts +28 -0
  987. package/dist/types/components/file-viewer/index.d.ts +3 -0
  988. package/dist/types/components/file-viewer/types.d.ts +70 -0
  989. package/dist/types/components/file-viewer/use-frame-cursor.d.ts +13 -0
  990. package/dist/types/components/file-viewer/use-viewer-keys.d.ts +24 -0
  991. package/dist/types/components/file-viewer/use-viewer-zoom.d.ts +29 -0
  992. package/dist/types/components/focus-web/FocusWeb.d.ts +3 -0
  993. package/dist/types/components/focus-web/index.d.ts +4 -0
  994. package/dist/types/components/focus-web/layout.d.ts +55 -0
  995. package/dist/types/components/focus-web/types.d.ts +131 -0
  996. package/dist/types/components/graph-explorer/GraphExplorer.d.ts +42 -0
  997. package/dist/types/components/graph-explorer/camera-math.d.ts +119 -0
  998. package/dist/types/components/graph-explorer/index.d.ts +5 -0
  999. package/dist/types/components/graph-explorer/tree-layout.d.ts +67 -0
  1000. package/dist/types/components/graph-explorer/types.d.ts +62 -0
  1001. package/dist/types/components/graph-explorer/use-camera.d.ts +81 -0
  1002. package/dist/types/components/graph-explorer/viewport-gesture.d.ts +32 -0
  1003. package/dist/types/components/kanban/KanbanBoard.d.ts +72 -0
  1004. package/dist/types/components/kanban/recipe.d.ts +73 -0
  1005. package/dist/types/components/kanban/types.d.ts +55 -0
  1006. package/dist/types/components/markdown/Affordances.d.ts +105 -0
  1007. package/dist/types/components/markdown/AttachmentStrip.d.ts +25 -0
  1008. package/dist/types/components/markdown/ImageUpload.d.ts +56 -0
  1009. package/dist/types/components/media-error.d.ts +11 -0
  1010. package/dist/types/components/nav-sections.d.ts +10 -0
  1011. package/dist/types/components/node-canvas/NodeCanvas.d.ts +66 -0
  1012. package/dist/types/components/node-canvas/index.d.ts +3 -0
  1013. package/dist/types/components/node-canvas/layout.d.ts +29 -0
  1014. package/dist/types/components/node-canvas/types.d.ts +207 -0
  1015. package/dist/types/components/node-canvas/use-canvas-gestures.d.ts +39 -0
  1016. package/dist/types/components/openapi/OpenApiViewer.d.ts +14 -0
  1017. package/dist/types/components/openapi/OperationCard.d.ts +33 -0
  1018. package/dist/types/components/openapi/SchemaView.d.ts +14 -0
  1019. package/dist/types/components/openapi/index.d.ts +6 -0
  1020. package/dist/types/components/openapi/resolve.d.ts +72 -0
  1021. package/dist/types/components/openapi/types.d.ts +128 -0
  1022. package/dist/types/components/overlay-shell.d.ts +48 -0
  1023. package/dist/types/components/overlay-stack.d.ts +18 -0
  1024. package/dist/types/components/paged-window/PageBlock.d.ts +31 -0
  1025. package/dist/types/components/provenance/ConfidenceBar.d.ts +118 -0
  1026. package/dist/types/components/provenance/ConfidenceMeter.d.ts +21 -0
  1027. package/dist/types/components/provenance/ConfidenceReadout.d.ts +17 -0
  1028. package/dist/types/components/provenance/ProvenanceBadge.d.ts +23 -0
  1029. package/dist/types/components/provenance/ProvenanceDetail.d.ts +109 -0
  1030. package/dist/types/components/provenance/ProvenanceDisclosure.d.ts +107 -0
  1031. package/dist/types/components/provenance/absence.d.ts +37 -0
  1032. package/dist/types/components/provenance/index.d.ts +7 -0
  1033. package/dist/types/components/provenance/types.d.ts +137 -0
  1034. package/dist/types/components/rbac/AccessRequestPanel.d.ts +92 -0
  1035. package/dist/types/components/rbac/AccountMenu.d.ts +46 -0
  1036. package/dist/types/components/rbac/AgentKeysList.d.ts +20 -0
  1037. package/dist/types/components/rbac/ApiKeysPanel.d.ts +26 -0
  1038. package/dist/types/components/rbac/ApiKeysTable.d.ts +63 -0
  1039. package/dist/types/components/rbac/Brand.d.ts +8 -0
  1040. package/dist/types/components/rbac/Can.d.ts +19 -0
  1041. package/dist/types/components/rbac/ChangePasswordForm.d.ts +18 -0
  1042. package/dist/types/components/rbac/DangerZone.d.ts +8 -0
  1043. package/dist/types/components/rbac/DevToolsPopover.d.ts +36 -0
  1044. package/dist/types/components/rbac/EndedLine.d.ts +21 -0
  1045. package/dist/types/components/rbac/InvitationsList.d.ts +39 -0
  1046. package/dist/types/components/rbac/InviteMembersDialog.d.ts +21 -0
  1047. package/dist/types/components/rbac/MembersPanel.d.ts +31 -0
  1048. package/dist/types/components/rbac/PermissionRequestPanel.d.ts +36 -0
  1049. package/dist/types/components/rbac/ProfileForm.d.ts +27 -0
  1050. package/dist/types/components/rbac/ProfilePage.d.ts +16 -0
  1051. package/dist/types/components/rbac/RBACProvider.d.ts +69 -0
  1052. package/dist/types/components/rbac/RoleEditorDialog.d.ts +28 -0
  1053. package/dist/types/components/rbac/RoleKeyPicker.d.ts +24 -0
  1054. package/dist/types/components/rbac/RolePermissionMatrix.d.ts +21 -0
  1055. package/dist/types/components/rbac/RolesPermissionsPage.d.ts +24 -0
  1056. package/dist/types/components/rbac/SessionsList.d.ts +35 -0
  1057. package/dist/types/components/rbac/TeamSettingsForm.d.ts +22 -0
  1058. package/dist/types/components/rbac/TeamSwitcher.d.ts +5 -0
  1059. package/dist/types/components/rbac/approvalPanelParts.d.ts +69 -0
  1060. package/dist/types/components/rbac/index.d.ts +25 -0
  1061. package/dist/types/components/rbac/permissionSections.d.ts +8 -0
  1062. package/dist/types/components/rbac/stagedForm.d.ts +25 -0
  1063. package/dist/types/components/rbac/types.d.ts +65 -0
  1064. package/dist/types/components/rbac/useStagedImage.d.ts +15 -0
  1065. package/dist/types/components/roadmap/PhaseManager.d.ts +19 -0
  1066. package/dist/types/components/roadmap/RoadmapItemCard.d.ts +51 -0
  1067. package/dist/types/components/roadmap/RoadmapPage.d.ts +12 -0
  1068. package/dist/types/components/roadmap/RoadmapSwimlaneBoard.d.ts +15 -0
  1069. package/dist/types/components/roadmap/TrackManager.d.ts +19 -0
  1070. package/dist/types/components/roadmap/UseCaseCard.d.ts +30 -0
  1071. package/dist/types/components/roadmap/UseCaseLedgerPage.d.ts +29 -0
  1072. package/dist/types/components/roadmap/chip-tones.d.ts +2 -0
  1073. package/dist/types/components/roadmap/derive.d.ts +39 -0
  1074. package/dist/types/components/roadmap/index.d.ts +10 -0
  1075. package/dist/types/components/roadmap/types.d.ts +86 -0
  1076. package/dist/types/components/stepper/Stepper.d.ts +79 -0
  1077. package/dist/types/components/stepper/derive.d.ts +49 -0
  1078. package/dist/types/components/stepper/index.d.ts +3 -0
  1079. package/dist/types/components/stepper/types.d.ts +118 -0
  1080. package/dist/types/icons/data.d.ts +2054 -0
  1081. package/dist/types/index.d.ts +209 -0
  1082. package/dist/types/lib/attention.d.ts +62 -0
  1083. package/dist/types/lib/board/anchor.d.ts +69 -0
  1084. package/dist/types/lib/board/index.d.ts +17 -0
  1085. package/dist/types/lib/board/model.d.ts +43 -0
  1086. package/dist/types/lib/board/move.d.ts +181 -0
  1087. package/dist/types/lib/board/position.d.ts +22 -0
  1088. package/dist/types/lib/board/rejection.d.ts +8 -0
  1089. package/dist/types/lib/board/types.d.ts +294 -0
  1090. package/dist/types/lib/board/use-board.d.ts +47 -0
  1091. package/dist/types/lib/calendar/band-packer.d.ts +53 -0
  1092. package/dist/types/lib/calendar/drag.d.ts +125 -0
  1093. package/dist/types/lib/calendar/index.d.ts +4 -0
  1094. package/dist/types/lib/calendar/lane-packer.d.ts +88 -0
  1095. package/dist/types/lib/calendar/segments.d.ts +91 -0
  1096. package/dist/types/lib/calendar/types.d.ts +166 -0
  1097. package/dist/types/lib/chart-palette.d.ts +14 -0
  1098. package/dist/types/lib/clipboard.d.ts +12 -0
  1099. package/dist/types/lib/cn.d.ts +7 -0
  1100. package/dist/types/lib/color.d.ts +14 -0
  1101. package/dist/types/lib/component-guidance.d.ts +15 -0
  1102. package/dist/types/lib/confidence.d.ts +28 -0
  1103. package/dist/types/lib/date-timeline/scale.d.ts +143 -0
  1104. package/dist/types/lib/design-frame/document.d.ts +39 -0
  1105. package/dist/types/lib/design-frame/mini-app-script.d.ts +29 -0
  1106. package/dist/types/lib/design-frame/mini-app.d.ts +17 -0
  1107. package/dist/types/lib/design-frame/protocol.d.ts +78 -0
  1108. package/dist/types/lib/dev-warn.d.ts +10 -0
  1109. package/dist/types/lib/dnd/announce.d.ts +124 -0
  1110. package/dist/types/lib/dnd/autoscroll.d.ts +88 -0
  1111. package/dist/types/lib/dnd/cross-drop.d.ts +18 -0
  1112. package/dist/types/lib/dnd/geometry.d.ts +126 -0
  1113. package/dist/types/lib/dnd/index.d.ts +17 -0
  1114. package/dist/types/lib/dnd/sensors/gesture.d.ts +37 -0
  1115. package/dist/types/lib/dnd/sensors/keyboard.d.ts +54 -0
  1116. package/dist/types/lib/dnd/sensors/pointer.d.ts +59 -0
  1117. package/dist/types/lib/dnd/session.d.ts +124 -0
  1118. package/dist/types/lib/dnd/types.d.ts +226 -0
  1119. package/dist/types/lib/dnd/use-drag.d.ts +82 -0
  1120. package/dist/types/lib/dom/scroll-ancestor.d.ts +15 -0
  1121. package/dist/types/lib/format.d.ts +33 -0
  1122. package/dist/types/lib/group-in-order.d.ts +13 -0
  1123. package/dist/types/lib/header-fold.d.ts +10 -0
  1124. package/dist/types/lib/i18n/areas/auth-provenance-flows.d.ts +287 -0
  1125. package/dist/types/lib/i18n/areas/board.d.ts +51 -0
  1126. package/dist/types/lib/i18n/areas/card-face.d.ts +8 -0
  1127. package/dist/types/lib/i18n/areas/chat-chart.d.ts +202 -0
  1128. package/dist/types/lib/i18n/areas/code-editor.d.ts +40 -0
  1129. package/dist/types/lib/i18n/areas/date-timeline.d.ts +36 -0
  1130. package/dist/types/lib/i18n/areas/dates.d.ts +103 -0
  1131. package/dist/types/lib/i18n/areas/docs-views.d.ts +297 -0
  1132. package/dist/types/lib/i18n/areas/feedback.d.ts +132 -0
  1133. package/dist/types/lib/i18n/areas/formats.d.ts +30 -0
  1134. package/dist/types/lib/i18n/areas/forms.d.ts +182 -0
  1135. package/dist/types/lib/i18n/areas/keys.d.ts +15 -0
  1136. package/dist/types/lib/i18n/areas/markdown.d.ts +150 -0
  1137. package/dist/types/lib/i18n/areas/move-rejected.d.ts +16 -0
  1138. package/dist/types/lib/i18n/areas/navigation.d.ts +185 -0
  1139. package/dist/types/lib/i18n/areas/rbac.d.ts +633 -0
  1140. package/dist/types/lib/i18n/emphasis.d.ts +3 -0
  1141. package/dist/types/lib/i18n/index.d.ts +10 -0
  1142. package/dist/types/lib/i18n/number-format.d.ts +5 -0
  1143. package/dist/types/lib/i18n/plural.d.ts +7 -0
  1144. package/dist/types/lib/i18n/provider.d.ts +16 -0
  1145. package/dist/types/lib/i18n/strings.d.ts +18 -0
  1146. package/dist/types/lib/icons.d.ts +22 -0
  1147. package/dist/types/lib/interactive-target.d.ts +3 -0
  1148. package/dist/types/lib/intl-cache.d.ts +31 -0
  1149. package/dist/types/lib/legal-document.d.ts +82 -0
  1150. package/dist/types/lib/line-diff-model.d.ts +39 -0
  1151. package/dist/types/lib/markdown/attachments.d.ts +50 -0
  1152. package/dist/types/lib/markdown/caret-map.d.ts +69 -0
  1153. package/dist/types/lib/markdown/caret.d.ts +6 -0
  1154. package/dist/types/lib/markdown/commands.d.ts +186 -0
  1155. package/dist/types/lib/markdown/convert.d.ts +99 -0
  1156. package/dist/types/lib/markdown/dom.d.ts +30 -0
  1157. package/dist/types/lib/markdown/edit.d.ts +16 -0
  1158. package/dist/types/lib/markdown/history.d.ts +59 -0
  1159. package/dist/types/lib/markdown/hotkeys.d.ts +63 -0
  1160. package/dist/types/lib/markdown/image-pipeline.d.ts +173 -0
  1161. package/dist/types/lib/markdown/images.d.ts +138 -0
  1162. package/dist/types/lib/markdown/input.d.ts +38 -0
  1163. package/dist/types/lib/markdown/keys.d.ts +34 -0
  1164. package/dist/types/lib/markdown/paste.d.ts +9 -0
  1165. package/dist/types/lib/markdown/position.d.ts +43 -0
  1166. package/dist/types/lib/markdown/project.d.ts +88 -0
  1167. package/dist/types/lib/markdown/reconcile.d.ts +63 -0
  1168. package/dist/types/lib/markdown/surface.d.ts +236 -0
  1169. package/dist/types/lib/motion.d.ts +30 -0
  1170. package/dist/types/lib/pad.d.ts +6 -0
  1171. package/dist/types/lib/paged-window/index.d.ts +2 -0
  1172. package/dist/types/lib/paged-window/layout.d.ts +21 -0
  1173. package/dist/types/lib/paged-window/list-owner.d.ts +12 -0
  1174. package/dist/types/lib/paged-window/records-binding.d.ts +102 -0
  1175. package/dist/types/lib/paged-window/store.d.ts +307 -0
  1176. package/dist/types/lib/paged-window/use-measured-pitch.d.ts +34 -0
  1177. package/dist/types/lib/paged-window/use-page-visibility.d.ts +20 -0
  1178. package/dist/types/lib/paged-window/use-paged-window.d.ts +61 -0
  1179. package/dist/types/lib/paged-window/use-scroll-root.d.ts +18 -0
  1180. package/dist/types/lib/persist.d.ts +57 -0
  1181. package/dist/types/lib/preference-values.d.ts +72 -0
  1182. package/dist/types/lib/preferences.d.ts +26 -0
  1183. package/dist/types/lib/reads/hooks.d.ts +49 -0
  1184. package/dist/types/lib/reads/index.d.ts +5 -0
  1185. package/dist/types/lib/reads/optimistic.d.ts +119 -0
  1186. package/dist/types/lib/reads/refetch.d.ts +83 -0
  1187. package/dist/types/lib/reads/slots.d.ts +137 -0
  1188. package/dist/types/lib/reads/types.d.ts +155 -0
  1189. package/dist/types/lib/realtime/hooks.d.ts +38 -0
  1190. package/dist/types/lib/realtime/index.d.ts +4 -0
  1191. package/dist/types/lib/realtime/provider.d.ts +38 -0
  1192. package/dist/types/lib/realtime/registry.d.ts +225 -0
  1193. package/dist/types/lib/realtime/types.d.ts +242 -0
  1194. package/dist/types/lib/records/define-record-type.d.ts +29 -0
  1195. package/dist/types/lib/records/hooks.d.ts +46 -0
  1196. package/dist/types/lib/records/index.d.ts +5 -0
  1197. package/dist/types/lib/records/store.d.ts +289 -0
  1198. package/dist/types/lib/records/types.d.ts +195 -0
  1199. package/dist/types/lib/records/wire.d.ts +96 -0
  1200. package/dist/types/lib/reduced-motion-help.d.ts +23 -0
  1201. package/dist/types/lib/scroll-caret.d.ts +6 -0
  1202. package/dist/types/lib/sim/createSimStore.d.ts +18 -0
  1203. package/dist/types/lib/sim/index.d.ts +5 -0
  1204. package/dist/types/lib/sim/latency.d.ts +10 -0
  1205. package/dist/types/lib/sim/registry.d.ts +14 -0
  1206. package/dist/types/lib/sim/settings.d.ts +11 -0
  1207. package/dist/types/lib/sim/types.d.ts +3 -0
  1208. package/dist/types/lib/submit-shortcut.d.ts +24 -0
  1209. package/dist/types/lib/syntax/index.d.ts +16 -0
  1210. package/dist/types/lib/syntax/languages/bash.d.ts +1 -0
  1211. package/dist/types/lib/syntax/languages/css.d.ts +1 -0
  1212. package/dist/types/lib/syntax/languages/html.d.ts +17 -0
  1213. package/dist/types/lib/syntax/languages/index.d.ts +33 -0
  1214. package/dist/types/lib/syntax/languages/javascript.d.ts +22 -0
  1215. package/dist/types/lib/syntax/languages/json.d.ts +1 -0
  1216. package/dist/types/lib/syntax/languages/mongodb.d.ts +1 -0
  1217. package/dist/types/lib/syntax/languages/plain.d.ts +9 -0
  1218. package/dist/types/lib/syntax/languages/sql.d.ts +4 -0
  1219. package/dist/types/lib/syntax/languages/vue.d.ts +1 -0
  1220. package/dist/types/lib/syntax/languages/yaml.d.ts +1 -0
  1221. package/dist/types/lib/syntax/markdown/frames.d.ts +145 -0
  1222. package/dist/types/lib/syntax/markdown/grammar.d.ts +1 -0
  1223. package/dist/types/lib/syntax/markdown/index.d.ts +5 -0
  1224. package/dist/types/lib/syntax/markdown/inline.d.ts +21 -0
  1225. package/dist/types/lib/syntax/markdown/parse.d.ts +15 -0
  1226. package/dist/types/lib/syntax/markdown/refs.d.ts +47 -0
  1227. package/dist/types/lib/syntax/markdown/render.d.ts +25 -0
  1228. package/dist/types/lib/syntax/markdown/spans.d.ts +84 -0
  1229. package/dist/types/lib/syntax/markdown/types.d.ts +108 -0
  1230. package/dist/types/lib/syntax/registry.d.ts +37 -0
  1231. package/dist/types/lib/syntax/tokenize.d.ts +17 -0
  1232. package/dist/types/lib/syntax/types.d.ts +119 -0
  1233. package/dist/types/lib/time/index.d.ts +4 -0
  1234. package/dist/types/lib/time/instant.d.ts +2 -0
  1235. package/dist/types/lib/time/plain.d.ts +61 -0
  1236. package/dist/types/lib/time/relativeAge.d.ts +18 -0
  1237. package/dist/types/lib/time/relativeClock.d.ts +8 -0
  1238. package/dist/types/lib/time/types.d.ts +87 -0
  1239. package/dist/types/lib/time/zone.d.ts +106 -0
  1240. package/dist/types/lib/use-controllable.d.ts +14 -0
  1241. package/dist/types/lib/use-fill-height.d.ts +26 -0
  1242. package/dist/types/lib/use-hydrated.d.ts +8 -0
  1243. package/dist/types/lib/use-media-query.d.ts +29 -0
  1244. package/dist/types/lib/use-relabel-base-ui-dismiss.d.ts +6 -0
  1245. package/dist/types/lib/use-release-snap-drag.d.ts +25 -0
  1246. package/dist/types/lib/use-roving-options.d.ts +10 -0
  1247. package/dist/types/lib/values/absent.d.ts +7 -0
  1248. package/dist/types/lib/values/boolean.d.ts +29 -0
  1249. package/dist/types/lib/values/currency.d.ts +22 -0
  1250. package/dist/types/lib/values/date.d.ts +30 -0
  1251. package/dist/types/lib/values/datetime.d.ts +48 -0
  1252. package/dist/types/lib/values/index.d.ts +5 -0
  1253. package/dist/types/lib/values/locale-date.d.ts +34 -0
  1254. package/dist/types/lib/values/number.d.ts +27 -0
  1255. package/dist/types/pure.d.ts +48 -0
  1256. package/package.json +136 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-now.js","sources":["../../../src/components/calendar/use-now.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\n/* ----------------------------------------------------------------------------\n THE CURRENT INSTANT, RE-READ ONLY WHEN IT MATTERS.\n\n TWO THINGS ARE WRONG WITH `setInterval(…, 60000)` HERE, and the second is the\n one that shows.\n\n IT DRIFTS. A 60-second interval started at :37 fires at :37 forever, so the\n line sits up to 59 seconds behind the minute it claims. Sleeping to the NEXT\n BOUNDARY instead means every tick lands on the minute and the error is\n bounded by the timer's own accuracy rather than by when the component\n mounted.\n\n AND A BACKGROUNDED TAB FREEZES IT. Browsers clamp timers in hidden tabs —\n heavily, and eventually not at all — so a tab left open over lunch comes back\n with the now-indicator forty-five minutes stale, pointing at an hour that has\n passed. That is an open FullCalendar bug, and the fix is five lines:\n re-read on `visibilitychange`. Without it the line is not merely late, it is\n confidently wrong, which is worse than absent.\n -------------------------------------------------------------------------- */\n\nexport interface UseNowOptions {\n /**\n * How often the value should change, in ms. 60,000 for a minute-resolution\n * indicator.\n */\n readonly resolutionMs?: number;\n /** Set false to freeze the value — for tests and visual baselines. */\n readonly enabled?: boolean;\n /** A fixed instant to report instead of the clock. Overrides `enabled`. */\n readonly fixed?: number;\n}\n\n/**\n * `Date.now()`, re-read on each boundary of `resolutionMs`.\n *\n * `fixed` exists because every visual baseline in this package is a screenshot:\n * a now-indicator driven by the real clock moves a few pixels every minute and\n * re-records itself forever, so the demo and the preview pass a fixed instant\n * and the gate keeps gating.\n */\nexport function useNow(options: UseNowOptions = {}): number {\n const { resolutionMs = 60_000, enabled = true, fixed } = options;\n const [now, setNow] = useState<number>(() => fixed ?? Date.now());\n\n useEffect(() => {\n if (fixed !== undefined) {\n setNow(fixed);\n return;\n }\n if (!enabled) return;\n\n let timer: ReturnType<typeof setTimeout> | undefined;\n\n const tick = () => {\n const current = Date.now();\n setNow(current);\n /* SLEEP TO THE NEXT BOUNDARY, not for a fixed span. `+ 1` so a tick that\n lands a hair early does not schedule a zero-length wait and spin. */\n const untilNext = resolutionMs - (current % resolutionMs) + 1;\n timer = setTimeout(tick, untilNext);\n };\n\n /* A hidden tab's timers are clamped and may stop entirely. Re-reading on\n the way back is what stops the indicator returning stale. */\n const onVisibility = () => {\n if (document.visibilityState !== \"visible\") return;\n if (timer !== undefined) clearTimeout(timer);\n tick();\n };\n\n tick();\n document.addEventListener(\"visibilitychange\", onVisibility);\n return () => {\n if (timer !== undefined) clearTimeout(timer);\n document.removeEventListener(\"visibilitychange\", onVisibility);\n };\n }, [enabled, fixed, resolutionMs]);\n\n return now;\n}\n"],"names":["useNow","options","resolutionMs","enabled","fixed","now","setNow","useState","useEffect","timer","tick","current","untilNext","onVisibility"],"mappings":";AA0CO,SAASA,EAAOC,IAAyB,IAAY;AAC1D,QAAM,EAAE,cAAAC,IAAe,KAAQ,SAAAC,IAAU,IAAM,OAAAC,MAAUH,GACnD,CAACI,GAAKC,CAAM,IAAIC,EAAiB,MAAMH,KAAS,KAAK,KAAK;AAEhE,SAAAI,EAAU,MAAM;AACd,QAAIJ,MAAU,QAAW;AACvB,MAAAE,EAAOF,CAAK;AACZ;AAAA,IACF;AACA,QAAI,CAACD,EAAS;AAEd,QAAIM;AAEJ,UAAMC,IAAO,MAAM;AACjB,YAAMC,IAAU,KAAK,IAAA;AACrB,MAAAL,EAAOK,CAAO;AAGd,YAAMC,IAAYV,IAAgBS,IAAUT,IAAgB;AAC5D,MAAAO,IAAQ,WAAWC,GAAME,CAAS;AAAA,IACpC,GAIMC,IAAe,MAAM;AACzB,MAAI,SAAS,oBAAoB,cAC7BJ,MAAU,UAAW,aAAaA,CAAK,GAC3CC,EAAA;AAAA,IACF;AAEA,WAAAA,EAAA,GACA,SAAS,iBAAiB,oBAAoBG,CAAY,GACnD,MAAM;AACX,MAAIJ,MAAU,UAAW,aAAaA,CAAK,GAC3C,SAAS,oBAAoB,oBAAoBI,CAAY;AAAA,IAC/D;AAAA,EACF,GAAG,CAACV,GAASC,GAAOF,CAAY,CAAC,GAE1BG;AACT;"}
@@ -0,0 +1,39 @@
1
+ import { jsxs as c, jsx as s } from "react/jsx-runtime";
2
+ import { cn as I } from "../../lib/cn.js";
3
+ import { useNumberFormat as E } from "../../lib/i18n/number-format.js";
4
+ import { BADGE_TONE_TEXT as i } from "../Badge.js";
5
+ import { Icon as l } from "../Icon.js";
6
+ import { ProgressRing as R } from "../Progress.js";
7
+ import { ROW_RING_SIZE as _ } from "./hit-area.js";
8
+ import { TapTip as A } from "./TapTip.js";
9
+ import { CRITERION_STATES as f, CRITERION_STATE_VISUALS as o, CARD_FACE_ICONS as C } from "./vocabulary.js";
10
+ function V({ total: a, byStatus: r, items: m, stateLabels: t, summary: N, label: d }) {
11
+ const x = E();
12
+ if (a === 0) return null;
13
+ const g = r.passing, u = r.failing > 0 ? i.danger : g === a ? i.success : void 0, h = f.map((e) => ({
14
+ value: r[e],
15
+ tone: o[e].tone,
16
+ label: t[e]
17
+ })).filter((e) => e.value > 0), T = /* @__PURE__ */ c("div", { className: "flex flex-col gap-1 text-xs", children: [
18
+ /* @__PURE__ */ s("p", { className: "font-medium text-primary", children: N }),
19
+ /* @__PURE__ */ s("ul", { className: "flex flex-col gap-0.5", children: m ? m.map((e, n) => {
20
+ const p = o[e.status];
21
+ return /* @__PURE__ */ c("li", { className: "flex items-start gap-1.5", children: [
22
+ /* @__PURE__ */ s(l, { name: p.icon, size: "xs", className: I("mt-0.5 shrink-0", i[p.tone]) }),
23
+ /* @__PURE__ */ s("span", { className: "text-secondary", children: e.title })
24
+ ] }, n);
25
+ }) : f.filter((e) => r[e] > 0).map((e) => {
26
+ const n = o[e];
27
+ return /* @__PURE__ */ c("li", { className: "flex items-center gap-1.5", children: [
28
+ /* @__PURE__ */ s(l, { name: n.icon, size: "xs", className: i[n.tone] }),
29
+ /* @__PURE__ */ s("span", { className: "text-secondary", children: t[e] }),
30
+ /* @__PURE__ */ s("span", { className: "ml-auto text-tertiary", children: x(r[e]) })
31
+ ] }, e);
32
+ }) })
33
+ ] });
34
+ return /* @__PURE__ */ s(A, { tooltip: T, testId: "ac-ring", className: "text-secondary", children: /* @__PURE__ */ s(R, { segments: h, total: a, size: "row", className: _, showValue: !1, label: d, children: /* @__PURE__ */ s(l, { name: C["indicator.acceptanceCriteria"], size: "sm", className: u }) }) });
35
+ }
36
+ export {
37
+ V as AcRingGlyph
38
+ };
39
+ //# sourceMappingURL=AcRingGlyph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AcRingGlyph.js","sources":["../../../src/components/card-face/AcRingGlyph.tsx"],"sourcesContent":["import { cn } from \"../../lib/cn\";\nimport { useNumberFormat } from \"../../lib/i18n/number-format\";\nimport { BADGE_TONE_TEXT } from \"../Badge\";\nimport { Icon } from \"../Icon\";\nimport { ProgressRing, type ProgressRingSegment } from \"../Progress\";\nimport { ROW_RING_SIZE } from \"./hit-area\";\nimport { TapTip } from \"./TapTip\";\nimport { CARD_FACE_ICONS, CRITERION_STATES, CRITERION_STATE_VISUALS, type CriterionState } from \"./vocabulary\";\n\n/* ============================================================================\n THE AC-RING GLYPH (DX-3014, DX-4099, DX-5425) — the acceptance-criteria\n sibling of `GateRingGlyph`: the same row-height segmented donut, one arc\n per criterion state, around the criteria icon (danger when one fails,\n success when all pass).\n\n FIVE states, each its own arc: `deferred` and `cancelled` (Withdrawn) are\n marked on purpose, so folding them into \"outstanding\" would hide what a\n person chose.\n\n The tooltip names each criterion when the caller has them (`items`), and\n otherwise lists a count per state: still a real breakdown, one level less\n detailed. Renders NOTHING when there are no criteria.\n ========================================================================= */\n\nexport interface AcRingItem {\n title: string;\n status: CriterionState;\n}\n\nexport interface AcRingGlyphProps {\n /** How many criteria the card has: the ring's denominator. */\n total: number;\n /** How many criteria are in each state: the ring's arcs and, without `items`, the tooltip's rows. */\n byStatus: Readonly<Record<CriterionState, number>>;\n /** Each criterion's title and state, when the caller has them: the tooltip then names each one. */\n items?: readonly AcRingItem[];\n /** Each state's name (\"Passing\"), for the arcs and the count rows. */\n stateLabels: Readonly<Record<CriterionState, string>>;\n /** The tooltip's heading, e.g. \"Acceptance criteria: 3 of 5 passing, 1 failing\". */\n summary: string;\n /** The ring's accessible name. */\n label: string;\n}\n\nexport function AcRingGlyph({ total, byStatus, items, stateLabels, summary, label }: AcRingGlyphProps) {\n const formatNumber = useNumberFormat();\n if (total === 0) return null;\n\n const passing = byStatus.passing;\n const failing = byStatus.failing;\n const centreClass = failing > 0 ? BADGE_TONE_TEXT.danger : passing === total ? BADGE_TONE_TEXT.success : undefined;\n\n const segments: ProgressRingSegment[] = CRITERION_STATES.map((state) => ({\n value: byStatus[state],\n tone: CRITERION_STATE_VISUALS[state].tone,\n label: stateLabels[state],\n })).filter((segment) => segment.value > 0);\n\n const content = (\n <div className=\"flex flex-col gap-1 text-xs\">\n <p className=\"font-medium text-primary\">{summary}</p>\n <ul className=\"flex flex-col gap-0.5\">\n {items\n ? items.map((item, index) => {\n const visual = CRITERION_STATE_VISUALS[item.status];\n return (\n <li key={index} className=\"flex items-start gap-1.5\">\n <Icon name={visual.icon} size=\"xs\" className={cn(\"mt-0.5 shrink-0\", BADGE_TONE_TEXT[visual.tone])} />\n <span className=\"text-secondary\">{item.title}</span>\n </li>\n );\n })\n : CRITERION_STATES.filter((state) => byStatus[state] > 0).map((state) => {\n const visual = CRITERION_STATE_VISUALS[state];\n return (\n <li key={state} className=\"flex items-center gap-1.5\">\n <Icon name={visual.icon} size=\"xs\" className={BADGE_TONE_TEXT[visual.tone]} />\n <span className=\"text-secondary\">{stateLabels[state]}</span>\n <span className=\"ml-auto text-tertiary\">{formatNumber(byStatus[state])}</span>\n </li>\n );\n })}\n </ul>\n </div>\n );\n\n return (\n <TapTip tooltip={content} testId=\"ac-ring\" className=\"text-secondary\">\n <ProgressRing segments={segments} total={total} size=\"row\" className={ROW_RING_SIZE} showValue={false} label={label}>\n <Icon name={CARD_FACE_ICONS[\"indicator.acceptanceCriteria\"]} size=\"sm\" className={centreClass} />\n </ProgressRing>\n </TapTip>\n );\n}\n"],"names":["AcRingGlyph","total","byStatus","items","stateLabels","summary","label","formatNumber","useNumberFormat","passing","centreClass","BADGE_TONE_TEXT","segments","CRITERION_STATES","state","CRITERION_STATE_VISUALS","segment","content","jsxs","jsx","item","index","visual","Icon","cn","TapTip","ProgressRing","ROW_RING_SIZE","CARD_FACE_ICONS"],"mappings":";;;;;;;;;AA4CO,SAASA,EAAY,EAAE,OAAAC,GAAO,UAAAC,GAAU,OAAAC,GAAO,aAAAC,GAAa,SAAAC,GAAS,OAAAC,KAA2B;AACrG,QAAMC,IAAeC,EAAA;AACrB,MAAIP,MAAU,EAAG,QAAO;AAExB,QAAMQ,IAAUP,EAAS,SAEnBQ,IADUR,EAAS,UACK,IAAIS,EAAgB,SAASF,MAAYR,IAAQU,EAAgB,UAAU,QAEnGC,IAAkCC,EAAiB,IAAI,CAACC,OAAW;AAAA,IACvE,OAAOZ,EAASY,CAAK;AAAA,IACrB,MAAMC,EAAwBD,CAAK,EAAE;AAAA,IACrC,OAAOV,EAAYU,CAAK;AAAA,EAAA,EACxB,EAAE,OAAO,CAACE,MAAYA,EAAQ,QAAQ,CAAC,GAEnCC,IACJ,gBAAAC,EAAC,OAAA,EAAI,WAAU,+BACb,UAAA;AAAA,IAAA,gBAAAC,EAAC,KAAA,EAAE,WAAU,4BAA4B,UAAAd,GAAQ;AAAA,IACjD,gBAAAc,EAAC,QAAG,WAAU,yBACX,cACGhB,EAAM,IAAI,CAACiB,GAAMC,MAAU;AACzB,YAAMC,IAASP,EAAwBK,EAAK,MAAM;AAClD,aACE,gBAAAF,EAAC,MAAA,EAAe,WAAU,4BACxB,UAAA;AAAA,QAAA,gBAAAC,EAACI,GAAA,EAAK,MAAMD,EAAO,MAAM,MAAK,MAAK,WAAWE,EAAG,mBAAmBb,EAAgBW,EAAO,IAAI,CAAC,GAAG;AAAA,QACnG,gBAAAH,EAAC,QAAA,EAAK,WAAU,kBAAkB,YAAK,MAAA,CAAM;AAAA,MAAA,EAAA,GAFtCE,CAGT;AAAA,IAEJ,CAAC,IACDR,EAAiB,OAAO,CAACC,MAAUZ,EAASY,CAAK,IAAI,CAAC,EAAE,IAAI,CAACA,MAAU;AACrE,YAAMQ,IAASP,EAAwBD,CAAK;AAC5C,aACE,gBAAAI,EAAC,MAAA,EAAe,WAAU,6BACxB,UAAA;AAAA,QAAA,gBAAAC,EAACI,GAAA,EAAK,MAAMD,EAAO,MAAM,MAAK,MAAK,WAAWX,EAAgBW,EAAO,IAAI,EAAA,CAAG;AAAA,0BAC3E,QAAA,EAAK,WAAU,kBAAkB,UAAAlB,EAAYU,CAAK,GAAE;AAAA,QACrD,gBAAAK,EAAC,UAAK,WAAU,yBAAyB,YAAajB,EAASY,CAAK,CAAC,EAAA,CAAE;AAAA,MAAA,EAAA,GAHhEA,CAIT;AAAA,IAEJ,CAAC,EAAA,CACP;AAAA,EAAA,GACF;AAGF,SACE,gBAAAK,EAACM,GAAA,EAAO,SAASR,GAAS,QAAO,WAAU,WAAU,kBACnD,UAAA,gBAAAE,EAACO,GAAA,EAAa,UAAAd,GAAoB,OAAAX,GAAc,MAAK,OAAM,WAAW0B,GAAe,WAAW,IAAO,OAAArB,GACrG,UAAA,gBAAAa,EAACI,GAAA,EAAK,MAAMK,EAAgB,8BAA8B,GAAG,MAAK,MAAK,WAAWlB,EAAA,CAAa,GACjG,GACF;AAEJ;"}
@@ -0,0 +1,17 @@
1
+ import { jsx as o } from "react/jsx-runtime";
2
+ import { AvatarGroup as i, Avatar as n } from "../Avatar.js";
3
+ import { Badge as a } from "../Badge.js";
4
+ import { Icon as l } from "../Icon.js";
5
+ import { TapTip as e } from "./TapTip.js";
6
+ import { CARD_FACE_ICONS as m } from "./vocabulary.js";
7
+ function h({ agent: t }) {
8
+ if (t.kind === "children") {
9
+ if (t.agents.length === 0) throw new Error("BoardCardAgentSlot: a children slot needs at least one agent");
10
+ return /* @__PURE__ */ o(e, { tooltip: t.tooltip, testId: "agent-slot-group", children: /* @__PURE__ */ o(i, { max: 3, size: "xs", children: t.agents.map((r) => /* @__PURE__ */ o(n, { name: r.name, size: "xs" }, r.key)) }) });
11
+ }
12
+ return /* @__PURE__ */ o(e, { tooltip: t.tooltip, testId: "agent-slot-gate", children: /* @__PURE__ */ o(a, { tone: "warning", size: "sm", icon: /* @__PURE__ */ o(l, { name: m["indicator.gateReviewer"], size: "xs" }), children: t.label }) });
13
+ }
14
+ export {
15
+ h as BoardCardAgentSlot
16
+ };
17
+ //# sourceMappingURL=BoardCardAgentSlot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BoardCardAgentSlot.js","sources":["../../../src/components/card-face/BoardCardAgentSlot.tsx"],"sourcesContent":["import { Avatar, AvatarGroup } from \"../Avatar\";\nimport { Badge } from \"../Badge\";\nimport { Icon } from \"../Icon\";\nimport { TapTip } from \"./TapTip\";\nimport { CARD_FACE_ICONS } from \"./vocabulary\";\n\n/* ============================================================================\n THE AGENT SLOT (DX-4377, DX-5425) — who is working INSIDE a card, as ONE of\n two exclusive things, never stacked:\n\n · `children` — a container's agents, one avatar each (up to three, then\n a count), rolled up from the child cards they hold;\n · `gate` — the quality-gate reviewer at work on the card right now,\n a warning pill naming the gate.\n\n Who HOLDS the card itself is not here: that is the work-state control,\n a separate mark, so the two can never disagree.\n ========================================================================= */\n\nexport type BoardCardAgent =\n | {\n kind: \"children\";\n /** One sentence naming each child and the agent on it. */\n tooltip: string;\n /** The agents, each with a stable key and the name its avatar's initials come from. */\n agents: readonly { key: string; name: string }[];\n }\n | {\n kind: \"gate\";\n /** \"Gate review in progress: Code quality\". */\n tooltip: string;\n /** The gate's name, printed in the pill. */\n label: string;\n };\n\nexport function BoardCardAgentSlot({ agent }: { agent: BoardCardAgent }) {\n if (agent.kind === \"children\") {\n if (agent.agents.length === 0) throw new Error(\"BoardCardAgentSlot: a children slot needs at least one agent\");\n return (\n <TapTip tooltip={agent.tooltip} testId=\"agent-slot-group\">\n <AvatarGroup max={3} size=\"xs\">\n {agent.agents.map((each) => (\n <Avatar key={each.key} name={each.name} size=\"xs\" />\n ))}\n </AvatarGroup>\n </TapTip>\n );\n }\n return (\n <TapTip tooltip={agent.tooltip} testId=\"agent-slot-gate\">\n <Badge tone=\"warning\" size=\"sm\" icon={<Icon name={CARD_FACE_ICONS[\"indicator.gateReviewer\"]} size=\"xs\" />}>\n {agent.label}\n </Badge>\n </TapTip>\n );\n}\n"],"names":["BoardCardAgentSlot","agent","jsx","TapTip","AvatarGroup","each","Avatar","Badge","Icon","CARD_FACE_ICONS"],"mappings":";;;;;;AAmCO,SAASA,EAAmB,EAAE,OAAAC,KAAoC;AACvE,MAAIA,EAAM,SAAS,YAAY;AAC7B,QAAIA,EAAM,OAAO,WAAW,EAAG,OAAM,IAAI,MAAM,8DAA8D;AAC7G,WACE,gBAAAC,EAACC,GAAA,EAAO,SAASF,EAAM,SAAS,QAAO,oBACrC,UAAA,gBAAAC,EAACE,GAAA,EAAY,KAAK,GAAG,MAAK,MACvB,UAAAH,EAAM,OAAO,IAAI,CAACI,MACjB,gBAAAH,EAACI,GAAA,EAAsB,MAAMD,EAAK,MAAM,MAAK,QAAhCA,EAAK,GAAgC,CACnD,GACH,GACF;AAAA,EAEJ;AACA,SACE,gBAAAH,EAACC,GAAA,EAAO,SAASF,EAAM,SAAS,QAAO,mBACrC,UAAA,gBAAAC,EAACK,GAAA,EAAM,MAAK,WAAU,MAAK,MAAK,MAAM,gBAAAL,EAACM,GAAA,EAAK,MAAMC,EAAgB,wBAAwB,GAAG,MAAK,KAAA,CAAK,GACpG,UAAAR,EAAM,MAAA,CACT,EAAA,CACF;AAEJ;"}
@@ -0,0 +1,109 @@
1
+ import { jsx as t, jsxs as o, Fragment as B } from "react/jsx-runtime";
2
+ import { useId as S } from "react";
3
+ import { cn as s } from "../../lib/cn.js";
4
+ import { useNumberFormat as j } from "../../lib/i18n/number-format.js";
5
+ import { BADGE_TONE_TEXT as Y, Badge as L } from "../Badge.js";
6
+ import { CountBadge as P } from "../CountBadge.js";
7
+ import { Icon as l } from "../Icon.js";
8
+ import { AcRingGlyph as V } from "./AcRingGlyph.js";
9
+ import { BoardCardAgentSlot as U } from "./BoardCardAgentSlot.js";
10
+ import { CardTypeBadge as W } from "./CardTypeBadge.js";
11
+ import { EffortBadge as X } from "./EffortBadge.js";
12
+ import { GateRingGlyph as G } from "./GateRingGlyph.js";
13
+ import { OverflowRow as J } from "./OverflowRow.js";
14
+ import { TapTip as c } from "./TapTip.js";
15
+ import { PRIORITY_TIER_VISUALS as Q, CARD_FACE_ICONS as p } from "./vocabulary.js";
16
+ const F = "leading-4", K = { betweenRows: "gap-y-2", beforeTitle: "gap-1" }, $ = "[--hit-t:8px] [--hit-b:1px] [--hit-x:4px]", Z = "-my-[6px] py-[3px]", ee = "[--hit-t:4px] [--hit-b:7px] [--hit-x:3px]", te = "[&_button]:isolate [&_button]:hover:bg-transparent [&_button]:before:absolute [&_button]:before:content-[''] [&_button]:before:-inset-1 [&_button]:before:-z-10 [&_button]:before:rounded-md [&_button]:before:pointer-events-none [--halo-fill:color-mix(in_oklab,transparent,var(--state-lift)_calc(var(--mix-hover)/2))] [&_button]:hover:before:bg-(--halo-fill) [&_button]:focus-visible:before:bg-(--halo-fill) [--tap-target:1rem] [&_button]:h-4 [&_button]:p-0 [&_button]:relative [&_button]:pointer-coarse:after:absolute [&_button]:pointer-coarse:after:content-[''] [&_button]:pointer-coarse:after:top-[calc(var(--hit-t)*-1)] [&_button]:pointer-coarse:after:bottom-[calc(var(--hit-b)*-1)] [&_button]:pointer-coarse:after:left-[calc(var(--hit-x)*-1)] [&_button]:pointer-coarse:after:right-[calc(var(--hit-x)*-1)]";
17
+ function ne({ hold: e, compact: n }) {
18
+ const i = j(), a = /* @__PURE__ */ t("span", { className: "sr-only", children: e.count === null ? e.sentence : ` — ${e.sentence}` });
19
+ return n ? /* @__PURE__ */ o(c, { tooltip: e.tooltip, testId: e.id, className: Y[e.tone], children: [
20
+ /* @__PURE__ */ t(l, { name: e.icon, size: "xs" }),
21
+ a
22
+ ] }) : /* @__PURE__ */ t(c, { tooltip: e.tooltip, testId: e.id, children: /* @__PURE__ */ o(L, { tone: e.tone, size: "sm", icon: /* @__PURE__ */ t(l, { name: e.icon, size: "xs" }), children: [
23
+ e.count === null ? null : i(e.count),
24
+ a
25
+ ] }) });
26
+ }
27
+ function re({ mark: e, icon: n, testId: i }) {
28
+ const a = j();
29
+ return /* @__PURE__ */ o(c, { tooltip: e.tooltip, label: e.label, testId: i, className: "text-tertiary", children: [
30
+ /* @__PURE__ */ t(l, { name: n, size: "xs" }),
31
+ /* @__PURE__ */ t("span", { className: "tabular", children: a(e.count) })
32
+ ] });
33
+ }
34
+ function ie({ count: e, tone: n, icon: i }) {
35
+ return /* @__PURE__ */ o("span", { className: s("relative inline-flex", e > 99 ? "mr-8" : e > 9 ? "mr-6" : "mr-4"), children: [
36
+ /* @__PURE__ */ t(l, { name: i, size: "xs" }),
37
+ /* @__PURE__ */ t(P, { count: e, tone: n, outside: !0 })
38
+ ] });
39
+ }
40
+ function oe({ mark: e, icon: n, testId: i }) {
41
+ return /* @__PURE__ */ t(c, { tooltip: e.tooltip, label: e.label, testId: i, className: "text-tertiary", children: /* @__PURE__ */ t(ie, { count: e.count, tone: e.tone ?? "neutral", icon: n }) });
42
+ }
43
+ function M({ mark: e, icon: n, testId: i }) {
44
+ return /* @__PURE__ */ t(c, { tooltip: e.tooltip, label: e.label, testId: i, className: "text-tertiary", children: /* @__PURE__ */ t(l, { name: n, size: "xs" }) });
45
+ }
46
+ function m(e, n) {
47
+ return n === void 0 ? [] : [{ ...e, render: n.render }];
48
+ }
49
+ function ge({
50
+ card: e,
51
+ renderTitle: n,
52
+ reference: i,
53
+ parent: a,
54
+ status: x,
55
+ trailing: y,
56
+ cover: k,
57
+ workState: f,
58
+ triage: _,
59
+ usage: g,
60
+ runtime: N,
61
+ age: v,
62
+ keepAge: q = !1
63
+ }) {
64
+ const R = S(), I = Q[e.priority.tier], r = [], { effort: u, planGates: T, ac: w, codeGates: C, children: h, comments: b, retro: A, pullRequest: E, agent: z } = e;
65
+ u !== null && r.push({ key: "effort", hideRank: 4, render: () => /* @__PURE__ */ t(X, { ...u }) }), T !== null && r.push({ key: "plan-gates", hideRank: 1, render: () => /* @__PURE__ */ t(G, { phase: "plan", ...T }) }), w !== null && r.push({ key: "ac", hideRank: 1, render: () => /* @__PURE__ */ t(V, { ...w }) }), C !== null && r.push({ key: "code-gates", hideRank: 1, render: () => /* @__PURE__ */ t(G, { phase: "code", ...C }) }), h !== null && r.push({ key: "children", hideRank: 5, render: () => /* @__PURE__ */ t(re, { mark: h, icon: p["indicator.children"], testId: "face-children" }) }), b !== null && r.push({ key: "comments", hideRank: 5, render: () => /* @__PURE__ */ t(oe, { mark: b, icon: p["indicator.comments"], testId: "face-comments" }) }), A !== null && r.push({ key: "retro", hideRank: 7, render: () => /* @__PURE__ */ t(M, { mark: A, icon: p["indicator.retro"], testId: "face-retro" }) }), E !== null && r.push({ key: "pull-request", hideRank: 7, render: () => /* @__PURE__ */ t(M, { mark: E, icon: p["indicator.pullRequest"], testId: "face-pull-request" }) }), r.push(...m({ key: "triage", hideRank: 6 }, _)), z !== null && r.push({
66
+ key: "agent",
67
+ hideRank: 3,
68
+ render: () => /* @__PURE__ */ t("span", { className: "flex h-5 items-stretch [&>[data-tap-tip]]:h-5", children: /* @__PURE__ */ t(U, { agent: z }) })
69
+ }), r.push(...m({ key: "usage", hideRank: 0 }, g)), r.push(...m({ key: "runtime", hideRank: 8 }, N)), r.push(...m({ key: "age", hideRank: 9, keep: q }, v));
70
+ const D = [
71
+ e.holds.map((d) => `${d.id}:${d.count}`).join(","),
72
+ f?.contentKey ?? "",
73
+ _?.contentKey ?? "",
74
+ g?.contentKey ?? "",
75
+ N?.contentKey ?? "",
76
+ v?.contentKey ?? "",
77
+ `${h?.count ?? ""}/${b?.count ?? ""}/${u?.effort ?? ""}`
78
+ ].join(";"), H = f === void 0 && e.holds.length === 0 ? void 0 : (d) => /* @__PURE__ */ o(B, { children: [
79
+ f?.render(d),
80
+ e.holds.map((O) => /* @__PURE__ */ t(ne, { hold: O, compact: d }, O.id))
81
+ ] });
82
+ return /* @__PURE__ */ o("div", { className: s("flex flex-col", K.beforeTitle), "data-testid": "card-face", children: [
83
+ k === void 0 ? null : /* @__PURE__ */ t("div", { className: "aspect-video w-full overflow-hidden rounded-md", "data-testid": "face-cover", children: k }),
84
+ /* @__PURE__ */ o("div", { className: "flex items-start gap-x-2", "data-testid": "card-face-header", children: [
85
+ /* @__PURE__ */ o("div", { className: s("flex min-w-0 flex-1 flex-wrap items-center gap-x-2 pb-1.5", K.betweenRows), "data-testid": "face-header-group", children: [
86
+ /* @__PURE__ */ o("span", { id: R, className: s("flex h-4 min-w-0 shrink flex-nowrap items-stretch gap-x-2", F, $), "data-testid": "face-row-identity", children: [
87
+ /* @__PURE__ */ t(c, { tooltip: e.priority.tooltip, label: e.priority.label, testId: "face-priority", children: /* @__PURE__ */ t(l, { name: I.icon, size: "sm", className: I.colorClass }) }),
88
+ /* @__PURE__ */ t(W, { type: e.type.type, tooltip: e.type.tooltip, label: e.type.label, testId: "face-type" }),
89
+ x === void 0 ? null : /* @__PURE__ */ t("span", { className: "flex min-w-4 shrink-[4] items-stretch empty:hidden [&>*]:min-w-0", children: x }),
90
+ /* @__PURE__ */ o("span", { className: s("items-stretch gap-1", a === void 0 ? "inline-flex" : "inline-grid grid-cols-[auto_auto_minmax(0,1fr)]"), "data-testid": "face-refs", children: [
91
+ /* @__PURE__ */ t("span", { className: "whitespace-nowrap", children: i }),
92
+ a === void 0 ? null : /* @__PURE__ */ o(B, { children: [
93
+ /* @__PURE__ */ t(c, { tooltip: a.tooltip, label: a.label, testId: "face-parent-mark", className: "text-tertiary", children: /* @__PURE__ */ t(l, { name: p["indicator.parent"], size: "xs" }) }),
94
+ /* @__PURE__ */ t("span", { className: "min-w-0 truncate", "data-testid": "face-parent", children: a.reference })
95
+ ] })
96
+ ] })
97
+ ] }),
98
+ /* @__PURE__ */ t(J, { contentKey: D, testId: "face-row-activity", moreTestId: "face-more", className: s("ml-auto", F, Z, ee), alignEnd: !0, pinned: H, items: r })
99
+ ] }),
100
+ y === void 0 ? null : /* @__PURE__ */ t("span", { className: s("flex h-4 shrink-0 items-center", $, te), "data-testid": "face-trailing", children: y })
101
+ ] }),
102
+ n({ className: "block text-sm font-medium break-words text-primary", describedBy: R })
103
+ ] });
104
+ }
105
+ export {
106
+ ge as CardFace,
107
+ ie as CommentCountMark
108
+ };
109
+ //# sourceMappingURL=CardFace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CardFace.js","sources":["../../../src/components/card-face/CardFace.tsx"],"sourcesContent":["import { useId, type ReactNode } from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { useNumberFormat } from \"../../lib/i18n/number-format\";\nimport { Badge, BADGE_TONE_TEXT } from \"../Badge\";\nimport { CountBadge, type CountBadgeTone } from \"../CountBadge\";\nimport { Icon, type IconName } from \"../Icon\";\nimport { AcRingGlyph, type AcRingGlyphProps } from \"./AcRingGlyph\";\nimport { BoardCardAgentSlot, type BoardCardAgent } from \"./BoardCardAgentSlot\";\nimport { CardTypeBadge, type CardFaceType } from \"./CardTypeBadge\";\nimport { EffortBadge, type EffortBadgeProps } from \"./EffortBadge\";\nimport { GateRingGlyph, type GateRingGlyphProps } from \"./GateRingGlyph\";\nimport { OverflowRow, type OverflowItem } from \"./OverflowRow\";\nimport { TapTip } from \"./TapTip\";\nimport { CARD_FACE_ICONS, PRIORITY_TIER_VISUALS, type PriorityTier } from \"./vocabulary\";\n\n/* ============================================================================\n THE CARD FACE (DX-3822, DX-3984, DX-5425) — a work card as a tile.\n ----------------------------------------------------------------------------\n One view for every place a card is a tile: a board lane, a plan's list, a\n marketing page's demo board. It shows the card's TITLE, in full, and its\n marks in two rows above it — never a summary:\n\n 1. THE IDENTITY ROW — who the card is:\n [priority] [type] [status, when the host names it] REF ↰ PARENT … [host control]\n 2. THE ACTIVITY ROW — what is going on with it: first the work-state\n control and the holds a human must see (needs a human, snoozed), which\n never leave the row, then effort, the Plan quality gates / AC / Code\n quality gates rings, children, comments, retro, pull request, triage,\n the agent, the token usage, the dispatch runtime and the age.\n 3. THE TITLE — alone, full width, free to wrap, never clamped.\n\n A PLAIN MODEL, WORDS INCLUDED. `card` carries every fact already resolved:\n each tooltip and accessible name in the reader's language, each type with\n its icon and hue. This view decides only how the face is LAID OUT: the\n order of the marks, which ones a crowded row shortens or tucks first, the\n icons and colours a fact is drawn with. Nothing here fetches, routes,\n checks a permission or reads the clock, so it renders on a server.\n\n SLOTS for what only the host can draw: the card's reference (a router link\n in an app, plain text on a static page), the parent's, the work-state\n control (it acts on the card), the token usage, the triage score, the\n dispatch runtime, the age, the status mark (only the host knows whether the\n card sits on its own list's lane) and the control at the identity row's end\n (a board's move menu). An activity-row slot is `{ render, contentKey }`:\n `render(compact)` draws it full or short, and `contentKey` is what it SAYS,\n so the row starts over from the full form when it changes.\n\n THE ROWS SIT TIGHT (DX-3984): icon-height lines, a hair of gap between the\n rows and a small one before the title. Marks stay tappable on a coarse\n pointer through a stretched `::after` (`TapTip`), never through layout\n height. DX-5677: THE TWO ROWS ARE ONE WRAPPING GROUP: when the identity row and the activity row fit side by side they\n share a line (the activity marks at its right edge); when they do not, the activity row drops to its own line,\n right-aligned. The host's control stays outside the group, at the top right, in either layout. The activity row itself never wraps, and nothing is hidden: a crowded activity row\n shortens its marks, then tucks the least-missed behind a `+N` popover.\n ========================================================================= */\n\n/** DX-3984 — a row is as tall as its icons: one 16px line, whatever text size a mark inside it asks for. */\nconst ROW_LINE = \"leading-4\";\n\n/**\n * DX-3984 / DX-5677 — the face's vertical rhythm. The activity row's marks are up to 22px tall (rings, effort badge) but the\n * row takes only a 16px line in layout (`ACTIVITY_PAD` below), so the marks overhang the line 3px above and below, centred on\n * it. On a shared line header, marks and menu are then one 16px line with ONE centre line; on a wrapped one the marks sit\n * exactly where a 22px row would: 2px between the rows plus the 3px overhang = 5px visible above them, so the group's gap\n * between lines is 8px (`gap-y-2`) and its bottom padding 6px (`pb-1.5`: the 3px overhang plus the 3px the padding used to add).\n */\nconst FACE_GAPS = { betweenRows: \"gap-y-2\", beforeTitle: \"gap-1\" } as const;\n\n/**\n * DX-3984 / DX-5677 — how far each row's marks reach on a coarse pointer (`COARSE_HIT_AREA`): the targets TILE the lines of the\n * wrapping group and meet at the midpoint of every gap. Row 1 (16px) reaches 8px up into the card's padding and 1px down (half\n * the 2px between the rows); row 2 reaches 4px up (1px + the 3px of overhang its marks own) and 7px down (3px overhang, the group's 3px of bottom\n * padding beyond it, plus the 4px before the title, DX-4259). Sideways each mark reaches half its row's column gap.\n */\nconst IDENTITY_REACH = \"[--hit-t:8px] [--hit-b:1px] [--hit-x:4px]\";\n/* DX-5677: the activity row's marks are up to 22px tall and its 3px padding makes the box 28px; an equal negative margin of 6px a side\n takes the row's LAYOUT height down to the header's 16px line. With every item centred (`items-center`) on a shared line the header,\n the indicators and the host's control (the same 16px) share one centre line; the marks overhang the line symmetrically and the\n padding survives as the marks' coarse-pointer reach room. */\nconst ACTIVITY_PAD = \"-my-[6px] py-[3px]\";\nconst ACTIVITY_REACH = \"[--hit-t:4px] [--hit-b:7px] [--hit-x:3px]\";\n\n/**\n * DX-3984 / DX-4043 — the host's control (a board's move menu) sits in a 16px slot with its padding gone and the tap-target\n * floor lowered to 16px, so it is a 16px mark like the rest and its reach tiles with them. Its hover fill moves to a\n * `::before` halo (24px, behind the glyph) at half the hover lift, so it follows both themes and any lane tint.\n * DX-4098 gives `BoardCard`'s menu trigger a dense variant; then this override goes.\n */\nconst HOST_CONTROL =\n \"[&_button]:isolate [&_button]:hover:bg-transparent [&_button]:before:absolute [&_button]:before:content-[''] [&_button]:before:-inset-1 \" +\n \"[&_button]:before:-z-10 [&_button]:before:rounded-md [&_button]:before:pointer-events-none \" +\n \"[--halo-fill:color-mix(in_oklab,transparent,var(--state-lift)_calc(var(--mix-hover)/2))] [&_button]:hover:before:bg-(--halo-fill) [&_button]:focus-visible:before:bg-(--halo-fill) \" +\n \"[--tap-target:1rem] [&_button]:h-4 [&_button]:p-0 [&_button]:relative [&_button]:pointer-coarse:after:absolute [&_button]:pointer-coarse:after:content-[''] \" +\n \"[&_button]:pointer-coarse:after:top-[calc(var(--hit-t)*-1)] [&_button]:pointer-coarse:after:bottom-[calc(var(--hit-b)*-1)] \" +\n \"[&_button]:pointer-coarse:after:left-[calc(var(--hit-x)*-1)] [&_button]:pointer-coarse:after:right-[calc(var(--hit-x)*-1)]\";\n\n/** A mark the face draws from a fact: what its tooltip says and what a screen reader calls it. */\nexport interface CardFaceMark {\n tooltip: ReactNode;\n label: string;\n}\n\n/** A counted mark (children, comments): the count, then what it says. */\nexport interface CardFaceCount extends CardFaceMark {\n count: number;\n}\n\n/** DX-6446: the comments mark: a count whose badge is gray while nothing waits on it (the default) and `danger` red while some comment is unread to the viewer. */\nexport interface CardFaceComments extends CardFaceCount {\n tone?: CountBadgeTone;\n}\n\n/**\n * One hold — something that makes a human act on the card (it needs a person's answer; it is snoozed). Holds are the\n * activity row's PINNED part: a crowded row shortens a hold's pill to its tone-coloured icon but never tucks it away.\n */\nexport interface CardFaceHold {\n /** Stable across renders; also the mark's `data-testid`. */\n id: string;\n tone: \"danger\" | \"warning\" | \"info\" | \"neutral\";\n icon: IconName;\n /** The count the pill prints beside its icon; `null` for a hold with nothing to count. */\n count: number | null;\n /** What a screen reader is told, whichever form is drawn. */\n sentence: string;\n tooltip: ReactNode;\n}\n\n/** A slot in the activity row: the host's drawing, full or short, and what it says (the row restarts when that changes). */\nexport interface CardFaceSlot {\n render: (compact: boolean) => ReactNode;\n contentKey: string;\n}\n\n/**\n * The card's facts, every word already resolved. A fact the card does not have is `null` (no effort override, no gates\n * in a phase, no comments): the mark is then not drawn, never drawn empty.\n */\nexport interface CardFaceModel {\n priority: CardFaceMark & { tier: PriorityTier };\n type: CardFaceMark & { type: CardFaceType };\n holds: readonly CardFaceHold[];\n effort: EffortBadgeProps | null;\n planGates: Omit<GateRingGlyphProps, \"phase\"> | null;\n ac: AcRingGlyphProps | null;\n codeGates: Omit<GateRingGlyphProps, \"phase\"> | null;\n children: CardFaceCount | null;\n comments: CardFaceComments | null;\n retro: CardFaceMark | null;\n pullRequest: CardFaceMark | null;\n agent: BoardCardAgent | null;\n}\n\nexport interface CardFaceProps {\n card: CardFaceModel;\n /** The title, as the host's link (or plain text). `className` is the face's title style; `describedBy` names the identity row. */\n renderTitle: (props: { className: string; describedBy: string }) => ReactNode;\n /** The card's reference (its id), as the host draws it: a link in an app, plain text on a static page. */\n reference: ReactNode;\n /** The card's parent: its reference as the host draws it, and the glyph's tooltip and name. Omitted for a card with no parent, or one drawn inside its parent's box. */\n parent?: CardFaceMark & { reference: ReactNode };\n /** The card's list or status mark, when the host names it (a lane that IS the card's list does not). */\n status?: ReactNode;\n /** A control at the identity row's end (a board's move menu). */\n trailing?: ReactNode;\n /** A cover above the header, in a fixed 16:9 frame; no frame exists without it. */\n cover?: ReactNode;\n /** The work-state control, which leads the pinned part of the activity row: who holds the card and what holds it back. */\n workState?: CardFaceSlot;\n /** The triage score. */\n triage?: CardFaceSlot;\n /** The card's token usage. */\n usage?: CardFaceSlot;\n /** The latest dispatch's runtime. */\n runtime?: CardFaceSlot;\n /** When the card was made and last touched. */\n age?: CardFaceSlot;\n /** DX-5422 — the age never leaves the row for the `+N` popover (a card drawn inside its parent's box); it may still shorten. */\n keepAge?: boolean;\n}\n\n/** One hold: a toned pill with its icon and count, or, once the row is crowded, the same icon in the tone's colour. */\nfunction HoldMark({ hold, compact }: { hold: CardFaceHold; compact: boolean }) {\n const formatNumber = useNumberFormat();\n const spoken = <span className=\"sr-only\">{hold.count === null ? hold.sentence : ` — ${hold.sentence}`}</span>;\n if (compact) {\n return (\n <TapTip tooltip={hold.tooltip} testId={hold.id} className={BADGE_TONE_TEXT[hold.tone]}>\n <Icon name={hold.icon} size=\"xs\" />\n {spoken}\n </TapTip>\n );\n }\n return (\n <TapTip tooltip={hold.tooltip} testId={hold.id}>\n <Badge tone={hold.tone} size=\"sm\" icon={<Icon name={hold.icon} size=\"xs\" />}>\n {hold.count === null ? null : formatNumber(hold.count)}\n {spoken}\n </Badge>\n </TapTip>\n );\n}\n\n/** A counted glyph (children). */\nfunction CountMark({ mark, icon, testId }: { mark: CardFaceCount; icon: IconName; testId: string }) {\n const formatNumber = useNumberFormat();\n return (\n <TapTip tooltip={mark.tooltip} label={mark.label} testId={testId} className=\"text-tertiary\">\n <Icon name={icon} size=\"xs\" />\n <span className=\"tabular\">{formatNumber(mark.count)}</span>\n </TapTip>\n );\n}\n\n/**\n * DX-6446: the comment glyph with its count as the library's corner badge (`CountBadge`), the look every comment count has where the mark is not a button of its own: a card face, a tile that is a link.\n * The badge sits on the glyph's top-right corner, outside its box, so the right margin reserves its width and keeps it clear of the next mark. `aria-hidden` is the badge's: the owner's label says the count.\n */\nexport function CommentCountMark({ count, tone, icon }: { count: number; tone: CountBadgeTone; icon: IconName }) {\n return (\n <span className={cn(\"relative inline-flex\", count > 99 ? \"mr-8\" : count > 9 ? \"mr-6\" : \"mr-4\")}>\n <Icon name={icon} size=\"xs\" />\n <CountBadge count={count} tone={tone} outside />\n </span>\n );\n}\n\n/** The card face's comments mark: {@link CommentCountMark} with its tooltip. */\nfunction CommentsMark({ mark, icon, testId }: { mark: CardFaceComments; icon: IconName; testId: string }) {\n return (\n <TapTip tooltip={mark.tooltip} label={mark.label} testId={testId} className=\"text-tertiary\">\n <CommentCountMark count={mark.count} tone={mark.tone ?? \"neutral\"} icon={icon} />\n </TapTip>\n );\n}\n\n/** A bare glyph (retro, pull request). */\nfunction FlagMark({ mark, icon, testId }: { mark: CardFaceMark; icon: IconName; testId: string }) {\n return (\n <TapTip tooltip={mark.tooltip} label={mark.label} testId={testId} className=\"text-tertiary\">\n <Icon name={icon} size=\"xs\" />\n </TapTip>\n );\n}\n\n/** A slot as an activity-row item, or none when the host did not fill it. */\nfunction slotItem(item: Omit<OverflowItem, \"render\">, slot: CardFaceSlot | undefined): OverflowItem[] {\n return slot === undefined ? [] : [{ ...item, render: slot.render }];\n}\n\nexport function CardFace({\n card,\n renderTitle,\n reference,\n parent,\n status,\n trailing,\n cover,\n workState,\n triage,\n usage,\n runtime,\n age,\n keepAge = false,\n}: CardFaceProps) {\n const factsId = useId();\n const priority = PRIORITY_TIER_VISUALS[card.priority.tier];\n\n /* The activity row's items, in display order. `hideRank` says which a crowded row can least afford to keep: the age\n first (unless `keepAge`), the runtime, retro and pull request, then triage, the counts, effort, the agent; the rings\n and the token usage last. */\n const items: OverflowItem[] = [];\n const { effort, planGates, ac, codeGates, children, comments, retro, pullRequest, agent } = card;\n if (effort !== null) items.push({ key: \"effort\", hideRank: 4, render: () => <EffortBadge {...effort} /> });\n if (planGates !== null) items.push({ key: \"plan-gates\", hideRank: 1, render: () => <GateRingGlyph phase=\"plan\" {...planGates} /> });\n if (ac !== null) items.push({ key: \"ac\", hideRank: 1, render: () => <AcRingGlyph {...ac} /> });\n if (codeGates !== null) items.push({ key: \"code-gates\", hideRank: 1, render: () => <GateRingGlyph phase=\"code\" {...codeGates} /> });\n if (children !== null) items.push({ key: \"children\", hideRank: 5, render: () => <CountMark mark={children} icon={CARD_FACE_ICONS[\"indicator.children\"]} testId=\"face-children\" /> });\n if (comments !== null) items.push({ key: \"comments\", hideRank: 5, render: () => <CommentsMark mark={comments} icon={CARD_FACE_ICONS[\"indicator.comments\"]} testId=\"face-comments\" /> });\n if (retro !== null) items.push({ key: \"retro\", hideRank: 7, render: () => <FlagMark mark={retro} icon={CARD_FACE_ICONS[\"indicator.retro\"]} testId=\"face-retro\" /> });\n if (pullRequest !== null) {\n items.push({ key: \"pull-request\", hideRank: 7, render: () => <FlagMark mark={pullRequest} icon={CARD_FACE_ICONS[\"indicator.pullRequest\"]} testId=\"face-pull-request\" /> });\n }\n items.push(...slotItem({ key: \"triage\", hideRank: 6 }, triage));\n // The 24px avatars sit in a 20px slot and overhang it by 2px a side, so an agent never makes the row taller than a hold's\n // pill; the mark's own box (and so its tap area) is the 20px slot, never the avatar's 24px.\n if (agent !== null) {\n items.push({\n key: \"agent\",\n hideRank: 3,\n render: () => (\n <span className=\"flex h-5 items-stretch [&>[data-tap-tip]]:h-5\">\n <BoardCardAgentSlot agent={agent} />\n </span>\n ),\n });\n }\n items.push(...slotItem({ key: \"usage\", hideRank: 0 }, usage));\n items.push(...slotItem({ key: \"runtime\", hideRank: 8 }, runtime));\n items.push(...slotItem({ key: \"age\", hideRank: 9, keep: keepAge }, age));\n\n /* What the activity row's marks SAY, so the row starts over from the full form when one of them gets shorter. */\n const contentKey = [\n card.holds.map((hold) => `${hold.id}:${hold.count}`).join(\",\"),\n workState?.contentKey ?? \"\",\n triage?.contentKey ?? \"\",\n usage?.contentKey ?? \"\",\n runtime?.contentKey ?? \"\",\n age?.contentKey ?? \"\",\n `${children?.count ?? \"\"}/${comments?.count ?? \"\"}/${effort?.effort ?? \"\"}`,\n ].join(\";\");\n\n const pinned =\n workState === undefined && card.holds.length === 0\n ? undefined\n : (compact: boolean) => (\n <>\n {workState?.render(compact)}\n {card.holds.map((hold) => (\n <HoldMark key={hold.id} hold={hold} compact={compact} />\n ))}\n </>\n );\n\n return (\n <div className={cn(\"flex flex-col\", FACE_GAPS.beforeTitle)} data-testid=\"card-face\">\n {cover === undefined ? null : (\n <div className=\"aspect-video w-full overflow-hidden rounded-md\" data-testid=\"face-cover\">\n {cover}\n </div>\n )}\n {/* DX-5677: the top area is [wrapping group | host control]. The control sits outside the group, top-right, in every layout; in\n the group the identity row is on the left and the activity row is pushed right (an auto margin, neither row grows), so\n they share a line when both fit and the activity row drops to its own right-aligned line when they do not. */}\n <div className=\"flex items-start gap-x-2\" data-testid=\"card-face-header\">\n <div className={cn(\"flex min-w-0 flex-1 flex-wrap items-center gap-x-2 pb-1.5\", FACE_GAPS.betweenRows)} data-testid=\"face-header-group\">\n <span id={factsId} className={cn(\"flex h-4 min-w-0 shrink flex-nowrap items-stretch gap-x-2\", ROW_LINE, IDENTITY_REACH)} data-testid=\"face-row-identity\">\n <TapTip tooltip={card.priority.tooltip} label={card.priority.label} testId=\"face-priority\">\n <Icon name={priority.icon} size=\"sm\" className={priority.colorClass} />\n </TapTip>\n <CardTypeBadge type={card.type.type} tooltip={card.type.tooltip} label={card.type.label} testId=\"face-type\" />\n {/* DX-5556: in a narrow lane the host's control keeps its own space (`shrink-0` below). The id never shrinks (`shrink-0`), so the\n status gives way first, down to one icon's width (`min-w-4`): a mark is never lost. The id never wraps (`whitespace-nowrap`, whatever the host's link does) and the refs box is never narrower than it: with a parent it is a grid whose id and glyph tracks are `auto` and whose parent-ref track is `minmax(0,1fr)`, so only the parent ref's text shrinks. Nothing here clips with `overflow` around a mark: a wrapper's clip cuts a TapTip's stretched\n coarse-pointer hit area (DX-3984) and a badge taller than the row. The status slot is a flex box whose child is `min-w-0` and may shrink,\n so a Badge's own label ellipsis (DX-4449) and a host mark's own truncating label engage; only a text leaf (the parent ref) is clipped. A host\n whose status component renders nothing for a card leaves the slot empty, and `empty:hidden` drops it, so no blank 16px sits before the id. */}\n {status === undefined ? null : <span className=\"flex min-w-4 shrink-[4] items-stretch empty:hidden [&>*]:min-w-0\">{status}</span>}\n <span className={cn(\"items-stretch gap-1\", parent === undefined ? \"inline-flex\" : \"inline-grid grid-cols-[auto_auto_minmax(0,1fr)]\")} data-testid=\"face-refs\">\n <span className=\"whitespace-nowrap\">{reference}</span>\n {parent === undefined ? null : (\n <>\n {/* DX-3888 — the parent ref's own tooltip may be hover-only (a tap navigates), so the glyph beside it carries the parent's title for a tap. */}\n <TapTip tooltip={parent.tooltip} label={parent.label} testId=\"face-parent-mark\" className=\"text-tertiary\">\n <Icon name={CARD_FACE_ICONS[\"indicator.parent\"]} size=\"xs\" />\n </TapTip>\n <span className=\"min-w-0 truncate\" data-testid=\"face-parent\">{parent.reference}</span>\n </>\n )}\n </span>\n </span>\n <OverflowRow contentKey={contentKey} testId=\"face-row-activity\" moreTestId=\"face-more\" className={cn(\"ml-auto\", ROW_LINE, ACTIVITY_PAD, ACTIVITY_REACH)} alignEnd pinned={pinned} items={items} />\n </div>\n {trailing === undefined ? null : <span className={cn(\"flex h-4 shrink-0 items-center\", IDENTITY_REACH, HOST_CONTROL)} data-testid=\"face-trailing\">{trailing}</span>}\n </div>\n\n {renderTitle({ className: \"block text-sm font-medium break-words text-primary\", describedBy: factsId })}\n </div>\n );\n}\n"],"names":["ROW_LINE","FACE_GAPS","IDENTITY_REACH","ACTIVITY_PAD","ACTIVITY_REACH","HOST_CONTROL","HoldMark","hold","compact","formatNumber","useNumberFormat","spoken","jsx","jsxs","TapTip","BADGE_TONE_TEXT","Icon","Badge","CountMark","mark","icon","testId","CommentCountMark","count","tone","cn","CountBadge","CommentsMark","FlagMark","slotItem","item","slot","CardFace","card","renderTitle","reference","parent","status","trailing","cover","workState","triage","usage","runtime","age","keepAge","factsId","useId","priority","PRIORITY_TIER_VISUALS","items","effort","planGates","ac","codeGates","children","comments","retro","pullRequest","agent","EffortBadge","GateRingGlyph","AcRingGlyph","CARD_FACE_ICONS","BoardCardAgentSlot","contentKey","pinned","Fragment","CardTypeBadge","OverflowRow"],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { jsx as e } from "react/jsx-runtime";
2
+ import { cn as m } from "../../lib/cn.js";
3
+ import { Badge as n } from "../Badge.js";
4
+ import { Icon as p } from "../Icon.js";
5
+ import { TapTip as t } from "./TapTip.js";
6
+ import { paletteBadgeClassName as c } from "./vocabulary.js";
7
+ function d({ type: r }) {
8
+ return /* @__PURE__ */ e(n, { size: "sm", "data-testid": "card-type-chip", className: m("h-4 gap-1 px-1 leading-none", c(r.hue)), icon: /* @__PURE__ */ e(p, { name: r.icon, size: "xs" }), children: r.label });
9
+ }
10
+ function x({ type: r, tooltip: i, label: o, testId: a }) {
11
+ return /* @__PURE__ */ e(t, { tooltip: i, label: o, testId: a, children: /* @__PURE__ */ e(d, { type: r }) });
12
+ }
13
+ export {
14
+ x as CardTypeBadge,
15
+ d as CardTypeChip
16
+ };
17
+ //# sourceMappingURL=CardTypeBadge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CardTypeBadge.js","sources":["../../../src/components/card-face/CardTypeBadge.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport type { PaletteKey } from \"../../lib/calendar/types\";\nimport { cn } from \"../../lib/cn\";\nimport { Badge } from \"../Badge\";\nimport { Icon, type IconName } from \"../Icon\";\nimport { TapTip } from \"./TapTip\";\nimport { paletteBadgeClassName } from \"./vocabulary\";\n\n/* ============================================================================\n THE CARD TYPE BADGE (DX-4794, DX-5425) — the one place a card's type wears\n its colour. Every tile is the same neutral surface; the type is told apart\n by this badge: the type's icon and name on its palette hue (the hue's fill\n behind, its edge as border and text). It sits in a card face's 16px\n identity line (`h-4`, tight padding, an `xs` icon).\n\n The type arrives RESOLVED: its name in the reader's language, its icon and\n its hue. Where those come from (a team's own type rows, a fixed demo set)\n is the caller's business.\n ========================================================================= */\n\nexport interface CardFaceType {\n label: string;\n icon: IconName;\n hue: PaletteKey;\n}\n\n/** The badge alone, for a row that is itself a link: no tooltip anchor nested inside it. */\nexport function CardTypeChip({ type }: { type: CardFaceType }) {\n return (\n <Badge size=\"sm\" data-testid=\"card-type-chip\" className={cn(\"h-4 gap-1 px-1 leading-none\", paletteBadgeClassName(type.hue))} icon={<Icon name={type.icon} size=\"xs\" />}>\n {type.label}\n </Badge>\n );\n}\n\nexport interface CardTypeBadgeProps {\n type: CardFaceType;\n tooltip: ReactNode;\n /** The accessible name, e.g. \"Type: Story\". */\n label: string;\n testId?: string;\n}\n\n/** The badge as a mark that explains itself: a tap or hover shows `tooltip`, and never opens the card behind it. */\nexport function CardTypeBadge({ type, tooltip, label, testId }: CardTypeBadgeProps) {\n return (\n <TapTip tooltip={tooltip} label={label} testId={testId}>\n <CardTypeChip type={type} />\n </TapTip>\n );\n}\n"],"names":["CardTypeChip","type","jsx","Badge","cn","paletteBadgeClassName","Icon","CardTypeBadge","tooltip","label","testId","TapTip"],"mappings":";;;;;;AA2BO,SAASA,EAAa,EAAE,MAAAC,KAAgC;AAC7D,SACE,gBAAAC,EAACC,GAAA,EAAM,MAAK,MAAK,eAAY,kBAAiB,WAAWC,EAAG,+BAA+BC,EAAsBJ,EAAK,GAAG,CAAC,GAAG,MAAM,gBAAAC,EAACI,GAAA,EAAK,MAAML,EAAK,MAAM,MAAK,KAAA,CAAK,GACjK,UAAAA,EAAK,MAAA,CACR;AAEJ;AAWO,SAASM,EAAc,EAAE,MAAAN,GAAM,SAAAO,GAAS,OAAAC,GAAO,QAAAC,KAA8B;AAClF,SACE,gBAAAR,EAACS,KAAO,SAAAH,GAAkB,OAAAC,GAAc,QAAAC,GACtC,UAAA,gBAAAR,EAACF,GAAA,EAAa,MAAAC,GAAY,EAAA,CAC5B;AAEJ;"}
@@ -0,0 +1,11 @@
1
+ import { jsx as r } from "react/jsx-runtime";
2
+ import { Icon as f } from "../Icon.js";
3
+ import { TapTip as i } from "./TapTip.js";
4
+ import { CARD_FACE_ICONS as m, effortColors as n } from "./vocabulary.js";
5
+ function c({ effort: o, tooltip: e, label: t }) {
6
+ return /* @__PURE__ */ r(i, { tooltip: e, label: t, testId: "effort-badge", className: "h-5.5 justify-center rounded-full border px-1.5", style: n(o), children: /* @__PURE__ */ r(f, { name: m["indicator.effort"], size: "xs" }) });
7
+ }
8
+ export {
9
+ c as EffortBadge
10
+ };
11
+ //# sourceMappingURL=EffortBadge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EffortBadge.js","sources":["../../../src/components/card-face/EffortBadge.tsx"],"sourcesContent":["import { Icon } from \"../Icon\";\nimport { TapTip } from \"./TapTip\";\nimport { CARD_FACE_ICONS, effortColors, type EffortRung } from \"./vocabulary\";\n\n/* ============================================================================\n EFFORT (DX-4799, DX-5425) — a card's reasoning-effort rung as an icon-only\n pill whose colour runs cool to hot with the rung (`effortColors`). The pill\n is 22px tall, the card face's activity-row height; the rung's name lives in\n the tooltip and the accessible name, since a crowded row has no room for it.\n ========================================================================= */\n\nexport interface EffortBadgeProps {\n effort: EffortRung;\n /** The full sentence, e.g. \"Effort: High\". */\n tooltip: string;\n /** The accessible name, e.g. \"Effort High\". */\n label: string;\n}\n\nexport function EffortBadge({ effort, tooltip, label }: EffortBadgeProps) {\n return (\n <TapTip tooltip={tooltip} label={label} testId=\"effort-badge\" className=\"h-5.5 justify-center rounded-full border px-1.5\" style={effortColors(effort)}>\n <Icon name={CARD_FACE_ICONS[\"indicator.effort\"]} size=\"xs\" />\n </TapTip>\n );\n}\n"],"names":["EffortBadge","effort","tooltip","label","jsx","TapTip","effortColors","Icon","CARD_FACE_ICONS"],"mappings":";;;;AAmBO,SAASA,EAAY,EAAE,QAAAC,GAAQ,SAAAC,GAAS,OAAAC,KAA2B;AACxE,SACE,gBAAAC,EAACC,KAAO,SAAAH,GAAkB,OAAAC,GAAc,QAAO,gBAAe,WAAU,mDAAkD,OAAOG,EAAaL,CAAM,GAClJ,UAAA,gBAAAG,EAACG,KAAK,MAAMC,EAAgB,kBAAkB,GAAG,MAAK,MAAK,EAAA,CAC7D;AAEJ;"}
@@ -0,0 +1,31 @@
1
+ import { jsxs as a, jsx as t } from "react/jsx-runtime";
2
+ import { BADGE_TONE_TEXT as i } from "../Badge.js";
3
+ import { Icon as o } from "../Icon.js";
4
+ import { ProgressRing as N } from "../Progress.js";
5
+ import { ROW_RING_SIZE as E } from "./hit-area.js";
6
+ import { TapTip as T } from "./TapTip.js";
7
+ import { GATE_VERDICTS as _, GATE_VERDICT_VISUALS as c, CARD_FACE_ICONS as m } from "./vocabulary.js";
8
+ const I = { plan: m["indicator.planGates"], code: m["indicator.codeGates"] };
9
+ function D({ phase: r, gates: l, verdictLabels: s, summary: p, label: d }) {
10
+ if (l.length === 0) return null;
11
+ const f = l.filter((e) => e.verdict === "pass").length, h = l.filter((e) => e.verdict === "fail").length > 0 ? "danger" : f === l.length ? "success" : "neutral", x = _.map((e) => ({
12
+ value: l.filter((n) => n.verdict === e).length,
13
+ tone: c[e].tone,
14
+ label: s[e]
15
+ })).filter((e) => e.value > 0), u = /* @__PURE__ */ a("div", { className: "flex flex-col gap-1 text-xs", children: [
16
+ /* @__PURE__ */ t("p", { className: "font-medium text-primary", children: p }),
17
+ /* @__PURE__ */ t("ul", { className: "flex flex-col gap-0.5", children: l.map((e) => {
18
+ const n = c[e.verdict];
19
+ return /* @__PURE__ */ a("li", { className: "flex items-center gap-1.5", children: [
20
+ /* @__PURE__ */ t(o, { name: n.icon, size: "xs", className: i[n.tone] }),
21
+ /* @__PURE__ */ t("span", { className: "text-secondary", children: e.label }),
22
+ /* @__PURE__ */ t("span", { className: "ml-auto text-tertiary", children: s[e.verdict] })
23
+ ] }, e.key);
24
+ }) })
25
+ ] });
26
+ return /* @__PURE__ */ t(T, { tooltip: u, testId: `gate-ring-${r}`, className: "text-secondary", children: /* @__PURE__ */ t(N, { segments: x, total: l.length, size: "row", className: E, showValue: !1, label: d, children: /* @__PURE__ */ t(o, { name: I[r], size: "sm", className: i[h] }) }) });
27
+ }
28
+ export {
29
+ D as GateRingGlyph
30
+ };
31
+ //# sourceMappingURL=GateRingGlyph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GateRingGlyph.js","sources":["../../../src/components/card-face/GateRingGlyph.tsx"],"sourcesContent":["import { BADGE_TONE_TEXT } from \"../Badge\";\nimport { Icon } from \"../Icon\";\nimport { ProgressRing, type ProgressRingSegment } from \"../Progress\";\nimport { ROW_RING_SIZE } from \"./hit-area\";\nimport { TapTip } from \"./TapTip\";\nimport { CARD_FACE_ICONS, GATE_VERDICTS, GATE_VERDICT_VISUALS, type GateVerdict } from \"./vocabulary\";\n\n/* ============================================================================\n THE GATE-RING GLYPH (DX-3014, DX-4099, DX-5425) — one component for both the\n Plan and the Code quality gates: a segmented donut as tall as the card\n face's activity row (22px, `ROW_RING_SIZE`), one arc per gate coloured by\n its verdict, with the gate kind's icon in the centre in the tone of the\n worst gate (failing outranks pending; every gate passed reads success).\n\n The ring's denominator is EVERY gate the card carries for the phase, so the\n ring and the tooltip's list can never disagree. Renders NOTHING when the\n phase has no gates: a card with none shows no ring, not an empty one.\n\n The words are the caller's: each verdict's name, the tooltip heading and\n the ring's accessible name arrive already in the reader's language.\n ========================================================================= */\n\nexport type GatePhase = \"plan\" | \"code\";\n\nexport interface GateRingEntry {\n /** The gate's stable id. */\n key: string;\n /** The gate's name, in words. */\n label: string;\n verdict: GateVerdict;\n}\n\nexport interface GateRingGlyphProps {\n /** Which kind of gate the ring stands for: it picks the centre icon. */\n phase: GatePhase;\n /** The phase's gates: the ring's arcs and the tooltip's rows. */\n gates: readonly GateRingEntry[];\n /** Each verdict's name (\"Passed\"), for the arcs and the rows. */\n verdictLabels: Readonly<Record<GateVerdict, string>>;\n /** The tooltip's heading, e.g. \"Plan quality gates: 2 of 3 passed, 1 failed\". */\n summary: string;\n /** The ring's accessible name. */\n label: string;\n}\n\nconst PHASE_ICON = { plan: CARD_FACE_ICONS[\"indicator.planGates\"], code: CARD_FACE_ICONS[\"indicator.codeGates\"] } as const;\n\nexport function GateRingGlyph({ phase, gates, verdictLabels, summary, label }: GateRingGlyphProps) {\n if (gates.length === 0) return null;\n\n const passed = gates.filter((gate) => gate.verdict === \"pass\").length;\n const failed = gates.filter((gate) => gate.verdict === \"fail\").length;\n const centreTone = failed > 0 ? \"danger\" : passed === gates.length ? \"success\" : \"neutral\";\n\n const segments: ProgressRingSegment[] = GATE_VERDICTS.map((verdict) => ({\n value: gates.filter((gate) => gate.verdict === verdict).length,\n tone: GATE_VERDICT_VISUALS[verdict].tone,\n label: verdictLabels[verdict],\n })).filter((segment) => segment.value > 0);\n\n const content = (\n <div className=\"flex flex-col gap-1 text-xs\">\n <p className=\"font-medium text-primary\">{summary}</p>\n <ul className=\"flex flex-col gap-0.5\">\n {gates.map((gate) => {\n const visual = GATE_VERDICT_VISUALS[gate.verdict];\n return (\n <li key={gate.key} className=\"flex items-center gap-1.5\">\n <Icon name={visual.icon} size=\"xs\" className={BADGE_TONE_TEXT[visual.tone]} />\n <span className=\"text-secondary\">{gate.label}</span>\n <span className=\"ml-auto text-tertiary\">{verdictLabels[gate.verdict]}</span>\n </li>\n );\n })}\n </ul>\n </div>\n );\n\n return (\n <TapTip tooltip={content} testId={`gate-ring-${phase}`} className=\"text-secondary\">\n <ProgressRing segments={segments} total={gates.length} size=\"row\" className={ROW_RING_SIZE} showValue={false} label={label}>\n <Icon name={PHASE_ICON[phase]} size=\"sm\" className={BADGE_TONE_TEXT[centreTone]} />\n </ProgressRing>\n </TapTip>\n );\n}\n"],"names":["PHASE_ICON","CARD_FACE_ICONS","GateRingGlyph","phase","gates","verdictLabels","summary","label","passed","gate","centreTone","segments","GATE_VERDICTS","verdict","GATE_VERDICT_VISUALS","segment","content","jsxs","jsx","visual","Icon","BADGE_TONE_TEXT","TapTip","ProgressRing","ROW_RING_SIZE"],"mappings":";;;;;;;AA6CA,MAAMA,IAAa,EAAE,MAAMC,EAAgB,qBAAqB,GAAG,MAAMA,EAAgB,qBAAqB,EAAA;AAEvG,SAASC,EAAc,EAAE,OAAAC,GAAO,OAAAC,GAAO,eAAAC,GAAe,SAAAC,GAAS,OAAAC,KAA6B;AACjG,MAAIH,EAAM,WAAW,EAAG,QAAO;AAE/B,QAAMI,IAASJ,EAAM,OAAO,CAACK,MAASA,EAAK,YAAY,MAAM,EAAE,QAEzDC,IADSN,EAAM,OAAO,CAACK,MAASA,EAAK,YAAY,MAAM,EAAE,SACnC,IAAI,WAAWD,MAAWJ,EAAM,SAAS,YAAY,WAE3EO,IAAkCC,EAAc,IAAI,CAACC,OAAa;AAAA,IACtE,OAAOT,EAAM,OAAO,CAACK,MAASA,EAAK,YAAYI,CAAO,EAAE;AAAA,IACxD,MAAMC,EAAqBD,CAAO,EAAE;AAAA,IACpC,OAAOR,EAAcQ,CAAO;AAAA,EAAA,EAC5B,EAAE,OAAO,CAACE,MAAYA,EAAQ,QAAQ,CAAC,GAEnCC,IACJ,gBAAAC,EAAC,OAAA,EAAI,WAAU,+BACb,UAAA;AAAA,IAAA,gBAAAC,EAAC,KAAA,EAAE,WAAU,4BAA4B,UAAAZ,GAAQ;AAAA,sBAChD,MAAA,EAAG,WAAU,yBACX,UAAAF,EAAM,IAAI,CAACK,MAAS;AACnB,YAAMU,IAASL,EAAqBL,EAAK,OAAO;AAChD,aACE,gBAAAQ,EAAC,MAAA,EAAkB,WAAU,6BAC3B,UAAA;AAAA,QAAA,gBAAAC,EAACE,GAAA,EAAK,MAAMD,EAAO,MAAM,MAAK,MAAK,WAAWE,EAAgBF,EAAO,IAAI,EAAA,CAAG;AAAA,QAC5E,gBAAAD,EAAC,QAAA,EAAK,WAAU,kBAAkB,YAAK,OAAM;AAAA,0BAC5C,QAAA,EAAK,WAAU,yBAAyB,UAAAb,EAAcI,EAAK,OAAO,EAAA,CAAE;AAAA,MAAA,EAAA,GAH9DA,EAAK,GAId;AAAA,IAEJ,CAAC,EAAA,CACH;AAAA,EAAA,GACF;AAGF,2BACGa,GAAA,EAAO,SAASN,GAAS,QAAQ,aAAab,CAAK,IAAI,WAAU,kBAChE,4BAACoB,GAAA,EAAa,UAAAZ,GAAoB,OAAOP,EAAM,QAAQ,MAAK,OAAM,WAAWoB,GAAe,WAAW,IAAO,OAAAjB,GAC5G,UAAA,gBAAAW,EAACE,GAAA,EAAK,MAAMpB,EAAWG,CAAK,GAAG,MAAK,MAAK,WAAWkB,EAAgBX,CAAU,EAAA,CAAG,GACnF,GACF;AAEJ;"}
@@ -0,0 +1,70 @@
1
+ import { jsxs as W, jsx as c } from "react/jsx-runtime";
2
+ import { useRef as z, useState as w, useLayoutEffect as C, useMemo as B } from "react";
3
+ import { cn as d } from "../../lib/cn.js";
4
+ import { useNumberFormat as K } from "../../lib/i18n/number-format.js";
5
+ import { useUiStrings as P } from "../../lib/i18n/provider.js";
6
+ import { Button as E } from "../Button.js";
7
+ import { Popover as H } from "../Popover.js";
8
+ function S(r) {
9
+ return r.filter((t) => t.keep !== !0);
10
+ }
11
+ function J(r, t) {
12
+ const f = S(r).map((n, s) => ({ key: n.key, hideRank: n.hideRank, index: s })).sort((n, s) => s.hideRank - n.hideRank || s.index - n.index);
13
+ return new Set(f.slice(0, t).map((n) => n.key));
14
+ }
15
+ function Q({ pinned: r, items: t, contentKey: f, testId: n, className: s, moreTestId: u, alignEnd: F = !1 }) {
16
+ const O = P().overflowRow, g = K(), h = z(null), [l, o] = w({ step: "full" }), p = JSON.stringify([t.map((e) => e.key), f]), [M, j] = w(p), [k, m] = w(null);
17
+ M !== p && (j(p), o({ step: "full" }), m(null));
18
+ const v = S(t).length;
19
+ C(() => {
20
+ const e = h.current;
21
+ e === null || !(e.scrollWidth > e.clientWidth) || (l.step === "full" ? (m(e.scrollWidth), o({ step: "compact" })) : l.step === "compact" ? o({ step: "collapsed", hiddenCount: Math.min(1, v) }) : l.hiddenCount < v && o({ step: "collapsed", hiddenCount: l.hiddenCount + 1 }));
22
+ }), C(() => {
23
+ const e = h.current;
24
+ if (e === null) return;
25
+ let a = e.clientWidth;
26
+ const N = new ResizeObserver(() => {
27
+ e.clientWidth !== a && (a = e.clientWidth, o({ step: "full" }), m(null));
28
+ });
29
+ return N.observe(e), () => N.disconnect();
30
+ }, []);
31
+ const y = l.step !== "full", R = B(() => l.step === "collapsed" ? J(t, l.hiddenCount) : /* @__PURE__ */ new Set(), [l, t]), b = t.filter((e) => !R.has(e.key)), x = F ? "ml-auto" : "", i = t.filter((e) => R.has(e.key));
32
+ return /* @__PURE__ */ W(
33
+ "span",
34
+ {
35
+ ref: h,
36
+ "data-testid": n,
37
+ className: d("-mx-1 flex min-w-0 flex-nowrap items-stretch gap-x-1.5 overflow-x-clip px-1", s),
38
+ style: l.step !== "full" && k !== null ? { flexBasis: k } : void 0,
39
+ children: [
40
+ r === void 0 ? null : /* @__PURE__ */ c("span", { className: d("flex shrink-0 items-center gap-x-1.5", x), children: r(y) }),
41
+ b.map((e, a) => /* @__PURE__ */ c("span", { className: d("flex shrink-0 items-center", r === void 0 && a === 0 && x), children: e.render(y) }, e.key)),
42
+ i.length === 0 ? null : /* @__PURE__ */ c(
43
+ H,
44
+ {
45
+ trigger: /* @__PURE__ */ W(
46
+ E,
47
+ {
48
+ variant: "ghost",
49
+ size: "2xs",
50
+ className: d("shrink-0 self-center px-1 tabular", r === void 0 && b.length === 0 && x),
51
+ "aria-label": O.more(i.length, g(i.length)),
52
+ "data-testid": u,
53
+ children: [
54
+ "+",
55
+ g(i.length)
56
+ ]
57
+ }
58
+ ),
59
+ children: /* @__PURE__ */ c("span", { className: "flex flex-wrap items-center gap-x-3 gap-y-2", "data-testid": u === void 0 ? void 0 : `${u}-items`, children: i.map((e) => /* @__PURE__ */ c("span", { className: "flex items-center", children: e.render(!1) }, e.key)) })
60
+ }
61
+ )
62
+ ]
63
+ }
64
+ );
65
+ }
66
+ export {
67
+ Q as OverflowRow,
68
+ J as hiddenKeys
69
+ };
70
+ //# sourceMappingURL=OverflowRow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OverflowRow.js","sources":["../../../src/components/card-face/OverflowRow.tsx"],"sourcesContent":["import { useLayoutEffect, useMemo, useRef, useState, type ReactNode } from \"react\";\r\nimport { cn } from \"../../lib/cn\";\r\nimport { useNumberFormat } from \"../../lib/i18n/number-format\";\r\nimport { useUiStrings } from \"../../lib/i18n/provider\";\r\nimport { Button } from \"../Button\";\r\nimport { Popover } from \"../Popover\";\r\n\r\n/* ============================================================================\r\n A ROW THAT NEVER WRAPS AND NEVER HIDES ANYTHING (DX-3984, DX-5425).\r\n ----------------------------------------------------------------------------\r\n A card tile gets two rows of marks, and a lane is only ~288px wide, so a\r\n card that carries many indicators cannot show them all at their full size.\r\n The row makes room in a fixed order and stops at the first step that fits:\r\n\r\n 1. FULL FORM — every item as designed.\r\n 2. COMPACT FORM — each item's shorter form (`render(true)`): a usage chip\r\n without its words, an age without its created half.\r\n 3. \"+N\" — the items nobody would miss first leave the row, and a\r\n `+N` control opens a popover holding them, each still a\r\n working mark with its own tooltip. Nothing is clipped:\r\n an item is either in the row or one tap away.\r\n\r\n WHAT NEVER LEAVES THE ROW is `pinned` (the holds a human must see) and every\r\n item marked `keep` (DX-5422: the age of a card inside its parent's box). Both\r\n take part in step 2, shortening like everything else, but are never tucked\r\n away; a kept item stays in its own place among the items. If they alone,\r\n shortened, are wider than the row, it is the caller's layout that is wrong.\r\n\r\n IT MEASURES THE REAL LAYOUT, not an estimate: all items render in a\r\n non-wrapping box, and when `scrollWidth` exceeds `clientWidth` the next step\r\n is taken. The steps run in a layout effect, so a re-render with the new form\r\n is committed before the browser paints — no frame ever shows an overflowing\r\n row. A `ResizeObserver` re-runs the whole sequence when the row's own width\r\n changes (a rotated phone, a resized lane).\r\n\r\n ON A SERVER (DX-5425) no effect runs, so the prerendered row is the full\r\n form; the browser compacts it before its first paint after hydration.\r\n ========================================================================= */\r\n\r\nexport interface OverflowItem {\r\n /** Stable across renders; a card's marks come and go as its facts change. */\r\n key: string;\r\n /**\r\n * Higher leaves the row FIRST. Display order is the array's order, never rank: rank only says which item a\r\n * crowded row can least afford to keep.\r\n */\r\n hideRank: number;\r\n /** DX-5422: the item never leaves for the `+N` popover; a crowded row shortens it and tucks the others instead. */\r\n keep?: boolean;\r\n /** `compact` is true once the row has had to shorten its items (step 2). */\r\n render: (compact: boolean) => ReactNode;\r\n}\r\n\r\n/** The items a crowded row may tuck behind `+N`: every one not marked `keep`. */\r\nfunction hideable(items: readonly OverflowItem[]): OverflowItem[] {\r\n return items.filter((item) => item.keep !== true);\r\n}\r\n\r\n/** Which item keys leave the row when `hiddenCount` of them must: highest `hideRank` first, the later item first among equals. */\r\nexport function hiddenKeys(items: readonly OverflowItem[], hiddenCount: number): ReadonlySet<string> {\r\n const byHideOrder = hideable(items)\r\n .map((item, index) => ({ key: item.key, hideRank: item.hideRank, index }))\r\n .sort((a, b) => b.hideRank - a.hideRank || b.index - a.index);\r\n return new Set(byHideOrder.slice(0, hiddenCount).map((entry) => entry.key));\r\n}\r\n\r\ntype Plan = { step: \"full\" } | { step: \"compact\" } | { step: \"collapsed\"; hiddenCount: number };\r\n\r\nexport interface OverflowRowProps {\r\n /** Always in the row, before the items, whatever the width; `compact` is true once the row has had to shorten its marks. */\r\n pinned?: (compact: boolean) => ReactNode;\r\n items: readonly OverflowItem[];\r\n /**\r\n * What the row's marks SAY, as one string: the pinned part's content and every mark's text that can change width\r\n * under an unchanged key (a hold's count, a usage label, an age). When it changes the row starts over from the\r\n * full form, so a mark that shrinks (a hold clears, a label gets shorter) is not left in a compacted row. It must\r\n * be stable across renders that change nothing, or the row would restart on every one of them.\r\n */\r\n contentKey: string;\r\n testId?: string;\r\n className?: string;\r\n /** The `+N` button's test id; its popover's list takes `<moreTestId>-items`. */\r\n moreTestId?: string;\r\n /**\r\n * DX-5677: the row's marks sit at its END (an auto margin on the first mark, so an overflowing row still overflows\r\n * to the end and `scrollWidth` still sees it). The row's flex-basis is then pinned to its FULL form's measured width\r\n * once it has had to shorten, so a wrapping parent decides on the same width whatever form is drawn: without that, a\r\n * shortened row would fit back beside its neighbour, be reset by the resize observer, no longer fit, and flicker.\r\n */\r\n alignEnd?: boolean;\r\n}\r\n\r\nexport function OverflowRow({ pinned, items, contentKey, testId, className, moreTestId, alignEnd = false }: OverflowRowProps) {\r\n const strings = useUiStrings().overflowRow;\r\n const formatNumber = useNumberFormat();\r\n const rowRef = useRef<HTMLSpanElement>(null);\r\n const [plan, setPlan] = useState<Plan>({ step: \"full\" });\r\n // A change in WHICH items exist, or in what they say, restarts the sequence from the full form: the steps only ever\r\n // escalate, so without this a row that has shrunk back inside its width would stay compacted. A re-render that changes\r\n // neither does not restart (that would loop).\r\n const restartKey = JSON.stringify([items.map((item) => item.key), contentKey]);\r\n const [restartedFor, setRestartedFor] = useState(restartKey);\r\n // DX-5677: the full form's width, measured when it overflowed; `null` until then and after every restart.\r\n const [fullWidth, setFullWidth] = useState<number | null>(null);\r\n if (restartedFor !== restartKey) {\r\n setRestartedFor(restartKey);\r\n setPlan({ step: \"full\" });\r\n setFullWidth(null);\r\n }\r\n\r\n const hideableCount = hideable(items).length;\r\n useLayoutEffect(() => {\r\n const row = rowRef.current;\r\n if (row === null) return;\r\n const overflows = row.scrollWidth > row.clientWidth;\r\n if (!overflows) return;\r\n if (plan.step === \"full\") {\r\n setFullWidth(row.scrollWidth);\r\n setPlan({ step: \"compact\" });\r\n } else if (plan.step === \"compact\") setPlan({ step: \"collapsed\", hiddenCount: Math.min(1, hideableCount) });\r\n else if (plan.hiddenCount < hideableCount) setPlan({ step: \"collapsed\", hiddenCount: plan.hiddenCount + 1 });\r\n });\r\n\r\n // The row's own width changing is the one thing that can make a settled plan wrong.\r\n useLayoutEffect(() => {\r\n const row = rowRef.current;\r\n if (row === null) return;\r\n let width = row.clientWidth;\r\n const observer = new ResizeObserver(() => {\r\n if (row.clientWidth === width) return;\r\n width = row.clientWidth;\r\n setPlan({ step: \"full\" });\r\n setFullWidth(null);\r\n });\r\n observer.observe(row);\r\n return () => observer.disconnect();\r\n }, []);\r\n\r\n const compact = plan.step !== \"full\";\r\n const hidden = useMemo(() => (plan.step === \"collapsed\" ? hiddenKeys(items, plan.hiddenCount) : new Set<string>()), [plan, items]);\r\n const shown = items.filter((item) => !hidden.has(item.key));\r\n const endMargin = alignEnd ? \"ml-auto\" : \"\";\r\n const tucked = items.filter((item) => hidden.has(item.key));\r\n\r\n return (\r\n <span\r\n ref={rowRef}\r\n data-testid={testId}\r\n // DX-4202 / DX-4259: the clip box is 4px wider a side than the layout, so a first or last mark's coarse-pointer reach (3px) is not cut.\r\n className={cn(\"-mx-1 flex min-w-0 flex-nowrap items-stretch gap-x-1.5 overflow-x-clip px-1\", className)}\r\n style={plan.step !== \"full\" && fullWidth !== null ? { flexBasis: fullWidth } : undefined}\r\n >\r\n {/* DX-5677: each slot spans the row's height (its tap reach) and centres its mark, so a 20px mark shares the 22px marks' centre line. */}\n {pinned === undefined ? null : <span className={cn(\"flex shrink-0 items-center gap-x-1.5\", endMargin)}>{pinned(compact)}</span>}\r\n {shown.map((item, index) => (\r\n <span key={item.key} className={cn(\"flex shrink-0 items-center\", pinned === undefined && index === 0 && endMargin)}>\r\n {item.render(compact)}\r\n </span>\r\n ))}\r\n {tucked.length === 0 ? null : (\r\n <Popover\r\n trigger={\r\n <Button\r\n variant=\"ghost\"\r\n // I18N-ALLOW: a Button size token, not words\r\n size=\"2xs\"\r\n className={cn(\"shrink-0 self-center px-1 tabular\", pinned === undefined && shown.length === 0 && endMargin)}\r\n aria-label={strings.more(tucked.length, formatNumber(tucked.length))}\r\n data-testid={moreTestId}\r\n >\r\n +{formatNumber(tucked.length)}\r\n </Button>\r\n }\r\n >\r\n <span className=\"flex flex-wrap items-center gap-x-3 gap-y-2\" data-testid={moreTestId === undefined ? undefined : `${moreTestId}-items`}>\r\n {tucked.map((item) => (\r\n <span key={item.key} className=\"flex items-center\">\r\n {item.render(false)}\r\n </span>\r\n ))}\r\n </span>\r\n </Popover>\r\n )}\r\n </span>\r\n );\r\n}\r\n"],"names":["hideable","items","item","hiddenKeys","hiddenCount","byHideOrder","index","a","b","entry","OverflowRow","pinned","contentKey","testId","className","moreTestId","alignEnd","strings","useUiStrings","formatNumber","useNumberFormat","rowRef","useRef","plan","setPlan","useState","restartKey","restartedFor","setRestartedFor","fullWidth","setFullWidth","hideableCount","useLayoutEffect","row","width","observer","compact","hidden","useMemo","shown","endMargin","tucked","jsxs","cn","jsx","Popover","Button"],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { jsx as n, jsxs as c } from "react/jsx-runtime";
2
+ import { useState as m, useId as f } from "react";
3
+ import { cn as u } from "../../lib/cn.js";
4
+ import { Tooltip as x } from "../Popover.js";
5
+ import { COARSE_HIT_AREA as T } from "./hit-area.js";
6
+ const A = "[data-tap-tip]";
7
+ function E({ tooltip: a, label: t, description: e, testId: r, className: s, style: p, children: d }) {
8
+ const [l, o] = m(!1), i = f();
9
+ return /* @__PURE__ */ n(x, { content: a, closeOnClick: !1, open: l, onOpenChange: o, children: /* @__PURE__ */ c(
10
+ "span",
11
+ {
12
+ "data-tap-tip": "",
13
+ tabIndex: 0,
14
+ role: t === void 0 ? void 0 : "img",
15
+ "aria-label": t,
16
+ "aria-describedby": e === void 0 ? void 0 : i,
17
+ onClick: () => o(!0),
18
+ "data-testid": r,
19
+ style: p,
20
+ className: u("inline-flex items-center gap-1 rounded-sm text-xs whitespace-nowrap", T, s),
21
+ children: [
22
+ d,
23
+ e === void 0 ? null : /* @__PURE__ */ n("span", { id: i, className: "sr-only", children: e })
24
+ ]
25
+ }
26
+ ) });
27
+ }
28
+ export {
29
+ A as TAP_TIP_SELECTOR,
30
+ E as TapTip
31
+ };
32
+ //# sourceMappingURL=TapTip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TapTip.js","sources":["../../../src/components/card-face/TapTip.tsx"],"sourcesContent":["import { useId, useState, type CSSProperties, type ReactNode } from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { Tooltip } from \"../Popover\";\nimport { COARSE_HIT_AREA } from \"./hit-area\";\n\n/* ============================================================================\n A MARK THAT EXPLAINS ITSELF — hover, keyboard focus AND a tap (DX-3822, DX-5425).\n ----------------------------------------------------------------------------\n A phone has no hover, so a glyph with only a hover tooltip says nothing\n there. The anchor is therefore a focusable span whose click drives the\n tooltip OPEN (the library `Tooltip`'s controlled pair, which exists for\n exactly this: a tap focuses without opening).\n\n A TAP MUST NOT ALSO OPEN THE CARD. A card drawn as one big link (a block\n link) treats a click inside it as a click on the card; `TAP_TIP_SELECTOR`\n is what such a host leaves to the mark, so a tap here shows the tooltip\n and nothing else.\n\n THE TOOLTIP IS A LABEL, never a surface: the library `Tooltip` is not\n enterable by default, so the popup closes as the pointer leaves the mark\n and never covers its neighbours.\n\n A SMALL MARK STAYS TAPPABLE (DX-3984). Marks packed tight get a coarse-\n pointer hit area stretched past the glyph by a `::after` whose reach the\n row sets (`COARSE_HIT_AREA`), so neighbouring targets tile.\n ========================================================================= */\n\n/** The CSS selector a click-delegating host uses to leave a `TapTip` to itself — matches the attribute below. */\nexport const TAP_TIP_SELECTOR = \"[data-tap-tip]\";\n\nexport interface TapTipProps {\n tooltip: ReactNode;\n /** The mark's accessible name, when it is a glyph with no text of its own; a mark that prints its words omits it. */\n label?: string;\n /** DX-4315: the tooltip's text as the mark's accessible description, present whether or not the tooltip is open (a screen reader has no hover). */\n description?: string;\n testId?: string;\n className?: string;\n style?: CSSProperties;\n children: ReactNode;\n}\n\nexport function TapTip({ tooltip, label, description, testId, className, style, children }: TapTipProps) {\n const [open, setOpen] = useState(false);\n const descriptionId = useId();\n return (\n <Tooltip content={tooltip} closeOnClick={false} open={open} onOpenChange={setOpen}>\n <span\n data-tap-tip=\"\"\n tabIndex={0}\n role={label === undefined ? undefined : \"img\"}\n aria-label={label}\n aria-describedby={description === undefined ? undefined : descriptionId}\n onClick={() => setOpen(true)}\n data-testid={testId}\n style={style}\n className={cn(\"inline-flex items-center gap-1 rounded-sm text-xs whitespace-nowrap\", COARSE_HIT_AREA, className)}\n >\n {children}\n {description === undefined ? null : (\n <span id={descriptionId} className=\"sr-only\">\n {description}\n </span>\n )}\n </span>\n </Tooltip>\n );\n}\n"],"names":["TAP_TIP_SELECTOR","TapTip","tooltip","label","description","testId","className","style","children","open","setOpen","useState","descriptionId","useId","jsx","Tooltip","jsxs","cn","COARSE_HIT_AREA"],"mappings":";;;;;AA4BO,MAAMA,IAAmB;AAczB,SAASC,EAAO,EAAE,SAAAC,GAAS,OAAAC,GAAO,aAAAC,GAAa,QAAAC,GAAQ,WAAAC,GAAW,OAAAC,GAAO,UAAAC,KAAyB;AACvG,QAAM,CAACC,GAAMC,CAAO,IAAIC,EAAS,EAAK,GAChCC,IAAgBC,EAAA;AACtB,SACE,gBAAAC,EAACC,KAAQ,SAASb,GAAS,cAAc,IAAO,MAAAO,GAAY,cAAcC,GACxE,UAAA,gBAAAM;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,gBAAa;AAAA,MACb,UAAU;AAAA,MACV,MAAMb,MAAU,SAAY,SAAY;AAAA,MACxC,cAAYA;AAAA,MACZ,oBAAkBC,MAAgB,SAAY,SAAYQ;AAAA,MAC1D,SAAS,MAAMF,EAAQ,EAAI;AAAA,MAC3B,eAAaL;AAAA,MACb,OAAAE;AAAA,MACA,WAAWU,EAAG,uEAAuEC,GAAiBZ,CAAS;AAAA,MAE9G,UAAA;AAAA,QAAAE;AAAA,QACAJ,MAAgB,SAAY,OAC3B,gBAAAU,EAAC,UAAK,IAAIF,GAAe,WAAU,WAChC,UAAAR,EAAA,CACH;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAGN;AAEJ;"}
@@ -0,0 +1,6 @@
1
+ const e = "relative pointer-coarse:after:absolute pointer-coarse:after:content-[''] pointer-coarse:after:top-[calc(var(--hit-t,0.5rem)*-1)] pointer-coarse:after:bottom-[calc(var(--hit-b,0.5rem)*-1)] pointer-coarse:after:left-[calc(var(--hit-x,0.5rem)*-1)] pointer-coarse:after:right-[calc(var(--hit-x,0.5rem)*-1)]", r = "size-5.5";
2
+ export {
3
+ e as COARSE_HIT_AREA,
4
+ r as ROW_RING_SIZE
5
+ };
6
+ //# sourceMappingURL=hit-area.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hit-area.js","sources":["../../../src/components/card-face/hit-area.ts"],"sourcesContent":["/**\n * DX-3984 / DX-5425 — a small mark's TOUCH target: on a coarse pointer an `::after` stretches the mark's hit area past its\n * glyph (the target grows, the layout does not). Fine pointers keep the exact glyph box.\n *\n * THE STRETCH IS SET BY THE ROW, NOT BY THE MARK. A card face stacks two 16px rows 2px apart, so a fixed inset would make a\n * mark's target run into its neighbours'. A row declares how far its marks may reach on each side through `--hit-t` /\n * `--hit-b` / `--hit-x` (top, bottom, left and right) and chooses them so the targets TILE the stack and meet at the midpoint\n * of every gap. A mark outside any such row reaches 8px every way.\n *\n * A mark's box must be as tall as its row for the vertical reach to land on the row's edge, so a row stretches its marks.\n */\nexport const COARSE_HIT_AREA =\n \"relative pointer-coarse:after:absolute pointer-coarse:after:content-[''] \" +\n \"pointer-coarse:after:top-[calc(var(--hit-t,0.5rem)*-1)] pointer-coarse:after:bottom-[calc(var(--hit-b,0.5rem)*-1)] \" +\n \"pointer-coarse:after:left-[calc(var(--hit-x,0.5rem)*-1)] pointer-coarse:after:right-[calc(var(--hit-x,0.5rem)*-1)]\";\n\n/**\n * DX-4259 — a card face's activity-row mark height. The effort badge is 22px tall (an explicit `h-5.5`, DX-4799: an\n * icon-only pill has no text line to size it), and the quality-gate and acceptance-criteria rings are exactly as tall: ring\n * outer diameter = row height, no padding between the ring and the row's edge. The ring SVG is viewBox-scaled and its `row`\n * track reaches the viewBox edge, so a size class on the ring is all it takes; `row` is kept for its thin track (a fat track\n * at 22px would leave the centre icon no room).\n */\nexport const ROW_RING_SIZE = \"size-5.5\";\n"],"names":["COARSE_HIT_AREA","ROW_RING_SIZE"],"mappings":"AAWO,MAAMA,IACX,kTAWWC,IAAgB;"}