cursedbelt 5.40.0 → 5.45.1

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 (589) hide show
  1. package/dist/react/Toast.d.ts +12 -2
  2. package/dist/react/Toast.d.ts.map +1 -1
  3. package/dist/react/Toast.js +32 -3
  4. package/dist/react/Toast.js.map +1 -1
  5. package/dist/react/analytics/MetricDrilldown.js +1 -1
  6. package/dist/react/canvas-hud/CanvasMinimap.d.ts +32 -0
  7. package/dist/react/canvas-hud/CanvasMinimap.d.ts.map +1 -0
  8. package/dist/react/canvas-hud/CanvasMinimap.js +32 -0
  9. package/dist/react/canvas-hud/CanvasMinimap.js.map +1 -0
  10. package/dist/react/canvas-hud/CanvasNodeMenu.d.ts +34 -0
  11. package/dist/react/canvas-hud/CanvasNodeMenu.d.ts.map +1 -0
  12. package/dist/react/canvas-hud/CanvasNodeMenu.js +21 -0
  13. package/dist/react/canvas-hud/CanvasNodeMenu.js.map +1 -0
  14. package/dist/react/canvas-hud/CanvasSearchField.d.ts +27 -0
  15. package/dist/react/canvas-hud/CanvasSearchField.d.ts.map +1 -0
  16. package/dist/react/canvas-hud/CanvasSearchField.js +35 -0
  17. package/dist/react/canvas-hud/CanvasSearchField.js.map +1 -0
  18. package/dist/react/canvas-hud/HudControls.d.ts +43 -0
  19. package/dist/react/canvas-hud/HudControls.d.ts.map +1 -0
  20. package/dist/react/canvas-hud/HudControls.js +22 -0
  21. package/dist/react/canvas-hud/HudControls.js.map +1 -0
  22. package/dist/react/canvas-hud/index.d.ts +13 -0
  23. package/dist/react/canvas-hud/index.d.ts.map +1 -0
  24. package/dist/react/canvas-hud/index.js +7 -0
  25. package/dist/react/canvas-hud/index.js.map +1 -0
  26. package/dist/react/canvas-hud/useCanvasWheel.d.ts +41 -0
  27. package/dist/react/canvas-hud/useCanvasWheel.d.ts.map +1 -0
  28. package/dist/react/canvas-hud/useCanvasWheel.js +65 -0
  29. package/dist/react/canvas-hud/useCanvasWheel.js.map +1 -0
  30. package/dist/react/canvas-hud/viewport.d.ts +68 -0
  31. package/dist/react/canvas-hud/viewport.d.ts.map +1 -0
  32. package/dist/react/canvas-hud/viewport.js +77 -0
  33. package/dist/react/canvas-hud/viewport.js.map +1 -0
  34. package/dist/react/charts/AreaChart.d.ts.map +1 -1
  35. package/dist/react/charts/AreaChart.js +5 -5
  36. package/dist/react/charts/AreaChart.js.map +1 -1
  37. package/dist/react/charts/BarChart.d.ts.map +1 -1
  38. package/dist/react/charts/BarChart.js +3 -3
  39. package/dist/react/charts/BarChart.js.map +1 -1
  40. package/dist/react/charts/ChartCard.d.ts +53 -0
  41. package/dist/react/charts/ChartCard.d.ts.map +1 -0
  42. package/dist/react/charts/ChartCard.js +46 -0
  43. package/dist/react/charts/ChartCard.js.map +1 -0
  44. package/dist/react/charts/ChartFrame.d.ts +12 -5
  45. package/dist/react/charts/ChartFrame.d.ts.map +1 -1
  46. package/dist/react/charts/ChartFrame.js +12 -5
  47. package/dist/react/charts/ChartFrame.js.map +1 -1
  48. package/dist/react/charts/ChartLegend.js +1 -1
  49. package/dist/react/charts/ChartLegend.js.map +1 -1
  50. package/dist/react/charts/HeatmapChart.js +3 -3
  51. package/dist/react/charts/HeatmapChart.js.map +1 -1
  52. package/dist/react/charts/IntervalTimeline.js +1 -1
  53. package/dist/react/charts/IntervalTimeline.js.map +1 -1
  54. package/dist/react/charts/LineChart.d.ts.map +1 -1
  55. package/dist/react/charts/LineChart.js +3 -3
  56. package/dist/react/charts/LineChart.js.map +1 -1
  57. package/dist/react/charts/TimeSeriesChart.d.ts.map +1 -1
  58. package/dist/react/charts/TimeSeriesChart.js +6 -6
  59. package/dist/react/charts/TimeSeriesChart.js.map +1 -1
  60. package/dist/react/charts/chartBox.d.ts +46 -0
  61. package/dist/react/charts/chartBox.d.ts.map +1 -0
  62. package/dist/react/charts/chartBox.js +45 -0
  63. package/dist/react/charts/chartBox.js.map +1 -0
  64. package/dist/react/charts/index.d.ts +2 -0
  65. package/dist/react/charts/index.d.ts.map +1 -1
  66. package/dist/react/charts/index.js +2 -0
  67. package/dist/react/charts/index.js.map +1 -1
  68. package/dist/react/charts/shared.d.ts +13 -2
  69. package/dist/react/charts/shared.d.ts.map +1 -1
  70. package/dist/react/charts/shared.js +14 -3
  71. package/dist/react/charts/shared.js.map +1 -1
  72. package/dist/react/chat/Bubble.js +4 -4
  73. package/dist/react/chat/Bubble.js.map +1 -1
  74. package/dist/react/chat/MessageScroller.js +1 -1
  75. package/dist/react/chat/MessageScroller.js.map +1 -1
  76. package/dist/react/components/ActionBar.d.ts.map +1 -1
  77. package/dist/react/components/ActionBar.js +63 -1
  78. package/dist/react/components/ActionBar.js.map +1 -1
  79. package/dist/react/components/AddItemsMenu.js +1 -1
  80. package/dist/react/components/AddItemsMenu.js.map +1 -1
  81. package/dist/react/components/Alert.d.ts +16 -2
  82. package/dist/react/components/Alert.d.ts.map +1 -1
  83. package/dist/react/components/Alert.js +35 -2
  84. package/dist/react/components/Alert.js.map +1 -1
  85. package/dist/react/components/AppShell.d.ts +55 -33
  86. package/dist/react/components/AppShell.d.ts.map +1 -1
  87. package/dist/react/components/AppShell.js +141 -31
  88. package/dist/react/components/AppShell.js.map +1 -1
  89. package/dist/react/components/AsyncPanel.d.ts +21 -3
  90. package/dist/react/components/AsyncPanel.d.ts.map +1 -1
  91. package/dist/react/components/AsyncPanel.js +50 -6
  92. package/dist/react/components/AsyncPanel.js.map +1 -1
  93. package/dist/react/components/BannerLane.d.ts +32 -0
  94. package/dist/react/components/BannerLane.d.ts.map +1 -0
  95. package/dist/react/components/BannerLane.js +41 -0
  96. package/dist/react/components/BannerLane.js.map +1 -0
  97. package/dist/react/components/Button.d.ts.map +1 -1
  98. package/dist/react/components/Button.js +2 -1
  99. package/dist/react/components/Button.js.map +1 -1
  100. package/dist/react/components/Checkbox.d.ts.map +1 -1
  101. package/dist/react/components/Checkbox.js +7 -2
  102. package/dist/react/components/Checkbox.js.map +1 -1
  103. package/dist/react/components/ChipFilterStrip.js +1 -1
  104. package/dist/react/components/ChipFilterStrip.js.map +1 -1
  105. package/dist/react/components/ComboboxField.d.ts.map +1 -1
  106. package/dist/react/components/ComboboxField.js +14 -4
  107. package/dist/react/components/ComboboxField.js.map +1 -1
  108. package/dist/react/components/CommentThread.js +2 -2
  109. package/dist/react/components/CommentThread.js.map +1 -1
  110. package/dist/react/components/ConfirmDialog.js +1 -1
  111. package/dist/react/components/ConfirmDialog.js.map +1 -1
  112. package/dist/react/components/DataTable/DataTable.d.ts +18 -2
  113. package/dist/react/components/DataTable/DataTable.d.ts.map +1 -1
  114. package/dist/react/components/DataTable/DataTable.js +51 -12
  115. package/dist/react/components/DataTable/DataTable.js.map +1 -1
  116. package/dist/react/components/DataTable/Pagination.js +1 -1
  117. package/dist/react/components/DataTable/Pagination.js.map +1 -1
  118. package/dist/react/components/DataTable/RowActions.d.ts +7 -1
  119. package/dist/react/components/DataTable/RowActions.d.ts.map +1 -1
  120. package/dist/react/components/DataTable/RowActions.js +10 -3
  121. package/dist/react/components/DataTable/RowActions.js.map +1 -1
  122. package/dist/react/components/DataTable/TableFilterBuilder.js +1 -1
  123. package/dist/react/components/DataTable/TableFilterBuilder.js.map +1 -1
  124. package/dist/react/components/DataTable/cells/CodeCell.js +1 -1
  125. package/dist/react/components/DataTable/cells/CodeCell.js.map +1 -1
  126. package/dist/react/components/DataTable/cells/LinkCell.js +1 -1
  127. package/dist/react/components/DataTable/cells/LinkCell.js.map +1 -1
  128. package/dist/react/components/DataTable/index.d.ts +1 -1
  129. package/dist/react/components/DataTable/index.d.ts.map +1 -1
  130. package/dist/react/components/DataTable/index.js.map +1 -1
  131. package/dist/react/components/DataTable/types.d.ts +20 -0
  132. package/dist/react/components/DataTable/types.d.ts.map +1 -1
  133. package/dist/react/components/DataTable/types.js +22 -0
  134. package/dist/react/components/DataTable/types.js.map +1 -1
  135. package/dist/react/components/DateTimeField.d.ts.map +1 -1
  136. package/dist/react/components/DateTimeField.js +4 -1
  137. package/dist/react/components/DateTimeField.js.map +1 -1
  138. package/dist/react/components/DeleteButton.js +2 -0
  139. package/dist/react/components/DeleteButton.js.map +1 -1
  140. package/dist/react/components/Drawer.js +3 -3
  141. package/dist/react/components/Drawer.js.map +1 -1
  142. package/dist/react/components/DropdownMenu.d.ts +16 -0
  143. package/dist/react/components/DropdownMenu.d.ts.map +1 -1
  144. package/dist/react/components/DropdownMenu.js +22 -6
  145. package/dist/react/components/DropdownMenu.js.map +1 -1
  146. package/dist/react/components/EmptyState.d.ts +10 -2
  147. package/dist/react/components/EmptyState.d.ts.map +1 -1
  148. package/dist/react/components/EmptyState.js +10 -5
  149. package/dist/react/components/EmptyState.js.map +1 -1
  150. package/dist/react/components/EventTimeline.js +1 -1
  151. package/dist/react/components/EventTimeline.js.map +1 -1
  152. package/dist/react/components/Field.d.ts.map +1 -1
  153. package/dist/react/components/Field.js +4 -1
  154. package/dist/react/components/Field.js.map +1 -1
  155. package/dist/react/components/FileDropZone.js +1 -1
  156. package/dist/react/components/FileDropZone.js.map +1 -1
  157. package/dist/react/components/Grid.d.ts +9 -1
  158. package/dist/react/components/Grid.d.ts.map +1 -1
  159. package/dist/react/components/Grid.js +20 -2
  160. package/dist/react/components/Grid.js.map +1 -1
  161. package/dist/react/components/Guide.d.ts +31 -0
  162. package/dist/react/components/Guide.d.ts.map +1 -0
  163. package/dist/react/components/Guide.js +18 -0
  164. package/dist/react/components/Guide.js.map +1 -0
  165. package/dist/react/components/InfoHintImpl.d.ts +0 -13
  166. package/dist/react/components/InfoHintImpl.d.ts.map +1 -1
  167. package/dist/react/components/InfoHintImpl.js +17 -1
  168. package/dist/react/components/InfoHintImpl.js.map +1 -1
  169. package/dist/react/components/InlineEditableText.js +1 -1
  170. package/dist/react/components/InlineEditableText.js.map +1 -1
  171. package/dist/react/components/IsolatedFrame.js +1 -1
  172. package/dist/react/components/IsolatedFrame.js.map +1 -1
  173. package/dist/react/components/ListToolbar.d.ts.map +1 -1
  174. package/dist/react/components/ListToolbar.js +2 -2
  175. package/dist/react/components/ListToolbar.js.map +1 -1
  176. package/dist/react/components/LogViewer.d.ts +26 -2
  177. package/dist/react/components/LogViewer.d.ts.map +1 -1
  178. package/dist/react/components/LogViewer.js +41 -26
  179. package/dist/react/components/LogViewer.js.map +1 -1
  180. package/dist/react/components/Modal.d.ts +5 -1
  181. package/dist/react/components/Modal.d.ts.map +1 -1
  182. package/dist/react/components/Modal.js +18 -8
  183. package/dist/react/components/Modal.js.map +1 -1
  184. package/dist/react/components/Page.d.ts +51 -7
  185. package/dist/react/components/Page.d.ts.map +1 -1
  186. package/dist/react/components/Page.js +53 -8
  187. package/dist/react/components/Page.js.map +1 -1
  188. package/dist/react/components/PageGuideButton.d.ts +11 -0
  189. package/dist/react/components/PageGuideButton.d.ts.map +1 -0
  190. package/dist/react/components/PageGuideButton.js +52 -0
  191. package/dist/react/components/PageGuideButton.js.map +1 -0
  192. package/dist/react/components/PageGuidePopover.d.ts +14 -0
  193. package/dist/react/components/PageGuidePopover.d.ts.map +1 -0
  194. package/dist/react/components/PageGuidePopover.js +25 -0
  195. package/dist/react/components/PageGuidePopover.js.map +1 -0
  196. package/dist/react/components/PanelSeparator.js +1 -1
  197. package/dist/react/components/PanelSeparator.js.map +1 -1
  198. package/dist/react/components/Popover.d.ts.map +1 -1
  199. package/dist/react/components/Popover.js +2 -1
  200. package/dist/react/components/Popover.js.map +1 -1
  201. package/dist/react/components/PromptDialog.js +1 -1
  202. package/dist/react/components/PromptDialog.js.map +1 -1
  203. package/dist/react/components/ScrollArea.d.ts +9 -1
  204. package/dist/react/components/ScrollArea.d.ts.map +1 -1
  205. package/dist/react/components/ScrollArea.js +9 -3
  206. package/dist/react/components/ScrollArea.js.map +1 -1
  207. package/dist/react/components/Section.d.ts +5 -2
  208. package/dist/react/components/Section.d.ts.map +1 -1
  209. package/dist/react/components/Section.js +5 -2
  210. package/dist/react/components/Section.js.map +1 -1
  211. package/dist/react/components/Skeleton.d.ts +19 -1
  212. package/dist/react/components/Skeleton.d.ts.map +1 -1
  213. package/dist/react/components/Skeleton.js +24 -2
  214. package/dist/react/components/Skeleton.js.map +1 -1
  215. package/dist/react/components/StatStrip.js +1 -1
  216. package/dist/react/components/StatStrip.js.map +1 -1
  217. package/dist/react/components/StatTile.d.ts +30 -3
  218. package/dist/react/components/StatTile.d.ts.map +1 -1
  219. package/dist/react/components/StatTile.js +35 -9
  220. package/dist/react/components/StatTile.js.map +1 -1
  221. package/dist/react/components/StatTileGrid.d.ts +10 -1
  222. package/dist/react/components/StatTileGrid.d.ts.map +1 -1
  223. package/dist/react/components/StatTileGrid.js +50 -33
  224. package/dist/react/components/StatTileGrid.js.map +1 -1
  225. package/dist/react/components/StatusPill.d.ts.map +1 -1
  226. package/dist/react/components/StatusPill.js +26 -1
  227. package/dist/react/components/StatusPill.js.map +1 -1
  228. package/dist/react/components/Surface.d.ts +1 -1
  229. package/dist/react/components/Surface.d.ts.map +1 -1
  230. package/dist/react/components/Surface.js +20 -11
  231. package/dist/react/components/Surface.js.map +1 -1
  232. package/dist/react/components/SwatchPicker.d.ts.map +1 -1
  233. package/dist/react/components/SwatchPicker.js +5 -1
  234. package/dist/react/components/SwatchPicker.js.map +1 -1
  235. package/dist/react/components/Switch.js +1 -1
  236. package/dist/react/components/Switch.js.map +1 -1
  237. package/dist/react/components/TagsInput.d.ts.map +1 -1
  238. package/dist/react/components/TagsInput.js +3 -1
  239. package/dist/react/components/TagsInput.js.map +1 -1
  240. package/dist/react/components/WidgetHeader.js +1 -1
  241. package/dist/react/components/WidgetHeader.js.map +1 -1
  242. package/dist/react/components/calendar/CalendarLegend.js +1 -1
  243. package/dist/react/components/calendar/CalendarLegend.js.map +1 -1
  244. package/dist/react/components/calendar/DayAgenda.js +1 -1
  245. package/dist/react/components/calendar/DayAgenda.js.map +1 -1
  246. package/dist/react/components/calendar/EventChip.js +1 -1
  247. package/dist/react/components/calendar/EventChip.js.map +1 -1
  248. package/dist/react/components/calendar/MonthGrid.js +1 -1
  249. package/dist/react/components/calendar/MonthGrid.js.map +1 -1
  250. package/dist/react/components/calendar/WeekView.js +2 -2
  251. package/dist/react/components/calendar/WeekView.js.map +1 -1
  252. package/dist/react/components/cardFrame.d.ts +16 -0
  253. package/dist/react/components/cardFrame.d.ts.map +1 -0
  254. package/dist/react/components/cardFrame.js +24 -0
  255. package/dist/react/components/cardFrame.js.map +1 -0
  256. package/dist/react/components/dialog.d.ts.map +1 -1
  257. package/dist/react/components/dialog.js +2 -1
  258. package/dist/react/components/dialog.js.map +1 -1
  259. package/dist/react/dashboard-grid/WidgetFrame.js +2 -2
  260. package/dist/react/dashboard-grid/WidgetFrame.js.map +1 -1
  261. package/dist/react/emoji/EmojiPicker.js +1 -1
  262. package/dist/react/emoji/EmojiPicker.js.map +1 -1
  263. package/dist/react/file-tree/FileTree.d.ts +8 -1
  264. package/dist/react/file-tree/FileTree.d.ts.map +1 -1
  265. package/dist/react/file-tree/FileTree.js +29 -4
  266. package/dist/react/file-tree/FileTree.js.map +1 -1
  267. package/dist/react/filter-rail/FilterRail.js +1 -1
  268. package/dist/react/filter-rail/FilterRail.js.map +1 -1
  269. package/dist/react/folder-tree/FolderPicker.d.ts.map +1 -1
  270. package/dist/react/folder-tree/FolderPicker.js +5 -1
  271. package/dist/react/folder-tree/FolderPicker.js.map +1 -1
  272. package/dist/react/icons.d.ts +28 -0
  273. package/dist/react/icons.d.ts.map +1 -1
  274. package/dist/react/icons.js +29 -1
  275. package/dist/react/icons.js.map +1 -1
  276. package/dist/react/index.d.ts +9 -6
  277. package/dist/react/index.d.ts.map +1 -1
  278. package/dist/react/index.js +6 -3
  279. package/dist/react/index.js.map +1 -1
  280. package/dist/react/lib/menuSections.d.ts +8 -0
  281. package/dist/react/lib/menuSections.d.ts.map +1 -0
  282. package/dist/react/lib/menuSections.js +37 -0
  283. package/dist/react/lib/menuSections.js.map +1 -0
  284. package/dist/react/lib/whenIdle.d.ts +7 -0
  285. package/dist/react/lib/whenIdle.d.ts.map +1 -0
  286. package/dist/react/lib/whenIdle.js +14 -0
  287. package/dist/react/lib/whenIdle.js.map +1 -0
  288. package/dist/react/markdown/Markdown.js +2 -2
  289. package/dist/react/markdown/Markdown.js.map +1 -1
  290. package/dist/react/media/DenseGalleryShell.d.ts +7 -1
  291. package/dist/react/media/DenseGalleryShell.d.ts.map +1 -1
  292. package/dist/react/media/DenseGalleryShell.js +3 -3
  293. package/dist/react/media/DenseGalleryShell.js.map +1 -1
  294. package/dist/react/media/HoverScrubVideoThumb.js +1 -1
  295. package/dist/react/media/HoverScrubVideoThumb.js.map +1 -1
  296. package/dist/react/media/MaskPainter.js +1 -1
  297. package/dist/react/media/MediaUploadControl.js +1 -1
  298. package/dist/react/media/MediaUploadControl.js.map +1 -1
  299. package/dist/react/media/VideoTrimmer.js +1 -1
  300. package/dist/react/media/VideoTrimmer.js.map +1 -1
  301. package/dist/react/media/denseGallery.css +96 -1
  302. package/dist/react/media-gallery/MediaGallery.d.ts +5 -2
  303. package/dist/react/media-gallery/MediaGallery.d.ts.map +1 -1
  304. package/dist/react/media-gallery/MediaGallery.js +1 -1
  305. package/dist/react/media-gallery/MediaGallery.js.map +1 -1
  306. package/dist/react/namespace/NamespaceTargetCapsule.js +1 -1
  307. package/dist/react/namespace/NamespaceTargetCapsule.js.map +1 -1
  308. package/dist/react/nav/BreadcrumbTrail.js +1 -1
  309. package/dist/react/nav/BreadcrumbTrail.js.map +1 -1
  310. package/dist/react/nav/CommandBar.d.ts +7 -1
  311. package/dist/react/nav/CommandBar.d.ts.map +1 -1
  312. package/dist/react/nav/CommandBar.js +5 -3
  313. package/dist/react/nav/CommandBar.js.map +1 -1
  314. package/dist/react/nav/PlaceBar.d.ts.map +1 -1
  315. package/dist/react/nav/PlaceBar.js +7 -9
  316. package/dist/react/nav/PlaceBar.js.map +1 -1
  317. package/dist/react/nav/SideNav.d.ts +12 -2
  318. package/dist/react/nav/SideNav.d.ts.map +1 -1
  319. package/dist/react/nav/SideNav.js +42 -22
  320. package/dist/react/nav/SideNav.js.map +1 -1
  321. package/dist/react/nav/TopBar.d.ts +65 -31
  322. package/dist/react/nav/TopBar.d.ts.map +1 -1
  323. package/dist/react/nav/TopBar.js +59 -24
  324. package/dist/react/nav/TopBar.js.map +1 -1
  325. package/dist/react/nav/index.d.ts +1 -1
  326. package/dist/react/nav/index.d.ts.map +1 -1
  327. package/dist/react/nav/index.js +1 -1
  328. package/dist/react/nav/index.js.map +1 -1
  329. package/dist/react/nav/navShared.d.ts +10 -1
  330. package/dist/react/nav/navShared.d.ts.map +1 -1
  331. package/dist/react/nav/navShared.js +23 -0
  332. package/dist/react/nav/navShared.js.map +1 -1
  333. package/dist/react/notifications/NotificationFeed.js +2 -2
  334. package/dist/react/notifications/NotificationFeed.js.map +1 -1
  335. package/dist/react/palette/Command.d.ts.map +1 -1
  336. package/dist/react/palette/Command.js +1 -1
  337. package/dist/react/palette/Command.js.map +1 -1
  338. package/dist/react/palette/CommandPalette.d.ts +13 -1
  339. package/dist/react/palette/CommandPalette.d.ts.map +1 -1
  340. package/dist/react/palette/CommandPalette.js +44 -8
  341. package/dist/react/palette/CommandPalette.js.map +1 -1
  342. package/dist/react/palette/commandSources.d.ts +57 -0
  343. package/dist/react/palette/commandSources.d.ts.map +1 -0
  344. package/dist/react/palette/commandSources.js +129 -0
  345. package/dist/react/palette/commandSources.js.map +1 -0
  346. package/dist/react/palette/index.d.ts +1 -0
  347. package/dist/react/palette/index.d.ts.map +1 -1
  348. package/dist/react/palette/index.js +1 -0
  349. package/dist/react/palette/index.js.map +1 -1
  350. package/dist/react/rich-text/RichTextEditor.js +1 -1
  351. package/dist/react/rich-text/RichTextEditor.js.map +1 -1
  352. package/dist/react/rich-text/RichTextToolbar.js +1 -1
  353. package/dist/react/rich-text/RichTextToolbar.js.map +1 -1
  354. package/dist/scripts/guardrailsEnforce.d.ts.map +1 -1
  355. package/dist/styles-areas/analytics.css +16 -16
  356. package/dist/styles-areas/auth.css +2 -2
  357. package/dist/styles-areas/calendar.css +5 -6
  358. package/dist/styles-areas/canvas-hud.css +30 -0
  359. package/dist/styles-areas/chart-table.css +1 -1
  360. package/dist/styles-areas/charts.css +3 -3
  361. package/dist/styles-areas/chat.css +7 -6
  362. package/dist/styles-areas/companion-link.css +2 -2
  363. package/dist/styles-areas/core.css +99 -90
  364. package/dist/styles-areas/dashboard-grid.css +4 -4
  365. package/dist/styles-areas/data-table.css +16 -16
  366. package/dist/styles-areas/disk-usage.css +5 -5
  367. package/dist/styles-areas/emoji.css +2 -2
  368. package/dist/styles-areas/fields.css +13 -14
  369. package/dist/styles-areas/filter-rail.css +4 -4
  370. package/dist/styles-areas/folder-tree.css +6 -6
  371. package/dist/styles-areas/layout-engine.css +4 -4
  372. package/dist/styles-areas/markdown.css +2 -1
  373. package/dist/styles-areas/master-detail.css +3 -3
  374. package/dist/styles-areas/media-gallery.css +7 -6
  375. package/dist/styles-areas/media.css +12 -13
  376. package/dist/styles-areas/nav.css +28 -14
  377. package/dist/styles-areas/notifications.css +4 -4
  378. package/dist/styles-areas/overlays.css +4 -4
  379. package/dist/styles-areas/palette.css +5 -4
  380. package/dist/styles-areas/rich-text.css +3 -3
  381. package/dist/styles-areas/sharing.css +4 -3
  382. package/dist/styles-areas/stats.css +9 -8
  383. package/dist/styles-areas/test-report.css +4 -4
  384. package/dist/styles-areas/wizard.css +6 -5
  385. package/dist/styles-areas/workbench.css +10 -9
  386. package/dist/styles-areas/workbook-viewer.css +2 -2
  387. package/dist/styles-utilities.css +296 -190
  388. package/dist/testing/designAudit.d.ts.map +1 -1
  389. package/dist/testing/designAudit.js +4 -0
  390. package/dist/testing/designAudit.js.map +1 -1
  391. package/dist/testing/designBaseline.d.ts.map +1 -1
  392. package/dist/testing/designBaseline.js +4 -0
  393. package/dist/testing/designBaseline.js.map +1 -1
  394. package/dist/theme.css +103 -2
  395. package/package.json +10 -2
  396. package/scripts/generateAreaStyles.ts +3 -1
  397. package/scripts/guardrails-baseline.json +2 -1
  398. package/scripts/guardrailsEnforce.spec.ts +64 -0
  399. package/scripts/guardrailsEnforce.ts +65 -8
  400. package/scripts/styleAreas.ts +89 -6
  401. package/src/bundlerOnlyEntries.spec.ts +25 -8
  402. package/src/nodeTypesDeclared.spec.ts +47 -0
  403. package/src/react/Toast.spec.tsx +43 -0
  404. package/src/react/Toast.tsx +45 -2
  405. package/src/react/analytics/MetricDrilldown.tsx +1 -1
  406. package/src/react/canvas-hud/CanvasMinimap.tsx +88 -0
  407. package/src/react/canvas-hud/CanvasNodeMenu.tsx +91 -0
  408. package/src/react/canvas-hud/CanvasSearchField.tsx +91 -0
  409. package/src/react/canvas-hud/HudControls.spec.tsx +160 -0
  410. package/src/react/canvas-hud/HudControls.tsx +128 -0
  411. package/src/react/canvas-hud/index.ts +33 -0
  412. package/src/react/canvas-hud/useCanvasWheel.ts +99 -0
  413. package/src/react/canvas-hud/viewport.spec.ts +105 -0
  414. package/src/react/canvas-hud/viewport.ts +124 -0
  415. package/src/react/charts/AreaChart.tsx +9 -8
  416. package/src/react/charts/BarChart.tsx +11 -10
  417. package/src/react/charts/ChartCard.tsx +146 -0
  418. package/src/react/charts/ChartFrame.tsx +28 -10
  419. package/src/react/charts/ChartLegend.tsx +1 -1
  420. package/src/react/charts/HeatmapChart.tsx +5 -5
  421. package/src/react/charts/IntervalTimeline.tsx +2 -2
  422. package/src/react/charts/LineChart.tsx +9 -8
  423. package/src/react/charts/TimeSeriesChart.tsx +11 -10
  424. package/src/react/charts/chartBox.spec.ts +40 -0
  425. package/src/react/charts/chartBox.ts +75 -0
  426. package/src/react/charts/index.ts +2 -0
  427. package/src/react/charts/shared.ts +16 -3
  428. package/src/react/chat/Bubble.tsx +5 -5
  429. package/src/react/chat/MessageScroller.tsx +1 -1
  430. package/src/react/components/ActionBar.spec.tsx +90 -0
  431. package/src/react/components/ActionBar.tsx +82 -2
  432. package/src/react/components/AddItemsMenu.tsx +1 -1
  433. package/src/react/components/Alert.spec.tsx +32 -2
  434. package/src/react/components/Alert.tsx +47 -3
  435. package/src/react/components/AppShell.spec.tsx +199 -13
  436. package/src/react/components/AppShell.tsx +254 -92
  437. package/src/react/components/AsyncPanel.spec.tsx +17 -1
  438. package/src/react/components/AsyncPanel.tsx +88 -6
  439. package/src/react/components/BannerLane.tsx +128 -0
  440. package/src/react/components/Button.tsx +2 -0
  441. package/src/react/components/Checkbox.spec.tsx +18 -0
  442. package/src/react/components/Checkbox.tsx +8 -5
  443. package/src/react/components/ChipFilterStrip.tsx +1 -1
  444. package/src/react/components/ComboboxField.tsx +20 -3
  445. package/src/react/components/CommentThread.tsx +2 -2
  446. package/src/react/components/ConfirmDialog.tsx +1 -1
  447. package/src/react/components/DataTable/DataTable.tsx +80 -8
  448. package/src/react/components/DataTable/Pagination.tsx +1 -1
  449. package/src/react/components/DataTable/RowActions.tsx +55 -2
  450. package/src/react/components/DataTable/TableFilterBuilder.tsx +1 -1
  451. package/src/react/components/DataTable/cells/CodeCell.tsx +1 -1
  452. package/src/react/components/DataTable/cells/LinkCell.tsx +1 -1
  453. package/src/react/components/DataTable/index.ts +1 -0
  454. package/src/react/components/DataTable/numericColumn.spec.ts +19 -0
  455. package/src/react/components/DataTable/types.ts +36 -0
  456. package/src/react/components/DateTimeField.tsx +3 -1
  457. package/src/react/components/DeleteButton.tsx +3 -0
  458. package/src/react/components/Drawer.tsx +3 -3
  459. package/src/react/components/DropdownMenu.spec.tsx +55 -0
  460. package/src/react/components/DropdownMenu.tsx +73 -20
  461. package/src/react/components/EmptyState.tsx +26 -7
  462. package/src/react/components/EventTimeline.tsx +1 -1
  463. package/src/react/components/Field.spec.tsx +3 -2
  464. package/src/react/components/Field.tsx +7 -4
  465. package/src/react/components/Field.width.spec.tsx +14 -3
  466. package/src/react/components/FileDropZone.tsx +1 -1
  467. package/src/react/components/Grid.spec.tsx +44 -0
  468. package/src/react/components/Grid.tsx +41 -11
  469. package/src/react/components/Guide.tsx +77 -0
  470. package/src/react/components/InfoHint.spec.tsx +21 -0
  471. package/src/react/components/InfoHintImpl.tsx +22 -1
  472. package/src/react/components/InlineEditableText.tsx +1 -1
  473. package/src/react/components/IsolatedFrame.tsx +1 -1
  474. package/src/react/components/ListToolbar.spec.tsx +12 -0
  475. package/src/react/components/ListToolbar.tsx +8 -5
  476. package/src/react/components/LogViewer.tsx +118 -18
  477. package/src/react/components/Modal.spec.tsx +17 -2
  478. package/src/react/components/Modal.tsx +25 -10
  479. package/src/react/components/MultiSelectField.spec.tsx +6 -0
  480. package/src/react/components/Page.spec.tsx +89 -5
  481. package/src/react/components/Page.tsx +100 -16
  482. package/src/react/components/PageGuideButton.spec.tsx +39 -0
  483. package/src/react/components/PageGuideButton.tsx +110 -0
  484. package/src/react/components/PageGuidePopover.tsx +52 -0
  485. package/src/react/components/PanelSeparator.tsx +1 -1
  486. package/src/react/components/Popover.tsx +3 -1
  487. package/src/react/components/PromptDialog.tsx +1 -1
  488. package/src/react/components/ScrollArea.spec.tsx +20 -0
  489. package/src/react/components/ScrollArea.tsx +19 -0
  490. package/src/react/components/Section.spec.tsx +82 -1
  491. package/src/react/components/Section.tsx +10 -4
  492. package/src/react/components/Skeleton.tsx +50 -2
  493. package/src/react/components/StatStrip.tsx +1 -1
  494. package/src/react/components/StatTile.tsx +84 -11
  495. package/src/react/components/StatTileGrid.spec.tsx +6 -1
  496. package/src/react/components/StatTileGrid.tsx +25 -0
  497. package/src/react/components/StatusPill.tsx +26 -1
  498. package/src/react/components/Surface.tsx +22 -14
  499. package/src/react/components/SwatchPicker.tsx +4 -0
  500. package/src/react/components/Switch.tsx +1 -1
  501. package/src/react/components/TagsInput.spec.tsx +8 -0
  502. package/src/react/components/TagsInput.tsx +3 -1
  503. package/src/react/components/WidgetHeader.tsx +1 -1
  504. package/src/react/components/calendar/CalendarLegend.tsx +1 -1
  505. package/src/react/components/calendar/DayAgenda.tsx +1 -1
  506. package/src/react/components/calendar/EventChip.tsx +1 -1
  507. package/src/react/components/calendar/MonthGrid.tsx +1 -1
  508. package/src/react/components/calendar/WeekView.tsx +2 -2
  509. package/src/react/components/cardFrame.ts +28 -0
  510. package/src/react/components/dataDisplay.spec.tsx +176 -0
  511. package/src/react/components/dialog.tsx +4 -1
  512. package/src/react/components/entryChunks.graph.spec.ts +89 -0
  513. package/src/react/dashboard-grid/WidgetFrame.tsx +2 -2
  514. package/src/react/emoji/EmojiPicker.tsx +1 -1
  515. package/src/react/file-tree/FileTree.spec.tsx +49 -0
  516. package/src/react/file-tree/FileTree.tsx +37 -4
  517. package/src/react/filter-rail/FilterRail.tsx +1 -1
  518. package/src/react/folder-tree/FolderPicker.spec.tsx +8 -0
  519. package/src/react/folder-tree/FolderPicker.tsx +4 -1
  520. package/src/react/icons.spec.ts +21 -1
  521. package/src/react/icons.tsx +136 -2
  522. package/src/react/index.ts +38 -3
  523. package/src/react/lib/menuSections.ts +33 -0
  524. package/src/react/lib/whenIdle.ts +13 -0
  525. package/src/react/markdown/Markdown.tsx +2 -2
  526. package/src/react/media/DenseGalleryShell.tsx +20 -4
  527. package/src/react/media/HoverScrubVideoThumb.tsx +2 -2
  528. package/src/react/media/MaskPainter.tsx +1 -1
  529. package/src/react/media/MediaUploadControl.tsx +1 -1
  530. package/src/react/media/VideoTrimmer.tsx +1 -1
  531. package/src/react/media/denseGallery.css +96 -1
  532. package/src/react/media-gallery/MediaGallery.spec.tsx +26 -0
  533. package/src/react/media-gallery/MediaGallery.tsx +10 -3
  534. package/src/react/namespace/NamespaceTargetCapsule.tsx +1 -1
  535. package/src/react/nav/BreadcrumbTrail.tsx +2 -2
  536. package/src/react/nav/CommandBar.tsx +14 -3
  537. package/src/react/nav/PlaceBar.tsx +18 -8
  538. package/src/react/nav/SideNav.tsx +99 -17
  539. package/src/react/nav/TopBar.spec.tsx +78 -21
  540. package/src/react/nav/TopBar.tsx +270 -98
  541. package/src/react/nav/index.ts +8 -1
  542. package/src/react/nav/nav.spec.tsx +46 -2
  543. package/src/react/nav/navShared.tsx +23 -2
  544. package/src/react/notifications/NotificationFeed.tsx +2 -2
  545. package/src/react/palette/Command.tsx +1 -1
  546. package/src/react/palette/CommandPalette.spec.tsx +31 -0
  547. package/src/react/palette/CommandPalette.tsx +108 -11
  548. package/src/react/palette/commandSources.tsx +186 -0
  549. package/src/react/palette/index.ts +7 -0
  550. package/src/react/rich-text/RichTextEditor.tsx +1 -1
  551. package/src/react/rich-text/RichTextToolbar.tsx +1 -1
  552. package/src/styles-areas/analytics.css +16 -16
  553. package/src/styles-areas/auth.css +2 -2
  554. package/src/styles-areas/calendar.css +5 -6
  555. package/src/styles-areas/canvas-hud.css +30 -0
  556. package/src/styles-areas/chart-table.css +1 -1
  557. package/src/styles-areas/charts.css +3 -3
  558. package/src/styles-areas/chat.css +7 -6
  559. package/src/styles-areas/companion-link.css +2 -2
  560. package/src/styles-areas/core.css +99 -90
  561. package/src/styles-areas/dashboard-grid.css +4 -4
  562. package/src/styles-areas/data-table.css +16 -16
  563. package/src/styles-areas/disk-usage.css +5 -5
  564. package/src/styles-areas/emoji.css +2 -2
  565. package/src/styles-areas/fields.css +13 -14
  566. package/src/styles-areas/filter-rail.css +4 -4
  567. package/src/styles-areas/folder-tree.css +6 -6
  568. package/src/styles-areas/layout-engine.css +4 -4
  569. package/src/styles-areas/markdown.css +2 -1
  570. package/src/styles-areas/master-detail.css +3 -3
  571. package/src/styles-areas/media-gallery.css +7 -6
  572. package/src/styles-areas/media.css +12 -13
  573. package/src/styles-areas/nav.css +28 -14
  574. package/src/styles-areas/notifications.css +4 -4
  575. package/src/styles-areas/overlays.css +4 -4
  576. package/src/styles-areas/palette.css +5 -4
  577. package/src/styles-areas/rich-text.css +3 -3
  578. package/src/styles-areas/sharing.css +4 -3
  579. package/src/styles-areas/stats.css +9 -8
  580. package/src/styles-areas/test-report.css +4 -4
  581. package/src/styles-areas/wizard.css +6 -5
  582. package/src/styles-areas/workbench.css +10 -9
  583. package/src/styles-areas/workbook-viewer.css +2 -2
  584. package/src/styles-utilities.css +296 -190
  585. package/src/stylesAreas.spec.ts +17 -0
  586. package/src/testing/designAudit.ts +3 -0
  587. package/src/testing/designBaseline.ts +4 -0
  588. package/src/theme.css +103 -2
  589. package/src/themeDarkScopeAliases.spec.ts +65 -0
