tembro 2.0.4 → 2.0.5

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 (372) hide show
  1. package/dist/components/actions/action-menu.cjs +1 -1
  2. package/dist/components/actions/action-menu.d.ts +13 -1
  3. package/dist/components/actions/action-menu.js +87 -61
  4. package/dist/components/actions/button-group.cjs +1 -1
  5. package/dist/components/actions/button-group.d.ts +9 -1
  6. package/dist/components/actions/button-group.js +58 -14
  7. package/dist/components/actions/copy-button.cjs +1 -1
  8. package/dist/components/actions/copy-button.d.ts +2 -1
  9. package/dist/components/actions/copy-button.js +13 -11
  10. package/dist/components/calendar/calendar.cjs +1 -1
  11. package/dist/components/calendar/calendar.d.ts +14 -1
  12. package/dist/components/calendar/calendar.js +207 -128
  13. package/dist/components/calendar/date-picker.cjs +1 -1
  14. package/dist/components/calendar/date-picker.d.ts +3 -1
  15. package/dist/components/calendar/date-picker.js +57 -27
  16. package/dist/components/calendar/date-range-picker.cjs +1 -1
  17. package/dist/components/calendar/date-range-picker.d.ts +10 -1
  18. package/dist/components/calendar/date-range-picker.js +149 -64
  19. package/dist/components/data-table/data-table-toolbar.cjs +1 -1
  20. package/dist/components/data-table/data-table-toolbar.d.ts +5 -1
  21. package/dist/components/data-table/data-table-toolbar.js +36 -23
  22. package/dist/components/data-table/data-table.cjs +1 -1
  23. package/dist/components/data-table/data-table.d.ts +6 -4
  24. package/dist/components/data-table/data-table.js +87 -79
  25. package/dist/components/data-table/demo.cjs +1 -1
  26. package/dist/components/data-table/demo.js +3 -13
  27. package/dist/components/data-table/index.cjs +1 -1
  28. package/dist/components/data-table/index.js +5 -5
  29. package/dist/components/data-table/public.cjs +1 -1
  30. package/dist/components/data-table/public.d.ts +1 -6
  31. package/dist/components/data-table/public.js +7 -12
  32. package/dist/components/display/activity-feed.cjs +1 -1
  33. package/dist/components/display/activity-feed.d.ts +12 -1
  34. package/dist/components/display/activity-feed.js +69 -47
  35. package/dist/components/display/carousel.cjs +1 -1
  36. package/dist/components/display/carousel.d.ts +10 -1
  37. package/dist/components/display/carousel.js +68 -23
  38. package/dist/components/display/code-block.cjs +2 -1
  39. package/dist/components/display/code-block.d.ts +3 -1
  40. package/dist/components/display/code-block.js +33 -19
  41. package/dist/components/display/comparison-card.cjs +1 -1
  42. package/dist/components/display/comparison-card.d.ts +3 -3
  43. package/dist/components/display/comparison-card.js +14 -38
  44. package/dist/components/display/data-state.cjs +1 -1
  45. package/dist/components/display/data-state.d.ts +12 -2
  46. package/dist/components/display/data-state.js +80 -42
  47. package/dist/components/display/demo.cjs +1 -1
  48. package/dist/components/display/demo.js +1 -5
  49. package/dist/components/display/index.cjs +1 -1
  50. package/dist/components/display/index.d.ts +0 -3
  51. package/dist/components/display/index.js +21 -24
  52. package/dist/components/feedback/alert.cjs +1 -1
  53. package/dist/components/feedback/alert.d.ts +6 -1
  54. package/dist/components/feedback/alert.js +49 -19
  55. package/dist/components/feedback/index.cjs +1 -1
  56. package/dist/components/feedback/index.d.ts +0 -2
  57. package/dist/components/feedback/index.js +3 -5
  58. package/dist/components/filters/demo.cjs +1 -1
  59. package/dist/components/filters/demo.js +1 -5
  60. package/dist/components/filters/filter-bar.cjs +1 -1
  61. package/dist/components/filters/filter-bar.d.ts +15 -1
  62. package/dist/components/filters/filter-bar.js +94 -50
  63. package/dist/components/filters/index.cjs +1 -1
  64. package/dist/components/filters/index.d.ts +0 -1
  65. package/dist/components/filters/index.js +3 -4
  66. package/dist/components/form/form-field-shell.cjs +1 -1
  67. package/dist/components/form/form-field-shell.d.ts +17 -3
  68. package/dist/components/form/form-field-shell.js +54 -40
  69. package/dist/components/form/form-input.cjs +1 -1
  70. package/dist/components/form/form-input.js +278 -217
  71. package/dist/components/form/form-select.cjs +1 -1
  72. package/dist/components/form/form-select.js +47 -33
  73. package/dist/components/form/form-switch.cjs +1 -1
  74. package/dist/components/form/form-switch.js +79 -66
  75. package/dist/components/form/form-textarea.cjs +1 -1
  76. package/dist/components/form/form-textarea.js +59 -48
  77. package/dist/components/form/index.cjs +1 -1
  78. package/dist/components/form/index.js +14 -14
  79. package/dist/components/form/public.cjs +1 -1
  80. package/dist/components/form/public.d.ts +0 -8
  81. package/dist/components/form/public.js +7 -15
  82. package/dist/components/inputs/async-select.cjs +1 -1
  83. package/dist/components/inputs/async-select.d.ts +11 -2
  84. package/dist/components/inputs/async-select.js +278 -270
  85. package/dist/components/inputs/combobox.cjs +1 -1
  86. package/dist/components/inputs/combobox.d.ts +5 -1
  87. package/dist/components/inputs/combobox.js +52 -19
  88. package/dist/components/inputs/simple-select.cjs +1 -1
  89. package/dist/components/inputs/simple-select.d.ts +2 -1
  90. package/dist/components/inputs/simple-select.js +32 -16
  91. package/dist/components/layout/app-sidebar.cjs +1 -1
  92. package/dist/components/layout/app-sidebar.d.ts +4 -1
  93. package/dist/components/layout/app-sidebar.js +152 -132
  94. package/dist/components/layout/breadcrumbs.cjs +1 -1
  95. package/dist/components/layout/breadcrumbs.d.ts +2 -1
  96. package/dist/components/layout/breadcrumbs.js +10 -10
  97. package/dist/components/layout/index.cjs +1 -1
  98. package/dist/components/layout/index.js +3 -3
  99. package/dist/components/layout/stat-card.cjs +1 -1
  100. package/dist/components/layout/stat-card.d.ts +8 -1
  101. package/dist/components/layout/stat-card.js +33 -11
  102. package/dist/components/modern/calendar-scheduler.cjs +1 -1
  103. package/dist/components/modern/calendar-scheduler.d.ts +2 -1
  104. package/dist/components/modern/calendar-scheduler.js +21 -12
  105. package/dist/components/overlay/alert-dialog.cjs +1 -1
  106. package/dist/components/overlay/alert-dialog.d.ts +15 -1
  107. package/dist/components/overlay/alert-dialog.js +102 -27
  108. package/dist/components/overlay/drawer.cjs +1 -1
  109. package/dist/components/overlay/drawer.d.ts +4 -1
  110. package/dist/components/overlay/drawer.js +20 -17
  111. package/dist/components/patterns/index.cjs +1 -1
  112. package/dist/components/patterns/index.d.ts +0 -1
  113. package/dist/components/patterns/index.js +1 -2
  114. package/dist/components/patterns/public.cjs +1 -1
  115. package/dist/components/patterns/public.d.ts +0 -1
  116. package/dist/components/patterns/public.js +1 -2
  117. package/dist/components/ui/button/index.cjs +1 -1
  118. package/dist/components/ui/button/index.d.ts +3 -1
  119. package/dist/components/ui/button/index.js +7 -5
  120. package/dist/components/ui/checkbox/index.cjs +1 -1
  121. package/dist/components/ui/checkbox/index.d.ts +8 -0
  122. package/dist/components/ui/checkbox/index.js +16 -14
  123. package/dist/components/ui/collapse/index.cjs +1 -1
  124. package/dist/components/ui/collapse/index.d.ts +17 -3
  125. package/dist/components/ui/collapse/index.js +88 -33
  126. package/dist/components/ui/dialog/index.cjs +1 -1
  127. package/dist/components/ui/dialog/index.d.ts +2 -1
  128. package/dist/components/ui/dialog/index.js +6 -4
  129. package/dist/components/ui/dropdown-menu/index.cjs +1 -1
  130. package/dist/components/ui/dropdown-menu/index.d.ts +9 -4
  131. package/dist/components/ui/dropdown-menu/index.js +87 -62
  132. package/dist/index.cjs +1 -1
  133. package/dist/index.js +137 -156
  134. package/dist/public-component-surface.cjs +1 -1
  135. package/dist/public-component-surface.js +0 -15
  136. package/dist/showcase/component-api-schema.cjs +1 -1
  137. package/dist/showcase/component-api-schema.js +2 -2
  138. package/dist/showcase/create-demo.cjs +20 -34
  139. package/dist/showcase/create-demo.js +15 -16
  140. package/dist/showcase/fallback.cjs +3 -3
  141. package/dist/showcase/fallback.js +275 -265
  142. package/dist/showcase/premium/accordion/showcase.cjs +1 -1
  143. package/dist/showcase/premium/accordion/showcase.js +36 -5
  144. package/dist/showcase/premium/action-menu/showcase.cjs +1 -1
  145. package/dist/showcase/premium/action-menu/showcase.js +26 -8
  146. package/dist/showcase/premium/activity-feed/showcase.cjs +1 -1
  147. package/dist/showcase/premium/activity-feed/showcase.js +60 -36
  148. package/dist/showcase/premium/alert/showcase.cjs +1 -1
  149. package/dist/showcase/premium/alert/showcase.js +41 -18
  150. package/dist/showcase/premium/alert-dialog/showcase.cjs +1 -1
  151. package/dist/showcase/premium/alert-dialog/showcase.js +35 -7
  152. package/dist/showcase/premium/async-multi-select/mock.cjs +4 -3
  153. package/dist/showcase/premium/async-multi-select/mock.js +5 -5
  154. package/dist/showcase/premium/async-multi-select/showcase.cjs +1 -1
  155. package/dist/showcase/premium/async-multi-select/showcase.js +4 -3
  156. package/dist/showcase/premium/async-select/mock.cjs +1 -1
  157. package/dist/showcase/premium/async-select/mock.js +1 -1
  158. package/dist/showcase/premium/async-select/showcase.cjs +1 -1
  159. package/dist/showcase/premium/async-select/showcase.js +69 -22
  160. package/dist/showcase/premium/button/showcase.cjs +1 -1
  161. package/dist/showcase/premium/button/showcase.js +49 -3
  162. package/dist/showcase/premium/button-group/showcase.cjs +1 -1
  163. package/dist/showcase/premium/button-group/showcase.js +53 -29
  164. package/dist/showcase/premium/calendar/showcase.cjs +1 -1
  165. package/dist/showcase/premium/calendar/showcase.js +7 -2
  166. package/dist/showcase/premium/carousel/showcase.cjs +1 -1
  167. package/dist/showcase/premium/carousel/showcase.js +95 -47
  168. package/dist/showcase/premium/checkbox/showcase.cjs +1 -1
  169. package/dist/showcase/premium/checkbox/showcase.js +143 -67
  170. package/dist/showcase/premium/clearable-input/mock.cjs +4 -3
  171. package/dist/showcase/premium/clearable-input/mock.js +3 -2
  172. package/dist/showcase/premium/clearable-input/showcase.cjs +1 -1
  173. package/dist/showcase/premium/clearable-input/showcase.js +8 -2
  174. package/dist/showcase/premium/collapse/showcase.cjs +1 -1
  175. package/dist/showcase/premium/collapse/showcase.js +7 -0
  176. package/dist/showcase/premium/combobox/showcase.cjs +1 -1
  177. package/dist/showcase/premium/combobox/showcase.d.ts +2 -1
  178. package/dist/showcase/premium/combobox/showcase.js +56 -47
  179. package/dist/showcase/premium/data-table/showcase.cjs +1 -1
  180. package/dist/showcase/premium/data-table/showcase.js +138 -46
  181. package/dist/showcase/premium/data-table-parts/showcase.cjs +1 -1
  182. package/dist/showcase/premium/data-table-parts/showcase.js +13 -13
  183. package/dist/showcase/premium/date-input/mock.cjs +1 -1
  184. package/dist/showcase/premium/date-input/mock.js +1 -1
  185. package/dist/showcase/premium/date-range-picker/showcase.cjs +1 -1
  186. package/dist/showcase/premium/date-range-picker/showcase.js +32 -1
  187. package/dist/showcase/premium/dropdown-menu/showcase.cjs +1 -1
  188. package/dist/showcase/premium/dropdown-menu/showcase.js +88 -54
  189. package/dist/showcase/premium/form-wrapper/mock.cjs +41 -15
  190. package/dist/showcase/premium/form-wrapper/mock.js +4 -4
  191. package/dist/showcase/premium/form-wrapper/showcase.cjs +1 -1
  192. package/dist/showcase/premium/form-wrapper/showcase.js +77 -28
  193. package/dist/showcase/premium/index.cjs +1 -1
  194. package/dist/showcase/premium/index.js +426 -467
  195. package/dist/showcase/premium/input/mock.cjs +4 -1
  196. package/dist/showcase/premium/input/mock.js +1 -1
  197. package/dist/showcase/premium/masked-input/mock.cjs +1 -1
  198. package/dist/showcase/premium/masked-input/mock.js +1 -1
  199. package/dist/showcase/premium/money-input/mock.cjs +1 -1
  200. package/dist/showcase/premium/money-input/mock.js +1 -1
  201. package/dist/showcase/premium/number-input/mock.cjs +1 -1
  202. package/dist/showcase/premium/number-input/mock.js +1 -1
  203. package/dist/showcase/premium/phone-input/mock.cjs +1 -1
  204. package/dist/showcase/premium/phone-input/mock.js +1 -1
  205. package/dist/showcase/premium/quantity-input/mock.cjs +1 -1
  206. package/dist/showcase/premium/quantity-input/mock.js +1 -1
  207. package/dist/showcase/premium/simple-select/mock.cjs +1 -1
  208. package/dist/showcase/premium/simple-select/mock.js +1 -1
  209. package/dist/showcase/premium/simple-select/showcase.cjs +1 -1
  210. package/dist/showcase/premium/simple-select/showcase.js +4 -2
  211. package/dist/showcase/preview-catalog.cjs +7 -10
  212. package/dist/showcase/preview-catalog.js +7 -7
  213. package/dist/showcase/registry-quality.cjs +1 -1
  214. package/dist/showcase/registry-quality.js +0 -23
  215. package/dist/showcase/registry-specific.cjs +1 -1
  216. package/dist/showcase/registry-specific.js +149 -383
  217. package/dist/showcase/render-registry-preview.cjs +1 -1
  218. package/dist/showcase/render-registry-preview.js +163 -195
  219. package/dist/showcase/site-data.cjs +1 -1
  220. package/dist/showcase/site-data.js +197 -941
  221. package/dist/showcase/supplemental.cjs +1 -1
  222. package/dist/showcase/supplemental.js +1 -1
  223. package/dist/showcase/tembro-registry.json.cjs +1 -1
  224. package/dist/showcase/tembro-registry.json.js +33 -51
  225. package/package.json +1 -1
  226. package/packages/cli/dist/index.cjs +2 -2
  227. package/packages/cli/vendor/src/components/actions/action-menu.tsx +149 -83
  228. package/packages/cli/vendor/src/components/actions/button-group.tsx +141 -33
  229. package/packages/cli/vendor/src/components/actions/copy-button.tsx +21 -16
  230. package/packages/cli/vendor/src/components/calendar/calendar.tsx +223 -88
  231. package/packages/cli/vendor/src/components/calendar/date-picker.tsx +73 -29
  232. package/packages/cli/vendor/src/components/calendar/date-range-picker.tsx +154 -49
  233. package/packages/cli/vendor/src/components/data-table/data-table-toolbar.tsx +71 -50
  234. package/packages/cli/vendor/src/components/data-table/data-table.tsx +65 -53
  235. package/packages/cli/vendor/src/components/data-table/demo.tsx +2 -12
  236. package/packages/cli/vendor/src/components/data-table/public.ts +1 -6
  237. package/packages/cli/vendor/src/components/display/activity-feed.tsx +98 -40
  238. package/packages/cli/vendor/src/components/display/carousel.tsx +88 -2
  239. package/packages/cli/vendor/src/components/display/code-block.tsx +58 -26
  240. package/packages/cli/vendor/src/components/display/comparison-card.tsx +15 -41
  241. package/packages/cli/vendor/src/components/display/data-state.tsx +119 -50
  242. package/packages/cli/vendor/src/components/display/demo.tsx +0 -4
  243. package/packages/cli/vendor/src/components/display/index.ts +0 -3
  244. package/packages/cli/vendor/src/components/feedback/alert.tsx +86 -28
  245. package/packages/cli/vendor/src/components/feedback/index.ts +0 -2
  246. package/packages/cli/vendor/src/components/filters/demo.tsx +0 -1
  247. package/packages/cli/vendor/src/components/filters/filter-bar.tsx +126 -54
  248. package/packages/cli/vendor/src/components/filters/index.ts +0 -1
  249. package/packages/cli/vendor/src/components/form/form-field-shell.tsx +72 -34
  250. package/packages/cli/vendor/src/components/form/form-input.tsx +118 -11
  251. package/packages/cli/vendor/src/components/form/form-select.tsx +26 -3
  252. package/packages/cli/vendor/src/components/form/form-switch.tsx +77 -58
  253. package/packages/cli/vendor/src/components/form/form-textarea.tsx +65 -51
  254. package/packages/cli/vendor/src/components/form/public.ts +0 -9
  255. package/packages/cli/vendor/src/components/inputs/async-select.tsx +126 -82
  256. package/packages/cli/vendor/src/components/inputs/combobox.tsx +66 -9
  257. package/packages/cli/vendor/src/components/inputs/simple-select.tsx +52 -24
  258. package/packages/cli/vendor/src/components/layout/app-sidebar.tsx +42 -1
  259. package/packages/cli/vendor/src/components/layout/breadcrumbs.tsx +17 -8
  260. package/packages/cli/vendor/src/components/layout/stat-card.tsx +63 -23
  261. package/packages/cli/vendor/src/components/modern/calendar-scheduler.tsx +32 -22
  262. package/packages/cli/vendor/src/components/overlay/alert-dialog.tsx +148 -24
  263. package/packages/cli/vendor/src/components/overlay/drawer.tsx +42 -30
  264. package/packages/cli/vendor/src/components/patterns/index.ts +0 -1
  265. package/packages/cli/vendor/src/components/patterns/public.ts +0 -1
  266. package/packages/cli/vendor/src/components/ui/button/index.tsx +27 -17
  267. package/packages/cli/vendor/src/components/ui/checkbox/index.tsx +22 -5
  268. package/packages/cli/vendor/src/components/ui/collapse/index.tsx +97 -16
  269. package/packages/cli/vendor/src/components/ui/dialog/index.tsx +12 -8
  270. package/packages/cli/vendor/src/components/ui/dropdown-menu/index.tsx +82 -28
  271. package/packages/cli/vendor/src/public-component-surface.ts +0 -3
  272. package/packages/cli/vendor/src/showcase/component-api-schema.ts +2 -2
  273. package/packages/cli/vendor/src/showcase/create-demo.tsx +31 -46
  274. package/packages/cli/vendor/src/showcase/fallback.tsx +80 -99
  275. package/packages/cli/vendor/src/showcase/premium/accordion/showcase.tsx +32 -2
  276. package/packages/cli/vendor/src/showcase/premium/action-menu/showcase.tsx +12 -3
  277. package/packages/cli/vendor/src/showcase/premium/activity-feed/showcase.tsx +15 -2
  278. package/packages/cli/vendor/src/showcase/premium/alert/showcase.tsx +32 -17
  279. package/packages/cli/vendor/src/showcase/premium/alert-dialog/showcase.tsx +28 -3
  280. package/packages/cli/vendor/src/showcase/premium/async-multi-select/mock.ts +6 -5
  281. package/packages/cli/vendor/src/showcase/premium/async-multi-select/showcase.tsx +5 -4
  282. package/packages/cli/vendor/src/showcase/premium/async-select/mock.ts +1 -1
  283. package/packages/cli/vendor/src/showcase/premium/async-select/showcase.tsx +36 -0
  284. package/packages/cli/vendor/src/showcase/premium/button/showcase.tsx +26 -5
  285. package/packages/cli/vendor/src/showcase/premium/button-group/showcase.tsx +20 -3
  286. package/packages/cli/vendor/src/showcase/premium/calendar/showcase.tsx +5 -0
  287. package/packages/cli/vendor/src/showcase/premium/carousel/showcase.tsx +33 -5
  288. package/packages/cli/vendor/src/showcase/premium/checkbox/showcase.tsx +46 -3
  289. package/packages/cli/vendor/src/showcase/premium/clearable-input/mock.ts +5 -3
  290. package/packages/cli/vendor/src/showcase/premium/clearable-input/showcase.tsx +5 -2
  291. package/packages/cli/vendor/src/showcase/premium/collapse/showcase.tsx +4 -0
  292. package/packages/cli/vendor/src/showcase/premium/combobox/showcase.tsx +8 -0
  293. package/packages/cli/vendor/src/showcase/premium/data-table/showcase.tsx +77 -27
  294. package/packages/cli/vendor/src/showcase/premium/data-table-parts/showcase.tsx +11 -11
  295. package/packages/cli/vendor/src/showcase/premium/date-input/mock.ts +1 -1
  296. package/packages/cli/vendor/src/showcase/premium/date-range-picker/showcase.tsx +7 -0
  297. package/packages/cli/vendor/src/showcase/premium/dropdown-menu/showcase.tsx +46 -3
  298. package/packages/cli/vendor/src/showcase/premium/form-wrapper/mock.ts +70 -44
  299. package/packages/cli/vendor/src/showcase/premium/form-wrapper/showcase.tsx +129 -12
  300. package/packages/cli/vendor/src/showcase/premium/index.ts +7 -24
  301. package/packages/cli/vendor/src/showcase/premium/input/mock.ts +2 -2
  302. package/packages/cli/vendor/src/showcase/premium/masked-input/mock.ts +1 -1
  303. package/packages/cli/vendor/src/showcase/premium/money-input/mock.ts +1 -1
  304. package/packages/cli/vendor/src/showcase/premium/number-input/mock.ts +1 -1
  305. package/packages/cli/vendor/src/showcase/premium/phone-input/mock.ts +1 -1
  306. package/packages/cli/vendor/src/showcase/premium/quantity-input/mock.ts +1 -1
  307. package/packages/cli/vendor/src/showcase/premium/simple-select/mock.ts +1 -1
  308. package/packages/cli/vendor/src/showcase/premium/simple-select/showcase.tsx +2 -1
  309. package/packages/cli/vendor/src/showcase/preview-catalog.tsx +7 -7
  310. package/packages/cli/vendor/src/showcase/registry-quality.ts +4 -28
  311. package/packages/cli/vendor/src/showcase/registry-specific.tsx +3 -178
  312. package/packages/cli/vendor/src/showcase/render-registry-preview.tsx +18 -51
  313. package/packages/cli/vendor/src/showcase/site-data.tsx +2443 -2761
  314. package/packages/cli/vendor/src/showcase/supplemental.tsx +2 -42
  315. package/packages/cli/vendor/src/showcase/tembro-registry.json +11 -58
  316. package/registry.json +11 -61
  317. package/dist/components/display/entity-card.cjs +0 -1
  318. package/dist/components/display/entity-card.d.ts +0 -18
  319. package/dist/components/display/entity-card.js +0 -61
  320. package/dist/components/display/entity-header.cjs +0 -1
  321. package/dist/components/display/entity-header.d.ts +0 -13
  322. package/dist/components/display/entity-header.js +0 -52
  323. package/dist/components/display/file-card.cjs +0 -1
  324. package/dist/components/display/file-card.d.ts +0 -14
  325. package/dist/components/display/file-card.js +0 -59
  326. package/dist/components/feedback/empty-search-state.cjs +0 -1
  327. package/dist/components/feedback/empty-search-state.d.ts +0 -11
  328. package/dist/components/feedback/empty-search-state.js +0 -45
  329. package/dist/components/feedback/empty-state.cjs +0 -1
  330. package/dist/components/feedback/empty-state.d.ts +0 -11
  331. package/dist/components/feedback/empty-state.js +0 -38
  332. package/dist/components/filters/filter-chips.cjs +0 -1
  333. package/dist/components/filters/filter-chips.d.ts +0 -18
  334. package/dist/components/filters/filter-chips.js +0 -61
  335. package/dist/components/patterns/form-builder-presets.cjs +0 -1
  336. package/dist/components/patterns/form-builder-presets.d.ts +0 -1
  337. package/dist/components/patterns/form-builder-presets.js +0 -2
  338. package/dist/components/patterns/form-builder.cjs +0 -1
  339. package/dist/components/patterns/form-builder.d.ts +0 -109
  340. package/dist/components/patterns/form-builder.js +0 -263
  341. package/dist/showcase/premium/empty-state/index.cjs +0 -1
  342. package/dist/showcase/premium/empty-state/index.d.ts +0 -2
  343. package/dist/showcase/premium/empty-state/index.js +0 -3
  344. package/dist/showcase/premium/empty-state/mock.cjs +0 -14
  345. package/dist/showcase/premium/empty-state/mock.d.ts +0 -2
  346. package/dist/showcase/premium/empty-state/mock.js +0 -31
  347. package/dist/showcase/premium/empty-state/showcase.cjs +0 -1
  348. package/dist/showcase/premium/empty-state/showcase.d.ts +0 -3
  349. package/dist/showcase/premium/empty-state/showcase.js +0 -99
  350. package/dist/showcase/premium/form-builder/index.cjs +0 -1
  351. package/dist/showcase/premium/form-builder/index.d.ts +0 -2
  352. package/dist/showcase/premium/form-builder/index.js +0 -3
  353. package/dist/showcase/premium/form-builder/mock.cjs +0 -57
  354. package/dist/showcase/premium/form-builder/mock.d.ts +0 -2
  355. package/dist/showcase/premium/form-builder/mock.js +0 -40
  356. package/dist/showcase/premium/form-builder/showcase.cjs +0 -1
  357. package/dist/showcase/premium/form-builder/showcase.d.ts +0 -3
  358. package/dist/showcase/premium/form-builder/showcase.js +0 -69
  359. package/packages/cli/vendor/src/components/display/entity-card.tsx +0 -80
  360. package/packages/cli/vendor/src/components/display/entity-header.tsx +0 -80
  361. package/packages/cli/vendor/src/components/display/file-card.tsx +0 -61
  362. package/packages/cli/vendor/src/components/feedback/empty-search-state.tsx +0 -65
  363. package/packages/cli/vendor/src/components/feedback/empty-state.tsx +0 -56
  364. package/packages/cli/vendor/src/components/filters/filter-chips.tsx +0 -89
  365. package/packages/cli/vendor/src/components/patterns/form-builder-presets.ts +0 -13
  366. package/packages/cli/vendor/src/components/patterns/form-builder.tsx +0 -443
  367. package/packages/cli/vendor/src/showcase/premium/empty-state/index.ts +0 -2
  368. package/packages/cli/vendor/src/showcase/premium/empty-state/mock.ts +0 -30
  369. package/packages/cli/vendor/src/showcase/premium/empty-state/showcase.tsx +0 -65
  370. package/packages/cli/vendor/src/showcase/premium/form-builder/index.ts +0 -2
  371. package/packages/cli/vendor/src/showcase/premium/form-builder/mock.ts +0 -79
  372. package/packages/cli/vendor/src/showcase/premium/form-builder/showcase.tsx +0 -55
