termcast 1.3.30 → 1.3.32

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 (294) hide show
  1. package/dist/apis/cache.d.ts.map +1 -1
  2. package/dist/apis/cache.js +4 -39
  3. package/dist/apis/cache.js.map +1 -1
  4. package/dist/apis/hud.d.ts.map +1 -1
  5. package/dist/apis/hud.js +13 -31
  6. package/dist/apis/hud.js.map +1 -1
  7. package/dist/apis/localstorage.d.ts.map +1 -1
  8. package/dist/apis/localstorage.js +3 -27
  9. package/dist/apis/localstorage.js.map +1 -1
  10. package/dist/apis/toast.d.ts +16 -43
  11. package/dist/apis/toast.d.ts.map +1 -1
  12. package/dist/apis/toast.js +78 -177
  13. package/dist/apis/toast.js.map +1 -1
  14. package/dist/build.d.ts +3 -1
  15. package/dist/build.d.ts.map +1 -1
  16. package/dist/build.js +52 -2
  17. package/dist/build.js.map +1 -1
  18. package/dist/cli.d.ts +1 -0
  19. package/dist/cli.d.ts.map +1 -1
  20. package/dist/cli.js +206 -25
  21. package/dist/cli.js.map +1 -1
  22. package/dist/colors.d.ts.map +1 -1
  23. package/dist/colors.js +1 -0
  24. package/dist/colors.js.map +1 -1
  25. package/dist/compile.d.ts +0 -1
  26. package/dist/compile.d.ts.map +1 -1
  27. package/dist/compile.js +18 -23
  28. package/dist/compile.js.map +1 -1
  29. package/dist/components/actions.d.ts.map +1 -1
  30. package/dist/components/actions.js +30 -15
  31. package/dist/components/actions.js.map +1 -1
  32. package/dist/components/animation-tick.d.ts +12 -0
  33. package/dist/components/animation-tick.d.ts.map +1 -0
  34. package/dist/components/animation-tick.js +63 -0
  35. package/dist/components/animation-tick.js.map +1 -0
  36. package/dist/components/detail.d.ts.map +1 -1
  37. package/dist/components/detail.js +10 -13
  38. package/dist/components/detail.js.map +1 -1
  39. package/dist/components/dropdown.d.ts +1 -0
  40. package/dist/components/dropdown.d.ts.map +1 -1
  41. package/dist/components/dropdown.js +27 -26
  42. package/dist/components/dropdown.js.map +1 -1
  43. package/dist/components/extension-preferences.d.ts.map +1 -1
  44. package/dist/components/extension-preferences.js +15 -10
  45. package/dist/components/extension-preferences.js.map +1 -1
  46. package/dist/components/footer.d.ts +13 -0
  47. package/dist/components/footer.d.ts.map +1 -0
  48. package/dist/components/footer.js +106 -0
  49. package/dist/components/footer.js.map +1 -0
  50. package/dist/components/form/file-autocomplete.d.ts +19 -4
  51. package/dist/components/form/file-autocomplete.d.ts.map +1 -1
  52. package/dist/components/form/file-autocomplete.js +56 -55
  53. package/dist/components/form/file-autocomplete.js.map +1 -1
  54. package/dist/components/form/file-picker.d.ts.map +1 -1
  55. package/dist/components/form/file-picker.js +26 -15
  56. package/dist/components/form/file-picker.js.map +1 -1
  57. package/dist/components/form/index.d.ts.map +1 -1
  58. package/dist/components/form/index.js +17 -15
  59. package/dist/components/form/index.js.map +1 -1
  60. package/dist/components/form/with-left-border.d.ts.map +1 -1
  61. package/dist/components/form/with-left-border.js +4 -12
  62. package/dist/components/form/with-left-border.js.map +1 -1
  63. package/dist/components/list.d.ts.map +1 -1
  64. package/dist/components/list.js +126 -86
  65. package/dist/components/list.js.map +1 -1
  66. package/dist/components/loading-bar.d.ts.map +1 -1
  67. package/dist/components/loading-bar.js +5 -22
  68. package/dist/components/loading-bar.js.map +1 -1
  69. package/dist/components/loading-text.d.ts.map +1 -1
  70. package/dist/components/loading-text.js +3 -22
  71. package/dist/components/loading-text.js.map +1 -1
  72. package/dist/components/theme-picker.d.ts +2 -0
  73. package/dist/components/theme-picker.d.ts.map +1 -0
  74. package/dist/components/theme-picker.js +37 -0
  75. package/dist/components/theme-picker.js.map +1 -0
  76. package/dist/descendants.d.ts +6 -0
  77. package/dist/descendants.d.ts.map +1 -1
  78. package/dist/descendants.js +74 -8
  79. package/dist/descendants.js.map +1 -1
  80. package/dist/examples/internal/descendants-rerender.d.ts +14 -0
  81. package/dist/examples/internal/descendants-rerender.d.ts.map +1 -0
  82. package/dist/examples/internal/descendants-rerender.js +145 -0
  83. package/dist/examples/internal/descendants-rerender.js.map +1 -0
  84. package/dist/examples/internal/simple-dialog.js +4 -1
  85. package/dist/examples/internal/simple-dialog.js.map +1 -1
  86. package/dist/examples/internal/simple-scrollbox.js +1 -1
  87. package/dist/examples/internal/simple-scrollbox.js.map +1 -1
  88. package/dist/examples/list-with-dropdown.js +1 -1
  89. package/dist/examples/list-with-dropdown.js.map +1 -1
  90. package/dist/examples/miscellaneous.js +1 -1
  91. package/dist/examples/miscellaneous.js.map +1 -1
  92. package/dist/examples/toast-action.d.ts +2 -0
  93. package/dist/examples/toast-action.d.ts.map +1 -0
  94. package/dist/examples/toast-action.js +76 -0
  95. package/dist/examples/toast-action.js.map +1 -0
  96. package/dist/examples/toast-variations.js +38 -36
  97. package/dist/examples/toast-variations.js.map +1 -1
  98. package/dist/extensions/dev.d.ts +1 -1
  99. package/dist/extensions/dev.d.ts.map +1 -1
  100. package/dist/extensions/dev.js +62 -30
  101. package/dist/extensions/dev.js.map +1 -1
  102. package/dist/extensions/home.d.ts.map +1 -1
  103. package/dist/extensions/home.js +4 -3
  104. package/dist/extensions/home.js.map +1 -1
  105. package/dist/extensions/react-refresh-init.d.ts +5 -0
  106. package/dist/extensions/react-refresh-init.d.ts.map +1 -0
  107. package/dist/extensions/react-refresh-init.js +52 -0
  108. package/dist/extensions/react-refresh-init.js.map +1 -0
  109. package/dist/internal/date-picker-widget.js +1 -1
  110. package/dist/internal/date-picker-widget.js.map +1 -1
  111. package/dist/internal/dialog.d.ts +8 -3
  112. package/dist/internal/dialog.d.ts.map +1 -1
  113. package/dist/internal/dialog.js +37 -53
  114. package/dist/internal/dialog.js.map +1 -1
  115. package/dist/internal/navigation.d.ts +1 -0
  116. package/dist/internal/navigation.d.ts.map +1 -1
  117. package/dist/internal/navigation.js +25 -1
  118. package/dist/internal/navigation.js.map +1 -1
  119. package/dist/internal/providers.d.ts.map +1 -1
  120. package/dist/internal/providers.js +9 -197
  121. package/dist/internal/providers.js.map +1 -1
  122. package/dist/internal/scrollbox.d.ts.map +1 -1
  123. package/dist/internal/scrollbox.js +1 -0
  124. package/dist/internal/scrollbox.js.map +1 -1
  125. package/dist/release.d.ts +1 -0
  126. package/dist/release.d.ts.map +1 -1
  127. package/dist/release.js +16 -9
  128. package/dist/release.js.map +1 -1
  129. package/dist/state.d.ts +27 -1
  130. package/dist/state.d.ts.map +1 -1
  131. package/dist/state.js +6 -0
  132. package/dist/state.js.map +1 -1
  133. package/dist/theme.d.ts +6 -19
  134. package/dist/theme.d.ts.map +1 -1
  135. package/dist/theme.js +76 -45
  136. package/dist/theme.js.map +1 -1
  137. package/dist/themes/aura.json +69 -0
  138. package/dist/themes/ayu.json +80 -0
  139. package/dist/themes/catppuccin-frappe.json +233 -0
  140. package/dist/themes/catppuccin-macchiato.json +233 -0
  141. package/dist/themes/catppuccin.json +112 -0
  142. package/dist/themes/cobalt2.json +228 -0
  143. package/dist/themes/cursor.json +249 -0
  144. package/dist/themes/dracula.json +219 -0
  145. package/dist/themes/everforest.json +241 -0
  146. package/dist/themes/flexoki.json +237 -0
  147. package/dist/themes/github-light.json +56 -0
  148. package/dist/themes/github.json +241 -0
  149. package/dist/themes/gruvbox.json +95 -0
  150. package/dist/themes/kanagawa.json +77 -0
  151. package/dist/themes/lucent-orng.json +227 -0
  152. package/dist/themes/material.json +235 -0
  153. package/dist/themes/matrix.json +77 -0
  154. package/dist/themes/mercury.json +245 -0
  155. package/dist/themes/monokai.json +221 -0
  156. package/dist/themes/nightowl.json +221 -0
  157. package/dist/themes/nord.json +223 -0
  158. package/dist/themes/one-dark.json +84 -0
  159. package/dist/themes/opencode-light.json +62 -0
  160. package/dist/themes/opencode.json +245 -0
  161. package/dist/themes/orng.json +245 -0
  162. package/dist/themes/palenight.json +222 -0
  163. package/dist/themes/rosepine.json +234 -0
  164. package/dist/themes/solarized.json +223 -0
  165. package/dist/themes/synthwave84.json +226 -0
  166. package/dist/themes/termcast.json +226 -0
  167. package/dist/themes/tokyonight.json +243 -0
  168. package/dist/themes/vercel.json +255 -0
  169. package/dist/themes/vesper.json +218 -0
  170. package/dist/themes/zenburn.json +223 -0
  171. package/dist/themes.d.ts +57 -0
  172. package/dist/themes.d.ts.map +1 -0
  173. package/dist/themes.js +181 -0
  174. package/dist/themes.js.map +1 -0
  175. package/dist/utils/run-command.d.ts +2 -1
  176. package/dist/utils/run-command.d.ts.map +1 -1
  177. package/dist/utils/run-command.js +20 -10
  178. package/dist/utils/run-command.js.map +1 -1
  179. package/dist/utils.d.ts +2 -1
  180. package/dist/utils.d.ts.map +1 -1
  181. package/dist/utils.js +90 -17
  182. package/dist/utils.js.map +1 -1
  183. package/dist/watcher.d.ts +3 -0
  184. package/dist/watcher.d.ts.map +1 -0
  185. package/dist/watcher.js +16 -0
  186. package/dist/watcher.js.map +1 -0
  187. package/package.json +16 -10
  188. package/src/apis/cache.tsx +5 -44
  189. package/src/apis/hud.tsx +17 -62
  190. package/src/apis/localstorage.tsx +3 -32
  191. package/src/apis/toast.tsx +91 -275
  192. package/src/build.test.tsx +10 -0
  193. package/src/build.tsx +61 -1
  194. package/src/cli.tsx +365 -103
  195. package/src/colors.tsx +1 -0
  196. package/src/compile.tsx +21 -29
  197. package/src/compile.vitest.tsx +300 -0
  198. package/src/components/actions.tsx +64 -45
  199. package/src/components/animation-tick.tsx +85 -0
  200. package/src/components/detail.tsx +31 -35
  201. package/src/components/dropdown.tsx +32 -21
  202. package/src/components/extension-preferences.tsx +14 -10
  203. package/src/components/footer.tsx +241 -0
  204. package/src/components/form/file-autocomplete.tsx +80 -60
  205. package/src/components/form/file-picker.tsx +37 -25
  206. package/src/components/form/index.tsx +45 -41
  207. package/src/components/form/with-left-border.tsx +4 -14
  208. package/src/components/list.tsx +181 -121
  209. package/src/components/loading-bar.tsx +5 -25
  210. package/src/components/loading-text.tsx +4 -23
  211. package/src/components/theme-picker.tsx +57 -0
  212. package/src/descendants.tsx +98 -9
  213. package/src/examples/actions-dialog-layout.vitest.tsx +112 -0
  214. package/src/examples/file-autocomplete.vitest.tsx +131 -122
  215. package/src/examples/form-basic.vitest.tsx +463 -644
  216. package/src/examples/form-dropdown.vitest.tsx +553 -571
  217. package/src/examples/form-scroll.vitest.tsx +112 -102
  218. package/src/examples/form-tagpicker.vitest.tsx +364 -338
  219. package/src/examples/internal/descendants-rerender.tsx +273 -0
  220. package/src/examples/internal/descendants-rerender.vitest.tsx +194 -0
  221. package/src/examples/internal/simple-dialog.tsx +4 -4
  222. package/src/examples/internal/simple-scrollbox.tsx +2 -2
  223. package/src/examples/internal/simple-scrollbox.vitest.tsx +43 -31
  224. package/src/examples/list-detail-metadata.vitest.tsx +34 -30
  225. package/src/examples/list-dropdown-default.vitest.tsx +84 -72
  226. package/src/examples/list-empty-view.vitest.tsx +93 -0
  227. package/src/examples/list-fetch-data.vitest.tsx +36 -30
  228. package/src/examples/list-scrollbox.vitest.tsx +59 -39
  229. package/src/examples/list-with-detail.vitest.tsx +339 -314
  230. package/src/examples/list-with-dropdown.tsx +1 -0
  231. package/src/examples/list-with-dropdown.vitest.tsx +176 -150
  232. package/src/examples/list-with-sections.vitest.tsx +289 -270
  233. package/src/examples/list-with-toast.vitest.tsx +44 -44
  234. package/src/examples/miscellaneous.tsx +10 -0
  235. package/src/examples/simple-file-picker.vitest.tsx +90 -86
  236. package/src/examples/simple-grid.vitest.tsx +275 -249
  237. package/src/examples/simple-navigation.vitest.tsx +192 -168
  238. package/src/examples/store.vitest.tsx +6 -4
  239. package/src/examples/swift-extension.vitest.tsx +31 -19
  240. package/src/examples/synonyms.vitest.tsx +93 -83
  241. package/src/examples/toast-action.tsx +160 -0
  242. package/src/examples/toast-action.vitest.tsx +404 -0
  243. package/src/examples/toast-variations.tsx +58 -57
  244. package/src/examples/toast-variations.vitest.tsx +186 -166
  245. package/src/extensions/dev.tsx +74 -33
  246. package/src/extensions/dev.vitest.tsx +162 -69
  247. package/src/extensions/home.tsx +5 -6
  248. package/src/extensions/react-refresh-init.tsx +59 -0
  249. package/src/internal/date-picker-widget.tsx +1 -1
  250. package/src/internal/dialog.tsx +59 -83
  251. package/src/internal/navigation.tsx +37 -4
  252. package/src/internal/providers.tsx +27 -315
  253. package/src/internal/scrollbox.tsx +1 -0
  254. package/src/release.tsx +16 -10
  255. package/src/state.tsx +36 -3
  256. package/src/theme.tsx +82 -51
  257. package/src/themes/aura.json +69 -0
  258. package/src/themes/ayu.json +80 -0
  259. package/src/themes/catppuccin-frappe.json +233 -0
  260. package/src/themes/catppuccin-macchiato.json +233 -0
  261. package/src/themes/catppuccin.json +112 -0
  262. package/src/themes/cobalt2.json +228 -0
  263. package/src/themes/cursor.json +249 -0
  264. package/src/themes/dracula.json +219 -0
  265. package/src/themes/everforest.json +241 -0
  266. package/src/themes/flexoki.json +237 -0
  267. package/src/themes/github-light.json +56 -0
  268. package/src/themes/github.json +241 -0
  269. package/src/themes/gruvbox.json +95 -0
  270. package/src/themes/kanagawa.json +77 -0
  271. package/src/themes/lucent-orng.json +227 -0
  272. package/src/themes/material.json +235 -0
  273. package/src/themes/matrix.json +77 -0
  274. package/src/themes/mercury.json +252 -0
  275. package/src/themes/monokai.json +221 -0
  276. package/src/themes/nightowl.json +221 -0
  277. package/src/themes/nord.json +223 -0
  278. package/src/themes/one-dark.json +84 -0
  279. package/src/themes/opencode-light.json +62 -0
  280. package/src/themes/opencode.json +245 -0
  281. package/src/themes/orng.json +245 -0
  282. package/src/themes/palenight.json +222 -0
  283. package/src/themes/rosepine.json +234 -0
  284. package/src/themes/solarized.json +223 -0
  285. package/src/themes/synthwave84.json +226 -0
  286. package/src/themes/termcast.json +227 -0
  287. package/src/themes/tokyonight.json +243 -0
  288. package/src/themes/vercel.json +255 -0
  289. package/src/themes/vesper.json +218 -0
  290. package/src/themes/zenburn.json +223 -0
  291. package/src/themes.ts +291 -0
  292. package/src/utils/run-command.tsx +23 -12
  293. package/src/utils.tsx +115 -18
  294. package/src/watcher.tsx +19 -0
