@50arms/ui 0.0.0-stage → 35.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1256) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +193 -2
  3. package/dist/components/Accordion.js +68 -0
  4. package/dist/components/Accordion.js.map +1 -0
  5. package/dist/components/AgentWorkingSpinner.js +46 -0
  6. package/dist/components/AgentWorkingSpinner.js.map +1 -0
  7. package/dist/components/AppShell.js +228 -0
  8. package/dist/components/AppShell.js.map +1 -0
  9. package/dist/components/Attention.js +130 -0
  10. package/dist/components/Attention.js.map +1 -0
  11. package/dist/components/Avatar.js +99 -0
  12. package/dist/components/Avatar.js.map +1 -0
  13. package/dist/components/Badge.js +143 -0
  14. package/dist/components/Badge.js.map +1 -0
  15. package/dist/components/Board.js +292 -0
  16. package/dist/components/Board.js.map +1 -0
  17. package/dist/components/Button.js +327 -0
  18. package/dist/components/Button.js.map +1 -0
  19. package/dist/components/Callout.js +106 -0
  20. package/dist/components/Callout.js.map +1 -0
  21. package/dist/components/Card.js +140 -0
  22. package/dist/components/Card.js.map +1 -0
  23. package/dist/components/Choice.js +361 -0
  24. package/dist/components/Choice.js.map +1 -0
  25. package/dist/components/CodeEditor.js +384 -0
  26. package/dist/components/CodeEditor.js.map +1 -0
  27. package/dist/components/ColorPicker.js +174 -0
  28. package/dist/components/ColorPicker.js.map +1 -0
  29. package/dist/components/Combobox.js +212 -0
  30. package/dist/components/Combobox.js.map +1 -0
  31. package/dist/components/CommandPalette.js +163 -0
  32. package/dist/components/CommandPalette.js.map +1 -0
  33. package/dist/components/ConcentricRing.js +60 -0
  34. package/dist/components/ConcentricRing.js.map +1 -0
  35. package/dist/components/ConnectionCard.js +98 -0
  36. package/dist/components/ConnectionCard.js.map +1 -0
  37. package/dist/components/ContextItemRow.js +49 -0
  38. package/dist/components/ContextItemRow.js.map +1 -0
  39. package/dist/components/CopyValue.js +57 -0
  40. package/dist/components/CopyValue.js.map +1 -0
  41. package/dist/components/CountBadge.js +26 -0
  42. package/dist/components/CountBadge.js.map +1 -0
  43. package/dist/components/DateCalendar.js +156 -0
  44. package/dist/components/DateCalendar.js.map +1 -0
  45. package/dist/components/DateField.js +166 -0
  46. package/dist/components/DateField.js.map +1 -0
  47. package/dist/components/DatePicker.js +56 -0
  48. package/dist/components/DatePicker.js.map +1 -0
  49. package/dist/components/DateTimeText.js +19 -0
  50. package/dist/components/DateTimeText.js.map +1 -0
  51. package/dist/components/DescriptionList.js +25 -0
  52. package/dist/components/DescriptionList.js.map +1 -0
  53. package/dist/components/Dialog.js +332 -0
  54. package/dist/components/Dialog.js.map +1 -0
  55. package/dist/components/DragDrop.js +395 -0
  56. package/dist/components/DragDrop.js.map +1 -0
  57. package/dist/components/Drawer.js +100 -0
  58. package/dist/components/Drawer.js.map +1 -0
  59. package/dist/components/EditGutter.js +110 -0
  60. package/dist/components/EditGutter.js.map +1 -0
  61. package/dist/components/EmojiPicker.js +174 -0
  62. package/dist/components/EmojiPicker.js.map +1 -0
  63. package/dist/components/ErrorBoundary.js +47 -0
  64. package/dist/components/ErrorBoundary.js.map +1 -0
  65. package/dist/components/Field.js +115 -0
  66. package/dist/components/Field.js.map +1 -0
  67. package/dist/components/FileUpload.js +128 -0
  68. package/dist/components/FileUpload.js.map +1 -0
  69. package/dist/components/FilterMenu.js +256 -0
  70. package/dist/components/FilterMenu.js.map +1 -0
  71. package/dist/components/GatesSection.js +79 -0
  72. package/dist/components/GatesSection.js.map +1 -0
  73. package/dist/components/Icon.js +50 -0
  74. package/dist/components/Icon.js.map +1 -0
  75. package/dist/components/IconButton.js +59 -0
  76. package/dist/components/IconButton.js.map +1 -0
  77. package/dist/components/IconStack.js +69 -0
  78. package/dist/components/IconStack.js.map +1 -0
  79. package/dist/components/ImageUploadField.js +146 -0
  80. package/dist/components/ImageUploadField.js.map +1 -0
  81. package/dist/components/InlineEdit.js +432 -0
  82. package/dist/components/InlineEdit.js.map +1 -0
  83. package/dist/components/InlineMarkdownEdit.js +184 -0
  84. package/dist/components/InlineMarkdownEdit.js.map +1 -0
  85. package/dist/components/Input.js +156 -0
  86. package/dist/components/Input.js.map +1 -0
  87. package/dist/components/LegalDocument.js +155 -0
  88. package/dist/components/LegalDocument.js.map +1 -0
  89. package/dist/components/LineDiff.js +95 -0
  90. package/dist/components/LineDiff.js.map +1 -0
  91. package/dist/components/ListHeader.js +72 -0
  92. package/dist/components/ListHeader.js.map +1 -0
  93. package/dist/components/Loading.js +111 -0
  94. package/dist/components/Loading.js.map +1 -0
  95. package/dist/components/Markdown.js +28 -0
  96. package/dist/components/Markdown.js.map +1 -0
  97. package/dist/components/MarkdownEditor.js +467 -0
  98. package/dist/components/MarkdownEditor.js.map +1 -0
  99. package/dist/components/Menu.js +185 -0
  100. package/dist/components/Menu.js.map +1 -0
  101. package/dist/components/Navigation.js +87 -0
  102. package/dist/components/Navigation.js.map +1 -0
  103. package/dist/components/NumberInput.js +119 -0
  104. package/dist/components/NumberInput.js.map +1 -0
  105. package/dist/components/OTPInput.js +71 -0
  106. package/dist/components/OTPInput.js.map +1 -0
  107. package/dist/components/OrderedEntityManager.js +170 -0
  108. package/dist/components/OrderedEntityManager.js.map +1 -0
  109. package/dist/components/PagedWindowList.js +74 -0
  110. package/dist/components/PagedWindowList.js.map +1 -0
  111. package/dist/components/PaginationBar.js +95 -0
  112. package/dist/components/PaginationBar.js.map +1 -0
  113. package/dist/components/Panel.js +396 -0
  114. package/dist/components/Panel.js.map +1 -0
  115. package/dist/components/PasswordInput.js +32 -0
  116. package/dist/components/PasswordInput.js.map +1 -0
  117. package/dist/components/PasswordRequirements.js +25 -0
  118. package/dist/components/PasswordRequirements.js.map +1 -0
  119. package/dist/components/PatchDiff.js +96 -0
  120. package/dist/components/PatchDiff.js.map +1 -0
  121. package/dist/components/PendingVeil.js +18 -0
  122. package/dist/components/PendingVeil.js.map +1 -0
  123. package/dist/components/Popover.js +214 -0
  124. package/dist/components/Popover.js.map +1 -0
  125. package/dist/components/Progress.js +419 -0
  126. package/dist/components/Progress.js.map +1 -0
  127. package/dist/components/RatingScale.js +89 -0
  128. package/dist/components/RatingScale.js.map +1 -0
  129. package/dist/components/ReadMore.js +232 -0
  130. package/dist/components/ReadMore.js.map +1 -0
  131. package/dist/components/RecordCard.js +202 -0
  132. package/dist/components/RecordCard.js.map +1 -0
  133. package/dist/components/RelativeTime.js +29 -0
  134. package/dist/components/RelativeTime.js.map +1 -0
  135. package/dist/components/SandboxedFrame.js +135 -0
  136. package/dist/components/SandboxedFrame.js.map +1 -0
  137. package/dist/components/SearchInput.js +38 -0
  138. package/dist/components/SearchInput.js.map +1 -0
  139. package/dist/components/SecretField.js +228 -0
  140. package/dist/components/SecretField.js.map +1 -0
  141. package/dist/components/SectionNav.js +42 -0
  142. package/dist/components/SectionNav.js.map +1 -0
  143. package/dist/components/Select.js +172 -0
  144. package/dist/components/Select.js.map +1 -0
  145. package/dist/components/SequenceDiagram.js +109 -0
  146. package/dist/components/SequenceDiagram.js.map +1 -0
  147. package/dist/components/SettingRow.js +124 -0
  148. package/dist/components/SettingRow.js.map +1 -0
  149. package/dist/components/SignOffRings.js +36 -0
  150. package/dist/components/SignOffRings.js.map +1 -0
  151. package/dist/components/Slider.js +353 -0
  152. package/dist/components/Slider.js.map +1 -0
  153. package/dist/components/SolutionChoice.js +89 -0
  154. package/dist/components/SolutionChoice.js.map +1 -0
  155. package/dist/components/SortMenu.js +75 -0
  156. package/dist/components/SortMenu.js.map +1 -0
  157. package/dist/components/Spinner.js +42 -0
  158. package/dist/components/Spinner.js.map +1 -0
  159. package/dist/components/Stat.js +148 -0
  160. package/dist/components/Stat.js.map +1 -0
  161. package/dist/components/StatusSelect.js +119 -0
  162. package/dist/components/StatusSelect.js.map +1 -0
  163. package/dist/components/Surface.js +210 -0
  164. package/dist/components/Surface.js.map +1 -0
  165. package/dist/components/Table.js +300 -0
  166. package/dist/components/Table.js.map +1 -0
  167. package/dist/components/Tabs.js +288 -0
  168. package/dist/components/Tabs.js.map +1 -0
  169. package/dist/components/ThemeMenu.js +198 -0
  170. package/dist/components/ThemeMenu.js.map +1 -0
  171. package/dist/components/Toast.js +217 -0
  172. package/dist/components/Toast.js.map +1 -0
  173. package/dist/components/Toggle.js +147 -0
  174. package/dist/components/Toggle.js.map +1 -0
  175. package/dist/components/ToggleMatrix.js +157 -0
  176. package/dist/components/ToggleMatrix.js.map +1 -0
  177. package/dist/components/Tree.js +125 -0
  178. package/dist/components/Tree.js.map +1 -0
  179. package/dist/components/TriStateSwitch.js +111 -0
  180. package/dist/components/TriStateSwitch.js.map +1 -0
  181. package/dist/components/VideoPlayer.js +64 -0
  182. package/dist/components/VideoPlayer.js.map +1 -0
  183. package/dist/components/auth/AcceptInvitationCard.js +110 -0
  184. package/dist/components/auth/AcceptInvitationCard.js.map +1 -0
  185. package/dist/components/auth/AuthLayout.js +18 -0
  186. package/dist/components/auth/AuthLayout.js.map +1 -0
  187. package/dist/components/auth/ForgotPasswordForm.js +44 -0
  188. package/dist/components/auth/ForgotPasswordForm.js.map +1 -0
  189. package/dist/components/auth/LoginForm.js +76 -0
  190. package/dist/components/auth/LoginForm.js.map +1 -0
  191. package/dist/components/auth/ResetPasswordForm.js +69 -0
  192. package/dist/components/auth/ResetPasswordForm.js.map +1 -0
  193. package/dist/components/auth/SignInProviders.js +45 -0
  194. package/dist/components/auth/SignInProviders.js.map +1 -0
  195. package/dist/components/auth/SignupCard.js +204 -0
  196. package/dist/components/auth/SignupCard.js.map +1 -0
  197. package/dist/components/auth/TermsAcceptance.js +43 -0
  198. package/dist/components/auth/TermsAcceptance.js.map +1 -0
  199. package/dist/components/board/context.js +32 -0
  200. package/dist/components/board/context.js.map +1 -0
  201. package/dist/components/board/recipe.js +94 -0
  202. package/dist/components/board/recipe.js.map +1 -0
  203. package/dist/components/calendar/CalendarMonth.js +299 -0
  204. package/dist/components/calendar/CalendarMonth.js.map +1 -0
  205. package/dist/components/calendar/CalendarTimeGrid.js +430 -0
  206. package/dist/components/calendar/CalendarTimeGrid.js.map +1 -0
  207. package/dist/components/calendar/EventActions.js +101 -0
  208. package/dist/components/calendar/EventActions.js.map +1 -0
  209. package/dist/components/calendar/format.js +73 -0
  210. package/dist/components/calendar/format.js.map +1 -0
  211. package/dist/components/calendar/palette.js +31 -0
  212. package/dist/components/calendar/palette.js.map +1 -0
  213. package/dist/components/calendar/use-calendar-drag.js +149 -0
  214. package/dist/components/calendar/use-calendar-drag.js.map +1 -0
  215. package/dist/components/calendar/use-event-keyboard.js +87 -0
  216. package/dist/components/calendar/use-event-keyboard.js.map +1 -0
  217. package/dist/components/calendar/use-grid-navigation.js +79 -0
  218. package/dist/components/calendar/use-grid-navigation.js.map +1 -0
  219. package/dist/components/calendar/use-now.js +27 -0
  220. package/dist/components/calendar/use-now.js.map +1 -0
  221. package/dist/components/card-face/AcRingGlyph.js +39 -0
  222. package/dist/components/card-face/AcRingGlyph.js.map +1 -0
  223. package/dist/components/card-face/BoardCardAgentSlot.js +17 -0
  224. package/dist/components/card-face/BoardCardAgentSlot.js.map +1 -0
  225. package/dist/components/card-face/CardFace.js +109 -0
  226. package/dist/components/card-face/CardFace.js.map +1 -0
  227. package/dist/components/card-face/CardTypeBadge.js +17 -0
  228. package/dist/components/card-face/CardTypeBadge.js.map +1 -0
  229. package/dist/components/card-face/EffortBadge.js +11 -0
  230. package/dist/components/card-face/EffortBadge.js.map +1 -0
  231. package/dist/components/card-face/GateRingGlyph.js +31 -0
  232. package/dist/components/card-face/GateRingGlyph.js.map +1 -0
  233. package/dist/components/card-face/OverflowRow.js +70 -0
  234. package/dist/components/card-face/OverflowRow.js.map +1 -0
  235. package/dist/components/card-face/TapTip.js +32 -0
  236. package/dist/components/card-face/TapTip.js.map +1 -0
  237. package/dist/components/card-face/hit-area.js +6 -0
  238. package/dist/components/card-face/hit-area.js.map +1 -0
  239. package/dist/components/card-face/vocabulary.js +102 -0
  240. package/dist/components/card-face/vocabulary.js.map +1 -0
  241. package/dist/components/chart/BarList.js +78 -0
  242. package/dist/components/chart/BarList.js.map +1 -0
  243. package/dist/components/chart/LineChart.js +310 -0
  244. package/dist/components/chart/LineChart.js.map +1 -0
  245. package/dist/components/chart/ShareBar.js +141 -0
  246. package/dist/components/chart/ShareBar.js.map +1 -0
  247. package/dist/components/chart/TimeSeriesChart.js +305 -0
  248. package/dist/components/chart/TimeSeriesChart.js.map +1 -0
  249. package/dist/components/chart/label-metrics.js +17 -0
  250. package/dist/components/chart/label-metrics.js.map +1 -0
  251. package/dist/components/chart/line-chart-axis.js +38 -0
  252. package/dist/components/chart/line-chart-axis.js.map +1 -0
  253. package/dist/components/chart/line-chart-scale.js +132 -0
  254. package/dist/components/chart/line-chart-scale.js.map +1 -0
  255. package/dist/components/chart/line-series-style.js +22 -0
  256. package/dist/components/chart/line-series-style.js.map +1 -0
  257. package/dist/components/chart/share-bar-labels.js +14 -0
  258. package/dist/components/chart/share-bar-labels.js.map +1 -0
  259. package/dist/components/chart/shared.js +157 -0
  260. package/dist/components/chart/shared.js.map +1 -0
  261. package/dist/components/chart/time-series-scale.js +51 -0
  262. package/dist/components/chart/time-series-scale.js.map +1 -0
  263. package/dist/components/chat/Attachment.js +316 -0
  264. package/dist/components/chat/Attachment.js.map +1 -0
  265. package/dist/components/chat/Chat.js +171 -0
  266. package/dist/components/chat/Chat.js.map +1 -0
  267. package/dist/components/chat/Composer.js +274 -0
  268. package/dist/components/chat/Composer.js.map +1 -0
  269. package/dist/components/chat/ContextMeter.js +202 -0
  270. package/dist/components/chat/ContextMeter.js.map +1 -0
  271. package/dist/components/chat/EffortControl.js +116 -0
  272. package/dist/components/chat/EffortControl.js.map +1 -0
  273. package/dist/components/chat/FileCover.js +78 -0
  274. package/dist/components/chat/FileCover.js.map +1 -0
  275. package/dist/components/chat/Message.js +356 -0
  276. package/dist/components/chat/Message.js.map +1 -0
  277. package/dist/components/chat/MessageScroller.js +104 -0
  278. package/dist/components/chat/MessageScroller.js.map +1 -0
  279. package/dist/components/chat/ModelSelector.js +156 -0
  280. package/dist/components/chat/ModelSelector.js.map +1 -0
  281. package/dist/components/chat/StreamingMarkdown.js +42 -0
  282. package/dist/components/chat/StreamingMarkdown.js.map +1 -0
  283. package/dist/components/chat/download-file.js +9 -0
  284. package/dist/components/chat/download-file.js.map +1 -0
  285. package/dist/components/chat/file-icon.js +39 -0
  286. package/dist/components/chat/file-icon.js.map +1 -0
  287. package/dist/components/checklist/StatusChecklist.js +103 -0
  288. package/dist/components/checklist/StatusChecklist.js.map +1 -0
  289. package/dist/components/checklist/tally.js +29 -0
  290. package/dist/components/checklist/tally.js.map +1 -0
  291. package/dist/components/code-editor/context.js +13 -0
  292. package/dist/components/code-editor/context.js.map +1 -0
  293. package/dist/components/code-editor/editing.js +93 -0
  294. package/dist/components/code-editor/editing.js.map +1 -0
  295. package/dist/components/code-editor/highlight.js +27 -0
  296. package/dist/components/code-editor/highlight.js.map +1 -0
  297. package/dist/components/code-editor/recipe.js +75 -0
  298. package/dist/components/code-editor/recipe.js.map +1 -0
  299. package/dist/components/date-timeline/DateTimeline.js +358 -0
  300. package/dist/components/date-timeline/DateTimeline.js.map +1 -0
  301. package/dist/components/date-timeline/TimelineRow.js +100 -0
  302. package/dist/components/date-timeline/TimelineRow.js.map +1 -0
  303. package/dist/components/date-timeline/useBarDrag.js +44 -0
  304. package/dist/components/date-timeline/useBarDrag.js.map +1 -0
  305. package/dist/components/date-timeline/useMarkerDrag.js +40 -0
  306. package/dist/components/date-timeline/useMarkerDrag.js.map +1 -0
  307. package/dist/components/date-timeline/useTimelineZoom.js +44 -0
  308. package/dist/components/date-timeline/useTimelineZoom.js.map +1 -0
  309. package/dist/components/drag-drop/context.js +37 -0
  310. package/dist/components/drag-drop/context.js.map +1 -0
  311. package/dist/components/drag-drop/recipe.js +270 -0
  312. package/dist/components/drag-drop/recipe.js.map +1 -0
  313. package/dist/components/drag-drop/shift.js +157 -0
  314. package/dist/components/drag-drop/shift.js.map +1 -0
  315. package/dist/components/edit/activation.js +10 -0
  316. package/dist/components/edit/activation.js.map +1 -0
  317. package/dist/components/edit/outcome.js +47 -0
  318. package/dist/components/edit/outcome.js.map +1 -0
  319. package/dist/components/edit/use-edit-session.js +146 -0
  320. package/dist/components/edit/use-edit-session.js.map +1 -0
  321. package/dist/components/file-viewer/FileViewer.js +97 -0
  322. package/dist/components/file-viewer/FileViewer.js.map +1 -0
  323. package/dist/components/file-viewer/PageNumberJumpField.js +47 -0
  324. package/dist/components/file-viewer/PageNumberJumpField.js.map +1 -0
  325. package/dist/components/file-viewer/ViewerControls.js +122 -0
  326. package/dist/components/file-viewer/ViewerControls.js.map +1 -0
  327. package/dist/components/file-viewer/ViewerRail.js +57 -0
  328. package/dist/components/file-viewer/ViewerRail.js.map +1 -0
  329. package/dist/components/file-viewer/ViewerStage.js +112 -0
  330. package/dist/components/file-viewer/ViewerStage.js.map +1 -0
  331. package/dist/components/file-viewer/frames.js +37 -0
  332. package/dist/components/file-viewer/frames.js.map +1 -0
  333. package/dist/components/file-viewer/use-frame-cursor.js +32 -0
  334. package/dist/components/file-viewer/use-frame-cursor.js.map +1 -0
  335. package/dist/components/file-viewer/use-viewer-keys.js +50 -0
  336. package/dist/components/file-viewer/use-viewer-keys.js.map +1 -0
  337. package/dist/components/file-viewer/use-viewer-zoom.js +68 -0
  338. package/dist/components/file-viewer/use-viewer-zoom.js.map +1 -0
  339. package/dist/components/focus-web/FocusWeb.js +322 -0
  340. package/dist/components/focus-web/FocusWeb.js.map +1 -0
  341. package/dist/components/focus-web/layout.js +34 -0
  342. package/dist/components/focus-web/layout.js.map +1 -0
  343. package/dist/components/graph-explorer/GraphExplorer.js +441 -0
  344. package/dist/components/graph-explorer/GraphExplorer.js.map +1 -0
  345. package/dist/components/graph-explorer/camera-math.js +102 -0
  346. package/dist/components/graph-explorer/camera-math.js.map +1 -0
  347. package/dist/components/graph-explorer/tree-layout.js +103 -0
  348. package/dist/components/graph-explorer/tree-layout.js.map +1 -0
  349. package/dist/components/graph-explorer/use-camera.js +82 -0
  350. package/dist/components/graph-explorer/use-camera.js.map +1 -0
  351. package/dist/components/graph-explorer/viewport-gesture.js +107 -0
  352. package/dist/components/graph-explorer/viewport-gesture.js.map +1 -0
  353. package/dist/components/kanban/KanbanBoard.js +219 -0
  354. package/dist/components/kanban/KanbanBoard.js.map +1 -0
  355. package/dist/components/kanban/recipe.js +144 -0
  356. package/dist/components/kanban/recipe.js.map +1 -0
  357. package/dist/components/markdown/Affordances.js +398 -0
  358. package/dist/components/markdown/Affordances.js.map +1 -0
  359. package/dist/components/markdown/AttachmentStrip.js +128 -0
  360. package/dist/components/markdown/AttachmentStrip.js.map +1 -0
  361. package/dist/components/markdown/ImageUpload.js +45 -0
  362. package/dist/components/markdown/ImageUpload.js.map +1 -0
  363. package/dist/components/media-error.js +7 -0
  364. package/dist/components/media-error.js.map +1 -0
  365. package/dist/components/nav-sections.js +61 -0
  366. package/dist/components/nav-sections.js.map +1 -0
  367. package/dist/components/node-canvas/NodeCanvas.js +384 -0
  368. package/dist/components/node-canvas/NodeCanvas.js.map +1 -0
  369. package/dist/components/node-canvas/layout.js +237 -0
  370. package/dist/components/node-canvas/layout.js.map +1 -0
  371. package/dist/components/node-canvas/use-canvas-gestures.js +143 -0
  372. package/dist/components/node-canvas/use-canvas-gestures.js.map +1 -0
  373. package/dist/components/openapi/OpenApiViewer.js +137 -0
  374. package/dist/components/openapi/OpenApiViewer.js.map +1 -0
  375. package/dist/components/openapi/OperationCard.js +145 -0
  376. package/dist/components/openapi/OperationCard.js.map +1 -0
  377. package/dist/components/openapi/SchemaView.js +68 -0
  378. package/dist/components/openapi/SchemaView.js.map +1 -0
  379. package/dist/components/openapi/resolve.js +102 -0
  380. package/dist/components/openapi/resolve.js.map +1 -0
  381. package/dist/components/openapi/types.js +5 -0
  382. package/dist/components/openapi/types.js.map +1 -0
  383. package/dist/components/overlay-shell.js +29 -0
  384. package/dist/components/overlay-shell.js.map +1 -0
  385. package/dist/components/overlay-stack.js +27 -0
  386. package/dist/components/overlay-stack.js.map +1 -0
  387. package/dist/components/paged-window/PageBlock.js +50 -0
  388. package/dist/components/paged-window/PageBlock.js.map +1 -0
  389. package/dist/components/provenance/ConfidenceBar.js +60 -0
  390. package/dist/components/provenance/ConfidenceBar.js.map +1 -0
  391. package/dist/components/provenance/ConfidenceMeter.js +36 -0
  392. package/dist/components/provenance/ConfidenceMeter.js.map +1 -0
  393. package/dist/components/provenance/ConfidenceReadout.js +31 -0
  394. package/dist/components/provenance/ConfidenceReadout.js.map +1 -0
  395. package/dist/components/provenance/ProvenanceBadge.js +44 -0
  396. package/dist/components/provenance/ProvenanceBadge.js.map +1 -0
  397. package/dist/components/provenance/ProvenanceDetail.js +114 -0
  398. package/dist/components/provenance/ProvenanceDetail.js.map +1 -0
  399. package/dist/components/provenance/ProvenanceDisclosure.js +111 -0
  400. package/dist/components/provenance/ProvenanceDisclosure.js.map +1 -0
  401. package/dist/components/provenance/absence.js +31 -0
  402. package/dist/components/provenance/absence.js.map +1 -0
  403. package/dist/components/provenance/types.js +30 -0
  404. package/dist/components/provenance/types.js.map +1 -0
  405. package/dist/components/rbac/AccessRequestPanel.js +153 -0
  406. package/dist/components/rbac/AccessRequestPanel.js.map +1 -0
  407. package/dist/components/rbac/AccountMenu.js +118 -0
  408. package/dist/components/rbac/AccountMenu.js.map +1 -0
  409. package/dist/components/rbac/AgentKeysList.js +20 -0
  410. package/dist/components/rbac/AgentKeysList.js.map +1 -0
  411. package/dist/components/rbac/ApiKeysPanel.js +172 -0
  412. package/dist/components/rbac/ApiKeysPanel.js.map +1 -0
  413. package/dist/components/rbac/ApiKeysTable.js +167 -0
  414. package/dist/components/rbac/ApiKeysTable.js.map +1 -0
  415. package/dist/components/rbac/Brand.js +13 -0
  416. package/dist/components/rbac/Brand.js.map +1 -0
  417. package/dist/components/rbac/Can.js +18 -0
  418. package/dist/components/rbac/Can.js.map +1 -0
  419. package/dist/components/rbac/ChangePasswordForm.js +73 -0
  420. package/dist/components/rbac/ChangePasswordForm.js.map +1 -0
  421. package/dist/components/rbac/DangerZone.js +27 -0
  422. package/dist/components/rbac/DangerZone.js.map +1 -0
  423. package/dist/components/rbac/DevToolsPopover.js +140 -0
  424. package/dist/components/rbac/DevToolsPopover.js.map +1 -0
  425. package/dist/components/rbac/EndedLine.js +24 -0
  426. package/dist/components/rbac/EndedLine.js.map +1 -0
  427. package/dist/components/rbac/InvitationsList.js +148 -0
  428. package/dist/components/rbac/InvitationsList.js.map +1 -0
  429. package/dist/components/rbac/InviteMembersDialog.js +97 -0
  430. package/dist/components/rbac/InviteMembersDialog.js.map +1 -0
  431. package/dist/components/rbac/MembersPanel.js +138 -0
  432. package/dist/components/rbac/MembersPanel.js.map +1 -0
  433. package/dist/components/rbac/PermissionRequestPanel.js +141 -0
  434. package/dist/components/rbac/PermissionRequestPanel.js.map +1 -0
  435. package/dist/components/rbac/ProfileForm.js +86 -0
  436. package/dist/components/rbac/ProfileForm.js.map +1 -0
  437. package/dist/components/rbac/ProfilePage.js +58 -0
  438. package/dist/components/rbac/ProfilePage.js.map +1 -0
  439. package/dist/components/rbac/RBACProvider.js +82 -0
  440. package/dist/components/rbac/RBACProvider.js.map +1 -0
  441. package/dist/components/rbac/RoleEditorDialog.js +90 -0
  442. package/dist/components/rbac/RoleEditorDialog.js.map +1 -0
  443. package/dist/components/rbac/RoleKeyPicker.js +77 -0
  444. package/dist/components/rbac/RoleKeyPicker.js.map +1 -0
  445. package/dist/components/rbac/RolePermissionMatrix.js +37 -0
  446. package/dist/components/rbac/RolePermissionMatrix.js.map +1 -0
  447. package/dist/components/rbac/RolesPermissionsPage.js +142 -0
  448. package/dist/components/rbac/RolesPermissionsPage.js.map +1 -0
  449. package/dist/components/rbac/SessionsList.js +146 -0
  450. package/dist/components/rbac/SessionsList.js.map +1 -0
  451. package/dist/components/rbac/TeamSettingsForm.js +69 -0
  452. package/dist/components/rbac/TeamSettingsForm.js.map +1 -0
  453. package/dist/components/rbac/TeamSwitcher.js +66 -0
  454. package/dist/components/rbac/TeamSwitcher.js.map +1 -0
  455. package/dist/components/rbac/approvalPanelParts.js +130 -0
  456. package/dist/components/rbac/approvalPanelParts.js.map +1 -0
  457. package/dist/components/rbac/permissionSections.js +8 -0
  458. package/dist/components/rbac/permissionSections.js.map +1 -0
  459. package/dist/components/rbac/stagedForm.js +42 -0
  460. package/dist/components/rbac/stagedForm.js.map +1 -0
  461. package/dist/components/rbac/useStagedImage.js +21 -0
  462. package/dist/components/rbac/useStagedImage.js.map +1 -0
  463. package/dist/components/roadmap/PhaseManager.js +48 -0
  464. package/dist/components/roadmap/PhaseManager.js.map +1 -0
  465. package/dist/components/roadmap/RoadmapItemCard.js +96 -0
  466. package/dist/components/roadmap/RoadmapItemCard.js.map +1 -0
  467. package/dist/components/roadmap/RoadmapPage.js +34 -0
  468. package/dist/components/roadmap/RoadmapPage.js.map +1 -0
  469. package/dist/components/roadmap/RoadmapSwimlaneBoard.js +91 -0
  470. package/dist/components/roadmap/RoadmapSwimlaneBoard.js.map +1 -0
  471. package/dist/components/roadmap/TrackManager.js +58 -0
  472. package/dist/components/roadmap/TrackManager.js.map +1 -0
  473. package/dist/components/roadmap/UseCaseCard.js +93 -0
  474. package/dist/components/roadmap/UseCaseCard.js.map +1 -0
  475. package/dist/components/roadmap/UseCaseLedgerPage.js +98 -0
  476. package/dist/components/roadmap/UseCaseLedgerPage.js.map +1 -0
  477. package/dist/components/roadmap/chip-tones.js +9 -0
  478. package/dist/components/roadmap/chip-tones.js.map +1 -0
  479. package/dist/components/roadmap/derive.js +28 -0
  480. package/dist/components/roadmap/derive.js.map +1 -0
  481. package/dist/components/stepper/Stepper.js +276 -0
  482. package/dist/components/stepper/Stepper.js.map +1 -0
  483. package/dist/components/stepper/derive.js +53 -0
  484. package/dist/components/stepper/derive.js.map +1 -0
  485. package/dist/confidence.css +222 -0
  486. package/dist/fonts/bricolage-grotesque-0.woff2 +0 -0
  487. package/dist/fonts/bricolage-grotesque-1.woff2 +0 -0
  488. package/dist/fonts/bricolage-grotesque-2.woff2 +0 -0
  489. package/dist/fonts/figtree-0.woff2 +0 -0
  490. package/dist/fonts/figtree-1.woff2 +0 -0
  491. package/dist/fonts/figtree-2.woff2 +0 -0
  492. package/dist/fonts/figtree-3.woff2 +0 -0
  493. package/dist/fonts/jetbrains-mono-0.woff2 +0 -0
  494. package/dist/fonts/jetbrains-mono-1.woff2 +0 -0
  495. package/dist/fonts/jetbrains-mono-10.woff2 +0 -0
  496. package/dist/fonts/jetbrains-mono-11.woff2 +0 -0
  497. package/dist/fonts/jetbrains-mono-2.woff2 +0 -0
  498. package/dist/fonts/jetbrains-mono-3.woff2 +0 -0
  499. package/dist/fonts/jetbrains-mono-4.woff2 +0 -0
  500. package/dist/fonts/jetbrains-mono-5.woff2 +0 -0
  501. package/dist/fonts/jetbrains-mono-6.woff2 +0 -0
  502. package/dist/fonts/jetbrains-mono-7.woff2 +0 -0
  503. package/dist/fonts/jetbrains-mono-8.woff2 +0 -0
  504. package/dist/fonts/jetbrains-mono-9.woff2 +0 -0
  505. package/dist/fonts.css +187 -0
  506. package/dist/icons/data.js +233 -0
  507. package/dist/icons/data.js.map +1 -0
  508. package/dist/index.js +942 -0
  509. package/dist/index.js.map +1 -0
  510. package/dist/lib/attention.js +75 -0
  511. package/dist/lib/attention.js.map +1 -0
  512. package/dist/lib/board/anchor.js +14 -0
  513. package/dist/lib/board/anchor.js.map +1 -0
  514. package/dist/lib/board/model.js +41 -0
  515. package/dist/lib/board/model.js.map +1 -0
  516. package/dist/lib/board/move.js +161 -0
  517. package/dist/lib/board/move.js.map +1 -0
  518. package/dist/lib/board/position.js +11 -0
  519. package/dist/lib/board/position.js.map +1 -0
  520. package/dist/lib/board/rejection.js +22 -0
  521. package/dist/lib/board/rejection.js.map +1 -0
  522. package/dist/lib/board/use-board.js +43 -0
  523. package/dist/lib/board/use-board.js.map +1 -0
  524. package/dist/lib/calendar/band-packer.js +44 -0
  525. package/dist/lib/calendar/band-packer.js.map +1 -0
  526. package/dist/lib/calendar/drag.js +74 -0
  527. package/dist/lib/calendar/drag.js.map +1 -0
  528. package/dist/lib/calendar/lane-packer.js +67 -0
  529. package/dist/lib/calendar/lane-packer.js.map +1 -0
  530. package/dist/lib/calendar/segments.js +82 -0
  531. package/dist/lib/calendar/segments.js.map +1 -0
  532. package/dist/lib/calendar/types.js +7 -0
  533. package/dist/lib/calendar/types.js.map +1 -0
  534. package/dist/lib/chart-palette.js +27 -0
  535. package/dist/lib/chart-palette.js.map +1 -0
  536. package/dist/lib/clipboard.js +30 -0
  537. package/dist/lib/clipboard.js.map +1 -0
  538. package/dist/lib/cn.js +9 -0
  539. package/dist/lib/cn.js.map +1 -0
  540. package/dist/lib/color.js +24 -0
  541. package/dist/lib/color.js.map +1 -0
  542. package/dist/lib/component-guidance.js +297 -0
  543. package/dist/lib/component-guidance.js.map +1 -0
  544. package/dist/lib/confidence.js +22 -0
  545. package/dist/lib/confidence.js.map +1 -0
  546. package/dist/lib/date-timeline/scale.js +197 -0
  547. package/dist/lib/date-timeline/scale.js.map +1 -0
  548. package/dist/lib/design-frame/document.js +44 -0
  549. package/dist/lib/design-frame/document.js.map +1 -0
  550. package/dist/lib/design-frame/mini-app-script.js +107 -0
  551. package/dist/lib/design-frame/mini-app-script.js.map +1 -0
  552. package/dist/lib/design-frame/mini-app.js +12 -0
  553. package/dist/lib/design-frame/mini-app.js.map +1 -0
  554. package/dist/lib/design-frame/protocol.js +46 -0
  555. package/dist/lib/design-frame/protocol.js.map +1 -0
  556. package/dist/lib/dev-warn.js +17 -0
  557. package/dist/lib/dev-warn.js.map +1 -0
  558. package/dist/lib/dnd/announce.js +120 -0
  559. package/dist/lib/dnd/announce.js.map +1 -0
  560. package/dist/lib/dnd/autoscroll.js +123 -0
  561. package/dist/lib/dnd/autoscroll.js.map +1 -0
  562. package/dist/lib/dnd/cross-drop.js +11 -0
  563. package/dist/lib/dnd/cross-drop.js.map +1 -0
  564. package/dist/lib/dnd/geometry.js +99 -0
  565. package/dist/lib/dnd/geometry.js.map +1 -0
  566. package/dist/lib/dnd/sensors/gesture.js +86 -0
  567. package/dist/lib/dnd/sensors/gesture.js.map +1 -0
  568. package/dist/lib/dnd/sensors/keyboard.js +47 -0
  569. package/dist/lib/dnd/sensors/keyboard.js.map +1 -0
  570. package/dist/lib/dnd/sensors/pointer.js +32 -0
  571. package/dist/lib/dnd/sensors/pointer.js.map +1 -0
  572. package/dist/lib/dnd/session.js +256 -0
  573. package/dist/lib/dnd/session.js.map +1 -0
  574. package/dist/lib/dnd/use-drag.js +90 -0
  575. package/dist/lib/dnd/use-drag.js.map +1 -0
  576. package/dist/lib/dom/scroll-ancestor.js +18 -0
  577. package/dist/lib/dom/scroll-ancestor.js.map +1 -0
  578. package/dist/lib/format.js +23 -0
  579. package/dist/lib/format.js.map +1 -0
  580. package/dist/lib/group-in-order.js +13 -0
  581. package/dist/lib/group-in-order.js.map +1 -0
  582. package/dist/lib/header-fold.js +11 -0
  583. package/dist/lib/header-fold.js.map +1 -0
  584. package/dist/lib/i18n/areas/auth-provenance-flows.js +156 -0
  585. package/dist/lib/i18n/areas/auth-provenance-flows.js.map +1 -0
  586. package/dist/lib/i18n/areas/board.js +35 -0
  587. package/dist/lib/i18n/areas/board.js.map +1 -0
  588. package/dist/lib/i18n/areas/card-face.js +10 -0
  589. package/dist/lib/i18n/areas/card-face.js.map +1 -0
  590. package/dist/lib/i18n/areas/chat-chart.js +118 -0
  591. package/dist/lib/i18n/areas/chat-chart.js.map +1 -0
  592. package/dist/lib/i18n/areas/code-editor.js +24 -0
  593. package/dist/lib/i18n/areas/code-editor.js.map +1 -0
  594. package/dist/lib/i18n/areas/date-timeline.js +21 -0
  595. package/dist/lib/i18n/areas/date-timeline.js.map +1 -0
  596. package/dist/lib/i18n/areas/dates.js +71 -0
  597. package/dist/lib/i18n/areas/dates.js.map +1 -0
  598. package/dist/lib/i18n/areas/docs-views.js +183 -0
  599. package/dist/lib/i18n/areas/docs-views.js.map +1 -0
  600. package/dist/lib/i18n/areas/feedback.js +75 -0
  601. package/dist/lib/i18n/areas/feedback.js.map +1 -0
  602. package/dist/lib/i18n/areas/formats.js +24 -0
  603. package/dist/lib/i18n/areas/formats.js.map +1 -0
  604. package/dist/lib/i18n/areas/forms.js +110 -0
  605. package/dist/lib/i18n/areas/forms.js.map +1 -0
  606. package/dist/lib/i18n/areas/keys.js +25 -0
  607. package/dist/lib/i18n/areas/keys.js.map +1 -0
  608. package/dist/lib/i18n/areas/markdown.js +136 -0
  609. package/dist/lib/i18n/areas/markdown.js.map +1 -0
  610. package/dist/lib/i18n/areas/move-rejected.js +14 -0
  611. package/dist/lib/i18n/areas/move-rejected.js.map +1 -0
  612. package/dist/lib/i18n/areas/navigation.js +104 -0
  613. package/dist/lib/i18n/areas/navigation.js.map +1 -0
  614. package/dist/lib/i18n/areas/rbac.js +331 -0
  615. package/dist/lib/i18n/areas/rbac.js.map +1 -0
  616. package/dist/lib/i18n/emphasis.js +6 -0
  617. package/dist/lib/i18n/emphasis.js.map +1 -0
  618. package/dist/lib/i18n/number-format.js +9 -0
  619. package/dist/lib/i18n/number-format.js.map +1 -0
  620. package/dist/lib/i18n/plural.js +9 -0
  621. package/dist/lib/i18n/plural.js.map +1 -0
  622. package/dist/lib/i18n/provider.js +27 -0
  623. package/dist/lib/i18n/provider.js.map +1 -0
  624. package/dist/lib/i18n/strings.js +38 -0
  625. package/dist/lib/i18n/strings.js.map +1 -0
  626. package/dist/lib/icons.js +17 -0
  627. package/dist/lib/icons.js.map +1 -0
  628. package/dist/lib/interactive-target.js +9 -0
  629. package/dist/lib/interactive-target.js.map +1 -0
  630. package/dist/lib/intl-cache.js +69 -0
  631. package/dist/lib/intl-cache.js.map +1 -0
  632. package/dist/lib/legal-document.js +37 -0
  633. package/dist/lib/legal-document.js.map +1 -0
  634. package/dist/lib/line-diff-model.js +51 -0
  635. package/dist/lib/line-diff-model.js.map +1 -0
  636. package/dist/lib/markdown/attachments.js +71 -0
  637. package/dist/lib/markdown/attachments.js.map +1 -0
  638. package/dist/lib/markdown/caret-map.js +153 -0
  639. package/dist/lib/markdown/caret-map.js.map +1 -0
  640. package/dist/lib/markdown/caret.js +35 -0
  641. package/dist/lib/markdown/caret.js.map +1 -0
  642. package/dist/lib/markdown/commands.js +443 -0
  643. package/dist/lib/markdown/commands.js.map +1 -0
  644. package/dist/lib/markdown/convert.js +153 -0
  645. package/dist/lib/markdown/convert.js.map +1 -0
  646. package/dist/lib/markdown/dom.js +89 -0
  647. package/dist/lib/markdown/dom.js.map +1 -0
  648. package/dist/lib/markdown/edit.js +92 -0
  649. package/dist/lib/markdown/edit.js.map +1 -0
  650. package/dist/lib/markdown/history.js +79 -0
  651. package/dist/lib/markdown/history.js.map +1 -0
  652. package/dist/lib/markdown/hotkeys.js +63 -0
  653. package/dist/lib/markdown/hotkeys.js.map +1 -0
  654. package/dist/lib/markdown/image-pipeline.js +236 -0
  655. package/dist/lib/markdown/image-pipeline.js.map +1 -0
  656. package/dist/lib/markdown/images.js +85 -0
  657. package/dist/lib/markdown/images.js.map +1 -0
  658. package/dist/lib/markdown/input.js +210 -0
  659. package/dist/lib/markdown/input.js.map +1 -0
  660. package/dist/lib/markdown/keys.js +37 -0
  661. package/dist/lib/markdown/keys.js.map +1 -0
  662. package/dist/lib/markdown/paste.js +180 -0
  663. package/dist/lib/markdown/paste.js.map +1 -0
  664. package/dist/lib/markdown/position.js +111 -0
  665. package/dist/lib/markdown/position.js.map +1 -0
  666. package/dist/lib/markdown/project.js +108 -0
  667. package/dist/lib/markdown/project.js.map +1 -0
  668. package/dist/lib/markdown/reconcile.js +127 -0
  669. package/dist/lib/markdown/reconcile.js.map +1 -0
  670. package/dist/lib/markdown/surface.js +373 -0
  671. package/dist/lib/markdown/surface.js.map +1 -0
  672. package/dist/lib/motion.js +22 -0
  673. package/dist/lib/motion.js.map +1 -0
  674. package/dist/lib/pad.js +7 -0
  675. package/dist/lib/pad.js.map +1 -0
  676. package/dist/lib/paged-window/layout.js +15 -0
  677. package/dist/lib/paged-window/layout.js.map +1 -0
  678. package/dist/lib/paged-window/list-owner.js +21 -0
  679. package/dist/lib/paged-window/list-owner.js.map +1 -0
  680. package/dist/lib/paged-window/records-binding.js +239 -0
  681. package/dist/lib/paged-window/records-binding.js.map +1 -0
  682. package/dist/lib/paged-window/store.js +562 -0
  683. package/dist/lib/paged-window/store.js.map +1 -0
  684. package/dist/lib/paged-window/use-measured-pitch.js +38 -0
  685. package/dist/lib/paged-window/use-measured-pitch.js.map +1 -0
  686. package/dist/lib/paged-window/use-page-visibility.js +36 -0
  687. package/dist/lib/paged-window/use-page-visibility.js.map +1 -0
  688. package/dist/lib/paged-window/use-paged-window.js +43 -0
  689. package/dist/lib/paged-window/use-paged-window.js.map +1 -0
  690. package/dist/lib/paged-window/use-scroll-root.js +12 -0
  691. package/dist/lib/paged-window/use-scroll-root.js.map +1 -0
  692. package/dist/lib/persist.js +84 -0
  693. package/dist/lib/persist.js.map +1 -0
  694. package/dist/lib/preference-values.js +13 -0
  695. package/dist/lib/preference-values.js.map +1 -0
  696. package/dist/lib/preferences.js +86 -0
  697. package/dist/lib/preferences.js.map +1 -0
  698. package/dist/lib/reads/hooks.js +156 -0
  699. package/dist/lib/reads/hooks.js.map +1 -0
  700. package/dist/lib/reads/optimistic.js +169 -0
  701. package/dist/lib/reads/optimistic.js.map +1 -0
  702. package/dist/lib/reads/refetch.js +108 -0
  703. package/dist/lib/reads/refetch.js.map +1 -0
  704. package/dist/lib/reads/slots.js +215 -0
  705. package/dist/lib/reads/slots.js.map +1 -0
  706. package/dist/lib/realtime/hooks.js +40 -0
  707. package/dist/lib/realtime/hooks.js.map +1 -0
  708. package/dist/lib/realtime/provider.js +25 -0
  709. package/dist/lib/realtime/provider.js.map +1 -0
  710. package/dist/lib/realtime/registry.js +472 -0
  711. package/dist/lib/realtime/registry.js.map +1 -0
  712. package/dist/lib/records/define-record-type.js +33 -0
  713. package/dist/lib/records/define-record-type.js.map +1 -0
  714. package/dist/lib/records/hooks.js +39 -0
  715. package/dist/lib/records/hooks.js.map +1 -0
  716. package/dist/lib/records/store.js +572 -0
  717. package/dist/lib/records/store.js.map +1 -0
  718. package/dist/lib/records/wire.js +58 -0
  719. package/dist/lib/records/wire.js.map +1 -0
  720. package/dist/lib/reduced-motion-help.js +19 -0
  721. package/dist/lib/reduced-motion-help.js.map +1 -0
  722. package/dist/lib/scroll-caret.js +18 -0
  723. package/dist/lib/scroll-caret.js.map +1 -0
  724. package/dist/lib/sim/createSimStore.js +54 -0
  725. package/dist/lib/sim/createSimStore.js.map +1 -0
  726. package/dist/lib/sim/latency.js +28 -0
  727. package/dist/lib/sim/latency.js.map +1 -0
  728. package/dist/lib/sim/registry.js +13 -0
  729. package/dist/lib/sim/registry.js.map +1 -0
  730. package/dist/lib/sim/settings.js +41 -0
  731. package/dist/lib/sim/settings.js.map +1 -0
  732. package/dist/lib/submit-shortcut.js +25 -0
  733. package/dist/lib/submit-shortcut.js.map +1 -0
  734. package/dist/lib/syntax/index.js +33 -0
  735. package/dist/lib/syntax/index.js.map +1 -0
  736. package/dist/lib/syntax/languages/bash.js +77 -0
  737. package/dist/lib/syntax/languages/bash.js.map +1 -0
  738. package/dist/lib/syntax/languages/css.js +81 -0
  739. package/dist/lib/syntax/languages/css.js.map +1 -0
  740. package/dist/lib/syntax/languages/html.js +91 -0
  741. package/dist/lib/syntax/languages/html.js.map +1 -0
  742. package/dist/lib/syntax/languages/index.js +49 -0
  743. package/dist/lib/syntax/languages/index.js.map +1 -0
  744. package/dist/lib/syntax/languages/javascript.js +133 -0
  745. package/dist/lib/syntax/languages/javascript.js.map +1 -0
  746. package/dist/lib/syntax/languages/json.js +45 -0
  747. package/dist/lib/syntax/languages/json.js.map +1 -0
  748. package/dist/lib/syntax/languages/mongodb.js +24 -0
  749. package/dist/lib/syntax/languages/mongodb.js.map +1 -0
  750. package/dist/lib/syntax/languages/plain.js +10 -0
  751. package/dist/lib/syntax/languages/plain.js.map +1 -0
  752. package/dist/lib/syntax/languages/sql.js +113 -0
  753. package/dist/lib/syntax/languages/sql.js.map +1 -0
  754. package/dist/lib/syntax/languages/vue.js +31 -0
  755. package/dist/lib/syntax/languages/vue.js.map +1 -0
  756. package/dist/lib/syntax/languages/yaml.js +55 -0
  757. package/dist/lib/syntax/languages/yaml.js.map +1 -0
  758. package/dist/lib/syntax/markdown/grammar.js +52 -0
  759. package/dist/lib/syntax/markdown/grammar.js.map +1 -0
  760. package/dist/lib/syntax/markdown/inline.js +477 -0
  761. package/dist/lib/syntax/markdown/inline.js.map +1 -0
  762. package/dist/lib/syntax/markdown/parse.js +464 -0
  763. package/dist/lib/syntax/markdown/parse.js.map +1 -0
  764. package/dist/lib/syntax/markdown/refs.js +94 -0
  765. package/dist/lib/syntax/markdown/refs.js.map +1 -0
  766. package/dist/lib/syntax/markdown/render.js +230 -0
  767. package/dist/lib/syntax/markdown/render.js.map +1 -0
  768. package/dist/lib/syntax/markdown/spans.js +40 -0
  769. package/dist/lib/syntax/markdown/spans.js.map +1 -0
  770. package/dist/lib/syntax/registry.js +55 -0
  771. package/dist/lib/syntax/registry.js.map +1 -0
  772. package/dist/lib/syntax/tokenize.js +96 -0
  773. package/dist/lib/syntax/tokenize.js.map +1 -0
  774. package/dist/lib/time/instant.js +7 -0
  775. package/dist/lib/time/instant.js.map +1 -0
  776. package/dist/lib/time/plain.js +83 -0
  777. package/dist/lib/time/plain.js.map +1 -0
  778. package/dist/lib/time/relativeAge.js +20 -0
  779. package/dist/lib/time/relativeAge.js.map +1 -0
  780. package/dist/lib/time/relativeClock.js +59 -0
  781. package/dist/lib/time/relativeClock.js.map +1 -0
  782. package/dist/lib/time/types.js +23 -0
  783. package/dist/lib/time/types.js.map +1 -0
  784. package/dist/lib/time/zone.js +148 -0
  785. package/dist/lib/time/zone.js.map +1 -0
  786. package/dist/lib/use-controllable.js +16 -0
  787. package/dist/lib/use-controllable.js.map +1 -0
  788. package/dist/lib/use-fill-height.js +49 -0
  789. package/dist/lib/use-fill-height.js.map +1 -0
  790. package/dist/lib/use-hydrated.js +14 -0
  791. package/dist/lib/use-hydrated.js.map +1 -0
  792. package/dist/lib/use-media-query.js +30 -0
  793. package/dist/lib/use-media-query.js.map +1 -0
  794. package/dist/lib/use-relabel-base-ui-dismiss.js +26 -0
  795. package/dist/lib/use-relabel-base-ui-dismiss.js.map +1 -0
  796. package/dist/lib/use-release-snap-drag.js +29 -0
  797. package/dist/lib/use-release-snap-drag.js.map +1 -0
  798. package/dist/lib/use-roving-options.js +18 -0
  799. package/dist/lib/use-roving-options.js.map +1 -0
  800. package/dist/lib/values/absent.js +5 -0
  801. package/dist/lib/values/absent.js.map +1 -0
  802. package/dist/lib/values/boolean.js +13 -0
  803. package/dist/lib/values/boolean.js.map +1 -0
  804. package/dist/lib/values/currency.js +23 -0
  805. package/dist/lib/values/currency.js.map +1 -0
  806. package/dist/lib/values/date.js +35 -0
  807. package/dist/lib/values/date.js.map +1 -0
  808. package/dist/lib/values/datetime.js +54 -0
  809. package/dist/lib/values/datetime.js.map +1 -0
  810. package/dist/lib/values/locale-date.js +60 -0
  811. package/dist/lib/values/locale-date.js.map +1 -0
  812. package/dist/lib/values/number.js +16 -0
  813. package/dist/lib/values/number.js.map +1 -0
  814. package/dist/pure.js +379 -0
  815. package/dist/pure.js.map +1 -0
  816. package/dist/styles.css +190 -0
  817. package/dist/theme.css +360 -0
  818. package/dist/types/components/Accordion.d.ts +15 -0
  819. package/dist/types/components/AgentWorkingSpinner.d.ts +23 -0
  820. package/dist/types/components/AppShell.d.ts +164 -0
  821. package/dist/types/components/Attention.d.ts +87 -0
  822. package/dist/types/components/Avatar.d.ts +154 -0
  823. package/dist/types/components/Badge.d.ts +131 -0
  824. package/dist/types/components/Board.d.ts +239 -0
  825. package/dist/types/components/Button.d.ts +208 -0
  826. package/dist/types/components/Callout.d.ts +163 -0
  827. package/dist/types/components/Card.d.ts +219 -0
  828. package/dist/types/components/Choice.d.ts +127 -0
  829. package/dist/types/components/CodeEditor.d.ts +86 -0
  830. package/dist/types/components/ColorPicker.d.ts +14 -0
  831. package/dist/types/components/Combobox.d.ts +43 -0
  832. package/dist/types/components/CommandPalette.d.ts +35 -0
  833. package/dist/types/components/ConcentricRing.d.ts +61 -0
  834. package/dist/types/components/ConnectionCard.d.ts +64 -0
  835. package/dist/types/components/ContextItemRow.d.ts +35 -0
  836. package/dist/types/components/CopyValue.d.ts +14 -0
  837. package/dist/types/components/CountBadge.d.ts +14 -0
  838. package/dist/types/components/DateCalendar.d.ts +30 -0
  839. package/dist/types/components/DateField.d.ts +29 -0
  840. package/dist/types/components/DatePicker.d.ts +20 -0
  841. package/dist/types/components/DateTimeText.d.ts +9 -0
  842. package/dist/types/components/DescriptionList.d.ts +40 -0
  843. package/dist/types/components/Dialog.d.ts +269 -0
  844. package/dist/types/components/DragDrop.d.ts +196 -0
  845. package/dist/types/components/Drawer.d.ts +163 -0
  846. package/dist/types/components/EditGutter.d.ts +44 -0
  847. package/dist/types/components/EmojiPicker.d.ts +30 -0
  848. package/dist/types/components/ErrorBoundary.d.ts +43 -0
  849. package/dist/types/components/Field.d.ts +37 -0
  850. package/dist/types/components/FileUpload.d.ts +22 -0
  851. package/dist/types/components/FilterMenu.d.ts +120 -0
  852. package/dist/types/components/GatesSection.d.ts +79 -0
  853. package/dist/types/components/Icon.d.ts +40 -0
  854. package/dist/types/components/IconButton.d.ts +69 -0
  855. package/dist/types/components/IconStack.d.ts +28 -0
  856. package/dist/types/components/ImageUploadField.d.ts +38 -0
  857. package/dist/types/components/InlineEdit.d.ts +183 -0
  858. package/dist/types/components/InlineMarkdownEdit.d.ts +100 -0
  859. package/dist/types/components/Input.d.ts +128 -0
  860. package/dist/types/components/LegalDocument.d.ts +23 -0
  861. package/dist/types/components/LineDiff.d.ts +53 -0
  862. package/dist/types/components/ListHeader.d.ts +45 -0
  863. package/dist/types/components/Loading.d.ts +131 -0
  864. package/dist/types/components/Markdown.d.ts +35 -0
  865. package/dist/types/components/MarkdownEditor.d.ts +129 -0
  866. package/dist/types/components/Menu.d.ts +157 -0
  867. package/dist/types/components/Navigation.d.ts +67 -0
  868. package/dist/types/components/NumberInput.d.ts +177 -0
  869. package/dist/types/components/OTPInput.d.ts +13 -0
  870. package/dist/types/components/OrderedEntityManager.d.ts +64 -0
  871. package/dist/types/components/PagedWindowList.d.ts +23 -0
  872. package/dist/types/components/PaginationBar.d.ts +31 -0
  873. package/dist/types/components/Panel.d.ts +94 -0
  874. package/dist/types/components/PasswordInput.d.ts +7 -0
  875. package/dist/types/components/PasswordRequirements.d.ts +11 -0
  876. package/dist/types/components/PatchDiff.d.ts +38 -0
  877. package/dist/types/components/PendingVeil.d.ts +8 -0
  878. package/dist/types/components/Popover.d.ts +231 -0
  879. package/dist/types/components/Progress.d.ts +580 -0
  880. package/dist/types/components/RatingScale.d.ts +30 -0
  881. package/dist/types/components/ReadMore.d.ts +26 -0
  882. package/dist/types/components/RecordCard.d.ts +413 -0
  883. package/dist/types/components/RelativeTime.d.ts +17 -0
  884. package/dist/types/components/SandboxedFrame.d.ts +37 -0
  885. package/dist/types/components/SearchInput.d.ts +6 -0
  886. package/dist/types/components/SecretField.d.ts +90 -0
  887. package/dist/types/components/SectionNav.d.ts +15 -0
  888. package/dist/types/components/Select.d.ts +53 -0
  889. package/dist/types/components/SequenceDiagram.d.ts +15 -0
  890. package/dist/types/components/SettingRow.d.ts +144 -0
  891. package/dist/types/components/SignOffRings.d.ts +29 -0
  892. package/dist/types/components/Slider.d.ts +255 -0
  893. package/dist/types/components/SolutionChoice.d.ts +49 -0
  894. package/dist/types/components/SortMenu.d.ts +45 -0
  895. package/dist/types/components/Spinner.d.ts +29 -0
  896. package/dist/types/components/Stat.d.ts +136 -0
  897. package/dist/types/components/StatusSelect.d.ts +93 -0
  898. package/dist/types/components/Surface.d.ts +145 -0
  899. package/dist/types/components/Table.d.ts +164 -0
  900. package/dist/types/components/Tabs.d.ts +142 -0
  901. package/dist/types/components/ThemeMenu.d.ts +56 -0
  902. package/dist/types/components/Toast.d.ts +63 -0
  903. package/dist/types/components/Toggle.d.ts +168 -0
  904. package/dist/types/components/ToggleMatrix.d.ts +51 -0
  905. package/dist/types/components/Tree.d.ts +20 -0
  906. package/dist/types/components/TriStateSwitch.d.ts +63 -0
  907. package/dist/types/components/VideoPlayer.d.ts +26 -0
  908. package/dist/types/components/auth/AcceptInvitationCard.d.ts +54 -0
  909. package/dist/types/components/auth/AuthLayout.d.ts +12 -0
  910. package/dist/types/components/auth/ForgotPasswordForm.d.ts +6 -0
  911. package/dist/types/components/auth/LoginForm.d.ts +13 -0
  912. package/dist/types/components/auth/ResetPasswordForm.d.ts +9 -0
  913. package/dist/types/components/auth/SignInProviders.d.ts +56 -0
  914. package/dist/types/components/auth/SignupCard.d.ts +62 -0
  915. package/dist/types/components/auth/TermsAcceptance.d.ts +14 -0
  916. package/dist/types/components/auth/index.d.ts +8 -0
  917. package/dist/types/components/board/context.d.ts +65 -0
  918. package/dist/types/components/board/recipe.d.ts +97 -0
  919. package/dist/types/components/calendar/CalendarMonth.d.ts +32 -0
  920. package/dist/types/components/calendar/CalendarTimeGrid.d.ts +74 -0
  921. package/dist/types/components/calendar/EventActions.d.ts +16 -0
  922. package/dist/types/components/calendar/format.d.ts +42 -0
  923. package/dist/types/components/calendar/palette.d.ts +17 -0
  924. package/dist/types/components/calendar/use-calendar-drag.d.ts +53 -0
  925. package/dist/types/components/calendar/use-event-keyboard.d.ts +23 -0
  926. package/dist/types/components/calendar/use-grid-navigation.d.ts +47 -0
  927. package/dist/types/components/calendar/use-now.d.ts +20 -0
  928. package/dist/types/components/card-face/AcRingGlyph.d.ts +20 -0
  929. package/dist/types/components/card-face/BoardCardAgentSlot.d.ts +19 -0
  930. package/dist/types/components/card-face/CardFace.d.ts +106 -0
  931. package/dist/types/components/card-face/CardTypeBadge.d.ts +21 -0
  932. package/dist/types/components/card-face/EffortBadge.d.ts +9 -0
  933. package/dist/types/components/card-face/GateRingGlyph.d.ts +22 -0
  934. package/dist/types/components/card-face/OverflowRow.d.ts +40 -0
  935. package/dist/types/components/card-face/TapTip.d.ts +15 -0
  936. package/dist/types/components/card-face/hit-area.d.ts +20 -0
  937. package/dist/types/components/card-face/vocabulary.d.ts +83 -0
  938. package/dist/types/components/chart/BarList.d.ts +27 -0
  939. package/dist/types/components/chart/LineChart.d.ts +64 -0
  940. package/dist/types/components/chart/ShareBar.d.ts +26 -0
  941. package/dist/types/components/chart/TimeSeriesChart.d.ts +60 -0
  942. package/dist/types/components/chart/label-metrics.d.ts +9 -0
  943. package/dist/types/components/chart/line-chart-axis.d.ts +14 -0
  944. package/dist/types/components/chart/line-chart-scale.d.ts +55 -0
  945. package/dist/types/components/chart/line-series-style.d.ts +14 -0
  946. package/dist/types/components/chart/share-bar-labels.d.ts +17 -0
  947. package/dist/types/components/chart/shared.d.ts +122 -0
  948. package/dist/types/components/chart/time-series-scale.d.ts +29 -0
  949. package/dist/types/components/chat/Attachment.d.ts +125 -0
  950. package/dist/types/components/chat/Chat.d.ts +60 -0
  951. package/dist/types/components/chat/Composer.d.ts +62 -0
  952. package/dist/types/components/chat/ContextMeter.d.ts +45 -0
  953. package/dist/types/components/chat/EffortControl.d.ts +23 -0
  954. package/dist/types/components/chat/FileCover.d.ts +14 -0
  955. package/dist/types/components/chat/Message.d.ts +66 -0
  956. package/dist/types/components/chat/MessageScroller.d.ts +18 -0
  957. package/dist/types/components/chat/ModelSelector.d.ts +44 -0
  958. package/dist/types/components/chat/StreamingMarkdown.d.ts +11 -0
  959. package/dist/types/components/chat/download-file.d.ts +7 -0
  960. package/dist/types/components/chat/file-icon.d.ts +29 -0
  961. package/dist/types/components/chat/types.d.ts +165 -0
  962. package/dist/types/components/checklist/StatusChecklist.d.ts +37 -0
  963. package/dist/types/components/checklist/index.d.ts +3 -0
  964. package/dist/types/components/checklist/tally.d.ts +19 -0
  965. package/dist/types/components/checklist/types.d.ts +28 -0
  966. package/dist/types/components/code-editor/context.d.ts +32 -0
  967. package/dist/types/components/code-editor/editing.d.ts +39 -0
  968. package/dist/types/components/code-editor/highlight.d.ts +20 -0
  969. package/dist/types/components/code-editor/recipe.d.ts +109 -0
  970. package/dist/types/components/date-timeline/DateTimeline.d.ts +99 -0
  971. package/dist/types/components/date-timeline/TimelineRow.d.ts +22 -0
  972. package/dist/types/components/date-timeline/useBarDrag.d.ts +15 -0
  973. package/dist/types/components/date-timeline/useMarkerDrag.d.ts +14 -0
  974. package/dist/types/components/date-timeline/useTimelineZoom.d.ts +23 -0
  975. package/dist/types/components/drag-drop/context.d.ts +85 -0
  976. package/dist/types/components/drag-drop/recipe.d.ts +163 -0
  977. package/dist/types/components/drag-drop/shift.d.ts +153 -0
  978. package/dist/types/components/edit/activation.d.ts +21 -0
  979. package/dist/types/components/edit/outcome.d.ts +29 -0
  980. package/dist/types/components/edit/use-edit-session.d.ts +77 -0
  981. package/dist/types/components/file-viewer/FileViewer.d.ts +2 -0
  982. package/dist/types/components/file-viewer/PageNumberJumpField.d.ts +9 -0
  983. package/dist/types/components/file-viewer/ViewerControls.d.ts +20 -0
  984. package/dist/types/components/file-viewer/ViewerRail.d.ts +10 -0
  985. package/dist/types/components/file-viewer/ViewerStage.d.ts +22 -0
  986. package/dist/types/components/file-viewer/frames.d.ts +28 -0
  987. package/dist/types/components/file-viewer/index.d.ts +3 -0
  988. package/dist/types/components/file-viewer/types.d.ts +70 -0
  989. package/dist/types/components/file-viewer/use-frame-cursor.d.ts +13 -0
  990. package/dist/types/components/file-viewer/use-viewer-keys.d.ts +24 -0
  991. package/dist/types/components/file-viewer/use-viewer-zoom.d.ts +29 -0
  992. package/dist/types/components/focus-web/FocusWeb.d.ts +3 -0
  993. package/dist/types/components/focus-web/index.d.ts +4 -0
  994. package/dist/types/components/focus-web/layout.d.ts +55 -0
  995. package/dist/types/components/focus-web/types.d.ts +131 -0
  996. package/dist/types/components/graph-explorer/GraphExplorer.d.ts +42 -0
  997. package/dist/types/components/graph-explorer/camera-math.d.ts +119 -0
  998. package/dist/types/components/graph-explorer/index.d.ts +5 -0
  999. package/dist/types/components/graph-explorer/tree-layout.d.ts +67 -0
  1000. package/dist/types/components/graph-explorer/types.d.ts +62 -0
  1001. package/dist/types/components/graph-explorer/use-camera.d.ts +81 -0
  1002. package/dist/types/components/graph-explorer/viewport-gesture.d.ts +32 -0
  1003. package/dist/types/components/kanban/KanbanBoard.d.ts +72 -0
  1004. package/dist/types/components/kanban/recipe.d.ts +73 -0
  1005. package/dist/types/components/kanban/types.d.ts +55 -0
  1006. package/dist/types/components/markdown/Affordances.d.ts +105 -0
  1007. package/dist/types/components/markdown/AttachmentStrip.d.ts +25 -0
  1008. package/dist/types/components/markdown/ImageUpload.d.ts +56 -0
  1009. package/dist/types/components/media-error.d.ts +11 -0
  1010. package/dist/types/components/nav-sections.d.ts +10 -0
  1011. package/dist/types/components/node-canvas/NodeCanvas.d.ts +66 -0
  1012. package/dist/types/components/node-canvas/index.d.ts +3 -0
  1013. package/dist/types/components/node-canvas/layout.d.ts +29 -0
  1014. package/dist/types/components/node-canvas/types.d.ts +207 -0
  1015. package/dist/types/components/node-canvas/use-canvas-gestures.d.ts +39 -0
  1016. package/dist/types/components/openapi/OpenApiViewer.d.ts +14 -0
  1017. package/dist/types/components/openapi/OperationCard.d.ts +33 -0
  1018. package/dist/types/components/openapi/SchemaView.d.ts +14 -0
  1019. package/dist/types/components/openapi/index.d.ts +6 -0
  1020. package/dist/types/components/openapi/resolve.d.ts +72 -0
  1021. package/dist/types/components/openapi/types.d.ts +128 -0
  1022. package/dist/types/components/overlay-shell.d.ts +48 -0
  1023. package/dist/types/components/overlay-stack.d.ts +18 -0
  1024. package/dist/types/components/paged-window/PageBlock.d.ts +31 -0
  1025. package/dist/types/components/provenance/ConfidenceBar.d.ts +118 -0
  1026. package/dist/types/components/provenance/ConfidenceMeter.d.ts +21 -0
  1027. package/dist/types/components/provenance/ConfidenceReadout.d.ts +17 -0
  1028. package/dist/types/components/provenance/ProvenanceBadge.d.ts +23 -0
  1029. package/dist/types/components/provenance/ProvenanceDetail.d.ts +109 -0
  1030. package/dist/types/components/provenance/ProvenanceDisclosure.d.ts +107 -0
  1031. package/dist/types/components/provenance/absence.d.ts +37 -0
  1032. package/dist/types/components/provenance/index.d.ts +7 -0
  1033. package/dist/types/components/provenance/types.d.ts +137 -0
  1034. package/dist/types/components/rbac/AccessRequestPanel.d.ts +92 -0
  1035. package/dist/types/components/rbac/AccountMenu.d.ts +46 -0
  1036. package/dist/types/components/rbac/AgentKeysList.d.ts +20 -0
  1037. package/dist/types/components/rbac/ApiKeysPanel.d.ts +26 -0
  1038. package/dist/types/components/rbac/ApiKeysTable.d.ts +63 -0
  1039. package/dist/types/components/rbac/Brand.d.ts +8 -0
  1040. package/dist/types/components/rbac/Can.d.ts +19 -0
  1041. package/dist/types/components/rbac/ChangePasswordForm.d.ts +18 -0
  1042. package/dist/types/components/rbac/DangerZone.d.ts +8 -0
  1043. package/dist/types/components/rbac/DevToolsPopover.d.ts +36 -0
  1044. package/dist/types/components/rbac/EndedLine.d.ts +21 -0
  1045. package/dist/types/components/rbac/InvitationsList.d.ts +39 -0
  1046. package/dist/types/components/rbac/InviteMembersDialog.d.ts +21 -0
  1047. package/dist/types/components/rbac/MembersPanel.d.ts +31 -0
  1048. package/dist/types/components/rbac/PermissionRequestPanel.d.ts +36 -0
  1049. package/dist/types/components/rbac/ProfileForm.d.ts +27 -0
  1050. package/dist/types/components/rbac/ProfilePage.d.ts +16 -0
  1051. package/dist/types/components/rbac/RBACProvider.d.ts +69 -0
  1052. package/dist/types/components/rbac/RoleEditorDialog.d.ts +28 -0
  1053. package/dist/types/components/rbac/RoleKeyPicker.d.ts +24 -0
  1054. package/dist/types/components/rbac/RolePermissionMatrix.d.ts +21 -0
  1055. package/dist/types/components/rbac/RolesPermissionsPage.d.ts +24 -0
  1056. package/dist/types/components/rbac/SessionsList.d.ts +35 -0
  1057. package/dist/types/components/rbac/TeamSettingsForm.d.ts +22 -0
  1058. package/dist/types/components/rbac/TeamSwitcher.d.ts +5 -0
  1059. package/dist/types/components/rbac/approvalPanelParts.d.ts +69 -0
  1060. package/dist/types/components/rbac/index.d.ts +25 -0
  1061. package/dist/types/components/rbac/permissionSections.d.ts +8 -0
  1062. package/dist/types/components/rbac/stagedForm.d.ts +25 -0
  1063. package/dist/types/components/rbac/types.d.ts +65 -0
  1064. package/dist/types/components/rbac/useStagedImage.d.ts +15 -0
  1065. package/dist/types/components/roadmap/PhaseManager.d.ts +19 -0
  1066. package/dist/types/components/roadmap/RoadmapItemCard.d.ts +51 -0
  1067. package/dist/types/components/roadmap/RoadmapPage.d.ts +12 -0
  1068. package/dist/types/components/roadmap/RoadmapSwimlaneBoard.d.ts +15 -0
  1069. package/dist/types/components/roadmap/TrackManager.d.ts +19 -0
  1070. package/dist/types/components/roadmap/UseCaseCard.d.ts +30 -0
  1071. package/dist/types/components/roadmap/UseCaseLedgerPage.d.ts +29 -0
  1072. package/dist/types/components/roadmap/chip-tones.d.ts +2 -0
  1073. package/dist/types/components/roadmap/derive.d.ts +39 -0
  1074. package/dist/types/components/roadmap/index.d.ts +10 -0
  1075. package/dist/types/components/roadmap/types.d.ts +86 -0
  1076. package/dist/types/components/stepper/Stepper.d.ts +79 -0
  1077. package/dist/types/components/stepper/derive.d.ts +49 -0
  1078. package/dist/types/components/stepper/index.d.ts +3 -0
  1079. package/dist/types/components/stepper/types.d.ts +118 -0
  1080. package/dist/types/icons/data.d.ts +2054 -0
  1081. package/dist/types/index.d.ts +209 -0
  1082. package/dist/types/lib/attention.d.ts +62 -0
  1083. package/dist/types/lib/board/anchor.d.ts +69 -0
  1084. package/dist/types/lib/board/index.d.ts +17 -0
  1085. package/dist/types/lib/board/model.d.ts +43 -0
  1086. package/dist/types/lib/board/move.d.ts +181 -0
  1087. package/dist/types/lib/board/position.d.ts +22 -0
  1088. package/dist/types/lib/board/rejection.d.ts +8 -0
  1089. package/dist/types/lib/board/types.d.ts +294 -0
  1090. package/dist/types/lib/board/use-board.d.ts +47 -0
  1091. package/dist/types/lib/calendar/band-packer.d.ts +53 -0
  1092. package/dist/types/lib/calendar/drag.d.ts +125 -0
  1093. package/dist/types/lib/calendar/index.d.ts +4 -0
  1094. package/dist/types/lib/calendar/lane-packer.d.ts +88 -0
  1095. package/dist/types/lib/calendar/segments.d.ts +91 -0
  1096. package/dist/types/lib/calendar/types.d.ts +166 -0
  1097. package/dist/types/lib/chart-palette.d.ts +14 -0
  1098. package/dist/types/lib/clipboard.d.ts +12 -0
  1099. package/dist/types/lib/cn.d.ts +7 -0
  1100. package/dist/types/lib/color.d.ts +14 -0
  1101. package/dist/types/lib/component-guidance.d.ts +15 -0
  1102. package/dist/types/lib/confidence.d.ts +28 -0
  1103. package/dist/types/lib/date-timeline/scale.d.ts +143 -0
  1104. package/dist/types/lib/design-frame/document.d.ts +39 -0
  1105. package/dist/types/lib/design-frame/mini-app-script.d.ts +29 -0
  1106. package/dist/types/lib/design-frame/mini-app.d.ts +17 -0
  1107. package/dist/types/lib/design-frame/protocol.d.ts +78 -0
  1108. package/dist/types/lib/dev-warn.d.ts +10 -0
  1109. package/dist/types/lib/dnd/announce.d.ts +124 -0
  1110. package/dist/types/lib/dnd/autoscroll.d.ts +88 -0
  1111. package/dist/types/lib/dnd/cross-drop.d.ts +18 -0
  1112. package/dist/types/lib/dnd/geometry.d.ts +126 -0
  1113. package/dist/types/lib/dnd/index.d.ts +17 -0
  1114. package/dist/types/lib/dnd/sensors/gesture.d.ts +37 -0
  1115. package/dist/types/lib/dnd/sensors/keyboard.d.ts +54 -0
  1116. package/dist/types/lib/dnd/sensors/pointer.d.ts +59 -0
  1117. package/dist/types/lib/dnd/session.d.ts +124 -0
  1118. package/dist/types/lib/dnd/types.d.ts +226 -0
  1119. package/dist/types/lib/dnd/use-drag.d.ts +82 -0
  1120. package/dist/types/lib/dom/scroll-ancestor.d.ts +15 -0
  1121. package/dist/types/lib/format.d.ts +33 -0
  1122. package/dist/types/lib/group-in-order.d.ts +13 -0
  1123. package/dist/types/lib/header-fold.d.ts +10 -0
  1124. package/dist/types/lib/i18n/areas/auth-provenance-flows.d.ts +287 -0
  1125. package/dist/types/lib/i18n/areas/board.d.ts +51 -0
  1126. package/dist/types/lib/i18n/areas/card-face.d.ts +8 -0
  1127. package/dist/types/lib/i18n/areas/chat-chart.d.ts +202 -0
  1128. package/dist/types/lib/i18n/areas/code-editor.d.ts +40 -0
  1129. package/dist/types/lib/i18n/areas/date-timeline.d.ts +36 -0
  1130. package/dist/types/lib/i18n/areas/dates.d.ts +103 -0
  1131. package/dist/types/lib/i18n/areas/docs-views.d.ts +297 -0
  1132. package/dist/types/lib/i18n/areas/feedback.d.ts +132 -0
  1133. package/dist/types/lib/i18n/areas/formats.d.ts +30 -0
  1134. package/dist/types/lib/i18n/areas/forms.d.ts +182 -0
  1135. package/dist/types/lib/i18n/areas/keys.d.ts +15 -0
  1136. package/dist/types/lib/i18n/areas/markdown.d.ts +150 -0
  1137. package/dist/types/lib/i18n/areas/move-rejected.d.ts +16 -0
  1138. package/dist/types/lib/i18n/areas/navigation.d.ts +185 -0
  1139. package/dist/types/lib/i18n/areas/rbac.d.ts +633 -0
  1140. package/dist/types/lib/i18n/emphasis.d.ts +3 -0
  1141. package/dist/types/lib/i18n/index.d.ts +10 -0
  1142. package/dist/types/lib/i18n/number-format.d.ts +5 -0
  1143. package/dist/types/lib/i18n/plural.d.ts +7 -0
  1144. package/dist/types/lib/i18n/provider.d.ts +16 -0
  1145. package/dist/types/lib/i18n/strings.d.ts +18 -0
  1146. package/dist/types/lib/icons.d.ts +22 -0
  1147. package/dist/types/lib/interactive-target.d.ts +3 -0
  1148. package/dist/types/lib/intl-cache.d.ts +31 -0
  1149. package/dist/types/lib/legal-document.d.ts +82 -0
  1150. package/dist/types/lib/line-diff-model.d.ts +39 -0
  1151. package/dist/types/lib/markdown/attachments.d.ts +50 -0
  1152. package/dist/types/lib/markdown/caret-map.d.ts +69 -0
  1153. package/dist/types/lib/markdown/caret.d.ts +6 -0
  1154. package/dist/types/lib/markdown/commands.d.ts +186 -0
  1155. package/dist/types/lib/markdown/convert.d.ts +99 -0
  1156. package/dist/types/lib/markdown/dom.d.ts +30 -0
  1157. package/dist/types/lib/markdown/edit.d.ts +16 -0
  1158. package/dist/types/lib/markdown/history.d.ts +59 -0
  1159. package/dist/types/lib/markdown/hotkeys.d.ts +63 -0
  1160. package/dist/types/lib/markdown/image-pipeline.d.ts +173 -0
  1161. package/dist/types/lib/markdown/images.d.ts +138 -0
  1162. package/dist/types/lib/markdown/input.d.ts +38 -0
  1163. package/dist/types/lib/markdown/keys.d.ts +34 -0
  1164. package/dist/types/lib/markdown/paste.d.ts +9 -0
  1165. package/dist/types/lib/markdown/position.d.ts +43 -0
  1166. package/dist/types/lib/markdown/project.d.ts +88 -0
  1167. package/dist/types/lib/markdown/reconcile.d.ts +63 -0
  1168. package/dist/types/lib/markdown/surface.d.ts +236 -0
  1169. package/dist/types/lib/motion.d.ts +30 -0
  1170. package/dist/types/lib/pad.d.ts +6 -0
  1171. package/dist/types/lib/paged-window/index.d.ts +2 -0
  1172. package/dist/types/lib/paged-window/layout.d.ts +21 -0
  1173. package/dist/types/lib/paged-window/list-owner.d.ts +12 -0
  1174. package/dist/types/lib/paged-window/records-binding.d.ts +102 -0
  1175. package/dist/types/lib/paged-window/store.d.ts +307 -0
  1176. package/dist/types/lib/paged-window/use-measured-pitch.d.ts +34 -0
  1177. package/dist/types/lib/paged-window/use-page-visibility.d.ts +20 -0
  1178. package/dist/types/lib/paged-window/use-paged-window.d.ts +61 -0
  1179. package/dist/types/lib/paged-window/use-scroll-root.d.ts +18 -0
  1180. package/dist/types/lib/persist.d.ts +57 -0
  1181. package/dist/types/lib/preference-values.d.ts +72 -0
  1182. package/dist/types/lib/preferences.d.ts +26 -0
  1183. package/dist/types/lib/reads/hooks.d.ts +49 -0
  1184. package/dist/types/lib/reads/index.d.ts +5 -0
  1185. package/dist/types/lib/reads/optimistic.d.ts +119 -0
  1186. package/dist/types/lib/reads/refetch.d.ts +83 -0
  1187. package/dist/types/lib/reads/slots.d.ts +137 -0
  1188. package/dist/types/lib/reads/types.d.ts +155 -0
  1189. package/dist/types/lib/realtime/hooks.d.ts +38 -0
  1190. package/dist/types/lib/realtime/index.d.ts +4 -0
  1191. package/dist/types/lib/realtime/provider.d.ts +38 -0
  1192. package/dist/types/lib/realtime/registry.d.ts +225 -0
  1193. package/dist/types/lib/realtime/types.d.ts +242 -0
  1194. package/dist/types/lib/records/define-record-type.d.ts +29 -0
  1195. package/dist/types/lib/records/hooks.d.ts +46 -0
  1196. package/dist/types/lib/records/index.d.ts +5 -0
  1197. package/dist/types/lib/records/store.d.ts +289 -0
  1198. package/dist/types/lib/records/types.d.ts +195 -0
  1199. package/dist/types/lib/records/wire.d.ts +96 -0
  1200. package/dist/types/lib/reduced-motion-help.d.ts +23 -0
  1201. package/dist/types/lib/scroll-caret.d.ts +6 -0
  1202. package/dist/types/lib/sim/createSimStore.d.ts +18 -0
  1203. package/dist/types/lib/sim/index.d.ts +5 -0
  1204. package/dist/types/lib/sim/latency.d.ts +10 -0
  1205. package/dist/types/lib/sim/registry.d.ts +14 -0
  1206. package/dist/types/lib/sim/settings.d.ts +11 -0
  1207. package/dist/types/lib/sim/types.d.ts +3 -0
  1208. package/dist/types/lib/submit-shortcut.d.ts +24 -0
  1209. package/dist/types/lib/syntax/index.d.ts +16 -0
  1210. package/dist/types/lib/syntax/languages/bash.d.ts +1 -0
  1211. package/dist/types/lib/syntax/languages/css.d.ts +1 -0
  1212. package/dist/types/lib/syntax/languages/html.d.ts +17 -0
  1213. package/dist/types/lib/syntax/languages/index.d.ts +33 -0
  1214. package/dist/types/lib/syntax/languages/javascript.d.ts +22 -0
  1215. package/dist/types/lib/syntax/languages/json.d.ts +1 -0
  1216. package/dist/types/lib/syntax/languages/mongodb.d.ts +1 -0
  1217. package/dist/types/lib/syntax/languages/plain.d.ts +9 -0
  1218. package/dist/types/lib/syntax/languages/sql.d.ts +4 -0
  1219. package/dist/types/lib/syntax/languages/vue.d.ts +1 -0
  1220. package/dist/types/lib/syntax/languages/yaml.d.ts +1 -0
  1221. package/dist/types/lib/syntax/markdown/frames.d.ts +145 -0
  1222. package/dist/types/lib/syntax/markdown/grammar.d.ts +1 -0
  1223. package/dist/types/lib/syntax/markdown/index.d.ts +5 -0
  1224. package/dist/types/lib/syntax/markdown/inline.d.ts +21 -0
  1225. package/dist/types/lib/syntax/markdown/parse.d.ts +15 -0
  1226. package/dist/types/lib/syntax/markdown/refs.d.ts +47 -0
  1227. package/dist/types/lib/syntax/markdown/render.d.ts +25 -0
  1228. package/dist/types/lib/syntax/markdown/spans.d.ts +84 -0
  1229. package/dist/types/lib/syntax/markdown/types.d.ts +108 -0
  1230. package/dist/types/lib/syntax/registry.d.ts +37 -0
  1231. package/dist/types/lib/syntax/tokenize.d.ts +17 -0
  1232. package/dist/types/lib/syntax/types.d.ts +119 -0
  1233. package/dist/types/lib/time/index.d.ts +4 -0
  1234. package/dist/types/lib/time/instant.d.ts +2 -0
  1235. package/dist/types/lib/time/plain.d.ts +61 -0
  1236. package/dist/types/lib/time/relativeAge.d.ts +18 -0
  1237. package/dist/types/lib/time/relativeClock.d.ts +8 -0
  1238. package/dist/types/lib/time/types.d.ts +87 -0
  1239. package/dist/types/lib/time/zone.d.ts +106 -0
  1240. package/dist/types/lib/use-controllable.d.ts +14 -0
  1241. package/dist/types/lib/use-fill-height.d.ts +26 -0
  1242. package/dist/types/lib/use-hydrated.d.ts +8 -0
  1243. package/dist/types/lib/use-media-query.d.ts +29 -0
  1244. package/dist/types/lib/use-relabel-base-ui-dismiss.d.ts +6 -0
  1245. package/dist/types/lib/use-release-snap-drag.d.ts +25 -0
  1246. package/dist/types/lib/use-roving-options.d.ts +10 -0
  1247. package/dist/types/lib/values/absent.d.ts +7 -0
  1248. package/dist/types/lib/values/boolean.d.ts +29 -0
  1249. package/dist/types/lib/values/currency.d.ts +22 -0
  1250. package/dist/types/lib/values/date.d.ts +30 -0
  1251. package/dist/types/lib/values/datetime.d.ts +48 -0
  1252. package/dist/types/lib/values/index.d.ts +5 -0
  1253. package/dist/types/lib/values/locale-date.d.ts +34 -0
  1254. package/dist/types/lib/values/number.d.ts +27 -0
  1255. package/dist/types/pure.d.ts +48 -0
  1256. package/package.json +136 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Drawer.js","sources":["../../src/components/Drawer.tsx"],"sourcesContent":["import { useCallback, useRef, type ReactNode, type Ref } from \"react\";\nimport { Dialog as BaseDialog } from \"@base-ui/react/dialog\";\nimport { tv, type VariantProps } from \"tailwind-variants\";\nimport { cn } from \"../lib/cn\";\nimport { useUiStrings } from \"../lib/i18n\";\nimport { Icon } from \"./Icon\";\nimport { IconButton } from \"./IconButton\";\nimport { useDialogFinalFocus, useSupersedePopovers } from \"./Dialog\";\nimport { overlayBackdropClassName, OVERLAY_HEADER_ACTIONS_CLASS, OVERLAY_HEADER_ACTIONS_GROW_CLASS, OVERLAY_POPUP_SURFACE } from \"./overlay-shell\";\n\n/* ============================================================================\n DRAWER (DX-5545)\n\n A panel that slides in from a side edge, full height, over the page. It is the\n Dialog's sibling for content that is read alongside the page rather than\n answered: a timeline, a thread, a detail pane. Same modal behaviour as Dialog\n (focus trap, Escape, outside click, focus returned to the opener, popovers\n around it superseded), same near-full-width default (DX-5257), and full width\n on a phone.\n\n It lives in the page, not in a route: the host owns `open`, so a drawer can be\n driven from the URL and closed by Back.\n ========================================================================= */\n\nconst drawer = tv({\n slots: {\n backdrop: overlayBackdropClassName(),\n popup: [\n \"fixed inset-y-0 z-(--z-modal) flex h-dvh w-full flex-col\",\n OVERLAY_POPUP_SURFACE,\n \"rounded-none border-y-0\",\n \"transition-[var(--tx-colors),translate] duration-(--dur-slower) ease-emphasis\",\n \"data-ending-style:duration-(--dur-exit-slow) data-ending-style:ease-exit\",\n ],\n header: \"flex items-start gap-4 border-b border-border-subtle px-5 pb-4 pt-5 pr-14\",\n close: \"absolute top-4 right-4\",\n titleBlock: \"min-w-0 flex-1\",\n title: \"font-display text-lg font-semibold text-primary text-balance\",\n description: \"mt-1.5 text-sm text-secondary text-pretty\",\n body: \"min-h-0 flex-1 overflow-y-auto px-5 py-5\",\n },\n variants: {\n side: {\n right: { popup: \"right-0 border-r-0 data-starting-style:translate-x-full data-ending-style:translate-x-full\" },\n left: { popup: \"left-0 border-l-0 data-starting-style:-translate-x-full data-ending-style:-translate-x-full\" },\n },\n size: {\n /* The default: most of the screen, because what a drawer holds is read, not glanced at. */\n wide: { popup: \"sm:w-[min(64rem,calc(100vw-2rem))]\" },\n md: { popup: \"sm:w-[min(32rem,calc(100vw-2rem))]\" },\n },\n /* DX-5682: a body the host lays out itself (a split view, a thread with a pinned composer): no\n padding and no scroll of its own, so the content owns both. Same shape as Dialog size=\"full\". */\n flush: { true: { body: \"flex flex-col overflow-hidden p-0\" } },\n /* DXUI-93: set by the Drawer itself from `singleRowHeader`; see the compound variant. */\n bar: { true: {}, false: {} },\n /* DXUI-94: set by the Drawer itself from `headerActionsGrow` / `compactHeader`; see the compound variants. */\n grow: { true: {}, false: {} },\n compact: { true: {}, false: {} },\n },\n compoundVariants: [\n /* DXUI-93: a header opted in with `singleRowHeader` is ONE thin bar, as Dialog's (DX-5682): the title block, the host's\n controls and the close button share a single vertically-centred row, and the close button sits IN the row (see the\n markup) instead of pinned to the corner, so the header costs the body one line, not the title's line plus a padded\n corner. */\n { bar: true, class: { header: \"items-center gap-2 px-4 py-3\", close: \"static flex-none\" } },\n /* DXUI-94: `compactHeader` thins the single-row bar: less padding and a tighter gap. */\n { bar: true, compact: true, class: { header: \"gap-1.5 px-3 py-1.5\" } },\n /* DXUI-94: `headerActionsGrow`: the title block takes only what its content needs, so the host's controls fill the rest. */\n { grow: true, class: { titleBlock: \"flex-initial\" } },\n ],\n defaultVariants: { side: \"right\", size: \"wide\", bar: false, grow: false, compact: false },\n});\n\nexport interface DrawerProps extends Omit<VariantProps<typeof drawer>, \"grow\" | \"compact\"> {\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n title: ReactNode;\n description?: ReactNode;\n /**\n * DXUI-93: the host's own controls in the header row, beside the title and before the close button, as Dialog's `headerActions`\n * (DX-4398). They sit outside the title element, so they are no part of the drawer's accessible name. Focus then starts on the\n * drawer itself, not on the first control: an IconButton's tooltip opens on keyboard focus and would swallow the first Escape.\n */\n headerActions?: ReactNode;\n /**\n * DXUI-93: opt in to ONE thin header row, as Dialog's `singleRowHeader` (DX-5682): the title, the `headerActions` and the close\n * button share a single non-wrapping, vertically centred row, and the close button sits in the row instead of the corner.\n */\n singleRowHeader?: boolean;\n /**\n * DXUI-94: the `headerActions` fill the row beside the title (start-aligned, truncating inside it) instead of hugging the close button, as Dialog's\n * `headerActionsGrow`; the title block then takes only the room its content needs. Without `headerActions` it changes nothing.\n */\n headerActionsGrow?: boolean;\n /** DXUI-94: with `singleRowHeader`, a thinner bar (less padding, a tighter gap, a smaller close button), as Dialog's `compactHeader`. Without `singleRowHeader` it changes nothing. */\n compactHeader?: boolean;\n /** The body has no padding and no scroll of its own: the content lays itself out and owns its scroll regions (DX-5682). */\n flush?: boolean;\n className?: string;\n children?: ReactNode;\n ref?: Ref<HTMLDivElement>;\n}\n\nexport function Drawer({ open, onOpenChange, title, description, headerActions, singleRowHeader, headerActionsGrow, compactHeader, side, size, flush, className, children, ref }: DrawerProps) {\n const s = drawer({ side, size, flush, bar: Boolean(singleRowHeader), grow: Boolean(headerActionsGrow), compact: Boolean(compactHeader) });\n const strings = useUiStrings().dialog;\n const finalFocus = useDialogFinalFocus(open);\n const handleOpenChange = useSupersedePopovers(open, onOpenChange);\n const popupElRef = useRef<HTMLDivElement | null>(null);\n const popupRef = useCallback(\n (el: HTMLDivElement | null) => {\n popupElRef.current = el;\n if (typeof ref === \"function\") ref(el);\n else if (ref) ref.current = el;\n },\n [ref],\n );\n\n const closeSize = singleRowHeader && compactHeader ? \"xs\" : \"sm\";\n const closeButton = (\n <BaseDialog.Close\n render={<IconButton label={strings.close} hideTooltip size={closeSize} icon={<Icon name=\"x\" size={closeSize} />} className={s.close()} />}\n />\n );\n\n return (\n <BaseDialog.Root open={open} onOpenChange={handleOpenChange}>\n <BaseDialog.Portal>\n <BaseDialog.Backdrop className={s.backdrop()} />\n <BaseDialog.Popup\n ref={popupRef}\n className={cn(s.popup(), className)}\n finalFocus={finalFocus}\n initialFocus={headerActions ? () => popupElRef.current : undefined}\n >\n <div className={s.header()}>\n <div className={s.titleBlock()}>\n <BaseDialog.Title className={s.title()}>{title}</BaseDialog.Title>\n {description && <BaseDialog.Description className={s.description()}>{description}</BaseDialog.Description>}\n </div>\n {headerActions && <div className={headerActionsGrow ? OVERLAY_HEADER_ACTIONS_GROW_CLASS : OVERLAY_HEADER_ACTIONS_CLASS}>{headerActions}</div>}\n {singleRowHeader && closeButton}\n </div>\n {/* Pinned to the popup's corner, outside the header row, as Dialog does (the single-row header carries it in the\n row); `hideTooltip` because a Base UI `render` slot merges into ONE element. */}\n {!singleRowHeader && closeButton}\n {children && <div className={s.body()}>{children}</div>}\n </BaseDialog.Popup>\n </BaseDialog.Portal>\n </BaseDialog.Root>\n );\n}\n"],"names":["drawer","tv","overlayBackdropClassName","OVERLAY_POPUP_SURFACE","Drawer","open","onOpenChange","title","description","headerActions","singleRowHeader","headerActionsGrow","compactHeader","side","size","flush","className","children","ref","s","strings","useUiStrings","finalFocus","useDialogFinalFocus","handleOpenChange","useSupersedePopovers","popupElRef","useRef","popupRef","useCallback","el","closeSize","closeButton","jsx","BaseDialog","IconButton","Icon","jsxs","cn","OVERLAY_HEADER_ACTIONS_GROW_CLASS","OVERLAY_HEADER_ACTIONS_CLASS"],"mappings":"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"}
