@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
@@ -1 +1 @@
1
- {"version":3,"names":["List","ListRow","ListRowMeta","useListItemState","Kanban","Calendar","computeEventMoveRange","eventChipTextColor","findDayKeyAtPoint","snapMinutes","layoutDayBlocks","computeResizeRange","moveRangeToSlot","createRangeFromDrag","moveFocusDate","moveFocusSlot","eventAccessibleLabel","formatTimeRangeLabel","TreeView","ImageGrid","Dashboard","KPICard","ChartCard","ProgressCard","ShortcutCard","ListCard","calculateTrend","calculatePercentageChange","aggregateData","resolveTrendColor","ReportBuilder","GanttView","barGeometry","computeGanttRange","dateToX","dxToDayDelta","ganttTaskAccessibleLabel","generateTicks","normalizeSpanEdges","shiftSpanByDays","todayLineX","renumberIdx"],"sources":["../../../src/views/index.ts"],"sourcesContent":[null],"mappings":"AAAA,SACEA,IAAA,EACAC,OAAA,EACAC,WAAA,EACAC,gBAAA,QAKK;AACP,SAASC,MAAA,QAAuE;AAChF,SACEC,QAAA,EACAC,qBAAA,EACAC,kBAAA,EACAC,iBAAA,QAOK;AACP,SACEC,WAAA,EACAC,eAAA,EACAC,kBAAA,EACAC,eAAA,EACAC,mBAAA,EACAC,aAAA,EACAC,aAAA,EACAC,oBAAA,EACAC,oBAAA,QAGK;AACP,SACEC,QAAA,QAKK;AACP,SAASC,SAAA,QAA6D;AAMtE,SACEC,SAAA,EACAC,OAAA,EACAC,SAAA,EACAC,YAAA,EACAC,YAAA,EACAC,QAAA,EACAC,cAAA,EACAC,yBAAA,EACAC,aAAA,EACAC,iBAAA,QAiBK;AACP,SACEC,aAAA,QAIK;AACP,SAASC,SAAA,QAA+E;AACxF,SACEC,WAAA,EACAC,iBAAA,EACAC,OAAA,EACAC,YAAA,EACAC,wBAAA,EACAC,aAAA,EACAC,kBAAA,EACAC,eAAA,EACAC,UAAA,QAMK;AAKP,SAASC,WAAA,QAAmB;AAI5B,cAAc","ignoreList":[]}
1
+ {"version":3,"names":["List","ListRow","ListRowMeta","useListItemState","Kanban","Calendar","computeEventMoveRange","eventChipTextColor","findDayKeyAtPoint","snapMinutes","layoutDayBlocks","computeResizeRange","moveRangeToSlot","createRangeFromDrag","moveFocusDate","moveFocusSlot","eventAccessibleLabel","formatTimeRangeLabel","TreeView","ImageGrid","Dashboard","KPICard","ChartCard","ProgressCard","ShortcutCard","ListCard","calculateTrend","calculatePercentageChange","aggregateData","resolveTrendColor","ReportBuilder","GanttView","addDays","barGeometry","clampResizeDayDelta","computeGanttRange","dateLineX","dateToX","dayDiff","dxToDayDelta","formatRangeLabel","formatSpanLabel","ganttTaskAccessibleLabel","generateTicks","isBoundedSpan","isEternalSpan","MS_PER_DAY","normalizeSpanEdges","openBarGeometry","openSpanExtent","openSpanExtents","openSpanLabelParts","rangeDays","resizeSpanByDays","scrollAnchorX","shiftSpanByDays","spanInclusiveDays","startOfDay","todayLineX","xToDate","renumberIdx"],"sources":["../../../src/views/index.ts"],"sourcesContent":[null],"mappings":"AAAA,SACEA,IAAA,EACAC,OAAA,EACAC,WAAA,EACAC,gBAAA,QAKK;AACP,SAASC,MAAA,QAAuE;AAChF,SACEC,QAAA,EACAC,qBAAA,EACAC,kBAAA,EACAC,iBAAA,QAOK;AACP,SACEC,WAAA,EACAC,eAAA,EACAC,kBAAA,EACAC,eAAA,EACAC,mBAAA,EACAC,aAAA,EACAC,aAAA,EACAC,oBAAA,EACAC,oBAAA,QAGK;AACP,SACEC,QAAA,QAKK;AACP,SAASC,SAAA,QAA6D;AAMtE,SACEC,SAAA,EACAC,OAAA,EACAC,SAAA,EACAC,YAAA,EACAC,YAAA,EACAC,QAAA,EACAC,cAAA,EACAC,yBAAA,EACAC,aAAA,EACAC,iBAAA,QAiBK;AACP,SACEC,aAAA,QAIK;AACP,SACEC,SAAA,QAMK;AAeP,SACEC,OAAA,EACAC,WAAA,EACAC,mBAAA,EACAC,iBAAA,EACAC,SAAA,EACAC,OAAA,EACAC,OAAA,EACAC,YAAA,EACAC,gBAAA,EACAC,eAAA,EACAC,wBAAA,EACAC,aAAA,EACAC,aAAA,EACAC,aAAA,EACAC,UAAA,EACAC,kBAAA,EACAC,eAAA,EACAC,cAAA,EACAC,eAAA,EACAC,kBAAA,EACAC,SAAA,EACAC,gBAAA,EACAC,aAAA,EACAC,eAAA,EACAC,iBAAA,EACAC,UAAA,EACAC,UAAA,EACAC,OAAA,QASK;AAKP,SAASC,WAAA,QAAmB;AAI5B,cAAc","ignoreList":[]}
@@ -36,37 +36,56 @@ __export(views_exports, {
36
36
  ListCard: () => import_Dashboard.ListCard,
37
37
  ListRow: () => import_List.ListRow,
38
38
  ListRowMeta: () => import_List.ListRowMeta,
39
+ MS_PER_DAY: () => import_ganttMath.MS_PER_DAY,
39
40
  ProgressCard: () => import_Dashboard.ProgressCard,
40
41
  ReportBuilder: () => import_ReportBuilder.ReportBuilder,
41
42
  ShortcutCard: () => import_Dashboard.ShortcutCard,
42
43
  TreeView: () => import_TreeView.TreeView,
44
+ addDays: () => import_ganttMath.addDays,
43
45
  aggregateData: () => import_Dashboard.aggregateData,
44
46
  barGeometry: () => import_ganttMath.barGeometry,
45
47
  calculatePercentageChange: () => import_Dashboard.calculatePercentageChange,
46
48
  calculateTrend: () => import_Dashboard.calculateTrend,
49
+ clampResizeDayDelta: () => import_ganttMath.clampResizeDayDelta,
47
50
  computeEventMoveRange: () => import_Calendar.computeEventMoveRange,
48
51
  computeGanttRange: () => import_ganttMath.computeGanttRange,
49
52
  computeResizeRange: () => import_calendarMath.computeResizeRange,
50
53
  createRangeFromDrag: () => import_calendarMath.createRangeFromDrag,
54
+ dateLineX: () => import_ganttMath.dateLineX,
51
55
  dateToX: () => import_ganttMath.dateToX,
56
+ dayDiff: () => import_ganttMath.dayDiff,
52
57
  dxToDayDelta: () => import_ganttMath.dxToDayDelta,
53
58
  eventAccessibleLabel: () => import_calendarMath.eventAccessibleLabel,
54
59
  eventChipTextColor: () => import_Calendar.eventChipTextColor,
55
60
  findDayKeyAtPoint: () => import_Calendar.findDayKeyAtPoint,
61
+ formatRangeLabel: () => import_ganttMath.formatRangeLabel,
62
+ formatSpanLabel: () => import_ganttMath.formatSpanLabel,
56
63
  formatTimeRangeLabel: () => import_calendarMath.formatTimeRangeLabel,
57
64
  ganttTaskAccessibleLabel: () => import_ganttMath.ganttTaskAccessibleLabel,
58
65
  generateTicks: () => import_ganttMath.generateTicks,
66
+ isBoundedSpan: () => import_ganttMath.isBoundedSpan,
67
+ isEternalSpan: () => import_ganttMath.isEternalSpan,
59
68
  layoutDayBlocks: () => import_calendarMath.layoutDayBlocks,
60
69
  moveFocusDate: () => import_calendarMath.moveFocusDate,
61
70
  moveFocusSlot: () => import_calendarMath.moveFocusSlot,
62
71
  moveRangeToSlot: () => import_calendarMath.moveRangeToSlot,
63
72
  normalizeSpanEdges: () => import_ganttMath.normalizeSpanEdges,
73
+ openBarGeometry: () => import_ganttMath.openBarGeometry,
74
+ openSpanExtent: () => import_ganttMath.openSpanExtent,
75
+ openSpanExtents: () => import_ganttMath.openSpanExtents,
76
+ openSpanLabelParts: () => import_ganttMath.openSpanLabelParts,
77
+ rangeDays: () => import_ganttMath.rangeDays,
64
78
  renumberIdx: () => import_kanbanDnd.renumberIdx,
79
+ resizeSpanByDays: () => import_ganttMath.resizeSpanByDays,
65
80
  resolveTrendColor: () => import_Dashboard.resolveTrendColor,
81
+ scrollAnchorX: () => import_ganttMath.scrollAnchorX,
66
82
  shiftSpanByDays: () => import_ganttMath.shiftSpanByDays,
67
83
  snapMinutes: () => import_calendarMath.snapMinutes,
84
+ spanInclusiveDays: () => import_ganttMath.spanInclusiveDays,
85
+ startOfDay: () => import_ganttMath.startOfDay,
68
86
  todayLineX: () => import_ganttMath.todayLineX,
69
- useListItemState: () => import_List.useListItemState
87
+ useListItemState: () => import_List.useListItemState,
88
+ xToDate: () => import_ganttMath.xToDate
70
89
  });
