@multiplatform.one/components 6.6.0 → 7.0.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 (997) hide show
  1. package/dist/cjs/Accordion/index.cjs +213 -70
  2. package/dist/cjs/Accordion/index.native.js +254 -75
  3. package/dist/cjs/Accordion/index.native.js.map +1 -1
  4. package/dist/cjs/Alert/index.cjs +204 -56
  5. package/dist/cjs/Alert/index.native.js +211 -60
  6. package/dist/cjs/Alert/index.native.js.map +1 -1
  7. package/dist/cjs/AnimateHeight/index.cjs +166 -0
  8. package/dist/cjs/AnimateHeight/index.native.js +176 -0
  9. package/dist/cjs/AnimateHeight/index.native.js.map +1 -0
  10. package/dist/cjs/Avatar/getInitials.cjs +34 -0
  11. package/dist/cjs/Avatar/getInitials.native.js +34 -0
  12. package/dist/cjs/Avatar/getInitials.native.js.map +1 -1
  13. package/dist/cjs/Avatar/index.cjs +246 -62
  14. package/dist/cjs/Avatar/index.native.js +252 -68
  15. package/dist/cjs/Avatar/index.native.js.map +1 -1
  16. package/dist/cjs/Badge/index.cjs +109 -75
  17. package/dist/cjs/Badge/index.native.js +110 -76
  18. package/dist/cjs/Badge/index.native.js.map +1 -1
  19. package/dist/cjs/Button.cjs +41 -0
  20. package/dist/cjs/Button.native.js +45 -0
  21. package/dist/cjs/Button.native.js.map +1 -0
  22. package/dist/cjs/Carousel/index.cjs +184 -105
  23. package/dist/cjs/Carousel/index.native.js +212 -107
  24. package/dist/cjs/Carousel/index.native.js.map +1 -1
  25. package/dist/cjs/Chip/index.cjs +360 -5
  26. package/dist/cjs/Chip/index.native.js +374 -5
  27. package/dist/cjs/Chip/index.native.js.map +1 -1
  28. package/dist/cjs/DotIndicator/index.cjs +129 -13
  29. package/dist/cjs/DotIndicator/index.native.js +133 -13
  30. package/dist/cjs/DotIndicator/index.native.js.map +1 -1
  31. package/dist/cjs/DropdownMenu/index.cjs +110 -44
  32. package/dist/cjs/DropdownMenu/index.native.js +113 -46
  33. package/dist/cjs/DropdownMenu/index.native.js.map +1 -1
  34. package/dist/cjs/ErrorBoundary/index.cjs +2 -2
  35. package/dist/cjs/ErrorBoundary/index.native.js +2 -2
  36. package/dist/cjs/ErrorBoundary/index.native.js.map +1 -1
  37. package/dist/cjs/Pagination.cjs +40 -11
  38. package/dist/cjs/Pagination.native.js +44 -11
  39. package/dist/cjs/Pagination.native.js.map +1 -1
  40. package/dist/cjs/ProgressSteps/index.cjs +163 -107
  41. package/dist/cjs/ProgressSteps/index.native.js +171 -115
  42. package/dist/cjs/ProgressSteps/index.native.js.map +1 -1
  43. package/dist/cjs/Quote/index.cjs +58 -39
  44. package/dist/cjs/Quote/index.native.js +69 -45
  45. package/dist/cjs/Quote/index.native.js.map +1 -1
  46. package/dist/cjs/SheetModal/index.cjs +141 -4
  47. package/dist/cjs/SheetModal/index.native.js +42 -29
  48. package/dist/cjs/SheetModal/index.native.js.map +1 -1
  49. package/dist/cjs/Skeleton/index.cjs +216 -4
  50. package/dist/cjs/Skeleton/index.native.js +223 -4
  51. package/dist/cjs/Skeleton/index.native.js.map +1 -1
  52. package/dist/cjs/SkipLink/index.cjs +91 -57
  53. package/dist/cjs/SkipLink/index.native.js +92 -66
  54. package/dist/cjs/SkipLink/index.native.js.map +1 -1
  55. package/dist/cjs/Tabs/index.cjs +136 -95
  56. package/dist/cjs/Tabs/index.native.js +161 -108
  57. package/dist/cjs/Tabs/index.native.js.map +1 -1
  58. package/dist/cjs/Toast/index.cjs +229 -67
  59. package/dist/cjs/Toast/index.native.js +232 -67
  60. package/dist/cjs/Toast/index.native.js.map +1 -1
  61. package/dist/cjs/Toast/store.cjs +83 -10
  62. package/dist/cjs/Toast/store.native.js +108 -10
  63. package/dist/cjs/Toast/store.native.js.map +1 -1
  64. package/dist/cjs/Tooltip/index.cjs +159 -42
  65. package/dist/cjs/Tooltip/index.native.js +195 -43
  66. package/dist/cjs/Tooltip/index.native.js.map +1 -1
  67. package/dist/cjs/Video/PlayerChrome.cjs +403 -0
  68. package/dist/cjs/Video/PlayerChrome.native.js +436 -0
  69. package/dist/cjs/Video/PlayerChrome.native.js.map +1 -0
  70. package/dist/cjs/Video/VideoFrame.cjs +14 -5
  71. package/dist/cjs/Video/VideoFrame.native.js +16 -5
  72. package/dist/cjs/Video/VideoFrame.native.js.map +1 -1
  73. package/dist/cjs/Video/index.cjs +227 -11
  74. package/dist/cjs/Video/index.native.js +28 -13
  75. package/dist/cjs/Video/index.native.js.map +1 -1
  76. package/dist/cjs/Wheel/index.cjs +144 -93
  77. package/dist/cjs/Wheel/index.native.js +149 -96
  78. package/dist/cjs/Wheel/index.native.js.map +1 -1
  79. package/dist/cjs/actions/DestructiveAction.cjs +2 -2
  80. package/dist/cjs/actions/DestructiveAction.native.js +2 -2
  81. package/dist/cjs/actions/DestructiveAction.native.js.map +1 -1
  82. package/dist/cjs/charts/BarChart.cjs +9 -5
  83. package/dist/cjs/charts/BarChart.native.js +9 -5
  84. package/dist/cjs/charts/BarChart.native.js.map +1 -1
  85. package/dist/cjs/charts/LineChart.cjs +2 -2
  86. package/dist/cjs/charts/LineChart.native.js +2 -2
  87. package/dist/cjs/charts/LineChart.native.js.map +1 -1
  88. package/dist/cjs/charts/PieChart.cjs +2 -2
  89. package/dist/cjs/charts/PieChart.native.js +2 -2
  90. package/dist/cjs/charts/PieChart.native.js.map +1 -1
  91. package/dist/cjs/charts/Sparkline.cjs +2 -2
  92. package/dist/cjs/charts/Sparkline.native.js +2 -2
  93. package/dist/cjs/charts/Sparkline.native.js.map +1 -1
  94. package/dist/cjs/charts/index.cjs +4 -0
  95. package/dist/cjs/charts/index.native.js +4 -0
  96. package/dist/cjs/charts/index.native.js.map +1 -1
  97. package/dist/cjs/code/CodeBlock/index.cjs +34 -7
  98. package/dist/cjs/code/CodeBlock/index.native.js +36 -9
  99. package/dist/cjs/code/CodeBlock/index.native.js.map +1 -1
  100. package/dist/cjs/feedback/ConfirmDialog.cjs +92 -5
  101. package/dist/cjs/feedback/ConfirmDialog.native.js +123 -5
  102. package/dist/cjs/feedback/ConfirmDialog.native.js.map +1 -1
  103. package/dist/cjs/feedback/NotifyHost.cjs +2 -2
  104. package/dist/cjs/feedback/NotifyHost.native.js +2 -2
  105. package/dist/cjs/feedback/NotifyHost.native.js.map +1 -1
  106. package/dist/cjs/icons/themed.cjs +4 -1
  107. package/dist/cjs/icons/themed.native.js +4 -1
  108. package/dist/cjs/icons/themed.native.js.map +1 -1
  109. package/dist/cjs/images/Image/ImageFrame.cjs +242 -0
  110. package/dist/cjs/images/Image/ImageFrame.native.js +248 -0
  111. package/dist/cjs/images/Image/ImageFrame.native.js.map +1 -0
  112. package/dist/cjs/images/Image/index.cjs +93 -40
  113. package/dist/cjs/images/Image/index.native.js +146 -108
  114. package/dist/cjs/images/Image/index.native.js.map +1 -1
  115. package/dist/cjs/images/Image/shared.cjs +106 -0
  116. package/dist/cjs/images/Image/shared.native.js +109 -0
  117. package/dist/cjs/images/Image/shared.native.js.map +1 -0
  118. package/dist/cjs/index.cjs +7 -0
  119. package/dist/cjs/index.native.js +7 -0
  120. package/dist/cjs/index.native.js.map +1 -1
  121. package/dist/cjs/knobImmuneExports.cjs +95 -0
  122. package/dist/cjs/knobImmuneExports.native.js +98 -0
  123. package/dist/cjs/knobImmuneExports.native.js.map +1 -0
  124. package/dist/cjs/layouts/AsyncBoundary.cjs +163 -36
  125. package/dist/cjs/layouts/AsyncBoundary.native.js +166 -37
  126. package/dist/cjs/layouts/AsyncBoundary.native.js.map +1 -1
  127. package/dist/cjs/layouts/EmptyState.cjs +157 -0
  128. package/dist/cjs/layouts/EmptyState.native.js +165 -0
  129. package/dist/cjs/layouts/EmptyState.native.js.map +1 -0
  130. package/dist/cjs/layouts/PageTemplates.cjs +13 -5
  131. package/dist/cjs/layouts/PageTemplates.native.js +13 -5
  132. package/dist/cjs/layouts/PageTemplates.native.js.map +1 -1
  133. package/dist/cjs/layouts/PaneScaffold.cjs +273 -13
  134. package/dist/cjs/layouts/PaneScaffold.native.js +294 -13
  135. package/dist/cjs/layouts/PaneScaffold.native.js.map +1 -1
  136. package/dist/cjs/layouts/ViewSwitcher.cjs +65 -23
  137. package/dist/cjs/layouts/ViewSwitcher.native.js +78 -30
  138. package/dist/cjs/layouts/ViewSwitcher.native.js.map +1 -1
  139. package/dist/cjs/layouts/attachments.cjs +350 -185
  140. package/dist/cjs/layouts/attachments.native.js +370 -186
  141. package/dist/cjs/layouts/attachments.native.js.map +1 -1
  142. package/dist/cjs/layouts/breadcrumbs.cjs +161 -62
  143. package/dist/cjs/layouts/breadcrumbs.native.js +184 -65
  144. package/dist/cjs/layouts/breadcrumbs.native.js.map +1 -1
  145. package/dist/cjs/layouts/page.cjs +71 -111
  146. package/dist/cjs/layouts/page.native.js +82 -130
  147. package/dist/cjs/layouts/page.native.js.map +1 -1
  148. package/dist/cjs/layouts/pageHeadingScope.cjs +8 -2
  149. package/dist/cjs/layouts/pageHeadingScope.native.js +10 -2
  150. package/dist/cjs/layouts/pageHeadingScope.native.js.map +1 -1
  151. package/dist/cjs/layouts/sidebar.cjs +150 -66
  152. package/dist/cjs/layouts/sidebar.native.js +118 -47
  153. package/dist/cjs/layouts/sidebar.native.js.map +1 -1
  154. package/dist/cjs/layouts/tags.cjs +321 -138
  155. package/dist/cjs/layouts/tags.native.js +355 -158
  156. package/dist/cjs/layouts/tags.native.js.map +1 -1
  157. package/dist/cjs/layouts/timeline.cjs +129 -56
  158. package/dist/cjs/layouts/timeline.native.js +179 -55
  159. package/dist/cjs/layouts/timeline.native.js.map +1 -1
  160. package/dist/cjs/layouts/toolbar.cjs +56 -20
  161. package/dist/cjs/layouts/toolbar.native.js +62 -25
  162. package/dist/cjs/layouts/toolbar.native.js.map +1 -1
  163. package/dist/cjs/shared/i18n.cjs +46 -0
  164. package/dist/cjs/shared/i18n.native.js +52 -0
  165. package/dist/cjs/shared/i18n.native.js.map +1 -0
  166. package/dist/cjs/shared/textRidesText.cjs +57 -0
  167. package/dist/cjs/shared/textRidesText.native.js +81 -0
  168. package/dist/cjs/shared/textRidesText.native.js.map +1 -0
  169. package/dist/cjs/shared/useReturnFocusOnClose.cjs +7 -1
  170. package/dist/cjs/shared/useReturnFocusOnClose.native.js +7 -1
  171. package/dist/cjs/shared/useReturnFocusOnClose.native.js.map +1 -1
  172. package/dist/cjs/surfaces.cjs +93 -16
  173. package/dist/cjs/surfaces.native.js +95 -16
  174. package/dist/cjs/surfaces.native.js.map +1 -1
  175. package/dist/cjs/tamagui.cjs +38 -39
  176. package/dist/cjs/tamagui.native.js +37 -38
  177. package/dist/cjs/tamagui.native.js.map +1 -1
  178. package/dist/cjs/views/Calendar.cjs +101 -64
  179. package/dist/cjs/views/Calendar.native.js +105 -70
  180. package/dist/cjs/views/Calendar.native.js.map +1 -1
  181. package/dist/cjs/views/Dashboard.cjs +399 -107
  182. package/dist/cjs/views/Dashboard.native.js +408 -110
  183. package/dist/cjs/views/Dashboard.native.js.map +1 -1
  184. package/dist/cjs/views/Gantt.cjs +256 -59
  185. package/dist/cjs/views/Gantt.native.js +264 -39
  186. package/dist/cjs/views/Gantt.native.js.map +1 -1
  187. package/dist/cjs/views/ImageGrid.cjs +138 -73
  188. package/dist/cjs/views/ImageGrid.native.js +155 -71
  189. package/dist/cjs/views/ImageGrid.native.js.map +1 -1
  190. package/dist/cjs/views/Kanban.cjs +53 -31
  191. package/dist/cjs/views/Kanban.native.js +55 -41
  192. package/dist/cjs/views/Kanban.native.js.map +1 -1
  193. package/dist/cjs/views/List.cjs +280 -93
  194. package/dist/cjs/views/List.native.js +280 -101
  195. package/dist/cjs/views/List.native.js.map +1 -1
  196. package/dist/cjs/views/ReportBuilder.cjs +539 -172
  197. package/dist/cjs/views/ReportBuilder.native.js +592 -169
  198. package/dist/cjs/views/ReportBuilder.native.js.map +1 -1
  199. package/dist/cjs/views/TreeView.cjs +142 -52
  200. package/dist/cjs/views/TreeView.native.js +170 -55
  201. package/dist/cjs/views/TreeView.native.js.map +1 -1
  202. package/dist/esm/Accordion/index.mjs +216 -73
  203. package/dist/esm/Accordion/index.mjs.map +1 -1
  204. package/dist/esm/Accordion/index.native.js +257 -78
  205. package/dist/esm/Accordion/index.native.js.map +1 -1
  206. package/dist/esm/Alert/index.mjs +206 -58
  207. package/dist/esm/Alert/index.mjs.map +1 -1
  208. package/dist/esm/Alert/index.native.js +213 -62
  209. package/dist/esm/Alert/index.native.js.map +1 -1
  210. package/dist/esm/AnimateHeight/index.mjs +140 -0
  211. package/dist/esm/AnimateHeight/index.mjs.map +1 -0
  212. package/dist/esm/AnimateHeight/index.native.js +147 -0
  213. package/dist/esm/AnimateHeight/index.native.js.map +1 -0
  214. package/dist/esm/Avatar/getInitials.mjs +32 -1
  215. package/dist/esm/Avatar/getInitials.mjs.map +1 -1
  216. package/dist/esm/Avatar/getInitials.native.js +32 -1
  217. package/dist/esm/Avatar/getInitials.native.js.map +1 -1
  218. package/dist/esm/Avatar/index.mjs +249 -68
  219. package/dist/esm/Avatar/index.mjs.map +1 -1
  220. package/dist/esm/Avatar/index.native.js +255 -74
  221. package/dist/esm/Avatar/index.native.js.map +1 -1
  222. package/dist/esm/Badge/index.mjs +110 -76
  223. package/dist/esm/Badge/index.mjs.map +1 -1
  224. package/dist/esm/Badge/index.native.js +111 -77
  225. package/dist/esm/Badge/index.native.js.map +1 -1
  226. package/dist/esm/Button.mjs +16 -0
  227. package/dist/esm/Button.mjs.map +1 -0
  228. package/dist/esm/Button.native.js +17 -0
  229. package/dist/esm/Button.native.js.map +1 -0
  230. package/dist/esm/Carousel/index.mjs +185 -106
  231. package/dist/esm/Carousel/index.mjs.map +1 -1
  232. package/dist/esm/Carousel/index.native.js +213 -108
  233. package/dist/esm/Carousel/index.native.js.map +1 -1
  234. package/dist/esm/Chip/index.mjs +356 -2
  235. package/dist/esm/Chip/index.mjs.map +1 -1
  236. package/dist/esm/Chip/index.native.js +370 -2
  237. package/dist/esm/Chip/index.native.js.map +1 -1
  238. package/dist/esm/DotIndicator/index.mjs +130 -14
  239. package/dist/esm/DotIndicator/index.mjs.map +1 -1
  240. package/dist/esm/DotIndicator/index.native.js +134 -14
  241. package/dist/esm/DotIndicator/index.native.js.map +1 -1
  242. package/dist/esm/DropdownMenu/index.mjs +112 -46
  243. package/dist/esm/DropdownMenu/index.mjs.map +1 -1
  244. package/dist/esm/DropdownMenu/index.native.js +115 -48
  245. package/dist/esm/DropdownMenu/index.native.js.map +1 -1
  246. package/dist/esm/ErrorBoundary/index.mjs +1 -1
  247. package/dist/esm/ErrorBoundary/index.native.js +1 -1
  248. package/dist/esm/Pagination.mjs +41 -12
  249. package/dist/esm/Pagination.mjs.map +1 -1
  250. package/dist/esm/Pagination.native.js +45 -12
  251. package/dist/esm/Pagination.native.js.map +1 -1
  252. package/dist/esm/ProgressSteps/index.mjs +165 -109
  253. package/dist/esm/ProgressSteps/index.mjs.map +1 -1
  254. package/dist/esm/ProgressSteps/index.native.js +173 -117
  255. package/dist/esm/ProgressSteps/index.native.js.map +1 -1
  256. package/dist/esm/Quote/index.mjs +59 -40
  257. package/dist/esm/Quote/index.mjs.map +1 -1
  258. package/dist/esm/Quote/index.native.js +70 -46
  259. package/dist/esm/Quote/index.native.js.map +1 -1
  260. package/dist/esm/SheetModal/index.mjs +144 -7
  261. package/dist/esm/SheetModal/index.mjs.map +1 -1
  262. package/dist/esm/SheetModal/index.native.js +41 -28
  263. package/dist/esm/SheetModal/index.native.js.map +1 -1
  264. package/dist/esm/Skeleton/index.mjs +213 -2
  265. package/dist/esm/Skeleton/index.mjs.map +1 -1
  266. package/dist/esm/Skeleton/index.native.js +220 -2
  267. package/dist/esm/Skeleton/index.native.js.map +1 -1
  268. package/dist/esm/SkipLink/index.mjs +93 -59
  269. package/dist/esm/SkipLink/index.mjs.map +1 -1
  270. package/dist/esm/SkipLink/index.native.js +94 -68
  271. package/dist/esm/SkipLink/index.native.js.map +1 -1
  272. package/dist/esm/Tabs/index.mjs +137 -96
  273. package/dist/esm/Tabs/index.mjs.map +1 -1
  274. package/dist/esm/Tabs/index.native.js +162 -109
  275. package/dist/esm/Tabs/index.native.js.map +1 -1
  276. package/dist/esm/Toast/index.mjs +227 -68
  277. package/dist/esm/Toast/index.mjs.map +1 -1
  278. package/dist/esm/Toast/index.native.js +230 -68
  279. package/dist/esm/Toast/index.native.js.map +1 -1
  280. package/dist/esm/Toast/store.mjs +75 -11
  281. package/dist/esm/Toast/store.mjs.map +1 -1
  282. package/dist/esm/Toast/store.native.js +100 -11
  283. package/dist/esm/Toast/store.native.js.map +1 -1
  284. package/dist/esm/Tooltip/index.mjs +147 -42
  285. package/dist/esm/Tooltip/index.mjs.map +1 -1
  286. package/dist/esm/Tooltip/index.native.js +184 -44
  287. package/dist/esm/Tooltip/index.native.js.map +1 -1
  288. package/dist/esm/Video/PlayerChrome.mjs +377 -0
  289. package/dist/esm/Video/PlayerChrome.mjs.map +1 -0
  290. package/dist/esm/Video/PlayerChrome.native.js +407 -0
  291. package/dist/esm/Video/PlayerChrome.native.js.map +1 -0
  292. package/dist/esm/Video/VideoFrame.mjs +14 -5
  293. package/dist/esm/Video/VideoFrame.mjs.map +1 -1
  294. package/dist/esm/Video/VideoFrame.native.js +16 -5
  295. package/dist/esm/Video/VideoFrame.native.js.map +1 -1
  296. package/dist/esm/Video/index.mjs +227 -11
  297. package/dist/esm/Video/index.mjs.map +1 -1
  298. package/dist/esm/Video/index.native.js +28 -13
  299. package/dist/esm/Video/index.native.js.map +1 -1
  300. package/dist/esm/Wheel/index.mjs +143 -92
  301. package/dist/esm/Wheel/index.mjs.map +1 -1
  302. package/dist/esm/Wheel/index.native.js +148 -95
  303. package/dist/esm/Wheel/index.native.js.map +1 -1
  304. package/dist/esm/actions/DestructiveAction.mjs +1 -1
  305. package/dist/esm/actions/DestructiveAction.native.js +1 -1
  306. package/dist/esm/actions/DestructiveAction.native.js.map +1 -1
  307. package/dist/esm/charts/BarChart.mjs +8 -4
  308. package/dist/esm/charts/BarChart.mjs.map +1 -1
  309. package/dist/esm/charts/BarChart.native.js +8 -4
  310. package/dist/esm/charts/BarChart.native.js.map +1 -1
  311. package/dist/esm/charts/LineChart.mjs +1 -1
  312. package/dist/esm/charts/LineChart.native.js +1 -1
  313. package/dist/esm/charts/PieChart.mjs +1 -1
  314. package/dist/esm/charts/PieChart.native.js +1 -1
  315. package/dist/esm/charts/PieChart.native.js.map +1 -1
  316. package/dist/esm/charts/Sparkline.mjs +1 -1
  317. package/dist/esm/charts/Sparkline.native.js +1 -1
  318. package/dist/esm/charts/index.mjs +2 -1
  319. package/dist/esm/charts/index.mjs.map +1 -1
  320. package/dist/esm/charts/index.native.js +2 -1
  321. package/dist/esm/charts/index.native.js.map +1 -1
  322. package/dist/esm/code/CodeBlock/index.mjs +34 -7
  323. package/dist/esm/code/CodeBlock/index.mjs.map +1 -1
  324. package/dist/esm/code/CodeBlock/index.native.js +36 -9
  325. package/dist/esm/code/CodeBlock/index.native.js.map +1 -1
  326. package/dist/esm/feedback/ConfirmDialog.mjs +93 -6
  327. package/dist/esm/feedback/ConfirmDialog.mjs.map +1 -1
  328. package/dist/esm/feedback/ConfirmDialog.native.js +124 -6
  329. package/dist/esm/feedback/ConfirmDialog.native.js.map +1 -1
  330. package/dist/esm/feedback/NotifyHost.mjs +1 -1
  331. package/dist/esm/feedback/NotifyHost.native.js +1 -1
  332. package/dist/esm/icons/themed.mjs +5 -2
  333. package/dist/esm/icons/themed.mjs.map +1 -1
  334. package/dist/esm/icons/themed.native.js +5 -2
  335. package/dist/esm/icons/themed.native.js.map +1 -1
  336. package/dist/esm/images/Image/ImageFrame.mjs +216 -0
  337. package/dist/esm/images/Image/ImageFrame.mjs.map +1 -0
  338. package/dist/esm/images/Image/ImageFrame.native.js +219 -0
  339. package/dist/esm/images/Image/ImageFrame.native.js.map +1 -0
  340. package/dist/esm/images/Image/index.mjs +94 -41
  341. package/dist/esm/images/Image/index.mjs.map +1 -1
  342. package/dist/esm/images/Image/index.native.js +148 -110
  343. package/dist/esm/images/Image/index.native.js.map +1 -1
  344. package/dist/esm/images/Image/shared.mjs +76 -0
  345. package/dist/esm/images/Image/shared.mjs.map +1 -0
  346. package/dist/esm/images/Image/shared.native.js +76 -0
  347. package/dist/esm/images/Image/shared.native.js.map +1 -0
  348. package/dist/esm/index.mjs +4 -1
  349. package/dist/esm/index.mjs.map +1 -1
  350. package/dist/esm/index.native.js +4 -1
  351. package/dist/esm/index.native.js.map +1 -1
  352. package/dist/esm/knobImmuneExports.mjs +70 -0
  353. package/dist/esm/knobImmuneExports.mjs.map +1 -0
  354. package/dist/esm/knobImmuneExports.native.js +70 -0
  355. package/dist/esm/knobImmuneExports.native.js.map +1 -0
  356. package/dist/esm/layouts/AsyncBoundary.mjs +165 -38
  357. package/dist/esm/layouts/AsyncBoundary.mjs.map +1 -1
  358. package/dist/esm/layouts/AsyncBoundary.native.js +168 -39
  359. package/dist/esm/layouts/AsyncBoundary.native.js.map +1 -1
  360. package/dist/esm/layouts/EmptyState.mjs +132 -0
  361. package/dist/esm/layouts/EmptyState.mjs.map +1 -0
  362. package/dist/esm/layouts/EmptyState.native.js +137 -0
  363. package/dist/esm/layouts/EmptyState.native.js.map +1 -0
  364. package/dist/esm/layouts/PageTemplates.mjs +13 -5
  365. package/dist/esm/layouts/PageTemplates.mjs.map +1 -1
  366. package/dist/esm/layouts/PageTemplates.native.js +13 -5
  367. package/dist/esm/layouts/PageTemplates.native.js.map +1 -1
  368. package/dist/esm/layouts/PaneScaffold.mjs +277 -17
  369. package/dist/esm/layouts/PaneScaffold.mjs.map +1 -1
  370. package/dist/esm/layouts/PaneScaffold.native.js +298 -17
  371. package/dist/esm/layouts/PaneScaffold.native.js.map +1 -1
  372. package/dist/esm/layouts/ViewSwitcher.mjs +66 -24
  373. package/dist/esm/layouts/ViewSwitcher.mjs.map +1 -1
  374. package/dist/esm/layouts/ViewSwitcher.native.js +79 -31
  375. package/dist/esm/layouts/ViewSwitcher.native.js.map +1 -1
  376. package/dist/esm/layouts/attachments.mjs +351 -175
  377. package/dist/esm/layouts/attachments.mjs.map +1 -1
  378. package/dist/esm/layouts/attachments.native.js +371 -187
  379. package/dist/esm/layouts/attachments.native.js.map +1 -1
  380. package/dist/esm/layouts/breadcrumbs.mjs +163 -53
  381. package/dist/esm/layouts/breadcrumbs.mjs.map +1 -1
  382. package/dist/esm/layouts/breadcrumbs.native.js +187 -68
  383. package/dist/esm/layouts/breadcrumbs.native.js.map +1 -1
  384. package/dist/esm/layouts/page.mjs +72 -112
  385. package/dist/esm/layouts/page.mjs.map +1 -1
  386. package/dist/esm/layouts/page.native.js +83 -131
  387. package/dist/esm/layouts/page.native.js.map +1 -1
  388. package/dist/esm/layouts/pageHeadingScope.mjs +8 -3
  389. package/dist/esm/layouts/pageHeadingScope.mjs.map +1 -1
  390. package/dist/esm/layouts/pageHeadingScope.native.js +10 -3
  391. package/dist/esm/layouts/pageHeadingScope.native.js.map +1 -1
  392. package/dist/esm/layouts/sidebar.mjs +152 -68
  393. package/dist/esm/layouts/sidebar.mjs.map +1 -1
  394. package/dist/esm/layouts/sidebar.native.js +120 -49
  395. package/dist/esm/layouts/sidebar.native.js.map +1 -1
  396. package/dist/esm/layouts/tags.mjs +323 -140
  397. package/dist/esm/layouts/tags.mjs.map +1 -1
  398. package/dist/esm/layouts/tags.native.js +357 -160
  399. package/dist/esm/layouts/tags.native.js.map +1 -1
  400. package/dist/esm/layouts/timeline.mjs +129 -45
  401. package/dist/esm/layouts/timeline.mjs.map +1 -1
  402. package/dist/esm/layouts/timeline.native.js +179 -55
  403. package/dist/esm/layouts/timeline.native.js.map +1 -1
  404. package/dist/esm/layouts/toolbar.mjs +57 -21
  405. package/dist/esm/layouts/toolbar.mjs.map +1 -1
  406. package/dist/esm/layouts/toolbar.native.js +63 -26
  407. package/dist/esm/layouts/toolbar.native.js.map +1 -1
  408. package/dist/esm/shared/i18n.mjs +10 -0
  409. package/dist/esm/shared/i18n.mjs.map +1 -0
  410. package/dist/esm/shared/i18n.native.js +13 -0
  411. package/dist/esm/shared/i18n.native.js.map +1 -0
  412. package/dist/esm/shared/textRidesText.mjs +31 -0
  413. package/dist/esm/shared/textRidesText.mjs.map +1 -0
  414. package/dist/esm/shared/textRidesText.native.js +52 -0
  415. package/dist/esm/shared/textRidesText.native.js.map +1 -0
  416. package/dist/esm/shared/useReturnFocusOnClose.mjs +7 -1
  417. package/dist/esm/shared/useReturnFocusOnClose.mjs.map +1 -1
  418. package/dist/esm/shared/useReturnFocusOnClose.native.js +7 -1
  419. package/dist/esm/shared/useReturnFocusOnClose.native.js.map +1 -1
  420. package/dist/esm/surfaces.mjs +94 -17
  421. package/dist/esm/surfaces.mjs.map +1 -1
  422. package/dist/esm/surfaces.native.js +96 -17
  423. package/dist/esm/surfaces.native.js.map +1 -1
  424. package/dist/esm/tamagui.mjs +2 -3
  425. package/dist/esm/tamagui.mjs.map +1 -1
  426. package/dist/esm/tamagui.native.js +2 -3
  427. package/dist/esm/tamagui.native.js.map +1 -1
  428. package/dist/esm/views/Calendar.mjs +101 -64
  429. package/dist/esm/views/Calendar.mjs.map +1 -1
  430. package/dist/esm/views/Calendar.native.js +105 -70
  431. package/dist/esm/views/Calendar.native.js.map +1 -1
  432. package/dist/esm/views/Dashboard.mjs +396 -107
  433. package/dist/esm/views/Dashboard.mjs.map +1 -1
  434. package/dist/esm/views/Dashboard.native.js +405 -110
  435. package/dist/esm/views/Dashboard.native.js.map +1 -1
  436. package/dist/esm/views/Gantt.mjs +256 -59
  437. package/dist/esm/views/Gantt.mjs.map +1 -1
  438. package/dist/esm/views/Gantt.native.js +264 -39
  439. package/dist/esm/views/Gantt.native.js.map +1 -1
  440. package/dist/esm/views/ImageGrid.mjs +138 -73
  441. package/dist/esm/views/ImageGrid.mjs.map +1 -1
  442. package/dist/esm/views/ImageGrid.native.js +155 -71
  443. package/dist/esm/views/ImageGrid.native.js.map +1 -1
  444. package/dist/esm/views/Kanban.mjs +52 -30
  445. package/dist/esm/views/Kanban.mjs.map +1 -1
  446. package/dist/esm/views/Kanban.native.js +54 -40
  447. package/dist/esm/views/Kanban.native.js.map +1 -1
  448. package/dist/esm/views/List.mjs +268 -95
  449. package/dist/esm/views/List.mjs.map +1 -1
  450. package/dist/esm/views/List.native.js +280 -104
  451. package/dist/esm/views/List.native.js.map +1 -1
  452. package/dist/esm/views/ReportBuilder.mjs +533 -166
  453. package/dist/esm/views/ReportBuilder.mjs.map +1 -1
  454. package/dist/esm/views/ReportBuilder.native.js +585 -162
  455. package/dist/esm/views/ReportBuilder.native.js.map +1 -1
  456. package/dist/esm/views/TreeView.mjs +142 -52
  457. package/dist/esm/views/TreeView.mjs.map +1 -1
  458. package/dist/esm/views/TreeView.native.js +170 -55
  459. package/dist/esm/views/TreeView.native.js.map +1 -1
  460. package/dist/jsx/Accordion/index.mjs +216 -73
  461. package/dist/jsx/Accordion/index.mjs.map +1 -1
  462. package/dist/jsx/Accordion/index.native.js +254 -75
  463. package/dist/jsx/Accordion/index.native.js.map +1 -1
  464. package/dist/jsx/Alert/index.mjs +206 -58
  465. package/dist/jsx/Alert/index.mjs.map +1 -1
  466. package/dist/jsx/Alert/index.native.js +211 -60
  467. package/dist/jsx/Alert/index.native.js.map +1 -1
  468. package/dist/jsx/AnimateHeight/index.mjs +140 -0
  469. package/dist/jsx/AnimateHeight/index.mjs.map +1 -0
  470. package/dist/jsx/AnimateHeight/index.native.js +176 -0
  471. package/dist/jsx/AnimateHeight/index.native.js.map +1 -0
  472. package/dist/jsx/Avatar/getInitials.mjs +32 -1
  473. package/dist/jsx/Avatar/getInitials.mjs.map +1 -1
  474. package/dist/jsx/Avatar/getInitials.native.js +34 -0
  475. package/dist/jsx/Avatar/getInitials.native.js.map +1 -1
  476. package/dist/jsx/Avatar/index.mjs +249 -68
  477. package/dist/jsx/Avatar/index.mjs.map +1 -1
  478. package/dist/jsx/Avatar/index.native.js +252 -68
  479. package/dist/jsx/Avatar/index.native.js.map +1 -1
  480. package/dist/jsx/Badge/index.mjs +110 -76
  481. package/dist/jsx/Badge/index.mjs.map +1 -1
  482. package/dist/jsx/Badge/index.native.js +110 -76
  483. package/dist/jsx/Badge/index.native.js.map +1 -1
  484. package/dist/jsx/Button.mjs +16 -0
  485. package/dist/jsx/Button.mjs.map +1 -0
  486. package/dist/jsx/Button.native.js +45 -0
  487. package/dist/jsx/Button.native.js.map +1 -0
  488. package/dist/jsx/Carousel/index.mjs +185 -106
  489. package/dist/jsx/Carousel/index.mjs.map +1 -1
  490. package/dist/jsx/Carousel/index.native.js +212 -107
  491. package/dist/jsx/Carousel/index.native.js.map +1 -1
  492. package/dist/jsx/Chip/index.mjs +356 -2
  493. package/dist/jsx/Chip/index.mjs.map +1 -1
  494. package/dist/jsx/Chip/index.native.js +374 -5
  495. package/dist/jsx/Chip/index.native.js.map +1 -1
  496. package/dist/jsx/DotIndicator/index.mjs +130 -14
  497. package/dist/jsx/DotIndicator/index.mjs.map +1 -1
  498. package/dist/jsx/DotIndicator/index.native.js +133 -13
  499. package/dist/jsx/DotIndicator/index.native.js.map +1 -1
  500. package/dist/jsx/DropdownMenu/index.mjs +112 -46
  501. package/dist/jsx/DropdownMenu/index.mjs.map +1 -1
  502. package/dist/jsx/DropdownMenu/index.native.js +113 -46
  503. package/dist/jsx/DropdownMenu/index.native.js.map +1 -1
  504. package/dist/jsx/ErrorBoundary/index.mjs +1 -1
  505. package/dist/jsx/ErrorBoundary/index.native.js +2 -2
  506. package/dist/jsx/ErrorBoundary/index.native.js.map +1 -1
  507. package/dist/jsx/Pagination.mjs +41 -12
  508. package/dist/jsx/Pagination.mjs.map +1 -1
  509. package/dist/jsx/Pagination.native.js +44 -11
  510. package/dist/jsx/Pagination.native.js.map +1 -1
  511. package/dist/jsx/ProgressSteps/index.mjs +165 -109
  512. package/dist/jsx/ProgressSteps/index.mjs.map +1 -1
  513. package/dist/jsx/ProgressSteps/index.native.js +171 -115
  514. package/dist/jsx/ProgressSteps/index.native.js.map +1 -1
  515. package/dist/jsx/Quote/index.mjs +59 -40
  516. package/dist/jsx/Quote/index.mjs.map +1 -1
  517. package/dist/jsx/Quote/index.native.js +69 -45
  518. package/dist/jsx/Quote/index.native.js.map +1 -1
  519. package/dist/jsx/SheetModal/index.mjs +144 -7
  520. package/dist/jsx/SheetModal/index.mjs.map +1 -1
  521. package/dist/jsx/SheetModal/index.native.js +42 -29
  522. package/dist/jsx/SheetModal/index.native.js.map +1 -1
  523. package/dist/jsx/Skeleton/index.mjs +213 -2
  524. package/dist/jsx/Skeleton/index.mjs.map +1 -1
  525. package/dist/jsx/Skeleton/index.native.js +223 -4
  526. package/dist/jsx/Skeleton/index.native.js.map +1 -1
  527. package/dist/jsx/SkipLink/index.mjs +93 -59
  528. package/dist/jsx/SkipLink/index.mjs.map +1 -1
  529. package/dist/jsx/SkipLink/index.native.js +92 -66
  530. package/dist/jsx/SkipLink/index.native.js.map +1 -1
  531. package/dist/jsx/Tabs/index.mjs +137 -96
  532. package/dist/jsx/Tabs/index.mjs.map +1 -1
  533. package/dist/jsx/Tabs/index.native.js +161 -108
  534. package/dist/jsx/Tabs/index.native.js.map +1 -1
  535. package/dist/jsx/Toast/index.mjs +227 -68
  536. package/dist/jsx/Toast/index.mjs.map +1 -1
  537. package/dist/jsx/Toast/index.native.js +232 -67
  538. package/dist/jsx/Toast/index.native.js.map +1 -1
  539. package/dist/jsx/Toast/store.mjs +75 -11
  540. package/dist/jsx/Toast/store.mjs.map +1 -1
  541. package/dist/jsx/Toast/store.native.js +108 -10
  542. package/dist/jsx/Toast/store.native.js.map +1 -1
  543. package/dist/jsx/Tooltip/index.mjs +147 -42
  544. package/dist/jsx/Tooltip/index.mjs.map +1 -1
  545. package/dist/jsx/Tooltip/index.native.js +195 -43
  546. package/dist/jsx/Tooltip/index.native.js.map +1 -1
  547. package/dist/jsx/Video/PlayerChrome.mjs +377 -0
  548. package/dist/jsx/Video/PlayerChrome.mjs.map +1 -0
  549. package/dist/jsx/Video/PlayerChrome.native.js +436 -0
  550. package/dist/jsx/Video/PlayerChrome.native.js.map +1 -0
  551. package/dist/jsx/Video/VideoFrame.mjs +14 -5
  552. package/dist/jsx/Video/VideoFrame.mjs.map +1 -1
  553. package/dist/jsx/Video/VideoFrame.native.js +16 -5
  554. package/dist/jsx/Video/VideoFrame.native.js.map +1 -1
  555. package/dist/jsx/Video/index.mjs +227 -11
  556. package/dist/jsx/Video/index.mjs.map +1 -1
  557. package/dist/jsx/Video/index.native.js +28 -13
  558. package/dist/jsx/Video/index.native.js.map +1 -1
  559. package/dist/jsx/Wheel/index.mjs +143 -92
  560. package/dist/jsx/Wheel/index.mjs.map +1 -1
  561. package/dist/jsx/Wheel/index.native.js +149 -96
  562. package/dist/jsx/Wheel/index.native.js.map +1 -1
  563. package/dist/jsx/actions/DestructiveAction.mjs +1 -1
  564. package/dist/jsx/actions/DestructiveAction.native.js +2 -2
  565. package/dist/jsx/actions/DestructiveAction.native.js.map +1 -1
  566. package/dist/jsx/charts/BarChart.mjs +8 -4
  567. package/dist/jsx/charts/BarChart.mjs.map +1 -1
  568. package/dist/jsx/charts/BarChart.native.js +9 -5
  569. package/dist/jsx/charts/BarChart.native.js.map +1 -1
  570. package/dist/jsx/charts/LineChart.mjs +1 -1
  571. package/dist/jsx/charts/LineChart.native.js +2 -2
  572. package/dist/jsx/charts/LineChart.native.js.map +1 -1
  573. package/dist/jsx/charts/PieChart.mjs +1 -1
  574. package/dist/jsx/charts/PieChart.native.js +2 -2
  575. package/dist/jsx/charts/PieChart.native.js.map +1 -1
  576. package/dist/jsx/charts/Sparkline.mjs +1 -1
  577. package/dist/jsx/charts/Sparkline.native.js +2 -2
  578. package/dist/jsx/charts/Sparkline.native.js.map +1 -1
  579. package/dist/jsx/charts/index.mjs +2 -1
  580. package/dist/jsx/charts/index.mjs.map +1 -1
  581. package/dist/jsx/charts/index.native.js +4 -0
  582. package/dist/jsx/charts/index.native.js.map +1 -1
  583. package/dist/jsx/code/CodeBlock/index.mjs +34 -7
  584. package/dist/jsx/code/CodeBlock/index.mjs.map +1 -1
  585. package/dist/jsx/code/CodeBlock/index.native.js +36 -9
  586. package/dist/jsx/code/CodeBlock/index.native.js.map +1 -1
  587. package/dist/jsx/feedback/ConfirmDialog.mjs +93 -6
  588. package/dist/jsx/feedback/ConfirmDialog.mjs.map +1 -1
  589. package/dist/jsx/feedback/ConfirmDialog.native.js +123 -5
  590. package/dist/jsx/feedback/ConfirmDialog.native.js.map +1 -1
  591. package/dist/jsx/feedback/NotifyHost.mjs +1 -1
  592. package/dist/jsx/feedback/NotifyHost.native.js +2 -2
  593. package/dist/jsx/feedback/NotifyHost.native.js.map +1 -1
  594. package/dist/jsx/icons/themed.mjs +5 -2
  595. package/dist/jsx/icons/themed.mjs.map +1 -1
  596. package/dist/jsx/icons/themed.native.js +4 -1
  597. package/dist/jsx/icons/themed.native.js.map +1 -1
  598. package/dist/jsx/images/Image/ImageFrame.mjs +216 -0
  599. package/dist/jsx/images/Image/ImageFrame.mjs.map +1 -0
  600. package/dist/jsx/images/Image/ImageFrame.native.js +248 -0
  601. package/dist/jsx/images/Image/ImageFrame.native.js.map +1 -0
  602. package/dist/jsx/images/Image/index.mjs +94 -41
  603. package/dist/jsx/images/Image/index.mjs.map +1 -1
  604. package/dist/jsx/images/Image/index.native.js +146 -108
  605. package/dist/jsx/images/Image/index.native.js.map +1 -1
  606. package/dist/jsx/images/Image/shared.mjs +76 -0
  607. package/dist/jsx/images/Image/shared.mjs.map +1 -0
  608. package/dist/jsx/images/Image/shared.native.js +109 -0
  609. package/dist/jsx/images/Image/shared.native.js.map +1 -0
  610. package/dist/jsx/index.js +4 -1
  611. package/dist/jsx/index.js.map +1 -1
  612. package/dist/jsx/index.mjs +4 -1
  613. package/dist/jsx/index.mjs.map +1 -1
  614. package/dist/jsx/index.native.js +7 -0
  615. package/dist/jsx/index.native.js.map +1 -1
  616. package/dist/jsx/knobImmuneExports.mjs +70 -0
  617. package/dist/jsx/knobImmuneExports.mjs.map +1 -0
  618. package/dist/jsx/knobImmuneExports.native.js +98 -0
  619. package/dist/jsx/knobImmuneExports.native.js.map +1 -0
  620. package/dist/jsx/layouts/AsyncBoundary.mjs +165 -38
  621. package/dist/jsx/layouts/AsyncBoundary.mjs.map +1 -1
  622. package/dist/jsx/layouts/AsyncBoundary.native.js +166 -37
  623. package/dist/jsx/layouts/AsyncBoundary.native.js.map +1 -1
  624. package/dist/jsx/layouts/EmptyState.mjs +132 -0
  625. package/dist/jsx/layouts/EmptyState.mjs.map +1 -0
  626. package/dist/jsx/layouts/EmptyState.native.js +165 -0
  627. package/dist/jsx/layouts/EmptyState.native.js.map +1 -0
  628. package/dist/jsx/layouts/PageTemplates.mjs +13 -5
  629. package/dist/jsx/layouts/PageTemplates.mjs.map +1 -1
  630. package/dist/jsx/layouts/PageTemplates.native.js +13 -5
  631. package/dist/jsx/layouts/PageTemplates.native.js.map +1 -1
  632. package/dist/jsx/layouts/PaneScaffold.mjs +277 -17
  633. package/dist/jsx/layouts/PaneScaffold.mjs.map +1 -1
  634. package/dist/jsx/layouts/PaneScaffold.native.js +294 -13
  635. package/dist/jsx/layouts/PaneScaffold.native.js.map +1 -1
  636. package/dist/jsx/layouts/ViewSwitcher.mjs +66 -24
  637. package/dist/jsx/layouts/ViewSwitcher.mjs.map +1 -1
  638. package/dist/jsx/layouts/ViewSwitcher.native.js +78 -30
  639. package/dist/jsx/layouts/ViewSwitcher.native.js.map +1 -1
  640. package/dist/jsx/layouts/attachments.mjs +351 -175
  641. package/dist/jsx/layouts/attachments.mjs.map +1 -1
  642. package/dist/jsx/layouts/attachments.native.js +370 -186
  643. package/dist/jsx/layouts/attachments.native.js.map +1 -1
  644. package/dist/jsx/layouts/breadcrumbs.mjs +163 -53
  645. package/dist/jsx/layouts/breadcrumbs.mjs.map +1 -1
  646. package/dist/jsx/layouts/breadcrumbs.native.js +184 -65
  647. package/dist/jsx/layouts/breadcrumbs.native.js.map +1 -1
  648. package/dist/jsx/layouts/page.mjs +72 -112
  649. package/dist/jsx/layouts/page.mjs.map +1 -1
  650. package/dist/jsx/layouts/page.native.js +82 -130
  651. package/dist/jsx/layouts/page.native.js.map +1 -1
  652. package/dist/jsx/layouts/pageHeadingScope.mjs +8 -3
  653. package/dist/jsx/layouts/pageHeadingScope.mjs.map +1 -1
  654. package/dist/jsx/layouts/pageHeadingScope.native.js +10 -2
  655. package/dist/jsx/layouts/pageHeadingScope.native.js.map +1 -1
  656. package/dist/jsx/layouts/sidebar.mjs +152 -68
  657. package/dist/jsx/layouts/sidebar.mjs.map +1 -1
  658. package/dist/jsx/layouts/sidebar.native.js +118 -47
  659. package/dist/jsx/layouts/sidebar.native.js.map +1 -1
  660. package/dist/jsx/layouts/tags.mjs +323 -140
  661. package/dist/jsx/layouts/tags.mjs.map +1 -1
  662. package/dist/jsx/layouts/tags.native.js +355 -158
  663. package/dist/jsx/layouts/tags.native.js.map +1 -1
  664. package/dist/jsx/layouts/timeline.mjs +129 -45
  665. package/dist/jsx/layouts/timeline.mjs.map +1 -1
  666. package/dist/jsx/layouts/timeline.native.js +179 -55
  667. package/dist/jsx/layouts/timeline.native.js.map +1 -1
  668. package/dist/jsx/layouts/toolbar.mjs +57 -21
  669. package/dist/jsx/layouts/toolbar.mjs.map +1 -1
  670. package/dist/jsx/layouts/toolbar.native.js +62 -25
  671. package/dist/jsx/layouts/toolbar.native.js.map +1 -1
  672. package/dist/jsx/shared/i18n.mjs +10 -0
  673. package/dist/jsx/shared/i18n.mjs.map +1 -0
  674. package/dist/jsx/shared/i18n.native.js +52 -0
  675. package/dist/jsx/shared/i18n.native.js.map +1 -0
  676. package/dist/jsx/shared/textRidesText.mjs +31 -0
  677. package/dist/jsx/shared/textRidesText.mjs.map +1 -0
  678. package/dist/jsx/shared/textRidesText.native.js +81 -0
  679. package/dist/jsx/shared/textRidesText.native.js.map +1 -0
  680. package/dist/jsx/shared/useReturnFocusOnClose.mjs +7 -1
  681. package/dist/jsx/shared/useReturnFocusOnClose.mjs.map +1 -1
  682. package/dist/jsx/shared/useReturnFocusOnClose.native.js +7 -1
  683. package/dist/jsx/shared/useReturnFocusOnClose.native.js.map +1 -1
  684. package/dist/jsx/surfaces.mjs +94 -17
  685. package/dist/jsx/surfaces.mjs.map +1 -1
  686. package/dist/jsx/surfaces.native.js +95 -16
  687. package/dist/jsx/surfaces.native.js.map +1 -1
  688. package/dist/jsx/tamagui.mjs +2 -3
  689. package/dist/jsx/tamagui.mjs.map +1 -1
  690. package/dist/jsx/tamagui.native.js +37 -38
  691. package/dist/jsx/tamagui.native.js.map +1 -1
  692. package/dist/jsx/views/Calendar.mjs +101 -64
  693. package/dist/jsx/views/Calendar.mjs.map +1 -1
  694. package/dist/jsx/views/Calendar.native.js +105 -70
  695. package/dist/jsx/views/Calendar.native.js.map +1 -1
  696. package/dist/jsx/views/Dashboard.mjs +396 -107
  697. package/dist/jsx/views/Dashboard.mjs.map +1 -1
  698. package/dist/jsx/views/Dashboard.native.js +408 -110
  699. package/dist/jsx/views/Dashboard.native.js.map +1 -1
  700. package/dist/jsx/views/Gantt.mjs +256 -59
  701. package/dist/jsx/views/Gantt.mjs.map +1 -1
  702. package/dist/jsx/views/Gantt.native.js +264 -39
  703. package/dist/jsx/views/Gantt.native.js.map +1 -1
  704. package/dist/jsx/views/ImageGrid.mjs +138 -73
  705. package/dist/jsx/views/ImageGrid.mjs.map +1 -1
  706. package/dist/jsx/views/ImageGrid.native.js +155 -71
  707. package/dist/jsx/views/ImageGrid.native.js.map +1 -1
  708. package/dist/jsx/views/Kanban.mjs +52 -30
  709. package/dist/jsx/views/Kanban.mjs.map +1 -1
  710. package/dist/jsx/views/Kanban.native.js +55 -41
  711. package/dist/jsx/views/Kanban.native.js.map +1 -1
  712. package/dist/jsx/views/List.mjs +268 -95
  713. package/dist/jsx/views/List.mjs.map +1 -1
  714. package/dist/jsx/views/List.native.js +280 -101
  715. package/dist/jsx/views/List.native.js.map +1 -1
  716. package/dist/jsx/views/ReportBuilder.mjs +533 -166
  717. package/dist/jsx/views/ReportBuilder.mjs.map +1 -1
  718. package/dist/jsx/views/ReportBuilder.native.js +592 -169
  719. package/dist/jsx/views/ReportBuilder.native.js.map +1 -1
  720. package/dist/jsx/views/TreeView.mjs +142 -52
  721. package/dist/jsx/views/TreeView.mjs.map +1 -1
  722. package/dist/jsx/views/TreeView.native.js +170 -55
  723. package/dist/jsx/views/TreeView.native.js.map +1 -1
  724. package/package.json +19 -19
  725. package/src/Accordion/Accordion.lc50.spec.tsx +69 -0
  726. package/src/Accordion/Accordion.spec.tsx +36 -0
  727. package/src/Accordion/Accordion.stories.tsx +82 -36
  728. package/src/Accordion/index.tsx +296 -75
  729. package/src/Alert/Alert.spec.tsx +137 -1
  730. package/src/Alert/Alert.stories.tsx +10 -11
  731. package/src/Alert/index.tsx +244 -62
  732. package/src/AnimateHeight/AnimateHeight.spec.tsx +152 -0
  733. package/src/AnimateHeight/index.tsx +237 -0
  734. package/src/Avatar/Avatar.spec.tsx +73 -2
  735. package/src/Avatar/Avatar.stories.tsx +106 -4
  736. package/src/Avatar/getInitials.ts +29 -0
  737. package/src/Avatar/index.tsx +323 -105
  738. package/src/Badge/Badge.spec.tsx +83 -0
  739. package/src/Badge/Badge.stories.tsx +15 -1
  740. package/src/Badge/index.tsx +138 -84
  741. package/src/Button.spec.tsx +181 -0
  742. package/src/Button.stories.tsx +92 -0
  743. package/src/Button.tsx +43 -0
  744. package/src/Carousel/Carousel.spec.tsx +152 -0
  745. package/src/Carousel/index.tsx +239 -102
  746. package/src/Chip/Chip.spec.tsx +141 -0
  747. package/src/Chip/Chip.stories.tsx +163 -10
  748. package/src/Chip/index.tsx +452 -11
  749. package/src/DialogContent.stories.tsx +8 -6
  750. package/src/DotIndicator/DotIndicator.stories.tsx +18 -0
  751. package/src/DotIndicator/dotIndicator.spec.tsx +57 -2
  752. package/src/DotIndicator/index.tsx +159 -24
  753. package/src/DropdownMenu/DropdownMenu.spec.tsx +172 -0
  754. package/src/DropdownMenu/DropdownMenu.stories.tsx +35 -0
  755. package/src/DropdownMenu/index.tsx +172 -46
  756. package/src/ErrorBoundary/index.tsx +1 -1
  757. package/src/Pagination.api.spec.tsx +41 -0
  758. package/src/Pagination.tsx +49 -8
  759. package/src/PopoverContent.stories.tsx +4 -2
  760. package/src/ProgressSteps/ProgressSteps.spec.tsx +48 -1
  761. package/src/ProgressSteps/ProgressSteps.stories.tsx +48 -0
  762. package/src/ProgressSteps/index.tsx +224 -133
  763. package/src/Quote/Quote.lc50.spec.tsx +53 -0
  764. package/src/Quote/Quote.spec.tsx +9 -2
  765. package/src/Quote/Quote.stories.tsx +1 -1
  766. package/src/Quote/index.tsx +77 -60
  767. package/src/SheetModal/index.native.tsx +41 -39
  768. package/src/SheetModal/index.tsx +149 -18
  769. package/src/Skeleton/Skeleton.stories.tsx +109 -93
  770. package/src/Skeleton/SkeletonText.stories.tsx +11 -0
  771. package/src/Skeleton/index.tsx +257 -8
  772. package/src/SkipLink/SkipLink.spec.tsx +35 -0
  773. package/src/SkipLink/SkipLink.stories.tsx +1 -1
  774. package/src/SkipLink/index.tsx +120 -71
  775. package/src/Tabs/Tabs.spec.tsx +65 -0
  776. package/src/Tabs/Tabs.stories.tsx +32 -0
  777. package/src/Tabs/index.tsx +188 -133
  778. package/src/Toast/Toast.spec.tsx +208 -8
  779. package/src/Toast/Toast.stories.tsx +97 -16
  780. package/src/Toast/index.tsx +322 -78
  781. package/src/Toast/store.ts +150 -16
  782. package/src/Tooltip/Tooltip.lc50.spec.tsx +52 -0
  783. package/src/Tooltip/Tooltip.spec.tsx +99 -0
  784. package/src/Tooltip/Tooltip.stories.tsx +23 -0
  785. package/src/Tooltip/index.tsx +200 -44
  786. package/src/Video/PlayerChrome.tsx +412 -0
  787. package/src/Video/Video.spec.tsx +47 -4
  788. package/src/Video/Video.stories.tsx +2 -1
  789. package/src/Video/VideoFrame.tsx +15 -3
  790. package/src/Video/index.native.tsx +20 -12
  791. package/src/Video/index.tsx +285 -21
  792. package/src/Video/types.ts +7 -1
  793. package/src/Wheel/Wheel.spec.tsx +217 -2
  794. package/src/Wheel/Wheel.stories.tsx +39 -13
  795. package/src/Wheel/index.tsx +205 -134
  796. package/src/actions/DestructiveAction.tsx +1 -1
  797. package/src/charts/BarChart.tsx +14 -3
  798. package/src/charts/LineChart.tsx +1 -1
  799. package/src/charts/PieChart.tsx +1 -1
  800. package/src/charts/Sparkline.tsx +1 -1
  801. package/src/charts/charts.spec.tsx +25 -0
  802. package/src/charts/index.ts +9 -0
  803. package/src/code/CodeBlock/index.tsx +43 -7
  804. package/src/export-surface.spec.tsx +137 -0
  805. package/src/feedback/ConfirmDialog.spec.tsx +36 -0
  806. package/src/feedback/ConfirmDialog.stories.tsx +20 -1
  807. package/src/feedback/ConfirmDialog.tsx +121 -9
  808. package/src/feedback/NotifyHost.tsx +1 -1
  809. package/src/icons/themed.tsx +7 -2
  810. package/src/images/Image/Image.spec.tsx +136 -73
  811. package/src/images/Image/Image.stories.tsx +113 -9
  812. package/src/images/Image/ImageFrame.tsx +288 -0
  813. package/src/images/Image/index.native.tsx +177 -144
  814. package/src/images/Image/index.tsx +103 -51
  815. package/src/images/Image/shared.ts +88 -0
  816. package/src/images/Image/types.ts +32 -1
  817. package/src/index.ts +18 -0
  818. package/src/knobImmuneExports.ts +97 -0
  819. package/src/layouts/AsyncBoundary.spec.tsx +77 -0
  820. package/src/layouts/AsyncBoundary.stories.tsx +33 -1
  821. package/src/layouts/AsyncBoundary.tsx +183 -46
  822. package/src/layouts/Attachments.stories.tsx +28 -14
  823. package/src/layouts/Breadcrumbs.stories.tsx +22 -1
  824. package/src/layouts/EmptyState.stories.tsx +94 -26
  825. package/src/layouts/EmptyState.tsx +169 -0
  826. package/src/layouts/PageHeader.stories.tsx +68 -15
  827. package/src/layouts/PageTemplates.tsx +11 -6
  828. package/src/layouts/PaneScaffold.stories.tsx +132 -37
  829. package/src/layouts/PaneScaffold.tsx +354 -18
  830. package/src/layouts/ScreenToolbar.stories.tsx +36 -11
  831. package/src/layouts/Sidebar.stories.tsx +30 -7
  832. package/src/layouts/Tags.stories.tsx +31 -32
  833. package/src/layouts/Timeline.stories.tsx +2 -2
  834. package/src/layouts/Toolbar.stories.tsx +19 -0
  835. package/src/layouts/ViewSwitcher.stories.tsx +11 -3
  836. package/src/layouts/ViewSwitcher.tsx +101 -48
  837. package/src/layouts/attachments.tsx +394 -186
  838. package/src/layouts/breadcrumbs.tsx +213 -75
  839. package/src/layouts/layouts.spec.tsx +32 -0
  840. package/src/layouts/page.tsx +103 -164
  841. package/src/layouts/pageHeadingScope.tsx +28 -2
  842. package/src/layouts/sidebar.tsx +184 -91
  843. package/src/layouts/tags-trigger.spec.tsx +8 -8
  844. package/src/layouts/tags.tsx +356 -159
  845. package/src/layouts/timeline-comments.spec.tsx +17 -0
  846. package/src/layouts/timeline.tsx +179 -65
  847. package/src/layouts/toolbar.tsx +78 -27
  848. package/src/shared/i18n.ts +26 -0
  849. package/src/shared/textRidesText.ts +57 -0
  850. package/src/shared/useReturnFocusOnClose.ts +7 -1
  851. package/src/surfaces.tsx +83 -22
  852. package/src/tamagui.spec.ts +19 -4
  853. package/src/tamagui.ts +14 -6
  854. package/src/views/Calendar.stories.tsx +2 -1
  855. package/src/views/Calendar.tsx +129 -81
  856. package/src/views/Dashboard.stories.tsx +132 -1
  857. package/src/views/Dashboard.tsx +440 -127
  858. package/src/views/Gantt.stories.tsx +6 -5
  859. package/src/views/Gantt.tsx +330 -61
  860. package/src/views/ImageGrid.stories.tsx +81 -17
  861. package/src/views/ImageGrid.tsx +176 -96
  862. package/src/views/Kanban.native.tsx +73 -42
  863. package/src/views/Kanban.stories.tsx +42 -26
  864. package/src/views/Kanban.tsx +68 -40
  865. package/src/views/List.stories.tsx +107 -29
  866. package/src/views/List.tsx +335 -109
  867. package/src/views/ReportBuilder.stories.tsx +28 -1
  868. package/src/views/ReportBuilder.tsx +647 -275
  869. package/src/views/TreeView.stories.tsx +19 -0
  870. package/src/views/TreeView.tsx +194 -59
  871. package/types/Accordion/index.d.ts +10 -2
  872. package/types/Accordion/index.d.ts.map +1 -1
  873. package/types/Alert/index.d.ts +8 -2
  874. package/types/Alert/index.d.ts.map +1 -1
  875. package/types/AnimateHeight/index.d.ts +48 -0
  876. package/types/AnimateHeight/index.d.ts.map +1 -0
  877. package/types/Avatar/getInitials.d.ts +26 -0
  878. package/types/Avatar/getInitials.d.ts.map +1 -1
  879. package/types/Avatar/index.d.ts +34 -11
  880. package/types/Avatar/index.d.ts.map +1 -1
  881. package/types/Badge/index.d.ts +17 -12
  882. package/types/Badge/index.d.ts.map +1 -1
  883. package/types/Button.d.ts +42 -0
  884. package/types/Button.d.ts.map +1 -0
  885. package/types/Carousel/index.d.ts.map +1 -1
  886. package/types/Chip/index.d.ts +41 -1
  887. package/types/Chip/index.d.ts.map +1 -1
  888. package/types/DotIndicator/index.d.ts +4 -3
  889. package/types/DotIndicator/index.d.ts.map +1 -1
  890. package/types/DropdownMenu/index.d.ts +39 -5
  891. package/types/DropdownMenu/index.d.ts.map +1 -1
  892. package/types/ErrorBoundary/index.d.ts +1 -1
  893. package/types/Pagination.d.ts.map +1 -1
  894. package/types/ProgressSteps/index.d.ts +20 -5
  895. package/types/ProgressSteps/index.d.ts.map +1 -1
  896. package/types/Quote/index.d.ts +4 -3
  897. package/types/Quote/index.d.ts.map +1 -1
  898. package/types/SheetModal/index.d.ts +7 -10
  899. package/types/SheetModal/index.d.ts.map +1 -1
  900. package/types/SheetModal/index.native.d.ts +6 -13
  901. package/types/SheetModal/index.native.d.ts.map +1 -1
  902. package/types/Skeleton/index.d.ts +40 -1
  903. package/types/Skeleton/index.d.ts.map +1 -1
  904. package/types/SkipLink/index.d.ts +5 -6
  905. package/types/SkipLink/index.d.ts.map +1 -1
  906. package/types/Tabs/index.d.ts +12 -10
  907. package/types/Tabs/index.d.ts.map +1 -1
  908. package/types/Toast/index.d.ts +32 -9
  909. package/types/Toast/index.d.ts.map +1 -1
  910. package/types/Toast/store.d.ts +59 -4
  911. package/types/Toast/store.d.ts.map +1 -1
  912. package/types/Tooltip/index.d.ts +50 -5
  913. package/types/Tooltip/index.d.ts.map +1 -1
  914. package/types/Video/PlayerChrome.d.ts +24 -0
  915. package/types/Video/PlayerChrome.d.ts.map +1 -0
  916. package/types/Video/VideoFrame.d.ts.map +1 -1
  917. package/types/Video/index.d.ts +3 -2
  918. package/types/Video/index.d.ts.map +1 -1
  919. package/types/Video/index.native.d.ts +3 -2
  920. package/types/Video/index.native.d.ts.map +1 -1
  921. package/types/Video/types.d.ts +7 -1
  922. package/types/Video/types.d.ts.map +1 -1
  923. package/types/Wheel/index.d.ts +10 -1
  924. package/types/Wheel/index.d.ts.map +1 -1
  925. package/types/charts/BarChart.d.ts +7 -1
  926. package/types/charts/BarChart.d.ts.map +1 -1
  927. package/types/charts/index.d.ts +1 -0
  928. package/types/charts/index.d.ts.map +1 -1
  929. package/types/code/CodeBlock/index.d.ts.map +1 -1
  930. package/types/feedback/ConfirmDialog.d.ts +6 -0
  931. package/types/feedback/ConfirmDialog.d.ts.map +1 -1
  932. package/types/icons/themed.d.ts.map +1 -1
  933. package/types/images/Image/ImageFrame.d.ts +40 -0
  934. package/types/images/Image/ImageFrame.d.ts.map +1 -0
  935. package/types/images/Image/index.d.ts +1 -1
  936. package/types/images/Image/index.d.ts.map +1 -1
  937. package/types/images/Image/index.native.d.ts +1 -1
  938. package/types/images/Image/index.native.d.ts.map +1 -1
  939. package/types/images/Image/shared.d.ts +13 -0
  940. package/types/images/Image/shared.d.ts.map +1 -0
  941. package/types/images/Image/types.d.ts +27 -1
  942. package/types/images/Image/types.d.ts.map +1 -1
  943. package/types/index.d.ts +6 -0
  944. package/types/index.d.ts.map +1 -1
  945. package/types/knobImmuneExports.d.ts +21 -0
  946. package/types/knobImmuneExports.d.ts.map +1 -0
  947. package/types/layouts/AsyncBoundary.d.ts +20 -2
  948. package/types/layouts/AsyncBoundary.d.ts.map +1 -1
  949. package/types/layouts/EmptyState.d.ts +26 -0
  950. package/types/layouts/EmptyState.d.ts.map +1 -0
  951. package/types/layouts/PageTemplates.d.ts +5 -3
  952. package/types/layouts/PageTemplates.d.ts.map +1 -1
  953. package/types/layouts/PaneScaffold.d.ts +27 -5
  954. package/types/layouts/PaneScaffold.d.ts.map +1 -1
  955. package/types/layouts/ViewSwitcher.d.ts +7 -4
  956. package/types/layouts/ViewSwitcher.d.ts.map +1 -1
  957. package/types/layouts/attachments.d.ts +4 -2
  958. package/types/layouts/attachments.d.ts.map +1 -1
  959. package/types/layouts/breadcrumbs.d.ts +13 -5
  960. package/types/layouts/breadcrumbs.d.ts.map +1 -1
  961. package/types/layouts/page.d.ts +16 -27
  962. package/types/layouts/page.d.ts.map +1 -1
  963. package/types/layouts/pageHeadingScope.d.ts +14 -1
  964. package/types/layouts/pageHeadingScope.d.ts.map +1 -1
  965. package/types/layouts/sidebar.d.ts +3 -1
  966. package/types/layouts/sidebar.d.ts.map +1 -1
  967. package/types/layouts/tags.d.ts +4 -1
  968. package/types/layouts/tags.d.ts.map +1 -1
  969. package/types/layouts/timeline.d.ts +7 -5
  970. package/types/layouts/timeline.d.ts.map +1 -1
  971. package/types/layouts/toolbar.d.ts +1 -1
  972. package/types/layouts/toolbar.d.ts.map +1 -1
  973. package/types/shared/i18n.d.ts +14 -0
  974. package/types/shared/i18n.d.ts.map +1 -0
  975. package/types/shared/textRidesText.d.ts +20 -0
  976. package/types/shared/textRidesText.d.ts.map +1 -0
  977. package/types/shared/useReturnFocusOnClose.d.ts.map +1 -1
  978. package/types/surfaces.d.ts +0 -14
  979. package/types/surfaces.d.ts.map +1 -1
  980. package/types/tamagui.d.ts +2 -3
  981. package/types/tamagui.d.ts.map +1 -1
  982. package/types/views/Calendar.d.ts.map +1 -1
  983. package/types/views/Dashboard.d.ts +68 -6
  984. package/types/views/Dashboard.d.ts.map +1 -1
  985. package/types/views/Gantt.d.ts +5 -0
  986. package/types/views/Gantt.d.ts.map +1 -1
  987. package/types/views/ImageGrid.d.ts +4 -0
  988. package/types/views/ImageGrid.d.ts.map +1 -1
  989. package/types/views/Kanban.d.ts.map +1 -1
  990. package/types/views/Kanban.native.d.ts +12 -1
  991. package/types/views/Kanban.native.d.ts.map +1 -1
  992. package/types/views/List.d.ts +45 -6
  993. package/types/views/List.d.ts.map +1 -1
  994. package/types/views/ReportBuilder.d.ts +8 -54
  995. package/types/views/ReportBuilder.d.ts.map +1 -1
  996. package/types/views/TreeView.d.ts +13 -11
  997. package/types/views/TreeView.d.ts.map +1 -1
