@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,276 @@
1
+ /**
2
+ * The dashboard-01 visitors chart: a stacked area chart of desktop and mobile
3
+ * visitors, with a time-range control (a toggle group on a wide card, a
4
+ * select on a narrow one) that narrows it to the last 3 months, 30 days or 7
5
+ * days. Ported from shadcn/ui's dashboard-01.
6
+ *
7
+ * The server draws all three ranges with the kit's `areaChart` and shows the
8
+ * 3-month one, so the first paint is the complete chart and it reads with
9
+ * JavaScript off. The `<dashboard-01-chart-range>` element below only swaps
10
+ * which range is shown and keeps the two controls in step. shadcn also starts
11
+ * a phone on the 7-day range; here a phone starts on 3 months like any other
12
+ * screen, since the server cannot know the width.
13
+ *
14
+ * Options: `range` picks the range shown first (`'90d'` by default), and
15
+ * `tooltipIndex` shows the tooltip at that point from the first paint
16
+ * (Recharts' `defaultIndex`; none by default).
17
+ *
18
+ * The figures are sample data. Query your own on the server and pass them to
19
+ * the chart the same way.
20
+ */
21
+ import { WebComponent, html, svg } from '@webjsdev/core';
22
+ import { cn } from '../../../lib/utils.ts';
23
+ import {
24
+ cardActionClass,
25
+ cardClass,
26
+ cardContentClass,
27
+ cardDescriptionClass,
28
+ cardHeaderClass,
29
+ cardTitleClass,
30
+ } from '../../../components/card.ts';
31
+ import { areaChart, type ChartConfig } from '../../../components/chart.ts';
32
+ import { selectTriggerClass } from '../../../components/select.ts';
33
+ import '../../../components/select.ts';
34
+ import '../../../components/toggle-group.ts';
35
+
36
+ export const description = 'An interactive area chart';
37
+
38
+ const chartData: { date: string; desktop: number; mobile: number }[] = [
39
+ { date: '2024-04-01', desktop: 222, mobile: 150 },
40
+ { date: '2024-04-02', desktop: 97, mobile: 180 },
41
+ { date: '2024-04-03', desktop: 167, mobile: 120 },
42
+ { date: '2024-04-04', desktop: 242, mobile: 260 },
43
+ { date: '2024-04-05', desktop: 373, mobile: 290 },
44
+ { date: '2024-04-06', desktop: 301, mobile: 340 },
45
+ { date: '2024-04-07', desktop: 245, mobile: 180 },
46
+ { date: '2024-04-08', desktop: 409, mobile: 320 },
47
+ { date: '2024-04-09', desktop: 59, mobile: 110 },
48
+ { date: '2024-04-10', desktop: 261, mobile: 190 },
49
+ { date: '2024-04-11', desktop: 327, mobile: 350 },
50
+ { date: '2024-04-12', desktop: 292, mobile: 210 },
51
+ { date: '2024-04-13', desktop: 342, mobile: 380 },
52
+ { date: '2024-04-14', desktop: 137, mobile: 220 },
53
+ { date: '2024-04-15', desktop: 120, mobile: 170 },
54
+ { date: '2024-04-16', desktop: 138, mobile: 190 },
55
+ { date: '2024-04-17', desktop: 446, mobile: 360 },
56
+ { date: '2024-04-18', desktop: 364, mobile: 410 },
57
+ { date: '2024-04-19', desktop: 243, mobile: 180 },
58
+ { date: '2024-04-20', desktop: 89, mobile: 150 },
59
+ { date: '2024-04-21', desktop: 137, mobile: 200 },
60
+ { date: '2024-04-22', desktop: 224, mobile: 170 },
61
+ { date: '2024-04-23', desktop: 138, mobile: 230 },
62
+ { date: '2024-04-24', desktop: 387, mobile: 290 },
63
+ { date: '2024-04-25', desktop: 215, mobile: 250 },
64
+ { date: '2024-04-26', desktop: 75, mobile: 130 },
65
+ { date: '2024-04-27', desktop: 383, mobile: 420 },
66
+ { date: '2024-04-28', desktop: 122, mobile: 180 },
67
+ { date: '2024-04-29', desktop: 315, mobile: 240 },
68
+ { date: '2024-04-30', desktop: 454, mobile: 380 },
69
+ { date: '2024-05-01', desktop: 165, mobile: 220 },
70
+ { date: '2024-05-02', desktop: 293, mobile: 310 },
71
+ { date: '2024-05-03', desktop: 247, mobile: 190 },
72
+ { date: '2024-05-04', desktop: 385, mobile: 420 },
73
+ { date: '2024-05-05', desktop: 481, mobile: 390 },
74
+ { date: '2024-05-06', desktop: 498, mobile: 520 },
75
+ { date: '2024-05-07', desktop: 388, mobile: 300 },
76
+ { date: '2024-05-08', desktop: 149, mobile: 210 },
77
+ { date: '2024-05-09', desktop: 227, mobile: 180 },
78
+ { date: '2024-05-10', desktop: 293, mobile: 330 },
79
+ { date: '2024-05-11', desktop: 335, mobile: 270 },
80
+ { date: '2024-05-12', desktop: 197, mobile: 240 },
81
+ { date: '2024-05-13', desktop: 197, mobile: 160 },
82
+ { date: '2024-05-14', desktop: 448, mobile: 490 },
83
+ { date: '2024-05-15', desktop: 473, mobile: 380 },
84
+ { date: '2024-05-16', desktop: 338, mobile: 400 },
85
+ { date: '2024-05-17', desktop: 499, mobile: 420 },
86
+ { date: '2024-05-18', desktop: 315, mobile: 350 },
87
+ { date: '2024-05-19', desktop: 235, mobile: 180 },
88
+ { date: '2024-05-20', desktop: 177, mobile: 230 },
89
+ { date: '2024-05-21', desktop: 82, mobile: 140 },
90
+ { date: '2024-05-22', desktop: 81, mobile: 120 },
91
+ { date: '2024-05-23', desktop: 252, mobile: 290 },
92
+ { date: '2024-05-24', desktop: 294, mobile: 220 },
93
+ { date: '2024-05-25', desktop: 201, mobile: 250 },
94
+ { date: '2024-05-26', desktop: 213, mobile: 170 },
95
+ { date: '2024-05-27', desktop: 420, mobile: 460 },
96
+ { date: '2024-05-28', desktop: 233, mobile: 190 },
97
+ { date: '2024-05-29', desktop: 78, mobile: 130 },
98
+ { date: '2024-05-30', desktop: 340, mobile: 280 },
99
+ { date: '2024-05-31', desktop: 178, mobile: 230 },
100
+ { date: '2024-06-01', desktop: 178, mobile: 200 },
101
+ { date: '2024-06-02', desktop: 470, mobile: 410 },
102
+ { date: '2024-06-03', desktop: 103, mobile: 160 },
103
+ { date: '2024-06-04', desktop: 439, mobile: 380 },
104
+ { date: '2024-06-05', desktop: 88, mobile: 140 },
105
+ { date: '2024-06-06', desktop: 294, mobile: 250 },
106
+ { date: '2024-06-07', desktop: 323, mobile: 370 },
107
+ { date: '2024-06-08', desktop: 385, mobile: 320 },
108
+ { date: '2024-06-09', desktop: 438, mobile: 480 },
109
+ { date: '2024-06-10', desktop: 155, mobile: 200 },
110
+ { date: '2024-06-11', desktop: 92, mobile: 150 },
111
+ { date: '2024-06-12', desktop: 492, mobile: 420 },
112
+ { date: '2024-06-13', desktop: 81, mobile: 130 },
113
+ { date: '2024-06-14', desktop: 426, mobile: 380 },
114
+ { date: '2024-06-15', desktop: 307, mobile: 350 },
115
+ { date: '2024-06-16', desktop: 371, mobile: 310 },
116
+ { date: '2024-06-17', desktop: 475, mobile: 520 },
117
+ { date: '2024-06-18', desktop: 107, mobile: 170 },
118
+ { date: '2024-06-19', desktop: 341, mobile: 290 },
119
+ { date: '2024-06-20', desktop: 408, mobile: 450 },
120
+ { date: '2024-06-21', desktop: 169, mobile: 210 },
121
+ { date: '2024-06-22', desktop: 317, mobile: 270 },
122
+ { date: '2024-06-23', desktop: 480, mobile: 530 },
123
+ { date: '2024-06-24', desktop: 132, mobile: 180 },
124
+ { date: '2024-06-25', desktop: 141, mobile: 190 },
125
+ { date: '2024-06-26', desktop: 434, mobile: 380 },
126
+ { date: '2024-06-27', desktop: 448, mobile: 490 },
127
+ { date: '2024-06-28', desktop: 149, mobile: 200 },
128
+ { date: '2024-06-29', desktop: 103, mobile: 160 },
129
+ { date: '2024-06-30', desktop: 446, mobile: 400 },
130
+ ];
131
+
132
+ const chartConfig = {
133
+ visitors: {
134
+ label: 'Visitors',
135
+ },
136
+ desktop: {
137
+ label: 'Desktop',
138
+ color: 'var(--primary)',
139
+ },
140
+ mobile: {
141
+ label: 'Mobile',
142
+ color: 'var(--primary)',
143
+ },
144
+ } satisfies ChartConfig;
145
+
146
+ export type ChartRange = '90d' | '30d' | '7d';
147
+
148
+ const RANGES: { value: ChartRange; days: number; label: string }[] = [
149
+ { value: '90d', days: 90, label: 'Last 3 months' },
150
+ { value: '30d', days: 30, label: 'Last 30 days' },
151
+ { value: '7d', days: 7, label: 'Last 7 days' },
152
+ ];
153
+
154
+ const DAY = 24 * 60 * 60 * 1000;
155
+ const REFERENCE = Date.parse('2024-06-30');
156
+
157
+ // The dates are calendar dates, so they are read and written in UTC: a server
158
+ // west of Greenwich would otherwise print every tick a day early.
159
+ const shortDate = (value: unknown) =>
160
+ new Date(String(value)).toLocaleDateString('en-US', { month: 'short', day: 'numeric', timeZone: 'UTC' });
161
+
162
+ function rangeChart(range: (typeof RANGES)[number], tooltipIndex?: number) {
163
+ const start = REFERENCE - range.days * DAY;
164
+ const data = chartData.filter((item) => Date.parse(item.date) >= start);
165
+ // Gradient ids are per range, since all three charts sit on one page.
166
+ const desktop = `fillDesktop-${range.value}`;
167
+ const mobile = `fillMobile-${range.value}`;
168
+ return areaChart({
169
+ config: chartConfig,
170
+ data,
171
+ title: `Desktop and mobile visitors, ${range.label.toLowerCase()}`,
172
+ class: 'aspect-auto h-[250px] w-full',
173
+ width: 1046,
174
+ height: 250,
175
+ defs: svg`
176
+ <linearGradient id=${desktop} x1="0" y1="0" x2="0" y2="1">
177
+ <stop offset="5%" stop-color="var(--color-desktop)" stop-opacity="1"></stop>
178
+ <stop offset="95%" stop-color="var(--color-desktop)" stop-opacity="0.1"></stop>
179
+ </linearGradient>
180
+ <linearGradient id=${mobile} x1="0" y1="0" x2="0" y2="1">
181
+ <stop offset="5%" stop-color="var(--color-mobile)" stop-opacity="0.8"></stop>
182
+ <stop offset="95%" stop-color="var(--color-mobile)" stop-opacity="0.1"></stop>
183
+ </linearGradient>
184
+ `,
185
+ grid: { vertical: false },
186
+ xAxis: { dataKey: 'date', tickLine: false, axisLine: false, tickMargin: 8, minTickGap: 32, tickFormatter: shortDate },
187
+ tooltip: { cursor: false, indicator: 'dot', labelFormatter: shortDate, defaultIndex: tooltipIndex },
188
+ areas: [
189
+ { dataKey: 'mobile', type: 'natural', fill: `url(#${mobile})`, stroke: 'var(--color-mobile)', stackId: 'a' },
190
+ { dataKey: 'desktop', type: 'natural', fill: `url(#${desktop})`, stroke: 'var(--color-desktop)', stackId: 'a' },
191
+ ],
192
+ });
193
+ }
194
+
195
+ export function chartAreaInteractive(opts: { range?: ChartRange; tooltipIndex?: number } = {}) {
196
+ const initial = RANGES.some((r) => r.value === opts.range) ? opts.range! : '90d';
197
+ return html`
198
+ <dashboard-01-chart-range>
199
+ <div data-slot="card" data-size="default" class=${cn(cardClass(), '@container/card')}>
200
+ <div data-slot="card-header" class=${cardHeaderClass()}>
201
+ <div data-slot="card-title" class=${cardTitleClass()}>Total Visitors</div>
202
+ <div data-slot="card-description" class=${cardDescriptionClass()}>
203
+ <span class="hidden @[540px]/card:block">Total for the last 3 months</span>
204
+ <span class="@[540px]/card:hidden">Last 3 months</span>
205
+ </div>
206
+ <div data-slot="card-action" class=${cardActionClass()}>
207
+ <ui-toggle-group type="single" value=${initial} variant="outline" spacing="0" class="hidden *:data-[slot=toggle-group-item]:px-4! @[767px]/card:flex">
208
+ ${RANGES.map((r) => html`<ui-toggle-group-item value=${r.value}>${r.label}</ui-toggle-group-item>`)}
209
+ </ui-toggle-group>
210
+ <ui-select size="sm">
211
+ <select aria-label="Select a value" class=${cn(selectTriggerClass(), 'flex w-40 **:data-[slot=select-value]:block **:data-[slot=select-value]:truncate @[767px]/card:hidden')}>
212
+ ${RANGES.map((r) => html`<option value=${r.value} ?selected=${r.value === initial}>${r.label}</option>`)}
213
+ </select>
214
+ </ui-select>
215
+ </div>
216
+ </div>
217
+ <div data-slot="card-content" class=${cn(cardContentClass(), 'px-2 pt-4 sm:px-6 sm:pt-6')}>
218
+ ${RANGES.map((r) => html`<div data-range=${r.value} ?hidden=${r.value !== initial}>${rangeChart(r, opts.tooltipIndex)}</div>`)}
219
+ </div>
220
+ </div>
221
+ </dashboard-01-chart-range>
222
+ `;
223
+ }
224
+
225
+ /**
226
+ * `<dashboard-01-chart-range>`: shows the range the toggle group or the select
227
+ * picks, and moves the other control to match. The charts themselves are the
228
+ * server's; nothing is redrawn here.
229
+ */
230
+ export class Dashboard01ChartRange extends WebComponent {
231
+ connectedCallback() {
232
+ super.connectedCallback();
233
+ this.addEventListener('ui-value-change', this._onToggle);
234
+ this.addEventListener('change', this._onSelect);
235
+ }
236
+
237
+ disconnectedCallback() {
238
+ this.removeEventListener('ui-value-change', this._onToggle);
239
+ this.removeEventListener('change', this._onSelect);
240
+ super.disconnectedCallback();
241
+ }
242
+
243
+ _show(value: string): void {
244
+ if (!RANGES.some((r) => r.value === value)) return;
245
+ for (const panel of Array.from(this.querySelectorAll<HTMLElement>('[data-range]'))) {
246
+ panel.hidden = panel.dataset.range !== value;
247
+ }
248
+ const group = this.querySelector('ui-toggle-group') as (HTMLElement & { value: string }) | null;
249
+ if (group && group.value !== value) group.value = value;
250
+ const select = this.querySelector<HTMLSelectElement>('ui-select select');
251
+ if (select && select.value !== value) {
252
+ select.value = value;
253
+ select.dispatchEvent(new Event('change', { bubbles: true }));
254
+ }
255
+ }
256
+
257
+ // A single toggle group can be emptied by pressing the active item; the
258
+ // range then stays where it was, so put the pressed state back.
259
+ _onToggle = (e: Event): void => {
260
+ const target = e.target as Element;
261
+ if (target.tagName !== 'UI-TOGGLE-GROUP') return;
262
+ const value = String((e as CustomEvent<{ value: string }>).detail?.value ?? '');
263
+ if (value) this._show(value);
264
+ else this._show(this.querySelector<HTMLElement>('[data-range]:not([hidden])')?.dataset.range ?? '90d');
265
+ };
266
+
267
+ _onSelect = (e: Event): void => {
268
+ const select = e.target as HTMLSelectElement;
269
+ if (select.tagName === 'SELECT') this._show(select.value);
270
+ };
271
+
272
+ render() {
273
+ return html`<slot></slot>`;
274
+ }
275
+ }
276
+ Dashboard01ChartRange.register('dashboard-01-chart-range');
@@ -0,0 +1,89 @@
1
+ /**
2
+ * The dashboard-01 sample data: the outline sections the data table lists.
3
+ * Installed by `npx @webjsdev/ui add dashboard-01` at
4
+ * `components/dashboard-data.ts`. Replace it with your own rows, typically a
5
+ * query in a `'use server'` file whose result the page passes to
6
+ * `dataTable({ data })`. Ported from shadcn/ui's dashboard-01 data.json.
7
+ */
8
+
9
+ /** One row of the table, shadcn's zod `schema` as a type. */
10
+ export interface DashboardRow {
11
+ id: number;
12
+ header: string;
13
+ type: string;
14
+ status: string;
15
+ target: string;
16
+ limit: string;
17
+ reviewer: string;
18
+ }
19
+
20
+ export const dashboardData: DashboardRow[] = [
21
+ { id: 1, header: 'Cover page', type: 'Cover page', status: 'In Process', target: '18', limit: '5', reviewer: 'Eddie Lake' },
22
+ { id: 2, header: 'Table of contents', type: 'Table of contents', status: 'Done', target: '29', limit: '24', reviewer: 'Eddie Lake' },
23
+ { id: 3, header: 'Executive summary', type: 'Narrative', status: 'Done', target: '10', limit: '13', reviewer: 'Eddie Lake' },
24
+ { id: 4, header: 'Technical approach', type: 'Narrative', status: 'Done', target: '27', limit: '23', reviewer: 'Jamik Tashpulatov' },
25
+ { id: 5, header: 'Design', type: 'Narrative', status: 'In Process', target: '2', limit: '16', reviewer: 'Jamik Tashpulatov' },
26
+ { id: 6, header: 'Capabilities', type: 'Narrative', status: 'In Process', target: '20', limit: '8', reviewer: 'Jamik Tashpulatov' },
27
+ { id: 7, header: 'Integration with existing systems', type: 'Narrative', status: 'In Process', target: '19', limit: '21', reviewer: 'Jamik Tashpulatov' },
28
+ { id: 8, header: 'Innovation and Advantages', type: 'Narrative', status: 'Done', target: '25', limit: '26', reviewer: 'Assign reviewer' },
29
+ { id: 9, header: 'Overview of EMR\'s Innovative Solutions', type: 'Technical content', status: 'Done', target: '7', limit: '23', reviewer: 'Assign reviewer' },
30
+ { id: 10, header: 'Advanced Algorithms and Machine Learning', type: 'Narrative', status: 'Done', target: '30', limit: '28', reviewer: 'Assign reviewer' },
31
+ { id: 11, header: 'Adaptive Communication Protocols', type: 'Narrative', status: 'Done', target: '9', limit: '31', reviewer: 'Assign reviewer' },
32
+ { id: 12, header: 'Advantages Over Current Technologies', type: 'Narrative', status: 'Done', target: '12', limit: '0', reviewer: 'Assign reviewer' },
33
+ { id: 13, header: 'Past Performance', type: 'Narrative', status: 'Done', target: '22', limit: '33', reviewer: 'Assign reviewer' },
34
+ { id: 14, header: 'Customer Feedback and Satisfaction Levels', type: 'Narrative', status: 'Done', target: '15', limit: '34', reviewer: 'Assign reviewer' },
35
+ { id: 15, header: 'Implementation Challenges and Solutions', type: 'Narrative', status: 'Done', target: '3', limit: '35', reviewer: 'Assign reviewer' },
36
+ { id: 16, header: 'Security Measures and Data Protection Policies', type: 'Narrative', status: 'In Process', target: '6', limit: '36', reviewer: 'Assign reviewer' },
37
+ { id: 17, header: 'Scalability and Future Proofing', type: 'Narrative', status: 'Done', target: '4', limit: '37', reviewer: 'Assign reviewer' },
38
+ { id: 18, header: 'Cost-Benefit Analysis', type: 'Plain language', status: 'Done', target: '14', limit: '38', reviewer: 'Assign reviewer' },
39
+ { id: 19, header: 'User Training and Onboarding Experience', type: 'Narrative', status: 'Done', target: '17', limit: '39', reviewer: 'Assign reviewer' },
40
+ { id: 20, header: 'Future Development Roadmap', type: 'Narrative', status: 'Done', target: '11', limit: '40', reviewer: 'Assign reviewer' },
41
+ { id: 21, header: 'System Architecture Overview', type: 'Technical content', status: 'In Process', target: '24', limit: '18', reviewer: 'Maya Johnson' },
42
+ { id: 22, header: 'Risk Management Plan', type: 'Narrative', status: 'Done', target: '15', limit: '22', reviewer: 'Carlos Rodriguez' },
43
+ { id: 23, header: 'Compliance Documentation', type: 'Legal', status: 'In Process', target: '31', limit: '27', reviewer: 'Sarah Chen' },
44
+ { id: 24, header: 'API Documentation', type: 'Technical content', status: 'Done', target: '8', limit: '12', reviewer: 'Raj Patel' },
45
+ { id: 25, header: 'User Interface Mockups', type: 'Visual', status: 'In Process', target: '19', limit: '25', reviewer: 'Leila Ahmadi' },
46
+ { id: 26, header: 'Database Schema', type: 'Technical content', status: 'Done', target: '22', limit: '20', reviewer: 'Thomas Wilson' },
47
+ { id: 27, header: 'Testing Methodology', type: 'Technical content', status: 'In Process', target: '17', limit: '14', reviewer: 'Assign reviewer' },
48
+ { id: 28, header: 'Deployment Strategy', type: 'Narrative', status: 'Done', target: '26', limit: '30', reviewer: 'Eddie Lake' },
49
+ { id: 29, header: 'Budget Breakdown', type: 'Financial', status: 'In Process', target: '13', limit: '16', reviewer: 'Jamik Tashpulatov' },
50
+ { id: 30, header: 'Market Analysis', type: 'Research', status: 'Done', target: '29', limit: '32', reviewer: 'Sophia Martinez' },
51
+ { id: 31, header: 'Competitor Comparison', type: 'Research', status: 'In Process', target: '21', limit: '19', reviewer: 'Assign reviewer' },
52
+ { id: 32, header: 'Maintenance Plan', type: 'Technical content', status: 'Done', target: '16', limit: '23', reviewer: 'Alex Thompson' },
53
+ { id: 33, header: 'User Personas', type: 'Research', status: 'In Process', target: '27', limit: '24', reviewer: 'Nina Patel' },
54
+ { id: 34, header: 'Accessibility Compliance', type: 'Legal', status: 'Done', target: '18', limit: '21', reviewer: 'Assign reviewer' },
55
+ { id: 35, header: 'Performance Metrics', type: 'Technical content', status: 'In Process', target: '23', limit: '26', reviewer: 'David Kim' },
56
+ { id: 36, header: 'Disaster Recovery Plan', type: 'Technical content', status: 'Done', target: '14', limit: '17', reviewer: 'Jamik Tashpulatov' },
57
+ { id: 37, header: 'Third-party Integrations', type: 'Technical content', status: 'In Process', target: '25', limit: '28', reviewer: 'Eddie Lake' },
58
+ { id: 38, header: 'User Feedback Summary', type: 'Research', status: 'Done', target: '20', limit: '15', reviewer: 'Assign reviewer' },
59
+ { id: 39, header: 'Localization Strategy', type: 'Narrative', status: 'In Process', target: '12', limit: '19', reviewer: 'Maria Garcia' },
60
+ { id: 40, header: 'Mobile Compatibility', type: 'Technical content', status: 'Done', target: '28', limit: '31', reviewer: 'James Wilson' },
61
+ { id: 41, header: 'Data Migration Plan', type: 'Technical content', status: 'In Process', target: '19', limit: '22', reviewer: 'Assign reviewer' },
62
+ { id: 42, header: 'Quality Assurance Protocols', type: 'Technical content', status: 'Done', target: '30', limit: '33', reviewer: 'Priya Singh' },
63
+ { id: 43, header: 'Stakeholder Analysis', type: 'Research', status: 'In Process', target: '11', limit: '14', reviewer: 'Eddie Lake' },
64
+ { id: 44, header: 'Environmental Impact Assessment', type: 'Research', status: 'Done', target: '24', limit: '27', reviewer: 'Assign reviewer' },
65
+ { id: 45, header: 'Intellectual Property Rights', type: 'Legal', status: 'In Process', target: '17', limit: '20', reviewer: 'Sarah Johnson' },
66
+ { id: 46, header: 'Customer Support Framework', type: 'Narrative', status: 'Done', target: '22', limit: '25', reviewer: 'Jamik Tashpulatov' },
67
+ { id: 47, header: 'Version Control Strategy', type: 'Technical content', status: 'In Process', target: '15', limit: '18', reviewer: 'Assign reviewer' },
68
+ { id: 48, header: 'Continuous Integration Pipeline', type: 'Technical content', status: 'Done', target: '26', limit: '29', reviewer: 'Michael Chen' },
69
+ { id: 49, header: 'Regulatory Compliance', type: 'Legal', status: 'In Process', target: '13', limit: '16', reviewer: 'Assign reviewer' },
70
+ { id: 50, header: 'User Authentication System', type: 'Technical content', status: 'Done', target: '28', limit: '31', reviewer: 'Eddie Lake' },
71
+ { id: 51, header: 'Data Analytics Framework', type: 'Technical content', status: 'In Process', target: '21', limit: '24', reviewer: 'Jamik Tashpulatov' },
72
+ { id: 52, header: 'Cloud Infrastructure', type: 'Technical content', status: 'Done', target: '16', limit: '19', reviewer: 'Assign reviewer' },
73
+ { id: 53, header: 'Network Security Measures', type: 'Technical content', status: 'In Process', target: '29', limit: '32', reviewer: 'Lisa Wong' },
74
+ { id: 54, header: 'Project Timeline', type: 'Planning', status: 'Done', target: '14', limit: '17', reviewer: 'Eddie Lake' },
75
+ { id: 55, header: 'Resource Allocation', type: 'Planning', status: 'In Process', target: '27', limit: '30', reviewer: 'Assign reviewer' },
76
+ { id: 56, header: 'Team Structure and Roles', type: 'Planning', status: 'Done', target: '20', limit: '23', reviewer: 'Jamik Tashpulatov' },
77
+ { id: 57, header: 'Communication Protocols', type: 'Planning', status: 'In Process', target: '15', limit: '18', reviewer: 'Assign reviewer' },
78
+ { id: 58, header: 'Success Metrics', type: 'Planning', status: 'Done', target: '30', limit: '33', reviewer: 'Eddie Lake' },
79
+ { id: 59, header: 'Internationalization Support', type: 'Technical content', status: 'In Process', target: '23', limit: '26', reviewer: 'Jamik Tashpulatov' },
80
+ { id: 60, header: 'Backup and Recovery Procedures', type: 'Technical content', status: 'Done', target: '18', limit: '21', reviewer: 'Assign reviewer' },
81
+ { id: 61, header: 'Monitoring and Alerting System', type: 'Technical content', status: 'In Process', target: '25', limit: '28', reviewer: 'Daniel Park' },
82
+ { id: 62, header: 'Code Review Guidelines', type: 'Technical content', status: 'Done', target: '12', limit: '15', reviewer: 'Eddie Lake' },
83
+ { id: 63, header: 'Documentation Standards', type: 'Technical content', status: 'In Process', target: '27', limit: '30', reviewer: 'Jamik Tashpulatov' },
84
+ { id: 64, header: 'Release Management Process', type: 'Planning', status: 'Done', target: '22', limit: '25', reviewer: 'Assign reviewer' },
85
+ { id: 65, header: 'Feature Prioritization Matrix', type: 'Planning', status: 'In Process', target: '19', limit: '22', reviewer: 'Emma Davis' },
86
+ { id: 66, header: 'Technical Debt Assessment', type: 'Technical content', status: 'Done', target: '24', limit: '27', reviewer: 'Eddie Lake' },
87
+ { id: 67, header: 'Capacity Planning', type: 'Planning', status: 'In Process', target: '21', limit: '24', reviewer: 'Jamik Tashpulatov' },
88
+ { id: 68, header: 'Service Level Agreements', type: 'Legal', status: 'Done', target: '26', limit: '29', reviewer: 'Assign reviewer' },
89
+ ];