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,75 +1,144 @@
1
1
  import * as React from "react"
2
- import { AlertTriangleIcon, CheckCircle2Icon, Loader2Icon, SearchXIcon } from "lucide-react"
2
+ import { AlertTriangleIcon, CheckCircle2Icon, Loader2Icon, SearchXIcon, XIcon } from "lucide-react"
3
3
 
4
4
  import { Button } from "@/components/ui/button"
5
5
  import { Card, CardContent } from "@/components/ui/card"
6
6
  import { cn } from "@/lib/utils"
7
7
 
8
- export type DataStateStatus = "idle" | "loading" | "empty" | "error" | "success"
8
+ export type DataStateStatus = "idle" | "loading" | "empty" | "error" | "success"
9
+ export type DataStateVariant = "card" | "plain" | "inline"
10
+ export type DataStateTone = "default" | "muted" | "success" | "warning" | "danger" | "info"
9
11
 
10
- export type DataStateProps = React.ComponentProps<typeof Card> & {
11
- status: DataStateStatus
12
- title?: React.ReactNode
13
- description?: React.ReactNode
14
- actions?: React.ReactNode
15
- icon?: React.ReactNode
16
- compact?: boolean
17
- children?: React.ReactNode
18
- retryLabel?: React.ReactNode
19
- onRetry?: () => void
20
- }
12
+ export type DataStateProps = Omit<React.ComponentProps<typeof Card>, "content" | "title" | "description" | "variant" | "tone"> & {
13
+ status: DataStateStatus
14
+ title?: React.ReactNode
15
+ description?: React.ReactNode
16
+ badge?: React.ReactNode
17
+ actions?: React.ReactNode
18
+ footer?: React.ReactNode
19
+ icon?: React.ReactNode
20
+ tone?: DataStateTone
21
+ variant?: DataStateVariant
22
+ compact?: boolean
23
+ align?: "start" | "center"
24
+ query?: React.ReactNode
25
+ children?: React.ReactNode
26
+ retryLabel?: React.ReactNode
27
+ onRetry?: () => void
28
+ clearLabel?: React.ReactNode
29
+ onClear?: () => void
30
+ }
21
31
 
22
- const defaultContent: Record<DataStateStatus, { title: string; description: string; icon: React.ReactNode }> = {
32
+ const defaultContent: Record<DataStateStatus, { title: string; description: string; icon: React.ReactNode }> = {
23
33
  idle: { title: "Ready", description: "No action has started yet.", icon: <CheckCircle2Icon /> },
24
34
  loading: { title: "Loading", description: "Please wait while data is being prepared.", icon: <Loader2Icon className="animate-spin" /> },
25
35
  empty: { title: "No data", description: "There is nothing to show yet.", icon: <SearchXIcon /> },
26
36
  error: { title: "Something went wrong", description: "Try again or check the request.", icon: <AlertTriangleIcon /> },
27
37
  success: { title: "Ready", description: "Data loaded successfully.", icon: <CheckCircle2Icon /> },
28
- }
38
+ }
39
+
40
+ const toneClassName: Record<DataStateTone, string> = {
41
+ default: "text-muted-foreground",
42
+ muted: "text-muted-foreground",
43
+ success: "text-emerald-600 dark:text-emerald-400",
44
+ warning: "text-amber-600 dark:text-amber-400",
45
+ danger: "text-destructive",
46
+ info: "text-blue-600 dark:text-blue-400",
47
+ }
29
48
 