71
90
  module.exports = __toCommonJS(views_exports);
72
91
  var import_List = require("./List.native.js");
@@ -1 +1 @@
1
- {"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__reExport","mod","secondTarget","__toCommonJS","value","views_exports","Calendar","import_Calendar","ChartCard","import_Dashboard","Dashboard","GanttView","import_Gantt","ImageGrid","import_ImageGrid","KPICard","Kanban","import_Kanban","List","import_List","ListCard","ListRow","ListRowMeta","ProgressCard","ReportBuilder","import_ReportBuilder","ShortcutCard","TreeView","import_TreeView","aggregateData","barGeometry","import_ganttMath","calculatePercentageChange","calculateTrend","computeEventMoveRange","computeGanttRange","computeResizeRange","import_calendarMath","createRangeFromDrag","dateToX","dxToDayDelta","eventAccessibleLabel","eventChipTextColor","findDayKeyAtPoint","formatTimeRangeLabel","ganttTaskAccessibleLabel","generateTicks","layoutDayBlocks","moveFocusDate","moveFocusSlot","moveRangeToSlot","normalizeSpanEdges"],"sources":["../../../src/views/index.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__reExport","mod","secondTarget","__toCommonJS","value","views_exports","Calendar","import_Calendar","ChartCard","import_Dashboard","Dashboard","GanttView","import_Gantt","ImageGrid","import_ImageGrid","KPICard","Kanban","import_Kanban","List","import_List","ListCard","ListRow","ListRowMeta","MS_PER_DAY","import_ganttMath","ProgressCard","ReportBuilder","import_ReportBuilder","ShortcutCard","TreeView","import_TreeView","addDays","aggregateData","barGeometry","calculatePercentageChange","calculateTrend","clampResizeDayDelta","computeEventMoveRange","computeGanttRange","computeResizeRange","import_calendarMath","createRangeFromDrag","dateLineX","dateToX","dayDiff","dxToDayDelta","eventAccessibleLabel","eventChipTextColor","findDayKeyAtPoint","formatRangeLabel","formatSpanLabel","formatTimeRangeLabel","ganttTaskAccessibleLabel","generateTicks","isBoundedSpan","isEternalSpan","layoutDayBlocks","moveFocusDate","moveFocusSlot","moveRangeToSlot","normalizeSpanEdges","openBarGeometry","openSpanExtent","openSpanExtents","openSpanLabelParts","rangeDays","renumberIdx","import_kanbanDnd","resizeSpanByDays","resolveTrendColor","scrollAnchorX","shiftSpanByDays","snapMinutes","spanInclusiveDays"],"sources":["../../../src/views/index.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@multiplatform.one/components",
3
- "version": "7.7.4",
3
+ "version": "7.8.0",
4
4
  "description": "multiplatform.one ui components",
5
5
  "keywords": [
6
6
  "components",
@@ -59,8 +59,10 @@
59
59
  "@floating-ui/react": "^0.27.19",
60
60
  "@phosphor-icons/react": "^2.1.10",
61
61
  "@shopify/flash-list": "^2.3.1",
62
+ "@tamagui/core": "2.7.6",
62
63
  "@tamagui/font-inter": "2.7.6",
63
64
  "@tamagui/logo": "2.7.6",
65
+ "@tamagui/lucide-icons-2": "2.7.6",
64
66
  "@tamagui/react-native-media-driver": "2.7.6",
65
67
  "@tamagui/react-native-svg": "2.7.6",
66
68
  "@tamagui/shorthands": "2.7.6",
@@ -75,11 +77,11 @@
75
77
  "link": "^2.1.2",
76
78
  "shiki": "^4.0.2",
77
79
  "tamagui": "2.7.6",
78
- "@multiplatform.one/forms": "7.7.4",
79
- "@multiplatform.one/i18n": "7.7.4",
80
- "@multiplatform.one/platform": "7.7.4",
81
- "@multiplatform.one/router": "7.7.4",
82
- "@multiplatform.one/theme": "7.7.4"
80
+ "@multiplatform.one/router": "7.8.0",
81
+ "@multiplatform.one/i18n": "7.8.0",
82
+ "@multiplatform.one/platform": "7.8.0",
83
+ "@multiplatform.one/theme": "7.8.0",
84
+ "@multiplatform.one/forms": "7.8.0"
83
85
  },
84
86
  "devDependencies": {
85
87
  "@tamagui/build": "2.7.6",
@@ -99,9 +101,9 @@
99
101
  "react-native-svg": "15.15.4",
100
102
  "react-native-web": "^0.21.2",
101
103
  "vitest": "^4.1.5",
102
- "@multiplatform.one/config": "7.7.4",
103
- "@multiplatform.one/storybook": "7.7.4",
104
- "@multiplatform.one/test-utils": "7.7.4"
104
+ "@multiplatform.one/config": "7.8.0",
105
+ "@multiplatform.one/storybook": "7.8.0",
106
+ "@multiplatform.one/test-utils": "7.8.0"
105
107
  },
106
108
  "peerDependencies": {
107
109
  "@mdx-js/mdx": "^3.1.1",
@@ -114,6 +114,8 @@ export interface AccordionItemProps extends StackProps {
114
114
  }
115
115
 
116
116
  export interface AccordionTriggerProps extends Omit<StackProps, "children"> {
117
+ /** Web button intent; disclosure controls do not submit forms by default. */
118
+ type?: "button" | "submit" | "reset";
117
119
  /** Header title (string or custom node) */
118
120
  children?: ReactNode;
119
121
  /** Secondary line under the title */
@@ -447,7 +449,10 @@ const AccordionItem = forwardRef<TamaguiElement, AccordionItemProps>(function Ac
447
449
  // ── Trigger (header row) ──────────────────────────────────────
448
450
 
449
451
  const AccordionTrigger = forwardRef<TamaguiElement, AccordionTriggerProps>(
450
- function AccordionTrigger({ children, description, icon, onFocus, onBlur, ...props }, ref) {
452
+ function AccordionTrigger(
453
+ { children, description, icon, onFocus, onBlur, type = "button", ...props },
454
+ ref,
455
+ ) {
451
456
  const { knobProps, control, disabledState } = useAccordionKnobs();
452
457
  const { headingLevel } = useContext(AccordionCtx);
453
458
  const item = useContext(AccordionItemCtx);
@@ -502,6 +507,7 @@ const AccordionTrigger = forwardRef<TamaguiElement, AccordionTriggerProps>(
502
507
  // role="heading" + aria-level for AT parity with an h3.
503
508
  <View role="heading" aria-level={headingLevel} margin={0} width="100%">
504
509
  <TamaguiAccordion.Trigger
510
+ {...(isWeb ? { type } : {})}
505
511
  ref={ref}
506
512
  unstyled
507
513
  id={item.triggerId}
@@ -0,0 +1,51 @@
1
+ import { renderWithProviders } from "@multiplatform.one/test-utils";
2
+ import { createRef } from "react";
3
+ import { Text, type TamaguiElement } from "tamagui";
4
+ import { expect, it, vi } from "vitest";
5
+ import { AnimateHeight } from "./index";
6
+
7
+ vi.mock("@multiplatform.one/platform", async (original) => ({
8
+ ...(await original<typeof import("@multiplatform.one/platform")>()),
9
+ isWeb: false,
10
+ }));
11
+
12
+ it("opens native content intrinsically without waiting for layout or animation frames", () => {
13
+ const view = renderWithProviders(
14
+ <AnimateHeight open={false} testID="height">
15
+ <Text>Body</Text>
16
+ </AnimateHeight>,
17
+ );
18
+ expect(view.queryByText("Body")).toBeNull();
19
+ view.rerender(
20
+ <AnimateHeight open testID="height">
21
+ <Text>Body</Text>
22
+ </AnimateHeight>,
23
+ );
24
+ expect(view.getByText("Body")).toBeTruthy();
25
+ expect(getComputedStyle(view.getByTestId("height")).height).not.toBe("0px");
26
+ view.rerender(
27
+ <AnimateHeight open={false} testID="height">
28
+ <Text>Body</Text>
29
+ </AnimateHeight>,
30
+ );
31
+ expect(view.queryByText("Body")).toBeNull();
32
+ });
33
+
34
+ it("keeps native follower updates intrinsic and preserves the outer ref and props", () => {
35
+ const ref = createRef<TamaguiElement>();
36
+ const view = renderWithProviders(
37
+ <AnimateHeight ref={ref} testID="height" padding={7}>
38
+ <Text>First</Text>
39
+ </AnimateHeight>,
40
+ );
41
+ expect(ref.current).toBe(view.getByTestId("height"));
42
+ expect(getComputedStyle(view.getByTestId("height")).padding).toBe("7px");
43
+ view.rerender(
44
+ <AnimateHeight ref={ref} testID="height" padding={7}>
45
+ <Text>Longer updated body</Text>
46
+ </AnimateHeight>,
47
+ );
48
+ expect(view.getByText("Longer updated body")).toBeTruthy();
49
+ expect(getComputedStyle(view.getByTestId("height")).height).not.toBe("0px");
50
+ expect(ref.current).toBe(view.getByTestId("height"));
51
+ });
@@ -14,10 +14,9 @@ import { View } from "tamagui";
14
14
  * changes snap no matter what `transition` is set, because height never
15
15
  * appears as an interpolable value. This container measures its content
16
16
  * (ResizeObserver on web, onLayout on native) and drives a NUMERIC `height`
17
- * through the house `transition` token. The web css driver tweens it; the RN
18
- * driver applies layout props directly (Axiom 4 native constraint), so native
19
- * lands correct heights without a decorative tween — no worse than before,
20
- * while mount/unmount sequencing still works on both platforms.
17
+ * through the house `transition` token on web. The RN driver cannot tween
18
+ * layout props (Axiom 4), so native uses intrinsic height while open and
19
+ * unmounts closed content immediately, without waiting for a measurement.
21
20
  *
22
21
  * Two modes:
23
22
  * - follower (no `open` prop): always mounted; height tracks the content's
@@ -78,7 +77,7 @@ export function settleMs(transition: TransitionProp | undefined): number {
78
77
  return (ms ?? 600) + 80;
79
78
  }
80
79
 
81
- export const AnimateHeight = forwardRef<TamaguiElement, AnimateHeightProps>(
80
+ const WebAnimateHeight = forwardRef<TamaguiElement, AnimateHeightProps>(
82
81
  function AnimateHeight({ open, children, transition: transitionProp, ...props }, ref) {
83
82
  const { knobProps } = useResolvedKnobs();
84
83
  // knob transition is undefined under reduced motion / animation="none"
@@ -235,3 +234,29 @@ export const AnimateHeight = forwardRef<TamaguiElement, AnimateHeightProps>(
235
234
  );
236
235
  },
237
236
  );
237
+
238
+ /** Native layout has no height tween, so measurement must not gate visibility. */
239
+ const NativeAnimateHeight = forwardRef<TamaguiElement, AnimateHeightProps>(
240
+ function NativeAnimateHeight({ open, children, ...props }, ref) {
241
+ return (
242
+ <View
243
+ ref={ref}
244
+ overflow="hidden"
245
+ {...(open === false ? { display: "none" as const } : {})}
246
+ {...props}
247
+ >
248
+ {open !== false ? <View flexShrink={0}>{children}</View> : null}
249
+ </View>
250
+ );
251
+ },
252
+ );
253
+
254
+ export const AnimateHeight = forwardRef<TamaguiElement, AnimateHeightProps>(
255
+ function AnimateHeight(props, ref) {
256
+ return isWeb ? (
257
+ <WebAnimateHeight {...props} ref={ref} />
258
+ ) : (
259
+ <NativeAnimateHeight {...props} ref={ref} />
260
+ );
261
+ },
262
+ );
package/src/Button.tsx CHANGED
@@ -29,8 +29,16 @@ import {
29
29
  type ButtonProps as FormsButtonProps,
30
30
  } from "@multiplatform.one/forms";
31
31
 
32
- /** House Button API — the forms Button contract (raw `variant` included via TamaguiButtonProps). */
33
- export type ButtonProps = FormsButtonProps;
32
+ /**
33
+ * House Button API — the forms Button contract, plus the raw-tamagui `variant`
34
+ * this shim exists to translate.
35
+ *
36
+ * MPO-91: the forms Button now OMITS `variant`, because it never read it and an
37
+ * inherited-but-ignored prop is how 75 call sites rendered filled while asking
38
+ * for outlined. So the prop is declared HERE, where something actually
39
+ * consumes it, instead of being inherited from a component that drops it.
40
+ */
41
+ export type ButtonProps = FormsButtonProps & { variant?: "outlined" };
34
42
 
35
43
  export function Button({ variant, outlined, ...props }: ButtonProps) {
36
44
  // Raw-tamagui prop-compat: `variant="outlined"` is tamagui Button API that
package/src/Card.spec.tsx CHANGED
@@ -1,12 +1,15 @@
1
- import { Preset, useResolvedKnobs } from "@multiplatform.one/theme";
1
+ import { Preset, useResolvedKnobs, type Knobs } from "@multiplatform.one/theme";
2
2
  import { renderWithProviders } from "@multiplatform.one/test-utils";
3
3
  import { readFileSync } from "node:fs";
4
4
  import { join } from "node:path";
5
- import { cleanup } from "@testing-library/react";
6
- import { Card as TamaguiCard } from "tamagui";
5
+ import { cleanup, render } from "@testing-library/react";
6
+ import { defaultConfig } from "@tamagui/config/v5";
7
+ import { Card as TamaguiCard, createTamagui, TamaguiProvider } from "tamagui";
7
8
  import { afterEach, describe, expect, it } from "vitest";
8
9
  import { Card, CardFooter, CardHeader } from "./Card";
9
10
 
11
+ const cardConfig = createTamagui(defaultConfig);
12
+
10
13
  function readSibling(name: string) {
11
14
  return readFileSync(join(import.meta.dirname, name), "utf8");
12
15
  }
@@ -38,6 +41,75 @@ describe("Card R12 / LC-73 — NestedScale only, no Tint", () => {
38
41
  describe("Card host data attributes", () => {
39
42
  afterEach(cleanup);
40
43
 
44
+ for (const tier of ["content", "elevated"] as const) {
45
+ for (const [borderRadius, stop] of Object.entries({
46
+ none: 0,
47
+ small: 5,
48
+ medium: 9,
49
+ large: 16,
50
+ full: 50,
51
+ })) {
52
+ for (const [space, inset] of Object.entries({ small: 13, medium: 18, large: 32 })) {
53
+ it(`renders ${tier}/${borderRadius}/${space} with the documented cap`, () => {
54
+ const { container } = render(
55
+ <TamaguiProvider config={cardConfig} defaultTheme="light">
56
+ <Preset
57
+ overrides={{
58
+ borderRadius: borderRadius as Knobs["borderRadius"],
59
+ space: space as Knobs["space"],
60
+ density: "comfortable",
61
+ }}
62
+ >
63
+ <Card tier={tier}>Measured Card</Card>
64
+ </Preset>
65
+ </TamaguiProvider>,
66
+ );
67
+ const frame = container.querySelector(`[data-tier="${tier}"]`)!;
68
+ const style = getComputedStyle(frame);
69
+ for (const corner of [
70
+ "borderTopLeftRadius",
71
+ "borderTopRightRadius",
72
+ "borderBottomRightRadius",
73
+ "borderBottomLeftRadius",
74
+ ] as const) {
75
+ expect(style[corner]).toBe(`${Math.min(stop, inset)}px`);
76
+ }
77
+ for (const side of [
78
+ "paddingTop",
79
+ "paddingRight",
80
+ "paddingBottom",
81
+ "paddingLeft",
82
+ ] as const) {
83
+ expect(style[side]).toBe(`${inset}px`);
84
+ }
85
+ expect(frame).toHaveAttribute("data-radius-knob", borderRadius);
86
+ expect(frame).toHaveAttribute("data-space-knob", space);
87
+ });
88
+ }
89
+ }
90
+ }
91
+
92
+ it("does not reclassify the feature identity recipe as a capped container", () => {
93
+ const { container } = renderWithProviders(<Card tier="feature">Feature</Card>);
94
+ expect(container.querySelector('[data-tier="feature"]')).not.toHaveAttribute(
95
+ "data-constraint-container",
96
+ );
97
+ });
98
+
99
+ it("declares effective nested radius and space without computing an audit verdict", () => {
100
+ const { container } = renderWithProviders(
101
+ <Preset overrides={{ borderRadius: "none", space: "large", density: "comfortable" }}>
102
+ <Preset overrides={{ borderRadius: "full", density: "compact" }}>
103
+ <Card tier="elevated">Nested</Card>
104
+ </Preset>
105
+ </Preset>,
106
+ );
107
+ const frame = container.querySelector('[data-tier="elevated"]');
108
+ expect(frame).toHaveAttribute("data-constraint-container", "Card");
109
+ expect(frame).toHaveAttribute("data-radius-knob", "full");
110
+ expect(frame).toHaveAttribute("data-space-knob", "medium");
111
+ });
112
+
41
113
  it("writes tier, density, nested-scale and nested-px onto the frame", () => {
42
114
  const { container } = renderWithProviders(
43
115
  <Card>
@@ -49,6 +121,7 @@ describe("Card host data attributes", () => {
49
121
  expect(frame.getAttribute("data-density")).toBe("comfortable");
50
122
  expect(frame.getAttribute("data-nested-scale")).toBe("root");
51
123
  expect(Number(frame.getAttribute("data-nested-px"))).toBeGreaterThan(0);
124
+ expect(frame.hasAttribute("dataset")).toBe(false);
52
125
  });
53
126
 
54
127
  it("elevated and feature tiers stamp data-tier", () => {
@@ -61,7 +61,7 @@ export const WithHeaderFooter: Story = {
61
61
  <Paragraph>Main content between header and footer.</Paragraph>
62
62
  <Card.Footer>
63
63
  <XStack gap="$2">
64
- <Button variant="outlined">Cancel</Button>
64
+ <Button>Cancel</Button>
65
65
  <Button>Confirm</Button>
66
66
  </XStack>
67
67
  </Card.Footer>
package/src/Card.tsx CHANGED
@@ -1,4 +1,4 @@
1
- import { Preset, useResolvedKnobs } from "@multiplatform.one/theme";
1
+ import { Preset, borderRadiusMap, useResolvedKnobs } from "@multiplatform.one/theme";
2
2
  import type { ReactNode } from "react";
3
3
  import { CardFooter } from "./CardFooter";
4
4
  import { CardHeader } from "./CardHeader";
@@ -69,6 +69,11 @@ function CardRoot({ children, tier = "content", ...props }: CardProps) {
69
69
  ? knobProps.featureSurface
70
70
  : knobProps.cardSurface;
71
71
  const nested = knobProps.density === "compact";
72
+ // Decode the uncapped token through the canonical map. This preserves the
73
+ // effective nested knob without asserting anything about the painted cap.
74
+ const radiusKnob = Object.entries(borderRadiusMap).find(
75
+ ([, token]) => token === knobProps.borderRadius.borderRadius,
76
+ )?.[0];
72
77
  // panelPadding first so tier recipes may override (feature uses a larger
73
78
  // inset); elevatedSurface carries no padding of its own.
74
79
  return (
@@ -81,6 +86,13 @@ function CardRoot({ children, tier = "content", ...props }: CardProps) {
81
86
  "data-density": knobProps.density,
82
87
  "data-nested-scale": nested ? "nested" : "root",
83
88
  "data-nested-px": String(knobProps.nestedControl.px),
89
+ ...(tier !== "feature" && radiusKnob
90
+ ? {
91
+ "data-constraint-container": "Card",
92
+ "data-radius-knob": radiusKnob,
93
+ "data-space-knob": knobProps.space,
94
+ }
95
+ : {}),
84
96
  })}
85
97
  {...props}
86
98
  >
@@ -31,7 +31,7 @@ export const Default: Story = {
31
31
  <Card.Footer>
32
32
  Ready to submit
33
33
  <XStack gap="$2">
34
- <Button variant="outlined">Cancel</Button>
34
+ <Button>Cancel</Button>
35
35
  <Button>Confirm</Button>
36
36
  </XStack>
37
37
  </Card.Footer>
@@ -55,12 +55,8 @@ export const ManyActionsNarrow: Story = {
55
55
  <Paragraph>Narrow card body.</Paragraph>
56
56
  <Card.Footer>
57
57
  <XStack gap="$2" flexWrap="wrap">
58
- <Button size="$2" variant="outlined">
59
- A very long action label
60
- </Button>
61
- <Button size="$2" variant="outlined">
62
- Another action
63
- </Button>
58
+ <Button size="$2">A very long action label</Button>
59
+ <Button size="$2">Another action</Button>
64
60
  <Button size="$2">Primary confirm</Button>
65
61
  </XStack>
66
62
  </Card.Footer>
@@ -8,7 +8,8 @@ import { wrapBareTextChildren } from "./shared/textRidesText";
8
8
  *
9
9
  * Nested hue is opt-in on the Card frame (R12) — this part does not wrap Tint.
10
10
  * NestedScale stays on Card (LC-73). This host is a zero-padding slot
11
- * (LC-09); T-BODY rides caption TEXT nodes (LC-82 / R7), never the View.
11
+ * (LC-09); children own their row layout and wrap within the card width.
12
+ * T-BODY rides caption TEXT nodes (LC-82 / R7), never the View.
12
13
  */
13
14
 
14
15
  export type CardFooterProps = ViewProps & { children?: ReactNode };
@@ -34,6 +35,7 @@ export function CardFooter({ children, ...props }: CardFooterProps) {
34
35
  return (
35
36
  <TamaguiCard.Footer
36
37
  padding={0}
38
+ flexDirection="column"
37
39
  {...knobProps.gap}
38
40
  {...hostData({ "data-slot": "footer" })}
39
41
  {...props}
@@ -40,9 +40,7 @@ export const WithActions: Story = {
40
40
  <Card.Header>
41
41
  <XStack justifyContent="space-between" alignItems="center" gap="$2" flexWrap="wrap">
42
42
  <SizableText fontWeight="700">Header with actions</SizableText>
43
- <Button size="$2" variant="outlined">
44
- Edit
45
- </Button>
43
+ <Button size="$2">Edit</Button>
46
44
  </XStack>
47
45
  </Card.Header>
48
46
  </Card>
@@ -1,7 +1,7 @@
1
1
  import type { Meta, StoryObj } from "@storybook/react-native-web-vite";
2
2
  import { Button } from "@multiplatform.one/forms";
3
- import { Text, YStack } from "tamagui";
4
- import { Collapsible } from "./tamagui";
3
+ import { Text } from "./Text";
4
+ import { Collapsible, YStack } from "./tamagui";
5
5
 
6
6
  const meta: Meta<typeof Collapsible> = {
7
7
  title: "Components/Collapsible",
@@ -0,0 +1,23 @@
1
+ import { forwardRef, type ComponentProps, type ComponentRef } from "react";
2
+ import { isWeb } from "@multiplatform.one/platform";
3
+ import { Collapsible as TamaguiCollapsible, withStaticProperties } from "tamagui";
4
+
5
+ export type CollapsibleTriggerProps = ComponentProps<typeof TamaguiCollapsible.Trigger> & {
6
+ /** Web button intent; disclosure controls do not submit forms by default. */
7
+ type?: "button" | "submit" | "reset";
8
+ };
9
+
10
+ const Trigger = TamaguiCollapsible.Trigger.styleable<CollapsibleTriggerProps>(
11
+ ({ type = "button", ...props }, ref) => (
12
+ <TamaguiCollapsible.Trigger {...(isWeb ? { type } : {})} {...props} ref={ref} />
13
+ ),
14
+ );
15
+
16
+ // A separate root keeps Tamagui's shared compound untouched while preserving
17
+ // its forwarded ref and content implementation.
18
+ export const Collapsible = withStaticProperties(
19
+ forwardRef<ComponentRef<typeof TamaguiCollapsible>, ComponentProps<typeof TamaguiCollapsible>>(
20
+ (props, ref) => <TamaguiCollapsible {...props} ref={ref} />,
21
+ ),
22
+ { Trigger, Content: TamaguiCollapsible.Content },
23
+ );
@@ -3,6 +3,7 @@ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
3
3
  import { renderWithProviders } from "@multiplatform.one/test-utils";
4
4
  import { getToasts, resetToasts } from "../Toast/store";
5
5
  import { getFeedback, resetFeedback } from "../feedback/store";
6
+ import { NotifyHost } from "../feedback";
6
7
  import { CopyField } from "./index";
7
8
 
8
9
  function copyOf(container: HTMLElement) {
@@ -35,13 +36,16 @@ describe("CopyField", () => {
35
36
  const copy = copyOf(result.container);
36
37
  if (!copy) throw new Error("copy not found");
37
38
  expect(copy.getAttribute("tabindex")).toBe("0");
39
+ expect(copy.getAttribute("aria-label")).toBe("Copy to clipboard");
38
40
  expect(copy.className).toMatch(/mp-chip-dismiss/);
39
41
  expect(copy.querySelector(".mp-chip-dismiss-ring")).not.toBeNull();
40
42
  });
41
43
 
42
44
  it("success routes through notify() as a one-line past-tense toast", async () => {
43
45
  const result = renderWithProviders(
44
- <CopyField label="API token" value="mpo_live_4f2a9c81e0b3" />,
46
+ <NotifyHost>
47
+ <CopyField label="API token" value="mpo_live_4f2a9c81e0b3" />
48
+ </NotifyHost>,
45
49
  );
46
50
  const copy = copyOf(result.container);
47
51
  if (!copy) throw new Error("copy not found");
@@ -54,6 +58,11 @@ describe("CopyField", () => {
54
58
  expect(toast?.title).not.toMatch(/success/i);
55
59
  expect(getFeedback()).toHaveLength(0);
56
60
  expect(copyOf(result.container)?.querySelector(".mp-chip-dismiss-ring")).not.toBeNull();
61
+ expect(await result.findByText("Copied to clipboard.")).toBeInTheDocument();
62
+ await vi.waitFor(() => {
63
+ const live = document.querySelector("[aria-live]:not([aria-live='off'])");
64
+ expect(live?.textContent ?? "").toMatch(/Copied to clipboard/);
65
+ });
57
66
  });
58
67
 
59
68
  it("failure is a field-scoped inline alert and never a toast", async () => {
@@ -72,5 +81,61 @@ describe("CopyField", () => {
72
81
  expect(alert?.scope).toBe("field");
73
82
  expect(alert?.body).toBe("Copy failed.");
74
83
  expect(alert?.body).not.toMatch(/success/i);
84
+ expect(await result.findByText("Copy failed.")).toBeInTheDocument();
85
+ });
86
+
87
+ it("shows a failed copy only beside its own field and clears it after success", async () => {
88
+ const result = renderWithProviders(
89
+ <>
90
+ <div data-testid="first-copy">
91
+ <CopyField label="First token" value="first" />
92
+ </div>
93
+ <div data-testid="second-copy">
94
+ <CopyField label="Second token" value="second" />
95
+ </div>
96
+ </>,
97
+ );
98
+ const first = result.getByTestId("first-copy");
99
+ const second = result.getByTestId("second-copy");
100
+ writeText.mockRejectedValueOnce(new Error("Denied"));
101
+ fireEvent.click(copyOf(first)!);
102
+ await vi.waitFor(() => expect(first.textContent).toContain("Copy failed."));
103
+ expect(second.textContent).not.toContain("Copy failed.");
104
+ writeText.mockRejectedValueOnce(new Error("Denied"));
105
+ fireEvent.click(copyOf(second)!);
106
+ await vi.waitFor(() => expect(second.textContent).toContain("Copy failed."));
107
+ fireEvent.click(copyOf(first)!);
108
+ await vi.waitFor(() => expect(first.textContent).not.toContain("Copy failed."));
109
+ expect(second.textContent).toContain("Copy failed.");
110
+ expect(getToasts()).toHaveLength(1);
111
+ });
112
+
113
+ it("replaces repeated failures and removes its feedback on unmount", async () => {
114
+ writeText.mockRejectedValue(new Error("Denied"));
115
+ const result = renderWithProviders(<CopyField label="Token" value="first" />);
116
+ fireEvent.click(copyOf(result.container)!);
117
+ await vi.waitFor(() => expect(getFeedback()).toHaveLength(1));
118
+ fireEvent.click(copyOf(result.container)!);
119
+ await vi.waitFor(() => expect(writeText).toHaveBeenCalledTimes(2));
120
+ expect(result.getAllByText("Copy failed.")).toHaveLength(1);
121
+ expect(getFeedback()).toHaveLength(1);
122
+ result.unmount();
123
+ expect(getFeedback()).toHaveLength(0);
124
+ });
125
+
126
+ it("ignores a clipboard result after its field unmounts", async () => {
127
+ let rejectCopy!: (reason: Error) => void;
128
+ writeText.mockReturnValue(
129
+ new Promise((_, reject) => {
130
+ rejectCopy = reject;
131
+ }),
132
+ );
133
+ const result = renderWithProviders(<CopyField label="Token" value="first" />);
134
+ fireEvent.click(copyOf(result.container)!);
135
+ result.unmount();
136
+ rejectCopy(new Error("Denied"));
137
+ await new Promise((resolve) => setTimeout(resolve, 0));
138
+ expect(getFeedback()).toHaveLength(0);
139
+ expect(getToasts()).toHaveLength(0);
75
140
  });
76
141
  });