termcast 1.3.9 → 1.3.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (559) hide show
  1. package/dist/action-utils.js +1 -1
  2. package/dist/action-utils.js.map +1 -1
  3. package/dist/apis/ai.js +1 -1
  4. package/dist/apis/ai.js.map +1 -1
  5. package/dist/apis/clipboard.js +2 -2
  6. package/dist/apis/clipboard.js.map +1 -1
  7. package/dist/apis/hud.d.ts +2 -2
  8. package/dist/apis/hud.d.ts.map +1 -1
  9. package/dist/apis/hud.js +5 -5
  10. package/dist/apis/hud.js.map +1 -1
  11. package/dist/apis/oauth.d.ts +1 -1
  12. package/dist/apis/oauth.d.ts.map +1 -1
  13. package/dist/apis/oauth.js +8 -8
  14. package/dist/apis/oauth.js.map +1 -1
  15. package/dist/apis/preferences.js +4 -4
  16. package/dist/apis/preferences.js.map +1 -1
  17. package/dist/apis/toast.d.ts +1 -5
  18. package/dist/apis/toast.d.ts.map +1 -1
  19. package/dist/apis/toast.js +26 -20
  20. package/dist/apis/toast.js.map +1 -1
  21. package/dist/build.d.ts +2 -0
  22. package/dist/build.d.ts.map +1 -1
  23. package/dist/build.js +9 -8
  24. package/dist/build.js.map +1 -1
  25. package/dist/cli.js +44 -2
  26. package/dist/cli.js.map +1 -1
  27. package/dist/colors.d.ts +8 -1
  28. package/dist/colors.d.ts.map +1 -1
  29. package/dist/colors.js +12 -0
  30. package/dist/colors.js.map +1 -1
  31. package/dist/compile.d.ts +30 -0
  32. package/dist/compile.d.ts.map +1 -0
  33. package/dist/compile.js +156 -0
  34. package/dist/compile.js.map +1 -0
  35. package/dist/components/actions.d.ts +2 -1
  36. package/dist/components/actions.d.ts.map +1 -1
  37. package/dist/components/actions.js +11 -8
  38. package/dist/components/actions.js.map +1 -1
  39. package/dist/components/alert.js +4 -4
  40. package/dist/components/alert.js.map +1 -1
  41. package/dist/components/command-arguments.d.ts +9 -0
  42. package/dist/components/command-arguments.d.ts.map +1 -0
  43. package/dist/components/command-arguments.js +21 -0
  44. package/dist/components/command-arguments.js.map +1 -0
  45. package/dist/components/detail.d.ts +3 -3
  46. package/dist/components/detail.d.ts.map +1 -1
  47. package/dist/components/detail.js +20 -42
  48. package/dist/components/detail.js.map +1 -1
  49. package/dist/components/dropdown.d.ts +2 -1
  50. package/dist/components/dropdown.d.ts.map +1 -1
  51. package/dist/components/dropdown.js +81 -25
  52. package/dist/components/dropdown.js.map +1 -1
  53. package/dist/components/extension-preferences.d.ts.map +1 -1
  54. package/dist/components/extension-preferences.js +23 -33
  55. package/dist/components/extension-preferences.js.map +1 -1
  56. package/dist/components/form/checkbox.d.ts.map +1 -1
  57. package/dist/components/form/checkbox.js +11 -4
  58. package/dist/components/form/checkbox.js.map +1 -1
  59. package/dist/components/form/date-picker.d.ts.map +1 -1
  60. package/dist/components/form/date-picker.js +18 -31
  61. package/dist/components/form/date-picker.js.map +1 -1
  62. package/dist/components/form/description.d.ts +2 -0
  63. package/dist/components/form/description.d.ts.map +1 -1
  64. package/dist/components/form/description.js +21 -3
  65. package/dist/components/form/description.js.map +1 -1
  66. package/dist/components/form/dropdown.d.ts.map +1 -1
  67. package/dist/components/form/dropdown.js +17 -32
  68. package/dist/components/form/dropdown.js.map +1 -1
  69. package/dist/components/form/file-autocomplete.d.ts +7 -4
  70. package/dist/components/form/file-autocomplete.d.ts.map +1 -1
  71. package/dist/components/form/file-autocomplete.js +56 -48
  72. package/dist/components/form/file-autocomplete.js.map +1 -1
  73. package/dist/components/form/file-picker.d.ts +5 -0
  74. package/dist/components/form/file-picker.d.ts.map +1 -1
  75. package/dist/components/form/file-picker.js +48 -51
  76. package/dist/components/form/file-picker.js.map +1 -1
  77. package/dist/components/form/form-end.js +1 -1
  78. package/dist/components/form/form-end.js.map +1 -1
  79. package/dist/components/form/form-ref.d.ts +43 -0
  80. package/dist/components/form/form-ref.d.ts.map +1 -0
  81. package/dist/components/form/form-ref.js +53 -0
  82. package/dist/components/form/form-ref.js.map +1 -0
  83. package/dist/components/form/index.d.ts +16 -0
  84. package/dist/components/form/index.d.ts.map +1 -1
  85. package/dist/components/form/index.js +90 -27
  86. package/dist/components/form/index.js.map +1 -1
  87. package/dist/components/form/password-field.d.ts.map +1 -1
  88. package/dist/components/form/password-field.js +33 -17
  89. package/dist/components/form/password-field.js.map +1 -1
  90. package/dist/components/form/separator.js +1 -1
  91. package/dist/components/form/separator.js.map +1 -1
  92. package/dist/components/form/tagpicker.d.ts +1 -1
  93. package/dist/components/form/tagpicker.d.ts.map +1 -1
  94. package/dist/components/form/text-area.d.ts.map +1 -1
  95. package/dist/components/form/text-area.js +33 -16
  96. package/dist/components/form/text-area.js.map +1 -1
  97. package/dist/components/form/text-field.d.ts.map +1 -1
  98. package/dist/components/form/text-field.js +38 -18
  99. package/dist/components/form/text-field.js.map +1 -1
  100. package/dist/components/form/use-form-navigation.d.ts +4 -0
  101. package/dist/components/form/use-form-navigation.d.ts.map +1 -1
  102. package/dist/components/form/use-form-navigation.js +35 -18
  103. package/dist/components/form/use-form-navigation.js.map +1 -1
  104. package/dist/components/form/with-left-border.d.ts.map +1 -1
  105. package/dist/components/form/with-left-border.js +3 -3
  106. package/dist/components/form/with-left-border.js.map +1 -1
  107. package/dist/components/icon.d.ts +3 -1
  108. package/dist/components/icon.d.ts.map +1 -1
  109. package/dist/components/icon.js +494 -469
  110. package/dist/components/icon.js.map +1 -1
  111. package/dist/components/image.js +1 -1
  112. package/dist/components/image.js.map +1 -1
  113. package/dist/components/list.d.ts +12 -8
  114. package/dist/components/list.d.ts.map +1 -1
  115. package/dist/components/list.js +172 -40
  116. package/dist/components/list.js.map +1 -1
  117. package/dist/components/loading-bar.js +2 -2
  118. package/dist/components/loading-bar.js.map +1 -1
  119. package/dist/components/menubar-extra.d.ts +1 -1
  120. package/dist/components/menubar-extra.d.ts.map +1 -1
  121. package/dist/components/menubar-extra.js +2 -2
  122. package/dist/components/menubar-extra.js.map +1 -1
  123. package/dist/descendants.d.ts.map +1 -1
  124. package/dist/descendants.js +8 -5
  125. package/dist/descendants.js.map +1 -1
  126. package/dist/e2e-node.d.ts +2 -0
  127. package/dist/e2e-node.d.ts.map +1 -1
  128. package/dist/e2e-node.js +14 -0
  129. package/dist/e2e-node.js.map +1 -1
  130. package/dist/examples/action-show-in-finder.js +3 -3
  131. package/dist/examples/action-show-in-finder.js.map +1 -1
  132. package/dist/examples/environment-test.js +4 -4
  133. package/dist/examples/environment-test.js.map +1 -1
  134. package/dist/examples/error-boundary.js +5 -5
  135. package/dist/examples/error-boundary.js.map +1 -1
  136. package/dist/examples/form-basic.d.ts.map +1 -1
  137. package/dist/examples/form-basic.js +6 -6
  138. package/dist/examples/form-basic.js.map +1 -1
  139. package/dist/examples/form-dropdown.js +3 -3
  140. package/dist/examples/form-dropdown.js.map +1 -1
  141. package/dist/examples/form-scroll.d.ts +2 -0
  142. package/dist/examples/form-scroll.d.ts.map +1 -0
  143. package/dist/examples/form-scroll.js +8 -0
  144. package/dist/examples/form-scroll.js.map +1 -0
  145. package/dist/examples/form-tagpicker.js +3 -3
  146. package/dist/examples/form-tagpicker.js.map +1 -1
  147. package/dist/examples/internal/descendants-filtering.js +10 -5
  148. package/dist/examples/internal/descendants-filtering.js.map +1 -1
  149. package/dist/examples/internal/descendants.js +13 -6
  150. package/dist/examples/internal/descendants.js.map +1 -1
  151. package/dist/examples/internal/rhf-custom-ref.d.ts +2 -0
  152. package/dist/examples/internal/rhf-custom-ref.d.ts.map +1 -0
  153. package/dist/examples/internal/rhf-custom-ref.js +67 -0
  154. package/dist/examples/internal/rhf-custom-ref.js.map +1 -0
  155. package/dist/examples/internal/scrollbox-demo.js +4 -8
  156. package/dist/examples/internal/scrollbox-demo.js.map +1 -1
  157. package/dist/examples/internal/scrollbox-with-descendants.d.ts +2 -0
  158. package/dist/examples/internal/scrollbox-with-descendants.d.ts.map +1 -0
  159. package/dist/examples/internal/scrollbox-with-descendants.js +63 -0
  160. package/dist/examples/internal/scrollbox-with-descendants.js.map +1 -0
  161. package/dist/examples/internal/simple-dialog.js +7 -7
  162. package/dist/examples/internal/simple-dialog.js.map +1 -1
  163. package/dist/examples/internal/simple-scrollbox.d.ts +2 -0
  164. package/dist/examples/internal/simple-scrollbox.d.ts.map +1 -0
  165. package/dist/examples/internal/simple-scrollbox.js +25 -0
  166. package/dist/examples/internal/simple-scrollbox.js.map +1 -0
  167. package/dist/examples/internal/text-stacking.js +4 -2
  168. package/dist/examples/internal/text-stacking.js.map +1 -1
  169. package/dist/examples/list-dropdown-default.js +3 -3
  170. package/dist/examples/list-dropdown-default.js.map +1 -1
  171. package/dist/examples/list-fetch-data.js +3 -3
  172. package/dist/examples/list-fetch-data.js.map +1 -1
  173. package/dist/examples/list-scrollbox.d.ts +2 -0
  174. package/dist/examples/list-scrollbox.d.ts.map +1 -0
  175. package/dist/examples/list-scrollbox.js +29 -0
  176. package/dist/examples/list-scrollbox.js.map +1 -0
  177. package/dist/examples/list-with-detail.js +2 -2
  178. package/dist/examples/list-with-detail.js.map +1 -1
  179. package/dist/examples/list-with-dropdown.js +2 -2
  180. package/dist/examples/list-with-dropdown.js.map +1 -1
  181. package/dist/examples/list-with-sections.js +6 -6
  182. package/dist/examples/list-with-sections.js.map +1 -1
  183. package/dist/examples/miscellaneous.js +14 -14
  184. package/dist/examples/miscellaneous.js.map +1 -1
  185. package/dist/examples/nested-navigation.js +9 -7
  186. package/dist/examples/nested-navigation.js.map +1 -1
  187. package/dist/examples/preferences-test.js +4 -4
  188. package/dist/examples/preferences-test.js.map +1 -1
  189. package/dist/examples/simple-dropdown.js +4 -4
  190. package/dist/examples/simple-dropdown.js.map +1 -1
  191. package/dist/examples/simple-file-picker.js +3 -3
  192. package/dist/examples/simple-file-picker.js.map +1 -1
  193. package/dist/examples/simple-grid.js +2 -2
  194. package/dist/examples/simple-grid.js.map +1 -1
  195. package/dist/examples/simple-hud.js +4 -4
  196. package/dist/examples/simple-hud.js.map +1 -1
  197. package/dist/examples/simple-list-search.js +21 -5
  198. package/dist/examples/simple-list-search.js.map +1 -1
  199. package/dist/examples/simple-list.js +4 -4
  200. package/dist/examples/simple-list.js.map +1 -1
  201. package/dist/examples/simple-navigation.js +9 -7
  202. package/dist/examples/simple-navigation.js.map +1 -1
  203. package/dist/examples/store.js +1 -1
  204. package/dist/examples/store.js.map +1 -1
  205. package/dist/examples/submodule-diff.d.ts +2 -0
  206. package/dist/examples/submodule-diff.d.ts.map +1 -0
  207. package/dist/examples/submodule-diff.js +99 -0
  208. package/dist/examples/submodule-diff.js.map +1 -0
  209. package/dist/examples/tanstack-demo.js +3 -3
  210. package/dist/examples/tanstack-demo.js.map +1 -1
  211. package/dist/examples/use-promise-demo.js +3 -3
  212. package/dist/examples/use-promise-demo.js.map +1 -1
  213. package/dist/extensions/dev.d.ts +8 -0
  214. package/dist/extensions/dev.d.ts.map +1 -1
  215. package/dist/extensions/dev.js +60 -35
  216. package/dist/extensions/dev.js.map +1 -1
  217. package/dist/extensions/home.d.ts.map +1 -1
  218. package/dist/extensions/home.js +22 -97
  219. package/dist/extensions/home.js.map +1 -1
  220. package/dist/extensions/store.js +2 -2
  221. package/dist/extensions/store.js.map +1 -1
  222. package/dist/globals.js +1 -1
  223. package/dist/globals.js.map +1 -1
  224. package/dist/hooks/index.d.ts +1 -1
  225. package/dist/hooks/index.d.ts.map +1 -1
  226. package/dist/hooks/index.js +1 -1
  227. package/dist/hooks/index.js.map +1 -1
  228. package/dist/hooks/use-action-panel.js +1 -1
  229. package/dist/hooks/use-action-panel.js.map +1 -1
  230. package/dist/hooks/use-unstable-ai.js +1 -1
  231. package/dist/hooks/use-unstable-ai.js.map +1 -1
  232. package/dist/index.d.ts +57 -55
  233. package/dist/index.d.ts.map +1 -1
  234. package/dist/index.js +42 -38
  235. package/dist/index.js.map +1 -1
  236. package/dist/internal/date-picker-widget.d.ts.map +1 -1
  237. package/dist/internal/date-picker-widget.js +56 -48
  238. package/dist/internal/date-picker-widget.js.map +1 -1
  239. package/dist/internal/dialog.d.ts +3 -3
  240. package/dist/internal/dialog.d.ts.map +1 -1
  241. package/dist/internal/dialog.js +10 -10
  242. package/dist/internal/dialog.js.map +1 -1
  243. package/dist/internal/error-handler.js +2 -2
  244. package/dist/internal/error-handler.js.map +1 -1
  245. package/dist/internal/focus-context.d.ts +1 -1
  246. package/dist/internal/focus-context.d.ts.map +1 -1
  247. package/dist/internal/navigation.d.ts +1 -1
  248. package/dist/internal/navigation.d.ts.map +1 -1
  249. package/dist/internal/navigation.js +2 -2
  250. package/dist/internal/navigation.js.map +1 -1
  251. package/dist/internal/providers.d.ts +2 -2
  252. package/dist/internal/providers.d.ts.map +1 -1
  253. package/dist/internal/providers.js +9 -9
  254. package/dist/internal/providers.js.map +1 -1
  255. package/dist/internal/scrollbox.d.ts +12 -0
  256. package/dist/internal/scrollbox.d.ts.map +1 -0
  257. package/dist/internal/scrollbox.js +34 -0
  258. package/dist/internal/scrollbox.js.map +1 -0
  259. package/dist/preload.js +1 -1
  260. package/dist/preload.js.map +1 -1
  261. package/dist/release.d.ts +11 -0
  262. package/dist/release.d.ts.map +1 -0
  263. package/dist/release.js +113 -0
  264. package/dist/release.js.map +1 -0
  265. package/dist/state.d.ts +1 -0
  266. package/dist/state.d.ts.map +1 -1
  267. package/dist/state.js +1 -0
  268. package/dist/state.js.map +1 -1
  269. package/dist/theme.d.ts +11 -8
  270. package/dist/theme.d.ts.map +1 -1
  271. package/dist/theme.js +31 -8
  272. package/dist/theme.js.map +1 -1
  273. package/dist/utils/run-command.d.ts +22 -0
  274. package/dist/utils/run-command.d.ts.map +1 -0
  275. package/dist/utils/run-command.js +127 -0
  276. package/dist/utils/run-command.js.map +1 -0
  277. package/dist/utils.d.ts +1 -1
  278. package/dist/utils.d.ts.map +1 -1
  279. package/dist/utils.js +6 -4
  280. package/dist/utils.js.map +1 -1
  281. package/package.json +13 -8
  282. package/src/apis/toast.tsx +38 -17
  283. package/src/build.tsx +5 -3
  284. package/src/cli.tsx +46 -0
  285. package/src/colors.tsx +22 -1
  286. package/src/compile.tsx +219 -0
  287. package/src/components/actions.tsx +7 -1
  288. package/src/components/command-arguments.tsx +81 -0
  289. package/src/components/detail.tsx +26 -58
  290. package/src/components/dropdown.tsx +108 -23
  291. package/src/components/extension-preferences.tsx +55 -35
  292. package/src/components/form/checkbox.tsx +13 -5
  293. package/src/components/form/date-picker.tsx +24 -29
  294. package/src/components/form/description.tsx +35 -7
  295. package/src/components/form/dropdown.tsx +16 -30
  296. package/src/components/form/file-autocomplete.tsx +87 -77
  297. package/src/components/form/file-picker.tsx +69 -57
  298. package/src/components/form/form-ref.tsx +68 -0
  299. package/src/components/form/index.tsx +152 -41
  300. package/src/components/form/password-field.tsx +35 -22
  301. package/src/components/form/text-area.tsx +78 -58
  302. package/src/components/form/text-field.tsx +82 -61
  303. package/src/components/form/use-form-navigation.tsx +43 -23
  304. package/src/components/form/with-left-border.tsx +2 -1
  305. package/src/components/icon.tsx +497 -469
  306. package/src/components/list.tsx +279 -112
  307. package/src/components/loading-bar.tsx +1 -1
  308. package/src/descendants.tsx +15 -5
  309. package/src/e2e-node.tsx +16 -0
  310. package/src/examples/action-show-in-finder.tsx +1 -1
  311. package/src/examples/environment-test.tsx +1 -1
  312. package/src/examples/error-boundary.tsx +1 -1
  313. package/src/examples/file-autocomplete.vitest.tsx +245 -0
  314. package/src/examples/form-basic.tsx +12 -12
  315. package/src/examples/form-basic.vitest.tsx +297 -671
  316. package/src/examples/form-dropdown.tsx +1 -1
  317. package/src/examples/form-dropdown.vitest.tsx +353 -221
  318. package/src/examples/form-scroll.tsx +56 -0
  319. package/src/examples/form-scroll.vitest.tsx +228 -0
  320. package/src/examples/form-tagpicker.tsx +1 -1
  321. package/src/examples/form-tagpicker.vitest.tsx +438 -193
  322. package/src/examples/internal/descendants-filtering.tsx +13 -5
  323. package/src/examples/internal/descendants.tsx +17 -5
  324. package/src/examples/internal/rhf-custom-ref.tsx +152 -0
  325. package/src/examples/internal/scrollbox-demo.tsx +15 -7
  326. package/src/examples/internal/scrollbox-with-descendants.tsx +94 -0
  327. package/src/examples/internal/simple-dialog.tsx +1 -1
  328. package/src/examples/internal/simple-scrollbox.tsx +58 -0
  329. package/src/examples/internal/simple-scrollbox.vitest.tsx +104 -0
  330. package/src/examples/internal/text-stacking.tsx +4 -2
  331. package/src/examples/list-dropdown-default.tsx +1 -1
  332. package/src/examples/list-dropdown-default.vitest.tsx +136 -71
  333. package/src/examples/list-fetch-data.tsx +1 -1
  334. package/src/examples/list-fetch-data.vitest.tsx +42 -33
  335. package/src/examples/list-scrollbox.tsx +46 -0
  336. package/src/examples/list-scrollbox.vitest.tsx +103 -0
  337. package/src/examples/list-with-detail.tsx +1 -1
  338. package/src/examples/list-with-detail.vitest.tsx +290 -294
  339. package/src/examples/list-with-dropdown.tsx +1 -1
  340. package/src/examples/list-with-dropdown.vitest.tsx +190 -150
  341. package/src/examples/list-with-sections.tsx +12 -1
  342. package/src/examples/list-with-sections.vitest.tsx +390 -218
  343. package/src/examples/miscellaneous.tsx +1 -1
  344. package/src/examples/nested-navigation.tsx +7 -5
  345. package/src/examples/preferences-test.tsx +1 -1
  346. package/src/examples/simple-dropdown.tsx +1 -1
  347. package/src/examples/simple-file-picker.tsx +1 -1
  348. package/src/examples/simple-file-picker.vitest.tsx +533 -127
  349. package/src/examples/simple-grid.tsx +1 -1
  350. package/src/examples/simple-grid.vitest.tsx +258 -234
  351. package/src/examples/simple-hud.tsx +1 -1
  352. package/src/examples/simple-list-search.tsx +42 -1
  353. package/src/examples/simple-list.tsx +1 -1
  354. package/src/examples/simple-navigation.tsx +7 -5
  355. package/src/examples/simple-navigation.vitest.tsx +434 -238
  356. package/src/examples/store.tsx +1 -1
  357. package/src/examples/store.vitest.tsx +31 -14
  358. package/src/examples/submodule-diff.tsx +153 -0
  359. package/src/examples/tanstack-demo.tsx +1 -1
  360. package/src/examples/use-promise-demo.tsx +1 -1
  361. package/src/extensions/dev.tsx +76 -38
  362. package/src/extensions/dev.vitest.tsx +220 -0
  363. package/src/extensions/home.tsx +20 -121
  364. package/src/globals.ts +1 -1
  365. package/src/index.tsx +12 -25
  366. package/src/internal/date-picker-widget.tsx +56 -46
  367. package/src/internal/dialog.tsx +6 -6
  368. package/src/internal/providers.tsx +1 -1
  369. package/src/internal/scrollbox.tsx +63 -0
  370. package/src/release.tsx +159 -0
  371. package/src/state.tsx +2 -0
  372. package/src/store-api/search.test.tsx +4 -13
  373. package/src/theme.tsx +33 -8
  374. package/src/utils/run-command.tsx +204 -0
  375. package/src/utils.tsx +6 -4
  376. package/dist/ai.d.ts +0 -104
  377. package/dist/ai.d.ts.map +0 -1
  378. package/dist/ai.js +0 -135
  379. package/dist/ai.js.map +0 -1
  380. package/dist/apis/cache.test.d.ts +0 -2
  381. package/dist/apis/cache.test.d.ts.map +0 -1
  382. package/dist/apis/cache.test.js +0 -246
  383. package/dist/apis/cache.test.js.map +0 -1
  384. package/dist/apis/localstorage.test.d.ts +0 -2
  385. package/dist/apis/localstorage.test.d.ts.map +0 -1
  386. package/dist/apis/localstorage.test.js +0 -131
  387. package/dist/apis/localstorage.test.js.map +0 -1
  388. package/dist/apis/toast.test.d.ts +0 -2
  389. package/dist/apis/toast.test.d.ts.map +0 -1
  390. package/dist/apis/toast.test.js +0 -67
  391. package/dist/apis/toast.test.js.map +0 -1
  392. package/dist/build.test.d.ts +0 -2
  393. package/dist/build.test.d.ts.map +0 -1
  394. package/dist/build.test.js +0 -73
  395. package/dist/build.test.js.map +0 -1
  396. package/dist/cache.d.ts +0 -32
  397. package/dist/cache.d.ts.map +0 -1
  398. package/dist/cache.js +0 -205
  399. package/dist/cache.js.map +0 -1
  400. package/dist/cache.test.d.ts +0 -2
  401. package/dist/cache.test.d.ts.map +0 -1
  402. package/dist/cache.test.js +0 -246
  403. package/dist/cache.test.js.map +0 -1
  404. package/dist/clipboard.d.ts +0 -36
  405. package/dist/clipboard.d.ts.map +0 -1
  406. package/dist/clipboard.js +0 -154
  407. package/dist/clipboard.js.map +0 -1
  408. package/dist/components/form/form-type-only.d.ts +0 -174
  409. package/dist/components/form/form-type-only.d.ts.map +0 -1
  410. package/dist/components/form/form-type-only.js +0 -2
  411. package/dist/components/form/form-type-only.js.map +0 -1
  412. package/dist/components/form/use-form-handling.d.ts +0 -4
  413. package/dist/components/form/use-form-handling.d.ts.map +0 -1
  414. package/dist/components/form/use-form-handling.js +0 -37
  415. package/dist/components/form/use-form-handling.js.map +0 -1
  416. package/dist/dev-ui.d.ts +0 -7
  417. package/dist/dev-ui.d.ts.map +0 -1
  418. package/dist/dev-ui.js +0 -118
  419. package/dist/dev-ui.js.map +0 -1
  420. package/dist/environment.d.ts +0 -63
  421. package/dist/environment.d.ts.map +0 -1
  422. package/dist/environment.js +0 -189
  423. package/dist/environment.js.map +0 -1
  424. package/dist/examples/datepicker.d.ts +0 -2
  425. package/dist/examples/datepicker.d.ts.map +0 -1
  426. package/dist/examples/datepicker.js +0 -344
  427. package/dist/examples/datepicker.js.map +0 -1
  428. package/dist/examples/form-basic-arrow-keys.vitest.d.ts +0 -2
  429. package/dist/examples/form-basic-arrow-keys.vitest.d.ts.map +0 -1
  430. package/dist/examples/form-basic-arrow-keys.vitest.js +0 -46
  431. package/dist/examples/form-basic-arrow-keys.vitest.js.map +0 -1
  432. package/dist/examples/form-basic.vitest.d.ts +0 -2
  433. package/dist/examples/form-basic.vitest.d.ts.map +0 -1
  434. package/dist/examples/form-basic.vitest.js +0 -995
  435. package/dist/examples/form-basic.vitest.js.map +0 -1
  436. package/dist/examples/form-dropdown-with-sections.d.ts +0 -2
  437. package/dist/examples/form-dropdown-with-sections.d.ts.map +0 -1
  438. package/dist/examples/form-dropdown-with-sections.js +0 -13
  439. package/dist/examples/form-dropdown-with-sections.js.map +0 -1
  440. package/dist/examples/form-dropdown-with-sections.vitest.d.ts +0 -2
  441. package/dist/examples/form-dropdown-with-sections.vitest.d.ts.map +0 -1
  442. package/dist/examples/form-dropdown-with-sections.vitest.js +0 -75
  443. package/dist/examples/form-dropdown-with-sections.vitest.js.map +0 -1
  444. package/dist/examples/form-dropdown.vitest.d.ts +0 -2
  445. package/dist/examples/form-dropdown.vitest.d.ts.map +0 -1
  446. package/dist/examples/form-dropdown.vitest.js +0 -722
  447. package/dist/examples/form-dropdown.vitest.js.map +0 -1
  448. package/dist/examples/form-multiselect-dropdown.d.ts +0 -2
  449. package/dist/examples/form-multiselect-dropdown.d.ts.map +0 -1
  450. package/dist/examples/form-multiselect-dropdown.js +0 -13
  451. package/dist/examples/form-multiselect-dropdown.js.map +0 -1
  452. package/dist/examples/form-tagpicker.vitest.d.ts +0 -2
  453. package/dist/examples/form-tagpicker.vitest.d.ts.map +0 -1
  454. package/dist/examples/form-tagpicker.vitest.js +0 -491
  455. package/dist/examples/form-tagpicker.vitest.js.map +0 -1
  456. package/dist/examples/internal/nested-boxes.d.ts +0 -2
  457. package/dist/examples/internal/nested-boxes.d.ts.map +0 -1
  458. package/dist/examples/internal/nested-boxes.js +0 -7
  459. package/dist/examples/internal/nested-boxes.js.map +0 -1
  460. package/dist/examples/internal/unicode-square-repro.d.ts +0 -2
  461. package/dist/examples/internal/unicode-square-repro.d.ts.map +0 -1
  462. package/dist/examples/internal/unicode-square-repro.js +0 -7
  463. package/dist/examples/internal/unicode-square-repro.js.map +0 -1
  464. package/dist/examples/list-dropdown-default.vitest.d.ts +0 -2
  465. package/dist/examples/list-dropdown-default.vitest.d.ts.map +0 -1
  466. package/dist/examples/list-dropdown-default.vitest.js +0 -164
  467. package/dist/examples/list-dropdown-default.vitest.js.map +0 -1
  468. package/dist/examples/list-fetch-data.vitest.d.ts +0 -2
  469. package/dist/examples/list-fetch-data.vitest.d.ts.map +0 -1
  470. package/dist/examples/list-fetch-data.vitest.js +0 -103
  471. package/dist/examples/list-fetch-data.vitest.js.map +0 -1
  472. package/dist/examples/list-filter-navigation.d.ts +0 -2
  473. package/dist/examples/list-filter-navigation.d.ts.map +0 -1
  474. package/dist/examples/list-filter-navigation.js +0 -8
  475. package/dist/examples/list-filter-navigation.js.map +0 -1
  476. package/dist/examples/list-with-detail.vitest.d.ts +0 -2
  477. package/dist/examples/list-with-detail.vitest.d.ts.map +0 -1
  478. package/dist/examples/list-with-detail.vitest.js +0 -438
  479. package/dist/examples/list-with-detail.vitest.js.map +0 -1
  480. package/dist/examples/list-with-dropdown.vitest.d.ts +0 -2
  481. package/dist/examples/list-with-dropdown.vitest.d.ts.map +0 -1
  482. package/dist/examples/list-with-dropdown.vitest.js +0 -297
  483. package/dist/examples/list-with-dropdown.vitest.js.map +0 -1
  484. package/dist/examples/list-with-sections.vitest.d.ts +0 -2
  485. package/dist/examples/list-with-sections.vitest.d.ts.map +0 -1
  486. package/dist/examples/list-with-sections.vitest.js +0 -441
  487. package/dist/examples/list-with-sections.vitest.js.map +0 -1
  488. package/dist/examples/simple-file-picker.vitest.d.ts +0 -2
  489. package/dist/examples/simple-file-picker.vitest.d.ts.map +0 -1
  490. package/dist/examples/simple-file-picker.vitest.js +0 -277
  491. package/dist/examples/simple-file-picker.vitest.js.map +0 -1
  492. package/dist/examples/simple-grid.vitest.d.ts +0 -2
  493. package/dist/examples/simple-grid.vitest.d.ts.map +0 -1
  494. package/dist/examples/simple-grid.vitest.js +0 -498
  495. package/dist/examples/simple-grid.vitest.js.map +0 -1
  496. package/dist/examples/simple-navigation.vitest.d.ts +0 -2
  497. package/dist/examples/simple-navigation.vitest.d.ts.map +0 -1
  498. package/dist/examples/simple-navigation.vitest.js +0 -522
  499. package/dist/examples/simple-navigation.vitest.js.map +0 -1
  500. package/dist/examples/store.vitest.d.ts +0 -2
  501. package/dist/examples/store.vitest.d.ts.map +0 -1
  502. package/dist/examples/store.vitest.js +0 -52
  503. package/dist/examples/store.vitest.js.map +0 -1
  504. package/dist/home-command.d.ts +0 -8
  505. package/dist/home-command.d.ts.map +0 -1
  506. package/dist/home-command.js +0 -181
  507. package/dist/home-command.js.map +0 -1
  508. package/dist/hooks/hooks.test.d.ts +0 -2
  509. package/dist/hooks/hooks.test.d.ts.map +0 -1
  510. package/dist/hooks/hooks.test.js +0 -37
  511. package/dist/hooks/hooks.test.js.map +0 -1
  512. package/dist/hover-repro.d.ts +0 -2
  513. package/dist/hover-repro.d.ts.map +0 -1
  514. package/dist/hover-repro.js +0 -20
  515. package/dist/hover-repro.js.map +0 -1
  516. package/dist/localstorage.d.ts +0 -13
  517. package/dist/localstorage.d.ts.map +0 -1
  518. package/dist/localstorage.js +0 -190
  519. package/dist/localstorage.js.map +0 -1
  520. package/dist/localstorage.test.d.ts +0 -2
  521. package/dist/localstorage.test.d.ts.map +0 -1
  522. package/dist/localstorage.test.js +0 -131
  523. package/dist/localstorage.test.js.map +0 -1
  524. package/dist/oauth.d.ts +0 -142
  525. package/dist/oauth.d.ts.map +0 -1
  526. package/dist/oauth.js +0 -551
  527. package/dist/oauth.js.map +0 -1
  528. package/dist/preferences.d.ts +0 -23
  529. package/dist/preferences.d.ts.map +0 -1
  530. package/dist/preferences.js +0 -105
  531. package/dist/preferences.js.map +0 -1
  532. package/dist/store-api/download.test.d.ts +0 -2
  533. package/dist/store-api/download.test.d.ts.map +0 -1
  534. package/dist/store-api/download.test.js +0 -36
  535. package/dist/store-api/download.test.js.map +0 -1
  536. package/dist/store-api/extension.test.d.ts +0 -2
  537. package/dist/store-api/extension.test.d.ts.map +0 -1
  538. package/dist/store-api/extension.test.js +0 -22
  539. package/dist/store-api/extension.test.js.map +0 -1
  540. package/dist/store-api/search.test.d.ts +0 -2
  541. package/dist/store-api/search.test.d.ts.map +0 -1
  542. package/dist/store-api/search.test.js +0 -45
  543. package/dist/store-api/search.test.js.map +0 -1
  544. package/dist/store.d.ts +0 -21
  545. package/dist/store.d.ts.map +0 -1
  546. package/dist/store.js +0 -84
  547. package/dist/store.js.map +0 -1
  548. package/dist/toast.d.ts +0 -44
  549. package/dist/toast.d.ts.map +0 -1
  550. package/dist/toast.js +0 -221
  551. package/dist/toast.js.map +0 -1
  552. package/dist/utils.test.d.ts +0 -2
  553. package/dist/utils.test.d.ts.map +0 -1
  554. package/dist/utils.test.js +0 -152
  555. package/dist/utils.test.js.map +0 -1
  556. package/dist/window.d.ts +0 -12
  557. package/dist/window.d.ts.map +0 -1
  558. package/dist/window.js +0 -48
  559. package/dist/window.js.map +0 -1