30
49
  function DataState({
31
50
  status,
32
- title,
33
- description,
34
- actions,
35
- icon,
36
- compact = false,
37
- children,
38
- retryLabel = "Retry",
39
- onRetry,
40
- className,
41
- ...props
42
- }: DataStateProps) {
43
- const content = defaultContent[status]
44
-
51
+ title,
52
+ description,
53
+ badge,
54
+ actions,
55
+ footer,
56
+ icon,
57
+ tone,
58
+ variant = "card",
59
+ compact = false,
60
+ align = "center",
61
+ query,
62
+ children,
63
+ retryLabel = "Retry",
64
+ onRetry,
65
+ clearLabel = "Clear",
66
+ onClear,
67
+ className,
68
+ ...props
69
+ }: DataStateProps) {
70
+ const content = defaultContent[status]
71
+ const resolvedTone = tone ?? (status === "error" ? "danger" : status === "success" ? "success" : "default")
72
+ const isPlain = variant === "plain" || variant === "inline"
73
+ const body = (
74
+ <div
75
+ className={cn(
76
+ "flex flex-col justify-center",
77
+ align === "center" ? "items-center text-center" : "items-start text-left",
78
+ compact || variant === "inline" ? "p-4" : "min-h-52 p-8"
79
+ )}
80
+ >
81
+ <div
82
+ className={cn(
83
+ "mb-3 flex items-center justify-center rounded-full border border-border/70 bg-muted/45 shadow-[0_1px_0_rgba(255,255,255,0.05)] [&_svg]:size-5",
84
+ toneClassName[resolvedTone],
85
+ compact || variant === "inline" ? "size-9" : "size-12"
86
+ )}
87
+ >
88
+ {icon ?? content.icon}
89
+ </div>
90
+ <div className={cn("flex flex-wrap items-center gap-2", align === "center" ? "justify-center" : "justify-start")}>
91
+ <div className={cn("font-semibold tracking-tight text-foreground", compact ? "text-sm" : "text-base")}>{title ?? content.title}</div>
92
+ {badge}
93
+ </div>
94
+ <p className="mt-1 max-w-md text-sm text-muted-foreground">{description ?? content.description}</p>
95
+ {query && (
96
+ <div className="mt-3 max-w-full rounded-md border border-border/70 bg-muted/45 px-2.5 py-1 text-sm text-muted-foreground">
97
+ {query}
98
+ </div>
99
+ )}
100
+ {children && <div className="mt-4 w-full">{children}</div>}
101
+ {(actions || onRetry || onClear) && (
102
+ <div className={cn("mt-4 flex flex-wrap gap-2", align === "center" ? "justify-center" : "justify-start")}>
103
+ {onRetry && <Button size="sm" variant={status === "error" ? "default" : "outline"} onClick={onRetry}>{retryLabel}</Button>}
104
+ {onClear && (
105
+ <Button size="sm" variant="ghost" onClick={onClear}>
106
+ <XIcon data-icon="inline-start" />
107
+ {clearLabel}
108
+ </Button>
109
+ )}
110
+ {actions}
111
+ </div>
112
+ )}
113
+ {footer ? <div className="mt-4 w-full">{footer}</div> : null}
114
+ </div>
115
+ )
116
+
117
+ if (isPlain) {
118
+ return (
119
+ <div
120
+ data-slot="data-state"
121
+ data-status={status}
122
+ data-variant={variant}
123
+ className={cn(variant === "inline" ? "rounded-lg border border-border/70 bg-muted/20" : "min-w-0", className)}
124
+ {...props}
125
+ >
126
+ {body}
127
+ </div>
128
+ )
129
+ }
130
+
45
131
  return (
46
132
  <Card
47
133
  data-slot="data-state"
48
134
  data-status={status}
135
+ data-variant={variant}
49
136
  className={cn("min-w-0 border-border/75 bg-card/96 shadow-sm ring-1 ring-foreground/4", className)}
50
137
  {...props}
51
138
  >
52
- <CardContent className={cn("flex flex-col items-center justify-center text-center", compact ? "p-4" : "min-h-52 p-8")}>
53
- <div
54
- className={cn(
55
- "mb-3 flex items-center justify-center rounded-full border border-border/70 bg-muted/45 text-muted-foreground shadow-[0_1px_0_rgba(255,255,255,0.05)] [&_svg]:size-5",
56
- compact ? "size-9" : "size-12"
57
- )}
58
- >
59
- {icon ?? content.icon}
60
- </div>
61
- <div className={cn("font-semibold tracking-tight text-foreground", compact ? "text-sm" : "text-base")}>{title ?? content.title}</div>
62
- <p className="mt-1 max-w-md text-sm text-muted-foreground">{description ?? content.description}</p>
63
- {children && <div className="mt-4 w-full">{children}</div>}
64
- {(actions || onRetry) && (
65
- <div className="mt-4 flex flex-wrap justify-center gap-2">
66
- {onRetry && <Button size="sm" variant={status === "error" ? "default" : "outline"} onClick={onRetry}>{retryLabel}</Button>}
67
- {actions}
68
- </div>
69
- )}
70
- </CardContent>
71
- </Card>
72
- )
73
- }
139
+ <CardContent className="p-0">{body}</CardContent>
140
+ </Card>
141
+ )
142
+ }
74
143
 