@@ -23,42 +23,44 @@ test('list with detail view display and navigation', async () => {
23
23
  /Pokemon List/i.test(text) &&
24
24
  text.includes('›bulbasaur') &&
25
25
  text.includes('Grass / Poison') &&
26
- text.includes('Height: 0.7m') &&
27
- /↵.*navigate/i.test(text)
26
+ text.includes('Height: 0.7m')
28
27
  )
29
28
  },
29
+ timeout: 10000,
30
30
  })
31
31
 
32
32
  expect(initialSnapshot).toMatchInlineSnapshot(`
33
33
  "
34
34
 
35
35
 
36
- Pokemon List ─────────────────────────────────────────────────────────────
37
-
38
- Search Pokemon...
39
-
40
- ›bulbasaur #001
41
- ivysaur #002 │ bulbasaur ▲
42
- charmander #004 │ ▀
43
- charmeleon #005 │ Illustration
44
- squirtle #007 │
45
- wartortle #008 │ Types
46
- │ Grass / Poison
47
-
48
- │ Characteristics
49
- │ - Height: 0.7m
50
- │ - Weight: 6.9kg
51
-
52
- │ Abilities
53
- │ - Chlorophyll
54
- │ - Overgrow
55
- │ ─────────────────────────────────
56
-
57
- │ Types:
58
-
59
- │ Grass:
60
- ↵toggle detail ↑↓ navigate ^kactions │ ─────────────────
61
- │ ▼"
36
+ Pokemon List ─────────────────────────────────────────────────────────────
37
+
38
+ > Search Pokemon...
39
+
40
+ ›bulbasaur #001
41
+ ivysaur #002 │ bulbasaur ▲
42
+ charmander #004 │ ▀
43
+ charmeleon #005 │ Illustration
44
+ squirtle #007 │
45
+ wartortle #008 │ Types
46
+ │ Grass / Poison
47
+
48
+ │ Characteristics
49
+ │ - Height: 0.7m
50
+ │ - Weight: 6.9kg
51
+
52
+ │ Abilities
53
+ │ - Chlorophyll
54
+ │ - Overgrow
55
+ │ ─────────────────────────────────
56
+
57
+ │ Types:
58
+
59
+ │ Grass:
60
+ toggle ↑↓ navigate ^k action│ ─────────────────
61
+ detail │ ▼
62
+
63
+ "
62
64
  `)