@@ -0,0 +1,68 @@
1
+ /**
2
+ * The camera arithmetic every pan-and-zoom canvas needs (CNV-2, CNV-3, CNV-5).
3
+ *
4
+ * Pure — no React, no DOM — so each rule is pinned by a spec rather than by opening an app.
5
+ * A view maps a WORLD point to the screen as `screen = world × scale + (x, y)`: `x`/`y` are the
6
+ * screen position of the world origin, which is what a CSS `translate(x, y) scale(scale)` on the
7
+ * stage means. Every canvas in the fleet already used that convention (family's `Camera`,
8
+ * patterns' `viewportGestures.ts`, desk's xyflow viewport), which is why it is the one here.
9
+ */
10
+ export interface CanvasView {
11
+ x: number;
12
+ y: number;
13
+ scale: number;
14
+ }
15
+ export interface CanvasPoint {
16
+ x: number;
17
+ y: number;
18
+ }
19
+ export interface CanvasSize {
20
+ width: number;
21
+ height: number;
22
+ }
23
+ /** A rectangle in WORLD units — the content's extent, or the visible window. */
24
+ export interface CanvasBounds extends CanvasPoint, CanvasSize {
25
+ }
26
+ export declare function clampScale(scale: number, min: number, max: number): number;
27
+ /**
28
+ * CNV-2 — zoom to `scale` keeping the screen point `anchor` still: the pointer for a wheel or a
29
+ * pinch, the middle of the viewport for the ± buttons. The caller clamps `scale` first, because
30
+ * the floor is the canvas's own business (family floors it at the whole tree).
31
+ */
32
+ export declare function zoomAt(view: CanvasView, scale: number, anchor: CanvasPoint): CanvasView;
33
+ /** The zoom factor for one wheel event — exponential, so a trackpad pinch (which arrives as a
34
+ * ctrl+wheel stream of small deltas) and a mouse notch feel equally linear. */
35
+ export declare function wheelZoomFactor(deltaY: number): number;
36
+ export interface FitOptions {
37
+ /** Screen pixels of breathing room on every side. Default 48. */
38
+ padding?: number;
39
+ /**
40
+ * The largest scale a fit may land on. Default 1: fit SHRINKS to fit and never magnifies a
41
+ * small graph past its natural size — a two-node graph "fitted" to 400% reads as a zoom
42
+ * nobody asked for (Figma's and Miro's zoom-to-fit behave the same way).
43
+ */
44
+ maxScale?: number;
45
+ /** The smallest. Default 0.02 — a degenerate extent must still be a drawable number. */
46
+ minScale?: number;
47
+ }
48
+ /** The scale at which `bounds` fits the viewport, or `null` while there is nothing to fit
49
+ * (an empty extent, or a viewport not measured yet). */
50
+ export declare function fitScale(bounds: CanvasSize, viewport: CanvasSize, options?: FitOptions): number | null;
51
+ /** CNV-3 "Fit" — the view that centres `bounds` in the viewport at {@link fitScale}. */
52
+ export declare function fitView(bounds: CanvasBounds, viewport: CanvasSize, options?: FitOptions): CanvasView | null;
53
+ /** CNV-3 "Center" — the view that puts the world point `point` in the middle of the viewport. */
54
+ export declare function centerView(point: CanvasPoint, viewport: CanvasSize, scale: number): CanvasView;
55
+ /** The part of the world the viewport shows — what a minimap draws as its window. */
56
+ export declare function visibleBounds(view: CanvasView, viewport: CanvasSize): CanvasBounds;
57
+ /** CNV-5's three densities. */
58
+ export type LevelOfDetail = 'far' | 'mid' | 'close';
59
+ export interface LevelOfDetailThresholds {
60
+ /** At and above this scale, primary labels may appear. Default 0.3. */
61
+ mid: number;
62
+ /** At and above this scale, full labels and metadata. Default 0.5. */
63
+ close: number;
64
+ }
65
+ export declare const LEVEL_OF_DETAIL: LevelOfDetailThresholds;
66
+ /** CNV-5 — which density a canvas draws at this scale. */
67
+ export declare function levelOfDetail(scale: number, thresholds?: LevelOfDetailThresholds): LevelOfDetail;
68
+ //# sourceMappingURL=viewport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viewport.d.ts","sourceRoot":"","sources":["../../../src/react/canvas-hud/viewport.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,UAAU;IACzB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,gFAAgF;AAChF,MAAM,WAAW,YAAa,SAAQ,WAAW,EAAE,UAAU;CAAG;AAEhE,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAE1E;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,UAAU,CAQvF;AAED;gFACgF;AAChF,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,MAAM,WAAW,UAAU;IACzB,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wFAAwF;IACxF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;yDACyD;AACzD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,GAAE,UAAe,GAAG,MAAM,GAAG,IAAI,CAS1G;AAED,wFAAwF;AACxF,wBAAgB,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,GAAE,UAAe,GAAG,UAAU,GAAG,IAAI,CAI/G;AAED,iGAAiG;AACjG,wBAAgB,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,CAM9F;AAED,qFAAqF;AACrF,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,GAAG,YAAY,CAOlF;AAED,+BAA+B;AAC/B,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC;AAEpD,MAAM,WAAW,uBAAuB;IACtC,uEAAuE;IACvE,GAAG,EAAE,MAAM,CAAC;IACZ,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,eAAe,EAAE,uBAAkD,CAAC;AAEjF,0DAA0D;AAC1D,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,GAAE,uBAAyC,GAAG,aAAa,CAIjH"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * The camera arithmetic every pan-and-zoom canvas needs (CNV-2, CNV-3, CNV-5).
3
+ *
4
+ * Pure — no React, no DOM — so each rule is pinned by a spec rather than by opening an app.
5
+ * A view maps a WORLD point to the screen as `screen = world × scale + (x, y)`: `x`/`y` are the
6
+ * screen position of the world origin, which is what a CSS `translate(x, y) scale(scale)` on the
7
+ * stage means. Every canvas in the fleet already used that convention (family's `Camera`,
8
+ * patterns' `viewportGestures.ts`, desk's xyflow viewport), which is why it is the one here.
9
+ */
10
+ export function clampScale(scale, min, max) {
11
+ return Math.min(max, Math.max(min, scale));
12
+ }
13
+ /**
14
+ * CNV-2 — zoom to `scale` keeping the screen point `anchor` still: the pointer for a wheel or a
15
+ * pinch, the middle of the viewport for the ± buttons. The caller clamps `scale` first, because
16
+ * the floor is the canvas's own business (family floors it at the whole tree).
17
+ */
18
+ export function zoomAt(view, scale, anchor) {
19
+ if (!Number.isFinite(scale) || scale <= 0 || view.scale <= 0)
20
+ return view;
21
+ const applied = scale / view.scale;
22
+ return {
23
+ scale,
24
+ x: anchor.x - (anchor.x - view.x) * applied,
25
+ y: anchor.y - (anchor.y - view.y) * applied,
26
+ };
27
+ }
28
+ /** The zoom factor for one wheel event — exponential, so a trackpad pinch (which arrives as a
29
+ * ctrl+wheel stream of small deltas) and a mouse notch feel equally linear. */
30
+ export function wheelZoomFactor(deltaY) {
31
+ return Math.exp(-deltaY * 0.0015);
32
+ }
33
+ /** The scale at which `bounds` fits the viewport, or `null` while there is nothing to fit
34
+ * (an empty extent, or a viewport not measured yet). */
35
+ export function fitScale(bounds, viewport, options = {}) {
36
+ const { padding = 48, maxScale = 1, minScale = 0.02 } = options;
37
+ if (bounds.width <= 0 || bounds.height <= 0 || viewport.width <= 0 || viewport.height <= 0)
38
+ return null;
39
+ const scale = Math.min((viewport.width - padding * 2) / bounds.width, (viewport.height - padding * 2) / bounds.height);
40
+ if (!Number.isFinite(scale))
41
+ return null;
42
+ return clampScale(scale, minScale, maxScale);
43
+ }
44
+ /** CNV-3 "Fit" — the view that centres `bounds` in the viewport at {@link fitScale}. */
45
+ export function fitView(bounds, viewport, options = {}) {
46
+ const scale = fitScale(bounds, viewport, options);
47
+ if (scale === null)
48
+ return null;
49
+ return centerView({ x: bounds.x + bounds.width / 2, y: bounds.y + bounds.height / 2 }, viewport, scale);
50
+ }
51
+ /** CNV-3 "Center" — the view that puts the world point `point` in the middle of the viewport. */
52
+ export function centerView(point, viewport, scale) {
53
+ return {
54
+ scale,
55
+ x: viewport.width / 2 - point.x * scale,
56
+ y: viewport.height / 2 - point.y * scale,
57
+ };
58
+ }
59
+ /** The part of the world the viewport shows — what a minimap draws as its window. */
60
+ export function visibleBounds(view, viewport) {
61
+ return {
62
+ x: -view.x / view.scale,
63
+ y: -view.y / view.scale,
64
+ width: viewport.width / view.scale,
65
+ height: viewport.height / view.scale,
66
+ };
67
+ }
68
+ export const LEVEL_OF_DETAIL = { mid: 0.3, close: 0.5 };
69
+ /** CNV-5 — which density a canvas draws at this scale. */
70
+ export function levelOfDetail(scale, thresholds = LEVEL_OF_DETAIL) {
71
+ if (scale >= thresholds.close)
72
+ return 'close';
73
+ if (scale >= thresholds.mid)
74
+ return 'mid';
75
+ return 'far';
76
+ }
77
+ //# sourceMappingURL=viewport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viewport.js","sourceRoot":"","sources":["../../../src/react/canvas-hud/viewport.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AreaChart.d.ts","sourceRoot":"","sources":["../../../src/react/charts/AreaChart.tsx"],"names":[],"mappings":"AAYA,OAAO,EAAa,KAAK,UAAU,EAAE,KAAK,WAAW,EAA8B,MAAM,aAAa,CAAC;AAEvG,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,mEAAmE;IACnE,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,gEAAgE;IAChE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,8CAA8C;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,MAAM,CAAC;IACpD,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,iCAAiC;IACjC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,MAAM,CAAC;CACrD,CAAC;AAEF,oFAAoF;AACpF,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,SAAS,EACT,MAAM,EACN,MAAa,EACb,MAAM,EACN,IAAW,EACX,OAAe,EACf,MAAW,EACX,cAAc,EACd,cAAc,EACd,cAAc,GACf,EAAE,cAAc,+BAmEhB"}
1
+ {"version":3,"file":"AreaChart.d.ts","sourceRoot":"","sources":["../../../src/react/charts/AreaChart.tsx"],"names":[],"mappings":"AAaA,OAAO,EAA6B,KAAK,UAAU,EAAE,KAAK,WAAW,EAA8B,MAAM,aAAa,CAAC;AAEvH,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,mEAAmE;IACnE,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,gEAAgE;IAChE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,8CAA8C;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,MAAM,CAAC;IACpD,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,iCAAiC;IACjC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,MAAM,CAAC;CACrD,CAAC;AAEF,oFAAoF;AACpF,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,SAAS,EACT,MAAM,EACN,MAAa,EACb,MAAM,EACN,IAAW,EACX,OAAe,EACf,MAAW,EACX,cAAc,EACd,cAAc,EACd,cAAc,GACf,EAAE,cAAc,+BAmEhB"}
@@ -3,17 +3,17 @@ import { Area, CartesianGrid, Legend, AreaChart as RAreaChart, Tooltip, XAxis, Y
3
3
  import { ChartFrame } from './ChartFrame.js';
4
4
  import { legendContent } from './ChartLegend.js';
5
5
  import { tooltipContent } from './ChartTooltip.js';
6
- import { axisProps, seriesColor, useGradientId } from './shared.js';
6
+ import { axisProps, valueAxisProps, seriesColor, useGradientId } from './shared.js';
7
7
  /** Multi-series area chart with token-colored gradient fills (per-instance ids). */
8
8
  export function AreaChart({ data, xKey, series, ariaLabel, height, smooth = true, legend, grid = true, stacked = false, yWidth = 44, xTickFormatter, valueFormatter, labelFormatter, }) {
9
9
  const gradId = useGradientId();
10
- const showLegend = legend ?? series.length > 1;
11
- return (_jsx(ChartFrame, { ariaLabel: ariaLabel, height: height, children: (t) => (_jsxs(RAreaChart, { data: data, margin: { top: 8, right: 12, bottom: 0, left: 0 }, children: [_jsx("defs", { children: series.map((s, i) => {
10
+ const showLegend = (box) => legend ?? (!box.legendInHeader && series.length > 1);
11
+ return (_jsx(ChartFrame, { ariaLabel: ariaLabel, height: height, children: (t, box) => (_jsxs(RAreaChart, { data: data, margin: { top: 8, right: 12, bottom: 0, left: 0 }, children: [_jsx("defs", { children: series.map((s, i) => {
12
12
  const c = seriesColor(t, s, i);
13
13
  return (_jsxs("linearGradient", { id: `${gradId}-${s.dataKey}`, x1: '0', y1: '0', x2: '0', y2: '1', children: [_jsx("stop", { offset: '0%', stopColor: c, stopOpacity: 0.2 }), _jsx("stop", { offset: '100%', stopColor: c, stopOpacity: 0.02 })] }, s.dataKey));
14
- }) }), grid && (_jsx(CartesianGrid, { strokeDasharray: '3 3', stroke: t.foregroundMuted, strokeOpacity: 0.3, vertical: false })), _jsx(XAxis, { dataKey: xKey, ...axisProps(t), tickFormatter: xTickFormatter, interval: 'preserveStartEnd', minTickGap: 24 }), _jsx(YAxis, { ...axisProps(t), tickFormatter: valueFormatter, width: yWidth, axisLine: false }), _jsx(Tooltip, { content: tooltipContent(t, labelFormatter, valueFormatter), cursor: { stroke: t.foregroundMuted, strokeWidth: 1, strokeOpacity: 0.5 }, isAnimationActive: false }), showLegend && _jsx(Legend, { content: legendContent(t) }), series.map((s, i) => {
14
+ }) }), grid && (_jsx(CartesianGrid, { strokeDasharray: '3 3', stroke: t.foregroundMuted, strokeOpacity: 0.3, vertical: false })), _jsx(XAxis, { dataKey: xKey, ...axisProps(t, box), tickFormatter: xTickFormatter, interval: 'preserveStartEnd', minTickGap: box.gap(24) }), _jsx(YAxis, { ...axisProps(t, box), ...valueAxisProps(box, valueFormatter), width: yWidth, axisLine: false }), _jsx(Tooltip, { content: tooltipContent(t, labelFormatter, valueFormatter), cursor: { stroke: t.foregroundMuted, strokeWidth: 1, strokeOpacity: 0.5 }, isAnimationActive: false }), showLegend(box) && _jsx(Legend, { content: legendContent(t) }), series.map((s, i) => {
15
15
  const c = seriesColor(t, s, i);
16
- return (_jsx(Area, { type: smooth ? 'monotone' : 'linear', dataKey: s.dataKey, name: s.name ?? s.dataKey, stackId: stacked ? (s.stackId ?? 'stack') : s.stackId, stroke: c, strokeWidth: 2, fill: `url(#${gradId}-${s.dataKey})`, isAnimationActive: false }, s.dataKey));
16
+ return (_jsx(Area, { type: smooth ? 'monotone' : 'linear', dataKey: s.dataKey, name: s.name ?? s.dataKey, stackId: stacked ? (s.stackId ?? 'stack') : s.stackId, stroke: c, strokeWidth: box.stroke, fill: `url(#${gradId}-${s.dataKey})`, isAnimationActive: false }, s.dataKey));
17
17
  })] })) }));
18
18
  }
19
19
  //# sourceMappingURL=AreaChart.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AreaChart.js","sourceRoot":"","sources":["../../../src/react/charts/AreaChart.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,IAAI,EACJ,aAAa,EACb,MAAM,EACN,SAAS,IAAI,UAAU,EACvB,OAAO,EACP,KAAK,EACL,KAAK,GACN,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAqC,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AA0BvG,oFAAoF;AACpF,MAAM,UAAU,SAAS,CAAC,EACxB,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,SAAS,EACT,MAAM,EACN,MAAM,GAAG,IAAI,EACb,MAAM,EACN,IAAI,GAAG,IAAI,EACX,OAAO,GAAG,KAAK,EACf,MAAM,GAAG,EAAE,EACX,cAAc,EACd,cAAc,EACd,cAAc,GACC;IACf,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAC/B,MAAM,UAAU,GAAG,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAC/C,OAAO,CACL,KAAC,UAAU,IAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,YAC7C,CAAC,CAAC,EAAE,EAAE,CAAC,CACN,MAAC,UAAU,IAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,aACvE,yBACG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;wBACnB,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;wBAC/B,OAAO,CACL,0BAEE,EAAE,EAAE,GAAG,MAAM,IAAI,CAAC,CAAC,OAAO,EAAE,EAC5B,EAAE,EAAC,GAAG,EACN,EAAE,EAAC,GAAG,EACN,EAAE,EAAC,GAAG,EACN,EAAE,EAAC,GAAG,aAEN,eAAM,MAAM,EAAC,IAAI,EAAC,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,GAAG,GAAI,EACpD,eAAM,MAAM,EAAC,MAAM,EAAC,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,GAAI,KARlD,CAAC,CAAC,OAAO,CASC,CAClB,CAAC;oBACJ,CAAC,CAAC,GACG,EACN,IAAI,IAAI,CACP,KAAC,aAAa,IACZ,eAAe,EAAC,KAAK,EACrB,MAAM,EAAE,CAAC,CAAC,eAAe,EACzB,aAAa,EAAE,GAAG,EAClB,QAAQ,EAAE,KAAK,GACf,CACH,EACD,KAAC,KAAK,IACJ,OAAO,EAAE,IAAI,KACT,SAAS,CAAC,CAAC,CAAC,EAChB,aAAa,EAAE,cAAc,EAC7B,QAAQ,EAAC,kBAAkB,EAC3B,UAAU,EAAE,EAAE,GACd,EACF,KAAC,KAAK,OAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAI,EAC1F,KAAC,OAAO,IACN,OAAO,EAAE,cAAc,CAAC,CAAC,EAAE,cAAc,EAAE,cAAc,CAAC,EAC1D,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,eAAe,EAAE,WAAW,EAAE,CAAC,EAAE,aAAa,EAAE,GAAG,EAAE,EACzE,iBAAiB,EAAE,KAAK,GACxB,EACD,UAAU,IAAI,KAAC,MAAM,IAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GAAI,EACnD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;oBACnB,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC/B,OAAO,CACL,KAAC,IAAI,IAEH,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EACpC,OAAO,EAAE,CAAC,CAAC,OAAO,EAClB,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,EACzB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EACrD,MAAM,EAAE,CAAC,EACT,WAAW,EAAE,CAAC,EACd,IAAI,EAAE,QAAQ,MAAM,IAAI,CAAC,CAAC,OAAO,GAAG,EACpC,iBAAiB,EAAE,KAAK,IARnB,CAAC,CAAC,OAAO,CASd,CACH,CAAC;gBACJ,CAAC,CAAC,IACS,CACd,GACU,CACd,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"AreaChart.js","sourceRoot":"","sources":["../../../src/react/charts/AreaChart.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"BarChart.d.ts","sourceRoot":"","sources":["../../../src/react/charts/BarChart.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAa,KAAK,UAAU,EAAE,KAAK,WAAW,EAAe,MAAM,aAAa,CAAC;AAIxF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,mEAAmE;IACnE,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,WAAW,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACxC,8DAA8D;IAC9D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gEAAgE;IAChE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qBAAqB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,MAAM,CAAC;IAC3D,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,iCAAiC;IACjC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,MAAM,CAAC;CACrD,CAAC;AAEF,2EAA2E;AAC3E,wBAAgB,QAAQ,CAAC,EACvB,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,SAAS,EACT,MAAM,EACN,WAAwB,EACxB,OAAe,EACf,MAAM,EACN,IAAW,EACX,MAAW,EACX,qBAAqB,EACrB,cAAc,EACd,cAAc,GACf,EAAE,aAAa,+BA8Ef"}
1
+ {"version":3,"file":"BarChart.d.ts","sourceRoot":"","sources":["../../../src/react/charts/BarChart.tsx"],"names":[],"mappings":"AAKA,OAAO,EAA6B,KAAK,UAAU,EAAE,KAAK,WAAW,EAAe,MAAM,aAAa,CAAC;AAIxG,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,mEAAmE;IACnE,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,WAAW,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACxC,8DAA8D;IAC9D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gEAAgE;IAChE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qBAAqB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,MAAM,CAAC;IAC3D,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,iCAAiC;IACjC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,MAAM,CAAC;CACrD,CAAC;AAEF,2EAA2E;AAC3E,wBAAgB,QAAQ,CAAC,EACvB,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,SAAS,EACT,MAAM,EACN,WAAwB,EACxB,OAAe,EACf,MAAM,EACN,IAAW,EACX,MAAW,EACX,qBAAqB,EACrB,cAAc,EACd,cAAc,GACf,EAAE,aAAa,+BA8Ef"}
@@ -3,11 +3,11 @@ import { Bar, CartesianGrid, Legend, BarChart as RBarChart, Tooltip, XAxis, YAxi
3
3
  import { ChartFrame } from './ChartFrame.js';
4
4
  import { legendContent } from './ChartLegend.js';
5
5
  import { tooltipContent } from './ChartTooltip.js';
6
- import { axisProps, seriesColor } from './shared.js';
6
+ import { axisProps, valueAxisProps, seriesColor } from './shared.js';
7
7
  /** Vertical/horizontal, grouped/stacked bar chart with rounded corners. */
8
8
  export function BarChart({ data, xKey, series, ariaLabel, height, orientation = 'vertical', stacked = false, legend, grid = true, yWidth = 44, categoryTickFormatter, valueFormatter, labelFormatter, }) {
9
9
  const horizontal = orientation === 'horizontal';
10
- const showLegend = legend ?? series.length > 1;
10
+ const showLegend = (box) => legend ?? (!box.legendInHeader && series.length > 1);
11
11
  // Round only the outer end of each bar; for a stack, only the last (outer) series.
12
12
  const cornersFor = (i) => {
13
13
  const outer = !stacked || i === series.length - 1;
@@ -15,6 +15,6 @@ export function BarChart({ data, xKey, series, ariaLabel, height, orientation =
15
15
  return [0, 0, 0, 0];
16
16
  return horizontal ? [0, 4, 4, 0] : [4, 4, 0, 0];
17
17
  };
18
- return (_jsx(ChartFrame, { ariaLabel: ariaLabel, height: height, children: (t) => (_jsxs(RBarChart, { data: data, layout: horizontal ? 'vertical' : 'horizontal', margin: { top: 8, right: 12, bottom: 0, left: 0 }, children: [grid && (_jsx(CartesianGrid, { strokeDasharray: '3 3', stroke: t.foregroundMuted, strokeOpacity: 0.3, horizontal: !horizontal, vertical: horizontal })), horizontal ? (_jsxs(_Fragment, { children: [_jsx(XAxis, { type: 'number', ...axisProps(t), tickFormatter: valueFormatter }), _jsx(YAxis, { type: 'category', dataKey: xKey, ...axisProps(t), tickFormatter: categoryTickFormatter, width: yWidth, axisLine: false })] })) : (_jsxs(_Fragment, { children: [_jsx(XAxis, { type: 'category', dataKey: xKey, ...axisProps(t), tickFormatter: categoryTickFormatter, interval: 'preserveStartEnd', minTickGap: 8 }), _jsx(YAxis, { type: 'number', ...axisProps(t), tickFormatter: valueFormatter, width: yWidth, axisLine: false })] })), _jsx(Tooltip, { content: tooltipContent(t, labelFormatter, valueFormatter), cursor: { fill: t.foregroundMuted, fillOpacity: 0.08 }, isAnimationActive: false }), showLegend && _jsx(Legend, { content: legendContent(t) }), series.map((s, i) => (_jsx(Bar, { dataKey: s.dataKey, name: s.name ?? s.dataKey, stackId: stacked ? (s.stackId ?? 'stack') : s.stackId, fill: seriesColor(t, s, i), radius: cornersFor(i), isAnimationActive: false }, s.dataKey)))] })) }));
18
+ return (_jsx(ChartFrame, { ariaLabel: ariaLabel, height: height, children: (t, box) => (_jsxs(RBarChart, { data: data, layout: horizontal ? 'vertical' : 'horizontal', margin: { top: 8, right: 12, bottom: 0, left: 0 }, children: [grid && (_jsx(CartesianGrid, { strokeDasharray: '3 3', stroke: t.foregroundMuted, strokeOpacity: 0.3, horizontal: !horizontal, vertical: horizontal })), horizontal ? (_jsxs(_Fragment, { children: [_jsx(XAxis, { type: 'number', ...axisProps(t, box), ...valueAxisProps(box, valueFormatter) }), _jsx(YAxis, { type: 'category', dataKey: xKey, ...axisProps(t, box), tickFormatter: categoryTickFormatter, width: yWidth, axisLine: false })] })) : (_jsxs(_Fragment, { children: [_jsx(XAxis, { type: 'category', dataKey: xKey, ...axisProps(t, box), tickFormatter: categoryTickFormatter, interval: 'preserveStartEnd', minTickGap: box.gap(8) }), _jsx(YAxis, { type: 'number', ...axisProps(t, box), ...valueAxisProps(box, valueFormatter), width: yWidth, axisLine: false })] })), _jsx(Tooltip, { content: tooltipContent(t, labelFormatter, valueFormatter), cursor: { fill: t.foregroundMuted, fillOpacity: 0.08 }, isAnimationActive: false }), showLegend(box) && _jsx(Legend, { content: legendContent(t) }), series.map((s, i) => (_jsx(Bar, { dataKey: s.dataKey, name: s.name ?? s.dataKey, stackId: stacked ? (s.stackId ?? 'stack') : s.stackId, fill: seriesColor(t, s, i), radius: cornersFor(i), isAnimationActive: false }, s.dataKey)))] })) }));
19
19
  }
20
20
  //# sourceMappingURL=BarChart.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BarChart.js","sourceRoot":"","sources":["../../../src/react/charts/BarChart.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BarChart.js","sourceRoot":"","sources":["../../../src/react/charts/BarChart.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,IAAI,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEpG,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAqC,WAAW,EAAE,MAAM,aAAa,CAAC;AA4BxG,2EAA2E;AAC3E,MAAM,UAAU,QAAQ,CAAC,EACvB,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,SAAS,EACT,MAAM,EACN,WAAW,GAAG,UAAU,EACxB,OAAO,GAAG,KAAK,EACf,MAAM,EACN,IAAI,GAAG,IAAI,EACX,MAAM,GAAG,EAAE,EACX,qBAAqB,EACrB,cAAc,EACd,cAAc,GACA;IACd,MAAM,UAAU,GAAG,WAAW,KAAK,YAAY,CAAC;IAChD,MAAM,UAAU,GAAG,CAAC,GAAa,EAAE,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,cAAc,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC3F,mFAAmF;IACnF,MAAM,UAAU,GAAG,CAAC,CAAS,EAAW,EAAE;QACxC,MAAM,KAAK,GAAG,CAAC,OAAO,IAAI,CAAC,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QAClD,IAAI,CAAC,KAAK;YAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAChC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAClD,CAAC,CAAC;IACF,OAAO,CACL,KAAC,UAAU,IAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,YAC7C,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CACX,MAAC,SAAS,IACR,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,EAC9C,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,aAEhD,IAAI,IAAI,CACP,KAAC,aAAa,IACZ,eAAe,EAAC,KAAK,EACrB,MAAM,EAAE,CAAC,CAAC,eAAe,EACzB,aAAa,EAAE,GAAG,EAClB,UAAU,EAAE,CAAC,UAAU,EACvB,QAAQ,EAAE,UAAU,GACpB,CACH,EACA,UAAU,CAAC,CAAC,CAAC,CACZ,8BACE,KAAC,KAAK,IAAC,IAAI,EAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,KAAM,cAAc,CAAC,GAAG,EAAE,cAAc,CAAC,GAAI,EACvF,KAAC,KAAK,IACJ,IAAI,EAAC,UAAU,EACf,OAAO,EAAE,IAAI,KACT,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EACrB,aAAa,EAAE,qBAAqB,EACpC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,KAAK,GACf,IACD,CACJ,CAAC,CAAC,CAAC,CACF,8BACE,KAAC,KAAK,IACJ,IAAI,EAAC,UAAU,EACf,OAAO,EAAE,IAAI,KACT,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EACrB,aAAa,EAAE,qBAAqB,EACpC,QAAQ,EAAC,kBAAkB,EAC3B,UAAU,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GACtB,EACF,KAAC,KAAK,IACJ,IAAI,EAAC,QAAQ,KACT,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,KACjB,cAAc,CAAC,GAAG,EAAE,cAAc,CAAC,EACvC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,KAAK,GACf,IACD,CACJ,EACD,KAAC,OAAO,IACN,OAAO,EAAE,cAAc,CAAC,CAAC,EAAE,cAAc,EAAE,cAAc,CAAC,EAC1D,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,eAAe,EAAE,WAAW,EAAE,IAAI,EAAE,EACtD,iBAAiB,EAAE,KAAK,GACxB,EACD,UAAU,CAAC,GAAG,CAAC,IAAI,KAAC,MAAM,IAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GAAI,EACxD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CACpB,KAAC,GAAG,IAEF,OAAO,EAAE,CAAC,CAAC,OAAO,EAClB,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,EACzB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EACrD,IAAI,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC1B,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,EACrB,iBAAiB,EAAE,KAAK,IANnB,CAAC,CAAC,OAAO,CAOd,CACH,CAAC,IACQ,CACb,GACU,CACd,CAAC;AACJ,CAAC"}
@@ -0,0 +1,53 @@
1
+ import { type ReactNode } from 'react';
2
+ import type { ChartTone } from './tokens.js';
3
+ /** One entry of the header legend — a dot and its label (CHT-2). */
4
+ export interface ChartCardLegendItem {
5
+ label: string;
6
+ /** A semantic color instead of the positional one — the same `tone` its series carries. */
7
+ tone?: ChartTone;
8
+ }
9
+ export interface ChartCardProps {
10
+ /** What is measured — "Daily volume". */
11
+ title: ReactNode;
12
+ /** The range, in one line — "Sep 13 → Oct 1" (CHT-2). */
13
+ subtitle?: ReactNode;
14
+ /**
15
+ * The legend, drawn inline in the header instead of under the plot, in SERIES ORDER: item
16
+ * `i` takes `--chart-{i+1}`, the color the chart gives its series `i` (CHT-7), unless a
17
+ * `tone` says otherwise. When set, a chart inside the card leaves its own legend off.
18
+ * Long legends wrap; on a phone-width card they fold into a "Legend" button.
19
+ */
20
+ legend?: ChartCardLegendItem[];
21
+ /** Header controls on the right — a range picker, a chart/table toggle. */
22
+ actions?: ReactNode;
23
+ /** First load: a skeleton of the frame at the frame's own size (CHT-9, STA-1). */
24
+ loading?: boolean;
25
+ /**
26
+ * No data: an empty state INSIDE the frame at the same size (CHT-9). `true` uses a generic
27
+ * title; pass `{ title, description, action }` to say what is missing and what fills it.
28
+ */
29
+ empty?: boolean | {
30
+ title: ReactNode;
31
+ description?: ReactNode;
32
+ action?: ReactNode;
33
+ };
34
+ /** Fix the plot height. Leave unset — the card takes the aspect for its width (CHT-1). */
35
+ height?: number;
36
+ /** The chart — any `cursedbelt/react/charts` chart, with its `height` left unset. */
37
+ children: ReactNode;
38
+ className?: string;
39
+ }
40
+ /** CHT-7: one color order across every chart — the same `--chart-*` the chart's series take. */
41
+ export declare function legendColor(item: ChartCardLegendItem, index: number): string;
42
+ /**
43
+ * The chart's frame (CHT-1, CHT-2, CHT-9): a card whose header holds the title, the range and
44
+ * an inline legend, and whose body owns the plot's SHAPE — the chart inside measures the same
45
+ * width and takes the same aspect, so the loading skeleton, the empty state and the chart are
46
+ * one size and nothing moves when the data lands. Collapse a sidebar beside it and the chart
47
+ * re-measures; it never clips.
48
+ *
49
+ * Build an operations-console Trends section from this and a `DataTable` with no app-local
50
+ * styling (`docs/design/blueprints/operations-console.md`).
51
+ */
52
+ export declare function ChartCard({ title, subtitle, legend, actions, loading, empty, height, children, className, }: ChartCardProps): import("react").JSX.Element;
53
+ //# sourceMappingURL=ChartCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChartCard.d.ts","sourceRoot":"","sources":["../../../src/react/charts/ChartCard.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAU,MAAM,OAAO,CAAC;AAS/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,oEAAoE;AACpE,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,2FAA2F;IAC3F,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,yCAAyC;IACzC,KAAK,EAAE,SAAS,CAAC;IACjB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAC/B,2EAA2E;IAC3E,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,kFAAkF;IAClF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG;QAAE,KAAK,EAAE,SAAS,CAAC;QAAC,WAAW,CAAC,EAAE,SAAS,CAAC;QAAC,MAAM,CAAC,EAAE,SAAS,CAAA;KAAE,CAAC;IACpF,0FAA0F;IAC1F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qFAAqF;IACrF,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAUD,gGAAgG;AAChG,wBAAgB,WAAW,CAAC,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE5E;AAkBD;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,QAAQ,EACR,MAAM,EACN,OAAO,EACP,OAAe,EACf,KAAa,EACb,MAAM,EACN,QAAQ,EACR,SAAS,GACV,EAAE,cAAc,+BAkDhB"}
@@ -0,0 +1,46 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useRef } from 'react';
3
+ import { Button } from '../components/Button.js';
4
+ import { EmptyState } from '../components/EmptyState.js';
5
+ import { Popover } from '../components/Popover.js';
6
+ import { Skeleton } from '../components/Skeleton.js';
7
+ import { Surface } from '../components/Surface.js';
8
+ import { useElementSize } from '../hooks/useResizeObserver.js';
9
+ import { cn } from '../lib/cn.js';
10
+ import { CHART_PHONE_MAX, ChartCardContext, chartHeight } from './chartBox.js';
11
+ const TONE_VAR = {
12
+ accent: 'var(--accent)',
13
+ success: 'var(--success)',
14
+ warning: 'var(--warning)',
15
+ danger: 'var(--destructive)',
16
+ neutral: 'var(--muted-foreground)',
17
+ };
18
+ /** CHT-7: one color order across every chart — the same `--chart-*` the chart's series take. */
19
+ export function legendColor(item, index) {
20
+ return item.tone ? TONE_VAR[item.tone] : `var(--chart-${(index % 8) + 1})`;
21
+ }
22
+ function LegendList({ items, className }) {
23
+ return (_jsx("ul", { "data-cb-chart-legend": '', className: cn('m-0 flex list-none flex-wrap items-center gap-x-3 gap-y-1 p-0 text-xs', className), children: items.map((item, i) => (_jsxs("li", { className: 'flex min-w-0 items-center gap-1.5 text-muted-foreground', children: [_jsx("svg", { "aria-hidden": true, className: 'size-2 shrink-0', viewBox: '0 0 8 8', children: _jsx("circle", { cx: '4', cy: '4', r: '4', fill: legendColor(item, i) }) }), _jsx("span", { className: 'truncate', children: item.label })] }, item.label))) }));
24
+ }
25
+ /**
26
+ * The chart's frame (CHT-1, CHT-2, CHT-9): a card whose header holds the title, the range and
27
+ * an inline legend, and whose body owns the plot's SHAPE — the chart inside measures the same
28
+ * width and takes the same aspect, so the loading skeleton, the empty state and the chart are
29
+ * one size and nothing moves when the data lands. Collapse a sidebar beside it and the chart
30
+ * re-measures; it never clips.
31
+ *
32
+ * Build an operations-console Trends section from this and a `DataTable` with no app-local
33
+ * styling (`docs/design/blueprints/operations-console.md`).
34
+ */
35
+ export function ChartCard({ title, subtitle, legend, actions, loading = false, empty = false, height, children, className, }) {
36
+ const bodyRef = useRef(null);
37
+ const { width } = useElementSize(bodyRef, { layout: true });
38
+ const plotHeight = height ?? chartHeight(width);
39
+ const phone = width > 0 && width < CHART_PHONE_MAX;
40
+ // A phone header has room for two or three dots; past that the legend folds (CHT-2) rather
41
+ // than push the plot down the screen.
42
+ const foldLegend = phone && legend != null && legend.length > 3;
43
+ const emptyContent = empty === true ? { title: 'No data for this range' } : empty || null;
44
+ return (_jsxs(Surface, { level: 'flat', pad: 'md', radius: 'lg', className: cn('flex min-w-0 flex-col gap-3', className), "data-cb-chart-card": '', children: [_jsxs("div", { className: 'flex min-w-0 flex-wrap items-start justify-between gap-x-4 gap-y-2', children: [_jsxs("div", { className: 'flex min-w-0 flex-col gap-0.5', children: [_jsx("h3", { className: 'truncate text-sm font-semibold text-foreground', children: title }), subtitle != null && _jsx("p", { className: 'truncate text-xs tabular-nums text-muted-foreground', children: subtitle })] }), _jsxs("div", { className: 'flex min-w-0 flex-wrap items-center justify-end gap-x-3 gap-y-2', children: [legend && legend.length > 0 && !foldLegend && _jsx(LegendList, { items: legend, className: 'justify-end' }), foldLegend && legend && (_jsx(Popover, { trigger: _jsx(Button, { variant: 'ghost', size: 'sm', tooltip: 'Show what each color is', tooltipMobile: 'off', children: `Legend · ${legend.length}` }), align: 'end', label: 'Chart legend', children: _jsx(LegendList, { items: legend, className: 'flex-col items-start' }) })), actions] })] }), _jsx("div", { ref: bodyRef, className: 'min-w-0', "data-cb-chart-body": '', children: loading ? (_jsx(Skeleton, { className: 'w-full rounded-md', style: { height: plotHeight }, "data-cb-chart-skeleton": '' })) : emptyContent ? (_jsx("div", { className: 'flex w-full items-center justify-center rounded-md border border-dashed border-border', style: { height: plotHeight }, children: _jsx(EmptyState, { compact: true, title: emptyContent.title, description: emptyContent.description, action: emptyContent.action }) })) : (_jsx(ChartCardContext.Provider, { value: { legendInHeader: legend != null && legend.length > 0, height }, children: children })) })] }));
45
+ }
46
+ //# sourceMappingURL=ChartCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChartCard.js","sourceRoot":"","sources":["../../../src/react/charts/ChartCard.tsx"],"names":[],"mappings":"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"}
@@ -1,19 +1,26 @@
1
1
  import { type ReactElement } from 'react';
2
+ import { type ChartBox } from './chartBox.js';
2
3
  import { type ChartTokens } from './tokens.js';
3
4
  export type ChartFrameProps = {
4
5
  /** Human label for the chart's `role="img"` wrapper (SVG a11y). */
5
6
  ariaLabel: string;
6
- /** Pixel height of the responsive container. Width is always 100%. */
7
+ /**
8
+ * Pixel height of the plot. Leave it unset: the frame takes its shape from its own width
9
+ * (CHT-1 — 4:3 on a phone, 2:1 on a desktop, 3:1 on a very wide screen, clamped to
10
+ * 160–480px) and re-measures when its container resizes. Width is always 100%.
11
+ */
7
12
  height?: number;
8
13
  className?: string;
9
- /** Render the recharts chart from the live tokens. */
10
- children: (tokens: ChartTokens) => ReactElement;
14
+ /** Render the recharts chart from the live tokens and the measured box. */
15
+ children: (tokens: ChartTokens, box: ChartBox) => ReactElement;
11
16
  };
12
17
  /**
13
18
  * The shared chart wrapper. Its `role="img"` element is the cascade anchor
14
19
  * useChartTokens reads from (so a `.dark`/accent ancestor themes the chart), and it
15
- * hosts a recharts <ResponsiveContainer> that owns sizing — every chart is 100% wide
16
- * and never overflows its column. All wrappers below build on it.
20
+ * hosts a recharts <ResponsiveContainer> that owns the width — every chart is 100% wide
21
+ * and never overflows its column. The HEIGHT is the frame's: it measures its own width
22
+ * (a sidebar folding re-measures it) and derives the plot's shape and its marks' weight
23
+ * from it — see `chartBox`. All wrappers below build on it.
17
24
  */
18
25
  export declare function ChartFrame({ ariaLabel, height, className, children }: ChartFrameProps): import("react").JSX.Element;
19
26
  //# sourceMappingURL=ChartFrame.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChartFrame.d.ts","sourceRoot":"","sources":["../../../src/react/charts/ChartFrame.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAU,MAAM,OAAO,CAAC;AAGlD,OAAO,EAAE,KAAK,WAAW,EAAkB,MAAM,aAAa,CAAC;AAE/D,MAAM,MAAM,eAAe,GAAG;IAC5B,mEAAmE;IACnE,SAAS,EAAE,MAAM,CAAC;IAClB,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sDAAsD;IACtD,QAAQ,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,YAAY,CAAC;CACjD,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,EAAE,SAAS,EAAE,MAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,eAAe,+BAU3F"}
1
+ {"version":3,"file":"ChartFrame.d.ts","sourceRoot":"","sources":["../../../src/react/charts/ChartFrame.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAsB,MAAM,OAAO,CAAC;AAI9D,OAAO,EAAE,KAAK,QAAQ,EAA8B,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAE,KAAK,WAAW,EAAkB,MAAM,aAAa,CAAC;AAE/D,MAAM,MAAM,eAAe,GAAG;IAC5B,mEAAmE;IACnE,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,QAAQ,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,QAAQ,KAAK,YAAY,CAAC;CAChE,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,eAAe,+BAoBrF"}
@@ -1,17 +1,24 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { useRef } from 'react';
2
+ import { useContext, useRef } from 'react';
3
3
  import { ResponsiveContainer } from 'recharts';
4
+ import { useElementSize } from '../hooks/useResizeObserver.js';
4
5
  import { cn } from '../lib/cn.js';
6
+ import { ChartCardContext, chartBox } from './chartBox.js';
5
7
  import { useChartTokens } from './tokens.js';
6
8
  /**
7
9
  * The shared chart wrapper. Its `role="img"` element is the cascade anchor
8
10
  * useChartTokens reads from (so a `.dark`/accent ancestor themes the chart), and it
9
- * hosts a recharts <ResponsiveContainer> that owns sizing — every chart is 100% wide
10
- * and never overflows its column. All wrappers below build on it.
11
+ * hosts a recharts <ResponsiveContainer> that owns the width — every chart is 100% wide
12
+ * and never overflows its column. The HEIGHT is the frame's: it measures its own width
13
+ * (a sidebar folding re-measures it) and derives the plot's shape and its marks' weight
14
+ * from it — see `chartBox`. All wrappers below build on it.
11
15
  */
12
- export function ChartFrame({ ariaLabel, height = 240, className, children }) {
16
+ export function ChartFrame({ ariaLabel, height, className, children }) {
13
17
  const ref = useRef(null);
14
18
  const tokens = useChartTokens(ref);
15
- return (_jsx("div", { ref: ref, role: 'img', "aria-label": ariaLabel, "data-cb-chart": '', className: cn('w-full', className), children: _jsx(ResponsiveContainer, { width: '100%', height: height, children: children(tokens) }) }));
19
+ const { width } = useElementSize(ref, { layout: true });
20
+ const card = useContext(ChartCardContext);
21
+ const box = chartBox(width, { height: height ?? card?.height, legendInHeader: card?.legendInHeader ?? false });
22
+ return (_jsx("div", { ref: ref, role: 'img', "aria-label": ariaLabel, "data-cb-chart": '', "data-cb-chart-tier": box.tier, className: cn('w-full min-w-0', className), children: _jsx(ResponsiveContainer, { width: '100%', height: box.height, children: children(tokens, box) }) }));
16
23
  }
17
24
  //# sourceMappingURL=ChartFrame.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChartFrame.js","sourceRoot":"","sources":["../../../src/react/charts/ChartFrame.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAqB,MAAM,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAoB,cAAc,EAAE,MAAM,aAAa,CAAC;AAY/D;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAmB;IAC1F,MAAM,GAAG,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IACnC,OAAO,CACL,cAAK,GAAG,EAAE,GAAG,EAAE,IAAI,EAAC,KAAK,gBAAa,SAAS,mBAAgB,EAAE,EAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,YAClG,KAAC,mBAAmB,IAAC,KAAK,EAAC,MAAM,EAAC,MAAM,EAAE,MAAM,YAC7C,QAAQ,CAAC,MAAM,CAAC,GACG,GAClB,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"ChartFrame.js","sourceRoot":"","sources":["../../../src/react/charts/ChartFrame.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAqB,UAAU,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAiB,gBAAgB,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAoB,cAAc,EAAE,MAAM,aAAa,CAAC;AAgB/D;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAmB;IACpF,MAAM,GAAG,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IACnC,MAAM,EAAE,KAAK,EAAE,GAAG,cAAc,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,IAAI,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,IAAI,KAAK,EAAE,CAAC,CAAC;IAC/G,OAAO,CACL,cACE,GAAG,EAAE,GAAG,EACR,IAAI,EAAC,KAAK,gBACE,SAAS,mBACP,EAAE,wBACI,GAAG,CAAC,IAAI,EAC5B,SAAS,EAAE,EAAE,CAAC,gBAAgB,EAAE,SAAS,CAAC,YAE1C,KAAC,mBAAmB,IAAC,KAAK,EAAC,MAAM,EAAC,MAAM,EAAE,GAAG,CAAC,MAAM,YACjD,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,GACF,GAClB,CACP,CAAC;AACJ,CAAC"}
@@ -4,7 +4,7 @@ import { FALLBACK_TOKENS } from './tokens.js';
4
4
  export function ChartLegend({ payload, tokens = FALLBACK_TOKENS }) {
5
5
  if (!payload?.length)
6
6
  return null;
7
- return (_jsx("ul", { className: 'm-0 flex list-none flex-wrap items-center justify-center gap-x-4 gap-y-1 p-0 pt-2 text-xs', style: { color: tokens.foreground }, children: payload.map((entry, i) => (_jsxs("li", { className: 'flex items-center gap-1.5', children: [_jsx("span", { className: 'inline-block h-2.5 w-2.5 shrink-0 rounded-[3px]', style: { backgroundColor: entry.color } }), _jsx("span", { children: entry.value })] }, typeof entry.value === 'string' || typeof entry.value === 'number'
7
+ return (_jsx("ul", { className: 'm-0 flex list-none flex-wrap items-center justify-center gap-x-4 gap-y-1 p-0 pt-2 text-xs', style: { color: tokens.foreground }, children: payload.map((entry, i) => (_jsxs("li", { className: 'flex items-center gap-1.5', children: [_jsx("span", { className: 'inline-block h-2.5 w-2.5 shrink-0 rounded-xs', style: { backgroundColor: entry.color } }), _jsx("span", { children: entry.value })] }, typeof entry.value === 'string' || typeof entry.value === 'number'
8
8
  ? String(entry.value)
9
9
  : String(entry.dataKey ?? i)))) }));
10
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ChartLegend.js","sourceRoot":"","sources":["../../../src/react/charts/ChartLegend.tsx"],"names":[],"mappings":";AACA,OAAO,EAAoB,eAAe,EAAE,MAAM,aAAa,CAAC;AAShE,mFAAmF;AACnF,MAAM,UAAU,WAAW,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,eAAe,EAAoB;IACjF,IAAI,CAAC,OAAO,EAAE,MAAM;QAAE,OAAO,IAAI,CAAC;IAClC,OAAO,CACL,aACE,SAAS,EAAC,2FAA2F,EACrG,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,YAElC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAIzB,cAME,SAAS,EAAC,2BAA2B,aAErC,eACE,SAAS,EAAC,iDAAiD,EAC3D,KAAK,EAAE,EAAE,eAAe,EAAE,KAAK,CAAC,KAAK,EAAE,GACvC,EACF,yBAAO,KAAK,CAAC,KAAK,GAAQ,KAVxB,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;YAChE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;YACrB,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,CAS7B,CACN,CAAC,GACC,CACN,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAAmB,EAAE,EAAE,CAAC,CAAC,CAAwB,EAAE,EAAE,CAAC,CAClF,KAAC,WAAW,IAAC,OAAO,EAAE,CAAC,CAAC,OAAsC,EAAE,MAAM,EAAE,MAAM,GAAI,CACnF,CAAC"}
1
+ {"version":3,"file":"ChartLegend.js","sourceRoot":"","sources":["../../../src/react/charts/ChartLegend.tsx"],"names":[],"mappings":";AACA,OAAO,EAAoB,eAAe,EAAE,MAAM,aAAa,CAAC;AAShE,mFAAmF;AACnF,MAAM,UAAU,WAAW,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,eAAe,EAAoB;IACjF,IAAI,CAAC,OAAO,EAAE,MAAM;QAAE,OAAO,IAAI,CAAC;IAClC,OAAO,CACL,aACE,SAAS,EAAC,2FAA2F,EACrG,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,YAElC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAIzB,cAME,SAAS,EAAC,2BAA2B,aAErC,eACE,SAAS,EAAC,8CAA8C,EACxD,KAAK,EAAE,EAAE,eAAe,EAAE,KAAK,CAAC,KAAK,EAAE,GACvC,EACF,yBAAO,KAAK,CAAC,KAAK,GAAQ,KAVxB,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;YAChE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;YACrB,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,CAS7B,CACN,CAAC,GACC,CACN,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAAmB,EAAE,EAAE,CAAC,CAAC,CAAwB,EAAE,EAAE,CAAC,CAClF,KAAC,WAAW,IAAC,OAAO,EAAE,CAAC,CAAC,OAAsC,EAAE,MAAM,EAAE,MAAM,GAAI,CACnF,CAAC"}
@@ -50,20 +50,20 @@ export function HeatmapChart({ cells, rows, columns, ariaLabel, tone = 'accent',
50
50
  const bottom = observed.length > 0 ? Math.min(...observed) : 0;
51
51
  const title = (cell) => cellTitle?.(cell) ??
52
52
  `${rowLabel(cell.row)} · ${cell.column}: ${cell.value === null ? 'no data' : valueFormatter(cell.value)}`;
53
- return (_jsxs("div", { ref: ref, "data-cb-chart": '', className: cn('flex w-full min-w-0 flex-col gap-2', className), children: [_jsxs("div", { role: 'img', "aria-label": ariaLabel, className: 'grid min-w-0 gap-[2px]',
53
+ return (_jsxs("div", { ref: ref, "data-cb-chart": '', className: cn('flex w-full min-w-0 flex-col gap-2', className), children: [_jsxs("div", { role: 'img', "aria-label": ariaLabel, className: 'grid min-w-0 gap-0.5',
54
54
  // The row-label column is sized to its content; every data column shares
55
55
  // the remainder equally, so the grid fits its container at any width.
56
56
  style: { gridTemplateColumns: `auto repeat(${columns.length}, minmax(0, 1fr))` }, children: [_jsx("div", { "aria-hidden": true }), columns.map((column, i) => (_jsx("div", { "aria-hidden": true, className: 'cb-meta-label truncate text-center text-caption leading-none', children: columnLabel(column, i) }, column))), rows.map((row) => (_jsx(Row, { label: rowLabel(row), children: columns.map((column) => {
57
57
  const cell = byKey.get(cellKey(row, column)) ?? { row, column, value: null };
58
58
  const empty = cell.value === null;
59
59
  const text = title(cell);
60
- return (_jsx(CellChrome, { label: text, className: cn('rounded-[3px] transition-opacity', empty && 'border border-border border-dashed', onCellClick && 'cursor-pointer hover:opacity-80 focus-visible:cb-ring'), style: {
60
+ return (_jsx(CellChrome, { label: text, className: cn('rounded-xs transition-opacity', empty && 'border border-border border-dashed', onCellClick && 'cursor-pointer hover:opacity-80 focus-visible:cb-ring'), style: {
61
61
  height: cellHeight,
62
62
  ...(empty
63
63
  ? {}
64
64
  : { background: sequentialStep(hue, heatFraction(cell.value ?? 0, top)) }),
65
65
  }, onActivate: onCellClick ? () => onCellClick(cell) : undefined }, column));
66
- }) }, row)))] }), legend && (_jsxs("div", { className: 'flex items-center gap-2 text-caption text-muted-foreground', children: [_jsx("span", { children: valueFormatter(bottom) }), _jsx("div", { className: 'flex h-2 flex-1 gap-[2px]', children: [0, 0.25, 0.5, 0.75, 1].map((f) => (_jsx("div", { className: 'flex-1 rounded-[2px]', style: { background: sequentialStep(hue, f) } }, f))) }), _jsx("span", { children: valueFormatter(top) }), _jsxs("span", { className: 'ml-2 inline-flex items-center gap-1', children: [_jsx("span", { className: 'inline-block h-2 w-3 rounded-[2px] border border-border border-dashed' }), "no data"] })] })), footnote && _jsx("div", { className: 'text-caption text-muted-foreground', children: footnote })] }));
66
+ }) }, row)))] }), legend && (_jsxs("div", { className: 'flex items-center gap-2 text-caption text-muted-foreground', children: [_jsx("span", { children: valueFormatter(bottom) }), _jsx("div", { className: 'flex h-2 flex-1 gap-0.5', children: [0, 0.25, 0.5, 0.75, 1].map((f) => (_jsx("div", { className: 'flex-1 rounded-xs', style: { background: sequentialStep(hue, f) } }, f))) }), _jsx("span", { children: valueFormatter(top) }), _jsxs("span", { className: 'ml-2 inline-flex items-center gap-1', children: [_jsx("span", { className: 'inline-block h-2 w-3 rounded-xs border border-border border-dashed' }), "no data"] })] })), footnote && _jsx("div", { className: 'text-caption text-muted-foreground', children: footnote })] }));
67
67
  }
68
68
  /** A label cell plus its row of data cells — a fragment, so the grid stays flat. */
69
69
  function Row({ label, children }) {
@@ -1 +1 @@
1
- {"version":3,"file":"HeatmapChart.js","sourceRoot":"","sources":["../../../src/react/charts/HeatmapChart.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HeatmapChart.js","sourceRoot":"","sources":["../../../src/react/charts/HeatmapChart.tsx"],"names":[],"mappings":"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"}
@@ -77,7 +77,7 @@ export function IntervalTimeline({ intervals, window: windowProp, bands = [], ma
77
77
  // subtly wrong. A bar carries no text, so nothing is lost.
78
78
  return (_jsx(Tooltip, { content: hint, multiline: true, maxWidth: 340, children: onSelect ? (_jsx("button", {
79
79
  // guardrails-ignore no-raw-action-button: a chart MARK, not an action — cursedbelt's Button carries height, padding and a label slot, none of which a positioned interval bar can have. The native element is used precisely so Enter/Space, focus and disabled semantics are the browser's rather than a hand-rolled keydown handler's.
80
- type: 'button', "aria-label": label, onClick: () => onSelect(interval), className: 'absolute cursor-pointer rounded-[3px] p-0 outline-none focus-visible:ring-2 focus-visible:ring-ring', style: style })) : (_jsx("span", { role: 'img', "aria-label": label, className: 'absolute rounded-[3px]', style: style })) }, interval.id));
80
+ type: 'button', "aria-label": label, onClick: () => onSelect(interval), className: 'absolute cursor-pointer rounded-xs p-0 outline-none focus-visible:ring-2 focus-visible:ring-ring', style: style })) : (_jsx("span", { role: 'img', "aria-label": label, className: 'absolute rounded-xs', style: style })) }, interval.id));
81
81
  }), markers.map((m) => (_jsx("span", { "aria-hidden": true, className: 'absolute inset-y-0 w-px', style: { left: `${clampedPct(m.at)}%`, background: toneColor(tokens, m.tone ?? 'danger') } }, `${ref}-mark-${m.at}`)))] }), showConcurrency && peak > 0 && (_jsxs("div", {
82
82
  // guardrails-ignore no-hand-rolled-surface: the concurrency strip's plot well — an instrument surface, not a card
83
83
  className: 'relative h-8 w-full overflow-hidden rounded-md border border-border bg-surface-sunken', role: 'img', "aria-label": `How many ran at once, peaking at ${peak}`, children: [profile.map((p, i) => {
@@ -1 +1 @@
1
- {"version":3,"file":"IntervalTimeline.js","sourceRoot":"","sources":["../../../src/react/charts/IntervalTimeline.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IntervalTimeline.js","sourceRoot":"","sources":["../../../src/react/charts/IntervalTimeline.tsx"],"names":[],"mappings":"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"}