termcast 1.3.32 → 1.3.34

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 (327) hide show
  1. package/dist/action-utils.d.ts.map +1 -1
  2. package/dist/action-utils.js +8 -0
  3. package/dist/action-utils.js.map +1 -1
  4. package/dist/apis/cache.d.ts +1 -2
  5. package/dist/apis/cache.d.ts.map +1 -1
  6. package/dist/apis/cache.js +138 -54
  7. package/dist/apis/cache.js.map +1 -1
  8. package/dist/apis/clipboard.d.ts.map +1 -1
  9. package/dist/apis/clipboard.js +4 -0
  10. package/dist/apis/clipboard.js.map +1 -1
  11. package/dist/apis/oauth.d.ts.map +1 -1
  12. package/dist/apis/oauth.js +31 -4
  13. package/dist/apis/oauth.js.map +1 -1
  14. package/dist/build.d.ts +0 -1
  15. package/dist/build.d.ts.map +1 -1
  16. package/dist/build.js +30 -51
  17. package/dist/build.js.map +1 -1
  18. package/dist/cli.js +31 -14
  19. package/dist/cli.js.map +1 -1
  20. package/dist/compile.d.ts.map +1 -1
  21. package/dist/compile.js +5 -1
  22. package/dist/compile.js.map +1 -1
  23. package/dist/components/actions.d.ts +14 -0
  24. package/dist/components/actions.d.ts.map +1 -1
  25. package/dist/components/actions.js +151 -59
  26. package/dist/components/actions.js.map +1 -1
  27. package/dist/components/alert.d.ts.map +1 -1
  28. package/dist/components/alert.js +6 -5
  29. package/dist/components/alert.js.map +1 -1
  30. package/dist/components/animation-tick.d.ts +1 -1
  31. package/dist/components/animation-tick.js +1 -1
  32. package/dist/components/animation-tick.js.map +1 -1
  33. package/dist/components/detail.d.ts +5 -31
  34. package/dist/components/detail.d.ts.map +1 -1
  35. package/dist/components/detail.js +36 -52
  36. package/dist/components/detail.js.map +1 -1
  37. package/dist/components/dropdown.d.ts +1 -1
  38. package/dist/components/dropdown.d.ts.map +1 -1
  39. package/dist/components/dropdown.js +50 -22
  40. package/dist/components/dropdown.js.map +1 -1
  41. package/dist/components/footer.d.ts.map +1 -1
  42. package/dist/components/footer.js +19 -18
  43. package/dist/components/footer.js.map +1 -1
  44. package/dist/components/form/checkbox.d.ts.map +1 -1
  45. package/dist/components/form/checkbox.js +12 -11
  46. package/dist/components/form/checkbox.js.map +1 -1
  47. package/dist/components/form/date-picker.d.ts.map +1 -1
  48. package/dist/components/form/date-picker.js +7 -22
  49. package/dist/components/form/date-picker.js.map +1 -1
  50. package/dist/components/form/description.d.ts +1 -1
  51. package/dist/components/form/description.d.ts.map +1 -1
  52. package/dist/components/form/description.js +6 -5
  53. package/dist/components/form/description.js.map +1 -1
  54. package/dist/components/form/dropdown.d.ts.map +1 -1
  55. package/dist/components/form/dropdown.js +53 -50
  56. package/dist/components/form/dropdown.js.map +1 -1
  57. package/dist/components/form/file-autocomplete.d.ts.map +1 -1
  58. package/dist/components/form/file-autocomplete.js +5 -4
  59. package/dist/components/form/file-autocomplete.js.map +1 -1
  60. package/dist/components/form/file-picker.d.ts.map +1 -1
  61. package/dist/components/form/file-picker.js +23 -22
  62. package/dist/components/form/file-picker.js.map +1 -1
  63. package/dist/components/form/form-end.d.ts.map +1 -1
  64. package/dist/components/form/form-end.js +6 -4
  65. package/dist/components/form/form-end.js.map +1 -1
  66. package/dist/components/form/form-field-wrapper.d.ts +15 -0
  67. package/dist/components/form/form-field-wrapper.d.ts.map +1 -0
  68. package/dist/components/form/form-field-wrapper.js +29 -0
  69. package/dist/components/form/form-field-wrapper.js.map +1 -0
  70. package/dist/components/form/index.d.ts.map +1 -1
  71. package/dist/components/form/index.js +31 -30
  72. package/dist/components/form/index.js.map +1 -1
  73. package/dist/components/form/password-field.d.ts.map +1 -1
  74. package/dist/components/form/password-field.js +7 -6
  75. package/dist/components/form/password-field.js.map +1 -1
  76. package/dist/components/form/separator.d.ts.map +1 -1
  77. package/dist/components/form/separator.js +3 -2
  78. package/dist/components/form/separator.js.map +1 -1
  79. package/dist/components/form/tagpicker.d.ts.map +1 -1
  80. package/dist/components/form/tagpicker.js +2 -1
  81. package/dist/components/form/tagpicker.js.map +1 -1
  82. package/dist/components/form/text-area.d.ts.map +1 -1
  83. package/dist/components/form/text-area.js +7 -6
  84. package/dist/components/form/text-area.js.map +1 -1
  85. package/dist/components/form/text-field.d.ts.map +1 -1
  86. package/dist/components/form/text-field.js +7 -6
  87. package/dist/components/form/text-field.js.map +1 -1
  88. package/dist/components/form/use-form-navigation.d.ts.map +1 -1
  89. package/dist/components/form/use-form-navigation.js +4 -4
  90. package/dist/components/form/use-form-navigation.js.map +1 -1
  91. package/dist/components/form/with-left-border.d.ts +15 -0
  92. package/dist/components/form/with-left-border.d.ts.map +1 -1
  93. package/dist/components/form/with-left-border.js +21 -9
  94. package/dist/components/form/with-left-border.js.map +1 -1
  95. package/dist/components/icon.d.ts +14 -0
  96. package/dist/components/icon.d.ts.map +1 -1
  97. package/dist/components/icon.js +60 -0
  98. package/dist/components/icon.js.map +1 -1
  99. package/dist/components/image.d.ts +47 -2
  100. package/dist/components/image.d.ts.map +1 -1
  101. package/dist/components/image.js +46 -7
  102. package/dist/components/image.js.map +1 -1
  103. package/dist/components/list.d.ts +5 -0
  104. package/dist/components/list.d.ts.map +1 -1
  105. package/dist/components/list.js +188 -132
  106. package/dist/components/list.js.map +1 -1
  107. package/dist/components/loading-bar.d.ts.map +1 -1
  108. package/dist/components/loading-bar.js +4 -3
  109. package/dist/components/loading-bar.js.map +1 -1
  110. package/dist/components/metadata.d.ts +70 -0
  111. package/dist/components/metadata.d.ts.map +1 -0
  112. package/dist/components/metadata.js +82 -0
  113. package/dist/components/metadata.js.map +1 -0
  114. package/dist/components/theme-picker.d.ts.map +1 -1
  115. package/dist/components/theme-picker.js +3 -2
  116. package/dist/components/theme-picker.js.map +1 -1
  117. package/dist/descendants-v2.d.ts +60 -0
  118. package/dist/descendants-v2.d.ts.map +1 -0
  119. package/dist/descendants-v2.js +144 -0
  120. package/dist/descendants-v2.js.map +1 -0
  121. package/dist/examples/actions-context.d.ts +2 -0
  122. package/dist/examples/actions-context.d.ts.map +1 -0
  123. package/dist/examples/actions-context.js +33 -0
  124. package/dist/examples/actions-context.js.map +1 -0
  125. package/dist/examples/form-basic.d.ts.map +1 -1
  126. package/dist/examples/form-basic.js +1 -1
  127. package/dist/examples/form-basic.js.map +1 -1
  128. package/dist/examples/form-dropdown.js +1 -1
  129. package/dist/examples/form-dropdown.js.map +1 -1
  130. package/dist/examples/internal/custom-action-renderables.d.ts +70 -0
  131. package/dist/examples/internal/custom-action-renderables.d.ts.map +1 -0
  132. package/dist/examples/internal/custom-action-renderables.js +163 -0
  133. package/dist/examples/internal/custom-action-renderables.js.map +1 -0
  134. package/dist/examples/internal/custom-dropdown.d.ts +99 -0
  135. package/dist/examples/internal/custom-dropdown.d.ts.map +1 -0
  136. package/dist/examples/internal/custom-dropdown.js +270 -0
  137. package/dist/examples/internal/custom-dropdown.js.map +1 -0
  138. package/dist/examples/internal/custom-renderable-form.d.ts +43 -0
  139. package/dist/examples/internal/custom-renderable-form.d.ts.map +1 -0
  140. package/dist/examples/internal/custom-renderable-form.js +284 -0
  141. package/dist/examples/internal/custom-renderable-form.js.map +1 -0
  142. package/dist/examples/internal/custom-renderable-list-default-search.d.ts +2 -0
  143. package/dist/examples/internal/custom-renderable-list-default-search.d.ts.map +1 -0
  144. package/dist/examples/internal/custom-renderable-list-default-search.js +16 -0
  145. package/dist/examples/internal/custom-renderable-list-default-search.js.map +1 -0
  146. package/dist/examples/internal/custom-renderable-list-v2-default-search.d.ts +2 -0
  147. package/dist/examples/internal/custom-renderable-list-v2-default-search.d.ts.map +1 -0
  148. package/dist/examples/internal/custom-renderable-list-v2-default-search.js +24 -0
  149. package/dist/examples/internal/custom-renderable-list-v2-default-search.js.map +1 -0
  150. package/dist/examples/internal/custom-renderable-list-v2.d.ts +189 -0
  151. package/dist/examples/internal/custom-renderable-list-v2.d.ts.map +1 -0
  152. package/dist/examples/internal/custom-renderable-list-v2.js +708 -0
  153. package/dist/examples/internal/custom-renderable-list-v2.js.map +1 -0
  154. package/dist/examples/internal/custom-renderable-list.d.ts +72 -0
  155. package/dist/examples/internal/custom-renderable-list.d.ts.map +1 -0
  156. package/dist/examples/internal/custom-renderable-list.js +544 -0
  157. package/dist/examples/internal/custom-renderable-list.js.map +1 -0
  158. package/dist/examples/internal/rhf-custom-ref.js +5 -4
  159. package/dist/examples/internal/rhf-custom-ref.js.map +1 -1
  160. package/dist/examples/internal/scrollbox-with-descendants.js +4 -2
  161. package/dist/examples/internal/scrollbox-with-descendants.js.map +1 -1
  162. package/dist/examples/list-controlled-search.d.ts +2 -0
  163. package/dist/examples/list-controlled-search.d.ts.map +1 -0
  164. package/dist/examples/list-controlled-search.js +12 -0
  165. package/dist/examples/list-controlled-search.js.map +1 -0
  166. package/dist/examples/list-detail-metadata.js +1 -1
  167. package/dist/examples/list-detail-metadata.js.map +1 -1
  168. package/dist/examples/simple-image-mask.d.ts +8 -0
  169. package/dist/examples/simple-image-mask.d.ts.map +1 -0
  170. package/dist/examples/simple-image-mask.js +12 -0
  171. package/dist/examples/simple-image-mask.js.map +1 -0
  172. package/dist/examples/toast-variations.js +1 -1
  173. package/dist/examples/toast-variations.js.map +1 -1
  174. package/dist/extensions/dev.d.ts.map +1 -1
  175. package/dist/extensions/dev.js +3 -2
  176. package/dist/extensions/dev.js.map +1 -1
  177. package/dist/extensions/react-refresh-init.d.ts.map +1 -1
  178. package/dist/extensions/react-refresh-init.js +4 -3
  179. package/dist/extensions/react-refresh-init.js.map +1 -1
  180. package/dist/index.d.ts +3 -2
  181. package/dist/index.d.ts.map +1 -1
  182. package/dist/index.js +1 -1
  183. package/dist/index.js.map +1 -1
  184. package/dist/internal/date-picker-widget.d.ts.map +1 -1
  185. package/dist/internal/date-picker-widget.js +2 -1
  186. package/dist/internal/date-picker-widget.js.map +1 -1
  187. package/dist/internal/dialog.d.ts +6 -0
  188. package/dist/internal/dialog.d.ts.map +1 -1
  189. package/dist/internal/dialog.js +59 -18
  190. package/dist/internal/dialog.js.map +1 -1
  191. package/dist/internal/navigation.d.ts.map +1 -1
  192. package/dist/internal/navigation.js +8 -1
  193. package/dist/internal/navigation.js.map +1 -1
  194. package/dist/internal/offscreen.d.ts +3 -0
  195. package/dist/internal/offscreen.d.ts.map +1 -1
  196. package/dist/internal/offscreen.js +5 -0
  197. package/dist/internal/offscreen.js.map +1 -1
  198. package/dist/internal/providers.d.ts.map +1 -1
  199. package/dist/internal/providers.js +20 -3
  200. package/dist/internal/providers.js.map +1 -1
  201. package/dist/internal/scrollbox.d.ts.map +1 -1
  202. package/dist/internal/scrollbox.js +3 -2
  203. package/dist/internal/scrollbox.js.map +1 -1
  204. package/dist/logger.d.ts.map +1 -1
  205. package/dist/logger.js +4 -0
  206. package/dist/logger.js.map +1 -1
  207. package/dist/preload.js +5 -17
  208. package/dist/preload.js.map +1 -1
  209. package/dist/state.d.ts +4 -0
  210. package/dist/state.d.ts.map +1 -1
  211. package/dist/state.js +4 -0
  212. package/dist/state.js.map +1 -1
  213. package/dist/test-border-overlay.d.ts +2 -0
  214. package/dist/test-border-overlay.d.ts.map +1 -0
  215. package/dist/test-border-overlay.js +7 -0
  216. package/dist/test-border-overlay.js.map +1 -0
  217. package/dist/test-layout-2.d.ts +2 -0
  218. package/dist/test-layout-2.d.ts.map +1 -0
  219. package/dist/test-layout-2.js +5 -0
  220. package/dist/test-layout-2.js.map +1 -0
  221. package/dist/test-layout.d.ts +2 -0
  222. package/dist/test-layout.d.ts.map +1 -0
  223. package/dist/test-layout.js +7 -0
  224. package/dist/test-layout.js.map +1 -0
  225. package/dist/theme.d.ts +1 -2
  226. package/dist/theme.d.ts.map +1 -1
  227. package/dist/theme.js +5 -9
  228. package/dist/theme.js.map +1 -1
  229. package/dist/utils/run-command.d.ts +1 -1
  230. package/dist/utils/run-command.d.ts.map +1 -1
  231. package/dist/utils/run-command.js +27 -7
  232. package/dist/utils/run-command.js.map +1 -1
  233. package/dist/utils.d.ts +1 -0
  234. package/dist/utils.d.ts.map +1 -1
  235. package/dist/utils.js +44 -23
  236. package/dist/utils.js.map +1 -1
  237. package/dist/watcher.d.ts.map +1 -1
  238. package/dist/watcher.js +24 -4
  239. package/dist/watcher.js.map +1 -1
  240. package/package.json +14 -12
  241. package/src/action-utils.tsx +10 -0
  242. package/src/apis/cache.test.ts +35 -3
  243. package/src/apis/cache.tsx +184 -59
  244. package/src/apis/clipboard.tsx +5 -0
  245. package/src/apis/oauth.tsx +33 -4
  246. package/src/build.tsx +35 -58
  247. package/src/cli.tsx +156 -134
  248. package/src/compile.tsx +6 -3
  249. package/src/compile.vitest.tsx +33 -15
  250. package/src/components/actions.tsx +230 -99
  251. package/src/components/alert.tsx +11 -10
  252. package/src/components/animation-tick.tsx +1 -1
  253. package/src/components/detail.tsx +56 -151
  254. package/src/components/dropdown.tsx +70 -36
  255. package/src/components/footer.tsx +58 -33
  256. package/src/components/form/checkbox.tsx +30 -32
  257. package/src/components/form/date-picker.tsx +27 -47
  258. package/src/components/form/description.tsx +19 -18
  259. package/src/components/form/dropdown.tsx +95 -103
  260. package/src/components/form/file-autocomplete.tsx +9 -8
  261. package/src/components/form/file-picker.tsx +46 -46
  262. package/src/components/form/form-end.tsx +6 -4
  263. package/src/components/form/index.tsx +38 -48
  264. package/src/components/form/password-field.tsx +25 -27
  265. package/src/components/form/separator.tsx +3 -2
  266. package/src/components/form/tagpicker.tsx +2 -1
  267. package/src/components/form/text-area.tsx +25 -30
  268. package/src/components/form/text-field.tsx +25 -27
  269. package/src/components/form/use-form-navigation.tsx +4 -5
  270. package/src/components/form/with-left-border.tsx +48 -10
  271. package/src/components/icon.tsx +69 -0
  272. package/src/components/image.tsx +60 -7
  273. package/src/components/list.tsx +270 -202
  274. package/src/components/loading-bar.tsx +4 -3
  275. package/src/components/metadata.tsx +217 -0
  276. package/src/components/theme-picker.tsx +3 -2
  277. package/src/examples/actions-context.tsx +63 -0
  278. package/src/examples/actions-context.vitest.tsx +110 -0
  279. package/src/examples/actions-dialog-layout.vitest.tsx +2 -1
  280. package/src/examples/file-autocomplete.vitest.tsx +15 -15
  281. package/src/examples/form-basic.tsx +12 -0
  282. package/src/examples/form-basic.vitest.tsx +74 -74
  283. package/src/examples/form-dropdown.tsx +8 -0
  284. package/src/examples/form-dropdown.vitest.tsx +364 -421
  285. package/src/examples/form-tagpicker.vitest.tsx +56 -54
  286. package/src/examples/github.vitest.tsx +252 -0
  287. package/src/examples/internal/rhf-custom-ref.tsx +16 -15
  288. package/src/examples/internal/scrollbox-with-descendants.tsx +4 -2
  289. package/src/examples/internal/simple-dialog.tsx +1 -1
  290. package/src/examples/internal/simple-scrollbox.vitest.tsx +14 -9
  291. package/src/examples/list-controlled-search.tsx +28 -0
  292. package/src/examples/list-controlled-search.vitest.tsx +49 -0
  293. package/src/examples/list-detail-metadata.tsx +8 -5
  294. package/src/examples/list-detail-metadata.vitest.tsx +22 -22
  295. package/src/examples/list-dropdown-default.vitest.tsx +12 -12
  296. package/src/examples/list-scrollbox.vitest.tsx +52 -38
  297. package/src/examples/list-with-detail.vitest.tsx +45 -41
  298. package/src/examples/list-with-dropdown.vitest.tsx +5 -5
  299. package/src/examples/list-with-sections.vitest.tsx +65 -12
  300. package/src/examples/list-with-toast.vitest.tsx +4 -4
  301. package/src/examples/simple-file-picker.vitest.tsx +12 -12
  302. package/src/examples/simple-grid.vitest.tsx +53 -53
  303. package/src/examples/simple-image-mask.tsx +58 -0
  304. package/src/examples/simple-navigation.vitest.tsx +19 -19
  305. package/src/examples/store.vitest.tsx +1 -1
  306. package/src/examples/swift-extension.vitest.tsx +4 -2
  307. package/src/examples/synonyms.vitest.tsx +31 -9
  308. package/src/examples/toast-action.vitest.tsx +8 -8
  309. package/src/examples/toast-variations.tsx +1 -1
  310. package/src/examples/toast-variations.vitest.tsx +69 -134
  311. package/src/extensions/dev.tsx +3 -2
  312. package/src/extensions/dev.vitest.tsx +65 -28
  313. package/src/extensions/react-refresh-init.tsx +4 -3
  314. package/src/index.tsx +3 -1
  315. package/src/internal/date-picker-widget.tsx +2 -1
  316. package/src/internal/dialog.tsx +100 -28
  317. package/src/internal/navigation.tsx +8 -1
  318. package/src/internal/offscreen.tsx +10 -0
  319. package/src/internal/providers.tsx +34 -8
  320. package/src/internal/scrollbox.tsx +4 -2
  321. package/src/logger.tsx +4 -0
  322. package/src/preload.tsx +5 -17
  323. package/src/state.tsx +12 -0
  324. package/src/theme.tsx +6 -9
  325. package/src/utils/run-command.tsx +32 -8
  326. package/src/utils.tsx +58 -23
  327. package/src/watcher.tsx +26 -6
