@webjsdev/ui 0.3.17 → 0.5.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 (360) hide show
  1. package/README.md +67 -8
  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 +644 -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/dom.ts +3 -4
  323. package/packages/registry/lib/icons-hugeicons.ts +955 -0
  324. package/packages/registry/lib/icons-phosphor.ts +955 -0
  325. package/packages/registry/lib/icons-remixicon.ts +955 -0
  326. package/packages/registry/lib/icons-tabler.ts +955 -0
  327. package/packages/registry/lib/icons.ts +768 -0
  328. package/packages/registry/lib/utils.ts +52 -8
  329. package/packages/registry/registry.json +4056 -72
  330. package/packages/registry/styles/shadcn-tailwind.css +654 -0
  331. package/packages/registry/styles/style-luma.css +1987 -0
  332. package/packages/registry/styles/style-lyra.css +1965 -0
  333. package/packages/registry/styles/style-maia.css +1987 -0
  334. package/packages/registry/styles/style-mira.css +1992 -0
  335. package/packages/registry/styles/style-new-york.css +1597 -0
  336. package/packages/registry/styles/style-nova.css +1990 -0
  337. package/packages/registry/styles/style-rhea.css +1987 -0
  338. package/packages/registry/styles/style-sera.css +1977 -0
  339. package/packages/registry/styles/style-vega.css +1990 -0
  340. package/packages/registry/styles/supplement.json +54 -0
  341. package/packages/registry/styles/tw-animate.css +6 -0
  342. package/packages/registry/themes/base-colors.js +8 -2
  343. package/packages/registry/themes/fonts.js +120 -0
  344. package/packages/registry/themes/index.css +2 -0
  345. package/packages/registry/themes/items.js +61 -0
  346. package/packages/registry/themes/preset.js +302 -0
  347. package/packages/registry/themes/themes.js +1193 -0
  348. package/src/commands/add.js +266 -14
  349. package/src/commands/diff.js +34 -20
  350. package/src/commands/info.js +7 -0
  351. package/src/commands/init.js +127 -10
  352. package/src/commands/list.js +43 -11
  353. package/src/commands/view.js +33 -5
  354. package/src/lint/rules/no-restyle.js +1 -1
  355. package/src/registry/extract.js +194 -5
  356. package/src/registry/icons.js +31 -0
  357. package/src/registry/local.js +15 -1
  358. package/src/registry/schema.js +13 -0
  359. package/src/registry/style-bake.js +506 -0
  360. package/src/utils/theme.js +110 -21
package/README.md CHANGED
@@ -100,19 +100,78 @@ step. Pass `--overwrite` to reset those instead.
100
100
  - `components.json`, your project's UI config (aliases, base color, Tailwind path)
101
101
  - `lib/utils/cn.ts`, the `cn()` class-merge helper, and `lib/utils/dom.ts`
102
102
  beside it for the client-only `onBeforeCache()` helper
103
- - Tailwind tokens + CSS variables appended to `styles/globals.css`
103
+ - Tailwind tokens + CSS variables appended to `styles/globals.css`, between a
104
+ `/* @webjsdev/ui theme */` and a `/* @webjsdev/ui theme end */` marker
105
+
106
+ ### Presets, styles and icon libraries
107
+
108
+ The configurator at [webjs.dev/ui/create](https://webjs.dev/ui/create) builds a
109
+ whole design system (style, base color, theme, chart color, font, radius, icon
110
+ library) and prints one command for it:
111
+
112
+ ```sh
113
+ npx @webjsdev/ui init --preset b0
114
+ ```
115
+
116
+ That writes the style and icon library into `components.json`, the chosen
117
+ icon library to `lib/utils/icons.ts`, and the theme, REPLACING the block
118
+ between the two markers in place, so running it again with another code
119
+ switches the design system without touching the rest of your stylesheet. A
120
+ block from before the end marker existed is left alone and reported. The code
121
+ is shadcn/ui's preset format, so a shadcn code works too. The site serves
122
+ what a code installs at `/ui/init?preset=<code>` (JSON) and
123
+ `/ui/init/md?preset=<code>` (step-by-step markdown).
124
+
125
+ One choice at a time works the same way:
126
+
127
+ ```sh
128
+ npx @webjsdev/ui init --style nova # one of the nine styles the bake applies
129
+ npx @webjsdev/ui init --icons tabler # lucide, tabler, hugeicons, phosphor, remixicon
130
+ ```
131
+
132
+ Every icon library exports the same function names (`ChevronDownIcon('size-4')`
133
+ and so on), so switching libraries changes no import. The themes and fonts
134
+ are registry items too: `theme-<name>` for shadcn's 24 themes and
135
+ `font-<name>` / `font-heading-<name>` for its 26 font families.
104
136
 
105
137
  ## What `add` does
106
138
 
107
139
  Copies the component's `.ts` source into `components/ui/<name>.ts` (or your
108
140
  configured alias). Resolves transitive deps via `registryDependencies` and
