@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,63 @@
1
+ /**
2
+ * The sidebar-12 app sidebar: the signed-in user, a calendar, the list of
3
+ * calendars, and a "New Calendar" button. A fragment helper, so the markup is
4
+ * rendered by the server; the sidebar and its rail are the kit's elements.
5
+ * Ported from shadcn/ui's sidebar-12.
6
+ *
7
+ * The data below is sample data. Replace it with your own.
8
+ */
9
+ import { html } from '@webjsdev/core';
10
+ import { cn } from '../../../lib/utils.ts';
11
+ import {
12
+ sidebarContentClass,
13
+ sidebarFooterClass,
14
+ sidebarHeaderClass,
15
+ sidebarMenuButtonClass,
16
+ sidebarMenuClass,
17
+ sidebarMenuItemClass,
18
+ sidebarSeparatorClass,
19
+ } from '../../../components/sidebar.ts';
20
+ import { calendars } from './calendars.ts';
21
+ import { datePicker } from './date-picker.ts';
22
+ import { navUser } from './nav-user.ts';
23
+ import { PlusIcon } from '../../../lib/icons.ts';
24
+
25
+ // This is sample data.
26
+ const data = {
27
+ user: {
28
+ name: 'vivek',
29
+ email: 'vivek@example.com',
30
+ avatar: 'https://webjs.dev/public/avatars/vivek.jpg',
31
+ },
32
+ calendars: [
33
+ { name: 'My Calendars', items: ['Personal', 'Work', 'Family'] },
34
+ { name: 'Favorites', items: ['Holidays', 'Birthdays'] },
35
+ { name: 'Other', items: ['Travel', 'Reminders', 'Deadlines'] },
36
+ ],
37
+ };
38
+
39
+ export function appSidebar() {
40
+ return html`
41
+ <ui-sidebar>
42
+ <div data-slot="sidebar-header" data-sidebar="header" class=${cn(sidebarHeaderClass(), 'h-16 border-b border-sidebar-border')}>
43
+ ${navUser({ user: data.user })}
44
+ </div>
45
+ <div data-slot="sidebar-content" data-sidebar="content" class=${sidebarContentClass()}>
46
+ ${datePicker()}
47
+ <div role="none" data-slot="sidebar-separator" data-sidebar="separator" data-orientation="horizontal" class=${cn(sidebarSeparatorClass(), 'mx-0')}></div>
48
+ ${calendars({ calendars: data.calendars })}
49
+ </div>
50
+ <div data-slot="sidebar-footer" data-sidebar="footer" class=${sidebarFooterClass()}>
51
+ <ul data-slot="sidebar-menu" data-sidebar="menu" class=${sidebarMenuClass()}>
52
+ <li data-slot="sidebar-menu-item" data-sidebar="menu-item" class=${sidebarMenuItemClass()}>
53
+ <button type="button" data-slot="sidebar-menu-button" data-sidebar="menu-button" data-size="default" class=${sidebarMenuButtonClass()}>
54
+ ${PlusIcon()}
55
+ <span>New Calendar</span>
56
+ </button>
57
+ </li>
58
+ </ul>
59
+ </div>
60
+ <ui-sidebar-rail></ui-sidebar-rail>
61
+ </ui-sidebar>
62
+ `;
63
+ }
@@ -0,0 +1,53 @@
1
+ /**
2
+ * The sidebar-12 calendars list: one collapsible group per set of calendars,
3
+ * each calendar a menu button with a check box drawn beside its name. A
4
+ * fragment helper; each group is a native `<details>`, so it opens and closes
5
+ * with no JavaScript. Ported from shadcn/ui's sidebar-12.
6
+ *
7
+ * The boxes are decoration, as in shadcn: the first two calendars of a group
8
+ * render checked. Turn each button into a real control (a checkbox in a form,
9
+ * or a link that toggles the calendar) when you wire it to your data.
10
+ */
11
+ import { html } from '@webjsdev/core';
12
+ import { cn } from '../../../lib/utils.ts';
13
+ import { collapsibleClass, collapsibleContentClass } from '../../../components/collapsible.ts';
14
+ import {
15
+ sidebarGroupClass,
16
+ sidebarGroupContentClass,
17
+ sidebarGroupLabelClass,
18
+ sidebarMenuButtonClass,
19
+ sidebarMenuClass,
20
+ sidebarMenuItemClass,
21
+ sidebarSeparatorClass,
22
+ } from '../../../components/sidebar.ts';
23
+ import { CheckIcon, ChevronRightIcon } from '../../../lib/icons.ts';
24
+
25
+ export function calendars({ calendars }: { calendars: { name: string; items: string[] }[] }) {
26
+ return calendars.map((calendar, index) => html`
27
+ <div data-slot="sidebar-group" data-sidebar="group" class=${sidebarGroupClass()}>
28
+ <details data-slot="collapsible" class=${cn(collapsibleClass(), 'group/collapsible')} ?open=${index === 0}>
29
+ <summary data-slot="sidebar-group-label" data-sidebar="group-label" class=${cn(sidebarGroupLabelClass(), 'group/label w-full cursor-pointer list-none text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground [&::-webkit-details-marker]:hidden')}>
30
+ ${calendar.name}
31
+ ${ChevronRightIcon('ml-auto transition-transform group-open/collapsible:rotate-90')}
32
+ </summary>
33
+ <div data-slot="collapsible-content" class=${collapsibleContentClass()}>
34
+ <div data-slot="sidebar-group-content" data-sidebar="group-content" class=${sidebarGroupContentClass()}>
35
+ <ul data-slot="sidebar-menu" data-sidebar="menu" class=${sidebarMenuClass()}>
36
+ ${calendar.items.map((item, i) => html`
37
+ <li data-slot="sidebar-menu-item" data-sidebar="menu-item" class=${sidebarMenuItemClass()}>
38
+ <button type="button" data-slot="sidebar-menu-button" data-sidebar="menu-button" data-size="default" class=${sidebarMenuButtonClass()}>
39
+ <div data-active=${i < 2 ? 'true' : 'false'} class="group/calendar-item flex aspect-square size-4 shrink-0 items-center justify-center rounded-sm border border-sidebar-border text-sidebar-primary-foreground data-[active=true]:border-sidebar-primary data-[active=true]:bg-sidebar-primary">
40
+ ${CheckIcon('hidden size-3 group-data-[active=true]/calendar-item:block')}
41
+ </div>
42
+ ${item}
43
+ </button>
44
+ </li>
45
+ `)}
46
+ </ul>
47
+ </div>
48
+ </div>
49
+ </details>
50
+ </div>
51
+ <div role="none" data-slot="sidebar-separator" data-sidebar="separator" data-orientation="horizontal" class=${cn(sidebarSeparatorClass(), 'mx-0')}></div>
52
+ `);
53
+ }
@@ -0,0 +1,26 @@
1
+ /**
2
+ * The sidebar-12 date picker: the kit's `<ui-calendar>` with month and year
3
+ * dropdowns, in a sidebar group. A fragment helper; the calendar is rendered
4
+ * by the server and picking a day needs JavaScript. Ported from shadcn/ui's
5
+ * sidebar-12.
6
+ *
7
+ * It opens on the 12th of the current month, as shadcn's does. Listen for
8
+ * `ui-value-change` on the calendar, or give it a `name` inside a form, to use
9
+ * the chosen date.
10
+ */
11
+ import { html } from '@webjsdev/core';
12
+ import { cn } from '../../../lib/utils.ts';
13
+ import '../../../components/calendar.ts';
14
+ import { sidebarGroupClass, sidebarGroupContentClass } from '../../../components/sidebar.ts';
15
+
16
+ export function datePicker() {
17
+ const now = new Date();
18
+ const value = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, '0')}-12`;
19
+ return html`
20
+ <div data-slot="sidebar-group" data-sidebar="group" class=${cn(sidebarGroupClass(), 'px-0')}>
21
+ <div data-slot="sidebar-group-content" data-sidebar="group-content" class=${sidebarGroupContentClass()}>
22
+ <ui-calendar mode="single" value=${value} caption-layout="dropdown" class="**:data-[slot=calendar]:bg-transparent **:data-[slot=calendar]:[--cell-size:2.1rem]"></ui-calendar>
23
+ </div>
24
+ </div>
25
+ `;
26
+ }
@@ -0,0 +1,70 @@
1
+ /**
2
+ * The sidebar-12 user menu: the signed-in user's avatar, name and email,
3
+ * opening an account menu. A fragment helper; the menu is the kit's
4
+ * `<ui-dropdown-menu>`. Ported from shadcn/ui's sidebar-12.
5
+ *
6
+ * The menu items are placeholders. Make "Log out" a form that posts to your
7
+ * sign-out action, and the others links to your account pages.
8
+ */
9
+ import { html } from '@webjsdev/core';
10
+ import { cn } from '../../../lib/utils.ts';
11
+ import { avatarClass, avatarFallbackClass, avatarImageClass } from '../../../components/avatar.ts';
12
+ import '../../../components/dropdown-menu.ts';
13
+ import {
14
+ sidebarMenuButtonClass,
15
+ sidebarMenuClass,
16
+ sidebarMenuItemClass,
17
+ } from '../../../components/sidebar.ts';
18
+ import { BadgeCheckIcon, BellIcon, ChevronsUpDownIcon, CreditCardIcon, LogOutIcon, SparklesIcon } from '../../../lib/icons.ts';
19
+
20
+ function userAvatar(user: { name: string; avatar: string }) {
21
+ return html`<span data-slot="avatar" data-size="default" class=${cn(avatarClass(), 'h-8 w-8 rounded-lg')}>
22
+ <span data-slot="avatar-fallback" class=${cn(avatarFallbackClass(), 'rounded-lg')}>VK</span>
23
+ <img data-slot="avatar-image" src=${user.avatar} alt="@vivek" class=${avatarImageClass()}>
24
+ </span>`;
25
+ }
26
+
27
+ function userText(user: { name: string; email: string }) {
28
+ return html`<div class="grid flex-1 text-left text-sm leading-tight">
29
+ <span class="truncate font-medium">${user.name}</span>
30
+ <span class="truncate text-xs">${user.email}</span>
31
+ </div>`;
32
+ }
33
+
34
+ export function navUser({ user }: { user: { name: string; email: string; avatar: string } }) {
35
+ return html`
36
+ <ul data-slot="sidebar-menu" data-sidebar="menu" class=${sidebarMenuClass()}>
37
+ <li data-slot="sidebar-menu-item" data-sidebar="menu-item" class=${sidebarMenuItemClass()}>
38
+ <ui-dropdown-menu>
39
+ <ui-dropdown-menu-trigger>
40
+ <button type="button" data-slot="sidebar-menu-button" data-sidebar="menu-button" data-size="lg" class=${cn(sidebarMenuButtonClass({ size: 'lg' }), 'aria-expanded:bg-sidebar-accent aria-expanded:text-sidebar-accent-foreground')}>
41
+ ${userAvatar(user)}
42
+ ${userText(user)}
43
+ ${ChevronsUpDownIcon('ml-auto size-4')}
44
+ </button>
45
+ </ui-dropdown-menu-trigger>
46
+ <ui-dropdown-menu-content class="w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg" side="right" align="start">
47
+ <ui-dropdown-menu-label class="p-0 font-normal">
48
+ <div class="flex items-center gap-2 px-1 py-1.5 text-left text-sm">
49
+ ${userAvatar(user)}
50
+ ${userText(user)}
51
+ </div>
52
+ </ui-dropdown-menu-label>
53
+ <ui-dropdown-menu-separator></ui-dropdown-menu-separator>
54
+ <ui-dropdown-menu-group>
55
+ <ui-dropdown-menu-item>${SparklesIcon()}Upgrade to Pro</ui-dropdown-menu-item>
56
+ </ui-dropdown-menu-group>
57
+ <ui-dropdown-menu-separator></ui-dropdown-menu-separator>
58
+ <ui-dropdown-menu-group>
59
+ <ui-dropdown-menu-item>${BadgeCheckIcon()}Account</ui-dropdown-menu-item>
60
+ <ui-dropdown-menu-item>${CreditCardIcon()}Billing</ui-dropdown-menu-item>
61
+ <ui-dropdown-menu-item>${BellIcon()}Notifications</ui-dropdown-menu-item>
62
+ </ui-dropdown-menu-group>
63
+ <ui-dropdown-menu-separator></ui-dropdown-menu-separator>
64
+ <ui-dropdown-menu-item>${LogOutIcon()}Log out</ui-dropdown-menu-item>
65
+ </ui-dropdown-menu-content>
66
+ </ui-dropdown-menu>
67
+ </li>
68
+ </ul>
69
+ `;
70
+ }
@@ -0,0 +1,43 @@
1
+ /**
2
+ * The sidebar-12 block's page: a sidebar with a calendar and a list of
3
+ * calendars, beside a sticky header and a grid of day placeholders.
4
+ *
5
+ * Installed by `npx @webjsdev/ui add sidebar-12` at `app/dashboard/page.ts`.
6
+ * It is app code you own, so edit it freely. Ported from shadcn/ui's
7
+ * sidebar-12.
8
+ */
9
+ import { html } from '@webjsdev/core';
10
+ import type { Metadata } from '@webjsdev/core';
11
+ import { cn } from '../../lib/utils.ts';
12
+ import { breadcrumbItemClass, breadcrumbListClass, breadcrumbPageClass } from '../../components/breadcrumb.ts';
13
+ import { separatorClass } from '../../components/separator.ts';
14
+ import '../../components/sidebar.ts';
15
+ import { appSidebar } from './components/app-sidebar.ts';
16
+
17
+ export const metadata: Metadata = { title: 'Dashboard' };
18
+
19
+ export default function DashboardPage() {
20
+ return html`
21
+ <ui-sidebar-provider>
22
+ ${appSidebar()}
23
+ <ui-sidebar-inset>
24
+ <header class="sticky top-0 flex h-16 shrink-0 items-center gap-2 border-b bg-background px-4">
25
+ <ui-sidebar-trigger class="-ml-1"></ui-sidebar-trigger>
26
+ <div role="none" data-slot="separator" data-orientation="vertical" class=${cn(separatorClass(), 'mr-2 data-vertical:h-4 data-vertical:self-auto')}></div>
27
+ <nav aria-label="breadcrumb" data-slot="breadcrumb">
28
+ <ol data-slot="breadcrumb-list" class=${breadcrumbListClass()}>
29
+ <li data-slot="breadcrumb-item" class=${breadcrumbItemClass()}>
30
+ <span data-slot="breadcrumb-page" class=${breadcrumbPageClass()} aria-current="page">October 2024</span>
31
+ </li>
32
+ </ol>
33
+ </nav>
34
+ </header>
35
+ <div class="flex flex-1 flex-col gap-4 p-4">
36
+ <div class="grid auto-rows-min gap-4 md:grid-cols-5">
37
+ ${Array.from({ length: 20 }, () => html`<div class="aspect-square rounded-xl bg-muted/50"></div>`)}
38
+ </div>
39
+ </div>
40
+ </ui-sidebar-inset>
41
+ </ui-sidebar-provider>
42
+ `;
43
+ }
@@ -0,0 +1,114 @@
1
+ /**
2
+ * The sidebar-13 settings dialog: the kit's `<ui-dialog>` holding a
3
+ * non-collapsible sidebar of settings sections beside the current section's
4
+ * content. A fragment helper; the dialog and the sidebar are the kit's
5
+ * elements. Ported from shadcn/ui's sidebar-13.
6
+ *
7
+ * shadcn's dialog starts open. A modal opens only through `showModal()`, so
8
+ * the small inline script below opens it once the element is ready, and the
9
+ * trigger reopens it after a close. Drop the script for a dialog that waits
10
+ * for its trigger. "Messages & media" is the current section. Point each
11
+ * `href` at a real settings route and mark the current one from your router.
12
+ */
13
+ import { html, cspNonce } from '@webjsdev/core';
14
+ import type { TemplateResult } from '@webjsdev/core';
15
+ import { cn } from '../../../lib/utils.ts';
16
+ import {
17
+ breadcrumbItemClass,
18
+ breadcrumbLinkClass,
19
+ breadcrumbListClass,
20
+ breadcrumbPageClass,
21
+ breadcrumbSeparatorClass,
22
+ } from '../../../components/breadcrumb.ts';
23
+ import { buttonClass } from '../../../components/button.ts';
24
+ import '../../../components/dialog.ts';
25
+ import '../../../components/sidebar.ts';
26
+ import {
27
+ sidebarContentClass,
28
+ sidebarGroupClass,
29
+ sidebarGroupContentClass,
30
+ sidebarMenuButtonClass,
31
+ sidebarMenuClass,
32
+ sidebarMenuItemClass,
33
+ } from '../../../components/sidebar.ts';
34
+ import { BellIcon, CheckIcon, ChevronRightIcon, GlobeIcon, HomeIcon, KeyboardIcon, LinkIcon, LockIcon, MenuIcon, MessageCircleIcon, PaintbrushIcon, SettingsIcon, VideoIcon } from '../../../lib/icons.ts';
35
+
36
+ const data: { nav: { name: string; icon: (cls?: string) => TemplateResult }[] } = {
37
+ nav: [
38
+ { name: 'Notifications', icon: BellIcon },
39
+ { name: 'Navigation', icon: MenuIcon },
40
+ { name: 'Home', icon: HomeIcon },
41
+ { name: 'Appearance', icon: PaintbrushIcon },
42
+ { name: 'Messages & media', icon: MessageCircleIcon },
43
+ { name: 'Language & region', icon: GlobeIcon },
44
+ { name: 'Accessibility', icon: KeyboardIcon },
45
+ { name: 'Mark as read', icon: CheckIcon },
46
+ { name: 'Audio & video', icon: VideoIcon },
47
+ { name: 'Connected accounts', icon: LinkIcon },
48
+ { name: 'Privacy & visibility', icon: LockIcon },
49
+ { name: 'Advanced', icon: SettingsIcon },
50
+ ],
51
+ };
52
+
53
+ export function settingsDialog() {
54
+ return html`
55
+ <ui-dialog id="settings-dialog">
56
+ <ui-dialog-trigger>
57
+ <button type="button" data-slot="button" data-size="sm" class=${buttonClass({ size: 'sm' })}>Open Dialog</button>
58
+ </ui-dialog-trigger>
59
+ <ui-dialog-content class="overflow-hidden p-0 md:max-h-[500px] md:max-w-[700px] lg:max-w-[800px]">
60
+ <h2 data-slot="dialog-title" class="sr-only">Settings</h2>
61
+ <p data-slot="dialog-description" class="sr-only">Customize your settings here.</p>
62
+ <ui-sidebar-provider class="[&>[data-slot=sidebar-wrapper]]:items-start">
63
+ <ui-sidebar collapsible="none" class="hidden md:flex">
64
+ <div data-slot="sidebar-content" data-sidebar="content" class=${sidebarContentClass()}>
65
+ <div data-slot="sidebar-group" data-sidebar="group" class=${sidebarGroupClass()}>
66
+ <div data-slot="sidebar-group-content" data-sidebar="group-content" class=${sidebarGroupContentClass()}>
67
+ <ul data-slot="sidebar-menu" data-sidebar="menu" class=${sidebarMenuClass()}>
68
+ ${data.nav.map((item) => {
69
+ const active = item.name === 'Messages & media';
70
+ return html`
71
+ <li data-slot="sidebar-menu-item" data-sidebar="menu-item" class=${sidebarMenuItemClass()}>
72
+ <a href="#" data-slot="sidebar-menu-button" data-sidebar="menu-button" data-size="default" data-active=${active ? 'true' : 'false'} aria-current=${active ? 'page' : null} class=${sidebarMenuButtonClass()}>
73
+ ${item.icon()}
74
+ <span>${item.name}</span>
75
+ </a>
76
+ </li>
77
+ `;
78
+ })}
79
+ </ul>
80
+ </div>
81
+ </div>
82
+ </div>
83
+ </ui-sidebar>
84
+ <main class="flex h-[480px] flex-1 flex-col overflow-hidden">
85
+ <header class="flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12">
86
+ <div class="flex items-center gap-2 px-4">
87
+ <nav aria-label="breadcrumb" data-slot="breadcrumb">
88
+ <ol data-slot="breadcrumb-list" class=${breadcrumbListClass()}>
89
+ <li data-slot="breadcrumb-item" class=${cn(breadcrumbItemClass(), 'hidden md:block')}>
90
+ <a data-slot="breadcrumb-link" class=${breadcrumbLinkClass()} href="#">Settings</a>
91
+ </li>
92
+ <li data-slot="breadcrumb-separator" role="presentation" aria-hidden="true" class=${cn(breadcrumbSeparatorClass(), 'hidden md:block')}>${ChevronRightIcon()}</li>
93
+ <li data-slot="breadcrumb-item" class=${breadcrumbItemClass()}>
94
+ <span data-slot="breadcrumb-page" class=${breadcrumbPageClass()} aria-current="page">Messages &amp; media</span>
95
+ </li>
96
+ </ol>
97
+ </nav>
98
+ </div>
99
+ </header>
100
+ <div class="flex flex-1 flex-col gap-4 overflow-y-auto p-4 pt-0">
101
+ ${Array.from({ length: 10 }, () => html`<div class="aspect-video max-w-3xl rounded-xl bg-muted/50"></div>`)}
102
+ </div>
103
+ </main>
104
+ </ui-sidebar-provider>
105
+ </ui-dialog-content>
106
+ </ui-dialog>
107
+ <script nonce=${cspNonce()}>
108
+ customElements.whenDefined('ui-dialog').then(function () {
109
+ var d = document.getElementById('settings-dialog');
110
+ if (d) d.updateComplete.then(function () { d.open = true; });
111
+ });
112
+ </script>
113
+ `;
114
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * The sidebar-13 block's page: a settings dialog with a sidebar inside it,
3
+ * open on load, centred on an otherwise empty page.
4
+ *
5
+ * Installed by `npx @webjsdev/ui add sidebar-13` at `app/dashboard/page.ts`.
6
+ * It is app code you own, so edit it freely. Ported from shadcn/ui's
7
+ * sidebar-13.
8
+ */
9
+ import { html } from '@webjsdev/core';
10
+ import type { Metadata } from '@webjsdev/core';
11
+ import { settingsDialog } from './components/settings-dialog.ts';
12
+
13
+ export const metadata: Metadata = { title: 'Dashboard' };
14
+
15
+ export default function DashboardPage() {
16
+ return html`
17
+ <div class="flex h-svh items-center justify-center">
18
+ ${settingsDialog()}
19
+ </div>
20
+ `;
21
+ }
@@ -0,0 +1,120 @@
1
+ /**
2
+ * The sidebar-14 app sidebar: a "Table of Contents" group listing each
3
+ * section as a link with its pages in a submenu, always open. A fragment
4
+ * helper, so the markup is rendered by the server; the sidebar and its rail
5
+ * are the kit's elements. Ported from shadcn/ui's sidebar-14.
6
+ *
7
+ * The data below is sample data. Replace it with your own, point each `url`
8
+ * at a real route, and mark the current page from your router.
9
+ */
10
+ import { html } from '@webjsdev/core';
11
+ import { cn } from '../../../lib/utils.ts';
12
+ import {
13
+ sidebarContentClass,
14
+ sidebarGroupClass,
15
+ sidebarGroupContentClass,
16
+ sidebarGroupLabelClass,
17
+ sidebarMenuButtonClass,
18
+ sidebarMenuClass,
19
+ sidebarMenuItemClass,
20
+ sidebarMenuSubButtonClass,
21
+ sidebarMenuSubClass,
22
+ sidebarMenuSubItemClass,
23
+ } from '../../../components/sidebar.ts';
24
+
25
+ interface NavSection {
26
+ title: string;
27
+ url: string;
28
+ items?: { title: string; url: string; isActive?: boolean }[];
29
+ }
30
+
31
+ // This is sample data.
32
+ const data: { navMain: NavSection[] } = {
33
+ navMain: [
34
+ {
35
+ title: 'Getting Started',
36
+ url: '#',
37
+ items: [
38
+ { title: 'Installation', url: '#' },
39
+ { title: 'Project Structure', url: '#' },
40
+ ],
41
+ },
42
+ {
43
+ title: 'Build Your Application',
44
+ url: '#',
45
+ items: [
46
+ { title: 'Routing', url: '#' },
47
+ { title: 'Data Fetching', url: '#', isActive: true },
48
+ { title: 'Rendering', url: '#' },
49
+ { title: 'Caching', url: '#' },
50
+ { title: 'Styling', url: '#' },
51
+ { title: 'Optimizing', url: '#' },
52
+ { title: 'Configuring', url: '#' },
53
+ { title: 'Testing', url: '#' },
54
+ { title: 'Authentication', url: '#' },
55
+ { title: 'Deploying', url: '#' },
56
+ { title: 'Upgrading', url: '#' },
57
+ { title: 'Examples', url: '#' },
58
+ ],
59
+ },
60
+ {
61
+ title: 'API Reference',
62
+ url: '#',
63
+ items: [
64
+ { title: 'Components', url: '#' },
65
+ { title: 'File Conventions', url: '#' },
66
+ { title: 'Functions', url: '#' },
67
+ { title: 'next.config.js Options', url: '#' },
68
+ { title: 'CLI', url: '#' },
69
+ { title: 'Edge Runtime', url: '#' },
70
+ ],
71
+ },
72
+ {
73
+ title: 'Architecture',
74
+ url: '#',
75
+ items: [
76
+ { title: 'Accessibility', url: '#' },
77
+ { title: 'Fast Refresh', url: '#' },
78
+ { title: 'Next.js Compiler', url: '#' },
79
+ { title: 'Supported Browsers', url: '#' },
80
+ { title: 'Turbopack', url: '#' },
81
+ ],
82
+ },
83
+ {
84
+ title: 'Community',
85
+ url: '#',
86
+ items: [{ title: 'Contribution Guide', url: '#' }],
87
+ },
88
+ ],
89
+ };
90
+
91
+ export function appSidebar(opts: { side?: 'left' | 'right' } = {}) {
92
+ return html`
93
+ <ui-sidebar side=${opts.side ?? 'left'}>
94
+ <div data-slot="sidebar-content" data-sidebar="content" class=${sidebarContentClass()}>
95
+ <nav aria-label="Table of Contents" data-slot="sidebar-group" data-sidebar="group" class=${sidebarGroupClass()}>
96
+ <div data-slot="sidebar-group-label" data-sidebar="group-label" class=${sidebarGroupLabelClass()}>Table of Contents</div>
97
+ <div data-slot="sidebar-group-content" data-sidebar="group-content" class=${sidebarGroupContentClass()}>
98
+ <ul data-slot="sidebar-menu" data-sidebar="menu" class=${sidebarMenuClass()}>
99
+ ${data.navMain.map((item) => html`
100
+ <li data-slot="sidebar-menu-item" data-sidebar="menu-item" class=${sidebarMenuItemClass()}>
101
+ <a href=${item.url} data-slot="sidebar-menu-button" data-sidebar="menu-button" data-size="default" class=${cn(sidebarMenuButtonClass(), 'font-medium')}>${item.title}</a>
102
+ ${item.items?.length
103
+ ? html`<ul data-slot="sidebar-menu-sub" data-sidebar="menu-sub" class=${sidebarMenuSubClass()}>
104
+ ${item.items.map((sub) => html`
105
+ <li data-slot="sidebar-menu-sub-item" data-sidebar="menu-sub-item" class=${sidebarMenuSubItemClass()}>
106
+ <a href=${sub.url} data-slot="sidebar-menu-sub-button" data-sidebar="menu-sub-button" data-size="md" data-active=${sub.isActive ? 'true' : 'false'} aria-current=${sub.isActive ? 'page' : null} class=${sidebarMenuSubButtonClass()}>${sub.title}</a>
107
+ </li>
108
+ `)}
109
+ </ul>`
110
+ : ''}
111
+ </li>
112
+ `)}
113
+ </ul>
114
+ </div>
115
+ </nav>
116
+ </div>
117
+ <ui-sidebar-rail></ui-sidebar-rail>
118
+ </ui-sidebar>
119
+ `;
120
+ }
@@ -0,0 +1,55 @@
1
+ /**
2
+ * The sidebar-14 block's page: a table-of-contents sidebar on the right of
3
+ * the page, beside a header with a breadcrumb and a placeholder content grid.
4
+ *
5
+ * Installed by `npx @webjsdev/ui add sidebar-14` at `app/dashboard/page.ts`.
6
+ * It is app code you own, so edit it freely. Ported from shadcn/ui's
7
+ * sidebar-14.
8
+ */
9
+ import { html } from '@webjsdev/core';
10
+ import type { Metadata } from '@webjsdev/core';
11
+ import { cn } from '../../lib/utils.ts';
12
+ import {
13
+ breadcrumbItemClass,
14
+ breadcrumbLinkClass,
15
+ breadcrumbListClass,
16
+ breadcrumbPageClass,
17
+ breadcrumbSeparatorClass,
18
+ } from '../../components/breadcrumb.ts';
19
+ import '../../components/sidebar.ts';
20
+ import { appSidebar } from './components/app-sidebar.ts';
21
+ import { ChevronRightIcon } from '../../lib/icons.ts';
22
+
23
+ export const metadata: Metadata = { title: 'Dashboard' };
24
+
25
+ export default function DashboardPage() {
26
+ return html`
27
+ <ui-sidebar-provider>
28
+ <ui-sidebar-inset>
29
+ <header class="flex h-16 shrink-0 items-center gap-2 border-b px-4">
30
+ <nav aria-label="breadcrumb" data-slot="breadcrumb">
31
+ <ol data-slot="breadcrumb-list" class=${breadcrumbListClass()}>
32
+ <li data-slot="breadcrumb-item" class=${cn(breadcrumbItemClass(), 'hidden md:block')}>
33
+ <a data-slot="breadcrumb-link" class=${breadcrumbLinkClass()} href="#">Build Your Application</a>
34
+ </li>
35
+ <li data-slot="breadcrumb-separator" role="presentation" aria-hidden="true" class=${cn(breadcrumbSeparatorClass(), 'hidden md:block')}>${ChevronRightIcon()}</li>
36
+ <li data-slot="breadcrumb-item" class=${breadcrumbItemClass()}>
37
+ <span data-slot="breadcrumb-page" class=${breadcrumbPageClass()} aria-current="page">Data Fetching</span>
38
+ </li>
39
+ </ol>
40
+ </nav>
41
+ <ui-sidebar-trigger class="-mr-1 ml-auto rotate-180"></ui-sidebar-trigger>
42
+ </header>
43
+ <div class="flex flex-1 flex-col gap-4 p-4">
44
+ <div class="grid auto-rows-min gap-4 md:grid-cols-3">
45
+ <div class="aspect-video rounded-xl bg-muted/50"></div>
46
+ <div class="aspect-video rounded-xl bg-muted/50"></div>
47
+ <div class="aspect-video rounded-xl bg-muted/50"></div>
48
+ </div>
49
+ <div class="min-h-screen flex-1 rounded-xl bg-muted/50 md:min-h-min"></div>
50
+ </div>
51
+ </ui-sidebar-inset>
52
+ ${appSidebar({ side: 'right' })}
53
+ </ui-sidebar-provider>
54
+ `;
55
+ }
@@ -0,0 +1,53 @@
1
+ /**
2
+ * The sidebar-15 calendars list: one collapsible group per set of calendars,
3
+ * each calendar a menu button with a check box drawn beside its name. A
4
+ * fragment helper; each group is a native `<details>`, so it opens and closes
5
+ * with no JavaScript. Ported from shadcn/ui's sidebar-15.
6
+ *
7
+ * The boxes are decoration, as in shadcn: the first two calendars of a group
8
+ * render checked. Turn each button into a real control (a checkbox in a form,
9
+ * or a link that toggles the calendar) when you wire it to your data.
10
+ */
11
+ import { html } from '@webjsdev/core';
12
+ import { cn } from '../../../lib/utils.ts';
13
+ import { collapsibleClass, collapsibleContentClass } from '../../../components/collapsible.ts';
14
+ import {
15
+ sidebarGroupClass,
16
+ sidebarGroupContentClass,
17
+ sidebarGroupLabelClass,
18
+ sidebarMenuButtonClass,
19
+ sidebarMenuClass,
20
+ sidebarMenuItemClass,
21
+ sidebarSeparatorClass,
22
+ } from '../../../components/sidebar.ts';
23
+ import { CheckIcon, ChevronRightIcon } from '../../../lib/icons.ts';
24
+
25
+ export function calendars({ calendars }: { calendars: { name: string; items: string[] }[] }) {
26
+ return calendars.map((calendar, index) => html`
27
+ <div data-slot="sidebar-group" data-sidebar="group" class=${sidebarGroupClass()}>
28
+ <details data-slot="collapsible" class=${cn(collapsibleClass(), 'group/collapsible')} ?open=${index === 0}>
29
+ <summary data-slot="sidebar-group-label" data-sidebar="group-label" class=${cn(sidebarGroupLabelClass(), 'group/label w-full cursor-pointer list-none text-sm text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground [&::-webkit-details-marker]:hidden')}>
30
+ ${calendar.name}
31
+ ${ChevronRightIcon('ml-auto transition-transform group-open/collapsible:rotate-90')}
32
+ </summary>
33
+ <div data-slot="collapsible-content" class=${collapsibleContentClass()}>
34
+ <div data-slot="sidebar-group-content" data-sidebar="group-content" class=${sidebarGroupContentClass()}>
35
+ <ul data-slot="sidebar-menu" data-sidebar="menu" class=${sidebarMenuClass()}>
36
+ ${calendar.items.map((item, i) => html`
37
+ <li data-slot="sidebar-menu-item" data-sidebar="menu-item" class=${sidebarMenuItemClass()}>
38
+ <button type="button" data-slot="sidebar-menu-button" data-sidebar="menu-button" data-size="default" class=${sidebarMenuButtonClass()}>
39
+ <div data-active=${i < 2 ? 'true' : 'false'} class="group/calendar-item flex aspect-square size-4 shrink-0 items-center justify-center rounded-xs border border-sidebar-border text-sidebar-primary-foreground data-[active=true]:border-sidebar-primary data-[active=true]:bg-sidebar-primary">
40
+ ${CheckIcon('hidden size-3 group-data-[active=true]/calendar-item:block')}
41
+ </div>
42
+ ${item}
43
+ </button>
44
+ </li>
45
+ `)}
46
+ </ul>
47
+ </div>
48
+ </div>
49
+ </details>
50
+ </div>
51
+ <div role="none" data-slot="sidebar-separator" data-sidebar="separator" data-orientation="horizontal" class=${cn(sidebarSeparatorClass(), 'mx-0')}></div>
52
+ `);
53
+ }
@@ -0,0 +1,26 @@
1
+ /**
2
+ * The sidebar-15 date picker: the kit's `<ui-calendar>` with month and year
3
+ * dropdowns, in a sidebar group. A fragment helper; the calendar is rendered
4
+ * by the server and picking a day needs JavaScript. Ported from shadcn/ui's
5
+ * sidebar-15.
6
+ *
7
+ * It opens on the 12th of the current month, as shadcn's does. Listen for
8
+ * `ui-value-change` on the calendar, or give it a `name` inside a form, to use
9
+ * the chosen date.
10
+ */
11
+ import { html } from '@webjsdev/core';
12
+ import { cn } from '../../../lib/utils.ts';
13
+ import '../../../components/calendar.ts';
14
+ import { sidebarGroupClass, sidebarGroupContentClass } from '../../../components/sidebar.ts';
15
+
16
+ export function datePicker() {
17
+ const now = new Date();
18
+ const value = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, '0')}-12`;
19
+ return html`
20
+ <div data-slot="sidebar-group" data-sidebar="group" class=${cn(sidebarGroupClass(), 'px-0')}>
21
+ <div data-slot="sidebar-group-content" data-sidebar="group-content" class=${sidebarGroupContentClass()}>
22
+ <ui-calendar mode="single" value=${value} caption-layout="dropdown" class="**:data-[slot=calendar]:bg-transparent **:data-[slot=calendar]:[--cell-size:2.1rem]"></ui-calendar>
23
+ </div>
24
+ </div>
25
+ `;
26
+ }