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
@@ -3,31 +3,63 @@ import * as React from "react"
3
3
  import { CopyButton } from "@/components/actions/copy-button"
4
4
  import { cn } from "@/lib/utils"
5
5
 
6
- export type CodeBlockProps = React.ComponentProps<"div"> & {
7
- code: string
8
- language?: string
9
- title?: React.ReactNode
10
- showCopy?: boolean
11
- wrap?: boolean
12
- }
13
-
14
- function CodeBlock({ code, language, title, showCopy = true, wrap = false, className, ...props }: CodeBlockProps) {
15
- return (
16
- <div data-slot="code-block" className={cn("overflow-hidden rounded-lg border bg-card", className)} {...props}>
17
- {(title || language || showCopy) && (
18
- <div className="flex items-center justify-between gap-3 border-b px-3 py-2 text-xs text-muted-foreground">
19
- <div className="flex min-w-0 items-center gap-2">
20
- {title && <span className="truncate font-medium text-foreground">{title}</span>}
21
- {language && <span className="rounded bg-muted px-1.5 py-0.5 font-mono">{language}</span>}
22
- </div>
23
- {showCopy && <CopyButton value={code} size="sm" variant="ghost" copyLabel="Copy" copiedLabel="Copied" />}
24
- </div>
25
- )}
26
- <pre className={cn("overflow-x-auto p-3 text-sm", wrap && "whitespace-pre-wrap break-words")}>
27
- <code>{code}</code>
28
- </pre>
29
- </div>
30
- )
31
- }
6
+ export type CodeBlockProps = React.ComponentProps<"div"> & {
7
+ code: string
8
+ language?: string
9
+ title?: React.ReactNode
10
+ showCopy?: boolean
11
+ wrap?: boolean
12
+ lineNumbers?: boolean
13
+ maxHeight?: number | string
14
+ }
15
+
16
+ function CodeBlock({
17
+ code,
18
+ language,
19
+ title,
20
+ showCopy = true,
21
+ wrap = false,
22
+ lineNumbers = false,
23
+ maxHeight,
24
+ className,
25
+ ...props
26
+ }: CodeBlockProps) {
27
+ const lines = React.useMemo(() => code.split("\n"), [code])
28
+
29
+ return (
30
+ <div
31
+ data-slot="code-block"
32
+ className={cn("overflow-hidden rounded-[var(--aui-card-radius,var(--radius-xl))] border border-[color:var(--aui-card-border,var(--border))] bg-card", className)}
33
+ {...props}
34
+ >
35
+ {(title || language || showCopy) && (
36
+ <div className="flex items-center justify-between gap-3 border-b border-[color:var(--aui-card-border,var(--border))] bg-[color:color-mix(in_oklch,var(--muted),transparent_72%)] px-3 py-2 text-xs text-muted-foreground">
37
+ <div className="flex min-w-0 items-center gap-2">
38
+ {title && <span className="truncate font-medium text-foreground">{title}</span>}
39
+ {language && <span className="rounded bg-muted px-1.5 py-0.5 font-mono">{language}</span>}
40
+ </div>
41
+ {showCopy && <CopyButton value={code} size="sm" variant="ghost" copyLabel="Copy" copiedLabel="Copied" />}
42
+ </div>
43
+ )}
44
+ <pre
45
+ className={cn("overflow-x-auto p-3 text-sm leading-6", wrap && "whitespace-pre-wrap break-words")}
46
+ style={maxHeight ? { maxHeight, overflowY: "auto" } : undefined}
47
+ >
48
+ {lineNumbers ? (
49
+ <code className="grid">
50
+ {lines.map((line, index) => (
51
+ <span key={`${index}-${line}`} className="grid grid-cols-[auto_1fr] gap-4">
52
+ <span className="select-none text-right text-xs text-muted-foreground/75">{index + 1}</span>
53
+ <span>{line || " "}</span>
54
+ </span>
55
+ ))}
56
+ </code>
57
+ ) : (
58
+ <code>{code}</code>
59
+ )}
60
+ </pre>
61
+ </div>
62
+ )
63
+ }
32
64
 
33
65
  export { CodeBlock }
@@ -1,8 +1,6 @@
1
1
  import * as React from "react"
2
2
 
