@multiplatform.one/components 7.7.4 → 7.8.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 (849) hide show
  1. package/dist/cjs/Accordion/index.cjs +4 -0
  2. package/dist/cjs/Accordion/index.native.js +5 -1
  3. package/dist/cjs/Accordion/index.native.js.map +1 -1
  4. package/dist/cjs/Alert/index.native.js.map +1 -1
  5. package/dist/cjs/AnimateHeight/index.cjs +29 -2
  6. package/dist/cjs/AnimateHeight/index.native.js +30 -2
  7. package/dist/cjs/AnimateHeight/index.native.js.map +1 -1
  8. package/dist/cjs/Avatar/getInitials.native.js.map +1 -1
  9. package/dist/cjs/Avatar/index.native.js.map +1 -1
  10. package/dist/cjs/Badge/index.native.js.map +1 -1
  11. package/dist/cjs/Button.native.js.map +1 -1
  12. package/dist/cjs/Card.cjs +7 -1
  13. package/dist/cjs/Card.native.js +11 -1
  14. package/dist/cjs/Card.native.js.map +1 -1
  15. package/dist/cjs/CardFooter.cjs +1 -0
  16. package/dist/cjs/CardFooter.native.js +1 -0
  17. package/dist/cjs/CardFooter.native.js.map +1 -1
  18. package/dist/cjs/CardHeader.native.js.map +1 -1
  19. package/dist/cjs/Carousel/index.native.js +1 -1
  20. package/dist/cjs/Carousel/index.native.js.map +1 -1
  21. package/dist/cjs/Chip/index.native.js.map +1 -1
  22. package/dist/cjs/Collapsible.cjs +48 -0
  23. package/dist/cjs/Collapsible.native.js +56 -0
  24. package/dist/cjs/Collapsible.native.js.map +1 -0
  25. package/dist/cjs/ContextMenu/index.native.js.map +1 -1
  26. package/dist/cjs/CopyField/index.cjs +6 -1
  27. package/dist/cjs/CopyField/index.native.js +6 -1
  28. package/dist/cjs/CopyField/index.native.js.map +1 -1
  29. package/dist/cjs/DotIndicator/index.native.js.map +1 -1
  30. package/dist/cjs/DropdownMenu/index.cjs +31 -1
  31. package/dist/cjs/DropdownMenu/index.native.js +31 -1
  32. package/dist/cjs/DropdownMenu/index.native.js.map +1 -1
  33. package/dist/cjs/ErrorBoundary/index.native.js.map +1 -1
  34. package/dist/cjs/Heading.native.js.map +1 -1
  35. package/dist/cjs/Meter/index.cjs +12 -5
  36. package/dist/cjs/Meter/index.native.js +13 -6
  37. package/dist/cjs/Meter/index.native.js.map +1 -1
  38. package/dist/cjs/Meter/meter.native.js.map +1 -1
  39. package/dist/cjs/Pagination.cjs +28 -9
  40. package/dist/cjs/Pagination.native.js +29 -10
  41. package/dist/cjs/Pagination.native.js.map +1 -1
  42. package/dist/cjs/ProgressSteps/index.native.js.map +1 -1
  43. package/dist/cjs/Quote/index.native.js.map +1 -1
  44. package/dist/cjs/Separator/index.native.js.map +1 -1
  45. package/dist/cjs/SheetModal/detents.native.js.map +1 -1
  46. package/dist/cjs/Skeleton/index.native.js.map +1 -1
  47. package/dist/cjs/SkipLink/index.native.js.map +1 -1
  48. package/dist/cjs/SortableList/SortableHandle.native.js.map +1 -1
  49. package/dist/cjs/SortableList/index.native.js.map +1 -1
  50. package/dist/cjs/SortableList/useSortableRows.native.js.map +1 -1
  51. package/dist/cjs/Tabs/index.cjs +145 -91
  52. package/dist/cjs/Tabs/index.native.js +187 -123
  53. package/dist/cjs/Tabs/index.native.js.map +1 -1
  54. package/dist/cjs/Text.native.js.map +1 -1
  55. package/dist/cjs/Toast/index.cjs +53 -2
  56. package/dist/cjs/Toast/index.native.js +55 -2
  57. package/dist/cjs/Toast/index.native.js.map +1 -1
  58. package/dist/cjs/Toast/store.native.js.map +1 -1
  59. package/dist/cjs/Tooltip/nativePress.native.js.map +1 -1
  60. package/dist/cjs/Tooltip/tooltipShared.native.js.map +1 -1
  61. package/dist/cjs/TreeSelect/index.native.js +1 -1
  62. package/dist/cjs/TreeSelect/index.native.js.map +1 -1
  63. package/dist/cjs/TreeSelect/treeSelectModel.native.js.map +1 -1
  64. package/dist/cjs/Video/PlayerChrome.native.js.map +1 -1
  65. package/dist/cjs/Video/VideoFrame.native.js.map +1 -1
  66. package/dist/cjs/Video/types.native.js.map +1 -1
  67. package/dist/cjs/Wheel/index.native.js.map +1 -1
  68. package/dist/cjs/Wizard/index.native.js +2 -2
  69. package/dist/cjs/Wizard/index.native.js.map +1 -1
  70. package/dist/cjs/actions/ActionBar.native.js.map +1 -1
  71. package/dist/cjs/actions/DestructiveAction.cjs +7 -13
  72. package/dist/cjs/actions/DestructiveAction.native.js +7 -15
  73. package/dist/cjs/actions/DestructiveAction.native.js.map +1 -1
  74. package/dist/cjs/actions/devWarn.native.js.map +1 -1
  75. package/dist/cjs/actions/index.native.js.map +1 -1
  76. package/dist/cjs/actions/severity.native.js.map +1 -1
  77. package/dist/cjs/charts/Axis.cjs +5 -0
  78. package/dist/cjs/charts/Axis.native.js +5 -0
  79. package/dist/cjs/charts/Axis.native.js.map +1 -1
  80. package/dist/cjs/charts/BarChart.cjs +71 -57
  81. package/dist/cjs/charts/BarChart.native.js +81 -67
  82. package/dist/cjs/charts/BarChart.native.js.map +1 -1
  83. package/dist/cjs/charts/ChartDataView.cjs +212 -0
  84. package/dist/cjs/charts/ChartDataView.native.js +224 -0
  85. package/dist/cjs/charts/ChartDataView.native.js.map +1 -0
  86. package/dist/cjs/charts/ChartSurface.cjs +5 -1
  87. package/dist/cjs/charts/ChartSurface.native.js +5 -1
  88. package/dist/cjs/charts/ChartSurface.native.js.map +1 -1
  89. package/dist/cjs/charts/LineChart.cjs +81 -67
  90. package/dist/cjs/charts/LineChart.native.js +94 -80
  91. package/dist/cjs/charts/LineChart.native.js.map +1 -1
  92. package/dist/cjs/charts/PieChart.cjs +98 -73
  93. package/dist/cjs/charts/PieChart.native.js +109 -84
  94. package/dist/cjs/charts/PieChart.native.js.map +1 -1
  95. package/dist/cjs/charts/Sparkline.cjs +10 -1
  96. package/dist/cjs/charts/Sparkline.native.js +10 -1
  97. package/dist/cjs/charts/Sparkline.native.js.map +1 -1
  98. package/dist/cjs/charts/accessibility.cjs +4 -0
  99. package/dist/cjs/charts/accessibility.native.js +7 -0
  100. package/dist/cjs/charts/accessibility.native.js.map +1 -1
  101. package/dist/cjs/charts/composeChart.native.js.map +1 -1
  102. package/dist/cjs/charts/index.cjs +3 -1
  103. package/dist/cjs/charts/index.native.js +2 -0
  104. package/dist/cjs/charts/index.native.js.map +1 -1
  105. package/dist/cjs/charts/math.cjs +16 -0
  106. package/dist/cjs/charts/math.native.js +18 -0
  107. package/dist/cjs/charts/math.native.js.map +1 -1
  108. package/dist/cjs/charts/series.cjs +49 -7
  109. package/dist/cjs/charts/series.native.js +53 -11
  110. package/dist/cjs/charts/series.native.js.map +1 -1
  111. package/dist/cjs/charts/svg.cjs +46 -3
  112. package/dist/cjs/charts/svg.native.js +46 -3
  113. package/dist/cjs/charts/svg.native.js.map +1 -1
  114. package/dist/cjs/charts/types.native.js.map +1 -1
  115. package/dist/cjs/charts/useChartTheme.native.js.map +1 -1
  116. package/dist/cjs/code/Code/index.native.js.map +1 -1
  117. package/dist/cjs/code/CodeBlock/index.cjs +6 -1
  118. package/dist/cjs/code/CodeBlock/index.native.js +12 -7
  119. package/dist/cjs/code/CodeBlock/index.native.js.map +1 -1
  120. package/dist/cjs/code/HighlightedCode/index.native.js.map +1 -1
  121. package/dist/cjs/code/Highlighter/index.native.js.map +1 -1
  122. package/dist/cjs/code/Pre/index.native.js.map +1 -1
  123. package/dist/cjs/code/index.native.js +5 -5
  124. package/dist/cjs/code/index.native.js.map +1 -1
  125. package/dist/cjs/componentColors.native.js.map +1 -1
  126. package/dist/cjs/feedback/ConfirmDialog.cjs +7 -21
  127. package/dist/cjs/feedback/ConfirmDialog.native.js +7 -22
  128. package/dist/cjs/feedback/ConfirmDialog.native.js.map +1 -1
  129. package/dist/cjs/feedback/NotifyHost.cjs +2 -1
  130. package/dist/cjs/feedback/NotifyHost.native.js +5 -4
  131. package/dist/cjs/feedback/NotifyHost.native.js.map +1 -1
  132. package/dist/cjs/feedback/copy.cjs +36 -4
  133. package/dist/cjs/feedback/copy.native.js +38 -4
  134. package/dist/cjs/feedback/copy.native.js.map +1 -1
  135. package/dist/cjs/feedback/index.cjs +1 -0
  136. package/dist/cjs/feedback/index.native.js +1 -0
  137. package/dist/cjs/feedback/index.native.js.map +1 -1
  138. package/dist/cjs/feedback/notify.cjs +1 -0
  139. package/dist/cjs/feedback/notify.native.js +1 -0
  140. package/dist/cjs/feedback/notify.native.js.map +1 -1
  141. package/dist/cjs/feedback/route.cjs +3 -0
  142. package/dist/cjs/feedback/route.native.js +3 -0
  143. package/dist/cjs/feedback/route.native.js.map +1 -1
  144. package/dist/cjs/feedback/store.cjs +6 -0
  145. package/dist/cjs/feedback/store.native.js +8 -0
  146. package/dist/cjs/feedback/store.native.js.map +1 -1
  147. package/dist/cjs/hooks/index.native.js +1 -1
  148. package/dist/cjs/hooks/index.native.js.map +1 -1
  149. package/dist/cjs/hooks/useClipboard.native.js.map +1 -1
  150. package/dist/cjs/hooks/useDocumentTitle.native.js.map +1 -1
  151. package/dist/cjs/icons/CheckRegular.native.js.map +1 -1
  152. package/dist/cjs/icons/MinusRegular.native.js.map +1 -1
  153. package/dist/cjs/icons/index.native.js.map +1 -1
  154. package/dist/cjs/icons/lucide.cjs +2 -1
  155. package/dist/cjs/icons/lucide.native.js +2 -1
  156. package/dist/cjs/icons/lucide.native.js.map +1 -1
  157. package/dist/cjs/icons/themed.native.js.map +1 -1
  158. package/dist/cjs/images/Image/ImageFrame.native.js +1 -1
  159. package/dist/cjs/images/Image/ImageFrame.native.js.map +1 -1
  160. package/dist/cjs/images/Image/index.native.js +1 -1
  161. package/dist/cjs/images/Image/shared.native.js +1 -1
  162. package/dist/cjs/images/Image/shared.native.js.map +1 -1
  163. package/dist/cjs/images/Image/types.native.js.map +1 -1
  164. package/dist/cjs/images/index.native.js.map +1 -1
  165. package/dist/cjs/index.native.js +29 -29
  166. package/dist/cjs/index.native.js.map +1 -1
  167. package/dist/cjs/knobImmuneExports.cjs +0 -1
  168. package/dist/cjs/knobImmuneExports.native.js +0 -1
  169. package/dist/cjs/knobImmuneExports.native.js.map +1 -1
  170. package/dist/cjs/layouts/AsyncBoundary.native.js +2 -2
  171. package/dist/cjs/layouts/AsyncBoundary.native.js.map +1 -1
  172. package/dist/cjs/layouts/Debug/index.native.js.map +1 -1
  173. package/dist/cjs/layouts/EmptyState.native.js.map +1 -1
  174. package/dist/cjs/layouts/KeyboardAvoidingWrapper/behavior.native.js.map +1 -1
  175. package/dist/cjs/layouts/PageTemplates.native.js.map +1 -1
  176. package/dist/cjs/layouts/PaneScaffold.cjs +96 -41
  177. package/dist/cjs/layouts/PaneScaffold.native.js +97 -41
  178. package/dist/cjs/layouts/PaneScaffold.native.js.map +1 -1
  179. package/dist/cjs/layouts/SafeAreaWrapper/insets.native.js.map +1 -1
  180. package/dist/cjs/layouts/ViewSwitcher.native.js.map +1 -1
  181. package/dist/cjs/layouts/attachments.native.js +1 -1
  182. package/dist/cjs/layouts/attachments.native.js.map +1 -1
  183. package/dist/cjs/layouts/breadcrumbs.native.js.map +1 -1
  184. package/dist/cjs/layouts/index.cjs +2 -0
  185. package/dist/cjs/layouts/index.native.js +5 -3
  186. package/dist/cjs/layouts/index.native.js.map +1 -1
  187. package/dist/cjs/layouts/page.cjs +48 -7
  188. package/dist/cjs/layouts/page.native.js +50 -7
  189. package/dist/cjs/layouts/page.native.js.map +1 -1
  190. package/dist/cjs/layouts/pageHeadingScope.native.js.map +1 -1
  191. package/dist/cjs/layouts/sidebar.native.js.map +1 -1
  192. package/dist/cjs/layouts/tags.native.js +1 -1
  193. package/dist/cjs/layouts/tags.native.js.map +1 -1
  194. package/dist/cjs/layouts/timeline.native.js +2 -2
  195. package/dist/cjs/layouts/timeline.native.js.map +1 -1
  196. package/dist/cjs/layouts/toolbar.native.js.map +1 -1
  197. package/dist/cjs/shared/actionScan.native.js.map +1 -1
  198. package/dist/cjs/shared/i18n.native.js.map +1 -1
  199. package/dist/cjs/shared/t.native.js.map +1 -1
  200. package/dist/cjs/shared/textRidesText.native.js.map +1 -1
  201. package/dist/cjs/shared/useKeyboardInset.cjs +1 -19
  202. package/dist/cjs/shared/useKeyboardInset.native.js +3 -3
  203. package/dist/cjs/shared/useKeyboardInset.native.js.map +1 -1
  204. package/dist/cjs/shared/useReturnFocusOnClose.native.js.map +1 -1
  205. package/dist/cjs/surfaces.native.js +1 -1
  206. package/dist/cjs/surfaces.native.js.map +1 -1
  207. package/dist/cjs/tamagui.cjs +3 -2
  208. package/dist/cjs/tamagui.native.js +2 -1
  209. package/dist/cjs/tamagui.native.js.map +1 -1
  210. package/dist/cjs/testSetup.native.js.map +1 -1
  211. package/dist/cjs/utils/setTinted.native.js.map +1 -1
  212. package/dist/cjs/utils/unwrapText.native.js.map +1 -1
  213. package/dist/cjs/views/Calendar.native.js.map +1 -1
  214. package/dist/cjs/views/Dashboard.cjs +110 -17
  215. package/dist/cjs/views/Dashboard.native.js +152 -46
  216. package/dist/cjs/views/Dashboard.native.js.map +1 -1
  217. package/dist/cjs/views/Gantt.cjs +374 -91
  218. package/dist/cjs/views/Gantt.native.js +444 -95
  219. package/dist/cjs/views/Gantt.native.js.map +1 -1
  220. package/dist/cjs/views/ImageGrid.native.js +1 -1
  221. package/dist/cjs/views/ImageGrid.native.js.map +1 -1
  222. package/dist/cjs/views/List.native.js.map +1 -1
  223. package/dist/cjs/views/ReportBuilder.native.js +1 -1
  224. package/dist/cjs/views/ReportBuilder.native.js.map +1 -1
  225. package/dist/cjs/views/TreeView.native.js.map +1 -1
  226. package/dist/cjs/views/calendarMath.native.js.map +1 -1
  227. package/dist/cjs/views/ganttMath.cjs +91 -2
  228. package/dist/cjs/views/ganttMath.native.js +113 -3
  229. package/dist/cjs/views/ganttMath.native.js.map +1 -1
  230. package/dist/cjs/views/index.cjs +20 -1
  231. package/dist/cjs/views/index.native.js +21 -2
  232. package/dist/cjs/views/index.native.js.map +1 -1
  233. package/dist/cjs/views/kanbanDnd.native.js.map +1 -1
  234. package/dist/cjs/views/treeViewDnd.native.js.map +1 -1
  235. package/dist/cjs/views/treeViewLayout.native.js.map +1 -1
  236. package/dist/cjs/views/treeViewMotion.native.js.map +1 -1
  237. package/dist/esm/Accordion/index.mjs +4 -0
  238. package/dist/esm/Accordion/index.mjs.map +1 -1
  239. package/dist/esm/Accordion/index.native.js +4 -0
  240. package/dist/esm/Accordion/index.native.js.map +1 -1
  241. package/dist/esm/AnimateHeight/index.mjs +29 -2
  242. package/dist/esm/AnimateHeight/index.mjs.map +1 -1
  243. package/dist/esm/AnimateHeight/index.native.js +30 -2
  244. package/dist/esm/AnimateHeight/index.native.js.map +1 -1
  245. package/dist/esm/Avatar/getInitials.native.js.map +1 -1
  246. package/dist/esm/Avatar/index.native.js.map +1 -1
  247. package/dist/esm/Badge/index.native.js.map +1 -1
  248. package/dist/esm/Button.mjs.map +1 -1
  249. package/dist/esm/Button.native.js.map +1 -1
  250. package/dist/esm/Card.mjs +8 -2
  251. package/dist/esm/Card.mjs.map +1 -1
  252. package/dist/esm/Card.native.js +12 -2
  253. package/dist/esm/Card.native.js.map +1 -1
  254. package/dist/esm/CardFooter.mjs +1 -0
  255. package/dist/esm/CardFooter.mjs.map +1 -1
  256. package/dist/esm/CardFooter.native.js +1 -0
  257. package/dist/esm/CardFooter.native.js.map +1 -1
  258. package/dist/esm/Carousel/index.native.js.map +1 -1
  259. package/dist/esm/Chip/index.native.js.map +1 -1
  260. package/dist/esm/Collapsible.mjs +23 -0
  261. package/dist/esm/Collapsible.mjs.map +1 -0
  262. package/dist/esm/Collapsible.native.js +28 -0
  263. package/dist/esm/Collapsible.native.js.map +1 -0
  264. package/dist/esm/ContextMenu/index.native.js.map +1 -1
  265. package/dist/esm/CopyField/index.mjs +7 -2
  266. package/dist/esm/CopyField/index.mjs.map +1 -1
  267. package/dist/esm/CopyField/index.native.js +7 -2
  268. package/dist/esm/CopyField/index.native.js.map +1 -1
  269. package/dist/esm/DotIndicator/index.native.js.map +1 -1
  270. package/dist/esm/DropdownMenu/index.mjs +32 -2
  271. package/dist/esm/DropdownMenu/index.mjs.map +1 -1
  272. package/dist/esm/DropdownMenu/index.native.js +32 -2
  273. package/dist/esm/DropdownMenu/index.native.js.map +1 -1
  274. package/dist/esm/ErrorBoundary/index.native.js.map +1 -1
  275. package/dist/esm/Heading.native.js.map +1 -1
  276. package/dist/esm/Meter/index.mjs +12 -5
  277. package/dist/esm/Meter/index.mjs.map +1 -1
  278. package/dist/esm/Meter/index.native.js +12 -5
  279. package/dist/esm/Meter/index.native.js.map +1 -1
  280. package/dist/esm/Meter/meter.native.js.map +1 -1
  281. package/dist/esm/Pagination.mjs +28 -9
  282. package/dist/esm/Pagination.mjs.map +1 -1
  283. package/dist/esm/Pagination.native.js +28 -9
  284. package/dist/esm/Pagination.native.js.map +1 -1
  285. package/dist/esm/ProgressSteps/index.native.js.map +1 -1
  286. package/dist/esm/Quote/index.native.js.map +1 -1
  287. package/dist/esm/Separator/index.native.js.map +1 -1
  288. package/dist/esm/SheetModal/detents.native.js.map +1 -1
  289. package/dist/esm/Skeleton/index.native.js.map +1 -1
  290. package/dist/esm/SkipLink/index.native.js.map +1 -1
  291. package/dist/esm/SortableList/SortableHandle.native.js.map +1 -1
  292. package/dist/esm/SortableList/index.native.js.map +1 -1
  293. package/dist/esm/SortableList/useSortableRows.native.js.map +1 -1
  294. package/dist/esm/Tabs/index.mjs +145 -91
  295. package/dist/esm/Tabs/index.mjs.map +1 -1
  296. package/dist/esm/Tabs/index.native.js +187 -123
  297. package/dist/esm/Tabs/index.native.js.map +1 -1
  298. package/dist/esm/Text.native.js.map +1 -1
  299. package/dist/esm/Toast/index.mjs +52 -3
  300. package/dist/esm/Toast/index.mjs.map +1 -1
  301. package/dist/esm/Toast/index.native.js +54 -3
  302. package/dist/esm/Toast/index.native.js.map +1 -1
  303. package/dist/esm/Toast/store.native.js.map +1 -1
  304. package/dist/esm/Tooltip/nativePress.native.js.map +1 -1
  305. package/dist/esm/Tooltip/tooltipShared.native.js.map +1 -1
  306. package/dist/esm/TreeSelect/index.native.js.map +1 -1
  307. package/dist/esm/TreeSelect/treeSelectModel.native.js.map +1 -1
  308. package/dist/esm/Video/PlayerChrome.native.js.map +1 -1
  309. package/dist/esm/Video/VideoFrame.native.js.map +1 -1
  310. package/dist/esm/Video/types.native.js.map +1 -1
  311. package/dist/esm/Wheel/index.native.js.map +1 -1
  312. package/dist/esm/Wizard/index.native.js.map +1 -1
  313. package/dist/esm/actions/ActionBar.native.js.map +1 -1
  314. package/dist/esm/actions/DestructiveAction.mjs +8 -14
  315. package/dist/esm/actions/DestructiveAction.mjs.map +1 -1
  316. package/dist/esm/actions/DestructiveAction.native.js +8 -16
  317. package/dist/esm/actions/DestructiveAction.native.js.map +1 -1
  318. package/dist/esm/actions/devWarn.native.js.map +1 -1
  319. package/dist/esm/actions/index.native.js.map +1 -1
  320. package/dist/esm/actions/severity.native.js.map +1 -1
  321. package/dist/esm/charts/Axis.mjs +6 -1
  322. package/dist/esm/charts/Axis.mjs.map +1 -1
  323. package/dist/esm/charts/Axis.native.js +6 -1
  324. package/dist/esm/charts/Axis.native.js.map +1 -1
  325. package/dist/esm/charts/BarChart.mjs +72 -58
  326. package/dist/esm/charts/BarChart.mjs.map +1 -1
  327. package/dist/esm/charts/BarChart.native.js +82 -68
  328. package/dist/esm/charts/BarChart.native.js.map +1 -1
  329. package/dist/esm/charts/ChartDataView.mjs +185 -0
  330. package/dist/esm/charts/ChartDataView.mjs.map +1 -0
  331. package/dist/esm/charts/ChartDataView.native.js +194 -0
  332. package/dist/esm/charts/ChartDataView.native.js.map +1 -0
  333. package/dist/esm/charts/ChartSurface.mjs +5 -1
  334. package/dist/esm/charts/ChartSurface.mjs.map +1 -1
  335. package/dist/esm/charts/ChartSurface.native.js +5 -1
  336. package/dist/esm/charts/ChartSurface.native.js.map +1 -1
  337. package/dist/esm/charts/LineChart.mjs +82 -68
  338. package/dist/esm/charts/LineChart.mjs.map +1 -1
  339. package/dist/esm/charts/LineChart.native.js +95 -81
  340. package/dist/esm/charts/LineChart.native.js.map +1 -1
  341. package/dist/esm/charts/PieChart.mjs +100 -75
  342. package/dist/esm/charts/PieChart.mjs.map +1 -1
  343. package/dist/esm/charts/PieChart.native.js +111 -86
  344. package/dist/esm/charts/PieChart.native.js.map +1 -1
  345. package/dist/esm/charts/Sparkline.mjs +11 -2
  346. package/dist/esm/charts/Sparkline.mjs.map +1 -1
  347. package/dist/esm/charts/Sparkline.native.js +11 -2
  348. package/dist/esm/charts/Sparkline.native.js.map +1 -1
  349. package/dist/esm/charts/accessibility.mjs +4 -1
  350. package/dist/esm/charts/accessibility.mjs.map +1 -1
  351. package/dist/esm/charts/accessibility.native.js +7 -1
  352. package/dist/esm/charts/accessibility.native.js.map +1 -1
  353. package/dist/esm/charts/composeChart.native.js.map +1 -1
  354. package/dist/esm/charts/index.mjs +2 -1
  355. package/dist/esm/charts/index.mjs.map +1 -1
  356. package/dist/esm/charts/index.native.js +2 -1
  357. package/dist/esm/charts/index.native.js.map +1 -1
  358. package/dist/esm/charts/math.mjs +16 -1
  359. package/dist/esm/charts/math.mjs.map +1 -1
  360. package/dist/esm/charts/math.native.js +18 -1
  361. package/dist/esm/charts/math.native.js.map +1 -1
  362. package/dist/esm/charts/series.mjs +51 -9
  363. package/dist/esm/charts/series.mjs.map +1 -1
  364. package/dist/esm/charts/series.native.js +55 -13
  365. package/dist/esm/charts/series.native.js.map +1 -1
  366. package/dist/esm/charts/svg.mjs +40 -4
  367. package/dist/esm/charts/svg.mjs.map +1 -1
  368. package/dist/esm/charts/svg.native.js +40 -4
  369. package/dist/esm/charts/svg.native.js.map +1 -1
  370. package/dist/esm/charts/types.native.js.map +1 -1
  371. package/dist/esm/charts/useChartTheme.native.js.map +1 -1
  372. package/dist/esm/code/CodeBlock/index.mjs +7 -2
  373. package/dist/esm/code/CodeBlock/index.mjs.map +1 -1
  374. package/dist/esm/code/CodeBlock/index.native.js +7 -2
  375. package/dist/esm/code/CodeBlock/index.native.js.map +1 -1
  376. package/dist/esm/code/HighlightedCode/index.native.js.map +1 -1
  377. package/dist/esm/code/Highlighter/index.native.js.map +1 -1
  378. package/dist/esm/code/Pre/index.native.js.map +1 -1
  379. package/dist/esm/code/index.native.js.map +1 -1
  380. package/dist/esm/componentColors.native.js.map +1 -1
  381. package/dist/esm/feedback/ConfirmDialog.mjs +8 -22
  382. package/dist/esm/feedback/ConfirmDialog.mjs.map +1 -1
  383. package/dist/esm/feedback/ConfirmDialog.native.js +8 -23
  384. package/dist/esm/feedback/ConfirmDialog.native.js.map +1 -1
  385. package/dist/esm/feedback/NotifyHost.mjs +2 -1
  386. package/dist/esm/feedback/NotifyHost.mjs.map +1 -1
  387. package/dist/esm/feedback/NotifyHost.native.js +3 -2
  388. package/dist/esm/feedback/NotifyHost.native.js.map +1 -1
  389. package/dist/esm/feedback/copy.mjs +35 -4
  390. package/dist/esm/feedback/copy.mjs.map +1 -1
  391. package/dist/esm/feedback/copy.native.js +37 -4
  392. package/dist/esm/feedback/copy.native.js.map +1 -1
  393. package/dist/esm/feedback/index.mjs +2 -2
  394. package/dist/esm/feedback/index.mjs.map +1 -1
  395. package/dist/esm/feedback/index.native.js +2 -2
  396. package/dist/esm/feedback/index.native.js.map +1 -1
  397. package/dist/esm/feedback/notify.mjs +1 -0
  398. package/dist/esm/feedback/notify.mjs.map +1 -1
  399. package/dist/esm/feedback/notify.native.js +1 -0
  400. package/dist/esm/feedback/notify.native.js.map +1 -1
  401. package/dist/esm/feedback/route.mjs +3 -0
  402. package/dist/esm/feedback/route.mjs.map +1 -1
  403. package/dist/esm/feedback/route.native.js +3 -0
  404. package/dist/esm/feedback/route.native.js.map +1 -1
  405. package/dist/esm/feedback/store.mjs +6 -1
  406. package/dist/esm/feedback/store.mjs.map +1 -1
  407. package/dist/esm/feedback/store.native.js +8 -1
  408. package/dist/esm/feedback/store.native.js.map +1 -1
  409. package/dist/esm/hooks/index.native.js.map +1 -1
  410. package/dist/esm/hooks/useClipboard.native.js.map +1 -1
  411. package/dist/esm/hooks/useDocumentTitle.native.js.map +1 -1
  412. package/dist/esm/icons/CheckRegular.native.js.map +1 -1
  413. package/dist/esm/icons/MinusRegular.native.js.map +1 -1
  414. package/dist/esm/icons/index.native.js.map +1 -1
  415. package/dist/esm/icons/lucide.mjs +2 -2
  416. package/dist/esm/icons/lucide.mjs.map +1 -1
  417. package/dist/esm/icons/lucide.native.js +2 -2
  418. package/dist/esm/icons/lucide.native.js.map +1 -1
  419. package/dist/esm/icons/themed.native.js.map +1 -1
  420. package/dist/esm/images/Image/ImageFrame.native.js.map +1 -1
  421. package/dist/esm/images/Image/shared.native.js.map +1 -1
  422. package/dist/esm/images/Image/types.native.js.map +1 -1
  423. package/dist/esm/images/index.native.js.map +1 -1
  424. package/dist/esm/index.native.js.map +1 -1
  425. package/dist/esm/knobImmuneExports.mjs +0 -1
  426. package/dist/esm/knobImmuneExports.mjs.map +1 -1
  427. package/dist/esm/knobImmuneExports.native.js +0 -1
  428. package/dist/esm/knobImmuneExports.native.js.map +1 -1
  429. package/dist/esm/layouts/AsyncBoundary.native.js.map +1 -1
  430. package/dist/esm/layouts/Debug/index.native.js.map +1 -1
  431. package/dist/esm/layouts/EmptyState.native.js.map +1 -1
  432. package/dist/esm/layouts/KeyboardAvoidingWrapper/behavior.native.js.map +1 -1
  433. package/dist/esm/layouts/PageTemplates.native.js.map +1 -1
  434. package/dist/esm/layouts/PaneScaffold.mjs +97 -42
  435. package/dist/esm/layouts/PaneScaffold.mjs.map +1 -1
  436. package/dist/esm/layouts/PaneScaffold.native.js +98 -42
  437. package/dist/esm/layouts/PaneScaffold.native.js.map +1 -1
  438. package/dist/esm/layouts/SafeAreaWrapper/insets.native.js.map +1 -1
  439. package/dist/esm/layouts/ViewSwitcher.native.js.map +1 -1
  440. package/dist/esm/layouts/attachments.native.js.map +1 -1
  441. package/dist/esm/layouts/breadcrumbs.native.js.map +1 -1
  442. package/dist/esm/layouts/index.mjs +2 -1
  443. package/dist/esm/layouts/index.mjs.map +1 -1
  444. package/dist/esm/layouts/index.native.js +2 -1
  445. package/dist/esm/layouts/index.native.js.map +1 -1
  446. package/dist/esm/layouts/page.mjs +49 -8
  447. package/dist/esm/layouts/page.mjs.map +1 -1
  448. package/dist/esm/layouts/page.native.js +51 -8
  449. package/dist/esm/layouts/page.native.js.map +1 -1
  450. package/dist/esm/layouts/pageHeadingScope.native.js.map +1 -1
  451. package/dist/esm/layouts/sidebar.native.js.map +1 -1
  452. package/dist/esm/layouts/tags.native.js.map +1 -1
  453. package/dist/esm/layouts/timeline.native.js.map +1 -1
  454. package/dist/esm/layouts/toolbar.native.js.map +1 -1
  455. package/dist/esm/shared/actionScan.native.js.map +1 -1
  456. package/dist/esm/shared/i18n.native.js.map +1 -1
  457. package/dist/esm/shared/t.native.js.map +1 -1
  458. package/dist/esm/shared/textRidesText.native.js.map +1 -1
  459. package/dist/esm/shared/useKeyboardInset.mjs +1 -19
  460. package/dist/esm/shared/useKeyboardInset.mjs.map +1 -1
  461. package/dist/esm/shared/useKeyboardInset.native.js.map +1 -1
  462. package/dist/esm/shared/useReturnFocusOnClose.native.js.map +1 -1
  463. package/dist/esm/surfaces.native.js.map +1 -1
  464. package/dist/esm/tamagui.mjs +2 -1
  465. package/dist/esm/tamagui.mjs.map +1 -1
  466. package/dist/esm/tamagui.native.js +2 -1
  467. package/dist/esm/tamagui.native.js.map +1 -1
  468. package/dist/esm/testSetup.native.js.map +1 -1
  469. package/dist/esm/utils/setTinted.native.js.map +1 -1
  470. package/dist/esm/utils/unwrapText.native.js.map +1 -1
  471. package/dist/esm/views/Calendar.native.js.map +1 -1
  472. package/dist/esm/views/Dashboard.mjs +112 -19
  473. package/dist/esm/views/Dashboard.mjs.map +1 -1
  474. package/dist/esm/views/Dashboard.native.js +153 -47
  475. package/dist/esm/views/Dashboard.native.js.map +1 -1
  476. package/dist/esm/views/Gantt.mjs +376 -93
  477. package/dist/esm/views/Gantt.mjs.map +1 -1
  478. package/dist/esm/views/Gantt.native.js +445 -96
  479. package/dist/esm/views/Gantt.native.js.map +1 -1
  480. package/dist/esm/views/ImageGrid.native.js.map +1 -1
  481. package/dist/esm/views/List.native.js.map +1 -1
  482. package/dist/esm/views/ReportBuilder.native.js.map +1 -1
  483. package/dist/esm/views/TreeView.native.js.map +1 -1
  484. package/dist/esm/views/calendarMath.native.js.map +1 -1
  485. package/dist/esm/views/ganttMath.mjs +84 -3
  486. package/dist/esm/views/ganttMath.mjs.map +1 -1
  487. package/dist/esm/views/ganttMath.native.js +106 -4
  488. package/dist/esm/views/ganttMath.native.js.map +1 -1
  489. package/dist/esm/views/index.mjs +2 -2
  490. package/dist/esm/views/index.mjs.map +1 -1
  491. package/dist/esm/views/index.native.js +2 -2
  492. package/dist/esm/views/index.native.js.map +1 -1
  493. package/dist/esm/views/kanbanDnd.native.js.map +1 -1
  494. package/dist/esm/views/treeViewDnd.native.js.map +1 -1
  495. package/dist/esm/views/treeViewLayout.native.js.map +1 -1
  496. package/dist/esm/views/treeViewMotion.native.js.map +1 -1
  497. package/dist/jsx/Accordion/index.mjs +4 -0
  498. package/dist/jsx/Accordion/index.mjs.map +1 -1
  499. package/dist/jsx/Accordion/index.native.js +4 -0
  500. package/dist/jsx/Accordion/index.native.js.map +1 -1
  501. package/dist/jsx/AnimateHeight/index.mjs +29 -2
  502. package/dist/jsx/AnimateHeight/index.mjs.map +1 -1
  503. package/dist/jsx/AnimateHeight/index.native.js +30 -2
  504. package/dist/jsx/AnimateHeight/index.native.js.map +1 -1
  505. package/dist/jsx/Button.mjs.map +1 -1
  506. package/dist/jsx/Button.native.js.map +1 -1
  507. package/dist/jsx/Card.mjs +8 -2
  508. package/dist/jsx/Card.mjs.map +1 -1
  509. package/dist/jsx/Card.native.js +11 -1
  510. package/dist/jsx/Card.native.js.map +1 -1
  511. package/dist/jsx/CardFooter.mjs +1 -0
  512. package/dist/jsx/CardFooter.mjs.map +1 -1
  513. package/dist/jsx/CardFooter.native.js +1 -0
  514. package/dist/jsx/CardFooter.native.js.map +1 -1
  515. package/dist/jsx/Collapsible.mjs +23 -0
  516. package/dist/jsx/Collapsible.mjs.map +1 -0
  517. package/dist/jsx/Collapsible.native.js +56 -0
  518. package/dist/jsx/Collapsible.native.js.map +1 -0
  519. package/dist/jsx/CopyField/index.mjs +7 -2
  520. package/dist/jsx/CopyField/index.mjs.map +1 -1
  521. package/dist/jsx/CopyField/index.native.js +6 -1
  522. package/dist/jsx/CopyField/index.native.js.map +1 -1
  523. package/dist/jsx/DropdownMenu/index.mjs +32 -2
  524. package/dist/jsx/DropdownMenu/index.mjs.map +1 -1
  525. package/dist/jsx/DropdownMenu/index.native.js +31 -1
  526. package/dist/jsx/DropdownMenu/index.native.js.map +1 -1
  527. package/dist/jsx/Meter/index.mjs +12 -5
  528. package/dist/jsx/Meter/index.mjs.map +1 -1
  529. package/dist/jsx/Meter/index.native.js +12 -5
  530. package/dist/jsx/Meter/index.native.js.map +1 -1
  531. package/dist/jsx/Pagination.mjs +28 -9
  532. package/dist/jsx/Pagination.mjs.map +1 -1
  533. package/dist/jsx/Pagination.native.js +28 -9
  534. package/dist/jsx/Pagination.native.js.map +1 -1
  535. package/dist/jsx/Tabs/index.mjs +145 -91
  536. package/dist/jsx/Tabs/index.mjs.map +1 -1
  537. package/dist/jsx/Tabs/index.native.js +187 -123
  538. package/dist/jsx/Tabs/index.native.js.map +1 -1
  539. package/dist/jsx/Toast/index.mjs +52 -3
  540. package/dist/jsx/Toast/index.mjs.map +1 -1
  541. package/dist/jsx/Toast/index.native.js +55 -2
  542. package/dist/jsx/Toast/index.native.js.map +1 -1
  543. package/dist/jsx/actions/DestructiveAction.mjs +8 -14
  544. package/dist/jsx/actions/DestructiveAction.mjs.map +1 -1
  545. package/dist/jsx/actions/DestructiveAction.native.js +7 -15
  546. package/dist/jsx/actions/DestructiveAction.native.js.map +1 -1
  547. package/dist/jsx/charts/Axis.mjs +6 -1
  548. package/dist/jsx/charts/Axis.mjs.map +1 -1
  549. package/dist/jsx/charts/Axis.native.js +5 -0
  550. package/dist/jsx/charts/Axis.native.js.map +1 -1
  551. package/dist/jsx/charts/BarChart.mjs +72 -58
  552. package/dist/jsx/charts/BarChart.mjs.map +1 -1
  553. package/dist/jsx/charts/BarChart.native.js +81 -67
  554. package/dist/jsx/charts/BarChart.native.js.map +1 -1
  555. package/dist/jsx/charts/ChartDataView.mjs +185 -0
  556. package/dist/jsx/charts/ChartDataView.mjs.map +1 -0
  557. package/dist/jsx/charts/ChartDataView.native.js +224 -0
  558. package/dist/jsx/charts/ChartDataView.native.js.map +1 -0
  559. package/dist/jsx/charts/ChartSurface.mjs +5 -1
  560. package/dist/jsx/charts/ChartSurface.mjs.map +1 -1
  561. package/dist/jsx/charts/ChartSurface.native.js +5 -1
  562. package/dist/jsx/charts/ChartSurface.native.js.map +1 -1
  563. package/dist/jsx/charts/LineChart.mjs +82 -68
  564. package/dist/jsx/charts/LineChart.mjs.map +1 -1
  565. package/dist/jsx/charts/LineChart.native.js +94 -80
  566. package/dist/jsx/charts/LineChart.native.js.map +1 -1
  567. package/dist/jsx/charts/PieChart.mjs +100 -75
  568. package/dist/jsx/charts/PieChart.mjs.map +1 -1
  569. package/dist/jsx/charts/PieChart.native.js +109 -84
  570. package/dist/jsx/charts/PieChart.native.js.map +1 -1
  571. package/dist/jsx/charts/Sparkline.mjs +11 -2
  572. package/dist/jsx/charts/Sparkline.mjs.map +1 -1
  573. package/dist/jsx/charts/Sparkline.native.js +10 -1
  574. package/dist/jsx/charts/Sparkline.native.js.map +1 -1
  575. package/dist/jsx/charts/accessibility.mjs +4 -1
  576. package/dist/jsx/charts/accessibility.mjs.map +1 -1
  577. package/dist/jsx/charts/accessibility.native.js +7 -0
  578. package/dist/jsx/charts/accessibility.native.js.map +1 -1
  579. package/dist/jsx/charts/index.mjs +2 -1
  580. package/dist/jsx/charts/index.mjs.map +1 -1
  581. package/dist/jsx/charts/index.native.js +2 -0
  582. package/dist/jsx/charts/index.native.js.map +1 -1
  583. package/dist/jsx/charts/math.mjs +16 -1
  584. package/dist/jsx/charts/math.mjs.map +1 -1
  585. package/dist/jsx/charts/math.native.js +18 -0
  586. package/dist/jsx/charts/math.native.js.map +1 -1
  587. package/dist/jsx/charts/series.mjs +51 -9
  588. package/dist/jsx/charts/series.mjs.map +1 -1
  589. package/dist/jsx/charts/series.native.js +53 -11
  590. package/dist/jsx/charts/series.native.js.map +1 -1
  591. package/dist/jsx/charts/svg.mjs +40 -4
  592. package/dist/jsx/charts/svg.mjs.map +1 -1
  593. package/dist/jsx/charts/svg.native.js +46 -3
  594. package/dist/jsx/charts/svg.native.js.map +1 -1
  595. package/dist/jsx/code/CodeBlock/index.mjs +7 -2
  596. package/dist/jsx/code/CodeBlock/index.mjs.map +1 -1
  597. package/dist/jsx/code/CodeBlock/index.native.js +6 -1
  598. package/dist/jsx/code/CodeBlock/index.native.js.map +1 -1
  599. package/dist/jsx/feedback/ConfirmDialog.mjs +8 -22
  600. package/dist/jsx/feedback/ConfirmDialog.mjs.map +1 -1
  601. package/dist/jsx/feedback/ConfirmDialog.native.js +7 -22
  602. package/dist/jsx/feedback/ConfirmDialog.native.js.map +1 -1
  603. package/dist/jsx/feedback/NotifyHost.mjs +2 -1
  604. package/dist/jsx/feedback/NotifyHost.mjs.map +1 -1
  605. package/dist/jsx/feedback/NotifyHost.native.js +3 -2
  606. package/dist/jsx/feedback/NotifyHost.native.js.map +1 -1
  607. package/dist/jsx/feedback/copy.mjs +35 -4
  608. package/dist/jsx/feedback/copy.mjs.map +1 -1
  609. package/dist/jsx/feedback/copy.native.js +38 -4
  610. package/dist/jsx/feedback/copy.native.js.map +1 -1
  611. package/dist/jsx/feedback/index.mjs +2 -2
  612. package/dist/jsx/feedback/index.mjs.map +1 -1
  613. package/dist/jsx/feedback/index.native.js +1 -0
  614. package/dist/jsx/feedback/index.native.js.map +1 -1
  615. package/dist/jsx/feedback/notify.mjs +1 -0
  616. package/dist/jsx/feedback/notify.mjs.map +1 -1
  617. package/dist/jsx/feedback/notify.native.js +1 -0
  618. package/dist/jsx/feedback/notify.native.js.map +1 -1
  619. package/dist/jsx/feedback/route.mjs +3 -0
  620. package/dist/jsx/feedback/route.mjs.map +1 -1
  621. package/dist/jsx/feedback/route.native.js +3 -0
  622. package/dist/jsx/feedback/route.native.js.map +1 -1
  623. package/dist/jsx/feedback/store.mjs +6 -1
  624. package/dist/jsx/feedback/store.mjs.map +1 -1
  625. package/dist/jsx/feedback/store.native.js +8 -0
  626. package/dist/jsx/feedback/store.native.js.map +1 -1
  627. package/dist/jsx/icons/lucide.mjs +2 -2
  628. package/dist/jsx/icons/lucide.mjs.map +1 -1
  629. package/dist/jsx/icons/lucide.native.js +2 -1
  630. package/dist/jsx/knobImmuneExports.mjs +0 -1
  631. package/dist/jsx/knobImmuneExports.mjs.map +1 -1
  632. package/dist/jsx/knobImmuneExports.native.js +0 -1
  633. package/dist/jsx/knobImmuneExports.native.js.map +1 -1
  634. package/dist/jsx/layouts/PaneScaffold.mjs +97 -42
  635. package/dist/jsx/layouts/PaneScaffold.mjs.map +1 -1
  636. package/dist/jsx/layouts/PaneScaffold.native.js +97 -41
  637. package/dist/jsx/layouts/PaneScaffold.native.js.map +1 -1
  638. package/dist/jsx/layouts/index.mjs +2 -1
  639. package/dist/jsx/layouts/index.mjs.map +1 -1
  640. package/dist/jsx/layouts/index.native.js +2 -0
  641. package/dist/jsx/layouts/index.native.js.map +1 -1
  642. package/dist/jsx/layouts/page.mjs +49 -8
  643. package/dist/jsx/layouts/page.mjs.map +1 -1
  644. package/dist/jsx/layouts/page.native.js +50 -7
  645. package/dist/jsx/layouts/page.native.js.map +1 -1
  646. package/dist/jsx/shared/useKeyboardInset.mjs +1 -19
  647. package/dist/jsx/shared/useKeyboardInset.mjs.map +1 -1
  648. package/dist/jsx/shared/useKeyboardInset.native.js +3 -3
  649. package/dist/jsx/shared/useKeyboardInset.native.js.map +1 -1
  650. package/dist/jsx/tamagui.mjs +2 -1
  651. package/dist/jsx/tamagui.mjs.map +1 -1
  652. package/dist/jsx/tamagui.native.js +2 -1
  653. package/dist/jsx/tamagui.native.js.map +1 -1
  654. package/dist/jsx/views/Dashboard.mjs +112 -19
  655. package/dist/jsx/views/Dashboard.mjs.map +1 -1
  656. package/dist/jsx/views/Dashboard.native.js +151 -45
  657. package/dist/jsx/views/Dashboard.native.js.map +1 -1
  658. package/dist/jsx/views/Gantt.mjs +376 -93
  659. package/dist/jsx/views/Gantt.mjs.map +1 -1
  660. package/dist/jsx/views/Gantt.native.js +443 -94
  661. package/dist/jsx/views/Gantt.native.js.map +1 -1
  662. package/dist/jsx/views/ganttMath.mjs +84 -3
  663. package/dist/jsx/views/ganttMath.mjs.map +1 -1
  664. package/dist/jsx/views/ganttMath.native.js +113 -3
  665. package/dist/jsx/views/ganttMath.native.js.map +1 -1
  666. package/dist/jsx/views/index.mjs +2 -2
  667. package/dist/jsx/views/index.mjs.map +1 -1
  668. package/dist/jsx/views/index.native.js +20 -1
  669. package/dist/jsx/views/index.native.js.map +1 -1
  670. package/package.json +11 -9
  671. package/src/Accordion/index.tsx +7 -1
  672. package/src/AnimateHeight/AnimateHeight.native.spec.tsx +51 -0
  673. package/src/AnimateHeight/index.tsx +30 -5
  674. package/src/Button.tsx +10 -2
  675. package/src/Card.spec.tsx +76 -3
  676. package/src/Card.stories.tsx +1 -1
  677. package/src/Card.tsx +13 -1
  678. package/src/CardFooter.stories.tsx +3 -7
  679. package/src/CardFooter.tsx +3 -1
  680. package/src/CardHeader.stories.tsx +1 -3
  681. package/src/Collapsible.stories.tsx +2 -2
  682. package/src/Collapsible.tsx +23 -0
  683. package/src/CopyField/CopyField.spec.tsx +66 -1
  684. package/src/CopyField/index.tsx +4 -3
  685. package/src/DropdownMenu/DropdownMenu.spec.tsx +112 -1
  686. package/src/DropdownMenu/DropdownMenu.stories.tsx +1 -3
  687. package/src/DropdownMenu/index.tsx +67 -6
  688. package/src/LinearGradient.stories.tsx +2 -2
  689. package/src/Meter/Meter.spec.tsx +59 -2
  690. package/src/Meter/Meter.stories.tsx +38 -0
  691. package/src/Meter/index.tsx +9 -4
  692. package/src/Pagination.simple.spec.tsx +23 -0
  693. package/src/Pagination.stories.tsx +8 -0
  694. package/src/Pagination.tsx +27 -10
  695. package/src/Panel.stories.tsx +1 -1
  696. package/src/SortableList/SortableList.spec.tsx +3 -3
  697. package/src/Tabs/Tabs.bandColor.spec.tsx +23 -0
  698. package/src/Tabs/Tabs.native.spec.tsx +35 -0
  699. package/src/Tabs/Tabs.spec.tsx +91 -1
  700. package/src/Tabs/Tabs.stories.tsx +36 -1
  701. package/src/Tabs/index.tsx +272 -187
  702. package/src/Toast/Toast.spec.tsx +56 -1
  703. package/src/Toast/index.tsx +68 -3
  704. package/src/Unspaced.stories.tsx +2 -2
  705. package/src/VisuallyHidden.stories.tsx +2 -2
  706. package/src/actions/DestructiveAction.spec.tsx +19 -3
  707. package/src/actions/DestructiveAction.tsx +9 -14
  708. package/src/charts/Axis.tsx +6 -1
  709. package/src/charts/BarChart.tsx +82 -67
  710. package/src/charts/ChartDataView.spec.tsx +104 -0
  711. package/src/charts/ChartDataView.tsx +158 -0
  712. package/src/charts/ChartSurface.tsx +7 -2
  713. package/src/charts/Charts.stories.tsx +213 -9
  714. package/src/charts/LineChart.tsx +90 -75
  715. package/src/charts/PieChart.knobs.spec.tsx +25 -0
  716. package/src/charts/PieChart.tsx +51 -9
  717. package/src/charts/Sparkline.tsx +25 -3
  718. package/src/charts/accessibility.ts +8 -0
  719. package/src/charts/charts.spec.tsx +77 -3
  720. package/src/charts/index.ts +2 -0
  721. package/src/charts/math.spec.ts +19 -0
  722. package/src/charts/math.ts +36 -0
  723. package/src/charts/series.tsx +101 -21
  724. package/src/charts/svg.spec.ts +28 -0
  725. package/src/charts/svg.ts +56 -2
  726. package/src/code/CodeBlock/CodeBlock.copy.spec.tsx +23 -0
  727. package/src/code/CodeBlock/index.tsx +4 -3
  728. package/src/disclosureForm.spec.tsx +57 -0
  729. package/src/disclosureNativeProps.spec.tsx +35 -0
  730. package/src/feedback/ConfirmDialog.nativeFocus.spec.tsx +52 -0
  731. package/src/feedback/ConfirmDialog.spec.tsx +20 -0
  732. package/src/feedback/ConfirmDialog.tsx +9 -15
  733. package/src/feedback/NotifyHost.tsx +11 -2
  734. package/src/feedback/copy.ts +36 -4
  735. package/src/feedback/index.ts +1 -0
  736. package/src/feedback/notify.spec.ts +15 -1
  737. package/src/feedback/notify.ts +1 -0
  738. package/src/feedback/route.ts +4 -0
  739. package/src/feedback/store.ts +7 -0
  740. package/src/icons/lucide.ts +1 -1
  741. package/src/images/SvgUri/index.native.ts +11 -3
  742. package/src/knobImmuneExports.ts +0 -2
  743. package/src/layouts/EmptyState.stories.tsx +2 -2
  744. package/src/layouts/Page.weight.spec.tsx +75 -0
  745. package/src/layouts/PageHeader.stories.tsx +4 -4
  746. package/src/layouts/PageTemplates.stories.tsx +2 -2
  747. package/src/layouts/PaneScaffold.spec.tsx +144 -4
  748. package/src/layouts/PaneScaffold.stories.tsx +58 -2
  749. package/src/layouts/PaneScaffold.tsx +156 -58
  750. package/src/layouts/ScreenToolbar.stories.tsx +6 -23
  751. package/src/layouts/index.tsx +11 -0
  752. package/src/layouts/layouts.spec.tsx +51 -0
  753. package/src/layouts/page.designLaw.spec.tsx +25 -0
  754. package/src/layouts/page.tsx +46 -9
  755. package/src/primitives.spec.tsx +19 -4
  756. package/src/shared/useKeyboardInset.native.ts +43 -0
  757. package/src/shared/useKeyboardInset.ts +2 -41
  758. package/src/tamagui.spec.ts +63 -0
  759. package/src/tamagui.ts +3 -1
  760. package/src/views/Dashboard.stories.tsx +38 -1
  761. package/src/views/Dashboard.tsx +119 -21
  762. package/src/views/Gantt.scroll.spec.tsx +120 -0
  763. package/src/views/Gantt.spec.tsx +376 -0
  764. package/src/views/Gantt.stories.tsx +75 -2
  765. package/src/views/Gantt.tsx +564 -96
  766. package/src/views/Kanban.spec.tsx +11 -0
  767. package/src/views/ganttMath.ts +142 -4
  768. package/src/views/index.ts +44 -1
  769. package/src/views/views.spec.tsx +39 -0
  770. package/types/Accordion/index.d.ts +2 -0
  771. package/types/Accordion/index.d.ts.map +1 -1
  772. package/types/AnimateHeight/index.d.ts +3 -4
  773. package/types/AnimateHeight/index.d.ts.map +1 -1
  774. package/types/Button.d.ts +12 -2
  775. package/types/Button.d.ts.map +1 -1
  776. package/types/Card.d.ts.map +1 -1
  777. package/types/CardFooter.d.ts +2 -1
  778. package/types/CardFooter.d.ts.map +1 -1
  779. package/types/Collapsible.d.ts +19 -0
  780. package/types/Collapsible.d.ts.map +1 -0
  781. package/types/CopyField/index.d.ts.map +1 -1
  782. package/types/DropdownMenu/index.d.ts +22 -0
  783. package/types/DropdownMenu/index.d.ts.map +1 -1
  784. package/types/Meter/index.d.ts.map +1 -1
  785. package/types/Pagination.d.ts +1 -1
  786. package/types/Pagination.d.ts.map +1 -1
  787. package/types/Tabs/index.d.ts +7 -3
  788. package/types/Tabs/index.d.ts.map +1 -1
  789. package/types/Toast/index.d.ts +16 -0
  790. package/types/Toast/index.d.ts.map +1 -1
  791. package/types/actions/DestructiveAction.d.ts.map +1 -1
  792. package/types/charts/Axis.d.ts.map +1 -1
  793. package/types/charts/BarChart.d.ts.map +1 -1
  794. package/types/charts/ChartDataView.d.ts +22 -0
  795. package/types/charts/ChartDataView.d.ts.map +1 -0
  796. package/types/charts/ChartSurface.d.ts +4 -1
  797. package/types/charts/ChartSurface.d.ts.map +1 -1
  798. package/types/charts/LineChart.d.ts.map +1 -1
  799. package/types/charts/PieChart.d.ts +1 -1
  800. package/types/charts/PieChart.d.ts.map +1 -1
  801. package/types/charts/Sparkline.d.ts +3 -1
  802. package/types/charts/Sparkline.d.ts.map +1 -1
  803. package/types/charts/accessibility.d.ts +3 -0
  804. package/types/charts/accessibility.d.ts.map +1 -1
  805. package/types/charts/index.d.ts +1 -0
  806. package/types/charts/index.d.ts.map +1 -1
  807. package/types/charts/math.d.ts +12 -0
  808. package/types/charts/math.d.ts.map +1 -1
  809. package/types/charts/series.d.ts +1 -1
  810. package/types/charts/series.d.ts.map +1 -1
  811. package/types/charts/svg.d.ts +18 -2
  812. package/types/charts/svg.d.ts.map +1 -1
  813. package/types/code/CodeBlock/index.d.ts.map +1 -1
  814. package/types/feedback/ConfirmDialog.d.ts.map +1 -1
  815. package/types/feedback/NotifyHost.d.ts +3 -1
  816. package/types/feedback/NotifyHost.d.ts.map +1 -1
  817. package/types/feedback/copy.d.ts +12 -2
  818. package/types/feedback/copy.d.ts.map +1 -1
  819. package/types/feedback/index.d.ts +1 -1
  820. package/types/feedback/index.d.ts.map +1 -1
  821. package/types/feedback/notify.d.ts.map +1 -1
  822. package/types/feedback/route.d.ts +3 -0
  823. package/types/feedback/route.d.ts.map +1 -1
  824. package/types/feedback/store.d.ts +2 -0
  825. package/types/feedback/store.d.ts.map +1 -1
  826. package/types/icons/lucide.d.ts +1 -1
  827. package/types/icons/lucide.d.ts.map +1 -1
  828. package/types/images/SvgUri/index.native.d.ts +4 -3
  829. package/types/images/SvgUri/index.native.d.ts.map +1 -1
  830. package/types/knobImmuneExports.d.ts.map +1 -1
  831. package/types/layouts/PaneScaffold.d.ts +27 -5
  832. package/types/layouts/PaneScaffold.d.ts.map +1 -1
  833. package/types/layouts/index.d.ts +1 -0
  834. package/types/layouts/index.d.ts.map +1 -1
  835. package/types/layouts/page.d.ts +10 -5
  836. package/types/layouts/page.d.ts.map +1 -1
  837. package/types/shared/useKeyboardInset.d.ts +1 -14
  838. package/types/shared/useKeyboardInset.d.ts.map +1 -1
  839. package/types/shared/useKeyboardInset.native.d.ts +16 -0
  840. package/types/shared/useKeyboardInset.native.d.ts.map +1 -0
  841. package/types/tamagui.d.ts +2 -1
  842. package/types/tamagui.d.ts.map +1 -1
  843. package/types/views/Dashboard.d.ts.map +1 -1
  844. package/types/views/Gantt.d.ts +132 -13
  845. package/types/views/Gantt.d.ts.map +1 -1
  846. package/types/views/ganttMath.d.ts +73 -0
  847. package/types/views/ganttMath.d.ts.map +1 -1
  848. package/types/views/index.d.ts +2 -2
  849. package/types/views/index.d.ts.map +1 -1
