@multiplatform.one/components 7.7.6 → 7.10.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 (885) hide show
  1. package/dist/cjs/Accordion/index.cjs +3 -3
  2. package/dist/cjs/Accordion/index.native.js +4 -4
  3. package/dist/cjs/Accordion/index.native.js.map +1 -1
  4. package/dist/cjs/Button.native.js.map +1 -1
  5. package/dist/cjs/Card.cjs +7 -1
  6. package/dist/cjs/Card.native.js +11 -1
  7. package/dist/cjs/Card.native.js.map +1 -1
  8. package/dist/cjs/CardFooter.cjs +1 -0
  9. package/dist/cjs/CardFooter.native.js +1 -0
  10. package/dist/cjs/CardFooter.native.js.map +1 -1
  11. package/dist/cjs/Chip/index.cjs +1 -1
  12. package/dist/cjs/Chip/index.native.js +1 -1
  13. package/dist/cjs/Chip/index.native.js.map +1 -1
  14. package/dist/cjs/ContextMenu/index.cjs +3 -3
  15. package/dist/cjs/ContextMenu/index.native.js +3 -3
  16. package/dist/cjs/ContextMenu/index.native.js.map +1 -1
  17. package/dist/cjs/CopyField/index.cjs +6 -1
  18. package/dist/cjs/CopyField/index.native.js +6 -1
  19. package/dist/cjs/CopyField/index.native.js.map +1 -1
  20. package/dist/cjs/DropdownMenu/index.cjs +34 -4
  21. package/dist/cjs/DropdownMenu/index.native.js +34 -4
  22. package/dist/cjs/DropdownMenu/index.native.js.map +1 -1
  23. package/dist/cjs/Meter/index.cjs +15 -7
  24. package/dist/cjs/Meter/index.native.js +15 -7
  25. package/dist/cjs/Meter/index.native.js.map +1 -1
  26. package/dist/cjs/Meter/meter.cjs +1 -2
  27. package/dist/cjs/Meter/meter.native.js +1 -2
  28. package/dist/cjs/Meter/meter.native.js.map +1 -1
  29. package/dist/cjs/Pagination.cjs +2 -2
  30. package/dist/cjs/Pagination.native.js +2 -2
  31. package/dist/cjs/Pagination.native.js.map +1 -1
  32. package/dist/cjs/ProgressSteps/index.cjs +3 -3
  33. package/dist/cjs/ProgressSteps/index.native.js +3 -3
  34. package/dist/cjs/ProgressSteps/index.native.js.map +1 -1
  35. package/dist/cjs/Quote/index.cjs +1 -2
  36. package/dist/cjs/Quote/index.native.js +1 -2
  37. package/dist/cjs/Quote/index.native.js.map +1 -1
  38. package/dist/cjs/Tabs/index.cjs +8 -7
  39. package/dist/cjs/Tabs/index.native.js +9 -8
  40. package/dist/cjs/Tabs/index.native.js.map +1 -1
  41. package/dist/cjs/Toast/index.cjs +57 -7
  42. package/dist/cjs/Toast/index.native.js +59 -7
  43. package/dist/cjs/Toast/index.native.js.map +1 -1
  44. package/dist/cjs/TreeSelect/index.cjs +46 -7
  45. package/dist/cjs/TreeSelect/index.native.js +58 -7
  46. package/dist/cjs/TreeSelect/index.native.js.map +1 -1
  47. package/dist/cjs/actions/DestructiveAction.cjs +7 -13
  48. package/dist/cjs/actions/DestructiveAction.native.js +7 -15
  49. package/dist/cjs/actions/DestructiveAction.native.js.map +1 -1
  50. package/dist/cjs/charts/Axis.cjs +5 -0
  51. package/dist/cjs/charts/Axis.native.js +5 -0
  52. package/dist/cjs/charts/Axis.native.js.map +1 -1
  53. package/dist/cjs/charts/BarChart.cjs +71 -57
  54. package/dist/cjs/charts/BarChart.native.js +81 -67
  55. package/dist/cjs/charts/BarChart.native.js.map +1 -1
  56. package/dist/cjs/charts/ChartDataView.cjs +212 -0
  57. package/dist/cjs/charts/ChartDataView.native.js +224 -0
  58. package/dist/cjs/charts/ChartDataView.native.js.map +1 -0
  59. package/dist/cjs/charts/ChartSurface.cjs +5 -1
  60. package/dist/cjs/charts/ChartSurface.native.js +5 -1
  61. package/dist/cjs/charts/ChartSurface.native.js.map +1 -1
  62. package/dist/cjs/charts/LineChart.cjs +81 -67
  63. package/dist/cjs/charts/LineChart.native.js +94 -80
  64. package/dist/cjs/charts/LineChart.native.js.map +1 -1
  65. package/dist/cjs/charts/PieChart.cjs +98 -74
  66. package/dist/cjs/charts/PieChart.native.js +109 -85
  67. package/dist/cjs/charts/PieChart.native.js.map +1 -1
  68. package/dist/cjs/charts/Sparkline.cjs +10 -1
  69. package/dist/cjs/charts/Sparkline.native.js +10 -1
  70. package/dist/cjs/charts/Sparkline.native.js.map +1 -1
  71. package/dist/cjs/charts/accessibility.cjs +4 -0
  72. package/dist/cjs/charts/accessibility.native.js +7 -0
  73. package/dist/cjs/charts/accessibility.native.js.map +1 -1
  74. package/dist/cjs/charts/index.cjs +3 -1
  75. package/dist/cjs/charts/index.native.js +2 -0
  76. package/dist/cjs/charts/index.native.js.map +1 -1
  77. package/dist/cjs/charts/math.cjs +16 -0
  78. package/dist/cjs/charts/math.native.js +18 -0
  79. package/dist/cjs/charts/math.native.js.map +1 -1
  80. package/dist/cjs/charts/series.cjs +49 -7
  81. package/dist/cjs/charts/series.native.js +53 -11
  82. package/dist/cjs/charts/series.native.js.map +1 -1
  83. package/dist/cjs/charts/svg.cjs +46 -3
  84. package/dist/cjs/charts/svg.native.js +46 -3
  85. package/dist/cjs/charts/svg.native.js.map +1 -1
  86. package/dist/cjs/code/CodeBlock/index.cjs +6 -1
  87. package/dist/cjs/code/CodeBlock/index.native.js +6 -1
  88. package/dist/cjs/code/CodeBlock/index.native.js.map +1 -1
  89. package/dist/cjs/code/HighlightedCode/index.cjs +1 -1
  90. package/dist/cjs/code/HighlightedCode/index.native.js +1 -1
  91. package/dist/cjs/code/HighlightedCode/index.native.js.map +1 -1
  92. package/dist/cjs/componentColors.cjs +6 -4
  93. package/dist/cjs/componentColors.native.js +6 -4
  94. package/dist/cjs/componentColors.native.js.map +1 -1
  95. package/dist/cjs/feedback/ConfirmDialog.cjs +7 -21
  96. package/dist/cjs/feedback/ConfirmDialog.native.js +7 -22
  97. package/dist/cjs/feedback/ConfirmDialog.native.js.map +1 -1
  98. package/dist/cjs/feedback/NotifyHost.cjs +2 -1
  99. package/dist/cjs/feedback/NotifyHost.native.js +3 -2
  100. package/dist/cjs/feedback/NotifyHost.native.js.map +1 -1
  101. package/dist/cjs/feedback/copy.cjs +36 -4
  102. package/dist/cjs/feedback/copy.native.js +38 -4
  103. package/dist/cjs/feedback/copy.native.js.map +1 -1
  104. package/dist/cjs/feedback/index.cjs +1 -0
  105. package/dist/cjs/feedback/index.native.js +1 -0
  106. package/dist/cjs/feedback/index.native.js.map +1 -1
  107. package/dist/cjs/feedback/notify.cjs +1 -0
  108. package/dist/cjs/feedback/notify.native.js +1 -0
  109. package/dist/cjs/feedback/notify.native.js.map +1 -1
  110. package/dist/cjs/feedback/route.cjs +3 -0
  111. package/dist/cjs/feedback/route.native.js +3 -0
  112. package/dist/cjs/feedback/route.native.js.map +1 -1
  113. package/dist/cjs/feedback/store.cjs +6 -0
  114. package/dist/cjs/feedback/store.native.js +8 -0
  115. package/dist/cjs/feedback/store.native.js.map +1 -1
  116. package/dist/cjs/icons/lucide.cjs +2 -1
  117. package/dist/cjs/icons/lucide.native.js +2 -1
  118. package/dist/cjs/icons/lucide.native.js.map +1 -1
  119. package/dist/cjs/images/Image/ImageFrame.cjs +4 -2
  120. package/dist/cjs/images/Image/ImageFrame.native.js +4 -2
  121. package/dist/cjs/images/Image/ImageFrame.native.js.map +1 -1
  122. package/dist/cjs/layouts/AsyncBoundary.cjs +1 -2
  123. package/dist/cjs/layouts/AsyncBoundary.native.js +1 -2
  124. package/dist/cjs/layouts/AsyncBoundary.native.js.map +1 -1
  125. package/dist/cjs/layouts/EmptyState.cjs +6 -2
  126. package/dist/cjs/layouts/EmptyState.native.js +10 -6
  127. package/dist/cjs/layouts/EmptyState.native.js.map +1 -1
  128. package/dist/cjs/layouts/PaneScaffold.cjs +96 -41
  129. package/dist/cjs/layouts/PaneScaffold.native.js +97 -41
  130. package/dist/cjs/layouts/PaneScaffold.native.js.map +1 -1
  131. package/dist/cjs/layouts/attachments.cjs +4 -4
  132. package/dist/cjs/layouts/attachments.native.js +4 -4
  133. package/dist/cjs/layouts/attachments.native.js.map +1 -1
  134. package/dist/cjs/layouts/breadcrumbs.cjs +1 -2
  135. package/dist/cjs/layouts/breadcrumbs.native.js +1 -2
  136. package/dist/cjs/layouts/breadcrumbs.native.js.map +1 -1
  137. package/dist/cjs/layouts/index.cjs +2 -0
  138. package/dist/cjs/layouts/index.native.js +2 -0
  139. package/dist/cjs/layouts/index.native.js.map +1 -1
  140. package/dist/cjs/layouts/page.cjs +50 -9
  141. package/dist/cjs/layouts/page.native.js +52 -9
  142. package/dist/cjs/layouts/page.native.js.map +1 -1
  143. package/dist/cjs/layouts/sidebar.cjs +2 -2
  144. package/dist/cjs/layouts/sidebar.native.js +2 -2
  145. package/dist/cjs/layouts/sidebar.native.js.map +1 -1
  146. package/dist/cjs/layouts/tags.cjs +6 -7
  147. package/dist/cjs/layouts/tags.native.js +6 -9
  148. package/dist/cjs/layouts/tags.native.js.map +1 -1
  149. package/dist/cjs/layouts/timeline.cjs +5 -5
  150. package/dist/cjs/layouts/timeline.native.js +5 -5
  151. package/dist/cjs/layouts/timeline.native.js.map +1 -1
  152. package/dist/cjs/shared/useKeyboardInset.cjs +1 -19
  153. package/dist/cjs/shared/useKeyboardInset.native.js +3 -3
  154. package/dist/cjs/shared/useKeyboardInset.native.js.map +1 -1
  155. package/dist/cjs/surfaces.cjs +1 -0
  156. package/dist/cjs/surfaces.native.js +1 -0
  157. package/dist/cjs/surfaces.native.js.map +1 -1
  158. package/dist/cjs/views/Calendar.cjs +11 -8
  159. package/dist/cjs/views/Calendar.native.js +11 -8
  160. package/dist/cjs/views/Calendar.native.js.map +1 -1
  161. package/dist/cjs/views/Dashboard.cjs +116 -23
  162. package/dist/cjs/views/Dashboard.native.js +158 -52
  163. package/dist/cjs/views/Dashboard.native.js.map +1 -1
  164. package/dist/cjs/views/Gantt.cjs +377 -94
  165. package/dist/cjs/views/Gantt.native.js +446 -97
  166. package/dist/cjs/views/Gantt.native.js.map +1 -1
  167. package/dist/cjs/views/Kanban.cjs +2 -2
  168. package/dist/cjs/views/Kanban.native.js +2 -2
  169. package/dist/cjs/views/Kanban.native.js.map +1 -1
  170. package/dist/cjs/views/ReportBuilder.cjs +4 -4
  171. package/dist/cjs/views/ReportBuilder.native.js +4 -4
  172. package/dist/cjs/views/ReportBuilder.native.js.map +1 -1
  173. package/dist/cjs/views/TreeView.cjs +103 -6
  174. package/dist/cjs/views/TreeView.native.js +115 -6
  175. package/dist/cjs/views/TreeView.native.js.map +1 -1
  176. package/dist/cjs/views/ganttMath.cjs +91 -2
  177. package/dist/cjs/views/ganttMath.native.js +113 -3
  178. package/dist/cjs/views/ganttMath.native.js.map +1 -1
  179. package/dist/cjs/views/index.cjs +20 -1
  180. package/dist/cjs/views/index.native.js +20 -1
  181. package/dist/cjs/views/index.native.js.map +1 -1
  182. package/dist/cjs/views/treeViewReveal.cjs +55 -0
  183. package/dist/cjs/views/treeViewReveal.native.js +80 -0
  184. package/dist/cjs/views/treeViewReveal.native.js.map +1 -0
  185. package/dist/esm/Accordion/index.mjs +3 -3
  186. package/dist/esm/Accordion/index.mjs.map +1 -1
  187. package/dist/esm/Accordion/index.native.js +4 -4
  188. package/dist/esm/Accordion/index.native.js.map +1 -1
  189. package/dist/esm/Button.mjs.map +1 -1
  190. package/dist/esm/Button.native.js.map +1 -1
  191. package/dist/esm/Card.mjs +8 -2
  192. package/dist/esm/Card.mjs.map +1 -1
  193. package/dist/esm/Card.native.js +12 -2
  194. package/dist/esm/Card.native.js.map +1 -1
  195. package/dist/esm/CardFooter.mjs +1 -0
  196. package/dist/esm/CardFooter.mjs.map +1 -1
  197. package/dist/esm/CardFooter.native.js +1 -0
  198. package/dist/esm/CardFooter.native.js.map +1 -1
  199. package/dist/esm/Chip/index.mjs +1 -1
  200. package/dist/esm/Chip/index.mjs.map +1 -1
  201. package/dist/esm/Chip/index.native.js +1 -1
  202. package/dist/esm/Chip/index.native.js.map +1 -1
  203. package/dist/esm/ContextMenu/index.mjs +3 -3
  204. package/dist/esm/ContextMenu/index.mjs.map +1 -1
  205. package/dist/esm/ContextMenu/index.native.js +3 -3
  206. package/dist/esm/ContextMenu/index.native.js.map +1 -1
  207. package/dist/esm/CopyField/index.mjs +7 -2
  208. package/dist/esm/CopyField/index.mjs.map +1 -1
  209. package/dist/esm/CopyField/index.native.js +7 -2
  210. package/dist/esm/CopyField/index.native.js.map +1 -1
  211. package/dist/esm/DropdownMenu/index.mjs +35 -5
  212. package/dist/esm/DropdownMenu/index.mjs.map +1 -1
  213. package/dist/esm/DropdownMenu/index.native.js +35 -5
  214. package/dist/esm/DropdownMenu/index.native.js.map +1 -1
  215. package/dist/esm/Meter/index.mjs +15 -7
  216. package/dist/esm/Meter/index.mjs.map +1 -1
  217. package/dist/esm/Meter/index.native.js +15 -7
  218. package/dist/esm/Meter/index.native.js.map +1 -1
  219. package/dist/esm/Meter/meter.mjs +1 -2
  220. package/dist/esm/Meter/meter.mjs.map +1 -1
  221. package/dist/esm/Meter/meter.native.js +1 -2
  222. package/dist/esm/Meter/meter.native.js.map +1 -1
  223. package/dist/esm/Pagination.mjs +2 -2
  224. package/dist/esm/Pagination.mjs.map +1 -1
  225. package/dist/esm/Pagination.native.js +2 -2
  226. package/dist/esm/Pagination.native.js.map +1 -1
  227. package/dist/esm/ProgressSteps/index.mjs +3 -3
  228. package/dist/esm/ProgressSteps/index.mjs.map +1 -1
  229. package/dist/esm/ProgressSteps/index.native.js +3 -3
  230. package/dist/esm/ProgressSteps/index.native.js.map +1 -1
  231. package/dist/esm/Quote/index.mjs +1 -2
  232. package/dist/esm/Quote/index.mjs.map +1 -1
  233. package/dist/esm/Quote/index.native.js +1 -2
  234. package/dist/esm/Quote/index.native.js.map +1 -1
  235. package/dist/esm/Tabs/index.mjs +8 -7
  236. package/dist/esm/Tabs/index.mjs.map +1 -1
  237. package/dist/esm/Tabs/index.native.js +9 -8
  238. package/dist/esm/Tabs/index.native.js.map +1 -1
  239. package/dist/esm/Toast/index.mjs +56 -8
  240. package/dist/esm/Toast/index.mjs.map +1 -1
  241. package/dist/esm/Toast/index.native.js +58 -8
  242. package/dist/esm/Toast/index.native.js.map +1 -1
  243. package/dist/esm/TreeSelect/index.mjs +46 -7
  244. package/dist/esm/TreeSelect/index.mjs.map +1 -1
  245. package/dist/esm/TreeSelect/index.native.js +58 -7
  246. package/dist/esm/TreeSelect/index.native.js.map +1 -1
  247. package/dist/esm/actions/DestructiveAction.mjs +8 -14
  248. package/dist/esm/actions/DestructiveAction.mjs.map +1 -1
  249. package/dist/esm/actions/DestructiveAction.native.js +8 -16
  250. package/dist/esm/actions/DestructiveAction.native.js.map +1 -1
  251. package/dist/esm/charts/Axis.mjs +6 -1
  252. package/dist/esm/charts/Axis.mjs.map +1 -1
  253. package/dist/esm/charts/Axis.native.js +6 -1
  254. package/dist/esm/charts/Axis.native.js.map +1 -1
  255. package/dist/esm/charts/BarChart.mjs +72 -58
  256. package/dist/esm/charts/BarChart.mjs.map +1 -1
  257. package/dist/esm/charts/BarChart.native.js +82 -68
  258. package/dist/esm/charts/BarChart.native.js.map +1 -1
  259. package/dist/esm/charts/ChartDataView.mjs +185 -0
  260. package/dist/esm/charts/ChartDataView.mjs.map +1 -0
  261. package/dist/esm/charts/ChartDataView.native.js +194 -0
  262. package/dist/esm/charts/ChartDataView.native.js.map +1 -0
  263. package/dist/esm/charts/ChartSurface.mjs +5 -1
  264. package/dist/esm/charts/ChartSurface.mjs.map +1 -1
  265. package/dist/esm/charts/ChartSurface.native.js +5 -1
  266. package/dist/esm/charts/ChartSurface.native.js.map +1 -1
  267. package/dist/esm/charts/LineChart.mjs +82 -68
  268. package/dist/esm/charts/LineChart.mjs.map +1 -1
  269. package/dist/esm/charts/LineChart.native.js +95 -81
  270. package/dist/esm/charts/LineChart.native.js.map +1 -1
  271. package/dist/esm/charts/PieChart.mjs +100 -76
  272. package/dist/esm/charts/PieChart.mjs.map +1 -1
  273. package/dist/esm/charts/PieChart.native.js +111 -87
  274. package/dist/esm/charts/PieChart.native.js.map +1 -1
  275. package/dist/esm/charts/Sparkline.mjs +11 -2
  276. package/dist/esm/charts/Sparkline.mjs.map +1 -1
  277. package/dist/esm/charts/Sparkline.native.js +11 -2
  278. package/dist/esm/charts/Sparkline.native.js.map +1 -1
  279. package/dist/esm/charts/accessibility.mjs +4 -1
  280. package/dist/esm/charts/accessibility.mjs.map +1 -1
  281. package/dist/esm/charts/accessibility.native.js +7 -1
  282. package/dist/esm/charts/accessibility.native.js.map +1 -1
  283. package/dist/esm/charts/index.mjs +2 -1
  284. package/dist/esm/charts/index.mjs.map +1 -1
  285. package/dist/esm/charts/index.native.js +2 -1
  286. package/dist/esm/charts/index.native.js.map +1 -1
  287. package/dist/esm/charts/math.mjs +16 -1
  288. package/dist/esm/charts/math.mjs.map +1 -1
  289. package/dist/esm/charts/math.native.js +18 -1
  290. package/dist/esm/charts/math.native.js.map +1 -1
  291. package/dist/esm/charts/series.mjs +51 -9
  292. package/dist/esm/charts/series.mjs.map +1 -1
  293. package/dist/esm/charts/series.native.js +55 -13
  294. package/dist/esm/charts/series.native.js.map +1 -1
  295. package/dist/esm/charts/svg.mjs +40 -4
  296. package/dist/esm/charts/svg.mjs.map +1 -1
  297. package/dist/esm/charts/svg.native.js +40 -4
  298. package/dist/esm/charts/svg.native.js.map +1 -1
  299. package/dist/esm/code/CodeBlock/index.mjs +7 -2
  300. package/dist/esm/code/CodeBlock/index.mjs.map +1 -1
  301. package/dist/esm/code/CodeBlock/index.native.js +7 -2
  302. package/dist/esm/code/CodeBlock/index.native.js.map +1 -1
  303. package/dist/esm/code/HighlightedCode/index.mjs +1 -1
  304. package/dist/esm/code/HighlightedCode/index.mjs.map +1 -1
  305. package/dist/esm/code/HighlightedCode/index.native.js +1 -1
  306. package/dist/esm/code/HighlightedCode/index.native.js.map +1 -1
  307. package/dist/esm/componentColors.mjs +6 -4
  308. package/dist/esm/componentColors.mjs.map +1 -1
  309. package/dist/esm/componentColors.native.js +6 -4
  310. package/dist/esm/componentColors.native.js.map +1 -1
  311. package/dist/esm/feedback/ConfirmDialog.mjs +8 -22
  312. package/dist/esm/feedback/ConfirmDialog.mjs.map +1 -1
  313. package/dist/esm/feedback/ConfirmDialog.native.js +8 -23
  314. package/dist/esm/feedback/ConfirmDialog.native.js.map +1 -1
  315. package/dist/esm/feedback/NotifyHost.mjs +2 -1
  316. package/dist/esm/feedback/NotifyHost.mjs.map +1 -1
  317. package/dist/esm/feedback/NotifyHost.native.js +3 -2
  318. package/dist/esm/feedback/NotifyHost.native.js.map +1 -1
  319. package/dist/esm/feedback/copy.mjs +35 -4
  320. package/dist/esm/feedback/copy.mjs.map +1 -1
  321. package/dist/esm/feedback/copy.native.js +37 -4
  322. package/dist/esm/feedback/copy.native.js.map +1 -1
  323. package/dist/esm/feedback/index.mjs +2 -2
  324. package/dist/esm/feedback/index.mjs.map +1 -1
  325. package/dist/esm/feedback/index.native.js +2 -2
  326. package/dist/esm/feedback/index.native.js.map +1 -1
  327. package/dist/esm/feedback/notify.mjs +1 -0
  328. package/dist/esm/feedback/notify.mjs.map +1 -1
  329. package/dist/esm/feedback/notify.native.js +1 -0
  330. package/dist/esm/feedback/notify.native.js.map +1 -1
  331. package/dist/esm/feedback/route.mjs +3 -0
  332. package/dist/esm/feedback/route.mjs.map +1 -1
  333. package/dist/esm/feedback/route.native.js +3 -0
  334. package/dist/esm/feedback/route.native.js.map +1 -1
  335. package/dist/esm/feedback/store.mjs +6 -1
  336. package/dist/esm/feedback/store.mjs.map +1 -1
  337. package/dist/esm/feedback/store.native.js +8 -1
  338. package/dist/esm/feedback/store.native.js.map +1 -1
  339. package/dist/esm/icons/lucide.mjs +2 -2
  340. package/dist/esm/icons/lucide.mjs.map +1 -1
  341. package/dist/esm/icons/lucide.native.js +2 -2
  342. package/dist/esm/icons/lucide.native.js.map +1 -1
  343. package/dist/esm/images/Image/ImageFrame.mjs +4 -2
  344. package/dist/esm/images/Image/ImageFrame.mjs.map +1 -1
  345. package/dist/esm/images/Image/ImageFrame.native.js +4 -2
  346. package/dist/esm/images/Image/ImageFrame.native.js.map +1 -1
  347. package/dist/esm/layouts/AsyncBoundary.mjs +1 -2
  348. package/dist/esm/layouts/AsyncBoundary.mjs.map +1 -1
  349. package/dist/esm/layouts/AsyncBoundary.native.js +1 -2
  350. package/dist/esm/layouts/AsyncBoundary.native.js.map +1 -1
  351. package/dist/esm/layouts/EmptyState.mjs +7 -3
  352. package/dist/esm/layouts/EmptyState.mjs.map +1 -1
  353. package/dist/esm/layouts/EmptyState.native.js +11 -7
  354. package/dist/esm/layouts/EmptyState.native.js.map +1 -1
  355. package/dist/esm/layouts/PaneScaffold.mjs +97 -42
  356. package/dist/esm/layouts/PaneScaffold.mjs.map +1 -1
  357. package/dist/esm/layouts/PaneScaffold.native.js +98 -42
  358. package/dist/esm/layouts/PaneScaffold.native.js.map +1 -1
  359. package/dist/esm/layouts/attachments.mjs +4 -4
  360. package/dist/esm/layouts/attachments.mjs.map +1 -1
  361. package/dist/esm/layouts/attachments.native.js +4 -4
  362. package/dist/esm/layouts/attachments.native.js.map +1 -1
  363. package/dist/esm/layouts/breadcrumbs.mjs +1 -2
  364. package/dist/esm/layouts/breadcrumbs.mjs.map +1 -1
  365. package/dist/esm/layouts/breadcrumbs.native.js +1 -2
  366. package/dist/esm/layouts/breadcrumbs.native.js.map +1 -1
  367. package/dist/esm/layouts/index.mjs +2 -1
  368. package/dist/esm/layouts/index.mjs.map +1 -1
  369. package/dist/esm/layouts/index.native.js +2 -1
  370. package/dist/esm/layouts/index.native.js.map +1 -1
  371. package/dist/esm/layouts/page.mjs +51 -10
  372. package/dist/esm/layouts/page.mjs.map +1 -1
  373. package/dist/esm/layouts/page.native.js +53 -10
  374. package/dist/esm/layouts/page.native.js.map +1 -1
  375. package/dist/esm/layouts/sidebar.mjs +2 -2
  376. package/dist/esm/layouts/sidebar.mjs.map +1 -1
  377. package/dist/esm/layouts/sidebar.native.js +2 -2
  378. package/dist/esm/layouts/sidebar.native.js.map +1 -1
  379. package/dist/esm/layouts/tags.mjs +6 -7
  380. package/dist/esm/layouts/tags.mjs.map +1 -1
  381. package/dist/esm/layouts/tags.native.js +6 -9
  382. package/dist/esm/layouts/tags.native.js.map +1 -1
  383. package/dist/esm/layouts/timeline.mjs +5 -5
  384. package/dist/esm/layouts/timeline.mjs.map +1 -1
  385. package/dist/esm/layouts/timeline.native.js +5 -5
  386. package/dist/esm/layouts/timeline.native.js.map +1 -1
  387. package/dist/esm/shared/useKeyboardInset.mjs +1 -19
  388. package/dist/esm/shared/useKeyboardInset.mjs.map +1 -1
  389. package/dist/esm/shared/useKeyboardInset.native.js.map +1 -1
  390. package/dist/esm/surfaces.mjs +1 -0
  391. package/dist/esm/surfaces.mjs.map +1 -1
  392. package/dist/esm/surfaces.native.js +1 -0
  393. package/dist/esm/surfaces.native.js.map +1 -1
  394. package/dist/esm/views/Calendar.mjs +11 -8
  395. package/dist/esm/views/Calendar.mjs.map +1 -1
  396. package/dist/esm/views/Calendar.native.js +11 -8
  397. package/dist/esm/views/Calendar.native.js.map +1 -1
  398. package/dist/esm/views/Dashboard.mjs +118 -25
  399. package/dist/esm/views/Dashboard.mjs.map +1 -1
  400. package/dist/esm/views/Dashboard.native.js +160 -54
  401. package/dist/esm/views/Dashboard.native.js.map +1 -1
  402. package/dist/esm/views/Gantt.mjs +379 -96
  403. package/dist/esm/views/Gantt.mjs.map +1 -1
  404. package/dist/esm/views/Gantt.native.js +448 -99
  405. package/dist/esm/views/Gantt.native.js.map +1 -1
  406. package/dist/esm/views/Kanban.mjs +2 -2
  407. package/dist/esm/views/Kanban.mjs.map +1 -1
  408. package/dist/esm/views/Kanban.native.js +2 -2
  409. package/dist/esm/views/Kanban.native.js.map +1 -1
  410. package/dist/esm/views/ReportBuilder.mjs +4 -4
  411. package/dist/esm/views/ReportBuilder.mjs.map +1 -1
  412. package/dist/esm/views/ReportBuilder.native.js +4 -4
  413. package/dist/esm/views/ReportBuilder.native.js.map +1 -1
  414. package/dist/esm/views/TreeView.mjs +104 -7
  415. package/dist/esm/views/TreeView.mjs.map +1 -1
  416. package/dist/esm/views/TreeView.native.js +116 -7
  417. package/dist/esm/views/TreeView.native.js.map +1 -1
  418. package/dist/esm/views/ganttMath.mjs +84 -3
  419. package/dist/esm/views/ganttMath.mjs.map +1 -1
  420. package/dist/esm/views/ganttMath.native.js +106 -4
  421. package/dist/esm/views/ganttMath.native.js.map +1 -1
  422. package/dist/esm/views/index.mjs +2 -2
  423. package/dist/esm/views/index.mjs.map +1 -1
  424. package/dist/esm/views/index.native.js +2 -2
  425. package/dist/esm/views/index.native.js.map +1 -1
  426. package/dist/esm/views/treeViewReveal.mjs +29 -0
  427. package/dist/esm/views/treeViewReveal.mjs.map +1 -0
  428. package/dist/esm/views/treeViewReveal.native.js +51 -0
  429. package/dist/esm/views/treeViewReveal.native.js.map +1 -0
  430. package/dist/jsx/Accordion/index.mjs +3 -3
  431. package/dist/jsx/Accordion/index.mjs.map +1 -1
  432. package/dist/jsx/Accordion/index.native.js +4 -4
  433. package/dist/jsx/Accordion/index.native.js.map +1 -1
  434. package/dist/jsx/Button.mjs.map +1 -1
  435. package/dist/jsx/Button.native.js.map +1 -1
  436. package/dist/jsx/Card.mjs +8 -2
  437. package/dist/jsx/Card.mjs.map +1 -1
  438. package/dist/jsx/Card.native.js +11 -1
  439. package/dist/jsx/Card.native.js.map +1 -1
  440. package/dist/jsx/CardFooter.mjs +1 -0
  441. package/dist/jsx/CardFooter.mjs.map +1 -1
  442. package/dist/jsx/CardFooter.native.js +1 -0
  443. package/dist/jsx/CardFooter.native.js.map +1 -1
  444. package/dist/jsx/Chip/index.mjs +1 -1
  445. package/dist/jsx/Chip/index.mjs.map +1 -1
  446. package/dist/jsx/Chip/index.native.js +1 -1
  447. package/dist/jsx/Chip/index.native.js.map +1 -1
  448. package/dist/jsx/ContextMenu/index.mjs +3 -3
  449. package/dist/jsx/ContextMenu/index.mjs.map +1 -1
  450. package/dist/jsx/ContextMenu/index.native.js +3 -3
  451. package/dist/jsx/ContextMenu/index.native.js.map +1 -1
  452. package/dist/jsx/CopyField/index.mjs +7 -2
  453. package/dist/jsx/CopyField/index.mjs.map +1 -1
  454. package/dist/jsx/CopyField/index.native.js +6 -1
  455. package/dist/jsx/CopyField/index.native.js.map +1 -1
  456. package/dist/jsx/DropdownMenu/index.mjs +35 -5
  457. package/dist/jsx/DropdownMenu/index.mjs.map +1 -1
  458. package/dist/jsx/DropdownMenu/index.native.js +34 -4
  459. package/dist/jsx/DropdownMenu/index.native.js.map +1 -1
  460. package/dist/jsx/Meter/index.mjs +15 -7
  461. package/dist/jsx/Meter/index.mjs.map +1 -1
  462. package/dist/jsx/Meter/index.native.js +15 -7
  463. package/dist/jsx/Meter/index.native.js.map +1 -1
  464. package/dist/jsx/Meter/meter.mjs +1 -2
  465. package/dist/jsx/Meter/meter.mjs.map +1 -1
  466. package/dist/jsx/Meter/meter.native.js +1 -2
  467. package/dist/jsx/Meter/meter.native.js.map +1 -1
  468. package/dist/jsx/Pagination.mjs +2 -2
  469. package/dist/jsx/Pagination.mjs.map +1 -1
  470. package/dist/jsx/Pagination.native.js +2 -2
  471. package/dist/jsx/Pagination.native.js.map +1 -1
  472. package/dist/jsx/ProgressSteps/index.mjs +3 -3
  473. package/dist/jsx/ProgressSteps/index.mjs.map +1 -1
  474. package/dist/jsx/ProgressSteps/index.native.js +3 -3
  475. package/dist/jsx/ProgressSteps/index.native.js.map +1 -1
  476. package/dist/jsx/Quote/index.mjs +1 -2
  477. package/dist/jsx/Quote/index.mjs.map +1 -1
  478. package/dist/jsx/Quote/index.native.js +1 -2
  479. package/dist/jsx/Quote/index.native.js.map +1 -1
  480. package/dist/jsx/Tabs/index.mjs +8 -7
  481. package/dist/jsx/Tabs/index.mjs.map +1 -1
  482. package/dist/jsx/Tabs/index.native.js +9 -8
  483. package/dist/jsx/Tabs/index.native.js.map +1 -1
  484. package/dist/jsx/Toast/index.mjs +56 -8
  485. package/dist/jsx/Toast/index.mjs.map +1 -1
  486. package/dist/jsx/Toast/index.native.js +59 -7
  487. package/dist/jsx/Toast/index.native.js.map +1 -1
  488. package/dist/jsx/TreeSelect/index.mjs +46 -7
  489. package/dist/jsx/TreeSelect/index.mjs.map +1 -1
  490. package/dist/jsx/TreeSelect/index.native.js +58 -7
  491. package/dist/jsx/TreeSelect/index.native.js.map +1 -1
  492. package/dist/jsx/actions/DestructiveAction.mjs +8 -14
  493. package/dist/jsx/actions/DestructiveAction.mjs.map +1 -1
  494. package/dist/jsx/actions/DestructiveAction.native.js +7 -15
  495. package/dist/jsx/actions/DestructiveAction.native.js.map +1 -1
  496. package/dist/jsx/charts/Axis.mjs +6 -1
  497. package/dist/jsx/charts/Axis.mjs.map +1 -1
  498. package/dist/jsx/charts/Axis.native.js +5 -0
  499. package/dist/jsx/charts/Axis.native.js.map +1 -1
  500. package/dist/jsx/charts/BarChart.mjs +72 -58
  501. package/dist/jsx/charts/BarChart.mjs.map +1 -1
  502. package/dist/jsx/charts/BarChart.native.js +81 -67
  503. package/dist/jsx/charts/BarChart.native.js.map +1 -1
  504. package/dist/jsx/charts/ChartDataView.mjs +185 -0
  505. package/dist/jsx/charts/ChartDataView.mjs.map +1 -0
  506. package/dist/jsx/charts/ChartDataView.native.js +224 -0
  507. package/dist/jsx/charts/ChartDataView.native.js.map +1 -0
  508. package/dist/jsx/charts/ChartSurface.mjs +5 -1
  509. package/dist/jsx/charts/ChartSurface.mjs.map +1 -1
  510. package/dist/jsx/charts/ChartSurface.native.js +5 -1
  511. package/dist/jsx/charts/ChartSurface.native.js.map +1 -1
  512. package/dist/jsx/charts/LineChart.mjs +82 -68
  513. package/dist/jsx/charts/LineChart.mjs.map +1 -1
  514. package/dist/jsx/charts/LineChart.native.js +94 -80
  515. package/dist/jsx/charts/LineChart.native.js.map +1 -1
  516. package/dist/jsx/charts/PieChart.mjs +100 -76
  517. package/dist/jsx/charts/PieChart.mjs.map +1 -1
  518. package/dist/jsx/charts/PieChart.native.js +109 -85
  519. package/dist/jsx/charts/PieChart.native.js.map +1 -1
  520. package/dist/jsx/charts/Sparkline.mjs +11 -2
  521. package/dist/jsx/charts/Sparkline.mjs.map +1 -1
  522. package/dist/jsx/charts/Sparkline.native.js +10 -1
  523. package/dist/jsx/charts/Sparkline.native.js.map +1 -1
  524. package/dist/jsx/charts/accessibility.mjs +4 -1
  525. package/dist/jsx/charts/accessibility.mjs.map +1 -1
  526. package/dist/jsx/charts/accessibility.native.js +7 -0
  527. package/dist/jsx/charts/accessibility.native.js.map +1 -1
  528. package/dist/jsx/charts/index.mjs +2 -1
  529. package/dist/jsx/charts/index.mjs.map +1 -1
  530. package/dist/jsx/charts/index.native.js +2 -0
  531. package/dist/jsx/charts/index.native.js.map +1 -1
  532. package/dist/jsx/charts/math.mjs +16 -1
  533. package/dist/jsx/charts/math.mjs.map +1 -1
  534. package/dist/jsx/charts/math.native.js +18 -0
  535. package/dist/jsx/charts/math.native.js.map +1 -1
  536. package/dist/jsx/charts/series.mjs +51 -9
  537. package/dist/jsx/charts/series.mjs.map +1 -1
  538. package/dist/jsx/charts/series.native.js +53 -11
  539. package/dist/jsx/charts/series.native.js.map +1 -1
  540. package/dist/jsx/charts/svg.mjs +40 -4
  541. package/dist/jsx/charts/svg.mjs.map +1 -1
  542. package/dist/jsx/charts/svg.native.js +46 -3
  543. package/dist/jsx/charts/svg.native.js.map +1 -1
  544. package/dist/jsx/code/CodeBlock/index.mjs +7 -2
  545. package/dist/jsx/code/CodeBlock/index.mjs.map +1 -1
  546. package/dist/jsx/code/CodeBlock/index.native.js +6 -1
  547. package/dist/jsx/code/CodeBlock/index.native.js.map +1 -1
  548. package/dist/jsx/code/HighlightedCode/index.mjs +1 -1
  549. package/dist/jsx/code/HighlightedCode/index.mjs.map +1 -1
  550. package/dist/jsx/code/HighlightedCode/index.native.js +1 -1
  551. package/dist/jsx/code/HighlightedCode/index.native.js.map +1 -1
  552. package/dist/jsx/componentColors.mjs +6 -4
  553. package/dist/jsx/componentColors.mjs.map +1 -1
  554. package/dist/jsx/componentColors.native.js +6 -4
  555. package/dist/jsx/componentColors.native.js.map +1 -1
  556. package/dist/jsx/feedback/ConfirmDialog.mjs +8 -22
  557. package/dist/jsx/feedback/ConfirmDialog.mjs.map +1 -1
  558. package/dist/jsx/feedback/ConfirmDialog.native.js +7 -22
  559. package/dist/jsx/feedback/ConfirmDialog.native.js.map +1 -1
  560. package/dist/jsx/feedback/NotifyHost.mjs +2 -1
  561. package/dist/jsx/feedback/NotifyHost.mjs.map +1 -1
  562. package/dist/jsx/feedback/NotifyHost.native.js +3 -2
  563. package/dist/jsx/feedback/NotifyHost.native.js.map +1 -1
  564. package/dist/jsx/feedback/copy.mjs +35 -4
  565. package/dist/jsx/feedback/copy.mjs.map +1 -1
  566. package/dist/jsx/feedback/copy.native.js +38 -4
  567. package/dist/jsx/feedback/copy.native.js.map +1 -1
  568. package/dist/jsx/feedback/index.mjs +2 -2
  569. package/dist/jsx/feedback/index.mjs.map +1 -1
  570. package/dist/jsx/feedback/index.native.js +1 -0
  571. package/dist/jsx/feedback/index.native.js.map +1 -1
  572. package/dist/jsx/feedback/notify.mjs +1 -0
  573. package/dist/jsx/feedback/notify.mjs.map +1 -1
  574. package/dist/jsx/feedback/notify.native.js +1 -0
  575. package/dist/jsx/feedback/notify.native.js.map +1 -1
  576. package/dist/jsx/feedback/route.mjs +3 -0
  577. package/dist/jsx/feedback/route.mjs.map +1 -1
  578. package/dist/jsx/feedback/route.native.js +3 -0
  579. package/dist/jsx/feedback/route.native.js.map +1 -1
  580. package/dist/jsx/feedback/store.mjs +6 -1
  581. package/dist/jsx/feedback/store.mjs.map +1 -1
  582. package/dist/jsx/feedback/store.native.js +8 -0
  583. package/dist/jsx/feedback/store.native.js.map +1 -1
  584. package/dist/jsx/icons/lucide.mjs +2 -2
  585. package/dist/jsx/icons/lucide.mjs.map +1 -1
  586. package/dist/jsx/icons/lucide.native.js +2 -1
  587. package/dist/jsx/images/Image/ImageFrame.mjs +4 -2
  588. package/dist/jsx/images/Image/ImageFrame.mjs.map +1 -1
  589. package/dist/jsx/images/Image/ImageFrame.native.js +4 -2
  590. package/dist/jsx/images/Image/ImageFrame.native.js.map +1 -1
  591. package/dist/jsx/layouts/AsyncBoundary.mjs +1 -2
  592. package/dist/jsx/layouts/AsyncBoundary.mjs.map +1 -1
  593. package/dist/jsx/layouts/AsyncBoundary.native.js +1 -2
  594. package/dist/jsx/layouts/AsyncBoundary.native.js.map +1 -1
  595. package/dist/jsx/layouts/EmptyState.mjs +7 -3
  596. package/dist/jsx/layouts/EmptyState.mjs.map +1 -1
  597. package/dist/jsx/layouts/EmptyState.native.js +10 -6
  598. package/dist/jsx/layouts/EmptyState.native.js.map +1 -1
  599. package/dist/jsx/layouts/PaneScaffold.mjs +97 -42
  600. package/dist/jsx/layouts/PaneScaffold.mjs.map +1 -1
  601. package/dist/jsx/layouts/PaneScaffold.native.js +97 -41
  602. package/dist/jsx/layouts/PaneScaffold.native.js.map +1 -1
  603. package/dist/jsx/layouts/attachments.mjs +4 -4
  604. package/dist/jsx/layouts/attachments.mjs.map +1 -1
  605. package/dist/jsx/layouts/attachments.native.js +4 -4
  606. package/dist/jsx/layouts/attachments.native.js.map +1 -1
  607. package/dist/jsx/layouts/breadcrumbs.mjs +1 -2
  608. package/dist/jsx/layouts/breadcrumbs.mjs.map +1 -1
  609. package/dist/jsx/layouts/breadcrumbs.native.js +1 -2
  610. package/dist/jsx/layouts/breadcrumbs.native.js.map +1 -1
  611. package/dist/jsx/layouts/index.mjs +2 -1
  612. package/dist/jsx/layouts/index.mjs.map +1 -1
  613. package/dist/jsx/layouts/index.native.js +2 -0
  614. package/dist/jsx/layouts/index.native.js.map +1 -1
  615. package/dist/jsx/layouts/page.mjs +51 -10
  616. package/dist/jsx/layouts/page.mjs.map +1 -1
  617. package/dist/jsx/layouts/page.native.js +52 -9
  618. package/dist/jsx/layouts/page.native.js.map +1 -1
  619. package/dist/jsx/layouts/sidebar.mjs +2 -2
  620. package/dist/jsx/layouts/sidebar.mjs.map +1 -1
  621. package/dist/jsx/layouts/sidebar.native.js +2 -2
  622. package/dist/jsx/layouts/sidebar.native.js.map +1 -1
  623. package/dist/jsx/layouts/tags.mjs +6 -7
  624. package/dist/jsx/layouts/tags.mjs.map +1 -1
  625. package/dist/jsx/layouts/tags.native.js +6 -9
  626. package/dist/jsx/layouts/tags.native.js.map +1 -1
  627. package/dist/jsx/layouts/timeline.mjs +5 -5
  628. package/dist/jsx/layouts/timeline.mjs.map +1 -1
  629. package/dist/jsx/layouts/timeline.native.js +5 -5
  630. package/dist/jsx/layouts/timeline.native.js.map +1 -1
  631. package/dist/jsx/shared/useKeyboardInset.mjs +1 -19
  632. package/dist/jsx/shared/useKeyboardInset.mjs.map +1 -1
  633. package/dist/jsx/shared/useKeyboardInset.native.js +3 -3
  634. package/dist/jsx/shared/useKeyboardInset.native.js.map +1 -1
  635. package/dist/jsx/surfaces.mjs +1 -0
  636. package/dist/jsx/surfaces.mjs.map +1 -1
  637. package/dist/jsx/surfaces.native.js +1 -0
  638. package/dist/jsx/surfaces.native.js.map +1 -1
  639. package/dist/jsx/views/Calendar.mjs +11 -8
  640. package/dist/jsx/views/Calendar.mjs.map +1 -1
  641. package/dist/jsx/views/Calendar.native.js +11 -8
  642. package/dist/jsx/views/Calendar.native.js.map +1 -1
  643. package/dist/jsx/views/Dashboard.mjs +118 -25
  644. package/dist/jsx/views/Dashboard.mjs.map +1 -1
  645. package/dist/jsx/views/Dashboard.native.js +158 -52
  646. package/dist/jsx/views/Dashboard.native.js.map +1 -1
  647. package/dist/jsx/views/Gantt.mjs +379 -96
  648. package/dist/jsx/views/Gantt.mjs.map +1 -1
  649. package/dist/jsx/views/Gantt.native.js +446 -97
  650. package/dist/jsx/views/Gantt.native.js.map +1 -1
  651. package/dist/jsx/views/Kanban.mjs +2 -2
  652. package/dist/jsx/views/Kanban.mjs.map +1 -1
  653. package/dist/jsx/views/Kanban.native.js +2 -2
  654. package/dist/jsx/views/Kanban.native.js.map +1 -1
  655. package/dist/jsx/views/ReportBuilder.mjs +4 -4
  656. package/dist/jsx/views/ReportBuilder.mjs.map +1 -1
  657. package/dist/jsx/views/ReportBuilder.native.js +4 -4
  658. package/dist/jsx/views/ReportBuilder.native.js.map +1 -1
  659. package/dist/jsx/views/TreeView.mjs +104 -7
  660. package/dist/jsx/views/TreeView.mjs.map +1 -1
  661. package/dist/jsx/views/TreeView.native.js +115 -6
  662. package/dist/jsx/views/TreeView.native.js.map +1 -1
  663. package/dist/jsx/views/ganttMath.mjs +84 -3
  664. package/dist/jsx/views/ganttMath.mjs.map +1 -1
  665. package/dist/jsx/views/ganttMath.native.js +113 -3
  666. package/dist/jsx/views/ganttMath.native.js.map +1 -1
  667. package/dist/jsx/views/index.mjs +2 -2
  668. package/dist/jsx/views/index.mjs.map +1 -1
  669. package/dist/jsx/views/index.native.js +20 -1
  670. package/dist/jsx/views/index.native.js.map +1 -1
  671. package/dist/jsx/views/treeViewReveal.mjs +29 -0
  672. package/dist/jsx/views/treeViewReveal.mjs.map +1 -0
  673. package/dist/jsx/views/treeViewReveal.native.js +80 -0
  674. package/dist/jsx/views/treeViewReveal.native.js.map +1 -0
  675. package/package.json +11 -9
  676. package/src/Accordion/index.tsx +4 -6
  677. package/src/Button.tsx +10 -2
  678. package/src/Card.spec.tsx +76 -3
  679. package/src/Card.stories.tsx +1 -1
  680. package/src/Card.tsx +13 -1
  681. package/src/CardFooter.stories.tsx +3 -7
  682. package/src/CardFooter.tsx +3 -1
  683. package/src/CardHeader.stories.tsx +1 -3
  684. package/src/Chip/index.tsx +1 -1
  685. package/src/Collapsible.stories.tsx +2 -2
  686. package/src/ContextMenu/index.tsx +3 -3
  687. package/src/CopyField/CopyField.spec.tsx +66 -1
  688. package/src/CopyField/index.tsx +4 -3
  689. package/src/DropdownMenu/DropdownMenu.spec.tsx +112 -1
  690. package/src/DropdownMenu/DropdownMenu.stories.tsx +1 -3
  691. package/src/DropdownMenu/index.tsx +70 -9
  692. package/src/LinearGradient.stories.tsx +2 -2
  693. package/src/Meter/Meter.spec.tsx +71 -6
  694. package/src/Meter/Meter.stories.tsx +38 -0
  695. package/src/Meter/index.tsx +12 -6
  696. package/src/Meter/meter.ts +6 -1
  697. package/src/Pagination.tsx +2 -2
  698. package/src/Panel.stories.tsx +1 -1
  699. package/src/ProgressSteps/index.tsx +3 -3
  700. package/src/Quote/index.tsx +1 -3
  701. package/src/SortableList/SortableList.spec.tsx +3 -3
  702. package/src/Tabs/Tabs.spec.tsx +43 -3
  703. package/src/Tabs/Tabs.stories.tsx +10 -1
  704. package/src/Tabs/index.tsx +21 -15
  705. package/src/Toast/Toast.spec.tsx +176 -49
  706. package/src/Toast/index.tsx +73 -6
  707. package/src/TreeSelect/index.tsx +61 -1
  708. package/src/Unspaced.stories.tsx +2 -2
  709. package/src/VisuallyHidden.stories.tsx +2 -2
  710. package/src/actions/DestructiveAction.spec.tsx +19 -3
  711. package/src/actions/DestructiveAction.tsx +9 -14
  712. package/src/charts/Axis.tsx +6 -1
  713. package/src/charts/BarChart.tsx +82 -67
  714. package/src/charts/ChartDataView.spec.tsx +104 -0
  715. package/src/charts/ChartDataView.tsx +158 -0
  716. package/src/charts/ChartSurface.tsx +7 -2
  717. package/src/charts/Charts.stories.tsx +213 -9
  718. package/src/charts/LineChart.tsx +90 -75
  719. package/src/charts/PieChart.knobs.spec.tsx +25 -0
  720. package/src/charts/PieChart.tsx +51 -10
  721. package/src/charts/Sparkline.tsx +25 -3
  722. package/src/charts/accessibility.ts +8 -0
  723. package/src/charts/charts.spec.tsx +77 -3
  724. package/src/charts/index.ts +2 -0
  725. package/src/charts/math.spec.ts +19 -0
  726. package/src/charts/math.ts +36 -0
  727. package/src/charts/series.tsx +101 -21
  728. package/src/charts/svg.spec.ts +28 -0
  729. package/src/charts/svg.ts +56 -2
  730. package/src/code/CodeBlock/CodeBlock.copy.spec.tsx +23 -0
  731. package/src/code/CodeBlock/index.tsx +4 -3
  732. package/src/code/HighlightedCode/index.tsx +1 -1
  733. package/src/componentColors.ts +6 -4
  734. package/src/feedback/ConfirmDialog.nativeFocus.spec.tsx +52 -0
  735. package/src/feedback/ConfirmDialog.spec.tsx +20 -0
  736. package/src/feedback/ConfirmDialog.tsx +9 -15
  737. package/src/feedback/NotifyHost.tsx +11 -2
  738. package/src/feedback/copy.ts +36 -4
  739. package/src/feedback/index.ts +1 -0
  740. package/src/feedback/notify.spec.ts +15 -1
  741. package/src/feedback/notify.ts +1 -0
  742. package/src/feedback/route.ts +4 -0
  743. package/src/feedback/store.ts +7 -0
  744. package/src/icons/lucide.ts +1 -1
  745. package/src/images/Image/ImageFrame.tsx +2 -2
  746. package/src/images/SvgUri/index.native.ts +11 -3
  747. package/src/layouts/AsyncBoundary.tsx +1 -2
  748. package/src/layouts/EmptyState.spec.tsx +58 -1
  749. package/src/layouts/EmptyState.stories.tsx +2 -2
  750. package/src/layouts/EmptyState.tsx +11 -7
  751. package/src/layouts/KeyboardAvoidingWrapper/KeyboardAvoidingWrapper.stories.tsx +3 -3
  752. package/src/layouts/Page.weight.spec.tsx +75 -0
  753. package/src/layouts/PageHeader.stories.tsx +4 -4
  754. package/src/layouts/PageTemplates.stories.tsx +2 -2
  755. package/src/layouts/PaneScaffold.spec.tsx +144 -4
  756. package/src/layouts/PaneScaffold.stories.tsx +61 -10
  757. package/src/layouts/PaneScaffold.tsx +156 -58
  758. package/src/layouts/SafeAreaWrapper/SafeAreaWrapper.stories.tsx +3 -3
  759. package/src/layouts/ScreenToolbar.stories.tsx +6 -23
  760. package/src/layouts/attachments.tsx +4 -4
  761. package/src/layouts/breadcrumbs.tsx +1 -2
  762. package/src/layouts/index.tsx +11 -0
  763. package/src/layouts/layouts.spec.tsx +51 -0
  764. package/src/layouts/page.designLaw.spec.tsx +25 -0
  765. package/src/layouts/page.tsx +48 -11
  766. package/src/layouts/sidebar.tsx +2 -2
  767. package/src/layouts/tags-trigger.spec.tsx +32 -0
  768. package/src/layouts/tags.tsx +6 -9
  769. package/src/layouts/timeline.tsx +5 -5
  770. package/src/shared/useKeyboardInset.native.ts +43 -0
  771. package/src/shared/useKeyboardInset.ts +2 -41
  772. package/src/surfaces.spec.tsx +97 -3
  773. package/src/surfaces.tsx +4 -2
  774. package/src/tamagui.spec.ts +63 -0
  775. package/src/textAccentSecondary.spec.tsx +187 -0
  776. package/src/views/Calendar.tsx +9 -8
  777. package/src/views/Dashboard.stories.tsx +38 -1
  778. package/src/views/Dashboard.tsx +132 -29
  779. package/src/views/Gantt.scroll.spec.tsx +120 -0
  780. package/src/views/Gantt.spec.tsx +376 -0
  781. package/src/views/Gantt.stories.tsx +75 -2
  782. package/src/views/Gantt.tsx +567 -99
  783. package/src/views/Kanban.native.tsx +2 -2
  784. package/src/views/Kanban.spec.tsx +11 -0
  785. package/src/views/Kanban.tsx +2 -2
  786. package/src/views/ReportBuilder.tsx +4 -4
  787. package/src/views/TreeView.reveal.spec.tsx +167 -0
  788. package/src/views/TreeView.reveal.stories.tsx +115 -0
  789. package/src/views/TreeView.scroll.spec.tsx +196 -0
  790. package/src/views/TreeView.spec.tsx +1 -1
  791. package/src/views/TreeView.tsx +159 -16
  792. package/src/views/ganttMath.ts +142 -4
  793. package/src/views/index.ts +44 -1
  794. package/src/views/treeViewReveal.spec.ts +83 -0
  795. package/src/views/treeViewReveal.ts +45 -0
  796. package/src/views/views.spec.tsx +52 -12
  797. package/types/Accordion/index.d.ts.map +1 -1
  798. package/types/Button.d.ts +12 -2
  799. package/types/Button.d.ts.map +1 -1
  800. package/types/Card.d.ts.map +1 -1
  801. package/types/CardFooter.d.ts +2 -1
  802. package/types/CardFooter.d.ts.map +1 -1
  803. package/types/CopyField/index.d.ts.map +1 -1
  804. package/types/DropdownMenu/index.d.ts +22 -0
  805. package/types/DropdownMenu/index.d.ts.map +1 -1
  806. package/types/Meter/index.d.ts.map +1 -1
  807. package/types/Meter/meter.d.ts +5 -1
  808. package/types/Meter/meter.d.ts.map +1 -1
  809. package/types/Quote/index.d.ts.map +1 -1
  810. package/types/Tabs/index.d.ts +1 -1
  811. package/types/Tabs/index.d.ts.map +1 -1
  812. package/types/Toast/index.d.ts +16 -0
  813. package/types/Toast/index.d.ts.map +1 -1
  814. package/types/TreeSelect/index.d.ts +9 -1
  815. package/types/TreeSelect/index.d.ts.map +1 -1
  816. package/types/actions/DestructiveAction.d.ts.map +1 -1
  817. package/types/charts/Axis.d.ts.map +1 -1
  818. package/types/charts/BarChart.d.ts.map +1 -1
  819. package/types/charts/ChartDataView.d.ts +22 -0
  820. package/types/charts/ChartDataView.d.ts.map +1 -0
  821. package/types/charts/ChartSurface.d.ts +4 -1
  822. package/types/charts/ChartSurface.d.ts.map +1 -1
  823. package/types/charts/LineChart.d.ts.map +1 -1
  824. package/types/charts/PieChart.d.ts +1 -1
  825. package/types/charts/PieChart.d.ts.map +1 -1
  826. package/types/charts/Sparkline.d.ts +3 -1
  827. package/types/charts/Sparkline.d.ts.map +1 -1
  828. package/types/charts/accessibility.d.ts +3 -0
  829. package/types/charts/accessibility.d.ts.map +1 -1
  830. package/types/charts/index.d.ts +1 -0
  831. package/types/charts/index.d.ts.map +1 -1
  832. package/types/charts/math.d.ts +12 -0
  833. package/types/charts/math.d.ts.map +1 -1
  834. package/types/charts/series.d.ts +1 -1
  835. package/types/charts/series.d.ts.map +1 -1
  836. package/types/charts/svg.d.ts +18 -2
  837. package/types/charts/svg.d.ts.map +1 -1
  838. package/types/code/CodeBlock/index.d.ts.map +1 -1
  839. package/types/componentColors.d.ts +1 -4
  840. package/types/componentColors.d.ts.map +1 -1
  841. package/types/feedback/ConfirmDialog.d.ts.map +1 -1
  842. package/types/feedback/NotifyHost.d.ts +3 -1
  843. package/types/feedback/NotifyHost.d.ts.map +1 -1
  844. package/types/feedback/copy.d.ts +12 -2
  845. package/types/feedback/copy.d.ts.map +1 -1
  846. package/types/feedback/index.d.ts +1 -1
  847. package/types/feedback/index.d.ts.map +1 -1
  848. package/types/feedback/notify.d.ts.map +1 -1
  849. package/types/feedback/route.d.ts +3 -0
  850. package/types/feedback/route.d.ts.map +1 -1
  851. package/types/feedback/store.d.ts +2 -0
  852. package/types/feedback/store.d.ts.map +1 -1
  853. package/types/icons/lucide.d.ts +1 -1
  854. package/types/icons/lucide.d.ts.map +1 -1
  855. package/types/images/Image/ImageFrame.d.ts.map +1 -1
  856. package/types/images/SvgUri/index.native.d.ts +4 -3
  857. package/types/images/SvgUri/index.native.d.ts.map +1 -1
  858. package/types/layouts/AsyncBoundary.d.ts.map +1 -1
  859. package/types/layouts/EmptyState.d.ts.map +1 -1
  860. package/types/layouts/PaneScaffold.d.ts +27 -5
  861. package/types/layouts/PaneScaffold.d.ts.map +1 -1
  862. package/types/layouts/breadcrumbs.d.ts.map +1 -1
  863. package/types/layouts/index.d.ts +1 -0
  864. package/types/layouts/index.d.ts.map +1 -1
  865. package/types/layouts/page.d.ts +10 -5
  866. package/types/layouts/page.d.ts.map +1 -1
  867. package/types/layouts/tags.d.ts.map +1 -1
  868. package/types/shared/useKeyboardInset.d.ts +1 -14
  869. package/types/shared/useKeyboardInset.d.ts.map +1 -1
  870. package/types/shared/useKeyboardInset.native.d.ts +16 -0
  871. package/types/shared/useKeyboardInset.native.d.ts.map +1 -0
  872. package/types/surfaces.d.ts.map +1 -1
  873. package/types/views/Calendar.d.ts.map +1 -1
  874. package/types/views/Dashboard.d.ts +7 -3
  875. package/types/views/Dashboard.d.ts.map +1 -1
  876. package/types/views/Gantt.d.ts +132 -13
  877. package/types/views/Gantt.d.ts.map +1 -1
  878. package/types/views/TreeView.d.ts +10 -1
  879. package/types/views/TreeView.d.ts.map +1 -1
  880. package/types/views/ganttMath.d.ts +73 -0
  881. package/types/views/ganttMath.d.ts.map +1 -1
  882. package/types/views/index.d.ts +2 -2
  883. package/types/views/index.d.ts.map +1 -1
  884. package/types/views/treeViewReveal.d.ts +11 -0
  885. package/types/views/treeViewReveal.d.ts.map +1 -0
