termcast 1.3.21 → 1.3.25

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 (429) hide show
  1. package/dist/ai.d.ts +104 -0
  2. package/dist/ai.d.ts.map +1 -0
  3. package/dist/ai.js +135 -0
  4. package/dist/ai.js.map +1 -0
  5. package/dist/apis/browser-extension.d.ts +18 -0
  6. package/dist/apis/browser-extension.d.ts.map +1 -0
  7. package/dist/apis/browser-extension.js +14 -0
  8. package/dist/apis/browser-extension.js.map +1 -0
  9. package/dist/apis/localstorage.d.ts.map +1 -1
  10. package/dist/apis/localstorage.js +4 -7
  11. package/dist/apis/localstorage.js.map +1 -1
  12. package/dist/apis/oauth.d.ts.map +1 -1
  13. package/dist/apis/oauth.js +5 -1
  14. package/dist/apis/oauth.js.map +1 -1
  15. package/dist/apis/preferences.d.ts.map +1 -1
  16. package/dist/apis/preferences.js +38 -19
  17. package/dist/apis/preferences.js.map +1 -1
  18. package/dist/apis/toast.d.ts +5 -0
  19. package/dist/apis/toast.d.ts.map +1 -1
  20. package/dist/apis/toast.js +7 -43
  21. package/dist/apis/toast.js.map +1 -1
  22. package/dist/build.d.ts.map +1 -1
  23. package/dist/build.js +3 -1
  24. package/dist/build.js.map +1 -1
  25. package/dist/cache.d.ts +32 -0
  26. package/dist/cache.d.ts.map +1 -0
  27. package/dist/cache.js +205 -0
  28. package/dist/cache.js.map +1 -0
  29. package/dist/cli.d.ts.map +1 -1
  30. package/dist/cli.js +87 -41
  31. package/dist/cli.js.map +1 -1
  32. package/dist/clipboard.d.ts +36 -0
  33. package/dist/clipboard.d.ts.map +1 -0
  34. package/dist/clipboard.js +154 -0
  35. package/dist/clipboard.js.map +1 -0
  36. package/dist/compile.d.ts +2 -1
  37. package/dist/compile.d.ts.map +1 -1
  38. package/dist/compile.js +31 -12
  39. package/dist/compile.js.map +1 -1
  40. package/dist/components/actions.d.ts.map +1 -1
  41. package/dist/components/actions.js +56 -30
  42. package/dist/components/actions.js.map +1 -1
  43. package/dist/components/detail.d.ts.map +1 -1
  44. package/dist/components/detail.js +4 -0
  45. package/dist/components/detail.js.map +1 -1
  46. package/dist/components/dropdown.d.ts.map +1 -1
  47. package/dist/components/dropdown.js +38 -15
  48. package/dist/components/dropdown.js.map +1 -1
  49. package/dist/components/extension-preferences.d.ts.map +1 -1
  50. package/dist/components/extension-preferences.js +40 -13
  51. package/dist/components/extension-preferences.js.map +1 -1
  52. package/dist/components/form/checkbox.d.ts.map +1 -1
  53. package/dist/components/form/checkbox.js +5 -3
  54. package/dist/components/form/checkbox.js.map +1 -1
  55. package/dist/components/form/date-picker.d.ts.map +1 -1
  56. package/dist/components/form/date-picker.js +5 -3
  57. package/dist/components/form/date-picker.js.map +1 -1
  58. package/dist/components/form/description.d.ts.map +1 -1
  59. package/dist/components/form/description.js +2 -2
  60. package/dist/components/form/description.js.map +1 -1
  61. package/dist/components/form/dropdown.d.ts.map +1 -1
  62. package/dist/components/form/dropdown.js +84 -80
  63. package/dist/components/form/dropdown.js.map +1 -1
  64. package/dist/components/form/file-autocomplete.d.ts +3 -6
  65. package/dist/components/form/file-autocomplete.d.ts.map +1 -1
  66. package/dist/components/form/file-autocomplete.js +61 -66
  67. package/dist/components/form/file-autocomplete.js.map +1 -1
  68. package/dist/components/form/file-picker.d.ts.map +1 -1
  69. package/dist/components/form/file-picker.js +33 -30
  70. package/dist/components/form/file-picker.js.map +1 -1
  71. package/dist/components/form/form-end.d.ts.map +1 -1
  72. package/dist/components/form/form-end.js +21 -1
  73. package/dist/components/form/form-end.js.map +1 -1
  74. package/dist/components/form/form-type-only.d.ts +174 -0
  75. package/dist/components/form/form-type-only.d.ts.map +1 -0
  76. package/dist/components/form/form-type-only.js +2 -0
  77. package/dist/components/form/form-type-only.js.map +1 -0
  78. package/dist/components/form/index.d.ts +3 -1
  79. package/dist/components/form/index.d.ts.map +1 -1
  80. package/dist/components/form/index.js +104 -30
  81. package/dist/components/form/index.js.map +1 -1
  82. package/dist/components/form/password-field.d.ts.map +1 -1
  83. package/dist/components/form/password-field.js +5 -3
  84. package/dist/components/form/password-field.js.map +1 -1
  85. package/dist/components/form/text-area.d.ts.map +1 -1
  86. package/dist/components/form/text-area.js +5 -3
  87. package/dist/components/form/text-area.js.map +1 -1
  88. package/dist/components/form/text-field.d.ts.map +1 -1
  89. package/dist/components/form/text-field.js +6 -4
  90. package/dist/components/form/text-field.js.map +1 -1
  91. package/dist/components/form/types.d.ts +5 -0
  92. package/dist/components/form/types.d.ts.map +1 -1
  93. package/dist/components/form/use-form-handling.d.ts +4 -0
  94. package/dist/components/form/use-form-handling.d.ts.map +1 -0
  95. package/dist/components/form/use-form-handling.js +37 -0
  96. package/dist/components/form/use-form-handling.js.map +1 -0
  97. package/dist/components/form/with-left-border.d.ts +2 -1
  98. package/dist/components/form/with-left-border.d.ts.map +1 -1
  99. package/dist/components/form/with-left-border.js +27 -3
  100. package/dist/components/form/with-left-border.js.map +1 -1
  101. package/dist/components/icon.d.ts +1 -0
  102. package/dist/components/icon.d.ts.map +1 -1
  103. package/dist/components/icon.js +24 -8
  104. package/dist/components/icon.js.map +1 -1
  105. package/dist/components/list.d.ts +2 -2
  106. package/dist/components/list.d.ts.map +1 -1
  107. package/dist/components/list.js +155 -70
  108. package/dist/components/list.js.map +1 -1
  109. package/dist/components/loading-bar.d.ts.map +1 -1
  110. package/dist/components/loading-bar.js +2 -2
  111. package/dist/components/loading-bar.js.map +1 -1
  112. package/dist/components/loading-text.d.ts +8 -0
  113. package/dist/components/loading-text.d.ts.map +1 -0
  114. package/dist/components/loading-text.js +58 -0
  115. package/dist/components/loading-text.js.map +1 -0
  116. package/dist/descendants.js +1 -1
  117. package/dist/descendants.js.map +1 -1
  118. package/dist/dev-ui.d.ts +7 -0
  119. package/dist/dev-ui.d.ts.map +1 -0
  120. package/dist/dev-ui.js +118 -0
  121. package/dist/dev-ui.js.map +1 -0
  122. package/dist/environment.d.ts +63 -0
  123. package/dist/environment.d.ts.map +1 -0
  124. package/dist/environment.js +189 -0
  125. package/dist/environment.js.map +1 -0
  126. package/dist/examples/datepicker.d.ts +2 -0
  127. package/dist/examples/datepicker.d.ts.map +1 -0
  128. package/dist/examples/datepicker.js +344 -0
  129. package/dist/examples/datepicker.js.map +1 -0
  130. package/dist/examples/file-autocomplete.vitest.d.ts +2 -0
  131. package/dist/examples/file-autocomplete.vitest.d.ts.map +1 -0
  132. package/dist/examples/file-autocomplete.vitest.js +223 -0
  133. package/dist/examples/file-autocomplete.vitest.js.map +1 -0
  134. package/dist/examples/form-basic-arrow-keys.vitest.d.ts +2 -0
  135. package/dist/examples/form-basic-arrow-keys.vitest.d.ts.map +1 -0
  136. package/dist/examples/form-basic-arrow-keys.vitest.js +46 -0
  137. package/dist/examples/form-basic-arrow-keys.vitest.js.map +1 -0
  138. package/dist/examples/form-basic.vitest.d.ts +2 -0
  139. package/dist/examples/form-basic.vitest.d.ts.map +1 -0
  140. package/dist/examples/form-basic.vitest.js +630 -0
  141. package/dist/examples/form-basic.vitest.js.map +1 -0
  142. package/dist/examples/form-dropdown-with-sections.d.ts +2 -0
  143. package/dist/examples/form-dropdown-with-sections.d.ts.map +1 -0
  144. package/dist/examples/form-dropdown-with-sections.js +13 -0
  145. package/dist/examples/form-dropdown-with-sections.js.map +1 -0
  146. package/dist/examples/form-dropdown-with-sections.vitest.d.ts +2 -0
  147. package/dist/examples/form-dropdown-with-sections.vitest.d.ts.map +1 -0
  148. package/dist/examples/form-dropdown-with-sections.vitest.js +75 -0
  149. package/dist/examples/form-dropdown-with-sections.vitest.js.map +1 -0
  150. package/dist/examples/form-dropdown.vitest.d.ts +2 -0
  151. package/dist/examples/form-dropdown.vitest.d.ts.map +1 -0
  152. package/dist/examples/form-dropdown.vitest.js +854 -0
  153. package/dist/examples/form-dropdown.vitest.js.map +1 -0
  154. package/dist/examples/form-multiselect-dropdown.d.ts +2 -0
  155. package/dist/examples/form-multiselect-dropdown.d.ts.map +1 -0
  156. package/dist/examples/form-multiselect-dropdown.js +13 -0
  157. package/dist/examples/form-multiselect-dropdown.js.map +1 -0
  158. package/dist/examples/form-scroll.d.ts.map +1 -1
  159. package/dist/examples/form-scroll.js +7 -1
  160. package/dist/examples/form-scroll.js.map +1 -1
  161. package/dist/examples/form-scroll.vitest.d.ts +2 -0
  162. package/dist/examples/form-scroll.vitest.d.ts.map +1 -0
  163. package/dist/examples/form-scroll.vitest.js +211 -0
  164. package/dist/examples/form-scroll.vitest.js.map +1 -0
  165. package/dist/examples/form-tagpicker.vitest.d.ts +2 -0
  166. package/dist/examples/form-tagpicker.vitest.d.ts.map +1 -0
  167. package/dist/examples/form-tagpicker.vitest.js +736 -0
  168. package/dist/examples/form-tagpicker.vitest.js.map +1 -0
  169. package/dist/examples/internal/descendants-filtering.js +1 -1
  170. package/dist/examples/internal/descendants-filtering.js.map +1 -1
  171. package/dist/examples/internal/descendants.js +1 -1
  172. package/dist/examples/internal/descendants.js.map +1 -1
  173. package/dist/examples/internal/nested-boxes.d.ts +2 -0
  174. package/dist/examples/internal/nested-boxes.d.ts.map +1 -0
  175. package/dist/examples/internal/nested-boxes.js +7 -0
  176. package/dist/examples/internal/nested-boxes.js.map +1 -0
  177. package/dist/examples/internal/rhf-custom-ref.js +2 -2
  178. package/dist/examples/internal/rhf-custom-ref.js.map +1 -1
  179. package/dist/examples/internal/scrollbox-demo.js +3 -22
  180. package/dist/examples/internal/scrollbox-demo.js.map +1 -1
  181. package/dist/examples/internal/scrollbox-descendants.d.ts +2 -0
  182. package/dist/examples/internal/scrollbox-descendants.d.ts.map +1 -0
  183. package/dist/examples/internal/scrollbox-descendants.js +83 -0
  184. package/dist/examples/internal/scrollbox-descendants.js.map +1 -0
  185. package/dist/examples/internal/scrollbox-with-descendants.js +4 -8
  186. package/dist/examples/internal/scrollbox-with-descendants.js.map +1 -1
  187. package/dist/examples/internal/simple-scrollbox.vitest.d.ts +2 -0
  188. package/dist/examples/internal/simple-scrollbox.vitest.d.ts.map +1 -0
  189. package/dist/examples/internal/simple-scrollbox.vitest.js +96 -0
  190. package/dist/examples/internal/simple-scrollbox.vitest.js.map +1 -0
  191. package/dist/examples/internal/unicode-square-repro.d.ts +2 -0
  192. package/dist/examples/internal/unicode-square-repro.d.ts.map +1 -0
  193. package/dist/examples/internal/unicode-square-repro.js +7 -0
  194. package/dist/examples/internal/unicode-square-repro.js.map +1 -0
  195. package/dist/examples/list-detail-metadata.d.ts +2 -0
  196. package/dist/examples/list-detail-metadata.d.ts.map +1 -0
  197. package/dist/examples/list-detail-metadata.js +8 -0
  198. package/dist/examples/list-detail-metadata.js.map +1 -0
  199. package/dist/examples/list-dropdown-default.vitest.d.ts +2 -0
  200. package/dist/examples/list-dropdown-default.vitest.d.ts.map +1 -0
  201. package/dist/examples/list-dropdown-default.vitest.js +234 -0
  202. package/dist/examples/list-dropdown-default.vitest.js.map +1 -0
  203. package/dist/examples/list-fetch-data.vitest.d.ts +2 -0
  204. package/dist/examples/list-fetch-data.vitest.d.ts.map +1 -0
  205. package/dist/examples/list-fetch-data.vitest.js +111 -0
  206. package/dist/examples/list-fetch-data.vitest.js.map +1 -0
  207. package/dist/examples/list-filter-navigation.d.ts +2 -0
  208. package/dist/examples/list-filter-navigation.d.ts.map +1 -0
  209. package/dist/examples/list-filter-navigation.js +8 -0
  210. package/dist/examples/list-filter-navigation.js.map +1 -0
  211. package/dist/examples/list-scrollbox.vitest.d.ts +2 -0
  212. package/dist/examples/list-scrollbox.vitest.d.ts.map +1 -0
  213. package/dist/examples/list-scrollbox.vitest.js +93 -0
  214. package/dist/examples/list-scrollbox.vitest.js.map +1 -0
  215. package/dist/examples/list-with-detail-long.d.ts +2 -0
  216. package/dist/examples/list-with-detail-long.d.ts.map +1 -0
  217. package/dist/examples/list-with-detail-long.js +53 -0
  218. package/dist/examples/list-with-detail-long.js.map +1 -0
  219. package/dist/examples/list-with-detail.vitest.d.ts +2 -0
  220. package/dist/examples/list-with-detail.vitest.d.ts.map +1 -0
  221. package/dist/examples/list-with-detail.vitest.js +434 -0
  222. package/dist/examples/list-with-detail.vitest.js.map +1 -0
  223. package/dist/examples/list-with-dropdown.vitest.d.ts +2 -0
  224. package/dist/examples/list-with-dropdown.vitest.d.ts.map +1 -0
  225. package/dist/examples/list-with-dropdown.vitest.js +337 -0
  226. package/dist/examples/list-with-dropdown.vitest.js.map +1 -0
  227. package/dist/examples/list-with-sections.js +5 -1
  228. package/dist/examples/list-with-sections.js.map +1 -1
  229. package/dist/examples/list-with-sections.vitest.d.ts +2 -0
  230. package/dist/examples/list-with-sections.vitest.d.ts.map +1 -0
  231. package/dist/examples/list-with-sections.vitest.js +601 -0
  232. package/dist/examples/list-with-sections.vitest.js.map +1 -0
  233. package/dist/examples/scrollbox-vertical-centering.d.ts +6 -0
  234. package/dist/examples/scrollbox-vertical-centering.d.ts.map +1 -0
  235. package/dist/examples/scrollbox-vertical-centering.js +17 -0
  236. package/dist/examples/scrollbox-vertical-centering.js.map +1 -0
  237. package/dist/examples/simple-file-picker.vitest.d.ts +2 -0
  238. package/dist/examples/simple-file-picker.vitest.d.ts.map +1 -0
  239. package/dist/examples/simple-file-picker.vitest.js +678 -0
  240. package/dist/examples/simple-file-picker.vitest.js.map +1 -0
  241. package/dist/examples/simple-grid.vitest.d.ts +2 -0
  242. package/dist/examples/simple-grid.vitest.d.ts.map +1 -0
  243. package/dist/examples/simple-grid.vitest.js +521 -0
  244. package/dist/examples/simple-grid.vitest.js.map +1 -0
  245. package/dist/examples/simple-navigation.js +10 -4
  246. package/dist/examples/simple-navigation.js.map +1 -1
  247. package/dist/examples/simple-navigation.vitest.d.ts +2 -0
  248. package/dist/examples/simple-navigation.vitest.d.ts.map +1 -0
  249. package/dist/examples/simple-navigation.vitest.js +718 -0
  250. package/dist/examples/simple-navigation.vitest.js.map +1 -0
  251. package/dist/examples/store.vitest.d.ts +2 -0
  252. package/dist/examples/store.vitest.d.ts.map +1 -0
  253. package/dist/examples/store.vitest.js +69 -0
  254. package/dist/examples/store.vitest.js.map +1 -0
  255. package/dist/examples/toast-variations.d.ts +2 -0
  256. package/dist/examples/toast-variations.d.ts.map +1 -0
  257. package/dist/examples/toast-variations.js +122 -0
  258. package/dist/examples/toast-variations.js.map +1 -0
  259. package/dist/extensions/dev.d.ts +4 -2
  260. package/dist/extensions/dev.d.ts.map +1 -1
  261. package/dist/extensions/dev.js +61 -10
  262. package/dist/extensions/dev.js.map +1 -1
  263. package/dist/extensions/dev.vitest.d.ts +2 -0
  264. package/dist/extensions/dev.vitest.d.ts.map +1 -0
  265. package/dist/extensions/dev.vitest.js +197 -0
  266. package/dist/extensions/dev.vitest.js.map +1 -0
  267. package/dist/extensions/home.d.ts.map +1 -1
  268. package/dist/extensions/home.js +3 -0
  269. package/dist/extensions/home.js.map +1 -1
  270. package/dist/home-command.d.ts +8 -0
  271. package/dist/home-command.d.ts.map +1 -0
  272. package/dist/home-command.js +181 -0
  273. package/dist/home-command.js.map +1 -0
  274. package/dist/hover-repro.d.ts +2 -0
  275. package/dist/hover-repro.d.ts.map +1 -0
  276. package/dist/hover-repro.js +20 -0
  277. package/dist/hover-repro.js.map +1 -0
  278. package/dist/index.d.ts +1 -0
  279. package/dist/index.d.ts.map +1 -1
  280. package/dist/index.js +2 -0
  281. package/dist/index.js.map +1 -1
  282. package/dist/internal/dialog.d.ts +1 -0
  283. package/dist/internal/dialog.d.ts.map +1 -1
  284. package/dist/internal/dialog.js +27 -18
  285. package/dist/internal/dialog.js.map +1 -1
  286. package/dist/internal/navigation.d.ts +9 -1
  287. package/dist/internal/navigation.d.ts.map +1 -1
  288. package/dist/internal/navigation.js +5 -5
  289. package/dist/internal/navigation.js.map +1 -1
  290. package/dist/internal/offscreen.d.ts +6 -0
  291. package/dist/internal/offscreen.d.ts.map +1 -0
  292. package/dist/internal/offscreen.js +10 -0
  293. package/dist/internal/offscreen.js.map +1 -0
  294. package/dist/internal/providers.d.ts.map +1 -1
  295. package/dist/internal/providers.js +2 -2
  296. package/dist/internal/providers.js.map +1 -1
  297. package/dist/internal/scrollbox.d.ts +1 -10
  298. package/dist/internal/scrollbox.d.ts.map +1 -1
  299. package/dist/internal/scrollbox.js +2 -1
  300. package/dist/internal/scrollbox.js.map +1 -1
  301. package/dist/localstorage.d.ts +13 -0
  302. package/dist/localstorage.d.ts.map +1 -0
  303. package/dist/localstorage.js +190 -0
  304. package/dist/localstorage.js.map +1 -0
  305. package/dist/oauth.d.ts +142 -0
  306. package/dist/oauth.d.ts.map +1 -0
  307. package/dist/oauth.js +551 -0
  308. package/dist/oauth.js.map +1 -0
  309. package/dist/preferences.d.ts +23 -0
  310. package/dist/preferences.d.ts.map +1 -0
  311. package/dist/preferences.js +105 -0
  312. package/dist/preferences.js.map +1 -0
  313. package/dist/release.d.ts +1 -1
  314. package/dist/release.d.ts.map +1 -1
  315. package/dist/release.js +29 -33
  316. package/dist/release.js.map +1 -1
  317. package/dist/state.d.ts +2 -0
  318. package/dist/state.d.ts.map +1 -1
  319. package/dist/state.js +3 -0
  320. package/dist/state.js.map +1 -1
  321. package/dist/store.d.ts +21 -0
  322. package/dist/store.d.ts.map +1 -0
  323. package/dist/store.js +84 -0
  324. package/dist/store.js.map +1 -0
  325. package/dist/swift-loader.d.ts +3 -0
  326. package/dist/swift-loader.d.ts.map +1 -0
  327. package/dist/swift-loader.js +193 -0
  328. package/dist/swift-loader.js.map +1 -0
  329. package/dist/swift-runtime.d.ts +2 -0
  330. package/dist/swift-runtime.d.ts.map +1 -0
  331. package/dist/swift-runtime.js +27 -0
  332. package/dist/swift-runtime.js.map +1 -0
  333. package/dist/toast.d.ts +44 -0
  334. package/dist/toast.d.ts.map +1 -0
  335. package/dist/toast.js +221 -0
  336. package/dist/toast.js.map +1 -0
  337. package/dist/utils/file-system.d.ts +9 -0
  338. package/dist/utils/file-system.d.ts.map +1 -1
  339. package/dist/utils/file-system.js +49 -0
  340. package/dist/utils/file-system.js.map +1 -1
  341. package/dist/utils/run-command.d.ts +26 -1
  342. package/dist/utils/run-command.d.ts.map +1 -1
  343. package/dist/utils/run-command.js +53 -4
  344. package/dist/utils/run-command.js.map +1 -1
  345. package/dist/window.d.ts +12 -0
  346. package/dist/window.d.ts.map +1 -0
  347. package/dist/window.js +48 -0
  348. package/dist/window.js.map +1 -0
  349. package/package.json +12 -12
  350. package/src/apis/browser-extension.tsx +29 -0
  351. package/src/apis/localstorage.test.ts +14 -6
  352. package/src/apis/localstorage.tsx +8 -5
  353. package/src/apis/oauth.tsx +5 -1
  354. package/src/apis/preferences.tsx +48 -22
  355. package/src/apis/toast.tsx +37 -62
  356. package/src/build.test.tsx +52 -0
  357. package/src/build.tsx +3 -1
  358. package/src/cli.tsx +99 -48
  359. package/src/compile.tsx +32 -11
  360. package/src/components/actions.tsx +94 -32
  361. package/src/components/detail.tsx +4 -0
  362. package/src/components/dropdown.tsx +47 -14
  363. package/src/components/extension-preferences.tsx +44 -16
  364. package/src/components/form/checkbox.tsx +12 -6
  365. package/src/components/form/date-picker.tsx +12 -6
  366. package/src/components/form/description.tsx +7 -2
  367. package/src/components/form/dropdown.tsx +131 -119
  368. package/src/components/form/file-autocomplete.tsx +90 -108
  369. package/src/components/form/file-picker.tsx +54 -43
  370. package/src/components/form/form-end.tsx +23 -2
  371. package/src/components/form/index.tsx +168 -41
  372. package/src/components/form/password-field.tsx +12 -6
  373. package/src/components/form/text-area.tsx +13 -6
  374. package/src/components/form/text-field.tsx +13 -6
  375. package/src/components/form/types.tsx +6 -0
  376. package/src/components/form/with-left-border.tsx +41 -8
  377. package/src/components/icon.tsx +27 -8
  378. package/src/components/list.tsx +243 -101
  379. package/src/components/loading-bar.tsx +3 -2
  380. package/src/components/loading-text.tsx +79 -0
  381. package/src/descendants.tsx +1 -0
  382. package/src/examples/file-autocomplete.vitest.tsx +130 -125
  383. package/src/examples/form-basic.vitest.tsx +376 -176
  384. package/src/examples/form-dropdown.vitest.tsx +126 -126
  385. package/src/examples/form-scroll.tsx +2 -0
  386. package/src/examples/form-scroll.vitest.tsx +58 -58
  387. package/src/examples/form-tagpicker.vitest.tsx +99 -99
  388. package/src/examples/internal/descendants-filtering.tsx +1 -0
  389. package/src/examples/internal/descendants.tsx +1 -0
  390. package/src/examples/internal/rhf-custom-ref.tsx +2 -0
  391. package/src/examples/internal/scrollbox-demo.tsx +3 -27
  392. package/src/examples/internal/scrollbox-with-descendants.tsx +4 -7
  393. package/src/examples/internal/simple-scrollbox.vitest.tsx +7 -5
  394. package/src/examples/list-detail-metadata.tsx +49 -0
  395. package/src/examples/list-detail-metadata.vitest.tsx +88 -0
  396. package/src/examples/list-dropdown-default.vitest.tsx +51 -51
  397. package/src/examples/list-fetch-data.vitest.tsx +4 -4
  398. package/src/examples/list-scrollbox.vitest.tsx +73 -14
  399. package/src/examples/list-with-detail-long.tsx +70 -0
  400. package/src/examples/list-with-detail.vitest.tsx +191 -85
  401. package/src/examples/list-with-dropdown.vitest.tsx +53 -53
  402. package/src/examples/list-with-sections.tsx +1 -0
  403. package/src/examples/list-with-sections.vitest.tsx +221 -97
  404. package/src/examples/list-with-toast.vitest.tsx +16 -16
  405. package/src/examples/simple-file-picker.vitest.tsx +63 -469
  406. package/src/examples/simple-grid.vitest.tsx +238 -233
  407. package/src/examples/simple-navigation.tsx +15 -7
  408. package/src/examples/simple-navigation.vitest.tsx +130 -219
  409. package/src/examples/store.vitest.tsx +1 -1
  410. package/src/examples/swift-extension.vitest.tsx +148 -0
  411. package/src/examples/synonyms.vitest.tsx +159 -0
  412. package/src/examples/toast-variations.tsx +150 -0
  413. package/src/examples/toast-variations.vitest.tsx +370 -0
  414. package/src/extensions/dev.tsx +74 -7
  415. package/src/extensions/dev.vitest.tsx +102 -34
  416. package/src/extensions/home.tsx +6 -0
  417. package/src/index.tsx +3 -0
  418. package/src/internal/dialog.tsx +43 -30
  419. package/src/internal/navigation.tsx +3 -1
  420. package/src/internal/offscreen.tsx +15 -0
  421. package/src/internal/providers.tsx +4 -2
  422. package/src/internal/scrollbox.tsx +4 -8
  423. package/src/keyboard.test.tsx +69 -0
  424. package/src/release.tsx +32 -38
  425. package/src/state.tsx +7 -0
  426. package/src/swift-loader.tsx +239 -0
  427. package/src/swift-runtime.tsx +36 -0
  428. package/src/utils/file-system.ts +61 -0
  429. package/src/utils/run-command.tsx +82 -6
