termcast 1.3.10 → 1.3.16

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 (500) hide show
  1. package/dist/apis/toast.d.ts +1 -5
  2. package/dist/apis/toast.d.ts.map +1 -1
  3. package/dist/apis/toast.js +23 -17
  4. package/dist/apis/toast.js.map +1 -1
  5. package/dist/build.d.ts +2 -0
  6. package/dist/build.d.ts.map +1 -1
  7. package/dist/build.js +4 -3
  8. package/dist/build.js.map +1 -1
  9. package/dist/cli.js +42 -0
  10. package/dist/cli.js.map +1 -1
  11. package/dist/colors.d.ts +8 -1
  12. package/dist/colors.d.ts.map +1 -1
  13. package/dist/colors.js +12 -0
  14. package/dist/colors.js.map +1 -1
  15. package/dist/compile.d.ts +30 -0
  16. package/dist/compile.d.ts.map +1 -0
  17. package/dist/compile.js +156 -0
  18. package/dist/compile.js.map +1 -0
  19. package/dist/components/actions.d.ts +1 -0
  20. package/dist/components/actions.d.ts.map +1 -1
  21. package/dist/components/actions.js +5 -2
  22. package/dist/components/actions.js.map +1 -1
  23. package/dist/components/command-arguments.d.ts +9 -0
  24. package/dist/components/command-arguments.d.ts.map +1 -0
  25. package/dist/components/command-arguments.js +21 -0
  26. package/dist/components/command-arguments.js.map +1 -0
  27. package/dist/components/detail.d.ts +1 -1
  28. package/dist/components/detail.d.ts.map +1 -1
  29. package/dist/components/detail.js +17 -39
  30. package/dist/components/detail.js.map +1 -1
  31. package/dist/components/dropdown.d.ts +1 -0
  32. package/dist/components/dropdown.d.ts.map +1 -1
  33. package/dist/components/dropdown.js +77 -21
  34. package/dist/components/dropdown.js.map +1 -1
  35. package/dist/components/extension-preferences.d.ts.map +1 -1
  36. package/dist/components/extension-preferences.js +19 -29
  37. package/dist/components/extension-preferences.js.map +1 -1
  38. package/dist/components/form/checkbox.d.ts.map +1 -1
  39. package/dist/components/form/checkbox.js +9 -2
  40. package/dist/components/form/checkbox.js.map +1 -1
  41. package/dist/components/form/date-picker.d.ts.map +1 -1
  42. package/dist/components/form/date-picker.js +15 -28
  43. package/dist/components/form/date-picker.js.map +1 -1
  44. package/dist/components/form/description.d.ts +2 -0
  45. package/dist/components/form/description.d.ts.map +1 -1
  46. package/dist/components/form/description.js +20 -2
  47. package/dist/components/form/description.js.map +1 -1
  48. package/dist/components/form/dropdown.d.ts.map +1 -1
  49. package/dist/components/form/dropdown.js +13 -28
  50. package/dist/components/form/dropdown.js.map +1 -1
  51. package/dist/components/form/file-autocomplete.d.ts +7 -4
  52. package/dist/components/form/file-autocomplete.d.ts.map +1 -1
  53. package/dist/components/form/file-autocomplete.js +54 -46
  54. package/dist/components/form/file-autocomplete.js.map +1 -1
  55. package/dist/components/form/file-picker.d.ts +5 -0
  56. package/dist/components/form/file-picker.d.ts.map +1 -1
  57. package/dist/components/form/file-picker.js +46 -49
  58. package/dist/components/form/file-picker.js.map +1 -1
  59. package/dist/components/form/form-ref.d.ts +43 -0
  60. package/dist/components/form/form-ref.d.ts.map +1 -0
  61. package/dist/components/form/form-ref.js +53 -0
  62. package/dist/components/form/form-ref.js.map +1 -0
  63. package/dist/components/form/index.d.ts +16 -0
  64. package/dist/components/form/index.d.ts.map +1 -1
  65. package/dist/components/form/index.js +86 -23
  66. package/dist/components/form/index.js.map +1 -1
  67. package/dist/components/form/password-field.d.ts.map +1 -1
  68. package/dist/components/form/password-field.js +32 -16
  69. package/dist/components/form/password-field.js.map +1 -1
  70. package/dist/components/form/text-area.d.ts.map +1 -1
  71. package/dist/components/form/text-area.js +32 -15
  72. package/dist/components/form/text-area.js.map +1 -1
  73. package/dist/components/form/text-field.d.ts.map +1 -1
  74. package/dist/components/form/text-field.js +37 -17
  75. package/dist/components/form/text-field.js.map +1 -1
  76. package/dist/components/form/use-form-navigation.d.ts +4 -0
  77. package/dist/components/form/use-form-navigation.d.ts.map +1 -1
  78. package/dist/components/form/use-form-navigation.js +35 -18
  79. package/dist/components/form/use-form-navigation.js.map +1 -1
  80. package/dist/components/form/with-left-border.d.ts.map +1 -1
  81. package/dist/components/form/with-left-border.js +2 -2
  82. package/dist/components/form/with-left-border.js.map +1 -1
  83. package/dist/components/icon.d.ts +3 -1
  84. package/dist/components/icon.d.ts.map +1 -1
  85. package/dist/components/icon.js +494 -469
  86. package/dist/components/icon.js.map +1 -1
  87. package/dist/components/list.d.ts +11 -7
  88. package/dist/components/list.d.ts.map +1 -1
  89. package/dist/components/list.js +170 -38
  90. package/dist/components/list.js.map +1 -1
  91. package/dist/components/loading-bar.js +1 -1
  92. package/dist/components/loading-bar.js.map +1 -1
  93. package/dist/descendants.d.ts.map +1 -1
  94. package/dist/descendants.js +8 -5
  95. package/dist/descendants.js.map +1 -1
  96. package/dist/examples/action-show-in-finder.js +1 -1
  97. package/dist/examples/action-show-in-finder.js.map +1 -1
  98. package/dist/examples/environment-test.js +1 -1
  99. package/dist/examples/environment-test.js.map +1 -1
  100. package/dist/examples/error-boundary.js +1 -1
  101. package/dist/examples/error-boundary.js.map +1 -1
  102. package/dist/examples/form-basic.d.ts.map +1 -1
  103. package/dist/examples/form-basic.js +2 -2
  104. package/dist/examples/form-basic.js.map +1 -1
  105. package/dist/examples/form-dropdown.js +1 -1
  106. package/dist/examples/form-dropdown.js.map +1 -1
  107. package/dist/examples/form-scroll.d.ts +2 -0
  108. package/dist/examples/form-scroll.d.ts.map +1 -0
  109. package/dist/examples/form-scroll.js +8 -0
  110. package/dist/examples/form-scroll.js.map +1 -0
  111. package/dist/examples/form-tagpicker.js +1 -1
  112. package/dist/examples/form-tagpicker.js.map +1 -1
  113. package/dist/examples/internal/descendants-filtering.js +8 -3
  114. package/dist/examples/internal/descendants-filtering.js.map +1 -1
  115. package/dist/examples/internal/descendants.js +10 -3
  116. package/dist/examples/internal/descendants.js.map +1 -1
  117. package/dist/examples/internal/rhf-custom-ref.d.ts +2 -0
  118. package/dist/examples/internal/rhf-custom-ref.d.ts.map +1 -0
  119. package/dist/examples/internal/rhf-custom-ref.js +67 -0
  120. package/dist/examples/internal/rhf-custom-ref.js.map +1 -0
  121. package/dist/examples/internal/scrollbox-demo.js +3 -7
  122. package/dist/examples/internal/scrollbox-demo.js.map +1 -1
  123. package/dist/examples/internal/scrollbox-with-descendants.d.ts +2 -0
  124. package/dist/examples/internal/scrollbox-with-descendants.d.ts.map +1 -0
  125. package/dist/examples/internal/scrollbox-with-descendants.js +63 -0
  126. package/dist/examples/internal/scrollbox-with-descendants.js.map +1 -0
  127. package/dist/examples/internal/simple-dialog.js +1 -1
  128. package/dist/examples/internal/simple-dialog.js.map +1 -1
  129. package/dist/examples/internal/simple-scrollbox.js +2 -3
  130. package/dist/examples/internal/simple-scrollbox.js.map +1 -1
  131. package/dist/examples/internal/text-stacking.js +4 -2
  132. package/dist/examples/internal/text-stacking.js.map +1 -1
  133. package/dist/examples/list-dropdown-default.js +1 -1
  134. package/dist/examples/list-dropdown-default.js.map +1 -1
  135. package/dist/examples/list-fetch-data.js +1 -1
  136. package/dist/examples/list-fetch-data.js.map +1 -1
  137. package/dist/examples/list-scrollbox.d.ts +2 -0
  138. package/dist/examples/list-scrollbox.d.ts.map +1 -0
  139. package/dist/examples/list-scrollbox.js +29 -0
  140. package/dist/examples/list-scrollbox.js.map +1 -0
  141. package/dist/examples/list-with-detail.js +1 -1
  142. package/dist/examples/list-with-detail.js.map +1 -1
  143. package/dist/examples/list-with-dropdown.js +1 -1
  144. package/dist/examples/list-with-dropdown.js.map +1 -1
  145. package/dist/examples/list-with-sections.js +3 -3
  146. package/dist/examples/list-with-sections.js.map +1 -1
  147. package/dist/examples/miscellaneous.js +1 -1
  148. package/dist/examples/miscellaneous.js.map +1 -1
  149. package/dist/examples/nested-navigation.js +4 -2
  150. package/dist/examples/nested-navigation.js.map +1 -1
  151. package/dist/examples/preferences-test.js +1 -1
  152. package/dist/examples/preferences-test.js.map +1 -1
  153. package/dist/examples/simple-dropdown.js +1 -1
  154. package/dist/examples/simple-dropdown.js.map +1 -1
  155. package/dist/examples/simple-file-picker.js +1 -1
  156. package/dist/examples/simple-file-picker.js.map +1 -1
  157. package/dist/examples/simple-grid.js +1 -1
  158. package/dist/examples/simple-grid.js.map +1 -1
  159. package/dist/examples/simple-hud.js +1 -1
  160. package/dist/examples/simple-hud.js.map +1 -1
  161. package/dist/examples/simple-list-search.js +1 -1
  162. package/dist/examples/simple-list-search.js.map +1 -1
  163. package/dist/examples/simple-list.js +1 -1
  164. package/dist/examples/simple-list.js.map +1 -1
  165. package/dist/examples/simple-navigation.js +4 -2
  166. package/dist/examples/simple-navigation.js.map +1 -1
  167. package/dist/examples/store.js +1 -1
  168. package/dist/examples/store.js.map +1 -1
  169. package/dist/examples/submodule-diff.d.ts +2 -0
  170. package/dist/examples/submodule-diff.d.ts.map +1 -0
  171. package/dist/examples/submodule-diff.js +99 -0
  172. package/dist/examples/submodule-diff.js.map +1 -0
  173. package/dist/examples/tanstack-demo.js +1 -1
  174. package/dist/examples/tanstack-demo.js.map +1 -1
  175. package/dist/examples/use-promise-demo.js +1 -1
  176. package/dist/examples/use-promise-demo.js.map +1 -1
  177. package/dist/extensions/dev.d.ts +8 -0
  178. package/dist/extensions/dev.d.ts.map +1 -1
  179. package/dist/extensions/dev.js +53 -28
  180. package/dist/extensions/dev.js.map +1 -1
  181. package/dist/extensions/home.d.ts.map +1 -1
  182. package/dist/extensions/home.js +16 -91
  183. package/dist/extensions/home.js.map +1 -1
  184. package/dist/globals.js +1 -1
  185. package/dist/globals.js.map +1 -1
  186. package/dist/index.d.ts +3 -1
  187. package/dist/index.d.ts.map +1 -1
  188. package/dist/index.js +5 -1
  189. package/dist/index.js.map +1 -1
  190. package/dist/internal/date-picker-widget.d.ts.map +1 -1
  191. package/dist/internal/date-picker-widget.js +56 -48
  192. package/dist/internal/date-picker-widget.js.map +1 -1
  193. package/dist/internal/dialog.d.ts.map +1 -1
  194. package/dist/internal/dialog.js +7 -7
  195. package/dist/internal/dialog.js.map +1 -1
  196. package/dist/internal/scrollbox.d.ts +2 -1
  197. package/dist/internal/scrollbox.d.ts.map +1 -1
  198. package/dist/internal/scrollbox.js +13 -7
  199. package/dist/internal/scrollbox.js.map +1 -1
  200. package/dist/release.d.ts +11 -0
  201. package/dist/release.d.ts.map +1 -0
  202. package/dist/release.js +113 -0
  203. package/dist/release.js.map +1 -0
  204. package/dist/state.d.ts +1 -0
  205. package/dist/state.d.ts.map +1 -1
  206. package/dist/state.js +1 -0
  207. package/dist/state.js.map +1 -1
  208. package/dist/theme.d.ts +11 -8
  209. package/dist/theme.d.ts.map +1 -1
  210. package/dist/theme.js +31 -8
  211. package/dist/theme.js.map +1 -1
  212. package/dist/utils/run-command.d.ts +22 -0
  213. package/dist/utils/run-command.d.ts.map +1 -0
  214. package/dist/utils/run-command.js +127 -0
  215. package/dist/utils/run-command.js.map +1 -0
  216. package/dist/utils.d.ts +1 -1
  217. package/dist/utils.d.ts.map +1 -1
  218. package/dist/utils.js +5 -3
  219. package/dist/utils.js.map +1 -1
  220. package/package.json +10 -7
  221. package/src/apis/toast.tsx +38 -17
  222. package/src/build.tsx +5 -3
  223. package/src/cli.tsx +46 -0
  224. package/src/colors.tsx +22 -1
  225. package/src/compile.tsx +219 -0
  226. package/src/components/actions.tsx +7 -1
  227. package/src/components/command-arguments.tsx +81 -0
  228. package/src/components/detail.tsx +26 -58
  229. package/src/components/dropdown.tsx +108 -23
  230. package/src/components/extension-preferences.tsx +55 -35
  231. package/src/components/form/checkbox.tsx +13 -5
  232. package/src/components/form/date-picker.tsx +24 -29
  233. package/src/components/form/description.tsx +35 -7
  234. package/src/components/form/dropdown.tsx +16 -30
  235. package/src/components/form/file-autocomplete.tsx +87 -77
  236. package/src/components/form/file-picker.tsx +69 -57
  237. package/src/components/form/form-ref.tsx +68 -0
  238. package/src/components/form/index.tsx +152 -41
  239. package/src/components/form/password-field.tsx +35 -22
  240. package/src/components/form/text-area.tsx +78 -58
  241. package/src/components/form/text-field.tsx +82 -61
  242. package/src/components/form/use-form-navigation.tsx +43 -23
  243. package/src/components/form/with-left-border.tsx +2 -1
  244. package/src/components/icon.tsx +497 -469
  245. package/src/components/list.tsx +279 -112
  246. package/src/components/loading-bar.tsx +1 -1
  247. package/src/descendants.tsx +15 -5
  248. package/src/examples/action-show-in-finder.tsx +1 -1
  249. package/src/examples/environment-test.tsx +1 -1
  250. package/src/examples/error-boundary.tsx +1 -1
  251. package/src/examples/file-autocomplete.vitest.tsx +245 -0
  252. package/src/examples/form-basic.tsx +12 -12
  253. package/src/examples/form-basic.vitest.tsx +297 -671
  254. package/src/examples/form-dropdown.tsx +1 -1
  255. package/src/examples/form-dropdown.vitest.tsx +353 -221
  256. package/src/examples/form-scroll.tsx +56 -0
  257. package/src/examples/form-scroll.vitest.tsx +228 -0
  258. package/src/examples/form-tagpicker.tsx +1 -1
  259. package/src/examples/form-tagpicker.vitest.tsx +438 -193
  260. package/src/examples/internal/descendants-filtering.tsx +13 -5
  261. package/src/examples/internal/descendants.tsx +17 -5
  262. package/src/examples/internal/rhf-custom-ref.tsx +152 -0
  263. package/src/examples/internal/scrollbox-demo.tsx +15 -7
  264. package/src/examples/internal/scrollbox-with-descendants.tsx +94 -0
  265. package/src/examples/internal/simple-dialog.tsx +1 -1
  266. package/src/examples/internal/simple-scrollbox.tsx +8 -5
  267. package/src/examples/internal/simple-scrollbox.vitest.tsx +47 -37
  268. package/src/examples/internal/text-stacking.tsx +4 -2
  269. package/src/examples/list-dropdown-default.tsx +1 -1
  270. package/src/examples/list-dropdown-default.vitest.tsx +136 -71
  271. package/src/examples/list-fetch-data.tsx +1 -1
  272. package/src/examples/list-fetch-data.vitest.tsx +42 -33
  273. package/src/examples/list-scrollbox.tsx +46 -0
  274. package/src/examples/list-scrollbox.vitest.tsx +103 -0
  275. package/src/examples/list-with-detail.tsx +1 -1
  276. package/src/examples/list-with-detail.vitest.tsx +290 -294
  277. package/src/examples/list-with-dropdown.tsx +1 -1
  278. package/src/examples/list-with-dropdown.vitest.tsx +190 -150
  279. package/src/examples/list-with-sections.tsx +12 -1
  280. package/src/examples/list-with-sections.vitest.tsx +390 -218
  281. package/src/examples/miscellaneous.tsx +1 -1
  282. package/src/examples/nested-navigation.tsx +4 -2
  283. package/src/examples/preferences-test.tsx +1 -1
  284. package/src/examples/simple-dropdown.tsx +1 -1
  285. package/src/examples/simple-file-picker.tsx +1 -1
  286. package/src/examples/simple-file-picker.vitest.tsx +538 -132
  287. package/src/examples/simple-grid.tsx +1 -1
  288. package/src/examples/simple-grid.vitest.tsx +258 -234
  289. package/src/examples/simple-hud.tsx +1 -1
  290. package/src/examples/simple-list-search.tsx +1 -1
  291. package/src/examples/simple-list.tsx +1 -1
  292. package/src/examples/simple-navigation.tsx +4 -2
  293. package/src/examples/simple-navigation.vitest.tsx +434 -238
  294. package/src/examples/store.tsx +1 -1
  295. package/src/examples/store.vitest.tsx +31 -10
  296. package/src/examples/submodule-diff.tsx +153 -0
  297. package/src/examples/tanstack-demo.tsx +1 -1
  298. package/src/examples/use-promise-demo.tsx +1 -1
  299. package/src/extensions/dev.tsx +74 -36
  300. package/src/extensions/dev.vitest.tsx +220 -0
  301. package/src/extensions/home.tsx +17 -118
  302. package/src/globals.ts +1 -1
  303. package/src/index.tsx +7 -1
  304. package/src/internal/date-picker-widget.tsx +56 -46
  305. package/src/internal/dialog.tsx +6 -6
  306. package/src/internal/scrollbox.tsx +15 -5
  307. package/src/release.tsx +159 -0
  308. package/src/state.tsx +2 -0
  309. package/src/store-api/search.test.tsx +4 -13
  310. package/src/theme.tsx +33 -8
  311. package/src/utils/run-command.tsx +204 -0
  312. package/src/utils.tsx +5 -3
  313. package/dist/ai.d.ts +0 -104
  314. package/dist/ai.d.ts.map +0 -1
  315. package/dist/ai.js +0 -135
  316. package/dist/ai.js.map +0 -1
  317. package/dist/apis/cache.test.d.ts +0 -2
  318. package/dist/apis/cache.test.d.ts.map +0 -1
  319. package/dist/apis/cache.test.js +0 -246
  320. package/dist/apis/cache.test.js.map +0 -1
  321. package/dist/apis/localstorage.test.d.ts +0 -2
  322. package/dist/apis/localstorage.test.d.ts.map +0 -1
  323. package/dist/apis/localstorage.test.js +0 -131
  324. package/dist/apis/localstorage.test.js.map +0 -1
  325. package/dist/apis/toast.test.d.ts +0 -2
  326. package/dist/apis/toast.test.d.ts.map +0 -1
  327. package/dist/apis/toast.test.js +0 -67
  328. package/dist/apis/toast.test.js.map +0 -1
  329. package/dist/build.test.d.ts +0 -2
  330. package/dist/build.test.d.ts.map +0 -1
  331. package/dist/build.test.js +0 -73
  332. package/dist/build.test.js.map +0 -1
  333. package/dist/cache.d.ts +0 -32
  334. package/dist/cache.d.ts.map +0 -1
  335. package/dist/cache.js +0 -205
  336. package/dist/cache.js.map +0 -1
  337. package/dist/cache.test.d.ts +0 -2
  338. package/dist/cache.test.d.ts.map +0 -1
  339. package/dist/cache.test.js +0 -246
  340. package/dist/cache.test.js.map +0 -1
  341. package/dist/clipboard.d.ts +0 -36
  342. package/dist/clipboard.d.ts.map +0 -1
  343. package/dist/clipboard.js +0 -154
  344. package/dist/clipboard.js.map +0 -1
  345. package/dist/components/form/form-type-only.d.ts +0 -174
  346. package/dist/components/form/form-type-only.d.ts.map +0 -1
  347. package/dist/components/form/form-type-only.js +0 -2
  348. package/dist/components/form/form-type-only.js.map +0 -1
  349. package/dist/components/form/use-form-handling.d.ts +0 -4
  350. package/dist/components/form/use-form-handling.d.ts.map +0 -1
  351. package/dist/components/form/use-form-handling.js +0 -37
  352. package/dist/components/form/use-form-handling.js.map +0 -1
  353. package/dist/dev-ui.d.ts +0 -7
  354. package/dist/dev-ui.d.ts.map +0 -1
  355. package/dist/dev-ui.js +0 -118
  356. package/dist/dev-ui.js.map +0 -1
  357. package/dist/environment.d.ts +0 -63
  358. package/dist/environment.d.ts.map +0 -1
  359. package/dist/environment.js +0 -189
  360. package/dist/environment.js.map +0 -1
  361. package/dist/examples/datepicker.d.ts +0 -2
  362. package/dist/examples/datepicker.d.ts.map +0 -1
  363. package/dist/examples/datepicker.js +0 -344
  364. package/dist/examples/datepicker.js.map +0 -1
  365. package/dist/examples/form-basic-arrow-keys.vitest.d.ts +0 -2
  366. package/dist/examples/form-basic-arrow-keys.vitest.d.ts.map +0 -1
  367. package/dist/examples/form-basic-arrow-keys.vitest.js +0 -46
  368. package/dist/examples/form-basic-arrow-keys.vitest.js.map +0 -1
  369. package/dist/examples/form-basic.vitest.d.ts +0 -2
  370. package/dist/examples/form-basic.vitest.d.ts.map +0 -1
  371. package/dist/examples/form-basic.vitest.js +0 -995
  372. package/dist/examples/form-basic.vitest.js.map +0 -1
  373. package/dist/examples/form-dropdown-with-sections.d.ts +0 -2
  374. package/dist/examples/form-dropdown-with-sections.d.ts.map +0 -1
  375. package/dist/examples/form-dropdown-with-sections.js +0 -13
  376. package/dist/examples/form-dropdown-with-sections.js.map +0 -1
  377. package/dist/examples/form-dropdown-with-sections.vitest.d.ts +0 -2
  378. package/dist/examples/form-dropdown-with-sections.vitest.d.ts.map +0 -1
  379. package/dist/examples/form-dropdown-with-sections.vitest.js +0 -75
  380. package/dist/examples/form-dropdown-with-sections.vitest.js.map +0 -1
  381. package/dist/examples/form-dropdown.vitest.d.ts +0 -2
  382. package/dist/examples/form-dropdown.vitest.d.ts.map +0 -1
  383. package/dist/examples/form-dropdown.vitest.js +0 -722
  384. package/dist/examples/form-dropdown.vitest.js.map +0 -1
  385. package/dist/examples/form-multiselect-dropdown.d.ts +0 -2
  386. package/dist/examples/form-multiselect-dropdown.d.ts.map +0 -1
  387. package/dist/examples/form-multiselect-dropdown.js +0 -13
  388. package/dist/examples/form-multiselect-dropdown.js.map +0 -1
  389. package/dist/examples/form-tagpicker.vitest.d.ts +0 -2
  390. package/dist/examples/form-tagpicker.vitest.d.ts.map +0 -1
  391. package/dist/examples/form-tagpicker.vitest.js +0 -491
  392. package/dist/examples/form-tagpicker.vitest.js.map +0 -1
  393. package/dist/examples/internal/nested-boxes.d.ts +0 -2
  394. package/dist/examples/internal/nested-boxes.d.ts.map +0 -1
  395. package/dist/examples/internal/nested-boxes.js +0 -7
  396. package/dist/examples/internal/nested-boxes.js.map +0 -1
  397. package/dist/examples/internal/simple-scrollbox.vitest.d.ts +0 -2
  398. package/dist/examples/internal/simple-scrollbox.vitest.d.ts.map +0 -1
  399. package/dist/examples/internal/simple-scrollbox.vitest.js +0 -88
  400. package/dist/examples/internal/simple-scrollbox.vitest.js.map +0 -1
  401. package/dist/examples/internal/unicode-square-repro.d.ts +0 -2
  402. package/dist/examples/internal/unicode-square-repro.d.ts.map +0 -1
  403. package/dist/examples/internal/unicode-square-repro.js +0 -7
  404. package/dist/examples/internal/unicode-square-repro.js.map +0 -1
  405. package/dist/examples/list-dropdown-default.vitest.d.ts +0 -2
  406. package/dist/examples/list-dropdown-default.vitest.d.ts.map +0 -1
  407. package/dist/examples/list-dropdown-default.vitest.js +0 -164
  408. package/dist/examples/list-dropdown-default.vitest.js.map +0 -1
  409. package/dist/examples/list-fetch-data.vitest.d.ts +0 -2
  410. package/dist/examples/list-fetch-data.vitest.d.ts.map +0 -1
  411. package/dist/examples/list-fetch-data.vitest.js +0 -103
  412. package/dist/examples/list-fetch-data.vitest.js.map +0 -1
  413. package/dist/examples/list-filter-navigation.d.ts +0 -2
  414. package/dist/examples/list-filter-navigation.d.ts.map +0 -1
  415. package/dist/examples/list-filter-navigation.js +0 -8
  416. package/dist/examples/list-filter-navigation.js.map +0 -1
  417. package/dist/examples/list-with-detail.vitest.d.ts +0 -2
  418. package/dist/examples/list-with-detail.vitest.d.ts.map +0 -1
  419. package/dist/examples/list-with-detail.vitest.js +0 -438
  420. package/dist/examples/list-with-detail.vitest.js.map +0 -1
  421. package/dist/examples/list-with-dropdown.vitest.d.ts +0 -2
  422. package/dist/examples/list-with-dropdown.vitest.d.ts.map +0 -1
  423. package/dist/examples/list-with-dropdown.vitest.js +0 -297
  424. package/dist/examples/list-with-dropdown.vitest.js.map +0 -1
  425. package/dist/examples/list-with-sections.vitest.d.ts +0 -2
  426. package/dist/examples/list-with-sections.vitest.d.ts.map +0 -1
  427. package/dist/examples/list-with-sections.vitest.js +0 -441
  428. package/dist/examples/list-with-sections.vitest.js.map +0 -1
  429. package/dist/examples/simple-file-picker.vitest.d.ts +0 -2
  430. package/dist/examples/simple-file-picker.vitest.d.ts.map +0 -1
  431. package/dist/examples/simple-file-picker.vitest.js +0 -277
  432. package/dist/examples/simple-file-picker.vitest.js.map +0 -1
  433. package/dist/examples/simple-grid.vitest.d.ts +0 -2
  434. package/dist/examples/simple-grid.vitest.d.ts.map +0 -1
  435. package/dist/examples/simple-grid.vitest.js +0 -498
  436. package/dist/examples/simple-grid.vitest.js.map +0 -1
  437. package/dist/examples/simple-navigation.vitest.d.ts +0 -2
  438. package/dist/examples/simple-navigation.vitest.d.ts.map +0 -1
  439. package/dist/examples/simple-navigation.vitest.js +0 -522
  440. package/dist/examples/simple-navigation.vitest.js.map +0 -1
  441. package/dist/examples/store.vitest.d.ts +0 -2
  442. package/dist/examples/store.vitest.d.ts.map +0 -1
  443. package/dist/examples/store.vitest.js +0 -48
  444. package/dist/examples/store.vitest.js.map +0 -1
  445. package/dist/home-command.d.ts +0 -8
  446. package/dist/home-command.d.ts.map +0 -1
  447. package/dist/home-command.js +0 -181
  448. package/dist/home-command.js.map +0 -1
  449. package/dist/hooks/hooks.test.d.ts +0 -2
  450. package/dist/hooks/hooks.test.d.ts.map +0 -1
  451. package/dist/hooks/hooks.test.js +0 -37
  452. package/dist/hooks/hooks.test.js.map +0 -1
  453. package/dist/hover-repro.d.ts +0 -2
  454. package/dist/hover-repro.d.ts.map +0 -1
  455. package/dist/hover-repro.js +0 -20
  456. package/dist/hover-repro.js.map +0 -1
  457. package/dist/localstorage.d.ts +0 -13
  458. package/dist/localstorage.d.ts.map +0 -1
  459. package/dist/localstorage.js +0 -190
  460. package/dist/localstorage.js.map +0 -1
  461. package/dist/localstorage.test.d.ts +0 -2
  462. package/dist/localstorage.test.d.ts.map +0 -1
  463. package/dist/localstorage.test.js +0 -131
  464. package/dist/localstorage.test.js.map +0 -1
  465. package/dist/oauth.d.ts +0 -142
  466. package/dist/oauth.d.ts.map +0 -1
  467. package/dist/oauth.js +0 -551
  468. package/dist/oauth.js.map +0 -1
  469. package/dist/preferences.d.ts +0 -23
  470. package/dist/preferences.d.ts.map +0 -1
  471. package/dist/preferences.js +0 -105
  472. package/dist/preferences.js.map +0 -1
  473. package/dist/store-api/download.test.d.ts +0 -2
  474. package/dist/store-api/download.test.d.ts.map +0 -1
  475. package/dist/store-api/download.test.js +0 -36
  476. package/dist/store-api/download.test.js.map +0 -1
  477. package/dist/store-api/extension.test.d.ts +0 -2
  478. package/dist/store-api/extension.test.d.ts.map +0 -1
  479. package/dist/store-api/extension.test.js +0 -22
  480. package/dist/store-api/extension.test.js.map +0 -1
  481. package/dist/store-api/search.test.d.ts +0 -2
  482. package/dist/store-api/search.test.d.ts.map +0 -1
  483. package/dist/store-api/search.test.js +0 -45
  484. package/dist/store-api/search.test.js.map +0 -1
  485. package/dist/store.d.ts +0 -21
  486. package/dist/store.d.ts.map +0 -1
  487. package/dist/store.js +0 -84
  488. package/dist/store.js.map +0 -1
  489. package/dist/toast.d.ts +0 -44
  490. package/dist/toast.d.ts.map +0 -1
  491. package/dist/toast.js +0 -221
  492. package/dist/toast.js.map +0 -1
  493. package/dist/utils.test.d.ts +0 -2
  494. package/dist/utils.test.d.ts.map +0 -1
  495. package/dist/utils.test.js +0 -152
  496. package/dist/utils.test.js.map +0 -1
  497. package/dist/window.d.ts +0 -12
  498. package/dist/window.d.ts.map +0 -1
  499. package/dist/window.js +0 -48
  500. package/dist/window.js.map +0 -1