75
144
  export { DataState }
@@ -8,12 +8,8 @@ export const displayShowcaseDemoRegistry = createShowcaseDemoRegistry([
8
8
  component("status-dot", "StatusDot", "display", "Tiny live status indicator with optional pulse animation."),
9
9
  component("user-card", "UserCard", "display", "User summary row with avatar, metadata and actions."),
10
10
  component("delta-badge", "DeltaBadge", "display", "Compact positive, negative, and risk deltas for metric summaries."),
11
- component("entity-header", "EntityHeader", "display", "Top summary row for a customer, invoice, or workspace."),
12
11
  component("notification-center", "NotificationCenter", "display", "Compact activity and notifications stream."),
13
- component("entity-card", "EntityCard", "display", "Structured summary card with title, meta, state and actions."),
14
- component("file-card", "FileCard", "display", "Compact file summary with state and actions."),
15
12
  component("data-list", "DataList", "display", "Readable title and description rows for compact operational lists."),
16
13
  component("status-legend", "StatusLegend", "display", "Explain status meaning and counts in a compact legend."),
17
14
  component("trend-card", "TrendCard", "display", "Metric summary card with trend context."),
18
- component("comparison-card", "ComparisonCard", "display", "Compare current and previous values in one compact card."),
19
15
  ])
@@ -2,33 +2,25 @@ export * from "./description-list"
2
2
  export * from "./data-list"
3
3
  export * from "./activity-feed"
4
4
  export * from "./avatar"
5
- export * from "./entity-header"
6
5
  export * from "./descriptions"
7
- export * from "./keyboard-shortcut"
8
6
  export * from "./kanban"
9
7
  export * from "./code-block"
10
8
  export * from "./data-state"
11
- export * from "./entity-card"
12
- export * from "./file-card"
13
9
  export * from "./list"
14
10
  export * from "./metric-grid"
15
11
  export * from "./progress"
16
12
  export * from "./progress-circle"
17
13
  export * from "./property-grid"
18
- export * from "./key-value-card"
19
14
  export * from "./result"
20
15
  export * from "./statistic"
21
16
  export * from "./status-dot"
22
17
  export * from "./status-legend"
23
- export * from "./tag-list"
24
18
  export * from "./timeline"
25
19
  export * from "./tree-view"
26
20
  export * from "./user-card"
27
21
  export * from "./trend-card"
28
22
  export * from "./comparison-card"
29
23
  export * from "./delta-badge"
