@multiplatform.one/components 7.78.0 → 7.80.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 (703) hide show
  1. package/dist/cjs/Accordion/index.native.js +1 -1
  2. package/dist/cjs/Accordion/index.native.js.map +1 -1
  3. package/dist/cjs/Alert/index.native.js.map +1 -1
  4. package/dist/cjs/AnimateHeight/index.native.js.map +1 -1
  5. package/dist/cjs/Avatar/getInitials.native.js.map +1 -1
  6. package/dist/cjs/Avatar/index.native.js.map +1 -1
  7. package/dist/cjs/Badge/index.native.js.map +1 -1
  8. package/dist/cjs/Button.native.js.map +1 -1
  9. package/dist/cjs/Card.native.js.map +1 -1
  10. package/dist/cjs/CardFooter.native.js.map +1 -1
  11. package/dist/cjs/CardHeader.native.js.map +1 -1
  12. package/dist/cjs/Carousel/index.native.js +3 -3
  13. package/dist/cjs/Carousel/index.native.js.map +1 -1
  14. package/dist/cjs/Chip/index.native.js.map +1 -1
  15. package/dist/cjs/Collapsible.native.js.map +1 -1
  16. package/dist/cjs/ContextMenu/index.native.js.map +1 -1
  17. package/dist/cjs/CopyField/CopyMenuButton.native.js +1 -1
  18. package/dist/cjs/CopyField/CopyMenuButton.native.js.map +1 -1
  19. package/dist/cjs/CopyField/index.native.js.map +1 -1
  20. package/dist/cjs/Dialog.native.js.map +1 -1
  21. package/dist/cjs/Diff/diff.cjs +84 -0
  22. package/dist/cjs/Diff/diff.native.js +108 -0
  23. package/dist/cjs/Diff/diff.native.js.map +1 -0
  24. package/dist/cjs/Diff/index.cjs +174 -0
  25. package/dist/cjs/Diff/index.native.js +181 -0
  26. package/dist/cjs/Diff/index.native.js.map +1 -0
  27. package/dist/cjs/DotIndicator/index.native.js.map +1 -1
  28. package/dist/cjs/DropdownMenu/index.native.js.map +1 -1
  29. package/dist/cjs/DropdownMenu/menuSettle.native.js.map +1 -1
  30. package/dist/cjs/ElapsedProgress/index.cjs +102 -0
  31. package/dist/cjs/ElapsedProgress/index.native.js +112 -0
  32. package/dist/cjs/ElapsedProgress/index.native.js.map +1 -0
  33. package/dist/cjs/ErrorBoundary/index.native.js.map +1 -1
  34. package/dist/cjs/Heading.native.js.map +1 -1
  35. package/dist/cjs/Kbd/index.native.js.map +1 -1
  36. package/dist/cjs/Kbd/keys.native.js.map +1 -1
  37. package/dist/cjs/Lightbox/MediaControl.native.js.map +1 -1
  38. package/dist/cjs/Lightbox/index.gnome.native.js.map +1 -1
  39. package/dist/cjs/Lightbox/index.native.js +1 -1
  40. package/dist/cjs/Lightbox/shared.native.js.map +1 -1
  41. package/dist/cjs/Lightbox/useLightbox.native.js.map +1 -1
  42. package/dist/cjs/MachineLiteral/index.cjs +98 -0
  43. package/dist/cjs/MachineLiteral/index.native.js +102 -0
  44. package/dist/cjs/MachineLiteral/index.native.js.map +1 -0
  45. package/dist/cjs/Material/blur.cjs +34 -0
  46. package/dist/cjs/Material/blur.native.js +100 -0
  47. package/dist/cjs/Material/blur.native.js.map +1 -0
  48. package/dist/cjs/Material/index.cjs +9 -3
  49. package/dist/cjs/Material/index.native.js +9 -3
  50. package/dist/cjs/Material/index.native.js.map +1 -1
  51. package/dist/cjs/Meter/index.cjs +3 -1
  52. package/dist/cjs/Meter/index.native.js +4 -2
  53. package/dist/cjs/Meter/index.native.js.map +1 -1
  54. package/dist/cjs/Meter/meter.native.js.map +1 -1
  55. package/dist/cjs/OverflowRow/index.native.js +1 -1
  56. package/dist/cjs/OverflowRow/index.native.js.map +1 -1
  57. package/dist/cjs/Pagination.native.js +1 -1
  58. package/dist/cjs/Pagination.native.js.map +1 -1
  59. package/dist/cjs/Popover.native.js +1 -1
  60. package/dist/cjs/Popover.native.js.map +1 -1
  61. package/dist/cjs/ProgressSteps/index.native.js.map +1 -1
  62. package/dist/cjs/Quote/index.native.js.map +1 -1
  63. package/dist/cjs/SchemeToggle/index.native.js +1 -1
  64. package/dist/cjs/SchemeToggle/index.native.js.map +1 -1
  65. package/dist/cjs/ScrollView/revealFocusedField.native.js.map +1 -1
  66. package/dist/cjs/Separator/index.native.js.map +1 -1
  67. package/dist/cjs/Sheet.native.js.map +1 -1
  68. package/dist/cjs/SheetModal/SheetHeader.native.js.map +1 -1
  69. package/dist/cjs/SheetModal/SheetNavigation.native.js.map +1 -1
  70. package/dist/cjs/SheetModal/detents.native.js.map +1 -1
  71. package/dist/cjs/SheetModal/useSheetFrameFocus.native.js.map +1 -1
  72. package/dist/cjs/Skeleton/index.native.js.map +1 -1
  73. package/dist/cjs/SkipLink/index.native.js.map +1 -1
  74. package/dist/cjs/SortableList/SortableHandle.native.js.map +1 -1
  75. package/dist/cjs/SortableList/index.cjs +4 -1
  76. package/dist/cjs/SortableList/index.native.js +4 -1
  77. package/dist/cjs/SortableList/index.native.js.map +1 -1
  78. package/dist/cjs/SortableList/useSortableRows.native.js.map +1 -1
  79. package/dist/cjs/SortableList/useUserOrder.cjs +84 -0
  80. package/dist/cjs/SortableList/useUserOrder.native.js +107 -0
  81. package/dist/cjs/SortableList/useUserOrder.native.js.map +1 -0
  82. package/dist/cjs/Tabs/index.native.js +1 -1
  83. package/dist/cjs/Tabs/index.native.js.map +1 -1
  84. package/dist/cjs/Text.native.js.map +1 -1
  85. package/dist/cjs/ThemePresetPicker/index.native.js +2 -2
  86. package/dist/cjs/ThemePresetPicker/index.native.js.map +1 -1
  87. package/dist/cjs/Toast/index.native.js.map +1 -1
  88. package/dist/cjs/Toast/store.native.js.map +1 -1
  89. package/dist/cjs/Tooltip/nativePress.native.js.map +1 -1
  90. package/dist/cjs/Tooltip/tooltipShared.native.js.map +1 -1
  91. package/dist/cjs/TreeSelect/index.cjs +7 -1
  92. package/dist/cjs/TreeSelect/index.native.js +8 -2
  93. package/dist/cjs/TreeSelect/index.native.js.map +1 -1
  94. package/dist/cjs/TreeSelect/treeSelectModel.native.js.map +1 -1
  95. package/dist/cjs/Video/PlayerChrome.native.js.map +1 -1
  96. package/dist/cjs/Video/VideoFrame.native.js.map +1 -1
  97. package/dist/cjs/Video/types.native.js.map +1 -1
  98. package/dist/cjs/Wheel/index.native.js.map +1 -1
  99. package/dist/cjs/Wizard/index.native.js +2 -2
  100. package/dist/cjs/Wizard/index.native.js.map +1 -1
  101. package/dist/cjs/actions/ActionBar.native.js.map +1 -1
  102. package/dist/cjs/actions/DangerSection.native.js.map +1 -1
  103. package/dist/cjs/actions/DestructiveAction.native.js.map +1 -1
  104. package/dist/cjs/actions/HeaderActions.native.js +2 -2
  105. package/dist/cjs/actions/HeaderActions.native.js.map +1 -1
  106. package/dist/cjs/actions/StandardAction.native.js +1 -1
  107. package/dist/cjs/actions/StandardAction.native.js.map +1 -1
  108. package/dist/cjs/actions/devWarn.native.js.map +1 -1
  109. package/dist/cjs/actions/index.native.js.map +1 -1
  110. package/dist/cjs/actions/severity.native.js.map +1 -1
  111. package/dist/cjs/appShell/AppShell.cjs +432 -0
  112. package/dist/cjs/appShell/AppShell.native.js +499 -0
  113. package/dist/cjs/appShell/AppShell.native.js.map +1 -0
  114. package/dist/cjs/appShell/Dock.native.js.map +1 -1
  115. package/dist/cjs/appShell/MpoTabHost.native.js.map +1 -1
  116. package/dist/cjs/appShell/ScopeMenu.native.js.map +1 -1
  117. package/dist/cjs/appShell/SettingsSplit.native.js +1 -1
  118. package/dist/cjs/appShell/SettingsSplit.native.js.map +1 -1
  119. package/dist/cjs/appShell/Springboard.native.js +1 -1
  120. package/dist/cjs/appShell/Springboard.native.js.map +1 -1
  121. package/dist/cjs/appShell/SystemBar.native.js.map +1 -1
  122. package/dist/cjs/appShell/TabBar.cjs +10 -5
  123. package/dist/cjs/appShell/TabBar.native.js +11 -6
  124. package/dist/cjs/appShell/TabBar.native.js.map +1 -1
  125. package/dist/cjs/appShell/appTile.native.js +1 -1
  126. package/dist/cjs/appShell/appTile.native.js.map +1 -1
  127. package/dist/cjs/appShell/bottomChrome.native.js.map +1 -1
  128. package/dist/cjs/appShell/index.cjs +1 -0
  129. package/dist/cjs/appShell/index.native.js +1 -0
  130. package/dist/cjs/appShell/index.native.js.map +1 -1
  131. package/dist/cjs/charts/Axis.native.js.map +1 -1
  132. package/dist/cjs/charts/BarChart.native.js.map +1 -1
  133. package/dist/cjs/charts/ChartDataView.native.js +1 -1
  134. package/dist/cjs/charts/ChartDataView.native.js.map +1 -1
  135. package/dist/cjs/charts/ChartSurface.native.js.map +1 -1
  136. package/dist/cjs/charts/LineChart.native.js.map +1 -1
  137. package/dist/cjs/charts/PieChart.native.js.map +1 -1
  138. package/dist/cjs/charts/Sparkline.cjs +1 -1
  139. package/dist/cjs/charts/Sparkline.native.js +1 -1
  140. package/dist/cjs/charts/Sparkline.native.js.map +1 -1
  141. package/dist/cjs/charts/accessibility.native.js.map +1 -1
  142. package/dist/cjs/charts/chartHeight.native.js.map +1 -1
  143. package/dist/cjs/charts/composeChart.native.js.map +1 -1
  144. package/dist/cjs/charts/index.native.js.map +1 -1
  145. package/dist/cjs/charts/math.native.js.map +1 -1
  146. package/dist/cjs/charts/series.native.js.map +1 -1
  147. package/dist/cjs/charts/svg.native.js.map +1 -1
  148. package/dist/cjs/charts/types.native.js.map +1 -1
  149. package/dist/cjs/charts/useChartTheme.native.js.map +1 -1
  150. package/dist/cjs/code/Code/index.native.js.map +1 -1
  151. package/dist/cjs/code/CodeBlock/index.native.js +7 -7
  152. package/dist/cjs/code/CodeBlock/index.native.js.map +1 -1
  153. package/dist/cjs/code/HighlightedCode/index.native.js.map +1 -1
  154. package/dist/cjs/code/Highlighter/houseSyntaxTheme.native.js.map +1 -1
  155. package/dist/cjs/code/Highlighter/index.native.js.map +1 -1
  156. package/dist/cjs/code/Highlighter/namedGroupMatchAll.native.js.map +1 -1
  157. package/dist/cjs/code/Pre/index.native.js.map +1 -1
  158. package/dist/cjs/code/index.native.js +5 -5
  159. package/dist/cjs/code/index.native.js.map +1 -1
  160. package/dist/cjs/componentColors.native.js.map +1 -1
  161. package/dist/cjs/feedback/ConfirmDialog.native.js.map +1 -1
  162. package/dist/cjs/feedback/NotifyHost.native.js +2 -2
  163. package/dist/cjs/feedback/NotifyHost.native.js.map +1 -1
  164. package/dist/cjs/feedback/copy.native.js.map +1 -1
  165. package/dist/cjs/feedback/index.native.js.map +1 -1
  166. package/dist/cjs/feedback/notify.native.js.map +1 -1
  167. package/dist/cjs/feedback/route.native.js.map +1 -1
  168. package/dist/cjs/feedback/store.native.js.map +1 -1
  169. package/dist/cjs/formLayouts/FormLayouts.native.js +1 -1
  170. package/dist/cjs/formLayouts/FormLayouts.native.js.map +1 -1
  171. package/dist/cjs/formLayouts/PreferencePanel.native.js +2 -2
  172. package/dist/cjs/formLayouts/PreferencePanel.native.js.map +1 -1
  173. package/dist/cjs/formLayouts/index.native.js.map +1 -1
  174. package/dist/cjs/hooks/index.native.js +1 -1
  175. package/dist/cjs/hooks/index.native.js.map +1 -1
  176. package/dist/cjs/hooks/useClipboard.native.js.map +1 -1
  177. package/dist/cjs/hooks/useDocumentTitle.native.js.map +1 -1
  178. package/dist/cjs/hooks/useHoldCue.native.js.map +1 -1
  179. package/dist/cjs/icons/CheckRegular.native.js.map +1 -1
  180. package/dist/cjs/icons/MinusRegular.native.js.map +1 -1
  181. package/dist/cjs/icons/index.native.js.map +1 -1
  182. package/dist/cjs/icons/lucide.native.js.map +1 -1
  183. package/dist/cjs/icons/themed.native.js.map +1 -1
  184. package/dist/cjs/images/Image/ImageFrame.native.js +1 -1
  185. package/dist/cjs/images/Image/ImageFrame.native.js.map +1 -1
  186. package/dist/cjs/images/Image/framing.native.js.map +1 -1
  187. package/dist/cjs/images/Image/index.native.js +1 -1
  188. package/dist/cjs/images/Image/mediaRadius.native.js.map +1 -1
  189. package/dist/cjs/images/Image/shared.native.js +1 -1
  190. package/dist/cjs/images/Image/shared.native.js.map +1 -1
  191. package/dist/cjs/images/Image/types.native.js.map +1 -1
  192. package/dist/cjs/images/index.native.js.map +1 -1
  193. package/dist/cjs/index.cjs +6 -1
  194. package/dist/cjs/index.native.js +42 -37
  195. package/dist/cjs/index.native.js.map +1 -1
  196. package/dist/cjs/knobImmuneExports.native.js.map +1 -1
  197. package/dist/cjs/layouts/AsyncBoundary.native.js +2 -2
  198. package/dist/cjs/layouts/AsyncBoundary.native.js.map +1 -1
  199. package/dist/cjs/layouts/Debug/index.native.js.map +1 -1
  200. package/dist/cjs/layouts/EmptyState.native.js.map +1 -1
  201. package/dist/cjs/layouts/IdentityPlate.native.js.map +1 -1
  202. package/dist/cjs/layouts/KeyboardAvoidingWrapper/behavior.native.js.map +1 -1
  203. package/dist/cjs/layouts/PageTemplates.native.js.map +1 -1
  204. package/dist/cjs/layouts/PaneScaffold.native.js.map +1 -1
  205. package/dist/cjs/layouts/SafeAreaWrapper/insets.native.js.map +1 -1
  206. package/dist/cjs/layouts/StatusDot.native.js.map +1 -1
  207. package/dist/cjs/layouts/StatusGlyphStrip.native.js +1 -1
  208. package/dist/cjs/layouts/StatusGlyphStrip.native.js.map +1 -1
  209. package/dist/cjs/layouts/ViewSwitcher.native.js.map +1 -1
  210. package/dist/cjs/layouts/attachments.native.js +1 -1
  211. package/dist/cjs/layouts/attachments.native.js.map +1 -1
  212. package/dist/cjs/layouts/bottomAccessory.native.js.map +1 -1
  213. package/dist/cjs/layouts/breadcrumbs.native.js.map +1 -1
  214. package/dist/cjs/layouts/index.native.js +3 -3
  215. package/dist/cjs/layouts/index.native.js.map +1 -1
  216. package/dist/cjs/layouts/page.cjs +3 -0
  217. package/dist/cjs/layouts/page.native.js +5 -2
  218. package/dist/cjs/layouts/page.native.js.map +1 -1
  219. package/dist/cjs/layouts/pageHeadingScope.native.js.map +1 -1
  220. package/dist/cjs/layouts/screenScroll.cjs +55 -0
  221. package/dist/cjs/layouts/screenScroll.native.js +59 -0
  222. package/dist/cjs/layouts/screenScroll.native.js.map +1 -1
  223. package/dist/cjs/layouts/shellSidebarSlot.native.js.map +1 -1
  224. package/dist/cjs/layouts/sidebar.cjs +46 -9
  225. package/dist/cjs/layouts/sidebar.native.js +50 -10
  226. package/dist/cjs/layouts/sidebar.native.js.map +1 -1
  227. package/dist/cjs/layouts/tags.native.js +2 -2
  228. package/dist/cjs/layouts/tags.native.js.map +1 -1
  229. package/dist/cjs/layouts/timeline.native.js +2 -2
  230. package/dist/cjs/layouts/timeline.native.js.map +1 -1
  231. package/dist/cjs/layouts/toolbar.native.js +1 -1
  232. package/dist/cjs/layouts/toolbar.native.js.map +1 -1
  233. package/dist/cjs/shared/actionScan.native.js.map +1 -1
  234. package/dist/cjs/shared/i18n.native.js.map +1 -1
  235. package/dist/cjs/shared/restoreRetries.native.js.map +1 -1
  236. package/dist/cjs/shared/t.native.js.map +1 -1
  237. package/dist/cjs/shared/textRidesText.native.js.map +1 -1
  238. package/dist/cjs/shared/useReturnFocusOnClose.native.js.map +1 -1
  239. package/dist/cjs/surfaces.native.js +1 -1
  240. package/dist/cjs/surfaces.native.js.map +1 -1
  241. package/dist/cjs/tamagui.native.js +1 -1
  242. package/dist/cjs/tamagui.native.js.map +1 -1
  243. package/dist/cjs/testSetup.native.js.map +1 -1
  244. package/dist/cjs/utils/setTinted.native.js.map +1 -1
  245. package/dist/cjs/utils/unwrapText.native.js.map +1 -1
  246. package/dist/cjs/views/Calendar.native.js +1 -1
  247. package/dist/cjs/views/Calendar.native.js.map +1 -1
  248. package/dist/cjs/views/Dashboard.native.js +2 -2
  249. package/dist/cjs/views/Dashboard.native.js.map +1 -1
  250. package/dist/cjs/views/Gantt.native.js +2 -2
  251. package/dist/cjs/views/Gantt.native.js.map +1 -1
  252. package/dist/cjs/views/GanttDateGrip.native.js.map +1 -1
  253. package/dist/cjs/views/ImageGrid.native.js +2 -2
  254. package/dist/cjs/views/ImageGrid.native.js.map +1 -1
  255. package/dist/cjs/views/Kanban.native.js +1 -1
  256. package/dist/cjs/views/List.native.js.map +1 -1
  257. package/dist/cjs/views/ListGroup.native.js.map +1 -1
  258. package/dist/cjs/views/ListRow.native.js.map +1 -1
  259. package/dist/cjs/views/Matrix.native.js +2 -2
  260. package/dist/cjs/views/Matrix.native.js.map +1 -1
  261. package/dist/cjs/views/ReportBuilder.cjs +3 -3
  262. package/dist/cjs/views/ReportBuilder.native.js +5 -5
  263. package/dist/cjs/views/ReportBuilder.native.js.map +1 -1
  264. package/dist/cjs/views/ShortcutCard.native.js.map +1 -1
  265. package/dist/cjs/views/TreeView.native.js.map +1 -1
  266. package/dist/cjs/views/calendarMath.native.js.map +1 -1
  267. package/dist/cjs/views/ganttIntervals.native.js.map +1 -1
  268. package/dist/cjs/views/ganttMath.native.js.map +1 -1
  269. package/dist/cjs/views/index.cjs +3 -1
  270. package/dist/cjs/views/index.native.js +3 -1
  271. package/dist/cjs/views/index.native.js.map +1 -1
  272. package/dist/cjs/views/kanbanDnd.native.js.map +1 -1
  273. package/dist/cjs/views/matrixMath.native.js.map +1 -1
  274. package/dist/cjs/views/sameNameScope.cjs +39 -0
  275. package/dist/cjs/views/sameNameScope.native.js +63 -0
  276. package/dist/cjs/views/sameNameScope.native.js.map +1 -0
  277. package/dist/cjs/views/treeViewDnd.native.js.map +1 -1
  278. package/dist/cjs/views/treeViewLayout.native.js.map +1 -1
  279. package/dist/cjs/views/treeViewMotion.native.js.map +1 -1
  280. package/dist/cjs/views/treeViewReveal.native.js.map +1 -1
  281. package/dist/cjs/views/usePageFlowLoadMore.native.js.map +1 -1
  282. package/dist/cjs/views/widgetChrome.native.js.map +1 -1
  283. package/dist/esm/Accordion/index.native.js.map +1 -1
  284. package/dist/esm/AnimateHeight/index.native.js.map +1 -1
  285. package/dist/esm/Avatar/getInitials.native.js.map +1 -1
  286. package/dist/esm/Avatar/index.native.js.map +1 -1
  287. package/dist/esm/Badge/index.native.js.map +1 -1
  288. package/dist/esm/Button.native.js.map +1 -1
  289. package/dist/esm/Carousel/index.native.js.map +1 -1
  290. package/dist/esm/Chip/index.native.js.map +1 -1
  291. package/dist/esm/Collapsible.native.js.map +1 -1
  292. package/dist/esm/ContextMenu/index.native.js.map +1 -1
  293. package/dist/esm/CopyField/CopyMenuButton.native.js.map +1 -1
  294. package/dist/esm/CopyField/index.native.js.map +1 -1
  295. package/dist/esm/Dialog.native.js.map +1 -1
  296. package/dist/esm/Diff/diff.mjs +58 -0
  297. package/dist/esm/Diff/diff.mjs.map +1 -0
  298. package/dist/esm/Diff/diff.native.js +79 -0
  299. package/dist/esm/Diff/diff.native.js.map +1 -0
  300. package/dist/esm/Diff/index.mjs +147 -0
  301. package/dist/esm/Diff/index.mjs.map +1 -0
  302. package/dist/esm/Diff/index.native.js +151 -0
  303. package/dist/esm/Diff/index.native.js.map +1 -0
  304. package/dist/esm/DotIndicator/index.native.js.map +1 -1
  305. package/dist/esm/DropdownMenu/index.native.js.map +1 -1
  306. package/dist/esm/DropdownMenu/menuSettle.native.js.map +1 -1
  307. package/dist/esm/ElapsedProgress/index.mjs +76 -0
  308. package/dist/esm/ElapsedProgress/index.mjs.map +1 -0
  309. package/dist/esm/ElapsedProgress/index.native.js +83 -0
  310. package/dist/esm/ElapsedProgress/index.native.js.map +1 -0
  311. package/dist/esm/ErrorBoundary/index.native.js.map +1 -1
  312. package/dist/esm/Heading.native.js.map +1 -1
  313. package/dist/esm/Kbd/index.native.js.map +1 -1
  314. package/dist/esm/Kbd/keys.native.js.map +1 -1
  315. package/dist/esm/Lightbox/MediaControl.native.js.map +1 -1
  316. package/dist/esm/Lightbox/index.gnome.native.js.map +1 -1
  317. package/dist/esm/Lightbox/shared.native.js.map +1 -1
  318. package/dist/esm/Lightbox/useLightbox.native.js.map +1 -1
  319. package/dist/esm/MachineLiteral/index.mjs +73 -0
  320. package/dist/esm/MachineLiteral/index.mjs.map +1 -0
  321. package/dist/esm/MachineLiteral/index.native.js +74 -0
  322. package/dist/esm/MachineLiteral/index.native.js.map +1 -0
  323. package/dist/esm/Material/blur.mjs +8 -0
  324. package/dist/esm/Material/blur.mjs.map +1 -0
  325. package/dist/esm/Material/blur.native.js +67 -0
  326. package/dist/esm/Material/blur.native.js.map +1 -0
  327. package/dist/esm/Material/index.mjs +10 -4
  328. package/dist/esm/Material/index.mjs.map +1 -1
  329. package/dist/esm/Material/index.native.js +10 -4
  330. package/dist/esm/Material/index.native.js.map +1 -1
  331. package/dist/esm/Meter/index.mjs +4 -3
  332. package/dist/esm/Meter/index.mjs.map +1 -1
  333. package/dist/esm/Meter/index.native.js +4 -3
  334. package/dist/esm/Meter/index.native.js.map +1 -1
  335. package/dist/esm/Meter/meter.native.js.map +1 -1
  336. package/dist/esm/OverflowRow/index.native.js.map +1 -1
  337. package/dist/esm/Pagination.native.js.map +1 -1
  338. package/dist/esm/Popover.native.js.map +1 -1
  339. package/dist/esm/ProgressSteps/index.native.js.map +1 -1
  340. package/dist/esm/Quote/index.native.js.map +1 -1
  341. package/dist/esm/SchemeToggle/index.native.js.map +1 -1
  342. package/dist/esm/ScrollView/revealFocusedField.native.js.map +1 -1
  343. package/dist/esm/Separator/index.native.js.map +1 -1
  344. package/dist/esm/Sheet.native.js.map +1 -1
  345. package/dist/esm/SheetModal/SheetHeader.native.js.map +1 -1
  346. package/dist/esm/SheetModal/SheetNavigation.native.js.map +1 -1
  347. package/dist/esm/SheetModal/detents.native.js.map +1 -1
  348. package/dist/esm/SheetModal/useSheetFrameFocus.native.js.map +1 -1
  349. package/dist/esm/Skeleton/index.native.js.map +1 -1
  350. package/dist/esm/SkipLink/index.native.js.map +1 -1
  351. package/dist/esm/SortableList/SortableHandle.native.js.map +1 -1
  352. package/dist/esm/SortableList/index.mjs +2 -1
  353. package/dist/esm/SortableList/index.mjs.map +1 -1
  354. package/dist/esm/SortableList/index.native.js +2 -1
  355. package/dist/esm/SortableList/index.native.js.map +1 -1
  356. package/dist/esm/SortableList/useSortableRows.native.js.map +1 -1
  357. package/dist/esm/SortableList/useUserOrder.mjs +58 -0
  358. package/dist/esm/SortableList/useUserOrder.mjs.map +1 -0
  359. package/dist/esm/SortableList/useUserOrder.native.js +78 -0
  360. package/dist/esm/SortableList/useUserOrder.native.js.map +1 -0
  361. package/dist/esm/Tabs/index.native.js.map +1 -1
  362. package/dist/esm/Text.native.js.map +1 -1
  363. package/dist/esm/ThemePresetPicker/index.native.js.map +1 -1
  364. package/dist/esm/Toast/index.native.js.map +1 -1
  365. package/dist/esm/Toast/store.native.js.map +1 -1
  366. package/dist/esm/Tooltip/nativePress.native.js.map +1 -1
  367. package/dist/esm/Tooltip/tooltipShared.native.js.map +1 -1
  368. package/dist/esm/TreeSelect/index.mjs +8 -2
  369. package/dist/esm/TreeSelect/index.mjs.map +1 -1
  370. package/dist/esm/TreeSelect/index.native.js +8 -2
  371. package/dist/esm/TreeSelect/index.native.js.map +1 -1
  372. package/dist/esm/TreeSelect/treeSelectModel.native.js.map +1 -1
  373. package/dist/esm/Video/PlayerChrome.native.js.map +1 -1
  374. package/dist/esm/Video/VideoFrame.native.js.map +1 -1
  375. package/dist/esm/Video/types.native.js.map +1 -1
  376. package/dist/esm/Wheel/index.native.js.map +1 -1
  377. package/dist/esm/Wizard/index.native.js.map +1 -1
  378. package/dist/esm/actions/ActionBar.native.js.map +1 -1
  379. package/dist/esm/actions/DangerSection.native.js.map +1 -1
  380. package/dist/esm/actions/DestructiveAction.native.js.map +1 -1
  381. package/dist/esm/actions/HeaderActions.native.js.map +1 -1
  382. package/dist/esm/actions/StandardAction.native.js.map +1 -1
  383. package/dist/esm/actions/devWarn.native.js.map +1 -1
  384. package/dist/esm/actions/index.native.js.map +1 -1
  385. package/dist/esm/actions/severity.native.js.map +1 -1
  386. package/dist/esm/appShell/AppShell.mjs +406 -0
  387. package/dist/esm/appShell/AppShell.mjs.map +1 -0
  388. package/dist/esm/appShell/AppShell.native.js +470 -0
  389. package/dist/esm/appShell/AppShell.native.js.map +1 -0
  390. package/dist/esm/appShell/Dock.native.js.map +1 -1
  391. package/dist/esm/appShell/MpoTabHost.native.js.map +1 -1
  392. package/dist/esm/appShell/ScopeMenu.native.js.map +1 -1
  393. package/dist/esm/appShell/SettingsSplit.native.js.map +1 -1
  394. package/dist/esm/appShell/Springboard.native.js.map +1 -1
  395. package/dist/esm/appShell/SystemBar.native.js.map +1 -1
  396. package/dist/esm/appShell/TabBar.mjs +10 -5
  397. package/dist/esm/appShell/TabBar.mjs.map +1 -1
  398. package/dist/esm/appShell/TabBar.native.js +10 -5
  399. package/dist/esm/appShell/TabBar.native.js.map +1 -1
  400. package/dist/esm/appShell/appTile.native.js.map +1 -1
  401. package/dist/esm/appShell/bottomChrome.native.js.map +1 -1
  402. package/dist/esm/appShell/index.mjs +1 -0
  403. package/dist/esm/appShell/index.mjs.map +1 -1
  404. package/dist/esm/appShell/index.native.js +1 -0
  405. package/dist/esm/appShell/index.native.js.map +1 -1
  406. package/dist/esm/charts/Axis.native.js.map +1 -1
  407. package/dist/esm/charts/BarChart.native.js.map +1 -1
  408. package/dist/esm/charts/ChartDataView.native.js.map +1 -1
  409. package/dist/esm/charts/ChartSurface.native.js.map +1 -1
  410. package/dist/esm/charts/LineChart.native.js.map +1 -1
  411. package/dist/esm/charts/PieChart.native.js.map +1 -1
  412. package/dist/esm/charts/Sparkline.mjs +1 -1
  413. package/dist/esm/charts/Sparkline.mjs.map +1 -1
  414. package/dist/esm/charts/Sparkline.native.js +1 -1
  415. package/dist/esm/charts/Sparkline.native.js.map +1 -1
  416. package/dist/esm/charts/accessibility.native.js.map +1 -1
  417. package/dist/esm/charts/chartHeight.native.js.map +1 -1
  418. package/dist/esm/charts/composeChart.native.js.map +1 -1
  419. package/dist/esm/charts/index.native.js.map +1 -1
  420. package/dist/esm/charts/math.native.js.map +1 -1
  421. package/dist/esm/charts/series.native.js.map +1 -1
  422. package/dist/esm/charts/svg.native.js.map +1 -1
  423. package/dist/esm/charts/types.native.js.map +1 -1
  424. package/dist/esm/charts/useChartTheme.native.js.map +1 -1
  425. package/dist/esm/code/Code/index.native.js.map +1 -1
  426. package/dist/esm/code/CodeBlock/index.native.js.map +1 -1
  427. package/dist/esm/code/HighlightedCode/index.native.js.map +1 -1
  428. package/dist/esm/code/Highlighter/houseSyntaxTheme.native.js.map +1 -1
  429. package/dist/esm/code/Highlighter/index.native.js.map +1 -1
  430. package/dist/esm/code/Highlighter/namedGroupMatchAll.native.js.map +1 -1
  431. package/dist/esm/code/Pre/index.native.js.map +1 -1
  432. package/dist/esm/code/index.native.js.map +1 -1
  433. package/dist/esm/componentColors.native.js.map +1 -1
  434. package/dist/esm/feedback/ConfirmDialog.native.js.map +1 -1
  435. package/dist/esm/feedback/NotifyHost.native.js.map +1 -1
  436. package/dist/esm/feedback/copy.native.js.map +1 -1
  437. package/dist/esm/feedback/index.native.js.map +1 -1
  438. package/dist/esm/feedback/notify.native.js.map +1 -1
  439. package/dist/esm/feedback/route.native.js.map +1 -1
  440. package/dist/esm/feedback/store.native.js.map +1 -1
  441. package/dist/esm/formLayouts/FormLayouts.native.js.map +1 -1
  442. package/dist/esm/formLayouts/PreferencePanel.native.js.map +1 -1
  443. package/dist/esm/formLayouts/index.native.js.map +1 -1
  444. package/dist/esm/hooks/index.native.js.map +1 -1
  445. package/dist/esm/hooks/useClipboard.native.js.map +1 -1
  446. package/dist/esm/hooks/useDocumentTitle.native.js.map +1 -1
  447. package/dist/esm/hooks/useHoldCue.native.js.map +1 -1
  448. package/dist/esm/icons/CheckRegular.native.js.map +1 -1
  449. package/dist/esm/icons/MinusRegular.native.js.map +1 -1
  450. package/dist/esm/icons/index.native.js.map +1 -1
  451. package/dist/esm/icons/lucide.native.js.map +1 -1
  452. package/dist/esm/icons/themed.native.js.map +1 -1
  453. package/dist/esm/images/Image/ImageFrame.native.js.map +1 -1
  454. package/dist/esm/images/Image/framing.native.js.map +1 -1
  455. package/dist/esm/images/Image/mediaRadius.native.js.map +1 -1
  456. package/dist/esm/images/Image/shared.native.js.map +1 -1
  457. package/dist/esm/images/Image/types.native.js.map +1 -1
  458. package/dist/esm/images/index.native.js.map +1 -1
  459. package/dist/esm/index.mjs +5 -2
  460. package/dist/esm/index.mjs.map +1 -1
  461. package/dist/esm/index.native.js +5 -2
  462. package/dist/esm/index.native.js.map +1 -1
  463. package/dist/esm/knobImmuneExports.native.js.map +1 -1
  464. package/dist/esm/layouts/AsyncBoundary.native.js.map +1 -1
  465. package/dist/esm/layouts/Debug/index.native.js.map +1 -1
  466. package/dist/esm/layouts/EmptyState.native.js.map +1 -1
  467. package/dist/esm/layouts/IdentityPlate.native.js.map +1 -1
  468. package/dist/esm/layouts/KeyboardAvoidingWrapper/behavior.native.js.map +1 -1
  469. package/dist/esm/layouts/PageTemplates.native.js.map +1 -1
  470. package/dist/esm/layouts/PaneScaffold.native.js.map +1 -1
  471. package/dist/esm/layouts/SafeAreaWrapper/insets.native.js.map +1 -1
  472. package/dist/esm/layouts/StatusDot.native.js.map +1 -1
  473. package/dist/esm/layouts/StatusGlyphStrip.native.js.map +1 -1
  474. package/dist/esm/layouts/ViewSwitcher.native.js.map +1 -1
  475. package/dist/esm/layouts/attachments.native.js.map +1 -1
  476. package/dist/esm/layouts/bottomAccessory.native.js.map +1 -1
  477. package/dist/esm/layouts/breadcrumbs.native.js.map +1 -1
  478. package/dist/esm/layouts/index.native.js.map +1 -1
  479. package/dist/esm/layouts/page.mjs +4 -2
  480. package/dist/esm/layouts/page.mjs.map +1 -1
  481. package/dist/esm/layouts/page.native.js +4 -2
  482. package/dist/esm/layouts/page.native.js.map +1 -1
  483. package/dist/esm/layouts/pageHeadingScope.native.js.map +1 -1
  484. package/dist/esm/layouts/screenScroll.mjs +53 -1
  485. package/dist/esm/layouts/screenScroll.mjs.map +1 -1
  486. package/dist/esm/layouts/screenScroll.native.js +57 -1
  487. package/dist/esm/layouts/screenScroll.native.js.map +1 -1
  488. package/dist/esm/layouts/shellSidebarSlot.native.js.map +1 -1
  489. package/dist/esm/layouts/sidebar.mjs +45 -11
  490. package/dist/esm/layouts/sidebar.mjs.map +1 -1
  491. package/dist/esm/layouts/sidebar.native.js +48 -11
  492. package/dist/esm/layouts/sidebar.native.js.map +1 -1
  493. package/dist/esm/layouts/tags.native.js.map +1 -1
  494. package/dist/esm/layouts/timeline.native.js.map +1 -1
  495. package/dist/esm/layouts/toolbar.native.js.map +1 -1
  496. package/dist/esm/shared/actionScan.native.js.map +1 -1
  497. package/dist/esm/shared/i18n.native.js.map +1 -1
  498. package/dist/esm/shared/restoreRetries.native.js.map +1 -1
  499. package/dist/esm/shared/t.native.js.map +1 -1
  500. package/dist/esm/shared/textRidesText.native.js.map +1 -1
  501. package/dist/esm/shared/useReturnFocusOnClose.native.js.map +1 -1
  502. package/dist/esm/surfaces.native.js.map +1 -1
  503. package/dist/esm/tamagui.native.js.map +1 -1
  504. package/dist/esm/testSetup.native.js.map +1 -1
  505. package/dist/esm/utils/setTinted.native.js.map +1 -1
  506. package/dist/esm/utils/unwrapText.native.js.map +1 -1
  507. package/dist/esm/views/Calendar.native.js.map +1 -1
  508. package/dist/esm/views/Dashboard.native.js.map +1 -1
  509. package/dist/esm/views/Gantt.native.js.map +1 -1
  510. package/dist/esm/views/GanttDateGrip.native.js.map +1 -1
  511. package/dist/esm/views/ImageGrid.native.js.map +1 -1
  512. package/dist/esm/views/List.native.js.map +1 -1
  513. package/dist/esm/views/ListGroup.native.js.map +1 -1
  514. package/dist/esm/views/ListRow.native.js.map +1 -1
  515. package/dist/esm/views/Matrix.native.js.map +1 -1
  516. package/dist/esm/views/ReportBuilder.mjs +4 -4
  517. package/dist/esm/views/ReportBuilder.mjs.map +1 -1
  518. package/dist/esm/views/ReportBuilder.native.js +4 -4
  519. package/dist/esm/views/ReportBuilder.native.js.map +1 -1
  520. package/dist/esm/views/ShortcutCard.native.js.map +1 -1
  521. package/dist/esm/views/TreeView.native.js.map +1 -1
  522. package/dist/esm/views/calendarMath.native.js.map +1 -1
  523. package/dist/esm/views/ganttIntervals.native.js.map +1 -1
  524. package/dist/esm/views/ganttMath.native.js.map +1 -1
  525. package/dist/esm/views/index.mjs +2 -1
  526. package/dist/esm/views/index.mjs.map +1 -1
  527. package/dist/esm/views/index.native.js +2 -1
  528. package/dist/esm/views/index.native.js.map +1 -1
  529. package/dist/esm/views/kanbanDnd.native.js.map +1 -1
  530. package/dist/esm/views/matrixMath.native.js.map +1 -1
  531. package/dist/esm/views/sameNameScope.mjs +14 -0
  532. package/dist/esm/views/sameNameScope.mjs.map +1 -0
  533. package/dist/esm/views/sameNameScope.native.js +35 -0
  534. package/dist/esm/views/sameNameScope.native.js.map +1 -0
  535. package/dist/esm/views/treeViewDnd.native.js.map +1 -1
  536. package/dist/esm/views/treeViewLayout.native.js.map +1 -1
  537. package/dist/esm/views/treeViewMotion.native.js.map +1 -1
  538. package/dist/esm/views/treeViewReveal.native.js.map +1 -1
  539. package/dist/esm/views/usePageFlowLoadMore.native.js.map +1 -1
  540. package/dist/esm/views/widgetChrome.native.js.map +1 -1
  541. package/dist/jsx/Diff/diff.mjs +58 -0
  542. package/dist/jsx/Diff/diff.mjs.map +1 -0
  543. package/dist/jsx/Diff/diff.native.js +108 -0
  544. package/dist/jsx/Diff/diff.native.js.map +1 -0
  545. package/dist/jsx/Diff/index.mjs +147 -0
  546. package/dist/jsx/Diff/index.mjs.map +1 -0
  547. package/dist/jsx/Diff/index.native.js +181 -0
  548. package/dist/jsx/Diff/index.native.js.map +1 -0
  549. package/dist/jsx/ElapsedProgress/index.mjs +76 -0
  550. package/dist/jsx/ElapsedProgress/index.mjs.map +1 -0
  551. package/dist/jsx/ElapsedProgress/index.native.js +112 -0
  552. package/dist/jsx/ElapsedProgress/index.native.js.map +1 -0
  553. package/dist/jsx/MachineLiteral/index.mjs +73 -0
  554. package/dist/jsx/MachineLiteral/index.mjs.map +1 -0
  555. package/dist/jsx/MachineLiteral/index.native.js +102 -0
  556. package/dist/jsx/MachineLiteral/index.native.js.map +1 -0
  557. package/dist/jsx/Material/blur.mjs +8 -0
  558. package/dist/jsx/Material/blur.mjs.map +1 -0
  559. package/dist/jsx/Material/blur.native.js +100 -0
  560. package/dist/jsx/Material/blur.native.js.map +1 -0
  561. package/dist/jsx/Material/index.mjs +10 -4
  562. package/dist/jsx/Material/index.mjs.map +1 -1
  563. package/dist/jsx/Material/index.native.js +9 -3
  564. package/dist/jsx/Material/index.native.js.map +1 -1
  565. package/dist/jsx/Meter/index.mjs +4 -3
  566. package/dist/jsx/Meter/index.mjs.map +1 -1
  567. package/dist/jsx/Meter/index.native.js +3 -1
  568. package/dist/jsx/Meter/index.native.js.map +1 -1
  569. package/dist/jsx/SortableList/index.mjs +2 -1
  570. package/dist/jsx/SortableList/index.mjs.map +1 -1
  571. package/dist/jsx/SortableList/index.native.js +4 -1
  572. package/dist/jsx/SortableList/index.native.js.map +1 -1
  573. package/dist/jsx/SortableList/useUserOrder.mjs +58 -0
  574. package/dist/jsx/SortableList/useUserOrder.mjs.map +1 -0
  575. package/dist/jsx/SortableList/useUserOrder.native.js +107 -0
  576. package/dist/jsx/SortableList/useUserOrder.native.js.map +1 -0
  577. package/dist/jsx/TreeSelect/index.mjs +8 -2
  578. package/dist/jsx/TreeSelect/index.mjs.map +1 -1
  579. package/dist/jsx/TreeSelect/index.native.js +7 -1
  580. package/dist/jsx/TreeSelect/index.native.js.map +1 -1
  581. package/dist/jsx/appShell/AppShell.mjs +406 -0
  582. package/dist/jsx/appShell/AppShell.mjs.map +1 -0
  583. package/dist/jsx/appShell/AppShell.native.js +499 -0
  584. package/dist/jsx/appShell/AppShell.native.js.map +1 -0
  585. package/dist/jsx/appShell/TabBar.mjs +10 -5
  586. package/dist/jsx/appShell/TabBar.mjs.map +1 -1
  587. package/dist/jsx/appShell/TabBar.native.js +10 -5
  588. package/dist/jsx/appShell/TabBar.native.js.map +1 -1
  589. package/dist/jsx/appShell/index.mjs +1 -0
  590. package/dist/jsx/appShell/index.mjs.map +1 -1
  591. package/dist/jsx/appShell/index.native.js +1 -0
  592. package/dist/jsx/appShell/index.native.js.map +1 -1
  593. package/dist/jsx/charts/Sparkline.mjs +1 -1
  594. package/dist/jsx/charts/Sparkline.mjs.map +1 -1
  595. package/dist/jsx/charts/Sparkline.native.js +1 -1
  596. package/dist/jsx/charts/Sparkline.native.js.map +1 -1
  597. package/dist/jsx/index.js +5 -2
  598. package/dist/jsx/index.js.map +1 -1
  599. package/dist/jsx/index.mjs +5 -2
  600. package/dist/jsx/index.mjs.map +1 -1
  601. package/dist/jsx/index.native.js +6 -1
  602. package/dist/jsx/index.native.js.map +1 -1
  603. package/dist/jsx/layouts/page.mjs +4 -2
  604. package/dist/jsx/layouts/page.mjs.map +1 -1
  605. package/dist/jsx/layouts/page.native.js +3 -0
  606. package/dist/jsx/layouts/page.native.js.map +1 -1
  607. package/dist/jsx/layouts/screenScroll.mjs +53 -1
  608. package/dist/jsx/layouts/screenScroll.mjs.map +1 -1
  609. package/dist/jsx/layouts/screenScroll.native.js +59 -0
  610. package/dist/jsx/layouts/screenScroll.native.js.map +1 -1
  611. package/dist/jsx/layouts/sidebar.mjs +45 -11
  612. package/dist/jsx/layouts/sidebar.mjs.map +1 -1
  613. package/dist/jsx/layouts/sidebar.native.js +49 -9
  614. package/dist/jsx/layouts/sidebar.native.js.map +1 -1
  615. package/dist/jsx/views/ReportBuilder.mjs +4 -4
  616. package/dist/jsx/views/ReportBuilder.mjs.map +1 -1
  617. package/dist/jsx/views/ReportBuilder.native.js +3 -3
  618. package/dist/jsx/views/ReportBuilder.native.js.map +1 -1
  619. package/dist/jsx/views/index.mjs +2 -1
  620. package/dist/jsx/views/index.mjs.map +1 -1
  621. package/dist/jsx/views/index.native.js +2 -0
  622. package/dist/jsx/views/index.native.js.map +1 -1
  623. package/dist/jsx/views/sameNameScope.mjs +14 -0
  624. package/dist/jsx/views/sameNameScope.mjs.map +1 -0
  625. package/dist/jsx/views/sameNameScope.native.js +63 -0
  626. package/dist/jsx/views/sameNameScope.native.js.map +1 -0
  627. package/package.json +18 -9
  628. package/src/Diff/Diff.spec.tsx +105 -0
  629. package/src/Diff/Diff.stories.tsx +44 -0
  630. package/src/Diff/diff.ts +61 -0
  631. package/src/Diff/index.tsx +145 -0
  632. package/src/ElapsedProgress/ElapsedProgress.spec.tsx +66 -0
  633. package/src/ElapsedProgress/ElapsedProgress.stories.tsx +43 -0
  634. package/src/ElapsedProgress/index.tsx +89 -0
  635. package/src/MachineLiteral/MachineLiteral.spec.tsx +86 -0
  636. package/src/MachineLiteral/MachineLiteral.stories.tsx +44 -0
  637. package/src/MachineLiteral/index.tsx +75 -0
  638. package/src/Material/blur.native.spec.tsx +135 -0
  639. package/src/Material/blur.native.tsx +93 -0
  640. package/src/Material/blur.ts +11 -0
  641. package/src/Material/index.tsx +18 -6
  642. package/src/Meter/index.tsx +4 -2
  643. package/src/SortableList/index.tsx +2 -0
  644. package/src/SortableList/useUserOrder.spec.tsx +110 -0
  645. package/src/SortableList/useUserOrder.ts +96 -0
  646. package/src/TreeSelect/TreeSelect.rows.spec.tsx +44 -0
  647. package/src/TreeSelect/index.tsx +12 -1
  648. package/src/appShell/AppShell.spec.tsx +259 -0
  649. package/src/appShell/AppShell.stories.tsx +112 -0
  650. package/src/appShell/AppShell.tsx +526 -0
  651. package/src/appShell/TabBar.tsx +3 -0
  652. package/src/appShell/index.ts +1 -0
  653. package/src/charts/Sparkline.tsx +3 -3
  654. package/src/index.ts +7 -0
  655. package/src/layouts/Sidebar.spec.tsx +31 -0
  656. package/src/layouts/page.tsx +8 -0
  657. package/src/layouts/screenScroll.tsx +71 -0
  658. package/src/layouts/sidebar.tsx +83 -5
  659. package/src/presentationEmpty.spec.tsx +71 -0
  660. package/src/views/ReportBuilder.tsx +4 -3
  661. package/src/views/index.ts +1 -0
  662. package/src/views/sameNameScope.spec.tsx +55 -0
  663. package/src/views/sameNameScope.ts +22 -0
  664. package/types/Diff/diff.d.ts +17 -0
  665. package/types/Diff/diff.d.ts.map +1 -0
  666. package/types/Diff/index.d.ts +15 -0
  667. package/types/Diff/index.d.ts.map +1 -0
  668. package/types/ElapsedProgress/index.d.ts +15 -0
  669. package/types/ElapsedProgress/index.d.ts.map +1 -0
  670. package/types/MachineLiteral/index.d.ts +13 -0
  671. package/types/MachineLiteral/index.d.ts.map +1 -0
  672. package/types/Material/blur.d.ts +9 -0
  673. package/types/Material/blur.d.ts.map +1 -0
  674. package/types/Material/blur.native.d.ts +38 -0
  675. package/types/Material/blur.native.d.ts.map +1 -0
  676. package/types/Material/index.d.ts.map +1 -1
  677. package/types/Meter/index.d.ts +2 -0
  678. package/types/Meter/index.d.ts.map +1 -1
  679. package/types/SortableList/index.d.ts +2 -0
  680. package/types/SortableList/index.d.ts.map +1 -1
  681. package/types/SortableList/useUserOrder.d.ts +28 -0
  682. package/types/SortableList/useUserOrder.d.ts.map +1 -0
  683. package/types/TreeSelect/index.d.ts.map +1 -1
  684. package/types/appShell/AppShell.d.ts +47 -0
  685. package/types/appShell/AppShell.d.ts.map +1 -0
  686. package/types/appShell/TabBar.d.ts.map +1 -1
  687. package/types/appShell/index.d.ts +1 -0
  688. package/types/appShell/index.d.ts.map +1 -1
  689. package/types/charts/Sparkline.d.ts +2 -2
  690. package/types/charts/Sparkline.d.ts.map +1 -1
  691. package/types/index.d.ts +5 -2
  692. package/types/index.d.ts.map +1 -1
  693. package/types/layouts/page.d.ts +5 -0
  694. package/types/layouts/page.d.ts.map +1 -1
  695. package/types/layouts/screenScroll.d.ts +24 -0
  696. package/types/layouts/screenScroll.d.ts.map +1 -1
  697. package/types/layouts/sidebar.d.ts +31 -1
  698. package/types/layouts/sidebar.d.ts.map +1 -1
  699. package/types/views/ReportBuilder.d.ts.map +1 -1
  700. package/types/views/index.d.ts +1 -0
  701. package/types/views/index.d.ts.map +1 -1
  702. package/types/views/sameNameScope.d.ts +8 -0
  703. package/types/views/sameNameScope.d.ts.map +1 -0