@@ -4,15 +4,35 @@ import { Skeleton } from "../Skeleton/index.mjs";
4
4
  import { ViewSwitcher } from "../layouts/ViewSwitcher.mjs";
5
5
  import { useDirection } from "../hooks/useDirection.mjs";
6
6
  import { withInterp } from "../shared/t.mjs";
7
- import { Intent, MIN_PRESS_TARGET, ensureKeyboardModalityTracking, formatDayOfMonth, formatMonthYear, hairline, hairlineWidth, keyboardFocusRingProps, useReadableTextOn, useResolvedKnobs, wasKeyboardFocus } from "@multiplatform.one/theme";
7
+ import { Intent, MIN_PRESS_TARGET, ensureKeyboardModalityTracking, formatAbsoluteDate, formatDayOfMonth, formatMonthYear, hairline, hairlineWidth, keyboardFocusRingProps, useReadableTextOn, useResolvedKnobs, wasKeyboardFocus } from "@multiplatform.one/theme";
8
8
  import { Button } from "@multiplatform.one/forms";
9
9
  import { useCallback, useEffect, useMemo, useRef, useState } from "react";
10
10
  import { useTranslation } from "../shared/i18n.mjs";
11
11
  import { ScrollView as RNScrollView } from "react-native-web";
12
12
  import { ScrollView, Text, XStack, YStack, isWeb } from "tamagui";