3
- import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"
4
- import { DeltaBadge } from "@/components/display/delta-badge"
5
- import { cn } from "@/lib/utils"
3
+ import { StatCard } from "@/components/layout/stat-card"
6
4
 
7
5
  export type ComparisonCardItem = {
8
6
  label: React.ReactNode
@@ -11,50 +9,26 @@ export type ComparisonCardItem = {
11
9
  trend?: "up" | "down" | "neutral"
12
10
  }
13
11
 
14
- export type ComparisonCardProps = React.ComponentProps<typeof Card> & {
12
+ export type ComparisonCardProps = Omit<React.ComponentProps<typeof StatCard>, "comparisonItems" | "comparisonColumns"> & {
15
13
  title?: React.ReactNode
16
14
  items: ComparisonCardItem[]
17
15
  columns?: 2 | 3 | 4
18
16
  }
19
17
 
20
- function ComparisonCard({
21
- title,
22
- items,
23
- columns = 2,
24
- className,
25
- ...props
26
- }: ComparisonCardProps) {
18
+ function ComparisonCard({ title, items, columns = 2, ...props }: ComparisonCardProps) {
27
19
  return (
28
- <Card data-slot="comparison-card" className={className} {...props}>
29
- {title && (
30
- <CardHeader className="pb-3">
31
- <CardTitle className="text-sm font-medium">{title}</CardTitle>
32
- </CardHeader>
33
- )}
34
- <CardContent className={cn(title ? "pt-0" : "")}>
35
- <div
36
- className={cn(
37
- "grid gap-4",
38
- columns === 2 && "grid-cols-2",
39
- columns === 3 && "grid-cols-3",
40
- columns === 4 && "grid-cols-2 sm:grid-cols-4",
41
- !title && "pt-6"
42
- )}
43
- >
44
- {items.map((item, index) => (
45
- <div key={index} className="flex flex-col gap-1">
46
- <span className="text-xs text-muted-foreground">{item.label}</span>
47
- <div className="flex items-baseline gap-1.5">
48
- <span className="text-lg font-semibold leading-none">{item.value}</span>
49
- {item.change && (
50
- <DeltaBadge size="sm" value={item.change} trend={item.trend} />
51
- )}
52
- </div>
53
- </div>
54
- ))}
55
- </div>
56
- </CardContent>
57
- </Card>
20
+ <StatCard
21
+ data-slot="comparison-card"
22
+ title={title}
23
+ comparisonColumns={columns}
24
+ comparisonItems={items.map((item) => ({
25
+ label: item.label,
26
+ value: item.value,
27
+ change: item.change,
28
+ trend: item.trend === "up" ? "success" : item.trend === "down" ? "danger" : "neutral",
29
+ }))}
30
+ {...props}
31
+ />
58
32
  )
59
33
  }
60
34
 
@@ -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,13 +2,10 @@ 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
6
  export * from "./kanban"
8
7
  export * from "./code-block"
9
8
  export * from "./data-state"
10
- export * from "./entity-card"
11
- export * from "./file-card"
12
9
  export * from "./list"
13
10
  export * from "./metric-grid"
14
11
  export * from "./progress"
@@ -38,7 +38,7 @@ export type InfoCardRenderContext = {
38
38
  footer?: React.ReactNode
39
39
  }
40
40
 
41
- export type InfoCardProps = Omit<React.ComponentProps<typeof Card>, "title" | "content" | "size"> & InfoCardRenderContext & {
41
+ export type InfoCardProps = Omit<React.ComponentProps<typeof Card>, "title" | "content" | "size" | "orientation"> & InfoCardRenderContext & {
42
42
  orientation?: InfoCardOrientation
43
43
  variant?: InfoCardVariant
44
44
  size?: InfoCardSize
@@ -18,7 +18,7 @@ export type StatusLegendItem = {
18
18
  className?: string
19
19
  }
20
20
 
21
- export type StatusLegendProps = React.ComponentProps<typeof Card> & {
21
+ export type StatusLegendProps = Omit<React.ComponentProps<typeof Card>, "orientation"> & {
22
22
  title?: React.ReactNode
23
23
  description?: React.ReactNode
24
24
  actions?: React.ReactNode
@@ -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
  ])