@multiplatform.one/components 7.10.0 → 7.15.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 (452) hide show
  1. package/README.md +100 -2
  2. package/dist/cjs/Accordion/index.cjs +2 -6
  3. package/dist/cjs/Accordion/index.native.js +2 -6
  4. package/dist/cjs/Accordion/index.native.js.map +1 -1
  5. package/dist/cjs/AnimateHeight/index.cjs +1 -3
  6. package/dist/cjs/AnimateHeight/index.native.js +1 -3
  7. package/dist/cjs/AnimateHeight/index.native.js.map +1 -1
  8. package/dist/cjs/Chip/index.cjs +8 -1
  9. package/dist/cjs/Chip/index.native.js +8 -1
  10. package/dist/cjs/Chip/index.native.js.map +1 -1
  11. package/dist/cjs/SheetModal/index.cjs +22 -3
  12. package/dist/cjs/SheetModal/index.native.js +115 -27
  13. package/dist/cjs/SheetModal/index.native.js.map +1 -1
  14. package/dist/cjs/Tabs/index.cjs +35 -18
  15. package/dist/cjs/Tabs/index.native.js +39 -18
  16. package/dist/cjs/Tabs/index.native.js.map +1 -1
  17. package/dist/cjs/Text.cjs +2 -0
  18. package/dist/cjs/Text.native.js +2 -0
  19. package/dist/cjs/Text.native.js.map +1 -1
  20. package/dist/cjs/TreeSelect/index.cjs +55 -52
  21. package/dist/cjs/TreeSelect/index.native.js +55 -52
  22. package/dist/cjs/TreeSelect/index.native.js.map +1 -1
  23. package/dist/cjs/Video/PlayerChrome.cjs +3 -9
  24. package/dist/cjs/Video/PlayerChrome.native.js +3 -9
  25. package/dist/cjs/Video/PlayerChrome.native.js.map +1 -1
  26. package/dist/cjs/code/Code/index.cjs +6 -0
  27. package/dist/cjs/code/Code/index.native.js +7 -4
  28. package/dist/cjs/code/Code/index.native.js.map +1 -1
  29. package/dist/cjs/code/CodeBlock/index.cjs +4 -5
  30. package/dist/cjs/code/CodeBlock/index.native.js +4 -5
  31. package/dist/cjs/code/CodeBlock/index.native.js.map +1 -1
  32. package/dist/cjs/icons/themed.cjs +2 -1
  33. package/dist/cjs/icons/themed.native.js +2 -1
  34. package/dist/cjs/icons/themed.native.js.map +1 -1
  35. package/dist/cjs/knobImmuneExports.cjs +3 -3
  36. package/dist/cjs/knobImmuneExports.native.js +3 -3
  37. package/dist/cjs/layouts/PaneScaffold.cjs +70 -42
  38. package/dist/cjs/layouts/PaneScaffold.native.js +75 -48
  39. package/dist/cjs/layouts/PaneScaffold.native.js.map +1 -1
  40. package/dist/cjs/layouts/page.cjs +2 -1
  41. package/dist/cjs/layouts/page.native.js +2 -1
  42. package/dist/cjs/layouts/page.native.js.map +1 -1
  43. package/dist/cjs/layouts/sidebar.cjs +1 -3
  44. package/dist/cjs/layouts/sidebar.native.js +1 -3
  45. package/dist/cjs/layouts/sidebar.native.js.map +1 -1
  46. package/dist/cjs/layouts/tags.native.js.map +1 -1
  47. package/dist/cjs/surfaces.cjs +0 -32
  48. package/dist/cjs/surfaces.native.js +0 -32
  49. package/dist/cjs/surfaces.native.js.map +1 -1
  50. package/dist/cjs/views/List.cjs +1 -3
  51. package/dist/cjs/views/List.native.js +1 -3
  52. package/dist/cjs/views/List.native.js.map +1 -1
  53. package/dist/cjs/views/Matrix.cjs +568 -0
  54. package/dist/cjs/views/Matrix.native.js +612 -0
  55. package/dist/cjs/views/Matrix.native.js.map +1 -0
  56. package/dist/cjs/views/TreeView.cjs +175 -43
  57. package/dist/cjs/views/TreeView.native.js +181 -46
  58. package/dist/cjs/views/TreeView.native.js.map +1 -1
  59. package/dist/cjs/views/ganttMath.cjs +2 -0
  60. package/dist/cjs/views/ganttMath.native.js +2 -0
  61. package/dist/cjs/views/ganttMath.native.js.map +1 -1
  62. package/dist/cjs/views/index.cjs +16 -0
  63. package/dist/cjs/views/index.native.js +16 -0
  64. package/dist/cjs/views/index.native.js.map +1 -1
  65. package/dist/cjs/views/matrixMath.cjs +157 -0
  66. package/dist/cjs/views/matrixMath.native.js +229 -0
  67. package/dist/cjs/views/matrixMath.native.js.map +1 -0
  68. package/dist/esm/Accordion/index.mjs +3 -7
  69. package/dist/esm/Accordion/index.mjs.map +1 -1
  70. package/dist/esm/Accordion/index.native.js +3 -7
  71. package/dist/esm/Accordion/index.native.js.map +1 -1
  72. package/dist/esm/AnimateHeight/index.mjs +2 -4
  73. package/dist/esm/AnimateHeight/index.mjs.map +1 -1
  74. package/dist/esm/AnimateHeight/index.native.js +2 -4
  75. package/dist/esm/AnimateHeight/index.native.js.map +1 -1
  76. package/dist/esm/Avatar/getInitials.native.js.map +1 -1
  77. package/dist/esm/Avatar/index.native.js.map +1 -1
  78. package/dist/esm/Badge/index.native.js.map +1 -1
  79. package/dist/esm/Button.native.js.map +1 -1
  80. package/dist/esm/Carousel/index.native.js.map +1 -1
  81. package/dist/esm/Chip/index.mjs +9 -2
  82. package/dist/esm/Chip/index.mjs.map +1 -1
  83. package/dist/esm/Chip/index.native.js +9 -2
  84. package/dist/esm/Chip/index.native.js.map +1 -1
  85. package/dist/esm/Collapsible.native.js.map +1 -1
  86. package/dist/esm/ContextMenu/index.native.js.map +1 -1
  87. package/dist/esm/CopyField/index.native.js.map +1 -1
  88. package/dist/esm/DotIndicator/index.native.js.map +1 -1
  89. package/dist/esm/DropdownMenu/index.native.js.map +1 -1
  90. package/dist/esm/ErrorBoundary/index.native.js.map +1 -1
  91. package/dist/esm/Heading.native.js.map +1 -1
  92. package/dist/esm/Meter/index.native.js.map +1 -1
  93. package/dist/esm/Meter/meter.native.js.map +1 -1
  94. package/dist/esm/Pagination.native.js.map +1 -1
  95. package/dist/esm/ProgressSteps/index.native.js.map +1 -1
  96. package/dist/esm/Quote/index.native.js.map +1 -1
  97. package/dist/esm/Separator/index.native.js.map +1 -1
  98. package/dist/esm/SheetModal/detents.native.js.map +1 -1
  99. package/dist/esm/SheetModal/index.mjs +22 -3
  100. package/dist/esm/SheetModal/index.mjs.map +1 -1
  101. package/dist/esm/SheetModal/index.native.js +117 -29
  102. package/dist/esm/SheetModal/index.native.js.map +1 -1
  103. package/dist/esm/Skeleton/index.native.js.map +1 -1
  104. package/dist/esm/SkipLink/index.native.js.map +1 -1
  105. package/dist/esm/SortableList/SortableHandle.native.js.map +1 -1
  106. package/dist/esm/SortableList/index.native.js.map +1 -1
  107. package/dist/esm/SortableList/useSortableRows.native.js.map +1 -1
  108. package/dist/esm/Tabs/index.mjs +36 -19
  109. package/dist/esm/Tabs/index.mjs.map +1 -1
  110. package/dist/esm/Tabs/index.native.js +40 -19
  111. package/dist/esm/Tabs/index.native.js.map +1 -1
  112. package/dist/esm/Text.mjs +3 -1
  113. package/dist/esm/Text.mjs.map +1 -1
  114. package/dist/esm/Text.native.js +3 -1
  115. package/dist/esm/Text.native.js.map +1 -1
  116. package/dist/esm/Toast/index.native.js.map +1 -1
  117. package/dist/esm/Toast/store.native.js.map +1 -1
  118. package/dist/esm/Tooltip/nativePress.native.js.map +1 -1
  119. package/dist/esm/Tooltip/tooltipShared.native.js.map +1 -1
  120. package/dist/esm/TreeSelect/index.mjs +56 -53
  121. package/dist/esm/TreeSelect/index.mjs.map +1 -1
  122. package/dist/esm/TreeSelect/index.native.js +56 -53
  123. package/dist/esm/TreeSelect/index.native.js.map +1 -1
  124. package/dist/esm/TreeSelect/treeSelectModel.native.js.map +1 -1
  125. package/dist/esm/Video/PlayerChrome.mjs +4 -10
  126. package/dist/esm/Video/PlayerChrome.mjs.map +1 -1
  127. package/dist/esm/Video/PlayerChrome.native.js +4 -10
  128. package/dist/esm/Video/PlayerChrome.native.js.map +1 -1
  129. package/dist/esm/Video/VideoFrame.native.js.map +1 -1
  130. package/dist/esm/Video/types.native.js.map +1 -1
  131. package/dist/esm/Wheel/index.native.js.map +1 -1
  132. package/dist/esm/Wizard/index.native.js.map +1 -1
  133. package/dist/esm/actions/ActionBar.native.js.map +1 -1
  134. package/dist/esm/actions/DestructiveAction.native.js.map +1 -1
  135. package/dist/esm/actions/devWarn.native.js.map +1 -1
  136. package/dist/esm/actions/index.native.js.map +1 -1
  137. package/dist/esm/actions/severity.native.js.map +1 -1
  138. package/dist/esm/charts/Axis.native.js.map +1 -1
  139. package/dist/esm/charts/BarChart.native.js.map +1 -1
  140. package/dist/esm/charts/ChartDataView.native.js.map +1 -1
  141. package/dist/esm/charts/ChartSurface.native.js.map +1 -1
  142. package/dist/esm/charts/LineChart.native.js.map +1 -1
  143. package/dist/esm/charts/PieChart.native.js.map +1 -1
  144. package/dist/esm/charts/Sparkline.native.js.map +1 -1
  145. package/dist/esm/charts/accessibility.native.js.map +1 -1
  146. package/dist/esm/charts/composeChart.native.js.map +1 -1
  147. package/dist/esm/charts/index.native.js.map +1 -1
  148. package/dist/esm/charts/math.native.js.map +1 -1
  149. package/dist/esm/charts/series.native.js.map +1 -1
  150. package/dist/esm/charts/svg.native.js.map +1 -1
  151. package/dist/esm/charts/types.native.js.map +1 -1
  152. package/dist/esm/charts/useChartTheme.native.js.map +1 -1
  153. package/dist/esm/code/Code/index.mjs +6 -0
  154. package/dist/esm/code/Code/index.mjs.map +1 -1
  155. package/dist/esm/code/Code/index.native.js +10 -7
  156. package/dist/esm/code/Code/index.native.js.map +1 -1
  157. package/dist/esm/code/CodeBlock/index.mjs +5 -6
  158. package/dist/esm/code/CodeBlock/index.mjs.map +1 -1
  159. package/dist/esm/code/CodeBlock/index.native.js +5 -6
  160. package/dist/esm/code/CodeBlock/index.native.js.map +1 -1
  161. package/dist/esm/code/HighlightedCode/index.native.js.map +1 -1
  162. package/dist/esm/code/Highlighter/index.native.js.map +1 -1
  163. package/dist/esm/code/Pre/index.native.js.map +1 -1
  164. package/dist/esm/code/index.native.js.map +1 -1
  165. package/dist/esm/componentColors.native.js.map +1 -1
  166. package/dist/esm/feedback/ConfirmDialog.native.js.map +1 -1
  167. package/dist/esm/feedback/NotifyHost.native.js.map +1 -1
  168. package/dist/esm/feedback/copy.native.js.map +1 -1
  169. package/dist/esm/feedback/index.native.js.map +1 -1
  170. package/dist/esm/feedback/notify.native.js.map +1 -1
  171. package/dist/esm/feedback/route.native.js.map +1 -1
  172. package/dist/esm/feedback/store.native.js.map +1 -1
  173. package/dist/esm/hooks/index.native.js.map +1 -1
  174. package/dist/esm/hooks/useClipboard.native.js.map +1 -1
  175. package/dist/esm/hooks/useDocumentTitle.native.js.map +1 -1
  176. package/dist/esm/icons/CheckRegular.native.js.map +1 -1
  177. package/dist/esm/icons/MinusRegular.native.js.map +1 -1
  178. package/dist/esm/icons/index.native.js.map +1 -1
  179. package/dist/esm/icons/lucide.native.js.map +1 -1
  180. package/dist/esm/icons/themed.mjs +3 -2
  181. package/dist/esm/icons/themed.mjs.map +1 -1
  182. package/dist/esm/icons/themed.native.js +3 -2
  183. package/dist/esm/icons/themed.native.js.map +1 -1
  184. package/dist/esm/images/Image/ImageFrame.native.js.map +1 -1
  185. package/dist/esm/images/Image/shared.native.js.map +1 -1
  186. package/dist/esm/images/Image/types.native.js.map +1 -1
  187. package/dist/esm/images/index.native.js.map +1 -1
  188. package/dist/esm/index.native.js.map +1 -1
  189. package/dist/esm/knobImmuneExports.mjs +3 -3
  190. package/dist/esm/knobImmuneExports.native.js +3 -3
  191. package/dist/esm/knobImmuneExports.native.js.map +1 -1
  192. package/dist/esm/layouts/AsyncBoundary.native.js.map +1 -1
  193. package/dist/esm/layouts/Debug/index.native.js.map +1 -1
  194. package/dist/esm/layouts/EmptyState.native.js.map +1 -1
  195. package/dist/esm/layouts/KeyboardAvoidingWrapper/behavior.native.js.map +1 -1
  196. package/dist/esm/layouts/PageTemplates.native.js.map +1 -1
  197. package/dist/esm/layouts/PaneScaffold.mjs +70 -42
  198. package/dist/esm/layouts/PaneScaffold.mjs.map +1 -1
  199. package/dist/esm/layouts/PaneScaffold.native.js +75 -48
  200. package/dist/esm/layouts/PaneScaffold.native.js.map +1 -1
  201. package/dist/esm/layouts/SafeAreaWrapper/insets.native.js.map +1 -1
  202. package/dist/esm/layouts/ViewSwitcher.native.js.map +1 -1
  203. package/dist/esm/layouts/attachments.native.js.map +1 -1
  204. package/dist/esm/layouts/breadcrumbs.native.js.map +1 -1
  205. package/dist/esm/layouts/index.native.js.map +1 -1
  206. package/dist/esm/layouts/page.mjs +3 -2
  207. package/dist/esm/layouts/page.mjs.map +1 -1
  208. package/dist/esm/layouts/page.native.js +3 -2
  209. package/dist/esm/layouts/page.native.js.map +1 -1
  210. package/dist/esm/layouts/pageHeadingScope.native.js.map +1 -1
  211. package/dist/esm/layouts/sidebar.mjs +2 -4
  212. package/dist/esm/layouts/sidebar.mjs.map +1 -1
  213. package/dist/esm/layouts/sidebar.native.js +2 -4
  214. package/dist/esm/layouts/sidebar.native.js.map +1 -1
  215. package/dist/esm/layouts/tags.mjs.map +1 -1
  216. package/dist/esm/layouts/tags.native.js.map +1 -1
  217. package/dist/esm/layouts/timeline.native.js.map +1 -1
  218. package/dist/esm/layouts/toolbar.native.js.map +1 -1
  219. package/dist/esm/shared/actionScan.native.js.map +1 -1
  220. package/dist/esm/shared/i18n.native.js.map +1 -1
  221. package/dist/esm/shared/t.native.js.map +1 -1
  222. package/dist/esm/shared/textRidesText.native.js.map +1 -1
  223. package/dist/esm/shared/useReturnFocusOnClose.native.js.map +1 -1
  224. package/dist/esm/surfaces.mjs +1 -33
  225. package/dist/esm/surfaces.mjs.map +1 -1
  226. package/dist/esm/surfaces.native.js +1 -33
  227. package/dist/esm/surfaces.native.js.map +1 -1
  228. package/dist/esm/tamagui.native.js.map +1 -1
  229. package/dist/esm/testSetup.native.js.map +1 -1
  230. package/dist/esm/utils/setTinted.native.js.map +1 -1
  231. package/dist/esm/utils/unwrapText.native.js.map +1 -1
  232. package/dist/esm/views/Calendar.native.js.map +1 -1
  233. package/dist/esm/views/Dashboard.native.js.map +1 -1
  234. package/dist/esm/views/Gantt.native.js.map +1 -1
  235. package/dist/esm/views/ImageGrid.native.js.map +1 -1
  236. package/dist/esm/views/List.mjs +2 -4
  237. package/dist/esm/views/List.mjs.map +1 -1
  238. package/dist/esm/views/List.native.js +2 -4
  239. package/dist/esm/views/List.native.js.map +1 -1
  240. package/dist/esm/views/Matrix.mjs +543 -0
  241. package/dist/esm/views/Matrix.mjs.map +1 -0
  242. package/dist/esm/views/Matrix.native.js +573 -0
  243. package/dist/esm/views/Matrix.native.js.map +1 -0
  244. package/dist/esm/views/ReportBuilder.native.js.map +1 -1
  245. package/dist/esm/views/TreeView.mjs +175 -43
  246. package/dist/esm/views/TreeView.mjs.map +1 -1
  247. package/dist/esm/views/TreeView.native.js +181 -46
  248. package/dist/esm/views/TreeView.native.js.map +1 -1
  249. package/dist/esm/views/calendarMath.native.js.map +1 -1
  250. package/dist/esm/views/ganttMath.mjs +1 -1
  251. package/dist/esm/views/ganttMath.mjs.map +1 -1
  252. package/dist/esm/views/ganttMath.native.js +1 -1
  253. package/dist/esm/views/ganttMath.native.js.map +1 -1
  254. package/dist/esm/views/index.mjs +4 -2
  255. package/dist/esm/views/index.mjs.map +1 -1
  256. package/dist/esm/views/index.native.js +4 -2
  257. package/dist/esm/views/index.native.js.map +1 -1
  258. package/dist/esm/views/kanbanDnd.native.js.map +1 -1
  259. package/dist/esm/views/matrixMath.mjs +122 -0
  260. package/dist/esm/views/matrixMath.mjs.map +1 -0
  261. package/dist/esm/views/matrixMath.native.js +191 -0
  262. package/dist/esm/views/matrixMath.native.js.map +1 -0
  263. package/dist/esm/views/treeViewDnd.native.js.map +1 -1
  264. package/dist/esm/views/treeViewLayout.native.js.map +1 -1
  265. package/dist/esm/views/treeViewMotion.native.js.map +1 -1
  266. package/dist/esm/views/treeViewReveal.native.js.map +1 -1
  267. package/dist/jsx/Accordion/index.mjs +3 -7
  268. package/dist/jsx/Accordion/index.mjs.map +1 -1
  269. package/dist/jsx/Accordion/index.native.js +2 -6
  270. package/dist/jsx/Accordion/index.native.js.map +1 -1
  271. package/dist/jsx/AnimateHeight/index.mjs +2 -4
  272. package/dist/jsx/AnimateHeight/index.mjs.map +1 -1
  273. package/dist/jsx/AnimateHeight/index.native.js +1 -3
  274. package/dist/jsx/AnimateHeight/index.native.js.map +1 -1
  275. package/dist/jsx/Chip/index.mjs +9 -2
  276. package/dist/jsx/Chip/index.mjs.map +1 -1
  277. package/dist/jsx/Chip/index.native.js +8 -1
  278. package/dist/jsx/Chip/index.native.js.map +1 -1
  279. package/dist/jsx/SheetModal/index.mjs +22 -3
  280. package/dist/jsx/SheetModal/index.mjs.map +1 -1
  281. package/dist/jsx/SheetModal/index.native.js +115 -27
  282. package/dist/jsx/SheetModal/index.native.js.map +1 -1
  283. package/dist/jsx/Tabs/index.mjs +36 -19
  284. package/dist/jsx/Tabs/index.mjs.map +1 -1
  285. package/dist/jsx/Tabs/index.native.js +39 -18
  286. package/dist/jsx/Tabs/index.native.js.map +1 -1
  287. package/dist/jsx/Text.mjs +3 -1
  288. package/dist/jsx/Text.mjs.map +1 -1
  289. package/dist/jsx/Text.native.js +2 -0
  290. package/dist/jsx/Text.native.js.map +1 -1
  291. package/dist/jsx/TreeSelect/index.mjs +56 -53
  292. package/dist/jsx/TreeSelect/index.mjs.map +1 -1
  293. package/dist/jsx/TreeSelect/index.native.js +55 -52
  294. package/dist/jsx/TreeSelect/index.native.js.map +1 -1
  295. package/dist/jsx/Video/PlayerChrome.mjs +4 -10
  296. package/dist/jsx/Video/PlayerChrome.mjs.map +1 -1
  297. package/dist/jsx/Video/PlayerChrome.native.js +3 -9
  298. package/dist/jsx/Video/PlayerChrome.native.js.map +1 -1
  299. package/dist/jsx/code/Code/index.mjs +6 -0
  300. package/dist/jsx/code/Code/index.mjs.map +1 -1
  301. package/dist/jsx/code/Code/index.native.js +7 -4
  302. package/dist/jsx/code/Code/index.native.js.map +1 -1
  303. package/dist/jsx/code/CodeBlock/index.mjs +5 -6
  304. package/dist/jsx/code/CodeBlock/index.mjs.map +1 -1
  305. package/dist/jsx/code/CodeBlock/index.native.js +4 -5
  306. package/dist/jsx/code/CodeBlock/index.native.js.map +1 -1
  307. package/dist/jsx/icons/themed.mjs +3 -2
  308. package/dist/jsx/icons/themed.mjs.map +1 -1
  309. package/dist/jsx/icons/themed.native.js +2 -1
  310. package/dist/jsx/icons/themed.native.js.map +1 -1
  311. package/dist/jsx/knobImmuneExports.mjs +3 -3
  312. package/dist/jsx/knobImmuneExports.native.js +3 -3
  313. package/dist/jsx/layouts/PaneScaffold.mjs +70 -42
  314. package/dist/jsx/layouts/PaneScaffold.mjs.map +1 -1
  315. package/dist/jsx/layouts/PaneScaffold.native.js +75 -48
  316. package/dist/jsx/layouts/PaneScaffold.native.js.map +1 -1
  317. package/dist/jsx/layouts/page.mjs +3 -2
  318. package/dist/jsx/layouts/page.mjs.map +1 -1
  319. package/dist/jsx/layouts/page.native.js +2 -1
  320. package/dist/jsx/layouts/page.native.js.map +1 -1
  321. package/dist/jsx/layouts/sidebar.mjs +2 -4
  322. package/dist/jsx/layouts/sidebar.mjs.map +1 -1
  323. package/dist/jsx/layouts/sidebar.native.js +1 -3
  324. package/dist/jsx/layouts/sidebar.native.js.map +1 -1
  325. package/dist/jsx/layouts/tags.mjs.map +1 -1
  326. package/dist/jsx/layouts/tags.native.js.map +1 -1
  327. package/dist/jsx/surfaces.mjs +1 -33
  328. package/dist/jsx/surfaces.mjs.map +1 -1
  329. package/dist/jsx/surfaces.native.js +0 -32
  330. package/dist/jsx/surfaces.native.js.map +1 -1
  331. package/dist/jsx/views/List.mjs +2 -4
  332. package/dist/jsx/views/List.mjs.map +1 -1
  333. package/dist/jsx/views/List.native.js +1 -3
  334. package/dist/jsx/views/List.native.js.map +1 -1
  335. package/dist/jsx/views/Matrix.mjs +543 -0
  336. package/dist/jsx/views/Matrix.mjs.map +1 -0
  337. package/dist/jsx/views/Matrix.native.js +612 -0
  338. package/dist/jsx/views/Matrix.native.js.map +1 -0
  339. package/dist/jsx/views/TreeView.mjs +175 -43
  340. package/dist/jsx/views/TreeView.mjs.map +1 -1
  341. package/dist/jsx/views/TreeView.native.js +181 -46
  342. package/dist/jsx/views/TreeView.native.js.map +1 -1
  343. package/dist/jsx/views/ganttMath.mjs +1 -1
  344. package/dist/jsx/views/ganttMath.mjs.map +1 -1
  345. package/dist/jsx/views/ganttMath.native.js +2 -0
  346. package/dist/jsx/views/ganttMath.native.js.map +1 -1
  347. package/dist/jsx/views/index.mjs +4 -2
  348. package/dist/jsx/views/index.mjs.map +1 -1
  349. package/dist/jsx/views/index.native.js +16 -0
  350. package/dist/jsx/views/index.native.js.map +1 -1
  351. package/dist/jsx/views/matrixMath.mjs +122 -0
  352. package/dist/jsx/views/matrixMath.mjs.map +1 -0
  353. package/dist/jsx/views/matrixMath.native.js +229 -0
  354. package/dist/jsx/views/matrixMath.native.js.map +1 -0
  355. package/package.json +12 -12
  356. package/src/Accordion/Accordion.spec.tsx +20 -0
  357. package/src/Accordion/index.tsx +8 -4
  358. package/src/AnimateHeight/index.tsx +143 -142
  359. package/src/Chip/Chip.borderLadder.spec.tsx +54 -0
  360. package/src/Chip/Chip.pressSlop.spec.tsx +57 -0
  361. package/src/Chip/index.tsx +15 -1
  362. package/src/Heading.native.spec.tsx +1 -1
  363. package/src/Separator/index.tsx +3 -3
  364. package/src/SheetModal/SheetModal.detentLayout.spec.tsx +173 -0
  365. package/src/SheetModal/SheetModal.fill.spec.tsx +147 -0
  366. package/src/SheetModal/SheetModal.ownedBody.spec.tsx +200 -0
  367. package/src/SheetModal/SheetModal.stories.spec.tsx +23 -2
  368. package/src/SheetModal/SheetModal.stories.tsx +275 -2
  369. package/src/SheetModal/SheetModal.touch.spec.tsx +63 -0
  370. package/src/SheetModal/index.native.tsx +143 -21
  371. package/src/SheetModal/index.tsx +40 -3
  372. package/src/Tabs/Tabs.hydration.spec.tsx +123 -0
  373. package/src/Tabs/Tabs.lifecycle.spec.tsx +123 -0
  374. package/src/Tabs/Tabs.measurement.spec.tsx +186 -0
  375. package/src/Tabs/Tabs.stories.tsx +43 -0
  376. package/src/Tabs/index.tsx +45 -15
  377. package/src/Text.spec.tsx +32 -2
  378. package/src/Text.tsx +7 -6
  379. package/src/Toast/Toast.spec.tsx +50 -0
  380. package/src/Tooltip/Tooltip.spec.tsx +55 -2
  381. package/src/TreeSelect/TreeSelect.spec.tsx +15 -15
  382. package/src/TreeSelect/index.tsx +53 -50
  383. package/src/Video/PlayerChrome.tsx +4 -3
  384. package/src/Wheel/Wheel.spec.tsx +4 -4
  385. package/src/adjacency.l1.spec.tsx +175 -0
  386. package/src/code/Code/code.spec.tsx +2 -19
  387. package/src/code/Code/index.tsx +0 -6
  388. package/src/code/CodeBlock/index.tsx +5 -3
  389. package/src/code/highlightedCode.spec.tsx +2 -2
  390. package/src/code/hostProps.spec.tsx +55 -0
  391. package/src/icons/themed.hydration.spec.tsx +60 -0
  392. package/src/icons/themed.tsx +3 -6
  393. package/src/knobImmuneExports.ts +3 -3
  394. package/src/layouts/PaneScaffold.spec.tsx +148 -2
  395. package/src/layouts/PaneScaffold.stories.tsx +33 -1
  396. package/src/layouts/PaneScaffold.tsx +101 -48
  397. package/src/layouts/page.designLaw.spec.tsx +20 -0
  398. package/src/layouts/page.tsx +2 -0
  399. package/src/layouts/sidebar.tsx +2 -3
  400. package/src/layouts/tags.tsx +2 -1
  401. package/src/overlayElevation.spec.tsx +39 -51
  402. package/src/surfaces.spec.tsx +13 -10
  403. package/src/surfaces.tsx +4 -33
  404. package/src/tamagui.spec.ts +4 -3
  405. package/src/textAccentSecondary.spec.tsx +100 -2
  406. package/src/views/List.tsx +2 -1
  407. package/src/views/Matrix.spec.tsx +339 -0
  408. package/src/views/Matrix.stories.spec.tsx +68 -0
  409. package/src/views/Matrix.stories.tsx +153 -0
  410. package/src/views/Matrix.tsx +738 -0
  411. package/src/views/TreeView.reveal.spec.tsx +7 -0
  412. package/src/views/TreeView.reveal.stories.tsx +134 -0
  413. package/src/views/TreeView.scroll-index.spec.tsx +246 -0
  414. package/src/views/TreeView.scroll.spec.tsx +711 -50
  415. package/src/views/TreeView.tsx +230 -49
  416. package/src/views/ganttMath.ts +4 -2
  417. package/src/views/index.ts +30 -0
  418. package/src/views/matrixMath.spec.ts +237 -0
  419. package/src/views/matrixMath.ts +251 -0
  420. package/src/views/views.spec.tsx +3 -1
  421. package/types/Accordion/index.d.ts.map +1 -1
  422. package/types/AnimateHeight/index.d.ts.map +1 -1
  423. package/types/Chip/index.d.ts.map +1 -1
  424. package/types/Separator/index.d.ts +3 -3
  425. package/types/SheetModal/index.d.ts +8 -1
  426. package/types/SheetModal/index.d.ts.map +1 -1
  427. package/types/SheetModal/index.native.d.ts +1 -1
  428. package/types/SheetModal/index.native.d.ts.map +1 -1
  429. package/types/Tabs/index.d.ts.map +1 -1
  430. package/types/Text.d.ts.map +1 -1
  431. package/types/TreeSelect/index.d.ts.map +1 -1
  432. package/types/Video/PlayerChrome.d.ts.map +1 -1
  433. package/types/code/Code/index.d.ts.map +1 -1
  434. package/types/code/CodeBlock/index.d.ts.map +1 -1
  435. package/types/icons/themed.d.ts.map +1 -1
  436. package/types/layouts/PaneScaffold.d.ts +14 -1
  437. package/types/layouts/PaneScaffold.d.ts.map +1 -1
  438. package/types/layouts/page.d.ts.map +1 -1
  439. package/types/layouts/sidebar.d.ts.map +1 -1
  440. package/types/layouts/tags.d.ts.map +1 -1
  441. package/types/surfaces.d.ts.map +1 -1
  442. package/types/views/List.d.ts.map +1 -1
  443. package/types/views/Matrix.d.ts +102 -0
  444. package/types/views/Matrix.d.ts.map +1 -0
  445. package/types/views/TreeView.d.ts +10 -1
  446. package/types/views/TreeView.d.ts.map +1 -1
  447. package/types/views/ganttMath.d.ts +4 -0
  448. package/types/views/ganttMath.d.ts.map +1 -1
  449. package/types/views/index.d.ts +3 -1
  450. package/types/views/index.d.ts.map +1 -1
  451. package/types/views/matrixMath.d.ts +114 -0
  452. package/types/views/matrixMath.d.ts.map +1 -0
