@webjsdev/ui 0.3.17 → 0.4.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 (358) hide show
  1. package/README.md +66 -7
  2. package/THIRD_PARTY_NOTICES.md +349 -0
  3. package/package.json +4 -2
  4. package/packages/registry/blocks/_shared/placeholder.svg +1 -0
  5. package/packages/registry/blocks/charts/chart-area-axes.ts +72 -0
  6. package/packages/registry/blocks/charts/chart-area-default.ts +64 -0
  7. package/packages/registry/blocks/charts/chart-area-gradient.ts +82 -0
  8. package/packages/registry/blocks/charts/chart-area-icons.ts +77 -0
  9. package/packages/registry/blocks/charts/chart-area-interactive.ts +204 -0
  10. package/packages/registry/blocks/charts/chart-area-legend.ts +72 -0
  11. package/packages/registry/blocks/charts/chart-area-linear.ts +64 -0
  12. package/packages/registry/blocks/charts/chart-area-stacked-expand.ts +77 -0
  13. package/packages/registry/blocks/charts/chart-area-stacked.ts +71 -0
  14. package/packages/registry/blocks/charts/chart-area-step.ts +68 -0
  15. package/packages/registry/blocks/charts/chart-bar-active.ts +93 -0
  16. package/packages/registry/blocks/charts/chart-bar-default.ts +60 -0
  17. package/packages/registry/blocks/charts/chart-bar-horizontal.ts +62 -0
  18. package/packages/registry/blocks/charts/chart-bar-interactive.ts +185 -0
  19. package/packages/registry/blocks/charts/chart-bar-label-custom.ts +78 -0
  20. package/packages/registry/blocks/charts/chart-bar-label.ts +66 -0
  21. package/packages/registry/blocks/charts/chart-bar-mixed.ts +87 -0
  22. package/packages/registry/blocks/charts/chart-bar-multiple.ts +67 -0
  23. package/packages/registry/blocks/charts/chart-bar-negative.ts +61 -0
  24. package/packages/registry/blocks/charts/chart-bar-stacked.ts +68 -0
  25. package/packages/registry/blocks/charts/chart-line-default.ts +61 -0
  26. package/packages/registry/blocks/charts/chart-line-dots-colors.ts +86 -0
  27. package/packages/registry/blocks/charts/chart-line-dots-custom.ts +75 -0
  28. package/packages/registry/blocks/charts/chart-line-dots.ts +65 -0
  29. package/packages/registry/blocks/charts/chart-line-interactive.ts +185 -0
  30. package/packages/registry/blocks/charts/chart-line-label-custom.ts +94 -0
  31. package/packages/registry/blocks/charts/chart-line-label.ts +73 -0
  32. package/packages/registry/blocks/charts/chart-line-linear.ts +61 -0
  33. package/packages/registry/blocks/charts/chart-line-multiple.ts +71 -0
  34. package/packages/registry/blocks/charts/chart-line-step.ts +61 -0
  35. package/packages/registry/blocks/charts/chart-pie-donut-active.ts +86 -0
  36. package/packages/registry/blocks/charts/chart-pie-donut-text.ts +89 -0
  37. package/packages/registry/blocks/charts/chart-pie-donut.ts +77 -0
  38. package/packages/registry/blocks/charts/chart-pie-interactive.ts +120 -0
  39. package/packages/registry/blocks/charts/chart-pie-label-custom.ts +82 -0
  40. package/packages/registry/blocks/charts/chart-pie-label-list.ts +86 -0
  41. package/packages/registry/blocks/charts/chart-pie-label.ts +77 -0
  42. package/packages/registry/blocks/charts/chart-pie-legend.ts +79 -0
  43. package/packages/registry/blocks/charts/chart-pie-separator-none.ts +77 -0
  44. package/packages/registry/blocks/charts/chart-pie-simple.ts +77 -0
  45. package/packages/registry/blocks/charts/chart-pie-stacked.ts +99 -0
  46. package/packages/registry/blocks/charts/chart-radar-default.ts +61 -0
  47. package/packages/registry/blocks/charts/chart-radar-dots.ts +61 -0
  48. package/packages/registry/blocks/charts/chart-radar-grid-circle-fill.ts +61 -0
  49. package/packages/registry/blocks/charts/chart-radar-grid-circle-no-lines.ts +61 -0
  50. package/packages/registry/blocks/charts/chart-radar-grid-circle.ts +61 -0
  51. package/packages/registry/blocks/charts/chart-radar-grid-custom.ts +61 -0
  52. package/packages/registry/blocks/charts/chart-radar-grid-fill.ts +61 -0
  53. package/packages/registry/blocks/charts/chart-radar-grid-none.ts +60 -0
  54. package/packages/registry/blocks/charts/chart-radar-icons.ts +76 -0
  55. package/packages/registry/blocks/charts/chart-radar-label-custom.ts +77 -0
  56. package/packages/registry/blocks/charts/chart-radar-legend.ts +70 -0
  57. package/packages/registry/blocks/charts/chart-radar-lines-only.ts +68 -0
  58. package/packages/registry/blocks/charts/chart-radar-multiple.ts +68 -0
  59. package/packages/registry/blocks/charts/chart-radar-radius.ts +68 -0
  60. package/packages/registry/blocks/charts/chart-radial-grid.ts +80 -0
  61. package/packages/registry/blocks/charts/chart-radial-label.ts +85 -0
  62. package/packages/registry/blocks/charts/chart-radial-shape.ts +81 -0
  63. package/packages/registry/blocks/charts/chart-radial-simple.ts +79 -0
  64. package/packages/registry/blocks/charts/chart-radial-stacked.ts +69 -0
  65. package/packages/registry/blocks/charts/chart-radial-text.ts +82 -0
  66. package/packages/registry/blocks/charts/chart-tooltip-advanced.ts +84 -0
  67. package/packages/registry/blocks/charts/chart-tooltip-default.ts +62 -0
  68. package/packages/registry/blocks/charts/chart-tooltip-formatter.ts +75 -0
  69. package/packages/registry/blocks/charts/chart-tooltip-icons.ts +68 -0
  70. package/packages/registry/blocks/charts/chart-tooltip-indicator-line.ts +62 -0
  71. package/packages/registry/blocks/charts/chart-tooltip-indicator-none.ts +62 -0
  72. package/packages/registry/blocks/charts/chart-tooltip-label-custom.ts +65 -0
  73. package/packages/registry/blocks/charts/chart-tooltip-label-formatter.ts +66 -0
  74. package/packages/registry/blocks/charts/chart-tooltip-label-none.ts +62 -0
  75. package/packages/registry/blocks/dashboard-01/components/app-sidebar.ts +108 -0
  76. package/packages/registry/blocks/dashboard-01/components/chart-area-interactive.ts +276 -0
  77. package/packages/registry/blocks/dashboard-01/components/dashboard-data.ts +89 -0
  78. package/packages/registry/blocks/dashboard-01/components/data-table.ts +637 -0
  79. package/packages/registry/blocks/dashboard-01/components/nav-documents.ts +65 -0
  80. package/packages/registry/blocks/dashboard-01/components/nav-main.ts +61 -0
  81. package/packages/registry/blocks/dashboard-01/components/nav-secondary.ts +40 -0
  82. package/packages/registry/blocks/dashboard-01/components/nav-user.ts +66 -0
  83. package/packages/registry/blocks/dashboard-01/components/section-cards.ts +59 -0
  84. package/packages/registry/blocks/dashboard-01/components/site-header.ts +52 -0
  85. package/packages/registry/blocks/dashboard-01/page.ts +39 -0
  86. package/packages/registry/blocks/login-01/components/login-form.ts +70 -0
  87. package/packages/registry/blocks/login-01/page.ts +19 -0
  88. package/packages/registry/blocks/login-02/components/login-form.ts +68 -0
  89. package/packages/registry/blocks/login-02/page.ts +36 -0
  90. package/packages/registry/blocks/login-03/components/login-form.ts +89 -0
  91. package/packages/registry/blocks/login-03/page.ts +28 -0
  92. package/packages/registry/blocks/login-04/components/login-form.ts +91 -0
  93. package/packages/registry/blocks/login-04/page.ts +20 -0
  94. package/packages/registry/blocks/login-05/components/login-form.ts +75 -0
  95. package/packages/registry/blocks/login-05/page.ts +19 -0
  96. package/packages/registry/blocks/preview/cards/activate-agent-dialog.ts +77 -0
  97. package/packages/registry/blocks/preview/cards/analytics-card.ts +64 -0
  98. package/packages/registry/blocks/preview/cards/anomaly-alert.ts +35 -0
  99. package/packages/registry/blocks/preview/cards/bar-chart-card.ts +91 -0
  100. package/packages/registry/blocks/preview/cards/book-appointment.ts +51 -0
  101. package/packages/registry/blocks/preview/cards/codespaces-card.ts +172 -0
  102. package/packages/registry/blocks/preview/cards/contributions-activity.ts +63 -0
  103. package/packages/registry/blocks/preview/cards/contributors.ts +51 -0
  104. package/packages/registry/blocks/preview/cards/environment-variables.ts +47 -0
  105. package/packages/registry/blocks/preview/cards/feedback-form.ts +61 -0
  106. package/packages/registry/blocks/preview/cards/file-upload.ts +51 -0
  107. package/packages/registry/blocks/preview/cards/github-profile.ts +66 -0
  108. package/packages/registry/blocks/preview/cards/icon-preview-grid.ts +47 -0
  109. package/packages/registry/blocks/preview/cards/invite-team.ts +78 -0
  110. package/packages/registry/blocks/preview/cards/invoice.ts +91 -0
  111. package/packages/registry/blocks/preview/cards/live-waveform.ts +330 -0
  112. package/packages/registry/blocks/preview/cards/no-team-members.ts +61 -0
  113. package/packages/registry/blocks/preview/cards/not-found.ts +46 -0
  114. package/packages/registry/blocks/preview/cards/observability-card.ts +44 -0
  115. package/packages/registry/blocks/preview/cards/pie-chart-card.ts +84 -0
  116. package/packages/registry/blocks/preview/cards/report-bug.ts +71 -0
  117. package/packages/registry/blocks/preview/cards/shipping-address.ts +79 -0
  118. package/packages/registry/blocks/preview/cards/shortcuts.ts +57 -0
  119. package/packages/registry/blocks/preview/cards/skeleton-loading.ts +37 -0
  120. package/packages/registry/blocks/preview/cards/sleep-report.ts +85 -0
  121. package/packages/registry/blocks/preview/cards/style-overview.ts +64 -0
  122. package/packages/registry/blocks/preview/cards/typography-specimen.ts +107 -0
  123. package/packages/registry/blocks/preview/cards/ui-elements.ts +164 -0
  124. package/packages/registry/blocks/preview/cards/usage-card.ts +63 -0
  125. package/packages/registry/blocks/preview/cards/visitors.ts +71 -0
  126. package/packages/registry/blocks/preview/cards/weekly-fitness-summary.ts +54 -0
  127. package/packages/registry/blocks/preview/page.ts +103 -0
  128. package/packages/registry/blocks/preview-02/cards/account-access.ts +70 -0
  129. package/packages/registry/blocks/preview-02/cards/card-overview.ts +75 -0
  130. package/packages/registry/blocks/preview-02/cards/claimable-balance.ts +54 -0
  131. package/packages/registry/blocks/preview-02/cards/contribution-history.ts +80 -0
  132. package/packages/registry/blocks/preview-02/cards/cover-art.ts +41 -0
  133. package/packages/registry/blocks/preview-02/cards/dividend-income.ts +76 -0
  134. package/packages/registry/blocks/preview-02/cards/empty-connect-bank.ts +38 -0
  135. package/packages/registry/blocks/preview-02/cards/empty-distribute-track.ts +38 -0
  136. package/packages/registry/blocks/preview-02/cards/empty-explore-catalog.ts +39 -0
  137. package/packages/registry/blocks/preview-02/cards/faq.ts +79 -0
  138. package/packages/registry/blocks/preview-02/cards/front-door.ts +40 -0
  139. package/packages/registry/blocks/preview-02/cards/index-investing.ts +31 -0
  140. package/packages/registry/blocks/preview-02/cards/kitchen-island.ts +90 -0
  141. package/packages/registry/blocks/preview-02/cards/loading-card.ts +34 -0
  142. package/packages/registry/blocks/preview-02/cards/new-milestone.ts +53 -0
  143. package/packages/registry/blocks/preview-02/cards/notification-settings.ts +126 -0
  144. package/packages/registry/blocks/preview-02/cards/payments.ts +88 -0
  145. package/packages/registry/blocks/preview-02/cards/payout-threshold.ts +92 -0
  146. package/packages/registry/blocks/preview-02/cards/power-usage.ts +84 -0
  147. package/packages/registry/blocks/preview-02/cards/preferences.ts +89 -0
  148. package/packages/registry/blocks/preview-02/cards/qr-connect.ts +54 -0
  149. package/packages/registry/blocks/preview-02/cards/receiving-method.ts +89 -0
  150. package/packages/registry/blocks/preview-02/cards/recent-transactions.ts +101 -0
  151. package/packages/registry/blocks/preview-02/cards/release-catalog.ts +73 -0
  152. package/packages/registry/blocks/preview-02/cards/roller-shades.ts +110 -0
  153. package/packages/registry/blocks/preview-02/cards/savings-progress.ts +68 -0
  154. package/packages/registry/blocks/preview-02/cards/savings-targets.ts +132 -0
  155. package/packages/registry/blocks/preview-02/cards/sidebar-nav.ts +88 -0
  156. package/packages/registry/blocks/preview-02/cards/social-links.ts +57 -0
  157. package/packages/registry/blocks/preview-02/cards/stock-performance.ts +106 -0
  158. package/packages/registry/blocks/preview-02/cards/syncing-state.ts +37 -0
  159. package/packages/registry/blocks/preview-02/cards/transfer-funds.ts +111 -0
  160. package/packages/registry/blocks/preview-02/cards/upcoming-payments.ts +69 -0
  161. package/packages/registry/blocks/preview-02/page.ts +111 -0
  162. package/packages/registry/blocks/preview-03/cards/files-chat.ts +75 -0
  163. package/packages/registry/blocks/preview-03/cards/group-chat.ts +114 -0
  164. package/packages/registry/blocks/preview-03/cards/reasoning-chat.ts +88 -0
  165. package/packages/registry/blocks/preview-03/cards/simple-chat.ts +53 -0
  166. package/packages/registry/blocks/preview-03/components/chat-card.ts +126 -0
  167. package/packages/registry/blocks/preview-03/components/chat-player.ts +174 -0
  168. package/packages/registry/blocks/preview-03/components/part-file.ts +77 -0
  169. package/packages/registry/blocks/preview-03/components/part-reasoning.ts +25 -0
  170. package/packages/registry/blocks/preview-03/components/part-source.ts +48 -0
  171. package/packages/registry/blocks/preview-03/components/part-text.ts +69 -0
  172. package/packages/registry/blocks/preview-03/components/part-tool.ts +71 -0
  173. package/packages/registry/blocks/preview-03/components/prompt-input.ts +86 -0
  174. package/packages/registry/blocks/preview-03/page.ts +39 -0
  175. package/packages/registry/blocks/sidebar-01/components/app-sidebar.ts +113 -0
  176. package/packages/registry/blocks/sidebar-01/components/search-form.ts +33 -0
  177. package/packages/registry/blocks/sidebar-01/components/version-switcher.ts +50 -0
  178. package/packages/registry/blocks/sidebar-01/page.ts +58 -0
  179. package/packages/registry/blocks/sidebar-02/components/app-sidebar.ts +131 -0
  180. package/packages/registry/blocks/sidebar-02/components/search-form.ts +33 -0
  181. package/packages/registry/blocks/sidebar-02/components/version-switcher.ts +50 -0
  182. package/packages/registry/blocks/sidebar-02/page.ts +53 -0
  183. package/packages/registry/blocks/sidebar-03/components/app-sidebar.ts +134 -0
  184. package/packages/registry/blocks/sidebar-03/page.ts +60 -0
  185. package/packages/registry/blocks/sidebar-04/components/app-sidebar.ts +136 -0
  186. package/packages/registry/blocks/sidebar-04/page.ts +58 -0
  187. package/packages/registry/blocks/sidebar-05/components/app-sidebar.ts +147 -0
  188. package/packages/registry/blocks/sidebar-05/components/search-form.ts +33 -0
  189. package/packages/registry/blocks/sidebar-05/page.ts +58 -0
  190. package/packages/registry/blocks/sidebar-06/components/app-sidebar.ts +105 -0
  191. package/packages/registry/blocks/sidebar-06/components/nav-main.ts +56 -0
  192. package/packages/registry/blocks/sidebar-06/components/sidebar-opt-in-form.ts +44 -0
  193. package/packages/registry/blocks/sidebar-06/page.ts +57 -0
  194. package/packages/registry/blocks/sidebar-07/components/app-sidebar.ts +108 -0
  195. package/packages/registry/blocks/sidebar-07/components/nav-main.ts +61 -0
  196. package/packages/registry/blocks/sidebar-07/components/nav-projects.ts +65 -0
  197. package/packages/registry/blocks/sidebar-07/components/nav-user.ts +70 -0
  198. package/packages/registry/blocks/sidebar-07/components/team-switcher.ts +66 -0
  199. package/packages/registry/blocks/sidebar-07/page.ts +59 -0
  200. package/packages/registry/blocks/sidebar-08/components/app-sidebar.ts +122 -0
  201. package/packages/registry/blocks/sidebar-08/components/nav-main.ts +68 -0
  202. package/packages/registry/blocks/sidebar-08/components/nav-projects.ts +65 -0
  203. package/packages/registry/blocks/sidebar-08/components/nav-secondary.ts +40 -0
  204. package/packages/registry/blocks/sidebar-08/components/nav-user.ts +70 -0
  205. package/packages/registry/blocks/sidebar-08/page.ts +59 -0
  206. package/packages/registry/blocks/sidebar-09/components/app-sidebar.ts +213 -0
  207. package/packages/registry/blocks/sidebar-09/components/nav-user.ts +70 -0
  208. package/packages/registry/blocks/sidebar-09/page.ts +52 -0
  209. package/packages/registry/blocks/sidebar-10/components/app-sidebar.ts +125 -0
  210. package/packages/registry/blocks/sidebar-10/components/nav-actions.ts +84 -0
  211. package/packages/registry/blocks/sidebar-10/components/nav-favorites.ts +66 -0
  212. package/packages/registry/blocks/sidebar-10/components/nav-main.ts +37 -0
  213. package/packages/registry/blocks/sidebar-10/components/nav-secondary.ts +43 -0
  214. package/packages/registry/blocks/sidebar-10/components/nav-workspaces.ts +78 -0
  215. package/packages/registry/blocks/sidebar-10/components/team-switcher.ts +63 -0
  216. package/packages/registry/blocks/sidebar-10/page.ts +46 -0
  217. package/packages/registry/blocks/sidebar-11/components/app-sidebar.ts +114 -0
  218. package/packages/registry/blocks/sidebar-11/page.ts +63 -0
  219. package/packages/registry/blocks/sidebar-12/components/app-sidebar.ts +63 -0
  220. package/packages/registry/blocks/sidebar-12/components/calendars.ts +53 -0
  221. package/packages/registry/blocks/sidebar-12/components/date-picker.ts +26 -0
  222. package/packages/registry/blocks/sidebar-12/components/nav-user.ts +70 -0
  223. package/packages/registry/blocks/sidebar-12/page.ts +43 -0
  224. package/packages/registry/blocks/sidebar-13/components/settings-dialog.ts +114 -0
  225. package/packages/registry/blocks/sidebar-13/page.ts +21 -0
  226. package/packages/registry/blocks/sidebar-14/components/app-sidebar.ts +120 -0
  227. package/packages/registry/blocks/sidebar-14/page.ts +55 -0
  228. package/packages/registry/blocks/sidebar-15/components/calendars.ts +53 -0
  229. package/packages/registry/blocks/sidebar-15/components/date-picker.ts +26 -0
  230. package/packages/registry/blocks/sidebar-15/components/nav-favorites.ts +66 -0
  231. package/packages/registry/blocks/sidebar-15/components/nav-main.ts +35 -0
  232. package/packages/registry/blocks/sidebar-15/components/nav-secondary.ts +43 -0
  233. package/packages/registry/blocks/sidebar-15/components/nav-user.ts +70 -0
  234. package/packages/registry/blocks/sidebar-15/components/nav-workspaces.ts +75 -0
  235. package/packages/registry/blocks/sidebar-15/components/sidebar-left.ts +126 -0
  236. package/packages/registry/blocks/sidebar-15/components/sidebar-right.ts +62 -0
  237. package/packages/registry/blocks/sidebar-15/components/team-switcher.ts +63 -0
  238. package/packages/registry/blocks/sidebar-15/page.ts +47 -0
  239. package/packages/registry/blocks/sidebar-16/components/app-sidebar.ts +124 -0
  240. package/packages/registry/blocks/sidebar-16/components/nav-main.ts +67 -0
  241. package/packages/registry/blocks/sidebar-16/components/nav-projects.ts +65 -0
  242. package/packages/registry/blocks/sidebar-16/components/nav-secondary.ts +40 -0
  243. package/packages/registry/blocks/sidebar-16/components/nav-user.ts +70 -0
  244. package/packages/registry/blocks/sidebar-16/components/search-form.ts +27 -0
  245. package/packages/registry/blocks/sidebar-16/components/site-header.ts +42 -0
  246. package/packages/registry/blocks/sidebar-16/page.ts +38 -0
  247. package/packages/registry/blocks/signup-01/components/signup-form.ts +78 -0
  248. package/packages/registry/blocks/signup-01/page.ts +19 -0
  249. package/packages/registry/blocks/signup-02/components/signup-form.ts +78 -0
  250. package/packages/registry/blocks/signup-02/page.ts +36 -0
  251. package/packages/registry/blocks/signup-03/components/signup-form.ts +79 -0
  252. package/packages/registry/blocks/signup-03/page.ts +28 -0
  253. package/packages/registry/blocks/signup-04/components/signup-form.ts +100 -0
  254. package/packages/registry/blocks/signup-04/page.ts +20 -0
  255. package/packages/registry/blocks/signup-05/components/signup-form.ts +75 -0
  256. package/packages/registry/blocks/signup-05/page.ts +20 -0
  257. package/packages/registry/components/accordion.ts +20 -7
  258. package/packages/registry/components/alert-dialog.ts +58 -13
  259. package/packages/registry/components/alert.ts +11 -6
  260. package/packages/registry/components/attachment.ts +119 -0
  261. package/packages/registry/components/avatar.ts +17 -8
  262. package/packages/registry/components/badge.ts +16 -9
  263. package/packages/registry/components/breadcrumb.ts +6 -6
  264. package/packages/registry/components/bubble.ts +95 -0
  265. package/packages/registry/components/button-group.ts +73 -0
  266. package/packages/registry/components/button.ts +35 -25
  267. package/packages/registry/components/calendar.ts +566 -0
  268. package/packages/registry/components/card.ts +8 -8
  269. package/packages/registry/components/carousel.ts +352 -0
  270. package/packages/registry/components/chart-element.ts +547 -0
  271. package/packages/registry/components/chart-geometry.ts +457 -0
  272. package/packages/registry/components/chart.ts +932 -0
  273. package/packages/registry/components/checkbox.ts +22 -84
  274. package/packages/registry/components/code-block.ts +191 -0
  275. package/packages/registry/components/collapsible.ts +5 -2
  276. package/packages/registry/components/combobox.ts +802 -0
  277. package/packages/registry/components/command.ts +618 -0
  278. package/packages/registry/components/context-menu.ts +302 -0
  279. package/packages/registry/components/dialog.ts +156 -45
  280. package/packages/registry/components/direction.ts +43 -0
  281. package/packages/registry/components/drawer.ts +226 -0
  282. package/packages/registry/components/dropdown-menu.ts +262 -83
  283. package/packages/registry/components/empty.ts +8 -8
  284. package/packages/registry/components/field.ts +20 -18
  285. package/packages/registry/components/floating.ts +124 -0
  286. package/packages/registry/components/hover-card.ts +19 -8
  287. package/packages/registry/components/input-group.ts +118 -0
  288. package/packages/registry/components/input-otp.ts +365 -0
  289. package/packages/registry/components/input.ts +3 -3
  290. package/packages/registry/components/item.ts +134 -0
  291. package/packages/registry/components/kbd.ts +2 -2
  292. package/packages/registry/components/label.ts +1 -1
  293. package/packages/registry/components/marker.ts +63 -0
  294. package/packages/registry/components/menubar.ts +388 -0
  295. package/packages/registry/components/message-scroller.ts +470 -0
  296. package/packages/registry/components/message.ts +69 -0
  297. package/packages/registry/components/native-select.ts +5 -5
  298. package/packages/registry/components/navigation-menu.ts +564 -0
  299. package/packages/registry/components/pagination.ts +5 -5
  300. package/packages/registry/components/popover.ts +30 -84
  301. package/packages/registry/components/progress.ts +7 -3
  302. package/packages/registry/components/questionnaire.ts +840 -0
  303. package/packages/registry/components/radio-group.ts +18 -73
  304. package/packages/registry/components/resizable.ts +330 -0
  305. package/packages/registry/components/scroll-area.ts +46 -0
  306. package/packages/registry/components/select.ts +650 -0
  307. package/packages/registry/components/separator.ts +1 -1
  308. package/packages/registry/components/sheet.ts +128 -0
  309. package/packages/registry/components/sidebar.ts +457 -0
  310. package/packages/registry/components/skeleton.ts +1 -1
  311. package/packages/registry/components/slider.ts +333 -0
  312. package/packages/registry/components/sonner.ts +74 -7
  313. package/packages/registry/components/spinner.ts +7 -4
  314. package/packages/registry/components/switch.ts +117 -9
  315. package/packages/registry/components/table.ts +11 -9
  316. package/packages/registry/components/tabs.ts +76 -25
  317. package/packages/registry/components/textarea.ts +1 -1
  318. package/packages/registry/components/toggle-group.ts +30 -11
  319. package/packages/registry/components/toggle.ts +20 -13
  320. package/packages/registry/components/tooltip.ts +68 -7
  321. package/packages/registry/components/trace.ts +75 -0
  322. package/packages/registry/lib/icons-hugeicons.ts +955 -0
  323. package/packages/registry/lib/icons-phosphor.ts +955 -0
  324. package/packages/registry/lib/icons-remixicon.ts +955 -0
  325. package/packages/registry/lib/icons-tabler.ts +955 -0
  326. package/packages/registry/lib/icons.ts +768 -0
  327. package/packages/registry/lib/utils.ts +49 -4
  328. package/packages/registry/registry.json +4056 -72
  329. package/packages/registry/styles/shadcn-tailwind.css +654 -0
  330. package/packages/registry/styles/style-luma.css +1987 -0
  331. package/packages/registry/styles/style-lyra.css +1965 -0
  332. package/packages/registry/styles/style-maia.css +1987 -0
  333. package/packages/registry/styles/style-mira.css +1992 -0
  334. package/packages/registry/styles/style-new-york.css +1597 -0
  335. package/packages/registry/styles/style-nova.css +1990 -0
  336. package/packages/registry/styles/style-rhea.css +1987 -0
  337. package/packages/registry/styles/style-sera.css +1977 -0
  338. package/packages/registry/styles/style-vega.css +1990 -0
  339. package/packages/registry/styles/supplement.json +54 -0
  340. package/packages/registry/styles/tw-animate.css +6 -0
  341. package/packages/registry/themes/base-colors.js +8 -2
  342. package/packages/registry/themes/fonts.js +120 -0
  343. package/packages/registry/themes/index.css +2 -0
  344. package/packages/registry/themes/items.js +61 -0
  345. package/packages/registry/themes/preset.js +302 -0
  346. package/packages/registry/themes/themes.js +1193 -0
  347. package/src/commands/add.js +236 -12
  348. package/src/commands/diff.js +34 -20
  349. package/src/commands/info.js +7 -0
  350. package/src/commands/init.js +125 -8
  351. package/src/commands/list.js +43 -11
  352. package/src/commands/view.js +33 -5
  353. package/src/registry/extract.js +192 -2
  354. package/src/registry/icons.js +31 -0
  355. package/src/registry/local.js +15 -1
  356. package/src/registry/schema.js +13 -0
  357. package/src/registry/style-bake.js +506 -0
  358. package/src/utils/theme.js +110 -21