109
- auto-installs npm deps like `@floating-ui/dom` for popover-style components. For
141
+ installs any npm dependency the app's `package.json` does not already declare. For
110
142
  a Tier-1 class-helper component it copies the helpers plus a lean header and a
111
143
  one-line pointer, and leaves the worked structural example OUT of the file (get
112
144
  it on demand with `npx @webjsdev/ui view <name>`, which is what the pointer it
113
145
  leaves behind says too). It also self-heals the theme tokens if
114
146
  they are missing.
115
147
 
148
+ A block (a ready-made view such as a dashboard or a chart, registry type
149
+ `registry:block`) installs the same way. Each of its files lands at its own
150
+ target under the app (`app/...`, `modules/...`, `components/...`), and every
151
+ relative import in it is rewritten to where the imported file landed: a kit
152
+ component into your ui alias, the `cn()` helper to your utils alias, another
153
+ file of the same block to its own target. A block's files are app code you
154
+ own, so `add` never replaces one that exists unless you pass `--overwrite`
155
+ (`--yes` alone keeps it), and it prints the list of files it wrote. A block or
156
+ component that needs design tokens your theme may lack (the sidebar's
157
+ `--sidebar-*`, a chart's `--chart-*`) carries them, and `add` adds the missing
158
+ ones to your stylesheet without touching a token you already define.
159
+
160
+ Before hand-writing a login or signup page, an app sidebar shell, a dashboard
161
+ or a chart, list the blocks and install the closest one:
162
+
163
+ ```sh
164
+ npx @webjsdev/ui list --type block # every block, with its description
165
+ npx @webjsdev/ui view login-03 --files-only # what it installs, and where
166
+ npx @webjsdev/ui add login-03 # app/login/page.ts + components/login-form.ts
167
+ ```
168
+
169
+ The kit ships shadcn's ten authentication blocks today (`login-01` to
170
+ `login-05`, `signup-01` to `signup-05`). Each page is a server-rendered page
171
+ module and each form a real `<form>` built from the kit's class helpers, with
172
+ no JavaScript. The form has no `action` yet: bind a server action
173
+ (`<form action=${signIn}>`) when you wire it up.
174
+
116
175
  The install runs with your project's package manager. `add` looks for a
117
176
  lockfile in the current directory and then each parent, stopping at the
118
177
  workspace root, so an app inside a monorepo uses the root's lockfile:
@@ -129,12 +188,12 @@ always compares against the live upstream.
129
188
 
130
189
  | Command | Effect |
131
190
  |---|---|
