termcast 1.3.21 → 1.3.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (429) hide show
  1. package/dist/ai.d.ts +104 -0
  2. package/dist/ai.d.ts.map +1 -0
  3. package/dist/ai.js +135 -0
  4. package/dist/ai.js.map +1 -0
  5. package/dist/apis/browser-extension.d.ts +18 -0
  6. package/dist/apis/browser-extension.d.ts.map +1 -0
  7. package/dist/apis/browser-extension.js +14 -0
  8. package/dist/apis/browser-extension.js.map +1 -0
  9. package/dist/apis/localstorage.d.ts.map +1 -1
  10. package/dist/apis/localstorage.js +4 -7
  11. package/dist/apis/localstorage.js.map +1 -1
  12. package/dist/apis/oauth.d.ts.map +1 -1
  13. package/dist/apis/oauth.js +5 -1
  14. package/dist/apis/oauth.js.map +1 -1
  15. package/dist/apis/preferences.d.ts.map +1 -1
  16. package/dist/apis/preferences.js +38 -19
  17. package/dist/apis/preferences.js.map +1 -1
  18. package/dist/apis/toast.d.ts +5 -0
  19. package/dist/apis/toast.d.ts.map +1 -1
  20. package/dist/apis/toast.js +7 -43
  21. package/dist/apis/toast.js.map +1 -1
  22. package/dist/build.d.ts.map +1 -1
  23. package/dist/build.js +3 -1
  24. package/dist/build.js.map +1 -1
  25. package/dist/cache.d.ts +32 -0
  26. package/dist/cache.d.ts.map +1 -0
  27. package/dist/cache.js +205 -0
  28. package/dist/cache.js.map +1 -0
  29. package/dist/cli.d.ts.map +1 -1
  30. package/dist/cli.js +87 -41
  31. package/dist/cli.js.map +1 -1
  32. package/dist/clipboard.d.ts +36 -0
  33. package/dist/clipboard.d.ts.map +1 -0
  34. package/dist/clipboard.js +154 -0
  35. package/dist/clipboard.js.map +1 -0
  36. package/dist/compile.d.ts +2 -1
  37. package/dist/compile.d.ts.map +1 -1
  38. package/dist/compile.js +31 -12
  39. package/dist/compile.js.map +1 -1
  40. package/dist/components/actions.d.ts.map +1 -1
  41. package/dist/components/actions.js +56 -30
  42. package/dist/components/actions.js.map +1 -1
  43. package/dist/components/detail.d.ts.map +1 -1
  44. package/dist/components/detail.js +4 -0
  45. package/dist/components/detail.js.map +1 -1
  46. package/dist/components/dropdown.d.ts.map +1 -1
  47. package/dist/components/dropdown.js +38 -15
  48. package/dist/components/dropdown.js.map +1 -1
  49. package/dist/components/extension-preferences.d.ts.map +1 -1
  50. package/dist/components/extension-preferences.js +40 -13
  51. package/dist/components/extension-preferences.js.map +1 -1
  52. package/dist/components/form/checkbox.d.ts.map +1 -1
  53. package/dist/components/form/checkbox.js +5 -3
  54. package/dist/components/form/checkbox.js.map +1 -1
  55. package/dist/components/form/date-picker.d.ts.map +1 -1
  56. package/dist/components/form/date-picker.js +5 -3
  57. package/dist/components/form/date-picker.js.map +1 -1
  58. package/dist/components/form/description.d.ts.map +1 -1
  59. package/dist/components/form/description.js +2 -2
  60. package/dist/components/form/description.js.map +1 -1
  61. package/dist/components/form/dropdown.d.ts.map +1 -1
  62. package/dist/components/form/dropdown.js +84 -80
  63. package/dist/components/form/dropdown.js.map +1 -1
  64. package/dist/components/form/file-autocomplete.d.ts +3 -6
  65. package/dist/components/form/file-autocomplete.d.ts.map +1 -1
  66. package/dist/components/form/file-autocomplete.js +61 -66
  67. package/dist/components/form/file-autocomplete.js.map +1 -1
  68. package/dist/components/form/file-picker.d.ts.map +1 -1
  69. package/dist/components/form/file-picker.js +33 -30
  70. package/dist/components/form/file-picker.js.map +1 -1
  71. package/dist/components/form/form-end.d.ts.map +1 -1
  72. package/dist/components/form/form-end.js +21 -1
  73. package/dist/components/form/form-end.js.map +1 -1
  74. package/dist/components/form/form-type-only.d.ts +174 -0
  75. package/dist/components/form/form-type-only.d.ts.map +1 -0
  76. package/dist/components/form/form-type-only.js +2 -0
  77. package/dist/components/form/form-type-only.js.map +1 -0
  78. package/dist/components/form/index.d.ts +3 -1
  79. package/dist/components/form/index.d.ts.map +1 -1
  80. package/dist/components/form/index.js +104 -30
  81. package/dist/components/form/index.js.map +1 -1
  82. package/dist/components/form/password-field.d.ts.map +1 -1
  83. package/dist/components/form/password-field.js +5 -3
  84. package/dist/components/form/password-field.js.map +1 -1
  85. package/dist/components/form/text-area.d.ts.map +1 -1
  86. package/dist/components/form/text-area.js +5 -3
  87. package/dist/components/form/text-area.js.map +1 -1
  88. package/dist/components/form/text-field.d.ts.map +1 -1
  89. package/dist/components/form/text-field.js +6 -4
  90. package/dist/components/form/text-field.js.map +1 -1
  91. package/dist/components/form/types.d.ts +5 -0
  92. package/dist/components/form/types.d.ts.map +1 -1
  93. package/dist/components/form/use-form-handling.d.ts +4 -0
  94. package/dist/components/form/use-form-handling.d.ts.map +1 -0
  95. package/dist/components/form/use-form-handling.js +37 -0
  96. package/dist/components/form/use-form-handling.js.map +1 -0
  97. package/dist/components/form/with-left-border.d.ts +2 -1
  98. package/dist/components/form/with-left-border.d.ts.map +1 -1
  99. package/dist/components/form/with-left-border.js +27 -3
  100. package/dist/components/form/with-left-border.js.map +1 -1
  101. package/dist/components/icon.d.ts +1 -0
  102. package/dist/components/icon.d.ts.map +1 -1
  103. package/dist/components/icon.js +24 -8
  104. package/dist/components/icon.js.map +1 -1
  105. package/dist/components/list.d.ts +2 -2
  106. package/dist/components/list.d.ts.map +1 -1
  107. package/dist/components/list.js +155 -70
  108. package/dist/components/list.js.map +1 -1
  109. package/dist/components/loading-bar.d.ts.map +1 -1
  110. package/dist/components/loading-bar.js +2 -2
  111. package/dist/components/loading-bar.js.map +1 -1
  112. package/dist/components/loading-text.d.ts +8 -0
  113. package/dist/components/loading-text.d.ts.map +1 -0
  114. package/dist/components/loading-text.js +58 -0
  115. package/dist/components/loading-text.js.map +1 -0
  116. package/dist/descendants.js +1 -1
  117. package/dist/descendants.js.map +1 -1
  118. package/dist/dev-ui.d.ts +7 -0
  119. package/dist/dev-ui.d.ts.map +1 -0
  120. package/dist/dev-ui.js +118 -0
  121. package/dist/dev-ui.js.map +1 -0
  122. package/dist/environment.d.ts +63 -0
  123. package/dist/environment.d.ts.map +1 -0
  124. package/dist/environment.js +189 -0
  125. package/dist/environment.js.map +1 -0
  126. package/dist/examples/datepicker.d.ts +2 -0
  127. package/dist/examples/datepicker.d.ts.map +1 -0
  128. package/dist/examples/datepicker.js +344 -0
  129. package/dist/examples/datepicker.js.map +1 -0
  130. package/dist/examples/file-autocomplete.vitest.d.ts +2 -0
  131. package/dist/examples/file-autocomplete.vitest.d.ts.map +1 -0
  132. package/dist/examples/file-autocomplete.vitest.js +223 -0
  133. package/dist/examples/file-autocomplete.vitest.js.map +1 -0
  134. package/dist/examples/form-basic-arrow-keys.vitest.d.ts +2 -0
  135. package/dist/examples/form-basic-arrow-keys.vitest.d.ts.map +1 -0
  136. package/dist/examples/form-basic-arrow-keys.vitest.js +46 -0
  137. package/dist/examples/form-basic-arrow-keys.vitest.js.map +1 -0
  138. package/dist/examples/form-basic.vitest.d.ts +2 -0
  139. package/dist/examples/form-basic.vitest.d.ts.map +1 -0
  140. package/dist/examples/form-basic.vitest.js +630 -0
  141. package/dist/examples/form-basic.vitest.js.map +1 -0
  142. package/dist/examples/form-dropdown-with-sections.d.ts +2 -0
  143. package/dist/examples/form-dropdown-with-sections.d.ts.map +1 -0
  144. package/dist/examples/form-dropdown-with-sections.js +13 -0
  145. package/dist/examples/form-dropdown-with-sections.js.map +1 -0
  146. package/dist/examples/form-dropdown-with-sections.vitest.d.ts +2 -0
  147. package/dist/examples/form-dropdown-with-sections.vitest.d.ts.map +1 -0
  148. package/dist/examples/form-dropdown-with-sections.vitest.js +75 -0
  149. package/dist/examples/form-dropdown-with-sections.vitest.js.map +1 -0
  150. package/dist/examples/form-dropdown.vitest.d.ts +2 -0
  151. package/dist/examples/form-dropdown.vitest.d.ts.map +1 -0
  152. package/dist/examples/form-dropdown.vitest.js +854 -0
  153. package/dist/examples/form-dropdown.vitest.js.map +1 -0
  154. package/dist/examples/form-multiselect-dropdown.d.ts +2 -0
  155. package/dist/examples/form-multiselect-dropdown.d.ts.map +1 -0
  156. package/dist/examples/form-multiselect-dropdown.js +13 -0
  157. package/dist/examples/form-multiselect-dropdown.js.map +1 -0
  158. package/dist/examples/form-scroll.d.ts.map +1 -1
  159. package/dist/examples/form-scroll.js +7 -1
  160. package/dist/examples/form-scroll.js.map +1 -1
  161. package/dist/examples/form-scroll.vitest.d.ts +2 -0
  162. package/dist/examples/form-scroll.vitest.d.ts.map +1 -0
  163. package/dist/examples/form-scroll.vitest.js +211 -0
  164. package/dist/examples/form-scroll.vitest.js.map +1 -0
  165. package/dist/examples/form-tagpicker.vitest.d.ts +2 -0
  166. package/dist/examples/form-tagpicker.vitest.d.ts.map +1 -0
  167. package/dist/examples/form-tagpicker.vitest.js +736 -0
  168. package/dist/examples/form-tagpicker.vitest.js.map +1 -0
  169. package/dist/examples/internal/descendants-filtering.js +1 -1
  170. package/dist/examples/internal/descendants-filtering.js.map +1 -1
  171. package/dist/examples/internal/descendants.js +1 -1
  172. package/dist/examples/internal/descendants.js.map +1 -1
  173. package/dist/examples/internal/nested-boxes.d.ts +2 -0
  174. package/dist/examples/internal/nested-boxes.d.ts.map +1 -0
  175. package/dist/examples/internal/nested-boxes.js +7 -0
  176. package/dist/examples/internal/nested-boxes.js.map +1 -0
  177. package/dist/examples/internal/rhf-custom-ref.js +2 -2
  178. package/dist/examples/internal/rhf-custom-ref.js.map +1 -1
  179. package/dist/examples/internal/scrollbox-demo.js +3 -22
  180. package/dist/examples/internal/scrollbox-demo.js.map +1 -1
  181. package/dist/examples/internal/scrollbox-descendants.d.ts +2 -0
  182. package/dist/examples/internal/scrollbox-descendants.d.ts.map +1 -0
  183. package/dist/examples/internal/scrollbox-descendants.js +83 -0
  184. package/dist/examples/internal/scrollbox-descendants.js.map +1 -0
  185. package/dist/examples/internal/scrollbox-with-descendants.js +4 -8
  186. package/dist/examples/internal/scrollbox-with-descendants.js.map +1 -1
  187. package/dist/examples/internal/simple-scrollbox.vitest.d.ts +2 -0
  188. package/dist/examples/internal/simple-scrollbox.vitest.d.ts.map +1 -0
  189. package/dist/examples/internal/simple-scrollbox.vitest.js +96 -0
  190. package/dist/examples/internal/simple-scrollbox.vitest.js.map +1 -0
  191. package/dist/examples/internal/unicode-square-repro.d.ts +2 -0
  192. package/dist/examples/internal/unicode-square-repro.d.ts.map +1 -0
  193. package/dist/examples/internal/unicode-square-repro.js +7 -0
  194. package/dist/examples/internal/unicode-square-repro.js.map +1 -0
  195. package/dist/examples/list-detail-metadata.d.ts +2 -0
  196. package/dist/examples/list-detail-metadata.d.ts.map +1 -0
  197. package/dist/examples/list-detail-metadata.js +8 -0
  198. package/dist/examples/list-detail-metadata.js.map +1 -0
  199. package/dist/examples/list-dropdown-default.vitest.d.ts +2 -0
  200. package/dist/examples/list-dropdown-default.vitest.d.ts.map +1 -0
  201. package/dist/examples/list-dropdown-default.vitest.js +234 -0
  202. package/dist/examples/list-dropdown-default.vitest.js.map +1 -0
  203. package/dist/examples/list-fetch-data.vitest.d.ts +2 -0
  204. package/dist/examples/list-fetch-data.vitest.d.ts.map +1 -0
  205. package/dist/examples/list-fetch-data.vitest.js +111 -0
  206. package/dist/examples/list-fetch-data.vitest.js.map +1 -0
  207. package/dist/examples/list-filter-navigation.d.ts +2 -0
  208. package/dist/examples/list-filter-navigation.d.ts.map +1 -0
  209. package/dist/examples/list-filter-navigation.js +8 -0
  210. package/dist/examples/list-filter-navigation.js.map +1 -0
  211. package/dist/examples/list-scrollbox.vitest.d.ts +2 -0
  212. package/dist/examples/list-scrollbox.vitest.d.ts.map +1 -0
  213. package/dist/examples/list-scrollbox.vitest.js +93 -0
  214. package/dist/examples/list-scrollbox.vitest.js.map +1 -0
  215. package/dist/examples/list-with-detail-long.d.ts +2 -0
  216. package/dist/examples/list-with-detail-long.d.ts.map +1 -0
  217. package/dist/examples/list-with-detail-long.js +53 -0
  218. package/dist/examples/list-with-detail-long.js.map +1 -0
  219. package/dist/examples/list-with-detail.vitest.d.ts +2 -0
  220. package/dist/examples/list-with-detail.vitest.d.ts.map +1 -0
  221. package/dist/examples/list-with-detail.vitest.js +434 -0
  222. package/dist/examples/list-with-detail.vitest.js.map +1 -0
  223. package/dist/examples/list-with-dropdown.vitest.d.ts +2 -0
  224. package/dist/examples/list-with-dropdown.vitest.d.ts.map +1 -0
  225. package/dist/examples/list-with-dropdown.vitest.js +337 -0
  226. package/dist/examples/list-with-dropdown.vitest.js.map +1 -0
  227. package/dist/examples/list-with-sections.js +5 -1
  228. package/dist/examples/list-with-sections.js.map +1 -1
  229. package/dist/examples/list-with-sections.vitest.d.ts +2 -0
  230. package/dist/examples/list-with-sections.vitest.d.ts.map +1 -0
  231. package/dist/examples/list-with-sections.vitest.js +601 -0
  232. package/dist/examples/list-with-sections.vitest.js.map +1 -0
  233. package/dist/examples/scrollbox-vertical-centering.d.ts +6 -0
  234. package/dist/examples/scrollbox-vertical-centering.d.ts.map +1 -0
  235. package/dist/examples/scrollbox-vertical-centering.js +17 -0
  236. package/dist/examples/scrollbox-vertical-centering.js.map +1 -0
  237. package/dist/examples/simple-file-picker.vitest.d.ts +2 -0
  238. package/dist/examples/simple-file-picker.vitest.d.ts.map +1 -0
  239. package/dist/examples/simple-file-picker.vitest.js +678 -0
  240. package/dist/examples/simple-file-picker.vitest.js.map +1 -0
  241. package/dist/examples/simple-grid.vitest.d.ts +2 -0
  242. package/dist/examples/simple-grid.vitest.d.ts.map +1 -0
  243. package/dist/examples/simple-grid.vitest.js +521 -0
  244. package/dist/examples/simple-grid.vitest.js.map +1 -0
  245. package/dist/examples/simple-navigation.js +10 -4
  246. package/dist/examples/simple-navigation.js.map +1 -1
  247. package/dist/examples/simple-navigation.vitest.d.ts +2 -0
  248. package/dist/examples/simple-navigation.vitest.d.ts.map +1 -0
  249. package/dist/examples/simple-navigation.vitest.js +718 -0
  250. package/dist/examples/simple-navigation.vitest.js.map +1 -0
  251. package/dist/examples/store.vitest.d.ts +2 -0
  252. package/dist/examples/store.vitest.d.ts.map +1 -0
  253. package/dist/examples/store.vitest.js +69 -0
  254. package/dist/examples/store.vitest.js.map +1 -0
  255. package/dist/examples/toast-variations.d.ts +2 -0
  256. package/dist/examples/toast-variations.d.ts.map +1 -0
  257. package/dist/examples/toast-variations.js +122 -0
  258. package/dist/examples/toast-variations.js.map +1 -0
  259. package/dist/extensions/dev.d.ts +4 -2
  260. package/dist/extensions/dev.d.ts.map +1 -1
  261. package/dist/extensions/dev.js +61 -10
  262. package/dist/extensions/dev.js.map +1 -1
  263. package/dist/extensions/dev.vitest.d.ts +2 -0
  264. package/dist/extensions/dev.vitest.d.ts.map +1 -0
  265. package/dist/extensions/dev.vitest.js +197 -0
  266. package/dist/extensions/dev.vitest.js.map +1 -0
  267. package/dist/extensions/home.d.ts.map +1 -1
  268. package/dist/extensions/home.js +3 -0
  269. package/dist/extensions/home.js.map +1 -1
  270. package/dist/home-command.d.ts +8 -0
  271. package/dist/home-command.d.ts.map +1 -0
  272. package/dist/home-command.js +181 -0
  273. package/dist/home-command.js.map +1 -0
  274. package/dist/hover-repro.d.ts +2 -0
  275. package/dist/hover-repro.d.ts.map +1 -0
  276. package/dist/hover-repro.js +20 -0
  277. package/dist/hover-repro.js.map +1 -0
  278. package/dist/index.d.ts +1 -0
  279. package/dist/index.d.ts.map +1 -1
  280. package/dist/index.js +2 -0
  281. package/dist/index.js.map +1 -1
  282. package/dist/internal/dialog.d.ts +1 -0
  283. package/dist/internal/dialog.d.ts.map +1 -1
  284. package/dist/internal/dialog.js +27 -18
  285. package/dist/internal/dialog.js.map +1 -1
  286. package/dist/internal/navigation.d.ts +9 -1
  287. package/dist/internal/navigation.d.ts.map +1 -1
  288. package/dist/internal/navigation.js +5 -5
  289. package/dist/internal/navigation.js.map +1 -1
  290. package/dist/internal/offscreen.d.ts +6 -0
  291. package/dist/internal/offscreen.d.ts.map +1 -0
  292. package/dist/internal/offscreen.js +10 -0
  293. package/dist/internal/offscreen.js.map +1 -0
  294. package/dist/internal/providers.d.ts.map +1 -1
  295. package/dist/internal/providers.js +2 -2
  296. package/dist/internal/providers.js.map +1 -1
  297. package/dist/internal/scrollbox.d.ts +1 -10
  298. package/dist/internal/scrollbox.d.ts.map +1 -1
  299. package/dist/internal/scrollbox.js +2 -1
  300. package/dist/internal/scrollbox.js.map +1 -1
  301. package/dist/localstorage.d.ts +13 -0
  302. package/dist/localstorage.d.ts.map +1 -0
  303. package/dist/localstorage.js +190 -0
  304. package/dist/localstorage.js.map +1 -0
  305. package/dist/oauth.d.ts +142 -0
  306. package/dist/oauth.d.ts.map +1 -0
  307. package/dist/oauth.js +551 -0
  308. package/dist/oauth.js.map +1 -0
  309. package/dist/preferences.d.ts +23 -0
  310. package/dist/preferences.d.ts.map +1 -0
  311. package/dist/preferences.js +105 -0
  312. package/dist/preferences.js.map +1 -0
  313. package/dist/release.d.ts +1 -1
  314. package/dist/release.d.ts.map +1 -1
  315. package/dist/release.js +29 -33
  316. package/dist/release.js.map +1 -1
  317. package/dist/state.d.ts +2 -0
  318. package/dist/state.d.ts.map +1 -1
  319. package/dist/state.js +3 -0
  320. package/dist/state.js.map +1 -1
  321. package/dist/store.d.ts +21 -0
  322. package/dist/store.d.ts.map +1 -0
  323. package/dist/store.js +84 -0
  324. package/dist/store.js.map +1 -0
  325. package/dist/swift-loader.d.ts +3 -0
  326. package/dist/swift-loader.d.ts.map +1 -0
  327. package/dist/swift-loader.js +193 -0
  328. package/dist/swift-loader.js.map +1 -0
  329. package/dist/swift-runtime.d.ts +2 -0
  330. package/dist/swift-runtime.d.ts.map +1 -0
  331. package/dist/swift-runtime.js +27 -0
  332. package/dist/swift-runtime.js.map +1 -0
  333. package/dist/toast.d.ts +44 -0
  334. package/dist/toast.d.ts.map +1 -0
  335. package/dist/toast.js +221 -0
  336. package/dist/toast.js.map +1 -0
  337. package/dist/utils/file-system.d.ts +9 -0
  338. package/dist/utils/file-system.d.ts.map +1 -1
  339. package/dist/utils/file-system.js +49 -0
  340. package/dist/utils/file-system.js.map +1 -1
  341. package/dist/utils/run-command.d.ts +26 -1
  342. package/dist/utils/run-command.d.ts.map +1 -1
  343. package/dist/utils/run-command.js +53 -4
  344. package/dist/utils/run-command.js.map +1 -1
  345. package/dist/window.d.ts +12 -0
  346. package/dist/window.d.ts.map +1 -0
  347. package/dist/window.js +48 -0
  348. package/dist/window.js.map +1 -0
  349. package/package.json +12 -12
  350. package/src/apis/browser-extension.tsx +29 -0
  351. package/src/apis/localstorage.test.ts +14 -6
  352. package/src/apis/localstorage.tsx +8 -5
  353. package/src/apis/oauth.tsx +5 -1
  354. package/src/apis/preferences.tsx +48 -22
  355. package/src/apis/toast.tsx +37 -62
  356. package/src/build.test.tsx +52 -0
  357. package/src/build.tsx +3 -1
  358. package/src/cli.tsx +99 -48
  359. package/src/compile.tsx +32 -11
  360. package/src/components/actions.tsx +94 -32
  361. package/src/components/detail.tsx +4 -0
  362. package/src/components/dropdown.tsx +47 -14
  363. package/src/components/extension-preferences.tsx +44 -16
  364. package/src/components/form/checkbox.tsx +12 -6
  365. package/src/components/form/date-picker.tsx +12 -6
  366. package/src/components/form/description.tsx +7 -2
  367. package/src/components/form/dropdown.tsx +131 -119
  368. package/src/components/form/file-autocomplete.tsx +90 -108
  369. package/src/components/form/file-picker.tsx +54 -43
  370. package/src/components/form/form-end.tsx +23 -2
  371. package/src/components/form/index.tsx +168 -41
  372. package/src/components/form/password-field.tsx +12 -6
  373. package/src/components/form/text-area.tsx +13 -6
  374. package/src/components/form/text-field.tsx +13 -6
  375. package/src/components/form/types.tsx +6 -0
  376. package/src/components/form/with-left-border.tsx +41 -8
  377. package/src/components/icon.tsx +27 -8
  378. package/src/components/list.tsx +243 -101
  379. package/src/components/loading-bar.tsx +3 -2
  380. package/src/components/loading-text.tsx +79 -0
  381. package/src/descendants.tsx +1 -0
  382. package/src/examples/file-autocomplete.vitest.tsx +130 -125
  383. package/src/examples/form-basic.vitest.tsx +376 -176
  384. package/src/examples/form-dropdown.vitest.tsx +126 -126
  385. package/src/examples/form-scroll.tsx +2 -0
  386. package/src/examples/form-scroll.vitest.tsx +58 -58
  387. package/src/examples/form-tagpicker.vitest.tsx +99 -99
  388. package/src/examples/internal/descendants-filtering.tsx +1 -0
  389. package/src/examples/internal/descendants.tsx +1 -0
  390. package/src/examples/internal/rhf-custom-ref.tsx +2 -0
  391. package/src/examples/internal/scrollbox-demo.tsx +3 -27
  392. package/src/examples/internal/scrollbox-with-descendants.tsx +4 -7
  393. package/src/examples/internal/simple-scrollbox.vitest.tsx +7 -5
  394. package/src/examples/list-detail-metadata.tsx +49 -0
  395. package/src/examples/list-detail-metadata.vitest.tsx +88 -0
  396. package/src/examples/list-dropdown-default.vitest.tsx +51 -51
  397. package/src/examples/list-fetch-data.vitest.tsx +4 -4
  398. package/src/examples/list-scrollbox.vitest.tsx +73 -14
  399. package/src/examples/list-with-detail-long.tsx +70 -0
  400. package/src/examples/list-with-detail.vitest.tsx +191 -85
  401. package/src/examples/list-with-dropdown.vitest.tsx +53 -53
  402. package/src/examples/list-with-sections.tsx +1 -0
  403. package/src/examples/list-with-sections.vitest.tsx +221 -97
  404. package/src/examples/list-with-toast.vitest.tsx +16 -16
  405. package/src/examples/simple-file-picker.vitest.tsx +63 -469
  406. package/src/examples/simple-grid.vitest.tsx +238 -233
  407. package/src/examples/simple-navigation.tsx +15 -7
  408. package/src/examples/simple-navigation.vitest.tsx +130 -219
  409. package/src/examples/store.vitest.tsx +1 -1
  410. package/src/examples/swift-extension.vitest.tsx +148 -0
  411. package/src/examples/synonyms.vitest.tsx +159 -0
  412. package/src/examples/toast-variations.tsx +150 -0
  413. package/src/examples/toast-variations.vitest.tsx +370 -0
  414. package/src/extensions/dev.tsx +74 -7
  415. package/src/extensions/dev.vitest.tsx +102 -34
  416. package/src/extensions/home.tsx +6 -0
  417. package/src/index.tsx +3 -0
  418. package/src/internal/dialog.tsx +43 -30
  419. package/src/internal/navigation.tsx +3 -1
  420. package/src/internal/offscreen.tsx +15 -0
  421. package/src/internal/providers.tsx +4 -2
  422. package/src/internal/scrollbox.tsx +4 -8
  423. package/src/keyboard.test.tsx +69 -0
  424. package/src/release.tsx +32 -38
  425. package/src/state.tsx +7 -0
  426. package/src/swift-loader.tsx +239 -0
  427. package/src/swift-runtime.tsx +36 -0
  428. package/src/utils/file-system.ts +61 -0
  429. package/src/utils/run-command.tsx +82 -6