@@ -1,22 +1,23 @@
1
- // node-pty does not work in bun, so we use vitest to run this test
2
1
  import { test, expect, afterEach, beforeEach } from 'vitest'
3
- import { NodeTuiDriver } from 'termcast/src/e2e-node'
2
+ import { launchTerminal, Session } from 'tuistory/src'
4
3
 
5
- let driver: NodeTuiDriver
4
+ let session: Session
6
5
 
7
- beforeEach(() => {
8
- driver = new NodeTuiDriver('bun', ['src/examples/form-basic.tsx'], {
6
+ beforeEach(async () => {
7
+ session = await launchTerminal({
8
+ command: 'bun',
9
+ args: ['src/examples/form-basic.tsx'],
9
10
  cols: 70,
10
11
  rows: 50,
11
12
  })
12
13
  })
13
14
 
14
15
  afterEach(() => {
15
- driver?.dispose()
16
+ session?.close()
16
17
  })
17
18
 
18
19
  test('form basic navigation and input', async () => {
19
- await driver.text({
20
+ await session.text({
20
21
  waitFor: (text) => {
21
22
  // wait for form to show up
22
23
  return /Form Component Demo/i.test(text)
@@ -24,17 +25,20 @@ test('form basic navigation and input', async () => {
24
25
  })
25
26
 
26
27
  // Small delay to ensure all form components are rendered
27
- await driver.waitIdle()
28
+ await session.waitIdle()
28
29
 
29
- const initialSnapshot = await driver.text()
30
+ const initialSnapshot = await session.text()
30
31
  expect(initialSnapshot).toMatchInlineSnapshot(`
31
32
  "
32
33
 
33
- Form Component Demo
34
- This demonstrates all available form input types. Use arrow key
35
-
36
- Username
34
+
35
+ Form Component Demo █
36
+ ┃ This demonstrates all available form input types. Use arrow █
37
+ keys or Tab to navigate between fields.
38
+
39
+ ◇ Username
37
40
  │ Enter your username
41
+
38
42
  │ Required field
39
43
 
40
44
  ◇ Password
@@ -70,92 +74,47 @@ test('form basic navigation and input', async () => {
70
74
  ◇ Date of Birth
71
75
 
72
76
  │ ← 2025 →
73
- │ ← October
74
-
75
- │ Mo Tu We Th Fr Sa Su
76
- │ 1 2 3 4 5
77
- │ 6 7 8 9 10 11 12
78
- │ 13 14 15 16 17 18 19
79
- │ 20 21 22 23 24 25 26
80
- │ 27 28 29 30 31"
81
- `)
82
-
83
- // Type in username field
84
- await driver.keys.type('johndoe')
77
+ │ ← December
78
+
85
79
 
86
- const afterUsernameSnapshot = await driver.text()
87
- expect(afterUsernameSnapshot).toMatchInlineSnapshot(`
88
- "
89
80
 
90
- Form Component Demo
91
- │ This demonstrates all available form input types. Use arrow key
92
-
93
- ◆ Username
94
- │ johndoe
95
- │ Required field
96
-
97
- ◇ Password
98
- │ Enter secure password
99
- │ Must be at least 8 characters
100
-
101
- ◇ Biography
102
- │ Tell us about yourself...
103
-
104
-
105
-
106
-
107
- │ Maximum 500 characters
108
-
109
- ◇ Email Preferences
110
- │ ○ Subscribe to newsletter
111
-
112
- │ Receive weekly updates
113
-
114
- ◇ Country
115
- │ Select your country
116
-
117
- │ Americas
118
- │ ○ United States
119
- │ ○ Canada
120
- │ ○ Mexico
121
- │ Europe
122
- │ ○ United Kingdom
123
- │ ↑↓ to see more options
124
-
125
- │ Your country of residence
126
-
127
- ◇ Date of Birth
128
-
129
- │ ← 2025 →
130
- │ ← October →
131
-
132
- │ Mo Tu We Th Fr Sa Su
133
- │ 1 2 3 4 5
134
- │ 6 7 8 9 10 11 12
135
- │ 13 14 15 16 17 18 19
136
- │ 20 21 22 23 24 25 26
137
- │ 27 28 29 30 31"
81
+ ctrl submit ↑↓ navigate ^k actions"
138
82
  `)
83
+ }, 10000)
84
+
85
+ test('password field always shows asterisks and submits real value', async () => {
86
+ await session.text({
87
+ waitFor: (text) => {
88
+ return /Form Component Demo/i.test(text)
89
+ },
90
+ })
139
91
 
140
92
  // Tab to password field
141
- await driver.keys.tab()
142
- await driver.keys.type('securepass123')
93
+ await session.press('tab')
94
+
95
+ // Type password - should show asterisks
96
+ await session.type('secret123')
143
97
 
144
- const afterPasswordSnapshot = await driver.text()
145
- expect(afterPasswordSnapshot).toMatchInlineSnapshot(`
98
+ const passwordTypingSnapshot = await session.text({
99
+ waitFor: (text) => text.includes('*********'),
100
+ })
101
+ expect(passwordTypingSnapshot).toMatchInlineSnapshot(`
146
102
  "
147
103
 
148
- Form Component Demo
149
- This demonstrates all available form input types. Use arrow key
104
+
105
+ Form Component Demo █
106
+ │ This demonstrates all available form input types. Use arrow █
107
+ │ keys or Tab to navigate between fields.
150
108
 
151
109
  ◇ Username
152
- johndoe
110
+ s
111
+
153
112
  │ Required field
154
113
 
155
114
  ◆ Password
156
- securepass123
157
- Must be at least 8 characters
158
-
115
+ ***************
116
+ Must be at least 8 characters
117
+
159
118
  ◇ Biography
160
119
  │ Tell us about yourself...
161
120
 
@@ -185,43 +144,42 @@ test('form basic navigation and input', async () => {
185
144
  ◇ Date of Birth
186
145
 
187
146
  │ ← 2025 →
188
- │ ← October
189
-
190
- │ Mo Tu We Th Fr Sa Su
191
- │ 1 2 3 4 5
192
- │ 6 7 8 9 10 11 12
193
- │ 13 14 15 16 17 18 19
194
- │ 20 21 22 23 24 25 26
195
- │ 27 28 29 30 31"
147
+ │ ← December
148
+
149
+
150
+
151
+ ctrl submit ↑↓ navigate ^k actions"
196
152
  `)
197
153
 
198
- // Tab to biography field
199
- await driver.keys.tab()
200
- await driver.keys.type('I am a software developer')
154
+ // Tab away - password should now show asterisks
155
+ await session.press('tab')
201
156
 
202
- const afterBioSnapshot = await driver.text()
203
- expect(afterBioSnapshot).toMatchInlineSnapshot(`
157
+ const passwordUnfocusedSnapshot = await session.text()
158
+ expect(passwordUnfocusedSnapshot).toMatchInlineSnapshot(`
204
159
  "
205
160
 
206
- Form Component Demo
207
- This demonstrates all available form input types. Use arrow key
161
+
162
+ Form Component Demo █
163
+ │ This demonstrates all available form input types. Use arrow █
164
+ │ keys or Tab to navigate between fields.
208
165
 
209
166
  ◇ Username
210
- johndoe
167
+ s
168
+
211
169
  │ Required field
212
170
 
213
171
  ◇ Password
214
- *************
172
+ ***************
215
173
  │ Must be at least 8 characters
216
174
 
217
175
  ◆ Biography
218
- I am a software developer
219
-
220
-
221
-
222
-
223
- Maximum 500 characters
224
-
176
+ Tell us about yourself...
177
+
178
+
179
+
180
+
181
+ Maximum 500 characters
182
+
225
183
  ◇ Email Preferences
226
184
  │ ○ Subscribe to newsletter
227
185
 
@@ -243,340 +201,67 @@ test('form basic navigation and input', async () => {
243
201
  ◇ Date of Birth
244
202
 
245
203
  │ ← 2025 →
246
- │ ← October
247
-
248
- │ Mo Tu We Th Fr Sa Su
249
- │ 1 2 3 4 5
250
- │ 6 7 8 9 10 11 12
251
- │ 13 14 15 16 17 18 19
252
- │ 20 21 22 23 24 25 26
253
- │ 27 28 29 30 31"
254
- `)
255
-
256
- // Tab to newsletter checkbox and toggle it
257
- await driver.keys.tab()
258
- await driver.keys.space()
259
-
260
- const afterCheckboxSnapshot = await driver.text()
261
- expect(afterCheckboxSnapshot).toMatchInlineSnapshot(`
262
- "
263
-
264
- Form Component Demo
265
- │ This demonstrates all available form input types. Use arrow key
266
-
267
- ◇ Username
268
- │ johndoe
269
- │ Required field
270
-
271
- ◇ Password
272
- │ *************
273
- │ Must be at least 8 characters
274
-
275
- ◇ Biography
276
- │ I am a software developer
277
-
278
-
279
-
280
-
281
- │ Maximum 500 characters
282
-
283
- ◆ Email Preferences
284
- │ ● Subscribe to newsletter
285
-
286
- │ Receive weekly updates
287
-
288
- ◇ Country
289
- │ Select your country
290
-
291
- │ Americas
292
- │ ○ United States
293
- │ ○ Canada
294
- │ ○ Mexico
295
- │ Europe
296
- │ ○ United Kingdom
297
- │ ↑↓ to see more options
298
-
299
- │ Your country of residence
300
-
301
- ◇ Date of Birth
302
-
303
- │ ← 2025 →
304
- │ ← October →
305
-
306
- │ Mo Tu We Th Fr Sa Su
307
- │ 1 2 3 4 5
308
- │ 6 7 8 9 10 11 12
309
- │ 13 14 15 16 17 18 19
310
- │ 20 21 22 23 24 25 26
311
- │ 27 28 29 30 31"
312
- `)
313
-
314
- // Tab to country dropdown and select United States
315
- await driver.keys.tab()
316
- await driver.keys.space()
317
-
318
- const afterSelectUSSnapshot = await driver.text()
319
- expect(afterSelectUSSnapshot).toMatchInlineSnapshot(`
320
- "
321
-
322
- Form Component Demo
323
- │ This demonstrates all available form input types. Use arrow key
324
-
325
- ◇ Username
326
- │ johndoe
327
- │ Required field
328
-
329
- ◇ Password
330
- │ *************
331
- │ Must be at least 8 characters
332
-
333
- ◇ Biography
334
- │ I am a software developer
335
-
336
-
337
-
338
-
339
- │ Maximum 500 characters
340
-
341
- ◇ Email Preferences
342
- │ ● Subscribe to newsletter
343
-
344
- │ Receive weekly updates
345
-
346
- ◆ Country
347
- │ United States
348
-
349
- │ Americas
350
- │› ● United States
351
- │ ○ Canada
352
- │ ○ Mexico
353
- │ Europe
354
- │ ○ United Kingdom
355
- │ ↑↓ to see more options
356
-
357
- │ Your country of residence
358
-
359
- ◇ Date of Birth
360
-
361
- │ ← 2025 →
362
- │ ← October →
363
-
364
- │ Mo Tu We Th Fr Sa Su
365
- │ 1 2 3 4 5
366
- │ 6 7 8 9 10 11 12
367
- │ 13 14 15 16 17 18 19
368
- │ 20 21 22 23 24 25 26
369
- │ 27 28 29 30 31"
370
- `)
371
-
372
- // Select United States
373
- await driver.keys.enter()
374
-
375
- const afterCountrySelectSnapshot = await driver.text()
376
- expect(afterCountrySelectSnapshot).toMatchInlineSnapshot(`
377
- "
378
-
379
- Form Component Demo
380
- │ This demonstrates all available form input types. Use arrow key
381
-
382
- ◇ Username
383
- │ johndoe
384
- │ Required field
385
-
386
- ◇ Password
387
- │ *************
388
- │ Must be at least 8 characters
389
-
390
- ◇ Biography
391
- │ I am a software developer
392
-
393
-
394
-
395
-
396
- │ Maximum 500 characters
397
-
398
- ◇ Email Preferences
399
- │ ● Subscribe to newsletter
400
-
401
- │ Receive weekly updates
204
+ │ ← December
402
205
 
403
- ◆ Country
404
- │ United States
405
-
406
- │ Americas
407
- │› ● United States
408
- │ ○ Canada
409
- │ ○ Mexico
410
- │ Europe
411
- │ ○ United Kingdom
412
- │ ↑↓ to see more options
413
-
414
- │ Your country of residence
415
-
416
- ◇ Date of Birth
417
-
418
- │ ← 2025 →
419
- │ ← October →
420
-
421
- │ Mo Tu We Th Fr Sa Su
422
- │ 1 2 3 4 5
423
- │ 6 7 8 9 10 11 12
424
- │ 13 14 15 16 17 18 19
425
- │ 20 21 22 23 24 25 26
426
- │ 27 28 29 30 31"
427
- `)
428
-
429
- // Tab to date picker
430
- await driver.keys.tab()
431
- await driver.keys.type('1990-05-15')
432
206
 
433
- const afterDateSnapshot = await driver.text()
434
- expect(afterDateSnapshot).toMatchInlineSnapshot(`
435
- "
436
207
 
437
- Form Component Demo
438
- │ This demonstrates all available form input types. Use arrow key
439
-
440
- ◇ Username
441
- │ johndoe
442
- │ Required field
443
-
444
- ◇ Password
445
- │ *************
446
- │ Must be at least 8 characters
447
-
448
- ◇ Biography
449
- │ I am a software developer
450
-
451
-
452
-
453
-
454
- │ Maximum 500 characters
455
-
456
- ◇ Email Preferences
457
- │ ● Subscribe to newsletter
458
-
459
- │ Receive weekly updates
460
-
461
- ◇ Country
462
- │ United States
463
-
464
- │ Americas
465
- │ ● United States
466
- │ ○ Canada
467
- │ ○ Mexico
468
- │ Europe
469
- │ ○ United Kingdom
470
- │ ↑↓ to see more options
471
-
472
- │ Your country of residence
473
-
474
- ◆ Date of Birth
475
-
476
- │ ← 2025 →
477
- │ ← October →
478
-
479
- │ Mo Tu We Th Fr Sa Su
480
- │ 1 2 3 4 5
481
- │ 6 7 8 9 10 11 12
482
- │ 13 14 15 16 17 18 19
483
- │ 20 21 22 23 24 25 26
484
- │ 27 28 29 30 31"
208
+ ctrl submit ↑↓ navigate ^k actions"
485
209
  `)
486
210
 
487
- // Submit form with Cmd+Enter
488
- await driver.keys.cmdEnter()
489
-
490
- const afterSubmitSnapshot = await driver.text({
491
- waitFor: (text) => {
492
- // wait for submitted data to show
493
- return /Submitted Data:/i.test(text)
494
- },
211
+ // Submit form and check password value is real text not asterisks
212
+ await session.press(['ctrl', 'enter'])
213
+ await session.waitIdle()
214
+ // Scroll down to see submitted data
215
+ await session.scrollDown(10)
216
+ await session.scrollDown(10)
217
+ await session.scrollDown(10)
218
+ await session.scrollDown(10)
219
+ await session.scrollDown(10)
220
+ await session.scrollDown(10)
221
+ await session.scrollDown(10)
222
+ await session.scrollDown(200)
223
+
224
+ const submittedSnapshot = await session.text({
225
+ timeout: 3000,
226
+ waitFor: (text) => text.includes('"password"'),
495
227
  })
496
- expect(afterSubmitSnapshot).toMatchInlineSnapshot(`
497
- "
498
-
499
- Form Component Demo
500
- │ This demonstrates all available form input types. Use arrow key
501
-
502
- ◇ Username
503
- │ johndoe
504
- │ Required field
505
-
506
- ◇ Password
507
- │ *************
508
- │ Must be at least 8 characters
509
-
510
- ◇ Biography
511
- │ I am a software developer
512
-
513
-
514
-
515
-
516
- │ Maximum 500 characters
517
-
518
- ◇ Email Preferences
519
- │ ● Subscribe to newsletter
520
-
521
- │ Receive weekly updates
522
-
523
- ◇ Country
524
- │ United States
525
-
526
- │ Americas
527
- │ ● United States
528
- │ ○ Canada
529
- │ ○ Mexico
530
- │ Europe
531
- │ ○ United Kingdom
532
- │ ↑↓ to see more options
533
-
534
- │ Your country of residence
535
-
536
- ◆ Date of Birth
537
-
538
- │ ← 2025 →
539
- │ ← October →
540
-
541
- │ Mo Tu We Th Fr Sa Su
542
- │ 1 2 3 4 5
543
- │ 6 7 8 9 10 11 12
544
- │ 13 14 15 16 17 18 19
545
- │ 20 21 22 23 24 25 26
546
- │ 27 28 29 30 31"
547
- `)
548
- }, 15000)
228
+ expect(submittedSnapshot).toMatch(/"password": "s.+"/)
229
+ }, 10000)
549
230
 
550
- test('form navigation with shift+tab', async () => {
551
- await driver.text({
231
+ test('form date picker selection with space and enter', async () => {
232
+ await session.text({
552
233
  waitFor: (text) => {
553
- // wait for form to show up
554
234
  return /Form Component Demo/i.test(text)
555
235
  },
556
236
  })
557
237
 
558
- // Fill some fields first
559
- await driver.keys.type('testuser')
560
- await driver.keys.tab()
561
- await driver.keys.type('password')
562
- await driver.keys.tab()
238
+ // Navigate to dropdown, then space to select first item which focuses date picker
239
+ // (This is what the dropdown test does and "Selected:" shows in that case)
240
+ await session.press('tab') // -> password
241
+ await session.press('tab') // -> bio
242
+ await session.press('tab') // -> checkbox
243
+ await session.press('tab') // -> dropdown
244
+ await session.press('tab') // -> date picker
563
245
 
564
- const afterForwardTabSnapshot = await driver.text()
565
- expect(afterForwardTabSnapshot).toMatchInlineSnapshot(`
246
+ const datePickerFocusedSnapshot = await session.text()
247
+ expect(datePickerFocusedSnapshot).toMatchInlineSnapshot(`
566
248
  "
567
249
 
568
- Form Component Demo
569
- This demonstrates all available form input types. Use arrow key
250
+
251
+ Form Component Demo █
252
+ │ This demonstrates all available form input types. Use arrow █
253
+ │ keys or Tab to navigate between fields.
570
254
 
571
255
  ◇ Username
572
- testuser
256
+ Enter your username
257
+
573
258
  │ Required field
574
259
 
575
260
  ◇ Password
576
- ********
261
+ Enter secure password
577
262
  │ Must be at least 8 characters
578
263
 
579
- Biography
264
+ Biography
580
265
  │ Tell us about yourself...
581
266
 
582
267
 
@@ -589,105 +274,48 @@ test('form navigation with shift+tab', async () => {
589
274
 
590
275
  │ Receive weekly updates
591
276
 
592
- Country
593
- Select your country
594
-
595
- Americas
596
- ○ United States
597
- ○ Canada
598
- ○ Mexico
599
- Europe
600
- ○ United Kingdom
601
- ↑↓ to see more options
602
-
603
- Your country of residence
604
-
277
+ Country
278
+ Select your country
279
+
280
+ Americas
281
+ ┃› ○ United States
282
+ ○ Canada
283
+ ○ Mexico
284
+ Europe
285
+ ○ United Kingdom
286
+ ↑↓ to see more options
287
+
288
+ Your country of residence
289
+
605
290
  ◇ Date of Birth
606
291
 
607
292
  │ ← 2025 →
608
- │ ← October
609
-
610
- │ Mo Tu We Th Fr Sa Su
611
- │ 1 2 3 4 5
612
- │ 6 7 8 9 10 11 12
613
- │ 13 14 15 16 17 18 19
614
- │ 20 21 22 23 24 25 26
615
- │ 27 28 29 30 31"
616
- `)
617
-
618
- // Navigate backwards with Shift+Tab
619
- await driver.keys.shiftTab()
293
+ │ ← December
294
+
620
295
 
621
- const afterBackwardTabSnapshot = await driver.text()
622
- expect(afterBackwardTabSnapshot).toMatchInlineSnapshot(`
623
- "
624
296
 
625
- Form Component Demo
626
- │ This demonstrates all available form input types. Use arrow key
627
-
628
- ◇ Username
629
- │ testuser
630
- │ Required field
631
-
632
- ◆ Password
633
- │ password
634
- │ Must be at least 8 characters
635
-
636
- ◇ Biography
637
- │ Tell us about yourself...
638
-
639
-
640
-
641
-
642
- │ Maximum 500 characters
643
-
644
- ◇ Email Preferences
645
- │ ○ Subscribe to newsletter
646
-
647
- │ Receive weekly updates
648
-
649
- ◇ Country
650
- │ Select your country
651
-
652
- │ Americas
653
- │ ○ United States
654
- │ ○ Canada
655
- │ ○ Mexico
656
- │ Europe
657
- │ ○ United Kingdom
658
- │ ↑↓ to see more options
659
-
660
- │ Your country of residence
661
-
662
- ◇ Date of Birth
663
-
664
- │ ← 2025 →
665
- │ ← October →
666
-
667
- │ Mo Tu We Th Fr Sa Su
668
- │ 1 2 3 4 5
669
- │ 6 7 8 9 10 11 12
670
- │ 13 14 15 16 17 18 19
671
- │ 20 21 22 23 24 25 26
672
- │ 27 28 29 30 31"
297
+ ctrl submit ↑↓ navigate ^k actions"
673
298
  `)
674
299
 
675
- // Go back to username field
676
- await driver.keys.shiftTab()
300
+ // Select current date with space - should show "Selected:" text
301
+ await session.press('space')
677
302
 
678
- const backToUsernameSnapshot = await driver.text()
679
- expect(backToUsernameSnapshot).toMatchInlineSnapshot(`
303
+ const afterSpaceSelectSnapshot = await session.text()
304
+ expect(afterSpaceSelectSnapshot).toMatchInlineSnapshot(`
680
305
  "
681
306
 
682
- Form Component Demo
683
- This demonstrates all available form input types. Use arrow key
307
+
308
+ Form Component Demo █
309
+ │ This demonstrates all available form input types. Use arrow █
310
+ │ keys or Tab to navigate between fields.
311
+
312
+ ◇ Username
313
+ │ Enter your username
684
314
 
685
- ◆ Username
686
- │ testuser
687
315
  │ Required field
688
316
 
689
317
  ◇ Password
690
- ********
318
+ Enter secure password
691
319
  │ Must be at least 8 characters
692
320
 
693
321
  ◇ Biography
@@ -703,49 +331,49 @@ test('form navigation with shift+tab', async () => {
703
331
 
704
332
  │ Receive weekly updates
705
333
 
706
- Country
707
- Select your country
708
-
709
- Americas
710
- │ ○ United States
711
- ○ Canada
712
- ○ Mexico
713
- Europe
714
- ○ United Kingdom
715
- ↑↓ to see more options
716
-
717
- Your country of residence
718
-
334
+ Country
335
+ United States
336
+
337
+ Americas
338
+ ┃› United States
339
+ ○ Canada
340
+ ○ Mexico
341
+ Europe
342
+ ○ United Kingdom
343
+ ↑↓ to see more options
344
+
345
+ Your country of residence
346
+
719
347
  ◇ Date of Birth
720
348
 
721
349
  │ ← 2025 →
722
- │ ← October
723
-
724
- │ Mo Tu We Th Fr Sa Su
725
- │ 1 2 3 4 5
726
- │ 6 7 8 9 10 11 12
727
- │ 13 14 15 16 17 18 19
728
- │ 20 21 22 23 24 25 26
729
- │ 27 28 29 30 31"
350
+ │ ← December
351
+
352
+
353
+
354
+ ctrl submit ↑↓ navigate ^k actions"
730
355
  `)
731
356
 
732
- // Clear and type new username
733
- await driver.keys.ctrlA()
734
- await driver.keys.type('newuser')
357
+ // Navigate to a different day and select with enter
358
+ await session.press('right') // move to next day
359
+ await session.press('enter')
735
360
 
736
- const afterEditUsernameSnapshot = await driver.text()
737
- expect(afterEditUsernameSnapshot).toMatchInlineSnapshot(`
361
+ const afterEnterSelectSnapshot = await session.text()
362
+ expect(afterEnterSelectSnapshot).toMatchInlineSnapshot(`
738
363
  "
739
364
 
740
- Form Component Demo
741
- This demonstrates all available form input types. Use arrow key
365
+
366
+ Form Component Demo █
367
+ │ This demonstrates all available form input types. Use arrow █
368
+ │ keys or Tab to navigate between fields.
369
+
370
+ ◇ Username
371
+ │ Enter your username
742
372
 
743
- ◆ Username
744
- │ testusernewuser
745
373
  │ Required field
746
374
 
747
375
  ◇ Password
748
- ********
376
+ Enter secure password
749
377
  │ Must be at least 8 characters
750
378
 
751
379
  ◇ Biography
@@ -761,35 +389,33 @@ test('form navigation with shift+tab', async () => {
761
389
 
762
390
  │ Receive weekly updates
763
391
 
764
- Country
765
- Select your country
766
-
767
- Americas
768
- │ ○ United States
769
- ○ Canada
770
- ○ Mexico
771
- Europe
772
- ○ United Kingdom
773
- ↑↓ to see more options
774
-
775
- Your country of residence
776
-
392
+ Country
393
+ United States
394
+
395
+ Americas
396
+ ┃› United States
397
+ ○ Canada
398
+ ○ Mexico
399
+ Europe
400
+ ○ United Kingdom
401
+ ↑↓ to see more options
402
+
403
+ Your country of residence
404
+
777
405
  ◇ Date of Birth
778
406
 
779
407
  │ ← 2025 →
780
- │ ← October
781
-
782
- │ Mo Tu We Th Fr Sa Su
783
- │ 1 2 3 4 5
784
- │ 6 7 8 9 10 11 12
785
- │ 13 14 15 16 17 18 19
786
- │ 20 21 22 23 24 25 26
787
- │ 27 28 29 30 31"
408
+ │ ← December
409
+
410
+
411
+
412
+ ctrl submit ↑↓ navigate ^k actions"
788
413
  `)
789
414
  }, 10000)
790
415
 
416
+
791
417
  test('form dropdown navigation', async () => {
792
- await driver.text({
418
+ await session.text({
793
419
  waitFor: (text) => {
794
420
  // wait for form to show up
795
421
  return /Form Component Demo/i.test(text)
@@ -797,24 +423,27 @@ test('form dropdown navigation', async () => {
797
423
  })
798
424
 
799
425
  // Navigate to dropdown
800
- await driver.keys.tab() // username
801
- await driver.keys.tab() // password
802
- await driver.keys.tab() // bio
803
- await driver.keys.tab() // checkbox
804
- await driver.keys.tab() // dropdown
426
+ await session.press('tab') // username
427
+ await session.press('tab') // password
428
+ await session.press('tab') // bio
429
+ await session.press('tab') // checkbox
430
+ await session.press('tab') // dropdown
805
431
 
806
432
  // Navigate to dropdown area (already showing inline options)
807
- await driver.keys.space()
433
+ await session.press('space')
808
434
 
809
- const dropdownFocusedSnapshot = await driver.text()
435
+ const dropdownFocusedSnapshot = await session.text()
810
436
  expect(dropdownFocusedSnapshot).toMatchInlineSnapshot(`
811
437
  "
812
438
 
813
- Form Component Demo
814
- This demonstrates all available form input types. Use arrow key
439
+
440
+ Form Component Demo █
441
+ │ This demonstrates all available form input types. Use arrow █
442
+ │ keys or Tab to navigate between fields.
815
443
 
816
444
  ◇ Username
817
445
  │ Enter your username
446
+
818
447
  │ Required field
819
448
 
820
449
  ◇ Password
@@ -834,44 +463,44 @@ test('form dropdown navigation', async () => {
834
463
 
835
464
  │ Receive weekly updates
836
465
 
837
- Country
838
- Select your country
839
-
840
- Americas
841
- │ ○ United States
842
- ○ Canada
843
- ○ Mexico
844
- Europe
845
- ○ United Kingdom
846
- ↑↓ to see more options
847
-
848
- Your country of residence
849
-
850
- Date of Birth
466
+ Country
467
+ United States
468
+
469
+ Americas
470
+ ┃› United States
471
+ ○ Canada
472
+ ○ Mexico
473
+ Europe
474
+ ○ United Kingdom
475
+ ↑↓ to see more options
476
+
477
+ Your country of residence
478
+
479
+ Date of Birth
851
480
 
852
481
  │ ← 2025 →
853
- │ ← October
854
-
855
- │ Mo Tu We Th Fr Sa Su
856
- │ 1 2 3 4 5
857
- │ 6 7 8 9 10 11 12
858
- │ 13 14 15 16 17 18 19
859
- │ 20 21 22 23 24 25 26
860
- │ 27 28 29 30 31"
482
+ │ ← December
483
+
484
+
485
+
486
+ ctrl submit ↑↓ navigate ^k actions"
861
487
  `)
862
488
 
863
489
  // Navigate down in dropdown
864
- await driver.keys.down()
490
+ await session.press('down')
865
491
 
866
- const afterDownSnapshot = await driver.text()
492
+ const afterDownSnapshot = await session.text()
867
493
  expect(afterDownSnapshot).toMatchInlineSnapshot(`
868
494
  "
869
495
 
870
- Form Component Demo
871
- This demonstrates all available form input types. Use arrow key
496
+
497
+ Form Component Demo █
498
+ │ This demonstrates all available form input types. Use arrow █
499
+ │ keys or Tab to navigate between fields.
872
500
 
873
501
  ◇ Username
874
502
  │ Enter your username
503
+
875
504
  │ Required field
876
505
 
877
506
  ◇ Password
@@ -891,46 +520,46 @@ test('form dropdown navigation', async () => {
891
520
 
892
521
  │ Receive weekly updates
893
522
 
894
- Country
895
- Select your country
896
-
897
- Americas
898
- United States
899
- ○ Canada
900
- ○ Mexico
901
- Europe
902
- ○ United Kingdom
903
- ↑↓ to see more options
904
-
905
- Your country of residence
906
-
907
- Date of Birth
523
+ Country
524
+ United States
525
+
526
+ Americas
527
+ United States
528
+ ┃› ○ Canada
529
+ ○ Mexico
530
+ Europe
531
+ ○ United Kingdom
532
+ ↑↓ to see more options
533
+
534
+ Your country of residence
535
+
536
+ Date of Birth
908
537
 
909
538
  │ ← 2025 →
910
- │ ← October
911
-
912
- │ Mo Tu We Th Fr Sa Su
913
- │ 1 2 3 4 5
914
- │ 6 7 8 9 10 11 12
915
- │ 13 14 15 16 17 18 19
916
- │ 20 21 22 23 24 25 26
917
- │ 27 28 29 30 31"
539
+ │ ← December
540
+
541
+
542
+
543
+ ctrl submit ↑↓ navigate ^k actions"
918
544
  `)
919
545
 
920
546
  // Navigate to Europe section
921
- await driver.keys.down()
922
- await driver.keys.down()
923
- await driver.keys.down()
547
+ await session.press('down')
548
+ await session.press('down')
549
+ await session.press('down')
924
550
 
925
- const europeSelectionSnapshot = await driver.text()
551
+ const europeSelectionSnapshot = await session.text()
926
552
  expect(europeSelectionSnapshot).toMatchInlineSnapshot(`
927
553
  "
928
554
 
929
- Form Component Demo
930
- This demonstrates all available form input types. Use arrow key
555
+
556
+ Form Component Demo █
557
+ │ This demonstrates all available form input types. Use arrow █
558
+ │ keys or Tab to navigate between fields.
931
559
 
932
560
  ◇ Username
933
561
  │ Enter your username
562
+
934
563
  │ Required field
935
564
 
936
565
  ◇ Password
@@ -950,44 +579,44 @@ test('form dropdown navigation', async () => {
950
579
 
951
580
  │ Receive weekly updates
952
581
 
953
- Country
954
- Select your country
955
-
956
- Americas
957
- United States
958
- Canada
959
- ○ Mexico
960
- Europe
961
- United Kingdom
962
- ↑↓ to see more options
963
-
964
- Your country of residence
965
-
966
- Date of Birth
582
+ Country
583
+ United States
584
+
585
+ Americas
586
+ Canada
587
+ Mexico
588
+ Europe
589
+ ○ United Kingdom
590
+ ┃› France
591
+ ↑↓ to see more options
592
+
593
+ Your country of residence
594
+
595
+ Date of Birth
967
596
 
968
597
  │ ← 2025 →
969
- │ ← October
970
-
971
- │ Mo Tu We Th Fr Sa Su
972
- │ 1 2 3 4 5
973
- │ 6 7 8 9 10 11 12
974
- │ 13 14 15 16 17 18 19
975
- │ 20 21 22 23 24 25 26
976
- │ 27 28 29 30 31"
598
+ │ ← December
599
+
600
+
601
+
602
+ ctrl submit ↑↓ navigate ^k actions"
977
603
  `)
978
604
 
979
605
  // Select France
980
- await driver.keys.enter()
606
+ await session.press('enter')
981
607
 
982
- const afterFranceSelectSnapshot = await driver.text()
608
+ const afterFranceSelectSnapshot = await session.text()
983
609
  expect(afterFranceSelectSnapshot).toMatchInlineSnapshot(`
984
610
  "
985
611
 
986
- Form Component Demo
987
- This demonstrates all available form input types. Use arrow key
612
+
613
+ Form Component Demo █
614
+ │ This demonstrates all available form input types. Use arrow █
615
+ │ keys or Tab to navigate between fields.
988
616
 
989
617
  ◇ Username
990
618
  │ Enter your username
619
+
991
620
  │ Required field
992
621
 
993
622
  ◇ Password
@@ -1007,29 +636,26 @@ test('form dropdown navigation', async () => {
1007
636
 
1008
637
  │ Receive weekly updates
1009
638
 
1010
- Country
1011
- Select your country
1012
-
1013
- Americas
1014
- United States
1015
- Canada
1016
- ○ Mexico
1017
- Europe
1018
- │ ○ United Kingdom
1019
- ↑↓ to see more options
1020
-
1021
- Your country of residence
1022
-
1023
- Date of Birth
639
+ Country
640
+ France
641
+
642
+ Americas
643
+ Canada
644
+ Mexico
645
+ Europe
646
+ ○ United Kingdom
647
+ ┃› France
648
+ ↑↓ to see more options
649
+
650
+ Your country of residence
651
+
652
+ Date of Birth
1024
653
 
1025
654
  │ ← 2025 →
1026
- │ ← October
1027
-
1028
- │ Mo Tu We Th Fr Sa Su
1029
- │ 1 2 3 4 5
1030
- │ 6 7 8 9 10 11 12
1031
- │ 13 14 15 16 17 18 19
1032
- │ 20 21 22 23 24 25 26
1033
- │ 27 28 29 30 31"
655
+ │ ← December
656
+
657
+
658
+
659
+ ctrl submit ↑↓ navigate ^k actions"
1034
660
  `)
1035
661
  }, 10000)