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,21 +0,0 @@
1
- import * as React from "react"
2
-
3
- import { cn } from "@/lib/utils"
4
-
5
- export type AffixProps = React.ComponentProps<"div"> & {
6
- offsetTop?: number
7
- zIndex?: number
8
- }
9
-
10
- function Affix({ offsetTop = 0, zIndex = 30, className, style, ...props }: AffixProps) {
11
- return (
12
- <div
13
- data-slot="affix"
14
- className={cn("sticky", className)}
15
- style={{ top: offsetTop, zIndex, ...style }}
16
- {...props}
17
- />
18
- )
19
- }
20
-
21
- export { Affix }
@@ -1,13 +0,0 @@
1
- export {
2
- asyncSelectField,
3
- customField,
4
- dateField,
5
- dateRangeField,
6
- formSection,
7
- inputField,
8
- numberField,
9
- phoneField,
10
- selectField,
11
- switchField,
12
- textareaField,
13
- } from "./form-builder"
@@ -1,443 +0,0 @@
1
- import * as React from "react"
2
- import type { Control, FieldPath, FieldValues } from "react-hook-form"
3
-
4
- import { Button } from "@/components/ui/button"
5
- import { FormInput, type FormInputProps } from "@/components/form/form-input"
6
- import { FormTextarea, type FormTextareaProps } from "@/components/form/form-textarea"
7
- import { FormSelect, type FormSelectProps } from "@/components/form/form-select"
8
- import { FormAsyncSelect, type FormAsyncSelectProps } from "@/components/form/form-async-select"
9
- import { FormSwitch, type FormSwitchProps } from "@/components/form/form-switch"
10
- import { FormNumberInput, type FormNumberInputProps } from "@/components/form/form-number-input"
11
- import { FormPhoneInput, type FormPhoneInputProps } from "@/components/form/form-phone-input"
12
- import { FormDateInput, type FormDateInputProps } from "@/components/form/form-date-input"
13
- import {
14
- FormDateRangeInput,
15
- type FormDateRangeInputProps,
16
- } from "@/components/form/form-date-range-input"
17
- import { cn } from "@/lib/utils"
18
-
19
- export type FormBuilderLayout = "grid" | "stack"
20
- export type FormBuilderDensity = "compact" | "default" | "comfortable"
21
-
22
- export type FormBuilderFieldRenderContext<TFieldValues extends FieldValues> = {
23
- control: Control<TFieldValues>
24
- disabled?: boolean
25
- readOnly?: boolean
26
- }
27
-
28
- type BaseFormBuilderField = {
29
- id: string
30
- hidden?: boolean
31
- className?: string
32
- colSpan?: 1 | 2 | 3 | 4 | "full"
33
- }
34
-
35
- export type FormBuilderCustomField<TFieldValues extends FieldValues> = BaseFormBuilderField & {
36
- type: "custom"
37
- render: (context: FormBuilderFieldRenderContext<TFieldValues>) => React.ReactNode
38
- }
39
-
40
- export type FormBuilderInputField<
41
- TFieldValues extends FieldValues,
42
- TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
43
- > = BaseFormBuilderField & {
44
- type: "input"
45
- props: Omit<FormInputProps<TFieldValues, TName>, "control">
46
- }
47
-
48
- export type FormBuilderTextareaField<
49
- TFieldValues extends FieldValues,
50
- TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
51
- > = BaseFormBuilderField & {
52
- type: "textarea"
53
- props: Omit<FormTextareaProps<TFieldValues, TName>, "control">
54
- }
55
-
56
- export type FormBuilderSelectField<
57
- TFieldValues extends FieldValues,
58
- TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
59
- > = BaseFormBuilderField & {
60
- type: "select"
61
- props: Omit<FormSelectProps<TFieldValues, TName>, "control">
62
- }
63
-
64
- export type FormBuilderAsyncSelectField<
65
- TFieldValues extends FieldValues,
66
- TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
67
- > = BaseFormBuilderField & {
68
- type: "async-select"
69
- props: Omit<FormAsyncSelectProps<TFieldValues, TName>, "control">
70
- }
71
-
72
- export type FormBuilderSwitchField<
73
- TFieldValues extends FieldValues,
74
- TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
75
- > = BaseFormBuilderField & {
76
- type: "switch"
77
- props: Omit<FormSwitchProps<TFieldValues, TName>, "control">
78
- }
79
-
80
- export type FormBuilderNumberField<
81
- TFieldValues extends FieldValues,
82
- TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
83
- > = BaseFormBuilderField & {
84
- type: "number"
85
- props: Omit<FormNumberInputProps<TFieldValues, TName>, "control">
86
- }
87
-
88
- export type FormBuilderPhoneField<
89
- TFieldValues extends FieldValues,
90
- TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
91
- > = BaseFormBuilderField & {
92
- type: "phone"
93
- props: Omit<FormPhoneInputProps<TFieldValues, TName>, "control">
94
- }
95
-
96
- export type FormBuilderDateField<
97
- TFieldValues extends FieldValues,
98
- TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
99
- > = BaseFormBuilderField & {
100
- type: "date"
101
- props: Omit<FormDateInputProps<TFieldValues, TName>, "control">
102
- }
103
-
104
- export type FormBuilderDateRangeField<
105
- TFieldValues extends FieldValues,
106
- TFromName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
107
- TToName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
108
- > = BaseFormBuilderField & {
109
- type: "date-range"
110
- props: Omit<FormDateRangeInputProps<TFieldValues, TFromName, TToName>, "control">
111
- }
112
-
113
- export type FormBuilderField<TFieldValues extends FieldValues> =
114
- | FormBuilderCustomField<TFieldValues>
115
- | FormBuilderInputField<TFieldValues>
116
- | FormBuilderTextareaField<TFieldValues>
117
- | FormBuilderSelectField<TFieldValues>
118
- | FormBuilderAsyncSelectField<TFieldValues>
119
- | FormBuilderSwitchField<TFieldValues>
120
- | FormBuilderNumberField<TFieldValues>
121
- | FormBuilderPhoneField<TFieldValues>
122
- | FormBuilderDateField<TFieldValues>
123
- | FormBuilderDateRangeField<TFieldValues>
124
-
125
- export type FormBuilderSection<TFieldValues extends FieldValues> = {
126
- id: string
127
- title?: React.ReactNode
128
- description?: React.ReactNode
129
- actions?: React.ReactNode
130
- hidden?: boolean
131
- className?: string
132
- fields: FormBuilderField<TFieldValues>[]
133
- }
134
-
135
- export type FormBuilderProps<TFieldValues extends FieldValues> = Omit<
136
- React.ComponentProps<"form">,
137
- "children"
138
- > & {
139
- control: Control<TFieldValues>
140
- fields?: FormBuilderField<TFieldValues>[]
141
- sections?: FormBuilderSection<TFieldValues>[]
142
- layout?: FormBuilderLayout
143
- density?: FormBuilderDensity
144
- columns?: 1 | 2 | 3 | 4
145
- disabled?: boolean
146
- readOnly?: boolean
147
- footer?: React.ReactNode
148
- submitLabel?: React.ReactNode
149
- resetLabel?: React.ReactNode
150
- onResetClick?: () => void
151
- isSubmitting?: boolean
152
- sectionClassName?: string
153
- fieldClassName?: string
154
- footerClassName?: string
155
- }
156
-
157
- const densityClassName: Record<FormBuilderDensity, string> = {
158
- compact: "gap-3",
159
- default: "gap-4",
160
- comfortable: "gap-6",
161
- }
162
-
163
- const columnsClassName: Record<1 | 2 | 3 | 4, string> = {
164
- 1: "grid-cols-1",
165
- 2: "grid-cols-1 md:grid-cols-2",
166
- 3: "grid-cols-1 md:grid-cols-2 xl:grid-cols-3",
167
- 4: "grid-cols-1 md:grid-cols-2 xl:grid-cols-4",
168
- }
169
-
170
- const colSpanClassName: Record<NonNullable<BaseFormBuilderField["colSpan"]>, string> = {
171
- 1: "col-span-1",
172
- 2: "md:col-span-2",
173
- 3: "xl:col-span-3",
174
- 4: "xl:col-span-4",
175
- full: "col-span-full",
176
- }
177
-
178
- type FieldPresetOptions<TProps> = BaseFormBuilderField & {
179
- props: TProps
180
- }
181
-
182
- function splitFieldOptions<TProps>(options: FieldPresetOptions<TProps>) {
183
- const { id, hidden, className, colSpan, props } = options
184
- return { base: { id, hidden, className, colSpan }, props }
185
- }
186
-
187
- function inputField<
188
- TFieldValues extends FieldValues,
189
- TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
190
- >(options: FieldPresetOptions<FormBuilderInputField<TFieldValues, TName>["props"]>): FormBuilderInputField<TFieldValues, TName> {
191
- const { base, props } = splitFieldOptions(options)
192
- return { ...base, type: "input", props }
193
- }
194
-
195
- function textareaField<
196
- TFieldValues extends FieldValues,
197
- TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
198
- >(options: FieldPresetOptions<FormBuilderTextareaField<TFieldValues, TName>["props"]>): FormBuilderTextareaField<TFieldValues, TName> {
199
- const { base, props } = splitFieldOptions(options)
200
- return { ...base, type: "textarea", props }
201
- }
202
-
203
- function selectField<
204
- TFieldValues extends FieldValues,
205
- TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
206
- >(options: FieldPresetOptions<FormBuilderSelectField<TFieldValues, TName>["props"]>): FormBuilderSelectField<TFieldValues, TName> {
207
- const { base, props } = splitFieldOptions(options)
208
- return { ...base, type: "select", props }
209
- }
210
-
211
- function asyncSelectField<
212
- TFieldValues extends FieldValues,
213
- TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
214
- >(options: FieldPresetOptions<FormBuilderAsyncSelectField<TFieldValues, TName>["props"]>): FormBuilderAsyncSelectField<TFieldValues, TName> {
215
- const { base, props } = splitFieldOptions(options)
216
- return { ...base, type: "async-select", props }
217
- }
218
-
219
- function switchField<
220
- TFieldValues extends FieldValues,
221
- TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
222
- >(options: FieldPresetOptions<FormBuilderSwitchField<TFieldValues, TName>["props"]>): FormBuilderSwitchField<TFieldValues, TName> {
223
- const { base, props } = splitFieldOptions(options)
224
- return { ...base, type: "switch", props }
225
- }
226
-
227
- function numberField<
228
- TFieldValues extends FieldValues,
229
- TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
230
- >(options: FieldPresetOptions<FormBuilderNumberField<TFieldValues, TName>["props"]>): FormBuilderNumberField<TFieldValues, TName> {
231
- const { base, props } = splitFieldOptions(options)
232
- return { ...base, type: "number", props }
233
- }
234
-
235
- function phoneField<
236
- TFieldValues extends FieldValues,
237
- TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
238
- >(options: FieldPresetOptions<FormBuilderPhoneField<TFieldValues, TName>["props"]>): FormBuilderPhoneField<TFieldValues, TName> {
239
- const { base, props } = splitFieldOptions(options)
240
- return { ...base, type: "phone", props }
241
- }
242
-
243
- function dateField<
244
- TFieldValues extends FieldValues,
245
- TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
246
- >(options: FieldPresetOptions<FormBuilderDateField<TFieldValues, TName>["props"]>): FormBuilderDateField<TFieldValues, TName> {
247
- const { base, props } = splitFieldOptions(options)
248
- return { ...base, type: "date", props }
249
- }
250
-
251
- function dateRangeField<
252
- TFieldValues extends FieldValues,
253
- TFromName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
254
- TToName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
255
- >(options: FieldPresetOptions<FormBuilderDateRangeField<TFieldValues, TFromName, TToName>["props"]>): FormBuilderDateRangeField<TFieldValues, TFromName, TToName> {
256
- const { base, props } = splitFieldOptions(options)
257
- return { ...base, type: "date-range", props }
258
- }
259
-
260
- function customField<TFieldValues extends FieldValues>(
261
- options: BaseFormBuilderField & Pick<FormBuilderCustomField<TFieldValues>, "render">
262
- ): FormBuilderCustomField<TFieldValues> {
263
- const { id, hidden, className, colSpan, render } = options
264
- return { id, hidden, className, colSpan, type: "custom", render }
265
- }
266
-
267
- function formSection<TFieldValues extends FieldValues>(
268
- section: FormBuilderSection<TFieldValues>
269
- ): FormBuilderSection<TFieldValues> {
270
- return section
271
- }
272
-
273
- function renderFormBuilderField<TFieldValues extends FieldValues>(
274
- field: FormBuilderField<TFieldValues>,
275
- context: FormBuilderFieldRenderContext<TFieldValues>
276
- ) {
277
- const FormInputComponent = FormInput as unknown as React.ComponentType<Record<string, unknown>>
278
- const FormSelectComponent = FormSelect as unknown as React.ComponentType<Record<string, unknown>>
279
-
280
- switch (field.type) {
281
- case "custom":
282
- return field.render(context)
283
- case "input":
284
- return React.createElement(FormInputComponent, {
285
- control: context.control,
286
- disabled: context.disabled,
287
- readOnly: context.readOnly,
288
- ...(field.props as Omit<FormInputProps<TFieldValues, FieldPath<TFieldValues>>, "control">),
289
- })
290
- case "textarea":
291
- return <FormTextarea control={context.control} disabled={context.disabled} readOnly={context.readOnly} {...field.props} />
292
- case "select":
293
- return React.createElement(FormSelectComponent, {
294
- control: context.control,
295
- disabled: context.disabled,
296
- ...(field.props as Omit<FormSelectProps<TFieldValues, FieldPath<TFieldValues>>, "control">),
297
- })
298
- case "async-select":
299
- return <FormAsyncSelect control={context.control} disabled={context.disabled} {...field.props} />
300
- case "switch":
301
- return <FormSwitch control={context.control} disabled={context.disabled} {...field.props} />
302
- case "number":
303
- return <FormNumberInput control={context.control} disabled={context.disabled} readOnly={context.readOnly} {...field.props} />
304
- case "phone":
305
- return <FormPhoneInput control={context.control} disabled={context.disabled} readOnly={context.readOnly} {...field.props} />
306
- case "date":
307
- return <FormDateInput control={context.control} disabled={context.disabled} readOnly={context.readOnly} {...field.props} />
308
- case "date-range":
309
- return (
310
- <FormDateRangeInput
311
- control={context.control}
312
- fromInputProps={{ disabled: context.disabled, readOnly: context.readOnly }}
313
- toInputProps={{ disabled: context.disabled, readOnly: context.readOnly }}
314
- {...field.props}
315
- />
316
- )
317
- default:
318
- return null
319
- }
320
- }
321
-
322
- function normalizeSections<TFieldValues extends FieldValues>({
323
- fields,
324
- sections,
325
- }: Pick<FormBuilderProps<TFieldValues>, "fields" | "sections">): FormBuilderSection<TFieldValues>[] {
326
- if (sections?.length) return sections
327
- return [{ id: "default", fields: fields ?? [] }]
328
- }
329
-
330
- function FormBuilder<TFieldValues extends FieldValues>({
331
- className,
332
- control,
333
- fields,
334
- sections,
335
- layout = "grid",
336
- density = "default",
337
- columns = 2,
338
- disabled,
339
- readOnly,
340
- footer,
341
- submitLabel,
342
- resetLabel,
343
- onResetClick,
344
- isSubmitting,
345
- sectionClassName,
346
- fieldClassName,
347
- footerClassName,
348
- ...props
349
- }: FormBuilderProps<TFieldValues>) {
350
- const normalizedSections = normalizeSections({ fields, sections })
351
- const context = React.useMemo(
352
- () => ({ control, disabled, readOnly }),
353
- [control, disabled, readOnly]
354
- )
355
-
356
- return (
357
- <form data-slot="form-builder" className={cn("grid", densityClassName[density], className)} {...props}>
358
- {normalizedSections
359
- .filter((section) => !section.hidden)
360
- .map((section) => (
361
- <section
362
- key={section.id}
363
- data-slot="form-builder-section"
364
- className={cn("grid gap-4", section.className, sectionClassName)}
365
- >
366
- {(section.title || section.description || section.actions) && (
367
- <div
368
- data-slot="form-builder-section-header"
369
- className="flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between"
370
- >
371
- <div className="min-w-0 space-y-1">
372
- {section.title && <h2 className="text-base font-semibold leading-none tracking-tight">{section.title}</h2>}
373
- {section.description && <p className="text-sm text-muted-foreground">{section.description}</p>}
374
- </div>
375
- {section.actions && <div className="flex shrink-0 flex-wrap items-center gap-2">{section.actions}</div>}
376
- </div>
377
- )}
378
-
379
- <div
380
- data-slot="form-builder-fields"
381
- data-layout={layout}
382
- className={cn(
383
- "grid",
384
- densityClassName[density],
385
- layout === "grid" ? columnsClassName[columns] : "grid-cols-1"
386
- )}
387
- >
388
- {section.fields
389
- .filter((field) => !field.hidden)
390
- .map((field) => (
391
- <div
392
- key={field.id}
393
- data-slot="form-builder-field"
394
- className={cn(
395
- field.colSpan && colSpanClassName[field.colSpan],
396
- field.className,
397
- fieldClassName
398
- )}
399
- >
400
- {renderFormBuilderField(field, context)}
401
- </div>
402
- ))}
403
- </div>
404
- </section>
405
- ))}
406
-
407
- {(footer || submitLabel || resetLabel) && (
408
- <div data-slot="form-builder-footer" className={cn("flex flex-wrap items-center justify-end gap-2", footerClassName)}>
409
- {footer ?? (
410
- <>
411
- {resetLabel && (
412
- <Button type="button" variant="outline" disabled={disabled || isSubmitting} onClick={onResetClick}>
413
- {resetLabel}
414
- </Button>
415
- )}
416
- {submitLabel && (
417
- <Button type="submit" disabled={disabled || isSubmitting}>
418
- {submitLabel}
419
- </Button>
420
- )}
421
- </>
422
- )}
423
- </div>
424
- )}
425
- </form>
426
- )
427
- }
428
-
429
- export {
430
- FormBuilder,
431
- asyncSelectField,
432
- customField,
433
- dateField,
434
- dateRangeField,
435
- formSection,
436
- inputField,
437
- numberField,
438
- phoneField,
439
- renderFormBuilderField,
440
- selectField,
441
- switchField,
442
- textareaField,
443
- }
@@ -1,3 +0,0 @@
1
- export { affixMock } from "./mock"
2
- export { AffixShowcase } from "./showcase"
3
-
@@ -1,26 +0,0 @@
1
- import type { ComponentDemoMock } from "../types"
2
-
3
- export const affixMock: ComponentDemoMock = {
4
- code: `import { Affix } from "@/index"
5
-
6
- export function Example() {
7
- return (
8
- <div className="relative h-48 overflow-y-auto border p-3">
9
- <Affix offsetTop={12} zIndex={40} className="bg-primary text-primary-foreground px-3 py-2">
10
- Sticky header
11
- </Affix>
12
- <p className="pt-10">Scroll inside container to test sticky placement.</p>
13
- </div>
14
- )
15
- }`,
16
- cliCommand: "npx tembro add affix",
17
- highlights: [
18
- "Pin content to an offset within a scrollable container",
19
- "Simple API with top and z-index control",
20
- ],
21
- scenarios: [
22
- { title: "Toolbar", description: "Keep action buttons visible while users scroll long forms." },
23
- { title: "Quick filters", description: "Keep filters always reachable in long list pages." },
24
- ],
25
- }
26
-
@@ -1,37 +0,0 @@
1
- import * as React from "react"
2
-
3
- import { Affix } from "@/index"
4
-
5
- export function AffixShowcase() {
6
- const [offsetTop, setOffsetTop] = React.useState(0)
7
- const [zIndex, setZIndex] = React.useState(40)
8
-
9
- return (
10
- <div className="space-y-4">
11
- <div className="flex flex-wrap gap-2">
12
- <button type="button" className="rounded-md border px-2.5 py-1 text-sm" onClick={() => setOffsetTop((value) => Math.max(0, value - 8))}>
13
- Offset -8
14
- </button>
15
- <button type="button" className="rounded-md border px-2.5 py-1 text-sm" onClick={() => setOffsetTop((value) => value + 8)}>
16
- Offset +8
17
- </button>
18
- <button type="button" className="rounded-md border px-2.5 py-1 text-sm" onClick={() => setZIndex((value) => (value === 30 ? 80 : 30))}>
19
- Toggle z-index
20
- </button>
21
- </div>
22
- <p className="text-sm text-muted-foreground">Current settings: offsetTop={offsetTop}, zIndex={zIndex}</p>
23
- <div className="relative h-48 overflow-y-auto rounded-lg border bg-muted/20 p-3">
24
- <div className="h-80 space-y-2">
25
- <Affix offsetTop={offsetTop} zIndex={zIndex} className="mb-3 bg-primary/95 rounded-md px-3 py-2 text-primary-foreground">
26
- Sticky anchor bar
27
- </Affix>
28
- <p>Scroll this area to verify sticky behavior.</p>
29
- <p>Affix stays visible at the selected top offset.</p>
30
- <p>Useful in dashboard toolbars and contextual quick actions.</p>
31
- <p className="h-64" />
32
- </div>
33
- </div>
34
- </div>
35
- )
36
- }
37
-
@@ -1,2 +0,0 @@
1
- export { aspectRatioMock } from "./mock"
2
- export { AspectRatioShowcase } from "./showcase"
@@ -1,26 +0,0 @@
1
- import type { ComponentDemoMock } from "../types"
2
-
3
- export const aspectRatioMock: ComponentDemoMock = {
4
- code: `import { AspectRatio } from "@/index"
5
-
6
- export function Example() {
7
- return (
8
- <AspectRatio ratio={16 / 9} className="rounded-xl border bg-muted">
9
- <div className="grid size-full place-items-center text-sm font-medium text-foreground">
10
- 16:9 media slot
11
- </div>
12
- </AspectRatio>
13
- )
14
- }`,
15
- cliCommand: "npx tembro add aspect-ratio",
16
- highlights: [
17
- "Controls media card proportions in one place",
18
- "Works for images, iframes, and any fixed-ratio container",
19
- "Stable in dashboard and content-heavy layouts",
20
- ],
21
- scenarios: [
22
- { title: "Media hero", description: "Reserve consistent 16:9 ratio for previews." },
23
- { title: "Card media", description: "Keep media and text alignment predictable." },
24
- { title: "Document preview", description: "Prevent jumpy layouts while content loads." },
25
- ],
26
- }
@@ -1,37 +0,0 @@
1
- import * as React from "react"
2
-
3
- const ratioLabels: Array<{ label: string; ratio: number }> = [
4
- { label: "16:9", ratio: 16 / 9 },
5
- { label: "4:3", ratio: 4 / 3 },
6
- { label: "1:1", ratio: 1 },
7
- { label: "3:4", ratio: 3 / 4 },
8
- ]
9
-
10
- import { Button, AspectRatio } from "@/index"
11
- export function AspectRatioShowcase() {
12
- const [active, setActive] = React.useState(0)
13
-
14
- return (
15
- <div className="space-y-5">
16
- <section className="flex flex-wrap gap-3">
17
- {ratioLabels.map((item, index) => (
18
- <Button
19
- key={item.label}
20
- variant={active === index ? "default" : "outline"}
21
- size="sm"
22
- onClick={() => setActive(index)}
23
- >
24
- {item.label}
25
- </Button>
26
- ))}
27
- </section>
28
-
29
- <AspectRatio ratio={ratioLabels[active].ratio} className="rounded-2xl border border-border bg-card">
30
- <div className="grid h-full place-items-center bg-[linear-gradient(135deg,color-mix(in_oklch,var(--aui-page-bg),transparent_75%),transparent)] p-6 text-center">
31
- <p className="text-sm text-muted-foreground">{ratioLabels[active].label}</p>
32
- <p className="text-xl font-semibold text-foreground">Adaptive ratio surface</p>
33
- </div>
34
- </AspectRatio>
35
- </div>
36
- )
37
- }
@@ -1,3 +0,0 @@
1
- export { cascaderMock } from "./mock"
2
- export { CascaderShowcase } from "./showcase"
3
-
@@ -1,24 +0,0 @@
1
- import type { ComponentDemoMock } from "../types"
2
-
3
- export const cascaderMock: ComponentDemoMock = {
4
- code: `import { Cascader } from "@/index"
5
-
6
- const options = [{ value: "eu", label: "Europe", children: [{ value: "uk", label: "United Kingdom", children: [{ value: "london", label: "London" }] }] }]
7
-
8
- export function Example() {
9
- const [value, setValue] = useState<string[]>([])
10
-
11
- return <Cascader options={options} value={value} onValueChange={setValue} />
12
- }`,
13
- cliCommand: "npx tembro add cascader",
14
- highlights: [
15
- "Three-level dependency selects",
16
- "Controlled by string path value",
17
- "Disabled states for unavailable levels",
18
- ],
19
- scenarios: [
20
- { title: "Location selector", description: "Choose region / country / city in one compact control." },
21
- { title: "Category trees", description: "Pick nested taxonomy in forms." },
22
- ],
23
- }
24
-
@@ -1,20 +0,0 @@
1
- import * as React from "react"
2
-
3
- import { Cascader, type CascaderOption } from "@/index"
4
-
5
- const locations: CascaderOption[] = [
6
- { value: "eu", label: "Europe", children: [{ value: "uk", label: "United Kingdom", children: [{ value: "london", label: "London" }] }] },
7
- { value: "us", label: "United States", children: [{ value: "ca", label: "California", children: [{ value: "sf", label: "San Francisco" }] }] },
8
- ]
9
-
10
- export function CascaderShowcase() {
11
- const [value, setValue] = React.useState<string[]>([])
12
-
13
- return (
14
- <div className="space-y-3">
15
- <Cascader options={locations} value={value} onValueChange={setValue} />
16
- <p className="text-sm text-muted-foreground">Selected path: {value.length ? value.join(" / ") : "Not selected"}</p>
17
- </div>
18
- )
19
- }
20
-
@@ -1,2 +0,0 @@
1
- export { EmptyStateShowcase } from "./showcase"
2
- export { emptyStateMock } from "./mock"