@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,92 @@
1
+ # Data Visualization Blocks
2
+
3
+ This document covers composite UI blocks designed for Metric Cards, KPIs, and Financial Tickers.
4
+
5
+ ## When to use Blocks vs Primitives
6
+
7
+ Use these blocks whenever the user needs a dashboard-like view of numbers, metrics, or live data feeds. DO NOT build KPI cards manually using raw `<Card>` or `<p>` elements. These data-viz blocks handle responsive column reflowing and strict trend color mapping (e.g., green for positive, red for negative).
8
+
9
+ ## 1. KpiCard
10
+
11
+ The `KpiCard` block is the fundamental building block of any dashboard.
12
+
13
+ ### Anatomy
14
+ ```tsx
15
+ // React Component
16
+ import { Users, DollarSign, Activity } from 'lucide-react'
17
+ import { KpiCard, StatGrid } from '@reinvented/design'
18
+
19
+
20
+ export default function Component() {
21
+ return (
22
+ <>
23
+ <StatGrid :columns="3">
24
+ <KpiCard
25
+ title="Total Revenue"
26
+ metric="$45,231.89"
27
+ :trend="20.1"
28
+ trendLabel="from last month"
29
+ :icon="DollarSign"
30
+ />
31
+ <KpiCard
32
+ title="Active Users"
33
+ metric="+2350"
34
+ :trend="180.1"
35
+ trendLabel="from last month"
36
+ :icon="Users"
37
+ />
38
+ <KpiCard
39
+ title="Server Load"
40
+ metric="84%"
41
+ :trend="-4.3"
42
+ trendLabel="from last hour"
43
+ :icon="Activity"
44
+ />
45
+ </StatGrid>
46
+ </>
47
+ )
48
+ }
49
+ ```
50
+
51
+ ### Usage Rules
52
+ - `metric` is the massive string (e.g., "$12,000", "42%"). Do NOT pass numbers here; format the string first.
53
+ - `trend` expects a Number (e.g., `20.5`, `-4.2`, `0`). The card automatically mounts a `TrendingUp` or `TrendingDown` icon and applies `text-emerald-500` or `text-rose-500` accordingly.
54
+ - `icon` is a raw Vue component import (typically from `lucide-react`).
55
+
56
+ ## 2. StatGrid
57
+
58
+ The `StatGrid` block intelligently mounts KPI cards in a responsive CSS Grid.
59
+
60
+ ### Anatomy
61
+ *(See KpiCard anatomy for typical usage)*
62
+
63
+ ### Usage Rules
64
+ - Takes an optional `columns` prop (`2`, `3`, or `4`). Defaults to `3`.
65
+ - Automatically responds to mobile by stacking into a single column.
66
+
67
+ ## 3. FinancialTicker
68
+
69
+ The `FinancialTicker` block models a live-data feed typically seen in trading, crypto, or forex interfaces.
70
+
71
+ ### Anatomy
72
+ ```tsx
73
+ // React Component
74
+ import { FinancialTicker } from '@reinvented/design'
75
+
76
+
77
+ export default function Component() {
78
+ return (
79
+ <>
80
+ <div className="flex items-center gap-6 overflow-x-auto whitespace-nowrap p-4 border bg-background/50 rounded-xl">
81
+ <FinancialTicker symbol="AAPL" price="$174.22" :change="1.45" :changePercent="0.84" />
82
+ <FinancialTicker symbol="MSFT" price="$412.01" :change="-3.12" :changePercent="-0.75" />
83
+ <FinancialTicker symbol="NVDA" price="$892.50" :change="42.10" :changePercent="4.95" />
84
+ </div>
85
+ </>
86
+ )
87
+ }
88
+ ```
89
+
90
+ ### Usage Rules
91
+ - It automatically handles the `<TrendingUp/Down>` colors on both the text and the micro-badge based on whether `change` is positive or negative.
92
+ - Wrapping the tickers in a scrolling flex container is recommended.
@@ -0,0 +1,126 @@
1
+ # E-Commerce & Catalog Blocks
2
+
3
+ This document covers composite UI blocks designed for Product Catalogs, Marketplaces, and SaaS Pricing grids.
4
+
5
+ ## When to use Blocks vs Primitives
6
+
7
+ Use these blocks whenever the app requires displaying products, selling software tiers, or aggregating user review scores. DO NOT build these specific data structures from scratch (e.g. manually aligning stars or creating pricing card borders). These blocks provide structural layout and state interactions.
8
+
9
+ ## 1. ProductCard
10
+
11
+ The `ProductCard` block is highly versatile for grid-based inventory displays. It automatically handles hover transforms and image aspect ratios.
12
+
13
+ ### Anatomy
14
+ ```tsx
15
+ // React Component
16
+ import { Button } from '@reinvented/design'
17
+ import { Badge } from '@reinvented/design'
18
+ import { Plus } from 'lucide-react'
19
+ import {
20
+ ProductCard,
21
+ ProductCardImage,
22
+ ProductCardContent,
23
+ ProductCardPrice
24
+ } from '@reinvented/design'
25
+ import { RatingStars } from '@reinvented/design'
26
+
27
+
28
+ export default function Component() {
29
+ return (
30
+ <>
31
+ <ProductCard className="w-[300px]">
32
+ <ProductCardImage src="/products/headphones.jpg" alt="Wireless Headphones">
33
+ <Badge className="absolute top-3 right-3 bg-red-500">Sale -20%</Badge>
34
+ </ProductCardImage>
35
+
36
+ <ProductCardContent>
37
+ <div className="flex justify-between items-start">
38
+ <div>
39
+ <h3 className="font-bold text-lg leading-tight">Pro Audio Max</h3>
40
+ <p className="text-sm text-muted-foreground mt-1">Over-ear active noise cancelling</p>
41
+ </div>
42
+ </div>
43
+
44
+ <div className="mt-2 flex items-center gap-2">
45
+ <RatingStars :rating="4.5" />
46
+ <span className="text-xs text-muted-foreground">(128)</span>
47
+ </div>
48
+
49
+ <div className="mt-4 flex items-end justify-between">
50
+ <ProductCardPrice price="$199.00" originalPrice="$249.00" />
51
+ <Button size="icon" className="h-8 w-8 rounded-full">
52
+ <Plus className="h-4 w-4" />
53
+ </Button>
54
+ </div>
55
+ </ProductCardContent>
56
+ </ProductCard>
57
+ </>
58
+ )
59
+ }
60
+ ```
61
+
62
+ ### Usage Rules
63
+ - The outer `ProductCard` wraps a standard Shadcn `Card`.
64
+ - `ProductCardImage` forces a standard `4/3` aspect ratio, handling crop and scale-on-hover logic. It accepts slots (for absolute badges/buttons).
65
+ - Build the inner grid using Flexbox classes within `ProductCardContent`.
66
+
67
+ ## 2. PricingTier
68
+
69
+ The `PricingTier` block models a classic SaaS or tier-based billing card. It includes built-in highlight mechanics for "Most Popular" selections.
70
+
71
+ ### Anatomy
72
+ ```tsx
73
+ // React Component
74
+ import { Button } from '@reinvented/design'
75
+ import {
76
+ PricingTier,
77
+ PricingHeader,
78
+ PricingFeatureList
79
+ } from '@reinvented/design'
80
+
81
+
82
+ export default function Component() {
83
+ return (
84
+ <>
85
+ <div className="grid md:grid-cols-3 gap-8 max-w-5xl mx-auto py-8">
86
+ <!-- Standard Tier -->
87
+ <PricingTier>
88
+ <PricingHeader
89
+ title="Starter"
90
+ description="For small hobby teams"
91
+ price="$15"
92
+ period="/mo"
93
+ />
94
+ <PricingFeatureList :features="['Up to 3 users', 'Basic analytics', '24hr Support response']">
95
+ <Button variant="outline" className="w-full mt-6">Get Started</Button>
96
+ </PricingFeatureList>
97
+ </PricingTier>
98
+
99
+ <!-- Featured Tier -->
100
+ <PricingTier featured>
101
+ <PricingHeader
102
+ title="Professional"
103
+ description="Everything you need to scale"
104
+ price="$49"
105
+ period="/mo"
106
+ />
107
+ <PricingFeatureList :features="['Unlimited users', 'Advanced analytics', '1hr Support response', 'Custom domain']">
108
+ <Button className="w-full mt-6">Start Free Trial</Button>
109
+ </PricingFeatureList>
110
+ </PricingTier>
111
+ </div>
112
+ </>
113
+ )
114
+ }
115
+ ```
116
+
117
+ ### Usage Rules
118
+ - `PricingTier` cards should be placed side-by-side in a responsive Grid.
119
+ - To emphasize a specific tier (usually the middle option), simply attach the Boolean `featured` prop to `<PricingTier>`. It will automatically add a primary border, a top "Most Popular" badge, and scale it up slightly via z-index.
120
+ - Place a CTA `<Button>` inside the `PricingFeatureList` slot; it will append below the checked rows.
121
+
122
+ ## 3. RatingSummary
123
+
124
+ The `RatingStars` component handles iterative star loop rendering with half-star parsing based on a numeric average.
125
+ - It takes a `rating` (Number) and an optional `max` (Number, default 5).
126
+ - It handles rendering visually accurate Lucide star shapes internally without manual `v-for` boilerplate.
@@ -0,0 +1,97 @@
1
+ # Feedback & Status Blocks
2
+
3
+ This document covers composite UI blocks designed for Error Boundaries, Empty States, and 404 screens.
4
+
5
+ ## When to use Blocks vs Primitives
6
+
7
+ Use these blocks anytime dynamic data fails to load or no data exists yet. DO NOT render blank screens or generic `<div>No data</div>` text. These blocks apply the design system's standardized alerting colors and fallback illustrations to keep the user oriented.
8
+
9
+ ## 1. EmptyState
10
+
11
+ The `EmptyState` block provides a unified placeholder whenever a list, table, or grid has zero items to display.
12
+
13
+ ### Anatomy
14
+ ```tsx
15
+ // React Component
16
+ import { EmptyState } from '@reinvented/design'
17
+ import { FolderOpen } from 'lucide-react'
18
+
19
+
20
+ export default function Component() {
21
+ return (
22
+ <>
23
+ <EmptyState
24
+ title="No projects found"
25
+ description="Get started by creating a new project to organize your team's work."
26
+ :icon="FolderOpen"
27
+ actionLabel="Create Project"
28
+ @action="openCreateModal"
29
+ />
30
+ </>
31
+ )
32
+ }
33
+ ```
34
+
35
+ ### Usage Rules
36
+ - Natively bound within a dashed border layout (`border-dashed bg-muted/20`) to visually communicate "placeholder".
37
+ - The `actionLabel` will automatically render a primary `<Button>` centered at the bottom, emitting an `@action` event when clicked. Leave `actionLabel` undefined to render a read-only empty state.
38
+ - `icon` accepts a raw Vue component import (typically from `lucide-react`).
39
+
40
+ ## 2. ErrorState
41
+
42
+ The `ErrorState` block provides a visually defensive error boundary layout.
43
+
44
+ ### Anatomy
45
+ ```tsx
46
+ // React Component
47
+ import { ErrorState } from '@reinvented/design'
48
+
49
+
50
+ export default function Component() {
51
+ return (
52
+ <>
53
+ <ErrorState
54
+ title="Failed to load metrics"
55
+ description="The analytics backend is currently unreachable. Our team has been notified."
56
+ retryLabel="Refresh Data"
57
+ @retry="fetchMetrics"
58
+ />
59
+ </>
60
+ )
61
+ }
62
+ ```
63
+
64
+ ### Usage Rules
65
+ - Natively forces the background, borders, and icon ring into `rose-500` shades. The icon is permanently locked to `<AlertTriangle>`.
66
+ - Emits a `@retry` event intended fully to hook into async reloading functions.
67
+
68
+ ## 3. NotFoundState
69
+
70
+ A massive structural page intended for explicit 404 views.
71
+
72
+ ### Anatomy
73
+ ```tsx
74
+ // React Component
75
+ import { NotFoundState } from '@reinvented/design'
76
+ import { useRouter } from 'react-router-dom'
77
+
78
+ const router = useRouter()
79
+
80
+
81
+ export default function Component() {
82
+ return (
83
+ <>
84
+ <NotFoundState
85
+ title="Page not found"
86
+ description="The workspace or document you are trying to view does not exist or you lack permissions."
87
+ @back="router.back()"
88
+ @home="router.push('/')"
89
+ />
90
+ </>
91
+ )
92
+ }
93
+ ```
94
+
95
+ ### Usage Rules
96
+ - This block is designed to take over the entire content area of a layout. It features a massive `404` background typography watermark layered elegantly behind a Search icon.
97
+ - It forces two standard button events: `@back` and `@home`. This provides optimal wayfinding for stranded users without forcing the developer to rebuild standard routing logic.
@@ -0,0 +1,127 @@
1
+ # Filtering & Search Blocks
2
+
3
+ This document covers composite UI blocks designed for Advanced Search Bars, Faceted Filtering, and iterating Search Results.
4
+
5
+ ## When to use Blocks vs Primitives
6
+
7
+ Use these blocks anytime the app requires complex querying, e-commerce catalog filtering, or dense search results. DO NOT build heavy filtering sidebars using raw `<Accordion>` and raw `<ScrollArea>` components independently. These blocks resolve fixed heights and desktop/mobile splitting.
8
+
9
+ ## 1. FilterBar
10
+
11
+ The `FilterBar` establishes the core horizontal header for a search experience.
12
+
13
+ ### Anatomy
14
+ ```tsx
15
+ // React Component
16
+ import { FilterBar } from '@reinvented/design'
17
+
18
+
19
+ export default function Component() {
20
+ return (
21
+ <>
22
+ <FilterBar
23
+ placeholder="Search repositories..."
24
+ :activeFilters="[
25
+ { key: 'lang', label: 'Language: TypeScript' },
26
+ { key: 'status', label: 'Status: Public' }
27
+ ]"
28
+ :resultsCount="42"
29
+ @removeFilter="(f) => handleRemove(f)"
30
+ @clearFilters="clearAll"
31
+ />
32
+ </>
33
+ )
34
+ }
35
+ ```
36
+
37
+ ### Usage Rules
38
+ - Composes a `<Search>` prepended `<Input>` along with a flexible appended `#controls` slot for mounting "Filter" buttons.
39
+ - Iterates `activeFilters` as interactive tags natively containing `<X>` dismiss icons. Emits `@removeFilter` passing back the exact object clicked.
40
+ - Displays a `resultsCount` subtle label on the bottom-left if provided.
41
+
42
+ ## 2. FacetedSidebar
43
+
44
+ The `FacetedSidebar` is a vertical panel layout designed to stick to the left-hand side of desktop layouts (and often placed in a Drawer on mobile).
45
+
46
+ ### Anatomy
47
+ ```tsx
48
+ // React Component
49
+ import { FacetedSidebar, FacetedGroup } from '@reinvented/design'
50
+ import { Checkbox } from '@reinvented/design'
51
+ import { Label } from '@reinvented/design'
52
+
53
+
54
+ export default function Component() {
55
+ return (
56
+ <>
57
+ <FacetedSidebar title="Filters">
58
+ <FacetedGroup title="Category" defaultExpanded>
59
+ <div className="flex items-center space-x-2">
60
+ <Checkbox id="cat-design" />
61
+ <Label for="cat-design">Design Systems</Label>
62
+ </div>
63
+ <div className="flex items-center space-x-2">
64
+ <Checkbox id="cat-web" />
65
+ <Label for="cat-web">Web Development</Label>
66
+ </div>
67
+ </FacetedGroup>
68
+
69
+ <FacetedGroup title="Status">
70
+ <div className="flex items-center space-x-2">
71
+ <Checkbox id="st-active" />
72
+ <Label for="st-active">Active</Label>
73
+ </div>
74
+ </FacetedGroup>
75
+ </FacetedSidebar>
76
+ </>
77
+ )
78
+ }
79
+ ```
80
+
81
+ ### Usage Rules
82
+ - Natively locks `w-full md:w-64` and utilizes a `<ScrollArea>` so the container does not infinitely push the footer down the page as filters expand.
83
+ - Uses `FacetedGroup` internally which binds native Shadcn `<Collapsible>` components, creating smooth, staggered dropdown groupings.
84
+
85
+ ## 3. SearchResultItem
86
+
87
+ The `SearchResultItem` block creates perfectly aligned horizontal list cards optimized for scanning queries.
88
+
89
+ ### Anatomy
90
+ ```tsx
91
+ // React Component
92
+ import { SearchResultItem } from '@reinvented/design'
93
+ import { Star, GitCommit } from 'lucide-react'
94
+
95
+
96
+ export default function Component() {
97
+ return (
98
+ <>
99
+ <SearchResultItem
100
+ title="reinvented/design-system"
101
+ subtitle="Updated 2 days ago"
102
+ description="The core Vue implementation of the Reinvented UI capabilities perfectly layered over Shadcn components."
103
+ tag="Public"
104
+ url="/repo/ri-design"
105
+ image="/repo-cover.png"
106
+ >
107
+ <template #meta>
108
+ <div className="flex items-center gap-1">
109
+ <Star className="h-3 w-3" /> 1.2k
110
+ </div>
111
+ <div className="flex items-center gap-1">
112
+ <GitCommit className="h-3 w-3" /> 452 Commits
113
+ </div>
114
+ </>
115
+ )
116
+ }
117
+ </SearchResultItem>
118
+ </>
119
+ )
120
+ }
121
+ ```
122
+
123
+ ### Usage Rules
124
+ - Wraps the `title` natively in an `<a>` tag pointing to `url`.
125
+ - Uses defensive CSS (`line-clamp-2 md:line-clamp-3`) on the description so extreme string lengths do not randomly snap layouts.
126
+ - Replaces the `<Avatar>` norm with a distinct `<image>` square thumbnail representing posts, products, or apps.
127
+ - Features a flexible `#meta` slot at the bottom specifically tuned for micro-stats (stars, forks, dates, views) using small text.
@@ -0,0 +1,136 @@
1
+ # Marketing & Landing Blocks
2
+
3
+ This document covers composite UI blocks designed for Public Websites, Landing Pages, and Conversion Funnels.
4
+
5
+ ## When to use Blocks vs Primitives
6
+
7
+ Use these blocks anytime the simulated app requires an unauthenticated, public-facing view meant to drive sign-ups. DO NOT build marketing layouts using raw cards or padding grids. Marketing requires immense vertical rhythm, massive typography, and specific semantic HTML structures (`<section>`, `<article>`) which these blocks provide out-of-the-box.
8
+
9
+ ## 1. HeroSection
10
+
11
+ The `HeroSection` powers the massive header that users see immediately upon visiting a landing page.
12
+
13
+ ### Anatomy
14
+ ```tsx
15
+ // React Component
16
+ import { HeroSection } from '@reinvented/design'
17
+
18
+
19
+ export default function Component() {
20
+ return (
21
+ <>
22
+ <HeroSection
23
+ badge="New Version 2.0"
24
+ title="Build better AI agents, faster than ever."
25
+ description="The complete design system tailored for autonomous LLM coding and generative UI workflows."
26
+ primaryAction="Start Building For Free"
27
+ secondaryAction="Read The Documentation"
28
+ image="/hero-dashboard.webp"
29
+ @primary="handleSignup"
30
+ @secondary="handleDocs"
31
+ />
32
+ </>
33
+ )
34
+ }
35
+ ```
36
+
37
+ ### Usage Rules
38
+ - Integrates a built-in abstract background aesthetic using a subtle dot-matrix grid and a blurred `primary` radial glow out of the box.
39
+ - The `image` is passed as a string. It automatically wraps in a massively shadowed `max-w-6xl` rounded frame floating below the typography. It completely hides itself on mobile.
40
+ - `title` is heavily tuned for desktop `text-7xl` scaling.
41
+
42
+ ## 2. FeatureGrid
43
+
44
+ The `FeatureGrid` is a robust section used to highlight three to four core selling points.
45
+
46
+ ### Anatomy
47
+ ```tsx
48
+ // React Component
49
+ import { FeatureGrid } from '@reinvented/design'
50
+ import { Rocket, Shield, Zap } from 'lucide-react'
51
+
52
+
53
+ export default function Component() {
54
+ return (
55
+ <>
56
+ <section className="container py-24 mx-auto px-6">
57
+ <h2 className="text-3xl font-bold mb-12 text-center">Why choose us?</h2>
58
+
59
+ <FeatureGrid
60
+ :columns="3"
61
+ :features="[
62
+ { title: 'Blazing Fast', description: 'Runs natively on modern engines.', icon: Zap },
63
+ { title: 'Secure', description: 'Enterprise-grade endpoints.', icon: Shield },
64
+ { title: 'Scalable', description: 'Deploy across the globe.', icon: Rocket }
65
+ ]"
66
+ />
67
+ </section>
68
+ </>
69
+ )
70
+ }
71
+ ```
72
+
73
+ ### Usage Rules
74
+ - Pass an array of `features` objects. The component seamlessly maps the `icon` into a heavily styled `primary/10` nested rounded-box.
75
+ - Control the breakpoint math natively by passing `columns` (2, 3, or 4).
76
+
77
+ ## 3. TestimonialCard
78
+
79
+ The `TestimonialCard` creates a distinct quote-box designed for social proof layouts.
80
+
81
+ ### Anatomy
82
+ ```tsx
83
+ // React Component
84
+ import { TestimonialCard } from '@reinvented/design'
85
+
86
+
87
+ export default function Component() {
88
+ return (
89
+ <>
90
+ <TestimonialCard
91
+ quote="This system completely changed how our AI agents output Vue components. Flawless execution every time."
92
+ name="Jane Doe"
93
+ role="Lead Developer"
94
+ company="Acme Corp"
95
+ avatar="/avatar.jpg"
96
+ :rating="5"
97
+ />
98
+ </>
99
+ )
100
+ }
101
+ ```
102
+
103
+ ### Usage Rules
104
+ - Uses a muted inset background (`bg-muted/30`) by default, popping to `/50` on hover.
105
+ - Passing a `rating` integer automatically generates SVG Star icons using `currentColor`.
106
+
107
+ ## 4. CtaBlock
108
+
109
+ The `CtaBlock` (Call-to-Action) is the final, massive layout trigger typically placed at the bottom of a marketing page.
110
+
111
+ ### Anatomy
112
+ ```tsx
113
+ // React Component
114
+ import { CtaBlock } from '@reinvented/design'
115
+
116
+
117
+ export default function Component() {
118
+ return (
119
+ <>
120
+ <div className="container mx-auto px-4 py-12">
121
+ <CtaBlock
122
+ title="Ready to dive in?"
123
+ description="Join thousands of developers building the next generation of software."
124
+ primaryAction="Get Started to 100% Free"
125
+ secondaryAction="Talk to Sales"
126
+ />
127
+ </div>
128
+ </>
129
+ )
130
+ }
131
+ ```
132
+
133
+ ### Usage Rules
134
+ - Reverses the color hierarchy entirely. The container assumes `bg-primary` natively and forces all text to `text-primary-foreground`.
135
+ - Contains a massive SVG ambient pattern injected silently into the right edge of the bounding box.
136
+ - The `primaryAction` button automatically swaps to a `variant="secondary"` style to maintain high contrast against the `primary` background container.
@@ -0,0 +1,102 @@
1
+ # Media & Realtime Blocks
2
+
3
+ This document covers composite UI blocks designed for Audio/Video players and Realtime Voice/Video calls.
4
+
5
+ ## When to use Blocks vs Primitives
6
+
7
+ Use these blocks whenever the user needs a video player, an audio player, or a call interface. DO NOT build media players or call controls from scratch using raw `<Button>` or `<Slider>` elements, as aligning the components correctly to standard media expectations is complex and error-prone. These blocks provide strict layout, spacing, and state alignments.
8
+
9
+ ## 1. MediaPlayer
10
+
11
+ The `MediaPlayer` block is a composite for rendering audio or video playback along with proper scrubbers and controls.
12
+
13
+ ### Anatomy
14
+ ```tsx
15
+ // React Component
16
+ import { Play, Pause, Volume2, Maximize } from 'lucide-react'
17
+ import { Button } from '@reinvented/design'
18
+ import {
19
+ MediaPlayer,
20
+ MediaPlayerVideo,
21
+ MediaPlayerControls,
22
+ MediaPlayerScrubber
23
+ } from '@reinvented/design'
24
+
25
+
26
+ export default function Component() {
27
+ return (
28
+ <>
29
+ <MediaPlayer className="max-w-2xl">
30
+ <MediaPlayerVideo poster="/placeholders/video-cover.jpg" />
31
+ <MediaPlayerControls>
32
+ <MediaPlayerScrubber :defaultValue="[30]" currentTime="1:24" totalTime="4:30" />
33
+ <div className="flex items-center justify-between mt-1 text-foreground">
34
+ <div className="flex items-center gap-2">
35
+ <Button size="icon" variant="ghost" className="h-8 w-8 rounded-full">
36
+ <Play className="h-4 w-4" />
37
+ </Button>
38
+ <Button size="icon" variant="ghost" className="h-8 w-8 rounded-full">
39
+ <Volume2 className="h-4 w-4" />
40
+ </Button>
41
+ </div>
42
+ <Button size="icon" variant="ghost" className="h-8 w-8 rounded-full">
43
+ <Maximize className="h-4 w-4" />
44
+ </Button>
45
+ </div>
46
+ </MediaPlayerControls>
47
+ </MediaPlayer>
48
+ </>
49
+ )
50
+ }
51
+ ```
52
+
53
+ ### Usage Rules
54
+ - `MediaPlayer` acts as a rounded container (usually black).
55
+ - `MediaPlayerVideo` expects a `poster` prop. If it's an audio player, omit `MediaPlayerVideo` entirely or replace it with a smaller visualization area.
56
+ - `MediaPlayerControls` houses the scrubber and timeline action buttons.
57
+ - `MediaPlayerScrubber` requires `defaultValue`, `currentTime`, and `totalTime` strings.
58
+
59
+ ## 2. CallControls
60
+
61
+ The `CallControls` block provides standard realtime conferencing actions (Mic, Video, Screen Share, Hang Up).
62
+
63
+ ### Anatomy
64
+ ```tsx
65
+ // React Component
66
+ import { Mic, MicOff, Video, PhoneOff, MonitorUp } from 'lucide-react'
67
+ import {
68
+ CallControls,
69
+ CallControlButton
70
+ } from '@reinvented/design'
71
+
72
+
73
+ export default function Component() {
74
+ return (
75
+ <>
76
+ <CallControls>
77
+ <CallControlButton tooltip="Mute Microphone" active>
78
+ <Mic className="h-5 w-5" />
79
+ </CallControlButton>
80
+
81
+ <CallControlButton tooltip="Stop Video">
82
+ <Video className="h-5 w-5" />
83
+ </CallControlButton>
84
+
85
+ <CallControlButton tooltip="Share Screen">
86
+ <MonitorUp className="h-5 w-5" />
87
+ </CallControlButton>
88
+
89
+ <CallControlButton tooltip="Leave Call" destructive>
90
+ <PhoneOff className="h-5 w-5" />
91
+ </CallControlButton>
92
+ </CallControls>
93
+ </>
94
+ )
95
+ }
96
+ ```
97
+
98
+ ### Usage Rules
99
+ - Place `CallControls` inside a relative container where you can center them either via Flexbox or absolute positioning (e.g. `absolute bottom-6 left-1/2 -translate-x-1/2`).
100
+ - Use the `active` prop on `CallControlButton` to represent toggled-on states (e.g., Mic enabled vs Mic muted).
101
+ - Use `destructive` for high-severity actions like ending a call.
102
+ - Always provide a `tooltip` string for accessibility.