@@ -24,7 +24,7 @@ test('list with detail view display and navigation', async () => {
24
24
  text.includes('›bulbasaur') &&
25
25
  text.includes('Grass / Poison') &&
26
26
  text.includes('Height: 0.7m') &&
27
- text.includes('↵ select')
27
+ /↵.*navigate/i.test(text)
28
28
  )
29
29
  },
30
30
  })
@@ -39,7 +39,7 @@ test('list with detail view display and navigation', async () => {
39
39
 
40
40
  ›bulbasaur #001
41
41
  ivysaur #002 │ bulbasaur ▲
42
- charmander #004 │
42
+ charmander #004 │
43
43
  charmeleon #005 │ Illustration
44
44
  squirtle #007 │
45
45
  wartortle #008 │ Types
@@ -57,8 +57,8 @@ test('list with detail view display and navigation', async () => {
57
57
  │ Types:
58
58
 
59
59
  │ Grass:
60
- │ ─────────────────
61
- ↵ select ↑↓ navigate ^k actions │ ▼"
60
+ ↵toggle detail ↑↓ navigate ^kactions │ ─────────────────
61
+ │ ▼"
62
62
  `)
63
63
 
64
64
  await session.press('down')
@@ -76,7 +76,7 @@ test('list with detail view display and navigation', async () => {
76
76
 
77
77
  bulbasaur #001
78
78
  ›ivysaur #002 │ ivysaur ▲
79
- charmander #004 │
79
+ charmander #004 │
80
80
  charmeleon #005 │ Illustration
81
81
  squirtle #007 │
82
82
  wartortle #008 │ Types
@@ -94,8 +94,8 @@ test('list with detail view display and navigation', async () => {
94
94
  │ Types:
95
95
 
96
96
  │ Grass:
97
- │ ─────────────────
98
- ↵ select ↑↓ navigate ^k actions │ ▼"
97
+ ↵toggle detail ↑↓ navigate ^kactions │ ─────────────────
98
+ │ ▼"
99
99
  `)
100
100
 
101
101
  await session.press('down')
@@ -129,8 +129,8 @@ test('list with detail view display and navigation', async () => {
129
129
  │ Types:
130
130
 
131
131
  │ Fire:
132
- │ ─────────────────
133
- ↵ select ↑↓ navigate ^k actions │ ▼"
132
+ ↵toggle detail ↑↓ navigate ^kactions │ ─────────────────
133
+ │ ▼"
134
134
  `)
135
135
 
136
136
  await session.press(['ctrl', 'k'])
@@ -146,26 +146,27 @@ test('list with detail view display and navigation', async () => {
146
146
 
147
147
  bulbasaur #001
148
148
  ivysaur #002 │ charmander ▲
149
- ┃ ┃
150
- ┃ esc ┃
151
- ┃ ┃
152
- Search actions...
153
- ┃ ┃
154
- ›Toggle Detail
155
- View on Pokemon.com
156
-
157
-
158
- ┃ ┃
159
- ┃ ┃
160
- ┃ ┃
161
- ┃ ┃
162
- ┃ ┃
163
- ┃ ┃
164
- ┃ ┃
165
- ↵ select ↑↓ navigate
166
- ┃ ┃
167
- ─────────────────
168
- ↵ select ↑↓ navigate ^k actions │ ▼"
149
+ ›charmander #004 │ █
150
+ c┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
151
+ s┃ ┃
152
+ w esc
153
+ ┃ ┃
154
+ Search actions...
155
+
156
+ ›Toggle Detail
157
+ View on Pokemon.com
158
+ ┃ ┃
159
+ ┃ ┃
160
+ ┃ ┃
161
+ ┃ ┃
162
+ ┃ ┃
163
+ ┃ ┃
164
+ ┃ ┃
165
+
166
+ ┃ ┃
167
+ ↵┃ ↵ select ↑↓ navigate ┃
168
+ ┃ ┃
169
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
169
170
  `)
170
171
 
171
172
  await session.press('enter')
@@ -204,7 +205,7 @@ test('list with detail view display and navigation', async () => {
204
205
 
205
206
 
206
207
 
207
- select ↑↓ navigate ^k actions"
208
+ toggle detail ↑↓ navigate ^k actions"
208
209
  `)
209
210
 
210
211
  await session.press(['ctrl', 'k'])
@@ -243,8 +244,8 @@ test('list with detail view display and navigation', async () => {
243
244
  │ Types:
244
245
 
245
246
  │ Fire:
246
- │ ─────────────────
247
- ↵ select ↑↓ navigate ^k actions │ ▼"
247
+ ↵toggle detail ↑↓ navigate ^kactions │ ─────────────────
248
+ │ ▼"
248
249
  `)
249
250
  }, 15000)
250
251
 
@@ -271,27 +272,27 @@ test('list detail view search functionality', async () => {
271
272
  char
272
273
 
273
274
  charmander #004
274
- charmeleon #005 │
275
- ───────────────────────────────── █
276
-
277
- │ Types: █
278
- │ █
279
- │ Grass: ▀
280
- │ ─────────────────
275
+ charmeleon #005 │ bulbasaur
276
+
277
+ Illustration
281
278
 
282
- Poison:
283
- ─────────────────
279
+ Types
280
+ Grass / Poison
284
281
 
285
- │ Characteristics:
286
- │ Height: 0.7m
282
+ │ Characteristics
283
+ - Height: 0.7m
284
+ │ - Weight: 6.9kg
287
285
 
288
- ─────────────────
289
- Weight: 6.9kg
286
+ Abilities
287
+ - Chlorophyll
288
+ │ - Overgrow
289
+ │ ─────────────────────────────────
290
290
 
291
- ─────────────────
292
- │ Abilities:
291
+ Types:
293
292
 
294
- ↵ select ↑↓ navigate ^k actions Chlorophyll: Main Series ▼"
293
+ Grass:
294
+ ↵toggle detail ↑↓ navigate ^kactions │ ─────────────────
295
+ │ ▼"
295
296
  `)
296
297
 
297
298
  await session.press('backspace')
@@ -315,27 +316,27 @@ test('list detail view search functionality', async () => {
315
316
  water
316
317
 
317
318
 
318
- bulbasaur
319
+ wartortle
319
320
  │ █
320
321
  │ Illustration
321
322
 
322
323
  │ Types
323
- Grass / Poison
324
+ Water
324
325
 
325
326
  │ Characteristics
326
- │ - Height: 0.7m
327
- │ - Weight: 6.9kg
327
+ │ - Height: 1m
328
+ │ - Weight: 22.5kg
328
329
 
329
330
  │ Abilities
330
- │ - Chlorophyll
331
- │ - Overgrow
331
+ │ - Torrent
332
+ │ - Rain Dish
332
333
  │ ─────────────────────────────────
333
334
 
334
335
  │ Types:
335
336
 
336
- Grass:
337
- │ ─────────────────
338
- ↵ select ↑↓ navigate ^k actions │ ▼"
337
+ Water:
338
+ ↵toggle detail ↑↓ navigate ^kactions │ ─────────────────
339
+ │ ▼"
339
340
  `)
340
341
 
341
342
  await session.press('down')
@@ -350,27 +351,27 @@ test('list detail view search functionality', async () => {
350
351
  water
351
352
 
352
353
 
353
- bulbasaur
354
+ wartortle
354
355
  │ █
355
356
  │ Illustration
356
357
 
357
358
  │ Types
358
- Grass / Poison
359
+ Water
359
360
 
360
361
  │ Characteristics
361
- │ - Height: 0.7m
362
- │ - Weight: 6.9kg
362
+ │ - Height: 1m
363
+ │ - Weight: 22.5kg
363
364
 
364
365
  │ Abilities
365
- │ - Chlorophyll
366
- │ - Overgrow
366
+ │ - Torrent
367
+ │ - Rain Dish
367
368
  │ ─────────────────────────────────
368
369
 
369
370
  │ Types:
370
371
 
371
- Grass:
372
- │ ─────────────────
373
- ↵ select ↑↓ navigate ^k actions │ ▼"
372
+ Water:
373
+ ↵toggle detail ↑↓ navigate ^kactions │ ─────────────────
374
+ │ ▼"
374
375
  `)
375
376
  }, 10000)
376
377
 
@@ -397,27 +398,27 @@ test('list detail metadata rendering', async () => {
397
398
  Search Pokemon...
398
399
 
399
400
  ›bulbasaur #001
400
- ivysaur #002 │
401
- charmander #004 │ ───────────────────────────────── █
402
- charmeleon #005 │
403
- squirtle #007 │ Types: █
404
- wartortle #008 │
405
- │ Grass: ▀
406
- │ ─────────────────
407
-
408
- │ Poison:
409
- │ ─────────────────
401
+ ivysaur #002 │ bulbasaur
402
+ charmander #004 │
403
+ charmeleon #005 │ Illustration
404
+ squirtle #007 │
405
+ wartortle #008 │ Types
406
+ │ Grass / Poison
410
407
 
411
- │ Characteristics:
412
- │ Height: 0.7m
408
+ │ Characteristics
409
+ - Height: 0.7m
410
+ │ - Weight: 6.9kg
413
411
 
414
- ─────────────────
415
- Weight: 6.9kg
412
+ Abilities
413
+ - Chlorophyll
414
+ │ - Overgrow
415
+ │ ─────────────────────────────────
416
416
 
417
- ─────────────────
418
- │ Abilities:
417
+ Types:
419
418
 
420
- ↵ select ↑↓ navigate ^k actions Chlorophyll: Main Series ▼"
419
+ Grass:
420
+ ↵toggle detail ↑↓ navigate ^kactions │ ─────────────────
421
+ │ ▼"
421
422
  `)
422
423
 
423
424
  await session.press('down')
@@ -458,7 +459,112 @@ test('list detail metadata rendering', async () => {
458
459
  │ Types:
459
460
 
460
461
  │ Water:
461
- │ ─────────────────
462
- ↵ select ↑↓ navigate ^k actions │ ▼"
462
+ ↵toggle detail ↑↓ navigate ^kactions │ ─────────────────
463
+ │ ▼"
463
464
  `)
464
465
  }, 10000)
466
+
467
+ test('list with detail layout consistency - short vs long detail content', async () => {
468
+ // Use the long-detail example to test layout shift with very long content
469
+ const testSession = await launchTerminal({
470
+ command: 'bun',
471
+ args: ['src/examples/list-with-detail-long.tsx'],
472
+ cols: 80,
473
+ rows: 25,
474
+ })
475
+
476
+ // First item has SHORT detail - should fit without overflow
477
+ const shortDetailSnapshot = await testSession.text({
478
+ waitFor: (text) => {
479
+ return (
480
+ text.includes('›Short Detail') &&
481
+ text.includes('Brief content')
482
+ )
483
+ },
484
+ })
485
+
486
+ // Navigate to second item which has LONG detail - will overflow
487
+ await testSession.press('down')
488
+
489
+ const longDetailSnapshot = await testSession.text({
490
+ waitFor: (text) => {
491
+ return (
492
+ text.includes('›Long Detail') &&
493
+ text.includes('extensive')
494
+ )
495
+ },
496
+ })
497
+
498
+ testSession.close()
499
+
500
+ // Compare list item positions - they should be consistent
501
+ expect(shortDetailSnapshot).toMatchInlineSnapshot(`
502
+ "
503
+
504
+
505
+ Detail Length Test ───────────────────────────────────────────────────────
506
+
507
+ Search...
508
+
509
+ ›Short Detail
510
+ Long Detail │ Brief content
511
+ Another Item │
512
+ │ This is short.
513
+
514
+
515
+
516
+
517
+
518
+
519
+
520
+
521
+
522
+
523
+
524
+
525
+ ↑↓ navigate ^k actions │"
526
+ `)
527
+ expect(longDetailSnapshot).toMatchInlineSnapshot(`
528
+ "
529
+
530
+
531
+ Detail Length Test ───────────────────────────────────────────────────────
532
+
533
+ Search...
534
+
535
+ Short Detail
536
+ ›Long Detail │ This item has extensive detail ▲
537
+ Another Item │ content ▀
538
+
539
+ │ Section 1
540
+ │ This is a very long description
541
+ │ that contains multiple paragraphs
542
+ │ and sections to test how the
543
+ │ layout behaves when the detail
544
+ │ panel content overflows.
545
+
546
+ │ Section 2
547
+ │ More content here to ensure we
548
+ │ have enough text to cause
549
+ │ vertical overflow in the detail
550
+ │ panel scrollbox.
551
+ ↑↓ navigate ^k actions │ ▼"
552
+ `)
553
+
554
+ // Extract the LINE NUMBER (vertical position) of list items to verify no layout shift
555
+ const getListItemLineNumber = (snapshot: string, itemText: string) => {
556
+ const lines = snapshot.split('\n')
557
+ const lineIndex = lines.findIndex((line) => line.includes(itemText))
558
+ return lineIndex
559
+ }
560
+
561
+ // Check vertical position - the "Short Detail" item should be at the same line number
562
+ // regardless of whether the detail panel has overflow or not
563
+ const shortLineNum = getListItemLineNumber(shortDetailSnapshot, 'Short Detail')
564
+ const longLineNum = getListItemLineNumber(longDetailSnapshot, 'Short Detail')
565
+
566
+ // BUG: The list items shift vertically when detail content overflows
567
+ // When detail doesn't overflow: there's a blank line after navigation title
568
+ // When detail overflows: the blank line disappears, shifting all content up
569
+ expect(shortLineNum).toBe(longLineNum)
570
+ }, 20000)
@@ -52,7 +52,7 @@ test('list with dropdown navigation', async () => {
52
52
 
53
53
 
54
54
 
55
- ↵ select ↑↓ navigate ^k actions"
55
+ ↑↓ navigate ^k actions"
56
56
  `)
57
57
 
58
58
  await session.press(['ctrl', 'p'])
@@ -62,7 +62,9 @@ test('list with dropdown navigation', async () => {
62
62
  "
63
63
 
64
64
 
65
- Search Beers ───────────────────────────────────────────────────
65
+ Search Beers ───────────────────────────────────────────────────
66
+
67
+ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
66
68
  ┃ ┃
67
69
  ┃ Select Drink Type esc ┃
68
70
  ┃ ┃
@@ -80,9 +82,7 @@ test('list with dropdown navigation', async () => {
80
82
  ┃ ┃
81
83
  ┃ ↵ select ↑↓ navigate ┃
82
84
  ┃ ┃
83
-
84
-
85
- ↵ select ↑↓ navigate ^k actions"
85
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
86
86
  `)
87
87
 
88
88
  const afterCtrlPSnapshot = await session.text({
@@ -94,7 +94,9 @@ test('list with dropdown navigation', async () => {
94
94
  "
95
95
 
96
96
 
97
- Search Beers ───────────────────────────────────────────────────
97
+ Search Beers ───────────────────────────────────────────────────
98
+
99
+ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
98
100
  ┃ ┃
99
101
  ┃ Select Drink Type esc ┃
100
102
  ┃ ┃
@@ -112,9 +114,7 @@ test('list with dropdown navigation', async () => {
112
114
  ┃ ┃
113
115
  ┃ ↵ select ↑↓ navigate ┃
114
116
  ┃ ┃
115
-
116
-
117
- ↵ select ↑↓ navigate ^k actions"
117
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
118
118
  `)
119
119
 
120
120
  await session.press('down')
@@ -124,7 +124,9 @@ test('list with dropdown navigation', async () => {
124
124
  "
125
125
 
126
126
 
127
- Search Beers ───────────────────────────────────────────────────
127
+ Search Beers ───────────────────────────────────────────────────
128
+
129
+ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
128
130
  ┃ ┃
129
131
  ┃ Select Drink Type esc ┃
130
132
  ┃ ┃
@@ -142,9 +144,7 @@ test('list with dropdown navigation', async () => {
142
144
  ┃ ┃
143
145
  ┃ ↵ select ↑↓ navigate ┃
144
146
  ┃ ┃
145
-
146
-
147
- ↵ select ↑↓ navigate ^k actions"
147
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
148
148
  `)
149
149
 
150
150
  await session.press('down')
@@ -154,7 +154,9 @@ test('list with dropdown navigation', async () => {
154
154
  "
155
155
 
156
156
 
157
- Search Beers ───────────────────────────────────────────────────
157
+ Search Beers ───────────────────────────────────────────────────
158
+
159
+ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
158
160
  ┃ ┃
159
161
  ┃ Select Drink Type esc ┃
160
162
  ┃ ┃
@@ -172,9 +174,7 @@ test('list with dropdown navigation', async () => {
172
174
  ┃ ┃
173
175
  ┃ ↵ select ↑↓ navigate ┃
174
176
  ┃ ┃
175
-
176
-
177
- ↵ select ↑↓ navigate ^k actions"
177
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
178
178
  `)
179
179
 
180
180
  await session.press('enter')
@@ -208,7 +208,7 @@ test('list with dropdown navigation', async () => {
208
208
 
209
209
 
210
210
 
211
- ↵ select ↑↓ navigate ^k actions"
211
+ ↑↓ navigate ^k actions"
212
212
  `)
213
213
  }, 10000)
214
214
 
@@ -231,27 +231,27 @@ test('list with dropdown search and filter', async () => {
231
231
  "
232
232
 
233
233
 
234
- Search Beers ───────────────────────────────────────────────────
234
+ Search Beers ───────────────────────────────────────────────────
235
+
236
+ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
235
237
  ┃ ┃
236
238
  ┃ Select Drink Type esc ┃
237
239
  ┃ ┃
238
-
239
- ›Augustiner Helles Beer
240
- Camden Hells Beer
241
- Leffe Blonde Beer
242
- Sierra Nevada IPA Beer
243
- Chateau Margaux Wine
244
- Pinot Noir Wine
245
- Coca Cola Soda
246
- Sprite Soda
247
- Orange Juice Juice
248
- Apple Juice Juice
249
-
250
-
251
-
252
-
253
-
254
- ↵ select ↑↓ navigate ^k actions"
240
+ Search... ┃
241
+ ┃ ┃
242
+ ┃ ┃
243
+ ┃ Alcoholic Beverages ┃
244
+ ┃ ›Beer
245
+ Wine
246
+ ┃ ┃
247
+ ┃ Non-Alcoholic ┃
248
+ Soda
249
+ Juice
250
+ ┃ ┃
251
+ ┃ ┃
252
+ ┃ ↵ select ↑↓ navigate ┃
253
+ ┃ ┃
254
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
255
255
  `)
256
256
 
257
257
  await session.text({
@@ -271,27 +271,27 @@ test('list with dropdown search and filter', async () => {
271
271
  "
272
272
 
273
273
 
274
- Search Beers ───────────────────────────────────────────────────
274
+ Search Beers ───────────────────────────────────────────────────
275
+
276
+ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
275
277
  ┃ ┃
276
278
  ┃ Select Drink Type esc ┃
277
279
  ┃ ┃
278
280
  ┃ wine ┃
279
281
  ┃ ┃
280
- Wine ┃
282
+ Wine ┃
281
283
  ┃ ┃
282
284
  ┃ ┃
283
285
  ┃ ↵ select ↑↓ navigate ┃
284
286
  ┃ ┃
285
- Non-Alcoholic ┃
286
- Sprite Soda
287
- Orange Juice Juice
288
- Apple Juice Juice
287
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
288
+ Apple Juice Juice
289
289
 
290
290
 
291
291
 
292
292
 
293
293
 
294
- ↵ select ↑↓ navigate ^k actions"
294
+ ↑↓ navigate ^k actions"
295
295
  `)
296
296
 
297
297
  await session.press('enter')
@@ -308,12 +308,11 @@ test('list with dropdown search and filter', async () => {
308
308
  Search Beers ───────────────────────────────────────────────────
309
309
 
310
310
 
311
- Search... Beer
311
+ Search... Wine
312
+
313
+ ›Chateau Margaux Wine
314
+ Pinot Noir Wine
312
315
 
313
- ›Augustiner Helles Beer
314
- Camden Hells Beer
315
- Leffe Blonde Beer
316
- Sierra Nevada IPA Beer
317
316
 
318
317
 
319
318
 
@@ -325,7 +324,8 @@ test('list with dropdown search and filter', async () => {
325
324
 
326
325
 
327
326
 
328
- ↵ select ↑↓ navigate ^k actions"
327
+
328
+ ↑↓ navigate ^k actions"
329
329
  `)
330
330
 
331
331
  await session.type('pinot')
@@ -339,12 +339,12 @@ test('list with dropdown search and filter', async () => {
339
339
  "
340
340
 
341
341
 
342
- Search Beers ───────────────────────────────────────────────────
343
-
342
+ Search Beers ───────────────────────────────────────────────────
344
343
 
345
- pinot Beer ▾
346
344
 
345
+ pinot Wine ▾
347
346
 
347
+ ›Pinot Noir Wine
348
348
 
349
349
 
350
350
 
@@ -359,6 +359,6 @@ test('list with dropdown search and filter', async () => {
359
359
 
360
360
 
361
361
 
362
- ↵ select ↑↓ navigate ^k actions"
362
+ ↑↓ navigate ^k actions"
363
363
  `)
364
364
  }, 10000)
@@ -14,6 +14,7 @@ function SimpleListExample() {
14
14
  const { push } = useNavigation()
15
15
  return (
16
16
  <List
17
+ // isLoading
17
18
  navigationTitle='Simple List Example'
18
19
  searchBarPlaceholder='Search items...'
19
20
  onSelectionChange={(id) => {