@@ -1,16 +1,17 @@
1
1
  import fs from 'node:fs'
2
2
  import React from 'react'
3
- import { render } from '@opentui/react'
3
+ import { createRoot } from '@opentui/react'
4
+ import { createCliRenderer } from '@opentui/core'
4
5
  import { List, logger, useStore } from 'termcast'
5
6
  import { Action, ActionPanel } from 'termcast'
6
7
  import { useNavigation } from 'termcast/src/internal/navigation'
7
- import { Providers } from 'termcast/src/internal/providers'
8
+ import { TermcastProvider } from 'termcast/src/internal/providers'
8
9
  import { showToast, Toast } from 'termcast/src/apis/toast'
9
10
  import { Icon } from 'termcast'
10
11
  import { getStoredExtensions } from '../utils'
11
12
  import Store from './store'
12
13
  import { ExtensionPreferences } from '../components/extension-preferences'
13
- import { LocalStorage } from 'termcast/src/apis/localstorage'
14
+ import { runCommand, clearCommandArguments } from '../utils/run-command'
14
15
  import '../globals'
15
16
 
16
17
  interface ExtensionCommand {
@@ -49,8 +50,17 @@ function ExtensionsList({
49
50
  const [searchText, setSearchText] = React.useState(initialSearchQuery)
50
51
 
51
52
  const handleCommandSelect = async (item: ExtensionCommand) => {
53
+ clearCommandArguments()
54
+
52
55
  try {
53
- await runCommand(item)
56
+ await runCommand({
57
+ command: item.command,
58
+ extensionName: item.extensionName,
59
+ packageJson: item.packageJson,
60
+ bundledPath: item.bundledPath,
61
+ Component: item.Component,
62
+ push,
63
+ })
54
64
  } catch (error: any) {
55
65
  await showToast({
56
66
  style: Toast.Style.Failure,
@@ -60,116 +70,6 @@ function ExtensionsList({
60
70
  }
61
71
  }
62
72
 
63
- const runCommand = async (item: ExtensionCommand) => {
64
- // Check if command has required preferences that are missing
65
- const checkRequiredPreferences = async (): Promise<{
66
- hasRequiredPreferences: boolean
67
- requiredPreferences?: 'command' | 'extension'
68
- }> => {
69
- // Get package.json to check required preferences
70
- if (!item.bundledPath || item.Component || !item.packageJson) {
71
- // Built-in commands or commands without packageJson don't have preferences
72
- return { hasRequiredPreferences: true }
73
- }
74
-
75
- const packageJson = item.packageJson
76
-
77
- // Check command-specific preferences
78
- const command = packageJson.commands?.find(
79
- (cmd: any) => cmd.name === item.command.name,
80
- )
81
- const commandPrefs = command?.preferences || []
82
-
83
- // Check extension-wide preferences
84
- const extensionPrefs = packageJson.preferences || []
85
-
86
- // Get saved preferences
87
- const commandPrefsKey = `preferences.${item.extensionName}.${item.command.name}`
88
- const extensionPrefsKey = `preferences.${item.extensionName}`
89
-
90
- const savedCommandPrefs = await LocalStorage.getItem(commandPrefsKey)
91
- const savedExtensionPrefs = await LocalStorage.getItem(extensionPrefsKey)
92
-
93
- const parsedCommandPrefs = savedCommandPrefs
94
- ? JSON.parse(savedCommandPrefs as string)
95
- : {}
96
- const parsedExtensionPrefs = savedExtensionPrefs
97
- ? JSON.parse(savedExtensionPrefs as string)
98
- : {}
99
-
100
- // Check if all required command preferences are set
101
- for (const pref of commandPrefs) {
102
- if (pref.required && parsedCommandPrefs[pref.name] == null) {
103
- return {
104
- hasRequiredPreferences: false,
105
- requiredPreferences: 'command',
106
- }
107
- }
108
- }
109
-
110
- // Check if all required extension preferences are set
111
- for (const pref of extensionPrefs) {
112
- if (pref.required && parsedExtensionPrefs[pref.name] == null) {
113
- return {
114
- hasRequiredPreferences: false,
115
- requiredPreferences: 'extension',
116
- }
117
- }
118
- }
119
-
120
- return { hasRequiredPreferences: true }
121
- }
122
-
123
- const prefsCheck = await checkRequiredPreferences()
124
-
125
- if (!prefsCheck.hasRequiredPreferences) {
126
- // TODO: Use replace instead of push to avoid stacking navigation
127
- // Redirect to preferences with onSubmit to run command after
128
- push(
129
- <ExtensionPreferences
130
- extensionName={item.extensionName}
131
- commandName={
132
- prefsCheck.requiredPreferences === 'command'
133
- ? item.command.name
134
- : undefined
135
- }
136
- onSubmit={() => {
137
- // Recursively run command after preferences are set
138
- runCommand(item)
139
- }}
140
- />,
141
- )
142
- return
143
- }
144
-
145
- let Component: (() => any) | undefined
146
-
147
- if (item.Component) {
148
- Component = item.Component
149
- } else if (item.bundledPath) {
150
- const module = await import(item.bundledPath)
151
- Component = module.default
152
-
153
- if (!Component) {
154
- await showToast({
155
- style: Toast.Style.Failure,
156
- title: 'No default export',
157
- message: `Command file ${item.command.name} has no default export`,
158
- })
159
- return
160
- }
161
- } else {
162
- await showToast({
163
- style: Toast.Style.Failure,
164
- title: 'Command not available',
165
- message: `Command ${item.command.name} has no implementation`,
166
- })
167
- return
168
- }
169
-
170
- push(<Component />)
171
- }
172
-
173
73
  // Group commands by extension
174
74
  const groupedByExtension = allCommands.reduce(
175
75
  (acc, cmd) => {
@@ -229,8 +129,7 @@ function ExtensionsList({
229
129
  <ExtensionPreferences
230
130
  extensionName={item.extensionName}
231
131
  onSubmit={() => {
232
- // After configuring extension preferences, try to run the command
233
- runCommand(item)
132
+ handleCommandSelect(item)
234
133
  }}
235
134
  />,
236
135
  )
@@ -244,8 +143,7 @@ function ExtensionsList({
244
143
  extensionName={item.extensionName}
245
144
  commandName={item.command.name}
246
145
  onSubmit={() => {
247
- // After configuring command preferences, try to run the command
248
- runCommand(item)
146
+ handleCommandSelect(item)
249
147
  }}
250
148
  />,
251
149
  )
@@ -284,10 +182,11 @@ function ExtensionsList({
284
182
  export async function runHomeCommand(): Promise<void> {
285
183
  logger.log(`preparing to render the home command component`)
286
184
 
287
- await render(
288
- <Providers>
185
+ const renderer = await createCliRenderer()
186
+ createRoot(renderer).render(
187
+ <TermcastProvider>
289
188
  <Home />
290
- </Providers>,
189
+ </TermcastProvider>,
291
190
  )
292
191
  logger.log(`rendered home command component`)
293
192
  }
package/src/globals.ts CHANGED
@@ -9,7 +9,7 @@ import * as opentuiCore from '@opentui/core'
9
9
  import * as opentuiReact from '@opentui/react'
10
10
  import * as react from 'react'
11
11
  import * as reactJsxRuntime from 'react/jsx-runtime'
12
- import * as termcastApi from 'termcast'
12
+ import * as termcastApi from './index'
13
13
 
14
14
  declare global {
15
15
  var opentuiCore: typeof opentuiCore
package/src/index.tsx CHANGED
@@ -95,11 +95,7 @@ export type {
95
95
  } from 'termcast/src/components/form/types'
96
96
 
97
97
  // Icons and Images
98
- export {
99
- Icon,
100
- getIconEmoji,
101
- IconComponent,
102
- } from 'termcast/src/components/icon'
98
+ export { Icon, getIconEmoji, getIconShape, IconComponent } from 'termcast/src/components/icon'
103
99
  export { Image, ImageMask } from 'termcast/src/components/image'
104
100
  export type {
105
101
  ImageProps,
@@ -111,6 +107,9 @@ export type {
111
107
  // Alerts
112
108
  export { Alert, confirmAlert } from 'termcast/src/components/alert'
113
109
 
110
+ // Command Arguments
111
+ export { CommandArguments } from 'termcast/src/components/command-arguments'
112
+
114
113
  // MenuBar
115
114
  export { MenuBarExtra } from 'termcast/src/components/menubar-extra'
116
115
  export type {
@@ -138,29 +137,17 @@ export {
138
137
  } from 'termcast/src/internal/navigation'
139
138
 
140
139
  // Hooks
141
- export {
142
- useActionPanel,
143
- useId,
144
- useUnstableAI,
145
- } from 'termcast/src/hooks/index'
140
+ export { useActionPanel, useId, useUnstableAI } from 'termcast/src/hooks/index'
146
141
  export type { ActionPanelState } from 'termcast/src/hooks/index'
147
142
 
148
143
  // Focus Context
149
144
  export { InFocus, useIsInFocus } from 'termcast/src/internal/focus-context'
150
145
 
151
146
  // Dialog
152
- export {
153
- Dialog,
154
- DialogProvider,
155
- useDialog,
156
- } from 'termcast/src/internal/dialog'
147
+ export { Dialog, DialogProvider, useDialog } from 'termcast/src/internal/dialog'
157
148
 
158
149
  // Toast
159
- export {
160
- Toast,
161
- showToast,
162
- showFailureToast,
163
- } from 'termcast/src/apis/toast'
150
+ export { Toast, showToast, showFailureToast } from 'termcast/src/apis/toast'
164
151
 
165
152
  // Clipboard
166
153
  export {
@@ -199,10 +186,7 @@ export {
199
186
  getSelectedFinderItems,
200
187
  getSelectedText,
201
188
  } from 'termcast/src/apis/environment'
202
- export type {
203
- Environment,
204
- LaunchProps,
205
- } from 'termcast/src/apis/environment'
189
+ export type { Environment, LaunchProps } from 'termcast/src/apis/environment'
206
190
 
207
191
  export { LaunchType }
208
192
 
@@ -228,7 +212,7 @@ export { useStore } from 'termcast/src/state'
228
212
  export type { DialogPosition } from 'termcast/src/state'
229
213
 
230
214
  // Providers (for app setup)
231
- export { Providers } from 'termcast/src/internal/providers'
215
+ export { TermcastProvider } from 'termcast/src/internal/providers'
232
216
 
233
217
  // Helper function for rendering examples
234
218
  export { renderWithProviders } from 'termcast/src/utils'
@@ -238,3 +222,6 @@ export { closeMainWindow, PopToRootType } from 'termcast/src/apis/window'
238
222
 
239
223
  // HUD
240
224
  export { showHUD } from 'termcast/src/apis/hud'
225
+
226
+ // Compile support
227
+ export { startCompiledExtension } from 'termcast/src/extensions/dev'
@@ -291,40 +291,41 @@ export function DatePickerWidget({
291
291
  setFocus('grid')
292
292
  }
293
293
  break
294
- case 'tab':
295
- if (key.shift) {
296
- if (focus === 'year') {
297
- // At top of widget, trigger callback or cycle to bottom
298
- if (onFirstRowUpKey) {
299
- onFirstRowUpKey()
300
- } else {
301
- // Cycle to grid if no callback
302
- setFocus('grid')
303
- }
304
- } else {
305
- // Shift+Tab: Move focus up (grid -> month -> year)
306
- setFocus((f) =>
307
- f === 'grid' ? 'month' : f === 'month' ? 'year' : 'year',
308
- )
309
- }
310
- } else {
311
- if (focus === 'grid') {
312
- // At bottom of widget, trigger callback or cycle to top
313
- if (onLastRowDownKey) {
314
- onLastRowDownKey()
315
- } else {
316
- // Cycle to year if no callback
317
- setFocus('year')
318
- }
319
- } else {
320
- // Tab: Move focus down (year -> month -> grid)
321
- setFocus((f) =>
322
- f === 'year' ? 'month' : f === 'month' ? 'grid' : 'grid',
323
- )
324
- }
325
- }
326
- break
294
+ // case 'tab':
295
+ // if (key.shift) {
296
+ // if (focus === 'year') {
297
+ // // At top of widget, trigger callback or cycle to bottom
298
+ // if (onFirstRowUpKey) {
299
+ // onFirstRowUpKey()
300
+ // } else {
301
+ // // Cycle to grid if no callback
302
+ // setFocus('grid')
303
+ // }
304
+ // } else {
305
+ // // Shift+Tab: Move focus up (grid -> month -> year)
306
+ // setFocus((f) =>
307
+ // f === 'grid' ? 'month' : f === 'month' ? 'year' : 'year',
308
+ // )
309
+ // }
310
+ // } else {
311
+ // if (focus === 'grid') {
312
+ // // At bottom of widget, trigger callback or cycle to top
313
+ // if (onLastRowDownKey) {
314
+ // onLastRowDownKey()
315
+ // } else {
316
+ // // Cycle to year if no callback
317
+ // setFocus('year')
318
+ // }
319
+ // } else {
320
+ // // Tab: Move focus down (year -> month -> grid)
321
+ // setFocus((f) =>
322
+ // f === 'year' ? 'month' : f === 'month' ? 'grid' : 'grid',
323
+ // )
324
+ // }
325
+ // }
326
+ // break
327
327
  case 'return': // Enter key
328
+ case 'space': // Space key
328
329
  if (focus === 'grid' && onChange) {
329
330
  onChange(selected)
330
331
  }
@@ -357,7 +358,9 @@ export function DatePickerWidget({
357
358
  style={{
358
359
  flexDirection: 'column',
359
360
  alignItems: 'flex-start',
360
- padding: 1,
361
+ paddingTop: 1,
362
+ paddingLeft: 1,
363
+ paddingRight: 1,
361
364
  }}
362
365
  >
363
366
  {/* Year (line 1) */}
@@ -439,7 +442,7 @@ export function DatePickerWidget({
439
442
  </box>
440
443
 
441
444
  {/* Days grid: 7 columns x 6 rows, same fixed-box strategy */}
442
- <box style={{ flexDirection: 'column', minHeight: 6 }}>
445
+ <box style={{ flexDirection: 'column' }}>
443
446
  {filteredWeeks.map((row, i) => {
444
447
  // Skip empty rows
445
448
  if (row.every((d) => d === null)) return null
@@ -455,7 +458,8 @@ export function DatePickerWidget({
455
458
  )
456
459
  }
457
460
 
458
- const isSel = sameDay(d, selected)
461
+ const isCursor = sameDay(d, selected)
462
+ const isValue = initialValue ? sameDay(d, initialValue) : false
459
463
  const isToday = sameDay(d, today)
460
464
  return (
461
465
  <box
@@ -463,11 +467,14 @@ export function DatePickerWidget({
463
467
  style={{
464
468
  ...cellStyle,
465
469
  backgroundColor:
466
- enableColors && isSel && focus === 'grid'
470
+ focus !== 'grid' ? 'transparent' :
471
+ enableColors && isCursor
467
472
  ? Theme.primary
468
- : enableColors && isToday
469
- ? Theme.backgroundPanel
470
- : undefined,
473
+ : isValue
474
+ ? Theme.selectedMuted
475
+ : enableColors && isToday
476
+ ? Theme.backgroundPanel
477
+ : undefined,
471
478
  }}
472
479
  onMouseDown={() => {
473
480
  setSelected(d)
@@ -477,13 +484,16 @@ export function DatePickerWidget({
477
484
  >
478
485
  <text
479
486
  fg={
480
- isSel && focus === 'grid'
487
+
488
+ enableColors && isCursor
481
489
  ? Theme.text
482
- : enableColors && isToday
483
- ? Theme.accent
484
- : enableColors && (j === 5 || j === 6)
485
- ? Theme.error
486
- : Theme.text
490
+ : isValue
491
+ ? Theme.text
492
+ : enableColors && isToday
493
+ ? Theme.accent
494
+ : enableColors && (j === 5 || j === 6)
495
+ ? Theme.error
496
+ : Theme.text
487
497
  }
488
498
  >
489
499
  {String(d.getDate()).padStart(2, ' ')}
@@ -1,7 +1,6 @@
1
1
  import { useKeyboard, useTerminalDimensions } from '@opentui/react'
2
2
  import React, { type ReactNode, useRef } from 'react'
3
3
  import { Theme } from 'termcast/src/theme'
4
- import { RGBA } from '@opentui/core'
5
4
  import { InFocus, useIsInFocus } from 'termcast/src/internal/focus-context'
6
5
  import { CommonProps } from 'termcast/src/utils'
7
6
  import {
@@ -10,12 +9,13 @@ import {
10
9
  type DialogStackItem,
11
10
  } from 'termcast/src/state'
12
11
  import { logger } from '../logger'
12
+ import { ToastOverlay } from 'termcast/src/apis/toast'
13
13
 
14
14
  const Border = {
15
- topLeft: '',
16
- topRight: '',
17
- bottomLeft: '',
18
- bottomRight: '',
15
+ topLeft: '',
16
+ topRight: '',
17
+ bottomLeft: '',
18
+ bottomRight: '',
19
19
  horizontal: '',
20
20
  vertical: '┃',
21
21
  topT: '+',
@@ -104,7 +104,6 @@ export function Dialog({
104
104
  paddingRight={positionStyles.paddingRight}
105
105
  left={0}
106
106
  top={0}
107
- backgroundColor={RGBA.fromInts(0, 0, 0, 150)}
108
107
  onMouseDown={handleBackdropClick}
109
108
  >
110
109
  <box
@@ -171,6 +170,7 @@ export function DialogProvider(props: DialogProviderProps): any {
171
170
  })}
172
171
  </box>
173
172
  )}
173
+ <ToastOverlay />
174
174
  </>
175
175
  )
176
176
  }
@@ -406,7 +406,7 @@ function ErrorDisplay({
406
406
 
407
407
  const ErrorBoundary = ErrorBoundaryClass as any
408
408
 
409
- export function Providers(props: ProvidersProps): any {
409
+ export function TermcastProvider(props: ProvidersProps): any {
410
410
  return (
411
411
  <ErrorBoundary>
412
412
  <Suspense fallback={<LoadingFallback />}>
@@ -0,0 +1,63 @@
1
+ import React from 'react'
2
+ import Theme from '../theme'
3
+
4
+ interface ScrollBoxProps {
5
+ children?: React.ReactNode
6
+ focused?: boolean
7
+ flexGrow?: number
8
+ flexShrink?: number
9
+ style?: any
10
+ ref?: React.Ref<any>
11
+ }
12
+
13
+ export function ScrollBox({
14
+ children,
15
+ focused = false,
16
+ flexGrow,
17
+ flexShrink,
18
+ style,
19
+ ref,
20
+ ...props
21
+ }: ScrollBoxProps): any {
22
+ return (
23
+ <scrollbox
24
+ ref={ref}
25
+ focused={focused}
26
+ flexGrow={flexGrow}
27
+ flexShrink={flexShrink}
28
+ style={{
29
+ rootOptions: {
30
+ // backgroundColor: '#1a1b26',
31
+ ...(style?.rootOptions || {}),
32
+ },
33
+ viewportOptions: {
34
+ flexGrow: 1,
35
+ flexShrink: 1,
36
+ paddingRight: 1,
37
+ ...(style?.viewportOptions || {}),
38
+ },
39
+ contentOptions: {
40
+ flexShrink: 0,
41
+ ...(style?.contentOptions || {}),
42
+ },
43
+ scrollbarOptions: {
44
+ // visible: true,
45
+ // showArrows: true,
46
+ trackOptions: {
47
+ foregroundColor: Theme.textMuted,
48
+
49
+ // backgroundColor: '#414868',
50
+ },
51
+ ...(style?.scrollbarOptions || {}),
52
+ },
53
+ horizontalScrollbarOptions: {
54
+ visible: false,
55
+ ...(style?.horizontalScrollbarOptions || {}),
56
+ },
57
+ }}
58
+ {...props}
59
+ >
60
+ {children}
61
+ </scrollbox>
62
+ )
63
+ }