@@ -0,0 +1,601 @@
1
+ import { test, expect, afterEach, beforeEach } from 'vitest';
2
+ import { launchTerminal } from 'tuistory/src';
3
+ let session;
4
+ beforeEach(async () => {
5
+ session = await launchTerminal({
6
+ command: 'bun',
7
+ args: ['src/examples/list-with-sections.tsx'],
8
+ cols: 70,
9
+ rows: 20,
10
+ });
11
+ });
12
+ afterEach(() => {
13
+ session?.close();
14
+ });
15
+ test('list with sections navigation', async () => {
16
+ await session.text({
17
+ waitFor: (text) => {
18
+ // wait for list to show up
19
+ return /search/i.test(text);
20
+ },
21
+ });
22
+ const initialSnapshot = await session.text();
23
+ expect(initialSnapshot).toMatchInlineSnapshot(`
24
+ "
25
+
26
+
27
+ Simple List Example ────────────────────────────────────────────
28
+
29
+ Search items...
30
+
31
+ Fruits ▲
32
+ ›Apple Red and sweet Fresh [Popular] ▀
33
+ Banana Yellow and nutritious Ripe
34
+ Orange Citrus and juicy Fresh
35
+ Grape Sweet clusters [Seasonal]
36
+ Mango Tropical delight Imported
37
+ Pineapple Sweet and tangy
38
+ Strawberry Red and sweet [Popular]
39
+
40
+
41
+
42
+ ↵ select ↑↓ navigate ^k actions"
43
+ `);
44
+ // Add small delay to ensure all items have registered
45
+ await new Promise((resolve) => setTimeout(resolve, 100));
46
+ await session.press('down');
47
+ const afterDownSnapshot = await session.text();
48
+ expect(afterDownSnapshot).toMatchInlineSnapshot(`
49
+ "
50
+
51
+
52
+ Simple List Example ────────────────────────────────────────────
53
+
54
+ Search items...
55
+
56
+ Fruits ▲
57
+ Apple Red and sweet Fresh [Popular] ▀
58
+ ›Banana Yellow and nutritious Ripe
59
+ Orange Citrus and juicy Fresh
60
+ Grape Sweet clusters [Seasonal]
61
+ Mango Tropical delight Imported
62
+ Pineapple Sweet and tangy
63
+ Strawberry Red and sweet [Popular]
64
+
65
+
66
+
67
+ ↵ select ↑↓ navigate ^k actions"
68
+ `);
69
+ await session.press('down');
70
+ const secondDownSnapshot = await session.text();
71
+ expect(secondDownSnapshot).toMatchInlineSnapshot(`
72
+ "
73
+
74
+
75
+ Simple List Example ────────────────────────────────────────────
76
+
77
+ Search items...
78
+
79
+ Fruits ▲
80
+ Apple Red and sweet Fresh [Popular] ▀
81
+ Banana Yellow and nutritious Ripe
82
+ ›Orange Citrus and juicy Fresh
83
+ Grape Sweet clusters [Seasonal]
84
+ Mango Tropical delight Imported
85
+ Pineapple Sweet and tangy
86
+ Strawberry Red and sweet [Popular]
87
+
88
+
89
+
90
+ ↵ select ↑↓ navigate ^k actions"
91
+ `);
92
+ await session.press('enter');
93
+ const afterEnterSnapshot = await session.text();
94
+ expect(afterEnterSnapshot).toMatchInlineSnapshot(`
95
+ "
96
+
97
+
98
+ Simple List Example ────────────────────────────────────────────
99
+
100
+ Search items...
101
+
102
+ Fruits ▲
103
+ Apple Red and sweet Fresh [Popular] ▀
104
+ Banana Yellow and nutritious Ripe
105
+ ›Orange Citrus and juicy Fresh
106
+ Grape Sweet clusters [Seasonal]
107
+ Mango Tropical delight Imported
108
+ Pineapple Sweet and tangy
109
+ Strawberry Red and sweet [Popular]
110
+
111
+
112
+
113
+ ↵ select ↑↓ navigate ^k actions"
114
+ `);
115
+ // Go back to list with Escape
116
+ await session.press('esc');
117
+ const afterEscapeSnapshot = await session.text();
118
+ expect(afterEscapeSnapshot).toMatchInlineSnapshot(`
119
+ "
120
+
121
+
122
+ Simple List Example ────────────────────────────────────────────
123
+
124
+ Search items...
125
+
126
+ Fruits ▲
127
+ Apple Red and sweet Fresh [Popular] ▀
128
+ Banana Yellow and nutritious Ripe
129
+ ›Orange Citrus and juicy Fresh
130
+ Grape Sweet clusters [Seasonal]
131
+ Mango Tropical delight Imported
132
+ Pineapple Sweet and tangy
133
+ Strawberry Red and sweet [Popular]
134
+
135
+
136
+
137
+ ↵ select ↑↓ navigate ^k actions"
138
+ `);
139
+ });
140
+ test('list with sections search functionality', async () => {
141
+ await session.text({
142
+ waitFor: (text) => {
143
+ // wait for list to show up
144
+ return /search/i.test(text);
145
+ },
146
+ });
147
+ await session.type('ban');
148
+ const afterSearchBanSnapshot = await session.text({
149
+ waitFor: (text) => {
150
+ return /\bban\b/.test(text);
151
+ },
152
+ });
153
+ // NOTE: No selection indicator (›) is expected here - this is OK
154
+ expect(afterSearchBanSnapshot).toMatchInlineSnapshot(`
155
+ "
156
+
157
+
158
+ Simple List Example ────────────────────────────────────────────
159
+
160
+ ban
161
+
162
+ Banana Yellow and nutritious Ripe
163
+
164
+
165
+
166
+
167
+
168
+
169
+
170
+
171
+
172
+
173
+ ↵ select ↑↓ navigate ^k actions"
174
+ `);
175
+ // Clear search and type "let" to search for Lettuce
176
+ await session.press('backspace');
177
+ await session.press('backspace');
178
+ await session.press('backspace');
179
+ await session.type('let');
180
+ const afterSearchLetSnapshot = await session.text({
181
+ waitFor: (text) => {
182
+ return /\blet\b/.test(text);
183
+ },
184
+ });
185
+ // NOTE: No selection indicator (›) is expected here - this is OK
186
+ expect(afterSearchLetSnapshot).toMatchInlineSnapshot(`
187
+ "
188
+
189
+
190
+ Simple List Example ────────────────────────────────────────────
191
+
192
+ let
193
+
194
+
195
+ Lettuce Green and fresh
196
+
197
+
198
+
199
+
200
+
201
+
202
+
203
+
204
+
205
+ ↵ select ↑↓ navigate ^k actions"
206
+ `);
207
+ // Clear search to show all items again
208
+ await session.press('backspace');
209
+ await session.press('backspace');
210
+ await session.press('backspace');
211
+ const afterClearSearchSnapshot = await session.text();
212
+ expect(afterClearSearchSnapshot).toMatchInlineSnapshot(`
213
+ "
214
+
215
+
216
+ Simple List Example ────────────────────────────────────────────
217
+
218
+ Search items...
219
+
220
+ Fruits ▲
221
+ ›Apple Red and sweet Fresh [Popular] ▀
222
+ Banana Yellow and nutritious Ripe
223
+ Orange Citrus and juicy Fresh
224
+ Grape Sweet clusters [Seasonal]
225
+ Mango Tropical delight Imported
226
+ Pineapple Sweet and tangy
227
+ Strawberry Red and sweet [Popular]
228
+
229
+
230
+
231
+ ↵ select ↑↓ navigate ^k actions"
232
+ `);
233
+ // Search for "bread"
234
+ await session.type('bread');
235
+ const afterSearchBreadSnapshot = await session.text({
236
+ waitFor: (text) => {
237
+ return /bread/i.test(text);
238
+ },
239
+ });
240
+ // NOTE: No selection indicator (›) is expected here - this is OK
241
+ expect(afterSearchBreadSnapshot).toMatchInlineSnapshot(`
242
+ "
243
+
244
+
245
+ Simple List Example ────────────────────────────────────────────
246
+
247
+ bread
248
+
249
+
250
+
251
+ Bread Freshly baked Today [New]
252
+
253
+
254
+
255
+
256
+
257
+
258
+
259
+
260
+ ↵ select ↑↓ navigate ^k actions"
261
+ `);
262
+ // Select the bread item
263
+ await session.press('enter');
264
+ const afterSelectBreadSnapshot = await session.text();
265
+ expect(afterSelectBreadSnapshot).toMatchInlineSnapshot(`
266
+ "
267
+
268
+
269
+ Simple List Example ────────────────────────────────────────────
270
+
271
+ bread
272
+
273
+ ┃ ┃
274
+ ┃ esc ┃
275
+ ┃ ┃
276
+ ┃ Search actions... ┃
277
+ ┃ ┃
278
+ ┃ ›View Details ┃
279
+ ┃ Add to Cart ┃
280
+ ┃ ┃
281
+ ┃ ┃
282
+ ┃ ┃
283
+ ┃ ┃
284
+ ┃ ┃
285
+ ┃ ┃
286
+ ┃ ┃"
287
+ `);
288
+ }, 10000);
289
+ test('list click functionality', async () => {
290
+ await session.text({
291
+ waitFor: (text) => {
292
+ return /search/i.test(text);
293
+ },
294
+ });
295
+ // Click on "Banana" item (visible in initial view)
296
+ await session.click('Banana', { first: true });
297
+ const afterClickBananaSnapshot = await session.text();
298
+ expect(afterClickBananaSnapshot).toMatchInlineSnapshot(`
299
+ "
300
+
301
+
302
+ Simple List Example ────────────────────────────────────────────
303
+
304
+ Search items...
305
+
306
+ Fruits ▲
307
+ Apple Red and sweet Fresh [Popular] ▀
308
+ ›Banana Yellow and nutritious Ripe
309
+ Orange Citrus and juicy Fresh
310
+ Grape Sweet clusters [Seasonal]
311
+ Mango Tropical delight Imported
312
+ Pineapple Sweet and tangy
313
+ Strawberry Red and sweet [Popular]
314
+
315
+
316
+
317
+ ↵ select ↑↓ navigate ^k actions"
318
+ `);
319
+ // Click on "Apple" item
320
+ await session.click('Apple', { first: true });
321
+ const afterClickAppleSnapshot = await session.text();
322
+ expect(afterClickAppleSnapshot).toMatchInlineSnapshot(`
323
+ "
324
+
325
+
326
+ Simple List Example ────────────────────────────────────────────
327
+
328
+ Search items...
329
+
330
+ Fruits ▲
331
+ ›Apple Red and sweet Fresh [Popular] ▀
332
+ Banana Yellow and nutritious Ripe
333
+ Orange Citrus and juicy Fresh
334
+ Grape Sweet clusters [Seasonal]
335
+ Mango Tropical delight Imported
336
+ Pineapple Sweet and tangy
337
+ Strawberry Red and sweet [Popular]
338
+
339
+
340
+
341
+ ↵ select ↑↓ navigate ^k actions"
342
+ `);
343
+ // Click on "Grape" item (visible in initial view)
344
+ await session.click('Grape', { first: true });
345
+ const afterClickGrapeSnapshot = await session.text();
346
+ expect(afterClickGrapeSnapshot).toMatchInlineSnapshot(`
347
+ "
348
+
349
+
350
+ Simple List Example ────────────────────────────────────────────
351
+
352
+ Search items...
353
+
354
+ Fruits ▲
355
+ Apple Red and sweet Fresh [Popular] ▀
356
+ Banana Yellow and nutritious Ripe
357
+ Orange Citrus and juicy Fresh
358
+ ›Grape Sweet clusters [Seasonal]
359
+ Mango Tropical delight Imported
360
+ Pineapple Sweet and tangy
361
+ Strawberry Red and sweet [Popular]
362
+
363
+
364
+
365
+ ↵ select ↑↓ navigate ^k actions"
366
+ `);
367
+ }, 10000);
368
+ test('list actions panel with ctrl+k', async () => {
369
+ await session.text({
370
+ waitFor: (text) => {
371
+ // wait for list to show up
372
+ return /search/i.test(text);
373
+ },
374
+ });
375
+ // Press ctrl+k to open actions panel
376
+ await session.press(['ctrl', 'k']);
377
+ const afterCtrlKSnapshot = await session.text();
378
+ expect(afterCtrlKSnapshot).toMatchInlineSnapshot(`
379
+ "
380
+
381
+
382
+ Simple List Example ────────────────────────────────────────────
383
+
384
+ Search items...
385
+
386
+ ┃ ┃
387
+ ┃ esc ┃
388
+ ┃ ┃
389
+ ┃ Search actions... ┃
390
+ ┃ ┃
391
+ ┃ ›View Details ┃
392
+ ┃ Add to Cart ┃
393
+ ┃ ┃
394
+ ┃ ┃
395
+ ┃ ┃
396
+ ┃ ┃
397
+ ┃ ┃
398
+ ┃ ┃
399
+ ┃ ┃"
400
+ `);
401
+ // Navigate down to second action
402
+ await session.press('down');
403
+ const afterDownInActionsSnapshot = await session.text();
404
+ expect(afterDownInActionsSnapshot).toMatchInlineSnapshot(`
405
+ "
406
+
407
+
408
+ Simple List Example ────────────────────────────────────────────
409
+
410
+ Search items...
411
+
412
+ ┃ ┃
413
+ ┃ esc ┃
414
+ ┃ ┃
415
+ ┃ Search actions... ┃
416
+ ┃ ┃
417
+ ┃ View Details ┃
418
+ ┃ ›Add to Cart ┃
419
+ ┃ ┃
420
+ ┃ ┃
421
+ ┃ ┃
422
+ ┃ ┃
423
+ ┃ ┃
424
+ ┃ ┃
425
+ ┃ ┃"
426
+ `);
427
+ // Trigger the second action (Add to Cart)
428
+ await session.press('enter');
429
+ const afterSelectSecondActionSnapshot = await session.text();
430
+ expect(afterSelectSecondActionSnapshot).toMatchInlineSnapshot(`
431
+ "
432
+
433
+
434
+ Simple List Example ────────────────────────────────────────────
435
+
436
+ Search items...
437
+
438
+ Fruits ▲
439
+ ›Apple Red and sweet Fresh [Popular] ▀
440
+ Banana Yellow and nutritious Ripe
441
+ Orange Citrus and juicy Fresh
442
+ Grape Sweet clusters [Seasonal]
443
+ Mango Tropical delight Imported
444
+ Pineapple Sweet and tangy
445
+ Strawberry Red and sweet [Popular]
446
+
447
+
448
+
449
+ ↵ sel┌─────────────────────────────────────────────────────┐
450
+ │ ✓ Added to Cart - Apple has been added to your cart │
451
+ └─────────────────────────────────────────────────────┘"
452
+ `);
453
+ }, 10000);
454
+ test('empty sections should be hidden', async () => {
455
+ await session.text({
456
+ waitFor: (text) => {
457
+ return /search/i.test(text);
458
+ },
459
+ });
460
+ const snapshot = await session.text();
461
+ expect(snapshot).not.toContain('Empty section should be hidden');
462
+ }, 10000);
463
+ test('list scrollbox scrolling with sections', async () => {
464
+ await session.text({
465
+ waitFor: (text) => {
466
+ return /search/i.test(text);
467
+ },
468
+ });
469
+ const initialSnapshot = await session.text();
470
+ expect(initialSnapshot).toMatchInlineSnapshot(`
471
+ "
472
+
473
+
474
+ Simple List Example ────────────────────────────────────────────
475
+
476
+ Search items...
477
+
478
+ Fruits ▲
479
+ ›Apple Red and sweet Fresh [Popular] ▀
480
+ Banana Yellow and nutritious Ripe
481
+ Orange Citrus and juicy Fresh
482
+ Grape Sweet clusters [Seasonal]
483
+ Mango Tropical delight Imported
484
+ Pineapple Sweet and tangy
485
+ Strawberry Red and sweet [Popular]
486
+
487
+
488
+
489
+ ↵ select ↑↓ navigate ^k actions"
490
+ `);
491
+ // Navigate down through Fruits section
492
+ await session.press('down'); // Banana
493
+ await session.press('down'); // Orange
494
+ await session.press('down'); // Grape
495
+ await session.press('down'); // Mango
496
+ await session.press('down'); // Pineapple
497
+ await session.press('down'); // Strawberry (last fruit)
498
+ const afterFruitsSnapshot = await session.text();
499
+ expect(afterFruitsSnapshot).toMatchInlineSnapshot(`
500
+ "
501
+
502
+
503
+ Simple List Example ────────────────────────────────────────────
504
+
505
+ Search items...
506
+
507
+ Fruits ▲
508
+ Apple Red and sweet Fresh [Popular] ▀
509
+ Banana Yellow and nutritious Ripe
510
+ Orange Citrus and juicy Fresh
511
+ Grape Sweet clusters [Seasonal]
512
+ Mango Tropical delight Imported
513
+ Pineapple Sweet and tangy
514
+ ›Strawberry Red and sweet [Popular]
515
+
516
+
517
+
518
+ ↵ select ↑↓ navigate ^k actions"
519
+ `);
520
+ // Continue to Vegetables section
521
+ await session.press('down'); // Carrot (first vegetable)
522
+ await session.press('down'); // Lettuce
523
+ await session.press('down'); // Broccoli
524
+ const afterVegetablesSnapshot = await session.text();
525
+ expect(afterVegetablesSnapshot).toMatchInlineSnapshot(`
526
+ "
527
+
528
+
529
+ Simple List Example ────────────────────────────────────────────
530
+
531
+ Search items...
532
+
533
+ Grape Sweet clusters [Seasonal] ▲
534
+ Mango Tropical delight Imported
535
+ Pineapple Sweet and tangy
536
+ Strawberry Red and sweet [Popular] ▄
537
+
538
+ Vegetables
539
+ Carrot Orange and crunchy [Healthy]
540
+ Lettuce Green and fresh
541
+ ›Broccoli Green florets [Healthy] ▼
542
+
543
+
544
+ ↵ select ↑↓ navigate ^k actions"
545
+ `);
546
+ // Navigate to the last items
547
+ await session.press('down'); // Spinach
548
+ await session.press('down'); // Tomato
549
+ await session.press('down'); // Cucumber
550
+ await session.press('down'); // Bell Pepper
551
+ await session.press('down'); // Bread (last item)
552
+ const afterLastItemSnapshot = await session.text();
553
+ expect(afterLastItemSnapshot).toMatchInlineSnapshot(`
554
+ "
555
+
556
+
557
+ Simple List Example ────────────────────────────────────────────
558
+
559
+ Search items...
560
+
561
+ Carrot Orange and crunchy [Healthy] ▲
562
+ Lettuce Green and fresh
563
+ Broccoli Green florets [Healthy]
564
+ Spinach Leafy greens Organic
565
+ Tomato Red and ripe
566
+ Cucumber Cool and crisp
567
+ Bell Pepper Colorful and crunchy [Fresh]
568
+
569
+ ›Bread Freshly baked Today [New] ▼
570
+
571
+
572
+ ↵ select ↑↓ navigate ^k actions"
573
+ `);
574
+ // Navigate back up to top
575
+ for (let i = 0; i < 15; i++) {
576
+ await session.press('up');
577
+ }
578
+ const afterScrollBackUpSnapshot = await session.text();
579
+ expect(afterScrollBackUpSnapshot).toMatchInlineSnapshot(`
580
+ "
581
+
582
+
583
+ Simple List Example ────────────────────────────────────────────
584
+
585
+ Search items...
586
+
587
+ Carrot Orange and crunchy [Healthy] ▲
588
+ Lettuce Green and fresh
589
+ Broccoli Green florets [Healthy]
590
+ Spinach Leafy greens Organic
591
+ Tomato Red and ripe
592
+ Cucumber Cool and crisp
593
+ Bell Pepper Colorful and crunchy [Fresh]
594
+
595
+ ›Bread Freshly baked Today [New] ▼
596
+
597
+
598
+ ↵ select ↑↓ navigate ^k actions"
599
+ `);
600
+ }, 15000);
601
+ //# sourceMappingURL=list-with-sections.vitest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-with-sections.vitest.js","sourceRoot":"","sources":["../../src/examples/list-with-sections.vitest.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Example demonstrating vertical centering of content within a scrollbox.
3
+ * The content (header + items) should be vertically centered when smaller than viewport.
4
+ */
5
+ export declare function ScrollboxVerticalCenteringExample(): any;
6
+ //# sourceMappingURL=scrollbox-vertical-centering.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scrollbox-vertical-centering.d.ts","sourceRoot":"","sources":["../../src/examples/scrollbox-vertical-centering.tsx"],"names":[],"mappings":"AAKA;;;GAGG;AACH,wBAAgB,iCAAiC,IAAI,GAAG,CAgCvD"}
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@opentui/react/jsx-runtime";
2
+ import { renderWithProviders } from 'termcast';
3
+ import { ScrollBox } from 'termcast/src/internal/scrollbox';
4
+ import { Theme } from 'termcast/src/theme';
5
+ /**
6
+ * Example demonstrating vertical centering of content within a scrollbox.
7
+ * The content (header + items) should be vertically centered when smaller than viewport.
8
+ */
9
+ export function ScrollboxVerticalCenteringExample() {
10
+ return (_jsx("box", { flexDirection: 'row', flexGrow: 1, justifyContent: 'center', children: _jsxs("box", { flexGrow: 1, flexDirection: 'column', maxWidth: 60, children: [_jsxs(ScrollBox, { flexGrow: 1, style: {
11
+ contentOptions: {
12
+ justifyContent: 'center',
13
+ },
14
+ }, children: [_jsx("box", { flexShrink: 0, paddingBottom: 1, children: _jsx("text", { fg: Theme.textMuted, children: "Header/Progress Bar Above" }) }), _jsxs("box", { flexDirection: 'column', gap: 1, children: [_jsx("text", { fg: Theme.text, children: "Item 1" }), _jsx("text", { fg: Theme.text, children: "Item 2" }), _jsx("text", { fg: Theme.text, children: "Item 3" })] })] }), _jsx("box", { flexShrink: 0, paddingTop: 1, children: _jsx("text", { fg: Theme.textMuted, children: "Footer" }) })] }) }));
15
+ }
16
+ await renderWithProviders(_jsx(ScrollboxVerticalCenteringExample, {}));
17
+ //# sourceMappingURL=scrollbox-vertical-centering.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scrollbox-vertical-centering.js","sourceRoot":"","sources":["../../src/examples/scrollbox-vertical-centering.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAE1C;;;GAGG;AACH,MAAM,UAAU,iCAAiC;IAC/C,OAAO,CACL,cAAK,aAAa,EAAC,KAAK,EAAC,QAAQ,EAAE,CAAC,EAAE,cAAc,EAAC,QAAQ,YAC3D,eAAK,QAAQ,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,EAAE,aAEnD,MAAC,SAAS,IACR,QAAQ,EAAE,CAAC,EACX,KAAK,EAAE;wBACL,cAAc,EAAE;4BACd,cAAc,EAAE,QAAQ;yBACzB;qBACF,aAGD,cAAK,UAAU,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,YAClC,eAAM,EAAE,EAAE,KAAK,CAAC,SAAS,0CAAkC,GACvD,EAEN,eAAK,aAAa,EAAC,QAAQ,EAAC,GAAG,EAAE,CAAC,aAChC,eAAM,EAAE,EAAE,KAAK,CAAC,IAAI,uBAAe,EACnC,eAAM,EAAE,EAAE,KAAK,CAAC,IAAI,uBAAe,EACnC,eAAM,EAAE,EAAE,KAAK,CAAC,IAAI,uBAAe,IAC/B,IACI,EAGZ,cAAK,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,YAC/B,eAAM,EAAE,EAAE,KAAK,CAAC,SAAS,uBAAe,GACpC,IACF,GACF,CACP,CAAA;AACH,CAAC;AAED,MAAM,mBAAmB,CAAC,KAAC,iCAAiC,KAAG,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=simple-file-picker.vitest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simple-file-picker.vitest.d.ts","sourceRoot":"","sources":["../../src/examples/simple-file-picker.vitest.tsx"],"names":[],"mappings":""}