@@ -6,16 +6,19 @@ import { cn } from "@/lib/utils"
6
6
  export type FormFieldLayout = "vertical" | "horizontal" | "inline"
7
7
  export type FormFieldDescriptionPosition = "top" | "bottom"
8
8
 
9
- export type FormFieldShellProps = React.ComponentProps<"div"> & {
10
- label?: React.ReactNode
11
- description?: React.ReactNode
12
- error?: React.ReactNode
13
- required?: boolean
14
- htmlFor?: string
15
- layout?: FormFieldLayout
16
- descriptionPosition?: FormFieldDescriptionPosition
17
- labelAction?: React.ReactNode
18
- requiredIndicator?: React.ReactNode
9
+ export type FormFieldShellProps = React.ComponentProps<"div"> & {
10
+ label?: React.ReactNode
11
+ description?: React.ReactNode
12
+ error?: React.ReactNode
13
+ required?: boolean
14
+ htmlFor?: string
15
+ labelId?: string
16
+ descriptionId?: string
17
+ errorId?: string
18
+ layout?: FormFieldLayout
19
+ descriptionPosition?: FormFieldDescriptionPosition
20
+ labelAction?: React.ReactNode
21
+ requiredIndicator?: React.ReactNode
19
22
  errorIcon?: React.ReactNode
20
23
  showErrorIcon?: boolean
21
24
  disabled?: boolean
@@ -29,14 +32,18 @@ export type FormFieldShellProps = React.ComponentProps<"div"> & {
29
32
 
30
33
  export type FormFieldShellControlProps = Pick<
31
34
  FormFieldShellProps,
32
- | "label"
33
- | "description"
34
- | "required"
35
- | "className"
36
- | "layout"
37
- | "descriptionPosition"
38
- | "labelAction"
39
- | "requiredIndicator"
35
+ | "label"
36
+ | "description"
37
+ | "required"
38
+ | "className"
39
+ | "htmlFor"
40
+ | "labelId"
41
+ | "descriptionId"
42
+ | "errorId"
43
+ | "layout"
44
+ | "descriptionPosition"
45
+ | "labelAction"
46
+ | "requiredIndicator"
40
47
  | "errorIcon"
41
48
  | "showErrorIcon"
42
49
  | "disabled"
@@ -45,9 +52,32 @@ export type FormFieldShellControlProps = Pick<
45
52
  | "labelRowClassName"
46
53
  | "descriptionClassName"
47
54
  | "errorClassName"
48
- | "contentClassName"
49
- >
50
-
55
+ | "contentClassName"
56
+ >
57
+
58
+ export type FormFieldMessageState = {
59
+ description?: React.ReactNode
60
+ error?: React.ReactNode
61
+ }
62
+
63
+ export type FormFieldResolvedIds = {
64
+ labelId: string
65
+ descriptionId: string
66
+ errorId: string
67
+ describedBy?: string
68
+ }
69
+
70
+ function resolveFormFieldIds(id: string, state: FormFieldMessageState = {}): FormFieldResolvedIds {
71
+ const labelId = `${id}-label`
72
+ const descriptionId = `${id}-description`
73
+ const errorId = `${id}-error`
74
+ const describedBy = [state.description ? descriptionId : null, state.error ? errorId : null]
75
+ .filter(Boolean)
76
+ .join(" ") || undefined
77
+
78
+ return { labelId, descriptionId, errorId, describedBy }
79
+ }
80
+
51
81
  const layoutClassName: Record<FormFieldLayout, string> = {
52
82
  vertical: "grid gap-2",
53
83
  horizontal: "grid gap-2 sm:grid-cols-[minmax(0,12rem)_1fr] sm:items-start sm:gap-5",
@@ -58,12 +88,15 @@ function FormFieldShell({
58
88
  className,
59
89
  label,
60
90
  description,
61
- error,
62
- required = false,
63
- htmlFor,
64
- layout = "vertical",
65
- descriptionPosition = "top",
66
- labelAction,
91
+ error,
92
+ required = false,
93
+ htmlFor,
94
+ labelId,
95
+ descriptionId,
96
+ errorId,
97
+ layout = "vertical",
98
+ descriptionPosition = "top",
99
+ labelAction,
67
100
  requiredIndicator = <span className="ml-1 text-destructive">*</span>,
68
101
  errorIcon,
69
102
  showErrorIcon = true,
@@ -92,9 +125,10 @@ function FormFieldShell({
92
125
  )}
93
126
  >
94
127
  {label ? (
95
- <label
96
- data-slot="form-field-label"
97
- htmlFor={htmlFor}
128
+ <label
129
+ data-slot="form-field-label"
130
+ htmlFor={htmlFor}
131
+ id={labelId}
98
132
  className={cn(
99
133
  "min-w-0 text-sm font-semibold leading-none tracking-tight text-foreground",
100
134
  disabled && "cursor-not-allowed opacity-60",
@@ -117,9 +151,10 @@ function FormFieldShell({
117
151
  </div>
118
152
  ) : null
119
153
 
120
- const descriptionNode = description ? (
154
+ const descriptionNode = description ? (
121
155
  <p
122
156
  data-slot="form-field-description"
157
+ id={descriptionId}
123
158
  className={cn("text-sm leading-6 text-muted-foreground", disabled && "opacity-60", descriptionClassName)}
124
159
  >
125
160
  {description}
@@ -135,6 +170,9 @@ function FormFieldShell({
135
170
  const errorNode = error ? (
136
171
  <p
137
172
  data-slot="form-field-error"
173
+ id={errorId}
174
+ role="alert"
175
+ aria-live="polite"
138
176
  className={cn(
139
177
  "flex items-start gap-2 rounded-[min(var(--radius-xl),16px)] border border-destructive/18 bg-destructive/8 px-3 py-2 text-sm font-medium leading-6 text-destructive",
140
178
  errorClassName
@@ -189,6 +227,6 @@ function FormFieldShell({
189
227
  )}
190
228
  </div>
191
229
  )
192
- }
193
-
194
- export { FormFieldShell }
230
+ }
231
+
232
+ export { FormFieldShell, resolveFormFieldIds }
@@ -26,6 +26,7 @@ import {
26
26
  import {
27
27
  FormFieldShell,
28
28
  type FormFieldShellControlProps,
29
+ resolveFormFieldIds,
29
30
  } from "@/components/form/form-field-shell"
30
31
 
31
32
  export type FormInputKind =
@@ -198,6 +199,7 @@ function buildShellProps<
198
199
  description: props.description,
199
200
  required: props.required,
200
201
  className: props.className,
202
+ htmlFor: props.id ?? props.name,
201
203
  layout: props.layout,
202
204
  descriptionPosition: props.descriptionPosition,
203
205
  labelAction: props.labelAction,
@@ -230,6 +232,10 @@ function FormInput<
230
232
  rules={props.rules}
231
233
  render={({ field, fieldState }) => {
232
234
  const error = fieldState.error?.message
235
+ const resolvedIds = resolveFormFieldIds(inputId, {
236
+ description: props.description,
237
+ error,
238
+ })
233
239
 
234
240
  if (kind === "search") {
235
241
  const {
@@ -261,7 +267,14 @@ function FormInput<
261
267
  } = props as FormInputSearchVariantProps<TFieldValues, TName>
262
268
 
263
269
  return (
264
- <FormFieldShell {...shellProps} error={error} htmlFor={id ?? inputId}>
270
+ <FormFieldShell
271
+ {...shellProps}
272
+ labelId={resolvedIds.labelId}
273
+ descriptionId={resolvedIds.descriptionId}
274
+ errorId={resolvedIds.errorId}
275
+ error={error}
276
+ htmlFor={id ?? inputId}
277
+ >
265
278
  <SearchInput
266
279
  {...searchProps}
267
280
  id={id ?? inputId}
@@ -272,6 +285,8 @@ function FormInput<
272
285
  readOnly={props.readOnly}
273
286
  inputClassName={fieldClassName ?? resolvedFieldClassName}
274
287
  aria-invalid={fieldState.invalid || undefined}
288
+ aria-describedby={resolvedIds.describedBy}
289
+ aria-errormessage={error ? resolvedIds.errorId : undefined}
275
290
  onBlur={(event: React.FocusEvent<HTMLInputElement>) => {
276
291
  field.onBlur()
277
292
  onBlur?.(event)
@@ -315,7 +330,14 @@ function FormInput<
315
330
  } = props as FormInputPasswordVariantProps<TFieldValues, TName>
316
331
 
317
332
  return (
318
- <FormFieldShell {...shellProps} error={error} htmlFor={id ?? inputId}>
333
+ <FormFieldShell
334
+ {...shellProps}
335
+ labelId={resolvedIds.labelId}
336
+ descriptionId={resolvedIds.descriptionId}
337
+ errorId={resolvedIds.errorId}
338
+ error={error}
339
+ htmlFor={id ?? inputId}
340
+ >
319
341
  <Input
320
342
  {...(passwordProps as Omit<InputTextInputProps, "kind">)}
321
343
  type="password"
@@ -326,6 +348,8 @@ function FormInput<
326
348
  disabled={disabled}
327
349
  readOnly={props.readOnly}
328
350
  inputClassName={fieldClassName ?? resolvedFieldClassName}
351
+ aria-describedby={resolvedIds.describedBy}
352
+ aria-errormessage={error ? resolvedIds.errorId : undefined}
329
353
  onBlur={(event: React.FocusEvent<HTMLInputElement>) => {
330
354
  field.onBlur()
331
355
  onBlur?.(event)
@@ -372,7 +396,14 @@ function FormInput<
372
396
  } = props as FormInputNumberVariantProps<TFieldValues, TName>
373
397
 
374
398
  return (
375
- <FormFieldShell {...shellProps} error={error} htmlFor={id ?? inputId}>
399
+ <FormFieldShell
400
+ {...shellProps}
401
+ labelId={resolvedIds.labelId}
402
+ descriptionId={resolvedIds.descriptionId}
403
+ errorId={resolvedIds.errorId}
404
+ error={error}
405
+ htmlFor={id ?? inputId}
406
+ >
376
407
  <NumberInput
377
408
  {...numberProps}
378
409
  id={id ?? inputId}
@@ -383,6 +414,8 @@ function FormInput<
383
414
  readOnly={props.readOnly}
384
415
  className={fieldClassName ?? resolvedFieldClassName}
385
416
  aria-invalid={fieldState.invalid || undefined}
417
+ aria-describedby={resolvedIds.describedBy}
418
+ aria-errormessage={error ? resolvedIds.errorId : undefined}
386
419
  onBlur={(event: React.FocusEvent<HTMLInputElement>) => {
387
420
  field.onBlur()
388
421
  onBlur?.(event)
@@ -433,7 +466,14 @@ function FormInput<
433
466
  valueMode === "raw" ? formatPhoneDigits(fieldValue, countryCode, maxDigits) : fieldValue
434
467
 
435
468
  return (
436
- <FormFieldShell {...shellProps} error={error} htmlFor={id ?? inputId}>
469
+ <FormFieldShell
470
+ {...shellProps}
471
+ labelId={resolvedIds.labelId}
472
+ descriptionId={resolvedIds.descriptionId}
473
+ errorId={resolvedIds.errorId}
474
+ error={error}
475
+ htmlFor={id ?? inputId}
476
+ >
437
477
  <PhoneInput
438
478
  {...phoneProps}
439
479
  id={id ?? inputId}
@@ -446,6 +486,8 @@ function FormInput<
446
486
  maxDigits={maxDigits}
447
487
  className={fieldClassName ?? resolvedFieldClassName}
448
488
  aria-invalid={fieldState.invalid || undefined}
489
+ aria-describedby={resolvedIds.describedBy}
490
+ aria-errormessage={error ? resolvedIds.errorId : undefined}
449
491
  onBlur={(event: React.FocusEvent<HTMLInputElement>) => {
450
492
  field.onBlur()
451
493
  onBlur?.(event)
@@ -491,7 +533,14 @@ function FormInput<
491
533
  } = props as FormInputDateVariantProps<TFieldValues, TName>
492
534
 
493
535
  return (
494
- <FormFieldShell {...shellProps} error={error} htmlFor={id ?? inputId}>
536
+ <FormFieldShell
537
+ {...shellProps}
538
+ labelId={resolvedIds.labelId}
539
+ descriptionId={resolvedIds.descriptionId}
540
+ errorId={resolvedIds.errorId}
541
+ error={error}
542
+ htmlFor={id ?? inputId}
543
+ >
495
544
  <DateInput
496
545
  {...dateProps}
497
546
  id={id ?? inputId}
@@ -502,6 +551,8 @@ function FormInput<
502
551
  readOnly={props.readOnly}
503
552
  className={fieldClassName ?? resolvedFieldClassName}
504
553
  aria-invalid={fieldState.invalid || undefined}
554
+ aria-describedby={resolvedIds.describedBy}
555
+ aria-errormessage={error ? resolvedIds.errorId : undefined}
505
556
  onBlur={(event: React.FocusEvent<HTMLInputElement>) => {
506
557
  field.onBlur()
507
558
  onBlur?.(event)
@@ -546,7 +597,14 @@ function FormInput<
546
597
  } = props as FormInputClearableVariantProps<TFieldValues, TName>
547
598
 
548
599
  return (
549
- <FormFieldShell {...shellProps} error={error} htmlFor={id ?? inputId}>
600
+ <FormFieldShell
601
+ {...shellProps}
602
+ labelId={resolvedIds.labelId}
603
+ descriptionId={resolvedIds.descriptionId}
604
+ errorId={resolvedIds.errorId}
605
+ error={error}
606
+ htmlFor={id ?? inputId}
607
+ >
550
608
  <ClearableInput
551
609
  {...clearableProps}
552
610
  id={id ?? inputId}
@@ -557,6 +615,8 @@ function FormInput<
557
615
  readOnly={props.readOnly}
558
616
  className={fieldClassName ?? resolvedFieldClassName}
559
617
  aria-invalid={fieldState.invalid || undefined}
618
+ aria-describedby={resolvedIds.describedBy}
619
+ aria-errormessage={error ? resolvedIds.errorId : undefined}
560
620
  onBlur={(event: React.FocusEvent<HTMLInputElement>) => {
561
621
  field.onBlur()
562
622
  onBlur?.(event)
@@ -601,7 +661,14 @@ function FormInput<
601
661
  } = props as FormInputMaskedVariantProps<TFieldValues, TName>
602
662
 
603
663
  return (
604
- <FormFieldShell {...shellProps} error={error} htmlFor={id ?? inputId}>
664
+ <FormFieldShell
665
+ {...shellProps}
666
+ labelId={resolvedIds.labelId}
667
+ descriptionId={resolvedIds.descriptionId}
668
+ errorId={resolvedIds.errorId}
669
+ error={error}
670
+ htmlFor={id ?? inputId}
671
+ >
605
672
  <MaskedInput
606
673
  {...maskedProps}
607
674
  id={id ?? inputId}
@@ -612,6 +679,8 @@ function FormInput<
612
679
  readOnly={props.readOnly}
613
680
  className={fieldClassName ?? resolvedFieldClassName}
614
681
  aria-invalid={fieldState.invalid || undefined}
682
+ aria-describedby={resolvedIds.describedBy}
683
+ aria-errormessage={error ? resolvedIds.errorId : undefined}
615
684
  onBlur={(event: React.FocusEvent<HTMLInputElement>) => {
616
685
  field.onBlur()
617
686
  onBlur?.(event)
@@ -657,7 +726,14 @@ function FormInput<
657
726
  } = props as FormInputMoneyVariantProps<TFieldValues, TName>
658
727
 
659
728
  return (
660
- <FormFieldShell {...shellProps} error={error} htmlFor={id ?? inputId}>
729
+ <FormFieldShell
730
+ {...shellProps}
731
+ labelId={resolvedIds.labelId}
732
+ descriptionId={resolvedIds.descriptionId}
733
+ errorId={resolvedIds.errorId}
734
+ error={error}
735
+ htmlFor={id ?? inputId}
736
+ >
661
737
  <MoneyInput
662
738
  {...moneyProps}
663
739
  id={id ?? inputId}
@@ -668,6 +744,8 @@ function FormInput<
668
744
  readOnly={props.readOnly}
669
745
  className={fieldClassName ?? resolvedFieldClassName}
670
746
  aria-invalid={fieldState.invalid || undefined}
747
+ aria-describedby={resolvedIds.describedBy}
748
+ aria-errormessage={error ? resolvedIds.errorId : undefined}
671
749
  onBlur={(event: React.FocusEvent<HTMLInputElement>) => {
672
750
  field.onBlur()
673
751
  onBlur?.(event)
@@ -712,7 +790,14 @@ function FormInput<
712
790
  } = props as FormInputQuantityVariantProps<TFieldValues, TName>
713
791
 
714
792
  return (
715
- <FormFieldShell {...shellProps} error={error} htmlFor={id ?? inputId}>
793
+ <FormFieldShell
794
+ {...shellProps}
795
+ labelId={resolvedIds.labelId}
796
+ descriptionId={resolvedIds.descriptionId}
797
+ errorId={resolvedIds.errorId}
798
+ error={error}
799
+ htmlFor={id ?? inputId}
800
+ >
716
801
  <QuantityInput
717
802
  {...quantityProps}
718
803
  id={id ?? inputId}
@@ -723,6 +808,8 @@ function FormInput<
723
808
  readOnly={props.readOnly}
724
809
  className={fieldClassName ?? resolvedFieldClassName}
725
810
  aria-invalid={fieldState.invalid || undefined}
811
+ aria-describedby={resolvedIds.describedBy}
812
+ aria-errormessage={error ? resolvedIds.errorId : undefined}
726
813
  onBlur={(event: React.FocusEvent<HTMLInputElement>) => {
727
814
  field.onBlur()
728
815
  onBlur?.(event)
@@ -767,7 +854,14 @@ function FormInput<
767
854
  const currentValue = field.value as DateRangeValue | undefined
768
855
 
769
856
  return (
770
- <FormFieldShell {...shellProps} error={error} htmlFor={id ?? inputId}>
857
+ <FormFieldShell
858
+ {...shellProps}
859
+ labelId={resolvedIds.labelId}
860
+ descriptionId={resolvedIds.descriptionId}
861
+ errorId={resolvedIds.errorId}
862
+ error={error}
863
+ htmlFor={id ?? inputId}
864
+ >
771
865
  <DateRangeInput
772
866
  {...rangeProps}
773
867
  id={id ?? inputId}
@@ -780,11 +874,15 @@ function FormInput<
780
874
  ...(rangeProps.fromInputProps ?? {}),
781
875
  disabled,
782
876
  readOnly: props.readOnly,
877
+ "aria-describedby": resolvedIds.describedBy,
878
+ "aria-errormessage": error ? resolvedIds.errorId : undefined,
783
879
  }}
784
880
  toInputProps={{
785
881
  ...(rangeProps.toInputProps ?? {}),
786
882
  disabled,
787
883
  readOnly: props.readOnly,
884
+ "aria-describedby": resolvedIds.describedBy,
885
+ "aria-errormessage": error ? resolvedIds.errorId : undefined,
788
886
  }}
789
887
  onValueChange={(value) => {
790
888
  field.onChange(value)
@@ -831,7 +929,14 @@ function FormInput<
831
929
  } = props as FormTextInputProps<TFieldValues, TName>
832
930
 
833
931
  return (
834
- <FormFieldShell {...shellProps} error={error} htmlFor={id ?? inputId}>
932
+ <FormFieldShell
933
+ {...shellProps}
934
+ labelId={resolvedIds.labelId}
935
+ descriptionId={resolvedIds.descriptionId}
936
+ errorId={resolvedIds.errorId}
937
+ error={error}
938
+ htmlFor={id ?? inputId}
939
+ >
835
940
  <Input
836
941
  {...(inputProps as Omit<InputTextInputProps, "kind">)}
837
942
  id={id ?? inputId}
@@ -852,6 +957,8 @@ function FormInput<
852
957
  onChange?.(event)
853
958
  }}
854
959
  aria-invalid={fieldState.invalid || undefined}
960
+ aria-describedby={resolvedIds.describedBy}
961
+ aria-errormessage={error ? resolvedIds.errorId : undefined}
855
962
  className={fieldClassName ?? resolvedFieldClassName}
856
963
  />
857
964
  </FormFieldShell>
@@ -10,6 +10,7 @@ import { SimpleSelect, type SimpleSelectProps } from "@/components/inputs/simple
10
10
  import {
11
11
  FormFieldShell,
12
12
  type FormFieldShellControlProps,
13
+ resolveFormFieldIds,
13
14
  } from "@/components/form/form-field-shell"
14
15
 
15
16
  export type FormSelectKind = "simple" | "async"
@@ -68,6 +69,7 @@ function buildShellProps<
68
69
  description: props.description,
69
70
  required: props.required,
70
71
  className: props.className,
72
+ htmlFor: props.name,
71
73
  layout: props.layout,
72
74
  descriptionPosition: props.descriptionPosition,
73
75
  labelAction: props.labelAction,
@@ -101,6 +103,11 @@ function FormSelect<
101
103
  name={props.name}
102
104
  render={({ field, fieldState }) => {
103
105
  const error = fieldState.error?.message
106
+ const controlId = `${props.name}`
107
+ const resolvedIds = resolveFormFieldIds(controlId, {
108
+ description: props.description,
109
+ error,
110
+ })
104
111
 
105
112
  if (kind === "async") {
106
113
  const {
@@ -131,11 +138,19 @@ function FormSelect<
131
138
  } = props as FormSelectAsyncVariantProps<TFieldValues, TName, TValue, TData, TOption>
132
139
 
133
140
  return (
134
- <FormFieldShell {...shellProps} error={error}>
135
- <AsyncSelect<TValue, TData, TOption>
141
+ <FormFieldShell
142
+ {...shellProps}
143
+ labelId={resolvedIds.labelId}
144
+ descriptionId={resolvedIds.descriptionId}
145
+ errorId={resolvedIds.errorId}
146
+ error={error}
147
+ >
148
+ <AsyncSelect<TValue, TData, TOption>
136
149
  {...asyncProps}
137
150
  value={field.value == null || field.value === "" ? undefined : (String(field.value) as TValue)}
138
151
  disabled={disabled || readOnly}
152
+ aria-describedby={resolvedIds.describedBy}
153
+ aria-errormessage={error ? resolvedIds.errorId : undefined}
139
154
  onValueChange={(nextValue, option) => {
140
155
  field.onChange(nextValue ?? emptyValue)
141
156
  onValueChange?.(nextValue, option)
@@ -174,11 +189,19 @@ function FormSelect<
174
189
  } = props as FormSimpleSelectProps<TFieldValues, TName>
175
190
 
176
191
  return (
177
- <FormFieldShell {...shellProps} error={error}>
192
+ <FormFieldShell
193
+ {...shellProps}
194
+ labelId={resolvedIds.labelId}
195
+ descriptionId={resolvedIds.descriptionId}
196
+ errorId={resolvedIds.errorId}
197
+ error={error}
198
+ >
178
199
  <SimpleSelect
179
200
  {...simpleProps}
180
201
  value={field.value == null ? "" : String(field.value)}
181
202
  disabled={disabled || readOnly}
203
+ aria-describedby={resolvedIds.describedBy}
204
+ aria-errormessage={error ? resolvedIds.errorId : undefined}
182
205
  onValueChange={(nextValue) => {
183
206
  field.onChange(nextValue || emptyValue)
184
207
  onValueChange?.(nextValue as string)