132
- | `webjsui init` | Initialize a project (writes `components.json`, `lib/utils/cn.ts`, the theme tokens). Preserves an existing project's settings and helper files; `-o, --overwrite` resets them. Exits non-zero if the tokens cannot be written. |
133
- | `webjsui add <names...>` | Add components (copies helpers + a pointer for Tier-1, self-heals theme tokens) |
134
- | `webjsui list` | List all available components |
135
- | `webjsui view <name>` | Print a component's projected view (helpers + paste-ready example) and full source |
136
- | `webjsui diff [name]` | Show diff between your local copy and the live registry |
137
- | `webjsui info` | Print project diagnostics |
191
+ | `webjsui init` | Initialize a project (writes `components.json`, `lib/utils/cn.ts`, the theme tokens). Preserves an existing project's settings and helper files; `-o, --overwrite` resets them and replaces the theme block. `--preset <code>`, `--style <name>` and `--icons <library>` apply a design system or one choice of it. Exits non-zero if the tokens cannot be written. |
192
+ | `webjsui add <names...>` | Add components or blocks (copies helpers + a pointer for Tier-1, writes a block's files to their targets, self-heals theme tokens) |
193
+ | `webjsui list [filter]` | List the components, blocks and charts in three labelled groups. `--type <ui\|block\|chart\|all>`, `--category <name>`, and `--json` for one compact array of `{ name, type, categories, description }` |
194
+ | `webjsui view <name>` | A component: its projected view (helpers + paste-ready example) and full source. A block: its description, categories, dependencies, install command and files with targets, then the sources (`--files-only` stops before them, `--json` prints one document) |
195
+ | `webjsui diff [name]` | Show diff between your local copy and the live registry, installed blocks included |
196
+ | `webjsui info` | Print project diagnostics, with the kit's component, block and chart counts |
138
197
  | `webjsui build` | (For registry authors) Compile a custom registry |
139
198
  | `webjsui lint` | Opt-in design-system linter. Reports raw palette colors, arbitrary values and classes composed over a kit helper, at the line, with a message built from your own theme tokens and helper variants. Configured by a `lint` block in `components.json`; with no block it reports nothing and exits 0. `--json` for an agent loop, `--max-warnings <n>` to pin a count. |
140
199
 
@@ -0,0 +1,349 @@
1
+ # Third-party notices
2
+
3
+ `@webjsdev/ui` and the WebJs UI site at webjs.dev/ui include work derived from
4
+ the projects below. Each is used under the license reproduced here.
5
+
6
+ ## shadcn/ui
7
+
8
+ The component design, the component API (variant names, sizes, the
9
+ sub-component breakdown, the data attributes), the style skins, the themes,
10
+ the blocks and charts, and the layout of the webjs.dev/ui site are ported from
11
+ shadcn/ui (https://github.com/shadcn-ui/ui). The site also serves some of
12
+ shadcn/ui's own assets unmodified: the avatars in website/public/avatars/
13
+ (02.png, 03.png, 10.png, from apps/v4/public/avatars) and the Sera page
14
+ screenshots in website/public/images/ (sera-0*.png, from apps/v4/public/images).
15
+
16
+ ```text
17
+ MIT License
18
+
19
+ Copyright (c) 2023 shadcn
20
+
21
+ Permission is hereby granted, free of charge, to any person obtaining a copy
22
+ of this software and associated documentation files (the "Software"), to deal
23
+ in the Software without restriction, including without limitation the rights
24
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
25
+ copies of the Software, and to permit persons to whom the Software is
26
+ furnished to do so, subject to the following conditions:
27
+
28
+ The above copyright notice and this permission notice shall be included in all
29
+ copies or substantial portions of the Software.
30
+
31
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
32
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
33
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
34
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
35
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
36
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
37
+ SOFTWARE.
38
+ ```
39
+
40
+ ## tw-animate-css
41
+
42
+ The enter and exit animation utilities the ported styles use are vendored from
43
+ tw-animate-css 1.4.0 (https://github.com/Wombosvideo/tw-animate-css) as
44
+ `packages/registry/styles/tw-animate.css`.
45
+
46
+ ```text
47
+ MIT License
48
+
49
+ Copyright (c) 2025 Wombosvideo
50
+
51
+ Permission is hereby granted, free of charge, to any person obtaining a copy
52
+ of this software and associated documentation files (the "Software"), to deal
53
+ in the Software without restriction, including without limitation the rights
54
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
55
+ copies of the Software, and to permit persons to whom the Software is
56
+ furnished to do so, subject to the following conditions:
57
+
58
+ The above copyright notice and this permission notice shall be included in all
59
+ copies or substantial portions of the Software.
60
+
61
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
62
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
63
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
64
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
65
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
66
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
67
+ SOFTWARE.
68
+ ```
69
+
70
+ ## Lucide
71
+
72
+ The inline SVG icons are drawn from Lucide (https://lucide.dev).
73
+
74
+ ```text
75
+ ISC License
76
+
77
+ Copyright (c) for portions of Lucide are held by Cole Bemis 2013-2022 as part of Feather (MIT). All other copyright (c) for Lucide are held by Lucide Contributors 2022.
78
+
79
+ Permission to use, copy, modify, and/or distribute this software for any
80
+ purpose with or without fee is hereby granted, provided that the above
81
+ copyright notice and this permission notice appear in all copies.
82
+
83
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
84
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
85
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
86
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
87
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
88
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
89
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
90
+ ```
91
+
92
+ ## Hugeicons
93
+
94
+ The webjs.dev/ui site draws the icons on its home page and header from
95
+ Hugeicons Free (https://hugeicons.com), the library shadcn's own site uses,
96
+ generated from `@hugeicons/core-free-icons` 4.4.0 into inline SVG.
97
+
98
+ ```text
99
+ MIT License
100
+
101
+ Copyright (c) 2025 Hugeicons
102
+
103
+ Permission is hereby granted, free of charge, to any person obtaining a copy
104
+ of this software and associated documentation files (the "Software"), to deal
105
+ in the Software without restriction, including without limitation the rights
106
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
107
+ copies of the Software, and to permit persons to whom the Software is
108
+ furnished to do so, subject to the following conditions:
109
+
110
+ The above copyright notice and this permission notice shall be included in all
111
+ copies or substantial portions of the Software.
112
+
113
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
114
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
115
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
116
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
117
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
118
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
119
+ SOFTWARE.
120
+ ```
121
+
122
+ ## Tabler Icons
123
+
124
+ The webjs.dev/ui site draws the Tabler icons some of shadcn's demos import
125
+ (https://tabler.io/icons), generated from `@tabler/icons` 3.34.1 into inline
126
+ SVG by `website/scripts/gen-tabler.mjs`.
127
+
128
+ ```text
129
+ MIT License
130
+
131
+ Copyright (c) 2020-2024 Paweł Kuna
132
+
133
+ Permission is hereby granted, free of charge, to any person obtaining a copy
134
+ of this software and associated documentation files (the "Software"), to deal
135
+ in the Software without restriction, including without limitation the rights
136
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
137
+ copies of the Software, and to permit persons to whom the Software is
138
+ furnished to do so, subject to the following conditions:
139
+
140
+ The above copyright notice and this permission notice shall be included in all
141
+ copies or substantial portions of the Software.
142
+
143
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
144
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
145
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
146
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
147
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
148
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
149
+ SOFTWARE.
150
+ ```
151
+
152
+ ## The kit's icon libraries
153
+
154
+ `packages/registry/lib/icons*.ts`, the five icon libraries an app picks with
155
+ `webjsui init --icons`, are generated by `scripts/gen-icons.mjs` from the
156
+ packages below, limited to the glyphs shadcn/ui's components name. Lucide
157
+ (`lucide` 1.70.0), Hugeicons (`@hugeicons/core-free-icons` 4.4.0) and Tabler
158
+ Icons (`@tabler/icons` 3.50.0) are under the licenses above. The other two:
159
+
160
+ ### Phosphor Icons
161
+
162
+ `@phosphor-icons/core` 2.1.1, the regular weight (https://phosphoricons.com).
163
+
164
+ ```text
165
+ MIT License
166
+
167
+ Copyright (c) 2023 Phosphor Icons
168
+
169
+ Permission is hereby granted, free of charge, to any person obtaining a copy
170
+ of this software and associated documentation files (the "Software"), to deal
171
+ in the Software without restriction, including without limitation the rights
172
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
173
+ copies of the Software, and to permit persons to whom the Software is
174
+ furnished to do so, subject to the following conditions:
175
+
176
+ The above copyright notice and this permission notice shall be included in all
177
+ copies or substantial portions of the Software.
178
+
179
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
180
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
181
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
182
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
183
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
184
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
185
+ SOFTWARE.
186
+ ```
187
+
188
+ ### Remix Icon
189
+
190
+ `remixicon` 4.8.0 (https://remixicon.com), Copyright (c) Remix Design,
191
+ licensed under the Apache License, Version 2.0
192
+ (https://www.apache.org/licenses/LICENSE-2.0). The version is pinned: 4.8.0
193
+ is the last release licensed under Apache-2.0, and later releases ship the
194
+ more restrictive Remix Icon License v1.0. The SVG path data is reproduced
195
+ unmodified inside the generated functions.
196
+
197
+ ## Geist and Geist Mono
198
+
199
+ The webjs.dev/ui site self-hosts the Geist and Geist Mono typefaces
200
+ (https://github.com/vercel/geist-font).
201
+
202
+ ```text
203
+ Copyright 2024 The Geist Project Authors (https://github.com/vercel/geist-font)
204
+
205
+ This Font Software is licensed under the SIL Open Font License, Version 1.1.
206
+ This license is copied below, and is also available with a FAQ at:
207
+ http://scripts.sil.org/OFL
208
+
209
+ -----------------------------------------------------------
210
+ SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
211
+ -----------------------------------------------------------
212
+
213
+ PREAMBLE
214
+ The goals of the Open Font License (OFL) are to stimulate worldwide
215
+ development of collaborative font projects, to support the font creation
216
+ efforts of academic and linguistic communities, and to provide a free and
217
+ open framework in which fonts may be shared and improved in partnership
218
+ with others.
219
+
220
+ The OFL allows the licensed fonts to be used, studied, modified and
221
+ redistributed freely as long as they are not sold by themselves. The
222
+ fonts, including any derivative works, can be bundled, embedded,
223
+ redistributed and/or sold with any software provided that any reserved
224
+ names are not used by derivative works. The fonts and derivatives,
225
+ however, cannot be released under any other type of license. The
226
+ requirement for fonts to remain under this license does not apply
227
+ to any document created using the fonts or their derivatives.
228
+
229
+ DEFINITIONS
230
+ "Font Software" refers to the set of files released by the Copyright
231
+ Holder(s) under this license and clearly marked as such. This may
232
+ include source files, build scripts and documentation.
233
+
234
+ "Reserved Font Name" refers to any names specified as such after the
235
+ copyright statement(s).
236
+
237
+ "Original Version" refers to the collection of Font Software components as
238
+ distributed by the Copyright Holder(s).
239
+
240
+ "Modified Version" refers to any derivative made by adding to, deleting,
241
+ or substituting -- in part or in whole -- any of the components of the
242
+ Original Version, by changing formats or by porting the Font Software to a
243
+ new environment.
244
+
245
+ "Author" refers to any designer, engineer, programmer, technical
246
+ writer or other person who contributed to the Font Software.
247
+
248
+ PERMISSION AND CONDITIONS
249
+ Permission is hereby granted, free of charge, to any person obtaining
250
+ a copy of the Font Software, to use, study, copy, merge, embed, modify,
251
+ redistribute, and sell modified and unmodified copies of the Font
252
+ Software, subject to the following conditions:
253
+
254
+ 1) Neither the Font Software nor any of its individual components,
255
+ in Original or Modified Versions, may be sold by itself.
256
+
257
+ 2) Original or Modified Versions of the Font Software may be bundled,
258
+ redistributed and/or sold with any software, provided that each copy
259
+ contains the above copyright notice and this license. These can be
260
+ included either as stand-alone text files, human-readable headers or
261
+ in the appropriate machine-readable metadata fields within text or
262
+ binary files as long as those fields can be easily viewed by the user.
263
+
264
+ 3) No Modified Version of the Font Software may use the Reserved Font
265
+ Name(s) unless explicit written permission is granted by the corresponding
266
+ Copyright Holder. This restriction only applies to the primary font name as
267
+ presented to the users.
268
+
269
+ 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
270
+ Software shall not be used to promote, endorse or advertise any
271
+ Modified Version, except to acknowledge the contribution(s) of the
272
+ Copyright Holder(s) and the Author(s) or with their explicit written
273
+ permission.
274
+
275
+ 5) The Font Software, modified or unmodified, in part or in whole,
276
+ must be distributed entirely under this license, and must not be
277
+ distributed under any other license. The requirement for fonts to
278
+ remain under this license does not apply to any document created
279
+ using the Font Software.
280
+
281
+ TERMINATION
282
+ This license becomes null and void if any of the above conditions are
283
+ not met.
284
+
285
+ DISCLAIMER
286
+ THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
287
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
288
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
289
+ OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
290
+ COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
291
+ INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
292
+ DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
293
+ FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
294
+ OTHER DEALINGS IN THE FONT SOFTWARE.
295
+ ```
296
+
297
+ ## Playfair Display
298
+
299
+ The webjs.dev/ui site self-hosts the Playfair Display typeface
300
+ (https://github.com/clauseggers/Playfair-Display) for its Sera page, as
301
+ Google Fonts serves it (the latin subset, unmodified).
302
+
303
+ ```text
304
+ Copyright 2017 The Playfair Display Project Authors (https://github.com/clauseggers/Playfair-Display), with Reserved Font Name "Playfair Display"
305
+
306
+ This Font Software is licensed under the SIL Open Font License, Version 1.1.
307
+ This license is available with a FAQ at: http://scripts.sil.org/OFL
308
+ ```
309
+
310
+ The full text of the SIL Open Font License, Version 1.1 is reproduced under
311
+ Geist and Geist Mono above.
312
+
313
+ ## EB Garamond and Instrument Serif
314
+
315
+ The webjs.dev/ui site self-hosts the EB Garamond
316
+ (https://github.com/octaviopardo/EBGaramond12) and Instrument Serif
317
+ (https://github.com/Instrument/instrument-serif) typefaces for its
318
+ design-system configurator's preview, as Google Fonts serves them to
319
+ next/font (the latin subset, unmodified; Instrument Serif at weight 400).
320
+
321
+ ```text
322
+ Copyright 2017 The EB Garamond Project Authors (https://github.com/octaviopardo/EBGaramond12)
323
+ Copyright 2022 The Instrument Serif Project Authors (https://github.com/Instrument/instrument-serif)
324
+
325
+ This Font Software is licensed under the SIL Open Font License, Version 1.1.
326
+ This license is available with a FAQ at: http://scripts.sil.org/OFL
327
+ ```
328
+
329
+ The full text of the SIL Open Font License, Version 1.1 is reproduced under
330
+ Geist and Geist Mono above.
331
+
332
+ ## Noto Sans Arabic and Noto Sans Hebrew
333
+
334
+ The webjs.dev/ui site self-hosts the Noto Sans Arabic
335
+ (https://github.com/notofonts/arabic) and Noto Sans Hebrew
336
+ (https://github.com/notofonts/hebrew) typefaces for its RTL example, as
337
+ Google Fonts serves them to next/font (each family's script subset and its
338
+ latin subset, unmodified).
339
+
340
+ ```text
341
+ Copyright 2022 The Noto Project Authors (https://github.com/notofonts/arabic)
342
+ Copyright 2022 The Noto Project Authors (https://github.com/notofonts/hebrew)
343
+
344
+ This Font Software is licensed under the SIL Open Font License, Version 1.1.
345
+ This license is available with a FAQ at: https://openfontlicense.org
346
+ ```
347
+
348
+ The full text of the SIL Open Font License, Version 1.1 is reproduced under
349
+ Geist and Geist Mono above.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webjsdev/ui",
3
- "version": "0.3.17",
3
+ "version": "0.5.0",
4
4
  "type": "module",
5
5
  "description": "The AI-first component library for WebJs, a full-stack JavaScript framework built on web components with server-side rendering and no build step. Class-helper functions for visuals, custom elements only where state matters, source-copied into your repo so you own it.",
6
6
  "bin": {
@@ -17,7 +17,8 @@
17
17
  "bin",
18
18
  "src",
19
19
  "packages/registry",
20
- "README.md"
20
+ "README.md",
21
+ "THIRD_PARTY_NOTICES.md"
21
22
  ],
22
23
  "scripts": {
23
24
  "test": "node --test test/*.test.js",
@@ -25,6 +26,7 @@
25
26
  "test:e2e:a11y-tree": "node test/e2e/a11y-tree.e2e.mjs"
26
27
  },
27
28
  "dependencies": {
29
+ "@webjsdev/core": "^0.9.0",
28
30
  "commander": "^14.0.0",
29
31
  "kleur": "^4.1.5",
30
32
  "prompts": "^2.4.2",
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="1200" height="1200" fill="none"><rect width="1200" height="1200" fill="#EAEAEA" rx="3"/><g opacity=".5"><g opacity=".5"><path fill="#FAFAFA" d="M600.709 736.5c-75.454 0-136.621-61.167-136.621-136.62 0-75.454 61.167-136.621 136.621-136.621 75.453 0 136.62 61.167 136.62 136.621 0 75.453-61.167 136.62-136.62 136.62Z"/><path stroke="#C9C9C9" stroke-width="2.418" d="M600.709 736.5c-75.454 0-136.621-61.167-136.621-136.62 0-75.454 61.167-136.621 136.621-136.621 75.453 0 136.62 61.167 136.62 136.621 0 75.453-61.167 136.62-136.62 136.62Z"/></g><path stroke="url(#a)" stroke-width="2.418" d="M0-1.209h553.581" transform="scale(1 -1) rotate(45 1163.11 91.165)"/><path stroke="url(#b)" stroke-width="2.418" d="M404.846 598.671h391.726"/><path stroke="url(#c)" stroke-width="2.418" d="M599.5 795.742V404.017"/><path stroke="url(#d)" stroke-width="2.418" d="m795.717 796.597-391.441-391.44"/><path fill="#fff" d="M600.709 656.704c-31.384 0-56.825-25.441-56.825-56.824 0-31.384 25.441-56.825 56.825-56.825 31.383 0 56.824 25.441 56.824 56.825 0 31.383-25.441 56.824-56.824 56.824Z"/><g clip-path="url(#e)"><path fill="#666" fill-rule="evenodd" d="M616.426 586.58h-31.434v16.176l3.553-3.554.531-.531h9.068l.074-.074 8.463-8.463h2.565l7.18 7.181V586.58Zm-15.715 14.654 3.698 3.699 1.283 1.282-2.565 2.565-1.282-1.283-5.2-5.199h-6.066l-5.514 5.514-.073.073v2.876a2.418 2.418 0 0 0 2.418 2.418h26.598a2.418 2.418 0 0 0 2.418-2.418v-8.317l-8.463-8.463-7.181 7.181-.071.072Zm-19.347 5.442v4.085a6.045 6.045 0 0 0 6.046 6.045h26.598a6.044 6.044 0 0 0 6.045-6.045v-7.108l1.356-1.355-1.282-1.283-.074-.073v-17.989h-38.689v23.43l-.146.146.146.147Z" clip-rule="evenodd"/></g><path stroke="#C9C9C9" stroke-width="2.418" d="M600.709 656.704c-31.384 0-56.825-25.441-56.825-56.824 0-31.384 25.441-56.825 56.825-56.825 31.383 0 56.824 25.441 56.824 56.825 0 31.383-25.441 56.824-56.824 56.824Z"/></g><defs><linearGradient id="a" x1="554.061" x2="-.48" y1=".083" y2=".087" gradientUnits="userSpaceOnUse"><stop stop-color="#C9C9C9" stop-opacity="0"/><stop offset=".208" stop-color="#C9C9C9"/><stop offset=".792" stop-color="#C9C9C9"/><stop offset="1" stop-color="#C9C9C9" stop-opacity="0"/></linearGradient><linearGradient id="b" x1="796.912" x2="404.507" y1="599.963" y2="599.965" gradientUnits="userSpaceOnUse"><stop stop-color="#C9C9C9" stop-opacity="0"/><stop offset=".208" stop-color="#C9C9C9"/><stop offset=".792" stop-color="#C9C9C9"/><stop offset="1" stop-color="#C9C9C9" stop-opacity="0"/></linearGradient><linearGradient id="c" x1="600.792" x2="600.794" y1="403.677" y2="796.082" gradientUnits="userSpaceOnUse"><stop stop-color="#C9C9C9" stop-opacity="0"/><stop offset=".208" stop-color="#C9C9C9"/><stop offset=".792" stop-color="#C9C9C9"/><stop offset="1" stop-color="#C9C9C9" stop-opacity="0"/></linearGradient><linearGradient id="d" x1="404.85" x2="796.972" y1="403.903" y2="796.02" gradientUnits="userSpaceOnUse"><stop stop-color="#C9C9C9" stop-opacity="0"/><stop offset=".208" stop-color="#C9C9C9"/><stop offset=".792" stop-color="#C9C9C9"/><stop offset="1" stop-color="#C9C9C9" stop-opacity="0"/></linearGradient><clipPath id="e"><path fill="#fff" d="M581.364 580.535h38.689v38.689h-38.689z"/></clipPath></defs></svg>
@@ -0,0 +1,72 @@
1
+ /**
2
+ * An area chart with axes, a chart block ported from shadcn/ui's chart-area-axes.
3
+ *
4
+ * Installed by `npx @webjsdev/ui add chart-area-axes` at
5
+ * `components/charts/chart-area-axes.ts`. It is app code you own, so edit it
6
+ * freely, and render it from any page with `${ChartAreaAxes()}`.
7
+ */
8
+ import { html, svg } from '@webjsdev/core';
9
+ import {
10
+ cardClass, cardContentClass, cardDescriptionClass, cardFooterClass, cardHeaderClass, cardTitleClass,
11
+ } from '../../components/card.ts';
12
+ import { areaChart, type ChartConfig } from '../../components/chart.ts';
13
+
14
+ const chartData = [
15
+ { month: 'January', desktop: 186, mobile: 80 },
16
+ { month: 'February', desktop: 305, mobile: 200 },
17
+ { month: 'March', desktop: 237, mobile: 120 },
18
+ { month: 'April', desktop: 73, mobile: 190 },
19
+ { month: 'May', desktop: 209, mobile: 130 },
20
+ { month: 'June', desktop: 214, mobile: 140 },
21
+ ];
22
+
23
+ const chartConfig = {
24
+ desktop: {
25
+ label: 'Desktop',
26
+ color: 'var(--chart-1)',
27
+ },
28
+ mobile: {
29
+ label: 'Mobile',
30
+ color: 'var(--chart-2)',
31
+ },
32
+ } satisfies ChartConfig;
33
+
34
+ // lucide's trending-up, the icon in shadcn's footer.
35
+ 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>`;
36
+
37
+ export default function ChartAreaAxes() {
38
+ return html`
39
+ <div data-slot="card" class=${cardClass()}>
40
+ <div data-slot="card-header" class=${cardHeaderClass()}>
41
+ <div data-slot="card-title" class=${cardTitleClass()}>Area Chart - Axes</div>
42
+ <div data-slot="card-description" class=${cardDescriptionClass()}>Showing total visitors for the last 6 months</div>
43
+ </div>
44
+ <div data-slot="card-content" class=${cardContentClass()}>
45
+ ${areaChart({
46
+ config: chartConfig,
47
+ data: chartData,
48
+ title: 'Desktop and mobile visitors, January to June',
49
+ margin: { left: -20, right: 12 },
50
+ grid: { vertical: false },
51
+ xAxis: { dataKey: 'month', tickLine: false, axisLine: false, tickMargin: 8, tickFormatter: (value) => String(value).slice(0, 3) },
52
+ yAxis: { tickLine: false, axisLine: false, tickMargin: 8, tickCount: 3 },
53
+ tooltip: { cursor: false },
54
+ areas: [
55
+ { dataKey: 'mobile', type: 'natural', fill: 'var(--color-mobile)', fillOpacity: 0.4, stroke: 'var(--color-mobile)', stackId: 'a' },
56
+ { dataKey: 'desktop', type: 'natural', fill: 'var(--color-desktop)', fillOpacity: 0.4, stroke: 'var(--color-desktop)', stackId: 'a' },
57
+ ],
58
+ })}
59
+ </div>
60
+ <div data-slot="card-footer" class=${cardFooterClass()}>
61
+ <div class="flex w-full items-start gap-2 text-sm">
62
+ <div class="grid gap-2">
63
+ <div class="flex items-center gap-2 leading-none font-medium">
64
+ Trending up by 5.2% this month ${TrendingUp('h-4 w-4')}
65
+ </div>
66
+ <div class="flex items-center gap-2 leading-none text-muted-foreground">January - June 2024</div>
67
+ </div>
68
+ </div>
69
+ </div>
70
+ </div>
71
+ `;
72
+ }
@@ -0,0 +1,64 @@
1
+ /**
2
+ * A simple area chart, a chart block ported from shadcn/ui's chart-area-default.
3
+ *
4
+ * Installed by `npx @webjsdev/ui add chart-area-default` at
5
+ * `components/charts/chart-area-default.ts`. It is app code you own, so edit it
6
+ * freely, and render it from any page with `${ChartAreaDefault()}`.
7
+ */
8
+ import { html, svg } from '@webjsdev/core';
9
+ import {
10
+ cardClass, cardContentClass, cardDescriptionClass, cardFooterClass, cardHeaderClass, cardTitleClass,
11
+ } from '../../components/card.ts';
12
+ import { areaChart, type ChartConfig } from '../../components/chart.ts';
13
+
14
+ const chartData = [
15
+ { month: 'January', desktop: 186 },
16
+ { month: 'February', desktop: 305 },
17
+ { month: 'March', desktop: 237 },
18
+ { month: 'April', desktop: 73 },
19
+ { month: 'May', desktop: 209 },
20
+ { month: 'June', desktop: 214 },
21
+ ];
22
+
23
+ const chartConfig = {
24
+ desktop: {
25
+ label: 'Desktop',
26
+ color: 'var(--chart-1)',
27
+ },
28
+ } satisfies ChartConfig;
29
+
30
+ // lucide's trending-up, the icon in shadcn's footer.
31
+ 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>`;
32
+
33
+ export default function ChartAreaDefault() {
34
+ return html`
35
+ <div data-slot="card" class=${cardClass()}>
36
+ <div data-slot="card-header" class=${cardHeaderClass()}>
37
+ <div data-slot="card-title" class=${cardTitleClass()}>Area Chart</div>
38
+ <div data-slot="card-description" class=${cardDescriptionClass()}>Showing total visitors for the last 6 months</div>
39
+ </div>
40
+ <div data-slot="card-content" class=${cardContentClass()}>
41
+ ${areaChart({
42
+ config: chartConfig,
43
+ data: chartData,
44
+ title: 'Desktop visitors, January to June',
45
+ margin: { left: 12, right: 12 },
46
+ grid: { vertical: false },
47
+ xAxis: { dataKey: 'month', tickLine: false, axisLine: false, tickMargin: 8, tickFormatter: (value) => String(value).slice(0, 3) },
48
+ tooltip: { cursor: false, indicator: 'line' },
49
+ areas: [{ dataKey: 'desktop', type: 'natural', fill: 'var(--color-desktop)', fillOpacity: 0.4, stroke: 'var(--color-desktop)' }],
50
+ })}
51
+ </div>
52
+ <div data-slot="card-footer" class=${cardFooterClass()}>
53
+ <div class="flex w-full items-start gap-2 text-sm">
54
+ <div class="grid gap-2">
55
+ <div class="flex items-center gap-2 leading-none font-medium">
56
+ Trending up by 5.2% this month ${TrendingUp('h-4 w-4')}
57
+ </div>
58
+ <div class="flex items-center gap-2 leading-none text-muted-foreground">January - June 2024</div>
59
+ </div>
60
+ </div>
61
+ </div>
62
+ </div>
63
+ `;
64
+ }