@50arms/ui 0.0.0-stage → 35.2.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 +169 -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 +332 -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 +22 -0
  1037. package/dist/types/components/rbac/ApiKeysPanel.d.ts +26 -0
  1038. package/dist/types/components/rbac/ApiKeysTable.d.ts +65 -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 +635 -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":"AppShell.js","sources":["../../src/components/AppShell.tsx"],"sourcesContent":["import type { CSSProperties, MouseEvent, ReactNode } from \"react\";\nimport { useEffect, useLayoutEffect, useRef, useState } from \"react\";\nimport { Dialog as BaseDialog } from \"@base-ui/react/dialog\";\nimport { cn } from \"../lib/cn\";\nimport { usePersistedState } from \"../lib/persist\";\nimport { Icon, type IconName } from \"./Icon\";\nimport { IconButton } from \"./IconButton\";\nimport { overlayBackdropClassName } from \"./overlay-shell\";\nimport { NavSections } from \"./nav-sections\";\nimport { useUiStrings } from \"../lib/i18n\";\nimport { HeaderWidthContext } from \"../lib/header-fold\";\n\n/* ============================================================================\n APP SHELL\n\n The most-copied composed primitive in the ecosystem — 16 of shadcn's 27\n blocks — and it ships in only half the major design systems, usually under a\n different name each time. Worth owning.\n\n THE MOBILE SIDEBAR IS A DIALOG, NOT A HIDDEN DIV. Sliding a `position: fixed`\n panel in with a transform looks identical and is wrong: focus stays behind\n it, so a keyboard user tabs into invisible links; the page keeps scrolling\n under it; and Escape does nothing. Rendering it as a dialog gets the focus\n trap, the scroll lock, the backdrop and the dismissal for free — the same\n four things people re-implement badly every time.\n\n COLLAPSED IS ICON-ONLY, NOT HIDDEN. A sidebar that vanishes takes its\n navigation with it, so people collapse it once and expand it forever. At\n 56px the icons stay, tooltips supply the labels, and the width is genuinely\n returned to the content. AND IT IS REMEMBERED — see `persistId`, and the\n note there on why this component names a default key while `PanelGroup`\n cannot.\n\n FULL-BLEED BY DEFAULT, per the system's page rule: the content area fills\n whatever is left rather than centring in a max-width column.\n\n AN APPLICATION SHELL BOUNDS THE VIEWPORT, and this one did not until 3.4.0.\n\n THE SHAPE, and it is the whole of the fix:\n\n root h-dvh, flex row <- the ONLY viewport unit in the system\n aside a flex item, stretched <- its nav list scrolls itself\n column flex-1 min-w-0 min-h-0, flex col\n header shrink-0 <- whatever height it happens to be\n content flex-1 min-h-0 overflow-y-auto <- THE scroller\n\n NOTHING SUBTRACTS ANYTHING, and that is the point rather than a tidiness\n preference. The consuming app was writing\n\n h-[calc(100dvh-var(--control-xl))]\n\n on a screen that needed to fill the viewport — a hard-coded copy of a fact\n the DOM already knows, cached in the wrong place. It is silently wrong the\n moment the header wraps at a narrow width, the size control moves\n `--control-xl`, a banner appears above the header, or the token is retuned.\n Nothing fails; the screen is just the wrong height, and eventually somebody\n reports a scrollbar. The layout engine computes this correctly and for free:\n the header is `auto`, the row below takes what remains, and no number is\n copied anywhere.\n\n If a consumer is doing viewport arithmetic against one of our tokens, this\n component has not finished its job.\n\n `min-h-0` IS LOAD-BEARING AT EVERY LEVEL. A flex item's automatic minimum\n size is its content, so without it a full row refuses to be shorter than\n what is inside it and pushes the page taller instead of letting the\n descendant scroll. Same reason `QueueBoard` needed the chain, one layer up.\n\n AND THE CONTENT COLUMN IS ITSELF A FLEX COLUMN, which is what makes\n `flex-1 min-h-0` mean anything to a screen inside it. It was a block first\n and the difference was measured, not guessed: a board screen carrying\n `flex min-h-0 flex-1 flex-col` came out 1260px tall inside a 740px column,\n the column scrolled, and the board's own lanes reported 876/876 — no\n internal scrolling at all, which is the very defect the height existed to\n fix. `flex-1` against a block parent is inert.\n\n WHAT 2.9.1 DID AND WHY IT IS GONE. It put `h-dvh sticky top-0` on the ASIDE\n alone and said so outright: bounding the root \"would bound the content column\n and take document scrolling from every consumer\". That was the compromise,\n and it is the wrong branch — an app shell that does not bound the viewport is\n not an app shell, it is a page with a sidebar. The aside now needs neither:\n as a flex item in a bounded row it is stretched to the row's height by\n `align-items`, so its nav list's `min-h-0 flex-1 overflow-y-auto` engages\n with no viewport unit and no stickiness anywhere.\n\n THE HEADER IS FIXED BY STRUCTURE, NOT BY `sticky`. It sits OUTSIDE the\n scroller now, so there is nothing for it to stick to and nothing it could\n scroll away from. `sticky top-0` on it would be a declaration that does\n nothing — the kind that reads as intent and is inert.\n\n AND DOCUMENT SCROLLING IS A NAMED PROP WITH THE BOUNDED BEHAVIOUR AS THE\n DEFAULT, which is the way round it has to be. `scroll=\"document\"` restores\n the unbounded column for a shell embedded in a longer page — and it is the\n one arrangement that legitimately needs a second viewport unit, because an\n aside in an unbounded parent has no other way to say \"as tall as the\n screen\". `scripts/probe-shell.mjs` measures both modes and the arithmetic\n ban.\n ========================================================================= */\n\nexport type NavItem = {\n id: string;\n label: string;\n icon: IconName;\n /** A count or status shown at the trailing edge. */\n badge?: ReactNode;\n href?: string;\n /**\n * Receives the click event, which a client-side router NEEDS in order to\n * suppress the browser's own navigation.\n *\n * IT USED TO RECEIVE NOTHING, and that made this component quietly\n * unusable with a history router. The anchor only calls `preventDefault()`\n * when `href` is absent, so an item with BOTH `href` and `onClick` did the\n * client-side navigation AND a full page load — tearing down the app tree\n * and every live connection it held, on every nav click. The design system's\n * own demo could not surface it: a hash router's `href=\"#/x\"` never reloads\n * either way. It showed up the moment a real consumer wired history routing.\n *\n * Dropping `href` to force the `preventDefault` branch works and costs too\n * much — a nav item without an `href` is not a link, so it loses the hover\n * URL, ctrl/cmd-click-to-new-tab and copy-link-address. Keep the `href`,\n * take the event:\n *\n * ```tsx\n * onClick: (e) => {\n * // Let the browser have the clicks that mean \"not here\" — a modified\n * // click or a middle click is an explicit request for a new tab, and\n * // swallowing it is the most-reported bug in hand-rolled SPA links.\n * if (e.defaultPrevented || e.metaKey || e.ctrlKey || e.shiftKey || e.altKey) return;\n * e.preventDefault();\n * navigate(item.href);\n * }\n * ```\n *\n * Still router-agnostic: the shell hands over the event and decides nothing.\n */\n onClick?: (event: MouseEvent<HTMLAnchorElement>) => void;\n};\n\nexport type NavSection = {\n label?: string;\n items: NavItem[];\n};\n\nexport interface AppShellProps {\n /** Brand mark, top of the sidebar. */\n brand?: ReactNode;\n /**\n * DX-3412 — an alternate, narrower brand mark shown in place of `brand`\n * when the sidebar is COLLAPSED (`data-collapsed`) — a logo-only mark that\n * fits the 56px collapsed rail (`w-14`), where the full `brand` (typically\n * a logo + team name) would overflow. Omit to render nothing in the\n * collapsed rail's brand row, the pre-DX-3412 behavior.\n */\n brandCollapsed?: ReactNode;\n sections: NavSection[];\n activeId?: string;\n /** Pinned to the bottom of the sidebar — account, version, help. */\n sidebarFooter?: ReactNode;\n /** The top bar's content: search, actions, avatar. */\n header?: ReactNode;\n /**\n * The landmark the content region is exposed as. `\"main\"` is right for the\n * shell that IS the page.\n *\n * Set `\"none\"` when this shell is EMBEDDED in a page that already has a\n * `<main>` — a preview of the shell inside documentation, or a sub-shell\n * within a settings area. A document may only have one main landmark, and a\n * second one is not a cosmetic problem: assistive technology offers \"skip to\n * main content\" as a single destination, so two of them makes that command\n * ambiguous and the shortcut stops being reliable.\n *\n * @default \"main\"\n */\n contentLandmark?: \"main\" | \"none\";\n /**\n * The accessible name of the sidebar's navigation landmark.\n *\n * A `<nav>` is a landmark, and assistive technology lists landmarks as\n * navigation destinations. An UNNAMED one is announced as just \"navigation\",\n * so two of them on a page — a shell previewed inside a page that is itself a\n * shell, a sub-shell in a settings area — produce two identical entries and\n * the list stops being useful. Same failure `contentLandmark` exists for,\n * one landmark over.\n *\n * The default names it rather than leaving it bare; give an EMBEDDED shell a\n * distinct one.\n *\n * @default the provider's `appShell.mainNavigation`\n */\n navLabel?: string;\n /**\n * Which box scrolls when the content is taller than the screen.\n *\n * `\"content\"` — the default, and what an application shell IS. The shell is\n * exactly the viewport, the header and sidebar are fixed by structure, and\n * the content column scrolls itself. A screen that wants to fill the height\n * it has been given writes `flex-1 min-h-0` and never names a viewport unit\n * or one of this library's tokens.\n *\n * `\"document\"` — the shell grows with its content and the PAGE scrolls, with\n * the header and sidebar stuck to the top. For a shell embedded in a longer\n * document, or a page whose content genuinely wants the browser's own\n * scrollbar. It is the opt-out rather than the default, deliberately: the\n * bounded arrangement is the one nobody has to compute anything for, and a\n * default that made consumers subtract a header height from `100dvh` is what\n * this prop exists to have stopped.\n *\n * @default \"content\"\n */\n scroll?: \"content\" | \"document\";\n /**\n * Change this to send the content back to the top — a route path, a record\n * id, whatever identifies \"a different screen is showing now\".\n *\n * IT EXISTS BECAUSE BOUNDING THE SHELL MOVED THE SCROLLER. Every routed\n * application resets the scroll on navigation, and while the DOCUMENT was\n * the scroller they all wrote `window.scrollTo({ top: 0 })`. That line is\n * inert here: the window no longer scrolls, so a route change would leave\n * the new screen opened halfway down with nothing to indicate why.\n *\n * The alternative was to hand out a ref and let each consumer scroll it,\n * which is the same work in every application plus a piece of this\n * component's internals in all of them. The scroller stays private; the\n * element also carries `data-app-shell-content` for the rarer jobs — scroll\n * restoration on a back navigation, an intersection observer — that need the\n * box itself.\n */\n scrollResetKey?: string | number;\n /**\n * Remembers whether the sidebar is collapsed, under `danxbot-<persistId>`.\n * `false` stops it being remembered at all.\n *\n * COLLAPSING IS THE ONE GESTURE ON THIS SHELL THAT ONLY MAKES SENSE KEPT.\n * Its entire purpose is to give the content the sidebar's width back, and it\n * was plain `useState` — so every refresh handed the width straight back to\n * the navigation. Somebody who wants a narrow sidebar wants it on every load;\n * re-collapsing it on each one is the app forgetting a decision that was\n * never provisional.\n *\n * NOTE THE DIFFERENCE FROM `PanelGroup`'s `persistId`, which is undefined by\n * default and persists nothing until a caller names it. That is right there\n * and wrong here: a page can hold any number of panel groups, so none of them\n * can claim a default key without colliding with the next one, whereas an\n * application has exactly ONE shell and can safely name itself. Two shells on\n * one origin — a shell previewed inside a shell — give the inner one its own\n * id, which is what the test for that case pins.\n *\n * It is the ONLY thing this component stores, and it is the only KIND of\n * thing it should: a per-viewer arrangement that can come back empty with no\n * consequence. Every read and write goes through `lib/persist`, which\n * swallows the throw `localStorage` raises in a private window or wherever\n * storage is blocked by policy — the read happens in a `useState`\n * initializer, where an unhandled throw unmounts the whole tree. A blocked\n * browser gets an expanded sidebar and a working app, never a blank page.\n *\n * @default \"app-shell-sidebar\"\n */\n persistId?: string | false;\n children: ReactNode;\n className?: string;\n}\n\nconst isCollapsed = (value: unknown): value is boolean => typeof value === \"boolean\";\n\nexport function AppShell({\n brand,\n brandCollapsed,\n sections,\n activeId,\n sidebarFooter,\n header,\n contentLandmark = \"main\",\n navLabel,\n scroll = \"content\",\n scrollResetKey,\n persistId = \"app-shell-sidebar\",\n children,\n className,\n}: AppShellProps) {\n const strings = useUiStrings().appShell;\n const navName = navLabel ?? strings.mainNavigation;\n const Content = contentLandmark === \"main\" ? \"main\" : \"div\";\n const bounded = scroll === \"content\";\n /* Read in the initializer rather than an effect — see `usePersistedState`.\n An effect would paint the expanded sidebar first and snap it narrow one\n frame later, on every single load. */\n const [collapsed, setCollapsed] = usePersistedState<boolean>(\n persistId === false ? undefined : persistId,\n false,\n { isValid: isCollapsed },\n );\n /* `HTMLDivElement`, not `HTMLElement`: `Content` is `\"main\"` or `\"div\"` and\n TypeScript resolves the union's ref to the narrower of the two. Both are\n plain block elements and `scrollTo` is on `Element`, so nothing here\n depends on which one it is. */\n const contentRef = useRef<HTMLDivElement>(null);\n\n /* NO GUARD ON THE FIRST RUN, and that is not an oversight. A shell mounting\n at scroll zero is already at the top, so the reset is a no-op there; a\n shell mounted by a route that restored a position wants that position\n honoured, and this fires with the key it mounted with, once, before\n anything has restored anything. `behavior: \"instant\"` because a jump\n between screens is not a movement anybody is following. */\n useEffect(() => {\n if (scrollResetKey === undefined) return;\n contentRef.current?.scrollTo({ top: 0, behavior: \"instant\" });\n }, [scrollResetKey]);\n const [mobileOpen, setMobileOpen] = useState(false);\n\n /* DX-5319 - the header's own width, for `useHeaderFold`. Read in a layout effect so the first paint already\n has it, and followed by a ResizeObserver. The header's width is set by the viewport and the sidebar and never by\n its contents (see `lib/header-fold.ts`), so what a fold changes cannot feed back into it. */\n const headerRef = useRef<HTMLElement>(null);\n const [headerWidth, setHeaderWidth] = useState(0);\n useLayoutEffect(() => {\n const header = headerRef.current;\n if (!header) return;\n const measure = () => setHeaderWidth(Math.round(header.getBoundingClientRect().width));\n measure();\n const observer = new ResizeObserver(measure);\n observer.observe(header);\n return () => observer.disconnect();\n }, []);\n\n const nav = (\n <SidebarNav\n sections={sections}\n activeId={activeId}\n collapsed={collapsed}\n label={navName}\n onNavigate={() => setMobileOpen(false)}\n />\n );\n\n return (\n /* THE ONE VIEWPORT UNIT. Everything below it is `flex-1` and `min-h-0`,\n so no descendant — here or in a consumer's screen — ever has a reason to\n name `dvh` or subtract a token from it. */\n <HeaderWidthContext.Provider value={headerWidth}>\n <div className={cn(\"flex bg-canvas\", bounded ? \"h-dvh\" : \"min-h-dvh\", className)}>\n {/* Desktop sidebar. `hidden lg:flex`, so it is not merely invisible on\n small screens — it is not in the tree at all, and cannot be tabbed\n into behind the mobile drawer.\n\n `h-dvh sticky top-0` IS WHAT MAKES THE NAV'S OWN SCROLLER REAL. The\n list below already declares `min-h-0 flex-1 overflow-y-auto`, and it\n had never once engaged: the shell root is `min-h-dvh`, so the row's\n height came from its content, the aside stretched to whatever the nav\n needed, and `flex-1` handed the list exactly the height it had asked\n for. Measured in a consuming app at a 600px viewport, on a screen with\n no long content of its own: a twenty-two item sidebar made the aside\n 1344px tall and the DOCUMENT 1344px tall with it, so every screen\n scrolled vertically because of the navigation rather than because of\n anything on the page.\n\n The height is the fix and the stickiness is what keeps it usable: a\n 600px sidebar in a page that still scrolls would otherwise leave the\n navigation behind at the top. Both are on the ASIDE rather than on the\n root, deliberately — making the root `h-dvh` would bound the CONTENT\n column too, which would take document scrolling away from every\n consuming page and unstick the header that currently rides it. */}\n <aside\n /* `group/sidebar` + `data-collapsed`, the same pattern every stateful\n overlay in this library already uses (see Popover's `data-[side=]`,\n Choice's `data-checked` group) — so content passed into `sidebarFooter`\n can react to the collapsed width with a plain\n `group-data-collapsed/sidebar:hidden` class, with no prop or context\n this component would otherwise have to thread through a plain\n `ReactNode` slot. */\n data-collapsed={collapsed || undefined}\n className={cn(\n \"group/sidebar hidden shrink-0 flex-col border-r border-border-subtle bg-surface lg:flex\",\n /* Bounded: nothing. A flex item in a row of a fixed height is\n stretched to it by `align-items`, so the nav list's own\n `min-h-0 flex-1 overflow-y-auto` engages with no viewport unit and\n no stickiness. Unbounded: the row's height comes from its content,\n so the aside has to state the viewport itself and stay put while\n the page scrolls past it — the ONE place a second viewport unit is\n unavoidable, and the reason it lives behind an opt-out. */\n !bounded && \"sticky top-0 h-dvh\",\n \"transition-[var(--tx-colors),width] duration-(--dur-slow) ease-emphasis\",\n collapsed ? \"w-14\" : \"w-60\",\n )}\n >\n <div className={cn(\"flex h-control-xl shrink-0 items-center gap-2 px-3\", collapsed && \"justify-center\")}>\n {!collapsed && <div className=\"min-w-0 flex-1\">{brand}</div>}\n {/* `IconButton` carries its own tooltip from `label`, so the\n explicit `Tooltip` wrapper that used to be here would have\n produced two — and named the control twice. */}\n <IconButton\n label={collapsed ? strings.expandSidebar : strings.collapseSidebar}\n tooltipSide=\"right\"\n onClick={() => setCollapsed((v) => !v)}\n icon={\n <Icon\n name=\"panel-left\"\n size=\"sm\"\n className={cn(\"transition-[var(--tx-colors),transform,translate,scale,rotate] duration-(--dur-base)\", collapsed && \"rotate-180\")}\n />\n }\n />\n </div>\n\n {/* DX-3412 — the collapsed rail's own brand mark, in ITS OWN row\n below the toggle rather than sharing the toggle's row: the rail\n is `w-14` (56px), and an icon-sized brand mark plus the toggle\n button plus `gap-2 px-3` does not fit one row at that width. */}\n {collapsed && brandCollapsed && (\n <div className=\"flex shrink-0 items-center justify-center px-3 pb-2\">{brandCollapsed}</div>\n )}\n\n {/* `relative` for the same reason as the content column: a scroller\n that is not in its descendants' containing-block chain does not\n clip them. */}\n <div className=\"relative min-h-0 flex-1 overflow-y-auto px-2 py-2\">{nav}</div>\n {sidebarFooter && (\n <div className=\"shrink-0 border-t border-border-subtle p-2\">{sidebarFooter}</div>\n )}\n </aside>\n\n <div className={cn(\"flex min-w-0 flex-1 flex-col\", bounded && \"min-h-0\")}>\n <header\n ref={headerRef}\n className={cn(\n \"z-(--z-sticky) flex h-control-xl shrink-0 items-center gap-3\",\n \"border-b border-border-subtle bg-canvas/85 px-4 backdrop-blur-md\",\n /* FIXED BY STRUCTURE when the shell is bounded: the header sits\n OUTSIDE the scroller, so there is nothing for it to stick to.\n `sticky top-0` there would be a declaration that reads as intent\n and does nothing. */\n !bounded && \"sticky top-0\",\n )}\n >\n <BaseDialog.Root open={mobileOpen} onOpenChange={setMobileOpen}>\n <BaseDialog.Trigger\n render={\n /* `hideTooltip` on every Base UI `render` slot in this file:\n the slot expects ONE element it can merge props and a ref\n into, and a tooltip wrapper would swallow both. The name\n still comes from `label` — that part is never optional. */\n <IconButton\n label={strings.openNavigation}\n hideTooltip\n className=\"lg:hidden\"\n /* A REAL 44px FLOOR, NOT THE COARSE-POINTER ONE.\n `dx-tap` (IconButton's own base) already floors this\n control's tap target, but only under `--tap-target`,\n which `scale.css` leaves at `auto` outside\n `@media (pointer: coarse)` — correct for a mouse with\n room to be precise, wrong for THIS control specifically:\n it is the only way into navigation on a narrow layout,\n and a narrow layout that reports a fine pointer (a\n resized desktop window, this library's own review\n tooling) is exactly the case the coarse-pointer query\n does not catch. `--tap-target` is a plain CSS custom\n property, so overriding it here — the same local-override\n idiom `Icon`/`Spinner` already use for `--dx-icon-size` —\n pins `dx-tap`'s existing min-width/min-height to 44px for\n this one control on every pointer type, without touching\n the shared coarse-pointer floor every other control in\n the system still reads. */\n style={{ \"--tap-target\": \"44px\" } as CSSProperties}\n icon={<Icon name=\"menu\" size=\"sm\" />}\n />\n }\n />\n <BaseDialog.Portal>\n <BaseDialog.Backdrop className={overlayBackdropClassName(\"lg:hidden\")} />\n <BaseDialog.Popup\n className={cn(\n \"fixed inset-y-0 left-0 z-(--z-drawer) flex w-72 flex-col\",\n \"border-r border-border bg-surface shadow-xl outline-none lg:hidden\",\n /* Slides from the edge it lives on, so it reads as coming\n from off-screen rather than materialising in place. */\n \"transition-[var(--tx-colors),transform,translate,scale,rotate] duration-(--dur-slower) ease-emphasis\",\n \"data-starting-style:-translate-x-full data-ending-style:-translate-x-full\",\n )}\n >\n <BaseDialog.Title className=\"sr-only\">{strings.navigationTitle}</BaseDialog.Title>\n <div className=\"flex h-control-xl shrink-0 items-center justify-between gap-2 px-3\">\n <div className=\"min-w-0 flex-1\">{brand}</div>\n <BaseDialog.Close\n render={\n <IconButton\n label={strings.closeNavigation}\n hideTooltip\n icon={<Icon name=\"x\" size=\"sm\" />}\n />\n }\n />\n </div>\n <div className=\"relative min-h-0 flex-1 overflow-y-auto px-2 py-2\">\n <SidebarNav\n sections={sections}\n activeId={activeId}\n collapsed={false}\n label={navName}\n onNavigate={() => setMobileOpen(false)}\n />\n </div>\n {sidebarFooter && (\n <div className=\"shrink-0 border-t border-border-subtle p-2\">{sidebarFooter}</div>\n )}\n </BaseDialog.Popup>\n </BaseDialog.Portal>\n </BaseDialog.Root>\n\n {header}\n </header>\n\n {/* THE SCROLLER, when the shell is bounded. `min-h-0` is what lets it\n be shorter than its content — without it the automatic minimum size\n of a flex item is its content, and the column pushes the shell\n taller instead of scrolling inside it. */}\n <Content\n ref={contentRef}\n data-app-shell-content=\"\"\n /* `relative` PAIRS WITH THE OVERFLOW, and it is not decoration. An\n absolutely positioned descendant is clipped against its containing\n block, so a STATIC scroller is not in that chain and does not\n contain it. Measured the moment this column became a scroller: the\n demo reported `documentElement.scrollHeight` 1980 against a 700px\n viewport while `body.scrollHeight` was exactly 700 — content\n escaping past the box that was supposed to bound it, which is the\n same defect `scripts/probe-containment.mjs` exists for, arriving\n vertically. */\n /* FOCUSABLE BECAUSE IT SCROLLS, and only because it scrolls.\n `scrollable-region-focusable` — a scrolling box with nothing\n focusable inside it cannot be scrolled by keyboard at all, so its\n content is simply unreachable without a pointer. It did not apply\n while the DOCUMENT scrolled (the window is always keyboard\n scrollable) and it applies the moment this column takes over;\n `a11y-scan` reported it on the two demo routes whose content has no\n link or button in it, which is exactly the case that strands\n somebody.\n\n `-1` in the unbounded mode rather than nothing: `<main>` is what a\n skip link points at, and a target that cannot take focus sends the\n skip nowhere. */\n tabIndex={bounded ? 0 : -1}\n /* A FLEX COLUMN, so that `flex-1 min-h-0` on a screen inside it means\n something. It was a block first and that made the documented shape\n a lie: measured in the consuming app, a board screen carrying\n `flex min-h-0 flex-1 flex-col` came out 1260px tall inside a 740px\n column, the column scrolled, and the board's own lanes reported\n 876/876 — no internal scrolling at all, which is the exact defect\n the height was supposed to fix. `flex-1` against a block parent is\n inert.\n\n It costs nothing for a screen that does not ask: a flex item's\n automatic minimum is its content, so an ordinary tall page still\n takes its natural height and scrolls here. */\n className={cn(\n \"flex min-w-0 flex-1 flex-col outline-none\",\n bounded &&\n \"relative min-h-0 overflow-y-auto focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-accent-border\",\n )}\n >\n {children}\n </Content>\n </div>\n </div>\n </HeaderWidthContext.Provider>\n );\n}\n\nfunction SidebarNav({\n sections,\n activeId,\n collapsed,\n label,\n onNavigate,\n}: {\n sections: NavSection[];\n activeId?: string;\n collapsed: boolean;\n label: string;\n onNavigate: () => void;\n}) {\n return (\n <nav aria-label={label} className=\"flex flex-col gap-4\">\n <NavSections\n sections={sections}\n activeId={activeId}\n collapsed={collapsed}\n onNavigate={onNavigate}\n />\n </nav>\n );\n}\n"],"names":["isCollapsed","value","AppShell","brand","brandCollapsed","sections","activeId","sidebarFooter","header","contentLandmark","navLabel","scroll","scrollResetKey","persistId","children","className","strings","useUiStrings","navName","Content","bounded","collapsed","setCollapsed","usePersistedState","contentRef","useRef","useEffect","mobileOpen","setMobileOpen","useState","headerRef","headerWidth","setHeaderWidth","useLayoutEffect","measure","observer","nav","jsx","SidebarNav","HeaderWidthContext","jsxs","cn","IconButton","v","Icon","BaseDialog","overlayBackdropClassName","label","onNavigate","NavSections"],"mappings":"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"}