@@ -8,6 +8,7 @@ import {
8
8
  } from "@multiplatform.one/theme";
9
9
  import type { ReactNode } from "react";
10
10
  import { Paragraph, Text, YStack } from "tamagui";
11
+ import { Text as HouseText } from "../Text";
11
12
  import { componentColors } from "../componentColors";
12
13
  import {
13
14
  FeedLayout,
@@ -43,11 +44,7 @@ function PaneFill({ label, hint, muted }: { label: string; hint?: string; muted?
43
44
  gap="$2"
44
45
  >
45
46
  <Paragraph fontWeight="600">{label}</Paragraph>
46
- {hint ? (
47
- <Text color={componentColors.text.muted} fontSize="$2">
48
- {hint}
49
- </Text>
50
- ) : null}
47
+ {hint ? <HouseText fontSize="$2">{hint}</HouseText> : null}
51
48
  </YStack>
52
49
  );
53
50
  }
@@ -113,7 +110,7 @@ const meta: Meta<typeof PaneScaffold> = {
113
110
  docs: {
114
111
  description: {
115
112
  component:
116
- "Adaptive pane shell (DG-LAY-01/02). Size classes: compact <640, medium ≥640, expanded ≥860 (FloatingPanel), large ≥1024, xl ≥1280. Two panes from expanded up unless `maxPanes` ejects. Side-by-side uses a hairline sash (Linear / VS Code / Polaris Frame); pass `paneGap` to eject to spaced columns.",
113
+ 'Adaptive TWO-pane shell (DG-LAY-01/02) — `primary` and `secondary`, no more. Size classes: compact <640, medium ≥640, expanded ≥860 (FloatingPanel), large ≥1024, xl ≥1280. Two panes from expanded up unless `maxPanes` ejects. Side-by-side uses a hairline sash (Linear / VS Code / Polaris Frame); pass `paneGap` to eject to spaced columns. Below expanded the panes stack and the sash goes away, so nothing is hidden on a phone; `narrowLayout="swap"` (what `activePane` opts into) is the list-detail exception. Three regions come from nesting a scaffold inside a pane — see the Nested three-region story; the size class rides down, so the inner scaffold stacks with the outer.',
117
114
  },
118
115
  },
119
116
  },
@@ -123,12 +120,12 @@ const meta: Meta<typeof PaneScaffold> = {
123
120
  options: ["compact", "medium", "expanded", "large", "xl"],
124
121
  },
125
122
  activePane: { control: "radio", options: ["primary", "secondary"] },
123
+ narrowLayout: { control: "radio", options: ["stack", "swap"] },
126
124
  maxPanes: { control: "radio", options: [1, 2, undefined] },
127
125
  resizable: { control: "boolean" },
128
126
  },
