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,52 +0,0 @@
1
- import * as React from "react"
2
- import { XIcon } from "lucide-react"
3
-
4
- import { Badge } from "@/components/ui/badge"
5
- import { cn } from "@/lib/utils"
6
-
7
- export type TagListItem = {
8
- key: string
9
- label: React.ReactNode
10
- variant?: React.ComponentProps<typeof Badge>["variant"]
11
- disabled?: boolean
12
- }
13
-
14
- export type TagListProps = React.ComponentProps<"div"> & {
15
- items: TagListItem[]
16
- max?: number
17
- removable?: boolean
18
- onRemove?: (item: TagListItem) => void
19
- overflowLabel?: (count: number) => React.ReactNode
20
- }
21
-
22
- function TagList({ items, max, removable = false, onRemove, overflowLabel = (count) => `+${count}`, className, ...props }: TagListProps) {
23
- const visibleItems = typeof max === "number" ? items.slice(0, max) : items
24
- const overflowCount = typeof max === "number" ? Math.max(items.length - max, 0) : 0
25
-
26
- return (
27
- <div data-slot="tag-list" className={cn("flex flex-wrap items-center gap-1.5", className)} {...props}>
28
- {visibleItems.map((item) => (
29
- <Badge
30
- key={item.key}
31
- variant={item.variant}
32
- className={cn("gap-1", item.disabled && "opacity-55")}
33
- >
34
- <span>{item.label}</span>
35
- {removable && !item.disabled && (
36
- <button
37
- type="button"
38
- aria-label="Remove tag"
39
- className="rounded-sm text-muted-foreground hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
40
- onClick={() => onRemove?.(item)}
41
- >
42
- <XIcon className="size-3" />
43
- </button>
44
- )}
45
- </Badge>
46
- ))}
47
- {overflowCount > 0 && <Badge variant="outline">{overflowLabel(overflowCount)}</Badge>}
48
- </div>
49
- )
50
- }
51
-
52
- export { TagList }
@@ -1,20 +0,0 @@
1
- import * as React from "react"
2
-
3
- import { cn } from "@/lib/utils"
4
-
5
- export type WatermarkProps = React.ComponentProps<"div"> & {
6
- text?: string
7
- }
8
-
9
- function Watermark({ text = "Azamat UI", className, children, ...props }: WatermarkProps) {
10
- return (
11
- <div data-slot="watermark" className={cn("relative overflow-hidden", className)} {...props}>
12
- <div className="pointer-events-none absolute inset-0 z-0 grid place-items-center opacity-10">
13
- <span className="rotate-[-24deg] select-none text-4xl font-bold tracking-widest text-muted-foreground">{text}</span>
14
- </div>
15
- <div className="relative z-10">{children}</div>
16
- </div>
17
- )
18
- }
19
-
20
- export { Watermark }
@@ -1,65 +0,0 @@
1
- import * as React from "react"
2
- import { SearchXIcon } from "lucide-react"
3
-
4
- import { Button } from "@/components/ui/button"
5
- import { cn } from "@/lib/utils"
6
-
7
- export type EmptySearchStateProps = React.ComponentProps<"div"> & {
8
- query?: string
9
- title?: React.ReactNode
10
- description?: React.ReactNode
11
- suggestions?: React.ReactNode
12
- onClear?: () => void
13
- clearLabel?: React.ReactNode
14
- }
15
-
16
- function EmptySearchState({
17
- query,
18
- title = "No results found",
19
- description,
20
- suggestions,
21
- onClear,
22
- clearLabel = "Clear search",
23
- className,
24
- ...props
25
- }: EmptySearchStateProps) {
26
- return (
27
- <div
28
- data-slot="empty-search-state"
29
- className={cn(
30
- "flex flex-col items-center justify-center p-8 text-center min-h-[300px]",
31
- className
32
- )}
33
- {...props}
34
- >
35
- <div className="mb-4 flex size-12 items-center justify-center rounded-full bg-muted/50 text-muted-foreground">
36
- <SearchXIcon className="size-6" />
37
- </div>
38
- <h3 className="text-lg font-semibold tracking-tight">
39
- {title} {query ? `for "${query}"` : ""}
40
- </h3>
41
-
42
- {description && (
43
- <p className="mt-2 text-sm text-muted-foreground max-w-sm">
44
- {description}
45
- </p>
46
- )}
47
-
48
- {suggestions && (
49
- <div className="mt-4 text-sm text-muted-foreground">
50
- {suggestions}
51
- </div>
52
- )}
53
-
54
- {onClear && (
55
- <div className="mt-6">
56
- <Button variant="outline" onClick={onClear}>
57
- {clearLabel}
58
- </Button>
59
- </div>
60
- )}
61
- </div>
62
- )
63
- }
64
-
65
- export { EmptySearchState }
@@ -1,56 +0,0 @@
1
- import * as React from "react"
2
- import { InboxIcon } from "lucide-react"
3
-
4
- import { Button } from "@/components/ui/button"
5
- import { cn } from "@/lib/utils"
6
-
7
- export type EmptyStateProps = React.ComponentProps<"div"> & {
8
- icon?: React.ReactNode
9
- title?: React.ReactNode
10
- description?: React.ReactNode
11
- action?: React.ReactNode
12
- actionLabel?: React.ReactNode
13
- onAction?: () => void
14
- }
15
-
16
- function EmptyState({
17
- className,
18
- icon,
19
- title = "No data",
20
- description,
21
- action,
22
- actionLabel,
23
- onAction,
24
- ...props
25
- }: EmptyStateProps) {
26
- return (
27
- <div
28
- data-slot="empty-state"
29
- className={cn(
30
- "flex min-h-52 flex-col items-center justify-center gap-4 rounded-[var(--radius-3xl)] border border-dashed border-border/80 bg-muted/25 p-10 text-center shadow-sm ring-1 ring-foreground/4",
31
- className
32
- )}
33
- {...props}
34
- >
35
- <div className="flex size-12 items-center justify-center rounded-full border border-border/70 bg-background/92 text-muted-foreground shadow-[0_1px_0_rgba(255,255,255,0.08)]">
36
- {icon ?? <InboxIcon className="size-5" />}
37
- </div>
38
-
39
- <div className="grid gap-1.5">
40
- {title && <h3 className="text-base font-semibold tracking-tight text-foreground">{title}</h3>}
41
- {description && (
42
- <p className="max-w-sm text-sm leading-6 text-muted-foreground">{description}</p>
43
- )}
44
- </div>
45
-
46
- {action ??
47
- (actionLabel && onAction ? (
48
- <Button type="button" variant="outline" size="sm" onClick={onAction}>
49
- {actionLabel}
50
- </Button>
51
- ) : null)}
52
- </div>
53
- )
54
- }
55
-
56
- export { EmptyState }
@@ -1,89 +0,0 @@
1
- import * as React from "react"
2
- import { 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 FilterChip = {
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
- }
16
-
17
- export type FilterChipsProps = React.ComponentProps<"div"> & {
18
- chips: FilterChip[]
19
- clearLabel?: React.ReactNode
20
- empty?: React.ReactNode
21
- onRemove?: (key: string) => void
22
- onClear?: () => void
23
- }
24
-
25
- const chipVariant: Record<NonNullable<FilterChip["tone"]>, React.ComponentProps<typeof Badge>["variant"]> = {
26
- default: "secondary",
27
- success: "secondary",
28
- warning: "outline",
29
- danger: "destructive",
30
- info: "outline",
31
- muted: "outline",
32
- }
33
-
34
- function FilterChips({
35
- chips,
36
- clearLabel = "Clear all",
37
- empty = "No active filters",
38
- onRemove,
39
- onClear,
40
- className,
41
- ...props
42
- }: FilterChipsProps) {
43
- const visibleChips = chips.filter((chip) => !chip.hidden)
44
- if (!visibleChips.length) {
45
- return <div data-slot="filter-chips-empty" className={cn("text-sm text-muted-foreground", className)} {...props}>{empty}</div>
46
- }
47
-
48
- return (
49
- <div data-slot="filter-chips" className={cn("flex flex-wrap items-center gap-2", className)} {...props}>
50
- {visibleChips.map((chip) => (
51
- <Badge key={chip.key} variant={chipVariant[chip.tone ?? "default"]} className={cn("gap-1.5", chip.disabled && "opacity-60")}>
52
- <span>{chip.label}</span>
53
- {chip.value !== undefined && <span className="text-muted-foreground">{chip.value}</span>}
54
- {onRemove && !chip.disabled && (
55
- <button
56
- type="button"
57
- className="rounded-full p-0.5 hover:bg-muted"
58
- onClick={(event) => {
59
- stopInteractivePropagation(event)
60
- onRemove(chip.key)
61
- }}
62
- onMouseDown={stopInteractivePropagation}
63
- onDoubleClick={stopInteractivePropagation}
64
- >
65
- <XIcon className="size-3" />
66
- </button>
67
- )}
68
- </Badge>
69
- ))}
70
- {onClear && (
71
- <Button
72
- type="button"
73
- variant="ghost"
74
- size="xs"
75
- onClick={(event) => {
76
- stopInteractivePropagation(event)
77
- onClear()
78
- }}
79
- onMouseDown={stopInteractivePropagation}
80
- onDoubleClick={stopInteractivePropagation}
81
- >
82
- {clearLabel}
83
- </Button>
84
- )}
85
- </div>
86
- )
87
- }
88
-
89
- export { FilterChips }
@@ -1,93 +0,0 @@
1
- import * as React from "react"
2
- import { PlusIcon, Trash2Icon } from "lucide-react"
3
-
4
- import { Button } from "@/components/ui/button"
5
- import { cn } from "@/lib/utils"
6
-
7
- export type RepeaterFieldProps<T> = Omit<React.ComponentProps<"div">, "value" | "onChange"> & {
8
- value: T[]
9
- onValueChange: (value: T[]) => void
10
- renderItem: (item: T, index: number, helpers: { remove: () => void; update: (item: T) => void }) => React.ReactNode
11
- createItem: () => T
12
- addLabel?: React.ReactNode
13
- max?: number
14
- min?: number
15
- disabled?: boolean
16
- }
17
-
18
- function RepeaterField<T>({
19
- value,
20
- onValueChange,
21
- renderItem,
22
- createItem,
23
- addLabel = "Add item",
24
- max = Infinity,
25
- min = 0,
26
- disabled = false,
27
- className,
28
- ...props
29
- }: RepeaterFieldProps<T>) {
30
- const handleAdd = () => {
31
- if (value.length < max) {
32
- onValueChange([...value, createItem()])
33
- }
34
- }
35
-
36
- const handleRemove = (indexToRemove: number) => {
37
- if (value.length > min) {
38
- onValueChange(value.filter((_, index) => index !== indexToRemove))
39
- }
40
- }
41
-
42
- const handleUpdate = (indexToUpdate: number, newItem: T) => {
43
- const newItems = [...value]
44
- newItems[indexToUpdate] = newItem
45
- onValueChange(newItems)
46
- }
47
-
48
- const canAdd = value.length < max && !disabled
49
- const canRemove = value.length > min && !disabled
50
-
51
- return (
52
- <div data-slot="repeater-field" className={cn("flex flex-col gap-4", className)} {...props}>
53
- {value.map((item, index) => (
54
- <div key={index} className="flex items-start gap-2">
55
- <div className="flex-1 min-w-0">
56
- {renderItem(item, index, {
57
- remove: () => handleRemove(index),
58
- update: (newItem: T) => handleUpdate(index, newItem),
59
- })}
60
- </div>
61
- {canRemove && (
62
- <Button
63
- type="button"
64
- variant="outline"
65
- size="icon"
66
- className="shrink-0 text-muted-foreground hover:text-destructive"
67
- onClick={() => handleRemove(index)}
68
- aria-label="Remove item"
69
- >
70
- <Trash2Icon className="size-4" />
71
- </Button>
72
- )}
73
- </div>
74
- ))}
75
- {canAdd && (
76
- <div>
77
- <Button
78
- type="button"
79
- variant="outline"
80
- size="sm"
81
- onClick={handleAdd}
82
- className="w-full sm:w-auto"
83
- >
84
- <PlusIcon className="mr-2 size-4" />
85
- {addLabel}
86
- </Button>
87
- </div>
88
- )}
89
- </div>
90
- )
91
- }
92
-
93
- export { RepeaterField }
@@ -1,41 +0,0 @@
1
- import * as React from "react"
2
-
3
- import { cn } from "@/lib/utils"
4
-
5
- export type CascaderOption = {
6
- label: React.ReactNode
7
- value: string
8
- children?: CascaderOption[]
9
- }
10
-
11
- export type CascaderProps = React.ComponentProps<"div"> & {
12
- options: CascaderOption[]
13
- value?: string[]
14
- onValueChange?: (value: string[]) => void
15
- }
16
-
17
- function Cascader({ options, value = [], onValueChange, className, ...props }: CascaderProps) {
18
- const firstValue = value[0] ?? ""
19
- const secondOptions = options.find((item) => item.value === firstValue)?.children ?? []
20
- const secondValue = value[1] ?? ""
21
- const thirdOptions = secondOptions.find((item) => item.value === secondValue)?.children ?? []
22
-
23
- return (
24
- <div data-slot="cascader" className={cn("grid gap-2 sm:grid-cols-3", className)} {...props}>
25
- <select className="h-10 rounded-md border bg-background px-3 text-sm" value={firstValue} onChange={(event) => onValueChange?.([event.target.value])}>
26
- <option value="">Select</option>
27
- {options.map((option) => <option key={option.value} value={option.value}>{option.label}</option>)}
28
- </select>
29
- <select className="h-10 rounded-md border bg-background px-3 text-sm" value={secondValue} disabled={!secondOptions.length} onChange={(event) => onValueChange?.([firstValue, event.target.value])}>
30
- <option value="">Select</option>
31
- {secondOptions.map((option) => <option key={option.value} value={option.value}>{option.label}</option>)}
32
- </select>
33
- <select className="h-10 rounded-md border bg-background px-3 text-sm" value={value[2] ?? ""} disabled={!thirdOptions.length} onChange={(event) => onValueChange?.([firstValue, secondValue, event.target.value])}>
34
- <option value="">Select</option>
35
- {thirdOptions.map((option) => <option key={option.value} value={option.value}>{option.label}</option>)}
36
- </select>
37
- </div>
38
- )
39
- }
40
-
41
- export { Cascader }
@@ -1,162 +0,0 @@
1
- import * as React from "react"
2
-
3
- import { cn } from "@/lib/utils"
4
-
5
- export type MentionOption = {
6
- label: React.ReactNode
7
- value: string
8
- searchText?: string
9
- insertValue?: string
10
- }
11
-
12
- export type MentionInputProps = Omit<React.ComponentProps<"textarea">, "value" | "defaultValue"> & {
13
- value?: string
14
- defaultValue?: string
15
- options?: MentionOption[]
16
- onMentionSelect?: (value: string) => void
17
- onValueChange?: (value: string) => void
18
- trigger?: string
19
- maxSuggestions?: number
20
- }
21
-
22
- function getTriggerMatch(value: string, selectionStart: number, trigger: string) {
23
- const prefix = value.slice(0, selectionStart)
24
- const triggerIndex = prefix.lastIndexOf(trigger)
25
-
26
- if (triggerIndex < 0) return null
27
-
28
- const previousCharacter = prefix[triggerIndex - 1]
29
- if (previousCharacter && /\S/.test(previousCharacter)) return null
30
-
31
- const query = prefix.slice(triggerIndex + trigger.length)
32
- if (/\s/.test(query)) return null
33
-
34
- return { triggerIndex, query }
35
- }
36
-
37
- function MentionInput({
38
- value,
39
- defaultValue = "",
40
- options = [],
41
- onMentionSelect,
42
- onValueChange,
43
- className,
44
- trigger = "@",
45
- maxSuggestions = 6,
46
- onChange,
47
- onKeyDown,
48
- ...props
49
- }: MentionInputProps) {
50
- const textareaRef = React.useRef<HTMLTextAreaElement>(null)
51
- const [internalValue, setInternalValue] = React.useState(defaultValue)
52
- const [selectionStart, setSelectionStart] = React.useState(0)
53
- const [activeIndex, setActiveIndex] = React.useState(0)
54
- const currentValue = value ?? internalValue
55
- const triggerMatch = getTriggerMatch(currentValue, selectionStart, trigger)
56
- const filteredOptions = React.useMemo(() => {
57
- if (!triggerMatch) return []
58
- const normalizedQuery = triggerMatch.query.trim().toLowerCase()
59
-
60
- return options
61
- .filter((option) => {
62
- if (!normalizedQuery) return true
63
- const rawLabel = typeof option.label === "string" ? option.label : option.value
64
- const haystack = `${option.value} ${option.searchText ?? ""} ${rawLabel}`.toLowerCase()
65
- return haystack.includes(normalizedQuery)
66
- })
67
- .slice(0, maxSuggestions)
68
- }, [maxSuggestions, options, triggerMatch])
69
- const showSuggestions = filteredOptions.length > 0 && triggerMatch !== null
70
-
71
- React.useEffect(() => {
72
- if (!showSuggestions) setActiveIndex(0)
73
- }, [showSuggestions])
74
-
75
- function updateValue(nextValue: string, event?: React.ChangeEvent<HTMLTextAreaElement>) {
76
- if (value === undefined) setInternalValue(nextValue)
77
- onValueChange?.(nextValue)
78
- if (event) onChange?.(event)
79
- }
80
-
81
- function insertMention(option: MentionOption) {
82
- if (!triggerMatch) return
83
-
84
- const mentionValue = option.insertValue ?? option.value
85
- const nextValue = `${currentValue.slice(0, triggerMatch.triggerIndex)}${trigger}${mentionValue} ${currentValue.slice(selectionStart)}`
86
- const nextCursor = triggerMatch.triggerIndex + trigger.length + mentionValue.length + 1
87
-
88
- if (value === undefined) setInternalValue(nextValue)
89
- onValueChange?.(nextValue)
90
- onMentionSelect?.(option.value)
91
-
92
- requestAnimationFrame(() => {
93
- textareaRef.current?.focus()
94
- textareaRef.current?.setSelectionRange(nextCursor, nextCursor)
95
- setSelectionStart(nextCursor)
96
- })
97
- }
98
-
99
- return (
100
- <div data-slot="mention-input" className="grid gap-2">
101
- <textarea
102
- ref={textareaRef}
103
- value={currentValue}
104
- className={cn("min-h-24 rounded-md border bg-background p-3 text-sm outline-none focus-visible:ring-2 focus-visible:ring-ring", className)}
105
- onChange={(event) => {
106
- updateValue(event.target.value, event)
107
- setSelectionStart(event.target.selectionStart ?? event.target.value.length)
108
- }}
109
- onClick={(event) => setSelectionStart(event.currentTarget.selectionStart ?? 0)}
110
- onKeyUp={(event) => setSelectionStart(event.currentTarget.selectionStart ?? 0)}
111
- onKeyDown={(event) => {
112
- if (showSuggestions) {
113
- if (event.key === "ArrowDown") {
114
- event.preventDefault()
115
- setActiveIndex((current) => (current + 1) % filteredOptions.length)
116
- return
117
- }
118
- if (event.key === "ArrowUp") {
119
- event.preventDefault()
120
- setActiveIndex((current) => (current - 1 + filteredOptions.length) % filteredOptions.length)
121
- return
122
- }
123
- if (event.key === "Enter" || event.key === "Tab") {
124
- event.preventDefault()
125
- insertMention(filteredOptions[activeIndex] ?? filteredOptions[0])
126
- return
127
- }
128
- if (event.key === "Escape") {
129
- event.preventDefault()
130
- setSelectionStart(currentValue.length)
131
- return
132
- }
133
- }
134
-
135
- onKeyDown?.(event)
136
- }}
137
- {...props}
138
- />
139
- {showSuggestions ? (
140
- <div className="grid gap-1 rounded-xl border bg-card p-2 shadow-sm">
141
- {filteredOptions.map((option, index) => (
142
- <button
143
- key={option.value}
144
- type="button"
145
- className={cn(
146
- "flex items-center justify-between rounded-lg px-3 py-2 text-left text-sm transition-colors hover:bg-muted",
147
- index === activeIndex && "bg-muted"
148
- )}
149
- onMouseDown={(event) => event.preventDefault()}
150
- onClick={() => insertMention(option)}
151
- >
152
- <span className="font-medium">{option.label}</span>
153
- <span className="text-xs text-muted-foreground">{trigger}{option.insertValue ?? option.value}</span>
154
- </button>
155
- ))}
156
- </div>
157
- ) : null}
158
- </div>
159
- )
160
- }
161
-
162
- export { MentionInput }
@@ -1,106 +0,0 @@
1
- import * as React from "react"
2
-
3
- import { cn } from "@/lib/utils"
4
-
5
- type StackGap = "xs" | "sm" | "md" | "lg" | "xl"
6
- type InlineAlign = "start" | "center" | "end" | "stretch"
7
- type InlineJustify = "start" | "center" | "end" | "between"
8
- type GridColumns = 1 | 2 | 3 | 4 | 5 | 6
9
-
10
- const stackGapClassName: Record<StackGap, string> = {
11
- xs: "gap-2",
12
- sm: "gap-3",
13
- md: "gap-4",
14
- lg: "gap-6",
15
- xl: "gap-8",
16
- }
17
-
18
- const inlineAlignClassName: Record<InlineAlign, string> = {
19
- start: "items-start",
20
- center: "items-center",
21
- end: "items-end",
22
- stretch: "items-stretch",
23
- }
24
-
25
- const inlineJustifyClassName: Record<InlineJustify, string> = {
26
- start: "justify-start",
27
- center: "justify-center",
28
- end: "justify-end",
29
- between: "justify-between",
30
- }
31
-
32
- const gridColumnClassName: Record<GridColumns, string> = {
33
- 1: "grid-cols-1",
34
- 2: "grid-cols-2",
35
- 3: "grid-cols-3",
36
- 4: "grid-cols-4",
37
- 5: "grid-cols-5",
38
- 6: "grid-cols-6",
39
- }
40
-
41
- export type StackProps = React.ComponentProps<"div"> & {
42
- gap?: StackGap
43
- splitAfter?: React.ReactNode
44
- }
45
-
46
- function Stack({ gap = "md", splitAfter, className, children, ...props }: StackProps) {
47
- return (
48
- <div data-slot="stack" className={cn("flex min-w-0 flex-col", stackGapClassName[gap], className)} {...props}>
49
- {children}
50
- {splitAfter ? <div data-slot="stack-split-after">{splitAfter}</div> : null}
51
- </div>
52
- )
53
- }
54
-
55
- export type InlineProps = React.ComponentProps<"div"> & {
56
- gap?: StackGap
57
- align?: InlineAlign
58
- justify?: InlineJustify
59
- wrap?: boolean
60
- }
61
-
62
- export type GridProps = React.ComponentProps<"div"> & {
63
- gap?: StackGap
64
- columns?: GridColumns
65
- }
66
-
67
- function Inline({
68
- gap = "md",
69
- align = "center",
70
- justify = "start",
71
- wrap = true,
72
- className,
73
- children,
74
- ...props
75
- }: InlineProps) {
76
- return (
77
- <div
78
- data-slot="inline"
79
- className={cn(
80
- "flex min-w-0",
81
- stackGapClassName[gap],
82
- inlineAlignClassName[align],
83
- inlineJustifyClassName[justify],
84
- wrap ? "flex-wrap" : "flex-nowrap",
85
- className
86
- )}
87
- {...props}
88
- >
89
- {children}
90
- </div>
91
- )
92
- }
93
-
94
- function Grid({ gap = "md", columns = 2, className, children, ...props }: GridProps) {
95
- return (
96
- <div
97
- data-slot="grid"
98
- className={cn("grid min-w-0", stackGapClassName[gap], gridColumnClassName[columns], className)}
99
- {...props}
100
- >
101
- {children}
102
- </div>
103
- )
104
- }
105
-
106
- export { Grid, Inline, Stack }