@reinvented/design 0.4.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (439) hide show
  1. package/README.md +1 -1
  2. package/SKILL.md +214 -0
  3. package/package.json +58 -23
  4. package/skills/apps/analytics.md +103 -0
  5. package/skills/apps/booking-scheduling.md +97 -0
  6. package/skills/apps/content-management.md +52 -0
  7. package/skills/apps/crm.md +80 -0
  8. package/skills/apps/e-commerce.md +109 -0
  9. package/skills/apps/education.md +79 -0
  10. package/skills/apps/finance.md +68 -0
  11. package/skills/apps/health-fitness.md +72 -0
  12. package/skills/apps/marketplace.md +99 -0
  13. package/skills/apps/messaging.md +84 -0
  14. package/skills/apps/portfolio-personal.md +90 -0
  15. package/skills/apps/project-management.md +95 -0
  16. package/skills/apps/saas-dashboard.md +104 -0
  17. package/skills/apps/social-platform.md +50 -0
  18. package/skills/blocks/auth.md +106 -0
  19. package/skills/blocks/communication.md +98 -0
  20. package/skills/blocks/content.md +107 -0
  21. package/skills/blocks/data-management.md +109 -0
  22. package/skills/blocks/data-viz.md +92 -0
  23. package/skills/blocks/ecommerce.md +126 -0
  24. package/skills/blocks/feedback.md +97 -0
  25. package/skills/blocks/filtering.md +127 -0
  26. package/skills/blocks/marketing.md +136 -0
  27. package/skills/blocks/media.md +102 -0
  28. package/skills/blocks/navigation.md +136 -0
  29. package/skills/blocks/onboarding.md +75 -0
  30. package/skills/blocks/profiles.md +131 -0
  31. package/skills/blocks/scheduling.md +117 -0
  32. package/skills/blocks/settings.md +102 -0
  33. package/skills/components/advanced-components.md +142 -0
  34. package/skills/components/avatar.md +92 -0
  35. package/skills/components/badge.md +105 -0
  36. package/skills/components/button.md +87 -0
  37. package/skills/components/card.md +144 -0
  38. package/skills/components/chart.md +88 -0
  39. package/skills/components/dialog.md +109 -0
  40. package/skills/components/dropdown-menu.md +117 -0
  41. package/skills/components/extended-components.md +187 -0
  42. package/skills/components/feedback.md +165 -0
  43. package/skills/components/form.md +112 -0
  44. package/skills/components/input.md +107 -0
  45. package/skills/components/map.md +53 -0
  46. package/skills/components/navigation.md +73 -0
  47. package/skills/components/overlay.md +77 -0
  48. package/skills/components/page-header.md +51 -0
  49. package/skills/components/select.md +175 -0
  50. package/skills/components/table.md +102 -0
  51. package/skills/components/tabs.md +105 -0
  52. package/skills/components/utilities.md +138 -0
  53. package/skills/devices/desktop.md +43 -0
  54. package/skills/devices/mobile.md +77 -0
  55. package/skills/foundation/design-principles.md +77 -0
  56. package/skills/foundation/design-tokens.md +121 -0
  57. package/skills/foundation/mockup-generation.md +118 -0
  58. package/skills/foundation/rules.md +54 -0
  59. package/skills/foundation/tailwind-usage.md +204 -0
  60. package/skills/layouts/dashboard.md +71 -0
  61. package/skills/layouts/full-page-form.md +75 -0
  62. package/skills/layouts/list-detail.md +70 -0
  63. package/skills/layouts/marketing.md +70 -0
  64. package/skills/layouts/responsive.md +67 -0
  65. package/skills/layouts/settings-page.md +106 -0
  66. package/skills/layouts/sidebar.md +73 -0
  67. package/skills/layouts/topbar.md +68 -0
  68. package/skills/patterns/auth.md +131 -0
  69. package/skills/patterns/content-display.md +164 -0
  70. package/skills/patterns/dashboards.md +104 -0
  71. package/skills/patterns/data-tables.md +113 -0
  72. package/skills/patterns/empty-states.md +71 -0
  73. package/skills/patterns/error-states.md +73 -0
  74. package/skills/patterns/forms.md +136 -0
  75. package/skills/patterns/loading-states.md +92 -0
  76. package/skills/patterns/navigation.md +113 -0
  77. package/skills/patterns/notifications.md +91 -0
  78. package/skills/patterns/onboarding.md +42 -0
  79. package/skills/patterns/search.md +55 -0
  80. package/skills/patterns/settings.md +132 -0
  81. package/skills/patterns/user-profiles.md +67 -0
  82. package/skills/personas/business-operator.md +114 -0
  83. package/skills/personas/consumer-casual.md +60 -0
  84. package/skills/personas/consumer-power-user.md +109 -0
  85. package/skills/personas/creative-professional.md +109 -0
  86. package/skills/personas/enterprise-admin.md +134 -0
  87. package/skills/visual/color-usage.md +62 -0
  88. package/skills/visual/dark-mode.md +50 -0
  89. package/skills/visual/polish-techniques.md +101 -0
  90. package/skills/visual/spacing-composition.md +69 -0
  91. package/skills/visual/transitions-animations.md +66 -0
  92. package/skills/visual/typography-hierarchy.md +66 -0
  93. package/src/components/blocks/auth/auth-card/AuthCard.tsx +62 -0
  94. package/src/components/blocks/auth/auth-card/index.ts +1 -0
  95. package/src/components/blocks/auth/index.ts +3 -0
  96. package/src/components/blocks/auth/social-login/SocialLoginGroup.tsx +75 -0
  97. package/src/components/blocks/auth/social-login/index.ts +1 -0
  98. package/src/components/blocks/auth/two-factor/TwoFactorForm.tsx +59 -0
  99. package/src/components/blocks/auth/two-factor/index.ts +1 -0
  100. package/src/components/blocks/communication/activity-item/ActivityItem.tsx +17 -0
  101. package/src/components/blocks/communication/activity-item/ActivityItemAvatar.tsx +21 -0
  102. package/src/components/blocks/communication/activity-item/ActivityItemContent.tsx +16 -0
  103. package/src/components/blocks/communication/activity-item/index.ts +3 -0
  104. package/src/components/blocks/communication/chat-bubble/ChatBubble.tsx +21 -0
  105. package/src/components/blocks/communication/chat-bubble/ChatBubbleAvatar.tsx +19 -0
  106. package/src/components/blocks/communication/chat-bubble/ChatBubbleMessage.tsx +35 -0
  107. package/src/components/blocks/communication/chat-bubble/ChatBubbleTimestamp.tsx +15 -0
  108. package/src/components/blocks/communication/chat-bubble/index.ts +4 -0
  109. package/src/components/blocks/communication/index.ts +2 -0
  110. package/src/components/blocks/content/article-header/ArticleHeader.tsx +73 -0
  111. package/src/components/blocks/content/article-header/index.ts +1 -0
  112. package/src/components/blocks/content/author-card/AuthorCard.tsx +46 -0
  113. package/src/components/blocks/content/author-card/index.ts +1 -0
  114. package/src/components/blocks/content/index.ts +3 -0
  115. package/src/components/blocks/content/rich-text/RichTextContent.tsx +27 -0
  116. package/src/components/blocks/content/rich-text/index.ts +1 -0
  117. package/src/components/blocks/data-management/index.ts +2 -0
  118. package/src/components/blocks/data-management/kanban/KanbanBoard.tsx +10 -0
  119. package/src/components/blocks/data-management/kanban/KanbanCard.tsx +102 -0
  120. package/src/components/blocks/data-management/kanban/KanbanColumn.tsx +41 -0
  121. package/src/components/blocks/data-management/kanban/index.ts +3 -0
  122. package/src/components/blocks/data-management/tree-view/TreeItem.tsx +68 -0
  123. package/src/components/blocks/data-management/tree-view/TreeView.tsx +10 -0
  124. package/src/components/blocks/data-management/tree-view/index.ts +2 -0
  125. package/src/components/blocks/data-viz/financial-ticker/FinancialTicker.tsx +35 -0
  126. package/src/components/blocks/data-viz/financial-ticker/index.ts +1 -0
  127. package/src/components/blocks/data-viz/index.ts +3 -0
  128. package/src/components/blocks/data-viz/kpi-card/KpiCard.tsx +61 -0
  129. package/src/components/blocks/data-viz/kpi-card/index.ts +1 -0
  130. package/src/components/blocks/data-viz/stat-grid/StatGrid.tsx +28 -0
  131. package/src/components/blocks/data-viz/stat-grid/index.ts +1 -0
  132. package/src/components/blocks/ecommerce/index.ts +3 -0
  133. package/src/components/blocks/ecommerce/pricing-tier/PricingFeatureList.tsx +27 -0
  134. package/src/components/blocks/ecommerce/pricing-tier/PricingHeader.tsx +25 -0
  135. package/src/components/blocks/ecommerce/pricing-tier/PricingTier.tsx +31 -0
  136. package/src/components/blocks/ecommerce/pricing-tier/index.ts +3 -0
  137. package/src/components/blocks/ecommerce/product-card/ProductCard.tsx +17 -0
  138. package/src/components/blocks/ecommerce/product-card/ProductCardContent.tsx +15 -0
  139. package/src/components/blocks/ecommerce/product-card/ProductCardImage.tsx +20 -0
  140. package/src/components/blocks/ecommerce/product-card/ProductCardPrice.tsx +20 -0
  141. package/src/components/blocks/ecommerce/product-card/index.ts +4 -0
  142. package/src/components/blocks/ecommerce/rating-summary/RatingStars.tsx +32 -0
  143. package/src/components/blocks/ecommerce/rating-summary/index.ts +1 -0
  144. package/src/components/blocks/feedback/empty-state/EmptyState.tsx +53 -0
  145. package/src/components/blocks/feedback/empty-state/index.ts +1 -0
  146. package/src/components/blocks/feedback/error-state/ErrorState.tsx +50 -0
  147. package/src/components/blocks/feedback/error-state/index.ts +1 -0
  148. package/src/components/blocks/feedback/index.ts +3 -0
  149. package/src/components/blocks/feedback/not-found/NotFoundState.tsx +47 -0
  150. package/src/components/blocks/feedback/not-found/index.ts +1 -0
  151. package/src/components/blocks/filtering/faceted-sidebar/FacetedGroup.tsx +32 -0
  152. package/src/components/blocks/filtering/faceted-sidebar/FacetedSidebar.tsx +26 -0
  153. package/src/components/blocks/filtering/faceted-sidebar/index.ts +2 -0
  154. package/src/components/blocks/filtering/filter-bar/FilterBar.tsx +85 -0
  155. package/src/components/blocks/filtering/filter-bar/index.ts +1 -0
  156. package/src/components/blocks/filtering/index.ts +3 -0
  157. package/src/components/blocks/filtering/search-result/SearchResultItem.tsx +70 -0
  158. package/src/components/blocks/filtering/search-result/index.ts +1 -0
  159. package/src/components/blocks/index.ts +21 -0
  160. package/src/components/blocks/marketing/cta-block/CtaBlock.tsx +80 -0
  161. package/src/components/blocks/marketing/cta-block/index.ts +1 -0
  162. package/src/components/blocks/marketing/feature-grid/FeatureGrid.tsx +47 -0
  163. package/src/components/blocks/marketing/feature-grid/index.ts +1 -0
  164. package/src/components/blocks/marketing/hero-section/HeroSection.tsx +89 -0
  165. package/src/components/blocks/marketing/hero-section/index.ts +1 -0
  166. package/src/components/blocks/marketing/index.ts +4 -0
  167. package/src/components/blocks/marketing/testimonial-card/TestimonialCard.tsx +71 -0
  168. package/src/components/blocks/marketing/testimonial-card/index.ts +1 -0
  169. package/src/components/blocks/media/call-controls/CallControlButton.tsx +52 -0
  170. package/src/components/blocks/media/call-controls/CallControls.tsx +10 -0
  171. package/src/components/blocks/media/call-controls/index.ts +2 -0
  172. package/src/components/blocks/media/index.ts +2 -0
  173. package/src/components/blocks/media/media-player/MediaPlayer.tsx +20 -0
  174. package/src/components/blocks/media/media-player/MediaPlayerControls.tsx +16 -0
  175. package/src/components/blocks/media/media-player/MediaPlayerScrubber.tsx +29 -0
  176. package/src/components/blocks/media/media-player/MediaPlayerVideo.tsx +25 -0
  177. package/src/components/blocks/media/media-player/index.ts +4 -0
  178. package/src/components/blocks/navigation/app-sidebar/AppSidebar.tsx +32 -0
  179. package/src/components/blocks/navigation/app-sidebar/NavItem.tsx +43 -0
  180. package/src/components/blocks/navigation/app-sidebar/index.ts +2 -0
  181. package/src/components/blocks/navigation/context-switcher/ContextSwitcher.tsx +77 -0
  182. package/src/components/blocks/navigation/context-switcher/index.ts +1 -0
  183. package/src/components/blocks/navigation/index.ts +3 -0
  184. package/src/components/blocks/navigation/top-navbar/TopNavbar.tsx +47 -0
  185. package/src/components/blocks/navigation/top-navbar/index.ts +1 -0
  186. package/src/components/blocks/onboarding/index.ts +2 -0
  187. package/src/components/blocks/onboarding/onboarding-welcome/OnboardingWelcome.tsx +74 -0
  188. package/src/components/blocks/onboarding/onboarding-welcome/index.ts +1 -0
  189. package/src/components/blocks/onboarding/step-wizard/StepWizard.tsx +72 -0
  190. package/src/components/blocks/onboarding/step-wizard/index.ts +1 -0
  191. package/src/components/blocks/profiles/connection-list/ConnectionItem.tsx +35 -0
  192. package/src/components/blocks/profiles/connection-list/ConnectionList.tsx +16 -0
  193. package/src/components/blocks/profiles/connection-list/index.ts +2 -0
  194. package/src/components/blocks/profiles/index.ts +3 -0
  195. package/src/components/blocks/profiles/profile-header/ProfileHeader.tsx +88 -0
  196. package/src/components/blocks/profiles/profile-header/index.ts +1 -0
  197. package/src/components/blocks/profiles/profile-stats/ProfileStats.tsx +20 -0
  198. package/src/components/blocks/profiles/profile-stats/index.ts +1 -0
  199. package/src/components/blocks/scheduling/booking-slot/BookingSlot.tsx +44 -0
  200. package/src/components/blocks/scheduling/booking-slot/index.ts +1 -0
  201. package/src/components/blocks/scheduling/event-card/EventCard.tsx +85 -0
  202. package/src/components/blocks/scheduling/event-card/index.ts +1 -0
  203. package/src/components/blocks/scheduling/index.ts +3 -0
  204. package/src/components/blocks/scheduling/timeline-row/TimelineRow.tsx +82 -0
  205. package/src/components/blocks/scheduling/timeline-row/index.ts +1 -0
  206. package/src/components/blocks/settings/billing-usage/BillingUsage.tsx +49 -0
  207. package/src/components/blocks/settings/billing-usage/index.ts +1 -0
  208. package/src/components/blocks/settings/index.ts +3 -0
  209. package/src/components/blocks/settings/integration-card/IntegrationCard.tsx +62 -0
  210. package/src/components/blocks/settings/integration-card/index.ts +1 -0
  211. package/src/components/blocks/settings/settings-section/SettingsSection.tsx +23 -0
  212. package/src/components/blocks/settings/settings-section/index.ts +1 -0
  213. package/src/components/ui/accordion.tsx +56 -0
  214. package/src/components/ui/alert-dialog.tsx +141 -0
  215. package/src/components/ui/alert.tsx +59 -0
  216. package/src/components/ui/aspect-ratio.tsx +5 -0
  217. package/src/components/ui/avatar.tsx +50 -0
  218. package/src/components/ui/badge.tsx +36 -0
  219. package/src/components/ui/breadcrumb.tsx +115 -0
  220. package/src/components/ui/button.tsx +56 -0
  221. package/src/components/ui/calendar.tsx +211 -0
  222. package/src/components/ui/card.tsx +79 -0
  223. package/src/components/ui/carousel.tsx +262 -0
  224. package/src/components/ui/chart.tsx +367 -0
  225. package/src/components/ui/checkbox.tsx +28 -0
  226. package/src/components/ui/collapsible.tsx +11 -0
  227. package/src/components/ui/command.tsx +153 -0
  228. package/src/components/ui/component-placeholder.tsx +38 -0
  229. package/src/components/ui/context-menu.tsx +198 -0
  230. package/src/components/ui/dialog.tsx +122 -0
  231. package/src/components/ui/drawer.tsx +116 -0
  232. package/src/components/ui/dropdown-menu.tsx +200 -0
  233. package/src/components/ui/form.tsx +176 -0
  234. package/src/components/ui/hover-card.tsx +27 -0
  235. package/src/components/ui/input-otp.tsx +69 -0
  236. package/src/components/ui/input.tsx +22 -0
  237. package/src/components/ui/label.tsx +24 -0
  238. package/src/components/ui/menubar.tsx +256 -0
  239. package/src/components/ui/navigation-menu.tsx +128 -0
  240. package/src/components/ui/pagination.tsx +117 -0
  241. package/src/components/ui/popover.tsx +29 -0
  242. package/src/components/ui/progress.tsx +28 -0
  243. package/src/components/ui/radio-group.tsx +42 -0
  244. package/src/components/ui/resizable.tsx +45 -0
  245. package/src/components/ui/scroll-area.tsx +46 -0
  246. package/src/components/ui/select.tsx +160 -0
  247. package/src/components/ui/separator.tsx +29 -0
  248. package/src/components/ui/sheet.tsx +140 -0
  249. package/src/components/ui/skeleton.tsx +15 -0
  250. package/src/components/ui/slider.tsx +26 -0
  251. package/src/components/ui/sonner.tsx +45 -0
  252. package/src/components/ui/switch.tsx +27 -0
  253. package/src/components/ui/table.tsx +117 -0
  254. package/src/components/ui/tabs.tsx +53 -0
  255. package/src/components/ui/textarea.tsx +22 -0
  256. package/src/components/ui/toast.tsx +127 -0
  257. package/src/components/ui/toaster.tsx +33 -0
  258. package/src/components/ui/toggle-group.tsx +61 -0
  259. package/src/components/ui/toggle.tsx +45 -0
  260. package/src/components/ui/tooltip.tsx +28 -0
  261. package/src/hooks/use-toast.ts +194 -0
  262. package/src/index.ts +53 -56
  263. package/src/styles/tokens.css +30 -14
  264. package/tailwind.config.js +120 -98
  265. package/tsconfig.json +2 -2
  266. package/DESIGN_GUIDE.md +0 -148
  267. package/src/components/ui/accordion/Accordion.vue +0 -13
  268. package/src/components/ui/accordion/AccordionContent.vue +0 -20
  269. package/src/components/ui/accordion/AccordionItem.vue +0 -15
  270. package/src/components/ui/accordion/AccordionTrigger.vue +0 -25
  271. package/src/components/ui/accordion/index.ts +0 -4
  272. package/src/components/ui/alert/Alert.vue +0 -38
  273. package/src/components/ui/alert/AlertDescription.vue +0 -12
  274. package/src/components/ui/alert/AlertTitle.vue +0 -12
  275. package/src/components/ui/alert/index.ts +0 -3
  276. package/src/components/ui/alert-dialog/AlertDialog.vue +0 -13
  277. package/src/components/ui/alert-dialog/AlertDialogAction.vue +0 -21
  278. package/src/components/ui/alert-dialog/AlertDialogCancel.vue +0 -21
  279. package/src/components/ui/alert-dialog/AlertDialogContent.vue +0 -39
  280. package/src/components/ui/alert-dialog/AlertDialogDescription.vue +0 -15
  281. package/src/components/ui/alert-dialog/AlertDialogFooter.vue +0 -12
  282. package/src/components/ui/alert-dialog/AlertDialogHeader.vue +0 -12
  283. package/src/components/ui/alert-dialog/AlertDialogTitle.vue +0 -15
  284. package/src/components/ui/alert-dialog/AlertDialogTrigger.vue +0 -11
  285. package/src/components/ui/alert-dialog/index.ts +0 -9
  286. package/src/components/ui/avatar/Avatar.vue +0 -14
  287. package/src/components/ui/avatar/index.ts +0 -1
  288. package/src/components/ui/badge/Badge.vue +0 -27
  289. package/src/components/ui/badge/index.ts +0 -1
  290. package/src/components/ui/breadcrumb/Breadcrumb.vue +0 -6
  291. package/src/components/ui/breadcrumb/BreadcrumbEllipsis.vue +0 -12
  292. package/src/components/ui/breadcrumb/BreadcrumbItem.vue +0 -6
  293. package/src/components/ui/breadcrumb/BreadcrumbLink.vue +0 -20
  294. package/src/components/ui/breadcrumb/BreadcrumbList.vue +0 -6
  295. package/src/components/ui/breadcrumb/BreadcrumbPage.vue +0 -6
  296. package/src/components/ui/breadcrumb/BreadcrumbSeparator.vue +0 -11
  297. package/src/components/ui/breadcrumb/index.ts +0 -7
  298. package/src/components/ui/button/Button.vue +0 -65
  299. package/src/components/ui/button/index.ts +0 -1
  300. package/src/components/ui/card/Card.vue +0 -13
  301. package/src/components/ui/card/CardContent.vue +0 -7
  302. package/src/components/ui/card/CardDescription.vue +0 -7
  303. package/src/components/ui/card/CardFooter.vue +0 -7
  304. package/src/components/ui/card/CardHeader.vue +0 -9
  305. package/src/components/ui/card/CardTitle.vue +0 -7
  306. package/src/components/ui/card/index.ts +0 -6
  307. package/src/components/ui/checkbox/Checkbox.vue +0 -25
  308. package/src/components/ui/checkbox/index.ts +0 -1
  309. package/src/components/ui/collapsible/Collapsible.vue +0 -13
  310. package/src/components/ui/collapsible/index.ts +0 -2
  311. package/src/components/ui/command/Command.vue +0 -16
  312. package/src/components/ui/command/CommandEmpty.vue +0 -5
  313. package/src/components/ui/command/CommandGroup.vue +0 -22
  314. package/src/components/ui/command/CommandInput.vue +0 -21
  315. package/src/components/ui/command/CommandItem.vue +0 -22
  316. package/src/components/ui/command/CommandList.vue +0 -17
  317. package/src/components/ui/command/CommandSeparator.vue +0 -5
  318. package/src/components/ui/command/index.ts +0 -7
  319. package/src/components/ui/context-menu/ContextMenuContent.vue +0 -24
  320. package/src/components/ui/context-menu/ContextMenuItem.vue +0 -16
  321. package/src/components/ui/context-menu/ContextMenuLabel.vue +0 -9
  322. package/src/components/ui/context-menu/ContextMenuSeparator.vue +0 -9
  323. package/src/components/ui/context-menu/ContextMenuSubContent.vue +0 -14
  324. package/src/components/ui/context-menu/index.ts +0 -9
  325. package/src/components/ui/dialog/Dialog.vue +0 -14
  326. package/src/components/ui/dialog/DialogClose.vue +0 -12
  327. package/src/components/ui/dialog/DialogContent.vue +0 -48
  328. package/src/components/ui/dialog/DialogDescription.vue +0 -23
  329. package/src/components/ui/dialog/DialogFooter.vue +0 -12
  330. package/src/components/ui/dialog/DialogHeader.vue +0 -12
  331. package/src/components/ui/dialog/DialogScrollContent.vue +0 -47
  332. package/src/components/ui/dialog/DialogTitle.vue +0 -23
  333. package/src/components/ui/dialog/DialogTrigger.vue +0 -12
  334. package/src/components/ui/dialog/index.ts +0 -9
  335. package/src/components/ui/dropdown-menu/DropdownMenu.vue +0 -13
  336. package/src/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue +0 -28
  337. package/src/components/ui/dropdown-menu/DropdownMenuContent.vue +0 -33
  338. package/src/components/ui/dropdown-menu/DropdownMenuGroup.vue +0 -11
  339. package/src/components/ui/dropdown-menu/DropdownMenuItem.vue +0 -27
  340. package/src/components/ui/dropdown-menu/DropdownMenuLabel.vue +0 -23
  341. package/src/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue +0 -13
  342. package/src/components/ui/dropdown-menu/DropdownMenuRadioItem.vue +0 -27
  343. package/src/components/ui/dropdown-menu/DropdownMenuSeparator.vue +0 -13
  344. package/src/components/ui/dropdown-menu/DropdownMenuShortcut.vue +0 -12
  345. package/src/components/ui/dropdown-menu/DropdownMenuSub.vue +0 -13
  346. package/src/components/ui/dropdown-menu/DropdownMenuSubContent.vue +0 -27
  347. package/src/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue +0 -23
  348. package/src/components/ui/dropdown-menu/DropdownMenuTrigger.vue +0 -11
  349. package/src/components/ui/dropdown-menu/index.ts +0 -14
  350. package/src/components/ui/form/FormControl.vue +0 -3
  351. package/src/components/ui/form/FormDescription.vue +0 -6
  352. package/src/components/ui/form/FormItem.vue +0 -6
  353. package/src/components/ui/form/FormLabel.vue +0 -10
  354. package/src/components/ui/form/FormMessage.vue +0 -10
  355. package/src/components/ui/form/index.ts +0 -9
  356. package/src/components/ui/hover-card/HoverCard.vue +0 -13
  357. package/src/components/ui/hover-card/HoverCardContent.vue +0 -26
  358. package/src/components/ui/hover-card/HoverCardTrigger.vue +0 -11
  359. package/src/components/ui/hover-card/index.ts +0 -3
  360. package/src/components/ui/input/Input.vue +0 -23
  361. package/src/components/ui/input/index.ts +0 -1
  362. package/src/components/ui/label/Label.vue +0 -18
  363. package/src/components/ui/label/index.ts +0 -1
  364. package/src/components/ui/lib/utils.ts +0 -2
  365. package/src/components/ui/menubar/MenubarContent.vue +0 -15
  366. package/src/components/ui/menubar/MenubarItem.vue +0 -13
  367. package/src/components/ui/menubar/MenubarTrigger.vue +0 -13
  368. package/src/components/ui/menubar/index.ts +0 -5
  369. package/src/components/ui/navigation-menu/NavigationMenuContent.vue +0 -14
  370. package/src/components/ui/navigation-menu/NavigationMenuTrigger.vue +0 -15
  371. package/src/components/ui/navigation-menu/index.ts +0 -4
  372. package/src/components/ui/pagination/PaginationContent.vue +0 -13
  373. package/src/components/ui/pagination/PaginationEllipsis.vue +0 -12
  374. package/src/components/ui/pagination/PaginationNext.vue +0 -14
  375. package/src/components/ui/pagination/PaginationPrev.vue +0 -14
  376. package/src/components/ui/pagination/index.ts +0 -6
  377. package/src/components/ui/popover/Popover.vue +0 -13
  378. package/src/components/ui/popover/PopoverContent.vue +0 -27
  379. package/src/components/ui/popover/PopoverTrigger.vue +0 -11
  380. package/src/components/ui/popover/index.ts +0 -3
  381. package/src/components/ui/progress/Progress.vue +0 -21
  382. package/src/components/ui/progress/index.ts +0 -1
  383. package/src/components/ui/radio-group/RadioGroup.vue +0 -16
  384. package/src/components/ui/radio-group/RadioGroupItem.vue +0 -24
  385. package/src/components/ui/radio-group/index.ts +0 -2
  386. package/src/components/ui/scroll-area/ScrollArea.vue +0 -13
  387. package/src/components/ui/scroll-area/index.ts +0 -1
  388. package/src/components/ui/select/Select.vue +0 -13
  389. package/src/components/ui/select/SelectContent.vue +0 -40
  390. package/src/components/ui/select/SelectGroup.vue +0 -15
  391. package/src/components/ui/select/SelectItem.vue +0 -30
  392. package/src/components/ui/select/SelectLabel.vue +0 -15
  393. package/src/components/ui/select/SelectSeparator.vue +0 -13
  394. package/src/components/ui/select/SelectTrigger.vue +0 -23
  395. package/src/components/ui/select/SelectValue.vue +0 -11
  396. package/src/components/ui/select/index.ts +0 -8
  397. package/src/components/ui/separator/Separator.vue +0 -16
  398. package/src/components/ui/separator/index.ts +0 -1
  399. package/src/components/ui/sheet/Sheet.vue +0 -13
  400. package/src/components/ui/sheet/SheetClose.vue +0 -11
  401. package/src/components/ui/sheet/SheetContent.vue +0 -65
  402. package/src/components/ui/sheet/SheetDescription.vue +0 -15
  403. package/src/components/ui/sheet/SheetFooter.vue +0 -12
  404. package/src/components/ui/sheet/SheetHeader.vue +0 -12
  405. package/src/components/ui/sheet/SheetTitle.vue +0 -15
  406. package/src/components/ui/sheet/SheetTrigger.vue +0 -11
  407. package/src/components/ui/sheet/index.ts +0 -8
  408. package/src/components/ui/skeleton/Skeleton.vue +0 -9
  409. package/src/components/ui/skeleton/index.ts +0 -1
  410. package/src/components/ui/slider/Slider.vue +0 -26
  411. package/src/components/ui/slider/index.ts +0 -1
  412. package/src/components/ui/switch/Switch.vue +0 -24
  413. package/src/components/ui/switch/index.ts +0 -1
  414. package/src/components/ui/table/Table.vue +0 -13
  415. package/src/components/ui/table/TableBody.vue +0 -6
  416. package/src/components/ui/table/TableCaption.vue +0 -6
  417. package/src/components/ui/table/TableCell.vue +0 -6
  418. package/src/components/ui/table/TableFooter.vue +0 -6
  419. package/src/components/ui/table/TableHead.vue +0 -6
  420. package/src/components/ui/table/TableHeader.vue +0 -6
  421. package/src/components/ui/table/TableRow.vue +0 -6
  422. package/src/components/ui/table/index.ts +0 -8
  423. package/src/components/ui/tabs/Tabs.vue +0 -13
  424. package/src/components/ui/tabs/TabsContent.vue +0 -21
  425. package/src/components/ui/tabs/TabsList.vue +0 -21
  426. package/src/components/ui/tabs/TabsTrigger.vue +0 -21
  427. package/src/components/ui/tabs/index.ts +0 -4
  428. package/src/components/ui/textarea/Textarea.vue +0 -29
  429. package/src/components/ui/textarea/index.ts +0 -1
  430. package/src/components/ui/toggle/Toggle.vue +0 -40
  431. package/src/components/ui/toggle/index.ts +0 -1
  432. package/src/components/ui/toggle-group/ToggleGroup.vue +0 -16
  433. package/src/components/ui/toggle-group/ToggleGroupItem.vue +0 -21
  434. package/src/components/ui/toggle-group/index.ts +0 -2
  435. package/src/components/ui/tooltip/Tooltip.vue +0 -13
  436. package/src/components/ui/tooltip/TooltipContent.vue +0 -27
  437. package/src/components/ui/tooltip/TooltipProvider.vue +0 -12
  438. package/src/components/ui/tooltip/TooltipTrigger.vue +0 -11
  439. package/src/components/ui/tooltip/index.ts +0 -4
