@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":"EventActions.js","sources":["../../../src/components/calendar/EventActions.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { tv } from \"tailwind-variants\";\nimport { cn } from \"@/lib/cn\";\nimport { Button } from \"@/components/Button\";\nimport { Select, SelectItem } from \"@/components/Select\";\nimport {\n addDuration,\n instantToPlainDateTime,\n isoDateString,\n plainDateTimeToInstant,\n startOfDay,\n type Instant,\n type PlainDate,\n type TimeZone,\n} from \"@/lib/time\";\nimport type { TimedEvent } from \"@/lib/calendar/types\";\nimport { useNumberFormat, useUiLocale, useUiStrings } from \"@/lib/i18n\";\nimport { longDate, timeOfDay } from \"./format\";\n\n/* ============================================================================\n THE POINTER ALTERNATIVE TO DRAGGING — WCAG 2.2 SC 2.5.7.\n\n THIS IS TIER ONE, AND THE KEYBOARD IS NOT. That ordering is the opposite of\n what it is natural to build, and building it the other way round fails AA\n outright. The Understanding document is unusually direct:\n\n \"achieving keyboard equivalence for a dragging operation does not\n automatically meet this success criterion, unless that equivalent\n keyboard operation also provides controls that can be clicked or tapped\n with a pointer.\"\n\n 2.5.7 and 2.1.1 are assessed independently. A keyboard grabbed-mode satisfies\n 2.1.1 and does not touch 2.5.7 at all — so a calendar with arrow-key dragging\n and no menu is a calendar that fails.\n\n And the pattern is not merely unproven, it has been TRIED AND WITHDRAWN.\n Atlassian invented keyboard-drag in react-beautiful-dnd, user-tested it, and\n abandoned it: blind users cannot reason about directional movement through\n space they cannot see, it forces JAWS users to change mode, and complex moves\n take many keystrokes. Their replacement guidance is an action menu. rbd was\n deprecated in Oct 2024 and archived in Apr 2025.\n\n WHY A FORM AND NOT NESTED MENUS. Every outcome a drag can produce has to be\n reachable here — a new day, a new start, a new length — and a submenu tree\n deep enough to express all three is worse to operate than three fields. Three\n selects and an Apply button is the smallest thing that covers the whole\n gesture, and it is operable by pointer, by keyboard, and by switch.\n ========================================================================= */\n\nconst actions = tv({\n slots: {\n root: \"flex min-w-64 flex-col gap-3\",\n title: \"text-sm font-semibold text-primary\",\n meta: \"text-2xs text-tertiary\",\n row: \"flex items-center justify-between gap-3\",\n label: \"text-xs text-secondary\",\n footer: \"flex justify-end gap-2 border-t border-border-subtle pt-3\",\n },\n});\n\nexport interface EventActionsProps {\n event: TimedEvent;\n zone: TimeZone;\n /** The days the view is showing — the destinations \"Move to\" offers. */\n days: readonly PlainDate[];\n /** Same step the drag snaps to, so the two paths reach the same positions. */\n snapMinutes?: number;\n /** Longest duration offered, in minutes. */\n maxDurationMinutes?: number;\n onApply: (next: TimedEvent) => void;\n onClose?: () => void;\n className?: string;\n}\n\n/** Every snapped time in a day, as {value, label}. Walked, so DST falls out. */\nfunction timeOptions(\n zone: TimeZone,\n day: PlainDate,\n snapMinutes: number,\n locale: string,\n): { value: string; label: string; instant: Instant }[] {\n const from = startOfDay(zone, day);\n const length = startOfDay(zone, { ...day, day: day.day + 1 }) - from;\n const step = snapMinutes * 60_000;\n const out: { value: string; label: string; instant: Instant }[] = [];\n /* WALKED, not divided into 24 × (60/snap). On a 23-hour day this yields the\n 92 slots that exist rather than 96 including four that never happened, and\n on a 25-hour day it yields 100 with the repeated hour present twice — which\n is what the grid draws, so the two agree by construction. */\n for (let elapsed = 0; elapsed < length; elapsed += step) {\n const instant = from + elapsed;\n out.push({ value: String(elapsed), label: timeOfDay(instant, zone, locale), instant });\n }\n return out;\n}\n\nconst DURATIONS = [15, 30, 45, 60, 90, 120, 180, 240, 300, 360, 480, 600, 720];\n\nexport function EventActions({\n event,\n zone,\n days,\n snapMinutes = 15,\n maxDurationMinutes = 720,\n onApply,\n onClose,\n className,\n}: EventActionsProps) {\n const locale = useUiLocale();\n const fmt = useNumberFormat();\n const strings = useUiStrings().calendar.actions;\n const s = actions();\n\n const currentDay = (() => {\n const wall = instantToPlainDateTime(zone, event.start);\n return { year: wall.year, month: wall.month, day: wall.day };\n })();\n\n const [dayKey, setDayKey] = useState(isoDateString(currentDay));\n const chosenDay = days.find((d) => isoDateString(d) === dayKey) ?? currentDay;\n\n const options = timeOptions(zone, chosenDay, snapMinutes, locale);\n const currentOffset = event.start - startOfDay(zone, currentDay);\n const [offsetKey, setOffsetKey] = useState(String(currentOffset));\n\n const durationMinutes = Math.round((event.endExclusive - event.start) / 60_000);\n const [duration, setDuration] = useState(String(durationMinutes));\n\n /* The current duration is offered even when it is not one of the presets —\n otherwise opening the menu on a 37-minute event and pressing Apply would\n silently round it. */\n const durationChoices = Array.from(new Set([...DURATIONS, durationMinutes]))\n .filter((m) => m > 0 && m <= maxDurationMinutes)\n .sort((a, b) => a - b);\n\n const apply = () => {\n const chosen = options.find((o) => o.value === offsetKey) ?? options[0];\n /* Resolved through the same wall-clock path the drag uses, so a time that\n does not exist on the target day lands where a drag would land it. */\n const wall = instantToPlainDateTime(zone, chosen.instant);\n const start = plainDateTimeToInstant(zone, {\n ...chosenDay,\n hour: wall.hour,\n minute: wall.minute,\n second: 0,\n millisecond: 0,\n });\n const minutes = Number(duration);\n onApply({\n ...event,\n start,\n endExclusive: addDuration(zone, start, { minutes }),\n });\n onClose?.();\n };\n\n return (\n <div className={cn(s.root(), className)}>\n <div>\n <div className={s.title()}>{event.title}</div>\n <div className={s.meta()}>\n {timeOfDay(event.start, zone, locale)} – {timeOfDay(event.endExclusive, zone, locale)},{\" \"}\n {longDate(currentDay, locale)}\n </div>\n </div>\n\n <div className={s.row()}>\n <span className={s.label()} id=\"cal-actions-day\">\n {strings.moveTo}\n </span>\n <Select\n value={dayKey}\n onValueChange={(v) => {\n setDayKey(String(v));\n /* The offset is kept, not the instant: \"same time, different day\"\n is what a drag across a column does, and it is what a person\n means by moving an event to Thursday. */\n }}\n aria-label={strings.day}\n >\n {days.map((d) => (\n <SelectItem key={isoDateString(d)} value={isoDateString(d)}>\n {longDate(d, locale)}\n </SelectItem>\n ))}\n </Select>\n </div>\n\n <div className={s.row()}>\n <span className={s.label()}>{strings.startAt}</span>\n <Select value={offsetKey} onValueChange={(v) => setOffsetKey(String(v))} aria-label={strings.startTime}>\n {options.map((o) => (\n <SelectItem key={o.value} value={o.value}>\n {o.label}\n </SelectItem>\n ))}\n </Select>\n </div>\n\n <div className={s.row()}>\n <span className={s.label()}>{strings.lasting}</span>\n <Select value={duration} onValueChange={(v) => setDuration(String(v))} aria-label={strings.duration}>\n {durationChoices.map((m) => (\n <SelectItem key={m} value={String(m)}>\n {strings.minutes(Math.floor(m / 60), fmt(Math.floor(m / 60)), m % 60, fmt(m % 60))}\n </SelectItem>\n ))}\n </Select>\n </div>\n\n <div className={s.footer()}>\n <Button size=\"sm\" variant=\"ghost\" onClick={() => onClose?.()}>\n {strings.cancel}\n </Button>\n <Button size=\"sm\" onClick={apply}>\n {strings.apply}\n </Button>\n </div>\n </div>\n );\n}\n"],"names":["actions","tv","timeOptions","zone","day","snapMinutes","locale","from","startOfDay","length","step","out","elapsed","instant","timeOfDay","DURATIONS","EventActions","event","days","maxDurationMinutes","onApply","onClose","className","useUiLocale","fmt","useNumberFormat","strings","useUiStrings","s","currentDay","wall","instantToPlainDateTime","dayKey","setDayKey","useState","isoDateString","chosenDay","d","options","currentOffset","offsetKey","setOffsetKey","durationMinutes","duration","setDuration","durationChoices","m","a","b","apply","chosen","o","start","plainDateTimeToInstant","minutes","addDuration","jsxs","cn","jsx","longDate","Select","v","SelectItem","Button"],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ import { numberFormat as D, dateFormat as h, asUtcDate as g } from "../../lib/intl-cache.js";
2
+ import { instantToPlainDateTime as y } from "../../lib/time/zone.js";
3
+ function i(t, a) {
4
+ return h(t, a);
5
+ }
6
+ function m(t) {
7
+ return g(t.year, t.month, t.day);
8
+ }
9
+ const c = { timeZone: "UTC" };
10
+ function Z(t, a, n) {
11
+ return i(n, { ...c, weekday: a }).format(m(t));
12
+ }
13
+ function C(t, a) {
14
+ return i(a, { ...c, day: "numeric" }).format(m(t));
15
+ }
16
+ function N(t, a) {
17
+ return i(a, { ...c, year: "numeric", month: "long" }).format(m(t));
18
+ }
19
+ function T(t, a) {
20
+ return i(a, {
21
+ ...c,
22
+ weekday: "long",
23
+ day: "numeric",
24
+ month: "long",
25
+ year: "numeric"
26
+ }).format(m(t));
27
+ }
28
+ function s(t, a, n, r = !0) {
29
+ const o = y(a, t), e = !r || o.minute === 0 ? { timeZone: a, hour: "numeric" } : { timeZone: a, hour: "numeric", minute: "2-digit" };
30
+ return i(n, e).format(new Date(t));
31
+ }
32
+ function x(t, a, n) {
33
+ return i(n, { timeZone: t, timeZoneName: "shortOffset" }).formatToParts(
34
+ new Date(a)
35
+ ).find((o) => o.type === "timeZoneName")?.value ?? t;
36
+ }
37
+ function p(t, a, n, r) {
38
+ return t.allDay ? U(t, n, r) : b(t, a, n, r);
39
+ }
40
+ function U(t, a, n) {
41
+ const r = w(t.endExclusive), o = r.year === t.start.year && r.month === t.start.month && r.day === t.start.day, e = i(a, { ...c, day: "numeric", month: "long" });
42
+ return o ? n.allDayOn(e.format(m(t.start))) : n.allDayRange(e.format(m(t.start)), e.format(m(r)));
43
+ }
44
+ function b(t, a, n, r) {
45
+ const o = s(t.start, a, n), e = s(t.endExclusive, a, n), f = y(a, t.start), u = y(a, t.endExclusive);
46
+ if (f.year === u.year && f.month === u.month && f.day === u.day)
47
+ return r.timedRange(o, e);
48
+ const l = i(n, { ...c, day: "numeric", month: "long" }), d = { year: u.year, month: u.month, day: u.day };
49
+ return r.timedRangeUntil(o, e, l.format(m(d)));
50
+ }
51
+ function w(t) {
52
+ const a = m(t);
53
+ return a.setUTCDate(a.getUTCDate() - 1), { year: a.getUTCFullYear(), month: a.getUTCMonth() + 1, day: a.getUTCDate() };
54
+ }
55
+ function k(t, a, n, r) {
56
+ return r.cellLabel(a, D(n, {}).format(a), T(t, n));
57
+ }
58
+ function E(t, a, n, r, o) {
59
+ const e = [t.title, p(t, a, r, o)];
60
+ return t.calendarLabel ? e.push(t.calendarLabel) : n && e.push(n), e.join(", ");
61
+ }
62
+ export {
63
+ k as cellLabel,
64
+ C as dayNumber,
65
+ E as eventLabel,
66
+ p as formatDateRange,
67
+ T as longDate,
68
+ N as monthTitle,
69
+ s as timeOfDay,
70
+ Z as weekdayName,
71
+ x as zoneLabel
72
+ };
73
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sources":["../../../src/components/calendar/format.ts"],"sourcesContent":["import {\n instantToPlainDateTime,\n type Instant,\n type PlainDate,\n type TimeZone,\n} from \"@/lib/time\";\nimport type { AllDayEvent, CalendarEvent, TimedEvent } from \"@/lib/calendar/types\";\nimport type { CalendarStrings } from \"@/lib/i18n/areas/dates\";\nimport { dateFormat, asUtcDate, numberFormat } from \"@/lib/intl-cache\";\n\n/* ----------------------------------------------------------------------------\n EVERY STRING A HUMAN OR A SCREEN READER RECEIVES.\n\n All of it through `Intl`, none of it hand-assembled. A calendar that builds\n \"Mon 15\" by indexing an array of English weekday names is a calendar that\n only works in English, and the array is invariably in the component that\n needed it first.\n\n `Intl.DateTimeFormat` is expensive to construct — tens of microseconds — and\n a month grid formats several hundred strings per render, so every formatter\n is memoised by its full option set.\n\n THE ±1 CONVERSION LIVES HERE, AND ONLY HERE. The model is half-open:\n `endExclusive` is the first day NOT in the event. A human reading \"15–17\n June\" means the 17th is included. That translation happens in\n `formatDateRange` and nowhere else in the package, which is the whole reason\n the field is named the way it is.\n -------------------------------------------------------------------------- */\n\nfunction formatter(locale: string, options: Intl.DateTimeFormatOptions) {\n return dateFormat(locale, options);\n}\n\n/** A `PlainDate` as a UTC `Date`, purely so `Intl` can read its fields. */\nfunction plainDateToUtc(date: PlainDate): Date {\n return asUtcDate(date.year, date.month, date.day);\n}\n\n/* Every date formatter below is pinned to `timeZone: \"UTC\"`. A `PlainDate` has\n no zone, and the `Date` above is a carrier rather than an instant — letting\n Intl apply the host's zone would shift a date backwards for anyone west of\n Greenwich, which is the classic \"my birthday shows a day early\" bug. */\n// I18N-ALLOW: Intl timeZone option value\nconst PLAIN = { timeZone: \"UTC\" } as const;\n\n/** `Monday` / `Mon` / `M`, in the viewer's locale. */\nexport function weekdayName(\n date: PlainDate,\n width: \"long\" | \"short\" | \"narrow\",\n locale: string,\n): string {\n return formatter(locale, { ...PLAIN, weekday: width }).format(plainDateToUtc(date));\n}\n\n/** `15` — the number in the cell. */\nexport function dayNumber(date: PlainDate, locale: string): string {\n return formatter(locale, { ...PLAIN, day: \"numeric\" }).format(plainDateToUtc(date));\n}\n\n/** `June 2026` — the view's title. */\nexport function monthTitle(date: PlainDate, locale: string): string {\n return formatter(locale, { ...PLAIN, year: \"numeric\", month: \"long\" }).format(plainDateToUtc(date));\n}\n\n/** `Monday, 15 June 2026` — a cell's accessible name starts with this. */\nexport function longDate(date: PlainDate, locale: string): string {\n return formatter(locale, {\n ...PLAIN,\n weekday: \"long\",\n day: \"numeric\",\n month: \"long\",\n year: \"numeric\",\n }).format(plainDateToUtc(date));\n}\n\n/** `9:30 AM` in the calendar's zone — never the host's. */\nexport function timeOfDay(\n instant: Instant,\n zone: TimeZone,\n locale: string,\n withMinutes = true,\n): string {\n const wall = instantToPlainDateTime(zone, instant);\n /* Google, and most calendars, drop `:00` — \"9 AM\" rather than \"9:00 AM\" —\n because in a column of times the zeros are noise. Minutes are kept whenever\n they carry information. */\n const options: Intl.DateTimeFormatOptions =\n !withMinutes || wall.minute === 0\n ? { timeZone: zone, hour: \"numeric\" }\n : { timeZone: zone, hour: \"numeric\", minute: \"2-digit\" };\n return formatter(locale, options).format(new Date(instant));\n}\n\n/** `GMT−6` — the label above the hour gutter. */\nexport function zoneLabel(zone: TimeZone, at: Instant, locale: string): string {\n const parts = formatter(locale, { timeZone: zone, timeZoneName: \"shortOffset\" }).formatToParts(\n new Date(at),\n );\n return parts.find((p) => p.type === \"timeZoneName\")?.value ?? zone;\n}\n\n/**\n * The human range of an event: `15–17 June`, `9:30 – 10:30 AM`, `All day`.\n *\n * THE ONLY PLACE THE EXCLUSIVE END BECOMES AN INCLUSIVE ONE. An all-day event\n * stored 15th → 16th is ONE day and reads \"15 June\"; stored 15th → 18th it\n * reads \"15 – 17 June\". Getting this wrong in the other direction is the\n * most-reported bug in calendar interoperability, so it happens once, here,\n * where a test can point at it.\n */\nexport function formatDateRange(\n event: CalendarEvent,\n zone: TimeZone,\n locale: string,\n strings: CalendarStrings,\n): string {\n if (event.allDay) return formatAllDayRange(event, locale, strings);\n return formatTimedRange(event, zone, locale, strings);\n}\n\nfunction formatAllDayRange(event: AllDayEvent, locale: string, strings: CalendarStrings): string {\n const lastDay = previousDay(event.endExclusive);\n const sameDay =\n lastDay.year === event.start.year &&\n lastDay.month === event.start.month &&\n lastDay.day === event.start.day;\n\n const medium = formatter(locale, { ...PLAIN, day: \"numeric\", month: \"long\" });\n if (sameDay) return strings.allDayOn(medium.format(plainDateToUtc(event.start)));\n return strings.allDayRange(medium.format(plainDateToUtc(event.start)), medium.format(plainDateToUtc(lastDay)));\n}\n\nfunction formatTimedRange(event: TimedEvent, zone: TimeZone, locale: string, strings: CalendarStrings): string {\n const from = timeOfDay(event.start, zone, locale);\n const to = timeOfDay(event.endExclusive, zone, locale);\n const startDay = instantToPlainDateTime(zone, event.start);\n const endDay = instantToPlainDateTime(zone, event.endExclusive);\n if (startDay.year === endDay.year && startDay.month === endDay.month && startDay.day === endDay.day) {\n return strings.timedRange(from, to);\n }\n const medium = formatter(locale, { ...PLAIN, day: \"numeric\", month: \"long\" });\n const endDate: PlainDate = { year: endDay.year, month: endDay.month, day: endDay.day };\n return strings.timedRangeUntil(from, to, medium.format(plainDateToUtc(endDate)));\n}\n\nfunction previousDay(date: PlainDate): PlainDate {\n const d = plainDateToUtc(date);\n d.setUTCDate(d.getUTCDate() - 1);\n return { year: d.getUTCFullYear(), month: d.getUTCMonth() + 1, day: d.getUTCDate() };\n}\n\n/**\n * A cell's accessible name: `Monday, 15 June 2026, 3 events`.\n *\n * THE COUNT IS PART OF THE NAME, and that is the difference between a grid a\n * screen-reader user can skim and one they must enter cell by cell to discover\n * is empty. Arrowing across a month hearing \"14. 15. 16.\" tells them nothing\n * about where the work is.\n */\nexport function cellLabel(\n date: PlainDate,\n eventCount: number,\n locale: string,\n strings: CalendarStrings,\n): string {\n return strings.cellLabel(eventCount, numberFormat(locale, {}).format(eventCount), longDate(date, locale));\n}\n\n/**\n * An event chip's accessible name.\n *\n * Title, then the range, then the calendar's colour LABEL — the last so that\n * two identically-titled events on different calendars are distinguishable\n * without seeing the colour.\n */\nexport function eventLabel(\n event: CalendarEvent,\n zone: TimeZone,\n paletteLabel: string | undefined,\n locale: string,\n strings: CalendarStrings,\n): string {\n const parts = [event.title, formatDateRange(event, zone, locale, strings)];\n if (event.calendarLabel) parts.push(event.calendarLabel);\n else if (paletteLabel) parts.push(paletteLabel);\n return parts.join(\", \");\n}\n"],"names":["formatter","locale","options","dateFormat","plainDateToUtc","date","asUtcDate","PLAIN","weekdayName","width","dayNumber","monthTitle","longDate","timeOfDay","instant","zone","withMinutes","wall","instantToPlainDateTime","zoneLabel","at","p","formatDateRange","event","strings","formatAllDayRange","formatTimedRange","lastDay","previousDay","sameDay","medium","from","to","startDay","endDay","endDate","d","cellLabel","eventCount","numberFormat","eventLabel","paletteLabel","parts"],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ function t(e) {
2
+ return {
3
+ key: e,
4
+ fill: `var(--event-${e}-fill)`,
5
+ text: `var(--event-${e}-text)`,
6
+ edge: `var(--event-${e}-edge)`
7
+ };
8
+ }
9
+ const i = [
10
+ t("iris"),
11
+ t("aqua"),
12
+ t("mint"),
13
+ t("amber"),
14
+ t("rose"),
15
+ t("azure"),
16
+ t("orchid"),
17
+ t("slate")
18
+ ], n = "iris", r = new Map(i.map((e) => [e.key, e]));
19
+ function a(e) {
20
+ return e === void 0 ? r.get(n) : r.get(e) ?? r.get(n);
21
+ }
22
+ function o(e) {
23
+ return r.has(e);
24
+ }
25
+ export {
26
+ n as DEFAULT_PALETTE_KEY,
27
+ i as EVENT_PALETTE,
28
+ o as isPaletteKey,
29
+ a as paletteFor
30
+ };
31
+ //# sourceMappingURL=palette.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"palette.js","sources":["../../../src/components/calendar/palette.ts"],"sourcesContent":["import type { EventPalette, PaletteEntry, PaletteKey } from \"@/lib/calendar/types\";\n\n/* ----------------------------------------------------------------------------\n THE CURATED PALETTE.\n\n Eight swatches, each naming its own text colour and its own edge. A consumer\n picks a KEY; it cannot supply a hex, and that refusal is the feature — see\n `PaletteEntry` for why a computed black-or-white flip cannot be made correct,\n and `tokens.css` for the tokens themselves.\n\n Every pair is measured by `audit:palette` in a real browser, in both themes:\n 4.5:1 text on fill, 3:1 edge on fill, 3:1 edge against the page. The values\n live in CSS custom properties rather than here, so a chip re-themes with the\n page instead of needing a re-render.\n\n The spoken colour name (`calendar.colors[key]` in the built-in strings) is not\n decoration. It is spoken as part of the chip's accessible name so that colour\n is never the only way to tell two calendars apart — a legend elsewhere on the\n page does not satisfy that, because the remedy has to sit on the coded item\n itself.\n -------------------------------------------------------------------------- */\n\nfunction entry(key: PaletteKey): PaletteEntry {\n return {\n key,\n fill: `var(--event-${key}-fill)`,\n text: `var(--event-${key}-text)`,\n edge: `var(--event-${key}-edge)`,\n };\n}\n\nexport const EVENT_PALETTE: EventPalette = [\n entry(\"iris\"),\n entry(\"aqua\"),\n entry(\"mint\"),\n entry(\"amber\"),\n entry(\"rose\"),\n entry(\"azure\"),\n entry(\"orchid\"),\n entry(\"slate\"),\n];\n\n// I18N-ALLOW: palette key id, matched against the PaletteKey union\nexport const DEFAULT_PALETTE_KEY = \"iris\";\n\nconst byKey = new Map<string, PaletteEntry>(EVENT_PALETTE.map((swatch) => [swatch.key, swatch]));\n\n/**\n * The swatch for a key, falling back to the default for an unknown one.\n *\n * A FALLBACK RATHER THAN A THROW, deliberately, and this is the one place in\n * the calendar where that is the right call. Event data arrives from a server\n * and an unrecognised colour key is a data problem, not a programming error —\n * refusing to render the whole month because one event has a stale key would\n * turn a cosmetic mismatch into an outage. The event still renders, still\n * carries its title and time, and is still reachable; only its colour is\n * generic.\n */\nexport function paletteFor(key: string | undefined): PaletteEntry {\n if (key === undefined) return byKey.get(DEFAULT_PALETTE_KEY)!;\n return byKey.get(key) ?? byKey.get(DEFAULT_PALETTE_KEY)!;\n}\n\n/** Whether a key names a real swatch — for a consumer validating its own data. */\nexport function isPaletteKey(key: string): boolean {\n return byKey.has(key);\n}\n"],"names":["entry","key","EVENT_PALETTE","DEFAULT_PALETTE_KEY","byKey","swatch","paletteFor","isPaletteKey"],"mappings":"AAsBA,SAASA,EAAMC,GAA+B;AAC5C,SAAO;AAAA,IACL,KAAAA;AAAA,IACA,MAAM,eAAeA,CAAG;AAAA,IACxB,MAAM,eAAeA,CAAG;AAAA,IACxB,MAAM,eAAeA,CAAG;AAAA,EAAA;AAE5B;AAEO,MAAMC,IAA8B;AAAA,EACzCF,EAAM,MAAM;AAAA,EACZA,EAAM,MAAM;AAAA,EACZA,EAAM,MAAM;AAAA,EACZA,EAAM,OAAO;AAAA,EACbA,EAAM,MAAM;AAAA,EACZA,EAAM,OAAO;AAAA,EACbA,EAAM,QAAQ;AAAA,EACdA,EAAM,OAAO;AACf,GAGaG,IAAsB,QAE7BC,IAAQ,IAAI,IAA0BF,EAAc,IAAI,CAACG,MAAW,CAACA,EAAO,KAAKA,CAAM,CAAC,CAAC;AAaxF,SAASC,EAAWL,GAAuC;AAChE,SAAIA,MAAQ,SAAkBG,EAAM,IAAID,CAAmB,IACpDC,EAAM,IAAIH,CAAG,KAAKG,EAAM,IAAID,CAAmB;AACxD;AAGO,SAASI,EAAaN,GAAsB;AACjD,SAAOG,EAAM,IAAIH,CAAG;AACtB;"}
@@ -0,0 +1,149 @@
1
+ import { useState as D, useRef as E, useCallback as a, useEffect as j } from "react";
2
+ import { attachPointerGesture as q } from "../../lib/dnd/sensors/gesture.js";
3
+ import { describeTarget as X, resolveCalendarTarget as z, calendarDragResult as P, createdEvent as L, applyCalendarDelta as F } from "../../lib/calendar/drag.js";
4
+ import { useUiLocale as Y, useUiStrings as Z } from "../../lib/i18n/provider.js";
5
+ function un(H) {
6
+ const { zone: C, days: A, snapMinutes: R, measure: S, onCommit: T, onCreate: M, onAnnounce: _, disabled: b } = H, B = Y(), { moveCancelled: I } = Z().calendar, [l, v] = D(null), [k, g] = D(null), [J, w] = D(!1), t = E({ zone: C, days: A, snapMinutes: R, measure: S, onCommit: T, onCreate: M, onAnnounce: _, locale: B, moveCancelled: I });
7
+ t.current = { zone: C, days: A, snapMinutes: R, measure: S, onCommit: T, onCreate: M, onAnnounce: _, locale: B, moveCancelled: I };
8
+ const n = E({ columns: [], origin: null, anchor: null, last: null, spoken: null, point: null }), d = a(() => {
9
+ n.current.columns = t.current.measure();
10
+ }, []);
11
+ j(() => {
12
+ if (!l && !k) return;
13
+ const r = () => d();
14
+ return window.addEventListener("scroll", r, { capture: !0, passive: !0 }), () => window.removeEventListener("scroll", r, { capture: !0 });
15
+ }, [l, k, d]), j(() => {
16
+ if (!l && !k) return;
17
+ const r = (u) => {
18
+ u.key === "Escape" && (u.preventDefault(), n.current.origin = null, n.current.anchor = null, n.current.last = null, v(null), g(null), w(!1), t.current.onAnnounce?.(t.current.moveCancelled));
19
+ };
20
+ return window.addEventListener("keydown", r), () => window.removeEventListener("keydown", r);
21
+ }, [l, k]);
22
+ const p = a((r) => {
23
+ const u = X(r, t.current.zone, t.current.locale);
24
+ n.current.spoken !== u && (n.current.spoken = u, t.current.onAnnounce?.(u));
25
+ }, []), U = E(
26
+ /* @__PURE__ */ new Map()
27
+ ), $ = a(
28
+ (r) => (u) => {
29
+ if (!u || b) return;
30
+ const c = r.event, e = r.kind;
31
+ return q(u, {
32
+ onPress: () => c.editable !== !1,
33
+ onActivate: (o) => {
34
+ n.current.point = o, d();
35
+ const i = z(o, {
36
+ zone: t.current.zone,
37
+ columns: n.current.columns,
38
+ snapMinutes: t.current.snapMinutes
39
+ });
40
+ i && (n.current.origin = { event: c, kind: e, from: i }, n.current.last = i, n.current.spoken = null, v({ id: c.id, kind: e, delta: {} }));
41
+ },
42
+ onMove: (o) => {
43
+ n.current.point = o;
44
+ const i = n.current.origin;
45
+ if (!i) return;
46
+ const f = z(o, {
47
+ zone: t.current.zone,
48
+ columns: n.current.columns,
49
+ snapMinutes: t.current.snapMinutes
50
+ }) ?? n.current.last;
51
+ if (!f) return;
52
+ n.current.last = f;
53
+ const m = P(i, f, t.current.zone);
54
+ w(m.invalid !== void 0), v({ id: c.id, kind: e, delta: m.delta }), m.invalid || p(f);
55
+ },
56
+ onRelease: (o, i) => {
57
+ if (n.current.point = null, i) {
58
+ const G = (K) => {
59
+ K.stopPropagation(), K.preventDefault();
60
+ };
61
+ u.addEventListener("click", G, { capture: !0, once: !0 }), setTimeout(() => u.removeEventListener("click", G, { capture: !0 }), 0);
62
+ }
63
+ const h = n.current.origin;
64
+ if (n.current.origin = null, v(null), w(!1), !i || !h) return;
65
+ const f = n.current.last;
66
+ if (!f) return;
67
+ const m = P(h, f, t.current.zone);
68
+ !m.moved || m.invalid || t.current.onCommit?.(
69
+ c,
70
+ F(c, e, m.delta, t.current.zone)
71
+ );
72
+ },
73
+ onCancel: () => {
74
+ n.current.point = null, n.current.origin = null, v(null), w(!1);
75
+ }
76
+ });
77
+ },
78
+ [p, b, d]
79
+ ), N = a(
80
+ (r, u) => {
81
+ const c = `${r.id}:${u}`;
82
+ let e = U.current.get(c);
83
+ return e || (e = { event: r, kind: u, cb: () => {
84
+ } }, e.cb = $(e), U.current.set(c, e)), e.event = r, e.cb;
85
+ },
86
+ [$]
87
+ ), y = E(null), x = a(
88
+ (r) => !r || b || !M ? void 0 : q(r, {
89
+ onPress: (c, e) => !e.target?.closest("button"),
90
+ onActivate: (c) => {
91
+ n.current.point = c, d();
92
+ const e = z(c, {
93
+ zone: t.current.zone,
94
+ columns: n.current.columns,
95
+ snapMinutes: t.current.snapMinutes
96
+ });
97
+ e && (n.current.anchor = e, n.current.last = e, n.current.spoken = null, g(L(e, e)));
98
+ },
99
+ onMove: (c) => {
100
+ n.current.point = c;
101
+ const e = n.current.anchor;
102
+ if (!e) return;
103
+ const o = z(c, {
104
+ zone: t.current.zone,
105
+ columns: n.current.columns,
106
+ snapMinutes: t.current.snapMinutes
107
+ }) ?? n.current.last;
108
+ o && (n.current.last = o, g(L(e, o)), p(o));
109
+ },
110
+ onRelease: (c, e) => {
111
+ if (n.current.point = null, e) {
112
+ const i = (h) => {
113
+ h.stopPropagation(), h.preventDefault();
114
+ };
115
+ r.addEventListener("click", i, { capture: !0, once: !0 }), setTimeout(() => r.removeEventListener("click", i, { capture: !0 }), 0);
116
+ }
117
+ const s = n.current.anchor, o = n.current.last;
118
+ n.current.anchor = null, g(null), !(!e || !s || !o) && t.current.onCreate?.(L(s, o));
119
+ },
120
+ onCancel: () => {
121
+ n.current.point = null, n.current.anchor = null, g(null);
122
+ }
123
+ }),
124
+ [p, b, M, d]
125
+ ), O = a(() => (y.current || (y.current = x), y.current), [x]), Q = a(() => n.current.point, []), V = a(
126
+ (r) => {
127
+ d();
128
+ const u = n.current.origin, c = n.current.anchor, s = z(r, {
129
+ zone: t.current.zone,
130
+ columns: n.current.columns,
131
+ snapMinutes: t.current.snapMinutes
132
+ }) ?? n.current.last;
133
+ if (s)
134
+ if (n.current.last = s, u) {
135
+ const o = P(u, s, t.current.zone);
136
+ w(o.invalid !== void 0), v({ id: u.event.id, kind: u.kind, delta: o.delta }), o.invalid || p(s);
137
+ } else c && (g(L(c, s)), p(s));
138
+ },
139
+ [p, d]
140
+ ), W = a(
141
+ (r) => !l || l.id !== r.id ? r : F(r, l.kind, l.delta, C),
142
+ [l, C]
143
+ );
144
+ return { draft: l, creating: k, invalid: J, bindEvent: N, bindCanvas: O, preview: W, getPoint: Q, onScrolled: V };
145
+ }
146
+ export {
147
+ un as useCalendarDrag
148
+ };
149
+ //# sourceMappingURL=use-calendar-drag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-calendar-drag.js","sources":["../../../src/components/calendar/use-calendar-drag.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from \"react\";\nimport { attachPointerGesture } from \"@/lib/dnd/sensors/gesture\";\nimport {\n applyCalendarDelta,\n calendarDragResult,\n createdEvent,\n describeTarget,\n resolveCalendarTarget,\n type CalendarTarget,\n type ColumnRect,\n} from \"@/lib/calendar/drag\";\nimport type { CalendarEvent, DragKind, EventDraft, TimedEvent } from \"@/lib/calendar/types\";\nimport type { Instant, PlainDate, TimeZone } from \"@/lib/time\";\nimport { useUiLocale, useUiStrings } from \"@/lib/i18n\";\n\n/* ----------------------------------------------------------------------------\n THE REACT SIDE OF A CALENDAR GESTURE.\n\n Everything decidable is decided in `lib/calendar/drag.ts`, which is pure and\n carries the DST cases no browser test could reach reliably. What is left here\n is the part that genuinely needs the DOM: measuring the columns, listening,\n and holding the draft.\n\n THE DRAFT IS A DELTA KEYED BY ID, never a rewritten copy of the event and\n never a reference to one. See `EventDraft` for the two real failures that\n shape prevents.\n\n MEASURED AT ACTIVATION AND AGAIN ON SCROLL. A snapshot taken once at\n pointer-down goes stale the moment the grid scrolls under the pointer — and\n the grid scrolls constantly during a drag, because auto-scroll is doing it.\n -------------------------------------------------------------------------- */\n\nexport interface CalendarDragOptions {\n readonly zone: TimeZone;\n readonly days: readonly PlainDate[];\n readonly snapMinutes: number;\n /** Measure the day columns. Called at activation and on every scroll. */\n readonly measure: () => ColumnRect[];\n /** Commit. Not called for a gesture that changed nothing. */\n readonly onCommit?: (event: CalendarEvent, next: TimedEvent) => void;\n /** Commit a drag-to-create. */\n readonly onCreate?: (range: { start: Instant; endExclusive: Instant; day: PlainDate }) => void;\n /** Fired on every committed slot change, for the live region. */\n readonly onAnnounce?: (message: string) => void;\n readonly disabled?: boolean;\n}\n\nexport interface CalendarDragState {\n /** The gesture in flight, or null. */\n readonly draft: EventDraft | null;\n /** The rubber-band range while creating, or null. */\n readonly creating: { start: Instant; endExclusive: Instant; day: PlainDate } | null;\n /** True while a resize would be refused — the view dims the preview. */\n readonly invalid: boolean;\n /** Wire an event chip. `kind` decides which edge, if any, is being moved. */\n readonly bindEvent: (event: TimedEvent, kind: DragKind) => (node: HTMLElement | null) => void;\n /** Wire the empty area of a day column, for drag-to-create. */\n readonly bindCanvas: () => (node: HTMLElement | null) => void;\n /** The event as it would be if dropped now — for the live preview. */\n readonly preview: (event: TimedEvent) => TimedEvent;\n /**\n * The two questions the edge auto-scroll loop asks. Passed straight to\n * `attachEdgeAutoScroll` — see its `AutoScrollDriver` for why re-feeding the\n * point on scroll is the whole reason the second one exists.\n */\n readonly getPoint: () => { x: number; y: number } | null;\n readonly onScrolled: (point: { x: number; y: number }) => void;\n}\n\nexport function useCalendarDrag(options: CalendarDragOptions): CalendarDragState {\n const { zone, days, snapMinutes, measure, onCommit, onCreate, onAnnounce, disabled } = options;\n const locale = useUiLocale();\n const { moveCancelled } = useUiStrings().calendar;\n\n const [draft, setDraft] = useState<EventDraft | null>(null);\n const [creating, setCreating] = useState<CalendarDragState[\"creating\"]>(null);\n const [invalid, setInvalid] = useState(false);\n\n /* Live values the gesture callbacks read. A gesture outlives several renders,\n so closing over props directly would leave it acting on the values that\n existed at pointer-down. */\n const live = useRef({ zone, days, snapMinutes, measure, onCommit, onCreate, onAnnounce, locale, moveCancelled });\n live.current = { zone, days, snapMinutes, measure, onCommit, onCreate, onAnnounce, locale, moveCancelled };\n\n const session = useRef<{\n columns: ColumnRect[];\n origin: { event: TimedEvent; kind: DragKind; from: CalendarTarget } | null;\n anchor: CalendarTarget | null;\n last: CalendarTarget | null;\n spoken: string | null;\n point: { x: number; y: number } | null;\n }>({ columns: [], origin: null, anchor: null, last: null, spoken: null, point: null });\n\n const remeasure = useCallback(() => {\n session.current.columns = live.current.measure();\n }, []);\n\n /* The columns move when anything scrolls — including the grid's own\n auto-scroll — so the snapshot is refreshed rather than trusted. */\n useEffect(() => {\n if (!draft && !creating) return;\n const onScroll = () => remeasure();\n window.addEventListener(\"scroll\", onScroll, { capture: true, passive: true });\n return () => window.removeEventListener(\"scroll\", onScroll, { capture: true });\n }, [draft, creating, remeasure]);\n\n /* Escape abandons the gesture. Window-level because the handle has pointer\n capture, not focus, so a keypress never reaches it. */\n useEffect(() => {\n if (!draft && !creating) return;\n const onKey = (e: KeyboardEvent) => {\n if (e.key !== \"Escape\") return;\n e.preventDefault();\n session.current.origin = null;\n session.current.anchor = null;\n session.current.last = null;\n setDraft(null);\n setCreating(null);\n setInvalid(false);\n live.current.onAnnounce?.(live.current.moveCancelled);\n };\n window.addEventListener(\"keydown\", onKey);\n return () => window.removeEventListener(\"keydown\", onKey);\n }, [draft, creating]);\n\n const announce = useCallback((target: CalendarTarget) => {\n const message = describeTarget(target, live.current.zone, live.current.locale);\n /* ONLY ON A COMMITTED SLOT CHANGE, never per pixel. A live region updating\n every frame overflows the speech queue and the user hears NOTHING — which\n is worse than silence, because the region looks like it is working. */\n if (session.current.spoken === message) return;\n session.current.spoken = message;\n live.current.onAnnounce?.(message);\n }, []);\n\n /**\n * Ref callbacks, cached by (event, kind).\n *\n * THE IDENTITY HAS TO BE STABLE, and this is not an optimisation — without it\n * the feature does not work at all. React detaches a ref whose function\n * identity changed and re-attaches the new one, which here means tearing down\n * the pointer gesture and building a fresh one. The FIRST thing a gesture does\n * on activation is `setDraft`; that re-renders; the re-render replaces this\n * callback; React runs the cleanup; the cleanup releases pointer capture and\n * removes the listeners. The drag killed itself at the moment it started, and\n * a browser probe reported \"moved 0px while still held\" for every gesture.\n *\n * The entry holds the LATEST event, so a stable callback still acts on fresh\n * data — the stability is in the function, not in what it closes over.\n */\n const bindings = useRef(\n new Map<\n string,\n { event: TimedEvent; kind: DragKind; cb: (node: HTMLElement | null) => void }\n >(),\n );\n\n const makeEventBinding = useCallback(\n (entry: { event: TimedEvent; kind: DragKind }) => (node: HTMLElement | null) => {\n if (!node || disabled) return;\n const event = entry.event;\n const kind = entry.kind;\n const detach = attachPointerGesture(node, {\n onPress: () => {\n if (event.editable === false) return false;\n return true;\n },\n onActivate: (point) => {\n session.current.point = point;\n remeasure();\n const from = resolveCalendarTarget(point, {\n zone: live.current.zone,\n columns: session.current.columns,\n snapMinutes: live.current.snapMinutes,\n });\n if (!from) return;\n session.current.origin = { event, kind, from };\n session.current.last = from;\n session.current.spoken = null;\n setDraft({ id: event.id, kind, delta: {} });\n },\n onMove: (point) => {\n session.current.point = point;\n const origin = session.current.origin;\n if (!origin) return;\n const hit = resolveCalendarTarget(point, {\n zone: live.current.zone,\n columns: session.current.columns,\n snapMinutes: live.current.snapMinutes,\n });\n /* KEEP THE LAST TARGET when the pointer leaves the columns. An event\n that snapped home every time the finger crossed the gutter would be\n unusable. */\n const target = hit ?? session.current.last;\n if (!target) return;\n session.current.last = target;\n\n const result = calendarDragResult(origin, target, live.current.zone);\n setInvalid(result.invalid !== undefined);\n setDraft({ id: event.id, kind, delta: result.delta });\n if (!result.invalid) announce(target);\n },\n onRelease: (_point, activated) => {\n session.current.point = null;\n /* A DRAG MUST NOT ALSO BE A CLICK, and until this existed it was.\n *\n * The browser fires `click` after `pointerup` regardless of how far\n * the pointer travelled, so every completed drag also opened the\n * chip's action menu — and once that menu was open it swallowed the\n * Escape key, so cancelling a drag stopped working. The browser probe\n * caught it as \"time unchanged\" failing on a gesture that had in fact\n * committed.\n *\n * Swallowed in the CAPTURE phase and removed on the next tick: the\n * click is dispatched synchronously after `pointerup`, so a listener\n * added here is in place before it arrives, and one that outlived the\n * tick would eat the user's next real click. */\n if (activated) {\n const swallow = (clickEvent: Event) => {\n clickEvent.stopPropagation();\n clickEvent.preventDefault();\n };\n node.addEventListener(\"click\", swallow, { capture: true, once: true });\n setTimeout(() => node.removeEventListener(\"click\", swallow, { capture: true }), 0);\n }\n const origin = session.current.origin;\n session.current.origin = null;\n setDraft(null);\n setInvalid(false);\n if (!activated || !origin) return;\n\n const target = session.current.last;\n if (!target) return;\n const result = calendarDragResult(origin, target, live.current.zone);\n /* A gesture that changed nothing writes nothing — a click must not\n produce an update, and neither must a drag that came back. */\n if (!result.moved || result.invalid) return;\n live.current.onCommit?.(\n event,\n applyCalendarDelta(event, kind, result.delta, live.current.zone),\n );\n },\n onCancel: () => {\n session.current.point = null;\n session.current.origin = null;\n setDraft(null);\n setInvalid(false);\n },\n });\n return detach as unknown as void;\n },\n [announce, disabled, remeasure],\n );\n\n const bindEvent = useCallback(\n (event: TimedEvent, kind: DragKind) => {\n const key = `${event.id}:${kind}`;\n let entry = bindings.current.get(key);\n if (!entry) {\n entry = { event, kind, cb: () => {} };\n entry.cb = makeEventBinding(entry);\n bindings.current.set(key, entry);\n }\n /* Refreshed every render; the callback reads it at attach time. */\n entry.event = event;\n return entry.cb;\n },\n [makeEventBinding],\n );\n\n const canvasBinding = useRef<((node: HTMLElement | null) => void) | null>(null);\n\n const bindCanvasImpl = useCallback(\n (node: HTMLElement | null) => {\n if (!node || disabled || !onCreate) return;\n const detach = attachPointerGesture(node, {\n onPress: (_point, event) => {\n /* A press that landed on an existing chip belongs to that chip. */\n const el = event.target as HTMLElement | null;\n return !el?.closest(\"button\");\n },\n onActivate: (point) => {\n session.current.point = point;\n remeasure();\n const anchor = resolveCalendarTarget(point, {\n zone: live.current.zone,\n columns: session.current.columns,\n snapMinutes: live.current.snapMinutes,\n });\n if (!anchor) return;\n session.current.anchor = anchor;\n session.current.last = anchor;\n session.current.spoken = null;\n setCreating(createdEvent(anchor, anchor));\n },\n onMove: (point) => {\n session.current.point = point;\n const anchor = session.current.anchor;\n if (!anchor) return;\n const hit = resolveCalendarTarget(point, {\n zone: live.current.zone,\n columns: session.current.columns,\n snapMinutes: live.current.snapMinutes,\n });\n const target = hit ?? session.current.last;\n if (!target) return;\n session.current.last = target;\n setCreating(createdEvent(anchor, target));\n announce(target);\n },\n onRelease: (_point, activated) => {\n session.current.point = null;\n if (activated) {\n const swallow = (clickEvent: Event) => {\n clickEvent.stopPropagation();\n clickEvent.preventDefault();\n };\n node.addEventListener(\"click\", swallow, { capture: true, once: true });\n setTimeout(() => node.removeEventListener(\"click\", swallow, { capture: true }), 0);\n }\n const anchor = session.current.anchor;\n const target = session.current.last;\n session.current.anchor = null;\n setCreating(null);\n if (!activated || !anchor || !target) return;\n live.current.onCreate?.(createdEvent(anchor, target));\n },\n onCancel: () => {\n session.current.point = null;\n session.current.anchor = null;\n setCreating(null);\n },\n });\n return detach as unknown as void;\n },\n [announce, disabled, onCreate, remeasure],\n );\n\n /* Same stability requirement as the event bindings above. */\n const bindCanvas = useCallback(() => {\n if (!canvasBinding.current) canvasBinding.current = bindCanvasImpl;\n return canvasBinding.current;\n }, [bindCanvasImpl]);\n\n /* THE SCROLL LOOP RE-RUNS THE MOVE, it does not merely remeasure. The pointer\n has not moved and the CONTENT has, so nothing recomputes what the pointer\n is over unless the same point is fed back through — the grid would\n otherwise freeze mid-auto-scroll with the preview stuck where it was. */\n const getPoint = useCallback(() => session.current.point, []);\n const onScrolled = useCallback(\n (point: { x: number; y: number }) => {\n remeasure();\n const origin = session.current.origin;\n const anchor = session.current.anchor;\n const hit = resolveCalendarTarget(point, {\n zone: live.current.zone,\n columns: session.current.columns,\n snapMinutes: live.current.snapMinutes,\n });\n const target = hit ?? session.current.last;\n if (!target) return;\n session.current.last = target;\n if (origin) {\n const result = calendarDragResult(origin, target, live.current.zone);\n setInvalid(result.invalid !== undefined);\n setDraft({ id: origin.event.id, kind: origin.kind, delta: result.delta });\n if (!result.invalid) announce(target);\n } else if (anchor) {\n setCreating(createdEvent(anchor, target));\n announce(target);\n }\n },\n [announce, remeasure],\n );\n\n const preview = useCallback(\n (event: TimedEvent): TimedEvent => {\n if (!draft || draft.id !== event.id) return event;\n /* COMPOSED ONTO THE EVENT AS IT IS NOW — see `applyCalendarDelta`. */\n return applyCalendarDelta(event, draft.kind, draft.delta, zone);\n },\n [draft, zone],\n );\n\n return { draft, creating, invalid, bindEvent, bindCanvas, preview, getPoint, onScrolled };\n}\n"],"names":["useCalendarDrag","options","zone","days","snapMinutes","measure","onCommit","onCreate","onAnnounce","disabled","locale","useUiLocale","moveCancelled","useUiStrings","draft","setDraft","useState","creating","setCreating","invalid","setInvalid","live","useRef","session","remeasure","useCallback","useEffect","onScroll","onKey","e","announce","target","message","describeTarget","bindings","makeEventBinding","entry","node","event","kind","attachPointerGesture","point","from","resolveCalendarTarget","origin","result","calendarDragResult","_point","activated","swallow","clickEvent","applyCalendarDelta","bindEvent","key","canvasBinding","bindCanvasImpl","anchor","createdEvent","bindCanvas","getPoint","onScrolled","preview"],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ import { useState as I, useRef as K, useCallback as g } from "react";
2
+ import { describeTarget as L } from "../../lib/calendar/drag.js";
3
+ import { useUiLocale as R, useUiStrings as v } from "../../lib/i18n/provider.js";
4
+ import { addDuration as y } from "../../lib/time/zone.js";
5
+ function T(M) {
6
+ const { zone: n, snapMinutes: b, days: x, onCommit: S, onAnnounce: s } = M, w = R(), o = v().calendar, [u, D] = I(null), [m, c] = I({}), p = K(null), E = g(
7
+ (r, t) => {
8
+ const e = x[Math.max(0, Math.min(x.length - 1, t))];
9
+ e && s?.(
10
+ L({ day: e, instant: r.start }, n, w)
11
+ );
12
+ },
13
+ [x, w, s, n]
14
+ ), U = g(
15
+ (r) => {
16
+ if (u !== r.id) return r;
17
+ const t = y(n, r.start, m);
18
+ return { ...r, start: t, endExclusive: t + (r.endExclusive - r.start) };
19
+ },
20
+ [m, u, n]
21
+ ), C = g(
22
+ (r, t) => {
23
+ const e = u === r.id;
24
+ if (t.key === " " || t.key === "Spacebar") {
25
+ if (t.preventDefault(), !e) {
26
+ p.current = r, D(r.id), c({}), s?.(o.grabbed(r.title));
27
+ return;
28
+ }
29
+ k(r);
30
+ return;
31
+ }
32
+ if (!e) return;
33
+ if (t.key === "Escape") {
34
+ t.preventDefault(), D(null), c({}), p.current = null, s?.(o.returned(r.title));
35
+ return;
36
+ }
37
+ if (t.key === "Enter") {
38
+ t.preventDefault(), k(r);
39
+ return;
40
+ }
41
+ const i = (l) => {
42
+ t.preventDefault(), c((d) => {
43
+ const a = { ...d, minutes: (d.minutes ?? 0) + l }, f = y(n, r.start, a);
44
+ return E({ ...r, start: f, endExclusive: f }, A(a)), a;
45
+ });
46
+ }, h = (l) => {
47
+ t.preventDefault(), c((d) => {
48
+ const a = { ...d, days: (d.days ?? 0) + l }, f = y(n, r.start, a);
49
+ return E({ ...r, start: f, endExclusive: f }, A(a)), a;
50
+ });
51
+ };
52
+ switch (t.key) {
53
+ case "ArrowUp":
54
+ return i(-b);
55
+ case "ArrowDown":
56
+ return i(b);
57
+ case "ArrowLeft":
58
+ return h(-1);
59
+ case "ArrowRight":
60
+ return h(1);
61
+ default:
62
+ return;
63
+ }
64
+ function A(l) {
65
+ return l.days ?? 0;
66
+ }
67
+ },
68
+ [o, u, s, b, E, n]
69
+ );
70
+ function k(r) {
71
+ const t = p.current ?? r, e = y(n, t.start, m), i = {
72
+ ...t,
73
+ start: e,
74
+ endExclusive: e + (t.endExclusive - t.start)
75
+ };
76
+ if (D(null), c({}), p.current = null, i.start === t.start) {
77
+ s?.(o.droppedInPlace(t.title));
78
+ return;
79
+ }
80
+ S(t, i), s?.(o.moved(t.title));
81
+ }
82
+ return { grabbedId: u, delta: m, onKeyDown: C, preview: U };
83
+ }
84
+ export {
85
+ T as useEventKeyboard
86
+ };
87
+ //# sourceMappingURL=use-event-keyboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-event-keyboard.js","sources":["../../../src/components/calendar/use-event-keyboard.ts"],"sourcesContent":["import { useCallback, useRef, useState, type KeyboardEvent } from \"react\";\nimport { addDuration, type CalendarDuration, type PlainDate, type TimeZone } from \"@/lib/time\";\nimport type { TimedEvent } from \"@/lib/calendar/types\";\nimport { describeTarget } from \"@/lib/calendar/drag\";\nimport { useUiLocale, useUiStrings } from \"@/lib/i18n\";\n\n/* ----------------------------------------------------------------------------\n KEYBOARD GRABBED-MODE — the OPTIONAL layer, and it is optional on purpose.\n\n THE POINTER MENU IS TIER ONE AND THIS IS TIER TWO. WCAG 2.2 SC 2.5.7 asks for\n a single-pointer, non-dragging route to every drag outcome, and it is\n assessed independently of 2.1.1 — so this file satisfies 2.1.1 and does\n nothing at all for 2.5.7. Shipping it INSTEAD of `EventActions` would fail AA\n while feeling like the harder, more thorough piece of work.\n\n It is here because for a sighted keyboard user it is genuinely faster than\n three selects, and because the grid already knows how to move an event by a\n delta. It is not here because it is the accessible path.\n\n NO Ctrl+Alt / Ctrl+Option ANYWHERE. That is VoiceOver's own modifier, and the\n single product that ships keyboard event-moving — Apple Calendar — uses it,\n which makes its shortcut unusable by the users most likely to need it.\n -------------------------------------------------------------------------- */\n\nexport interface EventKeyboardOptions {\n readonly zone: TimeZone;\n /** Same step the drag snaps to, so both paths reach the same positions. */\n readonly snapMinutes: number;\n /** Days in view, for the day-change bounds and for the announcement. */\n readonly days: readonly PlainDate[];\n readonly onCommit: (event: TimedEvent, next: TimedEvent) => void;\n readonly onAnnounce?: (message: string) => void;\n}\n\nexport interface EventKeyboardState {\n /** The event currently held, or null. */\n readonly grabbedId: string | null;\n /** The pending delta while held. */\n readonly delta: CalendarDuration;\n /** Attach to an event chip. */\n readonly onKeyDown: (event: TimedEvent, e: KeyboardEvent<HTMLElement>) => void;\n /** The event as it would be if dropped now. */\n readonly preview: (event: TimedEvent) => TimedEvent;\n}\n\nexport function useEventKeyboard(options: EventKeyboardOptions): EventKeyboardState {\n const { zone, snapMinutes, days, onCommit, onAnnounce } = options;\n const locale = useUiLocale();\n const announcements = useUiStrings().calendar;\n\n const [grabbedId, setGrabbedId] = useState<string | null>(null);\n const [delta, setDelta] = useState<CalendarDuration>({});\n /* The event as it was when grabbed, so Escape can restore without depending\n on the consumer having kept it. */\n const held = useRef<TimedEvent | null>(null);\n\n const speak = useCallback(\n (next: TimedEvent, dayIndexHint: number) => {\n const day = days[Math.max(0, Math.min(days.length - 1, dayIndexHint))];\n if (!day) return;\n onAnnounce?.(\n describeTarget({ dayIndex: dayIndexHint, day, instant: next.start }, zone, locale),\n );\n },\n [days, locale, onAnnounce, zone],\n );\n\n const preview = useCallback(\n (event: TimedEvent): TimedEvent => {\n if (grabbedId !== event.id) return event;\n const start = addDuration(zone, event.start, delta);\n return { ...event, start, endExclusive: start + (event.endExclusive - event.start) };\n },\n [delta, grabbedId, zone],\n );\n\n const onKeyDown = useCallback(\n (event: TimedEvent, e: KeyboardEvent<HTMLElement>) => {\n const grabbed = grabbedId === event.id;\n\n /* SPACE, NOT ENTER, PICKS UP. Enter on a chip is \"open it\" everywhere else\n in this package and in every calendar product; overloading it would\n make the primary action unreachable for a keyboard user. */\n if (e.key === \" \" || e.key === \"Spacebar\") {\n e.preventDefault();\n if (!grabbed) {\n held.current = event;\n setGrabbedId(event.id);\n setDelta({});\n onAnnounce?.(announcements.grabbed(event.title));\n return;\n }\n /* A second Space drops it — the same key that picked it up, which is\n what every grabbed-mode implementation that survived user testing\n does. */\n commit(event);\n return;\n }\n\n if (!grabbed) return;\n\n if (e.key === \"Escape\") {\n e.preventDefault();\n setGrabbedId(null);\n setDelta({});\n held.current = null;\n /* ANNOUNCED, and the announcement says the event went BACK. \"Cancelled\"\n alone leaves the user unsure whether the move happened. */\n onAnnounce?.(announcements.returned(event.title));\n return;\n }\n\n if (e.key === \"Enter\") {\n e.preventDefault();\n commit(event);\n return;\n }\n\n const step = (minutes: number) => {\n e.preventDefault();\n setDelta((current: CalendarDuration) => {\n const next = { ...current, minutes: (current.minutes ?? 0) + minutes };\n const moved = addDuration(zone, event.start, next);\n speak({ ...event, start: moved, endExclusive: moved }, dayIndexOf(next));\n return next;\n });\n };\n const page = (dayStep: number) => {\n e.preventDefault();\n setDelta((current: CalendarDuration) => {\n const next = { ...current, days: (current.days ?? 0) + dayStep };\n const moved = addDuration(zone, event.start, next);\n speak({ ...event, start: moved, endExclusive: moved }, dayIndexOf(next));\n return next;\n });\n };\n\n switch (e.key) {\n case \"ArrowUp\":\n return step(-snapMinutes);\n case \"ArrowDown\":\n return step(snapMinutes);\n case \"ArrowLeft\":\n return page(-1);\n case \"ArrowRight\":\n return page(1);\n default:\n return;\n }\n\n function dayIndexOf(d: CalendarDuration): number {\n return d.days ?? 0;\n }\n },\n [announcements, grabbedId, onAnnounce, snapMinutes, speak, zone],\n );\n\n function commit(event: TimedEvent): void {\n const current = held.current ?? event;\n const start = addDuration(zone, current.start, delta);\n const next: TimedEvent = {\n ...current,\n start,\n endExclusive: start + (current.endExclusive - current.start),\n };\n setGrabbedId(null);\n setDelta({});\n held.current = null;\n /* A grab that never moved writes nothing — Space then Space must not\n produce an update, exactly as a click must not. */\n if (next.start === current.start) {\n onAnnounce?.(announcements.droppedInPlace(current.title));\n return;\n }\n onCommit(current, next);\n onAnnounce?.(announcements.moved(current.title));\n }\n\n return { grabbedId, delta, onKeyDown, preview };\n}\n"],"names":["useEventKeyboard","options","zone","snapMinutes","days","onCommit","onAnnounce","locale","useUiLocale","announcements","useUiStrings","grabbedId","setGrabbedId","useState","delta","setDelta","held","useRef","speak","useCallback","next","dayIndexHint","day","describeTarget","preview","event","start","addDuration","onKeyDown","e","grabbed","commit","step","minutes","current","moved","dayIndexOf","page","dayStep","d"],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ import { useState as D, useRef as F, useCallback as l } from "react";
2
+ import { isSameDate as w, addMonths as p, addDays as u, startOfWeek as C } from "../../lib/time/plain.js";
3
+ import { comparePlainDate as P } from "../../lib/time/plain.js";
4
+ function M(r, t, n, a) {
5
+ const o = a.ctrl || a.meta;
6
+ switch (r) {
7
+ case "ArrowLeft":
8
+ return u(t, -1);
9
+ case "ArrowRight":
10
+ return u(t, 1);
11
+ case "ArrowUp":
12
+ return u(t, -7);
13
+ case "ArrowDown":
14
+ return u(t, 7);
15
+ case "Home":
16
+ return o ? { year: t.year, month: t.month, day: 1 } : C(t, n);
17
+ case "End":
18
+ return o ? k(t) : u(C(t, n), 6);
19
+ case "PageUp":
20
+ return p(t, a.shift ? -12 : -1);
21
+ case "PageDown":
22
+ return p(t, a.shift ? 12 : 1);
23
+ default:
24
+ return null;
25
+ }
26
+ }
27
+ function k(r) {
28
+ const t = /* @__PURE__ */ new Date(0);
29
+ return t.setUTCFullYear(r.year, r.month, 0), { year: t.getUTCFullYear(), month: t.getUTCMonth() + 1, day: t.getUTCDate() };
30
+ }
31
+ function x(r, t) {
32
+ const { month: n, weekStartsOn: a, onMonthChange: o } = t, [f, s] = D(r), [c, i] = D(!1), m = F(f), h = l(
33
+ (e) => {
34
+ w(m.current, e) || (m.current = e, s(e), (e.year !== n.year || e.month !== n.month) && o?.(e));
35
+ },
36
+ [n.year, n.month, o]
37
+ ), g = l(
38
+ (e) => {
39
+ if (c) {
40
+ e.key === "Escape" && (e.preventDefault(), i(!1));
41
+ return;
42
+ }
43
+ if (e.key === "Enter" || e.key === "F2") {
44
+ e.preventDefault(), i(!0);
45
+ return;
46
+ }
47
+ const y = M(e.key, f, a, {
48
+ ctrl: e.ctrlKey,
49
+ shift: e.shiftKey,
50
+ meta: e.metaKey
51
+ });
52
+ y && (e.preventDefault(), h(y));
53
+ },
54
+ [f, c, h, a]
55
+ );
56
+ return {
57
+ focusedDay: f,
58
+ setFocusedDay: h,
59
+ insideCell: c,
60
+ enterCell: l(() => i(!0), []),
61
+ leaveCell: l(() => i(!1), []),
62
+ onKeyDown: g
63
+ };
64
+ }
65
+ function A(r, t, n, a) {
66
+ const o = (s) => s.year === t.year && s.month === t.month;
67
+ return a && r.some((s) => w(s, a)) ? a : n && o(n) ? n : r.find(o) ?? r[0];
68
+ }
69
+ function T(r, t) {
70
+ return r.year === t.year && r.month === t.month;
71
+ }
72
+ export {
73
+ P as comparePlainDate,
74
+ A as initialFocusDay,
75
+ T as isInMonth,
76
+ M as nextDayForKey,
77
+ x as useGridNavigation
78
+ };
79
+ //# sourceMappingURL=use-grid-navigation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-grid-navigation.js","sources":["../../../src/components/calendar/use-grid-navigation.ts"],"sourcesContent":["import { useCallback, useRef, useState, type KeyboardEvent } from \"react\";\nimport {\n addDays,\n addMonths,\n comparePlainDate,\n isSameDate,\n startOfWeek,\n type PlainDate,\n} from \"@/lib/time\";\n\n/* ----------------------------------------------------------------------------\n APG GRID NAVIGATION FOR A MONTH.\n\n ROVING TABINDEX ON THE CELL — not `aria-activedescendant`, and not a button\n inside the cell. Both alternatives are the two most repeated screen-reader\n defects in this widget class:\n\n `aria-activedescendant` is known to fail on grids with VoiceOver, and it\n forfeits scroll-into-view, which the user agent gives roving tabindex for\n free.\n\n A focusable control INSIDE a `gridcell` — which is the shape React Aria's\n calendar ships — makes NVDA drop to browse mode, so the arrow keys read the\n cell's label character by character instead of moving between cells\n (nvda#8395; #13392 is still open). The reporter noted it does NOT happen\n when the `td` itself carries the tabindex. On macOS, VoiceOver skips the\n nested button in the rotor, so the date cannot be selected at all.\n\n NO `role=\"application\"`. Google uses it and consequently has to instruct\n users to turn off browse mode, and it buys nothing that a focused control\n does not already provide.\n\n THE TWO-LEVEL MODEL. Arrows move between DAYS. `Enter` or `F2` enters a cell\n and focuses its first event; `Escape` leaves and restores grid navigation.\n That is APG's shape for a grid whose cells contain widgets, and it is what\n keeps a month with fifty events from being fifty tab stops.\n\n ONE COLLISION AVOIDED DELIBERATELY: no `Ctrl+Alt`/`Ctrl+Option` binding\n anywhere. That is VoiceOver's own modifier, and the single product that ships\n keyboard event-moving — Apple Calendar — uses it, which means its shortcut is\n unusable by the users most likely to need a keyboard.\n -------------------------------------------------------------------------- */\n\nexport interface GridNavigationOptions {\n /** Any day in the displayed month. Used to clamp paging. */\n readonly month: PlainDate;\n readonly weekStartsOn: number;\n /** Called when navigation lands outside the displayed month. */\n readonly onMonthChange?: (month: PlainDate) => void;\n}\n\nexport interface GridNavigation {\n /** The day that currently holds `tabIndex={0}`. Exactly one, always. */\n readonly focusedDay: PlainDate;\n readonly setFocusedDay: (day: PlainDate) => void;\n /** True while the user is INSIDE a cell, interacting with its events. */\n readonly insideCell: boolean;\n readonly enterCell: () => void;\n readonly leaveCell: () => void;\n /** Attach to the table. Returns true when it consumed the event. */\n readonly onKeyDown: (event: KeyboardEvent<HTMLElement>) => void;\n}\n\n/**\n * Which day a key moves to, or `null` when the key is not ours.\n *\n * PURE, AND EXPORTED, so the whole key map is testable without a DOM. Every\n * binding below is APG-normative; the file header records the two it\n * deliberately does not use.\n */\nexport function nextDayForKey(\n key: string,\n current: PlainDate,\n weekStartsOn: number,\n modifiers: { ctrl: boolean; shift: boolean; meta: boolean },\n): PlainDate | null {\n const ctrlOrMeta = modifiers.ctrl || modifiers.meta;\n switch (key) {\n case \"ArrowLeft\":\n return addDays(current, -1);\n case \"ArrowRight\":\n return addDays(current, 1);\n case \"ArrowUp\":\n return addDays(current, -7);\n case \"ArrowDown\":\n return addDays(current, 7);\n case \"Home\":\n /* Ctrl+Home is the first day of the MONTH; bare Home is the first day of\n the week row, which is what \"Home\" means everywhere else in a grid. */\n return ctrlOrMeta\n ? { year: current.year, month: current.month, day: 1 }\n : startOfWeek(current, weekStartsOn);\n case \"End\":\n return ctrlOrMeta\n ? lastDayOfMonth(current)\n : addDays(startOfWeek(current, weekStartsOn), 6);\n case \"PageUp\":\n return addMonths(current, modifiers.shift ? -12 : -1);\n case \"PageDown\":\n return addMonths(current, modifiers.shift ? 12 : 1);\n default:\n return null;\n }\n}\n\nfunction lastDayOfMonth(date: PlainDate): PlainDate {\n const d = new Date(0);\n d.setUTCFullYear(date.year, date.month, 0);\n return { year: d.getUTCFullYear(), month: d.getUTCMonth() + 1, day: d.getUTCDate() };\n}\n\nexport function useGridNavigation(\n initialDay: PlainDate,\n options: GridNavigationOptions,\n): GridNavigation {\n const { month, weekStartsOn, onMonthChange } = options;\n const [focusedDay, setFocusedDayState] = useState<PlainDate>(initialDay);\n const [insideCell, setInsideCell] = useState(false);\n\n /* IDEMPOTENT, AND THAT IS NOT AN OPTIMISATION. Two things call this for a\n single keypress: the key handler moves the focused day, and the newly\n focused cell's own `onFocus` reports where focus landed. Without the guard\n the second call is a no-op for the STATE — same value — but still fires\n `onMonthChange`, so a consumer paging on that callback advanced two months\n per arrow press. Found by a test asserting the call count rather than the\n resulting value, which is the only way that defect is visible. */\n const focusedRef = useRef<PlainDate>(focusedDay);\n const setFocusedDay = useCallback(\n (day: PlainDate) => {\n if (isSameDate(focusedRef.current, day)) return;\n focusedRef.current = day;\n setFocusedDayState(day);\n /* Navigation that leaves the displayed month PAGES the month rather than\n refusing to move. A grid whose arrow keys stop at the edge strands a\n keyboard user on the 1st with no way forward that a mouse user does not\n have — and the trailing days of the previous month are visible on\n screen, so refusing to enter them contradicts what is drawn. */\n if (day.year !== month.year || day.month !== month.month) onMonthChange?.(day);\n },\n [month.year, month.month, onMonthChange],\n );\n\n const onKeyDown = useCallback(\n (event: KeyboardEvent<HTMLElement>) => {\n if (insideCell) {\n if (event.key === \"Escape\") {\n event.preventDefault();\n setInsideCell(false);\n }\n /* Everything else belongs to whatever is focused inside the cell.\n Swallowing arrows here would break a menu or a text field in an\n event's own popover. */\n return;\n }\n\n if (event.key === \"Enter\" || event.key === \"F2\") {\n event.preventDefault();\n setInsideCell(true);\n return;\n }\n\n const next = nextDayForKey(event.key, focusedDay, weekStartsOn, {\n ctrl: event.ctrlKey,\n shift: event.shiftKey,\n meta: event.metaKey,\n });\n if (!next) return;\n\n /* `preventDefault` only once the key is genuinely ours. Doing it before\n the lookup swallows Tab, and a grid you cannot Tab out of is a trap. */\n event.preventDefault();\n setFocusedDay(next);\n },\n [focusedDay, insideCell, setFocusedDay, weekStartsOn],\n );\n\n return {\n focusedDay,\n setFocusedDay,\n insideCell,\n enterCell: useCallback(() => setInsideCell(true), []),\n leaveCell: useCallback(() => setInsideCell(false), []),\n onKeyDown,\n };\n}\n\n/**\n * The day that should carry `tabIndex={0}` when the grid has never been used.\n *\n * EXACTLY ONE CELL IS TABBABLE, ALWAYS — that is the roving-tabindex contract\n * and the thing a probe should assert after every keypress. Preference order:\n * the selected day, else today if the month contains it, else the 1st. Landing\n * on today is what a user expects; landing on the 1st of a month they paged to\n * is what they expect there.\n */\nexport function initialFocusDay(\n days: readonly PlainDate[],\n month: PlainDate,\n today: PlainDate | undefined,\n selected: PlainDate | undefined,\n): PlainDate {\n const inMonth = (d: PlainDate) => d.year === month.year && d.month === month.month;\n if (selected && days.some((d) => isSameDate(d, selected))) return selected;\n if (today && inMonth(today)) return today;\n const first = days.find(inMonth);\n /* `days` always covers the whole month by construction, so the fallback is\n unreachable — it exists so the signature has no null, rather than as a\n branch anyone should rely on. */\n return first ?? days[0];\n}\n\n/** Whether `day` belongs to the displayed month rather than a neighbour. */\nexport function isInMonth(day: PlainDate, month: PlainDate): boolean {\n return day.year === month.year && day.month === month.month;\n}\n\n/** Ordering helper for consumers rendering their own event lists. */\nexport { comparePlainDate };\n"],"names":["nextDayForKey","key","current","weekStartsOn","modifiers","ctrlOrMeta","addDays","startOfWeek","lastDayOfMonth","addMonths","date","d","useGridNavigation","initialDay","options","month","onMonthChange","focusedDay","setFocusedDayState","useState","insideCell","setInsideCell","focusedRef","useRef","setFocusedDay","useCallback","day","isSameDate","onKeyDown","event","next","initialFocusDay","days","today","selected","inMonth","isInMonth"],"mappings":";;;AAsEO,SAASA,EACdC,GACAC,GACAC,GACAC,GACkB;AAClB,QAAMC,IAAaD,EAAU,QAAQA,EAAU;AAC/C,UAAQH,GAAA;AAAA,IACN,KAAK;AACH,aAAOK,EAAQJ,GAAS,EAAE;AAAA,IAC5B,KAAK;AACH,aAAOI,EAAQJ,GAAS,CAAC;AAAA,IAC3B,KAAK;AACH,aAAOI,EAAQJ,GAAS,EAAE;AAAA,IAC5B,KAAK;AACH,aAAOI,EAAQJ,GAAS,CAAC;AAAA,IAC3B,KAAK;AAGH,aAAOG,IACH,EAAE,MAAMH,EAAQ,MAAM,OAAOA,EAAQ,OAAO,KAAK,EAAA,IACjDK,EAAYL,GAASC,CAAY;AAAA,IACvC,KAAK;AACH,aAAOE,IACHG,EAAeN,CAAO,IACtBI,EAAQC,EAAYL,GAASC,CAAY,GAAG,CAAC;AAAA,IACnD,KAAK;AACH,aAAOM,EAAUP,GAASE,EAAU,QAAQ,MAAM,EAAE;AAAA,IACtD,KAAK;AACH,aAAOK,EAAUP,GAASE,EAAU,QAAQ,KAAK,CAAC;AAAA,IACpD;AACE,aAAO;AAAA,EAAA;AAEb;AAEA,SAASI,EAAeE,GAA4B;AAClD,QAAMC,IAAI,oBAAI,KAAK,CAAC;AACpB,SAAAA,EAAE,eAAeD,EAAK,MAAMA,EAAK,OAAO,CAAC,GAClC,EAAE,MAAMC,EAAE,eAAA,GAAkB,OAAOA,EAAE,YAAA,IAAgB,GAAG,KAAKA,EAAE,aAAW;AACnF;AAEO,SAASC,EACdC,GACAC,GACgB;AAChB,QAAM,EAAE,OAAAC,GAAO,cAAAZ,GAAc,eAAAa,EAAA,IAAkBF,GACzC,CAACG,GAAYC,CAAkB,IAAIC,EAAoBN,CAAU,GACjE,CAACO,GAAYC,CAAa,IAAIF,EAAS,EAAK,GAS5CG,IAAaC,EAAkBN,CAAU,GACzCO,IAAgBC;AAAA,IACpB,CAACC,MAAmB;AAClB,MAAIC,EAAWL,EAAW,SAASI,CAAG,MACtCJ,EAAW,UAAUI,GACrBR,EAAmBQ,CAAG,IAMlBA,EAAI,SAASX,EAAM,QAAQW,EAAI,UAAUX,EAAM,UAAOC,IAAgBU,CAAG;AAAA,IAC/E;AAAA,IACA,CAACX,EAAM,MAAMA,EAAM,OAAOC,CAAa;AAAA,EAAA,GAGnCY,IAAYH;AAAA,IAChB,CAACI,MAAsC;AACrC,UAAIT,GAAY;AACd,QAAIS,EAAM,QAAQ,aAChBA,EAAM,eAAA,GACNR,EAAc,EAAK;AAKrB;AAAA,MACF;AAEA,UAAIQ,EAAM,QAAQ,WAAWA,EAAM,QAAQ,MAAM;AAC/C,QAAAA,EAAM,eAAA,GACNR,EAAc,EAAI;AAClB;AAAA,MACF;AAEA,YAAMS,IAAO9B,EAAc6B,EAAM,KAAKZ,GAAYd,GAAc;AAAA,QAC9D,MAAM0B,EAAM;AAAA,QACZ,OAAOA,EAAM;AAAA,QACb,MAAMA,EAAM;AAAA,MAAA,CACb;AACD,MAAKC,MAILD,EAAM,eAAA,GACNL,EAAcM,CAAI;AAAA,IACpB;AAAA,IACA,CAACb,GAAYG,GAAYI,GAAerB,CAAY;AAAA,EAAA;AAGtD,SAAO;AAAA,IACL,YAAAc;AAAA,IACA,eAAAO;AAAA,IACA,YAAAJ;AAAA,IACA,WAAWK,EAAY,MAAMJ,EAAc,EAAI,GAAG,CAAA,CAAE;AAAA,IACpD,WAAWI,EAAY,MAAMJ,EAAc,EAAK,GAAG,CAAA,CAAE;AAAA,IACrD,WAAAO;AAAA,EAAA;AAEJ;AAWO,SAASG,EACdC,GACAjB,GACAkB,GACAC,GACW;AACX,QAAMC,IAAU,CAACxB,MAAiBA,EAAE,SAASI,EAAM,QAAQJ,EAAE,UAAUI,EAAM;AAC7E,SAAImB,KAAYF,EAAK,KAAK,CAACrB,MAAMgB,EAAWhB,GAAGuB,CAAQ,CAAC,IAAUA,IAC9DD,KAASE,EAAQF,CAAK,IAAUA,IACtBD,EAAK,KAAKG,CAAO,KAIfH,EAAK,CAAC;AACxB;AAGO,SAASI,EAAUV,GAAgBX,GAA2B;AACnE,SAAOW,EAAI,SAASX,EAAM,QAAQW,EAAI,UAAUX,EAAM;AACxD;"}
@@ -0,0 +1,27 @@
1
+ import { useState as d, useEffect as f } from "react";
2
+ function v(c = {}) {
3
+ const { resolutionMs: i = 6e4, enabled: o = !0, fixed: t } = c, [l, r] = d(() => t ?? Date.now());
4
+ return f(() => {
5
+ if (t !== void 0) {
6
+ r(t);
7
+ return;
8
+ }
9
+ if (!o) return;
10
+ let e;
11
+ const n = () => {
12
+ const u = Date.now();
13
+ r(u);
14
+ const a = i - u % i + 1;
15
+ e = setTimeout(n, a);
16
+ }, s = () => {
17
+ document.visibilityState === "visible" && (e !== void 0 && clearTimeout(e), n());
18
+ };
19
+ return n(), document.addEventListener("visibilitychange", s), () => {
20
+ e !== void 0 && clearTimeout(e), document.removeEventListener("visibilitychange", s);
21
+ };
22
+ }, [o, t, i]), l;
23
+ }
24
+ export {
25
+ v as useNow
26
+ };
27
+ //# sourceMappingURL=use-now.js.map