@@ -1,8 +1,9 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { MIN_PRESS_TARGET, radiusClassProps, useResolvedKnobs } from "@multiplatform.one/theme";
2
+ import { FOCUS_VISIBLE_RING, MIN_PRESS_TARGET, ensureKeyboardModalityTracking, radiusClassProps, useResolvedKnobs, wasKeyboardFocus } from "@multiplatform.one/theme";
3
3
  import { CheckIcon } from "@phosphor-icons/react";
4
- import { useTranslation } from "react-i18next";
5
- import { View, XStack, getTokens, styled } from "tamagui";
4
+ import { useRef, useState } from "react";
5
+ import { useTranslation } from "../shared/i18n.native.js";
6
+ import { View, XStack, getTokens, isWeb, styled } from "tamagui";
6
7
  import { componentColors } from "../componentColors.native.js";
7
8
  import { withInterp } from "../shared/t.native.js";
8
9
  var dotGapMap = {
@@ -28,6 +29,7 @@ var dotGeometryMap = {
28
29
  }
29
30
  };
30
31
  var CHECK_MIN_DOT = 8;
32
+ var WINDOW = 5;
31
33
  function sizePx(value, fallback) {
32
34
  if (typeof value === "number") return value;
33
35
  if (typeof value === "string") {
@@ -37,11 +39,53 @@ function sizePx(value, fallback) {
37
39
  }
38
40
  return fallback;
39
41
  }
42
+ function idleMarkWidth(variant, itemSize, activeSize) {
43
+ if (variant === "pills") return Math.round(itemSize * 2.25);
44
+ if (variant === "bars") return Math.max(itemSize, Math.round(activeSize * 0.55));
45
+ return itemSize;
46
+ }
47
+ function activeMarkWidth(variant, itemSize, geometryActive) {
48
+ if (variant === "dots") return Math.round(itemSize * 2);
49
+ if (variant === "pills") return Math.round(itemSize * 3);
50
+ return geometryActive;
51
+ }
52
+ function windowRange(active, total) {
53
+ if (total <= WINDOW) return [0, Math.max(0, total - 1)];
54
+ var half = Math.floor(WINDOW / 2);
55
+ var start = active - half;
56
+ var end = active + half;
57
+ if (start < 0) {
58
+ end -= start;
59
+ start = 0;
60
+ }
61
+ if (end > total - 1) {
62
+ start -= end - (total - 1);
63
+ end = total - 1;
64
+ }
65
+ return [Math.max(0, start), end];
66
+ }
67
+ function windowScale(index, active, start, end, total) {
68
+ if (total <= WINDOW) return 1;
69
+ if (index < start || index > end) return 0;
70
+ var dist = Math.abs(index - active);
71
+ if (dist === 0) return 1;
72
+ if (dist === 1) return 0.72;
73
+ return 0.48;
74
+ }
75
+ function isRtl(node) {
76
+ var _node_closest;
77
+ if (typeof document === "undefined") return false;
78
+ var fromNode = node === null || node === void 0 ? void 0 : (_node_closest = node.closest("[dir]")) === null || _node_closest === void 0 ? void 0 : _node_closest.getAttribute("dir");
79
+ var dir = fromNode || document.documentElement.dir;
80
+ return dir === "rtl";
81
+ }
40
82
  var DotsContainer = styled(XStack, {
41
83
  name: "DotIndicator",
42
84
  alignItems: "center",
43
85
  justifyContent: "center",
44
86
  gap: "$2",
87
+ // Outer +2px LC-71 ring on the painted mark must not clip at the strip edge.
88
+ overflow: "visible",
45
89
  variants: {
46
90
  // A rail seats the strip on a filled capsule instead of the page. It is a
47
91
  // variant of the strip rather than host chrome because the rail and the
@@ -64,11 +108,20 @@ var DotTarget = styled(View, {
64
108
  alignItems: "center",
65
109
  justifyContent: "center",
66
110
  backgroundColor: "transparent",
111
+ overflow: "visible",
112
+ borderRadius: 1e3,
113
+ // LC-71: the 44px hit box is not the perceived control (Chip ✕ rule). Rest,
114
+ // mouse-focus, and :focus-visible paint no ring here — the ring rides the
115
+ // painted mark via FOCUS_VISIBLE_RING when wasKeyboardFocus().
116
+ outlineWidth: 0,
117
+ outlineStyle: "none",
118
+ focusStyle: {
119
+ outlineWidth: 0,
120
+ outlineStyle: "none"
121
+ },
67
122
  focusVisibleStyle: {
68
- outlineColor: "$outlineColor",
69
- outlineWidth: 2,
70
- outlineStyle: "solid",
71
- outlineOffset: 1
123
+ outlineWidth: 0,
124
+ outlineStyle: "none"
72
125
  }
73
126
  });
74
127
  var Dot = styled(View, {
@@ -129,11 +182,15 @@ function DotIndicator(param) {
129
182
  var {
130
183
  knobProps
131
184
  } = useResolvedKnobs();
185
+ var rootRef = useRef(null);
186
+ var [kbFocusIndex, setKbFocusIndex] = useState(null);
187
+ if (isWeb) ensureKeyboardModalityTracking();
132
188
  var gap = (_ref = gapProp !== null && gapProp !== void 0 ? gapProp : dotGapMap[knobProps.space]) !== null && _ref !== void 0 ? _ref : "$2";
133
189
  var geometry = (_dotGeometryMap_knobProps_sizeToken = dotGeometryMap[knobProps.sizeToken]) !== null && _dotGeometryMap_knobProps_sizeToken !== void 0 ? _dotGeometryMap_knobProps_sizeToken : dotGeometryMap.$4;
134
190
  var isTick = variant === "bars";
135
191
  var itemSize = sizePx(dotSize, isTick ? geometry.bar : geometry.dot);
136
- var activeSize = sizePx(activeDotSize, geometry.active);
192
+ var activeSize = sizePx(activeDotSize, activeMarkWidth(variant, itemSize, geometry.active));
193
+ var idleWidth = idleMarkWidth(variant, itemSize, activeSize);
137
194
  var gapPx = typeof gap === "number" ? gap : (_ref1 = (_getTokens_space = getTokens().space) === null || _getTokens_space === void 0 ? void 0 : (_getTokens_space_gap = _getTokens_space[gap]) === null || _getTokens_space_gap === void 0 ? void 0 : _getTokens_space_gap.val) !== null && _ref1 !== void 0 ? _ref1 : 7;
138
195
  var slopX = Math.max(0, Math.floor((gapPx - 1) / 2));
139
196
  var outsetY = Math.max(0, Math.ceil((MIN_PRESS_TARGET - itemSize) / 2));
@@ -141,12 +198,31 @@ function DotIndicator(param) {
141
198
  var isStep = idiom === "step";
142
199
  var label = isStep ? t("Go to step {{number}}") : t("Go to item {{number}}");
143
200
  var currentValue = isStep ? "step" : "true";
144
- var motionStyle = transition ? {
145
- transition: "width var(--mp-transition, 100ms) ease, height var(--mp-transition, 100ms) ease, background-color var(--mp-transition, 100ms) ease"
201
+ var motion = knobProps.transition ? transition !== null && transition !== void 0 ? transition : knobProps.transition : void 0;
202
+ var motionStyle = motion ? {
203
+ transition: "width var(--mp-transition, 200ms) ease, height var(--mp-transition, 200ms) ease, background-color var(--mp-transition, 200ms) ease, transform var(--mp-transition, 200ms) ease"
146
204
  } : void 0;
205
+ var clampedActive = Math.min(Math.max(0, activeIndex), Math.max(0, total - 1));
206
+ var [winStart, winEnd] = windowRange(clampedActive, total);
207
+ var focusMark = function focusMark2(index) {
208
+ requestAnimationFrame(function () {
209
+ var _rootRef_current_querySelector, _rootRef_current, _el_focus;
210
+ var el = (_rootRef_current = rootRef.current) === null || _rootRef_current === void 0 ? void 0 : (_rootRef_current_querySelector = _rootRef_current.querySelector) === null || _rootRef_current_querySelector === void 0 ? void 0 : _rootRef_current_querySelector.call(_rootRef_current, `[data-dot-index="${index}"]`);
211
+ el === null || el === void 0 ? void 0 : (_el_focus = el.focus) === null || _el_focus === void 0 ? void 0 : _el_focus.call(el);
212
+ });
213
+ };
214
+ var moveTo = function moveTo2(index) {
215
+ var next = Math.min(Math.max(0, index), total - 1);
216
+ onChange === null || onChange === void 0 ? void 0 : onChange(next);
217
+ focusMark(next);
218
+ };
147
219
  return /* @__PURE__ */_jsx(DotsContainer, {
220
+ ref: rootRef,
148
221
  gap,
149
222
  rail,
223
+ ...(interactive ? {
224
+ role: "group"
225
+ } : void 0),
150
226
  ...(rail ? {
151
227
  paddingHorizontal: knobProps.panelPadding.padding,
152
228
  height: knobProps.sizeToken
@@ -156,16 +232,23 @@ function DotIndicator(param) {
156
232
  }).map(function (_, index) {
157
233
  var isActive = index === activeIndex;
158
234
  var isCompleted = !isActive && !!(completedSteps === null || completedSteps === void 0 ? void 0 : completedSteps.has(index));
159
- var dotWidth = isActive ? activeSize : itemSize;
235
+ var scale = windowScale(index, clampedActive, winStart, winEnd, total);
236
+ var hidden = scale === 0;
237
+ var baseWidth = isActive ? activeSize : idleWidth;
238
+ var dotWidth = Math.max(1, Math.round(baseWidth * scale));
239
+ var dotHeight = Math.max(1, Math.round(itemSize * scale));
160
240
  var restingFill = isCompleted ? componentColors.indicator.completed : rail ?
161
241
  // Idle chrome steps up the ramp on a rail so the dot still
162
242
  // separates from the capsule fill it sits on.
163
243
  componentColors.indicator.track : componentColors.indicator.inactive;
244
+ var kbRing = kbFocusIndex === index;
164
245
  return /* @__PURE__ */_jsx(DotTarget, {
246
+ display: hidden ? "none" : "flex",
165
247
  width: dotWidth + slopX * 2,
166
248
  minHeight: MIN_PRESS_TARGET,
167
249
  marginHorizontal: -slopX,
168
250
  marginVertical: -outsetY,
251
+ zIndex: kbRing ? 1 : void 0,
169
252
  cursor: interactive ? "pointer" : disabled ? "not-allowed" : "default",
170
253
  onPress: interactive ? function () {
171
254
  return onChange === null || onChange === void 0 ? void 0 : onChange(index);
@@ -173,16 +256,45 @@ function DotIndicator(param) {
173
256
  "aria-label": withInterp(label, {
174
257
  number: index + 1
175
258
  }),
259
+ ...{
260
+ "data-dot-index": String(index)
261
+ },
262
+ ...(hidden ? {
263
+ "data-dot-hidden": "true"
264
+ } : void 0),
176
265
  ...(isActive ? {
177
266
  "aria-current": currentValue
178
267
  } : void 0),
179
268
  ...(interactive ? {
180
269
  role: "button",
181
270
  tabIndex: 0,
271
+ onFocus: function onFocus() {
272
+ if (!isWeb || wasKeyboardFocus()) setKbFocusIndex(index);
273
+ },
274
+ onBlur: function onBlur() {
275
+ setKbFocusIndex(function (prev) {
276
+ return prev === index ? null : prev;
277
+ });
278
+ },
182
279
  onKeyDown: function onKeyDown(e) {
183
280
  if (e.key === "Enter" || e.key === " ") {
184
281
  e.preventDefault();
185
282
  onChange === null || onChange === void 0 ? void 0 : onChange(index);
283
+ return;
284
+ }
285
+ var rtl = isRtl(e.currentTarget);
286
+ if (e.key === "ArrowRight") {
287
+ e.preventDefault();
288
+ moveTo(index + (rtl ? -1 : 1));
289
+ } else if (e.key === "ArrowLeft") {
290
+ e.preventDefault();
291
+ moveTo(index + (rtl ? 1 : -1));
292
+ } else if (e.key === "Home") {
293
+ e.preventDefault();
294
+ moveTo(0);
295
+ } else if (e.key === "End") {
296
+ e.preventDefault();
297
+ moveTo(total - 1);
186
298
  }
187
299
  }
188
300
  } : disabled ? {
@@ -202,13 +314,21 @@ function DotIndicator(param) {
202
314
  } : void 0)
203
315
  }),
204
316
  width: dotWidth,
205
- height: itemSize,
317
+ height: dotHeight,
206
318
  disabled,
207
- transition,
319
+ transition: motion,
208
320
  style: motionStyle,
321
+ ...(kbRing ? FOCUS_VISIBLE_RING : {
322
+ outlineWidth: 0
323
+ }),
209
324
  ...{
210
- [dotStateAttribute]: isActive ? "active" : "idle"
325
+ [dotStateAttribute]: isActive ? "active" : "idle",
326
+ "data-mark-width": String(dotWidth),
327
+ "data-mark-height": String(dotHeight)
211
328
  },
329
+ ...(kbRing ? {
330
+ "data-dot-ring": "true"
331
+ } : void 0),
212
332
  children: isCompleted && !isTick && itemSize >= CHECK_MIN_DOT && /* @__PURE__ */_jsx(CheckIcon, {
213
333
  size: 8,
214
334
  color: "white",
@@ -1 +1 @@
1
- {"version":3,"names":["jsx","_jsx","MIN_PRESS_TARGET","radiusClassProps","useResolvedKnobs","CheckIcon","useTranslation","View","XStack","getTokens","styled","componentColors","withInterp","dotGapMap","small","medium","large","dotGeometryMap","$3","dot","bar","active","$4","$5","CHECK_MIN_DOT","sizePx","value","fallback","_getTokens_size_value","_getTokens_size","token","size","val","DotsContainer","name","alignItems","justifyContent","gap","variants","rail","true","backgroundColor","interactive","background","borderRadius","DotTarget","focusVisibleStyle","outlineColor","outlineWidth","outlineStyle","outlineOffset","Dot","indicator","inactive","hoverStyle","hover","selected","disabled","opacity","DotIndicator","param","total","activeIndex","onChange","variant","gapProp","completedSteps","idiom","dotSize","activeDotSize","transition","dotStateAttribute","_ref","_dotGeometryMap_knobProps_sizeToken","_ref1","_getTokens_space_gap","_getTokens_space","t","knobProps","space","geometry","sizeToken","isTick","itemSize","activeSize","gapPx","slopX","Math","max","floor","outsetY","ceil","isStep","label","currentValue","motionStyle","paddingHorizontal","panelPadding","padding","height","children","Array","from","length","map","_","index","isActive","isCompleted","has","dotWidth","restingFill","completed","track","width","minHeight","marginHorizontal","marginVertical","cursor","onPress","number","role","tabIndex","onKeyDown","e","key","preventDefault"],"sources":["../../../src/DotIndicator/index.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["jsx","_jsx","FOCUS_VISIBLE_RING","MIN_PRESS_TARGET","ensureKeyboardModalityTracking","radiusClassProps","useResolvedKnobs","wasKeyboardFocus","CheckIcon","useRef","useState","useTranslation","View","XStack","getTokens","isWeb","styled","componentColors","withInterp","dotGapMap","small","medium","large","dotGeometryMap","$3","dot","bar","active","$4","$5","CHECK_MIN_DOT","WINDOW","sizePx","value","fallback","_getTokens_size_value","_getTokens_size","token","size","val","idleMarkWidth","variant","itemSize","activeSize","Math","round","max","activeMarkWidth","geometryActive","windowRange","total","half","floor","start","end","windowScale","index","dist","abs","isRtl","node","_node_closest","document","fromNode","closest","getAttribute","dir","documentElement","DotsContainer","name","alignItems","justifyContent","gap","overflow","variants","rail","true","backgroundColor","interactive","background","borderRadius","DotTarget","outlineWidth","outlineStyle","focusStyle","focusVisibleStyle","Dot","indicator","inactive","hoverStyle","hover","selected","disabled","opacity","DotIndicator","param","activeIndex","onChange","gapProp","completedSteps","idiom","dotSize","activeDotSize","transition","dotStateAttribute","_ref","_dotGeometryMap_knobProps_sizeToken","_ref1","_getTokens_space_gap","_getTokens_space","t","knobProps","rootRef","kbFocusIndex","setKbFocusIndex","space","geometry","sizeToken","isTick","idleWidth","gapPx","slopX","outsetY","ceil","isStep","label","currentValue","motion","motionStyle","clampedActive","min","winStart","winEnd","focusMark","focusMark2","requestAnimationFrame","_rootRef_current_querySelector","_rootRef_current","_el_focus","el","current","querySelector","call","focus","moveTo","moveTo2","next","ref","role","paddingHorizontal","panelPadding","padding","height","children","Array","from","length","map","_","isActive","isCompleted","has","scale","hidden","baseWidth","dotWidth","dotHeight","restingFill","completed","track","kbRing","display","width","minHeight","marginHorizontal","marginVertical","zIndex","cursor","onPress","number","String","tabIndex","onFocus","onBlur","prev","onKeyDown","e","key","preventDefault","rtl","currentTarget"],"sources":["../../../src/DotIndicator/index.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
- import { createContext, forwardRef, isValidElement, useCallback, useContext, useEffect, useMemo, useRef } from "react";
2
- import { Intent, hairline, menuRowFrame, useResolvedKnobs, warnBareDisabled } from "@multiplatform.one/theme";
1
+ import { createContext, forwardRef, isValidElement, useCallback, useContext, useEffect, useLayoutEffect, useMemo, useRef, useState } from "react";
2
+ import { OVERLAY_ANCHOR_GAP, hairline, keyboardFocusRingProps, menuRowFrame, ensureKeyboardModalityTracking, useResolvedKnobs, warnBareDisabled, wasKeyboardFocus } from "@multiplatform.one/theme";
3
3
  import { CheckIcon } from "@phosphor-icons/react";
4
4
  import { Popover, Text, View, XStack, YStack, isWeb, styled, useComposedRefs, useControllableState, useTheme, withStaticProperties } from "tamagui";
5
5
  import { componentColors } from "../componentColors.mjs";
@@ -15,20 +15,24 @@ const ItemRow = styled(XStack, {
15
15
  ...menuRowFrame,
16
16
  gap: "$2.5",
17
17
  cursor: "pointer",
18
+ // LC-72 CONTAINER-CLIP: rows stay square; the overlay clips outer corners.
19
+ // LC-71: rest and pointer-origin focus paint no ring. Keyboard ring is
20
+ // applied per-row via keyboardFocusRingProps (inset so overflow:hidden
21
+ // does not sever it) when wasKeyboardFocus().
22
+ outlineWidth: 0,
18
23
  hoverStyle: {
19
24
  backgroundColor: componentColors.interactive.hover
20
25
  },
21
26
  pressStyle: {
22
27
  backgroundColor: componentColors.interactive.active
23
28
  },
24
- // Focus highlight doubles as the roving-focus indicator (full-width row).
25
29
  focusStyle: {
26
30
  backgroundColor: componentColors.interactive.hover,
27
- outlineStyle: "none"
31
+ outlineWidth: 0
28
32
  },
29
33
  focusVisibleStyle: {
30
34
  backgroundColor: componentColors.interactive.hover,
31
- outlineStyle: "none"
35
+ outlineWidth: 0
32
36
  },
33
37
  variants: {
34
38
  disabled: {
@@ -63,7 +67,8 @@ function DropdownMenuRoot({
63
67
  defaultOpen = false,
64
68
  onOpenChange,
65
69
  placement = "bottom-start",
66
- maxHeight
70
+ maxHeight,
71
+ closeOnSelect
67
72
  }) {
68
73
  const [open, setOpen] = useControllableState({
69
74
  prop: openProp,
@@ -71,6 +76,7 @@ function DropdownMenuRoot({
71
76
  onChange: onOpenChange
72
77
  });
73
78
  const triggerRef = useRef(null);
79
+ const pendingFocusRef = useRef("first");
74
80
  const close = useCallback(() => {
75
81
  setOpen(false);
76
82
  if (isWeb) {
@@ -82,15 +88,17 @@ function DropdownMenuRoot({
82
88
  open,
83
89
  setOpen,
84
90
  triggerRef,
85
- close
86
- }), [open, setOpen, close]);
91
+ close,
92
+ closeOnSelect,
93
+ pendingFocusRef
94
+ }), [open, setOpen, close, closeOnSelect]);
87
95
  return /* @__PURE__ */jsx(DropdownMenuContext.Provider, {
88
96
  value: ctx,
89
97
  children: /* @__PURE__ */jsx(Popover, {
90
98
  open,
91
99
  onOpenChange: setOpen,
92
100
  placement,
93
- offset: 4,
101
+ offset: OVERLAY_ANCHOR_GAP,
94
102
  stayInFrame: true,
95
103
  allowFlip: true,
96
104
  children: items ? /* @__PURE__ */jsxs(Fragment, {
@@ -102,6 +110,8 @@ function DropdownMenuRoot({
102
110
  children: items.map((entry, index) => "separator" in entry && entry.separator ? /* @__PURE__ */jsx(DropdownMenuSeparator, {}, `separator-${index}`) : "checked" in entry && entry.checked !== void 0 ? /* @__PURE__ */jsx(DropdownMenuCheckboxItem, {
103
111
  checked: entry.checked,
104
112
  onCheckedChange: entry.onCheckedChange,
113
+ onSelect: entry.onSelect,
114
+ closeOnSelect: entry.closeOnSelect,
105
115
  disabled: entry.disabled,
106
116
  disabledReason: entry.disabledReason,
107
117
  shortcut: entry.shortcut,
@@ -112,6 +122,7 @@ function DropdownMenuRoot({
112
122
  disabled: entry.disabled,
113
123
  disabledReason: entry.disabledReason,
114
124
  destructive: entry.destructive,
125
+ closeOnSelect: entry.closeOnSelect,
115
126
  onSelect: entry.onSelect,
116
127
  children: entry.label
117
128
  }, entry.key ?? index))
@@ -139,13 +150,18 @@ const DropdownMenuTrigger = forwardRef(function DropdownMenuTrigger2({
139
150
  const handleKeyDown = e => {
140
151
  onKeyDown?.(e);
141
152
  if (e.repeat) return;
142
- if (e.key === "Enter" || e.key === " " || e.key === "ArrowDown") {
153
+ if (e.key === "Enter" || e.key === " " || e.key === "ArrowDown" || e.key === "ArrowUp") {
143
154
  swallowNextKeyUp(e.key);
144
155
  if (e.defaultPrevented) return;
145
156
  e.preventDefault();
146
157
  if (e.key === "ArrowDown") {
158
+ ctx.pendingFocusRef.current = "first";
159
+ if (!ctx.open) ctx.setOpen(true);
160
+ } else if (e.key === "ArrowUp") {
161
+ ctx.pendingFocusRef.current = "last";
147
162
  if (!ctx.open) ctx.setOpen(true);
148
163
  } else {
164
+ ctx.pendingFocusRef.current = "first";
149
165
  ctx.setOpen(!ctx.open);
150
166
  }
151
167
  }
@@ -163,7 +179,7 @@ const DropdownMenuTrigger = forwardRef(function DropdownMenuTrigger2({
163
179
  const DropdownMenuContent = forwardRef(function DropdownMenuContent2({
164
180
  children,
165
181
  maxHeight,
166
- minWidth = 200,
182
+ minWidth,
167
183
  ...props
168
184
  }, forwardedRef) {
169
185
  const ctx = useDropdownMenuContext("Content");
@@ -171,11 +187,21 @@ const DropdownMenuContent = forwardRef(function DropdownMenuContent2({
171
187
  knobProps
172
188
  } = useResolvedKnobs();
173
189
  const innerRef = useRef(null);
190
+ const [triggerWidth, setTriggerWidth] = useState(void 0);
191
+ useLayoutEffect(() => {
192
+ if (!isWeb || !ctx.open) return;
193
+ const node = ctx.triggerRef.current;
194
+ if (node && typeof node.getBoundingClientRect === "function") {
195
+ setTriggerWidth(Math.ceil(node.getBoundingClientRect().width));
196
+ }
197
+ }, [ctx.open, ctx.triggerRef]);
198
+ const resolvedMinWidth = minWidth ?? triggerWidth;
174
199
  const composedRef = useComposedRefs(innerRef, forwardedRef);
175
200
  const typeahead = useRef({
176
201
  buffer: "",
177
202
  at: 0
178
203
  });
204
+ if (isWeb) ensureKeyboardModalityTracking();
179
205
  const getItems = useCallback(() => {
180
206
  const node = innerRef.current;
181
207
  if (!node) return [];
@@ -186,8 +212,13 @@ const DropdownMenuContent = forwardRef(function DropdownMenuContent2({
186
212
  }, []);
187
213
  const handleOpenAutoFocus = useCallback(event => {
188
214
  event.preventDefault();
189
- requestAnimationFrame(() => focusItem(getItems()[0]));
190
- }, [focusItem, getItems]);
215
+ const prefer = ctx.pendingFocusRef.current;
216
+ ctx.pendingFocusRef.current = "first";
217
+ requestAnimationFrame(() => {
218
+ const items = getItems();
219
+ focusItem(prefer === "last" ? items[items.length - 1] : items[0]);
220
+ });
221
+ }, [ctx, focusItem, getItems]);
191
222
  const handleCloseAutoFocus = useCallback(event => {
192
223
  event.preventDefault();
193
224
  const node = ctx.triggerRef.current;
@@ -258,7 +289,7 @@ const DropdownMenuContent = forwardRef(function DropdownMenuContent2({
258
289
  ...knobProps.elevatedSurface,
259
290
  padding: 0,
260
291
  overflow: "hidden",
261
- minWidth,
292
+ minWidth: resolvedMinWidth,
262
293
  transition: knobProps.transition,
263
294
  enterStyle: {
264
295
  opacity: 0,
@@ -296,7 +327,8 @@ const DropdownMenuItemBody = forwardRef(function DropdownMenuItemBody2({
296
327
  disabledReason,
297
328
  destructive = false,
298
329
  onSelect,
299
- closeOnSelect = true,
330
+ closeOnSelect,
331
+ closeOnSelectDefault = true,
300
332
  role = "menuitem",
301
333
  leading,
302
334
  ...props
@@ -306,6 +338,9 @@ const DropdownMenuItemBody = forwardRef(function DropdownMenuItemBody2({
306
338
  knobProps
307
339
  } = useResolvedKnobs();
308
340
  const theme = useTheme();
341
+ const [kbRing, setKbRing] = useState(false);
342
+ const [highlighted, setHighlighted] = useState(false);
343
+ const pointerIntentRef = useRef(false);
309
344
  warnBareDisabled({
310
345
  component: "DropdownMenu.Item",
311
346
  id: typeof children === "string" ? children : void 0,
@@ -314,12 +349,29 @@ const DropdownMenuItemBody = forwardRef(function DropdownMenuItemBody2({
314
349
  });
315
350
  const explainedDisable = disabled && Boolean(disabledReason?.trim());
316
351
  const iconColor = destructive ? theme.red11?.get() : theme.color12?.get();
352
+ const shouldCloseOnSelect = closeOnSelect ?? ctx.closeOnSelect ?? closeOnSelectDefault;
317
353
  const handleSelect = () => {
318
354
  if (disabled) return;
319
355
  onSelect?.();
320
- if (closeOnSelect) ctx.close();
356
+ if (shouldCloseOnSelect) ctx.close();
321
357
  };
322
358
  const textColor = destructive ? "$red11" : componentColors.text.primary;
359
+ const highlightFill = destructive && !disabled ? {
360
+ hoverStyle: {
361
+ backgroundColor: "$red3"
362
+ },
363
+ pressStyle: {
364
+ backgroundColor: "$red4"
365
+ }
366
+ } : void 0;
367
+ const focusFill = destructive && !disabled ? {
368
+ backgroundColor: "$red3"
369
+ } : {
370
+ backgroundColor: componentColors.interactive.hover
371
+ };
372
+ const ring = kbRing ? keyboardFocusRingProps : {
373
+ outlineWidth: 0
374
+ };
323
375
  return /* @__PURE__ */jsxs(ItemRow, {
324
376
  ref: forwardedRef,
325
377
  role,
@@ -328,30 +380,50 @@ const DropdownMenuItemBody = forwardRef(function DropdownMenuItemBody2({
328
380
  minHeight: knobProps.sizeToken,
329
381
  transition: knobProps.transition,
330
382
  onPress: handleSelect,
383
+ ...highlightFill,
384
+ ...(explainedDisable ? {
385
+ paddingVertical: "$1.5"
386
+ } : {}),
387
+ ...props,
331
388
  ...(isWeb ? {
332
389
  tabIndex: -1,
333
- [MENU_ITEM_ATTR]: ""
334
- // Enter/Space activation is handled by the menu-level native
335
- // keydown listener in Content (single source, no double-fire).
336
- } : {}),
337
- ...(destructive && !disabled ? {
338
- hoverStyle: {
339
- backgroundColor: "$red3"
390
+ [MENU_ITEM_ATTR]: "",
391
+ // Radix: pointer-move moves highlight so hover and keyboard
392
+ // never paint two rows at once. LC-71: ring only when the
393
+ // focus is keyboard-origin — pointer-move sets a local flag
394
+ // so wasKeyboardFocus() (still true until pointerdown) does
395
+ // not keep the ring after the mouse takes over.
396
+ onFocus: () => {
397
+ setHighlighted(true);
398
+ setKbRing(wasKeyboardFocus() && !pointerIntentRef.current);
399
+ pointerIntentRef.current = false;
340
400
  },
341
- pressStyle: {
342
- backgroundColor: "$red4"
401
+ onBlur: () => {
402
+ setHighlighted(false);
403
+ setKbRing(false);
343
404
  },
344
- focusStyle: {
345
- backgroundColor: "$red3"
405
+ onPointerMove: e => {
406
+ if (disabled) return;
407
+ if (e.pointerType && e.pointerType !== "mouse") return;
408
+ const node = e.currentTarget;
409
+ if (document.activeElement === node) return;
410
+ pointerIntentRef.current = true;
411
+ node.focus();
346
412
  },
347
- focusVisibleStyle: {
348
- backgroundColor: "$red3"
349
- }
350
- } : {}),
351
- ...(explainedDisable ? {
352
- paddingVertical: "$1.5"
413
+ "data-highlighted": highlighted ? "true" : void 0,
414
+ "data-mp-kb-ring": kbRing ? "true" : void 0
353
415
  } : {}),
354
- ...props,
416
+ ...(kbRing ? keyboardFocusRingProps : {
417
+ outlineWidth: 0
418
+ }),
419
+ focusStyle: {
420
+ ...focusFill,
421
+ ...ring
422
+ },
423
+ focusVisibleStyle: {
424
+ ...focusFill,
425
+ ...ring
426
+ },
355
427
  children: [leading, icon ? /* @__PURE__ */jsx(View, {
356
428
  flexShrink: 0,
357
429
  alignItems: "center",
@@ -404,15 +476,6 @@ const DropdownMenuItemBody = forwardRef(function DropdownMenuItemBody2({
404
476
  });
405
477
  });
406
478
  const DropdownMenuItem = forwardRef(function DropdownMenuItem2(props, ref) {
407
- if (props.destructive) {
408
- return /* @__PURE__ */jsx(Intent, {
409
- name: "error",
410
- children: /* @__PURE__ */jsx(DropdownMenuItemBody, {
411
- ref,
412
- ...props
413
- })
414
- });
415
- }
416
479
  return /* @__PURE__ */jsx(DropdownMenuItemBody, {
417
480
  ref,
418
481
  ...props
@@ -421,15 +484,18 @@ const DropdownMenuItem = forwardRef(function DropdownMenuItem2(props, ref) {
421
484
  const DropdownMenuCheckboxItem = forwardRef(function DropdownMenuCheckboxItem2({
422
485
  checked,
423
486
  onCheckedChange,
424
- closeOnSelect = false,
487
+ onSelect,
425
488
  ...props
426
489
  }, ref) {
427
490
  return /* @__PURE__ */jsx(DropdownMenuItemBody, {
428
491
  ref,
429
492
  role: "menuitemcheckbox",
430
493
  "aria-checked": checked,
431
- closeOnSelect,
432
- onSelect: () => onCheckedChange?.(!checked),
494
+ closeOnSelectDefault: false,
495
+ onSelect: () => {
496
+ onCheckedChange?.(!checked);
497
+ onSelect?.();
498
+ },
433
499
  leading: /* @__PURE__ */jsx(View, {
434
500
  width: 18,
435
501
  flexShrink: 0,