@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
@@ -40,6 +40,26 @@ var import_tamagui = require("tamagui");
40
40
  var import_ganttMath = require("./ganttMath.cjs");
41
41
  var import_jsx_runtime = require("react/jsx-runtime");
42
42
  const CanvasScroller = import_tamagui.isWeb ? import_tamagui.ScrollView : import_react_native.ScrollView;
43
+ function boundedSpan(ref) {
44
+ const span = ref.span;
45
+ return (0, import_ganttMath.isBoundedSpan)(span) ? {
46
+ start: span.start,
47
+ end: span.end
48
+ } : null;
49
+ }
50
+ function resolveSpans(task) {
51
+ const list = task.spans;
52
+ if (!list || list.length === 0) return [{
53
+ span: task,
54
+ index: 0,
55
+ key: task.id
56
+ }];
57
+ return list.map((span, index) => ({
58
+ span,
59
+ index,
60
+ key: span.id ?? `${task.id}#${index}`
61
+ }));
62
+ }
43
63
  const DRAG_THRESHOLD_PX = 4;
44
64
  const TOUCH_LONG_PRESS_MS = 300;
45
65
  const TOUCH_SLOP_PX = 8;
@@ -226,6 +246,10 @@ function GanttView({
226
246
  showZoomSwitcher = true,
227
247
  firstDayOfWeek = 0,
228
248
  initialDate,
249
+ markerDate,
250
+ onMarkerDateChange,
251
+ enableMarkerDrag,
252
+ markerLabel,
229
253
  ...stackProps
230
254
  }) {
231
255
  const {
@@ -257,12 +281,18 @@ function GanttView({
257
281
  const space = knobProps.space;
258
282
  const barInset = space === "small" ? 4 : space === "large" ? 9 : 6;
259
283
  const barHeight = Math.max(10, rowHeight - barInset * 2);
284
+ const railHeight = Math.max(4, Math.round(barHeight / 2));
260
285
  const transition = knobProps.transition;
261
286
  const webLayoutTransition = import_tamagui.isWeb ? transition : void 0;
262
- const spans = (0, import_react.useMemo)(() => tasks.map(task => ({
263
- start: task.start,
264
- end: task.end
265
- })), [tasks]);
287
+ const spans = (0, import_react.useMemo)(() => {
288
+ const flat = [];
289
+ for (const task of tasks) for (const ref of resolveSpans(task)) flat.push(ref.span);
290
+ if (markerDate !== void 0) flat.push({
291
+ start: markerDate,
292
+ end: markerDate
293
+ });
294
+ return (0, import_ganttMath.openSpanExtents)(flat);
295
+ }, [tasks, markerDate]);
266
296
  const range = (0, import_react.useMemo)(() => (0, import_ganttMath.computeGanttRange)(spans, zoom, /* @__PURE__ */new Date(), firstDayOfWeek), [spans, zoom, firstDayOfWeek]);
267
297
  const chartWidth = (0, import_ganttMath.rangeDays)(range) * pxPerDay;
268
298
  const ticks = (0, import_react.useMemo)(() => (0, import_ganttMath.generateTicks)(range, zoom, pxPerDay, firstDayOfWeek), [range, zoom, pxPerDay, firstDayOfWeek]);
@@ -278,16 +308,16 @@ function GanttView({
278
308
  const hScrollRef = (0, import_react.useRef)(null);
279
309
  const axisScrollRef = (0, import_react.useRef)(null);
280
310
  const canvasViewportRef = (0, import_react.useRef)(null);
281
- const pendingRtlAnchorRef = (0, import_react.useRef)(null);
311
+ const pendingAnchorRef = (0, import_react.useRef)(null);
282
312
  const scrollToDate = (0, import_react.useCallback)((date, animated) => {
283
- const ltrX = Math.max(0, (0, import_ganttMath.dateToX)(date, range.start, pxPerDay) - labelWidth);
284
- let x = ltrX;
285
- if (rtl) {
286
- const viewport = canvasViewportRef.current;
287
- if (viewport === null) pendingRtlAnchorRef.current = date;
288
- const max = Math.max(0, chartWidth - (viewport ?? 0));
289
- x = Math.min(max, Math.max(0, max - ltrX));
290
- }
313
+ const viewportWidth = canvasViewportRef.current;
314
+ if (viewportWidth === null) pendingAnchorRef.current = date;
315
+ const x = (0, import_ganttMath.scrollAnchorX)(date, range.start, pxPerDay, {
316
+ labelWidth,
317
+ chartWidth,
318
+ viewportWidth,
319
+ rtl
320
+ });
291
321
  hScrollRef.current?.scrollTo?.({
292
322
  x,
293
323
  animated
@@ -311,11 +341,11 @@ function GanttView({
311
341
  }, []);
312
342
  const handleCanvasLayout = (0, import_react.useCallback)(event => {
313
343
  const width = event?.nativeEvent?.layout?.width;
314
- if (typeof width !== "number") return;
344
+ if (typeof width !== "number" || !Number.isFinite(width) || width <= 0) return;
315
345
  canvasViewportRef.current = width;
316
- const pending = pendingRtlAnchorRef.current;
346
+ const pending = pendingAnchorRef.current;
317
347
  if (pending) {
318
- pendingRtlAnchorRef.current = null;
348
+ pendingAnchorRef.current = null;
319
349
  scrollToDateRef.current(pending, false);
320
350
  }
321
351
  }, []);
@@ -335,16 +365,13 @@ function GanttView({
335
365
  suppressClickRef.current = false;
336
366
  }, 0);
337
367
  }, []);
338
- const commitDrag = (0, import_react.useCallback)((task, dayDelta) => {
339
- if (dayDelta !== 0) {
340
- onItemMove?.(task, (0, import_ganttMath.shiftSpanByDays)({
341
- start: task.start,
342
- end: task.end
343
- }, dayDelta));
344
- }
368
+ const commitDrag = (0, import_react.useCallback)((task, ref, span, dayDelta) => {
369
+ if (dayDelta !== 0) onItemMove?.(task, (0, import_ganttMath.shiftSpanByDays)(span, dayDelta), ref);
345
370
  }, [onItemMove]);
346
- const handleBarPointerDown = (0, import_react.useCallback)((task, e) => {
371
+ const handleBarPointerDown = (0, import_react.useCallback)((task, ref, e) => {
347
372
  if (!webDragEnabled) return;
373
+ const span = boundedSpan(ref);
374
+ if (!span) return;
348
375
  if (e.button !== void 0 && e.button !== 0) return;
349
376
  e.stopPropagation?.();
350
377
  dragCleanupRef.current?.();
@@ -363,7 +390,7 @@ function GanttView({
363
390
  prevUserSelect = document.body.style.userSelect;
364
391
  document.body.style.userSelect = "none";
365
392
  setDrag({
366
- id: task.id,
393
+ key: ref.key,
367
394
  dx,
368
395
  dayDelta: toDayDelta(dx)
369
396
  });
@@ -392,7 +419,7 @@ function GanttView({
392
419
  return;
393
420
  }
394
421
  setDrag({
395
- id: task.id,
422
+ key: ref.key,
396
423
  dx,
397
424
  dayDelta: toDayDelta(dx)
398
425
  });
@@ -403,7 +430,7 @@ function GanttView({
403
430
  teardown();
404
431
  if (!wasActive) return;
405
432
  suppressNextClick();
406
- commitDrag(task, dayDelta);
433
+ commitDrag(task, ref, span, dayDelta);
407
434
  };
408
435
  const onKey = ke => {
409
436
  if (ke.key !== "Escape" || !active) return;
@@ -427,10 +454,14 @@ function GanttView({
427
454
  window.addEventListener("keydown", onKey, true);
428
455
  dragCleanupRef.current = teardown;
429
456
  }, [webDragEnabled, pxPerDay, commitDrag, suppressNextClick]);
430
- const handleNativeGrant = (0, import_react.useCallback)((task, e) => {
457
+ const handleNativeGrant = (0, import_react.useCallback)((task, ref, e) => {
431
458
  if (!nativeDragEnabled) return;
459
+ const span = boundedSpan(ref);
460
+ if (!span) return;
432
461
  const session = {
433
462
  task,
463
+ ref,
464
+ span,
434
465
  startX: e.nativeEvent?.pageX ?? 0,
435
466
  dragging: false,
436
467
  liftTimer: null
@@ -440,7 +471,7 @@ function GanttView({
440
471
  if (nativeSessionRef.current !== session) return;
441
472
  session.dragging = true;
442
473
  setDrag({
443
- id: task.id,
474
+ key: ref.key,
444
475
  dx: 0,
445
476
  dayDelta: 0
446
477
  });
@@ -459,7 +490,7 @@ function GanttView({
459
490
  return;
460
491
  }
461
492
  setDrag({
462
- id: session.task.id,
493
+ key: session.ref.key,
463
494
  dx,
464
495
  dayDelta: dirSignRef.current * (0, import_ganttMath.dxToDayDelta)(dx, pxPerDay)
465
496
  });
@@ -475,7 +506,7 @@ function GanttView({
475
506
  }
476
507
  const dayDelta = dirSignRef.current * (0, import_ganttMath.dxToDayDelta)((e.nativeEvent?.pageX ?? 0) - session.startX, pxPerDay);
477
508
  setDrag(null);
478
- commitDrag(session.task, dayDelta);
509
+ commitDrag(session.task, session.ref, session.span, dayDelta);
479
510
  }, [onItemPress, pxPerDay, commitDrag]);
480
511
  const handleNativeTerminate = (0, import_react.useCallback)(() => {
481
512
  const session = nativeSessionRef.current;
@@ -483,15 +514,13 @@ function GanttView({
483
514
  nativeSessionRef.current = null;
484
515
  setDrag(null);
485
516
  }, []);
486
- const handleResizePointerDown = (0, import_react.useCallback)((task, edge, e) => {
517
+ const handleResizePointerDown = (0, import_react.useCallback)((task, ref, edge, e) => {
487
518
  if (!webDragEnabled) return;
519
+ const span = boundedSpan(ref);
520
+ if (!span) return;
488
521
  if (e.button !== void 0 && e.button !== 0) return;
489
522
  e.stopPropagation?.();
490
523
  dragCleanupRef.current?.();
491
- const span = {
492
- start: task.start,
493
- end: task.end
494
- };
495
524
  const maxShrinkPx = ((0, import_ganttMath.spanInclusiveDays)(span) - 1) * pxPerDay;
496
525
  const startX = e.clientX;
497
526
  const sign = dirSignRef.current;
@@ -522,7 +551,7 @@ function GanttView({
522
551
  document.body.style.userSelect = "none";
523
552
  }
524
553
  setResize({
525
- id: task.id,
554
+ key: ref.key,
526
555
  edge,
527
556
  logicalDx: clampLogicalDx(dx),
528
557
  dayDelta: toDayDelta(dx)
@@ -534,9 +563,7 @@ function GanttView({
534
563
  teardown();
535
564
  if (!wasActive) return;
536
565
  suppressNextClick();
537
- if (dayDelta !== 0) {
538
- onItemMove?.(task, (0, import_ganttMath.resizeSpanByDays)(span, edge, dayDelta));
539
- }
566
+ if (dayDelta !== 0) onItemMove?.(task, (0, import_ganttMath.resizeSpanByDays)(span, edge, dayDelta), ref);
540
567
  };
541
568
  const onKey = ke => {
542
569
  if (ke.key !== "Escape" || !active) return;
@@ -554,10 +581,11 @@ function GanttView({
554
581
  window.addEventListener("keydown", onKey, true);
555
582
  dragCleanupRef.current = teardown;
556
583
  }, [webDragEnabled, pxPerDay, onItemMove, suppressNextClick]);
557
- const getBarDragProps = (0, import_react.useCallback)(task => {
584
+ const getBarDragProps = (0, import_react.useCallback)((task, ref) => {
585
+ if (!boundedSpan(ref)) return {};
558
586
  if (webDragEnabled) {
559
587
  return {
560
- onPointerDown: e => handleBarPointerDown(task, e)
588
+ onPointerDown: e => handleBarPointerDown(task, ref, e)
561
589
  };
562
590
  }
563
591
  if (nativeDragEnabled) {
@@ -566,7 +594,7 @@ function GanttView({
566
594
  onStartShouldSetResponder: () => true,
567
595
  onMoveShouldSetResponder: () => true,
568
596
  onResponderTerminationRequest: () => !nativeSessionRef.current?.dragging,
569
- onResponderGrant: e => handleNativeGrant(task, e),
597
+ onResponderGrant: e => handleNativeGrant(task, ref, e),
570
598
  onResponderMove: handleNativeMove,
571
599
  onResponderRelease: handleNativeRelease,
572
600
  onResponderTerminate: handleNativeTerminate
@@ -574,45 +602,205 @@ function GanttView({
574
602
  }
575
603
  return {};
576
604
  }, [webDragEnabled, nativeDragEnabled, handleBarPointerDown, handleNativeGrant, handleNativeMove, handleNativeRelease, handleNativeTerminate]);
577
- const handleBarKeyboardMove = (0, import_react.useCallback)((task, key, shiftKey) => {
605
+ const handleBarKeyboardMove = (0, import_react.useCallback)((task, ref, key, shiftKey) => {
606
+ const span = boundedSpan(ref);
607
+ if (!span) return;
578
608
  const physical = key === "ArrowRight" ? 1 : -1;
579
609
  const dayDelta = physical * dirSignRef.current * (shiftKey ? 7 : 1);
580
- const next = (0, import_ganttMath.shiftSpanByDays)({
581
- start: task.start,
582
- end: task.end
583
- }, dayDelta);
584
- onItemMove?.(task, next);
610
+ const next = (0, import_ganttMath.shiftSpanByDays)(span, dayDelta);
611
+ onItemMove?.(task, next, ref);
585
612
  setAnnouncement((0, import_t.withInterp)(t("{{title}} moved to {{range}}"), {
586
- title: task.title,
613
+ title: ref.span.title ?? task.title,
587
614
  range: (0, import_ganttMath.formatSpanLabel)(next)
588
615
  }));
589
616
  }, [onItemMove, t]);
590
- const renderBar = task => {
591
- const geom = (0, import_ganttMath.barGeometry)(task, range.start, pxPerDay);
592
- const activeDrag = drag && drag.id === task.id ? drag : null;
617
+ const markerDragEnabled = (enableMarkerDrag ?? onMarkerDateChange !== void 0) && onMarkerDateChange !== void 0;
618
+ const [markerDragging, setMarkerDragging] = (0, import_react.useState)(false);
619
+ const markerGrantRef = (0, import_react.useRef)(null);
620
+ const markerEmittedRef = (0, import_react.useRef)(null);
621
+ const markerSessionRef = (0, import_react.useRef)(null);
622
+ const emitMarker = (0, import_react.useCallback)(dayDelta => {
623
+ const base = markerGrantRef.current;
624
+ if (!base) return;
625
+ const next = (0, import_ganttMath.addDays)(base, dayDelta);
626
+ if (markerEmittedRef.current === next.getTime()) return;
627
+ markerEmittedRef.current = next.getTime();
628
+ onMarkerDateChange?.(next);
629
+ }, [onMarkerDateChange]);
630
+ const openMarkerSession = (0, import_react.useCallback)(() => {
631
+ if (markerDate === void 0) return false;
632
+ const base = (0, import_ganttMath.startOfDay)(markerDate);
633
+ markerGrantRef.current = base;
634
+ markerEmittedRef.current = base.getTime();
635
+ return true;
636
+ }, [markerDate]);
637
+ const handleMarkerPointerDown = (0, import_react.useCallback)(e => {
638
+ if (!markerDragEnabled || !hasDom) return;
639
+ if (e.button !== void 0 && e.button !== 0) return;
640
+ if (!openMarkerSession()) return;
641
+ e.stopPropagation?.();
642
+ dragCleanupRef.current?.();
643
+ const startX = e.clientX;
644
+ let active = false;
645
+ let ended = false;
646
+ let prevUserSelect = "";
647
+ const toDayDelta = dx => dirSignRef.current * (0, import_ganttMath.dxToDayDelta)(dx, pxPerDay);
648
+ const teardown = () => {
649
+ if (ended) return;
650
+ ended = true;
651
+ window.removeEventListener("pointermove", onMove);
652
+ window.removeEventListener("pointerup", onUp);
653
+ window.removeEventListener("keydown", onKey, true);
654
+ if (active) document.body.style.userSelect = prevUserSelect;
655
+ setMarkerDragging(false);
656
+ markerGrantRef.current = null;
657
+ dragCleanupRef.current = null;
658
+ };
659
+ const onMove = me => {
660
+ const dx = me.clientX - startX;
661
+ if (!active) {
662
+ if (Math.abs(dx) < DRAG_THRESHOLD_PX) return;
663
+ active = true;
664
+ prevUserSelect = document.body.style.userSelect;
665
+ document.body.style.userSelect = "none";
666
+ setMarkerDragging(true);
667
+ }
668
+ emitMarker(toDayDelta(dx));
669
+ };
670
+ const onUp = () => teardown();
671
+ const onKey = ke => {
672
+ if (ke.key !== "Escape" || !active) return;
673
+ ke.stopPropagation();
674
+ emitMarker(0);
675
+ teardown();
676
+ };
677
+ window.addEventListener("pointermove", onMove);
678
+ window.addEventListener("pointerup", onUp);
679
+ window.addEventListener("keydown", onKey, true);
680
+ dragCleanupRef.current = teardown;
681
+ }, [markerDragEnabled, hasDom, openMarkerSession, emitMarker, pxPerDay]);
682
+ const markerNativeProps = (0, import_react.useMemo)(() => {
683
+ if (!markerDragEnabled || import_tamagui.isWeb) return {};
684
+ return {
685
+ onStartShouldSetResponder: () => true,
686
+ onMoveShouldSetResponder: () => true,
687
+ onResponderTerminationRequest: () => false,
688
+ onResponderGrant: e => {
689
+ if (!openMarkerSession()) return;
690
+ markerSessionRef.current = {
691
+ startX: e?.nativeEvent?.pageX ?? 0
692
+ };
693
+ setMarkerDragging(true);
694
+ },
695
+ onResponderMove: e => {
696
+ const session = markerSessionRef.current;
697
+ if (!session) return;
698
+ const dx = (e?.nativeEvent?.pageX ?? 0) - session.startX;
699
+ emitMarker(dirSignRef.current * (0, import_ganttMath.dxToDayDelta)(dx, pxPerDay));
700
+ },
701
+ onResponderRelease: () => {
702
+ markerSessionRef.current = null;
703
+ markerGrantRef.current = null;
704
+ setMarkerDragging(false);
705
+ },
706
+ onResponderTerminate: () => {
707
+ markerSessionRef.current = null;
708
+ markerGrantRef.current = null;
709
+ setMarkerDragging(false);
710
+ }
711
+ };
712
+ }, [markerDragEnabled, openMarkerSession, emitMarker, pxPerDay]);
713
+ const handleMarkerKeyboardMove = (0, import_react.useCallback)((key, shiftKey) => {
714
+ if (!markerDragEnabled || markerDate === void 0) return;
715
+ const physical = key === "ArrowRight" ? 1 : -1;
716
+ const dayDelta = physical * dirSignRef.current * (shiftKey ? 7 : 1);
717
+ const next = (0, import_ganttMath.addDays)((0, import_ganttMath.startOfDay)(markerDate), dayDelta);
718
+ markerEmittedRef.current = next.getTime();
719
+ onMarkerDateChange?.(next);
720
+ setAnnouncement((0, import_t.withInterp)(t("Marker moved to {{date}}"), {
721
+ date: (0, import_theme.formatAbsoluteDate)(next)
722
+ }));
723
+ }, [markerDragEnabled, markerDate, onMarkerDateChange, t]);
724
+ const markerX = markerDate === void 0 ? null : (0, import_ganttMath.dateLineX)(range, pxPerDay, markerDate);
725
+ const markerName = markerLabel ?? t("Marker");
726
+ const spanAccessibleName = (title, span) => {
727
+ if ((0, import_ganttMath.isBoundedSpan)(span)) {
728
+ return (0, import_ganttMath.ganttTaskAccessibleLabel)({
729
+ title,
730
+ start: span.start,
731
+ end: span.end
732
+ });
733
+ }
734
+ const parts = (0, import_ganttMath.openSpanLabelParts)(span);
735
+ if (parts.start !== void 0) {
736
+ return (0, import_t.withInterp)(t("{{title}}, from {{start}}, no end"), {
737
+ title,
738
+ start: parts.start
739
+ });
740
+ }
741
+ if (parts.end !== void 0) {
742
+ return (0, import_t.withInterp)(t("{{title}}, until {{end}}, no start"), {
743
+ title,
744
+ end: parts.end
745
+ });
746
+ }
747
+ return (0, import_t.withInterp)(t("{{title}}, always, no dates"), {
748
+ title
749
+ });
750
+ };
751
+ const renderBar = (task, ref) => {
752
+ const span = ref.span;
753
+ const barKey = ref.key;
754
+ const bounded = boundedSpan(ref);
755
+ const geom = (0, import_ganttMath.openBarGeometry)(span, range, pxPerDay);
756
+ const activeDrag = drag && drag.key === barKey ? drag : null;
593
757
  const dragging = activeDrag !== null;
594
- const activeResize = resize && resize.id === task.id ? resize : null;
758
+ const activeResize = resize && resize.key === barKey ? resize : null;
595
759
  const resizing = activeResize !== null;
596
760
  const sessionLive = dragging || resizing;
597
761
  const dayDelta = activeDrag?.dayDelta ?? activeResize?.dayDelta ?? 0;
598
- const span = {
599
- start: task.start,
600
- end: task.end
601
- };
602
- const previewSpan = activeDrag ? (0, import_ganttMath.shiftSpanByDays)(span, dayDelta) : activeResize ? (0, import_ganttMath.resizeSpanByDays)(span, activeResize.edge, activeResize.dayDelta) : null;
762
+ const previewSpan = bounded && activeDrag ? (0, import_ganttMath.shiftSpanByDays)(bounded, dayDelta) : bounded && activeResize ? (0, import_ganttMath.resizeSpanByDays)(bounded, activeResize.edge, activeResize.dayDelta) : null;
603
763
  const previewGeom = previewSpan ? (0, import_ganttMath.barGeometry)(previewSpan, range.start, pxPerDay) : null;
604
764
  const liveWidth = activeResize ? Math.max(6, activeResize.edge === "end" ? geom.width + activeResize.logicalDx : geom.width - activeResize.logicalDx) : geom.width;
605
765
  const liveTransformX = activeDrag ? activeDrag.dx : activeResize && activeResize.edge === "start" ? activeResize.logicalDx * dirSign : 0;
606
- const fill = task.color ?? (task.intent && task.intent !== "accent" ? "$color9" : "$accentBackground");
607
- const progress = clampProgress(task.progress);
608
- const showLabel = liveWidth >= 44;
609
- const isBarFocused = focusedBarId === task.id;
766
+ const barColor = span.color ?? task.color;
767
+ const barIntent = span.intent ?? task.intent;
768
+ const barTitle = span.title ?? task.title;
769
+ const fill = barColor ?? (barIntent && barIntent !== "accent" ? "$color9" : "$accentBackground");
770
+ const progress = bounded ? clampProgress(span.progress ?? task.progress) : null;
771
+ const showLabel = !geom.eternal && liveWidth >= 44;
772
+ const isBarFocused = focusedBarId === barKey;
610
773
  const showHandles = hoveredId === task.id || sessionLive;
611
- const handleWidth = geom.width >= 24 ? 8 : geom.width >= 12 ? 4 : 0;
774
+ const handleWidth = bounded ? geom.width >= 24 ? 8 : geom.width >= 12 ? 4 : 0 : 0;
612
775
  const physicalLeftEdge = rtl ? "end" : "start";
613
776
  const physicalRightEdge = rtl ? "start" : "end";
777
+ const openStartSide = rtl ? {
778
+ right: 2
779
+ } : {
780
+ left: 2
781
+ };
782
+ const openEndSide = rtl ? {
783
+ left: 2
784
+ } : {
785
+ right: 2
786
+ };
787
+ const squareStart = rtl ? {
788
+ borderTopRightRadius: 0,
789
+ borderBottomRightRadius: 0
790
+ } : {
791
+ borderTopLeftRadius: 0,
792
+ borderBottomLeftRadius: 0
793
+ };
794
+ const squareEnd = rtl ? {
795
+ borderTopLeftRadius: 0,
796
+ borderBottomLeftRadius: 0
797
+ } : {
798
+ borderTopRightRadius: 0,
799
+ borderBottomRightRadius: 0
800
+ };
801
+ const height2 = geom.eternal ? railHeight : barHeight;
614
802
  return /* @__PURE__ */(0, import_jsx_runtime.jsxs)(BarIntentWrap, {
615
- intent: task.color ? void 0 : task.intent,
803
+ intent: barColor ? void 0 : barIntent,
616
804
  children: [sessionLive && dayDelta !== 0 && previewGeom && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.YStack, {
617
805
  position: "absolute",
618
806
  ...canvasPos(previewGeom.x),
@@ -626,40 +814,42 @@ function GanttView({
626
814
  opacity: 0.25,
627
815
  pointerEvents: "none",
628
816
  ...{
629
- "data-gantt-drop-preview": task.id
817
+ "data-gantt-drop-preview": barKey
630
818
  }
631
819
  }), /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.YStack, {
632
820
  position: "absolute",
633
821
  ...canvasPos(geom.x),
634
822
  width: liveWidth,
635
- top: barInset,
636
- height: barHeight,
823
+ top: barInset + (barHeight - height2) / 2,
824
+ height: height2,
637
825
  x: liveTransformX,
638
826
  zIndex: sessionLive ? 3 : 1,
639
827
  ...knobProps.borderRadius,
828
+ ...(geom.openStart ? squareStart : null),
829
+ ...(geom.openEnd ? squareEnd : null),
640
830
  backgroundColor: fill,
641
- opacity: sessionLive ? 0.85 : 1,
831
+ opacity: sessionLive ? 0.85 : geom.eternal ? 0.55 : 1,
642
832
  hoverStyle: {
643
- opacity: sessionLive ? 0.85 : 0.9
833
+ opacity: sessionLive ? 0.85 : geom.eternal ? 0.7 : 0.9
644
834
  },
645
835
  pressStyle: {
646
836
  opacity: 0.8
647
837
  },
648
- cursor: webDragEnabled ? "grab" : onItemPress ? "pointer" : void 0,
838
+ cursor: bounded && webDragEnabled ? "grab" : onItemPress ? "pointer" : void 0,
649
839
  justifyContent: "center",
650
840
  transition: sessionLive ? void 0 : webLayoutTransition,
651
841
  role: "button",
652
842
  tabIndex: 0,
653
- "aria-label": (0, import_ganttMath.ganttTaskAccessibleLabel)(task),
843
+ "aria-label": spanAccessibleName(barTitle, span),
654
844
  ...(isBarFocused && barKeyboardRing ? import_theme.keyboardFocusRingProps : {
655
845
  outlineWidth: 0
656
846
  }),
657
847
  onFocus: () => {
658
- setFocusedBarId(task.id);
848
+ setFocusedBarId(barKey);
659
849
  setBarKeyboardRing((0, import_theme.wasKeyboardFocus)());
660
850
  },
661
851
  onBlur: () => {
662
- setFocusedBarId(id => id === task.id ? null : id);
852
+ setFocusedBarId(id => id === barKey ? null : id);
663
853
  setBarKeyboardRing(false);
664
854
  },
665
855
  ...{
@@ -673,17 +863,23 @@ function GanttView({
673
863
  onItemPress?.(task);
674
864
  return;
675
865
  }
676
- if ((ke.key === "ArrowLeft" || ke.key === "ArrowRight") && dragEnabled) {
866
+ if ((ke.key === "ArrowLeft" || ke.key === "ArrowRight") && dragEnabled && bounded) {
677
867
  ke.preventDefault?.();
678
868
  ke.stopPropagation?.();
679
- handleBarKeyboardMove(task, ke.key, ke.shiftKey === true);
869
+ handleBarKeyboardMove(task, ref, ke.key, ke.shiftKey === true);
680
870
  }
681
871
  },
682
872
  ...{
683
- "data-gantt-bar": task.id
873
+ "data-gantt-bar": barKey
684
874
  },
685
- ...(nativeDragEnabled ? null : getBarDragProps(task)),
686
- onPress: nativeDragEnabled ? void 0 : e => {
875
+ ...(geom.eternal ? {
876
+ "data-gantt-rail": "true"
877
+ } : null),
878
+ ...(geom.openStart || geom.openEnd ? {
879
+ "data-gantt-span-open": geom.eternal ? "both" : geom.openStart ? "start" : "end"
880
+ } : null),
881
+ ...(nativeDragEnabled ? null : getBarDragProps(task, ref)),
882
+ onPress: nativeDragEnabled && bounded ? void 0 : e => {
687
883
  e?.stopPropagation?.();
688
884
  if (suppressClickRef.current) return;
689
885
  onItemPress?.(task);
@@ -705,8 +901,32 @@ function GanttView({
705
901
  "data-gantt-progress": String(progress)
706
902
  }
707
903
  }), showLabel && /* @__PURE__ */(0, import_jsx_runtime.jsx)(GanttBarLabel, {
708
- title: task.title,
904
+ title: barTitle,
709
905
  fill
906
+ }), geom.openStart && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
907
+ position: "absolute",
908
+ ...openStartSide,
909
+ ...knobProps.label,
910
+ color: "$color12",
911
+ opacity: 0.75,
912
+ pointerEvents: "none",
913
+ "aria-hidden": true,
914
+ ...{
915
+ "data-gantt-open-start": "true"
916
+ },
917
+ children: rtl ? "\xBB" : "\xAB"
918
+ }), geom.openEnd && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
919
+ position: "absolute",
920
+ ...openEndSide,
921
+ ...knobProps.label,
922
+ color: "$color12",
923
+ opacity: 0.75,
924
+ pointerEvents: "none",
925
+ "aria-hidden": true,
926
+ ...{
927
+ "data-gantt-open-end": "true"
928
+ },
929
+ children: rtl ? "\xAB" : "\xBB"
710
930
  }), previewSpan && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.XStack, {
711
931
  position: "absolute",
712
932
  top: -(axisHeight - 6),
@@ -741,7 +961,7 @@ function GanttView({
741
961
  cursor: "ew-resize",
742
962
  backgroundColor: showHandles ? "$color12" : "transparent",
743
963
  opacity: showHandles ? 0.28 : 0,
744
- onPointerDown: e => handleResizePointerDown(task, physicalLeftEdge, e),
964
+ onPointerDown: e => handleResizePointerDown(task, ref, physicalLeftEdge, e),
745
965
  ...{
746
966
  "data-gantt-resize-handle": physicalLeftEdge
747
967
  }
@@ -754,24 +974,24 @@ function GanttView({
754
974
  cursor: "ew-resize",
755
975
  backgroundColor: showHandles ? "$color12" : "transparent",
756
976
  opacity: showHandles ? 0.28 : 0,
757
- onPointerDown: e => handleResizePointerDown(task, physicalRightEdge, e),
977
+ onPointerDown: e => handleResizePointerDown(task, ref, physicalRightEdge, e),
758
978
  ...{
759
979
  "data-gantt-resize-handle": physicalRightEdge
760
980
  }
761
981
  })]
762
- }), nativeDragEnabled && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.YStack, {
982
+ }), nativeDragEnabled && bounded && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.YStack, {
763
983
  position: "absolute",
764
984
  top: 0,
765
985
  left: 0,
766
986
  right: 0,
767
987
  bottom: 0,
768
988
  zIndex: 5,
769
- ...getBarDragProps(task)
989
+ ...getBarDragProps(task, ref)
770
990
  })]
771
991
  })]
772
- }, task.id);
992
+ }, barKey);
773
993
  };
774
- const scrollLocked = drag !== null || resize !== null;
994
+ const scrollLocked = drag !== null || resize !== null || markerDragging;
775
995
  const majorGridColor = "$borderColor";
776
996
  const minorGridColor = import_componentColors.componentColors.divider;
777
997
  const scrollerDirection = {
@@ -920,6 +1140,53 @@ function GanttView({
920
1140
  height: import_theme.hairlineWidth,
921
1141
  backgroundColor: import_componentColors.componentColors.divider,
922
1142
  pointerEvents: "none"
1143
+ }), markerX !== null && /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
1144
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.YStack, {
1145
+ position: "absolute",
1146
+ ...canvasPos(markerX - 1),
1147
+ top: 0,
1148
+ bottom: 0,
1149
+ width: 2,
1150
+ backgroundColor: "$color12",
1151
+ opacity: 0.9,
1152
+ pointerEvents: "none"
1153
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.YStack, {
1154
+ position: "absolute",
1155
+ ...canvasPos(markerX - 12),
1156
+ top: 0,
1157
+ bottom: 0,
1158
+ width: 24,
1159
+ alignItems: "center",
1160
+ justifyContent: "flex-end",
1161
+ zIndex: 4,
1162
+ cursor: markerDragEnabled ? "ew-resize" : void 0,
1163
+ role: "slider",
1164
+ tabIndex: markerDragEnabled ? 0 : -1,
1165
+ "aria-label": markerName,
1166
+ "aria-valuetext": markerDate ? (0, import_theme.formatAbsoluteDate)(markerDate) : void 0,
1167
+ ...(markerDragEnabled && hasDom ? {
1168
+ onPointerDown: e => handleMarkerPointerDown(e)
1169
+ } : null),
1170
+ ...markerNativeProps,
1171
+ onKeyDown: ke => {
1172
+ if (ke.key !== "ArrowLeft" && ke.key !== "ArrowRight") return;
1173
+ ke.preventDefault?.();
1174
+ ke.stopPropagation?.();
1175
+ handleMarkerKeyboardMove(ke.key, ke.shiftKey === true);
1176
+ },
1177
+ ...{
1178
+ "data-gantt-marker-handle": "true"
1179
+ },
1180
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.YStack, {
1181
+ width: 11,
1182
+ height: 9,
1183
+ marginBottom: 2,
1184
+ borderRadius: 2,
1185
+ backgroundColor: "$color12",
1186
+ opacity: markerDragging ? 1 : 0.9,
1187
+ pointerEvents: "none"
1188
+ })
1189
+ })]
923
1190
  })]
924
1191
  })
925
1192
  })]
@@ -936,9 +1203,11 @@ function GanttView({
936
1203
  ...hairlineEnd,
937
1204
  borderColor: "$borderColor",
938
1205
  children: tasks.map((task, index) => {
939
- const selected = focusedBarId === task.id;
1206
+ const refs = resolveSpans(task);
1207
+ const selected = refs.some(ref => ref.key === focusedBarId);
940
1208
  const hovered = hoveredId === task.id;
941
1209
  const last = index === tasks.length - 1;
1210
+ const firstKey = refs[0]?.key ?? task.id;
942
1211
  return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.XStack, {
943
1212
  height: rowHeight,
944
1213
  alignItems: "center",
@@ -953,11 +1222,11 @@ function GanttView({
953
1222
  },
954
1223
  onPress: onItemPress ? () => {
955
1224
  if (suppressClickRef.current) return;
956
- setFocusedBarId(task.id);
1225
+ setFocusedBarId(firstKey);
957
1226
  setBarKeyboardRing(false);
958
1227
  onItemPress(task);
959
1228
  } : () => {
960
- setFocusedBarId(task.id);
1229
+ setFocusedBarId(firstKey);
961
1230
  setBarKeyboardRing(false);
962
1231
  },
963
1232
  ...{
@@ -1028,7 +1297,8 @@ function GanttView({
1028
1297
  backgroundColor: tick.major ? majorGridColor : minorGridColor,
1029
1298
  pointerEvents: "none"
1030
1299
  }, tick.date.toISOString())), tasks.map((task, index) => {
1031
- const selected = focusedBarId === task.id;
1300
+ const refs = resolveSpans(task);
1301
+ const selected = refs.some(ref => ref.key === focusedBarId);
1032
1302
  const hovered = hoveredId === task.id;
1033
1303
  const last = index === tasks.length - 1;
1034
1304
  return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.XStack, {
@@ -1044,8 +1314,21 @@ function GanttView({
1044
1314
  ...{
1045
1315
  "data-gantt-row": task.id
1046
1316
  },
1047
- children: renderBar(task)
1317
+ children: refs.map(ref => renderBar(task, ref))
1048
1318
  }, task.id);
1319
+ }), markerX !== null && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.YStack, {
1320
+ position: "absolute",
1321
+ ...canvasPos(markerX - 1),
1322
+ top: 0,
1323
+ bottom: 0,
1324
+ width: 2,
1325
+ backgroundColor: "$color12",
1326
+ opacity: markerDragging ? 0.95 : 0.75,
1327
+ pointerEvents: "none",
1328
+ zIndex: 2,
1329
+ ...{
1330
+ "data-gantt-marker": "true"
1331
+ }
1049
1332
  }), todayX !== null && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.YStack, {
1050
1333
  position: "absolute",
1051
1334
  ...canvasPos(todayX - 1),