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,630 @@
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/form-basic.tsx'],
8
+ cols: 70,
9
+ rows: 50,
10
+ });
11
+ });
12
+ afterEach(() => {
13
+ session?.close();
14
+ });
15
+ test('form basic navigation and input', async () => {
16
+ await session.text({
17
+ waitFor: (text) => {
18
+ // wait for form to show up
19
+ return /Form Component Demo/i.test(text);
20
+ },
21
+ });
22
+ // Small delay to ensure all form components are rendered
23
+ await session.waitIdle();
24
+ const initialSnapshot = await session.text();
25
+ expect(initialSnapshot).toMatchInlineSnapshot(`
26
+ "
27
+
28
+
29
+ ■ Form Component Demo █
30
+ ┃ This demonstrates all available form input types. Use arrow █
31
+ ┃ keys or Tab to navigate between fields.
32
+
33
+ ◇ Username
34
+ │ Enter your username
35
+
36
+ │ Required field
37
+
38
+ ◇ Password
39
+ │ Enter secure password
40
+ │ Must be at least 8 characters
41
+
42
+ ◇ Biography
43
+ │ Tell us about yourself...
44
+
45
+
46
+
47
+
48
+ │ Maximum 500 characters
49
+
50
+ ◇ Email Preferences
51
+ │ ○ Subscribe to newsletter
52
+
53
+ │ Receive weekly updates
54
+
55
+ ◇ Country
56
+ │ Select your country
57
+
58
+ │ Americas
59
+ │ ○ United States
60
+ │ ○ Canada
61
+ │ ○ Mexico
62
+ │ Europe
63
+ │ ○ United Kingdom
64
+ │ ↑↓ to see more options
65
+
66
+ │ Your country of residence
67
+
68
+ ◇ Date of Birth
69
+
70
+ │ ← 2025 →
71
+ │ ← December →
72
+
73
+
74
+
75
+ ctrl ↵ submit ↑↓ navigate ^k actions"
76
+ `);
77
+ }, 10000);
78
+ test('password field always shows asterisks and submits real value', async () => {
79
+ await session.text({
80
+ waitFor: (text) => {
81
+ return /Form Component Demo/i.test(text);
82
+ },
83
+ });
84
+ // Tab to password field
85
+ await session.press('tab');
86
+ // Type password - should show asterisks
87
+ await session.type('secret123');
88
+ const passwordTypingSnapshot = await session.text({
89
+ waitFor: (text) => text.includes('*********'),
90
+ });
91
+ expect(passwordTypingSnapshot).toMatchInlineSnapshot(`
92
+ "
93
+
94
+
95
+ ▪ Form Component Demo █
96
+ │ This demonstrates all available form input types. Use arrow █
97
+ │ keys or Tab to navigate between fields.
98
+
99
+ ◇ Username
100
+ │ s
101
+
102
+ │ Required field
103
+
104
+ ◆ Password
105
+ ┃ ***************
106
+ ┃ Must be at least 8 characters
107
+
108
+ ◇ Biography
109
+ │ Tell us about yourself...
110
+
111
+
112
+
113
+
114
+ │ Maximum 500 characters
115
+
116
+ ◇ Email Preferences
117
+ │ ○ Subscribe to newsletter
118
+
119
+ │ Receive weekly updates
120
+
121
+ ◇ Country
122
+ │ Select your country
123
+
124
+ │ Americas
125
+ │ ○ United States
126
+ │ ○ Canada
127
+ │ ○ Mexico
128
+ │ Europe
129
+ │ ○ United Kingdom
130
+ │ ↑↓ to see more options
131
+
132
+ │ Your country of residence
133
+
134
+ ◇ Date of Birth
135
+
136
+ │ ← 2025 →
137
+ │ ← December →
138
+
139
+
140
+
141
+ ctrl ↵ submit ↑↓ navigate ^k actions"
142
+ `);
143
+ // Tab away - password should now show asterisks
144
+ await session.press('tab');
145
+ const passwordUnfocusedSnapshot = await session.text();
146
+ expect(passwordUnfocusedSnapshot).toMatchInlineSnapshot(`
147
+ "
148
+
149
+
150
+ ▪ Form Component Demo █
151
+ │ This demonstrates all available form input types. Use arrow █
152
+ │ keys or Tab to navigate between fields.
153
+
154
+ ◇ Username
155
+ │ s
156
+
157
+ │ Required field
158
+
159
+ ◇ Password
160
+ │ ***************
161
+ │ Must be at least 8 characters
162
+
163
+ ◆ Biography
164
+ ┃ Tell us about yourself...
165
+
166
+
167
+
168
+
169
+ ┃ Maximum 500 characters
170
+
171
+ ◇ Email Preferences
172
+ │ ○ Subscribe to newsletter
173
+
174
+ │ Receive weekly updates
175
+
176
+ ◇ Country
177
+ │ Select your country
178
+
179
+ │ Americas
180
+ │ ○ United States
181
+ │ ○ Canada
182
+ │ ○ Mexico
183
+ │ Europe
184
+ │ ○ United Kingdom
185
+ │ ↑↓ to see more options
186
+
187
+ │ Your country of residence
188
+
189
+ ◇ Date of Birth
190
+
191
+ │ ← 2025 →
192
+ │ ← December →
193
+
194
+
195
+
196
+ ctrl ↵ submit ↑↓ navigate ^k actions"
197
+ `);
198
+ // Submit form and check password value is real text not asterisks
199
+ await session.press(['ctrl', 'enter']);
200
+ await session.waitIdle();
201
+ // Scroll down to see submitted data
202
+ await session.scrollDown(10);
203
+ await session.scrollDown(10);
204
+ await session.scrollDown(10);
205
+ await session.scrollDown(10);
206
+ await session.scrollDown(10);
207
+ await session.scrollDown(10);
208
+ await session.scrollDown(10);
209
+ await session.scrollDown(200);
210
+ const submittedSnapshot = await session.text({
211
+ timeout: 3000,
212
+ waitFor: (text) => text.includes('"password"'),
213
+ });
214
+ expect(submittedSnapshot).toMatch(/"password": "s.+"/);
215
+ }, 10000);
216
+ test('form date picker selection with space and enter', async () => {
217
+ await session.text({
218
+ waitFor: (text) => {
219
+ return /Form Component Demo/i.test(text);
220
+ },
221
+ });
222
+ // Navigate to dropdown, then space to select first item which focuses date picker
223
+ // (This is what the dropdown test does and "Selected:" shows in that case)
224
+ await session.press('tab'); // -> password
225
+ await session.press('tab'); // -> bio
226
+ await session.press('tab'); // -> checkbox
227
+ await session.press('tab'); // -> dropdown
228
+ await session.press('tab'); // -> date picker
229
+ const datePickerFocusedSnapshot = await session.text();
230
+ expect(datePickerFocusedSnapshot).toMatchInlineSnapshot(`
231
+ "
232
+
233
+
234
+ ▪ Form Component Demo █
235
+ │ This demonstrates all available form input types. Use arrow █
236
+ │ keys or Tab to navigate between fields.
237
+
238
+ ◇ Username
239
+ │ Enter your username
240
+
241
+ │ Required field
242
+
243
+ ◇ Password
244
+ │ Enter secure password
245
+ │ Must be at least 8 characters
246
+
247
+ ◇ Biography
248
+ │ Tell us about yourself...
249
+
250
+
251
+
252
+
253
+ │ Maximum 500 characters
254
+
255
+ ◇ Email Preferences
256
+ │ ○ Subscribe to newsletter
257
+
258
+ │ Receive weekly updates
259
+
260
+ ◆ Country
261
+ ┃ Select your country
262
+
263
+ ┃ Americas
264
+ ┃› ○ United States
265
+ ┃ ○ Canada
266
+ ┃ ○ Mexico
267
+ ┃ Europe
268
+ ┃ ○ United Kingdom
269
+ ┃ ↑↓ to see more options
270
+
271
+ ┃ Your country of residence
272
+
273
+ ◇ Date of Birth
274
+
275
+ │ ← 2025 →
276
+ │ ← December →
277
+
278
+
279
+
280
+ ctrl ↵ submit ↑↓ navigate ^k actions"
281
+ `);
282
+ // Select current date with space - should show "Selected:" text
283
+ await session.press('space');
284
+ const afterSpaceSelectSnapshot = await session.text();
285
+ expect(afterSpaceSelectSnapshot).toMatchInlineSnapshot(`
286
+ "
287
+
288
+
289
+ ▪ Form Component Demo █
290
+ │ This demonstrates all available form input types. Use arrow █
291
+ │ keys or Tab to navigate between fields.
292
+
293
+ ◇ Username
294
+ │ Enter your username
295
+
296
+ │ Required field
297
+
298
+ ◇ Password
299
+ │ Enter secure password
300
+ │ Must be at least 8 characters
301
+
302
+ ◇ Biography
303
+ │ Tell us about yourself...
304
+
305
+
306
+
307
+
308
+ │ Maximum 500 characters
309
+
310
+ ◇ Email Preferences
311
+ │ ○ Subscribe to newsletter
312
+
313
+ │ Receive weekly updates
314
+
315
+ ◆ Country
316
+ ┃ United States
317
+
318
+ ┃ Americas
319
+ ┃› ● United States
320
+ ┃ ○ Canada
321
+ ┃ ○ Mexico
322
+ ┃ Europe
323
+ ┃ ○ United Kingdom
324
+ ┃ ↑↓ to see more options
325
+
326
+ ┃ Your country of residence
327
+
328
+ ◇ Date of Birth
329
+
330
+ │ ← 2025 →
331
+ │ ← December →
332
+
333
+
334
+
335
+ ctrl ↵ submit ↑↓ navigate ^k actions"
336
+ `);
337
+ // Navigate to a different day and select with enter
338
+ await session.press('right'); // move to next day
339
+ await session.press('enter');
340
+ const afterEnterSelectSnapshot = await session.text();
341
+ expect(afterEnterSelectSnapshot).toMatchInlineSnapshot(`
342
+ "
343
+
344
+
345
+ ▪ Form Component Demo █
346
+ │ This demonstrates all available form input types. Use arrow █
347
+ │ keys or Tab to navigate between fields.
348
+
349
+ ◇ Username
350
+ │ Enter your username
351
+
352
+ │ Required field
353
+
354
+ ◇ Password
355
+ │ Enter secure password
356
+ │ Must be at least 8 characters
357
+
358
+ ◇ Biography
359
+ │ Tell us about yourself...
360
+
361
+
362
+
363
+
364
+ │ Maximum 500 characters
365
+
366
+ ◇ Email Preferences
367
+ │ ○ Subscribe to newsletter
368
+
369
+ │ Receive weekly updates
370
+
371
+ ◆ Country
372
+ ┃ United States
373
+
374
+ ┃ Americas
375
+ ┃› ● United States
376
+ ┃ ○ Canada
377
+ ┃ ○ Mexico
378
+ ┃ Europe
379
+ ┃ ○ United Kingdom
380
+ ┃ ↑↓ to see more options
381
+
382
+ ┃ Your country of residence
383
+
384
+ ◇ Date of Birth
385
+
386
+ │ ← 2025 →
387
+ │ ← December →
388
+
389
+
390
+
391
+ ctrl ↵ submit ↑↓ navigate ^k actions"
392
+ `);
393
+ }, 10000);
394
+ test('form dropdown navigation', async () => {
395
+ await session.text({
396
+ waitFor: (text) => {
397
+ // wait for form to show up
398
+ return /Form Component Demo/i.test(text);
399
+ },
400
+ });
401
+ // Navigate to dropdown
402
+ await session.press('tab'); // username
403
+ await session.press('tab'); // password
404
+ await session.press('tab'); // bio
405
+ await session.press('tab'); // checkbox
406
+ await session.press('tab'); // dropdown
407
+ // Navigate to dropdown area (already showing inline options)
408
+ await session.press('space');
409
+ const dropdownFocusedSnapshot = await session.text();
410
+ expect(dropdownFocusedSnapshot).toMatchInlineSnapshot(`
411
+ "
412
+
413
+
414
+ ▪ Form Component Demo █
415
+ │ This demonstrates all available form input types. Use arrow █
416
+ │ keys or Tab to navigate between fields.
417
+
418
+ ◇ Username
419
+ │ Enter your username
420
+
421
+ │ Required field
422
+
423
+ ◇ Password
424
+ │ Enter secure password
425
+ │ Must be at least 8 characters
426
+
427
+ ◇ Biography
428
+ │ Tell us about yourself...
429
+
430
+
431
+
432
+
433
+ │ Maximum 500 characters
434
+
435
+ ◇ Email Preferences
436
+ │ ○ Subscribe to newsletter
437
+
438
+ │ Receive weekly updates
439
+
440
+ ◆ Country
441
+ ┃ United States
442
+
443
+ ┃ Americas
444
+ ┃› ● United States
445
+ ┃ ○ Canada
446
+ ┃ ○ Mexico
447
+ ┃ Europe
448
+ ┃ ○ United Kingdom
449
+ ┃ ↑↓ to see more options
450
+
451
+ ┃ Your country of residence
452
+
453
+ ◇ Date of Birth
454
+
455
+ │ ← 2025 →
456
+ │ ← December →
457
+
458
+
459
+
460
+ ctrl ↵ submit ↑↓ navigate ^k actions"
461
+ `);
462
+ // Navigate down in dropdown
463
+ await session.press('down');
464
+ const afterDownSnapshot = await session.text();
465
+ expect(afterDownSnapshot).toMatchInlineSnapshot(`
466
+ "
467
+
468
+
469
+ ▪ Form Component Demo █
470
+ │ This demonstrates all available form input types. Use arrow █
471
+ │ keys or Tab to navigate between fields.
472
+
473
+ ◇ Username
474
+ │ Enter your username
475
+
476
+ │ Required field
477
+
478
+ ◇ Password
479
+ │ Enter secure password
480
+ │ Must be at least 8 characters
481
+
482
+ ◇ Biography
483
+ │ Tell us about yourself...
484
+
485
+
486
+
487
+
488
+ │ Maximum 500 characters
489
+
490
+ ◇ Email Preferences
491
+ │ ○ Subscribe to newsletter
492
+
493
+ │ Receive weekly updates
494
+
495
+ ◆ Country
496
+ ┃ United States
497
+
498
+ ┃ Americas
499
+ ┃ ● United States
500
+ ┃› ○ Canada
501
+ ┃ ○ Mexico
502
+ ┃ Europe
503
+ ┃ ○ United Kingdom
504
+ ┃ ↑↓ to see more options
505
+
506
+ ┃ Your country of residence
507
+
508
+ ◇ Date of Birth
509
+
510
+ │ ← 2025 →
511
+ │ ← December →
512
+
513
+
514
+
515
+ ctrl ↵ submit ↑↓ navigate ^k actions"
516
+ `);
517
+ // Navigate to Europe section
518
+ await session.press('down');
519
+ await session.press('down');
520
+ await session.press('down');
521
+ const europeSelectionSnapshot = await session.text();
522
+ expect(europeSelectionSnapshot).toMatchInlineSnapshot(`
523
+ "
524
+
525
+
526
+ ▪ Form Component Demo █
527
+ │ This demonstrates all available form input types. Use arrow █
528
+ │ keys or Tab to navigate between fields.
529
+
530
+ ◇ Username
531
+ │ Enter your username
532
+
533
+ │ Required field
534
+
535
+ ◇ Password
536
+ │ Enter secure password
537
+ │ Must be at least 8 characters
538
+
539
+ ◇ Biography
540
+ │ Tell us about yourself...
541
+
542
+
543
+
544
+
545
+ │ Maximum 500 characters
546
+
547
+ ◇ Email Preferences
548
+ │ ○ Subscribe to newsletter
549
+
550
+ │ Receive weekly updates
551
+
552
+ ◆ Country
553
+ ┃ United States
554
+
555
+ ┃ Americas
556
+ ┃ ○ Canada
557
+ ┃ ○ Mexico
558
+ ┃ Europe
559
+ ┃ ○ United Kingdom
560
+ ┃› ○ France
561
+ ┃ ↑↓ to see more options
562
+
563
+ ┃ Your country of residence
564
+
565
+ ◇ Date of Birth
566
+
567
+ │ ← 2025 →
568
+ │ ← December →
569
+
570
+
571
+
572
+ ctrl ↵ submit ↑↓ navigate ^k actions"
573
+ `);
574
+ // Select France
575
+ await session.press('enter');
576
+ const afterFranceSelectSnapshot = await session.text();
577
+ expect(afterFranceSelectSnapshot).toMatchInlineSnapshot(`
578
+ "
579
+
580
+
581
+ ▪ Form Component Demo █
582
+ │ This demonstrates all available form input types. Use arrow █
583
+ │ keys or Tab to navigate between fields.
584
+
585
+ ◇ Username
586
+ │ Enter your username
587
+
588
+ │ Required field
589
+
590
+ ◇ Password
591
+ │ Enter secure password
592
+ │ Must be at least 8 characters
593
+
594
+ ◇ Biography
595
+ │ Tell us about yourself...
596
+
597
+
598
+
599
+
600
+ │ Maximum 500 characters
601
+
602
+ ◇ Email Preferences
603
+ │ ○ Subscribe to newsletter
604
+
605
+ │ Receive weekly updates
606
+
607
+ ◆ Country
608
+ ┃ France
609
+
610
+ ┃ Americas
611
+ ┃ ○ Canada
612
+ ┃ ○ Mexico
613
+ ┃ Europe
614
+ ┃ ○ United Kingdom
615
+ ┃› ● France
616
+ ┃ ↑↓ to see more options
617
+
618
+ ┃ Your country of residence
619
+
620
+ ◇ Date of Birth
621
+
622
+ │ ← 2025 →
623
+ │ ← December →
624
+
625
+
626
+
627
+ ctrl ↵ submit ↑↓ navigate ^k actions"
628
+ `);
629
+ }, 10000);
630
+ //# sourceMappingURL=form-basic.vitest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-basic.vitest.js","sourceRoot":"","sources":["../../src/examples/form-basic.vitest.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=form-dropdown-with-sections.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-dropdown-with-sections.d.ts","sourceRoot":"","sources":["../../src/examples/form-dropdown-with-sections.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@opentui/react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { renderWithProviders } from '@termcast/cli/src/utils';
4
+ import { Form, ActionPanel, Action } from '@termcast/cli';
5
+ function FormDropdownWithSectionsExample() {
6
+ const [submitted, setSubmitted] = useState(null);
7
+ const handleSubmit = (data) => {
8
+ setSubmitted(data);
9
+ };
10
+ return (_jsxs(Form, { actions: _jsx(ActionPanel, { children: _jsx(Action.SubmitForm, { title: 'Submit Form', onSubmit: handleSubmit }) }), children: [_jsx(Form.Description, { title: 'Dropdown With Sections Demo', text: 'Test dropdown with sections' }), _jsxs(Form.Dropdown, { id: 'fruit', title: 'Select Item', placeholder: 'Choose an item...', info: 'Items are grouped by category', children: [_jsxs(Form.Dropdown.Section, { title: 'Fruits', children: [_jsx(Form.Dropdown.Item, { value: 'apple', title: 'Apple', icon: '\uD83C\uDF4E' }), _jsx(Form.Dropdown.Item, { value: 'banana', title: 'Banana', icon: '\uD83C\uDF4C' }), _jsx(Form.Dropdown.Item, { value: 'orange', title: 'Orange', icon: '\uD83C\uDF4A' })] }), _jsxs(Form.Dropdown.Section, { title: 'Vegetables', children: [_jsx(Form.Dropdown.Item, { value: 'carrot', title: 'Carrot', icon: '\uD83E\uDD55' }), _jsx(Form.Dropdown.Item, { value: 'broccoli', title: 'Broccoli', icon: '\uD83E\uDD66' }), _jsx(Form.Dropdown.Item, { value: 'lettuce', title: 'Lettuce', icon: '\uD83E\uDD6C' })] }), _jsxs(Form.Dropdown.Section, { title: 'Dairy', children: [_jsx(Form.Dropdown.Item, { value: 'milk', title: 'Milk', icon: '\uD83E\uDD5B' }), _jsx(Form.Dropdown.Item, { value: 'cheese', title: 'Cheese', icon: '\uD83E\uDDC0' })] })] }), _jsxs(Form.Dropdown, { id: 'categories', title: 'Multiple Selection', placeholder: 'Select categories...', hasMultipleSelection: true, children: [_jsxs(Form.Dropdown.Section, { title: 'Programming', children: [_jsx(Form.Dropdown.Item, { value: 'js', title: 'JavaScript' }), _jsx(Form.Dropdown.Item, { value: 'ts', title: 'TypeScript' }), _jsx(Form.Dropdown.Item, { value: 'python', title: 'Python' })] }), _jsxs(Form.Dropdown.Section, { title: 'Frameworks', children: [_jsx(Form.Dropdown.Item, { value: 'react', title: 'React' }), _jsx(Form.Dropdown.Item, { value: 'vue', title: 'Vue' }), _jsx(Form.Dropdown.Item, { value: 'angular', title: 'Angular' })] })] }), submitted && (_jsx(Form.Description, { title: 'Submitted Data', text: JSON.stringify(submitted, null, 2) }))] }));
11
+ }
12
+ renderWithProviders(_jsx(FormDropdownWithSectionsExample, {}));
13
+ //# sourceMappingURL=form-dropdown-with-sections.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-dropdown-with-sections.js","sourceRoot":"","sources":["../../src/examples/form-dropdown-with-sections.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=form-dropdown-with-sections.vitest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-dropdown-with-sections.vitest.d.ts","sourceRoot":"","sources":["../../src/examples/form-dropdown-with-sections.vitest.tsx"],"names":[],"mappings":""}