termcast 1.3.9

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