@@ -45,6 +45,7 @@ test('form basic navigation and input', async () => {
45
45
 
46
46
  ◇ Password
47
47
  │ Enter secure password
48
+
48
49
  │ Must be at least 8 characters
49
50
 
50
51
  ◇ Biography
@@ -71,10 +72,9 @@ test('form basic navigation and input', async () => {
71
72
 
72
73
  │ Your country of residence
73
74
 
74
- Date of Birth
75
+ Empty Dropdown
76
+ │ No items available
75
77
 
76
- │ ← 2026 →
77
- │ ← January →
78
78
 
79
79
 
80
80
  ctrl ↵ submit tab navigate ^k actions
@@ -165,20 +165,20 @@ test('form date picker selection with space and enter', async () => {
165
165
 
166
166
 
167
167
 
168
-
169
168
  │ Required field
170
169
 
171
170
  ◇ Password
172
171
  │ Enter secure password
172
+
173
173
  │ Must be at least 8 characters
174
174
 
175
175
  ◇ Biography
176
176
  │ Tell us about yourself...
177
177
 
178
178
 
179
-
180
179
  │ █
181
- Maximum 500 characters
180
+
181
+ │ Maximum 500 characters
182
182
 
183
183
  ◇ Email Preferences
184
184
  │ ○ Subscribe to newsletter
@@ -196,16 +196,16 @@ test('form date picker selection with space and enter', async () => {
196
196
 
197
197
  │ Your country of residence
198
198
 
199
+ ◇ Empty Dropdown
200
+ │ No items available
201
+
202
+ ◇ Minimal Field
203
+ │ No info text
204
+
199
205
  ◇ Date of Birth
200
206
 
201
207
  │ ← 2026 →
202
- │ ← January
203
-
204
- │ Mo Tu We Th Fr Sa Su
205
- │ 1 2 3 4
206
- │ 5 6 7 8 9 10 11
207
- │ 12 13 14 15 16 17 18
208
- │ 19 20 21 22 23 24 25
208
+ │ ← February
209
209
 
210
210
 
211
211
  ctrl ↵ submit tab navigate ^k actions
@@ -223,20 +223,20 @@ test('form date picker selection with space and enter', async () => {
223
223
 
224
224
 
225
225
 
226
-
227
226
  │ Required field
228
227
 
229
228
  ◇ Password
230
229
  │ Enter secure password
230
+
231
231
  │ Must be at least 8 characters
232
232
 
233
233
  ◇ Biography
234
234
  │ Tell us about yourself...
235
235
 
236
236
 
237
-
238
237
  │ █
239
- Maximum 500 characters
238
+
239
+ │ Maximum 500 characters
240
240
 
241
241
  ◇ Email Preferences
242
242
  │ ○ Subscribe to newsletter
@@ -254,16 +254,16 @@ test('form date picker selection with space and enter', async () => {
254
254
 
255
255
  │ Your country of residence
256
256
 
257
+ ◇ Empty Dropdown
258
+ │ No items available
259
+
260
+ ◇ Minimal Field
261
+ │ No info text
262
+
257
263
  ◇ Date of Birth
258
264
 
259
265
  │ ← 2026 →
260
- │ ← January
261
-
262
- │ Mo Tu We Th Fr Sa Su
263
- │ 1 2 3 4
264
- │ 5 6 7 8 9 10 11
265
- │ 12 13 14 15 16 17 18
266
- │ 19 20 21 22 23 24 25
266
+ │ ← February
267
267
 
268
268
 
269
269
  ctrl ↵ submit tab navigate ^k actions
@@ -282,20 +282,20 @@ test('form date picker selection with space and enter', async () => {
282
282
 
283
283
 
284
284
 
285
-
286
285
  │ Required field
287
286
 
288
287
  ◇ Password
289
288
  │ Enter secure password
289
+
290
290
  │ Must be at least 8 characters
291
291
 
292
292
  ◇ Biography
293
293
  │ Tell us about yourself...
294
294
 
295
295
 
296
-
297
296
  │ █
298
- Maximum 500 characters
297
+
298
+ │ Maximum 500 characters
299
299
 
300
300
  ◇ Email Preferences
301
301
  │ ○ Subscribe to newsletter
@@ -313,16 +313,16 @@ test('form date picker selection with space and enter', async () => {
313
313
 
314
314
  │ Your country of residence
315
315
 
316
+ ◇ Empty Dropdown
317
+ │ No items available
318
+
319
+ ◇ Minimal Field
320
+ │ No info text
321
+
316
322
  ◇ Date of Birth
317
323
 
318
324
  │ ← 2026 →
319
- │ ← January
320
-
321
- │ Mo Tu We Th Fr Sa Su
322
- │ 1 2 3 4
323
- │ 5 6 7 8 9 10 11
324
- │ 12 13 14 15 16 17 18
325
- │ 19 20 21 22 23 24 25
325
+ │ ← February
326
326
 
327
327
 
328
328
  ctrl ↵ submit tab navigate ^k actions
@@ -357,20 +357,20 @@ test('form dropdown navigation', async () => {
357
357
 
358
358
 
359
359
 
360
-
361
360
  │ Required field
362
361
 
363
362
  ◇ Password
364
363
  │ Enter secure password
364
+
365
365
  │ Must be at least 8 characters
366
366
 
367
367
  ◇ Biography
368
368
  │ Tell us about yourself...
369
369
 
370
370
 
371
-
372
371
  │ █
373
- Maximum 500 characters
372
+
373
+ │ Maximum 500 characters
374
374
 
375
375
  ◇ Email Preferences
376
376
  │ ○ Subscribe to newsletter
@@ -388,16 +388,16 @@ test('form dropdown navigation', async () => {
388
388
 
389
389
  │ Your country of residence
390
390
 
391
+ ◇ Empty Dropdown
392
+ │ No items available
393
+
394
+ ◇ Minimal Field
395
+ │ No info text
396
+
391
397
  ◇ Date of Birth
392
398
 
393
399
  │ ← 2026 →
394
- │ ← January
395
-
396
- │ Mo Tu We Th Fr Sa Su
397
- │ 1 2 3 4
398
- │ 5 6 7 8 9 10 11
399
- │ 12 13 14 15 16 17 18
400
- │ 19 20 21 22 23 24 25
400
+ │ ← February
401
401
 
402
402
 
403
403
  ctrl ↵ submit tab navigate ^k actions
@@ -415,20 +415,20 @@ test('form dropdown navigation', async () => {
415
415
 
416
416
 
417
417
 
418
-
419
418
  │ Required field
420
419
 
421
420
  ◇ Password
422
421
  │ Enter secure password
422
+
423
423
  │ Must be at least 8 characters
424
424
 
425
425
  ◇ Biography
426
426
  │ Tell us about yourself...
427
427
 
428
428
 
429
-
430
429
  │ █
431
- Maximum 500 characters
430
+
431
+ │ Maximum 500 characters
432
432
 
433
433
  ◇ Email Preferences
434
434
  │ ○ Subscribe to newsletter
@@ -446,16 +446,16 @@ test('form dropdown navigation', async () => {
446
446
 
447
447
  │ Your country of residence
448
448
 
449
+ ◇ Empty Dropdown
450
+ │ No items available
451
+
452
+ ◇ Minimal Field
453
+ │ No info text
454
+
449
455
  ◇ Date of Birth
450
456
 
451
457
  │ ← 2026 →
452
- │ ← January
453
-
454
- │ Mo Tu We Th Fr Sa Su
455
- │ 1 2 3 4
456
- │ 5 6 7 8 9 10 11
457
- │ 12 13 14 15 16 17 18
458
- │ 19 20 21 22 23 24 25
458
+ │ ← February
459
459
 
460
460
 
461
461
  ctrl ↵ submit tab navigate ^k actions
@@ -475,20 +475,20 @@ test('form dropdown navigation', async () => {
475
475
 
476
476
 
477
477
 
478
-
479
478
  │ Required field
480
479
 
481
480
  ◇ Password
482
481
  │ Enter secure password
482
+
483
483
  │ Must be at least 8 characters
484
484
 
485
485
  ◇ Biography
486
486
  │ Tell us about yourself...
487
487
 
488
488
 
489
-
490
489
  │ █
491
- Maximum 500 characters
490
+
491
+ │ Maximum 500 characters
492
492
 
493
493
  ◇ Email Preferences
494
494
  │ ○ Subscribe to newsletter
@@ -506,16 +506,16 @@ test('form dropdown navigation', async () => {
506
506
 
507
507
  │ Your country of residence
508
508
 
509
+ ◇ Empty Dropdown
510
+ │ No items available
511
+
512
+ ◇ Minimal Field
513
+ │ No info text
514
+
509
515
  ◇ Date of Birth
510
516
 
511
517
  │ ← 2026 →
512
- │ ← January
513
-
514
- │ Mo Tu We Th Fr Sa Su
515
- │ 1 2 3 4
516
- │ 5 6 7 8 9 10 11
517
- │ 12 13 14 15 16 17 18
518
- │ 19 20 21 22 23 24 25
518
+ │ ← February
519
519
 
520
520
 
521
521
  ctrl ↵ submit tab navigate ^k actions
@@ -533,20 +533,20 @@ test('form dropdown navigation', async () => {
533
533
 
534
534
 
535
535
 
536
-
537
536
  │ Required field
538
537
 
539
538
  ◇ Password
540
539
  │ Enter secure password
540
+
541
541
  │ Must be at least 8 characters
542
542
 
543
543
  ◇ Biography
544
544
  │ Tell us about yourself...
545
545
 
546
546
 
547
-
548
547
  │ █
549
- Maximum 500 characters
548
+
549
+ │ Maximum 500 characters
550
550
 
551
551
  ◇ Email Preferences
552
552
  │ ○ Subscribe to newsletter
@@ -564,16 +564,16 @@ test('form dropdown navigation', async () => {
564
564
 
565
565
  │ Your country of residence
566
566
 
567
+ ◇ Empty Dropdown
568
+ │ No items available
569
+
570
+ ◇ Minimal Field
571
+ │ No info text
572
+
567
573
  ◇ Date of Birth
568
574
 
569
575
  │ ← 2026 →
570
- │ ← January
571
-
572
- │ Mo Tu We Th Fr Sa Su
573
- │ 1 2 3 4
574
- │ 5 6 7 8 9 10 11
575
- │ 12 13 14 15 16 17 18
576
- │ 19 20 21 22 23 24 25
576
+ │ ← February
577
577
 
578
578
 
579
579
  ctrl ↵ submit tab navigate ^k actions
@@ -642,7 +642,7 @@ test('form scrolls with mouse wheel', async () => {
642
642
 
643
643
  ◇ Password
644
644
  │ Enter secure password
645
- Must be at least 8 characters
645
+
646
646
 
647
647
 
648
648
  ctrl ↵ submit tab navigate ^k actions
@@ -89,6 +89,14 @@ function FormDropdownExample() {
89
89
  <Form.Dropdown.Item value='low' title='Low' icon='🟢' />
90
90
  </Form.Dropdown>
91
91
 
92
+ <Form.Dropdown
93
+ id='emptyDropdown'
94
+ title='Empty Dropdown'
95
+ placeholder='No options available'
96
+ />
97
+
98
+ <Form.TextField id='afterEmpty' title='Field After Empty' placeholder='This should be close to empty dropdown' />
99
+
92
100
  {submitted && (
93
101
  <Form.Description
94
102
  title='Submitted Data'