@@ -0,0 +1,95 @@
1
+ # App Type: Project Management
2
+
3
+ Task boards, timelines, issue trackers, sprint views, and team collaboration setups.
4
+
5
+ ## Layout
6
+ Use `layouts/sidebar.md`. Each project appears in the sidebar as a collapsible group. Main content often stretches the full width bounds depending on the view type (e.g. Kanban boards require horizontal scrolling).
7
+
8
+ ## Key Screens
9
+ 1. **Kanban Board** — Horizontal scrolling columns containing draggable cards.
10
+ 2. **List/Backlog View** — Dense data table showing hierarchy and issue properties.
11
+ 3. **Issue Detail Modal/Page** — Split view with main description on the left, metadata (assignees, labels, dates) on the right.
12
+
13
+ ## Component Composition Example
14
+
15
+ ```tsx
16
+ <!-- Project Header & Board Layout -->
17
+ <div className="h-full flex flex-col h-screen overflow-hidden">
18
+ <!-- Project Topbar -->
19
+ <div className="flex flex-col sm:flex-row sm:items-center justify-between p-6 border-b shrink-0">
20
+ <div className="flex items-center gap-4">
21
+ <div className="w-10 h-10 rounded-md bg-primary/10 flex items-center justify-center">
22
+ <FolderKanban className="w-5 h-5 text-primary" />
23
+ </div>
24
+ <div>
25
+ <h1 className="text-xl font-semibold">Frontend Redesign</h1>
26
+ <p className="text-sm text-muted-foreground">Q3 Engineering Sprint</p>
27
+ </div>
28
+ </div>
29
+
30
+ <div className="flex items-center gap-3">
31
+ <!-- Team Avatars Array -->
32
+ <div className="flex -space-x-2 mr-4">
33
+ <Avatar className="border-2 border-background w-8 h-8" />
34
+ <Avatar className="border-2 border-background w-8 h-8" />
35
+ <Avatar className="border-2 border-background w-8 h-8" />
36
+ </div>
37
+ <div className="flex items-center rounded-md bg-muted p-1">
38
+ <Button variant="secondary" size="sm" className="h-7 text-xs shadow-sm">Board</Button>
39
+ <Button variant="ghost" size="sm" className="h-7 text-xs">List</Button>
40
+ </div>
41
+ <Button size="sm"><Plus className="w-4 h-4 mr-1" /> Add Task</Button>
42
+ </div>
43
+ </div>
44
+
45
+ <!-- Horizontal Scrolling Board Area -->
46
+ <div className="flex-1 overflow-x-auto p-6 bg-muted/20">
47
+ <div className="flex gap-4 h-full pb-4">
48
+
49
+ <!-- Kanban Column -->
50
+ <div v-for="column in columns" :key="column.id" className="w-80 shrink-0 flex flex-col max-h-full">
51
+ <div className="flex items-center justify-between mb-3 px-1">
52
+ <h3 className="text-sm font-medium flex items-center gap-2">
53
+ {{ column.title }}
54
+ <Badge variant="secondary" className="font-normal">{{ column.tasks.length }}</Badge>
55
+ </h3>
56
+ <Button variant="ghost" size="icon" className="h-6 w-6"><MoreHorizontal className="w-4 h-4" /></Button>
57
+ </div>
58
+
59
+ <!-- Draggable Area Wrapper -->
60
+ <ScrollArea className="flex-1">
61
+ <div className="space-y-3 pr-3">
62
+ <Card v-for="task in column.tasks" :key="task.id" className="cursor-pointer hover:border-primary/50 transition-colors shadow-sm">
63
+ <CardContent className="p-4 space-y-3">
64
+ <div className="flex gap-2">
65
+ <Badge variant="outline" className="text-[10px] uppercase font-medium">{{ task.projectKey }}</Badge>
66
+ <Badge v-if="task.priority === 'High'" variant="destructive" className="text-[10px] uppercase font-medium">Urgent</Badge>
67
+ </div>
68
+ <p className="text-sm font-medium leading-tight">{{ task.title }}</p>
69
+ <div className="flex items-center justify-between pt-2">
70
+ <div className="flex items-center gap-2 text-muted-foreground">
71
+ <MessageSquare className="w-3 h-3" /> <span className="text-xs">{{ task.comments }}</span>
72
+ </div>
73
+ <Avatar className="w-6 h-6" />
74
+ </div>
75
+ </CardContent>
76
+ </Card>
77
+ </div>
78
+ </ScrollArea>
79
+ </div>
80
+
81
+ </div>
82
+ </div>
83
+ </div>
84
+ ```
85
+
86
+ ## Anti-Patterns (DO NOT DO)
87
+
88
+ - ❌ **Do not use heavy, padded cards for tasks**: Task cards need to be compact (`p-3` or `p-4`). Do not use full `CardHeader` and `CardFooter` elements inside Kanban cards.
89
+ - ❌ **Do not limit the horizontal scroll of the board**: Kanban boards must use `overflow-x-auto` on the parent container, and columns should be fixed width (`w-80` or `w-72`) with `shrink-0`.
90
+ - ❌ **Do not ignore the metadata**: Issue trackers require priority colored badges (`variant="destructive"` for high, `variant="outline"` for low), status icons, and assignee avatars on every row or card.
91
+
92
+ ## Design Notes
93
+
94
+ - **Task IDs**: Usually displayed in small muted text (e.g. `PROJ-123`) to identify tasks.
95
+ - **Filters**: Highly important. Always place a filter bar above the content (Assignee, Label, Status, Search).
@@ -0,0 +1,104 @@
1
+ # App Type: SaaS Dashboard
2
+
3
+ Admin panels, web-app hubs, and B2B SaaS applications.
4
+
5
+ ## Layout
6
+ Use `layouts/sidebar.md` with a full sidebar navigation. The layout must handle deeply nested settings and multi-tenant organization switchers.
7
+
8
+ ## Key Screens
9
+ 1. **Dashboard/Overview** — Stats row (4 KPI cards) + chart area + activity feed + recent table.
10
+ 2. **List Views** — Data tables with search, filters, pagination, and row actions.
11
+ 3. **Detail Views** — Entity detail with tabs (Overview, Activity, Settings).
12
+ 4. **Settings** — Grouped configurations with left-hand section nav (`layouts/settings-page.md`).
13
+
14
+ ## Nav Structure & Tenant Switcher
15
+ B2B apps frequently switch contexts. The sidebar should include an organization selector at the very top:
16
+
17
+ ```tsx
18
+ <!-- SaaS Sidebar Top Header -->
19
+ <div className="flex items-center justify-between p-4 border-b">
20
+ <div className="flex flex-col">
21
+ <span className="text-sm font-semibold truncate">Acme Corp</span>
22
+ <span className="text-xs text-muted-foreground truncate">Free Plan</span>
23
+ </div>
24
+ <Button variant="ghost" size="icon" className="h-8 w-8">
25
+ <ChevronsUpDown className="w-4 h-4 text-muted-foreground" />
26
+ </Button>
27
+ </div>
28
+ ```
29
+
30
+ ## Component Composition Example
31
+
32
+ ```tsx
33
+ <!-- SaaS Workspace Dashboard -->
34
+ <div className="space-y-8">
35
+ <!-- Context Header -->
36
+ <div className="flex items-center justify-between">
37
+ <div>
38
+ <h1 className="text-2xl font-bold">Workspace Overview</h1>
39
+ <p className="text-muted-foreground">Monitor your team's usage and activity.</p>
40
+ </div>
41
+ <div className="flex items-center gap-3">
42
+ <Button variant="outline">Invite Team</Button>
43
+ <Button>Create Project</Button>
44
+ </div>
45
+ </div>
46
+
47
+ <!-- Quick Stats -->
48
+ <div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4">
49
+ <!-- Typical KPI Card -->
50
+ <Card>
51
+ <CardHeader className="flex flex-row items-center justify-between pb-2">
52
+ <CardTitle className="text-sm font-medium">Active Seats</CardTitle>
53
+ <Users className="h-4 w-4 text-muted-foreground" />
54
+ </CardHeader>
55
+ <CardContent>
56
+ <div className="text-2xl font-bold">12 / 15</div>
57
+ <p className="text-xs text-muted-foreground mt-1 text-warning">80% of limit reached</p>
58
+ </CardContent>
59
+ </Card>
60
+ <!-- Repeat for other KPIs: API Requests, Storage Used, etc -->
61
+ </div>
62
+
63
+ <!-- Split View: Insights & Activity -->
64
+ <div className="grid grid-cols-1 lg:grid-cols-7 gap-6">
65
+ <Card className="lg:col-span-4">
66
+ <CardHeader>
67
+ <CardTitle>Usage Over Time</CardTitle>
68
+ </CardHeader>
69
+ <CardContent>
70
+ <ComponentPlaceholder name="LineChart" description="Line chart comparing API calls vs Storage limits over 30 days" height="300px" /> <!-- (Mockup Mode Only) -->
71
+ </CardContent>
72
+ </Card>
73
+
74
+ <Card className="lg:col-span-3">
75
+ <CardHeader>
76
+ <CardTitle>Recent Activity</CardTitle>
77
+ </CardHeader>
78
+ <CardContent className="space-y-6">
79
+ <div v-for="i in 4" :key="i" className="flex gap-4">
80
+ <Avatar className="w-8 h-8 rounded-full" />
81
+ <div className="space-y-1">
82
+ <p className="text-sm">
83
+ <span className="font-medium">Sarah Jenkins</span> deployed to production
84
+ </p>
85
+ <p className="text-xs text-muted-foreground">2 hours ago</p>
86
+ </div>
87
+ </div>
88
+ </CardContent>
89
+ </Card>
90
+ </div>
91
+ </div>
92
+ ```
93
+
94
+ ## Anti-Patterns (DO NOT DO)
95
+
96
+ - ❌ **Do not bury the 'Create' action**: Every primary SaaS list view needs a clear "Create [Entity]" or "New [Entity]" button in the top right.
97
+ - ❌ **Do not design flat detail pages**: Detail pages should use `<Tabs>` to segment Overview, History/Logs, and Settings, otherwise they become noisy.
98
+ - ❌ **Do not stretch forms across the screen**: SaaS configuration forms look terrible at 1200px wide. Constrain form layouts to `max-w-2xl` inside cards.
99
+
100
+ ## Design Notes
101
+
102
+ - **Settings**: Use `layouts/settings-page.md` for organization, billing, and team settings.
103
+ - **Empty States**: B2B apps often launch empty. Every list view MUST design the empty state showing the value proposition and a "Create" button.
104
+ - **Plan Limits**: Usage progress bars (`<Progress>`) are very common in SaaS headers/sidebars to upsell users.
@@ -0,0 +1,50 @@
1
+ # App Type: Social Platform
2
+
3
+ Feeds, profiles, interactions, and discovery interfaces.
4
+
5
+ ## Layout
6
+ Use `layouts/topbar.md` for consumer social, or `layouts/sidebar.md` for community platforms.
7
+
8
+ ## Key Screens
9
+ 1. **Feed** — Vertical list of post cards with author, content, interactions
10
+ 2. **Profile** — User header + stats + tabbed content (see `patterns/user-profiles.md`)
11
+ 3. **Discover** — Card grid of suggested content/people
12
+
13
+ ## Post Card
14
+ ```tsx
15
+ <Card>
16
+ <CardContent className="p-4 space-y-3">
17
+ <!-- Author -->
18
+ <div className="flex items-center gap-3">
19
+ <div className="w-10 h-10 rounded-full shrink-0 bg-muted" />
20
+ <div className="flex-1 min-w-0">
21
+ <p className="text-sm font-medium">{{ post.author }}</p>
22
+ <p className="text-xs text-muted-foreground">{{ post.time }}</p>
23
+ </div>
24
+ <Button variant="ghost" size="icon" className="h-8 w-8"><MoreHorizontal className="w-4 h-4" /></Button>
25
+ </div>
26
+ <!-- Content -->
27
+ <p className="text-sm">{{ post.content }}</p>
28
+ <!-- Image (optional) -->
29
+ <div v-if="post.hasImage" className="aspect-video rounded-lg bg-gradient-to-br from-secondary to-secondary/50" />
30
+ <!-- Interactions -->
31
+ <div className="flex items-center gap-4 pt-1">
32
+ <Button variant="ghost" size="sm" className="gap-1.5 text-muted-foreground">
33
+ <Heart className="w-4 h-4" /> {{ post.likes }}
34
+ </Button>
35
+ <Button variant="ghost" size="sm" className="gap-1.5 text-muted-foreground">
36
+ <MessageCircle className="w-4 h-4" /> {{ post.comments }}
37
+ </Button>
38
+ <Button variant="ghost" size="sm" className="gap-1.5 text-muted-foreground">
39
+ <Share2 className="w-4 h-4" /> Share
40
+ </Button>
41
+ </div>
42
+ </CardContent>
43
+ </Card>
44
+ ```
45
+
46
+ ## Design Notes
47
+ - **Feed layout**: `max-w-2xl mx-auto` for optimal reading width
48
+ - **Post images**: `aspect-video` with gradient placeholders
49
+ - **Interaction buttons**: `variant="ghost"` with `text-muted-foreground`
50
+ - **5–8 feed items** for a realistic mockup
@@ -0,0 +1,106 @@
1
+ # Identity & Auth Blocks
2
+
3
+ This document covers composite UI blocks designed for Authentication flows such as Login, Signup, SSO, Password Reset, and Two-Factor Authentication (2FA).
4
+
5
+ ## When to use Blocks vs Primitives
6
+
7
+ Use these blocks whenever the app requires authentication interfaces. DO NOT build login cards manually using raw `<Card>` or raw pin inputs. These blocks provide standardized spacing, SSO aesthetic boundaries, and interaction layouts out-of-the-box.
8
+
9
+ ## 1. AuthCard
10
+
11
+ The `AuthCard` block is the fundamental wrapper container for authentication screens.
12
+
13
+ ### Anatomy
14
+ ```tsx
15
+ // React Component
16
+ import { Input } from '@reinvented/design'
17
+ import { Label } from '@reinvented/design'
18
+ import { Button } from '@reinvented/design'
19
+ import { AuthCard } from '@reinvented/design'
20
+
21
+
22
+ export default function Component() {
23
+ return (
24
+ <>
25
+ <AuthCard
26
+ title="Create an account"
27
+ description="Enter your email below to create your account"
28
+ footerText="Already have an account?"
29
+ footerLinkText="Sign in"
30
+ footerLinkHref="/login"
31
+ >
32
+ <div className="grid gap-4">
33
+ <div className="grid gap-2">
34
+ <Label for="email">Email</Label>
35
+ <Input id="email" type="email" placeholder="m@example.com" />
36
+ </div>
37
+ <div className="grid gap-2">
38
+ <Label for="password">Password</Label>
39
+ <Input id="password" type="password" />
40
+ </div>
41
+ <Button className="w-full">Create account</Button>
42
+ </div>
43
+ </AuthCard>
44
+ </>
45
+ )
46
+ }
47
+ ```
48
+
49
+ ### Usage Rules
50
+ - `<AuthCard>` binds Shadcn's `<Card>` into a perfectly sized semantic login wrapper out of the box (centers content, strict `max-w-md` constraints).
51
+ - Use `footerText` and `footerLinkText` to automatically add standard bottom links (e.g. "Don't have an account? Sign up").
52
+
53
+ ## 2. SocialLoginGroup
54
+
55
+ The `SocialLoginGroup` provides a standard block of SSO buttons along with the "Or continue with" HTML divider.
56
+
57
+ ### Anatomy
58
+ ```tsx
59
+ // React Component
60
+ import { SocialLoginGroup } from '@reinvented/design'
61
+
62
+
63
+ export default function Component() {
64
+ return (
65
+ <>
66
+ <div className="grid gap-6">
67
+ <SocialLoginGroup :providers="['github', 'google']" layout="row" />
68
+
69
+ <!-- Email/Password form goes here -->
70
+ </div>
71
+ </>
72
+ )
73
+ }
74
+ ```
75
+
76
+ ### Usage Rules
77
+ - `providers` defaults to `['github', 'google']`.
78
+ - `layout` can be `'row'` (which places icons side-by-side using Grid) or `'column'` (which stacks them vertically).
79
+ - Always place it above or below the primary email/password authentication block. The trailing divider is built-in.
80
+
81
+ ## 3. TwoFactorForm
82
+
83
+ The `TwoFactorForm` block provides a unified 6-digit pin UI using the design system's `PinInput` API.
84
+
85
+ ### Anatomy
86
+ ```tsx
87
+ // React Component
88
+ import { TwoFactorForm } from '@reinvented/design'
89
+
90
+
91
+ export default function Component() {
92
+ return (
93
+ <>
94
+ <TwoFactorForm
95
+ email="user@reinvented.inc"
96
+ @complete="(code) => handleVerification(code)"
97
+ />
98
+ </>
99
+ )
100
+ }
101
+ ```
102
+
103
+ ### Usage Rules
104
+ - Emits a `@complete` payload string uniquely when exactly 6 digits have been entered by the user.
105
+ - Disables the "Verify" button automatically until length constraints are met.
106
+ - Accepts an optional `email` prop to display where the code was dispatched.
@@ -0,0 +1,98 @@
1
+ # Communication & Chat Blocks
2
+
3
+ This document covers composite UI blocks designed for messaging, activity feeds, and comment threads.
4
+
5
+ ## When to use Blocks vs Primitives
6
+
7
+ Use these blocks whenever the app requires displaying messages or activity logs. DO NOT build these flows from scratch using raw `<Card>`, `<Avatar>`, or `<div>` elements. These blocks provide strict layout, spacing, and state alignments out-of-the-box.
8
+
9
+ ## 1. ChatBubble
10
+
11
+ The `ChatBubble` block is a composite for rendering a single message in a chat UI. It supports sent/received states to control alignment and colors.
12
+
13
+ ### Anatomy
14
+ ```tsx
15
+ // React Component
16
+ import {
17
+ ChatBubble,
18
+ ChatBubbleAvatar,
19
+ ChatBubbleMessage,
20
+ ChatBubbleTimestamp
21
+ } from '@reinvented/design'
22
+
23
+
24
+ export default function Component() {
25
+ return (
26
+ <>
27
+ <div className="flex flex-col gap-4 p-4">
28
+ <!-- Received Message (Aligned Left) -->
29
+ <ChatBubble variant="received">
30
+ <ChatBubbleAvatar src="/avatars/user1.png" fallback="JD" />
31
+ <ChatBubbleMessage variant="received">
32
+ Hey, did you review the final PR?
33
+ <ChatBubbleTimestamp timestamp="10:42 AM" />
34
+ </ChatBubbleMessage>
35
+ </ChatBubble>
36
+
37
+ <!-- Sent Message (Aligned Right) -->
38
+ <ChatBubble variant="sent">
39
+ <ChatBubbleAvatar fallback="ME" />
40
+ <ChatBubbleMessage variant="sent">
41
+ Looking at it right now!
42
+ <ChatBubbleTimestamp timestamp="10:44 AM" />
43
+ </ChatBubbleMessage>
44
+ </ChatBubble>
45
+ </div>
46
+ </>
47
+ )
48
+ }
49
+ ```
50
+
51
+ ### Props
52
+ - `variant` (`"sent" | "received"` default: `"received"`): Controls layout direction. `"sent"` aligns items right and swaps the bubble color to the primary token. Both `<ChatBubble>` and `<ChatBubbleMessage>` accept this prop and it MUST match.
53
+
54
+ ## 2. ActivityItem
55
+
56
+ The `ActivityItem` block builds timeline-based activity feeds with relative connecting lines between items.
57
+
58
+ ### Anatomy
59
+ ```tsx
60
+ // React Component
61
+ import {
62
+ ActivityItem,
63
+ ActivityItemAvatar,
64
+ ActivityItemContent
65
+ } from '@reinvented/design'
66
+
67
+
68
+ export default function Component() {
69
+ return (
70
+ <>
71
+ <div className="flex flex-col">
72
+ <ActivityItem>
73
+ <ActivityItemAvatar fallback="JD" />
74
+ <ActivityItemContent>
75
+ <p className="text-sm font-medium">Jane Doe commented on Task #104</p>
76
+ <p className="text-sm text-muted-foreground mt-1">
77
+ "Can we get this merged before EOD?"
78
+ </p>
79
+ <span className="text-xs text-muted-foreground mt-2">2 hours ago</span>
80
+ </ActivityItemContent>
81
+ </ActivityItem>
82
+
83
+ <ActivityItem>
84
+ <ActivityItemAvatar fallback="SS" />
85
+ <ActivityItemContent>
86
+ <p className="text-sm font-medium">System merged PR #42</p>
87
+ <span className="text-xs text-muted-foreground mt-1">Yesterday</span>
88
+ </ActivityItemContent>
89
+ </ActivityItem>
90
+ </div>
91
+ </>
92
+ )
93
+ }
94
+ ```
95
+
96
+ ### Usage Rules
97
+ - Wrap a list of `ActivityItem`s in a flex column container.
98
+ - The `ActivityItem` automatically handles the rendering of the chronological connecting line between avatars. The last item naturally hides the line.
@@ -0,0 +1,107 @@
1
+ # Knowledge & Content Blocks
2
+
3
+ This document covers composite UI blocks designed for Articles, Blog Headers, Wikis, and Rich Text Viewers.
4
+
5
+ ## When to use Blocks vs Primitives
6
+
7
+ Use these blocks whenever the app renders long-form editorial content. DO NOT build Article headers by stacking avatars and headings manually. These blocks strictly adhere to optimal reading widths (`max-w-3xl`) and semantic typography scales.
8
+
9
+ ## 1. ArticleHeader
10
+
11
+ The `ArticleHeader` block establishes the core typography hierarchy for the start of any editorial view.
12
+
13
+ ### Anatomy
14
+ ```tsx
15
+ // React Component
16
+ import { ArticleHeader } from '@reinvented/design'
17
+
18
+
19
+ export default function Component() {
20
+ return (
21
+ <>
22
+ <ArticleHeader
23
+ title="The Future of Serverless Computing"
24
+ description="Exploring the next wave of edge functions and how they eliminate cold starts entirely."
25
+ authorName="Sarah Drasner"
26
+ authorAvatar="/avatars/sarah.jpg"
27
+ date="Nov 24, 2024"
28
+ readTime="5 min read"
29
+ :tags="['Engineering', 'Architecture', 'Edge']"
30
+ />
31
+ </>
32
+ )
33
+ }
34
+ ```
35
+
36
+ ### Usage Rules
37
+ - `title` is rendering as a massive semibold `h1`.
38
+ - `description` acts as the optional sub-leadin paragraph.
39
+ - The block automatically scales the Avatar and groups the author meta-data horizontally.
40
+
41
+ ## 2. RichTextContent
42
+
43
+ The `RichTextContent` block is a layout wrapper designed specifically to ingest unsanitized HTML, markdown, or rich-text editor output. It applies the `@tailwindcss/typography` "prose" layer and binds it firmly to Shadcn CSS variables automatically.
44
+
45
+ ### Anatomy
46
+ ```tsx
47
+ // React Component
48
+ import { RichTextContent } from '@reinvented/design'
49
+
50
+
51
+ export default function Component() {
52
+ return (
53
+ <>
54
+ <RichTextContent>
55
+ <h2>Introduction</h2>
56
+ <p>This is standard HTML that will be beautifully formatted because it's caught inside the RichTextContent block.</p>
57
+ <blockquote>The future is already here — it's just not very evenly distributed.</blockquote>
58
+ <p>Code chunks look great too: <code>npm run build</code></p>
59
+ </RichTextContent>
60
+ </>
61
+ )
62
+ }
63
+ ```
64
+
65
+ ### Usage Rules
66
+ - The component does not take props other than `class`.
67
+ - Wrap it entirely around either a `v-html` dump or semantic HTML.
68
+ - It automatically forces `max-w-3xl` to keep reading line lengths optimal.
69
+
70
+ ## 3. AuthorCard
71
+
72
+ The `AuthorCard` block is an end-of-article credit box.
73
+
74
+ ### Anatomy
75
+ ```tsx
76
+ // React Component
77
+ import { AuthorCard } from '@reinvented/design'
78
+ import { Button } from '@reinvented/design'
79
+ import { Twitter } from 'lucide-react'
80
+
81
+
82
+ export default function Component() {
83
+ return (
84
+ <>
85
+ <AuthorCard
86
+ name="Sarah Drasner"
87
+ role="VP of Developer Experience at Netlify"
88
+ bio="Sarah is an award-winning Speaker, Engineering Manager, and author of SVG Animations. She's a Vue Core team member and an organizer of the Vue.js meetup."
89
+ avatar="/avatars/sarah.jpg"
90
+ >
91
+ <template #action>
92
+ <Button variant="outline">
93
+ <Twitter className="mr-2 h-4 w-4" />
94
+ Follow
95
+ </Button>
96
+ </>
97
+ )
98
+ }
99
+ </AuthorCard>
100
+ </>
101
+ )
102
+ }
103
+ ```
104
+
105
+ ### Usage Rules
106
+ - Usually appended immediately beneath the `RichTextContent`.
107
+ - Leverages the `<slot name="action">` to allow custom buttons (e.g. "Follow on Twitter", "View Profile", or standard Outline button).
@@ -0,0 +1,109 @@
1
+ # Data Management Blocks
2
+
3
+ This document covers composite UI blocks designed for complex structural data interfaces like Kanban boards and nested Tree Views.
4
+
5
+ ## When to use Blocks vs Primitives
6
+
7
+ Use these blocks whenever building advanced data-manipulation views often found in project management, CMS admin layouts, or IDE-like software. DO NOT build Kanban lanes or collapsible trees manually using raw DOM iterations, as maintaining state and strict overflow interactions is highly repetitive.
8
+
9
+ ## 1. Kanban Board
10
+
11
+ The `KanbanBoard` block set provides a horizontal scrolling pipeline divided into columns and stackable cards.
12
+
13
+ ### Anatomy
14
+ ```tsx
15
+ // React Component
16
+ import {
17
+ KanbanBoard,
18
+ KanbanColumn,
19
+ KanbanCard
20
+ } from '@reinvented/design'
21
+
22
+
23
+ export default function Component() {
24
+ return (
25
+ <>
26
+ <KanbanBoard className="h-[calc(100vh-140px)]">
27
+ <!-- To Do -->
28
+ <KanbanColumn title="To Do" :count="3">
29
+ <KanbanCard
30
+ title="Design system color tokens"
31
+ id="TSK-412"
32
+ priority="high"
33
+ :labels="['Design', 'System']"
34
+ :comments="4"
35
+ :attachments="2"
36
+ :assignee="{ name: 'Alice Adams', avatar: '/avatars/alice.png' }"
37
+ />
38
+ <KanbanCard
39
+ title="Audit dependency tree"
40
+ id="TSK-413"
41
+ priority="low"
42
+ :labels="['Engineering']"
43
+ />
44
+ </KanbanColumn>
45
+
46
+ <!-- In Progress -->
47
+ <KanbanColumn title="In Progress" :count="1">
48
+ <KanbanCard
49
+ title="Implement Kanban UI block"
50
+ id="TSK-408"
51
+ priority="high"
52
+ :comments="12"
53
+ :assignee="{ name: 'Janakan', avatar: '/avatars/janakan.png' }"
54
+ />
55
+ </KanbanColumn>
56
+ </KanbanBoard>
57
+ </>
58
+ )
59
+ }
60
+ ```
61
+
62
+ ### Usage Rules
63
+ - `<KanbanBoard>` sets up the core horizontal timeline. Usually needs a firm `height` constraint (like `h-[calc(100vh-200px)]`) so the columns can scroll vertically independent of the page.
64
+ - `<KanbanColumn>` builds a solid column constraint of `300px` width. The `title` and `count` drive the top header.
65
+ - `<KanbanCard>` handles hover, grab, and metadata visualizations. Use `priority`, `labels`, and numerical summaries (`comments`, `attachments`) to inject rich data pills automatically.
66
+
67
+ ## 2. TreeView
68
+
69
+ The `TreeView` block constructs collapsible file or folder hierarchies natively using Shadcn `Collapsible`.
70
+
71
+ ### Anatomy
72
+ ```tsx
73
+ // React Component
74
+ import {
75
+ TreeView,
76
+ TreeItem
77
+ } from '@reinvented/design'
78
+
79
+
80
+ export default function Component() {
81
+ return (
82
+ <>
83
+ <TreeView className="max-w-xs">
84
+ <TreeItem title="src" isFolder defaultExpanded :level="0">
85
+ <TreeItem title="assets" isFolder :level="1" />
86
+ <TreeItem title="components" isFolder defaultExpanded :level="1">
87
+ <TreeItem title="ui" isFolder :level="2" />
88
+ <TreeItem title="blocks" isFolder defaultExpanded :level="2">
89
+ <TreeItem title="data-management" isFolder defaultExpanded :level="3">
90
+ <TreeItem title="TreeView.tsx" :level="4" />
91
+ <TreeItem title="TreeItem.tsx" :level="4" />
92
+ </TreeItem>
93
+ </TreeItem>
94
+ </TreeItem>
95
+ <TreeItem title="App.tsx" :level="1" />
96
+ <TreeItem title="main.ts" :level="1" />
97
+ </TreeItem>
98
+ <TreeItem title="package.json" :level="0" />
99
+ <TreeItem title="README.md" :level="0" />
100
+ </TreeView>
101
+ </>
102
+ )
103
+ }
104
+ ```
105
+
106
+ ### Usage Rules
107
+ - Nest `<TreeItem>` inside a parent `<TreeItem isFolder>`.
108
+ - Pass `:level="X"` explicitly to each item, increasing the depth iteratively. This physically sets the `padding-left` natively so deeply nested lines do not misalign. `0` is the root indentation.
109
+ - Uses `defaultExpanded` boolean modifier on folders to start opened.