tembro 2.0.5 → 2.1.0

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 (381) hide show
  1. package/dist/components/calendar/calendar.cjs +1 -1
  2. package/dist/components/calendar/calendar.d.ts +2 -1
  3. package/dist/components/calendar/calendar.js +126 -122
  4. package/dist/components/calendar/date-range-picker.cjs +1 -1
  5. package/dist/components/calendar/date-range-picker.d.ts +2 -1
  6. package/dist/components/calendar/date-range-picker.js +39 -39
  7. package/dist/components/charts/charts.cjs +1 -1
  8. package/dist/components/charts/charts.d.ts +13 -4
  9. package/dist/components/charts/charts.js +76 -46
  10. package/dist/components/charts/progress-ring.cjs +1 -1
  11. package/dist/components/charts/progress-ring.d.ts +3 -1
  12. package/dist/components/charts/progress-ring.js +11 -10
  13. package/dist/components/data-table/data-table-column-visibility-menu.cjs +1 -1
  14. package/dist/components/data-table/data-table-column-visibility-menu.d.ts +4 -1
  15. package/dist/components/data-table/data-table-column-visibility-menu.js +36 -8
  16. package/dist/components/data-table/data-table-pagination.cjs +1 -1
  17. package/dist/components/data-table/data-table-pagination.js +4 -4
  18. package/dist/components/data-table/data-table-toolbar.cjs +1 -1
  19. package/dist/components/data-table/data-table-toolbar.js +12 -13
  20. package/dist/components/data-table/data-table.cjs +1 -1
  21. package/dist/components/data-table/data-table.d.ts +2 -2
  22. package/dist/components/data-table/data-table.js +2 -1
  23. package/dist/components/display/carousel.cjs +1 -1
  24. package/dist/components/display/carousel.d.ts +15 -1
  25. package/dist/components/display/carousel.js +128 -86
  26. package/dist/components/display/code-block.cjs +2 -2
  27. package/dist/components/display/code-block.d.ts +2 -1
  28. package/dist/components/display/code-block.js +17 -12
  29. package/dist/components/display/delta-badge.cjs +1 -1
  30. package/dist/components/display/delta-badge.d.ts +2 -1
  31. package/dist/components/display/delta-badge.js +11 -7
  32. package/dist/components/display/kanban.cjs +1 -1
  33. package/dist/components/display/kanban.d.ts +4 -1
  34. package/dist/components/display/kanban.js +60 -33
  35. package/dist/components/display/metric-grid.cjs +1 -1
  36. package/dist/components/display/metric-grid.d.ts +1 -0
  37. package/dist/components/display/metric-grid.js +1 -1
  38. package/dist/components/display/qr-code.cjs +1 -1
  39. package/dist/components/display/qr-code.d.ts +2 -1
  40. package/dist/components/display/qr-code.js +19 -16
  41. package/dist/components/display/smart-card.d.ts +1 -1
  42. package/dist/components/display/status-legend.d.ts +1 -1
  43. package/dist/components/display/tag.cjs +1 -1
  44. package/dist/components/display/tag.d.ts +2 -1
  45. package/dist/components/display/tag.js +28 -22
  46. package/dist/components/display/tree-view.cjs +1 -1
  47. package/dist/components/display/tree-view.d.ts +9 -1
  48. package/dist/components/display/tree-view.js +104 -40
  49. package/dist/components/display/trend-card.cjs +1 -1
  50. package/dist/components/display/trend-card.js +27 -41
  51. package/dist/components/feedback/alert.cjs +1 -1
  52. package/dist/components/feedback/alert.d.ts +2 -1
  53. package/dist/components/feedback/alert.js +6 -6
  54. package/dist/components/feedback/loading-state.cjs +1 -1
  55. package/dist/components/feedback/loading-state.d.ts +3 -1
  56. package/dist/components/feedback/loading-state.js +23 -10
  57. package/dist/components/feedback/page-state.cjs +1 -1
  58. package/dist/components/feedback/page-state.d.ts +2 -1
  59. package/dist/components/feedback/page-state.js +7 -4
  60. package/dist/components/form/form-field-shell.cjs +1 -1
  61. package/dist/components/form/form-field-shell.d.ts +4 -2
  62. package/dist/components/form/form-field-shell.js +57 -41
  63. package/dist/components/form/form-input.cjs +1 -1
  64. package/dist/components/form/form-input.d.ts +3 -4
  65. package/dist/components/form/form-input.js +259 -257
  66. package/dist/components/form/form-select.cjs +1 -1
  67. package/dist/components/form/form-select.d.ts +2 -2
  68. package/dist/components/form/form-select.js +8 -6
  69. package/dist/components/form/form-switch.cjs +1 -1
  70. package/dist/components/form/form-switch.d.ts +1 -1
  71. package/dist/components/form/form-switch.js +58 -54
  72. package/dist/components/form/form-textarea.cjs +1 -1
  73. package/dist/components/form/form-textarea.d.ts +1 -1
  74. package/dist/components/form/form-textarea.js +29 -27
  75. package/dist/components/inputs/async-select.d.ts +3 -0
  76. package/dist/components/inputs/search-input.d.ts +3 -0
  77. package/dist/components/inputs/simple-select.cjs +1 -1
  78. package/dist/components/inputs/simple-select.d.ts +10 -32
  79. package/dist/components/inputs/simple-select.js +5 -101
  80. package/dist/components/layout/app-sidebar.cjs +1 -1
  81. package/dist/components/layout/app-sidebar.d.ts +1 -0
  82. package/dist/components/layout/app-sidebar.js +36 -36
  83. package/dist/components/layout/breadcrumbs.cjs +1 -1
  84. package/dist/components/layout/breadcrumbs.d.ts +2 -1
  85. package/dist/components/layout/breadcrumbs.js +7 -7
  86. package/dist/components/modern/calendar-scheduler.cjs +1 -1
  87. package/dist/components/modern/calendar-scheduler.d.ts +5 -1
  88. package/dist/components/modern/calendar-scheduler.js +47 -28
  89. package/dist/components/modern/dual-list-picker.cjs +1 -1
  90. package/dist/components/modern/dual-list-picker.d.ts +5 -1
  91. package/dist/components/modern/dual-list-picker.js +81 -23
  92. package/dist/components/modern/rich-text-editor.cjs +1 -1
  93. package/dist/components/modern/rich-text-editor.d.ts +3 -1
  94. package/dist/components/modern/rich-text-editor.js +12 -9
  95. package/dist/components/modern/tour.cjs +1 -1
  96. package/dist/components/modern/tour.d.ts +5 -1
  97. package/dist/components/modern/tour.js +57 -35
  98. package/dist/components/navigation/command-bar.cjs +1 -1
  99. package/dist/components/navigation/command-bar.d.ts +3 -1
  100. package/dist/components/navigation/command-bar.js +10 -7
  101. package/dist/components/navigation/demo.cjs +1 -1
  102. package/dist/components/navigation/demo.js +0 -1
  103. package/dist/components/navigation/nav-tabs.cjs +1 -1
  104. package/dist/components/navigation/nav-tabs.js +39 -27
  105. package/dist/components/navigation/page-tabs.cjs +1 -1
  106. package/dist/components/navigation/page-tabs.js +41 -30
  107. package/dist/components/navigation/pagination.cjs +1 -1
  108. package/dist/components/navigation/pagination.d.ts +7 -1
  109. package/dist/components/navigation/pagination.js +48 -25
  110. package/dist/components/notifications/notification-center.cjs +1 -1
  111. package/dist/components/notifications/notification-center.d.ts +3 -1
  112. package/dist/components/notifications/notification-center.js +56 -38
  113. package/dist/components/notifications/toast.cjs +1 -1
  114. package/dist/components/notifications/toast.d.ts +1 -0
  115. package/dist/components/notifications/toast.js +4 -0
  116. package/dist/components/overlay/alert-dialog.cjs +1 -1
  117. package/dist/components/overlay/alert-dialog.js +1 -1
  118. package/dist/components/overlay/confirm-dialog.cjs +1 -1
  119. package/dist/components/overlay/confirm-dialog.d.ts +4 -2
  120. package/dist/components/overlay/confirm-dialog.js +31 -22
  121. package/dist/components/overlay/drawer.cjs +1 -1
  122. package/dist/components/overlay/drawer.d.ts +3 -1
  123. package/dist/components/overlay/drawer.js +24 -16
  124. package/dist/components/ui/accordion/index.d.ts +4 -0
  125. package/dist/components/ui/badge/index.cjs +1 -1
  126. package/dist/components/ui/badge/index.d.ts +1 -1
  127. package/dist/components/ui/badge/index.js +2 -1
  128. package/dist/components/ui/button/index.cjs +1 -1
  129. package/dist/components/ui/button/index.d.ts +2 -1
  130. package/dist/components/ui/button/index.js +13 -10
  131. package/dist/components/ui/card/index.cjs +1 -1
  132. package/dist/components/ui/card/index.d.ts +13 -2
  133. package/dist/components/ui/card/index.js +74 -49
  134. package/dist/components/ui/dialog/index.cjs +1 -1
  135. package/dist/components/ui/dialog/index.js +2 -1
  136. package/dist/components/ui/hover-card.cjs +1 -1
  137. package/dist/components/ui/hover-card.d.ts +11 -3
  138. package/dist/components/ui/hover-card.js +29 -24
  139. package/dist/components/ui/input/index.cjs +1 -1
  140. package/dist/components/ui/input/index.d.ts +9 -1
  141. package/dist/components/ui/input/index.js +63 -30
  142. package/dist/components/ui/popover/index.cjs +1 -1
  143. package/dist/components/ui/popover/index.d.ts +2 -2
  144. package/dist/components/ui/popover/index.js +6 -5
  145. package/dist/components/ui/radio-group/index.cjs +1 -1
  146. package/dist/components/ui/radio-group/index.d.ts +5 -1
  147. package/dist/components/ui/radio-group/index.js +50 -16
  148. package/dist/components/ui/right-click-menu/index.cjs +1 -1
  149. package/dist/components/ui/right-click-menu/index.d.ts +5 -1
  150. package/dist/components/ui/right-click-menu/index.js +77 -23
  151. package/dist/components/ui/segmented-control/index.cjs +1 -1
  152. package/dist/components/ui/segmented-control/index.d.ts +2 -1
  153. package/dist/components/ui/segmented-control/index.js +23 -11
  154. package/dist/components/ui/select/index.cjs +1 -1
  155. package/dist/components/ui/select/index.d.ts +40 -1
  156. package/dist/components/ui/select/index.js +159 -48
  157. package/dist/components/ui/switch/index.cjs +1 -1
  158. package/dist/components/ui/switch/index.d.ts +18 -0
  159. package/dist/components/ui/switch/index.js +47 -17
  160. package/dist/components/ui/tabs/index.cjs +1 -1
  161. package/dist/components/ui/tabs/index.d.ts +14 -4
  162. package/dist/components/ui/tabs/index.js +11 -8
  163. package/dist/components/ui/textarea/index.cjs +1 -1
  164. package/dist/components/ui/textarea/index.d.ts +10 -2
  165. package/dist/components/ui/textarea/index.js +37 -8
  166. package/dist/components/ui/textarea.cjs +1 -0
  167. package/dist/components/ui/textarea.d.ts +1 -0
  168. package/dist/components/ui/textarea.js +2 -0
  169. package/dist/components/ui/tooltip/index.cjs +1 -1
  170. package/dist/components/ui/tooltip/index.d.ts +11 -3
  171. package/dist/components/ui/tooltip/index.js +41 -20
  172. package/dist/components/upload/file-upload.cjs +1 -1
  173. package/dist/components/upload/file-upload.d.ts +8 -1
  174. package/dist/components/upload/file-upload.js +132 -100
  175. package/dist/components/upload/image-upload.cjs +1 -1
  176. package/dist/components/upload/image-upload.d.ts +5 -1
  177. package/dist/components/upload/image-upload.js +34 -9
  178. package/dist/index.cjs +1 -1
  179. package/dist/index.js +31 -31
  180. package/dist/public-component-surface.cjs +1 -1
  181. package/dist/public-component-surface.js +15 -0
  182. package/dist/showcase/component-api-schema.cjs +1 -1
  183. package/dist/showcase/component-api-schema.js +187 -10
  184. package/dist/showcase/create-demo.cjs +5 -4
  185. package/dist/showcase/create-demo.js +2 -2
  186. package/dist/showcase/fallback.cjs +3 -3
  187. package/dist/showcase/fallback.js +221 -243
  188. package/dist/showcase/premium/alert/showcase.cjs +1 -1
  189. package/dist/showcase/premium/alert/showcase.js +1 -0
  190. package/dist/showcase/premium/app-sidebar/showcase.cjs +1 -1
  191. package/dist/showcase/premium/app-sidebar/showcase.js +1 -0
  192. package/dist/showcase/premium/badge/showcase.cjs +1 -1
  193. package/dist/showcase/premium/badge/showcase.js +7 -0
  194. package/dist/showcase/premium/badge/types.d.ts +1 -1
  195. package/dist/showcase/premium/breadcrumbs/showcase.cjs +1 -1
  196. package/dist/showcase/premium/breadcrumbs/showcase.js +12 -1
  197. package/dist/showcase/premium/button/mock.cjs +1 -4
  198. package/dist/showcase/premium/button/mock.js +1 -1
  199. package/dist/showcase/premium/button/showcase.cjs +1 -1
  200. package/dist/showcase/premium/button/showcase.js +2 -2
  201. package/dist/showcase/premium/card/showcase.cjs +1 -1
  202. package/dist/showcase/premium/card/showcase.js +96 -47
  203. package/dist/showcase/premium/carousel/showcase.cjs +1 -1
  204. package/dist/showcase/premium/carousel/showcase.js +76 -49
  205. package/dist/showcase/premium/command-bar/showcase.cjs +1 -1
  206. package/dist/showcase/premium/command-bar/showcase.js +2 -0
  207. package/dist/showcase/premium/data-table/mock.cjs +12 -11
  208. package/dist/showcase/premium/data-table/mock.js +1 -1
  209. package/dist/showcase/premium/data-table/showcase.cjs +1 -1
  210. package/dist/showcase/premium/data-table/showcase.js +1 -1
  211. package/dist/showcase/premium/data-table-parts/showcase.cjs +1 -1
  212. package/dist/showcase/premium/data-table-parts/showcase.js +3 -1
  213. package/dist/showcase/premium/file-upload/showcase.cjs +1 -1
  214. package/dist/showcase/premium/file-upload/showcase.js +25 -4
  215. package/dist/showcase/premium/image-upload/showcase.cjs +1 -1
  216. package/dist/showcase/premium/image-upload/showcase.js +4 -1
  217. package/dist/showcase/premium/index.cjs +1 -1
  218. package/dist/showcase/premium/index.js +396 -402
  219. package/dist/showcase/premium/loading-state/showcase.cjs +1 -1
  220. package/dist/showcase/premium/loading-state/showcase.js +3 -1
  221. package/dist/showcase/premium/metric-grid/showcase.cjs +1 -1
  222. package/dist/showcase/premium/metric-grid/showcase.js +96 -28
  223. package/dist/showcase/premium/notification-center/showcase.cjs +1 -1
  224. package/dist/showcase/premium/notification-center/showcase.js +7 -3
  225. package/dist/showcase/premium/page-state/showcase.cjs +1 -1
  226. package/dist/showcase/premium/page-state/showcase.js +5 -1
  227. package/dist/showcase/premium/pagination/showcase.cjs +1 -1
  228. package/dist/showcase/premium/pagination/showcase.js +15 -2
  229. package/dist/showcase/premium/popover/showcase.cjs +1 -1
  230. package/dist/showcase/premium/popover/showcase.js +85 -50
  231. package/dist/showcase/premium/radio-group/showcase.cjs +1 -1
  232. package/dist/showcase/premium/radio-group/showcase.js +27 -4
  233. package/dist/showcase/premium/right-click-menu/showcase.cjs +1 -1
  234. package/dist/showcase/premium/right-click-menu/showcase.js +56 -43
  235. package/dist/showcase/premium/segmented-control/showcase.cjs +1 -1
  236. package/dist/showcase/premium/segmented-control/showcase.js +1 -0
  237. package/dist/showcase/premium/select/data.cjs +1 -1
  238. package/dist/showcase/premium/select/data.js +69 -34
  239. package/dist/showcase/premium/select/mock.cjs +20 -8
  240. package/dist/showcase/premium/select/mock.js +3 -2
  241. package/dist/showcase/premium/select/showcase.cjs +1 -1
  242. package/dist/showcase/premium/select/showcase.js +101 -86
  243. package/dist/showcase/premium/select/types.d.ts +3 -0
  244. package/dist/showcase/premium/statistic/showcase.cjs +1 -1
  245. package/dist/showcase/premium/statistic/showcase.js +57 -25
  246. package/dist/showcase/premium/switch/showcase.cjs +1 -1
  247. package/dist/showcase/premium/switch/showcase.js +25 -14
  248. package/dist/showcase/premium/tabs/showcase.cjs +1 -1
  249. package/dist/showcase/premium/tabs/showcase.js +171 -48
  250. package/dist/showcase/premium/textarea/mock.cjs +12 -4
  251. package/dist/showcase/premium/textarea/mock.js +1 -1
  252. package/dist/showcase/premium/textarea/showcase.cjs +1 -1
  253. package/dist/showcase/premium/textarea/showcase.js +8 -3
  254. package/dist/showcase/premium/toast/showcase.cjs +1 -1
  255. package/dist/showcase/premium/toast/showcase.js +32 -6
  256. package/dist/showcase/premium/types.d.ts +1 -1
  257. package/dist/showcase/registry-quality.cjs +1 -1
  258. package/dist/showcase/registry-quality.js +1 -0
  259. package/dist/showcase/registry-specific.cjs +1 -1
  260. package/dist/showcase/registry-specific.js +78 -74
  261. package/dist/showcase/render-registry-preview.cjs +1 -1
  262. package/dist/showcase/render-registry-preview.js +90 -108
  263. package/dist/showcase/site-data.cjs +1 -1
  264. package/dist/showcase/site-data.js +60 -21
  265. package/dist/showcase/tembro-registry.json.cjs +1 -1
  266. package/dist/showcase/tembro-registry.json.js +34 -20
  267. package/dist/showcase/types.d.ts +1 -1
  268. package/package.json +1 -1
  269. package/packages/cli/dist/index.cjs +31 -31
  270. package/packages/cli/vendor/src/components/calendar/calendar.tsx +59 -50
  271. package/packages/cli/vendor/src/components/calendar/date-range-picker.tsx +7 -4
  272. package/packages/cli/vendor/src/components/charts/charts.tsx +109 -66
  273. package/packages/cli/vendor/src/components/charts/progress-ring.tsx +37 -26
  274. package/packages/cli/vendor/src/components/data-table/data-table-column-visibility-menu.tsx +41 -22
  275. package/packages/cli/vendor/src/components/data-table/data-table-pagination.tsx +7 -7
  276. package/packages/cli/vendor/src/components/data-table/data-table-toolbar.tsx +8 -6
  277. package/packages/cli/vendor/src/components/data-table/data-table.tsx +21 -20
  278. package/packages/cli/vendor/src/components/display/carousel.tsx +102 -9
  279. package/packages/cli/vendor/src/components/display/code-block.tsx +22 -2
  280. package/packages/cli/vendor/src/components/display/delta-badge.tsx +11 -11
  281. package/packages/cli/vendor/src/components/display/kanban.tsx +103 -57
  282. package/packages/cli/vendor/src/components/display/metric-grid.tsx +16 -13
  283. package/packages/cli/vendor/src/components/display/qr-code.tsx +17 -15
  284. package/packages/cli/vendor/src/components/display/smart-card.tsx +1 -1
  285. package/packages/cli/vendor/src/components/display/status-legend.tsx +1 -1
  286. package/packages/cli/vendor/src/components/display/tag.tsx +39 -21
  287. package/packages/cli/vendor/src/components/display/tree-view.tsx +221 -84
  288. package/packages/cli/vendor/src/components/display/trend-card.tsx +6 -40
  289. package/packages/cli/vendor/src/components/feedback/alert.tsx +3 -1
  290. package/packages/cli/vendor/src/components/feedback/loading-state.tsx +33 -17
  291. package/packages/cli/vendor/src/components/feedback/page-state.tsx +8 -7
  292. package/packages/cli/vendor/src/components/form/form-field-shell.tsx +37 -8
  293. package/packages/cli/vendor/src/components/form/form-input.tsx +11 -12
  294. package/packages/cli/vendor/src/components/form/form-select.tsx +6 -4
  295. package/packages/cli/vendor/src/components/form/form-switch.tsx +9 -3
  296. package/packages/cli/vendor/src/components/form/form-textarea.tsx +6 -2
  297. package/packages/cli/vendor/src/components/inputs/async-select.tsx +11 -8
  298. package/packages/cli/vendor/src/components/inputs/search-input.tsx +5 -2
  299. package/packages/cli/vendor/src/components/inputs/simple-select.tsx +20 -190
  300. package/packages/cli/vendor/src/components/layout/app-sidebar.tsx +3 -1
  301. package/packages/cli/vendor/src/components/layout/breadcrumbs.tsx +3 -1
  302. package/packages/cli/vendor/src/components/modern/calendar-scheduler.tsx +28 -13
  303. package/packages/cli/vendor/src/components/modern/dual-list-picker.tsx +103 -35
  304. package/packages/cli/vendor/src/components/modern/rich-text-editor.tsx +25 -22
  305. package/packages/cli/vendor/src/components/modern/tour.tsx +47 -29
  306. package/packages/cli/vendor/src/components/navigation/command-bar.tsx +6 -0
  307. package/packages/cli/vendor/src/components/navigation/demo.tsx +0 -1
  308. package/packages/cli/vendor/src/components/navigation/nav-tabs.tsx +38 -29
  309. package/packages/cli/vendor/src/components/navigation/page-tabs.tsx +35 -23
  310. package/packages/cli/vendor/src/components/navigation/pagination.tsx +65 -31
  311. package/packages/cli/vendor/src/components/notifications/notification-center.tsx +64 -39
  312. package/packages/cli/vendor/src/components/notifications/toast.tsx +23 -21
  313. package/packages/cli/vendor/src/components/overlay/alert-dialog.tsx +1 -1
  314. package/packages/cli/vendor/src/components/overlay/confirm-dialog.tsx +45 -22
  315. package/packages/cli/vendor/src/components/overlay/drawer.tsx +18 -5
  316. package/packages/cli/vendor/src/components/ui/accordion/index.tsx +4 -0
  317. package/packages/cli/vendor/src/components/ui/badge/index.tsx +2 -1
  318. package/packages/cli/vendor/src/components/ui/button/index.tsx +11 -5
  319. package/packages/cli/vendor/src/components/ui/card/index.tsx +95 -25
  320. package/packages/cli/vendor/src/components/ui/dialog/index.tsx +2 -1
  321. package/packages/cli/vendor/src/components/ui/hover-card.tsx +54 -28
  322. package/packages/cli/vendor/src/components/ui/input/index.tsx +98 -0
  323. package/packages/cli/vendor/src/components/ui/popover/index.tsx +10 -8
  324. package/packages/cli/vendor/src/components/ui/radio-group/index.tsx +55 -6
  325. package/packages/cli/vendor/src/components/ui/right-click-menu/index.tsx +120 -9
  326. package/packages/cli/vendor/src/components/ui/segmented-control/index.tsx +29 -3
  327. package/packages/cli/vendor/src/components/ui/select/index.tsx +260 -34
  328. package/packages/cli/vendor/src/components/ui/switch/index.tsx +71 -6
  329. package/packages/cli/vendor/src/components/ui/tabs/index.tsx +22 -6
  330. package/packages/cli/vendor/src/components/ui/textarea/index.tsx +105 -15
  331. package/packages/cli/vendor/src/components/ui/textarea.tsx +2 -0
  332. package/packages/cli/vendor/src/components/ui/tooltip/index.tsx +67 -22
  333. package/packages/cli/vendor/src/components/upload/file-upload.tsx +120 -57
  334. package/packages/cli/vendor/src/components/upload/image-upload.tsx +71 -24
  335. package/packages/cli/vendor/src/public-component-surface.ts +3 -0
  336. package/packages/cli/vendor/src/showcase/component-api-schema.ts +79 -41
  337. package/packages/cli/vendor/src/showcase/create-demo.tsx +16 -15
  338. package/packages/cli/vendor/src/showcase/fallback.tsx +4 -19
  339. package/packages/cli/vendor/src/showcase/premium/alert/showcase.tsx +1 -0
  340. package/packages/cli/vendor/src/showcase/premium/app-sidebar/showcase.tsx +1 -0
  341. package/packages/cli/vendor/src/showcase/premium/badge/showcase.tsx +4 -2
  342. package/packages/cli/vendor/src/showcase/premium/badge/types.ts +1 -1
  343. package/packages/cli/vendor/src/showcase/premium/breadcrumbs/showcase.tsx +3 -1
  344. package/packages/cli/vendor/src/showcase/premium/button/mock.ts +2 -5
  345. package/packages/cli/vendor/src/showcase/premium/button/showcase.tsx +2 -2
  346. package/packages/cli/vendor/src/showcase/premium/card/showcase.tsx +26 -1
  347. package/packages/cli/vendor/src/showcase/premium/carousel/showcase.tsx +19 -3
  348. package/packages/cli/vendor/src/showcase/premium/command-bar/showcase.tsx +1 -1
  349. package/packages/cli/vendor/src/showcase/premium/data-table/mock.ts +26 -25
  350. package/packages/cli/vendor/src/showcase/premium/data-table/showcase.tsx +3 -3
  351. package/packages/cli/vendor/src/showcase/premium/data-table-parts/showcase.tsx +3 -3
  352. package/packages/cli/vendor/src/showcase/premium/file-upload/showcase.tsx +21 -1
  353. package/packages/cli/vendor/src/showcase/premium/image-upload/showcase.tsx +4 -1
  354. package/packages/cli/vendor/src/showcase/premium/index.ts +0 -2
  355. package/packages/cli/vendor/src/showcase/premium/loading-state/showcase.tsx +1 -1
  356. package/packages/cli/vendor/src/showcase/premium/metric-grid/showcase.tsx +36 -4
  357. package/packages/cli/vendor/src/showcase/premium/notification-center/showcase.tsx +4 -3
  358. package/packages/cli/vendor/src/showcase/premium/page-state/showcase.tsx +1 -0
  359. package/packages/cli/vendor/src/showcase/premium/pagination/showcase.tsx +13 -1
  360. package/packages/cli/vendor/src/showcase/premium/popover/showcase.tsx +27 -11
  361. package/packages/cli/vendor/src/showcase/premium/radio-group/showcase.tsx +13 -1
  362. package/packages/cli/vendor/src/showcase/premium/right-click-menu/showcase.tsx +8 -5
  363. package/packages/cli/vendor/src/showcase/premium/segmented-control/showcase.tsx +1 -0
  364. package/packages/cli/vendor/src/showcase/premium/select/data.ts +12 -3
  365. package/packages/cli/vendor/src/showcase/premium/select/mock.ts +4 -4
  366. package/packages/cli/vendor/src/showcase/premium/select/showcase.tsx +35 -22
  367. package/packages/cli/vendor/src/showcase/premium/select/types.ts +3 -0
  368. package/packages/cli/vendor/src/showcase/premium/statistic/showcase.tsx +10 -1
  369. package/packages/cli/vendor/src/showcase/premium/switch/showcase.tsx +15 -6
  370. package/packages/cli/vendor/src/showcase/premium/tabs/showcase.tsx +48 -1
  371. package/packages/cli/vendor/src/showcase/premium/textarea/mock.ts +12 -4
  372. package/packages/cli/vendor/src/showcase/premium/textarea/showcase.tsx +5 -0
  373. package/packages/cli/vendor/src/showcase/premium/toast/showcase.tsx +17 -1
  374. package/packages/cli/vendor/src/showcase/premium/types.ts +1 -1
  375. package/packages/cli/vendor/src/showcase/registry-quality.ts +3 -2
  376. package/packages/cli/vendor/src/showcase/registry-specific.tsx +7 -8
  377. package/packages/cli/vendor/src/showcase/render-registry-preview.tsx +5 -21
  378. package/packages/cli/vendor/src/showcase/site-data.tsx +21 -15
  379. package/packages/cli/vendor/src/showcase/tembro-registry.json +42 -20
  380. package/packages/cli/vendor/src/showcase/types.ts +1 -1
  381. package/registry.json +18 -6