63
65
 
64
66
  await session.press('down')
@@ -70,32 +72,34 @@ test('list with detail view display and navigation', async () => {
70
72
  "
71
73
 
72
74
 
73
- Pokemon List ─────────────────────────────────────────────────────────────
74
-
75
- Search Pokemon...
76
-
77
- bulbasaur #001
78
- ›ivysaur #002 │ ivysaur ▲
79
- charmander #004 │ ▀
80
- charmeleon #005 │ Illustration
81
- squirtle #007 │
82
- wartortle #008 │ Types
83
- │ Grass / Poison
84
-
85
- │ Characteristics
86
- │ - Height: 1m
87
- │ - Weight: 13kg
88
-
89
- │ Abilities
90
- │ - Chlorophyll
91
- │ - Overgrow
92
- │ ─────────────────────────────────
93
-
94
- │ Types:
95
-
96
- │ Grass:
97
- ↵toggle detail ↑↓ navigate ^kactions │ ─────────────────
98
- │ ▼"
75
+ Pokemon List ─────────────────────────────────────────────────────────────
76
+
77
+ > Search Pokemon...
78
+
79
+ bulbasaur #001
80
+ ›ivysaur #002 │ ivysaur ▲
81
+ charmander #004 │ ▀
82
+ charmeleon #005 │ Illustration
83
+ squirtle #007 │
84
+ wartortle #008 │ Types
85
+ │ Grass / Poison
86
+
87
+ │ Characteristics
88
+ │ - Height: 1m
89
+ │ - Weight: 13kg
90
+
91
+ │ Abilities
92
+ │ - Chlorophyll
93
+ │ - Overgrow
94
+ │ ─────────────────────────────────
95
+
96
+ │ Types:
97
+
98
+ │ Grass:
99
+ toggle ↑↓ navigate ^k action│ ─────────────────
100
+ detail │ ▼
101
+
102
+ "
99
103
  `)
100
104
 
101
105
  await session.press('down')
@@ -105,32 +109,34 @@ test('list with detail view display and navigation', async () => {
105
109
  "
106
110
 
107
111
 
108
- Pokemon List ─────────────────────────────────────────────────────────────
109
-
110
- Search Pokemon...
111
-
112
- bulbasaur #001
113
- ivysaur #002 │ charmander ▲
114
- ›charmander #004 │ █
115
- charmeleon #005 │ Illustration
116
- squirtle #007 │
117
- wartortle #008 │ Types
118
- │ Fire
119
-
120
- │ Characteristics
121
- │ - Height: 0.6m
122
- │ - Weight: 8.5kg
123
-
124
- │ Abilities
125
- │ - Blaze
126
- │ - Solar Power
127
- │ ─────────────────────────────────
128
-
129
- │ Types:
130
-
131
- │ Fire:
132
- ↵toggle detail ↑↓ navigate ^kactions │ ─────────────────
133
- │ ▼"
112
+ Pokemon List ─────────────────────────────────────────────────────────────
113
+
114
+ > Search Pokemon...
115
+
116
+ bulbasaur #001
117
+ ivysaur #002 │ charmander ▲
118
+ ›charmander #004 │ █
119
+ charmeleon #005 │ Illustration
120
+ squirtle #007 │
121
+ wartortle #008 │ Types
122
+ │ Fire
123
+
124
+ │ Characteristics
125
+ │ - Height: 0.6m
126
+ │ - Weight: 8.5kg
127
+
128
+ │ Abilities
129
+ │ - Blaze
130
+ │ - Solar Power
131
+ │ ─────────────────────────────────
132
+
133
+ │ Types:
134
+
135
+ │ Fire:
136
+ toggle ↑↓ navigate ^k action│ ─────────────────
137
+ detail │ ▼
138
+
139
+ "
134
140
  `)
135
141
 
136
142
  await session.press(['ctrl', 'k'])
@@ -140,33 +146,34 @@ test('list with detail view display and navigation', async () => {
140
146
  "
141
147
 
142
148
 
143
- Pokemon List ─────────────────────────────────────────────────────────────
144
-
145
- Search Pokemon...
146
-
147
- bulbasaur #001
148
- ivysaur #002 │ charmander ▲
149
- ›charmander #004 │ █
150
- c┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
151
- s┃
152
- w┃ esc
153
-
154
- Search actions...
155
-
156
- ›Toggle Detail
157
- View on Pokemon.com
158
-
159
- ┃ ┃
160
- ┃ ┃
161
-
162
-
163
-
164
- ┃ ┃
165
-
166
- ┃ ┃
167
- ↵┃ select ↑↓ navigate
168
- ┃ ┃
169
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
149
+ Pokemon List ─────────────────────────────────────────────────────────────
150
+
151
+ > Search Pokemon...
152
+
153
+ bulbasaur #001
154
+ ivysaur #002 │ charmander ▲
155
+ ›charmander #004 │ █
156
+ ╭──────────────────────────────────────────────────────────────────────────╮
157
+
158
+ │ Actions esc
159
+
160
+ > Search actions...
161
+
162
+ ›Toggle Detail
163
+ View on Pokemon.com
164
+
165
+ │ Settings │
166
+ │ Change Theme... │
167
+
168
+
169
+
170
+ │ ↵ select ↑↓ navigate │
171
+
172
+ ╰──────────────────────────────────────────────────────────────────────────╯
173
+ toggle ↑↓ navigate ^k action│ ─────────────────
174
+ detail │ ▼
175
+
176
+ "
170
177
  `)
171
178
 
172
179
  await session.press('enter')
@@ -180,18 +187,19 @@ test('list with detail view display and navigation', async () => {
180
187
  "
181
188
 
182
189
 
183
- Pokemon List ─────────────────────────────────────────────────────────────
190
+ Pokemon List ─────────────────────────────────────────────────────────────
184
191
 
185
- Search Pokemon...
192
+ > Search Pokemon...
186
193
 
187
- bulbasaur #001 Grass / Poison
188
- ivysaur #002 Grass / Poison
189
- ›charmander #004 Fire
190
- charmeleon #005 Fire
191
- squirtle #007 Water
192
- wartortle #008 Water
194
+ bulbasaur #001 Grass / Poison
195
+ ivysaur #002 Grass / Poison
196
+ ›charmander #004 Fire
197
+ charmeleon #005 Fire
198
+ squirtle #007 Water
199
+ wartortle #008 Water
193
200
 
194
201
 
202
+ ↵ toggle detail ↑↓ navigate ^k actions powered by termcast
195
203
 
196
204
 
197
205
 
@@ -205,7 +213,8 @@ test('list with detail view display and navigation', async () => {
205
213
 
206
214
 
207
215
 
208
- ↵ toggle detail ↑↓ navigate ^k actions"
216
+
217
+ "
209
218
  `)
210
219
 
211
220
  await session.press(['ctrl', 'k'])
@@ -220,32 +229,34 @@ test('list with detail view display and navigation', async () => {
220
229
  "
221
230
 
222
231
 
223
- Pokemon List ─────────────────────────────────────────────────────────────
224
-
225
- Search Pokemon...
226
-
227
- bulbasaur #001
228
- ivysaur #002 │ charmander ▲
229
- ›charmander #004 │ █
230
- charmeleon #005 │ Illustration
231
- squirtle #007 │
232
- wartortle #008 │ Types
233
- │ Fire
234
-
235
- │ Characteristics
236
- │ - Height: 0.6m
237
- │ - Weight: 8.5kg
238
-
239
- │ Abilities
240
- │ - Blaze
241
- │ - Solar Power
242
- │ ─────────────────────────────────
243
-
244
- │ Types:
245
-
246
- │ Fire:
247
- ↵toggle detail ↑↓ navigate ^kactions │ ─────────────────
248
- │ ▼"
232
+ Pokemon List ─────────────────────────────────────────────────────────────
233
+
234
+ > Search Pokemon...
235
+
236
+ bulbasaur #001
237
+ ivysaur #002 │ charmander ▲
238
+ ›charmander #004 │ █
239
+ charmeleon #005 │ Illustration
240
+ squirtle #007 │
241
+ wartortle #008 │ Types
242
+ │ Fire
243
+
244
+ │ Characteristics
245
+ │ - Height: 0.6m
246
+ │ - Weight: 8.5kg
247
+
248
+ │ Abilities
249
+ │ - Blaze
250
+ │ - Solar Power
251
+ │ ─────────────────────────────────
252
+
253
+ │ Types:
254
+
255
+ │ Fire:
256
+ toggle ↑↓ navigate ^k action│ ─────────────────
257
+ detail │ ▼
258
+
259
+ "
249
260
  `)
250
261
  }, 15000)
251
262
 
@@ -267,32 +278,34 @@ test('list detail view search functionality', async () => {
267
278
  "
268
279
 
269
280
 
270
- Pokemon List ─────────────────────────────────────────────────────────────
271
-
272
- char
273
-
274
- charmander #004
275
- charmeleon #005 │ bulbasaur
276
-
277
- │ Illustration
278
-
279
- │ Types
280
- Grass / Poison
281
-
282
- │ Characteristics
283
- │ - Height: 0.7m
284
- │ - Weight: 6.9kg
285
-
286
- │ Abilities
287
- │ - Chlorophyll
288
- │ - Overgrow
289
- │ ─────────────────────────────────
290
-
291
- │ Types:
292
-
293
- Grass:
294
- ↵toggle detail ↑↓ navigate ^kactions │ ─────────────────
295
- │ ▼"
281
+ Pokemon List ─────────────────────────────────────────────────────────────
282
+
283
+ > char
284
+
285
+ charmander #004
286
+ charmeleon #005 │ charmander
287
+
288
+ │ Illustration
289
+
290
+ │ Types
291
+ Fire
292
+
293
+ │ Characteristics
294
+ │ - Height: 0.6m
295
+ │ - Weight: 8.5kg
296
+
297
+ │ Abilities
298
+ │ - Blaze
299
+ │ - Solar Power
300
+ │ ─────────────────────────────────
301
+
302
+ │ Types:
303
+
304
+ Fire:
305
+ toggle ↑↓ navigate ^k action│ ─────────────────
306
+ detail │ ▼
307
+
308
+ "
296
309
  `)
297
310
 
298
311
  await session.press('backspace')
@@ -311,32 +324,34 @@ test('list detail view search functionality', async () => {
311
324
  "
312
325
 
313
326
 
314
- Pokemon List ─────────────────────────────────────────────────────────────
315
-
316
- water
317
-
318
-
319
- │ wartortle ▲
320
- │ █
321
- │ Illustration
322
-
323
- │ Types
324
- │ Water
325
-
326
- │ Characteristics
327
- │ - Height: 1m
328
- │ - Weight: 22.5kg
329
-
330
- │ Abilities
331
- │ - Torrent
332
- │ - Rain Dish
333
- │ ─────────────────────────────────
334
-
335
- │ Types:
336
-
337
- │ Water:
338
- ↵toggle detail ↑↓ navigate ^kactions │ ─────────────────
339
- │ ▼"
327
+ Pokemon List ─────────────────────────────────────────────────────────────
328
+
329
+ > water
330
+
331
+
332
+ │ wartortle ▲
333
+ No items found │ █
334
+ │ Illustration
335
+
336
+ │ Types
337
+ │ Water
338
+
339
+ │ Characteristics
340
+ │ - Height: 1m
341
+ │ - Weight: 22.5kg
342
+
343
+ │ Abilities
344
+ │ - Torrent
345
+ │ - Rain Dish
346
+ │ ─────────────────────────────────
347
+
348
+ │ Types:
349
+
350
+ │ Water:
351
+ toggle ↑↓ navigate ^k action│ ─────────────────
352
+ detail │ ▼
353
+
354
+ "
340
355
  `)
341
356
 
342
357
  await session.press('down')
@@ -346,32 +361,34 @@ test('list detail view search functionality', async () => {
346
361
  "
347
362
 
348
363
 
349
- Pokemon List ─────────────────────────────────────────────────────────────
350
-
351
- water
352
-
353
-
354
- │ wartortle ▲
355
- │ █
356
- │ Illustration
357
-
358
- │ Types
359
- │ Water
360
-
361
- │ Characteristics
362
- │ - Height: 1m
363
- │ - Weight: 22.5kg
364
-
365
- │ Abilities
366
- │ - Torrent
367
- │ - Rain Dish
368
- │ ─────────────────────────────────
369
-
370
- │ Types:
371
-
372
- │ Water:
373
- ↵toggle detail ↑↓ navigate ^kactions │ ─────────────────
374
- │ ▼"
364
+ Pokemon List ─────────────────────────────────────────────────────────────
365
+
366
+ > water
367
+
368
+
369
+ │ wartortle ▲
370
+ No items found │ █
371
+ │ Illustration
372
+
373
+ │ Types
374
+ │ Water
375
+
376
+ │ Characteristics
377
+ │ - Height: 1m
378
+ │ - Weight: 22.5kg
379
+
380
+ │ Abilities
381
+ │ - Torrent
382
+ │ - Rain Dish
383
+ │ ─────────────────────────────────
384
+
385
+ │ Types:
386
+
387
+ │ Water:
388
+ toggle ↑↓ navigate ^k action│ ─────────────────
389
+ detail │ ▼
390
+
391
+ "
375
392
  `)
376
393
  }, 10000)
377
394
 
@@ -393,32 +410,34 @@ test('list detail metadata rendering', async () => {
393
410
  "
394
411
 
395
412
 
396
- Pokemon List ─────────────────────────────────────────────────────────────
397
-
398
- Search Pokemon...
399
-
400
- ›bulbasaur #001
401
- ivysaur #002 │ bulbasaur ▲
402
- charmander #004 │ ▀
403
- charmeleon #005 │ Illustration
404
- squirtle #007 │
405
- wartortle #008 │ Types
406
- │ Grass / Poison
407
-
408
- │ Characteristics
409
- │ - Height: 0.7m
410
- │ - Weight: 6.9kg
411
-
412
- │ Abilities
413
- │ - Chlorophyll
414
- │ - Overgrow
415
- │ ─────────────────────────────────
416
-
417
- │ Types:
418
-
419
- │ Grass:
420
- ↵toggle detail ↑↓ navigate ^kactions │ ─────────────────
421
- │ ▼"
413
+ Pokemon List ─────────────────────────────────────────────────────────────
414
+
415
+ > Search Pokemon...
416
+
417
+ ›bulbasaur #001
418
+ ivysaur #002 │ bulbasaur ▲
419
+ charmander #004 │ ▀
420
+ charmeleon #005 │ Illustration
421
+ squirtle #007 │
422
+ wartortle #008 │ Types
423
+ │ Grass / Poison
424
+
425
+ │ Characteristics
426
+ │ - Height: 0.7m
427
+ │ - Weight: 6.9kg
428
+
429
+ │ Abilities
430
+ │ - Chlorophyll
431
+ │ - Overgrow
432
+ │ ─────────────────────────────────
433
+
434
+ │ Types:
435
+
436
+ │ Grass:
437
+ toggle ↑↓ navigate ^k action│ ─────────────────
438
+ detail │ ▼
439
+
440
+ "
422
441
  `)
423
442
 
424
443
  await session.press('down')
@@ -435,32 +454,34 @@ test('list detail metadata rendering', async () => {
435
454
  "
436
455
 
437
456
 
438
- Pokemon List ─────────────────────────────────────────────────────────────
439
-
440
- Search Pokemon...
441
-
442
- bulbasaur #001
443
- ivysaur #002 │ squirtle ▲
444
- charmander #004 │ █
445
- charmeleon #005 │ Illustration
446
- ›squirtle #007 │
447
- wartortle #008 │ Types
448
- │ Water
449
-
450
- │ Characteristics
451
- │ - Height: 0.5m
452
- │ - Weight: 9kg
453
-
454
- │ Abilities
455
- │ - Torrent
456
- │ - Rain Dish
457
- │ ─────────────────────────────────
458
-
459
- │ Types:
460
-
461
- │ Water:
462
- ↵toggle detail ↑↓ navigate ^kactions │ ─────────────────
463
- │ ▼"
457
+ Pokemon List ─────────────────────────────────────────────────────────────
458
+
459
+ > Search Pokemon...
460
+
461
+ bulbasaur #001
462
+ ivysaur #002 │ squirtle ▲
463
+ charmander #004 │ █
464
+ charmeleon #005 │ Illustration
465
+ ›squirtle #007 │
466
+ wartortle #008 │ Types
467
+ │ Water
468
+
469
+ │ Characteristics
470
+ │ - Height: 0.5m
471
+ │ - Weight: 9kg
472
+
473
+ │ Abilities
474
+ │ - Torrent
475
+ │ - Rain Dish
476
+ │ ─────────────────────────────────
477
+
478
+ │ Types:
479
+
480
+ │ Water:
481
+ toggle ↑↓ navigate ^k action│ ─────────────────
482
+ detail │ ▼
483
+
484
+ "
464
485
  `)
465
486
  }, 10000)
466
487
 
@@ -502,53 +523,57 @@ test('list with detail layout consistency - short vs long detail content', async
502
523
  "
503
524
 
504
525
 
505
- Detail Length Test ───────────────────────────────────────────────────────
506
-
507
- Search...
508
-
509
- ›Short Detail
510
- Long Detail │ Brief content
511
- Another Item │
512
- │ This is short.
513
-
514
-
515
-
516
-
517
-
518
-
519
-
520
-
521
-
522
-
523
-
524
-
525
- ↑↓ navigate ^k actions │"
526
+ Detail Length Test ───────────────────────────────────────────────────────
527
+
528
+ > Search...
529
+
530
+ ›Short Detail
531
+ Long Detail │ Brief content
532
+ Another Item │
533
+ │ This is short.
534
+
535
+ ↑↓ navigate ^k actions
536
+
537
+
538
+
539
+
540
+
541
+
542
+
543
+
544
+
545
+
546
+
547
+
548
+ "
526
549
  `)
527
550
  expect(longDetailSnapshot).toMatchInlineSnapshot(`
528
551
  "
529
552
 
530
553
 
531
- Detail Length Test ───────────────────────────────────────────────────────
532
-
533
- Search...
534
-
535
- Short Detail
536
- ›Long Detail │ This item has extensive detail ▲
537
- Another Item │ content ▀
538
-
539
- │ Section 1
540
- │ This is a very long description
541
- │ that contains multiple paragraphs
542
- │ and sections to test how the
543
- │ layout behaves when the detail
544
- │ panel content overflows.
545
-
546
- │ Section 2
547
- │ More content here to ensure we
548
- │ have enough text to cause
549
- │ vertical overflow in the detail
550
- │ panel scrollbox.
551
- ↑↓ navigate ^k actions │ ▼"
554
+ Detail Length Test ───────────────────────────────────────────────────────
555
+
556
+ > Search...
557
+
558
+ Short Detail
559
+ ›Long Detail │ This item has extensive detail ▲
560
+ Another Item │ content ▀
561
+
562
+ │ Section 1
563
+ │ This is a very long description
564
+ │ that contains multiple paragraphs
565
+ │ and sections to test how the
566
+ │ layout behaves when the detail
567
+ │ panel content overflows.
568
+
569
+ │ Section 2
570
+ │ More content here to ensure we
571
+ │ have enough text to cause
572
+ │ vertical overflow in the detail
573
+ │ panel scrollbox.
574
+ ↑↓ navigate ^k actions │ ▼
575
+
576
+ "
552
577
  `)
553
578
 
554
579
  // Extract the LINE NUMBER (vertical position) of list items to verify no layout shift