tembro 2.0.4 → 2.0.6

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 (401) 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-pagination.cjs +1 -1
  20. package/dist/components/data-table/data-table-pagination.js +4 -4
  21. package/dist/components/data-table/data-table-toolbar.cjs +1 -1
  22. package/dist/components/data-table/data-table-toolbar.d.ts +5 -1
  23. package/dist/components/data-table/data-table-toolbar.js +36 -23
  24. package/dist/components/data-table/data-table.cjs +1 -1
  25. package/dist/components/data-table/data-table.d.ts +8 -6
  26. package/dist/components/data-table/data-table.js +89 -80
  27. package/dist/components/data-table/demo.cjs +1 -1
  28. package/dist/components/data-table/demo.js +3 -13
  29. package/dist/components/data-table/index.cjs +1 -1
  30. package/dist/components/data-table/index.js +5 -5
  31. package/dist/components/data-table/public.cjs +1 -1
  32. package/dist/components/data-table/public.d.ts +1 -6
  33. package/dist/components/data-table/public.js +7 -12
  34. package/dist/components/display/activity-feed.cjs +1 -1
  35. package/dist/components/display/activity-feed.d.ts +12 -1
  36. package/dist/components/display/activity-feed.js +69 -47
  37. package/dist/components/display/carousel.cjs +1 -1
  38. package/dist/components/display/carousel.d.ts +16 -1
  39. package/dist/components/display/carousel.js +71 -26
  40. package/dist/components/display/code-block.cjs +2 -1
  41. package/dist/components/display/code-block.d.ts +3 -1
  42. package/dist/components/display/code-block.js +33 -19
  43. package/dist/components/display/comparison-card.cjs +1 -1
  44. package/dist/components/display/comparison-card.d.ts +3 -3
  45. package/dist/components/display/comparison-card.js +14 -38
  46. package/dist/components/display/data-state.cjs +1 -1
  47. package/dist/components/display/data-state.d.ts +12 -2
  48. package/dist/components/display/data-state.js +80 -42
  49. package/dist/components/display/demo.cjs +1 -1
  50. package/dist/components/display/demo.js +1 -5
  51. package/dist/components/display/index.cjs +1 -1
  52. package/dist/components/display/index.d.ts +0 -3
  53. package/dist/components/display/index.js +21 -24
  54. package/dist/components/display/smart-card.d.ts +1 -1
  55. package/dist/components/display/status-legend.d.ts +1 -1
  56. package/dist/components/feedback/alert.cjs +1 -1
  57. package/dist/components/feedback/alert.d.ts +6 -1
  58. package/dist/components/feedback/alert.js +49 -19
  59. package/dist/components/feedback/index.cjs +1 -1
  60. package/dist/components/feedback/index.d.ts +0 -2
  61. package/dist/components/feedback/index.js +3 -5
  62. package/dist/components/filters/demo.cjs +1 -1
  63. package/dist/components/filters/demo.js +1 -5
  64. package/dist/components/filters/filter-bar.cjs +1 -1
  65. package/dist/components/filters/filter-bar.d.ts +15 -1
  66. package/dist/components/filters/filter-bar.js +94 -50
  67. package/dist/components/filters/index.cjs +1 -1
  68. package/dist/components/filters/index.d.ts +0 -1
  69. package/dist/components/filters/index.js +3 -4
  70. package/dist/components/form/form-field-shell.cjs +1 -1
  71. package/dist/components/form/form-field-shell.d.ts +17 -3
  72. package/dist/components/form/form-field-shell.js +54 -40
  73. package/dist/components/form/form-input.cjs +1 -1
  74. package/dist/components/form/form-input.d.ts +3 -4
  75. package/dist/components/form/form-input.js +285 -224
  76. package/dist/components/form/form-select.cjs +1 -1
  77. package/dist/components/form/form-select.d.ts +2 -2
  78. package/dist/components/form/form-select.js +49 -35
  79. package/dist/components/form/form-switch.cjs +1 -1
  80. package/dist/components/form/form-switch.js +79 -66
  81. package/dist/components/form/form-textarea.cjs +1 -1
  82. package/dist/components/form/form-textarea.js +59 -48
  83. package/dist/components/form/index.cjs +1 -1
  84. package/dist/components/form/index.js +14 -14
  85. package/dist/components/form/public.cjs +1 -1
  86. package/dist/components/form/public.d.ts +0 -8
  87. package/dist/components/form/public.js +7 -15
  88. package/dist/components/inputs/async-select.cjs +1 -1
  89. package/dist/components/inputs/async-select.d.ts +14 -2
  90. package/dist/components/inputs/async-select.js +278 -270
  91. package/dist/components/inputs/combobox.cjs +1 -1
  92. package/dist/components/inputs/combobox.d.ts +5 -1
  93. package/dist/components/inputs/combobox.js +52 -19
  94. package/dist/components/inputs/search-input.d.ts +3 -0
  95. package/dist/components/inputs/simple-select.cjs +1 -1
  96. package/dist/components/inputs/simple-select.d.ts +10 -31
  97. package/dist/components/inputs/simple-select.js +5 -85
  98. package/dist/components/layout/app-sidebar.cjs +1 -1
  99. package/dist/components/layout/app-sidebar.d.ts +4 -1
  100. package/dist/components/layout/app-sidebar.js +152 -132
  101. package/dist/components/layout/breadcrumbs.cjs +1 -1
  102. package/dist/components/layout/breadcrumbs.d.ts +2 -1
  103. package/dist/components/layout/breadcrumbs.js +10 -10
  104. package/dist/components/layout/index.cjs +1 -1
  105. package/dist/components/layout/index.js +3 -3
  106. package/dist/components/layout/stat-card.cjs +1 -1
  107. package/dist/components/layout/stat-card.d.ts +8 -1
  108. package/dist/components/layout/stat-card.js +33 -11
  109. package/dist/components/modern/calendar-scheduler.cjs +1 -1
  110. package/dist/components/modern/calendar-scheduler.d.ts +2 -1
  111. package/dist/components/modern/calendar-scheduler.js +21 -12
  112. package/dist/components/overlay/alert-dialog.cjs +1 -1
  113. package/dist/components/overlay/alert-dialog.d.ts +15 -1
  114. package/dist/components/overlay/alert-dialog.js +102 -27
  115. package/dist/components/overlay/drawer.cjs +1 -1
  116. package/dist/components/overlay/drawer.d.ts +4 -1
  117. package/dist/components/overlay/drawer.js +20 -17
  118. package/dist/components/patterns/index.cjs +1 -1
  119. package/dist/components/patterns/index.d.ts +0 -1
  120. package/dist/components/patterns/index.js +1 -2
  121. package/dist/components/patterns/public.cjs +1 -1
  122. package/dist/components/patterns/public.d.ts +0 -1
  123. package/dist/components/patterns/public.js +1 -2
  124. package/dist/components/ui/button/index.cjs +1 -1
  125. package/dist/components/ui/button/index.d.ts +3 -1
  126. package/dist/components/ui/button/index.js +7 -5
  127. package/dist/components/ui/card/index.cjs +1 -1
  128. package/dist/components/ui/card/index.d.ts +13 -2
  129. package/dist/components/ui/card/index.js +74 -49
  130. package/dist/components/ui/checkbox/index.cjs +1 -1
  131. package/dist/components/ui/checkbox/index.d.ts +8 -0
  132. package/dist/components/ui/checkbox/index.js +16 -14
  133. package/dist/components/ui/collapse/index.cjs +1 -1
  134. package/dist/components/ui/collapse/index.d.ts +17 -3
  135. package/dist/components/ui/collapse/index.js +88 -33
  136. package/dist/components/ui/dialog/index.cjs +1 -1
  137. package/dist/components/ui/dialog/index.d.ts +2 -1
  138. package/dist/components/ui/dialog/index.js +6 -4
  139. package/dist/components/ui/dropdown-menu/index.cjs +1 -1
  140. package/dist/components/ui/dropdown-menu/index.d.ts +9 -4
  141. package/dist/components/ui/dropdown-menu/index.js +87 -62
  142. package/dist/components/ui/input/index.cjs +1 -1
  143. package/dist/components/ui/input/index.d.ts +8 -0
  144. package/dist/components/ui/input/index.js +63 -30
  145. package/dist/components/ui/select/index.cjs +1 -1
  146. package/dist/components/ui/select/index.d.ts +33 -1
  147. package/dist/components/ui/select/index.js +154 -48
  148. package/dist/index.cjs +1 -1
  149. package/dist/index.js +137 -156
  150. package/dist/public-component-surface.cjs +1 -1
  151. package/dist/public-component-surface.js +0 -15
  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 +23 -36
  155. package/dist/showcase/create-demo.js +15 -16
  156. package/dist/showcase/fallback.cjs +3 -3
  157. package/dist/showcase/fallback.js +275 -265
  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 +16 -14
  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 +426 -467
  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/select/mock.cjs +8 -9
  224. package/dist/showcase/premium/select/mock.js +1 -1
  225. package/dist/showcase/premium/select/showcase.cjs +1 -1
  226. package/dist/showcase/premium/select/showcase.js +76 -86
  227. package/dist/showcase/premium/simple-select/mock.cjs +1 -1
  228. package/dist/showcase/premium/simple-select/mock.js +1 -1
  229. package/dist/showcase/premium/simple-select/showcase.cjs +1 -1
  230. package/dist/showcase/premium/simple-select/showcase.js +4 -2
  231. package/dist/showcase/preview-catalog.cjs +7 -10
  232. package/dist/showcase/preview-catalog.js +7 -7
  233. package/dist/showcase/registry-quality.cjs +1 -1
  234. package/dist/showcase/registry-quality.js +0 -23
  235. package/dist/showcase/registry-specific.cjs +1 -1
  236. package/dist/showcase/registry-specific.js +153 -383
  237. package/dist/showcase/render-registry-preview.cjs +1 -1
  238. package/dist/showcase/render-registry-preview.js +169 -197
  239. package/dist/showcase/site-data.cjs +1 -1
  240. package/dist/showcase/site-data.js +197 -941
  241. package/dist/showcase/supplemental.cjs +1 -1
  242. package/dist/showcase/supplemental.js +1 -1
  243. package/dist/showcase/tembro-registry.json.cjs +1 -1
  244. package/dist/showcase/tembro-registry.json.js +33 -51
  245. package/package.json +1 -1
  246. package/packages/cli/dist/index.cjs +2 -2
  247. package/packages/cli/vendor/src/components/actions/action-menu.tsx +149 -83
  248. package/packages/cli/vendor/src/components/actions/button-group.tsx +141 -33
  249. package/packages/cli/vendor/src/components/actions/copy-button.tsx +21 -16
  250. package/packages/cli/vendor/src/components/calendar/calendar.tsx +223 -88
  251. package/packages/cli/vendor/src/components/calendar/date-picker.tsx +73 -29
  252. package/packages/cli/vendor/src/components/calendar/date-range-picker.tsx +154 -49
  253. package/packages/cli/vendor/src/components/data-table/data-table-pagination.tsx +7 -7
  254. package/packages/cli/vendor/src/components/data-table/data-table-toolbar.tsx +71 -50
  255. package/packages/cli/vendor/src/components/data-table/data-table.tsx +86 -73
  256. package/packages/cli/vendor/src/components/data-table/demo.tsx +2 -12
  257. package/packages/cli/vendor/src/components/data-table/public.ts +1 -6
  258. package/packages/cli/vendor/src/components/display/activity-feed.tsx +98 -40
  259. package/packages/cli/vendor/src/components/display/carousel.tsx +104 -6
  260. package/packages/cli/vendor/src/components/display/code-block.tsx +58 -26
  261. package/packages/cli/vendor/src/components/display/comparison-card.tsx +15 -41
  262. package/packages/cli/vendor/src/components/display/data-state.tsx +119 -50
  263. package/packages/cli/vendor/src/components/display/demo.tsx +0 -4
  264. package/packages/cli/vendor/src/components/display/index.ts +0 -3
  265. package/packages/cli/vendor/src/components/display/smart-card.tsx +1 -1
  266. package/packages/cli/vendor/src/components/display/status-legend.tsx +1 -1
  267. package/packages/cli/vendor/src/components/feedback/alert.tsx +86 -28
  268. package/packages/cli/vendor/src/components/feedback/index.ts +0 -2
  269. package/packages/cli/vendor/src/components/filters/demo.tsx +0 -1
  270. package/packages/cli/vendor/src/components/filters/filter-bar.tsx +126 -54
  271. package/packages/cli/vendor/src/components/filters/index.ts +0 -1
  272. package/packages/cli/vendor/src/components/form/form-field-shell.tsx +72 -34
  273. package/packages/cli/vendor/src/components/form/form-input.tsx +127 -23
  274. package/packages/cli/vendor/src/components/form/form-select.tsx +30 -7
  275. package/packages/cli/vendor/src/components/form/form-switch.tsx +77 -58
  276. package/packages/cli/vendor/src/components/form/form-textarea.tsx +65 -51
  277. package/packages/cli/vendor/src/components/form/public.ts +0 -9
  278. package/packages/cli/vendor/src/components/inputs/async-select.tsx +138 -91
  279. package/packages/cli/vendor/src/components/inputs/combobox.tsx +66 -9
  280. package/packages/cli/vendor/src/components/inputs/search-input.tsx +5 -2
  281. package/packages/cli/vendor/src/components/inputs/simple-select.tsx +20 -162
  282. package/packages/cli/vendor/src/components/layout/app-sidebar.tsx +42 -1
  283. package/packages/cli/vendor/src/components/layout/breadcrumbs.tsx +17 -8
  284. package/packages/cli/vendor/src/components/layout/stat-card.tsx +63 -23
  285. package/packages/cli/vendor/src/components/modern/calendar-scheduler.tsx +32 -22
  286. package/packages/cli/vendor/src/components/overlay/alert-dialog.tsx +148 -24
  287. package/packages/cli/vendor/src/components/overlay/drawer.tsx +42 -30
  288. package/packages/cli/vendor/src/components/patterns/index.ts +0 -1
  289. package/packages/cli/vendor/src/components/patterns/public.ts +0 -1
  290. package/packages/cli/vendor/src/components/ui/button/index.tsx +27 -17
  291. package/packages/cli/vendor/src/components/ui/card/index.tsx +95 -25
  292. package/packages/cli/vendor/src/components/ui/checkbox/index.tsx +22 -5
  293. package/packages/cli/vendor/src/components/ui/collapse/index.tsx +97 -16
  294. package/packages/cli/vendor/src/components/ui/dialog/index.tsx +12 -8
  295. package/packages/cli/vendor/src/components/ui/dropdown-menu/index.tsx +82 -28
  296. package/packages/cli/vendor/src/components/ui/input/index.tsx +98 -0
  297. package/packages/cli/vendor/src/components/ui/select/index.tsx +227 -34
  298. package/packages/cli/vendor/src/public-component-surface.ts +0 -3
  299. package/packages/cli/vendor/src/showcase/component-api-schema.ts +2 -2
  300. package/packages/cli/vendor/src/showcase/create-demo.tsx +44 -58
  301. package/packages/cli/vendor/src/showcase/fallback.tsx +80 -99
  302. package/packages/cli/vendor/src/showcase/premium/accordion/showcase.tsx +32 -2
  303. package/packages/cli/vendor/src/showcase/premium/action-menu/showcase.tsx +12 -3
  304. package/packages/cli/vendor/src/showcase/premium/activity-feed/showcase.tsx +15 -2
  305. package/packages/cli/vendor/src/showcase/premium/alert/showcase.tsx +32 -17
  306. package/packages/cli/vendor/src/showcase/premium/alert-dialog/showcase.tsx +28 -3
  307. package/packages/cli/vendor/src/showcase/premium/async-multi-select/mock.ts +6 -5
  308. package/packages/cli/vendor/src/showcase/premium/async-multi-select/showcase.tsx +5 -4
  309. package/packages/cli/vendor/src/showcase/premium/async-select/mock.ts +1 -1
  310. package/packages/cli/vendor/src/showcase/premium/async-select/showcase.tsx +36 -0
  311. package/packages/cli/vendor/src/showcase/premium/button/showcase.tsx +26 -5
  312. package/packages/cli/vendor/src/showcase/premium/button-group/showcase.tsx +20 -3
  313. package/packages/cli/vendor/src/showcase/premium/calendar/showcase.tsx +5 -0
  314. package/packages/cli/vendor/src/showcase/premium/carousel/showcase.tsx +33 -5
  315. package/packages/cli/vendor/src/showcase/premium/checkbox/showcase.tsx +46 -3
  316. package/packages/cli/vendor/src/showcase/premium/clearable-input/mock.ts +5 -3
  317. package/packages/cli/vendor/src/showcase/premium/clearable-input/showcase.tsx +5 -2
  318. package/packages/cli/vendor/src/showcase/premium/collapse/showcase.tsx +4 -0
  319. package/packages/cli/vendor/src/showcase/premium/combobox/showcase.tsx +8 -0
  320. package/packages/cli/vendor/src/showcase/premium/data-table/showcase.tsx +77 -27
  321. package/packages/cli/vendor/src/showcase/premium/data-table-parts/showcase.tsx +14 -14
  322. package/packages/cli/vendor/src/showcase/premium/date-input/mock.ts +1 -1
  323. package/packages/cli/vendor/src/showcase/premium/date-range-picker/showcase.tsx +7 -0
  324. package/packages/cli/vendor/src/showcase/premium/dropdown-menu/showcase.tsx +46 -3
  325. package/packages/cli/vendor/src/showcase/premium/form-wrapper/mock.ts +70 -44
  326. package/packages/cli/vendor/src/showcase/premium/form-wrapper/showcase.tsx +129 -12
  327. package/packages/cli/vendor/src/showcase/premium/index.ts +7 -24
  328. package/packages/cli/vendor/src/showcase/premium/input/mock.ts +2 -2
  329. package/packages/cli/vendor/src/showcase/premium/masked-input/mock.ts +1 -1
  330. package/packages/cli/vendor/src/showcase/premium/money-input/mock.ts +1 -1
  331. package/packages/cli/vendor/src/showcase/premium/number-input/mock.ts +1 -1
  332. package/packages/cli/vendor/src/showcase/premium/phone-input/mock.ts +1 -1
  333. package/packages/cli/vendor/src/showcase/premium/quantity-input/mock.ts +1 -1
  334. package/packages/cli/vendor/src/showcase/premium/select/mock.ts +1 -1
  335. package/packages/cli/vendor/src/showcase/premium/select/showcase.tsx +13 -21
  336. package/packages/cli/vendor/src/showcase/premium/simple-select/mock.ts +1 -1
  337. package/packages/cli/vendor/src/showcase/premium/simple-select/showcase.tsx +2 -1
  338. package/packages/cli/vendor/src/showcase/preview-catalog.tsx +7 -7
  339. package/packages/cli/vendor/src/showcase/registry-quality.ts +4 -28
  340. package/packages/cli/vendor/src/showcase/registry-specific.tsx +10 -186
  341. package/packages/cli/vendor/src/showcase/render-registry-preview.tsx +23 -57
  342. package/packages/cli/vendor/src/showcase/site-data.tsx +2443 -2761
  343. package/packages/cli/vendor/src/showcase/supplemental.tsx +2 -42
  344. package/packages/cli/vendor/src/showcase/tembro-registry.json +11 -58
  345. package/registry.json +11 -61
  346. package/dist/components/display/entity-card.cjs +0 -1
  347. package/dist/components/display/entity-card.d.ts +0 -18
  348. package/dist/components/display/entity-card.js +0 -61
  349. package/dist/components/display/entity-header.cjs +0 -1
  350. package/dist/components/display/entity-header.d.ts +0 -13
  351. package/dist/components/display/entity-header.js +0 -52
  352. package/dist/components/display/file-card.cjs +0 -1
  353. package/dist/components/display/file-card.d.ts +0 -14
  354. package/dist/components/display/file-card.js +0 -59
  355. package/dist/components/feedback/empty-search-state.cjs +0 -1
  356. package/dist/components/feedback/empty-search-state.d.ts +0 -11
  357. package/dist/components/feedback/empty-search-state.js +0 -45
  358. package/dist/components/feedback/empty-state.cjs +0 -1
  359. package/dist/components/feedback/empty-state.d.ts +0 -11
  360. package/dist/components/feedback/empty-state.js +0 -38
  361. package/dist/components/filters/filter-chips.cjs +0 -1
  362. package/dist/components/filters/filter-chips.d.ts +0 -18
  363. package/dist/components/filters/filter-chips.js +0 -61
  364. package/dist/components/patterns/form-builder-presets.cjs +0 -1
  365. package/dist/components/patterns/form-builder-presets.d.ts +0 -1
  366. package/dist/components/patterns/form-builder-presets.js +0 -2
  367. package/dist/components/patterns/form-builder.cjs +0 -1
  368. package/dist/components/patterns/form-builder.d.ts +0 -109
  369. package/dist/components/patterns/form-builder.js +0 -263
  370. package/dist/showcase/premium/empty-state/index.cjs +0 -1
  371. package/dist/showcase/premium/empty-state/index.d.ts +0 -2
  372. package/dist/showcase/premium/empty-state/index.js +0 -3
  373. package/dist/showcase/premium/empty-state/mock.cjs +0 -14
  374. package/dist/showcase/premium/empty-state/mock.d.ts +0 -2
  375. package/dist/showcase/premium/empty-state/mock.js +0 -31
  376. package/dist/showcase/premium/empty-state/showcase.cjs +0 -1
  377. package/dist/showcase/premium/empty-state/showcase.d.ts +0 -3
  378. package/dist/showcase/premium/empty-state/showcase.js +0 -99
  379. package/dist/showcase/premium/form-builder/index.cjs +0 -1
  380. package/dist/showcase/premium/form-builder/index.d.ts +0 -2
  381. package/dist/showcase/premium/form-builder/index.js +0 -3
  382. package/dist/showcase/premium/form-builder/mock.cjs +0 -57
  383. package/dist/showcase/premium/form-builder/mock.d.ts +0 -2
  384. package/dist/showcase/premium/form-builder/mock.js +0 -40
  385. package/dist/showcase/premium/form-builder/showcase.cjs +0 -1
  386. package/dist/showcase/premium/form-builder/showcase.d.ts +0 -3
  387. package/dist/showcase/premium/form-builder/showcase.js +0 -69
  388. package/packages/cli/vendor/src/components/display/entity-card.tsx +0 -80
  389. package/packages/cli/vendor/src/components/display/entity-header.tsx +0 -80
  390. package/packages/cli/vendor/src/components/display/file-card.tsx +0 -61
  391. package/packages/cli/vendor/src/components/feedback/empty-search-state.tsx +0 -65
  392. package/packages/cli/vendor/src/components/feedback/empty-state.tsx +0 -56
  393. package/packages/cli/vendor/src/components/filters/filter-chips.tsx +0 -89
  394. package/packages/cli/vendor/src/components/patterns/form-builder-presets.ts +0 -13
  395. package/packages/cli/vendor/src/components/patterns/form-builder.tsx +0 -443
  396. package/packages/cli/vendor/src/showcase/premium/empty-state/index.ts +0 -2
  397. package/packages/cli/vendor/src/showcase/premium/empty-state/mock.ts +0 -30
  398. package/packages/cli/vendor/src/showcase/premium/empty-state/showcase.tsx +0 -65
  399. package/packages/cli/vendor/src/showcase/premium/form-builder/index.ts +0 -2
  400. package/packages/cli/vendor/src/showcase/premium/form-builder/mock.ts +0 -79
  401. package/packages/cli/vendor/src/showcase/premium/form-builder/showcase.tsx +0 -55