@@ -308,6 +308,77 @@ export function useTopBarSlot(): TopBarSlotValue | null {
308
308
  return useContext(TopBarSlotContext);
309
309
  }
310
310
 
311
+ /**
312
+ * What the outermost Screen under an app shell tells the shell's nav bar
313
+ * (LC-157 under `AppShell`): its scroll state, and whether the page pins a
314
+ * top bar of its own, in which case that bar is the nav bar and the shell
315
+ * draws none.
316
+ */
317
+ export interface ShellScrollReport extends ScreenScrollState {
318
+ ownTopBar: boolean;
319
+ }
320
+
321
+ type ShellScrollReporter = (id: string, report: ShellScrollReport | null) => void;
322
+
323
+ const ShellScrollReportContext = createContext<ShellScrollReporter | null>(null);
324
+
325
+ /** The shell's half: the latest report, and the scope its content sits in. */
326
+ export function useShellScrollReports(): {
327
+ report: ShellScrollReport | null;
328
+ reporter: ShellScrollReporter;
329
+ } {
330
+ const [entry, setEntry] = useState<{ id: string; report: ShellScrollReport } | null>(null);
331
+ const reporter = useCallback<ShellScrollReporter>((id, report) => {
332
+ setEntry((prev) => {
333
+ if (!report) return prev?.id === id ? null : prev;
334
+ if (
335
+ prev?.id === id &&
336
+ prev.report.scrolled === report.scrolled &&
337
+ prev.report.collapsed === report.collapsed &&
338
+ prev.report.title === report.title &&
339
+ prev.report.ownTopBar === report.ownTopBar
340
+ ) {
341
+ return prev;
342
+ }
343
+ return { id, report };
344
+ });
345
+ }, []);
346
+ return { report: entry?.report ?? null, reporter };
347
+ }
348
+
349
+ export function ShellScrollReportScope({
350
+ reporter,
351
+ children,
352
+ }: {
353
+ reporter: ShellScrollReporter;
354
+ children: ReactNode;
355
+ }) {
356
+ return (
357
+ <ShellScrollReportContext.Provider value={reporter}>
358
+ {children}
359
+ </ShellScrollReportContext.Provider>
360
+ );
361
+ }
362
+
363
+ /**
364
+ * The Screen's half: the outermost Screen under a shell reports its state;
365
+ * a Screen nested in another stays quiet, so the page's own wins.
366
+ */
367
+ export function useReportScreenScroll(state: ScreenScrollState, ownTopBar: boolean) {
368
+ const reporter = useContext(ShellScrollReportContext);
369
+ const nested = useContext(ScreenScrollActionsContext) !== null;
370
+ const id = useId();
371
+ const live = reporter && !nested ? reporter : null;
372
+ const { scrolled, collapsed, title } = state;
373
+ useEffect(() => {
374
+ live?.(id, { scrolled, collapsed, title, ownTopBar });
375
+ }, [live, id, scrolled, collapsed, title, ownTopBar]);
376
+ useEffect(() => {
377
+ if (!live) return;
378
+ return () => live(id, null);
379
+ }, [live, id]);
380
+ }
381
+
311
382
  const inertTitle = () => () => undefined;