13
- import { addDays, barGeometry, clampResizeDayDelta, computeGanttRange, dateToX, dayDiff, dxToDayDelta, formatRangeLabel, formatSpanLabel, ganttTaskAccessibleLabel, generateTicks, rangeDays, resizeSpanByDays, shiftSpanByDays, spanInclusiveDays, startOfDay, todayLineX } from "./ganttMath.mjs";
13
+ import { addDays, barGeometry, clampResizeDayDelta, computeGanttRange, dateLineX, dateToX, dayDiff, dxToDayDelta, formatRangeLabel, formatSpanLabel, ganttTaskAccessibleLabel, generateTicks, isBoundedSpan, openBarGeometry, openSpanExtents, openSpanLabelParts, rangeDays, resizeSpanByDays, scrollAnchorX, shiftSpanByDays, spanInclusiveDays, startOfDay, todayLineX } from "./ganttMath.mjs";
14
14
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
15
15
  const CanvasScroller = isWeb ? ScrollView : RNScrollView;
16
+ function boundedSpan(ref) {
17
+ const span = ref.span;
18
+ return isBoundedSpan(span) ? {
19
+ start: span.start,
20
+ end: span.end
21
+ } : null;
22
+ }
23
+ function resolveSpans(task) {
24
+ const list = task.spans;
25
+ if (!list || list.length === 0) return [{
26
+ span: task,
27
+ index: 0,
28
+ key: task.id
29
+ }];
30
+ return list.map((span, index) => ({
31
+ span,
32
+ index,
33
+ key: span.id ?? `${task.id}#${index}`
34
+ }));
35
+ }
16
36
  const DRAG_THRESHOLD_PX = 4;