@@ -2,9 +2,9 @@
2
2
 
3
3
  import * as React from "react"
4
4
  import { Select as SelectPrimitive } from "@base-ui/react/select"
5
+ import { CheckIcon, ChevronDownIcon, ChevronUpIcon, LoaderCircleIcon, SearchIcon, XIcon } from "lucide-react"
5
6
 
6
- import { cn } from "@/lib/utils"
7
- import { ChevronDownIcon, CheckIcon, ChevronUpIcon } from "lucide-react"
7
+ import { cn, stopInteractivePropagation } from "@/lib/utils"
8
8
 
9
9
  export type SelectRootProps = React.ComponentPropsWithoutRef<typeof SelectPrimitive.Root>
10
10
  export type SelectGroupProps = SelectPrimitive.Group.Props
@@ -21,7 +21,216 @@ export type SelectSeparatorProps = SelectPrimitive.Separator.Props
21
21
  export type SelectScrollUpButtonProps = React.ComponentProps<typeof SelectPrimitive.ScrollUpArrow>
22
22
  export type SelectScrollDownButtonProps = React.ComponentProps<typeof SelectPrimitive.ScrollDownArrow>
23
23
 
24
- const Select = SelectPrimitive.Root
24
+ export type SelectOption = {
25
+ label: React.ReactNode
26
+ value: string
27
+ disabled?: boolean
28
+ description?: React.ReactNode
29
+ keywords?: string[]
30
+ }
31
+
32
+ export type SelectProps = Omit<SelectRootProps, "value" | "defaultValue" | "onValueChange"> & {
33
+ value?: string | null
34
+ defaultValue?: string | null
35
+ onValueChange?: (value: string | undefined) => void
36
+ options?: SelectOption[]
37
+ placeholder?: string
38
+ searchPlaceholder?: string
39
+ emptyLabel?: React.ReactNode
40
+ clearLabel?: string
41
+ size?: "sm" | "default" | "lg"
42
+ clearable?: boolean
43
+ searchable?: boolean
44
+ loading?: boolean
45
+ loadingLabel?: React.ReactNode
46
+ disabled?: boolean
47
+ showSelectedDescription?: boolean
48
+ triggerClassName?: string
49
+ contentClassName?: string
50
+ itemClassName?: string
51
+ searchClassName?: string
52
+ renderOption?: (option: SelectOption, state: { selected: boolean }) => React.ReactNode
53
+ invalid?: boolean
54
+ }
55
+
56
+ const SelectRoot = SelectPrimitive.Root
57
+
58
+ function optionMatchesSearch(option: SelectOption, search: string) {
59
+ const normalized = search.trim().toLowerCase()
60
+ if (!normalized) return true
61
+
62
+ const labelText =
63
+ typeof option.label === "string" || typeof option.label === "number"
64
+ ? String(option.label)
65
+ : option.value
66
+ const haystack = [labelText, option.value, ...(option.keywords ?? [])].join(" ").toLowerCase()
67
+ return haystack.includes(normalized)
68
+ }
69
+
70
+ function Select({
71
+ value,
72
+ defaultValue,
73
+ onValueChange,
74
+ options,
75
+ placeholder = "Select",
76
+ searchPlaceholder = "Search options...",
77
+ emptyLabel = "No options found",
78
+ clearLabel = "Clear selection",
79
+ size = "default",
80
+ clearable = false,
81
+ searchable = false,
82
+ loading = false,
83
+ loadingLabel = "Loading options...",
84
+ disabled = false,
85
+ showSelectedDescription = true,
86
+ triggerClassName,
87
+ contentClassName,
88
+ itemClassName,
89
+ searchClassName,
90
+ renderOption,
91
+ invalid,
92
+ children,
93
+ onOpenChange,
94
+ ...props
95
+ }: SelectProps) {
96
+ if (!options) {
97
+ return (
98
+ <SelectRoot
99
+ value={value ?? undefined}
100
+ defaultValue={defaultValue ?? undefined}
101
+ onValueChange={(nextValue) => onValueChange?.((nextValue as string | null | undefined) ?? undefined)}
102
+ onOpenChange={onOpenChange}
103
+ disabled={disabled}
104
+ {...props}
105
+ >
106
+ {children}
107
+ </SelectRoot>
108
+ )
109
+ }
110
+
111
+ const [search, setSearch] = React.useState("")
112
+ const selectedOption = options.find((option) => option.value === value)
113
+ const filteredOptions = options.filter((option) => optionMatchesSearch(option, search))
114
+
115
+ return (
116
+ <SelectRoot
117
+ value={value ?? undefined}
118
+ defaultValue={defaultValue ?? undefined}
119
+ onValueChange={(nextValue) => onValueChange?.((nextValue as string | null | undefined) ?? undefined)}
120
+ disabled={disabled || loading}
121
+ onOpenChange={(open, eventDetails) => {
122
+ if (!open) setSearch("")
123
+ onOpenChange?.(open, eventDetails)
124
+ }}
125
+ {...props}
126
+ >
127
+ <SelectTrigger
128
+ size={size}
129
+ aria-invalid={invalid || undefined}
130
+ className={cn("w-full", triggerClassName)}
131
+ >
132
+ <SelectValue placeholder={placeholder}>
133
+ {selectedOption ? (
134
+ <span className="flex min-w-0 flex-col items-start">
135
+ <span className="truncate">{selectedOption.label}</span>
136
+ {showSelectedDescription && selectedOption.description ? (
137
+ <span className="truncate text-[11px] font-medium text-muted-foreground">
138
+ {selectedOption.description}
139
+ </span>
140
+ ) : null}
141
+ </span>
142
+ ) : null}
143
+ </SelectValue>
144
+ {loading ? <LoaderCircleIcon className="size-4 animate-spin text-muted-foreground" /> : null}
145
+ {clearable && value && !disabled && !loading ? (
146
+ <span
147
+ role="button"
148
+ tabIndex={0}
149
+ aria-label={clearLabel}
150
+ className="ml-1 rounded-[var(--radius-sm)] border border-border/65 p-1 text-muted-foreground transition-colors hover:border-border hover:bg-muted/55 hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
151
+ onClick={(event) => {
152
+ event.preventDefault()
153
+ stopInteractivePropagation(event)
154
+ onValueChange?.(undefined)
155
+ }}
156
+ onMouseDown={stopInteractivePropagation}
157
+ onDoubleClick={stopInteractivePropagation}
158
+ onKeyDown={(event) => {
159
+ if (event.key === "Enter" || event.key === " ") {
160
+ event.preventDefault()
161
+ onValueChange?.(undefined)
162
+ }
163
+ }}
164
+ >
165
+ <XIcon className="size-3.5" />
166
+ </span>
167
+ ) : null}
168
+ </SelectTrigger>
169
+ <SelectContent className={cn("w-(--anchor-width)", contentClassName)}>
170
+ {searchable ? (
171
+ <div
172
+ data-slot="select-search"
173
+ className="sticky top-0 z-10 mb-1 flex items-center gap-2 rounded-[var(--radius-md)] border border-[color:var(--aui-card-border,var(--border))] bg-popover px-2.5 py-2 text-sm"
174
+ >
175
+ <SearchIcon className="size-4 text-muted-foreground" />
176
+ <input
177
+ value={search}
178
+ onChange={(event) => setSearch(event.target.value)}
179
+ placeholder={searchPlaceholder}
180
+ className={cn(
181
+ "min-w-0 flex-1 bg-transparent outline-none placeholder:text-muted-foreground",
182
+ searchClassName
183
+ )}
184
+ />
185
+ </div>
186
+ ) : null}
187
+
188
+ {loading ? (
189
+ <div
190
+ data-slot="select-state"
191
+ className="flex items-center gap-2 rounded-[var(--radius-md)] border border-[color:var(--aui-card-border,var(--border))] bg-[color:color-mix(in_oklch,var(--muted),transparent_55%)] px-3 py-2.5 text-sm text-muted-foreground"
192
+ >
193
+ <LoaderCircleIcon className="size-4 animate-spin" />
194
+ {loadingLabel}
195
+ </div>
196
+ ) : filteredOptions.length === 0 ? (
197
+ <div
198
+ data-slot="select-state"
199
+ className="rounded-[var(--radius-md)] border border-[color:var(--aui-card-border,var(--border))] bg-[color:color-mix(in_oklch,var(--muted),transparent_55%)] px-3 py-2.5 text-sm text-muted-foreground"
200
+ >
201
+ {emptyLabel}
202
+ </div>
203
+ ) : (
204
+ filteredOptions.map((option) => {
205
+ const selected = option.value === value
206
+ return (
207
+ <SelectItem
208
+ key={option.value}
209
+ value={option.value}
210
+ disabled={option.disabled}
211
+ className={cn("rounded-[var(--radius-md)]", itemClassName)}
212
+ >
213
+ {renderOption ? (
214
+ renderOption(option, { selected })
215
+ ) : (
216
+ <span className="flex min-w-0 flex-1 flex-col">
217
+ <span className="flex min-w-0 items-center gap-2">
218
+ <span className="truncate">{option.label}</span>
219
+ {selected ? <CheckIcon className="ml-auto size-3.5 text-primary" /> : null}
220
+ </span>
221
+ {option.description ? (
222
+ <span className="truncate text-xs text-muted-foreground">{option.description}</span>
223
+ ) : null}
224
+ </span>
225
+ )}
226
+ </SelectItem>
227
+ )
228
+ })
229
+ )}
230
+ </SelectContent>
231
+ </SelectRoot>
232
+ )
233
+ }
25
234
 