312
383
  const inertTitleBottom = () => undefined;
313
384
 
@@ -5,6 +5,7 @@ import {
5
5
  getGroupPosition,
6
6
  hairline,
7
7
  hairlineWidth,
8
+ normalizeToHex,
8
9
  stackRadiusProps,
9
10
  useResolvedKnobs,
10
11
  wasKeyboardFocus,
@@ -12,7 +13,16 @@ import {
12
13
  } from "@multiplatform.one/theme";
13
14
  import type React from "react";
14
15
  import { Fragment, useId, useState } from "react";
15
- import { Label, Separator, Text as TamaguiText, XStack, YStack, isWeb } from "tamagui";
16
+ import {
17
+ Label,
18
+ Separator,
19
+ Text as TamaguiText,
20
+ XStack,
21
+ YStack,
22
+ isWeb,
23
+ useTheme,
24
+ useThemeName,
25
+ } from "tamagui";
16
26
  import { ScrollView } from "../ScrollView";
17
27
  import { componentColors } from "../componentColors";
18
28
  import { Text } from "../Text";
@@ -76,6 +86,46 @@ export interface SidebarProps {
76
86
  */
77
87
  footer?: React.ReactNode;
78
88
  testID?: string;
89
+ /** Pinned above the rows, outside their scroll (an app's name in a shell rail). */
90
+ header?: React.ReactNode;
91
+ /** Stacked under the sections inside the same scroll (a page's panel, LC-101). */
92
+ children?: React.ReactNode;
93
+ /**
94
+ * Paint the column in the translucent sidebar material instead of the card
95
+ * surface (the HIG source list): an app shell's sidebar.
96
+ */
97
+ material?: boolean;
98
+ }
99
+
100
+ /**
101
+ * The ramp step the sidebar material paints: darker than the page in light,
102
+ * lighter in dark, as the HIG sidebar reads against its content. The dark
103
+ * ramp climbs slower at its low end, so it takes one step more.
104
+ */
105
+ export const sidebarMaterial = { light: "$color3", dark: "$color4" } as const;
106
+ /**
107
+ * How much of the page shows through the material. The shell's column sits
108
+ * beside its content, never over it, so the page ground is all that is
109
+ * behind it and a blur would paint nothing (LC-206).
110
+ */
111
+ export const sidebarMaterialOpacity = 0.72;
112
+ /**
113
+ * A material rail's inset from its edges. Its rows are inset pills with no
114
+ * rule between them (the HIG source list); a header or footer lines up with
115
+ * the rows by it.
116
+ */
117
+ export const sidebarRailInset = "$2";
118
+
119
+ function useSidebarMaterial(enabled: boolean) {
120
+ const theme = useTheme() as unknown as Record<string, { val?: unknown } | undefined>;
121
+ const step = useThemeName().startsWith("dark") ? sidebarMaterial.dark : sidebarMaterial.light;
122
+ if (!enabled) return null;
123
+ const base = theme[step.slice(1)]?.val;
124
+ const hex = typeof base === "string" ? normalizeToHex(base) : null;
125
+ const backgroundColor = hex
126
+ ? `rgba(${[1, 3, 5].map((i) => parseInt(hex.slice(i, i + 2), 16)).join(", ")}, ${sidebarMaterialOpacity})`
127
+ : step;
128
+ return { backgroundColor };
79
129
  }
80
130
 
81
131
  export function Sidebar({
@@ -86,8 +136,12 @@ export function Sidebar({
86
136
  divider = true,
87
137
  footer,
88
138
  testID,
139
+ header,
140
+ children,
141
+ material = false,
89
142
  }: SidebarProps) {
90
143
  const { knobProps } = useResolvedKnobs();
144
+ const materialProps = useSidebarMaterial(material);
91
145
  const headingId = useId();
92
146
  // LC-05: active row labels and metadata share the selection ink.
93
147
  // SP-EDGE: rows own the horizontal inset (the panelPadding role via the
@@ -112,6 +166,7 @@ export function Sidebar({
112
166
  // SF-CARD fill without a four-side control border (R-NONE). The end
113
167
  // hairline is the panel divider (Axiom 15), stretched to the rail height.
114
168
  {...knobProps.surface}
169
+ {...(materialProps as object)}
115
170
  borderWidth={0}
116
171
  borderColor="$borderColor"
117
172
  {...(!divider
@@ -125,8 +180,21 @@ export function Sidebar({
125
180
  : { borderEndWidth: hairlineWidth })}
126
181
  testID={testID}
127
182
  >
183
+ {header ? (
184
+ <YStack
185
+ flexShrink={0}
186
+ {...(material ? { paddingHorizontal: sidebarRailInset } : null)}
187
+ data-sidebar-header=""
188
+ >
189
+ {header}
190
+ </YStack>
191
+ ) : null}
128
192
  <ScrollView flex={1}>
129
- <YStack {...knobProps.panelPadding} paddingHorizontal={0} {...knobProps.gapLg}>
193
+ <YStack
194
+ {...knobProps.panelPadding}
195
+ paddingHorizontal={material ? sidebarRailInset : 0}
196
+ {...knobProps.gapLg}
197
+ >
130
198
  {sections.map((section, sectionIdx) => {
131
199
  const titleId = section.title ? `${headingId}-${sectionIdx}` : undefined;
132
200
  return (
@@ -183,7 +251,9 @@ export function Sidebar({
183
251
  <YStack width="100%" data-sidebar-group="">
184
252
  {section.items.map((item, itemIdx, items) => {
185
253
  const position = getGroupPosition(itemIdx, items.length);
186
- const corners = stackRadiusProps(position, knobProps.borderRadius.borderRadius);
254
+ const corners = material
255
+ ? { borderRadius: knobProps.borderRadius.borderRadius }
256
+ : stackRadiusProps(position, knobProps.borderRadius.borderRadius);
187
257
  const itemKey = `${sectionIdx}:${String(item.value ?? item.label)}`;
188
258
  const ink = item.active
189
259
  ? componentColors.selection.ink
@@ -202,7 +272,7 @@ export function Sidebar({
202
272
  : null;
203
273
  return (
204
274
  <Fragment key={itemKey}>
205
- {itemIdx > 0 ? (
275
+ {itemIdx > 0 && !material ? (
206
276
  <YStack alignSelf="stretch" paddingStart={rowPad}>
207
277
  <Separator alignSelf="stretch" {...hairline.line} />
208
278
  </YStack>
@@ -325,10 +395,18 @@ export function Sidebar({
325
395
  </YStack>
326
396
  );
327
397
  })}
398
+ {children}
328
399
  </YStack>
329
400
  </ScrollView>
330
401
  {footer != null && footer !== false ? (
331
- <YStack flexShrink={1} minHeight={0} maxHeight="50%" width="100%" data-sidebar-footer="">
402
+ <YStack
403
+ flexShrink={1}
404
+ minHeight={0}
405
+ maxHeight="50%"
406
+ width="100%"
407
+ {...(material ? { paddingHorizontal: sidebarRailInset } : null)}
408
+ data-sidebar-footer=""
409
+ >
332
410
  <Separator width="100%" alignSelf="stretch" {...hairline.line} />
333
411
  {footer}
334
412
  </YStack>
@@ -0,0 +1,71 @@
1
+ /**
2
+ * LC-220 EMPTY-IS-DRAWN: a presentation component given no reading draws its
3
+ * own empty form at the populated box (the bare track, the em dash, the empty
4
+ * surface), shows no "0", and its accessible name says there is no reading.
5
+ */
6
+ import { renderWithProviders } from "@multiplatform.one/test-utils";
7
+ import { cleanup, screen } from "@testing-library/react";
8
+ import { afterEach, describe, expect, it } from "vitest";
9
+ import { Sparkline } from "./charts/Sparkline";
10
+ import { Default as DiffMain, NoReading } from "./Diff/Diff.stories";
11
+ import { Diff, type DiffProps } from "./Diff";
12
+ import { Meter, type MeterProps } from "./Meter";
13
+ import { Default as MeterMain, Unknown } from "./Meter/Meter.stories";
14
+
15
+ afterEach(cleanup);
16
+
17
+ const noZero = /(^|[^\d.])0([^\d.]|$)/;
18
+
19
+ describe("presentation components draw their empty form (LC-220)", () => {
20
+ it("Meter: the bare track at the populated height, an em dash, no fill, no reading spoken", () => {
21
+ const full = renderWithProviders(<Meter {...(MeterMain.args as MeterProps)} />);
22
+ const fullRail = full.container.querySelector("[role='meter']") as HTMLElement;
23
+ const height = fullRail.getAttribute("data-meter-track-height");
24
+ full.unmount();
25
+
26
+ const { container } = renderWithProviders(
27
+ <Meter {...(Unknown.args as MeterProps)} value={null} />,
28
+ );
29
+ const rail = container.querySelector("[role='meter']") as HTMLElement;
30
+ expect(rail).toBeTruthy();
31
+ expect(rail.getAttribute("data-meter-track-height")).toBe(height);
32
+ expect(rail.getAttribute("data-meter-fill")).toBeNull();
33
+ expect(rail.getAttribute("aria-valuenow")).toBeNull();
34
+ expect(rail.getAttribute("aria-valuetext")).toBe("No reading");
35
+ expect(container.textContent).toContain("—");
36
+ expect(container.textContent).not.toMatch(noZero);
37
+ });
38
+
39
+ it("Diff: the same frame with an em dash and a no-reading name, never 0 added", () => {
40
+ const full = renderWithProviders(<Diff {...(DiffMain.args as DiffProps)} />);
41
+ const fullFrame = full.container.querySelector("[role='region']") as HTMLElement;
42
+ const fullClass = fullFrame.className;
43
+ full.unmount();
44
+
45
+ const { container } = renderWithProviders(<Diff {...(NoReading.args as DiffProps)} />);
46
+ const frame = container.querySelector("[role='region']") as HTMLElement;
47
+ expect(frame.className).toBe(fullClass);
48
+ expect(frame.getAttribute("aria-label")).toMatch(/no reading$/);
49
+ expect(container.textContent).toBe("—");
50
+ expect(container.textContent).not.toMatch(noZero);
51
+ });
52
+
53
+ it("Sparkline: the surface keeps its box and says no data, with no point drawn", () => {
54
+ const full = renderWithProviders(
55
+ <Sparkline width={160} data={[3, 5, 4, 8]} title="Sessions" />,
56
+ );
57
+ const fullSvg = full.container.querySelector("svg") as SVGElement;
58
+ const height = fullSvg.getAttribute("height");
59
+ full.unmount();
60
+
61
+ const { container } = renderWithProviders(
62
+ <Sparkline width={160} data={null} title="Sessions" />,
63
+ );
64
+ const svg = container.querySelector("svg") as SVGElement;
65
+ expect(svg.getAttribute("height")).toBe(height);
66
+ expect(svg.getAttribute("width")).toBe("160");
67
+ expect(screen.getByRole("img").getAttribute("aria-label")).toMatch(/no data$/);
68
+ expect(container.querySelectorAll("path")).toHaveLength(0);
69
+ expect(container.textContent).not.toMatch(noZero);
70
+ });
71
+ });
@@ -13,6 +13,7 @@ import {
13
13
  formatTimeOfDay,
14
14
  hairline,
15
15
  keyboardFocusRingProps,
16
+ listHeightForRows,
16
17
  pressTargetStyle,
17
18
  useResolvedKnobs,
18
19
  ensureKeyboardModalityTracking,
@@ -733,7 +734,7 @@ export function ReportBuilder({
733
734
  })}
734
735
  </Button>
735
736
  </DropdownMenu.Trigger>
736
- <DropdownMenu.Content maxHeight={360}>
737
+ <DropdownMenu.Content maxHeight={listHeightForRows(10, knobProps.menuRow.minHeight)}>
737
738
  <DropdownMenu.Label>{t("Report columns")}</DropdownMenu.Label>
738
739
  {columns.map((column) => {
739
740
  const checked = enabledColumnSet.has(column.fieldname);
@@ -759,7 +760,7 @@ export function ReportBuilder({
759
760
  {groupByCol ? t("Group by: {{field}}", { field: groupByCol.label }) : t("Group by")}
760
761
  </Button>
761
762
  </DropdownMenu.Trigger>
762
- <DropdownMenu.Content maxHeight={360}>
763
+ <DropdownMenu.Content maxHeight={listHeightForRows(10, knobProps.menuRow.minHeight)}>
763
764
  <DropdownMenu.CheckboxItem
764
765
  checked={!groupBy}
765
766
  closeOnSelect
@@ -817,7 +818,7 @@ export function ReportBuilder({
817
818
  })}
818
819
  </Button>
819
820
  </DropdownMenu.Trigger>
820
- <DropdownMenu.Content maxHeight={360}>
821
+ <DropdownMenu.Content maxHeight={listHeightForRows(10, knobProps.menuRow.minHeight)}>
821
822
  {numericColumns.map((column) => (
822
823
  <DropdownMenu.CheckboxItem
823
824
  key={column.fieldname}
@@ -219,3 +219,4 @@ export {
219
219
  export * from "../charts";
220
220
 
221
221
  export type { GanttSnapUnit } from "./ganttIntervals";
222
+ export { scopedNames } from "./sameNameScope";
@@ -0,0 +1,55 @@
1
+ /**
2
+ * LC-213 SAME-NAME-SCOPE: two items with one name show the scope that tells
3
+ * them apart, in the visible title and so in the row's accessible name; items
4
+ * without a collision carry no suffix.
5
+ */
6
+ import { renderWithProviders } from "@multiplatform.one/test-utils";
7
+ import { cleanup, screen } from "@testing-library/react";
8
+ import { afterEach, describe, expect, it } from "vitest";
9
+ import { List, ListRow } from "./List";
10
+ import { scopedNames } from "./sameNameScope";
11
+
12
+ afterEach(cleanup);
13
+
14
+ const apps = [
15
+ { id: "a", name: "postgres", tenant: "corp" },
16
+ { id: "b", name: "redis", tenant: "corp" },
17
+ { id: "c", name: "postgres", tenant: "master" },
18
+ { id: "d", name: "nginx", tenant: "master" },
19
+ ];
20
+
21
+ describe("scopedNames (LC-213)", () => {
22
+ it("suffixes exactly the colliding items with their scope", () => {
23
+ expect(
24
+ scopedNames(
25
+ apps,
26
+ (app) => app.name,
27
+ (app) => app.tenant,
28
+ ),
29
+ ).toEqual(["postgres (corp)", "redis", "postgres (master)", "nginx"]);
30
+ });
31
+
32
+ it("a list of the fixture gives every row a unique accessible name", () => {
33
+ const labels = scopedNames(
34
+ apps,
35
+ (app) => app.name,
36
+ (app) => app.tenant,
37
+ );
38
+ renderWithProviders(
39
+ <List
40
+ items={apps}
41
+ aria-label="Apps"
42
+ height={300}
43
+ estimateSize={50}
44
+ renderItem={(_app, index) => <ListRow title={labels[index]} />}
45
+ />,
46
+ );
47
+ const names = screen.getAllByRole("listitem").map((row) => row.textContent);
48
+ expect(names).toHaveLength(4);
49
+ expect(new Set(names).size).toBe(4);
50
+ expect(names.filter((name) => /\(.+\)$/.test(name ?? ""))).toEqual([
51
+ "postgres (corp)",
52
+ "postgres (master)",
53
+ ]);
54
+ });
55
+ });
@@ -0,0 +1,22 @@
1
+ /**
2
+ * LC-213 SAME-NAME-SCOPE: when two items in one collection share a display
3
+ * name, each colliding item's label carries the scope that tells them apart
4
+ * ("postgres (corp)", "postgres (master)"). Items without a collision keep
5
+ * their bare name. The label is the visible title and the accessible name.
6
+ */
7
+ export function scopedNames<T>(
8
+ items: readonly T[],
9
+ nameOf: (item: T) => string,
10
+ scopeOf: (item: T) => string | null | undefined,
11
+ ): string[] {
12
+ const counts = new Map<string, number>();
13
+ for (const item of items) {
14
+ const name = nameOf(item);
15
+ counts.set(name, (counts.get(name) ?? 0) + 1);
16
+ }
17
+ return items.map((item) => {
18
+ const name = nameOf(item);
19
+ const scope = scopeOf(item);
20
+ return (counts.get(name) ?? 0) > 1 && scope ? `${name} (${scope})` : name;
21
+ });
22
+ }
@@ -0,0 +1,17 @@
1
+ export type DiffLineKind = "added" | "removed" | "same";
2
+ export interface DiffLine {
3
+ kind: DiffLineKind;
4
+ text: string;
5
+ /** 1-based line in the before text; absent on an added line. */
6
+ before?: number;
7
+ /** 1-based line in the after text; absent on a removed line. */
8
+ after?: number;
9
+ }
10
+ export interface DiffCounts {
11
+ added: number;
12
+ removed: number;
13
+ }
14
+ /** Line diff by longest common subsequence, removals before additions in a hunk. */
15
+ export declare function diffLines(before: string, after: string): DiffLine[];
16
+ export declare function countDiff(lines: readonly DiffLine[]): DiffCounts;
17
+ //# sourceMappingURL=diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/Diff/diff.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAExD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD,oFAAoF;AACpF,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,EAAE,CA6BnE;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,GAAG,UAAU,CAQhE"}
@@ -0,0 +1,15 @@
1
+ import { type YStackProps } from "tamagui";
2
+ export { countDiff, diffLines } from "./diff";
3
+ export type { DiffCounts, DiffLine, DiffLineKind } from "./diff";
4
+ export interface DiffProps extends Omit<YStackProps, "children"> {
5
+ /** The text before the change; null or undefined is no reading. */
6
+ before?: string | null;
7
+ /** The text after the change; null or undefined is no reading. */
8
+ after?: string | null;
9
+ /** What changed, the head of the region's accessible name ("nginx.conf"). */
10
+ label: string;
11
+ /** Show before/after line numbers in the gutter (default true). */
12
+ lineNumbers?: boolean;
13
+ }
14
+ export declare function Diff({ before, after, label, lineNumbers, ...frameProps }: DiffProps): import("react/jsx-runtime").JSX.Element;
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Diff/index.tsx"],"names":[],"mappings":"AAcA,OAAO,EAA+B,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAKxE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAC9C,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEjE,MAAM,WAAW,SAAU,SAAQ,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC;IAC9D,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,6EAA6E;IAC7E,KAAK,EAAE,MAAM,CAAC;IACd,mEAAmE;IACnE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAkBD,wBAAgB,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,WAAkB,EAAE,GAAG,UAAU,EAAE,EAAE,SAAS,2CA+F1F"}
@@ -0,0 +1,15 @@
1
+ import { type XStackProps } from "tamagui";
2
+ export interface ElapsedProgressProps extends Omit<XStackProps, "children"> {
3
+ /** When the work started (epoch ms or a Date). */
4
+ startedAt: number | Date;
5
+ /** Determinate share done, 0 to 1; omit when the work can't say. */
6
+ progress?: number | null;
7
+ /** How long the spinner stays bare before the elapsed time joins it (ms, default 3000). */
8
+ threshold?: number;
9
+ /** What is running, for the accessible name ("Build"). */
10
+ label?: string;
11
+ }
12
+ /** m:ss under an hour, h:mm:ss past it. */
13
+ export declare function formatElapsed(ms: number): string;
14
+ export declare function ElapsedProgress({ startedAt, progress, threshold, label, ...rowProps }: ElapsedProgressProps): import("react/jsx-runtime").JSX.Element;
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ElapsedProgress/index.tsx"],"names":[],"mappings":"AASA,OAAO,EAAwB,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAIjE,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC;IACzE,kDAAkD;IAClD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,2FAA2F;IAC3F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0DAA0D;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,2CAA2C;AAC3C,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAQhD;AAED,wBAAgB,eAAe,CAAC,EAC9B,SAAS,EACT,QAAQ,EACR,SAAgB,EAChB,KAAK,EACL,GAAG,QAAQ,EACZ,EAAE,oBAAoB,2CA+CtB"}
@@ -0,0 +1,13 @@
1
+ import { type XStackProps } from "tamagui";
2
+ export interface MachineLiteralProps extends Omit<XStackProps, "children"> {
3
+ /** The literal, shown and copied exactly as given. */
4
+ value: string;
5
+ /** Its human reading, or a formatter that derives one ("daily at 02:00"). */
6
+ reading?: string | ((value: string) => string | null | undefined);
7
+ /** What the literal is, for the copy action's name ("cron expression"). */
8
+ label?: string;
9
+ /** False drops the copy action (default true). */
10
+ copyable?: boolean;
11
+ }
12
+ export declare function MachineLiteral({ value, reading, label, copyable, ...rowProps }: MachineLiteralProps): import("react/jsx-runtime").JSX.Element;
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/MachineLiteral/index.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAwB,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAMjE,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC;IACxE,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IAClE,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,OAAO,EACP,KAAK,EACL,QAAe,EACf,GAAG,QAAQ,EACZ,EAAE,mBAAmB,2CAyCrB"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * The material's native blur, web arm: the browser blurs through
3
+ * `backdropFilter`, so there is no blur view to draw.
4
+ */
5
+ export declare function useMaterialBlur(): null;
6
+ export declare function MaterialBlurFill(_props: {
7
+ radius?: number;
8
+ }): null;
9
+ //# sourceMappingURL=blur.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blur.d.ts","sourceRoot":"","sources":["../../src/Material/blur.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAEtC;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAElE"}
@@ -0,0 +1,38 @@
1
+ import type { ComponentType } from "react";
2
+ import { type ViewStyle } from "react-native";
3
+ /** The name expo-blur registers its native module and view under. */
4
+ export declare const blurNativeModule = "ExpoBlur";
5
+ /** The HIG material a tab bar or toolbar uses, per colour scheme. */
6
+ export declare const materialBlurTint: {
7
+ readonly light: "systemChromeMaterialLight";
8
+ readonly dark: "systemChromeMaterialDark";
9
+ };
10
+ export declare function blurTintFor(themeName: string | undefined): string;
11
+ export type MaterialBlurView = ComponentType<{
12
+ tint?: string;
13
+ intensity?: number;
14
+ pointerEvents?: "none";
15
+ style?: ViewStyle | ViewStyle[];
16
+ }>;
17
+ export interface BlurSources {
18
+ core: () => {
19
+ requireOptionalNativeModule?: (name: string) => unknown;
20
+ };
21
+ blur: () => {
22
+ BlurView?: MaterialBlurView;
23
+ };
24
+ }
25
+ /** The BlurView, or null when this platform or binary cannot draw it. */
26
+ export declare function resolveBlurView(sources: BlurSources, os: string): MaterialBlurView | null;
27
+ export declare function useMaterialBlur(): {
28
+ BlurView: MaterialBlurView;
29
+ tint: string;
30
+ } | null;
31
+ /**
32
+ * The blur behind a material's content: fills its parent inside the hairline
33
+ * and clips to the parent's corner radius, so the parent keeps its shadow.
34
+ */
35
+ export declare function MaterialBlurFill({ radius }: {
36
+ radius?: number;
37
+ }): import("react/jsx-runtime").JSX.Element | null;
38
+ //# sourceMappingURL=blur.native.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blur.native.d.ts","sourceRoot":"","sources":["../../src/Material/blur.native.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAwB,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAGpE,qEAAqE;AACrE,eAAO,MAAM,gBAAgB,aAAa,CAAC;AAE3C,qEAAqE;AACrE,eAAO,MAAM,gBAAgB;;;CAGnB,CAAC;AAEX,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAEjE;AAED,MAAM,MAAM,gBAAgB,GAAG,aAAa,CAAC;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,SAAS,GAAG,SAAS,EAAE,CAAC;CACjC,CAAC,CAAC;AAEH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM;QAAE,2BAA2B,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;KAAE,CAAC;IACxE,IAAI,EAAE,MAAM;QAAE,QAAQ,CAAC,EAAE,gBAAgB,CAAA;KAAE,CAAC;CAC7C;AAOD,yEAAyE;AACzE,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAQzF;AASD,wBAAgB,eAAe,IAAI;IAAE,QAAQ,EAAE,gBAAgB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAKrF;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,MAAU,EAAE,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,kDAYnE"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Material/index.tsx"],"names":[],"mappings":"AAiBA,OAAO,EAAE,KAAK,cAAc,EAAU,KAAK,WAAW,EAAY,MAAM,SAAS,CAAC;AAElF,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AAEzC,eAAO,MAAM,SAAS;;;;;;;;;CASrB,CAAC;AAEF,wBAAgB,eAAe,CAAC,SAAS,GAAE,iBAA4B,GAAG,MAAM,CAG/E;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAK1F;AAED,wBAAgB,WAAW,CAAC,SAAS,GAAE,iBAA4B;;;;;;;;;;;;;EAelE;AAED,MAAM,WAAW,aAAc,SAAQ,WAAW;IAChD,SAAS,CAAC,EAAE,iBAAiB,CAAC;CAC/B;AAED,eAAO,MAAM,QAAQ,0GAMnB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Material/index.tsx"],"names":[],"mappings":"AAmBA,OAAO,EAAE,KAAK,cAAc,EAAU,KAAK,WAAW,EAAY,MAAM,SAAS,CAAC;AAElF,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AAEzC,eAAO,MAAM,SAAS;;;;;;;;;CASrB,CAAC;AAEF,wBAAgB,eAAe,CAAC,SAAS,GAAE,iBAA4B,GAAG,MAAM,CAG/E;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAK1F;AAED,wBAAgB,WAAW,CAAC,SAAS,GAAE,iBAA4B;;;;;;;;;;;;;EAkBlE;AAED,MAAM,WAAW,aAAc,SAAQ,WAAW;IAChD,SAAS,CAAC,EAAE,iBAAiB,CAAC;CAC/B;AAED,eAAO,MAAM,QAAQ,0GAanB,CAAC"}
@@ -47,6 +47,8 @@ export interface MeterProps extends Omit<GetProps<typeof MeterRoot>, "children">
47
47
  loading?: boolean;
48
48
  disabled?: boolean;
49
49
  }
50
+ /** LC-220: an unknown level is spoken as no reading, never as a zero or a bare dash. */
51
+ export declare const NO_READING = "No reading";
50
52
  /**
51
53
  * Bounded-quantity display. Inert — no tab stop, no focus ring. The input
52
54
  * twin is Slider.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Meter/index.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGxC,OAAO,EAWL,KAAK,WAAW,EAChB,KAAK,WAAW,EACjB,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEnE,QAAA,MAAM,SAAS;;;6CAEb,CAAC;AA+BH,MAAM,WAAW,UAAW,SAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,SAAS,CAAC,EAAE,UAAU,CAAC;IAC9E,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,4DAA4D;IAC5D,GAAG,EAAE,MAAM,CAAC;IACZ,4DAA4D;IAC5D,GAAG,EAAE,MAAM,CAAC;IACZ,0EAA0E;IAC1E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAoBD;;;GAGG;AACH,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,GAAG,EACH,GAAG,EACH,GAAG,EACH,IAAI,EACJ,OAAO,EACP,KAAK,EACL,IAAI,EACJ,MAAiB,EACjB,UAAU,EACV,SAAS,EACT,MAAmB,EACnB,QAAQ,EACR,OAAe,EACf,QAAgB,EAChB,GAAG,KAAK,EACT,EAAE,UAAU,2CA2KZ"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Meter/index.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGxC,OAAO,EAUL,KAAK,WAAW,EAChB,KAAK,WAAW,EACjB,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEnE,QAAA,MAAM,SAAS;;;6CAEb,CAAC;AA+BH,MAAM,WAAW,UAAW,SAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,SAAS,CAAC,EAAE,UAAU,CAAC;IAC9E,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,4DAA4D;IAC5D,GAAG,EAAE,MAAM,CAAC;IACZ,4DAA4D;IAC5D,GAAG,EAAE,MAAM,CAAC;IACZ,0EAA0E;IAC1E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAQD,wFAAwF;AACxF,eAAO,MAAM,UAAU,eAAe,CAAC;AAcvC;;;GAGG;AACH,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,GAAG,EACH,GAAG,EACH,GAAG,EACH,IAAI,EACJ,OAAO,EACP,KAAK,EACL,IAAI,EACJ,MAAiB,EACjB,UAAU,EACV,SAAS,EACT,MAAmB,EACnB,QAAQ,EACR,OAAe,EACf,QAAgB,EAChB,GAAG,KAAK,EACT,EAAE,UAAU,2CA2KZ"}
@@ -3,6 +3,8 @@ import { type SizeTokens, type YStackProps } from "tamagui";
3
3
  export { SortableHandle, SortableHandleWell } from "./SortableHandle";
4
4
  export { SortableSessionProvider, useSortableRows } from "./useSortableRows";
5
5
  export type { SortableSession, UseSortableRowsOptions } from "./useSortableRows";
6
+ export { applyUserOrder, useUserOrder } from "./useUserOrder";
7
+ export type { UseUserOrderOptions, UserOrderStorage } from "./useUserOrder";
6
8
  export type SortableDisabledStyle = "keepLabel" | "dimWhole";
7
9
  export type SortableListProps<T> = Omit<YStackProps, "children" | "onChange" | "disabled" | "aria-label"> & {
8
10
  items: T[];
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/SortableList/index.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAwC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAC7E,OAAO,EACL,KAAK,UAAU,EAKf,KAAK,WAAW,EACjB,MAAM,SAAS,CAAC;AAOjB,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC7E,YAAY,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEjF,MAAM,MAAM,qBAAqB,GAAG,WAAW,GAAG,UAAU,CAAC;AAE7D,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,IAAI,CACrC,WAAW,EACX,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,YAAY,CACpD,GAAG;IACF,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1C,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC7C,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;IACnD,qDAAqD;IACrD,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;IAC/B,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IACjD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,qBAAqB,CAAC;IACtC,qEAAqE;IACrE,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AASF,wBAAgB,YAAY,CAAC,CAAC,EAAE,EAC9B,KAAK,EACL,KAAK,EACL,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,aAA2B,EAC3B,IAAI,EACJ,YAAY,EAAE,gBAAgB,EAC9B,YAAY,EAAE,SAAS,EACvB,GAAG,UAAU,EACd,EAAE,iBAAiB,CAAC,CAAC,CAAC,2CAuJtB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/SortableList/index.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAwC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAC7E,OAAO,EACL,KAAK,UAAU,EAKf,KAAK,WAAW,EACjB,MAAM,SAAS,CAAC;AAOjB,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC7E,YAAY,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9D,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAE5E,MAAM,MAAM,qBAAqB,GAAG,WAAW,GAAG,UAAU,CAAC;AAE7D,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,IAAI,CACrC,WAAW,EACX,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,YAAY,CACpD,GAAG;IACF,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1C,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC7C,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;IACnD,qDAAqD;IACrD,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;IAC/B,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IACjD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,qBAAqB,CAAC;IACtC,qEAAqE;IACrE,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AASF,wBAAgB,YAAY,CAAC,CAAC,EAAE,EAC9B,KAAK,EACL,KAAK,EACL,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,aAA2B,EAC3B,IAAI,EACJ,YAAY,EAAE,gBAAgB,EAC9B,YAAY,EAAE,SAAS,EACvB,GAAG,UAAU,EACd,EAAE,iBAAiB,CAAC,CAAC,CAAC,2CAuJtB"}
@@ -0,0 +1,28 @@
1
+ /** Where a user's arrangement lives; defaults to the browser's localStorage. */
2
+ export interface UserOrderStorage {
3
+ getItem: (key: string) => string | null;
4
+ setItem: (key: string, value: string) => void;
5
+ }
6
+ /**
7
+ * The items in the user's order (LC-209): known ids keep their saved place,
8
+ * new ids land at the end in the order the source gave them. Ids missing
9
+ * from this read keep their slot in `order`, so a partial refresh never
10
+ * reshuffles them.
11
+ */
12
+ export declare function applyUserOrder<T>(items: readonly T[], order: readonly string[], getId: (item: T) => string): {
13
+ items: T[];
14
+ order: string[];
15
+ };
16
+ export interface UseUserOrderOptions {
17
+ storage?: UserOrderStorage;
18
+ }
19
+ /**
20
+ * Keeps a hand-arranged collection in the user's order across data refreshes
21
+ * and reloads. Feed `items` from any source order; render the returned
22
+ * `items`; pass `onChange` to SortableList.
23
+ */
24
+ export declare function useUserOrder<T>(key: string, items: readonly T[], getId: (item: T) => string, options?: UseUserOrderOptions): {
25
+ items: T[];
26
+ onChange: (next: T[]) => void;
27
+ };
28
+ //# sourceMappingURL=useUserOrder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useUserOrder.d.ts","sourceRoot":"","sources":["../../src/SortableList/useUserOrder.ts"],"names":[],"mappings":"AAEA,gFAAgF;AAChF,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACxC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/C;AA6BD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAC9B,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,GACzB;IAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAYjC;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,gBAAgB,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAC5B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,EAC1B,OAAO,GAAE,mBAAwB;;qBAaxB,CAAC,EAAE;EAUb"}