@@ -51,6 +51,7 @@ export type AppSidebarProps = React.ComponentProps<"aside"> & {
51
51
  mobileToggleClassName?: string;
52
52
  mobilePanelClassName?: string;
53
53
  mobileOverlayClassName?: string;
54
+ footerClassName?: string;
54
55
  renderMobileToggle?: (state: {
55
56
  open: boolean;
56
57
  setOpen: (open: boolean) => void;
@@ -249,50 +249,50 @@ function b({ account: n, collapsed: r, onAfterSelect: i }) {
249
249
  })
250
250
  }) : a;
251
251
  }
252
- function x({ className: n, style: i, header: l, footer: f, items: p = [], collapsed: m = !1, width: h = u, collapsedWidth: g = d, collapsedRail: _, railItems: x = [], footerAccount: S, secondaryActions: C = [], footerSecondary: w, tooltipOnCollapsed: T, onItemSelect: E, renderItem: D, renderLink: O, children: k, mobile: A, mobileTitle: j, mobileDescription: M, onRequestClose: N, closeOnSelect: P = !0, ...F }) {
253
- let I = p.filter((e) => !e.hidden), L = x.filter((e) => !e.hidden), R = C.filter((e) => !e.hidden), z = r.useCallback((e) => {
254
- E?.(e), A && P && N?.();
252
+ function x({ className: n, style: i, header: l, footer: f, items: p = [], collapsed: m = !1, width: h = u, collapsedWidth: g = d, collapsedRail: _, railItems: x = [], footerAccount: S, secondaryActions: C = [], footerSecondary: w, footerClassName: T, tooltipOnCollapsed: E, onItemSelect: D, renderItem: O, renderLink: k, children: A, mobile: j, mobileTitle: M, mobileDescription: N, onRequestClose: P, closeOnSelect: F = !0, ...I }) {
253
+ let L = p.filter((e) => !e.hidden), R = x.filter((e) => !e.hidden), z = C.filter((e) => !e.hidden), B = r.useCallback((e) => {
254
+ D?.(e), j && F && P?.();
255
255
  }, [
256
- P,
257
- A,
258
- E,
259
- N
260
- ]), B = A && (j || M || N);
256
+ F,
257
+ j,
258
+ D,
259
+ P
260
+ ]), V = j && (M || N || P);
261
261
  return /* @__PURE__ */ c("aside", {
262
262
  "data-slot": "app-sidebar",
263
263
  "data-collapsed": m || void 0,
264
- "data-mobile": A || void 0,
264
+ "data-mobile": j || void 0,
265
265
  className: e("flex h-full min-h-0 flex-col overflow-hidden", n),
266
266
  style: {
267
267
  width: m ? g : h,
268
268
  minWidth: m ? g : h,
269
269
  ...i
270
270
  },
271
- ...F,
271
+ ...I,
272
272
  children: [
273
- (l || B) && /* @__PURE__ */ s("div", {
273
+ (l || V) && /* @__PURE__ */ s("div", {
274
274
  "data-slot": "app-sidebar-header",
275
275
  className: "shrink-0 border-b p-3",
276
276
  children: /* @__PURE__ */ c("div", {
277
277
  className: "flex items-start gap-3",
278
278
  children: [/* @__PURE__ */ c("div", {
279
279
  className: "min-w-0 flex-1",
280
- children: [l ?? null, B ? /* @__PURE__ */ c("div", {
280
+ children: [l ?? null, V ? /* @__PURE__ */ c("div", {
281
281
  className: e(l && "mt-3"),
282
- children: [j ? /* @__PURE__ */ s("p", {
282
+ children: [M ? /* @__PURE__ */ s("p", {
283
283
  className: "text-sm font-semibold text-foreground",
284
- children: j
285
- }) : null, M ? /* @__PURE__ */ s("p", {
286
- className: "mt-1 text-xs leading-5 text-muted-foreground",
287
284
  children: M
285
+ }) : null, N ? /* @__PURE__ */ s("p", {
286
+ className: "mt-1 text-xs leading-5 text-muted-foreground",
287
+ children: N
288
288
  }) : null]
289
289
  }) : null]
290
- }), A && N ? /* @__PURE__ */ s("button", {
290
+ }), j && P ? /* @__PURE__ */ s("button", {
291
291
  type: "button",
292
292
  "aria-label": "Close navigation",
293
293
  "data-slot": "app-sidebar-mobile-close",
294
294
  className: "inline-flex size-9 shrink-0 items-center justify-center rounded-xl border border-[color:var(--aui-divider)] bg-[color:var(--aui-page-bg-alt)] text-[color:var(--aui-page-foreground)] transition hover:bg-[color:var(--aui-control-bg)]",
295
- onClick: N,
295
+ onClick: P,
296
296
  children: /* @__PURE__ */ s(a, { className: "size-4" })
297
297
  }) : null]
298
298
  })
@@ -300,10 +300,10 @@ function x({ className: n, style: i, header: l, footer: f, items: p = [], collap
300
300
  /* @__PURE__ */ c("nav", {
301
301
  "data-slot": "app-sidebar-nav",
302
302
  className: "min-h-0 flex-1 space-y-1 overflow-y-auto overscroll-contain p-2",
303
- children: [k ?? I.map((e) => {
304
- if (!D) return null;
305
- let n = D(e, { collapsed: m });
306
- return !m || !T ? /* @__PURE__ */ s(r.Fragment, { children: n }, e.key) : /* @__PURE__ */ s(t, {
303
+ children: [A ?? L.map((e) => {
304
+ if (!O) return null;
305
+ let n = O(e, { collapsed: m });
306
+ return !m || !E ? /* @__PURE__ */ s(r.Fragment, { children: n }, e.key) : /* @__PURE__ */ s(t, {
307
307
  content: e.tooltip ?? e.label,
308
308
  side: "right",
309
309
  children: /* @__PURE__ */ s("span", {
@@ -311,25 +311,25 @@ function x({ className: n, style: i, header: l, footer: f, items: p = [], collap
311
311
  children: n
312
312
  })
313
313
  }, e.key);
314
- }), !k && !D && /* @__PURE__ */ s(v, {
315
- items: I,
314
+ }), !A && !O && /* @__PURE__ */ s(v, {
315
+ items: L,
316
316
  collapsed: m,
317
317
  depth: 0,
318
- onItemSelect: z,
319
- renderLink: O
318
+ onItemSelect: B,
319
+ renderLink: k
320
320
  })]
321
321
  }),
322
- (S || w || f || R.length > 0 || m && (_ || L.length > 0)) && /* @__PURE__ */ c("div", {
322
+ (S || w || f || z.length > 0 || m && (_ || R.length > 0)) && /* @__PURE__ */ c("div", {
323
323
  "data-slot": "app-sidebar-footer",
324
- className: "shrink-0 border-t p-3",
324
+ className: e("shrink-0 border-t p-3", T),
325
325
  children: [
326
- m ? /* @__PURE__ */ c(o, { children: [L.length > 0 ? /* @__PURE__ */ s("div", {
326
+ m ? /* @__PURE__ */ c(o, { children: [R.length > 0 ? /* @__PURE__ */ s("div", {
327
327
  "data-slot": "app-sidebar-rail-actions",
328
328
  className: "grid gap-2",
329
- children: L.map((e) => /* @__PURE__ */ s(y, {
329
+ children: R.map((e) => /* @__PURE__ */ s(y, {
330
330
  item: e,
331
331
  collapsed: !0,
332
- onItemSelect: z
332
+ onItemSelect: B
333
333
  }, e.key))
334
334
  }) : null, _ ? /* @__PURE__ */ s("div", {
335
335
  "data-slot": "app-sidebar-rail",
@@ -342,17 +342,17 @@ function x({ className: n, style: i, header: l, footer: f, items: p = [], collap
342
342
  account: S,
343
343
  collapsed: !1,
344
344
  onAfterSelect: () => {
345
- A && P && N?.();
345
+ j && F && P?.();
346
346
  }
347
347
  })
348
348
  }) : null,
349
- !m && R.length > 0 ? /* @__PURE__ */ s("div", {
349
+ !m && z.length > 0 ? /* @__PURE__ */ s("div", {
350
350
  "data-slot": "app-sidebar-secondary-actions",
351
351
  className: "mb-3 grid gap-2",
352
- children: R.map((e) => /* @__PURE__ */ s(y, {
352
+ children: z.map((e) => /* @__PURE__ */ s(y, {
353
353
  item: e,
354
354
  collapsed: !1,
355
- onItemSelect: z
355
+ onItemSelect: B
356
356
  }, e.key))
357
357
  }) : null,
358
358
  !m && w ? /* @__PURE__ */ s("div", {
@@ -366,7 +366,7 @@ function x({ className: n, style: i, header: l, footer: f, items: p = [], collap
366
366
  account: S,
367
367
  collapsed: !0,
368
368
  onAfterSelect: () => {
369
- A && P && N?.();
369
+ j && F && P?.();
370
370
  }
371
371
  })
372
372
  }) : null,
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs");let n=require("react");n=e.__toESM(n,1);let r=require("lucide-react"),i=require("react/jsx-runtime");function a(e,t,n){if(e.length<=t||t<3)return e;let r=e[0],i=Math.max(t-2,1),a=e.slice(-i);return[r,{key:`__collapsed__`,label:n},...a]}function o({className:e,items:o,maxItems:s,collapseLabel:c=`…`,separator:l=(0,i.jsx)(r.ChevronRightIcon,{className:`size-3.5`}),wrap:u=!1,renderLink:d,...f}){let p=n.useMemo(()=>typeof s==`number`?a(o,s,c):o,[c,o,s]);return(0,i.jsx)(`nav`,{"data-slot":`breadcrumbs`,"aria-label":`Breadcrumb`,className:t.cn(`flex min-w-0 items-center gap-1 overflow-x-auto text-sm text-muted-foreground`,u?`flex-wrap`:`whitespace-nowrap`,e),...f,children:p.map((e,r)=>{let a=e.key===`__collapsed__`,o=r===p.length-1,s=e.current||o;return(0,i.jsxs)(n.Fragment,{children:[r>0&&(0,i.jsx)(`span`,{className:`shrink-0 opacity-60`,children:l}),a?(0,i.jsx)(`span`,{"data-slot":`breadcrumbs-collapsed`,className:`shrink-0 rounded-full border border-border/65 px-2 py-0.5 text-xs text-muted-foreground`,children:e.label}):e.href&&!s?d?d({item:e,href:e.href,"data-slot":`breadcrumbs-link`,className:`truncate rounded-[var(--radius-sm)] px-1 py-0.5 transition-colors hover:bg-accent/55 hover:text-foreground`,onClick:()=>e.onSelect?.(),children:(0,i.jsxs)(`span`,{className:`inline-flex min-w-0 items-center gap-1.5`,children:[e.icon?(0,i.jsx)(`span`,{className:`shrink-0`,children:e.icon}):null,(0,i.jsx)(`span`,{className:`truncate`,children:e.label})]})}):(0,i.jsx)(`a`,{href:e.href,"data-slot":`breadcrumbs-link`,className:`truncate rounded-[var(--radius-sm)] px-1 py-0.5 transition-colors hover:bg-accent/55 hover:text-foreground`,onClick:()=>e.onSelect?.(),children:(0,i.jsxs)(`span`,{className:`inline-flex min-w-0 items-center gap-1.5`,children:[e.icon?(0,i.jsx)(`span`,{className:`shrink-0`,children:e.icon}):null,(0,i.jsx)(`span`,{className:`truncate`,children:e.label})]})}):(0,i.jsxs)(`span`,{"data-slot":`breadcrumbs-current`,"aria-current":s?e.currentLabel??`page`:void 0,className:t.cn(`inline-flex min-w-0 items-center gap-1.5 truncate rounded-[var(--radius-sm)] px-1 py-0.5`,s&&`bg-accent/45 font-medium text-foreground`),children:[e.icon?(0,i.jsx)(`span`,{className:`shrink-0`,children:e.icon}):null,(0,i.jsx)(`span`,{className:`truncate`,children:e.label})]})]},e.key)})})}exports.Breadcrumbs=o;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs");let n=require("react");n=e.__toESM(n,1);let r=require("lucide-react"),i=require("react/jsx-runtime");function a(e,t,n){if(e.length<=t||t<3)return e;let r=e[0],i=Math.max(t-2,1),a=e.slice(-i);return[r,{key:`__collapsed__`,label:n},...a]}function o({className:e,items:o,maxItems:s,collapseLabel:c=`…`,separator:l=(0,i.jsx)(r.ChevronRightIcon,{className:`size-3.5`}),wrap:u=!1,currentItemLabel:d,renderLink:f,...p}){let m=n.useMemo(()=>typeof s==`number`?a(o,s,c):o,[c,o,s]);return(0,i.jsx)(`nav`,{"data-slot":`breadcrumbs`,"aria-label":`Breadcrumb`,className:t.cn(`flex min-w-0 items-center gap-1 overflow-x-auto text-sm text-muted-foreground`,u?`flex-wrap`:`whitespace-nowrap`,e),...p,children:m.map((e,r)=>{let a=e.key===`__collapsed__`,o=r===m.length-1,s=e.current||o;return(0,i.jsxs)(n.Fragment,{children:[r>0&&(0,i.jsx)(`span`,{className:`shrink-0 opacity-60`,children:l}),a?(0,i.jsx)(`span`,{"data-slot":`breadcrumbs-collapsed`,className:`shrink-0 rounded-full border border-border/65 px-2 py-0.5 text-xs text-muted-foreground`,children:e.label}):e.href&&!s?f?f({item:e,href:e.href,"data-slot":`breadcrumbs-link`,className:`truncate rounded-[var(--radius-sm)] px-1 py-0.5 transition-colors hover:bg-accent/55 hover:text-foreground`,onClick:()=>e.onSelect?.(),children:(0,i.jsxs)(`span`,{className:`inline-flex min-w-0 items-center gap-1.5`,children:[e.icon?(0,i.jsx)(`span`,{className:`shrink-0`,children:e.icon}):null,(0,i.jsx)(`span`,{className:`truncate`,children:e.label})]})}):(0,i.jsx)(`a`,{href:e.href,"data-slot":`breadcrumbs-link`,className:`truncate rounded-[var(--radius-sm)] px-1 py-0.5 transition-colors hover:bg-accent/55 hover:text-foreground`,onClick:()=>e.onSelect?.(),children:(0,i.jsxs)(`span`,{className:`inline-flex min-w-0 items-center gap-1.5`,children:[e.icon?(0,i.jsx)(`span`,{className:`shrink-0`,children:e.icon}):null,(0,i.jsx)(`span`,{className:`truncate`,children:e.label})]})}):(0,i.jsxs)(`span`,{"data-slot":`breadcrumbs-current`,"aria-current":s?e.currentLabel??d??`page`:void 0,className:t.cn(`inline-flex min-w-0 items-center gap-1.5 truncate rounded-[var(--radius-sm)] px-1 py-0.5`,s&&`bg-accent/45 font-medium text-foreground`),children:[e.icon?(0,i.jsx)(`span`,{className:`shrink-0`,children:e.icon}):null,(0,i.jsx)(`span`,{className:`truncate`,children:e.label})]})]},e.key)})})}exports.Breadcrumbs=o;
@@ -14,10 +14,11 @@ export type BreadcrumbsProps = React.ComponentProps<"nav"> & {
14
14
  collapseLabel?: React.ReactNode;
15
15
  separator?: React.ReactNode;
16
16
  wrap?: boolean;
17
+ currentItemLabel?: React.AriaAttributes["aria-current"];
17
18
  renderLink?: (props: React.ComponentProps<"a"> & {
18
19
  item: BreadcrumbItem;
19
20
  [key: `data-${string}`]: string | boolean | undefined;
20
21
  }) => React.ReactNode;
21
22
  };
22
- declare function Breadcrumbs({ className, items, maxItems, collapseLabel, separator, wrap, renderLink, ...props }: BreadcrumbsProps): React.JSX.Element;
23
+ declare function Breadcrumbs({ className, items, maxItems, collapseLabel, separator, wrap, currentItemLabel, renderLink, ...props }: BreadcrumbsProps): React.JSX.Element;
23
24
  export { Breadcrumbs };
@@ -15,8 +15,8 @@ function a(e, t, n) {
15
15
  ...a
16
16
  ];
17
17
  }
18
- function o({ className: o, items: s, maxItems: c, collapseLabel: l = "…", separator: u = /* @__PURE__ */ r(n, { className: "size-3.5" }), wrap: d = !1, renderLink: f, ...p }) {
19
- let m = t.useMemo(() => typeof c == "number" ? a(s, c, l) : s, [
18
+ function o({ className: o, items: s, maxItems: c, collapseLabel: l = "…", separator: u = /* @__PURE__ */ r(n, { className: "size-3.5" }), wrap: d = !1, currentItemLabel: f, renderLink: p, ...m }) {
19
+ let h = t.useMemo(() => typeof c == "number" ? a(s, c, l) : s, [
20
20
  l,
21
21
  s,
22
22
  c
@@ -25,9 +25,9 @@ function o({ className: o, items: s, maxItems: c, collapseLabel: l = "…", sepa
25
25
  "data-slot": "breadcrumbs",
26
26
  "aria-label": "Breadcrumb",
27
27
  className: e("flex min-w-0 items-center gap-1 overflow-x-auto text-sm text-muted-foreground", d ? "flex-wrap" : "whitespace-nowrap", o),
28
- ...p,
29
- children: m.map((n, a) => {
30
- let o = n.key === "__collapsed__", s = a === m.length - 1, c = n.current || s;
28
+ ...m,
29
+ children: h.map((n, a) => {
30
+ let o = n.key === "__collapsed__", s = a === h.length - 1, c = n.current || s;
31
31
  return /* @__PURE__ */ i(t.Fragment, { children: [a > 0 && /* @__PURE__ */ r("span", {
32
32
  className: "shrink-0 opacity-60",
33
33
  children: u
@@ -35,7 +35,7 @@ function o({ className: o, items: s, maxItems: c, collapseLabel: l = "…", sepa
35
35
  "data-slot": "breadcrumbs-collapsed",
36
36
  className: "shrink-0 rounded-full border border-border/65 px-2 py-0.5 text-xs text-muted-foreground",
37
37
  children: n.label
38
- }) : n.href && !c ? f ? f({
38
+ }) : n.href && !c ? p ? p({
39
39
  item: n,
40
40
  href: n.href,
41
41
  "data-slot": "breadcrumbs-link",
@@ -68,7 +68,7 @@ function o({ className: o, items: s, maxItems: c, collapseLabel: l = "…", sepa
68
68
  })
69
69
  }) : /* @__PURE__ */ i("span", {
70
70
  "data-slot": "breadcrumbs-current",
71
- "aria-current": c ? n.currentLabel ?? "page" : void 0,
71
+ "aria-current": c ? n.currentLabel ?? f ?? "page" : void 0,
72
72
  className: e("inline-flex min-w-0 items-center gap-1.5 truncate rounded-[var(--radius-sm)] px-1 py-0.5", c && "bg-accent/45 font-medium text-foreground"),
73
73
  children: [n.icon ? /* @__PURE__ */ r("span", {
74
74
  className: "shrink-0",
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs");let n=require("react");n=e.__toESM(n,1);let r=require("react/jsx-runtime");var i={default:`border-border bg-muted`,success:`border-emerald-200 bg-emerald-50 text-emerald-700 dark:border-emerald-900 dark:bg-emerald-950 dark:text-emerald-300`,warning:`border-amber-200 bg-amber-50 text-amber-700 dark:border-amber-900 dark:bg-amber-950 dark:text-amber-300`,danger:`border-red-200 bg-red-50 text-red-700 dark:border-red-900 dark:bg-red-950 dark:text-red-300`};function a({events:e,days:n,empty:a=`No events scheduled.`,className:o,...s}){let c=n??Array.from(new Set(e.map(e=>e.date)));return(0,r.jsx)(`div`,{"data-slot":`calendar-scheduler`,className:t.cn(`grid gap-3`,o),...s,children:c.map(n=>(0,r.jsxs)(`section`,{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))]`,children:[(0,r.jsxs)(`div`,{className:`mb-3 flex items-center justify-between gap-3`,children:[(0,r.jsx)(`div`,{className:`text-sm font-semibold text-foreground`,children:n}),(0,r.jsxs)(`div`,{className:`text-xs text-muted-foreground`,children:[e.filter(e=>e.date===n).length,` items`]})]}),(0,r.jsx)(`div`,{className:`grid gap-2`,children:e.filter(e=>e.date===n).length===0?(0,r.jsx)(`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`,children:a}):e.filter(e=>e.date===n).map(e=>(0,r.jsxs)(`div`,{className:t.cn(`rounded-[var(--radius-md)] border px-3 py-2.5 text-sm shadow-sm`,i[e.tone??`default`]),children:[(0,r.jsx)(`div`,{className:`font-medium`,children:e.title}),e.time&&(0,r.jsx)(`div`,{className:`mt-1 text-xs opacity-70`,children:e.time})]},e.id))})]},n))})}exports.CalendarScheduler=a;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs");let n=require("react");n=e.__toESM(n,1);let r=require("react/jsx-runtime");var i={default:`border-border bg-muted`,success:`border-emerald-200 bg-emerald-50 text-emerald-700 dark:border-emerald-900 dark:bg-emerald-950 dark:text-emerald-300`,warning:`border-amber-200 bg-amber-50 text-amber-700 dark:border-amber-900 dark:bg-amber-950 dark:text-amber-300`,danger:`border-red-200 bg-red-50 text-red-700 dark:border-red-900 dark:bg-red-950 dark:text-red-300`};function a({events:e,days:n,view:a=`week`,empty:o=`No events scheduled.`,onCreateEvent:s,onEventClick:c,className:l,...u}){let d=n??Array.from(new Set(e.map(e=>e.date)));return(0,r.jsx)(`div`,{"data-slot":`calendar-scheduler`,"data-view":a,className:t.cn(`grid gap-3`,a===`month`&&`md:grid-cols-2 xl:grid-cols-3`,l),...u,children:d.map(n=>(0,r.jsxs)(`section`,{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))]`,children:[(0,r.jsxs)(`div`,{className:`mb-3 flex items-center justify-between gap-3`,children:[(0,r.jsx)(`div`,{className:`text-sm font-semibold text-foreground`,children:n}),(0,r.jsxs)(`div`,{className:`text-xs text-muted-foreground`,children:[e.filter(e=>e.date===n).length,` items`]})]}),(0,r.jsx)(`div`,{className:`grid gap-2`,children:e.filter(e=>e.date===n).length===0?(0,r.jsx)(`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`,children:o}):e.filter(e=>e.date===n).map(e=>(0,r.jsxs)(`button`,{type:`button`,className:t.cn(`rounded-[var(--radius-md)] border px-3 py-2.5 text-left text-sm shadow-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40`,i[e.tone??`default`]),onClick:()=>c?.(e),children:[(0,r.jsx)(`div`,{className:`font-medium`,children:e.title}),e.time&&(0,r.jsx)(`div`,{className:`mt-1 text-xs opacity-70`,children:e.time}),e.durationMinutes&&(0,r.jsxs)(`div`,{className:`mt-1 text-xs opacity-70`,children:[e.durationMinutes,` min`]})]},e.id))}),s&&(0,r.jsx)(`button`,{type:`button`,className:`mt-3 w-full rounded-md border border-dashed px-3 py-2 text-sm text-muted-foreground hover:bg-muted/50`,onClick:()=>s(n),children:`Create event`})]},n))})}exports.CalendarScheduler=a;
@@ -5,11 +5,15 @@ export type CalendarSchedulerEvent = {
5
5
  date: string;
6
6
  time?: string;
7
7
  tone?: "default" | "success" | "warning" | "danger";
8
+ durationMinutes?: number;
8
9
  };
9
10
  export type CalendarSchedulerProps = React.ComponentProps<"div"> & {
10
11
  events: CalendarSchedulerEvent[];
11
12
  days?: string[];
13
+ view?: "day" | "week" | "month";
12
14
  empty?: React.ReactNode;
15
+ onCreateEvent?: (date: string) => void;
16
+ onEventClick?: (event: CalendarSchedulerEvent) => void;
13
17
  };
14
- declare function CalendarScheduler({ events, days, empty, className, ...props }: CalendarSchedulerProps): React.JSX.Element;
18
+ declare function CalendarScheduler({ events, days, view, empty, onCreateEvent, onEventClick, className, ...props }: CalendarSchedulerProps): React.JSX.Element;
15
19
  export { CalendarScheduler };
@@ -8,39 +8,58 @@ var r = {
8
8
  warning: "border-amber-200 bg-amber-50 text-amber-700 dark:border-amber-900 dark:bg-amber-950 dark:text-amber-300",
9
9
  danger: "border-red-200 bg-red-50 text-red-700 dark:border-red-900 dark:bg-red-950 dark:text-red-300"
10
10
  };
11
- function i({ events: i, days: a, empty: o = "No events scheduled.", className: s, ...c }) {
12
- let l = a ?? Array.from(new Set(i.map((e) => e.date)));
11
+ function i({ events: i, days: a, view: o = "week", empty: s = "No events scheduled.", onCreateEvent: c, onEventClick: l, className: u, ...d }) {
12
+ let f = a ?? Array.from(new Set(i.map((e) => e.date)));
13
13
  return /* @__PURE__ */ t("div", {
14
14
  "data-slot": "calendar-scheduler",
15
- className: e("grid gap-3", s),
16
- ...c,
17
- children: l.map((a) => /* @__PURE__ */ n("section", {
15
+ "data-view": o,
16
+ className: e("grid gap-3", o === "month" && "md:grid-cols-2 xl:grid-cols-3", u),
17
+ ...d,
18
+ children: f.map((a) => /* @__PURE__ */ n("section", {
18
19
  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))]",
19
- children: [/* @__PURE__ */ n("div", {
20
- className: "mb-3 flex items-center justify-between gap-3",
21
- children: [/* @__PURE__ */ t("div", {
22
- className: "text-sm font-semibold text-foreground",
23
- children: a
24
- }), /* @__PURE__ */ n("div", {
25
- className: "text-xs text-muted-foreground",
26
- children: [i.filter((e) => e.date === a).length, " items"]
27
- })]
28
- }), /* @__PURE__ */ t("div", {
29
- className: "grid gap-2",
30
- children: i.filter((e) => e.date === a).length === 0 ? /* @__PURE__ */ t("div", {
31
- 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",
32
- children: o
33
- }) : i.filter((e) => e.date === a).map((i) => /* @__PURE__ */ n("div", {
34
- className: e("rounded-[var(--radius-md)] border px-3 py-2.5 text-sm shadow-sm", r[i.tone ?? "default"]),
20
+ children: [
21
+ /* @__PURE__ */ n("div", {
22
+ className: "mb-3 flex items-center justify-between gap-3",
35
23
  children: [/* @__PURE__ */ t("div", {
36
- className: "font-medium",
37
- children: i.title
38
- }), i.time && /* @__PURE__ */ t("div", {
39
- className: "mt-1 text-xs opacity-70",
40
- children: i.time
24
+ className: "text-sm font-semibold text-foreground",
25
+ children: a
26
+ }), /* @__PURE__ */ n("div", {
27
+ className: "text-xs text-muted-foreground",
28
+ children: [i.filter((e) => e.date === a).length, " items"]
41
29
  })]
42
- }, i.id))
43
- })]
30
+ }),
31
+ /* @__PURE__ */ t("div", {
32
+ className: "grid gap-2",
33
+ children: i.filter((e) => e.date === a).length === 0 ? /* @__PURE__ */ t("div", {
34
+ 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",
35
+ children: s
36
+ }) : i.filter((e) => e.date === a).map((i) => /* @__PURE__ */ n("button", {
37
+ type: "button",
38
+ className: e("rounded-[var(--radius-md)] border px-3 py-2.5 text-left text-sm shadow-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40", r[i.tone ?? "default"]),
39
+ onClick: () => l?.(i),
40
+ children: [
41
+ /* @__PURE__ */ t("div", {
42
+ className: "font-medium",
43
+ children: i.title
44
+ }),
45
+ i.time && /* @__PURE__ */ t("div", {
46
+ className: "mt-1 text-xs opacity-70",
47
+ children: i.time
48
+ }),
49
+ i.durationMinutes && /* @__PURE__ */ n("div", {
50
+ className: "mt-1 text-xs opacity-70",
51
+ children: [i.durationMinutes, " min"]
52
+ })
53
+ ]
54
+ }, i.id))
55
+ }),
56
+ c && /* @__PURE__ */ t("button", {
57
+ type: "button",
58
+ className: "mt-3 w-full rounded-md border border-dashed px-3 py-2 text-sm text-muted-foreground hover:bg-muted/50",
59
+ onClick: () => c(a),
60
+ children: "Create event"
61
+ })
62
+ ]
44
63
  }, a))
45
64
  });
46
65
  }
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs");let n=require("react");n=e.__toESM(n,1);let r=require("react/jsx-runtime");function i({items:e,picked:n=[],onPickedChange:i,availableTitle:a=`Available`,pickedTitle:o=`Selected`,className:s,...c}){let l=new Set(n),u=e.filter(e=>!l.has(e.value)),d=e.filter(e=>l.has(e.value));function f(e){let t=l.has(e)?n.filter(t=>t!==e):[...n,e];i?.(t)}let p=(e,t)=>(0,r.jsxs)(`div`,{className:`min-h-48 rounded-lg border bg-card`,children:[(0,r.jsx)(`div`,{className:`border-b px-3 py-2 text-sm font-medium`,children:e}),(0,r.jsx)(`div`,{className:`grid gap-1 p-2`,children:t.map(e=>(0,r.jsxs)(`button`,{type:`button`,disabled:e.disabled,className:`flex items-center justify-between rounded-md px-2 py-1.5 text-left text-sm hover:bg-muted disabled:opacity-50`,onClick:()=>f(e.value),children:[(0,r.jsx)(`span`,{children:e.label}),(0,r.jsx)(`span`,{className:`text-muted-foreground`,children:l.has(e.value)?`−`:`+`})]},e.value))})]});return(0,r.jsxs)(`div`,{"data-slot":`dual-list-picker`,className:t.cn(`grid gap-3 md:grid-cols-2`,s),...c,children:[p(a,u),p(o,d)]})}exports.DualListPicker=i;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs");let n=require("react");n=e.__toESM(n,1);let r=require("react/jsx-runtime");function i({items:e,picked:i=[],onPickedChange:a,availableTitle:o=`Available`,pickedTitle:s=`Selected`,searchPlaceholder:c=`Search items...`,emptyMessage:l=`No items.`,maxPicked:u,transferAll:d=!0,className:f,...p}){let[m,h]=n.useState(``),g=new Set(i),_=m.trim().toLowerCase(),v=e=>_?String(e.label).toLowerCase().includes(_)||e.value.toLowerCase().includes(_):!0,y=e.filter(e=>!g.has(e.value)&&v(e)),b=e.filter(e=>g.has(e.value)&&v(e)),x=u!==void 0&&i.length>=u;function S(e){let t=g.has(e);if(!t&&x)return;let n=t?i.filter(t=>t!==e):[...i,e];a?.(n)}function C(){let t=[...i];for(let n of e)if(!(n.disabled||g.has(n.value))){if(u!==void 0&&t.length>=u)break;t.push(n.value)}a?.(t)}function w(){a?.([])}let T=(e,t,n)=>(0,r.jsxs)(`div`,{className:`min-h-48 rounded-lg border bg-card`,children:[(0,r.jsxs)(`div`,{className:`flex items-center justify-between gap-2 border-b px-3 py-2 text-sm font-medium`,children:[(0,r.jsx)(`span`,{children:e}),(0,r.jsx)(`span`,{className:`text-xs font-normal text-muted-foreground`,children:t.length})]}),(0,r.jsx)(`div`,{className:`grid gap-1 p-2`,children:t.length===0?(0,r.jsx)(`div`,{className:`rounded-md border border-dashed px-3 py-6 text-center text-sm text-muted-foreground`,children:l}):t.map(e=>(0,r.jsxs)(`button`,{type:`button`,disabled:e.disabled||n===`available`&&x,className:`flex items-center justify-between rounded-md px-2 py-1.5 text-left text-sm hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40 disabled:opacity-50`,"aria-pressed":g.has(e.value),onClick:()=>S(e.value),children:[(0,r.jsx)(`span`,{children:e.label}),(0,r.jsx)(`span`,{className:`text-muted-foreground`,children:g.has(e.value)?`−`:`+`})]},e.value))})]});return(0,r.jsxs)(`div`,{"data-slot":`dual-list-picker`,className:t.cn(`grid gap-3`,f),...p,children:[(0,r.jsxs)(`div`,{className:`flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between`,children:[(0,r.jsx)(`input`,{value:m,placeholder:c,className:`h-9 min-w-0 rounded-md border bg-background px-3 text-sm outline-none focus-visible:ring-2 focus-visible:ring-ring/40 sm:max-w-xs`,onChange:e=>h(e.currentTarget.value)}),d&&(0,r.jsxs)(`div`,{className:`flex gap-2`,children:[(0,r.jsx)(`button`,{type:`button`,className:`rounded-md border px-3 py-1.5 text-sm disabled:opacity-50`,disabled:x,onClick:C,children:`Add all`}),(0,r.jsx)(`button`,{type:`button`,className:`rounded-md border px-3 py-1.5 text-sm disabled:opacity-50`,disabled:i.length===0,onClick:w,children:`Remove all`})]})]}),(0,r.jsxs)(`div`,{className:`grid gap-3 md:grid-cols-2`,children:[T(o,y,`available`),T(s,b,`picked`)]}),u!==void 0&&(0,r.jsxs)(`div`,{className:`text-xs text-muted-foreground`,children:[i.length,` / `,u,` selected`]})]})}exports.DualListPicker=i;
@@ -10,6 +10,10 @@ export type DualListPickerProps = React.ComponentProps<"div"> & {
10
10
  onPickedChange?: (value: string[]) => void;
11
11
  availableTitle?: React.ReactNode;
12
12
  pickedTitle?: React.ReactNode;
13
+ searchPlaceholder?: string;
14
+ emptyMessage?: React.ReactNode;
15
+ maxPicked?: number;
16
+ transferAll?: boolean;
13
17
  };
14
- declare function DualListPicker({ items, picked, onPickedChange, availableTitle, pickedTitle, className, ...props }: DualListPickerProps): React.JSX.Element;
18
+ declare function DualListPicker({ items, picked, onPickedChange, availableTitle, pickedTitle, searchPlaceholder, emptyMessage, maxPicked, transferAll, className, ...props }: DualListPickerProps): React.JSX.Element;
15
19
  export { DualListPicker };
@@ -1,38 +1,96 @@
1
1
  import { cn as e } from "../../lib/utils.js";
2
- import "react";
3
- import { jsx as t, jsxs as n } from "react/jsx-runtime";
2
+ import * as t from "react";
3
+ import { jsx as n, jsxs as r } from "react/jsx-runtime";
4
4
  //#region src/components/modern/dual-list-picker.tsx
5
- function r({ items: r, picked: i = [], onPickedChange: a, availableTitle: o = "Available", pickedTitle: s = "Selected", className: c, ...l }) {
6
- let u = new Set(i), d = r.filter((e) => !u.has(e.value)), f = r.filter((e) => u.has(e.value));
7
- function p(e) {
8
- let t = u.has(e) ? i.filter((t) => t !== e) : [...i, e];
9
- a?.(t);
5
+ function i({ items: i, picked: a = [], onPickedChange: o, availableTitle: s = "Available", pickedTitle: c = "Selected", searchPlaceholder: l = "Search items...", emptyMessage: u = "No items.", maxPicked: d, transferAll: f = !0, className: p, ...m }) {
6
+ let [h, g] = t.useState(""), _ = new Set(a), v = h.trim().toLowerCase(), y = (e) => v ? String(e.label).toLowerCase().includes(v) || e.value.toLowerCase().includes(v) : !0, b = i.filter((e) => !_.has(e.value) && y(e)), x = i.filter((e) => _.has(e.value) && y(e)), S = d !== void 0 && a.length >= d;
7
+ function C(e) {
8
+ let t = _.has(e);
9
+ if (!t && S) return;
10
+ let n = t ? a.filter((t) => t !== e) : [...a, e];
11
+ o?.(n);
10
12
  }
11
- let m = (e, r) => /* @__PURE__ */ n("div", {
13
+ function w() {
14
+ let e = [...a];
15
+ for (let t of i) if (!(t.disabled || _.has(t.value))) {
16
+ if (d !== void 0 && e.length >= d) break;
17
+ e.push(t.value);
18
+ }
19
+ o?.(e);
20
+ }
21
+ function T() {
22
+ o?.([]);
23
+ }
24
+ let E = (e, t, i) => /* @__PURE__ */ r("div", {
12
25
  className: "min-h-48 rounded-lg border bg-card",
13
- children: [/* @__PURE__ */ t("div", {
14
- className: "border-b px-3 py-2 text-sm font-medium",
15
- children: e
16
- }), /* @__PURE__ */ t("div", {
26
+ children: [/* @__PURE__ */ r("div", {
27
+ className: "flex items-center justify-between gap-2 border-b px-3 py-2 text-sm font-medium",
28
+ children: [/* @__PURE__ */ n("span", { children: e }), /* @__PURE__ */ n("span", {
29
+ className: "text-xs font-normal text-muted-foreground",
30
+ children: t.length
31
+ })]
32
+ }), /* @__PURE__ */ n("div", {
17
33
  className: "grid gap-1 p-2",
18
- children: r.map((e) => /* @__PURE__ */ n("button", {
34
+ children: t.length === 0 ? /* @__PURE__ */ n("div", {
35
+ className: "rounded-md border border-dashed px-3 py-6 text-center text-sm text-muted-foreground",
36
+ children: u
37
+ }) : t.map((e) => /* @__PURE__ */ r("button", {
19
38
  type: "button",
20
- disabled: e.disabled,
21
- className: "flex items-center justify-between rounded-md px-2 py-1.5 text-left text-sm hover:bg-muted disabled:opacity-50",
22
- onClick: () => p(e.value),
23
- children: [/* @__PURE__ */ t("span", { children: e.label }), /* @__PURE__ */ t("span", {
39
+ disabled: e.disabled || i === "available" && S,
40
+ className: "flex items-center justify-between rounded-md px-2 py-1.5 text-left text-sm hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40 disabled:opacity-50",
41
+ "aria-pressed": _.has(e.value),
42
+ onClick: () => C(e.value),
43
+ children: [/* @__PURE__ */ n("span", { children: e.label }), /* @__PURE__ */ n("span", {
24
44
  className: "text-muted-foreground",
25
- children: u.has(e.value) ? "−" : "+"
45
+ children: _.has(e.value) ? "−" : "+"
26
46
  })]
27
47
  }, e.value))
28
48
  })]
29
49
  });
30
- return /* @__PURE__ */ n("div", {
50
+ return /* @__PURE__ */ r("div", {
31
51
  "data-slot": "dual-list-picker",
32
- className: e("grid gap-3 md:grid-cols-2", c),
33
- ...l,
34
- children: [m(o, d), m(s, f)]
52
+ className: e("grid gap-3", p),
53
+ ...m,
54
+ children: [
55
+ /* @__PURE__ */ r("div", {
56
+ className: "flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between",
57
+ children: [/* @__PURE__ */ n("input", {
58
+ value: h,
59
+ placeholder: l,
60
+ className: "h-9 min-w-0 rounded-md border bg-background px-3 text-sm outline-none focus-visible:ring-2 focus-visible:ring-ring/40 sm:max-w-xs",
61
+ onChange: (e) => g(e.currentTarget.value)
62
+ }), f && /* @__PURE__ */ r("div", {
63
+ className: "flex gap-2",
64
+ children: [/* @__PURE__ */ n("button", {
65
+ type: "button",
66
+ className: "rounded-md border px-3 py-1.5 text-sm disabled:opacity-50",
67
+ disabled: S,
68
+ onClick: w,
69
+ children: "Add all"
70
+ }), /* @__PURE__ */ n("button", {
71
+ type: "button",
72
+ className: "rounded-md border px-3 py-1.5 text-sm disabled:opacity-50",
73
+ disabled: a.length === 0,
74
+ onClick: T,
75
+ children: "Remove all"
76
+ })]
77
+ })]
78
+ }),
79
+ /* @__PURE__ */ r("div", {
80
+ className: "grid gap-3 md:grid-cols-2",
81
+ children: [E(s, b, "available"), E(c, x, "picked")]
82
+ }),
83
+ d !== void 0 && /* @__PURE__ */ r("div", {
84
+ className: "text-xs text-muted-foreground",
85
+ children: [
86
+ a.length,
87
+ " / ",
88
+ d,
89
+ " selected"
90
+ ]
91
+ })
92
+ ]
35
93
  });
36
94
  }
37
95
  //#endregion
38
- export { r as DualListPicker };
96
+ export { i as DualListPicker };
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs");let n=require("react");n=e.__toESM(n,1);let r=require("react/jsx-runtime");function i({value:e,onValueChange:i,placeholder:a=`Write something...`,className:o,...s}){let c=n.useRef(null);return n.useEffect(()=>{c.current&&e!==void 0&&c.current.innerHTML!==e&&(c.current.innerHTML=e)},[e]),(0,r.jsxs)(`div`,{"data-slot":`rich-text-editor`,className:t.cn(`grid gap-2 rounded-lg border bg-background p-2`,o),...s,children:[(0,r.jsx)(`div`,{className:`flex flex-wrap gap-1 border-b pb-2`,children:[[`bold`,`B`],[`italic`,`I`],[`underline`,`U`]].map(([e,t])=>(0,r.jsx)(`button`,{type:`button`,className:`rounded border px-2 py-1 text-xs font-medium`,onClick:()=>document.execCommand(e),children:t},e))}),(0,r.jsx)(`div`,{ref:c,contentEditable:!0,"data-placeholder":a,className:`min-h-32 rounded-md p-2 text-sm outline-none empty:before:text-muted-foreground empty:before:content-[attr(data-placeholder)]`,onInput:e=>i?.(e.currentTarget.innerHTML)})]})}exports.RichTextEditor=i;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs");let n=require("react");n=e.__toESM(n,1);let r=require("react/jsx-runtime");function i({value:e,onValueChange:i,placeholder:a=`Write something...`,output:o=`html`,disabled:s=!1,className:c,...l}){let u=n.useRef(null);return n.useEffect(()=>{u.current&&e!==void 0&&u.current.innerHTML!==e&&(u.current.innerHTML=e)},[e]),(0,r.jsxs)(`div`,{"data-slot":`rich-text-editor`,"data-disabled":s||void 0,className:t.cn(`grid gap-2 rounded-lg border bg-background p-2`,s&&`opacity-60`,c),...l,children:[(0,r.jsx)(`div`,{className:`flex flex-wrap gap-1 border-b pb-2`,children:[[`bold`,`B`],[`italic`,`I`],[`underline`,`U`]].map(([e,t])=>(0,r.jsx)(`button`,{type:`button`,disabled:s,className:`rounded border px-2 py-1 text-xs font-medium disabled:opacity-50`,onClick:()=>document.execCommand(e),children:t},e))}),(0,r.jsx)(`div`,{ref:u,contentEditable:!s,"aria-disabled":s||void 0,"data-placeholder":a,className:`min-h-32 rounded-md p-2 text-sm outline-none empty:before:text-muted-foreground empty:before:content-[attr(data-placeholder)]`,onInput:e=>i?.(o===`text`?e.currentTarget.textContent??``:e.currentTarget.innerHTML)})]})}exports.RichTextEditor=i;
@@ -3,6 +3,8 @@ export type RichTextEditorProps = Omit<React.ComponentProps<"div">, "onChange">
3
3
  value?: string;
4
4
  onValueChange?: (value: string) => void;
5
5
  placeholder?: string;
6
+ output?: "html" | "text";
7
+ disabled?: boolean;
6
8
  };
7
- declare function RichTextEditor({ value, onValueChange, placeholder, className, ...props }: RichTextEditorProps): React.JSX.Element;
9
+ declare function RichTextEditor({ value, onValueChange, placeholder, output, disabled, className, ...props }: RichTextEditorProps): React.JSX.Element;
8
10
  export { RichTextEditor };
@@ -2,14 +2,15 @@ import { cn as e } from "../../lib/utils.js";
2
2
  import * as t from "react";
3
3
  import { jsx as n, jsxs as r } from "react/jsx-runtime";
4
4
  //#region src/components/modern/rich-text-editor.tsx
5
- function i({ value: i, onValueChange: a, placeholder: o = "Write something...", className: s, ...c }) {
6
- let l = t.useRef(null);
5
+ function i({ value: i, onValueChange: a, placeholder: o = "Write something...", output: s = "html", disabled: c = !1, className: l, ...u }) {
6
+ let d = t.useRef(null);
7
7
  return t.useEffect(() => {
8
- l.current && i !== void 0 && l.current.innerHTML !== i && (l.current.innerHTML = i);
8
+ d.current && i !== void 0 && d.current.innerHTML !== i && (d.current.innerHTML = i);
9
9
  }, [i]), /* @__PURE__ */ r("div", {
10
10
  "data-slot": "rich-text-editor",
11
- className: e("grid gap-2 rounded-lg border bg-background p-2", s),
12
- ...c,
11
+ "data-disabled": c || void 0,
12
+ className: e("grid gap-2 rounded-lg border bg-background p-2", c && "opacity-60", l),
13
+ ...u,
13
14
  children: [/* @__PURE__ */ n("div", {
14
15
  className: "flex flex-wrap gap-1 border-b pb-2",
15
16
  children: [
@@ -18,16 +19,18 @@ function i({ value: i, onValueChange: a, placeholder: o = "Write something...",
18
19
  ["underline", "U"]
19
20
  ].map(([e, t]) => /* @__PURE__ */ n("button", {
20
21
  type: "button",
21
- className: "rounded border px-2 py-1 text-xs font-medium",
22
+ disabled: c,
23
+ className: "rounded border px-2 py-1 text-xs font-medium disabled:opacity-50",
22
24
  onClick: () => document.execCommand(e),
23
25
  children: t
24
26
  }, e))
25
27
  }), /* @__PURE__ */ n("div", {
26
- ref: l,
27
- contentEditable: !0,
28
+ ref: d,
29
+ contentEditable: !c,
30
+ "aria-disabled": c || void 0,
28
31
  "data-placeholder": o,
29
32
  className: "min-h-32 rounded-md p-2 text-sm outline-none empty:before:text-muted-foreground empty:before:content-[attr(data-placeholder)]",
30
- onInput: (e) => a?.(e.currentTarget.innerHTML)
33
+ onInput: (e) => a?.(s === "text" ? e.currentTarget.textContent ?? "" : e.currentTarget.innerHTML)
31
34
  })]
32
35
  });
33
36
  }
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs");let n=require("react");n=e.__toESM(n,1);let r=require("react/jsx-runtime");function i({steps:e,index:n=0,onIndexChange:i,onClose:a,className:o,...s}){let c=e[n];return c?(0,r.jsx)(`div`,{"data-slot":`tour`,className:t.cn(`rounded-xl border bg-popover p-4 text-popover-foreground shadow-lg`,o),...s,children:(0,r.jsxs)(`div`,{className:`grid gap-2`,children:[(0,r.jsx)(`div`,{className:`font-semibold`,children:c.title}),c.description&&(0,r.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:c.description}),(0,r.jsxs)(`div`,{className:`flex items-center justify-between gap-3 pt-2`,children:[(0,r.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[n+1,` / `,e.length]}),(0,r.jsxs)(`div`,{className:`flex gap-2`,children:[(0,r.jsx)(`button`,{type:`button`,className:`rounded-md border px-2.5 py-1 text-sm`,disabled:n===0,onClick:()=>i?.(n-1),children:`Back`}),n<e.length-1?(0,r.jsx)(`button`,{type:`button`,className:`rounded-md bg-primary px-2.5 py-1 text-sm text-primary-foreground`,onClick:()=>i?.(n+1),children:`Next`}):(0,r.jsx)(`button`,{type:`button`,className:`rounded-md bg-primary px-2.5 py-1 text-sm text-primary-foreground`,onClick:a,children:`Done`})]})]})]})}):null}exports.Tour=i;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs");let n=require("react");n=e.__toESM(n,1);let r=require("react/jsx-runtime");function i({steps:e,index:i=0,onIndexChange:a,onClose:o,onSkip:s,onFinish:c,placement:l=`bottom`,className:u,...d}){let f=e[i],p=n.useRef(null);return n.useEffect(()=>{p.current?.focus()},[i]),f?(0,r.jsx)(`div`,{ref:p,"data-slot":`tour`,"data-placement":l,tabIndex:-1,className:t.cn(`rounded-xl border bg-popover p-4 text-popover-foreground shadow-lg outline-none focus-visible:ring-2 focus-visible:ring-ring/40`,u),...d,children:(0,r.jsxs)(`div`,{className:`grid gap-2`,children:[(0,r.jsx)(`div`,{className:`font-semibold`,children:f.title}),f.description&&(0,r.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:f.description}),f.target&&(0,r.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:f.target}),(0,r.jsxs)(`div`,{className:`flex items-center justify-between gap-3 pt-2`,children:[(0,r.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[i+1,` / `,e.length]}),(0,r.jsxs)(`div`,{className:`flex gap-2`,children:[(0,r.jsx)(`button`,{type:`button`,className:`rounded-md border px-2.5 py-1 text-sm`,onClick:()=>{s?.(),o?.()},children:`Skip`}),(0,r.jsx)(`button`,{type:`button`,className:`rounded-md border px-2.5 py-1 text-sm`,disabled:i===0,onClick:()=>a?.(i-1),children:`Back`}),i<e.length-1?(0,r.jsx)(`button`,{type:`button`,className:`rounded-md bg-primary px-2.5 py-1 text-sm text-primary-foreground`,onClick:()=>a?.(i+1),children:`Next`}):(0,r.jsx)(`button`,{type:`button`,className:`rounded-md bg-primary px-2.5 py-1 text-sm text-primary-foreground`,onClick:()=>{c?.(),o?.()},children:`Done`})]})]})]})}):null}exports.Tour=i;
@@ -2,12 +2,16 @@ import * as React from "react";
2
2
  export type TourStep = {
3
3
  title: React.ReactNode;
4
4
  description?: React.ReactNode;
5
+ target?: string;
5
6
  };
6
7
  export type TourProps = React.ComponentProps<"div"> & {
7
8
  steps: TourStep[];
8
9
  index?: number;
9
10
  onIndexChange?: (index: number) => void;
10
11
  onClose?: () => void;
12
+ onSkip?: () => void;
13
+ onFinish?: () => void;
14
+ placement?: "top" | "right" | "bottom" | "left";
11
15
  };
12
- declare function Tour({ steps, index, onIndexChange, onClose, className, ...props }: TourProps): React.JSX.Element | null;
16
+ declare function Tour({ steps, index, onIndexChange, onClose, onSkip, onFinish, placement, className, ...props }: TourProps): React.JSX.Element | null;
13
17
  export { Tour };