tembro 2.0.3 → 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 (579) 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 -8
  51. package/dist/components/display/index.js +21 -29
  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/demo.cjs +1 -1
  67. package/dist/components/form/demo.js +1 -2
  68. package/dist/components/form/form-field-shell.cjs +1 -1
  69. package/dist/components/form/form-field-shell.d.ts +17 -3
  70. package/dist/components/form/form-field-shell.js +54 -40
  71. package/dist/components/form/form-input.cjs +1 -1
  72. package/dist/components/form/form-input.js +278 -217
  73. package/dist/components/form/form-select.cjs +1 -1
  74. package/dist/components/form/form-select.js +47 -33
  75. package/dist/components/form/form-switch.cjs +1 -1
  76. package/dist/components/form/form-switch.js +79 -66
  77. package/dist/components/form/form-textarea.cjs +1 -1
  78. package/dist/components/form/form-textarea.js +59 -48
  79. package/dist/components/form/index.cjs +1 -1
  80. package/dist/components/form/index.d.ts +0 -1
  81. package/dist/components/form/index.js +11 -12
  82. package/dist/components/form/public.cjs +1 -1
  83. package/dist/components/form/public.d.ts +0 -9
  84. package/dist/components/form/public.js +7 -16
  85. package/dist/components/inputs/async-select.cjs +1 -1
  86. package/dist/components/inputs/async-select.d.ts +11 -2
  87. package/dist/components/inputs/async-select.js +278 -270
  88. package/dist/components/inputs/combobox.cjs +1 -1
  89. package/dist/components/inputs/combobox.d.ts +5 -1
  90. package/dist/components/inputs/combobox.js +52 -19
  91. package/dist/components/inputs/index.cjs +1 -1
  92. package/dist/components/inputs/index.d.ts +0 -2
  93. package/dist/components/inputs/index.js +3 -5
  94. package/dist/components/inputs/public.cjs +1 -1
  95. package/dist/components/inputs/public.d.ts +0 -2
  96. package/dist/components/inputs/public.js +3 -5
  97. package/dist/components/inputs/simple-select.cjs +1 -1
  98. package/dist/components/inputs/simple-select.d.ts +2 -1
  99. package/dist/components/inputs/simple-select.js +32 -16
  100. package/dist/components/layout/app-sidebar.cjs +1 -1
  101. package/dist/components/layout/app-sidebar.d.ts +4 -1
  102. package/dist/components/layout/app-sidebar.js +152 -132
  103. package/dist/components/layout/breadcrumbs.cjs +1 -1
  104. package/dist/components/layout/breadcrumbs.d.ts +2 -1
  105. package/dist/components/layout/breadcrumbs.js +10 -10
  106. package/dist/components/layout/index.cjs +1 -1
  107. package/dist/components/layout/index.d.ts +0 -1
  108. package/dist/components/layout/index.js +4 -5
  109. package/dist/components/layout/public.cjs +1 -1
  110. package/dist/components/layout/public.d.ts +0 -1
  111. package/dist/components/layout/public.js +2 -3
  112. package/dist/components/layout/stat-card.cjs +1 -1
  113. package/dist/components/layout/stat-card.d.ts +8 -1
  114. package/dist/components/layout/stat-card.js +33 -11
  115. package/dist/components/modern/calendar-scheduler.cjs +1 -1
  116. package/dist/components/modern/calendar-scheduler.d.ts +2 -1
  117. package/dist/components/modern/calendar-scheduler.js +21 -12
  118. package/dist/components/modern/index.cjs +1 -1
  119. package/dist/components/modern/index.d.ts +0 -4
  120. package/dist/components/modern/index.js +12 -16
  121. package/dist/components/overlay/alert-dialog.cjs +1 -1
  122. package/dist/components/overlay/alert-dialog.d.ts +15 -1
  123. package/dist/components/overlay/alert-dialog.js +102 -27
  124. package/dist/components/overlay/drawer.cjs +1 -1
  125. package/dist/components/overlay/drawer.d.ts +4 -1
  126. package/dist/components/overlay/drawer.js +20 -17
  127. package/dist/components/patterns/index.cjs +1 -1
  128. package/dist/components/patterns/index.d.ts +0 -1
  129. package/dist/components/patterns/index.js +1 -2
  130. package/dist/components/patterns/public.cjs +1 -1
  131. package/dist/components/patterns/public.d.ts +0 -1
  132. package/dist/components/patterns/public.js +1 -2
  133. package/dist/components/ui/button/index.cjs +1 -1
  134. package/dist/components/ui/button/index.d.ts +3 -1
  135. package/dist/components/ui/button/index.js +7 -5
  136. package/dist/components/ui/checkbox/index.cjs +1 -1
  137. package/dist/components/ui/checkbox/index.d.ts +8 -0
  138. package/dist/components/ui/checkbox/index.js +16 -14
  139. package/dist/components/ui/collapse/index.cjs +1 -1
  140. package/dist/components/ui/collapse/index.d.ts +17 -3
  141. package/dist/components/ui/collapse/index.js +88 -33
  142. package/dist/components/ui/dialog/index.cjs +1 -1
  143. package/dist/components/ui/dialog/index.d.ts +2 -1
  144. package/dist/components/ui/dialog/index.js +6 -4
  145. package/dist/components/ui/dropdown-menu/index.cjs +1 -1
  146. package/dist/components/ui/dropdown-menu/index.d.ts +9 -4
  147. package/dist/components/ui/dropdown-menu/index.js +87 -62
  148. package/dist/index.cjs +1 -1
  149. package/dist/index.js +145 -177
  150. package/dist/public-component-surface.cjs +1 -1
  151. package/dist/public-component-surface.js +0 -80
  152. package/dist/showcase/component-api-schema.cjs +1 -1
  153. package/dist/showcase/component-api-schema.js +2 -2
  154. package/dist/showcase/create-demo.cjs +20 -34
  155. package/dist/showcase/create-demo.js +15 -16
  156. package/dist/showcase/fallback.cjs +3 -3
  157. package/dist/showcase/fallback.js +287 -451
  158. package/dist/showcase/premium/accordion/showcase.cjs +1 -1
  159. package/dist/showcase/premium/accordion/showcase.js +36 -5
  160. package/dist/showcase/premium/action-menu/showcase.cjs +1 -1
  161. package/dist/showcase/premium/action-menu/showcase.js +26 -8
  162. package/dist/showcase/premium/activity-feed/showcase.cjs +1 -1
  163. package/dist/showcase/premium/activity-feed/showcase.js +60 -36
  164. package/dist/showcase/premium/alert/showcase.cjs +1 -1
  165. package/dist/showcase/premium/alert/showcase.js +41 -18
  166. package/dist/showcase/premium/alert-dialog/showcase.cjs +1 -1
  167. package/dist/showcase/premium/alert-dialog/showcase.js +35 -7
  168. package/dist/showcase/premium/async-multi-select/mock.cjs +4 -3
  169. package/dist/showcase/premium/async-multi-select/mock.js +5 -5
  170. package/dist/showcase/premium/async-multi-select/showcase.cjs +1 -1
  171. package/dist/showcase/premium/async-multi-select/showcase.js +4 -3
  172. package/dist/showcase/premium/async-select/mock.cjs +1 -1
  173. package/dist/showcase/premium/async-select/mock.js +1 -1
  174. package/dist/showcase/premium/async-select/showcase.cjs +1 -1
  175. package/dist/showcase/premium/async-select/showcase.js +69 -22
  176. package/dist/showcase/premium/button/showcase.cjs +1 -1
  177. package/dist/showcase/premium/button/showcase.js +49 -3
  178. package/dist/showcase/premium/button-group/showcase.cjs +1 -1
  179. package/dist/showcase/premium/button-group/showcase.js +53 -29
  180. package/dist/showcase/premium/calendar/showcase.cjs +1 -1
  181. package/dist/showcase/premium/calendar/showcase.js +7 -2
  182. package/dist/showcase/premium/carousel/showcase.cjs +1 -1
  183. package/dist/showcase/premium/carousel/showcase.js +95 -47
  184. package/dist/showcase/premium/checkbox/showcase.cjs +1 -1
  185. package/dist/showcase/premium/checkbox/showcase.js +143 -67
  186. package/dist/showcase/premium/clearable-input/mock.cjs +4 -3
  187. package/dist/showcase/premium/clearable-input/mock.js +3 -2
  188. package/dist/showcase/premium/clearable-input/showcase.cjs +1 -1
  189. package/dist/showcase/premium/clearable-input/showcase.js +8 -2
  190. package/dist/showcase/premium/collapse/showcase.cjs +1 -1
  191. package/dist/showcase/premium/collapse/showcase.js +7 -0
  192. package/dist/showcase/premium/combobox/showcase.cjs +1 -1
  193. package/dist/showcase/premium/combobox/showcase.d.ts +2 -1
  194. package/dist/showcase/premium/combobox/showcase.js +56 -47
  195. package/dist/showcase/premium/data-table/showcase.cjs +1 -1
  196. package/dist/showcase/premium/data-table/showcase.js +138 -46
  197. package/dist/showcase/premium/data-table-parts/showcase.cjs +1 -1
  198. package/dist/showcase/premium/data-table-parts/showcase.js +13 -13
  199. package/dist/showcase/premium/date-input/mock.cjs +1 -1
  200. package/dist/showcase/premium/date-input/mock.js +1 -1
  201. package/dist/showcase/premium/date-range-picker/showcase.cjs +1 -1
  202. package/dist/showcase/premium/date-range-picker/showcase.js +32 -1
  203. package/dist/showcase/premium/dropdown-menu/showcase.cjs +1 -1
  204. package/dist/showcase/premium/dropdown-menu/showcase.js +88 -54
  205. package/dist/showcase/premium/form-wrapper/mock.cjs +41 -15
  206. package/dist/showcase/premium/form-wrapper/mock.js +4 -4
  207. package/dist/showcase/premium/form-wrapper/showcase.cjs +1 -1
  208. package/dist/showcase/premium/form-wrapper/showcase.js +77 -28
  209. package/dist/showcase/premium/index.cjs +1 -1
  210. package/dist/showcase/premium/index.js +467 -574
  211. package/dist/showcase/premium/input/mock.cjs +4 -1
  212. package/dist/showcase/premium/input/mock.js +1 -1
  213. package/dist/showcase/premium/masked-input/mock.cjs +1 -1
  214. package/dist/showcase/premium/masked-input/mock.js +1 -1
  215. package/dist/showcase/premium/money-input/mock.cjs +1 -1
  216. package/dist/showcase/premium/money-input/mock.js +1 -1
  217. package/dist/showcase/premium/number-input/mock.cjs +1 -1
  218. package/dist/showcase/premium/number-input/mock.js +1 -1
  219. package/dist/showcase/premium/phone-input/mock.cjs +1 -1
  220. package/dist/showcase/premium/phone-input/mock.js +1 -1
  221. package/dist/showcase/premium/quantity-input/mock.cjs +1 -1
  222. package/dist/showcase/premium/quantity-input/mock.js +1 -1
  223. package/dist/showcase/premium/simple-select/mock.cjs +1 -1
  224. package/dist/showcase/premium/simple-select/mock.js +1 -1
  225. package/dist/showcase/premium/simple-select/showcase.cjs +1 -1
  226. package/dist/showcase/premium/simple-select/showcase.js +4 -2
  227. package/dist/showcase/preview-catalog.cjs +7 -10
  228. package/dist/showcase/preview-catalog.js +7 -7
  229. package/dist/showcase/registry-quality.cjs +1 -1
  230. package/dist/showcase/registry-quality.js +0 -24
  231. package/dist/showcase/registry-specific.cjs +1 -1
  232. package/dist/showcase/registry-specific.js +149 -383
  233. package/dist/showcase/render-registry-preview.cjs +1 -1
  234. package/dist/showcase/render-registry-preview.js +163 -195
  235. package/dist/showcase/site-data.cjs +1 -1
  236. package/dist/showcase/site-data.js +197 -941
  237. package/dist/showcase/supplemental.cjs +1 -1
  238. package/dist/showcase/supplemental.js +1 -1
  239. package/dist/showcase/tembro-registry.json.cjs +1 -1
  240. package/dist/showcase/tembro-registry.json.js +33 -59
  241. package/package.json +1 -1
  242. package/packages/cli/dist/index.cjs +2 -2
  243. package/packages/cli/vendor/src/components/actions/action-menu.tsx +149 -83
  244. package/packages/cli/vendor/src/components/actions/button-group.tsx +141 -33
  245. package/packages/cli/vendor/src/components/actions/copy-button.tsx +21 -16
  246. package/packages/cli/vendor/src/components/calendar/calendar.tsx +223 -88
  247. package/packages/cli/vendor/src/components/calendar/date-picker.tsx +73 -29
  248. package/packages/cli/vendor/src/components/calendar/date-range-picker.tsx +154 -49
  249. package/packages/cli/vendor/src/components/data-table/data-table-toolbar.tsx +71 -50
  250. package/packages/cli/vendor/src/components/data-table/data-table.tsx +65 -53
  251. package/packages/cli/vendor/src/components/data-table/demo.tsx +2 -12
  252. package/packages/cli/vendor/src/components/data-table/public.ts +1 -6
  253. package/packages/cli/vendor/src/components/display/activity-feed.tsx +98 -40
  254. package/packages/cli/vendor/src/components/display/carousel.tsx +88 -2
  255. package/packages/cli/vendor/src/components/display/code-block.tsx +58 -26
  256. package/packages/cli/vendor/src/components/display/comparison-card.tsx +15 -41
  257. package/packages/cli/vendor/src/components/display/data-state.tsx +119 -50
  258. package/packages/cli/vendor/src/components/display/demo.tsx +0 -4
  259. package/packages/cli/vendor/src/components/display/index.ts +0 -8
  260. package/packages/cli/vendor/src/components/feedback/alert.tsx +86 -28
  261. package/packages/cli/vendor/src/components/feedback/index.ts +0 -2
  262. package/packages/cli/vendor/src/components/filters/demo.tsx +0 -1
  263. package/packages/cli/vendor/src/components/filters/filter-bar.tsx +126 -54
  264. package/packages/cli/vendor/src/components/filters/index.ts +0 -1
  265. package/packages/cli/vendor/src/components/form/demo.tsx +0 -1
  266. package/packages/cli/vendor/src/components/form/form-field-shell.tsx +72 -34
  267. package/packages/cli/vendor/src/components/form/form-input.tsx +118 -11
  268. package/packages/cli/vendor/src/components/form/form-select.tsx +26 -3
  269. package/packages/cli/vendor/src/components/form/form-switch.tsx +77 -58
  270. package/packages/cli/vendor/src/components/form/form-textarea.tsx +65 -51
  271. package/packages/cli/vendor/src/components/form/index.ts +0 -1
  272. package/packages/cli/vendor/src/components/form/public.ts +0 -11
  273. package/packages/cli/vendor/src/components/inputs/async-select.tsx +126 -82
  274. package/packages/cli/vendor/src/components/inputs/combobox.tsx +66 -9
  275. package/packages/cli/vendor/src/components/inputs/index.ts +0 -2
  276. package/packages/cli/vendor/src/components/inputs/public.ts +0 -2
  277. package/packages/cli/vendor/src/components/inputs/simple-select.tsx +52 -24
  278. package/packages/cli/vendor/src/components/layout/app-sidebar.tsx +42 -1
  279. package/packages/cli/vendor/src/components/layout/breadcrumbs.tsx +17 -8
  280. package/packages/cli/vendor/src/components/layout/index.ts +0 -1
  281. package/packages/cli/vendor/src/components/layout/public.ts +0 -1
  282. package/packages/cli/vendor/src/components/layout/stat-card.tsx +63 -23
  283. package/packages/cli/vendor/src/components/modern/calendar-scheduler.tsx +32 -22
  284. package/packages/cli/vendor/src/components/modern/index.ts +1 -5
  285. package/packages/cli/vendor/src/components/overlay/alert-dialog.tsx +148 -24
  286. package/packages/cli/vendor/src/components/overlay/drawer.tsx +42 -30
  287. package/packages/cli/vendor/src/components/patterns/index.ts +0 -1
  288. package/packages/cli/vendor/src/components/patterns/public.ts +0 -1
  289. package/packages/cli/vendor/src/components/ui/button/index.tsx +27 -17
  290. package/packages/cli/vendor/src/components/ui/checkbox/index.tsx +22 -5
  291. package/packages/cli/vendor/src/components/ui/collapse/index.tsx +97 -16
  292. package/packages/cli/vendor/src/components/ui/dialog/index.tsx +12 -8
  293. package/packages/cli/vendor/src/components/ui/dropdown-menu/index.tsx +82 -28
  294. package/packages/cli/vendor/src/public-component-surface.ts +0 -16
  295. package/packages/cli/vendor/src/showcase/component-api-schema.ts +2 -2
  296. package/packages/cli/vendor/src/showcase/create-demo.tsx +31 -46
  297. package/packages/cli/vendor/src/showcase/fallback.tsx +83 -263
  298. package/packages/cli/vendor/src/showcase/premium/accordion/showcase.tsx +32 -2
  299. package/packages/cli/vendor/src/showcase/premium/action-menu/showcase.tsx +12 -3
  300. package/packages/cli/vendor/src/showcase/premium/activity-feed/showcase.tsx +15 -2
  301. package/packages/cli/vendor/src/showcase/premium/alert/showcase.tsx +32 -17
  302. package/packages/cli/vendor/src/showcase/premium/alert-dialog/showcase.tsx +28 -3
  303. package/packages/cli/vendor/src/showcase/premium/async-multi-select/mock.ts +6 -5
  304. package/packages/cli/vendor/src/showcase/premium/async-multi-select/showcase.tsx +5 -4
  305. package/packages/cli/vendor/src/showcase/premium/async-select/mock.ts +1 -1
  306. package/packages/cli/vendor/src/showcase/premium/async-select/showcase.tsx +36 -0
  307. package/packages/cli/vendor/src/showcase/premium/button/showcase.tsx +26 -5
  308. package/packages/cli/vendor/src/showcase/premium/button-group/showcase.tsx +20 -3
  309. package/packages/cli/vendor/src/showcase/premium/calendar/showcase.tsx +5 -0
  310. package/packages/cli/vendor/src/showcase/premium/carousel/showcase.tsx +33 -5
  311. package/packages/cli/vendor/src/showcase/premium/checkbox/showcase.tsx +46 -3
  312. package/packages/cli/vendor/src/showcase/premium/clearable-input/mock.ts +5 -3
  313. package/packages/cli/vendor/src/showcase/premium/clearable-input/showcase.tsx +5 -2
  314. package/packages/cli/vendor/src/showcase/premium/collapse/showcase.tsx +4 -0
  315. package/packages/cli/vendor/src/showcase/premium/combobox/showcase.tsx +8 -0
  316. package/packages/cli/vendor/src/showcase/premium/data-table/showcase.tsx +77 -27
  317. package/packages/cli/vendor/src/showcase/premium/data-table-parts/showcase.tsx +11 -11
  318. package/packages/cli/vendor/src/showcase/premium/date-input/mock.ts +1 -1
  319. package/packages/cli/vendor/src/showcase/premium/date-range-picker/showcase.tsx +7 -0
  320. package/packages/cli/vendor/src/showcase/premium/dropdown-menu/showcase.tsx +46 -3
  321. package/packages/cli/vendor/src/showcase/premium/form-wrapper/mock.ts +70 -44
  322. package/packages/cli/vendor/src/showcase/premium/form-wrapper/showcase.tsx +129 -12
  323. package/packages/cli/vendor/src/showcase/premium/index.ts +7 -46
  324. package/packages/cli/vendor/src/showcase/premium/input/mock.ts +2 -2
  325. package/packages/cli/vendor/src/showcase/premium/masked-input/mock.ts +1 -1
  326. package/packages/cli/vendor/src/showcase/premium/money-input/mock.ts +1 -1
  327. package/packages/cli/vendor/src/showcase/premium/number-input/mock.ts +1 -1
  328. package/packages/cli/vendor/src/showcase/premium/phone-input/mock.ts +1 -1
  329. package/packages/cli/vendor/src/showcase/premium/quantity-input/mock.ts +1 -1
  330. package/packages/cli/vendor/src/showcase/premium/simple-select/mock.ts +1 -1
  331. package/packages/cli/vendor/src/showcase/premium/simple-select/showcase.tsx +2 -1
  332. package/packages/cli/vendor/src/showcase/preview-catalog.tsx +7 -7
  333. package/packages/cli/vendor/src/showcase/registry-quality.ts +4 -30
  334. package/packages/cli/vendor/src/showcase/registry-specific.tsx +3 -178
  335. package/packages/cli/vendor/src/showcase/render-registry-preview.tsx +18 -51
  336. package/packages/cli/vendor/src/showcase/site-data.tsx +2443 -2761
  337. package/packages/cli/vendor/src/showcase/supplemental.tsx +2 -42
  338. package/packages/cli/vendor/src/showcase/tembro-registry.json +206 -280
  339. package/registry.json +251 -329
  340. package/dist/components/display/aspect-ratio.cjs +0 -1
  341. package/dist/components/display/aspect-ratio.d.ts +0 -6
  342. package/dist/components/display/aspect-ratio.js +0 -21
  343. package/dist/components/display/entity-card.cjs +0 -1
  344. package/dist/components/display/entity-card.d.ts +0 -18
  345. package/dist/components/display/entity-card.js +0 -61
  346. package/dist/components/display/entity-header.cjs +0 -1
  347. package/dist/components/display/entity-header.d.ts +0 -13
  348. package/dist/components/display/entity-header.js +0 -52
  349. package/dist/components/display/file-card.cjs +0 -1
  350. package/dist/components/display/file-card.d.ts +0 -14
  351. package/dist/components/display/file-card.js +0 -59
  352. package/dist/components/display/float-button.cjs +0 -1
  353. package/dist/components/display/float-button.d.ts +0 -6
  354. package/dist/components/display/float-button.js +0 -20
  355. package/dist/components/display/key-value-card.cjs +0 -1
  356. package/dist/components/display/key-value-card.d.ts +0 -16
  357. package/dist/components/display/key-value-card.js +0 -35
  358. package/dist/components/display/keyboard-shortcut.cjs +0 -1
  359. package/dist/components/display/keyboard-shortcut.d.ts +0 -7
  360. package/dist/components/display/keyboard-shortcut.js +0 -18
  361. package/dist/components/display/skeleton-form.cjs +0 -1
  362. package/dist/components/display/skeleton-form.d.ts +0 -9
  363. package/dist/components/display/skeleton-form.js +0 -31
  364. package/dist/components/display/skeleton-table.cjs +0 -1
  365. package/dist/components/display/skeleton-table.d.ts +0 -9
  366. package/dist/components/display/skeleton-table.js +0 -42
  367. package/dist/components/display/tag-list.cjs +0 -1
  368. package/dist/components/display/tag-list.d.ts +0 -17
  369. package/dist/components/display/tag-list.js +0 -30
  370. package/dist/components/display/watermark.cjs +0 -1
  371. package/dist/components/display/watermark.d.ts +0 -6
  372. package/dist/components/display/watermark.js +0 -23
  373. package/dist/components/feedback/empty-search-state.cjs +0 -1
  374. package/dist/components/feedback/empty-search-state.d.ts +0 -11
  375. package/dist/components/feedback/empty-search-state.js +0 -45
  376. package/dist/components/feedback/empty-state.cjs +0 -1
  377. package/dist/components/feedback/empty-state.d.ts +0 -11
  378. package/dist/components/feedback/empty-state.js +0 -38
  379. package/dist/components/filters/filter-chips.cjs +0 -1
  380. package/dist/components/filters/filter-chips.d.ts +0 -18
  381. package/dist/components/filters/filter-chips.js +0 -61
  382. package/dist/components/form/repeater-field.cjs +0 -1
  383. package/dist/components/form/repeater-field.d.ts +0 -16
  384. package/dist/components/form/repeater-field.js +0 -48
  385. package/dist/components/inputs/cascader.cjs +0 -1
  386. package/dist/components/inputs/cascader.d.ts +0 -13
  387. package/dist/components/inputs/cascader.js +0 -58
  388. package/dist/components/inputs/mention-input.cjs +0 -1
  389. package/dist/components/inputs/mention-input.d.ts +0 -18
  390. package/dist/components/inputs/mention-input.js +0 -96
  391. package/dist/components/layout/stack.cjs +0 -1
  392. package/dist/components/layout/stack.d.ts +0 -23
  393. package/dist/components/layout/stack.js +0 -57
  394. package/dist/components/modern/affix.cjs +0 -1
  395. package/dist/components/modern/affix.d.ts +0 -7
  396. package/dist/components/modern/affix.js +0 -18
  397. package/dist/components/patterns/form-builder-presets.cjs +0 -1
  398. package/dist/components/patterns/form-builder-presets.d.ts +0 -1
  399. package/dist/components/patterns/form-builder-presets.js +0 -2
  400. package/dist/components/patterns/form-builder.cjs +0 -1
  401. package/dist/components/patterns/form-builder.d.ts +0 -109
  402. package/dist/components/patterns/form-builder.js +0 -263
  403. package/dist/showcase/premium/affix/index.cjs +0 -1
  404. package/dist/showcase/premium/affix/index.d.ts +0 -2
  405. package/dist/showcase/premium/affix/index.js +0 -3
  406. package/dist/showcase/premium/affix/mock.cjs +0 -12
  407. package/dist/showcase/premium/affix/mock.d.ts +0 -2
  408. package/dist/showcase/premium/affix/mock.js +0 -15
  409. package/dist/showcase/premium/affix/showcase.cjs +0 -1
  410. package/dist/showcase/premium/affix/showcase.d.ts +0 -2
  411. package/dist/showcase/premium/affix/showcase.js +0 -64
  412. package/dist/showcase/premium/aspect-ratio/index.cjs +0 -1
  413. package/dist/showcase/premium/aspect-ratio/index.d.ts +0 -2
  414. package/dist/showcase/premium/aspect-ratio/index.js +0 -3
  415. package/dist/showcase/premium/aspect-ratio/mock.cjs +0 -11
  416. package/dist/showcase/premium/aspect-ratio/mock.d.ts +0 -2
  417. package/dist/showcase/premium/aspect-ratio/mock.js +0 -26
  418. package/dist/showcase/premium/aspect-ratio/showcase.cjs +0 -1
  419. package/dist/showcase/premium/aspect-ratio/showcase.d.ts +0 -2
  420. package/dist/showcase/premium/aspect-ratio/showcase.js +0 -53
  421. package/dist/showcase/premium/cascader/index.cjs +0 -1
  422. package/dist/showcase/premium/cascader/index.d.ts +0 -2
  423. package/dist/showcase/premium/cascader/index.js +0 -3
  424. package/dist/showcase/premium/cascader/mock.cjs +0 -9
  425. package/dist/showcase/premium/cascader/mock.d.ts +0 -2
  426. package/dist/showcase/premium/cascader/mock.js +0 -19
  427. package/dist/showcase/premium/cascader/showcase.cjs +0 -1
  428. package/dist/showcase/premium/cascader/showcase.d.ts +0 -2
  429. package/dist/showcase/premium/cascader/showcase.js +0 -43
  430. package/dist/showcase/premium/empty-state/index.cjs +0 -1
  431. package/dist/showcase/premium/empty-state/index.d.ts +0 -2
  432. package/dist/showcase/premium/empty-state/index.js +0 -3
  433. package/dist/showcase/premium/empty-state/mock.cjs +0 -14
  434. package/dist/showcase/premium/empty-state/mock.d.ts +0 -2
  435. package/dist/showcase/premium/empty-state/mock.js +0 -31
  436. package/dist/showcase/premium/empty-state/showcase.cjs +0 -1
  437. package/dist/showcase/premium/empty-state/showcase.d.ts +0 -3
  438. package/dist/showcase/premium/empty-state/showcase.js +0 -99
  439. package/dist/showcase/premium/float-button/index.cjs +0 -1
  440. package/dist/showcase/premium/float-button/index.d.ts +0 -2
  441. package/dist/showcase/premium/float-button/index.js +0 -3
  442. package/dist/showcase/premium/float-button/mock.cjs +0 -10
  443. package/dist/showcase/premium/float-button/mock.d.ts +0 -2
  444. package/dist/showcase/premium/float-button/mock.js +0 -15
  445. package/dist/showcase/premium/float-button/showcase.cjs +0 -1
  446. package/dist/showcase/premium/float-button/showcase.d.ts +0 -2
  447. package/dist/showcase/premium/float-button/showcase.js +0 -28
  448. package/dist/showcase/premium/form-builder/index.cjs +0 -1
  449. package/dist/showcase/premium/form-builder/index.d.ts +0 -2
  450. package/dist/showcase/premium/form-builder/index.js +0 -3
  451. package/dist/showcase/premium/form-builder/mock.cjs +0 -57
  452. package/dist/showcase/premium/form-builder/mock.d.ts +0 -2
  453. package/dist/showcase/premium/form-builder/mock.js +0 -40
  454. package/dist/showcase/premium/form-builder/showcase.cjs +0 -1
  455. package/dist/showcase/premium/form-builder/showcase.d.ts +0 -3
  456. package/dist/showcase/premium/form-builder/showcase.js +0 -69
  457. package/dist/showcase/premium/keyboard-shortcut/index.cjs +0 -1
  458. package/dist/showcase/premium/keyboard-shortcut/index.d.ts +0 -2
  459. package/dist/showcase/premium/keyboard-shortcut/index.js +0 -3
  460. package/dist/showcase/premium/keyboard-shortcut/mock.cjs +0 -5
  461. package/dist/showcase/premium/keyboard-shortcut/mock.d.ts +0 -2
  462. package/dist/showcase/premium/keyboard-shortcut/mock.js +0 -26
  463. package/dist/showcase/premium/keyboard-shortcut/showcase.cjs +0 -1
  464. package/dist/showcase/premium/keyboard-shortcut/showcase.d.ts +0 -1
  465. package/dist/showcase/premium/keyboard-shortcut/showcase.js +0 -64
  466. package/dist/showcase/premium/mention-input/index.cjs +0 -1
  467. package/dist/showcase/premium/mention-input/index.d.ts +0 -2
  468. package/dist/showcase/premium/mention-input/index.js +0 -3
  469. package/dist/showcase/premium/mention-input/mock.cjs +0 -11
  470. package/dist/showcase/premium/mention-input/mock.d.ts +0 -2
  471. package/dist/showcase/premium/mention-input/mock.js +0 -19
  472. package/dist/showcase/premium/mention-input/showcase.cjs +0 -1
  473. package/dist/showcase/premium/mention-input/showcase.d.ts +0 -2
  474. package/dist/showcase/premium/mention-input/showcase.js +0 -35
  475. package/dist/showcase/premium/skeleton-form/index.cjs +0 -1
  476. package/dist/showcase/premium/skeleton-form/index.d.ts +0 -2
  477. package/dist/showcase/premium/skeleton-form/index.js +0 -3
  478. package/dist/showcase/premium/skeleton-form/mock.cjs +0 -5
  479. package/dist/showcase/premium/skeleton-form/mock.d.ts +0 -2
  480. package/dist/showcase/premium/skeleton-form/mock.js +0 -19
  481. package/dist/showcase/premium/skeleton-form/showcase.cjs +0 -1
  482. package/dist/showcase/premium/skeleton-form/showcase.d.ts +0 -2
  483. package/dist/showcase/premium/skeleton-form/showcase.js +0 -52
  484. package/dist/showcase/premium/skeleton-table/index.cjs +0 -1
  485. package/dist/showcase/premium/skeleton-table/index.d.ts +0 -2
  486. package/dist/showcase/premium/skeleton-table/index.js +0 -3
  487. package/dist/showcase/premium/skeleton-table/mock.cjs +0 -5
  488. package/dist/showcase/premium/skeleton-table/mock.d.ts +0 -2
  489. package/dist/showcase/premium/skeleton-table/mock.js +0 -19
  490. package/dist/showcase/premium/skeleton-table/showcase.cjs +0 -1
  491. package/dist/showcase/premium/skeleton-table/showcase.d.ts +0 -2
  492. package/dist/showcase/premium/skeleton-table/showcase.js +0 -59
  493. package/dist/showcase/premium/stack/index.cjs +0 -1
  494. package/dist/showcase/premium/stack/index.d.ts +0 -2
  495. package/dist/showcase/premium/stack/index.js +0 -3
  496. package/dist/showcase/premium/stack/mock.cjs +0 -10
  497. package/dist/showcase/premium/stack/mock.d.ts +0 -2
  498. package/dist/showcase/premium/stack/mock.js +0 -26
  499. package/dist/showcase/premium/stack/showcase.cjs +0 -1
  500. package/dist/showcase/premium/stack/showcase.d.ts +0 -1
  501. package/dist/showcase/premium/stack/showcase.js +0 -47
  502. package/dist/showcase/premium/tag-list/index.cjs +0 -1
  503. package/dist/showcase/premium/tag-list/index.d.ts +0 -2
  504. package/dist/showcase/premium/tag-list/index.js +0 -3
  505. package/dist/showcase/premium/tag-list/mock.cjs +0 -12
  506. package/dist/showcase/premium/tag-list/mock.d.ts +0 -2
  507. package/dist/showcase/premium/tag-list/mock.js +0 -26
  508. package/dist/showcase/premium/tag-list/showcase.cjs +0 -1
  509. package/dist/showcase/premium/tag-list/showcase.d.ts +0 -2
  510. package/dist/showcase/premium/tag-list/showcase.js +0 -83
  511. package/dist/showcase/premium/watermark/index.cjs +0 -1
  512. package/dist/showcase/premium/watermark/index.d.ts +0 -2
  513. package/dist/showcase/premium/watermark/index.js +0 -3
  514. package/dist/showcase/premium/watermark/mock.cjs +0 -11
  515. package/dist/showcase/premium/watermark/mock.d.ts +0 -2
  516. package/dist/showcase/premium/watermark/mock.js +0 -26
  517. package/dist/showcase/premium/watermark/showcase.cjs +0 -1
  518. package/dist/showcase/premium/watermark/showcase.d.ts +0 -2
  519. package/dist/showcase/premium/watermark/showcase.js +0 -34
  520. package/packages/cli/vendor/src/components/display/aspect-ratio.tsx +0 -22
  521. package/packages/cli/vendor/src/components/display/entity-card.tsx +0 -80
  522. package/packages/cli/vendor/src/components/display/entity-header.tsx +0 -80
  523. package/packages/cli/vendor/src/components/display/file-card.tsx +0 -61
  524. package/packages/cli/vendor/src/components/display/float-button.tsx +0 -27
  525. package/packages/cli/vendor/src/components/display/key-value-card.tsx +0 -50
  526. package/packages/cli/vendor/src/components/display/keyboard-shortcut.tsx +0 -31
  527. package/packages/cli/vendor/src/components/display/skeleton-form.tsx +0 -51
  528. package/packages/cli/vendor/src/components/display/skeleton-table.tsx +0 -59
  529. package/packages/cli/vendor/src/components/display/tag-list.tsx +0 -52
  530. package/packages/cli/vendor/src/components/display/watermark.tsx +0 -20
  531. package/packages/cli/vendor/src/components/feedback/empty-search-state.tsx +0 -65
  532. package/packages/cli/vendor/src/components/feedback/empty-state.tsx +0 -56
  533. package/packages/cli/vendor/src/components/filters/filter-chips.tsx +0 -89
  534. package/packages/cli/vendor/src/components/form/repeater-field.tsx +0 -93
  535. package/packages/cli/vendor/src/components/inputs/cascader.tsx +0 -41
  536. package/packages/cli/vendor/src/components/inputs/mention-input.tsx +0 -162
  537. package/packages/cli/vendor/src/components/layout/stack.tsx +0 -106
  538. package/packages/cli/vendor/src/components/modern/affix.tsx +0 -21
  539. package/packages/cli/vendor/src/components/patterns/form-builder-presets.ts +0 -13
  540. package/packages/cli/vendor/src/components/patterns/form-builder.tsx +0 -443
  541. package/packages/cli/vendor/src/showcase/premium/affix/index.ts +0 -3
  542. package/packages/cli/vendor/src/showcase/premium/affix/mock.ts +0 -26
  543. package/packages/cli/vendor/src/showcase/premium/affix/showcase.tsx +0 -37
  544. package/packages/cli/vendor/src/showcase/premium/aspect-ratio/index.ts +0 -2
  545. package/packages/cli/vendor/src/showcase/premium/aspect-ratio/mock.ts +0 -26
  546. package/packages/cli/vendor/src/showcase/premium/aspect-ratio/showcase.tsx +0 -37
  547. package/packages/cli/vendor/src/showcase/premium/cascader/index.ts +0 -3
  548. package/packages/cli/vendor/src/showcase/premium/cascader/mock.ts +0 -24
  549. package/packages/cli/vendor/src/showcase/premium/cascader/showcase.tsx +0 -20
  550. package/packages/cli/vendor/src/showcase/premium/empty-state/index.ts +0 -2
  551. package/packages/cli/vendor/src/showcase/premium/empty-state/mock.ts +0 -30
  552. package/packages/cli/vendor/src/showcase/premium/empty-state/showcase.tsx +0 -65
  553. package/packages/cli/vendor/src/showcase/premium/float-button/index.ts +0 -3
  554. package/packages/cli/vendor/src/showcase/premium/float-button/mock.ts +0 -24
  555. package/packages/cli/vendor/src/showcase/premium/float-button/showcase.tsx +0 -21
  556. package/packages/cli/vendor/src/showcase/premium/form-builder/index.ts +0 -2
  557. package/packages/cli/vendor/src/showcase/premium/form-builder/mock.ts +0 -79
  558. package/packages/cli/vendor/src/showcase/premium/form-builder/showcase.tsx +0 -55
  559. package/packages/cli/vendor/src/showcase/premium/keyboard-shortcut/index.ts +0 -2
  560. package/packages/cli/vendor/src/showcase/premium/keyboard-shortcut/mock.ts +0 -20
  561. package/packages/cli/vendor/src/showcase/premium/keyboard-shortcut/showcase.tsx +0 -42
  562. package/packages/cli/vendor/src/showcase/premium/mention-input/index.ts +0 -3
  563. package/packages/cli/vendor/src/showcase/premium/mention-input/mock.ts +0 -26
  564. package/packages/cli/vendor/src/showcase/premium/mention-input/showcase.tsx +0 -27
  565. package/packages/cli/vendor/src/showcase/premium/skeleton-form/index.ts +0 -3
  566. package/packages/cli/vendor/src/showcase/premium/skeleton-form/mock.ts +0 -20
  567. package/packages/cli/vendor/src/showcase/premium/skeleton-form/showcase.tsx +0 -34
  568. package/packages/cli/vendor/src/showcase/premium/skeleton-table/index.ts +0 -3
  569. package/packages/cli/vendor/src/showcase/premium/skeleton-table/mock.ts +0 -20
  570. package/packages/cli/vendor/src/showcase/premium/skeleton-table/showcase.tsx +0 -37
  571. package/packages/cli/vendor/src/showcase/premium/stack/index.ts +0 -2
  572. package/packages/cli/vendor/src/showcase/premium/stack/mock.ts +0 -25
  573. package/packages/cli/vendor/src/showcase/premium/stack/showcase.tsx +0 -22
  574. package/packages/cli/vendor/src/showcase/premium/tag-list/index.ts +0 -2
  575. package/packages/cli/vendor/src/showcase/premium/tag-list/mock.ts +0 -27
  576. package/packages/cli/vendor/src/showcase/premium/tag-list/showcase.tsx +0 -55
  577. package/packages/cli/vendor/src/showcase/premium/watermark/index.ts +0 -2
  578. package/packages/cli/vendor/src/showcase/premium/watermark/mock.ts +0 -26
  579. package/packages/cli/vendor/src/showcase/premium/watermark/showcase.tsx +0 -26