@@ -0,0 +1,110 @@
1
+ import { jsxs as E, jsx as h } from "react/jsx-runtime";
2
+ import { useRef as m, useEffect as b } from "react";
3
+ import { cn as v } from "../lib/cn.js";
4
+ import { useControllable as x } from "../lib/use-controllable.js";
5
+ import { assertActivationPair as C } from "./edit/activation.js";
6
+ import { Icon as y } from "./Icon.js";
7
+ import { IconButton as w } from "./IconButton.js";
8
+ function G({
9
+ label: n,
10
+ children: t,
11
+ editing: e,
12
+ onEditingChange: o,
13
+ disabled: i,
14
+ className: r,
15
+ size: u = "sm"
16
+ }) {
17
+ C("EditGutter", e, o);
18
+ const [c, f] = x(e, !1, o), s = m(null), a = m(null), l = !c && !i, p = m("");
19
+ N(s, a, l), F(s, a, c);
20
+ function d(g) {
21
+ p.current !== "touch" || !l || g.target.closest("a, button, input, textarea, select, [role='button']") === null && f(!0);
22
+ }
23
+ return /* @__PURE__ */ E(
24
+ "div",
25
+ {
26
+ ref: s,
27
+ "data-slot": "edit-gutter",
28
+ "data-editing": c || void 0,
29
+ onPointerDown: (g) => {
30
+ p.current = g.pointerType;
31
+ },
32
+ onClick: d,
33
+ className: v("group/edit-gutter relative min-w-0", r),
34
+ children: [
35
+ l && /* @__PURE__ */ h(
36
+ "span",
37
+ {
38
+ ref: a,
39
+ "data-slot": "edit-gutter-pencil",
40
+ className: v(
41
+ "absolute top-0 right-full z-10 flex",
42
+ "transition-[var(--tx-colors),opacity] duration-(--dur-fast)",
43
+ // DX-3623 — reveal on real HOVER or the pencil's OWN
44
+ // `:focus-visible` (never `focus-within`, which also fires for
45
+ // the M2 return-focus programmatic `.focus()` after a
46
+ // pointer-driven close — see the module comment). DX-4280:
47
+ // a touch pointer opens the field by tapping the text instead.
48
+ "opacity-0 pointer-events-none",
49
+ "[@media(any-hover:hover)]:group-hover/edit-gutter:opacity-100",
50
+ "[@media(any-hover:hover)]:group-hover/edit-gutter:pointer-events-auto",
51
+ "has-focus-visible:opacity-100 has-focus-visible:pointer-events-auto"
52
+ ),
53
+ children: /* @__PURE__ */ h(w, { icon: /* @__PURE__ */ h(y, { name: "pencil", size: u }), label: n, size: u, onClick: () => f(!0) })
54
+ }
55
+ ),
56
+ t({ editing: c, onEditingChange: f })
57
+ ]
58
+ }
59
+ );
60
+ }
61
+ function R(n, t) {
62
+ return document.createTreeWalker(n, NodeFilter.SHOW_TEXT, {
63
+ acceptNode: (o) => t !== null && t.contains(o) || (o.textContent ?? "").trim() === "" ? NodeFilter.FILTER_REJECT : NodeFilter.FILTER_ACCEPT
64
+ }).nextNode();
65
+ }
66
+ function T(n) {
67
+ for (let t = n.parentElement; t !== null && t !== document.body; t = t.parentElement) {
68
+ const { overflowX: e } = getComputedStyle(t);
69
+ if (e !== "visible") return t;
70
+ }
71
+ return null;
72
+ }
73
+ function N(n, t, e) {
74
+ const o = m(!1);
75
+ b(() => {
76
+ const i = n.current, r = t.current;
77
+ if (!e || !i || !r) return;
78
+ function u() {
79
+ if (!i || !r) return;
80
+ const f = i.getBoundingClientRect(), s = r.getBoundingClientRect(), a = R(i, r);
81
+ if (a !== null) {
82
+ const p = document.createRange();
83
+ p.selectNodeContents(a);
84
+ const d = p.getClientRects()[0];
85
+ d !== void 0 && d.height > 0 && (r.style.top = `${d.top - f.top + (d.height - s.height) / 2}px`);
86
+ }
87
+ const l = T(i);
88
+ l !== null && !o.current && s.left < l.getBoundingClientRect().left && (o.current = !0, console.warn(
89
+ "[danxbot] EditGutter: an ancestor with `overflow` other than visible clips the pencil — it sits in the gutter LEFT of the field, outside its box. Leave that gutter inside the clipping box (padding on the clipping element, or move the overflow further out).",
90
+ l
91
+ ));
92
+ }
93
+ u();
94
+ const c = new ResizeObserver(u);
95
+ return c.observe(i), () => c.disconnect();
96
+ }, [n, t, e]);
97
+ }
98
+ function F(n, t, e) {
99
+ const o = m(e);
100
+ b(() => {
101
+ const i = o.current && !e;
102
+ if (o.current = e, !i) return;
103
+ const r = document.activeElement;
104
+ (r === null || r === document.body || n.current?.contains(r) === !0) && t.current?.querySelector("button")?.focus();
105
+ }, [e, n, t]);
106
+ }
107
+ export {
108
+ G as EditGutter
109
+ };
110
+ //# sourceMappingURL=EditGutter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EditGutter.js","sources":["../../src/components/EditGutter.tsx"],"sourcesContent":["import { useEffect, useRef, type ReactNode } from \"react\";\nimport { cn } from \"../lib/cn\";\nimport { useControllable } from \"../lib/use-controllable\";\nimport { assertActivationPair, type EditActivation } from \"./edit/activation\";\nimport { Icon } from \"./Icon\";\nimport { IconButton } from \"./IconButton\";\n\n/* ============================================================================\n EDIT GUTTER — the pencil that opens a read-only field. DX-3372.\n\n The operator's design for every editable text in danxbot (DX-3371): the\n text is read-only; hovering it shows a pencil floating in the LEFT GUTTER;\n clicking the pencil makes that exact text editable in place and focuses it;\n losing focus saves and ends editing. Every field needs the same pencil, so it\n lives here once instead of being hand-rolled beside each one.\n\n ONE ACTIVATION CONTRACT. This component hands the wrapped field\n `{ editing, onEditingChange }` (`EditActivation`) through a render prop —\n the exact controlled pair `InlineEdit` and `InlineMarkdownEdit` both take.\n So the wrapper knows nothing about which field it wraps: a spread is the\n whole wiring, and a field closing itself (commit, Escape) or declining to\n open (read-only) flows back through the same callback that brings the pencil\n back. `editing` is itself controllable (`useControllable`, like `ReadMore`'s\n `expanded`): pass `editing` + `onEditingChange` to own it, omit both and the\n gutter keeps it.\n\n THE FIELD DECIDES WHETHER IT CAN OPEN (review H3). A read-only field asked\n to open hands `onEditingChange(false)` straight back, so the pencil returns\n instead of vanishing for good. `disabled` is only presentation, for a caller\n that already knows the field is locked: no pencil is rendered at all.\n\n NO LAYOUT SHIFT, BY CONSTRUCTION. The pencil is absolutely positioned at\n `right-full` — outside the wrapper's own box, in the gutter to its left — so\n it contributes nothing to layout in any state. It is revealed by OPACITY\n only, never `display`/`visibility`/size, which would reflow or pull it out\n of the tab order.\n\n THE GUTTER MUST BE LEFT FREE, AND UNCLIPPED. Nothing here reserves it,\n because reserving it would indent the text away from everything aligned\n with it; the page leaves it (a padded column, a page margin). An ancestor\n with `overflow` other than `visible` whose box starts to the right of the\n pencil cuts it off, so the gutter checks for exactly that when it measures\n and says so on the console, once per mount (review M6).\n\n ON THE FIRST LINE. The pencil is centred on the wrapped text's first line\n box, measured from the DOM, rather than pinned to the wrapper's top edge,\n which sits above the text by the field's own padding (review M6).\n\n ACCESSIBLE. The pencil is a real labelled `IconButton` in the tab order at\n all times — invisible to a mouse user until hover, and visible whenever it\n genuinely HOLDS keyboard focus. The `(any-hover: hover)` gate suppresses\n the reveal on a device with a hover-capable pointer; a touch laptop, which\n also has a mouse, still gets the hover reveal (review M6). While the field\n is open the pencil is removed: it would be a second, dead target, and focus\n is already inside the field it opened. When the field closes and focus has\n nowhere better to be — still inside the wrapper, or fallen to `<body>`\n because the open editor unmounted — it returns to the pencil (review M2),\n so a keyboard user's Tab order never dead-ends on a vanished control.\n\n DX-3623 — REVEAL IS `:focus-visible` ON THE BUTTON ITSELF, NEVER\n `:focus-within` ON THE WRAPPER. The pre-DX-3623 CSS revealed on\n `focus-within`, which fires for ANY DOM focus location, including the\n programmatic `.focus()` the M2 return above performs after a plain mouse\n click ends an edit. Browsers suppress `:focus-visible` for a focus that\n followed pointer interaction, so committing a field with a mouse — click\n the text? no, that never opens it; click elsewhere to blur, or press\n Escape with a mouse already having been the last input — leaves the pencil\n invisible even though the M2 return still parks real DOM focus on it. A\n genuine Tab-key user, whose last input WAS the keyboard, still gets\n `:focus-visible` and sees exactly what holds focus. This is what makes the\n pencil stop \"sticking\" after editing (the operator's report) without\n dropping keyboard affordance entirely. `has-focus-visible` (not a bare\n `focus-visible` variant) is used because the pseudo-class lives on the\n `<IconButton>` INSIDE this span, not on the span itself.\n\n DX-4280 — TOUCH: TAP THE TEXT. A phone has no hover to reveal the pencil, and\n the gutter it floats in is usually off the screen's left edge, so a pencil a\n touch user must first find and then hit cannot be relied on. (DX-3623's\n \"tap the text to reveal, then tap the pencil\" left exactly that overhanging,\n half-offscreen target as the only way in.) On a TOUCH pointer a tap on the\n wrapped text IS the activation: `pointerdown` records the pointer type, and\n the `click` that follows opens the field when that type was `touch` — a\n scroll or a long-press selection never produces a click, so neither opens\n it. A tap that lands on an interactive element inside the field (a link in\n rendered markdown, a button) is that element's tap, not ours. A mouse click\n on the text still does nothing (DX-3371): only the pencil opens it there.\n The pencil stays in the tab order and appears on `:focus-visible` for a\n keyboard or switch user; it is never revealed by touch, and being\n `pointer-events-none` until hover or keyboard focus it cannot eat a stray tap.\n ========================================================================= */\n\ninterface EditGutterFieldProps {\n /**\n * The pencil's accessible name — say WHAT it edits (\"Edit title\"), because\n * a screen reader lists it among every other pencil on the page.\n */\n label: string;\n /**\n * Render the field, spreading the activation onto it:\n * `{(edit) => <InlineEdit {...edit} … />}`.\n */\n children: (activation: EditActivation) => ReactNode;\n /** Render no pencil — the field cannot be edited here. */\n disabled?: boolean;\n className?: string;\n /**\n * DX-3623 — `\"sm\"` (default, unchanged) is `--control-sm` (36px on a fine\n * pointer). `\"xs\"` is `--control-xs` (28px on a fine pointer) for a host\n * page whose own left gutter is narrower than 36px — it still fits INSIDE\n * a typical ~32px page gutter with room to spare, where `\"sm\"` would not.\n * Neither size opts out of the coarse-pointer tap floor (`dx-tap`'s\n * `min-width`/`min-height: 44px` under `(pointer: coarse)`): on a touch\n * device the pencil's HIT AREA still grows to the accessible 44px minimum\n * once revealed, deliberately overhanging past a gutter narrower than\n * that — it is a `ghost` button, invisible until pressed, so the extra\n * hit area costs nothing visually and nothing in layout (the pencil is\n * `position: absolute` throughout, so growing it never shifts content).\n */\n size?: \"sm\" | \"xs\";\n}\n\n/**\n * The gutter keeps `editing` itself (omit both), or the caller owns it: pass\n * `editing` AND `onEditingChange` (`EditActivation`) — the pencil then asks\n * through `onEditingChange(true)` and the field's close arrives through\n * `onEditingChange(false)`. One without the other is a type error and throws\n * at render, for the reason `assertActivationPair` gives.\n */\nexport type EditGutterProps = EditGutterFieldProps &\n ({ editing?: undefined; onEditingChange?: (editing: boolean) => void } | EditActivation);\n\nexport function EditGutter({\n label,\n children,\n editing: editingProp,\n onEditingChange,\n disabled,\n className,\n size = \"sm\",\n}: EditGutterProps) {\n assertActivationPair(\"EditGutter\", editingProp, onEditingChange);\n const [editing, setEditing] = useControllable(editingProp, false, onEditingChange);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const pencilSlotRef = useRef<HTMLSpanElement>(null);\n const showPencil = !editing && !disabled;\n // DX-4280: the pointer type of the latest pointerdown, read by the click it precedes.\n const lastPointerType = useRef(\"\");\n\n usePencilPlacement(wrapperRef, pencilSlotRef, showPencil);\n useFocusReturn(wrapperRef, pencilSlotRef, editing);\n\n function handleWrapperClick(event: React.MouseEvent<HTMLDivElement>) {\n if (lastPointerType.current !== \"touch\" || !showPencil) return;\n if ((event.target as Element).closest(\"a, button, input, textarea, select, [role='button']\") !== null) return;\n setEditing(true);\n }\n\n return (\n <div\n ref={wrapperRef}\n data-slot=\"edit-gutter\"\n data-editing={editing || undefined}\n onPointerDown={(event) => {\n lastPointerType.current = event.pointerType;\n }}\n onClick={handleWrapperClick}\n className={cn(\"group/edit-gutter relative min-w-0\", className)}\n >\n {showPencil && (\n <span\n ref={pencilSlotRef}\n data-slot=\"edit-gutter-pencil\"\n className={cn(\n \"absolute top-0 right-full z-10 flex\",\n \"transition-[var(--tx-colors),opacity] duration-(--dur-fast)\",\n // DX-3623 — reveal on real HOVER or the pencil's OWN\n // `:focus-visible` (never `focus-within`, which also fires for\n // the M2 return-focus programmatic `.focus()` after a\n // pointer-driven close — see the module comment). DX-4280:\n // a touch pointer opens the field by tapping the text instead.\n \"opacity-0 pointer-events-none\",\n \"[@media(any-hover:hover)]:group-hover/edit-gutter:opacity-100\",\n \"[@media(any-hover:hover)]:group-hover/edit-gutter:pointer-events-auto\",\n \"has-focus-visible:opacity-100 has-focus-visible:pointer-events-auto\",\n )}\n >\n <IconButton icon={<Icon name=\"pencil\" size={size} />} label={label} size={size} onClick={() => setEditing(true)} />\n </span>\n )}\n {children({ editing, onEditingChange: setEditing })}\n </div>\n );\n}\n\n/** The first text node inside `root` that holds something visible, skipping `skip`. */\nfunction firstTextNode(root: Node, skip: Node | null): Text | null {\n const walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, {\n acceptNode: (node) =>\n (skip !== null && skip.contains(node)) || (node.textContent ?? \"\").trim() === \"\"\n ? NodeFilter.FILTER_REJECT\n : NodeFilter.FILTER_ACCEPT,\n });\n return walker.nextNode() as Text | null;\n}\n\n/** The nearest ancestor that clips horizontally, if any. */\nfunction clippingAncestor(el: HTMLElement): HTMLElement | null {\n for (let node = el.parentElement; node !== null && node !== document.body; node = node.parentElement) {\n const { overflowX } = getComputedStyle(node);\n if (overflowX !== \"visible\") return node;\n }\n return null;\n}\n\n/**\n * Centre the pencil on the first line of text and report a clipping ancestor.\n * Measured when the pencil appears and whenever the wrapper resizes (a reflow\n * can move the first line). A passive effect, not a layout effect, because the\n * wrapped field may write its own text in ITS passive effect (`InlineEdit`\n * does), and a child's passive effects run before this one.\n */\nfunction usePencilPlacement(\n wrapperRef: React.RefObject<HTMLDivElement | null>,\n slotRef: React.RefObject<HTMLSpanElement | null>,\n shown: boolean,\n) {\n const warnedRef = useRef(false);\n useEffect(() => {\n const wrapper = wrapperRef.current;\n const slot = slotRef.current;\n if (!shown || !wrapper || !slot) return;\n function measure() {\n if (!wrapper || !slot) return;\n const box = wrapper.getBoundingClientRect();\n const pencil = slot.getBoundingClientRect();\n const text = firstTextNode(wrapper, slot);\n if (text !== null) {\n const range = document.createRange();\n range.selectNodeContents(text);\n const line = range.getClientRects()[0];\n if (line !== undefined && line.height > 0) {\n slot.style.top = `${line.top - box.top + (line.height - pencil.height) / 2}px`;\n }\n }\n const clipper = clippingAncestor(wrapper);\n if (clipper !== null && !warnedRef.current && pencil.left < clipper.getBoundingClientRect().left) {\n warnedRef.current = true;\n console.warn(\n \"[danxbot] EditGutter: an ancestor with `overflow` other than visible clips the pencil — it sits \" +\n \"in the gutter LEFT of the field, outside its box. Leave that gutter inside the clipping box \" +\n \"(padding on the clipping element, or move the overflow further out).\",\n clipper,\n );\n }\n }\n measure();\n const observer = new ResizeObserver(measure);\n observer.observe(wrapper);\n return () => observer.disconnect();\n }, [wrapperRef, slotRef, shown]);\n}\n\n/**\n * When the field closes, return focus to the pencil if it would otherwise be\n * lost: still inside the wrapper (a field that stays mounted, like\n * `InlineEdit`) or fallen to `<body>` (an editor that unmounted). Focus the\n * reader moved elsewhere is left alone.\n */\nfunction useFocusReturn(\n wrapperRef: React.RefObject<HTMLDivElement | null>,\n slotRef: React.RefObject<HTMLSpanElement | null>,\n editing: boolean,\n) {\n const wasEditingRef = useRef(editing);\n useEffect(() => {\n const closed = wasEditingRef.current && !editing;\n wasEditingRef.current = editing;\n if (!closed) return;\n const active = document.activeElement;\n const lost = active === null || active === document.body || wrapperRef.current?.contains(active) === true;\n if (lost) slotRef.current?.querySelector(\"button\")?.focus();\n }, [editing, wrapperRef, slotRef]);\n}\n"],"names":["EditGutter","label","children","editingProp","onEditingChange","disabled","className","size","assertActivationPair","editing","setEditing","useControllable","wrapperRef","useRef","pencilSlotRef","showPencil","lastPointerType","usePencilPlacement","useFocusReturn","handleWrapperClick","event","jsxs","cn","jsx","IconButton","Icon","firstTextNode","root","skip","node","clippingAncestor","el","overflowX","slotRef","shown","warnedRef","useEffect","wrapper","slot","measure","box","pencil","text","range","line","clipper","observer","wasEditingRef","closed","active"],"mappings":"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"}
@@ -0,0 +1,174 @@
1
+ import { jsxs as z, jsx as n } from "react/jsx-runtime";
2
+ import { useState as f } from "react";
3
+ import { Button as q } from "./Button.js";
4
+ import { Field as K } from "./Field.js";
5
+ import { Icon as S } from "./Icon.js";
6
+ import { Input as Q } from "./Input.js";
7
+ import { Popover as R } from "./Popover.js";
8
+ import { SearchInput as A } from "./SearchInput.js";
9
+ import { cn as I } from "../lib/cn.js";
10
+ import { useRovingOptions as F } from "../lib/use-roving-options.js";
11
+ import { useUiStrings as L } from "../lib/i18n/provider.js";
12
+ const H = [
13
+ ["🚀", "rocket"],
14
+ ["⭐", "star"],
15
+ ["🔥", "fire"],
16
+ ["✅", "check"],
17
+ ["⚠️", "warning"],
18
+ ["🐛", "bug"],
19
+ ["💡", "idea"],
20
+ ["🎯", "target"],
21
+ ["📌", "pin"],
22
+ ["📝", "note"],
23
+ ["🔒", "lock"],
24
+ ["🧪", "test"],
25
+ ["🛠️", "tools"],
26
+ ["📦", "package"],
27
+ ["🎨", "palette"],
28
+ ["💬", "chat"],
29
+ ["⏳", "hourglass"],
30
+ ["🏁", "flag"],
31
+ ["❤️", "heart"],
32
+ ["👀", "eyes"],
33
+ ["🌱", "seedling"],
34
+ ["🧹", "broom"],
35
+ ["📣", "megaphone"],
36
+ ["🔔", "bell"]
37
+ ], T = 160, B = 8, G = new RegExp("\\p{Extended_Pictographic}|\\p{Regional_Indicator}", "u");
38
+ function J(l) {
39
+ return [...new Intl.Segmenter().segment(l)].length === 1 && G.test(l);
40
+ }
41
+ const W = (l) => l;
42
+ function se({
43
+ value: l,
44
+ onChange: o,
45
+ label: s,
46
+ options: g,
47
+ allowCustom: a = !0,
48
+ validateCustom: i = J,
49
+ renderValue: c = W,
50
+ clearable: h = !0,
51
+ searchable: u = !1,
52
+ className: m
53
+ }) {
54
+ const t = L().emojiPicker, [d, p] = f(!1), [k, N] = f(""), [P, x] = f(!1), [O, j] = f(""), v = g ?? H.map(([e, M]) => ({ value: e, glyph: e, label: t.names[M] })), r = l ?? null, y = r !== null ? v.find((e) => e.value === r) : void 0, D = r !== null && !y ? [{ value: r, glyph: c(r), label: r }, ...v] : v, b = O.trim().toLowerCase(), w = b ? D.filter((e) => e.label.toLowerCase().includes(b) || e.value.toLowerCase().includes(b)) : D, U = u ? w.slice(0, T) : w;
55
+ function E(e) {
56
+ p(e), N(""), x(!1), j("");
57
+ }
58
+ function C(e) {
59
+ o(e), E(!1);
60
+ }
61
+ function _() {
62
+ const e = k.trim();
63
+ if (!i(e)) {
64
+ x(!0);
65
+ return;
66
+ }
67
+ C(e);
68
+ }
69
+ return /* @__PURE__ */ z(
70
+ R,
71
+ {
72
+ open: d,
73
+ onOpenChange: E,
74
+ align: "start",
75
+ "aria-label": s,
76
+ trigger: /* @__PURE__ */ n(
77
+ "button",
78
+ {
79
+ type: "button",
80
+ "aria-label": s,
81
+ className: I("dx-tap flex size-7 shrink-0 items-center justify-center rounded-md text-base hover:bg-surface-hover", m),
82
+ children: r !== null ? /* @__PURE__ */ n("span", { "aria-hidden": !0, children: y ? y.glyph : c(r) }) : /* @__PURE__ */ n(S, { name: "smile", size: "sm", className: "text-tertiary" })
83
+ }
84
+ ),
85
+ children: [
86
+ /* @__PURE__ */ n(
87
+ X,
88
+ {
89
+ label: s,
90
+ choices: U,
91
+ current: r,
92
+ onChoose: C,
93
+ search: u ? { query: O, onQuery: j, total: w.length } : void 0
94
+ }
95
+ ),
96
+ a && /* @__PURE__ */ n(K, { label: t.typeLabel, error: P ? t.invalid : void 0, className: "mt-3", children: /* @__PURE__ */ n(
97
+ Q,
98
+ {
99
+ size: "sm",
100
+ value: k,
101
+ onChange: (e) => {
102
+ N(e.target.value), x(!1);
103
+ },
104
+ onKeyDown: (e) => {
105
+ e.key === "Enter" && (e.preventDefault(), _());
106
+ }
107
+ }
108
+ ) }),
109
+ h && r !== null && /* @__PURE__ */ n(q, { size: "sm", variant: "outline", className: "mt-3", leadingIcon: /* @__PURE__ */ n(S, { name: "x", size: "xs" }), onClick: () => C(null), children: t.clear })
110
+ ]
111
+ }
112
+ );
113
+ }
114
+ function X({
115
+ label: l,
116
+ choices: o,
117
+ current: s,
118
+ onChoose: g,
119
+ search: a
120
+ }) {
121
+ const i = L().emojiPicker, { listRef: c, tabIndexFor: h, onKeyDown: u } = F(
122
+ o.length,
123
+ o.findIndex((t) => t.value === s),
124
+ B
125
+ ), m = /* @__PURE__ */ n(
126
+ "div",
127
+ {
128
+ ref: c,
129
+ role: "listbox",
130
+ "aria-label": l,
131
+ onKeyDown: u,
132
+ className: I("grid w-max max-w-full grid-cols-8 gap-1 p-1", a && "max-h-56 overflow-y-auto"),
133
+ children: o.map((t, d) => {
134
+ const p = t.value === s;
135
+ return /* @__PURE__ */ n(
136
+ "button",
137
+ {
138
+ type: "button",
139
+ role: "option",
140
+ "aria-selected": p,
141
+ "aria-label": t.label,
142
+ "data-option-index": d,
143
+ tabIndex: h(d),
144
+ onClick: () => g(t.value),
145
+ className: I("dx-tap flex size-7 items-center justify-center rounded-md text-base", p ? "bg-accent-subtle" : "hover:bg-surface-hover"),
146
+ children: /* @__PURE__ */ n("span", { "aria-hidden": !0, children: t.glyph })
147
+ },
148
+ t.value
149
+ );
150
+ })
151
+ }
152
+ );
153
+ return a ? /* @__PURE__ */ z("div", { className: "flex flex-col gap-2", children: [
154
+ /* @__PURE__ */ n(
155
+ A,
156
+ {
157
+ size: "sm",
158
+ "aria-label": i.search,
159
+ placeholder: i.search,
160
+ value: a.query,
161
+ onValueChange: a.onQuery,
162
+ onKeyDown: (t) => {
163
+ t.key === "ArrowDown" && (t.preventDefault(), c.current?.querySelector('[tabindex="0"]')?.focus());
164
+ }
165
+ }
166
+ ),
167
+ o.length === 0 ? /* @__PURE__ */ n("p", { className: "px-1 text-sm text-tertiary", children: i.noMatches }) : m,
168
+ a.total > o.length && /* @__PURE__ */ n("p", { className: "px-1 text-xs text-tertiary", children: i.showing(o.length, a.total) })
169
+ ] }) : m;
170
+ }
171
+ export {
172
+ se as EmojiPicker
173
+ };
174
+ //# sourceMappingURL=EmojiPicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmojiPicker.js","sources":["../../src/components/EmojiPicker.tsx"],"sourcesContent":["import { useState, type ReactNode } from \"react\";\nimport { Button } from \"./Button\";\nimport { Field } from \"./Field\";\nimport { Icon } from \"./Icon\";\nimport { Input } from \"./Input\";\nimport { Popover } from \"./Popover\";\nimport { SearchInput } from \"./SearchInput\";\nimport { cn } from \"../lib/cn\";\nimport { useUiStrings } from \"../lib/i18n\";\nimport { useRovingOptions } from \"../lib/use-roving-options\";\n\n/* ============================================================================\n EMOJI PICKER - an emoji chosen from a grid, or typed (DXUI-27).\n\n A trigger showing the current emoji that opens a popover of choices, a field\n for a value that is not among them, and an optional \"remove\" button.\n Controlled: `value` in, `onChange` out. The choices are one Tab stop with\n arrow-key navigation (`useRovingOptions`).\n\n THE STORED VALUE IS THE CALLER'S, NOT NECESSARILY A GLYPH. A choice is a\n stored `value`, the `glyph` drawn for it and the spoken `label`. By default\n the value IS the Unicode character and the glyph is the same character, but\n a caller that stores a Slack emoji NAME (`gear`, which is also the reaction\n target) passes options whose value is the name and whose glyph is the\n character, so the trigger shows the glyph and never the raw name. Three\n props adapt the free-typed path to the same stored shape:\n\n validateCustom accepts a typed value; default: exactly one Unicode emoji.\n renderValue draws a stored value that is not among the options (a\n typed custom value, or one set elsewhere); default: the\n value as text, right for Unicode.\n allowCustom false hides the typed field for a closed set.\n\n A stored value outside the options is still the current value: the trigger\n draws it and the grid leads with it, selected. `clearable={false}` is for a\n field that is required: no remove button, `null` is never emitted.\n\n SEARCH. `searchable` adds a `SearchInput` above the grid that filters the\n options by label and value (case-insensitive substring). It is for a large\n set - a product's whole Slack emoji table is about 1,900 names - so the\n grid draws at most MAX_SHOWN matches and says how many more there are\n (render cost stays flat however large `options` is); narrowing the search\n reaches the rest. The search box is its own Tab stop and the grid stays\n one: ArrowDown in the box moves focus into the grid.\n ========================================================================= */\n\nexport interface EmojiOption {\n /** What is stored and handed back to `onChange`. */\n value: string;\n /** What is drawn for it. */\n glyph: ReactNode;\n /** The spoken name. */\n label: string;\n}\n\nexport interface EmojiPickerProps {\n /** The current stored value, or `null`/absent for none. */\n value: string | null | undefined;\n onChange: (value: string | null) => void;\n /** Accessible name of the trigger and the grid, e.g. \"Emoji for Backlog\". */\n label: string;\n /** The choices. Default: 24 Unicode emoji whose value is the character. */\n options?: readonly EmojiOption[];\n /** Show the field that takes a value not among `options`. @default true */\n allowCustom?: boolean;\n /** Whether a typed value is acceptable. @default exactly one Unicode emoji */\n validateCustom?: (text: string) => boolean;\n /** Draws a stored value that is not among `options`. @default the value as text */\n renderValue?: (value: string) => ReactNode;\n /** Offer a way to remove the emoji (`onChange(null)`). @default true */\n clearable?: boolean;\n /** Add a search box that filters `options` by label and value, and draw at most 160 matches at once. @default false */\n searchable?: boolean;\n className?: string;\n}\n\nconst UNICODE_CHOICES = [\n [\"🚀\", \"rocket\"], [\"⭐\", \"star\"], [\"🔥\", \"fire\"], [\"✅\", \"check\"], [\"⚠️\", \"warning\"], [\"🐛\", \"bug\"], [\"💡\", \"idea\"], [\"🎯\", \"target\"],\n [\"📌\", \"pin\"], [\"📝\", \"note\"], [\"🔒\", \"lock\"], [\"🧪\", \"test\"], [\"🛠️\", \"tools\"], [\"📦\", \"package\"], [\"🎨\", \"palette\"], [\"💬\", \"chat\"],\n [\"⏳\", \"hourglass\"], [\"🏁\", \"flag\"], [\"❤️\", \"heart\"], [\"👀\", \"eyes\"], [\"🌱\", \"seedling\"], [\"🧹\", \"broom\"], [\"📣\", \"megaphone\"], [\"🔔\", \"bell\"],\n] as const;\n\n/** At most this many matches are drawn when `searchable`; the rest are reached by narrowing the search. */\nconst MAX_SHOWN = 160;\n\nconst COLUMNS = 8;\n\nconst UNICODE_EMOJI = /\\p{Extended_Pictographic}|\\p{Regional_Indicator}/u;\n\n/** True when `text` is exactly one emoji (one grapheme cluster that holds a pictograph or a flag). */\nfunction isSingleUnicodeEmoji(text: string): boolean {\n const clusters = [...new Intl.Segmenter().segment(text)];\n return clusters.length === 1 && UNICODE_EMOJI.test(text);\n}\n\nconst asText = (value: string): ReactNode => value;\n\nexport function EmojiPicker({\n value,\n onChange,\n label,\n options,\n allowCustom = true,\n validateCustom = isSingleUnicodeEmoji,\n renderValue = asText,\n clearable = true,\n searchable = false,\n className,\n}: EmojiPickerProps) {\n const strings = useUiStrings().emojiPicker;\n const [open, setOpen] = useState(false);\n const [draft, setDraft] = useState(\"\");\n const [invalid, setInvalid] = useState(false);\n const [query, setQuery] = useState(\"\");\n const offered: readonly EmojiOption[] =\n options ?? UNICODE_CHOICES.map(([character, name]) => ({ value: character, glyph: character, label: strings.names[name] }));\n const current = value ?? null;\n const known = current !== null ? offered.find((option) => option.value === current) : undefined;\n const choices =\n current !== null && !known ? [{ value: current, glyph: renderValue(current), label: current }, ...offered] : offered;\n const needle = query.trim().toLowerCase();\n const matches = needle ? choices.filter((choice) => choice.label.toLowerCase().includes(needle) || choice.value.toLowerCase().includes(needle)) : choices;\n const shown = searchable ? matches.slice(0, MAX_SHOWN) : matches;\n\n function changeOpen(next: boolean) {\n setOpen(next);\n setDraft(\"\");\n setInvalid(false);\n setQuery(\"\");\n }\n\n function choose(next: string | null) {\n onChange(next);\n changeOpen(false);\n }\n\n function submitTyped() {\n const typed = draft.trim();\n if (!validateCustom(typed)) {\n setInvalid(true);\n return;\n }\n choose(typed);\n }\n\n return (\n <Popover\n open={open}\n onOpenChange={changeOpen}\n align=\"start\"\n aria-label={label}\n trigger={\n <button\n type=\"button\"\n aria-label={label}\n className={cn(\"dx-tap flex size-7 shrink-0 items-center justify-center rounded-md text-base hover:bg-surface-hover\", className)}\n >\n {current !== null ? (\n <span aria-hidden>{known ? known.glyph : renderValue(current)}</span>\n ) : (\n <Icon name=\"smile\" size=\"sm\" className=\"text-tertiary\" />\n )}\n </button>\n }\n >\n <EmojiGrid\n label={label}\n choices={shown}\n current={current}\n onChoose={choose}\n search={searchable ? { query, onQuery: setQuery, total: matches.length } : undefined}\n />\n {allowCustom && (\n <Field label={strings.typeLabel} error={invalid ? strings.invalid : undefined} className=\"mt-3\">\n <Input\n size=\"sm\"\n value={draft}\n onChange={(event) => {\n setDraft(event.target.value);\n setInvalid(false);\n }}\n onKeyDown={(event) => {\n if (event.key === \"Enter\") {\n event.preventDefault();\n submitTyped();\n }\n }}\n />\n </Field>\n )}\n {clearable && current !== null && (\n <Button size=\"sm\" variant=\"outline\" className=\"mt-3\" leadingIcon={<Icon name=\"x\" size=\"xs\" />} onClick={() => choose(null)}>\n {strings.clear}\n </Button>\n )}\n </Popover>\n );\n}\n\nfunction EmojiGrid({\n label,\n choices,\n current,\n onChoose,\n search,\n}: {\n label: string;\n choices: readonly EmojiOption[];\n current: string | null;\n onChoose: (value: string) => void;\n search?: { query: string; onQuery: (query: string) => void; total: number };\n}) {\n const strings = useUiStrings().emojiPicker;\n const { listRef, tabIndexFor, onKeyDown } = useRovingOptions(\n choices.length,\n choices.findIndex((choice) => choice.value === current),\n COLUMNS,\n );\n const grid = (\n <div\n ref={listRef}\n role=\"listbox\"\n aria-label={label}\n onKeyDown={onKeyDown}\n className={cn(\"grid w-max max-w-full grid-cols-8 gap-1 p-1\", search && \"max-h-56 overflow-y-auto\")}\n >\n {choices.map((choice, index) => {\n const selected = choice.value === current;\n return (\n <button\n key={choice.value}\n type=\"button\"\n role=\"option\"\n aria-selected={selected}\n aria-label={choice.label}\n data-option-index={index}\n tabIndex={tabIndexFor(index)}\n onClick={() => onChoose(choice.value)}\n className={cn(\"dx-tap flex size-7 items-center justify-center rounded-md text-base\", selected ? \"bg-accent-subtle\" : \"hover:bg-surface-hover\")}\n >\n <span aria-hidden>{choice.glyph}</span>\n </button>\n );\n })}\n </div>\n );\n if (!search) return grid;\n return (\n <div className=\"flex flex-col gap-2\">\n <SearchInput\n size=\"sm\"\n aria-label={strings.search}\n placeholder={strings.search}\n value={search.query}\n onValueChange={search.onQuery}\n onKeyDown={(event) => {\n if (event.key !== \"ArrowDown\") return;\n event.preventDefault();\n listRef.current?.querySelector<HTMLElement>('[tabindex=\"0\"]')?.focus();\n }}\n />\n {choices.length === 0 ? <p className=\"px-1 text-sm text-tertiary\">{strings.noMatches}</p> : grid}\n {search.total > choices.length && <p className=\"px-1 text-xs text-tertiary\">{strings.showing(choices.length, search.total)}</p>}\n </div>\n );\n}\n"],"names":["UNICODE_CHOICES","MAX_SHOWN","COLUMNS","UNICODE_EMOJI","isSingleUnicodeEmoji","text","asText","value","EmojiPicker","onChange","label","options","allowCustom","validateCustom","renderValue","clearable","searchable","className","strings","useUiStrings","open","setOpen","useState","draft","setDraft","invalid","setInvalid","query","setQuery","offered","character","name","current","known","option","choices","needle","matches","choice","shown","changeOpen","next","choose","submitTyped","typed","jsxs","Popover","jsx","cn","Icon","EmojiGrid","Field","Input","event","Button","onChoose","search","listRef","tabIndexFor","onKeyDown","useRovingOptions","grid","index","selected","SearchInput"],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import { jsx as o, jsxs as s } from "react/jsx-runtime";
2
+ import { Component as n } from "react";
3
+ import { Icon as a } from "./Icon.js";
4
+ import { useUiStrings as i } from "../lib/i18n/provider.js";
5
+ class u extends n {
6
+ state = { error: null, resetKey: this.props.resetKey };
7
+ static getDerivedStateFromError(e) {
8
+ return { error: e };
9
+ }
10
+ /* Compared against STATE's own copy of `resetKey`, not the previous props —
11
+ `getDerivedStateFromProps` runs on every render (including the one
12
+ `getDerivedStateFromError` triggers), so diffing against last render's
13
+ props would also fire on that render and immediately clear the very error
14
+ it just caught. Diffing against state instead only fires when the KEY
15
+ itself has actually moved on. */
16
+ static getDerivedStateFromProps(e, r) {
17
+ return e.resetKey !== r.resetKey ? { error: null, resetKey: e.resetKey } : null;
18
+ }
19
+ componentDidCatch(e, r) {
20
+ console.error(`[danxbot] ${this.props.label ?? "component"} failed to render`, e, r), this.props.onError?.(e, r);
21
+ }
22
+ render() {
23
+ const { error: e } = this.state;
24
+ return e ? /* @__PURE__ */ o(l, { label: this.props.label, message: e.message }) : this.props.children;
25
+ }
26
+ }
27
+ function l({ label: t, message: e }) {
28
+ const r = i().errorBoundary;
29
+ return /* @__PURE__ */ s(
30
+ "div",
31
+ {
32
+ role: "alert",
33
+ className: "rounded-xl border border-danger-border bg-danger-subtle p-5 text-danger-text",
34
+ children: [
35
+ /* @__PURE__ */ s("p", { className: "flex items-center gap-2 font-semibold", children: [
36
+ /* @__PURE__ */ o(a, { name: "triangle-alert", size: "sm" }),
37
+ t ? r.failure(t) : r.generic
38
+ ] }),
39
+ /* @__PURE__ */ o("pre", { className: "mt-2 overflow-x-auto whitespace-pre-wrap font-mono text-xs opacity-80", children: e })
40
+ ]
41
+ }
42
+ );
43
+ }
44
+ export {
45
+ u as ErrorBoundary
46
+ };
47
+ //# sourceMappingURL=ErrorBoundary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorBoundary.js","sources":["../../src/components/ErrorBoundary.tsx"],"sourcesContent":["import { Component, type ErrorInfo, type ReactNode } from \"react\";\nimport { useUiStrings } from \"../lib/i18n\";\nimport { Icon } from \"./Icon\";\n\n/* ----------------------------------------------------------------------------\n A single uncaught throw during render unmounts React's entire tree, which\n presents as a completely blank page with no visible clue. That is the worst\n possible failure signature: it destroys every part of the UI that was fine,\n and it hides which component was actually at fault.\n\n Wrapping each top-level section means a broken component degrades to an\n inline message in its own slot while the rest of the page keeps working.\n -------------------------------------------------------------------------- */\n\nexport interface ErrorBoundaryProps {\n children: ReactNode;\n /** Shown in the fallback so the failing region is identifiable at a glance. */\n label?: string;\n /**\n * Changing this clears a previously-caught error (SG-833 slice 7).\n *\n * A class component's error state is sticky by design — once caught,\n * `render()` keeps returning the fallback forever, even once whatever\n * crashed it is no longer what is being shown. That is correct for a\n * boundary wrapping a fixed region, and wrong for one wrapping a slot whose\n * CONTENT changes identity underneath it — a list row that starts showing a\n * different record after a filter or a re-fetch reorders things, for\n * instance. Passing something that identifies the current content (a\n * record id, a list key) un-catches the boundary the moment that identity\n * changes, rather than leaving it permanently wearing a previous item's\n * crash.\n *\n * Omit it for a boundary around a genuinely fixed region — the default\n * behaviour (sticky until unmount) is unchanged when this is left out.\n */\n resetKey?: unknown;\n /**\n * Called once per caught error, with React's own error and component stack\n * (DX-4075). For a consumer that has to REPORT a render failure — a framed\n * harness posting it to its host — rather than only show it. The fallback and\n * the console log are unchanged whether or not this is passed.\n */\n onError?: (error: Error, info: ErrorInfo) => void;\n}\n\ninterface State {\n error: Error | null;\n resetKey?: unknown;\n}\n\nexport class ErrorBoundary extends Component<ErrorBoundaryProps, State> {\n state: State = { error: null, resetKey: this.props.resetKey };\n\n static getDerivedStateFromError(error: Error): Partial<State> {\n return { error };\n }\n\n /* Compared against STATE's own copy of `resetKey`, not the previous props —\n `getDerivedStateFromProps` runs on every render (including the one\n `getDerivedStateFromError` triggers), so diffing against last render's\n props would also fire on that render and immediately clear the very error\n it just caught. Diffing against state instead only fires when the KEY\n itself has actually moved on. */\n static getDerivedStateFromProps(\n props: ErrorBoundaryProps,\n state: State,\n ): Partial<State> | null {\n if (props.resetKey !== state.resetKey) {\n return { error: null, resetKey: props.resetKey };\n }\n return null;\n }\n\n componentDidCatch(error: Error, info: ErrorInfo) {\n console.error(`[danxbot] ${this.props.label ?? \"component\"} failed to render`, error, info);\n this.props.onError?.(error, info);\n }\n\n render() {\n const { error } = this.state;\n if (!error) return this.props.children;\n\n return <ErrorFallback label={this.props.label} message={error.message} />;\n }\n}\n\n/* A function component so the words come from the provider: a class cannot call hooks. */\nfunction ErrorFallback({ label, message }: { label?: string; message: string }) {\n const strings = useUiStrings().errorBoundary;\n return (\n <div\n role=\"alert\"\n className=\"rounded-xl border border-danger-border bg-danger-subtle p-5 text-danger-text\"\n >\n <p className=\"flex items-center gap-2 font-semibold\">\n <Icon name=\"triangle-alert\" size=\"sm\" />\n {label ? strings.failure(label) : strings.generic}\n </p>\n <pre className=\"mt-2 overflow-x-auto whitespace-pre-wrap font-mono text-xs opacity-80\">\n {message}\n </pre>\n </div>\n );\n}\n"],"names":["ErrorBoundary","Component","error","props","state","info","jsx","ErrorFallback","label","message","strings","useUiStrings","jsxs","Icon"],"mappings":";;;;AAkDO,MAAMA,UAAsBC,EAAqC;AAAA,EACtE,QAAe,EAAE,OAAO,MAAM,UAAU,KAAK,MAAM,SAAA;AAAA,EAEnD,OAAO,yBAAyBC,GAA8B;AAC5D,WAAO,EAAE,OAAAA,EAAA;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAO,yBACLC,GACAC,GACuB;AACvB,WAAID,EAAM,aAAaC,EAAM,WACpB,EAAE,OAAO,MAAM,UAAUD,EAAM,SAAA,IAEjC;AAAA,EACT;AAAA,EAEA,kBAAkBD,GAAcG,GAAiB;AAC/C,YAAQ,MAAM,aAAa,KAAK,MAAM,SAAS,WAAW,qBAAqBH,GAAOG,CAAI,GAC1F,KAAK,MAAM,UAAUH,GAAOG,CAAI;AAAA,EAClC;AAAA,EAEA,SAAS;AACP,UAAM,EAAE,OAAAH,MAAU,KAAK;AACvB,WAAKA,IAEE,gBAAAI,EAACC,KAAc,OAAO,KAAK,MAAM,OAAO,SAASL,EAAM,SAAS,IAFpD,KAAK,MAAM;AAAA,EAGhC;AACF;AAGA,SAASK,EAAc,EAAE,OAAAC,GAAO,SAAAC,KAAgD;AAC9E,QAAMC,IAAUC,IAAe;AAC/B,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAU;AAAA,MAEV,UAAA;AAAA,QAAA,gBAAAA,EAAC,KAAA,EAAE,WAAU,yCACX,UAAA;AAAA,UAAA,gBAAAN,EAACO,GAAA,EAAK,MAAK,kBAAiB,MAAK,MAAK;AAAA,UACrCL,IAAQE,EAAQ,QAAQF,CAAK,IAAIE,EAAQ;AAAA,QAAA,GAC5C;AAAA,QACA,gBAAAJ,EAAC,OAAA,EAAI,WAAU,yEACZ,UAAAG,EAAA,CACH;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;"}
@@ -0,0 +1,115 @@
1
+ import { jsxs as e, jsx as t, Fragment as p } from "react/jsx-runtime";
2
+ import { Field as s } from "@base-ui/react/field";
3
+ import { Fieldset as u } from "@base-ui/react/fieldset";
4
+ import { tv as v } from "tailwind-variants";
5
+ import { cn as g } from "../lib/cn.js";
6
+ import { Icon as F } from "./Icon.js";
7
+ const w = v({
8
+ slots: {
9
+ root: "flex min-w-0",
10
+ label: [
11
+ "font-sans font-medium text-secondary select-none",
12
+ "transition-colors duration-(--dur-fast)",
13
+ /* The label follows the control's state rather than staying inert:
14
+ dimmed when disabled, and tinted when the field is invalid, so the
15
+ eye lands on the broken field before reading a word. */
16
+ "data-disabled:text-disabled data-invalid:text-danger-text"
17
+ ],
18
+ description: "text-2xs text-tertiary text-balance",
19
+ error: [
20
+ "flex items-start gap-1.5 text-2xs font-medium text-danger-text",
21
+ /* Errors RISE in and fade out faster than they arrived. A message that
22
+ appears instantly reads as an accusation; one that rises reads as the
23
+ form answering you. */
24
+ "data-starting-style:opacity-0 data-starting-style:-translate-y-1",
25
+ "data-ending-style:opacity-0",
26
+ "transition-[var(--tx-colors),opacity,translate] duration-(--dur-base) ease-entrance",
27
+ "data-ending-style:duration-(--dur-exit) data-ending-style:ease-exit"
28
+ ]
29
+ },
30
+ variants: {
31
+ layout: {
32
+ /* Label above the control — text inputs, selects, textareas. */
33
+ stacked: {
34
+ root: "flex-col gap-1.5",
35
+ label: "text-xs"
36
+ },
37
+ /* Control first, label beside it — checkboxes and switches, where the
38
+ control is small and the label is the target you actually click.
39
+
40
+ `items-center` on the ROW, and normal line-height on the label. The
41
+ first version stretched the label's line-height to a control height to
42
+ fake vertical centring, which works right up until the field has a
43
+ description — then that inflated line box opens a visible gulf between
44
+ the label and the text under it. Centring belongs to the layout, not
45
+ to the type. */
46
+ inline: {
47
+ root: "flex-row items-center gap-3",
48
+ label: "text-sm leading-snug"
49
+ }
50
+ }
51
+ },
52
+ defaultVariants: { layout: "stacked" }
53
+ });
54
+ function B({
55
+ label: a,
56
+ description: n,
57
+ error: l,
58
+ required: i,
59
+ disabled: o,
60
+ name: y,
61
+ layout: d = "stacked",
62
+ className: h,
63
+ children: c,
64
+ ref: b
65
+ }) {
66
+ const r = w({ layout: d }), N = !!l, m = a ? /* @__PURE__ */ e(s.Label, { className: r.label(), children: [
67
+ a,
68
+ i && /* @__PURE__ */ t("span", { className: "ml-1 text-danger-text", "aria-hidden": !0, children: "*" })
69
+ ] }) : null, x = n ? /* @__PURE__ */ t(s.Description, { className: r.description(), render: /* @__PURE__ */ t("p", {}), children: n }) : null, f = l ? (
70
+ /* role="alert" ON TOP of the aria-describedby association Base UI already
71
+ makes. The two cover different moments: describedby is read when focus
72
+ reaches the control, which serves someone tabbing INTO a broken field;
73
+ alert announces the moment the message appears, which serves someone who
74
+ just submitted and whose focus is nowhere near it. */
75
+ /* @__PURE__ */ e(s.Error, { match: !0, role: "alert", className: r.error(), children: [
76
+ /* @__PURE__ */ t(F, { name: "circle-alert", size: "xs", className: "mt-px" }),
77
+ /* @__PURE__ */ t("span", { children: l })
78
+ ] })
79
+ ) : null;
80
+ return /* @__PURE__ */ t(
81
+ s.Root,
82
+ {
83
+ ref: b,
84
+ name: y,
85
+ disabled: o,
86
+ invalid: N,
87
+ className: g(r.root(), h),
88
+ children: d === "inline" ? /* @__PURE__ */ e(p, { children: [
89
+ c,
90
+ /* @__PURE__ */ e("div", { className: "flex min-w-0 flex-col gap-0.5", children: [
91
+ m,
92
+ x,
93
+ f
94
+ ] })
95
+ ] }) : /* @__PURE__ */ e(p, { children: [
96
+ m,
97
+ c,
98
+ x,
99
+ f
100
+ ] })
101
+ }
102
+ );
103
+ }
104
+ function D({ legend: a, description: n, className: l, children: i, ref: o }) {
105
+ return /* @__PURE__ */ e(u.Root, { ref: o, className: g("flex min-w-0 flex-col gap-3", l), children: [
106
+ a && /* @__PURE__ */ t(u.Legend, { className: "font-sans text-sm font-semibold text-primary", children: a }),
107
+ n && /* @__PURE__ */ t("p", { className: "-mt-2 text-2xs text-tertiary", children: n }),
108
+ i
109
+ ] });
110
+ }
111
+ export {
112
+ B as Field,
113
+ D as FieldSet
114
+ };
115
+ //# sourceMappingURL=Field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Field.js","sources":["../../src/components/Field.tsx"],"sourcesContent":["import type { ReactNode, Ref } from \"react\";\nimport { Field as BaseField } from \"@base-ui/react/field\";\nimport { Fieldset as BaseFieldset } from \"@base-ui/react/fieldset\";\nimport { tv } from \"tailwind-variants\";\nimport { cn } from \"../lib/cn\";\nimport { Icon } from \"./Icon\";\n\n/* ----------------------------------------------------------------------------\n Field owns the SEMANTICS of a labelled control — label association,\n description and error wiring, disabled and invalid propagation — and nothing\n about the control itself.\n\n The association is delegated to Base UI rather than hand-rolled. That is a\n correctness decision, not a convenience one: the hand-rolled version of this\n file shipped a real defect where a checkbox outside a Field generated no id,\n so its `<label htmlFor>` pointed at nothing and the control had no accessible\n name at all. Delegating removes the entire class — ids, `aria-describedby`,\n `aria-invalid` and `aria-required` are wired by the primitive, for every\n control, including ones we have not written yet.\n -------------------------------------------------------------------------- */\n\nconst field = tv({\n slots: {\n root: \"flex min-w-0\",\n label: [\n \"font-sans font-medium text-secondary select-none\",\n \"transition-colors duration-(--dur-fast)\",\n /* The label follows the control's state rather than staying inert:\n dimmed when disabled, and tinted when the field is invalid, so the\n eye lands on the broken field before reading a word. */\n \"data-disabled:text-disabled data-invalid:text-danger-text\",\n ],\n description: \"text-2xs text-tertiary text-balance\",\n error: [\n \"flex items-start gap-1.5 text-2xs font-medium text-danger-text\",\n /* Errors RISE in and fade out faster than they arrived. A message that\n appears instantly reads as an accusation; one that rises reads as the\n form answering you. */\n \"data-starting-style:opacity-0 data-starting-style:-translate-y-1\",\n \"data-ending-style:opacity-0\",\n \"transition-[var(--tx-colors),opacity,translate] duration-(--dur-base) ease-entrance\",\n \"data-ending-style:duration-(--dur-exit) data-ending-style:ease-exit\",\n ],\n },\n variants: {\n layout: {\n /* Label above the control — text inputs, selects, textareas. */\n stacked: {\n root: \"flex-col gap-1.5\",\n label: \"text-xs\",\n },\n /* Control first, label beside it — checkboxes and switches, where the\n control is small and the label is the target you actually click.\n\n `items-center` on the ROW, and normal line-height on the label. The\n first version stretched the label's line-height to a control height to\n fake vertical centring, which works right up until the field has a\n description — then that inflated line box opens a visible gulf between\n the label and the text under it. Centring belongs to the layout, not\n to the type. */\n inline: {\n root: \"flex-row items-center gap-3\",\n label: \"text-sm leading-snug\",\n },\n },\n },\n defaultVariants: { layout: \"stacked\" },\n});\n\nexport interface FieldProps {\n label?: ReactNode;\n /** Helper text. Rendered under the label, and referenced by the control. */\n description?: ReactNode;\n /**\n * An error message. Presence marks the field invalid — one prop rather than\n * a separate `invalid` boolean, because a field that is invalid with no\n * message tells the user nothing, and the two are never legitimately apart.\n */\n error?: ReactNode;\n required?: boolean;\n disabled?: boolean;\n /** Identifies the field in a form submission. */\n name?: string;\n layout?: \"stacked\" | \"inline\";\n className?: string;\n children: ReactNode;\n ref?: Ref<HTMLDivElement>;\n}\n\nexport function Field({\n label,\n description,\n error,\n required,\n disabled,\n name,\n layout = \"stacked\",\n className,\n children,\n ref,\n}: FieldProps) {\n const s = field({ layout });\n const invalid = Boolean(error);\n\n const labelEl = label ? (\n <BaseField.Label className={s.label()}>\n {label}\n {/* aria-hidden because `required` is already on the control itself and\n announced from there; the asterisk is the VISUAL half of the same\n fact, and announcing \"star\" after every required label is noise. */}\n {required && (\n <span className=\"ml-1 text-danger-text\" aria-hidden>\n *\n </span>\n )}\n </BaseField.Label>\n ) : null;\n\n const descriptionEl = description ? (\n <BaseField.Description className={s.description()} render={<p />}>\n {description}\n </BaseField.Description>\n ) : null;\n\n const errorEl = error ? (\n /* role=\"alert\" ON TOP of the aria-describedby association Base UI already\n makes. The two cover different moments: describedby is read when focus\n reaches the control, which serves someone tabbing INTO a broken field;\n alert announces the moment the message appears, which serves someone who\n just submitted and whose focus is nowhere near it. */\n <BaseField.Error match role=\"alert\" className={s.error()}>\n <Icon name=\"circle-alert\" size=\"xs\" className=\"mt-px\" />\n <span>{error}</span>\n </BaseField.Error>\n ) : null;\n\n return (\n <BaseField.Root\n ref={ref}\n name={name}\n disabled={disabled}\n invalid={invalid}\n className={cn(s.root(), className)}\n >\n {/* Same parts, different order — which is exactly why this is one\n component with a variant rather than two. Inline puts the control\n first and stacks the text beside it; stacked brackets the control. */}\n {layout === \"inline\" ? (\n <>\n {children}\n <div className=\"flex min-w-0 flex-col gap-0.5\">\n {labelEl}\n {descriptionEl}\n {errorEl}\n </div>\n </>\n ) : (\n <>\n {labelEl}\n {children}\n {descriptionEl}\n {errorEl}\n </>\n )}\n </BaseField.Root>\n );\n}\n\nexport interface FieldSetProps {\n legend?: ReactNode;\n description?: ReactNode;\n className?: string;\n children: ReactNode;\n ref?: Ref<HTMLFieldSetElement>;\n}\n\n/**\n * Groups related fields under a shared legend.\n *\n * A real `<fieldset>` / `<legend>` rather than a heading, because a screen\n * reader announces the legend with EACH control inside it — which is the whole\n * point for a group of radios or a set of related toggles, and is not something\n * a heading can do.\n */\nexport function FieldSet({ legend, description, className, children, ref }: FieldSetProps) {\n return (\n <BaseFieldset.Root ref={ref} className={cn(\"flex min-w-0 flex-col gap-3\", className)}>\n {legend && (\n <BaseFieldset.Legend className=\"font-sans text-sm font-semibold text-primary\">\n {legend}\n </BaseFieldset.Legend>\n )}\n {description && <p className=\"-mt-2 text-2xs text-tertiary\">{description}</p>}\n {children}\n </BaseFieldset.Root>\n );\n}\n"],"names":["field","tv","Field","label","description","error","required","disabled","name","layout","className","children","ref","s","invalid","labelEl","jsxs","BaseField","jsx","descriptionEl","errorEl","Icon","cn","Fragment","FieldSet","legend","BaseFieldset"],"mappings":";;;;;;AAqBA,MAAMA,IAAQC,EAAG;AAAA,EACf,OAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,MACL;AAAA,MACA;AAAA;AAAA;AAAA;AAAA,MAIA;AAAA,IAAA;AAAA,IAEF,aAAa;AAAA,IACb,OAAO;AAAA,MACL;AAAA;AAAA;AAAA;AAAA,MAIA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,EACF;AAAA,EAEF,UAAU;AAAA,IACR,QAAQ;AAAA;AAAA,MAEN,SAAS;AAAA,QACP,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWT,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,IACT;AAAA,EACF;AAAA,EAEF,iBAAiB,EAAE,QAAQ,UAAA;AAC7B,CAAC;AAsBM,SAASC,EAAM;AAAA,EACpB,OAAAC;AAAA,EACA,aAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,MAAAC;AAAA,EACA,QAAAC,IAAS;AAAA,EACT,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,KAAAC;AACF,GAAe;AACb,QAAMC,IAAIb,EAAM,EAAE,QAAAS,GAAQ,GACpBK,IAAU,EAAQT,GAElBU,IAAUZ,IACd,gBAAAa,EAACC,EAAU,OAAV,EAAgB,WAAWJ,EAAE,MAAA,GAC3B,UAAA;AAAA,IAAAV;AAAA,IAIAG,KACC,gBAAAY,EAAC,QAAA,EAAK,WAAU,yBAAwB,eAAW,IAAC,UAAA,IAAA,CAEpD;AAAA,EAAA,EAAA,CAEJ,IACE,MAEEC,IAAgBf,IACpB,gBAAAc,EAACD,EAAU,aAAV,EAAsB,WAAWJ,EAAE,YAAA,GAAe,QAAQ,gBAAAK,EAAC,KAAA,CAAA,CAAE,GAC3D,aACH,IACE,MAEEE,IAAUf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMd,gBAAAW,EAACC,EAAU,OAAV,EAAgB,OAAK,IAAC,MAAK,SAAQ,WAAWJ,EAAE,MAAA,GAC/C,UAAA;AAAA,MAAA,gBAAAK,EAACG,KAAK,MAAK,gBAAe,MAAK,MAAK,WAAU,SAAQ;AAAA,MACtD,gBAAAH,EAAC,UAAM,UAAAb,EAAA,CAAM;AAAA,IAAA,EAAA,CACf;AAAA,MACE;AAEJ,SACE,gBAAAa;AAAA,IAACD,EAAU;AAAA,IAAV;AAAA,MACC,KAAAL;AAAA,MACA,MAAAJ;AAAA,MACA,UAAAD;AAAA,MACA,SAAAO;AAAA,MACA,WAAWQ,EAAGT,EAAE,KAAA,GAAQH,CAAS;AAAA,MAKhC,UAAAD,MAAW,WACV,gBAAAO,EAAAO,GAAA,EACG,UAAA;AAAA,QAAAZ;AAAA,QACD,gBAAAK,EAAC,OAAA,EAAI,WAAU,iCACZ,UAAA;AAAA,UAAAD;AAAA,UACAI;AAAA,UACAC;AAAA,QAAA,EAAA,CACH;AAAA,MAAA,EAAA,CACF,IAEA,gBAAAJ,EAAAO,GAAA,EACG,UAAA;AAAA,QAAAR;AAAA,QACAJ;AAAA,QACAQ;AAAA,QACAC;AAAA,MAAA,EAAA,CACH;AAAA,IAAA;AAAA,EAAA;AAIR;AAkBO,SAASI,EAAS,EAAE,QAAAC,GAAQ,aAAArB,GAAa,WAAAM,GAAW,UAAAC,GAAU,KAAAC,KAAsB;AACzF,SACE,gBAAAI,EAACU,EAAa,MAAb,EAAkB,KAAAd,GAAU,WAAWU,EAAG,+BAA+BZ,CAAS,GAChF,UAAA;AAAA,IAAAe,uBACEC,EAAa,QAAb,EAAoB,WAAU,gDAC5B,UAAAD,GACH;AAAA,IAEDrB,KAAe,gBAAAc,EAAC,KAAA,EAAE,WAAU,gCAAgC,UAAAd,GAAY;AAAA,IACxEO;AAAA,EAAA,GACH;AAEJ;"}