@multiplatform.one/components 6.7.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 +18 -18
  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
@@ -150,3 +150,22 @@ export const Empty = {
150
150
  </YStack>
151
151
  ),
152
152
  };
153
+
154
+ /**
155
+ * Carbon: a collapsed ancestor of the selected node keeps a muted fill so
156
+ * the selection is not lost when its parent is closed.
157
+ */
158
+ export const ContainsSelection = {
159
+ name: "Contains Selection",
160
+ render: () => (
161
+ <YStack height={280}>
162
+ <TreeView
163
+ nodes={nodes}
164
+ ariaLabel="Collapsed ancestor still shows selection"
165
+ selectedId="button"
166
+ defaultExpandedIds={["src"]}
167
+ height={260}
168
+ />
169
+ </YStack>
170
+ ),
171
+ };
@@ -4,7 +4,10 @@ import { FlashList, type FlashListRef } from "@shopify/flash-list";
4
4
  import {
5
5
  MIN_PRESS_TARGET,
6
6
  ensureKeyboardModalityTracking,
7
+ getGroupPosition,
8
+ keyboardFocusRingProps,
7
9
  pressTargetHitSlop,
10
+ stackRadiusProps,
8
11
  useReadableTextOn,
9
12
  useResolvedKnobs,
10
13
  wasKeyboardFocus,
@@ -30,7 +33,7 @@ import React, {
30
33
  useState,
31
34
  type ReactNode,
32
35
  } from "react";
33
- import { useTranslation } from "react-i18next";
36
+ import { useTranslation } from "../shared/i18n";
34
37
  import { Text, View, XStack, YStack, type YStackProps } from "tamagui";
35
38
  import { autoScrollVelocity } from "./kanbanDnd";
36
39
  import {
@@ -150,6 +153,7 @@ interface FlatNode<T> {
150
153
  hasChildren: boolean;
151
154
  isExpanded: boolean;
152
155
  index: number;
156
+ parentId: string | null;
153
157
  }
154
158
 
155
159
  /**
@@ -230,6 +234,21 @@ function collectBranchIds<T>(items: TreeNode<T>[], into: Set<string> = new Set()
230
234
  return into;
231
235
  }
232
236
 
237
+ /** Ancestor ids of `id` (root → parent), or null when the node is absent. */
238
+ function findNodePath<T>(items: TreeNode<T>[], id: string, trail: string[] = []): string[] | null {
239
+ for (const node of items) {
240
+ if (node.id === id) return trail;
241
+ if (node.children?.length) {
242
+ const found = findNodePath(node.children, id, [...trail, node.id]);
243
+ if (found) return found;
244
+ }
245
+ }
246
+ return null;
247
+ }
248
+
249
+ /** Typeahead window matching menu rows (DropdownMenu) and Finder/VS Code jump-to. */
250
+ const TYPEAHEAD_MS = 600;
251
+
233
252
  function defaultNodeIcon(hasChildren: boolean, isExpanded: boolean, iconSize: number): ReactNode {
234
253
  if (hasChildren) {
235
254
  return isExpanded ? (
@@ -242,20 +261,22 @@ function defaultNodeIcon(hasChildren: boolean, isExpanded: boolean, iconSize: nu
242
261
  }
243
262
 
244
263
  /**
245
- * Generic virtualized tree view (EUI-inspired flat directory chrome).
264
+ * Generic virtualized tree view.
246
265
  *
247
- * Flattens the tree for virtualization using `@shopify/flash-list`
248
- * and uses `@tanstack/react-hotkeys` for keyboard navigation.
249
- * Rows are compact XStacks: optional expansion caret, node icon, label.
266
+ * Visual language is the VS Code / Primer / Carbon / Finder consensus:
267
+ * flush rows (SP-EDGE), twistie + icon + label, indent guides at each
268
+ * depth, selected = accent fill, keyboard focus = one inset ring on the
269
+ * active row (LC-71), stacked-group radius on the first/last row (LC-72).
250
270
  *
251
- * Motion (Axiom 4): expanding/collapsing a branch FLIPs the surviving rows
252
- * from their previous offsets and fades the revealed children in, while the
253
- * caret rotates all tweened with `knobProps.transition`, transform/opacity
254
- * only (native-safe). Initial mount renders settled (no wiggle) and
255
- * `animation: none` / reduced motion renders every toggle instantly.
271
+ * Keyboard follows the WAI-ARIA tree pattern those systems share: one tab
272
+ * stop, arrows move, Right expands then enters, Left collapses then climbs
273
+ * to the parent, Home/End, typeahead. Pressing a branch row toggles it
274
+ * (EUI/VS Code), so the caret is an indicator, not a sub-44px control.
256
275
  *
257
- * Pressing a branch row toggles it (EUI/VS Code semantics), so the expand
258
- * target is the full row — the caret itself is a non-interactive indicator.
276
+ * Motion (Axiom 4): expanding/collapsing a branch FLIPs surviving rows
277
+ * and fades revealed children; the caret rotates. Tweened with
278
+ * `knobProps.transition`, transform/opacity only. `animation: none` /
279
+ * reduced motion jumps.
259
280
  *
260
281
  * @typeParam T - Additional data type stored on the nodes
261
282
  */
@@ -280,30 +301,31 @@ export function TreeView<T = unknown>({
280
301
  }: TreeViewProps<T>) {
281
302
  const { t } = useTranslation();
282
303
  const emptyMessage = emptyMessageProp ?? t("No items found");
283
- const { knobProps, control } = useResolvedKnobs();
304
+ const compressed = display === "compressed";
305
+ // Compressed display forces compact density stepping; default display
306
+ // leaves the density knob in charge.
307
+ const { knobProps, control } = useResolvedKnobs(compressed ? { compact: true } : undefined);
284
308
  // UX-P02 / Axiom 15: the selected row paints `$accentBackground`; its label
285
309
  // must sit on the accent fill with a luminance-computed foreground (the
286
310
  // scheme `$color` ink measured 2.59:1 on the accent).
287
311
  const onAccentLabel = useReadableTextOn("$accentBackground");
288
312
  const transition = knobProps.transition;
289
- const compressed = display === "compressed";
290
- const sz = knobProps.sizeToken;
291
-
292
- const estimateSize =
293
- estimateSizeProp ??
294
- (compressed ? (sz === "$5" ? 32 : 28) : sz === "$3" ? 30 : sz === "$5" ? 40 : 36);
295
- const height = heightProp ?? (sz === "$3" ? 320 : sz === "$5" ? 480 : 400);
296
- const expandIconSize = compressed ? 14 : sz === "$3" ? 16 : sz === "$5" ? 20 : 18;
297
- const nodeIconSize = compressed ? 14 : 18;
298
- const caretSize = compressed ? 12 : 14;
313
+ const nestedPx = knobProps.nestedControl.px;
314
+
315
+ // Row height rides nestedControl (Carbon 32/24, VS Code ~22, house
316
+ // nested px is 32 at medium / 28 compact) — not a private pixel table.
317
+ const estimateSize = estimateSizeProp ?? nestedPx;
318
+ const height = heightProp ?? (nestedPx <= 28 ? 320 : nestedPx >= 36 ? 480 : 400);
319
+ const expandIconSize = nestedPx <= 28 ? 14 : nestedPx >= 36 ? 18 : 16;
320
+ const nodeIconSize = nestedPx <= 28 ? 14 : 18;
321
+ const caretSize = nestedPx <= 28 ? 12 : 14;
299
322
  // Collapsed caret encodes the expansion direction (inline-end), so it
300
323
  // mirrors in RTL via glyph swap (useDirection, Axiom 15); the rotation
301
324
  // sign flips with it so the expanded state still points down.
302
325
  const isRTL = useDirection() === "rtl";
303
326
  const CollapsedCaretIcon = isRTL ? CaretLeftIcon : CaretRightIcon;
304
327
  const expandedCaretRotation = isRTL ? "-90deg" : "90deg";
305
- const indentStep = compressed ? 12 : 16;
306
- const labelFontSize = compressed ? 12 : 14;
328
+ const indentStep = knobProps.space === "small" ? 12 : knobProps.space === "large" ? 20 : 16;
307
329
  // SP-EDGE row density (spec TreeView rows): the space knob steps the row
308
330
  // padding — never an outer tree inset (LC-02). House space-map pattern
309
331
  // (getTableCellPadding precedent); medium keeps the previous 6/8
@@ -321,14 +343,22 @@ export function TreeView<T = unknown>({
321
343
  const containerRef = useRef<HTMLDivElement>(null);
322
344
  const flashListRef = useRef<FlashListRef<FlatNode<T>>>(null);
323
345
  const [focusedIndex, setFocusedIndex] = useState(-1);
346
+ // LC-71: ring is a React flag, not a render-time wasKeyboardFocus() read —
347
+ // Tab-away/Tab-back with the same activedescendant must still re-paint.
348
+ const [keyboardRing, setKeyboardRing] = useState(false);
349
+ const typeaheadRef = useRef({ buffer: "", at: 0 });
324
350
  // Axiom 12: the tree is one tab stop (aria-activedescendant pattern) — but
325
351
  // Tab-in with no active row painted NOTHING (ring suppressed on the
326
352
  // container, no row highlighted until an arrow was pressed). On
327
353
  // keyboard-origin focus, light up the first row so position is visible.
328
354
  if (typeof document !== "undefined") ensureKeyboardModalityTracking();
329
355
  const handleContainerFocus = useCallback(() => {
330
- if (!wasKeyboardFocus()) return;
331
- setFocusedIndex((prev) => (prev < 0 ? 0 : prev));
356
+ const kb = wasKeyboardFocus();
357
+ setKeyboardRing(kb);
358
+ if (kb) setFocusedIndex((prev) => (prev < 0 ? 0 : prev));
359
+ }, []);
360
+ const handleContainerBlur = useCallback(() => {
361
+ setKeyboardRing(false);
332
362
  }, []);
333
363
  const [expandedIds, setExpandedIds] = useState<Set<string>>(() => {
334
364
  if (defaultExpandedIds) return new Set(defaultExpandedIds);
@@ -383,18 +413,25 @@ export function TreeView<T = unknown>({
383
413
  const flatNodes = useMemo(() => {
384
414
  const result: FlatNode<T>[] = [];
385
415
 
386
- const walk = (items: TreeNode<T>[], depth: number) => {
416
+ const walk = (items: TreeNode<T>[], depth: number, parentId: string | null) => {
387
417
  for (const node of items) {
388
418
  const hasChildren = (node.children?.length ?? 0) > 0;
389
419
  const isExpanded = expandedIds.has(node.id);
390
- result.push({ node, depth, hasChildren, isExpanded, index: result.length });
420
+ result.push({
421
+ node,
422
+ depth,
423
+ hasChildren,
424
+ isExpanded,
425
+ index: result.length,
426
+ parentId,
427
+ });
391
428
  if (isExpanded && node.children) {
392
- walk(node.children, depth + 1);
429
+ walk(node.children, depth + 1, node.id);
393
430
  }
394
431
  }
395
432
  };
396
433
 
397
- walk(nodes, 0);
434
+ walk(nodes, 0, null);
398
435
  return result;
399
436
  }, [nodes, expandedIds]);
400
437
 
@@ -407,6 +444,24 @@ export function TreeView<T = unknown>({
407
444
  [flatNodes.length],
408
445
  );
409
446
 
447
+ const focusRow = useCallback(
448
+ (index: number) => {
449
+ setKeyboardRing(true);
450
+ setFocusedIndex(index);
451
+ scrollToIndex(index);
452
+ },
453
+ [scrollToIndex],
454
+ );
455
+
456
+ // Carbon: a collapsed ancestor of the selected node inherits a muted
457
+ // "contains selection" fill so the selection is not lost off-screen.
458
+ const collapsedSelectedAncestors = useMemo(() => {
459
+ if (!selectedId) return new Set<string>();
460
+ const path = findNodePath(nodes, selectedId);
461
+ if (!path) return new Set<string>();
462
+ return new Set(path.filter((id) => !expandedIds.has(id)));
463
+ }, [nodes, selectedId, expandedIds]);
464
+
410
465
  // ── Drag-reorder (LC-42 DRAG-ANATOMY / LC-43 DND-A11Y) ─────────────────
411
466
  // Opt-in via `onNodeMove`. The ghost is an overlay clone outside the
412
467
  // FlashList (virtualization-safe); hit-testing is pure math over the
@@ -900,8 +955,9 @@ export function TreeView<T = unknown>({
900
955
  hotkeyOverrides?.next ?? "ArrowDown",
901
956
  () => {
902
957
  if (moveKeyboardDrag("down")) return;
958
+ setKeyboardRing(true);
903
959
  setFocusedIndex((prev) => {
904
- const next = prev < 0 ? 0 : Math.min(prev + 1, flatNodes.length - 1);
960
+ const next = prev < 0 ? 0 : Math.min(prev + 1, Math.max(0, flatNodes.length - 1));
905
961
  scrollToIndex(next);
906
962
  return next;
907
963
  });
@@ -913,9 +969,10 @@ export function TreeView<T = unknown>({
913
969
  hotkeyOverrides?.prev ?? "ArrowUp",
914
970
  () => {
915
971
  if (moveKeyboardDrag("up")) return;
972
+ setKeyboardRing(true);
916
973
  setFocusedIndex((prev) => {
917
974
  const next = prev < 0 ? flatNodes.length - 1 : Math.max(prev - 1, 0);
918
- scrollToIndex(next);
975
+ if (next >= 0) scrollToIndex(next);
919
976
  return next;
920
977
  });
921
978
  },
@@ -927,10 +984,17 @@ export function TreeView<T = unknown>({
927
984
  () => {
928
985
  // While lifted: nest into the previous sibling (kanban grammar).
929
986
  if (moveKeyboardDrag("right")) return;
987
+ // APG / Primer / Carbon / VS Code: collapsed → expand; expanded → first child.
930
988
  if (focusedIndex >= 0 && focusedIndex < flatNodes.length) {
931
- const { node, hasChildren, isExpanded } = flatNodes[focusedIndex];
932
- if (hasChildren && !isExpanded) {
933
- toggleNode(node);
989
+ const flat = flatNodes[focusedIndex];
990
+ if (flat.hasChildren && !flat.isExpanded) {
991
+ setKeyboardRing(true);
992
+ toggleNode(flat.node);
993
+ } else if (flat.hasChildren && flat.isExpanded) {
994
+ const child = focusedIndex + 1;
995
+ if (child < flatNodes.length && flatNodes[child].parentId === flat.node.id) {
996
+ focusRow(child);
997
+ }
934
998
  }
935
999
  }
936
1000
  },
@@ -942,10 +1006,15 @@ export function TreeView<T = unknown>({
942
1006
  () => {
943
1007
  // While lifted: un-nest to after the current parent.
944
1008
  if (moveKeyboardDrag("left")) return;
1009
+ // APG / Primer / Carbon / Finder: expanded → collapse; else climb to parent.
945
1010
  if (focusedIndex >= 0 && focusedIndex < flatNodes.length) {
946
- const { node, hasChildren, isExpanded } = flatNodes[focusedIndex];
947
- if (hasChildren && isExpanded) {
948
- toggleNode(node);
1011
+ const flat = flatNodes[focusedIndex];
1012
+ if (flat.hasChildren && flat.isExpanded) {
1013
+ setKeyboardRing(true);
1014
+ toggleNode(flat.node);
1015
+ } else if (flat.parentId) {
1016
+ const parentIndex = flatNodes.findIndex((f) => f.node.id === flat.parentId);
1017
+ if (parentIndex >= 0) focusRow(parentIndex);
949
1018
  }
950
1019
  }
951
1020
  },
@@ -1000,10 +1069,7 @@ export function TreeView<T = unknown>({
1000
1069
  useHotkey(
1001
1070
  hotkeyOverrides?.first ?? "Home",
1002
1071
  () => {
1003
- if (flatNodes.length > 0) {
1004
- setFocusedIndex(0);
1005
- scrollToIndex(0);
1006
- }
1072
+ if (flatNodes.length > 0) focusRow(0);
1007
1073
  },
1008
1074
  hotkeyOpts,
1009
1075
  );
@@ -1011,15 +1077,38 @@ export function TreeView<T = unknown>({
1011
1077
  useHotkey(
1012
1078
  hotkeyOverrides?.last ?? "End",
1013
1079
  () => {
1014
- if (flatNodes.length > 0) {
1015
- const last = flatNodes.length - 1;
1016
- setFocusedIndex(last);
1017
- scrollToIndex(last);
1018
- }
1080
+ if (flatNodes.length > 0) focusRow(flatNodes.length - 1);
1019
1081
  },
1020
1082
  hotkeyOpts,
1021
1083
  );
1022
1084
 
1085
+ const handleTreeKeyDown = useCallback(
1086
+ (e: any) => {
1087
+ const key = e?.key as string | undefined;
1088
+ if (!key || key.length !== 1) return;
1089
+ if (e.ctrlKey || e.metaKey || e.altKey) return;
1090
+ if (key === " ") return;
1091
+ if (dragUiRef.current) return;
1092
+ if (flatNodes.length === 0) return;
1093
+ e.preventDefault?.();
1094
+ const now = Date.now();
1095
+ const state = typeaheadRef.current;
1096
+ state.buffer = now - state.at > TYPEAHEAD_MS ? key : state.buffer + key;
1097
+ state.at = now;
1098
+ const query = state.buffer.toLowerCase();
1099
+ const start = focusedIndex >= 0 ? focusedIndex : -1;
1100
+ const n = flatNodes.length;
1101
+ for (let i = 1; i <= n; i++) {
1102
+ const idx = (start + i) % n;
1103
+ if (flatNodes[idx].node.label.toLowerCase().startsWith(query)) {
1104
+ focusRow(idx);
1105
+ return;
1106
+ }
1107
+ }
1108
+ },
1109
+ [flatNodes, focusedIndex, focusRow],
1110
+ );
1111
+
1023
1112
  if (nodes.length === 0) {
1024
1113
  return <EmptyState compact title={emptyMessage} {...stackProps} />;
1025
1114
  }
@@ -1053,7 +1142,10 @@ export function TreeView<T = unknown>({
1053
1142
  }
1054
1143
  tabIndex={0}
1055
1144
  outlineWidth={0}
1145
+ outlineStyle={"none" as any}
1056
1146
  onFocus={handleContainerFocus}
1147
+ onBlur={handleContainerBlur}
1148
+ onKeyDown={handleTreeKeyDown}
1057
1149
  position="relative"
1058
1150
  style={{
1059
1151
  height,
@@ -1064,7 +1156,16 @@ export function TreeView<T = unknown>({
1064
1156
  data={flatNodes}
1065
1157
  drawDistance={overscan * estimateSize}
1066
1158
  keyExtractor={(item) => item.node.id}
1067
- extraData={{ focused: effectiveFocused, selectedId, expandedIds, motion, dragUi, settle }}
1159
+ extraData={{
1160
+ focused: effectiveFocused,
1161
+ selectedId,
1162
+ expandedIds,
1163
+ motion,
1164
+ dragUi,
1165
+ settle,
1166
+ keyboardRing,
1167
+ collapsedSelectedAncestors,
1168
+ }}
1068
1169
  {...(canReorder && {
1069
1170
  onScroll: (e: any) => {
1070
1171
  const y = e?.nativeEvent?.contentOffset?.y;
@@ -1086,11 +1187,15 @@ export function TreeView<T = unknown>({
1086
1187
  ? node.icon
1087
1188
  : defaultNodeIcon(hasChildren, isExpanded, nodeIconSize);
1088
1189
 
1190
+ const containsSelected = collapsedSelectedAncestors.has(node.id);
1191
+ const groupPosition = getGroupPosition(index, flatNodes.length);
1192
+
1089
1193
  const labelContent = renderNode ? (
1090
1194
  renderNode(node, depth)
1091
1195
  ) : (
1092
1196
  <Text
1093
- fontSize={labelFontSize}
1197
+ {...knobProps.body}
1198
+ {...knobProps.label}
1094
1199
  color={isSelected && onAccentLabel ? onAccentLabel : "$color"}
1095
1200
  numberOfLines={1}
1096
1201
  flexShrink={1}
@@ -1130,10 +1235,14 @@ export function TreeView<T = unknown>({
1130
1235
  id={`${treeId}-node-${index}`}
1131
1236
  {...{ "data-treeview-row": node.id }}
1132
1237
  {...(isDropParent && { "data-treeview-drop-parent": "true" })}
1238
+ {...(isFocused && { "data-focused": true })}
1239
+ {...{ "data-group-position": groupPosition }}
1133
1240
  role="treeitem"
1134
1241
  aria-expanded={hasChildren ? isExpanded : undefined}
1135
1242
  aria-selected={isSelected}
1136
1243
  aria-level={depth + 1}
1244
+ aria-setsize={flatNodes.length}
1245
+ aria-posinset={index + 1}
1137
1246
  alignItems="center"
1138
1247
  minHeight={estimateSize}
1139
1248
  paddingVertical={rowPadY}
@@ -1141,9 +1250,11 @@ export function TreeView<T = unknown>({
1141
1250
  paddingInlineStart={rowPadX + depth * indentStep}
1142
1251
  gap="$2"
1143
1252
  cursor="pointer"
1253
+ position="relative"
1144
1254
  y={rowY}
1145
1255
  opacity={rowOpacity}
1146
1256
  transition={rowTransition as any}
1257
+ {...stackRadiusProps(groupPosition, knobProps.borderRadius.borderRadius)}
1147
1258
  onLayout={(e: any) => {
1148
1259
  const h = e?.nativeEvent?.layout?.height;
1149
1260
  if (typeof h === "number" && h > 0) rowHeights.current.set(node.id, h);
@@ -1155,12 +1266,13 @@ export function TreeView<T = unknown>({
1155
1266
  ? componentColors.interactive.background
1156
1267
  : isSelected
1157
1268
  ? "$accentBackground"
1158
- : isFocused
1269
+ : containsSelected
1159
1270
  ? componentColors.interactive.background
1160
1271
  : "transparent"
1161
1272
  }
1162
1273
  // Row hover/press come from the knob state recipes (A-STATE);
1163
- // selection tint stays sticky underneath them.
1274
+ // selection tint stays sticky underneath them. Focus is the
1275
+ // ring channel (LC-71) — never a second fill.
1164
1276
  hoverStyle={{
1165
1277
  ...(control.hoverKnobProps as any),
1166
1278
  ...(isSelected && { backgroundColor: "$accentBackground" }),
@@ -1169,15 +1281,13 @@ export function TreeView<T = unknown>({
1169
1281
  ...(control.pressKnobProps as any),
1170
1282
  ...(isSelected && { backgroundColor: "$accentBackground" }),
1171
1283
  }}
1172
- // Focus ring (Axiom 12): ≥2px, non-removable also visible on
1173
- // selected rows; inset so the virtualized viewport can't clip it.
1174
- outlineWidth={isFocused ? 2 : 0}
1175
- outlineStyle="solid"
1176
- outlineColor="$outlineColor"
1177
- outlineOffset={-2}
1284
+ // LC-71: keyboard ring on the focused row only (activedescendant).
1285
+ // Selected is fill above; selected + keyboard-focused = both.
1286
+ {...(isFocused && keyboardRing ? keyboardFocusRingProps : { outlineWidth: 0 })}
1178
1287
  onPress={() => {
1179
1288
  // A completed drag's terminating click is not a selection.
1180
1289
  if (suppressClickRef.current) return;
1290
+ setKeyboardRing(false);
1181
1291
  setFocusedIndex(index);
1182
1292
  // Branch rows toggle on press (EUI/VS Code semantics): the
1183
1293
  // whole row is the expand target, not a sub-44px caret.
@@ -1185,6 +1295,25 @@ export function TreeView<T = unknown>({
1185
1295
  onNodeSelect?.(node);
1186
1296
  }}
1187
1297
  >
1298
+ {depth > 0
1299
+ ? Array.from({ length: depth }, (_, guide) => {
1300
+ const inset = rowPadX + guide * indentStep + expandIconSize / 2;
1301
+ return (
1302
+ <View
1303
+ key={`guide-${guide}`}
1304
+ position="absolute"
1305
+ top={0}
1306
+ bottom={0}
1307
+ width={1}
1308
+ pointerEvents="none"
1309
+ backgroundColor={isSelected ? "$color1" : "$borderColor"}
1310
+ opacity={isSelected ? 0.35 : 0.5}
1311
+ {...(isRTL ? { right: inset } : { left: inset })}
1312
+ />
1313
+ );
1314
+ })
1315
+ : null}
1316
+
1188
1317
  {showExpansionArrows ? (
1189
1318
  hasChildren ? (
1190
1319
  <View
@@ -1315,7 +1444,13 @@ export function TreeView<T = unknown>({
1315
1444
  >
1316
1445
  {overlayNode.icon ?? defaultNodeIcon(overlayHasChildren, false, nodeIconSize)}
1317
1446
  </View>
1318
- <Text fontSize={labelFontSize} color="$color" numberOfLines={1} flexShrink={1}>
1447
+ <Text
1448
+ {...knobProps.body}
1449
+ {...knobProps.label}
1450
+ color="$color"
1451
+ numberOfLines={1}
1452
+ flexShrink={1}
1453
+ >
1319
1454
  {overlayNode.label}
1320
1455
  </Text>
1321
1456
  </XStack>
@@ -1,12 +1,20 @@
1
1
  import type { ReactNode } from "react";
2
- import type { YStackProps as StackProps, TamaguiElement } from "tamagui";
2
+ import type { SizeTokens, YStackProps as StackProps, TamaguiElement } from "tamagui";
3
3
  export type AccordionVariant = "plain" | "card";
4
4
  export type AccordionType = "single" | "multiple";
5
- interface AccordionCommonProps extends Omit<StackProps, "onChange"> {
5
+ interface AccordionCommonProps extends Omit<StackProps, "onChange" | "size"> {
6
6
  /** Visual variant: "plain" = edge-to-edge divider rows, "card" = each item on its own surface */
7
7
  variant?: AccordionVariant;
8
8
  /** Disable every item */
9
9
  disabled?: boolean;
10
+ /**
11
+ * Compact density. Steps space (and the paired size step the density
12
+ * recipe owns) down one level. Distinct from `size` — density is tightness,
13
+ * size is the control scale. Nested accordions always compact.
14
+ */
15
+ compact?: boolean;
16
+ /** Size-knob override (control height + label type). Not a density switch. */
17
+ size?: SizeTokens;
10
18
  children?: ReactNode;
11
19
  }
12
20
  export interface AccordionSingleModeProps extends AccordionCommonProps {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Accordion/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,WAAW,IAAI,UAAU,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAQzE,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,MAAM,CAAC;AAChD,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,UAAU,CAAC;AAElD,UAAU,oBAAqB,SAAQ,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC;IACjE,iGAAiG;IACjG,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,yBAAyB;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,WAAW,wBAAyB,SAAQ,oBAAoB;IACpE,6CAA6C;IAC7C,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0DAA0D;IAC1D,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,+DAA+D;IAC/D,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,0BAA2B,SAAQ,oBAAoB;IACtE,uCAAuC;IACvC,IAAI,EAAE,UAAU,CAAC;IACjB,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,4CAA4C;IAC5C,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,8CAA8C;IAC9C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CAC3C;AAED,MAAM,MAAM,cAAc,GAAG,wBAAwB,GAAG,0BAA0B,CAAC;AAenF,MAAM,WAAW,kBAAmB,SAAQ,UAAU;IACpD,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,WAAW,qBAAsB,SAAQ,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC;IACzE,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,qCAAqC;IACrC,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,oCAAoC;IACpC,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,qBAAsB,SAAQ,UAAU;IACvD,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AA2UD,eAAO,MAAM,SAAS;;;;CAIpB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Accordion/index.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAavC,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,IAAI,UAAU,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAkBrF,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,MAAM,CAAC;AAChD,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,UAAU,CAAC;AAElD,UAAU,oBAAqB,SAAQ,IAAI,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAAC;IAC1E,iGAAiG;IACjG,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,yBAAyB;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8EAA8E;IAC9E,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,WAAW,wBAAyB,SAAQ,oBAAoB;IACpE,6CAA6C;IAC7C,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0DAA0D;IAC1D,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,+DAA+D;IAC/D,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,0BAA2B,SAAQ,oBAAoB;IACtE,uCAAuC;IACvC,IAAI,EAAE,UAAU,CAAC;IACjB,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,4CAA4C;IAC5C,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,8CAA8C;IAC9C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CAC3C;AAED,MAAM,MAAM,cAAc,GAAG,wBAAwB,GAAG,0BAA0B,CAAC;AAenF,MAAM,WAAW,kBAAmB,SAAQ,UAAU;IACpD,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,WAAW,qBAAsB,SAAQ,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC;IACzE,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,qCAAqC;IACrC,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,oCAAoC;IACpC,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,qBAAsB,SAAQ,UAAU;IACvD,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AA6fD,eAAO,MAAM,SAAS;;;;CAIpB,CAAC"}
@@ -12,10 +12,16 @@ export interface AlertProps extends Omit<GetProps<typeof AlertFrame>, "role" | "
12
12
  icon?: ReactNode | null;
13
13
  /** Custom trailing action slot (any node; Buttons inherit the intent and render solid). */
14
14
  action?: ReactNode;
15
- /** Convenience action button label (renders a compact intent Button). */
15
+ /** Convenience action button label (nested-scale ghost control, 44px press floor). */
16
16
  actionLabel?: string;
17
17
  /** Press handler for the convenience action button. */
18
18
  onAction?: () => void;
19
+ /** Custom secondary action slot (Primer/Polaris: at most two actions). */
20
+ secondaryAction?: ReactNode;
21
+ /** Convenience secondary action label. */
22
+ secondaryActionLabel?: string;
23
+ /** Press handler for the convenience secondary action. */
24
+ onSecondaryAction?: () => void;
19
25
  /** Show a dismiss (X) button. */
20
26
  dismissible?: boolean;
21
27
  /** Called when the dismiss button is pressed. */
@@ -24,7 +30,7 @@ export interface AlertProps extends Omit<GetProps<typeof AlertFrame>, "role" | "
24
30
  visible?: boolean;
25
31
  /** Uncontrolled initial visibility (default true). */
26
32
  defaultVisible?: boolean;
27
- /** Tighter padding/type for dense layouts. */
33
+ /** Tighter padding/type for dense layouts (density compact + nested-scale). */
28
34
  compact?: boolean;
29
35
  }
30
36
  declare const AlertFrame: import("tamagui").TamaguiComponent<import("@tamagui/web").TamaDefer, import("tamagui").TamaguiElement, import("@tamagui/core").RNTamaguiViewNonStyleProps, import("@tamagui/web").StackStyleBase, {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Alert/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAYjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAKxC,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAEnE,MAAM,WAAW,UAAW,SAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,UAAU,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IACxF,kFAAkF;IAClF,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,uBAAuB;IACvB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,sDAAsD;IACtD,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IACxB,2FAA2F;IAC3F,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,iCAAiC;IACjC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,6BAA6B;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sDAAsD;IACtD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAsBD,QAAA,MAAM,UAAU;;;6CAQd,CAAC;AA8LH;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,2CAOtC;AAED,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,UAAU,CAAC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Alert/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAaxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAKxC,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAEnE,MAAM,WAAW,UAAW,SAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,UAAU,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IACxF,kFAAkF;IAClF,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,uBAAuB;IACvB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,sDAAsD;IACtD,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IACxB,2FAA2F;IAC3F,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,sFAAsF;IACtF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,0EAA0E;IAC1E,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B,0CAA0C;IAC1C,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,0DAA0D;IAC1D,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B,iCAAiC;IACjC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,6BAA6B;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sDAAsD;IACtD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAsBD,QAAA,MAAM,UAAU;;;6CAQd,CAAC;AA6WH;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,2CAOtC;AAED,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,UAAU,CAAC,CAAC"}
@@ -0,0 +1,48 @@
1
+ import type { ReactNode } from "react";
2
+ import type { TamaguiElement, TransitionProp, YStackProps as StackProps } from "tamagui";
3
+ /**
4
+ * AnimateHeight — the house auto-height primitive.
5
+ *
6
+ * CSS cannot transition to `height: auto` — intrinsic (content-driven) height
7
+ * changes snap no matter what `transition` is set, because height never
8
+ * appears as an interpolable value. This container measures its content
9
+ * (ResizeObserver on web, onLayout on native) and drives a NUMERIC `height`
10
+ * through the house `transition` token. The web css driver tweens it; the RN
11
+ * driver applies layout props directly (Axiom 4 native constraint), so native
12
+ * lands correct heights without a decorative tween — no worse than before,
13
+ * while mount/unmount sequencing still works on both platforms.
14
+ *
15
+ * Two modes:
16
+ * - follower (no `open` prop): always mounted; height tracks the content's
17
+ * intrinsic height, so content that grows or shrinks while visible tweens
18
+ * instead of snapping.
19
+ * - collapsible (`open: boolean`): `false` tweens to 0 and unmounts children
20
+ * once the collapse settles (immediately when nothing can tween, e.g.
21
+ * reduced motion or no measurement yet); `true` remounts children and
22
+ * tweens 0 → measured height, then keeps following content changes.
23
+ *
24
+ * Reduced motion is respected CONDITIONALLY: the transition resolves through
25
+ * the knob system (`useResolvedKnobs`), which is `undefined` under OS
26
+ * `prefers-reduced-motion` or `animation="none"` — heights then apply
27
+ * instantly, with no decorative tween, but state changes still land.
28
+ *
29
+ * Padding belongs INSIDE children (or on a wrapper around this component):
30
+ * the measured box is the children's wrapper, so padding on AnimateHeight
31
+ * itself would be excluded from the animated height.
32
+ */
33
+ export interface AnimateHeightProps extends Omit<StackProps, "height" | "children"> {
34
+ /**
35
+ * Collapsible mode. Omit entirely for follower mode (height always tracks
36
+ * content). `false` collapses to 0 and unmounts children at rest.
37
+ */
38
+ open?: boolean;
39
+ children?: ReactNode;
40
+ }
41
+ /**
42
+ * Settle time before finalizing (unmounting / releasing a clamp) — token
43
+ * settle + buffer. Exported for siblings that sequence work after a height
44
+ * tween (e.g. CodeBlock's reveal releases its maxHeight clamp on settle).
45
+ */
46
+ export declare function settleMs(transition: TransitionProp | undefined): number;
47
+ export declare const AnimateHeight: import("react").ForwardRefExoticComponent<AnimateHeightProps & import("react").RefAttributes<TamaguiElement>>;
48
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/AnimateHeight/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,WAAW,IAAI,UAAU,EAAE,MAAM,SAAS,CAAC;AAGzF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,UAAU,EAAE,QAAQ,GAAG,UAAU,CAAC;IACjF;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAqBD;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,UAAU,EAAE,cAAc,GAAG,SAAS,GAAG,MAAM,CAMvE;AAED,eAAO,MAAM,aAAa,+GA4JzB,CAAC"}
@@ -3,4 +3,30 @@
3
3
  * "Ada Lovelace" → "AL", "john.doe@x" → "JD", "Ada" → "AD".
4
4
  */
5
5
  export declare function getInitials(name: string): string;
6
+ /**
7
+ * Polaris-style deterministic initials fill. Tokens only — the same seed
8
+ * always lands on the same ramp pair so two "AB" avatars match.
9
+ */
10
+ export declare const FALLBACK_TONES: readonly [{
11
+ readonly bg: "$blue4";
12
+ readonly fg: "$blue12";
13
+ }, {
14
+ readonly bg: "$green4";
15
+ readonly fg: "$green12";
16
+ }, {
17
+ readonly bg: "$orange4";
18
+ readonly fg: "$orange12";
19
+ }, {
20
+ readonly bg: "$purple4";
21
+ readonly fg: "$purple12";
22
+ }, {
23
+ readonly bg: "$yellow4";
24
+ readonly fg: "$yellow12";
25
+ }, {
26
+ readonly bg: "$red4";
27
+ readonly fg: "$red12";
28
+ }];
29
+ export type FallbackTone = (typeof FALLBACK_TONES)[number];
30
+ export declare function fallbackToneIndex(seed: string): number;
31
+ export declare function fallbackTone(seed: string | undefined): FallbackTone | undefined;
6
32
  //# sourceMappingURL=getInitials.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getInitials.d.ts","sourceRoot":"","sources":["../../src/Avatar/getInitials.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAUhD"}
1
+ {"version":3,"file":"getInitials.d.ts","sourceRoot":"","sources":["../../src/Avatar/getInitials.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAUhD;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;EAOjB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMtD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY,GAAG,SAAS,CAI/E"}