30
- export * from "./skeleton-table"
31
- export * from "./skeleton-form"
32
24
  export {
33
25
  SmartCard as InfoCard,
34
26
  SmartCard,
@@ -5,21 +5,46 @@ import { cn } from "@/lib/utils"
5
5
 
6
6
  export type AlertTone = "info" | "success" | "warning" | "destructive" | "muted"
7
7
 
8
- export type AlertProps = React.ComponentProps<"div"> & {
9
- tone?: AlertTone
10
- title?: React.ReactNode
11
- description?: React.ReactNode
12
- icon?: React.ReactNode
13
- action?: React.ReactNode
14
- }
15
-
16
- const alertToneClassName: Record<AlertTone, string> = {
17
- info: "border-primary/25 bg-primary/5 text-foreground",
18
- success: "border-emerald-500/25 bg-emerald-500/10 text-foreground",
19
- warning: "border-amber-500/30 bg-amber-500/10 text-foreground",
20
- destructive: "border-destructive/30 bg-destructive/10 text-foreground",
21
- muted: "border-border bg-muted/50 text-foreground",
22
- }
8
+ export type AlertProps = React.ComponentProps<"div"> & {
9
+ tone?: AlertTone
10
+ variant?: "soft" | "outline" | "solid"
11
+ size?: "sm" | "md"
12
+ title?: React.ReactNode
13
+ description?: React.ReactNode
14
+ icon?: React.ReactNode
15
+ action?: React.ReactNode
16
+ dismissible?: boolean
17
+ dismissLabel?: string
18
+ onDismiss?: () => void
19
+ }
20
+
21
+ const alertToneClassName: Record<AlertTone, Record<NonNullable<AlertProps["variant"]>, string>> = {
22
+ info: {
23
+ soft: "border-primary/25 bg-primary/5 text-foreground",
24
+ outline: "border-primary/35 bg-background text-foreground",
25
+ solid: "border-primary bg-primary text-primary-foreground",
26
+ },
27
+ success: {
28
+ soft: "border-emerald-500/25 bg-emerald-500/10 text-foreground",
29
+ outline: "border-emerald-500/35 bg-background text-foreground",
30
+ solid: "border-emerald-600 bg-emerald-600 text-white",
31
+ },
32
+ warning: {
33
+ soft: "border-amber-500/30 bg-amber-500/10 text-foreground",
34
+ outline: "border-amber-500/35 bg-background text-foreground",
35
+ solid: "border-amber-500 bg-amber-500 text-amber-950",
36
+ },
37
+ destructive: {
38
+ soft: "border-destructive/30 bg-destructive/10 text-foreground",
39
+ outline: "border-destructive/35 bg-background text-foreground",
40
+ solid: "border-destructive bg-destructive text-destructive-foreground",
41
+ },
42
+ muted: {
43
+ soft: "border-border bg-muted/50 text-foreground",
44
+ outline: "border-border bg-background text-foreground",
45
+ solid: "border-border bg-foreground text-background",
46
+ },
47
+ }
23
48
 
24
49
  const alertIconClassName: Record<AlertTone, string> = {
25
50
  info: "text-primary",
@@ -42,14 +67,29 @@ function defaultIcon(tone: AlertTone) {
42
67
  }
43
68
  }
44
69
 
45
- function Alert({ tone = "info", title, description, icon, action, className, children, ...props }: AlertProps) {
70
+ function Alert({
71
+ tone = "info",
72
+ variant = "soft",
73
+ size = "md",
74
+ title,
75
+ description,
76
+ icon,
77
+ action,
78
+ dismissible = false,
79
+ dismissLabel = "Dismiss alert",
80
+ onDismiss,
81
+ className,
82
+ children,
83
+ ...props
84
+ }: AlertProps) {
46
85
  return (
47
86
  <div
48
87
  data-slot="alert"
88
+ data-size={size}
49
89
  role={tone === "destructive" || tone === "warning" ? "alert" : "status"}
50
90
  className={cn(
51
- "flex gap-3 rounded-[var(--radius-2xl)] border p-4 text-sm shadow-[0_1px_0_rgba(255,255,255,0.05)]",
52
- alertToneClassName[tone],
91
+ "flex gap-3 rounded-[var(--aui-card-radius,var(--radius-xl))] border p-4 text-sm shadow-[var(--aui-card-shadow,var(--aui-control-shadow,0_1px_0_rgba(255,255,255,0.05)))] data-[size=sm]:p-3",
92
+ alertToneClassName[tone][variant],
53
93
  className
54
94
  )}
55
95
  {...props}
@@ -58,22 +98,40 @@ function Alert({ tone = "info", title, description, icon, action, className, chi
58
98
  data-slot="alert-icon"
59
99
  className={cn(
60
100
  "mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-full border border-current/10 bg-background/55",
101
+ variant === "solid" && "bg-white/12 text-current",
61
102
  alertIconClassName[tone]
62
103
  )}
63
104
  >
64
105
  {icon ?? defaultIcon(tone)}
65
106
  </div>
66
107
  <div className="min-w-0 flex-1 space-y-1">
67
- {title && <div data-slot="alert-title" className="font-medium leading-none">{title}</div>}
68
- {(description || children) && (
69
- <div data-slot="alert-description" className="text-muted-foreground">
70
- {description ?? children}
71
- </div>
72
- )}
108
+ {title && <div data-slot="alert-title" className="font-medium leading-none">{title}</div>}
109
+ {(description || children) && (
110
+ <div data-slot="alert-description" className={cn("text-muted-foreground", variant === "solid" && "text-current/88")}>
111
+ {description ?? children}
112
+ </div>
113
+ )}
73
114
  </div>
74
- {action && <div data-slot="alert-action" className="shrink-0">{action}</div>}
75
- </div>
76
- )
77
- }
115
+ {(action || dismissible) ? (
116
+ <div data-slot="alert-action" className="flex shrink-0 items-start gap-2">
117
+ {action}
118
+ {dismissible ? (
119
+ <button
120
+ type="button"
121
+ aria-label={dismissLabel}
122
+ className={cn(
123
+ "inline-flex size-8 items-center justify-center rounded-full border border-current/10 bg-background/45 text-current transition-opacity hover:opacity-90",
124
+ variant === "solid" && "bg-white/12"
125
+ )}
126
+ onClick={onDismiss}
127
+ >
128
+ <span aria-hidden="true">×</span>
129
+ </button>
130
+ ) : null}
131
+ </div>
132
+ ) : null}
133
+ </div>
134
+ )
135
+ }
78
136
 
79
137
  export { Alert }
@@ -1,5 +1,3 @@
1
1
  export * from "./alert"
2
- export * from "./empty-state"
3
2
  export * from "./loading-state"
4
3
  export * from "./page-state"
5
- export * from "./empty-search-state"
@@ -2,6 +2,5 @@ import { component, createShowcaseDemoRegistry } from "@/showcase/create-demo"
2
2
 
3
3
  export const filtersShowcaseDemoRegistry = createShowcaseDemoRegistry([
4
4
  component("filter-bar", "FilterBar", "actions", "Search, filters, active-count and reset actions in one toolbar."),
5
- component("filter-chips", "FilterChips", "actions", "Inline active filter summaries with clear and remove actions."),
6
5
  component("data-table-saved-filters", "SavedFilterSelect", "actions", "Saved filter chips and quick view controls."),
7
6
  ])
@@ -1,40 +1,77 @@
1
1
  import * as React from "react"
2
- import { SlidersHorizontalIcon, XIcon } from "lucide-react"
2
+ import { SlidersHorizontalIcon, XIcon } from "lucide-react"
3
+
4
+ import { Badge } from "@/components/ui/badge"
5
+ import { Button } from "@/components/ui/button"
6
+ import { cn, stopInteractivePropagation } from "@/lib/utils"
7
+
8
+ export type FilterBarChip = {
9
+ key: string
10
+ label: React.ReactNode
11
+ value?: React.ReactNode
12
+ tone?: "default" | "success" | "warning" | "danger" | "info" | "muted"
13
+ disabled?: boolean
14
+ hidden?: boolean
15
+ }
3
16
 
4
- import { Button } from "@/components/ui/button"
5
- import { cn } from "@/lib/utils"
6
-
7
- export type FilterBarProps = React.ComponentProps<"div"> & {
17
+ export type FilterBarProps = React.ComponentProps<"div"> & {
8
18
  search?: React.ReactNode
9
19
  filters?: React.ReactNode
10
- actions?: React.ReactNode
11
- activeCount?: number
12
- activeLabel?: (count: number) => React.ReactNode
13
- resetLabel?: React.ReactNode
14
- onReset?: () => void
15
- collapsible?: boolean
16
- defaultExpanded?: boolean
17
- }
20
+ actions?: React.ReactNode
21
+ chips?: FilterBarChip[]
22
+ activeCount?: number
23
+ activeLabel?: (count: number) => React.ReactNode
24
+ resetLabel?: React.ReactNode
25
+ clearChipLabel?: React.ReactNode
26
+ onReset?: () => void
27
+ onRemoveChip?: (key: string) => void
28
+ collapsible?: boolean
29
+ defaultExpanded?: boolean
30
+ emptyChips?: React.ReactNode
31
+ chipLimit?: number
32
+ chipOverflowLabel?: (hiddenCount: number) => React.ReactNode
33
+ }
34
+
35
+ const chipVariant: Record<NonNullable<FilterBarChip["tone"]>, React.ComponentProps<typeof Badge>["variant"]> = {
36
+ default: "secondary",
37
+ success: "secondary",
38
+ warning: "outline",
39
+ danger: "destructive",
40
+ info: "outline",
41
+ muted: "outline",
42
+ }
18
43
 
19
44
  function FilterBar({
20
45
  className,
21
- search,
22
- filters,
23
- actions,
24
- activeCount = 0,
25
- activeLabel = (count) => `${count} active`,
26
- resetLabel = "Reset",
27
- onReset,
28
- collapsible = false,
29
- defaultExpanded = false,
30
- children,
31
- ...props
32
- }: FilterBarProps) {
33
- const [expanded, setExpanded] = React.useState(defaultExpanded)
34
- const hasFilters = Boolean(filters || children)
35
- const shouldShowFilters = !collapsible || expanded
36
-
37
- return (
46
+ search,
47
+ filters,
48
+ actions,
49
+ chips,
50
+ activeCount,
51
+ activeLabel = (count) => `${count} active`,
52
+ resetLabel = "Reset",
53
+ clearChipLabel,
54
+ onReset,
55
+ onRemoveChip,
56
+ collapsible = false,
57
+ defaultExpanded = false,
58
+ emptyChips,
59
+ chipLimit,
60
+ chipOverflowLabel = (hiddenCount) => `+${hiddenCount} more`,
61
+ children,
62
+ ...props
63
+ }: FilterBarProps) {
64
+ const [expanded, setExpanded] = React.useState(defaultExpanded)
65
+ const visibleChips = chips?.filter((chip) => !chip.hidden) ?? []
66
+ const renderedChips = chipLimit && chipLimit > 0 ? visibleChips.slice(0, chipLimit) : visibleChips
67
+ const hiddenChipCount = Math.max(visibleChips.length - renderedChips.length, 0)
68
+ const resolvedActiveCount = activeCount ?? visibleChips.length
69
+ const hasFilters = Boolean(filters || children)
70
+ const hasChips = Boolean(chips)
71
+ const shouldShowFilters = !collapsible || expanded
72
+ const shouldShowChipRow = visibleChips.length > 0 || (hasChips && emptyChips)
73
+
74
+ return (
38
75
  <div
39
76
  data-slot="filter-bar"
40
77
  className={cn("flex flex-col gap-3 rounded-lg border bg-card p-3", className)}
@@ -51,25 +88,25 @@ function FilterBar({
51
88
  size="sm"
52
89
  onClick={() => setExpanded((value) => !value)}
53
90
  >
54
- <SlidersHorizontalIcon data-icon="inline-start" />
55
- Filters
56
- {activeCount > 0 && (
57
- <span className="ml-1 rounded-full bg-background px-1.5 text-xs">
58
- {activeCount}
59
- </span>
60
- )}
61
- </Button>
91
+ <SlidersHorizontalIcon data-icon="inline-start" />
92
+ Filters
93
+ {resolvedActiveCount > 0 && (
94
+ <span className="ml-1 rounded-full bg-background px-1.5 text-xs">
95
+ {resolvedActiveCount}
96
+ </span>
97
+ )}
98
+ </Button>
62
99
  )}
63
100
  </div>
64
-
65
- <div className="flex shrink-0 flex-wrap items-center gap-2">
66
- {activeCount > 0 && (
67
- <span className="text-sm text-muted-foreground">{activeLabel(activeCount)}</span>
68
- )}
69
- {activeCount > 0 && onReset && (
70
- <Button type="button" variant="ghost" size="sm" onClick={onReset}>
71
- <XIcon data-icon="inline-start" />
72
- {resetLabel}
101
+
102
+ <div className="flex shrink-0 flex-wrap items-center gap-2">
103
+ {resolvedActiveCount > 0 && (
104
+ <span className="text-sm text-muted-foreground">{activeLabel(resolvedActiveCount)}</span>
105
+ )}
106
+ {resolvedActiveCount > 0 && onReset && (
107
+ <Button type="button" variant="ghost" size="sm" onClick={onReset}>
108
+ <XIcon data-icon="inline-start" />
109
+ {resetLabel}
73
110
  </Button>
74
111
  )}
75
112
  {actions}
@@ -78,12 +115,47 @@ function FilterBar({
78
115
 
79
116
  {hasFilters && shouldShowFilters && (
80
117
  <div className="flex flex-col gap-2 sm:flex-row sm:flex-wrap sm:items-center">
81
- {filters}
82
- {children}
83
- </div>
84
- )}
85
- </div>
86
- )
87
- }
118
+ {filters}
119
+ {children}
120
+ </div>
121
+ )}
122
+
123
+ {shouldShowChipRow && (
124
+ <div data-slot="filter-bar-chips" className="flex flex-wrap items-center gap-2">
125
+ {visibleChips.length > 0 ? (
126
+ <>
127
+ {renderedChips.map((chip) => (
128
+ <Badge key={chip.key} variant={chipVariant[chip.tone ?? "default"]} className={cn("gap-1.5", chip.disabled && "opacity-60")}>
129
+ <span>{chip.label}</span>
130
+ {chip.value !== undefined && <span className="text-muted-foreground">{chip.value}</span>}
131
+ {onRemoveChip && !chip.disabled && (
132
+ <button
133
+ type="button"
134
+ aria-label={typeof clearChipLabel === "string" ? clearChipLabel : "Remove filter"}
135
+ className="rounded-full p-0.5 hover:bg-muted"
136
+ onClick={(event) => {
137
+ stopInteractivePropagation(event)
138
+ onRemoveChip(chip.key)
139
+ }}
140
+ onMouseDown={stopInteractivePropagation}
141
+ onDoubleClick={stopInteractivePropagation}
142
+ >
143
+ <XIcon className="size-3" />
144
+ </button>
145
+ )}
146
+ </Badge>
147
+ ))}
148
+ {hiddenChipCount > 0 ? (
149
+ <Badge variant="outline">{chipOverflowLabel(hiddenChipCount)}</Badge>
150
+ ) : null}
151
+ </>
152
+ ) : (
153
+ <span className="text-sm text-muted-foreground">{emptyChips}</span>
154
+ )}
155
+ </div>
156
+ )}
157
+ </div>
158
+ )
159
+ }
88
160
 
89
161
  export { FilterBar }
@@ -1,3 +1,2 @@
1
- export * from "./filter-chips"
2
1
  export * from "./filter-bar"
3
2
  export * from "./saved-filter-select"
@@ -7,5 +7,4 @@ export const formShowcaseDemoRegistry = createShowcaseDemoRegistry([
7
7
  component("form-switch", "FormSwitch", "form", "Boolean form control with shell-level label and hint handling."),
8
8
  component("form-date-picker", "FormDatePicker", "form", "Popover date picker wrapper with RHF integration."),
9
9
  component("form-date-range-picker", "FormDateRangePicker", "form", "Range date picker wrapper with RHF integration."),
10
- component("repeater-field", "RepeaterField", "form", "Repeating field array surface for editable lists inside forms."),
11
10
  ])