17
37
  const TOUCH_LONG_PRESS_MS = 300;
18
38
  const TOUCH_SLOP_PX = 8;
@@ -199,6 +219,10 @@ function GanttView({
199
219
  showZoomSwitcher = true,
200
220
  firstDayOfWeek = 0,
201
221
  initialDate,
222
+ markerDate,
223
+ onMarkerDateChange,
224
+ enableMarkerDrag,
225
+ markerLabel,
202
226
  ...stackProps
203
227
  }) {
204
228
  const {
@@ -230,12 +254,18 @@ function GanttView({
230
254
  const space = knobProps.space;
231
255
  const barInset = space === "small" ? 4 : space === "large" ? 9 : 6;
232
256
  const barHeight = Math.max(10, rowHeight - barInset * 2);
257
+ const railHeight = Math.max(4, Math.round(barHeight / 2));
233
258
  const transition = knobProps.transition;
234
259
  const webLayoutTransition = isWeb ? transition : void 0;
235
- const spans = useMemo(() => tasks.map(task => ({
236
- start: task.start,
237
- end: task.end
238
- })), [tasks]);
260
+ const spans = useMemo(() => {
261
+ const flat = [];
262
+ for (const task of tasks) for (const ref of resolveSpans(task)) flat.push(ref.span);
263
+ if (markerDate !== void 0) flat.push({
264
+ start: markerDate,
265
+ end: markerDate
266
+ });
267
+ return openSpanExtents(flat);
268
+ }, [tasks, markerDate]);
239
269
  const range = useMemo(() => computeGanttRange(spans, zoom, /* @__PURE__ */new Date(), firstDayOfWeek), [spans, zoom, firstDayOfWeek]);
240
270
  const chartWidth = rangeDays(range) * pxPerDay;
241
271
  const ticks = useMemo(() => generateTicks(range, zoom, pxPerDay, firstDayOfWeek), [range, zoom, pxPerDay, firstDayOfWeek]);
@@ -251,16 +281,16 @@ function GanttView({
251
281
  const hScrollRef = useRef(null);
252
282
  const axisScrollRef = useRef(null);
253
283
  const canvasViewportRef = useRef(null);
254
- const pendingRtlAnchorRef = useRef(null);
284
+ const pendingAnchorRef = useRef(null);
255
285
  const scrollToDate = useCallback((date, animated) => {
256
- const ltrX = Math.max(0, dateToX(date, range.start, pxPerDay) - labelWidth);
257
- let x = ltrX;
258
- if (rtl) {
259
- const viewport = canvasViewportRef.current;
260
- if (viewport === null) pendingRtlAnchorRef.current = date;
261
- const max = Math.max(0, chartWidth - (viewport ?? 0));
262
- x = Math.min(max, Math.max(0, max - ltrX));
263
- }
286
+ const viewportWidth = canvasViewportRef.current;
287
+ if (viewportWidth === null) pendingAnchorRef.current = date;
288
+ const x = scrollAnchorX(date, range.start, pxPerDay, {
289
+ labelWidth,
290
+ chartWidth,
291
+ viewportWidth,
292
+ rtl
293
+ });
264
294
  hScrollRef.current?.scrollTo?.({
265
295
  x,
266
296
  animated
@@ -284,11 +314,11 @@ function GanttView({
284
314
  }, []);
285
315
  const handleCanvasLayout = useCallback(event => {
286
316
  const width = event?.nativeEvent?.layout?.width;
287
- if (typeof width !== "number") return;
317
+ if (typeof width !== "number" || !Number.isFinite(width) || width <= 0) return;
288
318
  canvasViewportRef.current = width;
289
- const pending = pendingRtlAnchorRef.current;
319
+ const pending = pendingAnchorRef.current;
290
320
  if (pending) {
291
- pendingRtlAnchorRef.current = null;
321
+ pendingAnchorRef.current = null;
292
322
  scrollToDateRef.current(pending, false);
293
323
  }
294
324
  }, []);
@@ -308,16 +338,13 @@ function GanttView({
308
338
  suppressClickRef.current = false;
309
339
  }, 0);
310
340
  }, []);
311
- const commitDrag = useCallback((task, dayDelta) => {
312
- if (dayDelta !== 0) {
313
- onItemMove?.(task, shiftSpanByDays({
314
- start: task.start,
315
- end: task.end
316
- }, dayDelta));
317
- }
341
+ const commitDrag = useCallback((task, ref, span, dayDelta) => {
342
+ if (dayDelta !== 0) onItemMove?.(task, shiftSpanByDays(span, dayDelta), ref);
318
343
  }, [onItemMove]);
319
- const handleBarPointerDown = useCallback((task, e) => {
344
+ const handleBarPointerDown = useCallback((task, ref, e) => {
320
345
  if (!webDragEnabled) return;
346
+ const span = boundedSpan(ref);
347
+ if (!span) return;
321
348
  if (e.button !== void 0 && e.button !== 0) return;
322
349
  e.stopPropagation?.();
323
350
  dragCleanupRef.current?.();
@@ -336,7 +363,7 @@ function GanttView({
336
363
  prevUserSelect = document.body.style.userSelect;
337
364
  document.body.style.userSelect = "none";
338
365
  setDrag({
339
- id: task.id,
366
+ key: ref.key,
340
367
  dx,
341
368
  dayDelta: toDayDelta(dx)
342
369
  });
@@ -365,7 +392,7 @@ function GanttView({
365
392
  return;
366
393
  }
367
394
  setDrag({
368
- id: task.id,
395
+ key: ref.key,
369
396
  dx,
370
397
  dayDelta: toDayDelta(dx)
371
398
  });
@@ -376,7 +403,7 @@ function GanttView({
376
403
  teardown();
377
404
  if (!wasActive) return;
378
405
  suppressNextClick();
379
- commitDrag(task, dayDelta);
406
+ commitDrag(task, ref, span, dayDelta);
380
407
  };
381
408
  const onKey = ke => {
382
409
  if (ke.key !== "Escape" || !active) return;
@@ -400,10 +427,14 @@ function GanttView({
400
427
  window.addEventListener("keydown", onKey, true);
401
428
  dragCleanupRef.current = teardown;
402
429
  }, [webDragEnabled, pxPerDay, commitDrag, suppressNextClick]);
403
- const handleNativeGrant = useCallback((task, e) => {
430
+ const handleNativeGrant = useCallback((task, ref, e) => {
404
431
  if (!nativeDragEnabled) return;
432
+ const span = boundedSpan(ref);
433
+ if (!span) return;
405
434
  const session = {
406
435
  task,
436
+ ref,
437
+ span,
407
438
  startX: e.nativeEvent?.pageX ?? 0,
408
439
  dragging: false,
409
440
  liftTimer: null
@@ -413,7 +444,7 @@ function GanttView({
413
444
  if (nativeSessionRef.current !== session) return;
414
445
  session.dragging = true;
415
446
  setDrag({
416
- id: task.id,
447
+ key: ref.key,
417
448
  dx: 0,
418
449
  dayDelta: 0
419
450
  });
@@ -432,7 +463,7 @@ function GanttView({
432
463
  return;
433
464
  }
434
465
  setDrag({
435
- id: session.task.id,
466
+ key: session.ref.key,
436
467
  dx,
437
468
  dayDelta: dirSignRef.current * dxToDayDelta(dx, pxPerDay)
438
469
  });
@@ -448,7 +479,7 @@ function GanttView({
448
479
  }
449
480
  const dayDelta = dirSignRef.current * dxToDayDelta((e.nativeEvent?.pageX ?? 0) - session.startX, pxPerDay);
450
481
  setDrag(null);
451
- commitDrag(session.task, dayDelta);
482
+ commitDrag(session.task, session.ref, session.span, dayDelta);
452
483
  }, [onItemPress, pxPerDay, commitDrag]);
453
484
  const handleNativeTerminate = useCallback(() => {
454
485
  const session = nativeSessionRef.current;
@@ -456,15 +487,13 @@ function GanttView({
456
487
  nativeSessionRef.current = null;
457
488
  setDrag(null);
458
489
  }, []);
459
- const handleResizePointerDown = useCallback((task, edge, e) => {
490
+ const handleResizePointerDown = useCallback((task, ref, edge, e) => {
460
491
  if (!webDragEnabled) return;
492
+ const span = boundedSpan(ref);
493
+ if (!span) return;
461
494
  if (e.button !== void 0 && e.button !== 0) return;
462
495
  e.stopPropagation?.();
463
496
  dragCleanupRef.current?.();
464
- const span = {
465
- start: task.start,
466
- end: task.end
467
- };
468
497
  const maxShrinkPx = (spanInclusiveDays(span) - 1) * pxPerDay;
469
498
  const startX = e.clientX;
470
499
  const sign = dirSignRef.current;
@@ -495,7 +524,7 @@ function GanttView({
495
524
  document.body.style.userSelect = "none";
496
525
  }
497
526
  setResize({
498
- id: task.id,
527
+ key: ref.key,
499
528
  edge,
500
529
  logicalDx: clampLogicalDx(dx),
501
530
  dayDelta: toDayDelta(dx)
@@ -507,9 +536,7 @@ function GanttView({
507
536
  teardown();
508
537
  if (!wasActive) return;
509
538
  suppressNextClick();
510
- if (dayDelta !== 0) {
511
- onItemMove?.(task, resizeSpanByDays(span, edge, dayDelta));
512
- }
539
+ if (dayDelta !== 0) onItemMove?.(task, resizeSpanByDays(span, edge, dayDelta), ref);
513
540
  };
514
541
  const onKey = ke => {
515
542
  if (ke.key !== "Escape" || !active) return;
@@ -527,10 +554,11 @@ function GanttView({
527
554
  window.addEventListener("keydown", onKey, true);
528
555
  dragCleanupRef.current = teardown;
529
556
  }, [webDragEnabled, pxPerDay, onItemMove, suppressNextClick]);
530
- const getBarDragProps = useCallback(task => {
557
+ const getBarDragProps = useCallback((task, ref) => {
558
+ if (!boundedSpan(ref)) return {};
531
559
  if (webDragEnabled) {
532
560
  return {
533
- onPointerDown: e => handleBarPointerDown(task, e)
561
+ onPointerDown: e => handleBarPointerDown(task, ref, e)
534
562
  };
535
563
  }
536
564
  if (nativeDragEnabled) {
@@ -539,7 +567,7 @@ function GanttView({
539
567
  onStartShouldSetResponder: () => true,
540
568
  onMoveShouldSetResponder: () => true,
541
569
  onResponderTerminationRequest: () => !nativeSessionRef.current?.dragging,
542
- onResponderGrant: e => handleNativeGrant(task, e),
570
+ onResponderGrant: e => handleNativeGrant(task, ref, e),
543
571
  onResponderMove: handleNativeMove,
544
572
  onResponderRelease: handleNativeRelease,
545
573
  onResponderTerminate: handleNativeTerminate
@@ -547,45 +575,205 @@ function GanttView({
547
575
  }
548
576
  return {};
549
577
  }, [webDragEnabled, nativeDragEnabled, handleBarPointerDown, handleNativeGrant, handleNativeMove, handleNativeRelease, handleNativeTerminate]);
550
- const handleBarKeyboardMove = useCallback((task, key, shiftKey) => {
578
+ const handleBarKeyboardMove = useCallback((task, ref, key, shiftKey) => {
579
+ const span = boundedSpan(ref);
580
+ if (!span) return;
551
581
  const physical = key === "ArrowRight" ? 1 : -1;
552
582
  const dayDelta = physical * dirSignRef.current * (shiftKey ? 7 : 1);
553
- const next = shiftSpanByDays({
554
- start: task.start,
555
- end: task.end
556
- }, dayDelta);
557
- onItemMove?.(task, next);
583
+ const next = shiftSpanByDays(span, dayDelta);
584
+ onItemMove?.(task, next, ref);
558
585
  setAnnouncement(withInterp(t("{{title}} moved to {{range}}"), {
559
- title: task.title,
586
+ title: ref.span.title ?? task.title,
560
587
  range: formatSpanLabel(next)
561
588
  }));
562
589
  }, [onItemMove, t]);
563
- const renderBar = task => {
564
- const geom = barGeometry(task, range.start, pxPerDay);
565
- const activeDrag = drag && drag.id === task.id ? drag : null;
590
+ const markerDragEnabled = (enableMarkerDrag ?? onMarkerDateChange !== void 0) && onMarkerDateChange !== void 0;
591
+ const [markerDragging, setMarkerDragging] = useState(false);
592
+ const markerGrantRef = useRef(null);
593
+ const markerEmittedRef = useRef(null);
594
+ const markerSessionRef = useRef(null);
595
+ const emitMarker = useCallback(dayDelta => {
596
+ const base = markerGrantRef.current;
597
+ if (!base) return;
598
+ const next = addDays(base, dayDelta);
599
+ if (markerEmittedRef.current === next.getTime()) return;
600
+ markerEmittedRef.current = next.getTime();
601
+ onMarkerDateChange?.(next);
602
+ }, [onMarkerDateChange]);
603
+ const openMarkerSession = useCallback(() => {
604
+ if (markerDate === void 0) return false;
605
+ const base = startOfDay(markerDate);
606
+ markerGrantRef.current = base;
607
+ markerEmittedRef.current = base.getTime();
608
+ return true;
609
+ }, [markerDate]);
610
+ const handleMarkerPointerDown = useCallback(e => {
611
+ if (!markerDragEnabled || !hasDom) return;
612
+ if (e.button !== void 0 && e.button !== 0) return;
613
+ if (!openMarkerSession()) return;
614
+ e.stopPropagation?.();
615
+ dragCleanupRef.current?.();
616
+ const startX = e.clientX;
617
+ let active = false;
618
+ let ended = false;
619
+ let prevUserSelect = "";
620
+ const toDayDelta = dx => dirSignRef.current * dxToDayDelta(dx, pxPerDay);
621
+ const teardown = () => {
622
+ if (ended) return;
623
+ ended = true;
624
+ window.removeEventListener("pointermove", onMove);
625
+ window.removeEventListener("pointerup", onUp);
626
+ window.removeEventListener("keydown", onKey, true);
627
+ if (active) document.body.style.userSelect = prevUserSelect;
628
+ setMarkerDragging(false);
629
+ markerGrantRef.current = null;
630
+ dragCleanupRef.current = null;
631
+ };
632
+ const onMove = me => {
633
+ const dx = me.clientX - startX;
634
+ if (!active) {
635
+ if (Math.abs(dx) < DRAG_THRESHOLD_PX) return;
636
+ active = true;
637
+ prevUserSelect = document.body.style.userSelect;
638
+ document.body.style.userSelect = "none";
639
+ setMarkerDragging(true);
640
+ }
641
+ emitMarker(toDayDelta(dx));
642
+ };
643
+ const onUp = () => teardown();
644
+ const onKey = ke => {
645
+ if (ke.key !== "Escape" || !active) return;
646
+ ke.stopPropagation();
647
+ emitMarker(0);
648
+ teardown();
649
+ };
650
+ window.addEventListener("pointermove", onMove);
651
+ window.addEventListener("pointerup", onUp);
652
+ window.addEventListener("keydown", onKey, true);
653
+ dragCleanupRef.current = teardown;
654
+ }, [markerDragEnabled, hasDom, openMarkerSession, emitMarker, pxPerDay]);
655
+ const markerNativeProps = useMemo(() => {
656
+ if (!markerDragEnabled || isWeb) return {};
657
+ return {
658
+ onStartShouldSetResponder: () => true,
659
+ onMoveShouldSetResponder: () => true,
660
+ onResponderTerminationRequest: () => false,
661
+ onResponderGrant: e => {
662
+ if (!openMarkerSession()) return;
663
+ markerSessionRef.current = {
664
+ startX: e?.nativeEvent?.pageX ?? 0
665
+ };
666
+ setMarkerDragging(true);
667
+ },
668
+ onResponderMove: e => {
669
+ const session = markerSessionRef.current;
670
+ if (!session) return;
671
+ const dx = (e?.nativeEvent?.pageX ?? 0) - session.startX;
672
+ emitMarker(dirSignRef.current * dxToDayDelta(dx, pxPerDay));
673
+ },
674
+ onResponderRelease: () => {
675
+ markerSessionRef.current = null;
676
+ markerGrantRef.current = null;
677
+ setMarkerDragging(false);
678
+ },
679
+ onResponderTerminate: () => {
680
+ markerSessionRef.current = null;
681
+ markerGrantRef.current = null;
682
+ setMarkerDragging(false);
683
+ }
684
+ };
685
+ }, [markerDragEnabled, openMarkerSession, emitMarker, pxPerDay]);
686
+ const handleMarkerKeyboardMove = useCallback((key, shiftKey) => {
687
+ if (!markerDragEnabled || markerDate === void 0) return;
688
+ const physical = key === "ArrowRight" ? 1 : -1;
689
+ const dayDelta = physical * dirSignRef.current * (shiftKey ? 7 : 1);
690
+ const next = addDays(startOfDay(markerDate), dayDelta);
691
+ markerEmittedRef.current = next.getTime();
692
+ onMarkerDateChange?.(next);
693
+ setAnnouncement(withInterp(t("Marker moved to {{date}}"), {
694
+ date: formatAbsoluteDate(next)
695
+ }));
696
+ }, [markerDragEnabled, markerDate, onMarkerDateChange, t]);
697
+ const markerX = markerDate === void 0 ? null : dateLineX(range, pxPerDay, markerDate);
698
+ const markerName = markerLabel ?? t("Marker");
699
+ const spanAccessibleName = (title, span) => {
700
+ if (isBoundedSpan(span)) {
701
+ return ganttTaskAccessibleLabel({
702
+ title,
703
+ start: span.start,
704
+ end: span.end
705
+ });
706
+ }
707
+ const parts = openSpanLabelParts(span);
708
+ if (parts.start !== void 0) {
709
+ return withInterp(t("{{title}}, from {{start}}, no end"), {
710
+ title,
711
+ start: parts.start
712
+ });
713
+ }
714
+ if (parts.end !== void 0) {
715
+ return withInterp(t("{{title}}, until {{end}}, no start"), {
716
+ title,
717
+ end: parts.end
718
+ });
719
+ }
720
+ return withInterp(t("{{title}}, always, no dates"), {
721
+ title
722
+ });
723
+ };
724
+ const renderBar = (task, ref) => {
725
+ const span = ref.span;
726
+ const barKey = ref.key;
727
+ const bounded = boundedSpan(ref);
728
+ const geom = openBarGeometry(span, range, pxPerDay);
729
+ const activeDrag = drag && drag.key === barKey ? drag : null;
566
730
  const dragging = activeDrag !== null;
567
- const activeResize = resize && resize.id === task.id ? resize : null;
731
+ const activeResize = resize && resize.key === barKey ? resize : null;
568
732
  const resizing = activeResize !== null;
569
733
  const sessionLive = dragging || resizing;
570
734
  const dayDelta = activeDrag?.dayDelta ?? activeResize?.dayDelta ?? 0;
571
- const span = {
572
- start: task.start,
573
- end: task.end
574
- };
575
- const previewSpan = activeDrag ? shiftSpanByDays(span, dayDelta) : activeResize ? resizeSpanByDays(span, activeResize.edge, activeResize.dayDelta) : null;
735
+ const previewSpan = bounded && activeDrag ? shiftSpanByDays(bounded, dayDelta) : bounded && activeResize ? resizeSpanByDays(bounded, activeResize.edge, activeResize.dayDelta) : null;
576
736
  const previewGeom = previewSpan ? barGeometry(previewSpan, range.start, pxPerDay) : null;
577
737
  const liveWidth = activeResize ? Math.max(6, activeResize.edge === "end" ? geom.width + activeResize.logicalDx : geom.width - activeResize.logicalDx) : geom.width;
578
738
  const liveTransformX = activeDrag ? activeDrag.dx : activeResize && activeResize.edge === "start" ? activeResize.logicalDx * dirSign : 0;
579
- const fill = task.color ?? (task.intent && task.intent !== "accent" ? "$color9" : "$accentBackground");
580
- const progress = clampProgress(task.progress);
581
- const showLabel = liveWidth >= 44;
582
- const isBarFocused = focusedBarId === task.id;
739
+ const barColor = span.color ?? task.color;
740
+ const barIntent = span.intent ?? task.intent;
741
+ const barTitle = span.title ?? task.title;
742
+ const fill = barColor ?? (barIntent && barIntent !== "accent" ? "$color9" : "$accentBackground");
743
+ const progress = bounded ? clampProgress(span.progress ?? task.progress) : null;
744
+ const showLabel = !geom.eternal && liveWidth >= 44;
745
+ const isBarFocused = focusedBarId === barKey;
583
746
  const showHandles = hoveredId === task.id || sessionLive;
584
- const handleWidth = geom.width >= 24 ? 8 : geom.width >= 12 ? 4 : 0;
747
+ const handleWidth = bounded ? geom.width >= 24 ? 8 : geom.width >= 12 ? 4 : 0 : 0;
585
748
  const physicalLeftEdge = rtl ? "end" : "start";
586
749
  const physicalRightEdge = rtl ? "start" : "end";
750
+ const openStartSide = rtl ? {
751
+ right: 2
752
+ } : {
753
+ left: 2
754
+ };
755
+ const openEndSide = rtl ? {
756
+ left: 2
757
+ } : {
758
+ right: 2
759
+ };
760
+ const squareStart = rtl ? {
761
+ borderTopRightRadius: 0,
762
+ borderBottomRightRadius: 0
763
+ } : {
764
+ borderTopLeftRadius: 0,
765
+ borderBottomLeftRadius: 0
766
+ };
767
+ const squareEnd = rtl ? {
768
+ borderTopLeftRadius: 0,
769
+ borderBottomLeftRadius: 0
770
+ } : {
771
+ borderTopRightRadius: 0,
772
+ borderBottomRightRadius: 0
773
+ };
774
+ const height2 = geom.eternal ? railHeight : barHeight;
587
775
  return /* @__PURE__ */jsxs(BarIntentWrap, {
588
- intent: task.color ? void 0 : task.intent,
776
+ intent: barColor ? void 0 : barIntent,
589
777
  children: [sessionLive && dayDelta !== 0 && previewGeom && /* @__PURE__ */jsx(YStack, {
590
778
  position: "absolute",
591
779
  ...canvasPos(previewGeom.x),
@@ -599,40 +787,42 @@ function GanttView({
599
787
  opacity: 0.25,
600
788
  pointerEvents: "none",
601
789
  ...{
602
- "data-gantt-drop-preview": task.id
790
+ "data-gantt-drop-preview": barKey
603
791
  }
604
792
  }), /* @__PURE__ */jsxs(YStack, {
605
793
  position: "absolute",
606
794
  ...canvasPos(geom.x),
607
795
  width: liveWidth,
608
- top: barInset,
609
- height: barHeight,
796
+ top: barInset + (barHeight - height2) / 2,
797
+ height: height2,
610
798
  x: liveTransformX,
611
799
  zIndex: sessionLive ? 3 : 1,
612
800
  ...knobProps.borderRadius,
801
+ ...(geom.openStart ? squareStart : null),
802
+ ...(geom.openEnd ? squareEnd : null),
613
803
  backgroundColor: fill,
614
- opacity: sessionLive ? 0.85 : 1,
804
+ opacity: sessionLive ? 0.85 : geom.eternal ? 0.55 : 1,
615
805
  hoverStyle: {
616
- opacity: sessionLive ? 0.85 : 0.9
806
+ opacity: sessionLive ? 0.85 : geom.eternal ? 0.7 : 0.9
617
807
  },
618
808
  pressStyle: {
619
809
  opacity: 0.8
620
810
  },
621
- cursor: webDragEnabled ? "grab" : onItemPress ? "pointer" : void 0,
811
+ cursor: bounded && webDragEnabled ? "grab" : onItemPress ? "pointer" : void 0,
622
812
  justifyContent: "center",
623
813
  transition: sessionLive ? void 0 : webLayoutTransition,
624
814
  role: "button",
625
815
  tabIndex: 0,
626
- "aria-label": ganttTaskAccessibleLabel(task),
816
+ "aria-label": spanAccessibleName(barTitle, span),
627
817
  ...(isBarFocused && barKeyboardRing ? keyboardFocusRingProps : {
628
818
  outlineWidth: 0
629
819
  }),
630
820
  onFocus: () => {
631
- setFocusedBarId(task.id);
821
+ setFocusedBarId(barKey);
632
822
  setBarKeyboardRing(wasKeyboardFocus());
633
823
  },
634
824
  onBlur: () => {
635
- setFocusedBarId(id => id === task.id ? null : id);
825
+ setFocusedBarId(id => id === barKey ? null : id);
636
826
  setBarKeyboardRing(false);
637
827
  },
638
828
  ...{
@@ -646,17 +836,23 @@ function GanttView({
646
836
  onItemPress?.(task);
647
837
  return;
648
838
  }
649
- if ((ke.key === "ArrowLeft" || ke.key === "ArrowRight") && dragEnabled) {
839
+ if ((ke.key === "ArrowLeft" || ke.key === "ArrowRight") && dragEnabled && bounded) {
650
840
  ke.preventDefault?.();
651
841
  ke.stopPropagation?.();
652
- handleBarKeyboardMove(task, ke.key, ke.shiftKey === true);
842
+ handleBarKeyboardMove(task, ref, ke.key, ke.shiftKey === true);
653
843
  }
654
844
  },
655
845
  ...{
656
- "data-gantt-bar": task.id
846
+ "data-gantt-bar": barKey
657
847
  },
658
- ...(nativeDragEnabled ? null : getBarDragProps(task)),
659
- onPress: nativeDragEnabled ? void 0 : e => {
848
+ ...(geom.eternal ? {
849
+ "data-gantt-rail": "true"
850
+ } : null),
851
+ ...(geom.openStart || geom.openEnd ? {
852
+ "data-gantt-span-open": geom.eternal ? "both" : geom.openStart ? "start" : "end"
853
+ } : null),
854
+ ...(nativeDragEnabled ? null : getBarDragProps(task, ref)),
855
+ onPress: nativeDragEnabled && bounded ? void 0 : e => {
660
856
  e?.stopPropagation?.();
661
857
  if (suppressClickRef.current) return;
662
858
  onItemPress?.(task);
@@ -678,8 +874,32 @@ function GanttView({
678
874
  "data-gantt-progress": String(progress)
679
875
  }
680
876
  }), showLabel && /* @__PURE__ */jsx(GanttBarLabel, {
681
- title: task.title,
877
+ title: barTitle,
682
878
  fill
879
+ }), geom.openStart && /* @__PURE__ */jsx(Text, {
880
+ position: "absolute",
881
+ ...openStartSide,
882
+ ...knobProps.label,
883
+ color: "$color12",
884
+ opacity: 0.75,
885
+ pointerEvents: "none",
886
+ "aria-hidden": true,
887
+ ...{
888
+ "data-gantt-open-start": "true"
889
+ },
890
+ children: rtl ? "\xBB" : "\xAB"
891
+ }), geom.openEnd && /* @__PURE__ */jsx(Text, {
892
+ position: "absolute",
893
+ ...openEndSide,
894
+ ...knobProps.label,
895
+ color: "$color12",
896
+ opacity: 0.75,
897
+ pointerEvents: "none",
898
+ "aria-hidden": true,
899
+ ...{
900
+ "data-gantt-open-end": "true"
901
+ },
902
+ children: rtl ? "\xAB" : "\xBB"
683
903
  }), previewSpan && /* @__PURE__ */jsx(XStack, {
684
904
  position: "absolute",
685
905
  top: -(axisHeight - 6),
@@ -714,7 +934,7 @@ function GanttView({
714
934
  cursor: "ew-resize",
715
935
  backgroundColor: showHandles ? "$color12" : "transparent",
716
936
  opacity: showHandles ? 0.28 : 0,
717
- onPointerDown: e => handleResizePointerDown(task, physicalLeftEdge, e),
937
+ onPointerDown: e => handleResizePointerDown(task, ref, physicalLeftEdge, e),
718
938
  ...{
719
939
  "data-gantt-resize-handle": physicalLeftEdge
720
940
  }
@@ -727,24 +947,24 @@ function GanttView({
727
947
  cursor: "ew-resize",
728
948
  backgroundColor: showHandles ? "$color12" : "transparent",
729
949
  opacity: showHandles ? 0.28 : 0,
730
- onPointerDown: e => handleResizePointerDown(task, physicalRightEdge, e),
950
+ onPointerDown: e => handleResizePointerDown(task, ref, physicalRightEdge, e),
731
951
  ...{
732
952
  "data-gantt-resize-handle": physicalRightEdge
733
953
  }
734
954
  })]
735
- }), nativeDragEnabled && /* @__PURE__ */jsx(YStack, {
955
+ }), nativeDragEnabled && bounded && /* @__PURE__ */jsx(YStack, {
736
956
  position: "absolute",
737
957
  top: 0,
738
958
  left: 0,
739
959
  right: 0,
740
960
  bottom: 0,
741
961
  zIndex: 5,
742
- ...getBarDragProps(task)
962
+ ...getBarDragProps(task, ref)
743
963
  })]
744
964
  })]
745
- }, task.id);
965
+ }, barKey);
746
966
  };
747
- const scrollLocked = drag !== null || resize !== null;
967
+ const scrollLocked = drag !== null || resize !== null || markerDragging;
748
968
  const majorGridColor = "$borderColor";
749
969
  const minorGridColor = componentColors.divider;
750
970
  const scrollerDirection = {
@@ -893,6 +1113,53 @@ function GanttView({
893
1113
  height: hairlineWidth,
894
1114
  backgroundColor: componentColors.divider,
895
1115
  pointerEvents: "none"
1116
+ }), markerX !== null && /* @__PURE__ */jsxs(Fragment, {
1117
+ children: [/* @__PURE__ */jsx(YStack, {
1118
+ position: "absolute",
1119
+ ...canvasPos(markerX - 1),
1120
+ top: 0,
1121
+ bottom: 0,
1122
+ width: 2,
1123
+ backgroundColor: "$color12",
1124
+ opacity: 0.9,
1125
+ pointerEvents: "none"
1126
+ }), /* @__PURE__ */jsx(YStack, {
1127
+ position: "absolute",
1128
+ ...canvasPos(markerX - 12),
1129
+ top: 0,
1130
+ bottom: 0,
1131
+ width: 24,
1132
+ alignItems: "center",
1133
+ justifyContent: "flex-end",
1134
+ zIndex: 4,
1135
+ cursor: markerDragEnabled ? "ew-resize" : void 0,
1136
+ role: "slider",
1137
+ tabIndex: markerDragEnabled ? 0 : -1,
1138
+ "aria-label": markerName,
1139
+ "aria-valuetext": markerDate ? formatAbsoluteDate(markerDate) : void 0,
1140
+ ...(markerDragEnabled && hasDom ? {
1141
+ onPointerDown: e => handleMarkerPointerDown(e)
1142
+ } : null),
1143
+ ...markerNativeProps,
1144
+ onKeyDown: ke => {
1145
+ if (ke.key !== "ArrowLeft" && ke.key !== "ArrowRight") return;
1146
+ ke.preventDefault?.();
1147
+ ke.stopPropagation?.();
1148
+ handleMarkerKeyboardMove(ke.key, ke.shiftKey === true);
1149
+ },
1150
+ ...{
1151
+ "data-gantt-marker-handle": "true"
1152
+ },
1153
+ children: /* @__PURE__ */jsx(YStack, {
1154
+ width: 11,
1155
+ height: 9,
1156
+ marginBottom: 2,
1157
+ borderRadius: 2,
1158
+ backgroundColor: "$color12",
1159
+ opacity: markerDragging ? 1 : 0.9,
1160
+ pointerEvents: "none"
1161
+ })
1162
+ })]
896
1163
  })]
897
1164
  })
898
1165
  })]
@@ -909,9 +1176,11 @@ function GanttView({
909
1176
  ...hairlineEnd,
910
1177
  borderColor: "$borderColor",
911
1178
  children: tasks.map((task, index) => {
912
- const selected = focusedBarId === task.id;
1179
+ const refs = resolveSpans(task);
1180
+ const selected = refs.some(ref => ref.key === focusedBarId);
913
1181
  const hovered = hoveredId === task.id;
914
1182
  const last = index === tasks.length - 1;
1183
+ const firstKey = refs[0]?.key ?? task.id;
915
1184
  return /* @__PURE__ */jsx(XStack, {
916
1185
  height: rowHeight,
917
1186
  alignItems: "center",
@@ -926,11 +1195,11 @@ function GanttView({
926
1195
  },
927
1196
  onPress: onItemPress ? () => {
928
1197
  if (suppressClickRef.current) return;
929
- setFocusedBarId(task.id);
1198
+ setFocusedBarId(firstKey);
930
1199
  setBarKeyboardRing(false);
931
1200
  onItemPress(task);
932
1201
  } : () => {
933
- setFocusedBarId(task.id);
1202
+ setFocusedBarId(firstKey);
934
1203
  setBarKeyboardRing(false);
935
1204
  },
936
1205
  ...{
@@ -1001,7 +1270,8 @@ function GanttView({
1001
1270
  backgroundColor: tick.major ? majorGridColor : minorGridColor,
1002
1271
  pointerEvents: "none"
1003
1272
  }, tick.date.toISOString())), tasks.map((task, index) => {
1004
- const selected = focusedBarId === task.id;
1273
+ const refs = resolveSpans(task);
1274
+ const selected = refs.some(ref => ref.key === focusedBarId);
1005
1275
  const hovered = hoveredId === task.id;
1006
1276
  const last = index === tasks.length - 1;
1007
1277
  return /* @__PURE__ */jsx(XStack, {
@@ -1017,8 +1287,21 @@ function GanttView({
1017
1287
  ...{
1018
1288
  "data-gantt-row": task.id
1019
1289
  },
1020
- children: renderBar(task)
1290
+ children: refs.map(ref => renderBar(task, ref))
1021
1291
  }, task.id);
1292
+ }), markerX !== null && /* @__PURE__ */jsx(YStack, {
1293
+ position: "absolute",
1294
+ ...canvasPos(markerX - 1),
1295
+ top: 0,
1296
+ bottom: 0,
1297
+ width: 2,
1298
+ backgroundColor: "$color12",
1299
+ opacity: markerDragging ? 0.95 : 0.75,
1300
+ pointerEvents: "none",
1301
+ zIndex: 2,
1302
+ ...{
1303
+ "data-gantt-marker": "true"
1304
+ }
1022
1305
  }), todayX !== null && /* @__PURE__ */jsx(YStack, {
1023
1306
  position: "absolute",
1024
1307
  ...canvasPos(todayX - 1),