@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
@@ -1,7 +1,19 @@
1
1
  import { MIN_PRESS_TARGET } from "@multiplatform.one/theme";
2
2
  import type { ScaleBand, ScaleLinear } from "d3-scale";
3
- import { areaPath, arcPath, linePath, pieSlices } from "./math";
4
- import { Circle, G, Path, Rect, datumTargetProps } from "./svg";
3
+ import { useId } from "react";
4
+ import { areaPath, arcPath, linePath, pieSlices, canMaskPieSlices } from "./math";
5
+ import {
6
+ Circle,
7
+ Defs,
8
+ Mask,
9
+ G,
10
+ Path,
11
+ Rect,
12
+ datumTargetProps,
13
+ chartMarkProps,
14
+ chartWebProps,
15
+ luminanceMaskProps,
16
+ } from "./svg";
5
17
  import type {
6
18
  ChartCurve,
7
19
  ChartDatum,
@@ -79,6 +91,7 @@ export function BarSeries({ data, xScale, yScale, plot, fills, ...callbacks }: B
79
91
  return (
80
92
  <G key={`${datum.label}-${index}`}>
81
93
  <Rect
94
+ {...chartMarkProps(datum.label)}
82
95
  x={x}
83
96
  y={y}
84
97
  width={bandwidth}
@@ -147,10 +160,23 @@ export function LineSeries({
147
160
  const targetRadius = MIN_PRESS_TARGET / 2;
148
161
  return (
149
162
  <G>
150
- <Path d={linePath(points, { curve })} fill="none" stroke={color} strokeWidth={strokeWidth} />
163
+ <Path
164
+ {...chartMarkProps("series line")}
165
+ d={linePath(points, { curve })}
166
+ fill="none"
167
+ stroke={color}
168
+ strokeWidth={strokeWidth}
169
+ />
151
170
  {showPoints
152
171
  ? points.map((point, index) => (
153
- <Circle key={`point-${index}`} cx={point.x} cy={point.y} r={pointRadius} fill={color} />
172
+ <Circle
173
+ key={`point-${index}`}
174
+ {...chartMarkProps(data[index]?.label ?? `point ${index + 1}`)}
175
+ cx={point.x}
176
+ cy={point.y}
177
+ r={pointRadius}
178
+ fill={color}
179
+ />
154
180
  ))
155
181
  : null}
156
182
  {interactive
@@ -187,7 +213,14 @@ export interface AreaSeriesProps {
187
213
  * LineSeries on top, which owns points and hit targets.
188
214
  */
189
215
  export function AreaSeries({ points, baseline, color, opacity = 0.18, curve }: AreaSeriesProps) {
190
- return <Path d={areaPath(points, { baseline, curve })} fill={color} opacity={opacity} />;
216
+ return (
217
+ <Path
218
+ {...chartMarkProps("series area")}
219
+ d={areaPath(points, { baseline, curve })}
220
+ fill={color}
221
+ opacity={opacity}
222
+ />
223
+ );
191
224
  }
192
225
 
193
226
  // ── Pie / Donut ───────────────────────────────────────────────
@@ -200,7 +233,7 @@ export interface PieSeriesProps extends DatumTargetCallbacks {
200
233
  outerRadius: number;
201
234
  /** > 0 renders a donut with a true transparent hole. */
202
235
  innerRadius?: number;
203
- /** Radians between slices (default 0). */
236
+ /** Explicit radians between slices. Omit for the default boundary mask. */
204
237
  padAngle?: number;
205
238
  /** Resolved fill per datum index. */
206
239
  fills: string[];
@@ -218,28 +251,75 @@ export function PieSeries({
218
251
  cy,
219
252
  outerRadius,
220
253
  innerRadius = 0,
221
- padAngle = 0,
254
+ padAngle,
222
255
  fills,
223
256
  ...callbacks
224
257
  }: PieSeriesProps) {
258
+ const instanceId = useId().replace(/[^a-zA-Z0-9_-]/g, "_");
225
259
  const slices = pieSlices(data, { padAngle });
260
+ const maskGaps = padAngle === undefined && canMaskPieSlices(slices, innerRadius, outerRadius);
226
261
  const interactive = hasTargets(callbacks);
227
262
  return (
228
263
  <G transform={`translate(${cx}, ${cy})`}>
229
- {slices.map((slice) => (
230
- <Path
231
- key={`${slice.datum.label}-${slice.index}`}
232
- d={arcPath({
233
- startAngle: slice.startAngle,
234
- endAngle: slice.endAngle,
235
- padAngle: slice.padAngle,
236
- innerRadius,
237
- outerRadius,
238
- })}
239
- fill={fills[slice.index]}
240
- {...(interactive ? targetPropsFor(callbacks, slice.datum, slice.index) : {})}
241
- />
242
- ))}
264
+ {slices.map((slice) => {
265
+ const path = arcPath({
266
+ startAngle: slice.startAngle,
267
+ endAngle: slice.endAngle,
268
+ padAngle: slice.padAngle,
269
+ innerRadius,
270
+ outerRadius,
271
+ });
272
+ const masked = maskGaps && slice.value > 0;
273
+ const maskId = `mpo-pie-${instanceId}-${slice.index}`;
274
+ return (
275
+ <G key={`${slice.datum.label}-${slice.index}`}>
276
+ {masked ? (
277
+ <Defs>
278
+ <Mask
279
+ id={maskId}
280
+ x={-outerRadius - 2}
281
+ y={-outerRadius - 2}
282
+ width={(outerRadius + 2) * 2}
283
+ height={(outerRadius + 2) * 2}
284
+ maskUnits="userSpaceOnUse"
285
+ maskContentUnits="userSpaceOnUse"
286
+ {...luminanceMaskProps()}
287
+ >
288
+ <Path
289
+ d={path}
290
+ fill="#ffffff"
291
+ stroke="#000000"
292
+ strokeWidth={2}
293
+ strokeLinejoin="round"
294
+ strokeLinecap="round"
295
+ opacity={1}
296
+ fillOpacity={1}
297
+ strokeOpacity={1}
298
+ />
299
+ </Mask>
300
+ </Defs>
301
+ ) : null}
302
+ <Path
303
+ {...chartMarkProps(slice.datum.label)}
304
+ {...(masked
305
+ ? chartWebProps({
306
+ "data-mpo-chart-mask": "eroded-arc-v1",
307
+ "data-mpo-chart-slice": [
308
+ slice.startAngle,
309
+ slice.endAngle,
310
+ innerRadius,
311
+ outerRadius,
312
+ ].join(","),
313
+ })
314
+ : {})}
315
+ d={path}
316
+ mask={masked ? `url(#${maskId})` : undefined}
317
+ fill={fills[slice.index]}
318
+ {...(interactive ? targetPropsFor(callbacks, slice.datum, slice.index) : {})}
319
+ />
320
+ </G>
321
+ );
322
+ })}
243
323
  </G>
244
324
  );
245
325
  }
@@ -0,0 +1,28 @@
1
+ import { expect, it, vi } from "vitest";
2
+
3
+ vi.mock("@multiplatform.one/platform", () => ({ isWeb: false }));
4
+
5
+ import {
6
+ chartChromeProps,
7
+ chartDatumTextProps,
8
+ chartMarkProps,
9
+ chartRootA11yProps,
10
+ chartWebProps,
11
+ luminanceMaskProps,
12
+ } from "./svg";
13
+
14
+ it("keeps browser audit attributes off native SVG props", () => {
15
+ expect(
16
+ chartRootA11yProps("Revenue", {
17
+ kind: "bar",
18
+ separated: true,
19
+ datumText: false,
20
+ datumCount: 13,
21
+ }),
22
+ ).toEqual({ accessible: true, accessibilityRole: "image", accessibilityLabel: "Revenue" });
23
+ expect(luminanceMaskProps()).toEqual({ maskType: "luminance" });
24
+ expect(chartMarkProps("North")).toEqual({});
25
+ expect(chartChromeProps("grid")).toEqual({});
26
+ expect(chartDatumTextProps(12)).toEqual({});
27
+ expect(chartWebProps({ "data-mpo-chart-owner": "true" })).toEqual({});
28
+ });
package/src/charts/svg.ts CHANGED
@@ -19,8 +19,10 @@
19
19
 
20
20
  import {
21
21
  Circle as TCircle,
22
+ Defs as TDefs,
22
23
  G as TG,
23
24
  Line as TLine,
25
+ Mask as TMask,
24
26
  Path as TPath,
25
27
  Rect as TRect,
26
28
  Svg as TSvg,
@@ -29,8 +31,10 @@ import {
29
31
  import { isWeb } from "@multiplatform.one/platform";
30
32
  import type {
31
33
  Circle as RNCircle,
34
+ Defs as RNDefs,
32
35
  G as RNG,
33
36
  Line as RNLine,
37
+ Mask as RNMask,
34
38
  Path as RNPath,
35
39
  Rect as RNRect,
36
40
  Svg as RNSvg,
@@ -38,6 +42,8 @@ import type {
38
42
  } from "react-native-svg";
39
43
 
40
44
  export const Svg = TSvg as unknown as typeof RNSvg;
45
+ export const Defs = TDefs as unknown as typeof RNDefs;
46
+ export const Mask = TMask as unknown as typeof RNMask;
41
47
  export const G = TG as unknown as typeof RNG;
42
48
  export const Rect = TRect as unknown as typeof RNRect;
43
49
  export const Circle = TCircle as unknown as typeof RNCircle;
@@ -46,11 +52,59 @@ export const Path = TPath as unknown as typeof RNPath;
46
52
  export const SvgText = TSvgText as unknown as typeof RNSvgText;
47
53
 
48
54
  /** Accessible-image props for the chart root (Axiom 12). */
49
- export function chartRootA11yProps(label: string): Record<string, unknown> {
50
- if (isWeb) return { role: "img", "aria-label": label };
55
+ export interface ChartProofDeclaration {
56
+ kind: "bar" | "pie" | "donut" | "line" | "area";
57
+ separated: boolean;
58
+ datumText: boolean;
59
+ datumCount: number;
60
+ datumValues?: Array<[string, string]>;
61
+ }
62
+
63
+ export function chartRootA11yProps(
64
+ label: string,
65
+ proof?: ChartProofDeclaration,
66
+ ): Record<string, unknown> {
67
+ if (isWeb)
68
+ return {
69
+ role: "img",
70
+ "aria-label": label,
71
+ ...(proof
72
+ ? {
73
+ "data-mpo-chart": proof.kind,
74
+ "data-mpo-chart-separated": String(proof.separated),
75
+ "data-mpo-chart-datum-text": String(proof.datumText),
76
+ "data-mpo-chart-datum-count": proof.datumCount,
77
+ ...(proof.datumValues
78
+ ? { "data-mpo-chart-data-expected": JSON.stringify(proof.datumValues) }
79
+ : {}),
80
+ }
81
+ : {}),
82
+ };
51
83
  return { accessible: true, accessibilityRole: "image", accessibilityLabel: label };
52
84
  }
53
85
 
86
+ /** Audit declarations carry no paint and are never sent to native SVG. */
87
+ export function chartMarkProps(label: string): Record<string, unknown> {
88
+ return isWeb ? { "data-mpo-chart-mark": label } : {};
89
+ }
90
+
91
+ export function chartChromeProps(kind: "axis" | "grid"): Record<string, unknown> {
92
+ return isWeb ? { "data-mpo-chart-chrome": kind } : {};
93
+ }
94
+
95
+ export function chartDatumTextProps(index: number): Record<string, unknown> {
96
+ return isWeb ? { "data-mpo-chart-datum-text": String(index) } : {};
97
+ }
98
+
99
+ export function chartWebProps(props: Record<string, unknown>): Record<string, unknown> {
100
+ return isWeb ? props : {};
101
+ }
102
+
103
+ /** SVG's web presentation attribute and RNSVG's explicit native prop. */
104
+ export function luminanceMaskProps(): Record<string, unknown> {
105
+ return isWeb ? { "mask-type": "luminance" } : { maskType: "luminance" };
106
+ }
107
+
54
108
  export interface DatumTargetInput {
55
109
  /** Per-datum accessible name (describeDatum output). */
56
110
  label?: string;
@@ -105,4 +105,27 @@ describe("CodeBlock copy (Input.Button + notify)", () => {
105
105
  expect(getFeedback()[0]?.scope).toBe("field");
106
106
  expect(getFeedback()[0]?.surface).toBe("alert");
107
107
  });
108
+
109
+ it("keeps failures with their block and clears them on a successful retry", async () => {
110
+ const result = renderWithProviders(
111
+ <>
112
+ <div data-testid="first-code">
113
+ <CodeBlock>{"const first = 1;"}</CodeBlock>
114
+ </div>
115
+ <div data-testid="second-code">
116
+ <CodeBlock>{"const second = 2;"}</CodeBlock>
117
+ </div>
118
+ </>,
119
+ );
120
+ const first = result.getByTestId("first-code");
121
+ const second = result.getByTestId("second-code");
122
+ writeText.mockRejectedValueOnce(new Error("Denied"));
123
+ fireEvent.click(copyOf(first)!);
124
+ await vi.waitFor(() => expect(first.textContent).toContain("Copy failed."));
125
+ expect(second.textContent).not.toContain("Copy failed.");
126
+ fireEvent.click(copyOf(first)!);
127
+ await vi.waitFor(() => expect(first.textContent).not.toContain("Copy failed."));
128
+ expect(getFeedback()).toHaveLength(0);
129
+ expect(getToasts()).toHaveLength(1);
130
+ });
108
131
  });
@@ -24,7 +24,7 @@ import { Spacer, XStack, YStack } from "tamagui";
24
24
  import { settleMs } from "../../AnimateHeight";
25
25
  import { ErrorBoundary } from "../../ErrorBoundary";
26
26
  import { NotifyRegion } from "../../feedback/NotifyHost";
27
- import { copyAndNotify } from "../../feedback/copy";
27
+ import { useCopyFeedback } from "../../feedback/copy";
28
28
  import { Code } from "../Code";
29
29
  import { HighlightedCode } from "../HighlightedCode";
30
30
  import { useShikiTokens } from "../Highlighter";
@@ -72,6 +72,7 @@ export function CodeBlock({
72
72
  disableCopy,
73
73
  size,
74
74
  }: CodeBlockProps) {
75
+ const { region, copy } = useCopyFeedback();
75
76
  const { t } = useTranslation();
76
77
  const { knobProps } = useResolvedKnobs();
77
78
  // Content type scale follows the size knob (T-VALUE via sizeToken, LC-18);
@@ -123,7 +124,7 @@ export function CodeBlock({
123
124
  // (DG-FB-01 — the D-copyfield verdict replaces TooltipSimple + icon-swap).
124
125
  const showCopy = Boolean(codeText) && !disableCopy;
125
126
  const activateCopy = () => {
126
- void copyAndNotify(codeText);
127
+ void copy(codeText);
127
128
  };
128
129
  const capSquare = sizeRecipeForToken(String(codeSize), { touch: isTouchSurface() }).height;
129
130
 
@@ -211,7 +212,7 @@ export function CodeBlock({
211
212
  )}
212
213
  </YStack>
213
214
  </ErrorBoundary>
214
- <NotifyRegion scope="field" compact />
215
+ <NotifyRegion scope="field" region={region} compact />
215
216
  </YStack>
216
217
  );
217
218
  }
@@ -77,7 +77,7 @@ export function HighlightedCode({
77
77
  >
78
78
  {showLineNumbers && (
79
79
  <Text
80
- color={componentColors.text.secondary}
80
+ color={knobProps.textAccentColor}
81
81
  fontSize={resolvedFontSize}
82
82
  width={gutterWidth}
83
83
  data-line-number=""
@@ -30,15 +30,17 @@ export const componentColors = {
30
30
  border: "$color7",
31
31
  },
32
32
 
33
- /** Text color levels. muted sits on the $color11 tier — the lowest ramp
34
- * step that keeps secondary text AA-readable on color1/2 surfaces. */
33
+ /** Text color levels. */
35
34
  text: {
36
35
  // MPO-19 X5: was `$color12`, a second answer to what `resolveKnobs`'
37
36
  // `textAccent: high` already resolves to. `$color` IS the theme's ink,
38
37
  // and it tracks a sub-theme where the raw ramp step does not.
39
38
  primary: "$color",
40
- secondary: "$color11",
41
- muted: "$color11",
39
+ // MPO-154: `secondary` and `muted` were the same mistake one tier down —
40
+ // a static `$color11` read into 85 `color` props, which pinned every
41
+ // helper, caption and inactive label dim at `textAccent: high`. Secondary
42
+ // text takes `useResolvedKnobs().knobProps.textAccentColor`, which is
43
+ // `$color11` at low/medium (the AA floor) and `$color` at high.
42
44
  subtle: "$color8",
43
45
  },
44
46
 
@@ -0,0 +1,52 @@
1
+ import { renderWithProviders } from "@multiplatform.one/test-utils";
2
+ import { describe, expect, it, vi } from "vitest";
3
+
4
+ const nativeHost = vi.hoisted(() => ({
5
+ query: vi.fn(() => []),
6
+ focus: vi.fn(),
7
+ preventDefault: vi.fn(),
8
+ }));
9
+
10
+ vi.mock("tamagui", async (original) => ({
11
+ ...(await original<typeof import("tamagui")>()),
12
+ isWeb: false,
13
+ }));
14
+
15
+ vi.mock("../surfaces", async (original) => {
16
+ const React = await import("react");
17
+ return {
18
+ ...(await original<typeof import("../surfaces")>()),
19
+ DialogContent: React.forwardRef(function NativeContent(
20
+ {
21
+ children,
22
+ onOpenAutoFocus,
23
+ }: { children?: React.ReactNode; onOpenAutoFocus?: (event: Event) => void },
24
+ ref,
25
+ ) {
26
+ React.useImperativeHandle(ref, () => {
27
+ // RN 0.83 exposes HTMLElement for native host refs, without web focus APIs.
28
+ const host = Object.create(HTMLElement.prototype);
29
+ host.querySelectorAll = nativeHost.query;
30
+ host.focus = nativeHost.focus;
31
+ return host;
32
+ }, []);
33
+ React.useEffect(() => {
34
+ onOpenAutoFocus?.({ preventDefault: nativeHost.preventDefault } as unknown as Event);
35
+ }, [onOpenAutoFocus]);
36
+ return <div>{children}</div>;
37
+ }),
38
+ };
39
+ });
40
+
41
+ import { ConfirmDialog } from "./ConfirmDialog";
42
+
43
+ describe("ConfirmDialog native focus ownership", () => {
44
+ it("leaves native host refs and open focus to the platform", () => {
45
+ renderWithProviders(
46
+ <ConfirmDialog open title="Delete project?" body="This cannot be undone." />,
47
+ );
48
+ expect(nativeHost.query).not.toHaveBeenCalled();
49
+ expect(nativeHost.focus).not.toHaveBeenCalled();
50
+ expect(nativeHost.preventDefault).not.toHaveBeenCalled();
51
+ });
52
+ });
@@ -31,6 +31,26 @@ function alertdialog(): Element | null {
31
31
  }
32
32
 
33
33
  describe("ConfirmDialog", () => {
34
+ it("keeps a disabled destructive label on Button's readable text tier", () => {
35
+ renderWithProviders(
36
+ <ConfirmDialog
37
+ open
38
+ destructive
39
+ confirmDisabled
40
+ confirmDisabledReason="Type the project name"
41
+ title="Delete project?"
42
+ confirmLabel="Delete"
43
+ />,
44
+ );
45
+ const button = buttonByLabel("Delete");
46
+ const label = Array.from(button.querySelectorAll("span")).find(
47
+ (node) => node.textContent === "Delete",
48
+ );
49
+ expect(label).toBeTruthy();
50
+ expect(label?.className).toContain("_col-color11");
51
+ expect(label?.className).toContain("_fow-400");
52
+ });
53
+
34
54
  it("renders title, body, confirm, and cancel", () => {
35
55
  renderWithProviders(
36
56
  <ConfirmDialog
@@ -27,9 +27,10 @@ import {
27
27
  } from "@multiplatform.one/theme";
28
28
  import { useCallback, useEffect, useRef, type ReactNode } from "react";
29
29
  import { useTranslation } from "../shared/i18n";
30
- import { Dialog, Paragraph, SizableText, XStack, YStack, type TamaguiElement } from "tamagui";
30
+ import { Dialog, Paragraph, XStack, YStack, isWeb, type TamaguiElement } from "tamagui";
31
31
  import { countActionsInTree } from "../shared/actionScan";
32
32
  import { useReturnFocusOnClose } from "../shared/useReturnFocusOnClose";
33
+ import { useKeyboardInset } from "../shared/useKeyboardInset";
33
34
  import { DialogContent, DialogOverlay } from "../surfaces";
34
35
 
35
36
  const TAB_STOPS =
@@ -55,16 +56,6 @@ function isTextEntry(el: HTMLElement): boolean {
55
56
  return Boolean(el.querySelector("input, textarea, [contenteditable='true']"));
56
57
  }
57
58
 
58
- /** R7 / §6.1: action labels are weight 400 on the TEXT NODE, never 500/600. */
59
- function ActionLabel({ children }: { children: string }) {
60
- const { knobProps } = useResolvedKnobs();
61
- return (
62
- <SizableText {...knobProps.body} {...knobProps.label} fontWeight="400" userSelect="none">
63
- {children}
64
- </SizableText>
65
- );
66
- }
67
-
68
59
  function firstTabStop(root: HTMLElement): HTMLElement | null {
69
60
  const nodes = root.querySelectorAll<HTMLElement>(TAB_STOPS);
70
61
  for (const el of nodes) {
@@ -155,6 +146,7 @@ export function ConfirmDialog({
155
146
  const { t } = useTranslation();
156
147
  const { knobProps } = useResolvedKnobs();
157
148
  const confirmLabel = confirmLabelProp ?? t("Confirm");
149
+ const keyboardInset = useKeyboardInset();
158
150
  const cancelLabel = cancelLabelProp ?? t("Cancel");
159
151
  const description = body ?? children;
160
152
  const contentRef = useRef<TamaguiElement | null>(null);
@@ -195,6 +187,7 @@ export function ConfirmDialog({
195
187
  };
196
188
 
197
189
  const handleOpenAutoFocus = useCallback((event: Event) => {
190
+ if (!isWeb) return;
198
191
  event.preventDefault();
199
192
  const panel = panelNode(contentRef.current);
200
193
  if (panel) applyOpenFocus(panel);
@@ -203,7 +196,8 @@ export function ConfirmDialog({
203
196
  // Radix onOpenAutoFocus is the web path; this effect covers jsdom and the
204
197
  // frame where the portal ref is not ready in the auto-focus callback.
205
198
  useEffect(() => {
206
- if (!open) return;
199
+ // RN 0.83 also exposes HTMLElement, but native refs have no DOM query API.
200
+ if (!open || !isWeb) return;
207
201
  let cancelled = false;
208
202
  let frames = 0;
209
203
  const run = () => {
@@ -223,7 +217,7 @@ export function ConfirmDialog({
223
217
 
224
218
  return (
225
219
  <Dialog modal open={open} onOpenChange={handleOpenChange}>
226
- <Dialog.Portal>
220
+ <Dialog.Portal paddingBottom={keyboardInset || undefined}>
227
221
  <DialogOverlay key="overlay" />
228
222
  <DialogContent
229
223
  ref={contentRef}
@@ -279,7 +273,7 @@ export function ConfirmDialog({
279
273
  handleOpenChange(false);
280
274
  }}
281
275
  >
282
- <ActionLabel>{cancelLabel}</ActionLabel>
276
+ {cancelLabel}
283
277
  </Button>
284
278
  <Button
285
279
  compact
@@ -300,7 +294,7 @@ export function ConfirmDialog({
300
294
  handleOpenChange(false);
301
295
  }}
302
296
  >
303
- <ActionLabel>{confirmLabel}</ActionLabel>
297
+ {confirmLabel}
304
298
  </Button>
305
299
  </XStack>
306
300
  </DialogContent>
@@ -120,17 +120,26 @@ function FeedbackDialog({ entry }: { entry: FeedbackEntry | undefined }) {
120
120
  */
121
121
  export function NotifyRegion({
122
122
  scope,
123
+ region,
123
124
  compact,
124
125
  }: {
125
126
  scope: "section" | "field";
127
+ /** Match one target; omitted regions display only untargeted feedback. */
128
+ region?: string;
126
129
  compact?: boolean;
127
130
  }) {
128
131
  const all = useFeedbackEntries();
129
132
  // SP-GAP (LC-18): inline alert stacking rides the space knob.
130
133
  const { knobProps } = useResolvedKnobs();
131
134
  const entries = useMemo(
132
- () => all.filter((e) => e.surface === "alert" && e.scope === scope),
133
- [all, scope],
135
+ () =>
136
+ all.filter(
137
+ (e) =>
138
+ e.surface === "alert" &&
139
+ e.scope === scope &&
140
+ (region != null ? e.region === region : e.region == null),
141
+ ),
142
+ [all, scope, region],
134
143
  );
135
144
  if (entries.length === 0) return null;
136
145
  return (
@@ -4,20 +4,52 @@
4
4
  */
5
5
  import { copyToClipboard } from "../hooks/useClipboard";
6
6
  import { notify } from "./notify";
7
+ import { useCallback, useEffect, useId, useRef } from "react";
8
+ import { dismissFeedbackByRegion } from "./store";
7
9
 
8
10
  export const COPY_OK = "Copied to clipboard.";
9
11
  export const COPY_FAIL = "Copy failed.";
10
12
 
11
- export function reportCopy(ok: boolean): void {
13
+ export function reportCopy(ok: boolean, options?: { region?: string }): void {
14
+ const region = options?.region;
15
+ if (region != null) dismissFeedbackByRegion(region);
12
16
  if (ok) {
13
17
  notify({ severity: "success", scope: "page", body: COPY_OK });
14
18
  return;
15
19
  }
16
- notify({ severity: "error", scope: "field", body: COPY_FAIL });
20
+ notify({ severity: "error", scope: "field", region, body: COPY_FAIL });
17
21
  }
18
22
 
19
- export async function copyAndNotify(text: string): Promise<boolean> {
23
+ export async function copyAndNotify(text: string, options?: { region?: string }): Promise<boolean> {
20
24
  const ok = await copyToClipboard(text).catch(() => false);
21
- reportCopy(ok);
25
+ reportCopy(ok, options);
22
26
  return ok;
23
27
  }
28
+
29
+ /** Keeps copy failures beside their owner, including asynchronous clipboard results. */
30
+ export function useCopyFeedback() {
31
+ const region = useId();
32
+ const mounted = useRef(true);
33
+ useEffect(() => {
34
+ mounted.current = true;
35
+ return () => {
36
+ mounted.current = false;
37
+ dismissFeedbackByRegion(region);
38
+ };
39
+ }, [region]);
40
+ const report = useCallback(
41
+ (ok: boolean) => {
42
+ if (mounted.current) reportCopy(ok, { region });
43
+ },
44
+ [region],
45
+ );
46
+ const copy = useCallback(
47
+ async (text: string) => {
48
+ const ok = await copyToClipboard(text).catch(() => false);
49
+ report(ok);
50
+ return ok;
51
+ },
52
+ [report],
53
+ );
54
+ return { region, report, copy };
55
+ }
@@ -13,6 +13,7 @@ export { NotifyHost, NotifyRegion, type NotifyHostProps } from "./NotifyHost";
13
13
  export { ConfirmDialog, type ConfirmDialogProps } from "./ConfirmDialog";
14
14
  export {
15
15
  dismissFeedback,
16
+ dismissFeedbackByRegion,
16
17
  dismissFeedbackBySurface,
17
18
  getFeedback,
18
19
  pushFeedback,
@@ -2,7 +2,7 @@ import { afterEach, describe, expect, it, vi } from "vitest";
2
2
  import { getToasts, resetToasts, TOAST_ACTION_MIN_MS } from "../Toast/store";
3
3
  import { notify } from "./notify";
4
4
  import { routeNotify, type NotifyEvent } from "./route";
5
- import { getFeedback, resetFeedback } from "./store";
5
+ import { dismissFeedbackByRegion, getFeedback, resetFeedback } from "./store";
6
6
 
7
7
  afterEach(() => {
8
8
  resetToasts();
@@ -103,6 +103,20 @@ describe("routeNotify (DG-FB-01 routing table)", () => {
103
103
  });
104
104
 
105
105
  describe("notify() delivery", () => {
106
+ it("targets and clears one inline region without disturbing another", () => {
107
+ const route = notify({
108
+ severity: "error",
109
+ scope: "field",
110
+ region: "first",
111
+ body: "First failed",
112
+ });
113
+ notify({ severity: "error", scope: "field", region: "second", body: "Second failed" });
114
+ expect(route.region).toBe("first");
115
+ expect(getFeedback().map((entry) => entry.region)).toEqual(["first", "second"]);
116
+ dismissFeedbackByRegion("first");
117
+ expect(getFeedback().map((entry) => entry.region)).toEqual(["second"]);
118
+ });
119
+
106
120
  it("success path shows a one-liner toast", () => {
107
121
  const route = notify({
108
122
  severity: "success",