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,30 +0,0 @@
1
- import type { ComponentDemoMock } from "../types"
2
-
3
- export const emptyStateMock: ComponentDemoMock = {
4
- code: `import { EmptyState } from "tembro"
5
-
6
- export function Example() {
7
- return (
8
- <EmptyState
9
- title="No results yet"
10
- description="Create your first item to unlock actions and charts."
11
- actionLabel="Create item"
12
- onAction={() => {
13
- console.log("Create action triggered")
14
- }}
15
- />
16
- )
17
- }`,
18
- highlights: ["No-content user messaging", "Built-in action callback", "Lightweight onboarding placeholder", "Reusable for any resource list"],
19
- scenarios: [
20
- { title: "First launch", description: "Guide users to create first entity in a clean state." },
21
- { title: "Filtered empty", description: "Tell users what changed filters removed all items." },
22
- { title: "Error fallback", description: "Use with loading and retry controls when data fetch fails." },
23
- ],
24
- capabilityNotes: [
25
- "Always provide a clear next action to recover from empty state.",
26
- "Keep titles short and outcome oriented.",
27
- "Prefer one primary action + short explanation for fastest user decision.",
28
- ],
29
- }
30
-
@@ -1,65 +0,0 @@
1
- import * as React from "react"
2
-
3
- import { Badge, Button, EmptyState } from "@/index"
4
-
5
- import type { ComponentDemoProps } from "../types"
6
-
7
- const panelClass =
8
- "rounded-[22px] border border-[color:var(--aui-divider)] bg-[color:var(--aui-page-bg)] p-5"
9
-
10
- export function EmptyStateShowcase({ mode }: ComponentDemoProps) {
11
- const [actionCount, setActionCount] = React.useState(0)
12
- const [showEmptyFeedback, setShowEmptyFeedback] = React.useState(true)
13
-
14
- return (
15
- <div className="space-y-5">
16
- <section className="rounded-[24px] border border-[color:var(--aui-divider)] bg-[color:var(--aui-page-bg)] p-5 sm:p-6">
17
- <div className="flex flex-col gap-6 xl:flex-row xl:items-start xl:justify-between">
18
- <div className="max-w-xl">
19
- <p className="text-xs font-semibold uppercase tracking-[0.26em] aui-text-muted">No-content state</p>
20
- <h3 className="mt-3 text-2xl font-semibold tracking-tight aui-text-strong">Empty state should unblock the next step</h3>
21
- <p className="mt-3 max-w-lg text-sm leading-6 aui-text-muted">
22
- The preview should show a clear title, short explanation, and one meaningful next action. Empty state is not decorative whitespace.
23
- </p>
24
- </div>
25
- <div className="flex flex-wrap gap-2">
26
- <Badge variant="outline" className="rounded-full">No data</Badge>
27
- <Badge variant="outline" className="rounded-full">One next action</Badge>
28
- </div>
29
- </div>
30
- </section>
31
-
32
- {showEmptyFeedback ? (
33
- <EmptyState
34
- title="No results found"
35
- description="There is nothing to show yet. Create one item to continue."
36
- actionLabel="Create first item"
37
- onAction={() => setActionCount((value) => value + 1)}
38
- />
39
- ) : (
40
- <EmptyState title="Empty state intentionally hidden" description="Use a custom fallback only when needed." />
41
- )}
42
-
43
- <div className="grid gap-4 xl:grid-cols-[0.9fr_1.1fr]">
44
- <section className={panelClass}>
45
- <p className="text-sm font-medium aui-text-muted">Interaction count</p>
46
- <p className="mt-3 text-2xl font-semibold tracking-tight aui-text-strong">{actionCount}</p>
47
- <p className="mt-2 text-sm leading-6 aui-text-muted">Use the primary CTA only for the most direct recovery path.</p>
48
- </section>
49
- {mode === "playground" ? (
50
- <section className={panelClass}>
51
- <p className="text-sm font-medium aui-text-muted">Preview controls</p>
52
- <div className="mt-4 flex flex-wrap gap-2">
53
- <Button size="sm" variant={showEmptyFeedback ? "default" : "outline"} onClick={() => setShowEmptyFeedback((value) => !value)}>
54
- Toggle feedback
55
- </Button>
56
- <Button size="sm" variant="outline" onClick={() => setActionCount(0)}>
57
- Reset actions
58
- </Button>
59
- </div>
60
- </section>
61
- ) : null}
62
- </div>
63
- </div>
64
- )
65
- }
@@ -1,3 +0,0 @@
1
- export { floatButtonMock } from "./mock"
2
- export { FloatButtonShowcase } from "./showcase"
3
-
@@ -1,24 +0,0 @@
1
- import type { ComponentDemoMock } from "../types"
2
-
3
- export const floatButtonMock: ComponentDemoMock = {
4
- code: `import { FloatButton } from "@/index"
5
- import { Plus } from "lucide-react"
6
-
7
- export function Example() {
8
- return (
9
- <FloatButton placement="bottom-right">
10
- <Plus className="size-4" />
11
- </FloatButton>
12
- )
13
- }`,
14
- cliCommand: "npx tembro add float-button",
15
- highlights: [
16
- "Fixed-position shortcut button",
17
- "Placement variants across corners",
18
- ],
19
- scenarios: [
20
- { title: "Quick action", description: "Keep add/create action always reachable." },
21
- { title: "Chat widgets", description: "Mount floating controls without complex absolute layout." },
22
- ],
23
- }
24
-
@@ -1,21 +0,0 @@
1
- import * as React from "react"
2
-
3
- import { FloatButton } from "@/index"
4
- import { PlusIcon } from "lucide-react"
5
-
6
- const placements = ["bottom-right", "bottom-left", "top-right", "top-left"] as const
7
-
8
- export function FloatButtonShowcase() {
9
- const [index, setIndex] = React.useState(0)
10
- const placement = placements[index % placements.length]
11
-
12
- return (
13
- <div className="relative h-48 rounded-lg border bg-muted/20 p-6">
14
- <p className="mb-3 text-sm text-muted-foreground">Current placement: {placement}</p>
15
- <FloatButton onClick={() => setIndex((value) => value + 1)} aria-label="Open quick actions" placement={placement}>
16
- <PlusIcon className="size-5" />
17
- </FloatButton>
18
- </div>
19
- )
20
- }
21
-
@@ -1,2 +0,0 @@
1
- export { FormBuilderShowcase } from "./showcase"
2
- export { formBuilderMock } from "./mock"
@@ -1,79 +0,0 @@
1
- import type { ComponentDemoMock } from "../types"
2
-
3
- export const formBuilderMock: ComponentDemoMock = {
4
- code: `import { useForm } from "react-hook-form"
5
- import {
6
- FormBuilder,
7
- formSection,
8
- inputField,
9
- phoneField,
10
- switchField,
11
- textareaField,
12
- } from "tembro"
13
-
14
- type DemoValues = {
15
- workspace: string
16
- ownerPhone: string
17
- notes: string
18
- isLive: boolean
19
- }
20
-
21
- const sections = [
22
- formSection<DemoValues>({
23
- id: "main",
24
- title: "Workspace settings",
25
- description: "Field schema, sections and disabled/readOnly behavior all live in FormBuilder config.",
26
- fields: [
27
- inputField<DemoValues>({ id: "workspace", props: { name: "workspace", label: "Workspace name", required: true } }),
28
- phoneField<DemoValues>({ id: "ownerPhone", props: { name: "ownerPhone", label: "Owner phone" } }),
29
- textareaField<DemoValues>({ id: "notes", colSpan: "full", props: { name: "notes", label: "Notes", rows: 3 } }),
30
- switchField<DemoValues>({
31
- id: "isLive",
32
- colSpan: "full",
33
- props: { name: "isLive", label: "Publish workspace", description: "Toggle public availability" },
34
- }),
35
- ],
36
- }),
37
- ]
38
-
39
- export function Example() {
40
- const form = useForm<DemoValues>({
41
- defaultValues: {
42
- workspace: "Azamat UI",
43
- ownerPhone: "+998 90 123 45 67",
44
- notes: "Connected form sections with submit and reset lifecycle.",
45
- isLive: true,
46
- },
47
- })
48
-
49
- return (
50
- <FormBuilder
51
- control={form.control}
52
- sections={sections}
53
- columns={1}
54
- submitLabel="Save"
55
- resetLabel="Reset"
56
- disabled={false}
57
- readOnly={false}
58
- />
59
- )
60
- }`
61
- ,
62
- htmlCode: `<form><label for="workspace">Workspace</label><input id="workspace" value="Azamat UI" /></form>`,
63
- cliCommand: "npx tembro add form-builder",
64
- highlights: ["Field schema", "Sections and presets", "submitLabel / resetLabel wiring", "Disabled/readOnly passthrough", "Reusable field helpers"],
65
- relatedBlockSlugs: ["settings-form", "crm-dashboard"],
66
- scenarios: [
67
- { title: "Field schema validation", description: "Use typed `formSection` and helper fields for deterministic layout." },
68
- { title: "Submit + reset", description: "Pass submitLabel/resetLabel and rely on RHF formState for disabled transitions." },
69
- { title: "Custom render", description: "Inject custom field-level props through helper factories." },
70
- { title: "Read-only mode", description: "Toggle readOnly for inspect-only workflows without changing schema." },
71
- ],
72
- capabilityNotes: [
73
- "`sections` gives a single source of truth for layout and required validations.",
74
- "Use `fields` for precise schema-driven field composition.",
75
- "Expose submit and reset labels directly from component props so UX can match product language.",
76
- "Combine `disabled` + `readOnly` for different page states like locked records and review modes.",
77
- ],
78
- }
79
-
@@ -1,55 +0,0 @@
1
- import * as React from "react"
2
- import { useForm } from "react-hook-form"
3
-
4
- import { Button } from "@/index"
5
- import { FormBuilder, formSection, inputField, phoneField, switchField, textareaField } from "@/components/patterns/form-builder"
6
-
7
- import type { ComponentDemoProps } from "../types"
8
-
9
- type DemoValues = {
10
- workspace: string
11
- ownerPhone: string
12
- notes: string
13
- isLive: boolean
14
- }
15
-
16
- export function FormBuilderShowcase({ mode }: ComponentDemoProps) {
17
- const form = useForm<DemoValues>({
18
- defaultValues: {
19
- workspace: "Azamat UI",
20
- ownerPhone: "+998 90 123 45 67",
21
- notes: "Connected sections and submit/reset wiring.",
22
- isLive: true,
23
- },
24
- })
25
-
26
- const sections = React.useMemo(
27
- () => [
28
- formSection<DemoValues>({
29
- id: "main",
30
- title: "Workspace settings",
31
- description: "Schema-driven form builder with explicit submit and reset controls.",
32
- fields: [
33
- inputField<DemoValues>({ id: "workspace", props: { name: "workspace", label: "Workspace", required: true } }),
34
- phoneField<DemoValues>({ id: "ownerPhone", props: { name: "ownerPhone", label: "Owner phone" } }),
35
- textareaField<DemoValues>({ id: "notes", colSpan: "full", props: { name: "notes", label: "Notes", rows: 3 } }),
36
- switchField<DemoValues>({
37
- id: "isLive",
38
- colSpan: "full",
39
- props: { name: "isLive", label: "Publish workspace", description: "Visible only when record is active." },
40
- }),
41
- ],
42
- }),
43
- ],
44
- []
45
- )
46
-
47
- return (
48
- <div className="space-y-4">
49
- <FormBuilder control={form.control} sections={sections} columns={1} submitLabel={mode === "playground" ? "Save workspace" : undefined} />
50
- <Button type="button" variant="outline" onClick={() => form.reset()}>
51
- Reset form
52
- </Button>
53
- </div>
54
- )
55
- }
@@ -1,2 +0,0 @@
1
- export { keyboardShortcutMock } from "./mock"
2
- export { KeyboardShortcutShowcase } from "./showcase"
@@ -1,20 +0,0 @@
1
- import type { ComponentDemoMock } from "../types"
2
-
3
- export const keyboardShortcutMock: ComponentDemoMock = {
4
- code: `import { KeyboardShortcut } from "@/index"
5
-
6
- export function Example() {
7
- return <KeyboardShortcut keys={["Ctrl", "K"]} />
8
- }`,
9
- cliCommand: "npx tembro add keyboard-shortcut",
10
- highlights: [
11
- "Compact visual hint for one or many keys",
12
- "Accepts key arrays or raw children",
13
- "Useful inside command palette, docs hints and action toolbars",
14
- ],
15
- scenarios: [
16
- { title: "Search hint", description: "Show the command palette trigger beside a search action." },
17
- { title: "Editor help", description: "Reveal save or publish shortcuts close to the action." },
18
- { title: "Docs legend", description: "Document power-user flows without adding a heavy table." },
19
- ],
20
- }
@@ -1,42 +0,0 @@
1
- import { Button, KeyboardShortcut } from "@/index"
2
-
3
- const panelClass = "border-t border-[color:var(--aui-divider)] py-6"
4
-
5
- export function KeyboardShortcutShowcase() {
6
- return (
7
- <div className="space-y-0">
8
- <section className="pb-6">
9
- <p className="text-xs font-semibold uppercase tracking-[0.24em] aui-text-muted">Installed display primitive</p>
10
- <h3 className="mt-3 text-2xl font-semibold tracking-tight aui-text-strong">KeyboardShortcut shows power-user hints without noise</h3>
11
- <p className="mt-3 max-w-2xl text-sm leading-6 aui-text-muted">
12
- Keep shortcut chips short and nearby to the action they describe. They should reinforce real behavior, not decorative text.
13
- </p>
14
- </section>
15
-
16
- <section className={panelClass}>
17
- <div className="grid gap-6 xl:grid-cols-[1fr_360px]">
18
- <div className="rounded-xl border border-[color:var(--aui-divider)] bg-[color:var(--aui-page-bg-alt)] p-4">
19
- <div className="flex flex-wrap items-center gap-3">
20
- <Button variant="outline">Search routes</Button>
21
- <KeyboardShortcut keys={["Ctrl", "K"]} />
22
- </div>
23
- <div className="mt-4 flex flex-wrap items-center gap-3">
24
- <Button variant="secondary">Save draft</Button>
25
- <KeyboardShortcut keys={["Ctrl", "S"]} />
26
- <Button>Publish</Button>
27
- <KeyboardShortcut keys={["Shift", "Enter"]} />
28
- </div>
29
- </div>
30
-
31
- <div className="rounded-xl border border-[color:var(--aui-divider)] p-4">
32
- <p className="text-sm font-semibold aui-text-strong">Guidance</p>
33
- <div className="mt-3 space-y-3 text-sm leading-6 aui-text-muted">
34
- <p>Show shortcuts only where the action is relevant. Repeating the same hint everywhere weakens it.</p>
35
- <p>Use concise labels like `Ctrl`, `Cmd`, `Shift`, `Enter`, not long prose inside the chip.</p>
36
- </div>
37
- </div>
38
- </div>
39
- </section>
40
- </div>
41
- )
42
- }
@@ -1,3 +0,0 @@
1
- export { mentionInputMock } from "./mock"
2
- export { MentionInputShowcase } from "./showcase"
3
-
@@ -1,26 +0,0 @@
1
- import type { ComponentDemoMock } from "../types"
2
-
3
- export const mentionInputMock: ComponentDemoMock = {
4
- code: `import { MentionInput } from "@/index"
5
-
6
- export function Example() {
7
- return (
8
- <MentionInput
9
- value="Assign @alice and @bob."
10
- options={[{ label: "Alice", value: "alice" }, { label: "Bob", value: "bob" }]}
11
- onValueChange={(value) => console.log(value)}
12
- />
13
- )
14
- }`,
15
- cliCommand: "npx tembro add mention-input",
16
- highlights: [
17
- "Trigger-based suggestion filtering",
18
- "Keyboard navigation for suggestions",
19
- "Auto insert with controlled value",
20
- ],
21
- scenarios: [
22
- { title: "Comments", description: "Mention teammates in internal notes." },
23
- { title: "Chat input", description: "Add quick user references while composing." },
24
- ],
25
- }
26
-
@@ -1,27 +0,0 @@
1
- import * as React from "react"
2
-
3
- import { MentionInput } from "@/index"
4
-
5
- const defaultOptions = [
6
- { label: "Alice", value: "alice" },
7
- { label: "Bob", value: "bob" },
8
- { label: "Charlie", value: "charlie" },
9
- ]
10
-
11
- export function MentionInputShowcase() {
12
- const [value, setValue] = React.useState("Hi @alice, please review this task.")
13
- const [mentions, setMentions] = React.useState<string[]>([])
14
-
15
- return (
16
- <div className="space-y-3">
17
- <MentionInput
18
- value={value}
19
- options={defaultOptions}
20
- onValueChange={setValue}
21
- onMentionSelect={(selected) => setMentions((current) => [...new Set([...current, selected])])}
22
- />
23
- <p className="text-sm text-muted-foreground">Inserted mentions: {mentions.join(", ") || "None"}</p>
24
- </div>
25
- )
26
- }
27
-
@@ -1,3 +0,0 @@
1
- export { skeletonFormMock } from "./mock"
2
- export { SkeletonFormShowcase } from "./showcase"
3
-
@@ -1,20 +0,0 @@
1
- import type { ComponentDemoMock } from "../types"
2
-
3
- export const skeletonFormMock: ComponentDemoMock = {
4
- code: `import { SkeletonForm } from "@/index"
5
-
6
- export function Example() {
7
- return <SkeletonForm fields={3} showTitle columns={2} />
8
- }`,
9
- cliCommand: "npx tembro add skeleton-form",
10
- highlights: [
11
- "Form-first loading states that preserve field rhythm",
12
- "Supports one- or two-column layouts",
13
- "Optional title and action skeleton areas",
14
- ],
15
- scenarios: [
16
- { title: "Settings", description: "Keep form layout stable while waiting for data." },
17
- { title: "Create form", description: "Match final structure without exposing layout jitter." },
18
- ],
19
- }
20
-
@@ -1,34 +0,0 @@
1
- import * as React from "react"
2
-
3
- import { Button, SkeletonForm } from "@/index"
4
-
5
- export function SkeletonFormShowcase() {
6
- const [fields, setFields] = React.useState(4)
7
- const [columns, setColumns] = React.useState<1 | 2>(1)
8
- const [showActions, setShowActions] = React.useState(true)
9
-
10
- return (
11
- <div className="space-y-3">
12
- <div className="flex flex-wrap gap-2">
13
- <Button size="sm" variant={fields === 3 ? "default" : "outline"} onClick={() => setFields(3)}>
14
- 3 fields
15
- </Button>
16
- <Button size="sm" variant={fields === 4 ? "default" : "outline"} onClick={() => setFields(4)}>
17
- 4 fields
18
- </Button>
19
- <Button size="sm" variant={columns === 1 ? "default" : "outline"} onClick={() => setColumns(1)}>
20
- 1 column
21
- </Button>
22
- <Button size="sm" variant={columns === 2 ? "default" : "outline"} onClick={() => setColumns(2)}>
23
- 2 columns
24
- </Button>
25
- <Button size="sm" variant={showActions ? "default" : "outline"} onClick={() => setShowActions((value) => !value)}>
26
- {showActions ? "Actions" : "No actions"}
27
- </Button>
28
- </div>
29
-
30
- <SkeletonForm fields={fields} columns={columns} showActions={showActions} />
31
- </div>
32
- )
33
- }
34
-
@@ -1,3 +0,0 @@
1
- export { skeletonTableMock } from "./mock"
2
- export { SkeletonTableShowcase } from "./showcase"
3
-
@@ -1,20 +0,0 @@
1
- import type { ComponentDemoMock } from "../types"
2
-
3
- export const skeletonTableMock: ComponentDemoMock = {
4
- code: `import { SkeletonTable } from "@/index"
5
-
6
- export function Example() {
7
- return <SkeletonTable rows={4} columns={4} showHeader showToolbar />
8
- }`,
9
- cliCommand: "npx tembro add skeleton-table",
10
- highlights: [
11
- "Compact placeholder for async table loading",
12
- "Supports header and action bar variants",
13
- "Good fit during first-load and refetch states",
14
- ],
15
- scenarios: [
16
- { title: "Data pages", description: "Replace with table body after fetch completes." },
17
- { title: "Search results", description: "Keep layout stable while filters run." },
18
- ],
19
- }
20
-
@@ -1,37 +0,0 @@
1
- import * as React from "react"
2
-
3
- import { Button, SkeletonTable } from "@/index"
4
-
5
- export function SkeletonTableShowcase() {
6
- const [showToolbar, setShowToolbar] = React.useState(true)
7
- const [columns, setColumns] = React.useState(4)
8
- const [rows, setRows] = React.useState(4)
9
-
10
- return (
11
- <div className="space-y-3">
12
- <div className="flex flex-wrap gap-2">
13
- <Button size="sm" variant={showToolbar ? "default" : "outline"} onClick={() => setShowToolbar((value) => !value)}>
14
- Toolbar
15
- </Button>
16
- <Button size="sm" onClick={() => setColumns(3)} variant="outline">
17
- 3 cols
18
- </Button>
19
- <Button size="sm" onClick={() => setColumns(4)} variant="outline">
20
- 4 cols
21
- </Button>
22
- <Button size="sm" onClick={() => setColumns(5)} variant="outline">
23
- 5 cols
24
- </Button>
25
- <Button size="sm" onClick={() => setRows(3)} variant="outline">
26
- 3 rows
27
- </Button>
28
- <Button size="sm" onClick={() => setRows(6)} variant="outline">
29
- 6 rows
30
- </Button>
31
- </div>
32
-
33
- <SkeletonTable rows={rows} columns={columns} showHeader showToolbar={showToolbar} />
34
- </div>
35
- )
36
- }
37
-
@@ -1,2 +0,0 @@
1
- export { stackMock } from "./mock"
2
- export { StackShowcase } from "./showcase"
@@ -1,25 +0,0 @@
1
- import type { ComponentDemoMock } from "../types"
2
-
3
- export const stackMock: ComponentDemoMock = {
4
- code: `import { Button, Stack } from "@/index"
5
-
6
- export function Example() {
7
- return (
8
- <Stack gap="lg" splitAfter={<Button size="sm">Secondary</Button>}>
9
- <div className="text-sm">Primary action</div>
10
- <div className="text-sm">Status line</div>
11
- </Stack>
12
- )
13
- }`,
14
- cliCommand: "npx tembro add stack",
15
- highlights: [
16
- "Flexible vertical layout helper",
17
- "Split insert points without extra wrappers",
18
- "Consistent spacing with simple gap presets",
19
- ],
20
- scenarios: [
21
- { title: "Form stack", description: "Stable form section spacing." },
22
- { title: "Card body", description: "Build readable content groups quickly." },
23
- { title: "Settings page", description: "Keep labels and controls in order." },
24
- ],
25
- }
@@ -1,22 +0,0 @@
1
- import { Button, Divider, Stack } from "@/index"
2
-
3
- export function StackShowcase() {
4
- return (
5
- <div className="space-y-4">
6
- <Stack gap="sm">
7
- <p className="text-sm text-muted-foreground">Small gap stack keeps controls close.</p>
8
- <Button size="sm">Primary</Button>
9
- <Button size="sm" variant="outline">
10
- Secondary
11
- </Button>
12
- </Stack>
13
-
14
- <Divider />
15
-
16
- <Stack gap="xl" splitAfter={<p className="text-sm text-muted-foreground">Action barrier</p>}>
17
- <p className="text-sm">Large gap for grouped blocks.</p>
18
- <p className="text-sm">SplitAfter inserts a stable divider point without nested wrappers.</p>
19
- </Stack>
20
- </div>
21
- )
22
- }
@@ -1,2 +0,0 @@
1
- export { tagListMock } from "./mock"
2
- export { TagListShowcase } from "./showcase"
@@ -1,27 +0,0 @@
1
- import type { ComponentDemoMock } from "../types"
2
-
3
- export const tagListMock: ComponentDemoMock = {
4
- code: `import * as React from "react"
5
- import { TagList } from "@/index"
6
-
7
- export function Example() {
8
- const [items, setItems] = React.useState([
9
- { key: "react", label: "React" },
10
- { key: "typescript", label: "TypeScript" },
11
- { key: "design-system", label: "Design system" },
12
- ])
13
-
14
- return <TagList items={items} removable onRemove={(item) => setItems((list) => list.filter((entry) => entry.key !== item.key))} />
15
- }`,
16
- cliCommand: "npx tembro add tag-list",
17
- highlights: [
18
- "Compact badge-based collection of labels",
19
- "Optional remove actions for editable taxonomies",
20
- "Useful for skills, filters, product areas, and metadata chips",
21
- ],
22
- scenarios: [
23
- { title: "Skill chips", description: "Show categorized labels without building a full tag input field." },
24
- { title: "Selected filters", description: "Summarize active states at the top of a page." },
25
- { title: "Editable metadata", description: "Allow small remove actions on existing labels." },
26
- ],
27
- }