129
127
  args: {
130
128
  sizeClass: "expanded",
131
- activePane: "primary",
132
129
  },
133
130
  };
134
131
  export default meta;
@@ -150,7 +147,63 @@ export const TwoPane: Story = {
150
147
  ),
151
148
  };
152
149
 
150
+ export const CompactStacked: Story = {
151
+ name: "Compact (stacked)",
152
+ args: { sizeClass: "compact" },
153
+ parameters: {
154
+ docs: {
155
+ description: {
156
+ story:
157
+ "Below the two-pane budget the secondary sits under the primary and the sash is gone. Reflow, not hide.",
158
+ },
159
+ },
160
+ },
161
+ render: (args) => (
162
+ <YStack height={400} padding="$4">
163
+ <SplitFrame>
164
+ <PaneScaffold
165
+ {...args}
166
+ primary={<PaneFill label="Primary" />}
167
+ secondary={<PaneFill label="Secondary" muted />}
168
+ />
169
+ </SplitFrame>
170
+ </YStack>
171
+ ),
172
+ };
173
+
174
+ export const NestedThreeRegion: Story = {
175
+ name: "Nested three-region",
176
+ args: { sizeClass: "compact" },
177
+ parameters: {
178
+ docs: {
179
+ description: {
180
+ story:
181
+ "Rail | (centre | inspector): the recipe for three regions. Switch `sizeClass` to `xl` for two seams side by side; on compact all three stack, none is dropped.",
182
+ },
183
+ },
184
+ },
185
+ render: (args) => (
186
+ <YStack height={520} padding="$4">
187
+ <SplitFrame height={480}>
188
+ <PaneScaffold
189
+ {...args}
190
+ paneFlex={[1, 3]}
191
+ primary={<PaneFill label="Rail" muted />}
192
+ secondary={
193
+ <PaneScaffold
194
+ paneFlex={[2, 1]}
195
+ primary={<PaneFill label="Centre" hint="Main canvas" />}
196
+ secondary={<PaneFill label="Inspector" muted />}
197
+ />
198
+ }
199
+ />
200
+ </SplitFrame>
201
+ </YStack>
202
+ ),
203
+ };
204
+
153
205
  export const CompactActiveSecondary: Story = {
206
+ name: "Compact (swap)",
154
207
  args: { sizeClass: "compact", activePane: "secondary" },
155
208
  render: (args) => (
156
209
  <YStack height={400} padding="$4">
@@ -218,9 +271,7 @@ export const ProseReadingWidth: StoryObj<typeof ReadingWidth> = {
218
271
  </Paragraph>
219
272
  </ReadingWidth>
220
273
  <ReadingWidth measure="none">
221
- <Paragraph color={componentColors.text.muted}>
222
- Ejected measure (full width of parent).
223
- </Paragraph>
274
+ <HouseText>Ejected measure (full width of parent).</HouseText>
224
275
  </ReadingWidth>
225
276
  </YStack>
226
277
  ),
@@ -1,6 +1,11 @@
1
1
  /**
2
2
  * PaneScaffold + canonical layouts (DG-LAY-02) — W11.
3
3
  *
4
+ * PaneScaffold is a TWO-pane scaffold: `primary` and `secondary`, no more.
5
+ * Three regions come from NESTING one scaffold inside a pane of another. The
6
+ * resolved size class rides a context down, so an inner scaffold reflows with
7
+ * the outer one instead of splitting inside a stacked column.
8
+ *
4
9
  * Devs declare pane roles; the scaffold picks 1 vs 2 columns from the
5
10
  * canonical layout size class (`expanded` @ 860 = two-pane budget).
6
11
  *
@@ -13,7 +18,10 @@
13
18
  * - **Supporting-pane**: secondary is meaningful only relative to primary.
14
19
  * - **Feed**: equal-weight cards in a responsive grid.
15
20
  *
16
- * Compact/medium show one pane; pass `activePane` to choose which.
21
+ * Below the two-pane budget the panes STACK (primary above secondary) and the
22
+ * sash goes away — a drag handle is a pointer affordance and there is nothing
23
+ * to drag with a thumb. Hiding a pane is the list-detail navigation idiom, not
24
+ * the responsive default: pass `activePane` (or `narrowLayout="swap"`) for it.
17
25
  */
18
26
 
19
27
  import {
@@ -31,7 +39,17 @@ import {
31
39
  type LayoutSizeClass,
32
40
  READING_WIDTH_CH,
33
41
  } from "@multiplatform.one/theme";
34
- import { Children, useCallback, useEffect, useId, useRef, useState, type ReactNode } from "react";
42
+ import {
43
+ Children,
44
+ createContext,
45
+ useCallback,
46
+ useContext,
47
+ useEffect,
48
+ useId,
49
+ useRef,
50
+ useState,
51
+ type ReactNode,
52
+ } from "react";
35
53
  import type { XStackProps, YStackProps } from "tamagui";
36
54
  import { isWeb, XStack, YStack } from "tamagui";
37
55
  import { useDirection } from "../hooks/useDirection";
@@ -51,10 +69,17 @@ export interface PaneScaffoldProps extends Omit<XStackProps, "children"> {
51
69
  primary: ReactNode;
52
70
  secondary?: ReactNode;
53
71
  /**
54
- * Which pane to show when only one column fits. Default: `primary`.
55
- * List-detail on compact typically flips to `secondary` once an item is selected.
72
+ * Which pane to show when `narrowLayout` is `swap`. Default: `primary`.
73
+ * List-detail on compact typically flips to `secondary` once an item is
74
+ * selected. Passing this prop opts the scaffold into `swap`.
56
75
  */
57
76
  activePane?: PaneRole;
77
+ /**
78
+ * What happens below the two-pane budget. `stack` (the default) puts
79
+ * secondary under primary so no content is unreachable; `swap` renders
80
+ * `activePane` alone, which is the list-detail navigation idiom.
81
+ */
82
+ narrowLayout?: "stack" | "swap";
58
83
  /** Override the default pane budget (compact/medium → 1, expanded+ → 2). */
59
84
  maxPanes?: 1 | 2;
60
85
  /**
@@ -82,6 +107,14 @@ export interface PaneScaffoldProps extends Omit<XStackProps, "children"> {
82
107
  sizeClass?: LayoutSizeClass;
83
108
  }
84
109
 
110
+ /**
111
+ * Resolved size class handed down to nested scaffolds. Without it an inner
112
+ * scaffold reads the WINDOW while the outer one was overridden (Storybook
113
+ * viewport, template test), so a stacked outer could still hold a split
114
+ * inner and the narrow reflow would only go one level deep.
115
+ */
116
+ const PaneSizeClassContext = createContext<LayoutSizeClass | null>(null);
117
+
85
118
  /**
86
119
  * Adaptive one-/two-pane shell. Geometry only — surface colors stay stable
87
120
  * across breakpoints (Material M-L5).
@@ -89,7 +122,8 @@ export interface PaneScaffoldProps extends Omit<XStackProps, "children"> {
89
122
  export function PaneScaffold({
90
123
  primary,
91
124
  secondary,
92
- activePane = "primary",
125
+ activePane: activePaneProp,
126
+ narrowLayout: narrowLayoutProp,
93
127
  maxPanes: maxPanesProp,
94
128
  paneFlex = [1, 1],
95
129
  paneGap,
@@ -102,23 +136,73 @@ export function PaneScaffold({
102
136
  ...rest
103
137
  }: PaneScaffoldProps) {
104
138
  const liveClass = useLayoutSizeClass();
105
- const sizeClass = sizeClassProp ?? liveClass;
139
+ const inheritedClass = useContext(PaneSizeClassContext);
140
+ const sizeClass = sizeClassProp ?? inheritedClass ?? liveClass;
106
141
  // Explicit `maxPanes` is the eject hatch (force 1 or 2 regardless of class).
107
142
  const budget = maxPanesProp ?? defaultMaxPanes(sizeClass);
108
143
  const hasSecondary = secondary !== null && secondary !== undefined;
109
- const multi = budget >= 2 && hasSecondary;
144
+ const split = budget >= 2 && hasSecondary;
110
145
  const gapped = paneGap !== undefined;
111
146
  const gap = gapped ? paneGap : undefined;
112
- const resizable = (resizableProp ?? !gapped) && multi && !gapped;
147
+ const resizable = (resizableProp ?? !gapped) && split && !gapped;
148
+ // `activePane` only decides anything when a pane is dropped, so passing it
149
+ // IS the swap opt-in. Everything else stacks: a scaffold that hides its
150
+ // secondary by default leaves that content unreachable on a phone.
151
+ const narrowLayout = narrowLayoutProp ?? (activePaneProp === undefined ? "stack" : "swap");
152
+ const stacked = !split && hasSecondary && narrowLayout === "stack";
153
+ const [primaryFlex, secondaryFlex] = paneFlex;
113
154
 
114
155
  // flexBasis auto, not the flex:1 shorthand's 0%: react-native-web resets
115
156
  // min-height to 0, so a 0% basis contributes zero intrinsic height inside
116
157
  // auto-height scroll flows (Screen scroll pages) and the scaffold collapses,
117
158
  // painting pane content over whatever follows. Bounded parents still fill
118
159
  // (grow 1) exactly as before.
119
- if (!multi) {
160
+ let content: ReactNode;
161
+ if (stacked) {
162
+ content = (
163
+ <YStack
164
+ flexGrow={1}
165
+ flexShrink={1}
166
+ flexBasis="auto"
167
+ minWidth={0}
168
+ width="100%"
169
+ gap={gap ?? 0}
170
+ data-testid="pane-scaffold"
171
+ data-panes="2"
172
+ data-pane-layout="stack"
173
+ data-size-class={sizeClass}
174
+ data-sash="false"
175
+ {...rest}
176
+ >
177
+ <YStack
178
+ flexGrow={1}
179
+ flexShrink={1}
180
+ flexBasis="auto"
181
+ minWidth={0}
182
+ minHeight={0}
183
+ width="100%"
184
+ {...(gapped ? undefined : paneHairlineBottom)}
185
+ data-testid="pane-primary"
186
+ >
187
+ {primary}
188
+ </YStack>
189
+ <YStack
190
+ flexGrow={1}
191
+ flexShrink={1}
192
+ flexBasis="auto"
193
+ minWidth={0}
194
+ minHeight={0}
195
+ width="100%"
196
+ data-testid="pane-secondary"
197
+ >
198
+ {secondary}
199
+ </YStack>
200
+ </YStack>
201
+ );
202
+ } else if (!split) {
203
+ const activePane = activePaneProp ?? "primary";
120
204
  const shown = activePane === "secondary" && hasSecondary ? secondary : primary;
121
- return (
205
+ content = (
122
206
  <YStack
123
207
  flexGrow={1}
124
208
  flexShrink={1}
@@ -127,62 +211,64 @@ export function PaneScaffold({
127
211
  width="100%"
128
212
  data-testid="pane-scaffold"
129
213
  data-panes="1"
214
+ data-pane-layout="single"
130
215
  data-size-class={sizeClass}
131
216
  {...rest}
132
217
  >
133
218
  {shown}
134
219
  </YStack>
135
220
  );
221
+ } else {
222
+ content = (
223
+ <XStack
224
+ flexGrow={1}
225
+ flexShrink={1}
226
+ flexBasis="auto"
227
+ minWidth={0}
228
+ minHeight={0}
229
+ width="100%"
230
+ alignItems="stretch"
231
+ gap={gap ?? 0}
232
+ position="relative"
233
+ data-testid="pane-scaffold"
234
+ data-panes="2"
235
+ data-pane-layout="split"
236
+ data-size-class={sizeClass}
237
+ data-sash={resizable ? "true" : "false"}
238
+ {...rest}
239
+ >
240
+ {resizable ? (
241
+ <ResizablePanes
242
+ primary={primary}
243
+ secondary={secondary}
244
+ primaryFlex={primaryFlex}
245
+ secondaryFlex={secondaryFlex}
246
+ minFraction={minPaneFraction}
247
+ maxFraction={maxPaneFraction}
248
+ fraction={primaryFractionProp}
249
+ onFractionChange={onPrimaryFractionChange}
250
+ />
251
+ ) : (
252
+ <>
253
+ <YStack
254
+ flex={primaryFlex}
255
+ minWidth={0}
256
+ minHeight={0}
257
+ {...(gapped ? undefined : paneHairlineEnd)}
258
+ data-testid="pane-primary"
259
+ >
260
+ {primary}
261
+ </YStack>
262
+ <YStack flex={secondaryFlex} minWidth={0} minHeight={0} data-testid="pane-secondary">
263
+ {secondary}
264
+ </YStack>
265
+ </>
266
+ )}
267
+ </XStack>
268
+ );
136
269
  }
137
270
 
138
- const [primaryFlex, secondaryFlex] = paneFlex;
139
-
140
- return (
141
- <XStack
142
- flexGrow={1}
143
- flexShrink={1}
144
- flexBasis="auto"
145
- minWidth={0}
146
- minHeight={0}
147
- width="100%"
148
- alignItems="stretch"
149
- gap={gap ?? 0}
150
- position="relative"
151
- data-testid="pane-scaffold"
152
- data-panes="2"
153
- data-size-class={sizeClass}
154
- data-sash={resizable ? "true" : "false"}
155
- {...rest}
156
- >
157
- {resizable ? (
158
- <ResizablePanes
159
- primary={primary}
160
- secondary={secondary}
161
- primaryFlex={primaryFlex}
162
- secondaryFlex={secondaryFlex}
163
- minFraction={minPaneFraction}
164
- maxFraction={maxPaneFraction}
165
- fraction={primaryFractionProp}
166
- onFractionChange={onPrimaryFractionChange}
167
- />
168
- ) : (
169
- <>
170
- <YStack
171
- flex={primaryFlex}
172
- minWidth={0}
173
- minHeight={0}
174
- {...(gapped ? undefined : paneHairlineEnd)}
175
- data-testid="pane-primary"
176
- >
177
- {primary}
178
- </YStack>
179
- <YStack flex={secondaryFlex} minWidth={0} minHeight={0} data-testid="pane-secondary">
180
- {secondary}
181
- </YStack>
182
- </>
183
- )}
184
- </XStack>
185
- );
271
+ return <PaneSizeClassContext.Provider value={sizeClass}>{content}</PaneSizeClassContext.Provider>;
186
272
  }
187
273
 
188
274
  const paneHairlineEnd = isWeb
@@ -194,6 +280,9 @@ const paneHairlineEnd = isWeb
194
280
  }
195
281
  : { borderEndWidth: hairlineWidth, borderColor: "$borderColor" };
196
282
 
283
+ /** Stacked seam: the horizontal twin of `paneHairlineEnd`. */
284
+ const paneHairlineBottom = { ...hairline.bottom, borderColor: "$borderColor" };
285
+
197
286
  function clampFraction(value: number, min: number, max: number): number {
198
287
  return Math.min(max, Math.max(min, value));
199
288
  }
@@ -458,12 +547,17 @@ export interface ListDetailLayoutProps extends Omit<
458
547
  * Canonical list-detail: explorative list + item detail. Detail remains
459
548
  * meaningful without the list (Material M-L4). List is the narrower pane
460
549
  * (Linear issue view / VS Code explorer), not a 50/50 split.
550
+ *
551
+ * Below the two-pane budget this SWAPS rather than stacks — list and detail
552
+ * are two steps of one navigation, so `selected` decides which is on screen.
553
+ * Pass `narrowLayout="stack"` to show both instead.
461
554
  */
462
555
  export function ListDetailLayout({
463
556
  list,
464
557
  detail,
465
558
  selected = false,
466
559
  activePane,
560
+ narrowLayout,
467
561
  ...rest
468
562
  }: ListDetailLayoutProps) {
469
563
  return (
@@ -472,6 +566,7 @@ export function ListDetailLayout({
472
566
  secondary={detail}
473
567
  paneFlex={[1, 2]}
474
568
  activePane={activePane ?? (selected ? "secondary" : "primary")}
569
+ narrowLayout={narrowLayout ?? "swap"}
475
570
  data-canonical="list-detail"
476
571
  {...rest}
477
572
  />
@@ -493,6 +588,9 @@ export interface SupportingPaneLayoutProps extends Omit<
493
588
  * Canonical supporting-pane: primary content + contextual support (~⅔ / ⅓).
494
589
  * Supporting content is only meaningful relative to primary (Material M-L4).
495
590
  * Seam is a hairline (Polaris Frame navigation / Linear properties column).
591
+ *
592
+ * Below the two-pane budget the supporting content stacks under the primary.
593
+ * It is never dropped: it has no screen of its own to be reached from.
496
594
  */
497
595
  export function SupportingPaneLayout({ children, supporting, ...rest }: SupportingPaneLayoutProps) {
498
596
  return (
@@ -1,6 +1,6 @@
1
1
  import type { Meta, StoryObj } from "@storybook/react-native-web-vite";
2
2
  import { Paragraph, YStack } from "tamagui";
3
- import { componentColors } from "../../componentColors";
3
+ import { Text } from "../../Text";
4
4
  import { SafeAreaWrapper } from "./index";
5
5
 
6
6
  const meta: Meta<typeof SafeAreaWrapper> = {
@@ -26,10 +26,10 @@ export const Default: Story = {
26
26
  <SafeAreaWrapper>
27
27
  <YStack>
28
28
  <Paragraph>Content inside SafeAreaWrapper</Paragraph>
29
- <Paragraph color={componentColors.text.muted}>
29
+ <Text>
30
30
  On native, this respects device safe area insets. On web, it is a simple passthrough
31
31
  wrapper.
32
- </Paragraph>
32
+ </Text>
33
33
  </YStack>
34
34
  </SafeAreaWrapper>
35
35
  ),
@@ -26,16 +26,10 @@ export const Default: Story = {
26
26
  name: "Main",
27
27
  render: () => (
28
28
  <ScreenToolbar
29
- leading={
30
- <Button compact variant="outlined">
31
- Back
32
- </Button>
33
- }
29
+ leading={<Button compact>Back</Button>}
34
30
  trailing={
35
31
  <>
36
- <Button compact variant="outlined">
37
- Cancel
38
- </Button>
32
+ <Button compact>Cancel</Button>
39
33
  <Button compact>Save</Button>
40
34
  </>
41
35
  }
@@ -59,7 +53,6 @@ export const DisabledAndLoading: Story = {
59
53
  // the toolbar row's shared control height.
60
54
  <Button
61
55
  compact
62
- variant="outlined"
63
56
  disabled
64
57
  disabledReason="No screen to go back to"
65
58
  disabledReasonPlacement="inline"
@@ -82,22 +75,12 @@ export const ManyActionsNarrow: Story = {
82
75
  render: () => (
83
76
  <YStack maxWidth={320} borderWidth={1} borderColor="$color6" borderStyle="dashed">
84
77
  <ScreenToolbar
85
- leading={
86
- <Button compact variant="outlined">
87
- Back to the previous screen
88
- </Button>
89
- }
78
+ leading={<Button compact>Back to the previous screen</Button>}
90
79
  trailing={
91
80
  <>
92
- <Button compact variant="outlined">
93
- Duplicate
94
- </Button>
95
- <Button compact variant="outlined">
96
- Archive
97
- </Button>
98
- <Button compact variant="outlined">
99
- Delete permanently
100
- </Button>
81
+ <Button compact>Duplicate</Button>
82
+ <Button compact>Archive</Button>
83
+ <Button compact>Delete permanently</Button>
101
84
  <Button compact>Save changes</Button>
102
85
  </>
103
86
  }
@@ -454,7 +454,7 @@ function AttachmentRow({
454
454
  {attachment.fileName}
455
455
  </Text>
456
456
  <XStack gap="$2" alignItems="center">
457
- <Text fontSize="$2" color={componentColors.text.muted}>
457
+ <Text fontSize="$2" color={knobProps.textAccentColor}>
458
458
  {attachment.formattedSize || formatFileSize(attachment.fileSize)}
459
459
  </Text>
460
460
  {ext ? (
@@ -627,7 +627,7 @@ export function Attachments({
627
627
  {...dropHandlers}
628
628
  >
629
629
  <PaperclipIcon size={compact ? 20 : 28} />
630
- <Text color={componentColors.text.muted} fontSize={compact ? "$2" : "$3"} marginTop="$2">
630
+ <Text color={knobProps.textAccentColor} fontSize={compact ? "$2" : "$3"} marginTop="$2">
631
631
  {noAttachmentsLabel}
632
632
  </Text>
633
633
  </YStack>
@@ -657,7 +657,7 @@ export function Attachments({
657
657
  {label}
658
658
  {/* Count hides on error so the badge can't lie (DG-ST-04) */}
659
659
  {maxAttachments > 0 && !hasError && (
660
- <Text color={componentColors.text.muted} fontSize="$2">
660
+ <Text color={knobProps.textAccentColor} fontSize="$2">
661
661
  {" "}
662
662
  ({items.length}/{maxAttachments})
663
663
  </Text>
@@ -766,7 +766,7 @@ export function Attachments({
766
766
  ) : previewFile ? (
767
767
  <YStack alignItems="center" {...knobProps.gap} paddingVertical="$4">
768
768
  {getFileIcon(previewFile, 40)}
769
- <Text color={componentColors.text.muted} textAlign="center">
769
+ <Text color={knobProps.textAccentColor} textAlign="center">
770
770
  {previewUnavailableLabel}
771
771
  </Text>
772
772
  </YStack>
@@ -23,7 +23,6 @@ import {
23
23
  import React, { useMemo, useState } from "react";
24
24
  import { useTranslation } from "react-i18next";
25
25
  import { Anchor, Text, XStack, isWeb } from "tamagui";
26
- import { componentColors } from "../componentColors";
27
26
  import { withInterp } from "../shared/t";
28
27
 
29
28
  /** Approx medium body line box before press-target padding (DG-LAY-04). */
@@ -240,7 +239,7 @@ export function Breadcrumbs({ items, onNavigate, label, maxVisible }: Breadcrumb
240
239
  ) : (
241
240
  <Text
242
241
  {...knobProps.body}
243
- color={componentColors.text.muted}
242
+ color={knobProps.textAccentColor}
244
243
  fontSize={textSize}
245
244
  fontWeight="400"
246
245
  {...(slot.isCurrent ? { "aria-current": "page" as const } : null)}
@@ -12,6 +12,17 @@ export * from "./page";
12
12
  export * from "./pageHeadingScope";
13
13
  export * from "./PageTemplates";
14
14
  export * from "./PaneScaffold";
15
+ // EmptyState is NAMED here rather than left to reach the barrel through
16
+ // `export * from "./page"` (page.tsx re-exports it, so it has always been
17
+ // importable from @multiplatform.one/components — MPO-223's "not exported"
18
+ // premise was wrong, measured against published 7.7.1). Naming it is still
19
+ // worth doing: reachability that rides a transitive star through an unrelated
20
+ // module is the fragility that dropped ProgressCard twice (MPO-53, 5c7af7134),
21
+ // and it reads as absent to anyone grepping this file, which is how a consumer
22
+ // talked itself into a deep `src/layouts/EmptyState` import. `layouts.spec.tsx`
23
+ // asserts every module in this directory is reachable from here, so the next
24
+ // omission fails a test.
25
+ export { EmptyState, type EmptyStateProps } from "./EmptyState";
15
26
  export {
16
27
  AsyncBoundary,
17
28
  AsyncSkeleton,
@@ -13,6 +13,7 @@ import * as React from "react";
13
13
  import { TamaguiProvider, createTamagui } from "tamagui";
14
14
  import { afterEach, describe, expect, it, vi } from "vitest";
15
15
  import * as Debug from "./Debug";
16
+ import * as EmptyStateModule from "./EmptyState";
16
17
  import * as Layouts from "./index";
17
18
  import { Sidebar, type SidebarSection } from "./sidebar";
18
19
  import { Toolbar, type ToolbarAction } from "./toolbar";
@@ -72,6 +73,56 @@ describe("Layouts Index", () => {
72
73
  it("should export Timeline", () => {
73
74
  expect(Layouts).toHaveProperty("Timeline");
74
75
  });
76
+
77
+ // MPO-223. The per-component `it`s above are a hand-kept list, and a hand-kept
78
+ // list is how ProgressCard fell off the catalog twice (MPO-53, then 5c7af7134):
79
+ // nobody adds a line for the module they forgot. This walks the directory
80
+ // instead, so a new module in src/layouts that nothing re-exports fails here
81
+ // rather than in a consumer's app.
82
+ //
83
+ // Scope is this directory's own modules: the top-level files, plus each
84
+ // subdirectory's index. A subdirectory's internals stay internal on purpose
85
+ // (SafeAreaWrapper/insets, KeyboardAvoidingWrapper/behavior), and `.native`
86
+ // variants are the same module on a platform this runner is not.
87
+ //
88
+ // Runtime names only — `import * as` cannot see type-only exports, so the
89
+ // interfaces ride the typecheck. That is enough for the failure this guards:
90
+ // a missing VALUE is what breaks a build.
91
+ it("reaches every module under src/layouts from the barrel", () => {
92
+ // Negations live in the GLOB, not in a filter below it: `eager: true`
93
+ // imports every match up front, so a `.stories.tsx` skipped afterwards has
94
+ // already been loaded — and loading one drags the storybook runtime into a
95
+ // vitest environment that has no preview API (measured: "does not provide
96
+ // an export named 'definePreview'", whole suite fails to collect).
97
+ const modules = import.meta.glob<Record<string, unknown>>(
98
+ [
99
+ "./*.tsx",
100
+ "./*/index.tsx",
101
+ "!./index.tsx",
102
+ "!./*.spec.tsx",
103
+ "!./*.stories.tsx",
104
+ "!./**/*.spec.tsx",
105
+ "!./**/*.stories.tsx",
106
+ ],
107
+ { eager: true },
108
+ );
109
+ const unreachable: string[] = [];
110
+ for (const [file, mod] of Object.entries(modules)) {
111
+ for (const name of Object.keys(mod)) {
112
+ if (name === "default") continue;
113
+ if (!(name in Layouts)) unreachable.push(`${file} -> ${name}`);
114
+ }
115
+ }
116
+ expect(unreachable).toEqual([]);
117
+ });
118
+
119
+ // The import a consumer actually writes. It passed before EmptyState was
120
+ // named in index.tsx too — page.tsx re-exported it — and this locks the
121
+ // identity, not just the presence, so a future shadow cannot quietly swap it.
122
+ it("exports the same EmptyState from the barrel and from its module", () => {
123
+ expect(Layouts).toHaveProperty("EmptyState");
124
+ expect(Layouts.EmptyState).toBe(EmptyStateModule.EmptyState);
125
+ });
75
126
  });
76
127
 
77
128
  // ---------------------------------------------------------------------------
@@ -135,4 +135,29 @@ describe("density unpinned (LC-76)", () => {
135
135
  const frame = container.querySelector('[data-testid="page-section"]') as HTMLElement;
136
136
  expect(frame.getAttribute("data-density")).toBe("compact");
137
137
  });
138
+
139
+ it("Screen's explicit density override reaches nested page primitives", () => {
140
+ renderWithProviders(
141
+ <Preset overrides={{ density: "comfortable" }}>
142
+ <Screen compact scroll={false}>
143
+ <PageHeader title="Compact screen" />
144
+ <PageSection title="Inherited section" />
145
+ </Screen>
146
+ </Preset>,
147
+ );
148
+ expect(screen.getByTestId("page-header").getAttribute("data-density")).toBe("compact");
149
+ expect(screen.getByTestId("page-section").getAttribute("data-density")).toBe("compact");
150
+ });
151
+
152
+ it("a painted section steps its interior density without shrinking its heading", () => {
153
+ renderWithProviders(
154
+ <Preset overrides={{ density: "comfortable" }}>
155
+ <PageSection surface title="Outer" data-testid="outer-section">
156
+ <PageSection title="Inner" data-testid="inner-section" />
157
+ </PageSection>
158
+ </Preset>,
159
+ );
160
+ expect(screen.getByTestId("outer-section").getAttribute("data-density")).toBe("comfortable");
161
+ expect(screen.getByTestId("inner-section").getAttribute("data-density")).toBe("compact");
162
+ });
138
163
  });