@@ -0,0 +1,568 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all) __defProp(target, name, {
7
+ get: all[name],
8
+ enumerable: true
9
+ });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
14
+ get: () => from[key],
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ });
17
+ }
18
+ return to;
19
+ };
20
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
21
+ value: true
22
+ }), mod);
23
+ var Matrix_exports = {};
24
+ __export(Matrix_exports, {
25
+ MatrixView: () => MatrixView
26
+ });
27
+ module.exports = __toCommonJS(Matrix_exports);
28
+ var import_componentColors = require("../componentColors.cjs");
29
+ var import_AsyncBoundary = require("../layouts/AsyncBoundary.cjs");
30
+ var import_Skeleton = require("../Skeleton/index.cjs");
31
+ var import_ViewSwitcher = require("../layouts/ViewSwitcher.cjs");
32
+ var import_t = require("../shared/t.cjs");
33
+ var import_theme = require("@multiplatform.one/theme");
34
+ var import_react = require("react");
35
+ var import_i18n = require("../shared/i18n.cjs");
36
+ var import_react_native = require("react-native-web");
37
+ var import_tamagui = require("tamagui");
38
+ var import_ganttMath = require("./ganttMath.cjs");
39
+ var import_matrixMath = require("./matrixMath.cjs");
40
+ var import_jsx_runtime = require("react/jsx-runtime");
41
+ const CanvasScroller = import_tamagui.isWeb ? import_tamagui.ScrollView : import_react_native.ScrollView;
42
+ const hairlineEnd = import_tamagui.isWeb ? {
43
+ borderInlineEndWidth: import_theme.hairlineWidth,
44
+ borderInlineEndStyle: "solid",
45
+ className: "mp-hairline-ie"
46
+ } : {
47
+ borderEndWidth: import_theme.hairlineWidth
48
+ };
49
+ const FILL_FLOOR = 0.14;
50
+ const ON_FILL_INK_FROM = 0.55;
51
+ const LEGEND_STEPS = [0, 0.25, 0.5, 0.75, 1];
52
+ function CellIntentWrap({
53
+ intent,
54
+ children
55
+ }) {
56
+ if (!intent || intent === "accent") return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {
57
+ children
58
+ });
59
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_theme.Intent, {
60
+ name: intent,
61
+ children
62
+ });
63
+ }
64
+ function resolveFill(color, intent) {
65
+ return color ?? (intent && intent !== "accent" ? "$color9" : "$accentBackground");
66
+ }
67
+ function fillOpacity(intensity) {
68
+ return FILL_FLOOR + (1 - FILL_FLOOR) * intensity;
69
+ }
70
+ function MatrixCellBox({
71
+ row,
72
+ bucket,
73
+ summary,
74
+ intensity,
75
+ fill,
76
+ text,
77
+ name,
78
+ width,
79
+ height,
80
+ lastColumn,
81
+ onPress
82
+ }) {
83
+ const {
84
+ knobProps
85
+ } = (0, import_theme.useResolvedKnobs)();
86
+ const readable = (0, import_theme.useReadableTextOn)(fill);
87
+ const [keyboardRing, setKeyboardRing] = (0, import_react.useState)(false);
88
+ const empty = summary === void 0;
89
+ const state = summary === void 0 ? "empty" : summary.value === 0 ? "zero" : "value";
90
+ const ink = !empty && intensity >= ON_FILL_INK_FROM && readable ? readable : "$color";
91
+ const pressable = onPress !== void 0;
92
+ return /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.YStack, {
93
+ width,
94
+ height,
95
+ alignItems: "center",
96
+ justifyContent: "center",
97
+ position: "relative",
98
+ overflow: "hidden",
99
+ ...(lastColumn ? null : hairlineEnd),
100
+ borderColor: import_componentColors.componentColors.divider,
101
+ cursor: pressable ? "pointer" : void 0,
102
+ hoverStyle: pressable ? {
103
+ backgroundColor: import_componentColors.componentColors.interactive.hover
104
+ } : void 0,
105
+ pressStyle: pressable ? {
106
+ opacity: 0.8
107
+ } : void 0,
108
+ role: pressable ? "button" : void 0,
109
+ tabIndex: pressable ? 0 : void 0,
110
+ "aria-label": name,
111
+ ...(keyboardRing ? import_theme.keyboardFocusRingProps : {
112
+ outlineWidth: 0
113
+ }),
114
+ onFocus: pressable ? () => setKeyboardRing((0, import_theme.wasKeyboardFocus)()) : void 0,
115
+ onBlur: pressable ? () => setKeyboardRing(false) : void 0,
116
+ onPress,
117
+ onKeyDown: pressable ? ke => {
118
+ if (ke.key !== "Enter" && ke.key !== " ") return;
119
+ ke.preventDefault?.();
120
+ onPress();
121
+ } : void 0,
122
+ ...{
123
+ "data-matrix-cell": `${row.id}:${bucket.key}`,
124
+ "data-matrix-cell-state": state,
125
+ ...(summary?.intent ? {
126
+ "data-matrix-cell-intent": summary.intent
127
+ } : null)
128
+ },
129
+ children: [!empty && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.YStack, {
130
+ position: "absolute",
131
+ top: 0,
132
+ left: 0,
133
+ right: 0,
134
+ bottom: 0,
135
+ backgroundColor: fill,
136
+ opacity: fillOpacity(intensity),
137
+ pointerEvents: "none",
138
+ ...{
139
+ "data-matrix-fill": String(intensity)
140
+ }
141
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
142
+ ...knobProps.label,
143
+ color: empty ? import_componentColors.componentColors.text.subtle : ink,
144
+ numberOfLines: 1,
145
+ pointerEvents: "none",
146
+ zIndex: 1,
147
+ "aria-hidden": true,
148
+ children: empty ? "\xB7" : text
149
+ })]
150
+ });
151
+ }
152
+ function LegendSwatch({
153
+ intensity,
154
+ fill,
155
+ empty
156
+ }) {
157
+ const {
158
+ knobProps
159
+ } = (0, import_theme.useResolvedKnobs)();
160
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.YStack, {
161
+ width: 14,
162
+ height: 14,
163
+ ...knobProps.borderRadius,
164
+ position: "relative",
165
+ overflow: "hidden",
166
+ alignItems: "center",
167
+ justifyContent: "center",
168
+ borderWidth: import_theme.hairlineWidth,
169
+ borderColor: import_componentColors.componentColors.surface.border,
170
+ ...{
171
+ "data-matrix-legend-swatch": empty ? "empty" : String(intensity ?? 1)
172
+ },
173
+ children: empty ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
174
+ fontSize: 10,
175
+ lineHeight: 10,
176
+ color: import_componentColors.componentColors.text.subtle,
177
+ "aria-hidden": true,
178
+ children: "\xB7"
179
+ }) : /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.YStack, {
180
+ position: "absolute",
181
+ top: 0,
182
+ left: 0,
183
+ right: 0,
184
+ bottom: 0,
185
+ backgroundColor: fill ?? "$accentBackground",
186
+ opacity: fillOpacity(intensity ?? 1)
187
+ })
188
+ });
189
+ }
190
+ const SKELETON_ROWS = [96, 72, 112, 64, 88];
191
+ function MatrixSkeleton({
192
+ labelWidth,
193
+ columnWidth,
194
+ rowHeight
195
+ }) {
196
+ const {
197
+ t
198
+ } = (0, import_i18n.useTranslation)();
199
+ const {
200
+ knobProps
201
+ } = (0, import_theme.useResolvedKnobs)();
202
+ const edgePad = knobProps.panelPadding.padding;
203
+ const columns = [0, 1, 2, 3, 4, 5];
204
+ return /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.YStack, {
205
+ width: "100%",
206
+ "aria-busy": true,
207
+ "aria-label": t("Loading"),
208
+ ...{
209
+ "data-matrix-skeleton": "true",
210
+ "data-async-skeleton": "matrix"
211
+ },
212
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.XStack, {
213
+ height: rowHeight,
214
+ alignItems: "center",
215
+ ...import_theme.hairline.bottom,
216
+ borderColor: "$borderColor",
217
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.XStack, {
218
+ width: labelWidth,
219
+ paddingHorizontal: edgePad,
220
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_Skeleton.Skeleton, {
221
+ width: 64,
222
+ height: 12
223
+ })
224
+ }), columns.map(column => /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.XStack, {
225
+ width: columnWidth,
226
+ justifyContent: "center",
227
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_Skeleton.Skeleton, {
228
+ width: Math.max(24, columnWidth - 24),
229
+ height: 12
230
+ })
231
+ }, column))]
232
+ }), SKELETON_ROWS.map((labelSkeletonWidth, index) => /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.XStack, {
233
+ height: rowHeight,
234
+ alignItems: "center",
235
+ ...(index < SKELETON_ROWS.length - 1 ? import_theme.hairline.bottom : null),
236
+ borderColor: import_componentColors.componentColors.divider,
237
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.XStack, {
238
+ width: labelWidth,
239
+ paddingHorizontal: edgePad,
240
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_Skeleton.Skeleton, {
241
+ width: labelSkeletonWidth,
242
+ height: 12
243
+ })
244
+ }), columns.map(column => /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.XStack, {
245
+ width: columnWidth,
246
+ justifyContent: "center",
247
+ children: (column + index) % 3 === 0 ? null : /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_Skeleton.Skeleton, {
248
+ variant: "rounded",
249
+ width: Math.max(16, columnWidth - 16),
250
+ height: Math.max(10, rowHeight - 20)
251
+ })
252
+ }, column))]
253
+ }, index))]
254
+ });
255
+ }
256
+ function MatrixView({
257
+ rows,
258
+ cells,
259
+ rule: initialRule = "month",
260
+ onRuleChange,
261
+ range: rangeProp,
262
+ firstDayOfWeek = 0,
263
+ onCellPress,
264
+ formatCell,
265
+ isLoading = false,
266
+ error = null,
267
+ onRetry,
268
+ emptyTitle,
269
+ emptyDescription,
270
+ height: heightProp,
271
+ labelWidth = 180,
272
+ columnWidth: columnWidthProp,
273
+ subjectLabel,
274
+ showRuleSwitcher = true,
275
+ showLegend = true,
276
+ legendItems,
277
+ ...stackProps
278
+ }) {
279
+ const {
280
+ t
281
+ } = (0, import_i18n.useTranslation)();
282
+ const {
283
+ knobProps
284
+ } = (0, import_theme.useResolvedKnobs)();
285
+ const [rule, setRule] = (0, import_react.useState)(initialRule);
286
+ if (typeof document !== "undefined") (0, import_theme.ensureKeyboardModalityTracking)();
287
+ const sz = knobProps.sizeToken;
288
+ const height = heightProp ?? (sz === "$3" ? 400 : sz === "$5" ? 560 : 480);
289
+ const rowHeight = Math.max(import_theme.MIN_PRESS_TARGET, sz === "$3" ? 44 : sz === "$5" ? 56 : 48);
290
+ const columnWidth = Math.max(import_theme.MIN_PRESS_TARGET, columnWidthProp ?? (sz === "$3" ? 56 : sz === "$5" ? 72 : 64));
291
+ const axisHeight = sz === "$3" ? 40 : sz === "$5" ? 52 : 46;
292
+ const range = (0, import_react.useMemo)(() => rangeProp ? (0, import_matrixMath.alignMatrixRange)(rangeProp, rule, firstDayOfWeek) : (0, import_matrixMath.computeMatrixRange)(cells.map(cell => cell.date), rule, firstDayOfWeek), [rangeProp, cells, rule, firstDayOfWeek]);
293
+ const buckets = (0, import_react.useMemo)(() => (0, import_matrixMath.generateBuckets)(range, rule, firstDayOfWeek), [range, rule, firstDayOfWeek]);
294
+ const summaries = (0, import_react.useMemo)(() => (0, import_matrixMath.summarizeMatrixCells)(cells, rule, firstDayOfWeek), [cells, rule, firstDayOfWeek]);
295
+ const maxValue = (0, import_react.useMemo)(() => {
296
+ const rowIds = new Set(rows.map(row => row.id));
297
+ const bucketKeys = new Set(buckets.map(bucket => bucket.key));
298
+ return (0, import_matrixMath.matrixMaxValue)(Array.from(summaries.values()).filter(summary => rowIds.has(summary.rowId) && bucketKeys.has(summary.bucketKey)));
299
+ }, [summaries, rows, buckets]);
300
+ const gridWidth = buckets.length * columnWidth;
301
+ const rangeLabel = (0, import_react.useMemo)(() => (0, import_ganttMath.formatRangeLabel)(range), [range]);
302
+ const changeRule = (0, import_react.useCallback)(next => {
303
+ setRule(next);
304
+ onRuleChange?.(next);
305
+ }, [onRuleChange]);
306
+ const cellText = (0, import_react.useCallback)(summary => {
307
+ if (formatCell) return formatCell(summary);
308
+ if (summary.label !== void 0) return summary.label;
309
+ return (0, import_theme.formatNumber)(summary.value ?? summary.count);
310
+ }, [formatCell]);
311
+ const axisScrollRef = (0, import_react.useRef)(null);
312
+ const handleCanvasScroll = (0, import_react.useCallback)(event => {
313
+ const x = event?.nativeEvent?.contentOffset?.x ?? 0;
314
+ axisScrollRef.current?.scrollTo?.({
315
+ x,
316
+ animated: false
317
+ });
318
+ }, []);
319
+ const scrollerDirection = {
320
+ direction: "ltr"
321
+ };
322
+ const showSkeleton = !error && isLoading && rows.length === 0;
323
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_AsyncBoundary.AsyncBoundary, {
324
+ loading: showSkeleton ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(MatrixSkeleton, {
325
+ labelWidth,
326
+ columnWidth,
327
+ rowHeight
328
+ }) : false,
329
+ empty: !error && !isLoading && rows.length === 0,
330
+ error,
331
+ onRetry,
332
+ emptyTitle: emptyTitle ?? t("No subjects"),
333
+ emptyDescription,
334
+ ...stackProps,
335
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.YStack, {
336
+ height,
337
+ overflow: "hidden",
338
+ backgroundColor: "$background",
339
+ elevation: knobProps.elevation,
340
+ ...knobProps.containerRadius,
341
+ ...{
342
+ "data-matrix-view": rule,
343
+ "data-size": knobProps.size,
344
+ "data-density": knobProps.density
345
+ },
346
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.XStack, {
347
+ ...knobProps.panelPadding,
348
+ alignItems: "center",
349
+ justifyContent: "space-between",
350
+ ...knobProps.gap,
351
+ ...import_theme.hairline.bottom,
352
+ borderColor: "$borderColor",
353
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
354
+ ...knobProps.heading,
355
+ ...import_componentColors.sectionHeading,
356
+ numberOfLines: 1,
357
+ children: rangeLabel
358
+ }), showRuleSwitcher && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_ViewSwitcher.ViewSwitcher, {
359
+ views: [{
360
+ type: "day",
361
+ label: t("Day")
362
+ }, {
363
+ type: "week",
364
+ label: t("Week")
365
+ }, {
366
+ type: "month",
367
+ label: t("Month")
368
+ }],
369
+ currentView: rule,
370
+ onViewChange: val => changeRule(val)
371
+ })]
372
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.XStack, {
373
+ ...import_theme.hairline.bottom,
374
+ borderColor: "$borderColor",
375
+ ...{
376
+ "data-matrix-axis-row": "true"
377
+ },
378
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.XStack, {
379
+ width: labelWidth,
380
+ flexShrink: 0,
381
+ height: axisHeight,
382
+ alignItems: "center",
383
+ paddingHorizontal: knobProps.panelPadding.padding,
384
+ ...hairlineEnd,
385
+ borderColor: "$borderColor",
386
+ ...{
387
+ backgroundColor: import_componentColors.componentColors.surface.background
388
+ },
389
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
390
+ ...knobProps.label,
391
+ color: knobProps.textAccentColor,
392
+ numberOfLines: 1,
393
+ children: subjectLabel ?? t("Subject")
394
+ })
395
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.ScrollView, {
396
+ ref: axisScrollRef,
397
+ horizontal: true,
398
+ flex: 1,
399
+ scrollEnabled: false,
400
+ showsHorizontalScrollIndicator: false,
401
+ style: scrollerDirection,
402
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.XStack, {
403
+ width: gridWidth,
404
+ height: axisHeight,
405
+ ...{
406
+ backgroundColor: import_componentColors.componentColors.surface.background,
407
+ "data-matrix-axis": rule
408
+ },
409
+ children: buckets.map((bucket, index) => /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.XStack, {
410
+ width: columnWidth,
411
+ height: axisHeight,
412
+ alignItems: "center",
413
+ justifyContent: "center",
414
+ ...(index === buckets.length - 1 ? null : hairlineEnd),
415
+ borderColor: import_componentColors.componentColors.divider,
416
+ "aria-label": bucket.name,
417
+ ...{
418
+ "data-matrix-column": bucket.key
419
+ },
420
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
421
+ ...knobProps.label,
422
+ color: knobProps.textAccentColor,
423
+ numberOfLines: 1,
424
+ children: bucket.label
425
+ })
426
+ }, bucket.key))
427
+ })
428
+ })]
429
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.ScrollView, {
430
+ flex: 1,
431
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.XStack, {
432
+ ...{
433
+ "data-matrix-scroll-body": "true"
434
+ },
435
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.YStack, {
436
+ width: labelWidth,
437
+ flexShrink: 0,
438
+ ...hairlineEnd,
439
+ borderColor: "$borderColor",
440
+ ...{
441
+ "data-matrix-labels": "true"
442
+ },
443
+ children: rows.map((row, index) => /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.XStack, {
444
+ height: rowHeight,
445
+ alignItems: "center",
446
+ paddingHorizontal: knobProps.panelPadding.padding,
447
+ ...(index === rows.length - 1 ? null : import_theme.hairline.bottom),
448
+ borderColor: import_componentColors.componentColors.divider,
449
+ ...{
450
+ "data-matrix-row-label": row.id
451
+ },
452
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
453
+ ...knobProps.body,
454
+ numberOfLines: 1,
455
+ color: "$color",
456
+ children: row.label
457
+ })
458
+ }, row.id))
459
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(CanvasScroller, {
460
+ horizontal: true,
461
+ ...(import_tamagui.isWeb ? {
462
+ flex: 1
463
+ } : null),
464
+ showsHorizontalScrollIndicator: true,
465
+ onScroll: handleCanvasScroll,
466
+ scrollEventThrottle: 16,
467
+ style: import_tamagui.isWeb ? scrollerDirection : [{
468
+ flex: 1
469
+ }, scrollerDirection],
470
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.YStack, {
471
+ width: gridWidth,
472
+ ...{
473
+ "data-matrix-canvas": "true"
474
+ },
475
+ children: rows.map((row, rowIndex) => /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.XStack, {
476
+ height: rowHeight,
477
+ ...(rowIndex === rows.length - 1 ? null : import_theme.hairline.bottom),
478
+ borderColor: import_componentColors.componentColors.divider,
479
+ ...{
480
+ "data-matrix-row": row.id
481
+ },
482
+ children: buckets.map((bucket, columnIndex) => {
483
+ const summary = summaries.get((0, import_matrixMath.matrixCellKey)(row.id, bucket.key));
484
+ const intensity = summary ? (0, import_matrixMath.matrixCellIntensity)(summary, maxValue) : 0;
485
+ const fill = resolveFill(summary?.color, summary?.intent);
486
+ const text = summary ? cellText(summary) : t("No data");
487
+ const name = (0, import_t.withInterp)(t("{{subject}}, {{bucket}}: {{value}}"), {
488
+ subject: row.label,
489
+ bucket: bucket.name,
490
+ value: text
491
+ });
492
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(CellIntentWrap, {
493
+ intent: summary?.color ? void 0 : summary?.intent,
494
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(MatrixCellBox, {
495
+ row,
496
+ bucket,
497
+ summary,
498
+ intensity,
499
+ fill,
500
+ text,
501
+ name,
502
+ width: columnWidth,
503
+ height: rowHeight,
504
+ lastColumn: columnIndex === buckets.length - 1,
505
+ onPress: onCellPress ? () => onCellPress({
506
+ row,
507
+ bucket,
508
+ summary
509
+ }) : void 0
510
+ })
511
+ }, bucket.key);
512
+ })
513
+ }, row.id))
514
+ })
515
+ })]
516
+ })
517
+ }), showLegend && /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.XStack, {
518
+ ...knobProps.panelPadding,
519
+ alignItems: "center",
520
+ flexWrap: "wrap",
521
+ ...knobProps.gap,
522
+ ...import_theme.hairline.top,
523
+ borderColor: "$borderColor",
524
+ ...{
525
+ "data-matrix-legend": "true"
526
+ },
527
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.XStack, {
528
+ alignItems: "center",
529
+ gap: "$1.5",
530
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(LegendSwatch, {
531
+ empty: true
532
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
533
+ ...knobProps.label,
534
+ color: knobProps.textAccentColor,
535
+ children: t("No data")
536
+ })]
537
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.XStack, {
538
+ alignItems: "center",
539
+ gap: "$1.5",
540
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
541
+ ...knobProps.label,
542
+ color: knobProps.textAccentColor,
543
+ children: t("Less")
544
+ }), LEGEND_STEPS.map(step => /* @__PURE__ */(0, import_jsx_runtime.jsx)(LegendSwatch, {
545
+ intensity: step
546
+ }, step)), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
547
+ ...knobProps.label,
548
+ color: knobProps.textAccentColor,
549
+ children: t("More")
550
+ })]
551
+ }), legendItems?.map((item, index) => /* @__PURE__ */(0, import_jsx_runtime.jsx)(CellIntentWrap, {
552
+ intent: item.color ? void 0 : item.intent,
553
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.XStack, {
554
+ alignItems: "center",
555
+ gap: "$1.5",
556
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(LegendSwatch, {
557
+ fill: resolveFill(item.color, item.intent)
558
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
559
+ ...knobProps.label,
560
+ color: knobProps.textAccentColor,
561
+ children: item.label
562
+ })]
563
+ })
564
+ }, `${item.label}-${index}`))]
565
+ })]
566
+ })
567
+ });
568
+ }