@@ -0,0 +1,130 @@
1
+ import { jsxs as j, jsx as e } from "react/jsx-runtime";
2
+ import { useRef as E, useState as C, useEffect as W, useLayoutEffect as L } from "react";
3
+ import { cn as X } from "../lib/cn.js";
4
+ import { devWarn as Y } from "../lib/dev-warn.js";
5
+ import { resolveEffects as K, isPeriodic as U, clampRings as V, resolveReach as q, resolveTiming as B, WAVE_REACH as D } from "../lib/attention.js";
6
+ const F = 520;
7
+ function G({ count: o, style: r }) {
8
+ return /* @__PURE__ */ e("span", { className: "dx-attn-ripples", style: r, children: Array.from({ length: o }, (i, s) => {
9
+ const [d, u, p] = D[s];
10
+ return /* @__PURE__ */ e(
11
+ "span",
12
+ {
13
+ className: "dx-attn-ripple",
14
+ style: {
15
+ "--k": s,
16
+ "--m1": d,
17
+ "--m2": u,
18
+ "--m3": p
19
+ }
20
+ },
21
+ s
22
+ );
23
+ }) });
24
+ }
25
+ function I({ effect: o, rings: r, cycleMs: i }) {
26
+ const s = { "--attn-dur": `${i}ms` };
27
+ switch (o) {
28
+ case "ripple":
29
+ return /* @__PURE__ */ e(G, { count: r, style: { ...s, "--attn-n": r } });
30
+ case "beacon":
31
+ return /* @__PURE__ */ e("span", { className: "dx-attn-ping", style: s });
32
+ case "pulse":
33
+ return /* @__PURE__ */ e("span", { className: "dx-attn-breath", style: s });
34
+ case "glow":
35
+ return /* @__PURE__ */ e("span", { className: "dx-attn-halo", style: s });
36
+ case "ring":
37
+ return /* @__PURE__ */ e("span", { className: "dx-attn-orbit", style: s });
38
+ case "shimmer":
39
+ case "bounce":
40
+ case "wiggle":
41
+ return null;
42
+ }
43
+ }
44
+ function rt({
45
+ children: o,
46
+ shape: r = "inherit",
47
+ effect: i,
48
+ fill: s = !1,
49
+ contain: d = !0,
50
+ tone: u = "accent",
51
+ speed: p = "normal",
52
+ intensity: x = "medium",
53
+ rings: H = 3,
54
+ active: c = !0,
55
+ interval: b,
56
+ block: P = !1,
57
+ className: M,
58
+ style: O,
59
+ ref: l,
60
+ ...T
61
+ }) {
62
+ const v = E(null), [z, m] = C(!1), y = E(c);
63
+ W(() => {
64
+ if (c) {
65
+ y.current = !0, m(!1);
66
+ return;
67
+ }
68
+ if (!y.current) return;
69
+ y.current = !1, m(!0);
70
+ const t = setTimeout(() => m(!1), F);
71
+ return () => clearTimeout(t);
72
+ }, [c]);
73
+ const h = c ? "on" : z ? "stopping" : "off", { effects: a, conflict: N } = K(i ?? "ripple"), f = N?.join("+") ?? "";
74
+ W(() => {
75
+ f && console.error(
76
+ `Attention: effect ${f.split("+").join(" and ")} both move the control itself and cannot be combined, so neither is drawn. Pick one.`
77
+ );
78
+ }, [f]), b !== void 0 && !a.some(U) && Y(
79
+ "Attention",
80
+ `\`interval\` does nothing for effect="${a.join(" ")}" — it only sizes the rest between bursts of beacon, shimmer, bounce and wiggle. Use \`speed\` for the others.`
81
+ );
82
+ const g = (t) => B(t, p, b).cycleMs, w = a.find((t) => t === "bounce" || t === "wiggle"), _ = V(H);
83
+ return L(() => {
84
+ const t = v.current;
85
+ if (!t) return;
86
+ const S = () => {
87
+ const n = q(t.offsetWidth, t.offsetHeight, x);
88
+ if (n && (t.style.setProperty("--attn-bw", String(t.offsetWidth)), t.style.setProperty("--attn-bh", String(t.offsetHeight)), t.style.setProperty("--attn-reach", String(n.reachPx)), t.style.setProperty("--attn-diag", `${n.diagonal}px`), t.style.setProperty("--attn-rx", String(n.reachX)), t.style.setProperty("--attn-ry", String(n.reachY)), t.style.setProperty("--attn-sx", String(n.swellX)), t.style.setProperty("--attn-sy", String(n.swellY)), t.style.setProperty("--attn-tilt", `${n.tilt}deg`), t.style.setProperty("--attn-span", `${Math.max(t.offsetWidth, t.offsetHeight)}px`)), r === "inherit") {
89
+ const A = Array.from(t.children).find((k) => !k.hasAttribute("data-attn-layer")), $ = A ? getComputedStyle(A).borderRadius : "";
90
+ $ ? t.style.setProperty("--attn-radius", $) : t.style.removeProperty("--attn-radius");
91
+ } else
92
+ t.style.removeProperty("--attn-radius");
93
+ };
94
+ if (S(), typeof ResizeObserver > "u") return;
95
+ const R = new ResizeObserver(S);
96
+ return R.observe(t), () => R.disconnect();
97
+ }), /* @__PURE__ */ j(
98
+ P ? "div" : "span",
99
+ {
100
+ ref: (t) => {
101
+ v.current = t, typeof l == "function" ? l(t) : l && (l.current = t);
102
+ },
103
+ className: X("dx-attn", P && "dx-attn-block", M),
104
+ "data-attn": "",
105
+ "data-shape": r,
106
+ "data-effect": a.join(" "),
107
+ "data-attn-conflict": N ? f : void 0,
108
+ "data-tone": u,
109
+ "data-intensity": x,
110
+ "data-state": h,
111
+ "data-fill": s ? "" : void 0,
112
+ "data-contain": d ? "" : void 0,
113
+ style: { ...w ? { "--attn-dur": `${g(w)}ms` } : {}, ...O },
114
+ ...T,
115
+ children: [
116
+ h !== "off" && /* @__PURE__ */ j("span", { className: "dx-attn-layers", "aria-hidden": "true", "data-attn-layer": "", children: [
117
+ s && /* @__PURE__ */ e("span", { className: "dx-attn-fill" }),
118
+ /* @__PURE__ */ e("span", { className: "dx-attn-static" }),
119
+ /* @__PURE__ */ e("span", { className: "dx-attn-fx", children: a.map((t) => /* @__PURE__ */ e(I, { effect: t, rings: _, cycleMs: g(t) }, t)) })
120
+ ] }),
121
+ o,
122
+ h !== "off" && a.includes("shimmer") && /* @__PURE__ */ e("span", { className: "dx-attn-over dx-attn-layers", "aria-hidden": "true", "data-attn-layer": "", children: /* @__PURE__ */ e("span", { className: "dx-attn-fx dx-attn-glint", style: { "--attn-dur": `${g("shimmer")}ms` } }) })
123
+ ]
124
+ }
125
+ );
126
+ }
127
+ export {
128
+ rt as Attention
129
+ };
130
+ //# sourceMappingURL=Attention.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Attention.js","sources":["../../src/components/Attention.tsx"],"sourcesContent":["import { useEffect, useLayoutEffect, useRef, useState } from \"react\";\nimport type { CSSProperties, HTMLAttributes, ReactNode, Ref } from \"react\";\nimport { cn } from \"../lib/cn\";\nimport { devWarn } from \"../lib/dev-warn\";\nimport {\n WAVE_REACH,\n clampRings,\n isPeriodic,\n resolveEffects,\n resolveReach,\n resolveTiming,\n type AttentionEffect,\n type AttentionEffects,\n type AttentionIntensity,\n type AttentionSpeed,\n type ValidAttentionEffects,\n} from \"../lib/attention\";\n\nexport type { AttentionEffect, AttentionEffects, AttentionIntensity, AttentionSpeed };\n\n/* ============================================================================\n ATTENTION — draws the eye to any control, without touching the control.\n ----------------------------------------------------------------------------\n \"Look here\", as a wrapper: slow click-ripple circles growing out of a\n button and fading away, a breathing halo, a rotating border, a glint. It wraps ANYTHING, so the effect is not a\n prop every control has to grow (`Button attention` was the first of those and\n is the reason this exists).\n\n THE SHAPE IS THE CONTROL'S SHAPE (DX-4504). `shape` other than `inherit`\n re-cuts the wrapped control itself (its border-radius, so its own background,\n border and focus ring follow), because an effect drawn as a circle round a\n rounded-square button reads as two shapes, not one circular button. Only the\n corners change: the box, hit area and layout are the control's own. `circle`\n is 50%, so it is a circle on a square control (an icon button) and an\n ellipse on anything else; use `pill` there.\n\n WHY A WRAPPER, AND WHY IT CANNOT MOVE THE CHILD.\n The effect needs a box to hug and somewhere to draw outside the child's own\n paint. The wrapper is `position: relative; isolation: isolate` and sized by\n the child alone — it has no padding, border or gap — and every effect layer\n is `position: absolute` and `pointer-events: none`, so:\n\n - the child's box is the same box with the wrapper or without it, active or\n not (nothing is inserted into the flow, nothing is animated that changes\n size: waves SCALE, they do not resize);\n - the child's hit area and focus are untouched, and the child element is\n never re-mounted when a prop changes, so a focused control stays focused;\n - the effect paints BEHIND the child (a negative z-index inside the\n isolated wrapper), so a transparent child shows the `fill` and a solid\n one hides it and shows only what spreads past its edge. The one exception\n is `shimmer`, a glint that has to cross the child to be seen.\n\n DECORATIVE, AND NEVER THE ONLY SIGNAL. Every layer is `aria-hidden` and there\n is no live region: the effect says \"look here\" to people who can see it and\n nothing at all to everyone else. What it points at must say what is going on\n in its own label or tooltip.\n\n TURN IT ON ONLY WHILE SOMETHING IS WAITING FOR THIS VIEWER. Same rule as\n `Button attention` and `Badge pulse`: an effect running on something nobody\n needs to act on captures attention permanently, and so stops meaning\n anything. `active` exists for exactly this: switching it off fades the\n effect out over a moment instead of cutting it, and unmounts the layers so a\n finished prompt costs nothing.\n\n REDUCED MOTION IS A STATIC HIGHLIGHT, NOT NOTHING. Under the OS preference,\n `data-motion=\"reduced\"`, and the frame a theme change suspends motion, the\n animated layers are not shown at all and a static outline (and the `fill`, if\n asked for) takes their place — \"reduce, don't remove\", the same shape as\n `.dx-attention`. The choice is a single pair of selectors in attention.css,\n not one media query per effect.\n\n A RIPPLE IS A CLICK RIPPLE, SLOWED DOWN (DX-4504). Each wave is a FILLED\n circle that starts as a point at the centre at full strength, grows, and\n fades linearly so its opacity is exactly 0 the moment it reaches its\n radius. Two or three are staggered so one is always growing, and each\n reaches a different radius. With `contain` (the default) the circles are\n clipped to the control's shape, like a real click ripple; they paint behind\n the control's content, so they show on a transparent control (a ghost or\n outline button) and are hidden by a solid background — use `contain={false}`\n there, and the circles grow out past the edge instead.\n\n WAVES THAT SPILL NEED ROOM. With `contain={false}` (and for `beacon`) a wave\n is drawn OUTSIDE the child's box (up to ~42px past it at `medium`, a quarter\n more at `strong`), so two things follow. An ancestor with\n `overflow: hidden` clips it. And a transformed box counts toward the scrollable\n overflow of the nearest scroll container, so a wave that reaches past the right\n or bottom edge of one makes its scrollbar come and go with the animation.\n Keep the control that distance from a scroll edge, give that container\n `overflow-x: clip`, or pick `glow`/`ring`, which stay within a few pixels.\n ========================================================================= */\n\nexport type AttentionShape = \"circle\" | \"pill\" | \"rounded\" | \"square\" | \"inherit\";\n\nexport type AttentionTone = \"accent\" | \"brand\" | \"info\" | \"success\" | \"warning\" | \"danger\" | \"neutral\";\n\nexport interface AttentionProps<E extends AttentionEffects = AttentionEffects>\n extends Omit<HTMLAttributes<HTMLElement>, \"children\"> {\n /** What to draw the eye to. Rendered untouched; its box is the box the effect hugs. */\n children: ReactNode;\n /**\n * The shape of the control AND of its effect (DX-4504): `circle` (a circular\n * icon button), `pill`, `rounded` (the library's large radius) or `square`\n * re-cut the wrapped control's own corners (its border-radius, with an\n * `!important` that beats a `rounded-md` utility), so there is never a square\n * button inside a circular effect. Only the corners change: the box, hit area\n * and layout stay the control's own. `circle` is 50%, so it is a circle on a\n * square control and an ellipse on any other: use `pill` there. `inherit`\n * leaves the control alone and MEASURES its own border-radius for the effect.\n *\n * @default \"inherit\"\n */\n shape?: AttentionShape;\n /**\n * `ripple` slow click-ripple circles: each grows from the centre and fades to nothing as it reaches its radius, staggered so one is always growing, each to a different radius.\n * `pulse` a tinted shape behind the child breathing in scale and opacity.\n * `glow` a soft halo that breathes.\n * `ring` a bright arc travelling round the border.\n * `beacon` one radar ping every `interval`.\n * `shimmer` a glint sweeping across the child every `interval`.\n * `bounce` / `wiggle` a nudge of the child itself every `interval`.\n *\n * Or a list to combine them (DX-4504), e.g. `[\"wiggle\", \"shimmer\"]`: each draws its own layer, stacked in one\n * fixed order (glow, pulse, ripple, beacon, ring behind the control; shimmer over it) whatever order they are\n * listed in, each at its own speed. `bounce` and `wiggle` both move the control itself, so they cannot be\n * combined with each other: a literal list naming both is a type error, and at runtime neither is drawn and a\n * console error names the conflict.\n *\n * @default \"ripple\"\n */\n effect?: E & ValidAttentionEffects<E>;\n /** Highlight the whole background behind the child. This is the static tint, and it stays under reduced motion. @default false */\n fill?: boolean;\n /**\n * Clip the `ripple` circles to the control's shape, like a click ripple\n * (`true`), or let them grow out past its edge (`false`). Only `ripple` has\n * circles to clip; every other effect ignores it.\n *\n * The circles paint BEHIND the control's content, so a contained ripple\n * shows on a transparent control (a ghost or outline button, a card with no\n * background) and is hidden by a solid background. On a solid control use\n * `contain={false}`: the circles then grow out past its edge, where they show.\n *\n * @default true\n */\n contain?: boolean;\n /** The colour, as one of the library's semantic tones. @default \"accent\" */\n tone?: AttentionTone;\n /**\n * `slow`, `normal` or `fast`, or a number of milliseconds for one cycle of\n * the effect. For the periodic effects (`beacon`, `shimmer`, `bounce`,\n * `wiggle`) the cycle is the gap between two bursts, and `interval` wins over\n * a numeric `speed`.\n *\n * @default \"normal\"\n */\n speed?: AttentionSpeed;\n /** How strong: the opacity of the waves and tint, and how far a wave reaches. @default \"medium\" */\n intensity?: AttentionIntensity;\n /** How many waves `ripple` keeps in flight, 1 to 5 (anything else is clamped). Ignored by every other effect. @default 3 */\n rings?: number;\n /**\n * Draw the effect. Switching it off fades the effect out and removes the\n * layers; switching it back on fades it in.\n *\n * @default true\n */\n active?: boolean;\n /**\n * Milliseconds between two bursts of a periodic effect (`beacon`, `shimmer`,\n * `bounce`, `wiggle`). Ignored, with a development warning, by the continuous\n * effects, which have no rest to size.\n */\n interval?: number;\n /** Render a block `div` (for a card or a row) instead of an inline `span` hugging an inline control. A layout choice made once: changing it swaps the element, which re-mounts the child. @default false */\n block?: boolean;\n ref?: Ref<HTMLElement>;\n}\n\n/* How long a fade-out takes before the layers are unmounted. A little longer\n than the CSS fade (`--dur-slowest`, 450ms) so the unmount never cuts it. */\nconst STOP_MS = 520;\n\n/** The circles of a `ripple`, in the box that clips them when `contain` is on. */\nfunction Waves({ count, style }: { count: number; style: CSSProperties }) {\n return (\n <span className=\"dx-attn-ripples\" style={style}>\n {Array.from({ length: count }, (_, index) => {\n const [first, second, third] = WAVE_REACH[index];\n return (\n <span\n key={index}\n className=\"dx-attn-ripple\"\n style={\n {\n \"--k\": index,\n \"--m1\": first,\n \"--m2\": second,\n \"--m3\": third,\n } as CSSProperties\n }\n />\n );\n })}\n </span>\n );\n}\n\n/** The layer one effect draws behind the child, at that effect's own cycle (`--attn-dur` on the layer itself). */\nfunction EffectLayer({ effect, rings, cycleMs }: { effect: AttentionEffect; rings: number; cycleMs: number }) {\n const style = { \"--attn-dur\": `${cycleMs}ms` } as CSSProperties;\n switch (effect) {\n case \"ripple\":\n return <Waves count={rings} style={{ ...style, \"--attn-n\": rings } as CSSProperties} />;\n case \"beacon\":\n return <span className=\"dx-attn-ping\" style={style} />;\n case \"pulse\":\n return <span className=\"dx-attn-breath\" style={style} />;\n case \"glow\":\n return <span className=\"dx-attn-halo\" style={style} />;\n case \"ring\":\n return <span className=\"dx-attn-orbit\" style={style} />;\n case \"shimmer\":\n case \"bounce\":\n case \"wiggle\":\n /* These draw no layer behind the child: shimmer's glint is the `over`\n layer, and bounce/wiggle move the wrapper itself. */\n return null;\n }\n}\n\nexport function Attention<const E extends AttentionEffects = \"ripple\">({\n children,\n shape = \"inherit\",\n effect,\n fill = false,\n contain = true,\n tone = \"accent\",\n speed = \"normal\",\n intensity = \"medium\",\n rings = 3,\n active = true,\n interval,\n block = false,\n className,\n style,\n ref,\n ...props\n}: AttentionProps<E>) {\n const root = useRef<HTMLElement | null>(null);\n\n /* Fading out, then gone. `stopping` is only ever true for the 520ms after an\n active -> inactive change; `wasActive` stops a wrapper that STARTS inactive\n from \"stopping\" something that never ran. */\n const [stopping, setStopping] = useState(false);\n const wasActive = useRef(active);\n useEffect(() => {\n if (active) {\n wasActive.current = true;\n setStopping(false);\n return;\n }\n if (!wasActive.current) return;\n wasActive.current = false;\n setStopping(true);\n const timer = setTimeout(() => setStopping(false), STOP_MS);\n return () => clearTimeout(timer);\n }, [active]);\n // I18N-ALLOW: state-machine token written to a data-state attribute\n const state = active ? \"on\" : stopping ? \"stopping\" : \"off\";\n\n const { effects, conflict } = resolveEffects(effect ?? \"ripple\");\n const conflictKey = conflict?.join(\"+\") ?? \"\";\n /* DX-4504 - refused loudly, once per mount or change of the list, not on every render. */\n useEffect(() => {\n if (!conflictKey) return;\n console.error(\n `Attention: effect ${conflictKey.split(\"+\").join(\" and \")} both move the control itself and cannot be ` +\n \"combined, so neither is drawn. Pick one.\",\n );\n }, [conflictKey]);\n\n if (interval !== undefined && !effects.some(isPeriodic)) {\n devWarn(\n \"Attention\",\n `\\`interval\\` does nothing for effect=\"${effects.join(\" \")}\" — it only sizes the rest between bursts of ` +\n \"beacon, shimmer, bounce and wiggle. Use `speed` for the others.\",\n );\n }\n\n const cycleOf = (one: AttentionEffect) => resolveTiming(one, speed, interval).cycleMs;\n /* The one effect that moves the wrapper, if any: its cycle is the wrapper's own `--attn-dur`. */\n const motion = effects.find((one) => one === \"bounce\" || one === \"wiggle\");\n const count = clampRings(rings);\n\n /* Everything the stylesheet cannot work out itself. Measured, not guessed:\n a wave's reach depends on the box it surrounds, and a CSS `calc()` cannot\n divide one length by another. Written straight to the element, so a resize\n re-measures without re-rendering and the numbers can never cause a layout\n shift of their own (they only feed `scale()`). */\n useLayoutEffect(() => {\n const el = root.current;\n if (!el) return;\n const measure = () => {\n const reach = resolveReach(el.offsetWidth, el.offsetHeight, intensity);\n if (reach) {\n el.style.setProperty(\"--attn-bw\", String(el.offsetWidth));\n el.style.setProperty(\"--attn-bh\", String(el.offsetHeight));\n el.style.setProperty(\"--attn-reach\", String(reach.reachPx));\n el.style.setProperty(\"--attn-diag\", `${reach.diagonal}px`);\n el.style.setProperty(\"--attn-rx\", String(reach.reachX));\n el.style.setProperty(\"--attn-ry\", String(reach.reachY));\n el.style.setProperty(\"--attn-sx\", String(reach.swellX));\n el.style.setProperty(\"--attn-sy\", String(reach.swellY));\n el.style.setProperty(\"--attn-tilt\", `${reach.tilt}deg`);\n el.style.setProperty(\"--attn-span\", `${Math.max(el.offsetWidth, el.offsetHeight)}px`);\n }\n if (shape === \"inherit\") {\n const child = Array.from(el.children).find((node) => !node.hasAttribute(\"data-attn-layer\"));\n const radius = child ? getComputedStyle(child).borderRadius : \"\";\n if (radius) el.style.setProperty(\"--attn-radius\", radius);\n else el.style.removeProperty(\"--attn-radius\");\n } else {\n el.style.removeProperty(\"--attn-radius\");\n }\n };\n measure();\n if (typeof ResizeObserver === \"undefined\") return;\n const observer = new ResizeObserver(measure);\n observer.observe(el);\n return () => observer.disconnect();\n });\n\n const setRef = (node: HTMLElement | null) => {\n root.current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) ref.current = node;\n };\n\n const Root = block ? \"div\" : \"span\";\n\n return (\n <Root\n ref={setRef}\n className={cn(\"dx-attn\", block && \"dx-attn-block\", className)}\n data-attn=\"\"\n data-shape={shape}\n data-effect={effects.join(\" \")}\n data-attn-conflict={conflict ? conflictKey : undefined}\n data-tone={tone}\n data-intensity={intensity}\n data-state={state}\n data-fill={fill ? \"\" : undefined}\n data-contain={contain ? \"\" : undefined}\n style={{ ...(motion ? { \"--attn-dur\": `${cycleOf(motion)}ms` } : {}), ...style } as CSSProperties}\n {...props}\n >\n {state !== \"off\" && (\n <span className=\"dx-attn-layers\" aria-hidden=\"true\" data-attn-layer=\"\">\n {fill && <span className=\"dx-attn-fill\" />}\n <span className=\"dx-attn-static\" />\n <span className=\"dx-attn-fx\">\n {effects.map((one) => (\n <EffectLayer key={one} effect={one} rings={count} cycleMs={cycleOf(one)} />\n ))}\n </span>\n </span>\n )}\n {children}\n {state !== \"off\" && effects.includes(\"shimmer\") && (\n <span className=\"dx-attn-over dx-attn-layers\" aria-hidden=\"true\" data-attn-layer=\"\">\n <span className=\"dx-attn-fx dx-attn-glint\" style={{ \"--attn-dur\": `${cycleOf(\"shimmer\")}ms` } as CSSProperties} />\n </span>\n )}\n </Root>\n );\n}\n"],"names":["STOP_MS","Waves","count","style","jsx","_","index","first","second","third","WAVE_REACH","EffectLayer","effect","rings","cycleMs","Attention","children","shape","fill","contain","tone","speed","intensity","active","interval","block","className","ref","props","root","useRef","stopping","setStopping","useState","wasActive","useEffect","timer","state","effects","conflict","resolveEffects","conflictKey","isPeriodic","devWarn","cycleOf","one","resolveTiming","motion","clampRings","useLayoutEffect","el","measure","reach","resolveReach","child","node","radius","observer","jsxs","cn"],"mappings":";;;;;AAoLA,MAAMA,IAAU;AAGhB,SAASC,EAAM,EAAE,OAAAC,GAAO,OAAAC,KAAkD;AACxE,SACE,gBAAAC,EAAC,QAAA,EAAK,WAAU,mBAAkB,OAAAD,GAC/B,UAAA,MAAM,KAAK,EAAE,QAAQD,EAAA,GAAS,CAACG,GAAGC,MAAU;AAC3C,UAAM,CAACC,GAAOC,GAAQC,CAAK,IAAIC,EAAWJ,CAAK;AAC/C,WACE,gBAAAF;AAAA,MAAC;AAAA,MAAA;AAAA,QAEC,WAAU;AAAA,QACV,OACE;AAAA,UACE,OAAOE;AAAA,UACP,QAAQC;AAAA,UACR,QAAQC;AAAA,UACR,QAAQC;AAAA,QAAA;AAAA,MACV;AAAA,MARGH;AAAA,IAAA;AAAA,EAYX,CAAC,EAAA,CACH;AAEJ;AAGA,SAASK,EAAY,EAAE,QAAAC,GAAQ,OAAAC,GAAO,SAAAC,KAAwE;AAC5G,QAAMX,IAAQ,EAAE,cAAc,GAAGW,CAAO,KAAA;AACxC,UAAQF,GAAA;AAAA,IACN,KAAK;AACH,aAAO,gBAAAR,EAACH,GAAA,EAAM,OAAOY,GAAO,OAAO,EAAE,GAAGV,GAAO,YAAYU,EAAA,EAAM,CAAoB;AAAA,IACvF,KAAK;AACH,aAAO,gBAAAT,EAAC,QAAA,EAAK,WAAU,gBAAe,OAAAD,EAAA,CAAc;AAAA,IACtD,KAAK;AACH,aAAO,gBAAAC,EAAC,QAAA,EAAK,WAAU,kBAAiB,OAAAD,EAAA,CAAc;AAAA,IACxD,KAAK;AACH,aAAO,gBAAAC,EAAC,QAAA,EAAK,WAAU,gBAAe,OAAAD,EAAA,CAAc;AAAA,IACtD,KAAK;AACH,aAAO,gBAAAC,EAAC,QAAA,EAAK,WAAU,iBAAgB,OAAAD,EAAA,CAAc;AAAA,IACvD,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAGH,aAAO;AAAA,EAAA;AAEb;AAEO,SAASY,GAAuD;AAAA,EACrE,UAAAC;AAAA,EACA,OAAAC,IAAQ;AAAA,EACR,QAAAL;AAAA,EACA,MAAAM,IAAO;AAAA,EACP,SAAAC,IAAU;AAAA,EACV,MAAAC,IAAO;AAAA,EACP,OAAAC,IAAQ;AAAA,EACR,WAAAC,IAAY;AAAA,EACZ,OAAAT,IAAQ;AAAA,EACR,QAAAU,IAAS;AAAA,EACT,UAAAC;AAAA,EACA,OAAAC,IAAQ;AAAA,EACR,WAAAC;AAAA,EACA,OAAAvB;AAAA,EACA,KAAAwB;AAAA,EACA,GAAGC;AACL,GAAsB;AACpB,QAAMC,IAAOC,EAA2B,IAAI,GAKtC,CAACC,GAAUC,CAAW,IAAIC,EAAS,EAAK,GACxCC,IAAYJ,EAAOP,CAAM;AAC/B,EAAAY,EAAU,MAAM;AACd,QAAIZ,GAAQ;AACV,MAAAW,EAAU,UAAU,IACpBF,EAAY,EAAK;AACjB;AAAA,IACF;AACA,QAAI,CAACE,EAAU,QAAS;AACxB,IAAAA,EAAU,UAAU,IACpBF,EAAY,EAAI;AAChB,UAAMI,IAAQ,WAAW,MAAMJ,EAAY,EAAK,GAAGhC,CAAO;AAC1D,WAAO,MAAM,aAAaoC,CAAK;AAAA,EACjC,GAAG,CAACb,CAAM,CAAC;AAEX,QAAMc,IAAQd,IAAS,OAAOQ,IAAW,aAAa,OAEhD,EAAE,SAAAO,GAAS,UAAAC,EAAA,IAAaC,EAAe5B,KAAU,QAAQ,GACzD6B,IAAcF,GAAU,KAAK,GAAG,KAAK;AAE3C,EAAAJ,EAAU,MAAM;AACd,IAAKM,KACL,QAAQ;AAAA,MACN,qBAAqBA,EAAY,MAAM,GAAG,EAAE,KAAK,OAAO,CAAC;AAAA,IAAA;AAAA,EAG7D,GAAG,CAACA,CAAW,CAAC,GAEZjB,MAAa,UAAa,CAACc,EAAQ,KAAKI,CAAU,KACpDC;AAAA,IACE;AAAA,IACA,yCAAyCL,EAAQ,KAAK,GAAG,CAAC;AAAA,EAAA;AAK9D,QAAMM,IAAU,CAACC,MAAyBC,EAAcD,GAAKxB,GAAOG,CAAQ,EAAE,SAExEuB,IAAST,EAAQ,KAAK,CAACO,MAAQA,MAAQ,YAAYA,MAAQ,QAAQ,GACnE3C,IAAQ8C,EAAWnC,CAAK;AAO9B,SAAAoC,EAAgB,MAAM;AACpB,UAAMC,IAAKrB,EAAK;AAChB,QAAI,CAACqB,EAAI;AACT,UAAMC,IAAU,MAAM;AACpB,YAAMC,IAAQC,EAAaH,EAAG,aAAaA,EAAG,cAAc5B,CAAS;AAarE,UAZI8B,MACFF,EAAG,MAAM,YAAY,aAAa,OAAOA,EAAG,WAAW,CAAC,GACxDA,EAAG,MAAM,YAAY,aAAa,OAAOA,EAAG,YAAY,CAAC,GACzDA,EAAG,MAAM,YAAY,gBAAgB,OAAOE,EAAM,OAAO,CAAC,GAC1DF,EAAG,MAAM,YAAY,eAAe,GAAGE,EAAM,QAAQ,IAAI,GACzDF,EAAG,MAAM,YAAY,aAAa,OAAOE,EAAM,MAAM,CAAC,GACtDF,EAAG,MAAM,YAAY,aAAa,OAAOE,EAAM,MAAM,CAAC,GACtDF,EAAG,MAAM,YAAY,aAAa,OAAOE,EAAM,MAAM,CAAC,GACtDF,EAAG,MAAM,YAAY,aAAa,OAAOE,EAAM,MAAM,CAAC,GACtDF,EAAG,MAAM,YAAY,eAAe,GAAGE,EAAM,IAAI,KAAK,GACtDF,EAAG,MAAM,YAAY,eAAe,GAAG,KAAK,IAAIA,EAAG,aAAaA,EAAG,YAAY,CAAC,IAAI,IAElFjC,MAAU,WAAW;AACvB,cAAMqC,IAAQ,MAAM,KAAKJ,EAAG,QAAQ,EAAE,KAAK,CAACK,MAAS,CAACA,EAAK,aAAa,iBAAiB,CAAC,GACpFC,IAASF,IAAQ,iBAAiBA,CAAK,EAAE,eAAe;AAC9D,QAAIE,IAAQN,EAAG,MAAM,YAAY,iBAAiBM,CAAM,IACnDN,EAAG,MAAM,eAAe,eAAe;AAAA,MAC9C;AACE,QAAAA,EAAG,MAAM,eAAe,eAAe;AAAA,IAE3C;AAEA,QADAC,EAAA,GACI,OAAO,iBAAmB,IAAa;AAC3C,UAAMM,IAAW,IAAI,eAAeN,CAAO;AAC3C,WAAAM,EAAS,QAAQP,CAAE,GACZ,MAAMO,EAAS,WAAA;AAAA,EACxB,CAAC,GAWC,gBAAAC;AAAA,IAHWjC,IAAQ,QAAQ;AAAA,IAG1B;AAAA,MACC,KAVW,CAAC8B,MAA6B;AAC3C,QAAA1B,EAAK,UAAU0B,GACX,OAAO5B,KAAQ,aAAYA,EAAI4B,CAAI,IAC9B5B,QAAS,UAAU4B;AAAA,MAC9B;AAAA,MAOI,WAAWI,EAAG,WAAWlC,KAAS,iBAAiBC,CAAS;AAAA,MAC5D,aAAU;AAAA,MACV,cAAYT;AAAA,MACZ,eAAaqB,EAAQ,KAAK,GAAG;AAAA,MAC7B,sBAAoBC,IAAWE,IAAc;AAAA,MAC7C,aAAWrB;AAAA,MACX,kBAAgBE;AAAA,MAChB,cAAYe;AAAA,MACZ,aAAWnB,IAAO,KAAK;AAAA,MACvB,gBAAcC,IAAU,KAAK;AAAA,MAC7B,OAAO,EAAE,GAAI4B,IAAS,EAAE,cAAc,GAAGH,EAAQG,CAAM,CAAC,KAAA,IAAS,CAAA,GAAK,GAAG5C,EAAA;AAAA,MACxE,GAAGyB;AAAA,MAEH,UAAA;AAAA,QAAAS,MAAU,2BACR,QAAA,EAAK,WAAU,kBAAiB,eAAY,QAAO,mBAAgB,IACjE,UAAA;AAAA,UAAAnB,KAAQ,gBAAAd,EAAC,QAAA,EAAK,WAAU,eAAA,CAAe;AAAA,UACxC,gBAAAA,EAAC,QAAA,EAAK,WAAU,iBAAA,CAAiB;AAAA,UACjC,gBAAAA,EAAC,UAAK,WAAU,cACb,YAAQ,IAAI,CAACyC,MACZ,gBAAAzC,EAACO,GAAA,EAAsB,QAAQkC,GAAK,OAAO3C,GAAO,SAAS0C,EAAQC,CAAG,EAAA,GAApDA,CAAuD,CAC1E,EAAA,CACH;AAAA,QAAA,GACF;AAAA,QAED7B;AAAA,QACAqB,MAAU,SAASC,EAAQ,SAAS,SAAS,KAC5C,gBAAAlC,EAAC,QAAA,EAAK,WAAU,+BAA8B,eAAY,QAAO,mBAAgB,IAC/E,UAAA,gBAAAA,EAAC,QAAA,EAAK,WAAU,4BAA2B,OAAO,EAAE,cAAc,GAAGwC,EAAQ,SAAS,CAAC,KAAA,EAAK,CAAoB,EAAA,CAClH;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR;"}
@@ -0,0 +1,99 @@
1
+ import { jsxs as d, jsx as g } from "react/jsx-runtime";
2
+ import { Avatar as f } from "@base-ui/react/avatar";
3
+ import { tv as x } from "tailwind-variants";
4
+ import { cn as n } from "../lib/cn.js";
5
+ import { useUiStrings as h } from "../lib/i18n/provider.js";
6
+ const b = x({
7
+ slots: {
8
+ root: [
9
+ "relative inline-flex shrink-0 items-center justify-center overflow-hidden",
10
+ "rounded-full bg-surface-inset align-middle select-none"
11
+ ],
12
+ image: "size-full object-cover",
13
+ fallback: "font-display font-semibold uppercase",
14
+ status: [
15
+ "absolute right-0 bottom-0 rounded-full",
16
+ /* The ring is the CANVAS colour, not a border, so the dot reads as
17
+ punched through the avatar rather than stuck on top of it. */
18
+ "ring-2 ring-canvas"
19
+ ]
20
+ },
21
+ variants: {
22
+ size: {
23
+ xs: { root: "size-6", fallback: "text-2xs", status: "size-1.5" },
24
+ sm: { root: "size-8", fallback: "text-xs", status: "size-2" },
25
+ md: { root: "size-10", fallback: "text-sm", status: "size-2.5" },
26
+ lg: { root: "size-12", fallback: "text-md", status: "size-3" },
27
+ xl: { root: "size-16", fallback: "text-xl", status: "size-3.5" }
28
+ },
29
+ shape: {
30
+ circle: { root: "rounded-full" },
31
+ /* Squircle, for entities rather than people — a repo, a board, a bot. */
32
+ rounded: { root: "rounded-lg" }
33
+ }
34
+ },
35
+ defaultVariants: { size: "md", shape: "circle" }
36
+ }), m = [
37
+ "bg-accent-subtle text-accent-text",
38
+ "bg-brand-subtle text-brand-text",
39
+ "bg-success-subtle text-success-text",
40
+ "bg-warning-subtle text-warning-text",
41
+ "bg-danger-subtle text-danger-text",
42
+ "bg-info-subtle text-info-text"
43
+ ];
44
+ function p(e) {
45
+ let t = 0;
46
+ for (let s = 0; s < e.length; s++) t = t * 31 + e.charCodeAt(s) >>> 0;
47
+ return m[t % m.length];
48
+ }
49
+ function v(e) {
50
+ const t = e.trim().split(/\s+/).filter(Boolean);
51
+ return t.length ? t.length === 1 ? t[0][0] : t[0][0] + t[t.length - 1][0] : "?";
52
+ }
53
+ const z = {
54
+ online: "bg-success",
55
+ busy: "bg-danger",
56
+ away: "bg-warning",
57
+ offline: "bg-border-strong"
58
+ };
59
+ function T({ src: e, name: t, fallback: s, status: r, size: i, shape: l, className: o, ref: c }) {
60
+ const a = b({ size: i, shape: l }), u = h().avatar;
61
+ return /* @__PURE__ */ d(f.Root, { ref: c, className: n(a.root(), o), children: [
62
+ e && /* @__PURE__ */ g(f.Image, { src: e, alt: t, className: a.image() }),
63
+ /* @__PURE__ */ g(f.Fallback, { className: n(a.fallback(), "grid size-full place-items-center", p(t)), children: s ?? v(t) }),
64
+ r && /* @__PURE__ */ g("span", { className: n(a.status(), z[r]), "aria-label": u.status[r], role: "img" })
65
+ ] });
66
+ }
67
+ function j({ children: e, max: t = 4, size: s = "md", className: r }) {
68
+ const i = Array.isArray(e) ? e : [e], l = i.slice(0, t), o = i.length - l.length, c = b({ size: s });
69
+ return /* @__PURE__ */ d("div", { className: n("flex items-center", r), children: [
70
+ l.map((a, u) => /* @__PURE__ */ g(
71
+ "span",
72
+ {
73
+ className: "relative -ml-2 rounded-full ring-2 ring-canvas first:ml-0",
74
+ style: { zIndex: l.length - u },
75
+ children: a
76
+ },
77
+ u
78
+ )),
79
+ o > 0 && /* @__PURE__ */ d(
80
+ "span",
81
+ {
82
+ className: n(
83
+ c.root(),
84
+ c.fallback(),
85
+ "relative -ml-2 bg-surface-raised text-tertiary ring-2 ring-canvas"
86
+ ),
87
+ children: [
88
+ "+",
89
+ o
90
+ ]
91
+ }
92
+ )
93
+ ] });
94
+ }
95
+ export {
96
+ T as Avatar,
97
+ j as AvatarGroup
98
+ };
99
+ //# sourceMappingURL=Avatar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Avatar.js","sources":["../../src/components/Avatar.tsx"],"sourcesContent":["import type { ReactNode, Ref } from \"react\";\nimport { Avatar as BaseAvatar } from \"@base-ui/react/avatar\";\nimport { tv, type VariantProps } from \"tailwind-variants\";\nimport { cn } from \"../lib/cn\";\nimport { useUiStrings } from \"../lib/i18n\";\n\n/* ----------------------------------------------------------------------------\n AVATAR\n\n The fallback is the whole component. Images fail — slow networks, dead CDNs,\n users who never uploaded one — and an avatar that collapses to a broken-image\n glyph or an empty circle wrecks the alignment of every row it sits in.\n\n INITIALS ARE DERIVED, AND THE COLOUR IS DETERMINISTIC. Hashing the name to a\n hue means the same person is the same colour everywhere in the app, every\n session, with nothing stored. Random colours would make the fallback change\n identity on every reload, which is worse than grey.\n\n Hues are drawn from the system's own accent ramps rather than free-running\n HSL, so a wall of fallbacks still looks like this product.\n -------------------------------------------------------------------------- */\n\nconst avatar = tv({\n slots: {\n root: [\n \"relative inline-flex shrink-0 items-center justify-center overflow-hidden\",\n \"rounded-full bg-surface-inset align-middle select-none\",\n ],\n image: \"size-full object-cover\",\n fallback: \"font-display font-semibold uppercase\",\n status: [\n \"absolute right-0 bottom-0 rounded-full\",\n /* The ring is the CANVAS colour, not a border, so the dot reads as\n punched through the avatar rather than stuck on top of it. */\n \"ring-2 ring-canvas\",\n ],\n },\n variants: {\n size: {\n xs: { root: \"size-6\", fallback: \"text-2xs\", status: \"size-1.5\" },\n sm: { root: \"size-8\", fallback: \"text-xs\", status: \"size-2\" },\n md: { root: \"size-10\", fallback: \"text-sm\", status: \"size-2.5\" },\n lg: { root: \"size-12\", fallback: \"text-md\", status: \"size-3\" },\n xl: { root: \"size-16\", fallback: \"text-xl\", status: \"size-3.5\" },\n },\n shape: {\n circle: { root: \"rounded-full\" },\n /* Squircle, for entities rather than people — a repo, a board, a bot. */\n rounded: { root: \"rounded-lg\" },\n },\n },\n defaultVariants: { size: \"md\", shape: \"circle\" },\n});\n\n/** Fallback palettes, drawn from the system ramps so a wall of them coheres. */\nconst TINTS = [\n \"bg-accent-subtle text-accent-text\",\n \"bg-brand-subtle text-brand-text\",\n \"bg-success-subtle text-success-text\",\n \"bg-warning-subtle text-warning-text\",\n \"bg-danger-subtle text-danger-text\",\n \"bg-info-subtle text-info-text\",\n];\n\n/** Stable hash — the same name always lands on the same tint. */\nfunction tintFor(seed: string): string {\n let hash = 0;\n for (let i = 0; i < seed.length; i++) hash = (hash * 31 + seed.charCodeAt(i)) >>> 0;\n return TINTS[hash % TINTS.length];\n}\n\n/**\n * First letters of the first and last words.\n *\n * Deliberately not \"first two characters\": \"Dan Newman\" should be DN, not DA.\n * Single words give one letter rather than two, because the second letter of a\n * word carries no identity — \"kestrel\" reads better as K than as KE.\n */\nfunction initialsFor(name: string): string {\n const words = name.trim().split(/\\s+/).filter(Boolean);\n if (!words.length) return \"?\";\n if (words.length === 1) return words[0][0];\n return words[0][0] + words[words.length - 1][0];\n}\n\nexport type AvatarStatus = \"online\" | \"busy\" | \"away\" | \"offline\";\n\nconst STATUS_TONE: Record<AvatarStatus, string> = {\n online: \"bg-success\",\n busy: \"bg-danger\",\n away: \"bg-warning\",\n offline: \"bg-border-strong\",\n};\n\nexport interface AvatarProps extends VariantProps<typeof avatar> {\n src?: string;\n /** Drives the initials, the fallback tint, and the accessible name. */\n name: string;\n /** Overrides the derived initials — for an icon, or a custom mark. */\n fallback?: ReactNode;\n status?: AvatarStatus;\n className?: string;\n ref?: Ref<HTMLSpanElement>;\n}\n\nexport function Avatar({ src, name, fallback, status, size, shape, className, ref }: AvatarProps) {\n const s = avatar({ size, shape });\n const strings = useUiStrings().avatar;\n\n return (\n <BaseAvatar.Root ref={ref} className={cn(s.root(), className)}>\n {src && <BaseAvatar.Image src={src} alt={name} className={s.image()} />}\n <BaseAvatar.Fallback className={cn(s.fallback(), \"grid size-full place-items-center\", tintFor(name))}>\n {fallback ?? initialsFor(name)}\n </BaseAvatar.Fallback>\n {status && (\n <span className={cn(s.status(), STATUS_TONE[status])} aria-label={strings.status[status]} role=\"img\" />\n )}\n </BaseAvatar.Root>\n );\n}\n\nexport interface AvatarGroupProps {\n children: ReactNode;\n /** Show at most this many, then a +N chip. */\n max?: number;\n size?: VariantProps<typeof avatar>[\"size\"];\n className?: string;\n}\n\n/**\n * Overlapping avatars with an overflow count.\n *\n * The stack order is REVERSED so earlier avatars sit on top of later ones.\n * Left-to-right overlap with natural order puts each avatar's face under its\n * neighbour, which is exactly the half you need to see.\n */\nexport function AvatarGroup({ children, max = 4, size = \"md\", className }: AvatarGroupProps) {\n const items = Array.isArray(children) ? children : [children];\n const shown = items.slice(0, max);\n const overflow = items.length - shown.length;\n const s = avatar({ size });\n\n return (\n <div className={cn(\"flex items-center\", className)}>\n {shown.map((child, i) => (\n <span\n key={i}\n className=\"relative -ml-2 rounded-full ring-2 ring-canvas first:ml-0\"\n style={{ zIndex: shown.length - i }}\n >\n {child}\n </span>\n ))}\n {overflow > 0 && (\n <span\n className={cn(\n s.root(),\n s.fallback(),\n \"relative -ml-2 bg-surface-raised text-tertiary ring-2 ring-canvas\",\n )}\n >\n +{overflow}\n </span>\n )}\n </div>\n );\n}\n"],"names":["avatar","tv","TINTS","tintFor","seed","hash","i","initialsFor","name","words","STATUS_TONE","Avatar","src","fallback","status","size","shape","className","ref","s","strings","useUiStrings","jsxs","BaseAvatar","cn","jsx","AvatarGroup","children","max","items","shown","overflow","child"],"mappings":"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"}
@@ -0,0 +1,143 @@
1
+ import { jsxs as c, jsx as n } from "react/jsx-runtime";
2
+ import { tv as _ } from "tailwind-variants";
3
+ import { cn as o } from "../lib/cn.js";
4
+ import { Icon as h } from "./Icon.js";
5
+ const e = {
6
+ neutral: "text-secondary",
7
+ accent: "text-accent-text",
8
+ brand: "text-brand-text",
9
+ success: "text-success-text",
10
+ warning: "text-warning-text",
11
+ danger: "text-danger-text",
12
+ orange: "text-orange-text",
13
+ info: "text-info-text",
14
+ muted: "text-muted-text"
15
+ }, w = `border-border bg-surface-raised ${e.neutral}`, N = _({
16
+ base: [
17
+ "inline-flex max-w-full items-center gap-1.5 whitespace-nowrap font-semibold",
18
+ "border transition-colors duration-(--dur-fast)"
19
+ ],
20
+ variants: {
21
+ tone: {
22
+ neutral: w,
23
+ accent: ["border-accent-border bg-accent-subtle", e.accent],
24
+ brand: ["border-transparent bg-brand-subtle", e.brand],
25
+ success: ["border-success-border bg-success-subtle", e.success],
26
+ warning: ["border-warning-border bg-warning-subtle", e.warning],
27
+ danger: ["border-danger-border bg-danger-subtle", e.danger],
28
+ // DX-4657 - between `warning` (amber) and `danger` (red): a "hold" that is worse than a caution and not yet a stop.
29
+ orange: ["border-orange-border bg-orange-subtle", e.orange],
30
+ info: ["border-info-border bg-info-subtle", e.info],
31
+ // DX-3662 — the 8th tone, a quieter grey for a closed/inert fact.
32
+ // See `authored.css`'s own `--color-muted` comment for why this is a
33
+ // second grey rather than reusing `neutral`.
34
+ muted: ["border-muted-border bg-muted-subtle", e.muted]
35
+ },
36
+ size: {
37
+ sm: "h-5 rounded-sm px-1.5 text-2xs",
38
+ md: "h-6 rounded-md px-2 text-xs",
39
+ lg: "h-7 rounded-md px-2.5 text-sm"
40
+ },
41
+ /* A filled dot carries status without relying on hue alone, which is what
42
+ keeps "success" and "danger" distinguishable for a red-green colour
43
+ deficiency — the most common one. */
44
+ dot: { true: "", false: "" }
45
+ },
46
+ defaultVariants: { tone: "neutral", size: "md", dot: !1 }
47
+ }), y = [
48
+ "border-[color:color-mix(in_oklab,var(--badge-color)_45%,transparent)]",
49
+ "bg-[color:color-mix(in_oklab,var(--badge-color)_16%,transparent)]",
50
+ "text-[color:color-mix(in_oklab,var(--badge-color)_72%,var(--color-primary))]"
51
+ ], l = {
52
+ neutral: "bg-tertiary",
53
+ accent: "bg-accent",
54
+ brand: "bg-brand",
55
+ success: "bg-success",
56
+ warning: "bg-warning",
57
+ danger: "bg-danger",
58
+ orange: "bg-orange",
59
+ info: "bg-info",
60
+ muted: "bg-muted"
61
+ };
62
+ function k({
63
+ className: b,
64
+ tone: t = "neutral",
65
+ size: s,
66
+ dot: i,
67
+ icon: u,
68
+ pulse: g,
69
+ dismiss: a,
70
+ color: r,
71
+ style: d,
72
+ children: x,
73
+ ref: m,
74
+ ...p
75
+ }) {
76
+ if (r !== void 0 && t !== "neutral")
77
+ throw new Error(`Badge: tone "${t}" and a custom color were both given. A custom color replaces the tone; pass one.`);
78
+ function f(v) {
79
+ v.stopPropagation(), a?.onDismiss();
80
+ }
81
+ return /* @__PURE__ */ c(
82
+ "span",
83
+ {
84
+ ref: m,
85
+ className: o(N({ tone: t, size: s, dot: i }), r !== void 0 && y, a && "pr-1", b),
86
+ style: r === void 0 ? d : { "--badge-color": r, ...d },
87
+ ...p,
88
+ children: [
89
+ i && /* @__PURE__ */ c("span", { className: "relative flex size-1.5", "aria-hidden": !0, children: [
90
+ g && /* The halo expands and fades UNDER a solid core that never moves.
91
+ Animating the dot itself would make the badge's baseline shift;
92
+ a separate expanding layer keeps the text perfectly still while
93
+ the status still reads as alive from across a room. */
94
+ /* @__PURE__ */ n(
95
+ "span",
96
+ {
97
+ className: o(
98
+ "absolute inline-flex size-full rounded-full opacity-70",
99
+ "[animation:dx-ping_1.6s_var(--ease-out-strong)_infinite]",
100
+ r === void 0 ? l[t ?? "neutral"] : "bg-(--badge-color)"
101
+ )
102
+ }
103
+ ),
104
+ /* @__PURE__ */ n(
105
+ "span",
106
+ {
107
+ className: o("relative inline-flex size-1.5 rounded-full", r === void 0 ? l[t ?? "neutral"] : "bg-(--badge-color)")
108
+ }
109
+ )
110
+ ] }),
111
+ u,
112
+ /* @__PURE__ */ n("span", { className: "min-w-0 truncate", children: x }),
113
+ a && /* @__PURE__ */ n(
114
+ "button",
115
+ {
116
+ type: "button",
117
+ onClick: f,
118
+ "aria-label": a.label,
119
+ className: o(
120
+ /* `-mr-0.5` pulls it back into the padding the pill already has, so
121
+ a chip is not visibly wider than the same badge without one — a
122
+ filter row where the removable chips are taller or fatter than
123
+ the static ones reads as two different components. */
124
+ "dx-tap -mr-0.5 grid shrink-0 cursor-pointer place-items-center rounded-full",
125
+ "text-current opacity-60 outline-none",
126
+ "transition-[var(--tx-colors),opacity] duration-(--dur-fast)",
127
+ "hover:bg-current/15 hover:opacity-100",
128
+ "focus-visible:opacity-100 focus-visible:shadow-[0_0_0_2px_var(--focus-halo)]",
129
+ s === "lg" ? "size-5" : s === "sm" ? "size-3.5" : "size-4"
130
+ ),
131
+ children: /* @__PURE__ */ n(h, { name: "x", size: "xs" })
132
+ }
133
+ )
134
+ ]
135
+ }
136
+ );
137
+ }
138
+ export {
139
+ w as BADGE_NEUTRAL_TONE,
140
+ e as BADGE_TONE_TEXT,
141
+ k as Badge
142
+ };
143
+ //# sourceMappingURL=Badge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Badge.js","sources":["../../src/components/Badge.tsx"],"sourcesContent":["import type { CSSProperties, HTMLAttributes, MouseEvent, ReactNode, Ref } from \"react\";\nimport { tv, type VariantProps } from \"tailwind-variants\";\nimport { cn } from \"../lib/cn\";\nimport { Icon } from \"./Icon\";\n\n/**\n * The text colour of each tone, by itself: the badge's own, and the tint of an icon that wears a badge's tone without being a badge\n * (`FilterMenu`'s option icons, DX-5374). One map so a tone is the same colour wherever it is drawn.\n */\nexport const BADGE_TONE_TEXT = {\n neutral: \"text-secondary\",\n accent: \"text-accent-text\",\n brand: \"text-brand-text\",\n success: \"text-success-text\",\n warning: \"text-warning-text\",\n danger: \"text-danger-text\",\n orange: \"text-orange-text\",\n info: \"text-info-text\",\n muted: \"text-muted-text\",\n} as const;\n\n/** The neutral tone's border, wash and text as one class string (DX-6445), for a component that draws a neutral-badge look without being a `Badge` (`IconButton`'s gray comment count). Pair it with a `border` width. */\nexport const BADGE_NEUTRAL_TONE = `border-border bg-surface-raised ${BADGE_TONE_TEXT.neutral}`;\n\nconst badge = tv({\n base: [\n \"inline-flex max-w-full items-center gap-1.5 whitespace-nowrap font-semibold\",\n \"border transition-colors duration-(--dur-fast)\",\n ],\n variants: {\n tone: {\n neutral: BADGE_NEUTRAL_TONE,\n accent: [\"border-accent-border bg-accent-subtle\", BADGE_TONE_TEXT.accent],\n brand: [\"border-transparent bg-brand-subtle\", BADGE_TONE_TEXT.brand],\n success: [\"border-success-border bg-success-subtle\", BADGE_TONE_TEXT.success],\n warning: [\"border-warning-border bg-warning-subtle\", BADGE_TONE_TEXT.warning],\n danger: [\"border-danger-border bg-danger-subtle\", BADGE_TONE_TEXT.danger],\n // DX-4657 - between `warning` (amber) and `danger` (red): a \"hold\" that is worse than a caution and not yet a stop.\n orange: [\"border-orange-border bg-orange-subtle\", BADGE_TONE_TEXT.orange],\n info: [\"border-info-border bg-info-subtle\", BADGE_TONE_TEXT.info],\n // DX-3662 — the 8th tone, a quieter grey for a closed/inert fact.\n // See `authored.css`'s own `--color-muted` comment for why this is a\n // second grey rather than reusing `neutral`.\n muted: [\"border-muted-border bg-muted-subtle\", BADGE_TONE_TEXT.muted],\n },\n size: {\n sm: \"h-5 rounded-sm px-1.5 text-2xs\",\n md: \"h-6 rounded-md px-2 text-xs\",\n lg: \"h-7 rounded-md px-2.5 text-sm\",\n },\n /* A filled dot carries status without relying on hue alone, which is what\n keeps \"success\" and \"danger\" distinguishable for a red-green colour\n deficiency — the most common one. */\n dot: { true: \"\", false: \"\" },\n },\n defaultVariants: { tone: \"neutral\", size: \"md\", dot: false },\n});\n\n/* DX-5143: the three colours of a `color` badge, all derived from `--badge-color`. `color:` hints tell tailwind-merge these are colours (not border widths), so they replace the neutral tone's. */\nconst CUSTOM_COLOR = [\n \"border-[color:color-mix(in_oklab,var(--badge-color)_45%,transparent)]\",\n \"bg-[color:color-mix(in_oklab,var(--badge-color)_16%,transparent)]\",\n \"text-[color:color-mix(in_oklab,var(--badge-color)_72%,var(--color-primary))]\",\n];\n\nconst DOT_TONE: Record<string, string> = {\n neutral: \"bg-tertiary\",\n accent: \"bg-accent\",\n brand: \"bg-brand\",\n success: \"bg-success\",\n warning: \"bg-warning\",\n danger: \"bg-danger\",\n orange: \"bg-orange\",\n info: \"bg-info\",\n muted: \"bg-muted\",\n};\n\n/**\n * What a badge needs in order to be removable, in one object.\n *\n * ONE PROP RATHER THAN TWO, and the label being a required FIELD is the point:\n * a dismiss control with no accessible name is not expressible. An icon carries\n * no text, and a row of filter chips is exactly where \"Remove\" spoken five\n * times distinguishes nothing — the same argument that makes `IconButton.label`\n * required. `SettingRow`'s `readOnly: { reason }` uses the same shape for the\n * same reason: an explanation that is part of the type cannot be forgotten.\n *\n * Name what it removes (\"Remove the infra filter\"), not the picture (\"Close\").\n */\nexport interface BadgeDismiss {\n label: string;\n onDismiss: () => void;\n}\n\nexport interface BadgeProps\n extends HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof badge> {\n icon?: ReactNode;\n /**\n * DX-5143 - a CSS colour (hex, `rgb()`, `oklch()`, a `var()`) the badge is drawn in, for a colour the consuming app lets a person\n * choose (a board list's colour) and so cannot be one of the fixed `tone`s. The border, wash and text are all derived from it,\n * the text pulled toward the primary text colour so a pale colour stays legible on a light theme. It replaces `tone`'s colours;\n * pass one or the other, never both.\n */\n color?: string;\n /**\n * Makes the badge a chip you can take off — a trailing × after the label.\n *\n * Absent means a plain label, which is what every existing badge is: an ×\n * nobody asked for is a destructive control appearing inside a caption.\n *\n * NOT FOR A BADGE INSIDE A BUTTON. `StatusSelect` renders its Badge as the\n * body of a trigger, and a `<button>` inside a `<button>` is invalid and\n * unreachable by keyboard. A dismissible badge belongs on a surface, not in\n * a control.\n */\n dismiss?: BadgeDismiss;\n /**\n * Ping the dot outward — for genuinely LIVE states only (running, connected,\n * streaming). A pulse on a static label is the badge equivalent of a blinking\n * tag: it captures attention permanently and therefore stops meaning\n * anything.\n */\n pulse?: boolean;\n ref?: Ref<HTMLSpanElement>;\n}\n\nexport function Badge({\n className,\n tone = \"neutral\",\n size,\n dot,\n icon,\n pulse,\n dismiss,\n color,\n style,\n children,\n ref,\n ...props\n}: BadgeProps) {\n if (color !== undefined && tone !== \"neutral\") {\n throw new Error(`Badge: tone \"${tone}\" and a custom color were both given. A custom color replaces the tone; pass one.`);\n }\n function handleDismiss(event: MouseEvent<HTMLButtonElement>) {\n /* A chip usually sits on something clickable — a table row, a card. Taking\n the chip off must not also open the record it was describing. Safe here\n in a way it would not be on a full-card trigger: this really is a nested\n button and there is no keyboard path that reaches the surface without\n going through it. */\n event.stopPropagation();\n dismiss?.onDismiss();\n }\n\n return (\n <span\n ref={ref}\n className={cn(badge({ tone, size, dot }), color !== undefined && CUSTOM_COLOR, dismiss && \"pr-1\", className)}\n style={color === undefined ? style : ({ \"--badge-color\": color, ...style } as CSSProperties)}\n {...props}\n >\n {dot && (\n <span className=\"relative flex size-1.5\" aria-hidden>\n {pulse && (\n /* The halo expands and fades UNDER a solid core that never moves.\n Animating the dot itself would make the badge's baseline shift;\n a separate expanding layer keeps the text perfectly still while\n the status still reads as alive from across a room. */\n <span\n className={cn(\n \"absolute inline-flex size-full rounded-full opacity-70\",\n \"[animation:dx-ping_1.6s_var(--ease-out-strong)_infinite]\",\n color === undefined ? DOT_TONE[tone ?? \"neutral\"] : \"bg-(--badge-color)\",\n )}\n />\n )}\n <span\n className={cn(\"relative inline-flex size-1.5 rounded-full\", color === undefined ? DOT_TONE[tone ?? \"neutral\"] : \"bg-(--badge-color)\")}\n />\n </span>\n )}\n {icon}\n {/* DX-4449: a badge never wraps, so a label longer than its container is ellipsised (the wrapper is the flex item that can shrink) instead of running past the card. */}\n <span className=\"min-w-0 truncate\">{children}</span>\n {dismiss && (\n <button\n type=\"button\"\n onClick={handleDismiss}\n aria-label={dismiss.label}\n className={cn(\n /* `-mr-0.5` pulls it back into the padding the pill already has, so\n a chip is not visibly wider than the same badge without one — a\n filter row where the removable chips are taller or fatter than\n the static ones reads as two different components. */\n \"dx-tap -mr-0.5 grid shrink-0 cursor-pointer place-items-center rounded-full\",\n \"text-current opacity-60 outline-none\",\n \"transition-[var(--tx-colors),opacity] duration-(--dur-fast)\",\n \"hover:bg-current/15 hover:opacity-100\",\n \"focus-visible:opacity-100 focus-visible:shadow-[0_0_0_2px_var(--focus-halo)]\",\n size === \"lg\" ? \"size-5\" : size === \"sm\" ? \"size-3.5\" : \"size-4\",\n )}\n >\n {/* `aria-hidden` via `Icon`'s own default — the name is on the\n button, and an icon that also announced would say it twice. */}\n <Icon name=\"x\" size=\"xs\" />\n </button>\n )}\n </span>\n );\n}\n"],"names":["BADGE_TONE_TEXT","BADGE_NEUTRAL_TONE","badge","tv","CUSTOM_COLOR","DOT_TONE","Badge","className","tone","size","dot","icon","pulse","dismiss","color","style","children","ref","props","handleDismiss","event","jsxs","cn","jsx","Icon"],"mappings":"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"}