26
235
  function SelectGroup({ className, ...props }: SelectGroupProps) {
27
236
  return (
@@ -60,11 +269,7 @@ function SelectTrigger({
60
269
  {...props}
61
270
  >
62
271
  {children}
63
- <SelectPrimitive.Icon
64
- render={
65
- <ChevronDownIcon className="pointer-events-none size-4 text-muted-foreground" />
66
- }
67
- />
272
+ <SelectPrimitive.Icon render={<ChevronDownIcon className="pointer-events-none size-4 text-muted-foreground" />} />
68
273
  </SelectPrimitive.Trigger>
69
274
  )
70
275
  }
@@ -92,7 +297,10 @@ function SelectContent({
92
297
  <SelectPrimitive.Popup
93
298
  data-slot="select-content"
94
299
  data-align-trigger={alignItemWithTrigger}
95
- className={cn("relative isolate z-50 max-h-(--available-height) w-(--anchor-width) min-w-52 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-[var(--aui-card-radius,var(--radius-lg))] border border-[color:var(--aui-card-border,var(--border))] bg-popover p-1.5 text-popover-foreground shadow-[var(--aui-control-panel-shadow,0_18px_40px_rgba(15,23,42,0.14))] backdrop-blur duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", className)}
300
+ className={cn(
301
+ "relative isolate z-50 max-h-(--available-height) w-(--anchor-width) min-w-52 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-[var(--aui-card-radius,var(--radius-lg))] border border-[color:var(--aui-card-border,var(--border))] bg-popover p-1.5 text-popover-foreground shadow-[var(--aui-control-panel-shadow,0_18px_40px_rgba(15,23,42,0.14))] backdrop-blur duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
302
+ className
303
+ )}
96
304
  {...props}
97
305
  >
98
306
  <SelectScrollUpButton />
@@ -104,24 +312,20 @@ function SelectContent({
104
312
  )
105
313
  }
106
314
 
107
- function SelectLabel({
108
- className,
109
- ...props
110
- }: SelectLabelProps) {
315
+ function SelectLabel({ className, ...props }: SelectLabelProps) {
111
316
  return (
112
317
  <SelectPrimitive.GroupLabel
113
318
  data-slot="select-label"
114
- className={cn("px-2 py-1.5 text-[11px] font-semibold tracking-[0.14em] uppercase text-muted-foreground/90", className)}
319
+ className={cn(
320
+ "px-2 py-1.5 text-[11px] font-semibold tracking-[0.14em] uppercase text-muted-foreground/90",
321
+ className
322
+ )}
115
323
  {...props}
116
324
  />
117
325
  )
118
326
  }
119
327
 
120
- function SelectItem({
121
- className,
122
- children,
123
- ...props
124
- }: SelectItemProps) {
328
+ function SelectItem({ className, children, ...props }: SelectItemProps) {
125
329
  return (
126
330
  <SelectPrimitive.Item
127
331
  data-slot="select-item"
@@ -135,9 +339,7 @@ function SelectItem({
135
339
  {children}
136
340
  </SelectPrimitive.ItemText>
137
341
  <SelectPrimitive.ItemIndicator
138
- render={
139
- <span className="pointer-events-none absolute right-2 flex size-4 items-center justify-center" />
140
- }
342
+ render={<span className="pointer-events-none absolute right-2 flex size-4 items-center justify-center" />}
141
343
  >
142
344
  <CheckIcon className="pointer-events-none" />
143
345
  </SelectPrimitive.ItemIndicator>
@@ -145,10 +347,7 @@ function SelectItem({
145
347
  )
146
348
  }
147
349
 
148
- function SelectSeparator({
149
- className,
150
- ...props
151
- }: SelectSeparatorProps) {
350
+ function SelectSeparator({ className, ...props }: SelectSeparatorProps) {
152
351
  return (
153
352
  <SelectPrimitive.Separator
154
353
  data-slot="select-separator"
@@ -158,10 +357,7 @@ function SelectSeparator({
158
357
  )
159
358
  }
160
359
 
161
- function SelectScrollUpButton({
162
- className,
163
- ...props
164
- }: SelectScrollUpButtonProps) {
360
+ function SelectScrollUpButton({ className, ...props }: SelectScrollUpButtonProps) {
165
361
  return (
166
362
  <SelectPrimitive.ScrollUpArrow
167
363
  data-slot="select-scroll-up-button"
@@ -176,10 +372,7 @@ function SelectScrollUpButton({
176
372
  )
177
373
  }
178
374
 
179
- function SelectScrollDownButton({
180
- className,
181
- ...props
182
- }: SelectScrollDownButtonProps) {
375
+ function SelectScrollDownButton({ className, ...props }: SelectScrollDownButtonProps) {
183
376
  return (
184
377
  <SelectPrimitive.ScrollDownArrow
185
378
  data-slot="select-scroll-down-button"
@@ -30,18 +30,15 @@ export const standalonePublicComponentSurfaces: readonly PublicComponentSurfaceE
30
30
  { slug: "command-bar", registryName: "command-bar", surface: "standalone" },
31
31
  { slug: "quantity-stepper", registryName: "quantity-stepper", surface: "standalone" },
32
32
  { slug: "inline-editable", registryName: "inline-editable", surface: "standalone" },
33
- { slug: "empty-search-state", registryName: "empty-search-state", surface: "standalone" },
34
33
  { slug: "avatar", registryName: "avatar", surface: "standalone" },
35
34
  { slug: "code-block", registryName: "code-block", surface: "standalone" },
36
35
  { slug: "data-state", registryName: "data-state", surface: "standalone" },
37
- { slug: "descriptions", registryName: "descriptions", surface: "standalone" },
38
36
  { slug: "kanban", registryName: "kanban", surface: "standalone" },
39
37
  { slug: "list", registryName: "list", surface: "standalone" },
40
38
  { slug: "property-grid", registryName: "property-grid", surface: "standalone" },
41
39
  { slug: "statistic", registryName: "statistic", surface: "standalone" },
42
40
  { slug: "tree-view", registryName: "tree-view", surface: "standalone" },
43
41
  { slug: "copy-button", registryName: "copy-button", surface: "standalone" },
44
- { slug: "copy-field", registryName: "copy-field", surface: "standalone" },
45
42
  { slug: "section", registryName: "section", surface: "standalone" },
46
43
  { slug: "sticky-footer-bar", registryName: "sticky-footer-bar", surface: "standalone" },
47
44
  { slug: "calendar-scheduler", registryName: "calendar-scheduler", surface: "standalone" },
@@ -133,8 +133,8 @@ export const componentApiSchemas: Record<string, ComponentApiSchema> = {
133
133
  { name: "loadingVariant", type: "'skeleton' | 'state'", defaultValue: "'skeleton'", description: "Choose between skeleton rows or a dedicated loading state block." },
134
134
  { name: "loadingState", type: "LoadingStateProps", defaultValue: "-", description: "Customizes the loading state when `loadingVariant=\"state\"`." },
135
135
  { name: "isError", type: "boolean", defaultValue: "false", description: "Switches the grid into an error fallback state." },
136
- { name: "emptyState", type: "EmptyStateProps", defaultValue: "-", description: "Fallback when there are no rows." },
137
- { name: "errorState", type: "EmptyStateProps", defaultValue: "-", description: "Fallback when the data request fails." },
136
+ { name: "emptyState", type: "Omit<DataStateProps, \"status\">", defaultValue: "-", description: "Fallback when there are no rows." },
137
+ { name: "errorState", type: "Omit<DataStateProps, \"status\">", defaultValue: "-", description: "Fallback when the data request fails." },
138
138
  { name: "skeletonRows", type: "number", defaultValue: "6", description: "How many skeleton rows to render during loading." },
139
139
  { name: "cellFallback", type: "ReactNode", defaultValue: "\"-\"", description: "Value rendered when a cell returns empty content." },
140
140
  ],
@@ -63,36 +63,36 @@ function createCodeSnippet(definition: ShowcaseDemoDefinition) {
63
63
  }
64
64
 
65
65
  const exactCodeSnippets: Record<string, string> = {
66
- "search-input": `import { SearchInput } from "@/components/search-input"
67
-
68
- export function Demo() {
69
- return (
70
- <SearchInput
71
- value="invoice"
72
- onValueChange={(value) => console.log(value)}
73
- placeholder="Search invoices..."
74
- resultCount={12}
75
- shortcut="Ctrl K"
66
+ "search-input": `import { Input } from "tembro"
67
+
68
+ export function Demo() {
69
+ return (
70
+ <Input
71
+ type="search"
72
+ value="invoice"
73
+ onValueChange={(value) => console.log(value)}
74
+ placeholder="Search invoices..."
75
+ resultCount={12}
76
+ shortcut="Ctrl K"
76
77
  />
77
78
  )
78
79
  }`,
79
- "password-input": `import { PasswordInput } from "@/components/password-input"
80
+ "password-input": `import { PasswordInput } from "tembro"
80
81
 
81
82
  export function Demo() {
82
83
  return <PasswordInput placeholder="Enter secure token" autoComplete="current-password" />
83
84
  }`,
84
- "clearable-input": `import { ClearableInput } from "@/components/clearable-input"
85
-
86
- export function Demo() {
87
- return <ClearableInput defaultValue="Azamat UI" placeholder="Search customer" />
88
- }`,
89
- "tag-input": `import { TagInput } from "@/components/tag-input"
85
+ "clearable-input": `import { Input } from "tembro"
86
+
87
+ export function Demo() {
88
+ return <Input defaultValue="Azamat UI" placeholder="Search customer" clearable />
89
+ }`,
90
+ "tag-input": `import { TagInput } from "tembro"
90
91
 
91
92
  export function Demo() {
92
93
  return <TagInput defaultValue={["dashboard", "billing"]} placeholder="Add tag" />
93
94
  }`,
94
- "action-menu": `import { ActionMenu } from "@/components/action-menu"
95
- import { Button } from "@/components/button"
95
+ "action-menu": `import { ActionMenu, Button } from "tembro"
96
96
 
97
97
  export function Demo() {
98
98
  return (
@@ -107,7 +107,7 @@ export function Demo() {
107
107
  />
108
108
  )
109
109
  }`,
110
- "button-group": `import { ButtonGroup } from "@/components/button-group"
110
+ "button-group": `import { ButtonGroup } from "tembro"
111
111
 
112
112
  export function Demo() {
113
113
  return (
@@ -120,7 +120,7 @@ export function Demo() {
120
120
  />
121
121
  )
122
122
  }`,
123
- "quick-action-grid": `import { QuickActionGrid } from "@/components/quick-action-grid"
123
+ "quick-action-grid": `import { QuickActionGrid } from "tembro"
124
124
 
125
125
  export function Demo() {
126
126
  return (
@@ -134,22 +134,23 @@ export function Demo() {
134
134
  />
135
135
  )
136
136
  }`,
137
- "filter-bar": `import { FilterBar } from "@/components/filter-bar"
138
- import { SearchInput } from "@/components/search-input"
139
- import { Button } from "@/components/button"
140
-
141
- export function Demo() {
142
- return (
143
- <FilterBar
144
- search={<SearchInput value="" placeholder="Search rows..." readOnly />}
145
- activeCount={2}
146
- filters={<Button variant="outline">Status</Button>}
147
- actions={<Button>Export</Button>}
148
- onReset={() => undefined}
149
- />
150
- )
151
- }`,
152
- "description-list": `import { DescriptionList } from "@/components/description-list"
137
+ "filter-bar": `import { Button, FilterBar, Input } from "tembro"
138
+
139
+ export function Demo() {
140
+ return (
141
+ <FilterBar
142
+ search={<Input type="search" value="" placeholder="Search rows..." readOnly />}
143
+ chips={[
144
+ { key: "status", label: "Status", value: "Active", tone: "success" },
145
+ { key: "owner", label: "Owner", value: "Azamat" },
146
+ ]}
147
+ filters={<Button variant="outline">Status</Button>}
148
+ actions={<Button>Export</Button>}
149
+ onReset={() => undefined}
150
+ />
151
+ )
152
+ }`,
153
+ "description-list": `import { DescriptionList } from "tembro"
153
154
 
154
155
  export function Demo() {
155
156
  return (
@@ -163,22 +164,7 @@ export function Demo() {
163
164
  />
164
165
  )
165
166
  }`,
166
- "entity-card": `import { EntityCard } from "@/components/entity-card"
167
- import { Badge } from "@/components/badge"
168
- import { Button } from "@/components/button"
169
-
170
- export function Demo() {
171
- return (
172
- <EntityCard
173
- title="Azamat Workspace"
174
- description="Admin console and live dashboard route."
175
- status={<Badge variant="secondary">Live</Badge>}
176
- meta="Updated 8 min ago"
177
- actions={<Button size="sm" variant="outline">Open</Button>}
178
- />
179
- )
180
- }`,
181
- "stat-card": `import { StatCard } from "@/components/stat-card"
167
+ "stat-card": `import { StatCard } from "tembro"
182
168
 
183
169
  export function Demo() {
184
170
  return (
@@ -191,12 +177,12 @@ export function Demo() {
191
177
  />
192
178
  )
193
179
  }`,
194
- "pagination": `import { Pagination } from "@/components/pagination"
180
+ "pagination": `import { Pagination } from "tembro"
195
181
 
196
182
  export function Demo() {
197
183
  return <Pagination page={3} pageCount={9} onPageChange={(page) => console.log(page)} />
198
184
  }`,
199
- "dialog-actions": `import { DialogActionButton, DialogActions } from "@/components/dialog-actions"
185
+ "dialog-actions": `import { DialogActionButton, DialogActions } from "tembro"
200
186
 
201
187
  export function Demo() {
202
188
  return (
@@ -207,12 +193,12 @@ export function Demo() {
207
193
  </DialogActions>
208
194
  )
209
195
  }`,
210
- "file-dropzone": `import { FileDropzone } from "@/components/file-dropzone"
196
+ "file-dropzone": `import { FileDropzone } from "tembro"
211
197
 
212
198
  export function Demo() {
213
199
  return <FileDropzone label="Drop contract files" description="PDF, PNG or CSV up to 10MB." />
214
200
  }`,
215
- "stepper": `import { Stepper } from "@/components/stepper"
201
+ "stepper": `import { Stepper } from "tembro"
216
202
 
217
203
  export function Demo() {
218
204
  return (
@@ -231,7 +217,7 @@ export function Demo() {
231
217
 
232
218
  function createKindSnippet(definition: ShowcaseDemoDefinition) {
233
219
  const importName = definition.importName ?? definition.component
234
- const importPath = `@/components/${definition.slug}`
220
+ const importPath = "tembro"
235
221
 
236
222
  if (definition.kind === "data-table") {
237
223
  return `import { ${importName} } from "${importPath}"