@@ -0,0 +1,85 @@
1
+ /**
2
+ * A radial chart with a label, a chart block ported from shadcn/ui's chart-radial-label.
3
+ *
4
+ * Installed by `npx @webjsdev/ui add chart-radial-label` at
5
+ * `components/charts/chart-radial-label.ts`. It is app code you own, so edit it
6
+ * freely, and render it from any page with `${ChartRadialLabel()}`.
7
+ */
8
+ import { html, svg } from '@webjsdev/core';
9
+ import { cn } from '../../lib/utils.ts';
10
+ import {
11
+ cardClass, cardContentClass, cardDescriptionClass, cardFooterClass, cardHeaderClass, cardTitleClass,
12
+ } from '../../components/card.ts';
13
+ import { radialBarChart, type ChartConfig } from '../../components/chart.ts';
14
+
15
+ const chartData = [
16
+ { browser: 'chrome', visitors: 275, fill: 'var(--color-chrome)' },
17
+ { browser: 'safari', visitors: 200, fill: 'var(--color-safari)' },
18
+ { browser: 'firefox', visitors: 187, fill: 'var(--color-firefox)' },
19
+ { browser: 'edge', visitors: 173, fill: 'var(--color-edge)' },
20
+ { browser: 'other', visitors: 90, fill: 'var(--color-other)' },
21
+ ];
22
+
23
+ const chartConfig = {
24
+ visitors: {
25
+ label: 'Visitors',
26
+ },
27
+ chrome: {
28
+ label: 'Chrome',
29
+ color: 'var(--chart-1)',
30
+ },
31
+ safari: {
32
+ label: 'Safari',
33
+ color: 'var(--chart-2)',
34
+ },
35
+ firefox: {
36
+ label: 'Firefox',
37
+ color: 'var(--chart-3)',
38
+ },
39
+ edge: {
40
+ label: 'Edge',
41
+ color: 'var(--chart-4)',
42
+ },
43
+ other: {
44
+ label: 'Other',
45
+ color: 'var(--chart-5)',
46
+ },
47
+ } satisfies ChartConfig;
48
+
49
+ // lucide's trending-up, the icon in shadcn's footer.
50
+ const TrendingUp = (cls = '') => svg`<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class=${'lucide lucide-trending-up ' + cls}><path d="M16 7h6v6"></path><path d="m22 7-8.5 8.5-5-5L2 17"></path></svg>`;
51
+
52
+ export default function ChartRadialLabel() {
53
+ return html`
54
+ <div data-slot="card" class=${cn(cardClass(), 'flex flex-col')}>
55
+ <div data-slot="card-header" class=${cn(cardHeaderClass(), 'items-center pb-0')}>
56
+ <div data-slot="card-title" class=${cardTitleClass()}>Radial Chart - Label</div>
57
+ <div data-slot="card-description" class=${cardDescriptionClass()}>January - June 2024</div>
58
+ </div>
59
+ <div data-slot="card-content" class=${cn(cardContentClass(), 'flex-1 pb-0')}>
60
+ ${radialBarChart({
61
+ config: chartConfig,
62
+ class: 'mx-auto aspect-square max-h-[250px]',
63
+ data: chartData,
64
+ title: 'Visitors by browser',
65
+ startAngle: -90,
66
+ endAngle: 380,
67
+ innerRadius: 30,
68
+ outerRadius: 110,
69
+ tooltip: { cursor: false, hideLabel: true, nameKey: 'browser' },
70
+ bars: [{
71
+ dataKey: 'visitors',
72
+ background: true,
73
+ labels: [{ position: 'insideStart', dataKey: 'browser', class: 'fill-white capitalize mix-blend-luminosity', fontSize: 11 }],
74
+ }],
75
+ })}
76
+ </div>
77
+ <div data-slot="card-footer" class=${cn(cardFooterClass(), 'flex-col gap-2 text-sm')}>
78
+ <div class="flex items-center gap-2 leading-none font-medium">
79
+ Trending up by 5.2% this month ${TrendingUp('h-4 w-4')}
80
+ </div>
81
+ <div class="leading-none text-muted-foreground">Showing total visitors for the last 6 months</div>
82
+ </div>
83
+ </div>
84
+ `;
85
+ }
@@ -0,0 +1,81 @@
1
+ /**
2
+ * A radial chart with a custom shape, a chart block ported from shadcn/ui's chart-radial-shape.
3
+ *
4
+ * Installed by `npx @webjsdev/ui add chart-radial-shape` at
5
+ * `components/charts/chart-radial-shape.ts`. It is app code you own, so edit it
6
+ * freely, and render it from any page with `${ChartRadialShape()}`.
7
+ */
8
+ import { html, svg } from '@webjsdev/core';
9
+ import { cn } from '../../lib/utils.ts';
10
+ import {
11
+ cardClass, cardContentClass, cardDescriptionClass, cardFooterClass, cardHeaderClass, cardTitleClass,
12
+ } from '../../components/card.ts';
13
+ import { radialBarChart, type ChartConfig } from '../../components/chart.ts';
14
+
15
+ const chartData = [
16
+ { browser: 'safari', visitors: 1260, fill: 'var(--color-safari)' },
17
+ ];
18
+
19
+ const chartConfig = {
20
+ visitors: {
21
+ label: 'Visitors',
22
+ },
23
+ chrome: {
24
+ label: 'Chrome',
25
+ color: 'var(--chart-1)',
26
+ },
27
+ safari: {
28
+ label: 'Safari',
29
+ color: 'var(--chart-2)',
30
+ },
31
+ firefox: {
32
+ label: 'Firefox',
33
+ color: 'var(--chart-3)',
34
+ },
35
+ edge: {
36
+ label: 'Edge',
37
+ color: 'var(--chart-4)',
38
+ },
39
+ other: {
40
+ label: 'Other',
41
+ color: 'var(--chart-5)',
42
+ },
43
+ } satisfies ChartConfig;
44
+
45
+ // lucide's trending-up, the icon in shadcn's footer.
46
+ const TrendingUp = (cls = '') => svg`<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class=${'lucide lucide-trending-up ' + cls}><path d="M16 7h6v6"></path><path d="m22 7-8.5 8.5-5-5L2 17"></path></svg>`;
47
+
48
+ export default function ChartRadialShape() {
49
+ return html`
50
+ <div data-slot="card" class=${cn(cardClass(), 'flex flex-col')}>
51
+ <div data-slot="card-header" class=${cn(cardHeaderClass(), 'items-center pb-0')}>
52
+ <div data-slot="card-title" class=${cardTitleClass()}>Radial Chart - Shape</div>
53
+ <div data-slot="card-description" class=${cardDescriptionClass()}>January - June 2024</div>
54
+ </div>
55
+ <div data-slot="card-content" class=${cn(cardContentClass(), 'flex-1 pb-0')}>
56
+ ${radialBarChart({
57
+ config: chartConfig,
58
+ class: 'mx-auto aspect-square max-h-[250px]',
59
+ data: chartData,
60
+ title: 'Safari visitors',
61
+ endAngle: 100,
62
+ innerRadius: 65,
63
+ outerRadius: 95,
64
+ grid: { gridType: 'circle', radialLines: false, stroke: 'none', class: 'first:fill-muted last:fill-background', polarRadius: [86, 74] },
65
+ center: ({ cx, cy }) => svg`
66
+ <text x=${cx} y=${cy} text-anchor="middle" dominant-baseline="middle">
67
+ <tspan x=${cx} y=${cy} class="fill-foreground text-4xl font-bold">${chartData[0].visitors.toLocaleString('en-US')}</tspan>
68
+ <tspan x=${cx} y=${cy + 24} class="fill-muted-foreground">Visitors</tspan>
69
+ </text>`,
70
+ bars: [{ dataKey: 'visitors', background: true }],
71
+ })}
72
+ </div>
73
+ <div data-slot="card-footer" class=${cn(cardFooterClass(), 'flex-col gap-2 text-sm')}>
74
+ <div class="flex items-center gap-2 leading-none font-medium">
75
+ Trending up by 5.2% this month ${TrendingUp('h-4 w-4')}
76
+ </div>
77
+ <div class="leading-none text-muted-foreground">Showing total visitors for the last 6 months</div>
78
+ </div>
79
+ </div>
80
+ `;
81
+ }
@@ -0,0 +1,79 @@
1
+ /**
2
+ * A radial chart, a chart block ported from shadcn/ui's chart-radial-simple.
3
+ *
4
+ * Installed by `npx @webjsdev/ui add chart-radial-simple` at
5
+ * `components/charts/chart-radial-simple.ts`. It is app code you own, so edit it
6
+ * freely, and render it from any page with `${ChartRadialSimple()}`.
7
+ */
8
+ import { html, svg } from '@webjsdev/core';
9
+ import { cn } from '../../lib/utils.ts';
10
+ import {
11
+ cardClass, cardContentClass, cardDescriptionClass, cardFooterClass, cardHeaderClass, cardTitleClass,
12
+ } from '../../components/card.ts';
13
+ import { radialBarChart, type ChartConfig } from '../../components/chart.ts';
14
+
15
+ const chartData = [
16
+ { browser: 'chrome', visitors: 275, fill: 'var(--color-chrome)' },
17
+ { browser: 'safari', visitors: 200, fill: 'var(--color-safari)' },
18
+ { browser: 'firefox', visitors: 187, fill: 'var(--color-firefox)' },
19
+ { browser: 'edge', visitors: 173, fill: 'var(--color-edge)' },
20
+ { browser: 'other', visitors: 90, fill: 'var(--color-other)' },
21
+ ];
22
+
23
+ const chartConfig = {
24
+ visitors: {
25
+ label: 'Visitors',
26
+ },
27
+ chrome: {
28
+ label: 'Chrome',
29
+ color: 'var(--chart-1)',
30
+ },
31
+ safari: {
32
+ label: 'Safari',
33
+ color: 'var(--chart-2)',
34
+ },
35
+ firefox: {
36
+ label: 'Firefox',
37
+ color: 'var(--chart-3)',
38
+ },
39
+ edge: {
40
+ label: 'Edge',
41
+ color: 'var(--chart-4)',
42
+ },
43
+ other: {
44
+ label: 'Other',
45
+ color: 'var(--chart-5)',
46
+ },
47
+ } satisfies ChartConfig;
48
+
49
+ // lucide's trending-up, the icon in shadcn's footer.
50
+ const TrendingUp = (cls = '') => svg`<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class=${'lucide lucide-trending-up ' + cls}><path d="M16 7h6v6"></path><path d="m22 7-8.5 8.5-5-5L2 17"></path></svg>`;
51
+
52
+ export default function ChartRadialSimple() {
53
+ return html`
54
+ <div data-slot="card" class=${cn(cardClass(), 'flex flex-col')}>
55
+ <div data-slot="card-header" class=${cn(cardHeaderClass(), 'items-center pb-0')}>
56
+ <div data-slot="card-title" class=${cardTitleClass()}>Radial Chart</div>
57
+ <div data-slot="card-description" class=${cardDescriptionClass()}>January - June 2024</div>
58
+ </div>
59
+ <div data-slot="card-content" class=${cn(cardContentClass(), 'flex-1 pb-0')}>
60
+ ${radialBarChart({
61
+ config: chartConfig,
62
+ class: 'mx-auto aspect-square max-h-[250px]',
63
+ data: chartData,
64
+ title: 'Visitors by browser',
65
+ innerRadius: 30,
66
+ outerRadius: 110,
67
+ tooltip: { cursor: false, hideLabel: true, nameKey: 'browser' },
68
+ bars: [{ dataKey: 'visitors', background: true }],
69
+ })}
70
+ </div>
71
+ <div data-slot="card-footer" class=${cn(cardFooterClass(), 'flex-col gap-2 text-sm')}>
72
+ <div class="flex items-center gap-2 leading-none font-medium">
73
+ Trending up by 5.2% this month ${TrendingUp('h-4 w-4')}
74
+ </div>
75
+ <div class="leading-none text-muted-foreground">Showing total visitors for the last 6 months</div>
76
+ </div>
77
+ </div>
78
+ `;
79
+ }
@@ -0,0 +1,69 @@
1
+ /**
2
+ * A radial chart with stacked sections, a chart block ported from shadcn/ui's chart-radial-stacked.
3
+ *
4
+ * Installed by `npx @webjsdev/ui add chart-radial-stacked` at
5
+ * `components/charts/chart-radial-stacked.ts`. It is app code you own, so edit it
6
+ * freely, and render it from any page with `${ChartRadialStacked()}`.
7
+ */
8
+ import { html, svg } from '@webjsdev/core';
9
+ import { cn } from '../../lib/utils.ts';
10
+ import {
11
+ cardClass, cardContentClass, cardDescriptionClass, cardFooterClass, cardHeaderClass, cardTitleClass,
12
+ } from '../../components/card.ts';
13
+ import { radialBarChart, type ChartConfig } from '../../components/chart.ts';
14
+
15
+ const chartData = [{ month: 'january', mobile: 570, desktop: 1260 }];
16
+
17
+ const chartConfig = {
18
+ desktop: {
19
+ label: 'Desktop',
20
+ color: 'var(--chart-1)',
21
+ },
22
+ mobile: {
23
+ label: 'Mobile',
24
+ color: 'var(--chart-2)',
25
+ },
26
+ } satisfies ChartConfig;
27
+
28
+ // lucide's trending-up, the icon in shadcn's footer.
29
+ const TrendingUp = (cls = '') => svg`<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class=${'lucide lucide-trending-up ' + cls}><path d="M16 7h6v6"></path><path d="m22 7-8.5 8.5-5-5L2 17"></path></svg>`;
30
+
31
+ const totalVisitors = chartData[0].desktop + chartData[0].mobile;
32
+
33
+ export default function ChartRadialStacked() {
34
+ return html`
35
+ <div data-slot="card" class=${cn(cardClass(), 'flex flex-col')}>
36
+ <div data-slot="card-header" class=${cn(cardHeaderClass(), 'items-center pb-0')}>
37
+ <div data-slot="card-title" class=${cardTitleClass()}>Radial Chart - Stacked</div>
38
+ <div data-slot="card-description" class=${cardDescriptionClass()}>January - June 2024</div>
39
+ </div>
40
+ <div data-slot="card-content" class=${cn(cardContentClass(), 'flex flex-1 items-center pb-0')}>
41
+ ${radialBarChart({
42
+ config: chartConfig,
43
+ class: 'mx-auto aspect-square w-full max-w-[250px]',
44
+ data: chartData,
45
+ title: 'Desktop and mobile visitors, January',
46
+ endAngle: 180,
47
+ innerRadius: 80,
48
+ outerRadius: 110,
49
+ tooltip: { cursor: false, hideLabel: true },
50
+ center: ({ cx, cy }) => svg`
51
+ <text x=${cx} y=${cy} text-anchor="middle">
52
+ <tspan x=${cx} y=${cy - 16} class="fill-foreground text-2xl font-bold">${totalVisitors.toLocaleString('en-US')}</tspan>
53
+ <tspan x=${cx} y=${cy + 4} class="fill-muted-foreground">Visitors</tspan>
54
+ </text>`,
55
+ bars: [
56
+ { dataKey: 'mobile', fill: 'var(--color-mobile)', stackId: 'a', cornerRadius: 5, class: 'stroke-transparent stroke-2' },
57
+ { dataKey: 'desktop', stackId: 'a', cornerRadius: 5, fill: 'var(--color-desktop)', class: 'stroke-transparent stroke-2' },
58
+ ],
59
+ })}
60
+ </div>
61
+ <div data-slot="card-footer" class=${cn(cardFooterClass(), 'flex-col gap-2 text-sm')}>
62
+ <div class="flex items-center gap-2 leading-none font-medium">
63
+ Trending up by 5.2% this month ${TrendingUp('h-4 w-4')}
64
+ </div>
65
+ <div class="leading-none text-muted-foreground">Showing total visitors for the last 6 months</div>
66
+ </div>
67
+ </div>
68
+ `;
69
+ }
@@ -0,0 +1,82 @@
1
+ /**
2
+ * A radial chart with text, a chart block ported from shadcn/ui's chart-radial-text.
3
+ *
4
+ * Installed by `npx @webjsdev/ui add chart-radial-text` at
5
+ * `components/charts/chart-radial-text.ts`. It is app code you own, so edit it
6
+ * freely, and render it from any page with `${ChartRadialText()}`.
7
+ */
8
+ import { html, svg } from '@webjsdev/core';
9
+ import { cn } from '../../lib/utils.ts';
10
+ import {
11
+ cardClass, cardContentClass, cardDescriptionClass, cardFooterClass, cardHeaderClass, cardTitleClass,
12
+ } from '../../components/card.ts';
13
+ import { radialBarChart, type ChartConfig } from '../../components/chart.ts';
14
+
15
+ const chartData = [
16
+ { browser: 'safari', visitors: 200, fill: 'var(--color-safari)' },
17
+ ];
18
+
19
+ const chartConfig = {
20
+ visitors: {
21
+ label: 'Visitors',
22
+ },
23
+ chrome: {
24
+ label: 'Chrome',
25
+ color: 'var(--chart-1)',
26
+ },
27
+ safari: {
28
+ label: 'Safari',
29
+ color: 'var(--chart-2)',
30
+ },
31
+ firefox: {
32
+ label: 'Firefox',
33
+ color: 'var(--chart-3)',
34
+ },
35
+ edge: {
36
+ label: 'Edge',
37
+ color: 'var(--chart-4)',
38
+ },
39
+ other: {
40
+ label: 'Other',
41
+ color: 'var(--chart-5)',
42
+ },
43
+ } satisfies ChartConfig;
44
+
45
+ // lucide's trending-up, the icon in shadcn's footer.
46
+ const TrendingUp = (cls = '') => svg`<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class=${'lucide lucide-trending-up ' + cls}><path d="M16 7h6v6"></path><path d="m22 7-8.5 8.5-5-5L2 17"></path></svg>`;
47
+
48
+ export default function ChartRadialText() {
49
+ return html`
50
+ <div data-slot="card" class=${cn(cardClass(), 'flex flex-col')}>
51
+ <div data-slot="card-header" class=${cn(cardHeaderClass(), 'items-center pb-0')}>
52
+ <div data-slot="card-title" class=${cardTitleClass()}>Radial Chart - Text</div>
53
+ <div data-slot="card-description" class=${cardDescriptionClass()}>January - June 2024</div>
54
+ </div>
55
+ <div data-slot="card-content" class=${cn(cardContentClass(), 'flex-1 pb-0')}>
56
+ ${radialBarChart({
57
+ config: chartConfig,
58
+ class: 'mx-auto aspect-square max-h-[250px]',
59
+ data: chartData,
60
+ title: 'Safari visitors',
61
+ startAngle: 0,
62
+ endAngle: 250,
63
+ outerRadius: 90,
64
+ innerRadius: 80,
65
+ grid: { gridType: 'circle', radialLines: false, stroke: 'none', class: 'first:fill-muted last:fill-background', polarRadius: [90, 80] },
66
+ center: ({ cx, cy }) => svg`
67
+ <text x=${cx} y=${cy} text-anchor="middle" dominant-baseline="middle">
68
+ <tspan x=${cx} y=${cy} class="fill-foreground text-4xl font-bold">${chartData[0].visitors.toLocaleString('en-US')}</tspan>
69
+ <tspan x=${cx} y=${cy + 24} class="fill-muted-foreground">Visitors</tspan>
70
+ </text>`,
71
+ bars: [{ dataKey: 'visitors', background: true, cornerRadius: 10 }],
72
+ })}
73
+ </div>
74
+ <div data-slot="card-footer" class=${cn(cardFooterClass(), 'flex-col gap-2 text-sm')}>
75
+ <div class="flex items-center gap-2 leading-none font-medium">
76
+ Trending up by 5.2% this month ${TrendingUp('h-4 w-4')}
77
+ </div>
78
+ <div class="leading-none text-muted-foreground">Showing total visitors for the last 6 months</div>
79
+ </div>
80
+ </div>
81
+ `;
82
+ }
@@ -0,0 +1,84 @@
1
+ /**
2
+ * A stacked bar chart whose tooltip adds a total row, a chart block ported from shadcn/ui's chart-tooltip-advanced.
3
+ *
4
+ * Installed by `npx @webjsdev/ui add chart-tooltip-advanced` at
5
+ * `components/charts/chart-tooltip-advanced.ts`. It is app code you own, so edit it
6
+ * freely, and render it from any page with `${ChartTooltipAdvanced()}`.
7
+ */
8
+ import { html } from '@webjsdev/core';
9
+ import {
10
+ cardClass, cardContentClass, cardDescriptionClass, cardHeaderClass, cardTitleClass,
11
+ } from '../../components/card.ts';
12
+ import { barChart, type ChartConfig } from '../../components/chart.ts';
13
+
14
+ const chartData = [
15
+ { date: '2024-07-15', running: 450, swimming: 300 },
16
+ { date: '2024-07-16', running: 380, swimming: 420 },
17
+ { date: '2024-07-17', running: 520, swimming: 120 },
18
+ { date: '2024-07-18', running: 140, swimming: 550 },
19
+ { date: '2024-07-19', running: 600, swimming: 350 },
20
+ { date: '2024-07-20', running: 480, swimming: 400 },
21
+ ];
22
+
23
+ const chartConfig = {
24
+ running: {
25
+ label: 'Running',
26
+ color: 'var(--chart-1)',
27
+ },
28
+ swimming: {
29
+ label: 'Swimming',
30
+ color: 'var(--chart-2)',
31
+ },
32
+ } satisfies ChartConfig;
33
+
34
+ export default function ChartTooltipAdvanced() {
35
+ return html`
36
+ <div data-slot="card" class=${cardClass()}>
37
+ <div data-slot="card-header" class=${cardHeaderClass()}>
38
+ <div data-slot="card-title" class=${cardTitleClass()}>Tooltip - Advanced</div>
39
+ <div data-slot="card-description" class=${cardDescriptionClass()}>Tooltip with custom formatter and total.</div>
40
+ </div>
41
+ <div data-slot="card-content" class=${cardContentClass()}>
42
+ ${barChart({
43
+ config: chartConfig,
44
+ data: chartData,
45
+ title: 'Running and swimming by day',
46
+ xAxis: {
47
+ dataKey: 'date',
48
+ tickLine: false,
49
+ tickMargin: 10,
50
+ axisLine: false,
51
+ tickFormatter: (value) => new Date(String(value)).toLocaleDateString('en-US', { weekday: 'short', timeZone: 'UTC' }),
52
+ },
53
+ bars: [
54
+ { dataKey: 'running', stackId: 'a', fill: 'var(--color-running)', radius: [0, 0, 4, 4] },
55
+ { dataKey: 'swimming', stackId: 'a', fill: 'var(--color-swimming)', radius: [4, 4, 0, 0] },
56
+ ],
57
+ tooltip: {
58
+ hideLabel: true,
59
+ class: 'w-[180px]',
60
+ // Each row with its colour, name and kcal, and a total under the last.
61
+ formatter: (value, name, item, index) => html`
62
+ <div class="h-2.5 w-2.5 shrink-0 rounded-[2px] bg-(--color-bg)" style=${`--color-bg: var(--color-${name})`}></div>
63
+ ${chartConfig[name as keyof typeof chartConfig]?.label || name}
64
+ <div class="ml-auto flex items-baseline gap-0.5 font-mono font-medium text-foreground tabular-nums">
65
+ ${value}
66
+ <span class="font-normal text-muted-foreground">kcal</span>
67
+ </div>
68
+ ${index === 1
69
+ ? html`<div class="mt-1.5 flex basis-full items-center border-t pt-1.5 text-xs font-medium text-foreground">
70
+ Total
71
+ <div class="ml-auto flex items-baseline gap-0.5 font-mono font-medium text-foreground tabular-nums">
72
+ ${Number(item.payload.running) + Number(item.payload.swimming)}
73
+ <span class="font-normal text-muted-foreground">kcal</span>
74
+ </div>
75
+ </div>`
76
+ : ''}`,
77
+ cursor: false,
78
+ defaultIndex: 1,
79
+ },
80
+ })}
81
+ </div>
82
+ </div>
83
+ `;
84
+ }
@@ -0,0 +1,62 @@
1
+ /**
2
+ * A stacked bar chart with the default tooltip, a chart block ported from shadcn/ui's chart-tooltip-default.
3
+ *
4
+ * Installed by `npx @webjsdev/ui add chart-tooltip-default` at
5
+ * `components/charts/chart-tooltip-default.ts`. It is app code you own, so edit it
6
+ * freely, and render it from any page with `${ChartTooltipDefault()}`.
7
+ */
8
+ import { html } from '@webjsdev/core';
9
+ import {
10
+ cardClass, cardContentClass, cardDescriptionClass, cardHeaderClass, cardTitleClass,
11
+ } from '../../components/card.ts';
12
+ import { barChart, type ChartConfig } from '../../components/chart.ts';
13
+
14
+ const chartData = [
15
+ { date: '2024-07-15', running: 450, swimming: 300 },
16
+ { date: '2024-07-16', running: 380, swimming: 420 },
17
+ { date: '2024-07-17', running: 520, swimming: 120 },
18
+ { date: '2024-07-18', running: 140, swimming: 550 },
19
+ { date: '2024-07-19', running: 600, swimming: 350 },
20
+ { date: '2024-07-20', running: 480, swimming: 400 },
21
+ ];
22
+
23
+ const chartConfig = {
24
+ running: {
25
+ label: 'Running',
26
+ color: 'var(--chart-1)',
27
+ },
28
+ swimming: {
29
+ label: 'Swimming',
30
+ color: 'var(--chart-2)',
31
+ },
32
+ } satisfies ChartConfig;
33
+
34
+ export default function ChartTooltipDefault() {
35
+ return html`
36
+ <div data-slot="card" class=${cardClass()}>
37
+ <div data-slot="card-header" class=${cardHeaderClass()}>
38
+ <div data-slot="card-title" class=${cardTitleClass()}>Tooltip - Default</div>
39
+ <div data-slot="card-description" class=${cardDescriptionClass()}>Default tooltip with ChartTooltipContent.</div>
40
+ </div>
41
+ <div data-slot="card-content" class=${cardContentClass()}>
42
+ ${barChart({
43
+ config: chartConfig,
44
+ data: chartData,
45
+ title: 'Running and swimming by day',
46
+ xAxis: {
47
+ dataKey: 'date',
48
+ tickLine: false,
49
+ tickMargin: 10,
50
+ axisLine: false,
51
+ tickFormatter: (value) => new Date(String(value)).toLocaleDateString('en-US', { weekday: 'short', timeZone: 'UTC' }),
52
+ },
53
+ bars: [
54
+ { dataKey: 'running', stackId: 'a', fill: 'var(--color-running)', radius: [0, 0, 4, 4] },
55
+ { dataKey: 'swimming', stackId: 'a', fill: 'var(--color-swimming)', radius: [4, 4, 0, 0] },
56
+ ],
57
+ tooltip: { cursor: false, defaultIndex: 1 },
58
+ })}
59
+ </div>
60
+ </div>
61
+ `;
62
+ }
@@ -0,0 +1,75 @@
1
+ /**
2
+ * A stacked bar chart whose tooltip formats each row, a chart block ported from shadcn/ui's chart-tooltip-formatter.
3
+ *
4
+ * Installed by `npx @webjsdev/ui add chart-tooltip-formatter` at
5
+ * `components/charts/chart-tooltip-formatter.ts`. It is app code you own, so edit it
6
+ * freely, and render it from any page with `${ChartTooltipFormatter()}`.
7
+ */
8
+ import { html } from '@webjsdev/core';
9
+ import {
10
+ cardClass, cardContentClass, cardDescriptionClass, cardHeaderClass, cardTitleClass,
11
+ } from '../../components/card.ts';
12
+ import { barChart, type ChartConfig } from '../../components/chart.ts';
13
+
14
+ const chartData = [
15
+ { date: '2024-07-15', running: 450, swimming: 300 },
16
+ { date: '2024-07-16', running: 380, swimming: 420 },
17
+ { date: '2024-07-17', running: 520, swimming: 120 },
18
+ { date: '2024-07-18', running: 140, swimming: 550 },
19
+ { date: '2024-07-19', running: 600, swimming: 350 },
20
+ { date: '2024-07-20', running: 480, swimming: 400 },
21
+ ];
22
+
23
+ const chartConfig = {
24
+ running: {
25
+ label: 'Running',
26
+ color: 'var(--chart-1)',
27
+ },
28
+ swimming: {
29
+ label: 'Swimming',
30
+ color: 'var(--chart-2)',
31
+ },
32
+ } satisfies ChartConfig;
33
+
34
+ export default function ChartTooltipFormatter() {
35
+ return html`
36
+ <div data-slot="card" class=${cardClass()}>
37
+ <div data-slot="card-header" class=${cardHeaderClass()}>
38
+ <div data-slot="card-title" class=${cardTitleClass()}>Tooltip - Formatter</div>
39
+ <div data-slot="card-description" class=${cardDescriptionClass()}>Tooltip with custom formatter .</div>
40
+ </div>
41
+ <div data-slot="card-content" class=${cardContentClass()}>
42
+ ${barChart({
43
+ config: chartConfig,
44
+ data: chartData,
45
+ title: 'Running and swimming by day',
46
+ xAxis: {
47
+ dataKey: 'date',
48
+ tickLine: false,
49
+ tickMargin: 10,
50
+ axisLine: false,
51
+ tickFormatter: (value) => new Date(String(value)).toLocaleDateString('en-US', { weekday: 'short', timeZone: 'UTC' }),
52
+ },
53
+ bars: [
54
+ { dataKey: 'running', stackId: 'a', fill: 'var(--color-running)', radius: [0, 0, 4, 4] },
55
+ { dataKey: 'swimming', stackId: 'a', fill: 'var(--color-swimming)', radius: [4, 4, 0, 0] },
56
+ ],
57
+ tooltip: {
58
+ hideLabel: true,
59
+ // Each row as the series name and its value in kcal.
60
+ formatter: (value, name) => html`
61
+ <div class="flex min-w-[130px] items-center text-xs text-muted-foreground">
62
+ ${chartConfig[name as keyof typeof chartConfig]?.label || name}
63
+ <div class="ml-auto flex items-baseline gap-0.5 font-mono font-medium text-foreground tabular-nums">
64
+ ${value}
65
+ <span class="font-normal text-muted-foreground">kcal</span>
66
+ </div>
67
+ </div>`,
68
+ cursor: false,
69
+ defaultIndex: 1,
70
+ },
71
+ })}
72
+ </div>
73
+ </div>
74
+ `;
75
+ }