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
@@ -15,15 +15,19 @@ export type ComboboxOption<TValue extends string = string> = {
15
15
  hidden?: boolean
16
16
  }
17
17
 
18
- export type ComboboxProps<TValue extends string = string> = React.ComponentProps<"div"> & {
18
+ export type ComboboxProps<TValue extends string = string> = React.ComponentProps<"div"> & {
19
19
  value?: TValue
20
20
  options: ComboboxOption<TValue>[]
21
21
  onValueChange?: (value: TValue | undefined, option?: ComboboxOption<TValue>) => void
22
22
  placeholder?: React.ReactNode
23
23
  searchPlaceholder?: string
24
- emptyLabel?: React.ReactNode
25
- disabled?: boolean
24
+ emptyLabel?: React.ReactNode
25
+ disabled?: boolean
26
26
  invalid?: boolean
27
+ clearable?: boolean
28
+ allowDeselect?: boolean
29
+ showSelectedDescription?: boolean
30
+ onSearchChange?: (value: string) => void
27
31
  triggerClassName?: string
28
32
  contentClassName?: string
29
33
  optionClassName?: string
@@ -36,9 +40,13 @@ function Combobox<TValue extends string = string>({
36
40
  onValueChange,
37
41
  placeholder = "Select option",
38
42
  searchPlaceholder = "Search...",
39
- emptyLabel = "No option found",
43
+ emptyLabel = "No option found",
40
44
  disabled = false,
41
45
  invalid,
46
+ clearable = false,
47
+ allowDeselect = false,
48
+ showSelectedDescription = true,
49
+ onSearchChange,
42
50
  triggerClassName,
43
51
  contentClassName,
44
52
  optionClassName,
@@ -58,7 +66,16 @@ function Combobox<TValue extends string = string>({
58
66
 
59
67
  return (
60
68
  <div data-slot="combobox" className={cn("grid w-full gap-2", className)} {...props}>
61
- <Popover open={open} onOpenChange={setOpen}>
69
+ <Popover
70
+ open={open}
71
+ onOpenChange={(nextOpen) => {
72
+ setOpen(nextOpen)
73
+ if (!nextOpen) {
74
+ setSearch("")
75
+ onSearchChange?.("")
76
+ }
77
+ }}
78
+ >
62
79
  <PopoverTrigger
63
80
  render={
64
81
  <Button
@@ -71,9 +88,40 @@ function Combobox<TValue extends string = string>({
71
88
  />
72
89
  }
73
90
  >
74
- <span className={cn("min-w-0 flex-1 truncate font-medium", !selectedOption && "font-normal text-muted-foreground")}>
75
- {selectedOption?.label ?? placeholder}
91
+ <span className={cn("min-w-0 flex-1", !selectedOption && "text-muted-foreground")}>
92
+ {selectedOption ? (
93
+ <span className="flex min-w-0 flex-col items-start">
94
+ <span className="truncate font-medium">{selectedOption.label}</span>
95
+ {showSelectedDescription && selectedOption.description ? (
96
+ <span className="truncate text-[11px] text-muted-foreground">{selectedOption.description}</span>
97
+ ) : null}
98
+ </span>
99
+ ) : (
100
+ <span className="truncate font-normal">{placeholder}</span>
101
+ )}
76
102
  </span>
103
+ {clearable && selectedOption && !disabled ? (
104
+ <span
105
+ role="button"
106
+ tabIndex={0}
107
+ aria-label="Clear value"
108
+ className="inline-flex size-6 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-muted/55 hover:text-foreground"
109
+ onClick={(event) => {
110
+ event.preventDefault()
111
+ event.stopPropagation()
112
+ onValueChange?.(undefined, undefined)
113
+ }}
114
+ onKeyDown={(event) => {
115
+ if (event.key === "Enter" || event.key === " ") {
116
+ event.preventDefault()
117
+ event.stopPropagation()
118
+ onValueChange?.(undefined, undefined)
119
+ }
120
+ }}
121
+ >
122
+ ×
123
+ </span>
124
+ ) : null}
77
125
  <ChevronDownIcon className="size-4 opacity-60" />
78
126
  </PopoverTrigger>
79
127
  <PopoverContent
@@ -83,7 +131,15 @@ function Combobox<TValue extends string = string>({
83
131
  >
84
132
  <div className="relative mb-2">
85
133
  <SearchIcon className="pointer-events-none absolute left-2 top-1/2 size-4 -translate-y-1/2 text-muted-foreground" />
86
- <Input value={search} onChange={(event) => setSearch(event.target.value)} placeholder={searchPlaceholder} className={cn("h-9 pl-8", searchClassName)} />
134
+ <Input
135
+ value={search}
136
+ onChange={(event) => {
137
+ setSearch(event.target.value)
138
+ onSearchChange?.(event.target.value)
139
+ }}
140
+ placeholder={searchPlaceholder}
141
+ className={cn("h-9 pl-8", searchClassName)}
142
+ />
87
143
  </div>
88
144
  <div className="max-h-64 overflow-y-auto">
89
145
  {filteredOptions.length ? filteredOptions.map((option) => {
@@ -99,7 +155,8 @@ function Combobox<TValue extends string = string>({
99
155
  optionClassName
100
156
  )}
101
157
  onClick={() => {
102
- onValueChange?.(option.value, option)
158
+ const nextValue = allowDeselect && active ? undefined : option.value
159
+ onValueChange?.(nextValue, nextValue ? option : undefined)
103
160
  setOpen(false)
104
161
  }}
105
162
  >
@@ -15,9 +15,7 @@ export * from "./quantity-stepper"
15
15
  export * from "./rating"
16
16
  export * from "./search-input"
17
17
  export * from "./simple-select"
18
- export * from "./cascader"
19
18
  export * from "./json-input"
20
- export * from "./mention-input"
21
19
  export * from "./time-picker"
22
20
  export * from "./slider"
23
21
  export * from "./tag-input"
@@ -23,7 +23,5 @@ export * from "./tag-input"
23
23
  export * from "./inline-editable"
24
24
 
25
25
  // Advanced / modern inputs
26
- export * from "./cascader"
27
26
  export * from "./json-input"
28
- export * from "./mention-input"
29
27
  export * from "./time-picker"
@@ -32,10 +32,11 @@ export type SimpleSelectProps = Omit<
32
32
  size?: "sm" | "default" | "lg"
33
33
  clearable?: boolean
34
34
  searchable?: boolean
35
- loading?: boolean
36
- loadingLabel?: React.ReactNode
37
- disabled?: boolean
38
- triggerClassName?: string
35
+ loading?: boolean
36
+ loadingLabel?: React.ReactNode
37
+ disabled?: boolean
38
+ showSelectedDescription?: boolean
39
+ triggerClassName?: string
39
40
  contentClassName?: string
40
41
  itemClassName?: string
41
42
  searchClassName?: string
@@ -63,23 +64,34 @@ function SimpleSelect({
63
64
  size = "default",
64
65
  clearable = false,
65
66
  searchable = false,
66
- loading = false,
67
- loadingLabel = "Loading options...",
68
- disabled = false,
69
- triggerClassName,
67
+ loading = false,
68
+ loadingLabel = "Loading options...",
69
+ disabled = false,
70
+ showSelectedDescription = true,
71
+ triggerClassName,
70
72
  contentClassName,
71
73
  itemClassName,
72
- searchClassName,
73
- renderOption,
74
- invalid,
75
- ...props
76
- }: SimpleSelectProps) {
74
+ searchClassName,
75
+ renderOption,
76
+ invalid,
77
+ onOpenChange,
78
+ ...props
79
+ }: SimpleSelectProps) {
77
80
  const [search, setSearch] = React.useState("")
78
81
  const selectedOption = options.find((option) => option.value === value)
79
82
  const filteredOptions = options.filter((option) => optionMatchesSearch(option, search))
80
83
 
81
84
  return (
82
- <Select value={value} onValueChange={(val) => onValueChange?.(val as string)} disabled={disabled || loading} {...props}>
85
+ <Select
86
+ value={value}
87
+ onValueChange={(val) => onValueChange?.(val as string)}
88
+ disabled={disabled || loading}
89
+ onOpenChange={(open, eventDetails) => {
90
+ if (!open) setSearch("")
91
+ onOpenChange?.(open, eventDetails)
92
+ }}
93
+ {...props}
94
+ >
83
95
  <SelectTrigger
84
96
  size={size}
85
97
  aria-invalid={invalid || undefined}
@@ -88,12 +100,22 @@ function SimpleSelect({
88
100
  triggerClassName
89
101
  )}
90
102
  >
91
- <SelectValue placeholder={placeholder}>{selectedOption?.label}</SelectValue>
92
- {loading ? <LoaderCircleIcon className="size-4 animate-spin text-muted-foreground" /> : null}
93
- {clearable && value && !disabled && !loading ? (
94
- <button
95
- type="button"
96
- aria-label={clearLabel}
103
+ <SelectValue placeholder={placeholder}>
104
+ {selectedOption ? (
105
+ <span className="flex min-w-0 flex-col items-start">
106
+ <span className="truncate">{selectedOption.label}</span>
107
+ {showSelectedDescription && selectedOption.description ? (
108
+ <span className="truncate text-[11px] font-medium text-muted-foreground">{selectedOption.description}</span>
109
+ ) : null}
110
+ </span>
111
+ ) : null}
112
+ </SelectValue>
113
+ {loading ? <LoaderCircleIcon className="size-4 animate-spin text-muted-foreground" /> : null}
114
+ {clearable && value && !disabled && !loading ? (
115
+ <span
116
+ role="button"
117
+ tabIndex={0}
118
+ aria-label={clearLabel}
97
119
  className="ml-1 rounded-[var(--radius-sm)] border border-border/65 p-1 text-muted-foreground transition-colors hover:border-border hover:bg-muted/55 hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
98
120
  onClick={(event) => {
99
121
  event.preventDefault()
@@ -102,11 +124,17 @@ function SimpleSelect({
102
124
  }}
103
125
  onMouseDown={stopInteractivePropagation}
104
126
  onDoubleClick={stopInteractivePropagation}
127
+ onKeyDown={(event) => {
128
+ if (event.key === "Enter" || event.key === " ") {
129
+ event.preventDefault()
130
+ onValueChange?.(undefined)
131
+ }
132
+ }}
105
133
  >
106
- <XIcon className="size-3.5" />
107
- </button>
108
- ) : null}
109
- </SelectTrigger>
134
+ <XIcon className="size-3.5" />
135
+ </span>
136
+ ) : null}
137
+ </SelectTrigger>
110
138
  <SelectContent
111
139
  className={cn(
112
140
  "w-(--anchor-width)",
@@ -36,6 +36,9 @@ export type AppSidebarProps = React.ComponentProps<"aside"> & {
36
36
  footer?: React.ReactNode
37
37
  items?: AppSidebarNavItem[]
38
38
  collapsed?: boolean
39
+ width?: React.CSSProperties["width"]
40
+ collapsedWidth?: React.CSSProperties["width"]
41
+ mobileWidth?: React.CSSProperties["width"]
39
42
  collapsedRail?: React.ReactNode
40
43
  railItems?: AppSidebarNavItem[]
41
44
  footerAccount?: AppSidebarFooterAccount
@@ -63,6 +66,23 @@ export type AppSidebarProps = React.ComponentProps<"aside"> & {
63
66
  }
64
67
 
65
68
  const DEFAULT_APP_SIDEBAR_BREAKPOINT = 1024
69
+ const DEFAULT_SIDEBAR_WIDTH = "18rem"
70
+ const DEFAULT_COLLAPSED_SIDEBAR_WIDTH = "4.75rem"
71
+ const DEFAULT_MOBILE_SIDEBAR_WIDTH = "min(88vw, 22rem)"
72
+
73
+ function getSidebarInteractiveClassName({
74
+ active,
75
+ disabled,
76
+ }: {
77
+ active?: boolean
78
+ disabled?: boolean
79
+ }) {
80
+ return cn(
81
+ "border-[color:transparent] text-foreground/80 hover:border-[color:var(--aui-divider)] hover:bg-[color:color-mix(in_oklch,var(--card),var(--primary)_4%)] hover:text-foreground focus-visible:border-[color:var(--aui-control-border-strong,var(--border))] focus-visible:bg-[color:color-mix(in_oklch,var(--card),var(--primary)_6%)] focus-visible:text-foreground focus-visible:shadow-[0_0_0_3px_color-mix(in_oklch,var(--primary),transparent_86%)]",
82
+ active && "border-[color:color-mix(in_oklch,var(--primary),transparent_76%)] bg-[color:color-mix(in_oklch,var(--primary),transparent_91%)] text-foreground shadow-[inset_0_1px_0_rgba(255,255,255,0.08)]",
83
+ disabled && "hover:border-transparent hover:bg-transparent hover:text-foreground/80"
84
+ )
85
+ }
66
86
 
67
87
  function hasVisibleSidebarChildren(item: AppSidebarNavItem) {
68
88
  return item.items?.some((child) => !child.hidden) ?? false
@@ -101,6 +121,7 @@ function SidebarLeafItem({
101
121
  "data-depth": String(depth),
102
122
  className: cn(
103
123
  "flex min-h-9 items-center gap-2 rounded-lg border border-transparent px-2.5 text-sm font-medium outline-none transition-[background-color,border-color,color,box-shadow] data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50",
124
+ getSidebarInteractiveClassName({ active: item.active, disabled: item.disabled }),
104
125
  collapsed && "justify-center px-2"
105
126
  ),
106
127
  }
@@ -257,6 +278,7 @@ function SidebarTree({
257
278
  data-slot="app-sidebar-group-trigger"
258
279
  className={cn(
259
280
  "flex min-h-9 list-none items-center gap-2 rounded-lg border border-transparent text-sm font-medium outline-none transition-[background-color,border-color,color,box-shadow]",
281
+ getSidebarInteractiveClassName({ active }),
260
282
  collapsed ? "justify-center px-2" : "px-2.5"
261
283
  )}
262
284
  >
@@ -312,6 +334,7 @@ function SidebarActionButton({
312
334
  data-disabled={item.disabled || undefined}
313
335
  className={cn(
314
336
  "flex min-h-9 items-center gap-2 rounded-lg border border-transparent px-2.5 text-sm font-medium outline-none transition-[background-color,border-color,color,box-shadow] data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50",
337
+ getSidebarInteractiveClassName({ active: item.active, disabled: item.disabled }),
315
338
  collapsed && "justify-center px-2"
316
339
  )}
317
340
  disabled={item.disabled}
@@ -350,6 +373,7 @@ function SidebarFooterAccount({
350
373
  data-slot="app-sidebar-account"
351
374
  className={cn(
352
375
  "flex w-full items-center gap-3 rounded-[min(var(--radius-xl),16px)] border border-transparent text-left transition-[background-color,border-color,color,box-shadow]",
376
+ getSidebarInteractiveClassName({}),
353
377
  collapsed ? "justify-center px-2 py-2.5" : "px-3 py-2.5"
354
378
  )}
355
379
  onClick={() => {
@@ -397,10 +421,13 @@ function SidebarFooterAccount({
397
421
 
398
422
  function SidebarSurface({
399
423
  className,
424
+ style,
400
425
  header,
401
426
  footer,
402
427
  items = [],
403
428
  collapsed = false,
429
+ width = DEFAULT_SIDEBAR_WIDTH,
430
+ collapsedWidth = DEFAULT_COLLAPSED_SIDEBAR_WIDTH,
404
431
  collapsedRail,
405
432
  railItems = [],
406
433
  footerAccount,
@@ -438,6 +465,11 @@ function SidebarSurface({
438
465
  data-collapsed={collapsed || undefined}
439
466
  data-mobile={mobile || undefined}
440
467
  className={cn("flex h-full min-h-0 flex-col overflow-hidden", className)}
468
+ style={{
469
+ width: collapsed ? collapsedWidth : width,
470
+ minWidth: collapsed ? collapsedWidth : width,
471
+ ...style,
472
+ }}
441
473
  {...props}
442
474
  >
443
475
  {(header || showMobileHeader) && (
@@ -565,6 +597,9 @@ function AppSidebar({
565
597
  footer,
566
598
  items = [],
567
599
  collapsed = false,
600
+ width = DEFAULT_SIDEBAR_WIDTH,
601
+ collapsedWidth = DEFAULT_COLLAPSED_SIDEBAR_WIDTH,
602
+ mobileWidth = DEFAULT_MOBILE_SIDEBAR_WIDTH,
568
603
  collapsedRail,
569
604
  railItems = [],
570
605
  footerAccount,
@@ -634,6 +669,8 @@ function AppSidebar({
634
669
  footer,
635
670
  items,
636
671
  collapsed,
672
+ width,
673
+ collapsedWidth,
637
674
  collapsedRail,
638
675
  railItems,
639
676
  footerAccount,
@@ -703,11 +740,15 @@ function AppSidebar({
703
740
  aria-modal="true"
704
741
  aria-label={typeof mobileTitle === "string" ? mobileTitle : "Navigation"}
705
742
  className={cn(
706
- "fixed inset-y-0 left-0 z-50 w-[min(88vw,22rem)] max-w-[22rem] border-r border-[color:var(--aui-divider)] bg-[color:var(--aui-page-bg)] shadow-2xl transition-transform duration-200 ease-out",
743
+ "fixed inset-y-0 left-0 z-50 max-w-[22rem] border-r border-[color:var(--aui-divider)] bg-[color:var(--aui-page-bg)] shadow-2xl transition-transform duration-200 ease-out",
707
744
  mobileOpen ? "translate-x-0" : "-translate-x-full",
708
745
  mobilePanelClassName,
709
746
  className
710
747
  )}
748
+ style={{
749
+ width: mobileWidth,
750
+ minWidth: mobileWidth,
751
+ }}
711
752
  />
712
753
  </div>
713
754
  </>
@@ -18,6 +18,7 @@ export type BreadcrumbsProps = React.ComponentProps<"nav"> & {
18
18
  maxItems?: number
19
19
  collapseLabel?: React.ReactNode
20
20
  separator?: React.ReactNode
21
+ wrap?: boolean
21
22
  renderLink?: (props: React.ComponentProps<"a"> & { item: BreadcrumbItem; [key: `data-${string}`]: string | boolean | undefined }) => React.ReactNode
22
23
  }
23
24
 
@@ -44,6 +45,7 @@ function Breadcrumbs({
44
45
  maxItems,
45
46
  collapseLabel = "…",
46
47
  separator = <ChevronRightIcon className="size-3.5" />,
48
+ wrap = false,
47
49
  renderLink,
48
50
  ...props
49
51
  }: BreadcrumbsProps) {
@@ -54,11 +56,15 @@ function Breadcrumbs({
54
56
 
55
57
  return (
56
58
  <nav
57
- data-slot="breadcrumbs"
58
- aria-label="Breadcrumb"
59
- className={cn("flex min-w-0 items-center gap-1 text-sm text-muted-foreground", className)}
60
- {...props}
61
- >
59
+ data-slot="breadcrumbs"
60
+ aria-label="Breadcrumb"
61
+ className={cn(
62
+ "flex min-w-0 items-center gap-1 overflow-x-auto text-sm text-muted-foreground",
63
+ wrap ? "flex-wrap" : "whitespace-nowrap",
64
+ className
65
+ )}
66
+ {...props}
67
+ >
62
68
  {resolvedItems.map((item, index) => {
63
69
  const isCollapsed = item.key === "__collapsed__"
64
70
  const isLast = index === resolvedItems.length - 1
@@ -76,7 +82,7 @@ function Breadcrumbs({
76
82
  item,
77
83
  href: item.href,
78
84
  "data-slot": "breadcrumbs-link",
79
- className: "truncate transition-colors hover:text-foreground",
85
+ className: "truncate rounded-[var(--radius-sm)] px-1 py-0.5 transition-colors hover:bg-accent/55 hover:text-foreground",
80
86
  onClick: () => item.onSelect?.(),
81
87
  children: (
82
88
  <span className="inline-flex min-w-0 items-center gap-1.5">
@@ -88,7 +94,7 @@ function Breadcrumbs({
88
94
  <a
89
95
  href={item.href}
90
96
  data-slot="breadcrumbs-link"
91
- className="truncate transition-colors hover:text-foreground"
97
+ className="truncate rounded-[var(--radius-sm)] px-1 py-0.5 transition-colors hover:bg-accent/55 hover:text-foreground"
92
98
  onClick={() => item.onSelect?.()}
93
99
  >
94
100
  <span className="inline-flex min-w-0 items-center gap-1.5">
@@ -101,7 +107,10 @@ function Breadcrumbs({
101
107
  <span
102
108
  data-slot="breadcrumbs-current"
103
109
  aria-current={isCurrent ? (item.currentLabel ?? "page") : undefined}
104
- className={cn("inline-flex min-w-0 items-center gap-1.5 truncate", isCurrent && "font-medium text-foreground")}
110
+ className={cn(
111
+ "inline-flex min-w-0 items-center gap-1.5 truncate rounded-[var(--radius-sm)] px-1 py-0.5",
112
+ isCurrent && "bg-accent/45 font-medium text-foreground"
113
+ )}
105
114
  >
106
115
  {item.icon ? <span className="shrink-0">{item.icon}</span> : null}
107
116
  <span className="truncate">{item.label}</span>
@@ -5,5 +5,4 @@ export * from "./sidebar-nav"
5
5
  export * from "./breadcrumbs"
6
6
  export * from "./page-container"
7
7
  export * from "./section"
8
- export * from "./stack"
9
8
  export * from "./sticky-footer-bar"
@@ -4,5 +4,4 @@ export * from "./page-container"
4
4
  export * from "./section"
5
5
  export * from "./section-header"
6
6
  export * from "./sidebar-nav"
7
- export * from "./stack"
8
7
  export * from "./sticky-footer-bar"
@@ -17,16 +17,23 @@ export type StatCardTrend = {
17
17
  label?: React.ReactNode
18
18
  }
19
19
 
20
- export type StatCardProps = React.ComponentProps<typeof Card> & {
20
+ export type StatCardProps = React.ComponentProps<typeof Card> & {
21
21
  title?: React.ReactNode
22
22
  value?: React.ReactNode
23
- description?: React.ReactNode
24
- icon?: React.ReactNode
25
- action?: React.ReactNode
26
- trend?: StatCardTrend
27
- footer?: React.ReactNode
28
- helperText?: React.ReactNode
29
- loading?: boolean
23
+ description?: React.ReactNode
24
+ icon?: React.ReactNode
25
+ action?: React.ReactNode
26
+ trend?: StatCardTrend
27
+ footer?: React.ReactNode
28
+ helperText?: React.ReactNode
29
+ comparisonItems?: Array<{
30
+ label: React.ReactNode
31
+ value: React.ReactNode
32
+ change?: React.ReactNode
33
+ trend?: StatCardTrend["tone"] | "neutral"
34
+ }>
35
+ comparisonColumns?: 2 | 3 | 4
36
+ loading?: boolean
30
37
  valuePrefix?: React.ReactNode
31
38
  valueSuffix?: React.ReactNode
32
39
  contentClassName?: string
@@ -59,11 +66,13 @@ function StatCard({
59
66
  value,
60
67
  description,
61
68
  icon,
62
- action,
63
- trend,
64
- footer,
65
- helperText,
66
- loading = false,
69
+ action,
70
+ trend,
71
+ footer,
72
+ helperText,
73
+ comparisonItems,
74
+ comparisonColumns = 2,
75
+ loading = false,
67
76
  valuePrefix,
68
77
  valueSuffix,
69
78
  contentClassName,
@@ -99,22 +108,53 @@ function StatCard({
99
108
  </div>
100
109
  </CardHeader>
101
110
 
102
- {(description || trend || helperText || footer) && (
103
- <CardContent className={cn("space-y-2", contentClassName)}>
104
- {(description || trend) && (
105
- <div className="flex flex-wrap items-center gap-2 text-sm">
111
+ {(description || trend || helperText || footer || comparisonItems?.length) && (
112
+ <CardContent className={cn("space-y-2", contentClassName)}>
113
+ {(description || trend) && (
114
+ <div className="flex flex-wrap items-center gap-2 text-sm">
106
115
  {trend && (
107
116
  <Badge variant="ghost" tone={trend.tone === "muted" || trend.tone === "default" ? "neutral" : trend.tone} size="sm" className={cn("font-medium", trendClassName[trend.tone ?? "default"])}>
108
117
  {trend.value}
109
118
  </Badge>
110
119
  )}
111
120
  {trend?.label ? <span className="text-muted-foreground">{trend.label}</span> : null}
112
- {description && <span className="text-muted-foreground">{description}</span>}
113
- </div>
114
- )}
115
- {helperText ? <p className="text-xs leading-5 text-muted-foreground">{helperText}</p> : null}
116
- {footer}
117
- </CardContent>
121
+ {description && <span className="text-muted-foreground">{description}</span>}
122
+ </div>
123
+ )}
124
+ {comparisonItems?.length ? (
125
+ <div
126
+ data-slot="stat-card-comparison"
127
+ className={cn(
128
+ "grid gap-3 pt-1",
129
+ comparisonColumns === 2 && "grid-cols-2",
130
+ comparisonColumns === 3 && "grid-cols-3",
131
+ comparisonColumns === 4 && "grid-cols-2 sm:grid-cols-4"
132
+ )}
133
+ >
134
+ {comparisonItems.map((item, index) => (
135
+ <div key={index} className="min-w-0 space-y-1">
136
+ <p className="truncate text-[11px] font-medium uppercase tracking-[0.16em] text-muted-foreground">
137
+ {item.label}
138
+ </p>
139
+ <div className="flex flex-wrap items-center gap-2">
140
+ <span className="text-base font-semibold text-foreground">{item.value}</span>
141
+ {item.change ? (
142
+ <Badge
143
+ variant="ghost"
144
+ tone={item.trend === "neutral" ? "neutral" : item.trend === "default" ? "neutral" : item.trend}
145
+ size="sm"
146
+ >
147
+ {item.change}
148
+ </Badge>
149
+ ) : null}
150
+ </div>
151
+ </div>
152
+ ))}
153
+ </div>
154
+ ) : null}
155
+ {helperText ? <p className="text-xs leading-5 text-muted-foreground">{helperText}</p> : null}
156
+ {footer}
157
+ </CardContent>
118
158
  )}
119
159
  </>
120
160
  )}
@@ -10,10 +10,11 @@ export type CalendarSchedulerEvent = {
10
10
  tone?: "default" | "success" | "warning" | "danger"
11
11
  }
12
12
 
13
- export type CalendarSchedulerProps = React.ComponentProps<"div"> & {
14
- events: CalendarSchedulerEvent[]
15
- days?: string[]
16
- }
13
+ export type CalendarSchedulerProps = React.ComponentProps<"div"> & {
14
+ events: CalendarSchedulerEvent[]
15
+ days?: string[]
16
+ empty?: React.ReactNode
17
+ }
17
18
 
18
19
  const toneClassName = {
19
20
  default: "border-border bg-muted",
@@ -22,24 +23,33 @@ const toneClassName = {
22
23
  danger: "border-red-200 bg-red-50 text-red-700 dark:border-red-900 dark:bg-red-950 dark:text-red-300",
23
24
  }
24
25
 
25
- function CalendarScheduler({ events, days, className, ...props }: CalendarSchedulerProps) {
26
- const visibleDays = days ?? Array.from(new Set(events.map((event) => event.date)))
27
-
28
- return (
29
- <div data-slot="calendar-scheduler" className={cn("grid gap-3", className)} {...props}>
30
- {visibleDays.map((day) => (
31
- <section key={day} className="rounded-xl border bg-card p-3">
32
- <div className="mb-2 text-sm font-semibold">{day}</div>
33
- <div className="grid gap-2">
34
- {events.filter((event) => event.date === day).map((event) => (
35
- <div key={event.id} className={cn("rounded-md border px-3 py-2 text-sm", toneClassName[event.tone ?? "default"])}>
36
- <div className="font-medium">{event.title}</div>
37
- {event.time && <div className="text-xs opacity-70">{event.time}</div>}
38
- </div>
39
- ))}
40
- </div>
41
- </section>
42
- ))}
26
+ function CalendarScheduler({ events, days, empty = "No events scheduled.", className, ...props }: CalendarSchedulerProps) {
27
+ const visibleDays = days ?? Array.from(new Set(events.map((event) => event.date)))
28
+
29
+ return (
30
+ <div data-slot="calendar-scheduler" className={cn("grid gap-3", className)} {...props}>
31
+ {visibleDays.map((day) => (
32
+ <section key={day} className="rounded-[var(--aui-card-radius,var(--radius-xl))] border border-[color:var(--aui-card-border,var(--border))] bg-card p-4 shadow-[var(--aui-card-shadow,var(--aui-control-shadow,none))]">
33
+ <div className="mb-3 flex items-center justify-between gap-3">
34
+ <div className="text-sm font-semibold text-foreground">{day}</div>
35
+ <div className="text-xs text-muted-foreground">{events.filter((event) => event.date === day).length} items</div>
36
+ </div>
37
+ <div className="grid gap-2">
38
+ {events.filter((event) => event.date === day).length === 0 ? (
39
+ <div className="rounded-[var(--radius-md)] border border-dashed border-[color:var(--aui-card-border,var(--border))] px-3 py-4 text-sm text-muted-foreground">
40
+ {empty}
41
+ </div>
42
+ ) : (
43
+ events.filter((event) => event.date === day).map((event) => (
44
+ <div key={event.id} className={cn("rounded-[var(--radius-md)] border px-3 py-2.5 text-sm shadow-sm", toneClassName[event.tone ?? "default"])}>
45
+ <div className="font-medium">{event.title}</div>
46
+ {event.time && <div className="mt-1 text-xs opacity-70">{event.time}</div>}
47
+ </div>
48
+ ))
49
+ )}
50
+ </div>
51
+ </section>
52
+ ))}
43
53
  </div>
44
54
  )
45
55
  }
@@ -1,11 +1,7 @@
1
- export * from "../display/aspect-ratio"
2
- export * from "../display/carousel"
3
- export * from "../display/float-button"
1
+ export * from "../display/carousel"
4
2
  export * from "../display/qr-code"
5
3
  export * from "../display/tag"
6
4
  export * from "../display/typography"
7
- export * from "../display/watermark"
8
- export * from "./affix"
9
5
  export * from "./calendar-scheduler"
10
6
  export * from "./dual-list-picker"
11
7
  export * from "./menubar"