@@ -1,3 +1,5 @@
1
+ import * as React from "react"
2
+
1
3
  import { Badge, Button, Combobox } from "@/index"
2
4
 
3
5
  import type { ComponentDemoProps } from "../types"
@@ -15,6 +17,7 @@ const teammateOptions = [
15
17
  export function ComboboxShowcase({ state, setState }: ComponentDemoProps) {
16
18
  const currentValue = teammateOptions.some((option) => option.value === state.selectValue) ? state.selectValue : "azamat"
17
19
  const currentOption = teammateOptions.find((option) => option.value === currentValue) ?? teammateOptions[0]
20
+ const [searchValue, setSearchValue] = React.useState("")
18
21
 
19
22
  return (
20
23
  <div className="space-y-5">
@@ -45,6 +48,10 @@ export function ComboboxShowcase({ state, setState }: ComponentDemoProps) {
45
48
  onValueChange={(value) => setState({ selectValue: value ?? "azamat" })}
46
49
  placeholder="Choose teammate"
47
50
  searchPlaceholder="Search teammate..."
51
+ clearable
52
+ allowDeselect
53
+ showSelectedDescription
54
+ onSearchChange={setSearchValue}
48
55
  />
49
56
  </div>
50
57
  </div>
@@ -68,6 +75,7 @@ export function ComboboxShowcase({ state, setState }: ComponentDemoProps) {
68
75
  <p className="mt-2 text-sm leading-6 aui-text-muted">
69
76
  Use quick actions below to verify that the value stays controlled outside the dropdown itself.
70
77
  </p>
78
+ <p className="mt-2 text-sm leading-6 aui-text-muted">Search query: {searchValue || "empty"}</p>
71
79
  </div>
72
80
  <div className="flex flex-wrap gap-2">
73
81
  <Button type="button" size="sm" onClick={() => setState({ selectValue: "nodira" })}>
@@ -5,13 +5,12 @@ import {
5
5
  Badge,
6
6
  Button,
7
7
  DataTable,
8
- DataTableBulkActions,
9
8
  DataTableColumnVisibilityMenu,
10
9
  DataTableSortableHeader,
11
- SearchInput,
12
- createDataTableActionsColumn,
13
- createDataTableSelectColumn,
10
+ SimpleSelect,
14
11
  } from "@/index"
12
+ import { createDataTableActionsColumn } from "@/components/data-table/data-table-actions-column"
13
+ import { createDataTableSelectColumn } from "@/components/data-table/data-table-select-column"
15
14
 
16
15
  type DataTableDemoRow = {
17
16
  invoice: string
@@ -26,17 +25,25 @@ const rows: DataTableDemoRow[] = [
26
25
  { invoice: "INV-4821", customer: "Acme Studio", owner: "Azamat", amount: "$12,420", status: "Paid", updatedAt: "2m ago" },
27
26
  { invoice: "INV-4822", customer: "Northwind", owner: "Madina", amount: "$8,120", status: "Review", updatedAt: "10m ago" },
28
27
  { invoice: "INV-4823", customer: "Globex", owner: "Jasur", amount: "$4,880", status: "Draft", updatedAt: "22m ago" },
28
+ { invoice: "INV-4824", customer: "Pixel Union", owner: "Azamat", amount: "$17,300", status: "Paid", updatedAt: "44m ago" },
29
+ { invoice: "INV-4825", customer: "Meridian Labs", owner: "Madina", amount: "$2,180", status: "Review", updatedAt: "1h ago" },
30
+ { invoice: "INV-4826", customer: "Orbit Cloud", owner: "Jasur", amount: "$9,040", status: "Draft", updatedAt: "3h ago" },
29
31
  ]
30
32
 
31
33
  export function DataTableShowcase() {
32
34
  const [search, setSearch] = React.useState("")
33
- const [selectedCount, setSelectedCount] = React.useState(0)
35
+ const [statusFilter, setStatusFilter] = React.useState("all")
36
+ const [ownerFilter, setOwnerFilter] = React.useState("all")
37
+ const [rowSelection, setRowSelection] = React.useState<Record<string, boolean>>({})
34
38
 
35
39
  const filteredRows = rows.filter((row) => {
36
40
  const normalized = search.trim().toLowerCase()
37
- if (!normalized) return true
38
- return `${row.invoice} ${row.customer} ${row.owner} ${row.amount}`.toLowerCase().includes(normalized)
41
+ const matchesSearch = !normalized || `${row.invoice} ${row.customer} ${row.owner} ${row.amount}`.toLowerCase().includes(normalized)
42
+ const matchesStatus = statusFilter === "all" || row.status === statusFilter
43
+ const matchesOwner = ownerFilter === "all" || row.owner === ownerFilter
44
+ return matchesSearch && matchesStatus && matchesOwner
39
45
  })
46
+ const selectedCount = Object.values(rowSelection).filter(Boolean).length
40
47
 
41
48
  const columns = React.useMemo<ColumnDef<DataTableDemoRow>[]>(
42
49
  () => [
@@ -94,7 +101,7 @@ export function DataTableShowcase() {
94
101
  </div>
95
102
  <div className="rounded-[18px] border border-[color:var(--aui-divider)] px-4 py-3">
96
103
  <p className="text-xs font-semibold uppercase tracking-[0.22em] aui-text-muted">State</p>
97
- <p className="mt-2 text-lg font-semibold aui-text-strong">Live</p>
104
+ <p className="mt-2 text-lg font-semibold aui-text-strong">{search || statusFilter !== "all" || ownerFilter !== "all" ? "Filtered" : "Live"}</p>
98
105
  </div>
99
106
  </div>
100
107
  </div>
@@ -104,24 +111,67 @@ export function DataTableShowcase() {
104
111
  data={filteredRows}
105
112
  getRowId={(row) => row.invoice}
106
113
  enableRowSelection
107
- toolbarProps={(table) => ({
108
- title: "Invoices",
109
- description: "Compact premium preview of the real DataTable surface.",
110
- search: <SearchInput value={search} onValueChange={setSearch} placeholder="Search invoice, customer..." />,
111
- actions: (
112
- <div className="flex items-center gap-2">
113
- <DataTableColumnVisibilityMenu table={table} />
114
- <DataTableBulkActions
115
- rows={filteredRows.slice(0, selectedCount)}
116
- actions={[{ key: "export", label: "Export selected", onSelect: () => undefined }]}
117
- onClearSelection={() => setSelectedCount(0)}
118
- />
119
- </div>
120
- ),
121
- })}
114
+ rowSelection={rowSelection}
115
+ title="Invoices"
116
+ description="Search, filter, visibility controls, bulk actions and row actions should stay inside one install-ready table surface."
117
+ features={{
118
+ search: true,
119
+ columnVisibility: true,
120
+ bulkActions: true,
121
+ }}
122
+ search={{
123
+ value: search,
124
+ onValueChange: setSearch,
125
+ placeholder: "Search invoice, customer...",
126
+ clearable: true,
127
+ }}
128
+ filters={
129
+ <>
130
+ <SimpleSelect
131
+ value={statusFilter}
132
+ onValueChange={(value) => setStatusFilter(value ?? "all")}
133
+ options={[
134
+ { value: "all", label: "All statuses" },
135
+ { value: "Paid", label: "Paid" },
136
+ { value: "Review", label: "Review" },
137
+ { value: "Draft", label: "Draft" },
138
+ ]}
139
+ triggerClassName="min-w-40"
140
+ />
141
+ <SimpleSelect
142
+ value={ownerFilter}
143
+ onValueChange={(value) => setOwnerFilter(value ?? "all")}
144
+ options={[
145
+ { value: "all", label: "All owners" },
146
+ { value: "Azamat", label: "Azamat" },
147
+ { value: "Madina", label: "Madina" },
148
+ { value: "Jasur", label: "Jasur" },
149
+ ]}
150
+ triggerClassName="min-w-36"
151
+ />
152
+ </>
153
+ }
154
+ summary={
155
+ <>
156
+ <Badge variant="outline">{filteredRows.length} rows</Badge>
157
+ <Badge variant="outline">{selectedCount} selected</Badge>
158
+ <Badge variant="outline">
159
+ {search || statusFilter !== "all" || ownerFilter !== "all" ? "Filtered view" : "Live view"}
160
+ </Badge>
161
+ </>
162
+ }
163
+ toolbarActions={({ table }) => (
164
+ <div className="flex items-center gap-2">
165
+ <DataTableColumnVisibilityMenu table={table} />
166
+ <Button size="sm" variant="outline">Export</Button>
167
+ </div>
168
+ )}
169
+ bulkActions={[
170
+ { key: "export", label: "Export selected", onSelect: () => undefined },
171
+ { key: "archive", label: "Archive selected", destructive: true, onSelect: () => undefined },
172
+ ]}
122
173
  onRowSelectionChange={(selection) => {
123
- const value = typeof selection === "function" ? selection({}) : selection
124
- setSelectedCount(Object.values(value).filter(Boolean).length)
174
+ setRowSelection((current) => (typeof selection === "function" ? selection(current) : selection))
125
175
  }}
126
176
  onRowClick={() => undefined}
127
177
  renderMobileCard={(row) => (
@@ -139,8 +189,8 @@ export function DataTableShowcase() {
139
189
  pageIndex: 0,
140
190
  pageSize: 5,
141
191
  rowCount: filteredRows.length,
142
- pageCount: 1,
143
- pageSizeOptions: [5],
192
+ pageCount: Math.max(Math.ceil(filteredRows.length / 5), 1),
193
+ pageSizeOptions: [5, 10],
144
194
  onPageChange: () => undefined,
145
195
  onPageSizeChange: () => undefined,
146
196
  }}
@@ -1,5 +1,5 @@
1
1
  import * as React from "react"
2
- import type { ColumnDef, RowSelectionState } from "@tanstack/react-table"
2
+ import type { ColumnDef, Row, RowSelectionState } from "@tanstack/react-table"
3
3
 
4
4
  import {
5
5
  Badge,
@@ -7,13 +7,13 @@ import {
7
7
  DataTable,
8
8
  DataTableBulkActions,
9
9
  DataTableColumnVisibilityMenu,
10
- DataTableSavedFilters,
11
10
  DataTableSortableHeader,
12
11
  DataTableViewPresets,
13
12
  SearchInput,
14
- createDataTableActionsColumn,
15
- createDataTableSelectColumn,
16
13
  } from "@/index"
14
+ import { createDataTableActionsColumn } from "@/components/data-table/data-table-actions-column"
15
+ import { DataTableSavedFilters } from "@/components/data-table/data-table-saved-filters"
16
+ import { createDataTableSelectColumn } from "@/components/data-table/data-table-select-column"
17
17
 
18
18
  import { buildDataTableDemoRows, dataTableDemoPresets, type DataTableDemoRow } from "./data"
19
19
 
@@ -40,9 +40,9 @@ function buildColumns(setNotes: (value: string) => void): ColumnDef<DataTableDem
40
40
  accessorKey: "customer",
41
41
  header: ({ column }) => <DataTableSortableHeader column={column}>Customer</DataTableSortableHeader>,
42
42
  },
43
- {
44
- accessorKey: "status",
45
- header: "Status",
43
+ {
44
+ accessorKey: "status",
45
+ header: "Status",
46
46
  cell: ({ row }) => (
47
47
  <Badge variant={row.original.status === "Paid" ? "secondary" : row.original.status === "Review" ? "outline" : "destructive"}>
48
48
  {row.original.status}
@@ -54,7 +54,7 @@ function buildColumns(setNotes: (value: string) => void): ColumnDef<DataTableDem
54
54
  header: ({ column }) => <DataTableSortableHeader column={column}>Amount</DataTableSortableHeader>,
55
55
  },
56
56
  createDataTableActionsColumn<DataTableDemoRow>({
57
- getActions: (_row, original) => [
57
+ getActions: (_row: Row<DataTableDemoRow>, original: DataTableDemoRow) => [
58
58
  { key: "open", label: "Open detail", onSelect: () => setNotes(`${original.invoice} opened from row action`) },
59
59
  { key: "archive", label: "Archive", destructive: true, onSelect: () => setNotes(`${original.invoice} sent to archive`) },
60
60
  ],
@@ -129,9 +129,9 @@ export function DataTablePartShowcase({
129
129
  { id: "risk", name: "At risk", filters: {} },
130
130
  ]}
131
131
  activeFilterId={view === "all" ? "all" : view === "finance" ? "finance" : "risk"}
132
- onSelectFilter={(id) => setView(id === "finance" ? "finance" : id === "risk" ? "at-risk" : "all")}
133
- onSaveFilter={(name) => setNotes(`Saved filter created: ${name}`)}
134
- onDeleteFilter={(id) => setNotes(`Saved filter deleted: ${id}`)}
132
+ onSelectFilter={(id: string) => setView(id === "finance" ? "finance" : id === "risk" ? "at-risk" : "all")}
133
+ onSaveFilter={(name: string) => setNotes(`Saved filter created: ${name}`)}
134
+ onDeleteFilter={(id: string) => setNotes(`Saved filter deleted: ${id}`)}
135
135
  onClearFilters={() => setView("all")}
136
136
  />
137
137
  </div>
@@ -2,7 +2,7 @@ import type { ComponentDemoMock } from "../types"
2
2
 
3
3
  export const dateInputMock: ComponentDemoMock = {
4
4
  code: `import { useState } from "react"
5
- import { DateInput } from "@/index"
5
+ import { DateInput } from "tembro"
6
6
 
7
7
  export function Example() {
8
8
  const [value, setValue] = useState("2026-06-19")
@@ -15,6 +15,13 @@ export function DateRangePickerShowcase({ mode }: ComponentDemoProps) {
15
15
  min="2026-06-01"
16
16
  max="2026-12-31"
17
17
  disabledDates={["2026-06-21", "2026-06-22"]}
18
+ closeOnPresetSelect
19
+ presets={[
20
+ { label: "This week", value: { from: "2026-06-01", to: "2026-06-07" } },
21
+ { label: "Next 14 days", value: { from: "2026-06-08", to: "2026-06-20" } },
22
+ { label: "Q3", value: { from: "2026-07-01", to: "2026-09-30" } },
23
+ ]}
24
+ labels={{ placeholder: "Choose reporting range", apply: "Apply range", clear: "Clear", start: "Start", end: "End" }}
18
25
  />
19
26
  <p className="aui-text-subtle text-sm">Range: {value.from} → {value.to}</p>
20
27
  <p className="aui-text-muted text-sm">Mode: {mode}</p>
@@ -7,11 +7,15 @@ import {
7
7
  DropdownMenuContent,
8
8
  DropdownMenuGroup,
9
9
  DropdownMenuItem,
10
+ DropdownMenuItemDescription,
10
11
  DropdownMenuLabel,
11
12
  DropdownMenuRadioGroup,
12
13
  DropdownMenuRadioItem,
13
14
  DropdownMenuSeparator,
14
15
  DropdownMenuShortcut,
16
+ DropdownMenuSub,
17
+ DropdownMenuSubContent,
18
+ DropdownMenuSubTrigger,
15
19
  DropdownMenuTrigger,
16
20
  } from "@/index"
17
21
 
@@ -22,6 +26,8 @@ const panelClass = "border-t border-[color:var(--aui-divider)] py-6"
22
26
  export function DropdownMenuShowcase({ mode }: ComponentDemoProps) {
23
27
  const [status, setStatus] = React.useState("private")
24
28
  const [notifications, setNotifications] = React.useState(true)
29
+ const [compact, setCompact] = React.useState(false)
30
+ const [keepOpen, setKeepOpen] = React.useState(false)
25
31
 
26
32
  return (
27
33
  <div className="space-y-0">
@@ -46,6 +52,10 @@ export function DropdownMenuShowcase({ mode }: ComponentDemoProps) {
46
52
  <p className="text-xs font-semibold uppercase tracking-[0.22em] aui-text-muted">Route</p>
47
53
  <p className="mt-2 text-lg font-semibold aui-text-strong">{mode === "playground" ? "Interactive" : "Docs"}</p>
48
54
  </div>
55
+ <div className="rounded-[18px] border border-[color:var(--aui-divider)] px-4 py-3">
56
+ <p className="text-xs font-semibold uppercase tracking-[0.22em] aui-text-muted">Menu close</p>
57
+ <p className="mt-2 text-lg font-semibold aui-text-strong">{keepOpen ? "Pinned open" : "Auto close"}</p>
58
+ </div>
49
59
  </div>
50
60
  </div>
51
61
  </section>
@@ -63,12 +73,45 @@ export function DropdownMenuShowcase({ mode }: ComponentDemoProps) {
63
73
  </DropdownMenuTrigger>
64
74
  <DropdownMenuContent>
65
75
  <DropdownMenuLabel>Workspace actions</DropdownMenuLabel>
66
- <DropdownMenuItem>Open workspace</DropdownMenuItem>
67
- <DropdownMenuItem disabled>Delete from archive</DropdownMenuItem>
76
+ <DropdownMenuItem>
77
+ <span className="grid gap-0.5">
78
+ <span>Open workspace</span>
79
+ <DropdownMenuItemDescription>Go to the main dashboard route</DropdownMenuItemDescription>
80
+ </span>
81
+ <DropdownMenuShortcut>↵</DropdownMenuShortcut>
82
+ </DropdownMenuItem>
83
+ <DropdownMenuItem disabled>
84
+ <span className="grid gap-0.5">
85
+ <span>Delete from archive</span>
86
+ <DropdownMenuItemDescription>Locked until retention expires</DropdownMenuItemDescription>
87
+ </span>
88
+ </DropdownMenuItem>
68
89
  <DropdownMenuSeparator />
69
- <DropdownMenuCheckboxItem checked={notifications} onCheckedChange={(value) => setNotifications(Boolean(value))}>
90
+ <DropdownMenuCheckboxItem
91
+ checked={notifications}
92
+ closeOnSelect={!keepOpen}
93
+ onCheckedChange={(value) => setNotifications(Boolean(value))}
94
+ >
70
95
  Notification access
71
96
  </DropdownMenuCheckboxItem>
97
+ <DropdownMenuCheckboxItem
98
+ checked={compact}
99
+ closeOnSelect={!keepOpen}
100
+ onCheckedChange={(value) => setCompact(Boolean(value))}
101
+ >
102
+ Compact density
103
+ </DropdownMenuCheckboxItem>
104
+ <DropdownMenuCheckboxItem checked={keepOpen} closeOnSelect={false} onCheckedChange={(value) => setKeepOpen(Boolean(value))}>
105
+ Keep menu open
106
+ </DropdownMenuCheckboxItem>
107
+ <DropdownMenuSub>
108
+ <DropdownMenuSubTrigger>Export</DropdownMenuSubTrigger>
109
+ <DropdownMenuSubContent>
110
+ <DropdownMenuItem>CSV</DropdownMenuItem>
111
+ <DropdownMenuItem>PDF summary</DropdownMenuItem>
112
+ <DropdownMenuItem>JSON payload</DropdownMenuItem>
113
+ </DropdownMenuSubContent>
114
+ </DropdownMenuSub>
72
115
  <DropdownMenuGroup>
73
116
  <DropdownMenuRadioGroup value={status} onValueChange={(value) => setStatus(value)}>
74
117
  <DropdownMenuRadioItem value="public">Public</DropdownMenuRadioItem>
@@ -1,11 +1,11 @@
1
1
  import type { ComponentDemoMock } from "../types"
2
2
 
3
- export const formRHFWrapperMock: ComponentDemoMock = {
4
- code: `import { useForm } from "react-hook-form"
5
- import { Button, FormFieldShell, FormInput, FormSwitch, FormTextarea } from "@/index"
6
-
7
- type DemoValues = {
8
- name: string
3
+ export const formRHFWrapperMock: ComponentDemoMock = {
4
+ code: `import { useForm } from "react-hook-form"
5
+ import { Button, FormInput, FormSwitch, FormTextarea } from "tembro"
6
+
7
+ type DemoValues = {
8
+ name: string
9
9
  ownerPhone: string
10
10
  price: number | null
11
11
  notes: string
@@ -27,24 +27,22 @@ export function Example() {
27
27
  console.log(values)
28
28
  })
29
29
 
30
- return (
31
- <form onSubmit={onSubmit} className="space-y-4">
32
- <FormFieldShell label="Workspace name" required>
33
- <FormInput
34
- control={form.control}
35
- name="name"
36
- label="Workspace name"
37
- required
38
- placeholder="Write a workspace title"
39
- rules={{
40
- required: "Workspace name is required",
41
- minLength: { value: 3, message: "At least 3 characters" },
42
- }}
43
- />
44
- </FormFieldShell>
45
-
46
- <FormInput
47
- control={form.control}
30
+ return (
31
+ <form onSubmit={onSubmit} className="space-y-4">
32
+ <FormInput
33
+ control={form.control}
34
+ name="name"
35
+ label="Workspace name"
36
+ required
37
+ placeholder="Write a workspace title"
38
+ rules={{
39
+ required: "Workspace name is required",
40
+ minLength: { value: 3, message: "At least 3 characters" },
41
+ }}
42
+ />
43
+
44
+ <FormInput
45
+ control={form.control}
48
46
  name="ownerPhone"
49
47
  kind="phone"
50
48
  label="Owner phone"
@@ -75,10 +73,10 @@ export function Example() {
75
73
 
76
74
  <Button type="submit">Save</Button>
77
75
  </form>
78
- )`
79
- ,
80
- htmlCode: '<form><label for="workspace">Workspace</label><input id="workspace" value="Azamat UI" /></form>',
81
- cliCommand: "npx tembro add form-wrapper",
76
+ )`
77
+ ,
78
+ htmlCode: '<form><label for="workspace">Workspace</label><input id="workspace" value="Azamat UI" /></form>',
79
+ cliCommand: "npx tembro add form-input form-textarea form-switch",
82
80
  highlights: ["control + name contract", "Universal `kind` variants", "Error display and required markers", "Consistent wrapper shell behavior"],
83
81
  relatedBlockSlugs: ["settings-form", "crm-dashboard", "users-table"],
84
82
  scenarios: [
@@ -96,17 +94,31 @@ export function Example() {
96
94
  ],
97
95
  }
98
96
 
99
- export const formSelectMock: ComponentDemoMock = {
100
- code: `import { useForm } from "react-hook-form"
101
- import { Button, FormSelect } from "tembro"
102
-
103
- const statusOptions = [
104
- { label: "Draft", value: "draft" },
105
- { label: "Review", value: "review" },
106
- { label: "Live", value: "live" },
107
- ]
108
-
109
- export function Example() {
97
+ export const formSelectMock: ComponentDemoMock = {
98
+ code: `import { useForm } from "react-hook-form"
99
+ import { Button, FormSelect } from "tembro"
100
+
101
+ const statusOptions = [
102
+ { label: "Draft", value: "draft" },
103
+ { label: "Review", value: "review" },
104
+ { label: "Live", value: "live" },
105
+ ]
106
+
107
+ const workspaceOptions = [
108
+ { value: "workspace-alpha", label: "Workspace Alpha", description: "Core design system route" },
109
+ { value: "workspace-beta", label: "Workspace Beta", description: "CRM rollout workspace" },
110
+ ]
111
+
112
+ async function loadWorkspaces(search: string) {
113
+ const query = search.trim().toLowerCase()
114
+ return workspaceOptions.filter((option) => !query || option.label.toLowerCase().includes(query))
115
+ }
116
+
117
+ async function loadWorkspace(value: string) {
118
+ return workspaceOptions.find((option) => option.value === value) ?? null
119
+ }
120
+
121
+ export function Example() {
110
122
  const form = useForm({
111
123
  defaultValues: {
112
124
  status: "review",
@@ -152,11 +164,25 @@ export function Example() {
152
164
  ],
153
165
  }
154
166
 
155
- export const formAsyncSelectMock: ComponentDemoMock = {
156
- code: `import { useForm } from "react-hook-form"
157
- import { Button, FormAsyncSelect } from "tembro"
158
-
159
- export function Example() {
167
+ export const formAsyncSelectMock: ComponentDemoMock = {
168
+ code: `import { useForm } from "react-hook-form"
169
+ import { Button, FormAsyncSelect } from "tembro"
170
+
171
+ const workspaceOptions = [
172
+ { value: "workspace-alpha", label: "Workspace Alpha", description: "Core design system route" },
173
+ { value: "workspace-beta", label: "Workspace Beta", description: "CRM rollout workspace" },
174
+ ]
175
+
176
+ async function loadWorkspaces(search: string) {
177
+ const query = search.trim().toLowerCase()
178
+ return workspaceOptions.filter((option) => !query || option.label.toLowerCase().includes(query))
179
+ }
180
+
181
+ async function loadWorkspace(value: string) {
182
+ return workspaceOptions.find((option) => option.value === value) ?? null
183
+ }
184
+
185
+ export function Example() {
160
186
  const form = useForm({
161
187
  defaultValues: {
162
188
  ownerId: "workspace-alpha",