@reinvented/design 0.3.0 → 1.0.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 (348) hide show
  1. package/package.json +55 -21
  2. package/src/components/blocks/auth/auth-card/AuthCard.tsx +62 -0
  3. package/src/components/blocks/auth/auth-card/index.ts +1 -0
  4. package/src/components/blocks/auth/index.ts +3 -0
  5. package/src/components/blocks/auth/social-login/SocialLoginGroup.tsx +75 -0
  6. package/src/components/blocks/auth/social-login/index.ts +1 -0
  7. package/src/components/blocks/auth/two-factor/TwoFactorForm.tsx +59 -0
  8. package/src/components/blocks/auth/two-factor/index.ts +1 -0
  9. package/src/components/blocks/communication/activity-item/ActivityItem.tsx +17 -0
  10. package/src/components/blocks/communication/activity-item/ActivityItemAvatar.tsx +21 -0
  11. package/src/components/blocks/communication/activity-item/ActivityItemContent.tsx +16 -0
  12. package/src/components/blocks/communication/activity-item/index.ts +3 -0
  13. package/src/components/blocks/communication/chat-bubble/ChatBubble.tsx +21 -0
  14. package/src/components/blocks/communication/chat-bubble/ChatBubbleAvatar.tsx +19 -0
  15. package/src/components/blocks/communication/chat-bubble/ChatBubbleMessage.tsx +35 -0
  16. package/src/components/blocks/communication/chat-bubble/ChatBubbleTimestamp.tsx +15 -0
  17. package/src/components/blocks/communication/chat-bubble/index.ts +4 -0
  18. package/src/components/blocks/communication/index.ts +2 -0
  19. package/src/components/blocks/content/article-header/ArticleHeader.tsx +73 -0
  20. package/src/components/blocks/content/article-header/index.ts +1 -0
  21. package/src/components/blocks/content/author-card/AuthorCard.tsx +46 -0
  22. package/src/components/blocks/content/author-card/index.ts +1 -0
  23. package/src/components/blocks/content/index.ts +3 -0
  24. package/src/components/blocks/content/rich-text/RichTextContent.tsx +27 -0
  25. package/src/components/blocks/content/rich-text/index.ts +1 -0
  26. package/src/components/blocks/data-management/index.ts +2 -0
  27. package/src/components/blocks/data-management/kanban/KanbanBoard.tsx +10 -0
  28. package/src/components/blocks/data-management/kanban/KanbanCard.tsx +102 -0
  29. package/src/components/blocks/data-management/kanban/KanbanColumn.tsx +41 -0
  30. package/src/components/blocks/data-management/kanban/index.ts +3 -0
  31. package/src/components/blocks/data-management/tree-view/TreeItem.tsx +68 -0
  32. package/src/components/blocks/data-management/tree-view/TreeView.tsx +10 -0
  33. package/src/components/blocks/data-management/tree-view/index.ts +2 -0
  34. package/src/components/blocks/data-viz/financial-ticker/FinancialTicker.tsx +35 -0
  35. package/src/components/blocks/data-viz/financial-ticker/index.ts +1 -0
  36. package/src/components/blocks/data-viz/index.ts +3 -0
  37. package/src/components/blocks/data-viz/kpi-card/KpiCard.tsx +61 -0
  38. package/src/components/blocks/data-viz/kpi-card/index.ts +1 -0
  39. package/src/components/blocks/data-viz/stat-grid/StatGrid.tsx +28 -0
  40. package/src/components/blocks/data-viz/stat-grid/index.ts +1 -0
  41. package/src/components/blocks/ecommerce/index.ts +3 -0
  42. package/src/components/blocks/ecommerce/pricing-tier/PricingFeatureList.tsx +27 -0
  43. package/src/components/blocks/ecommerce/pricing-tier/PricingHeader.tsx +25 -0
  44. package/src/components/blocks/ecommerce/pricing-tier/PricingTier.tsx +31 -0
  45. package/src/components/blocks/ecommerce/pricing-tier/index.ts +3 -0
  46. package/src/components/blocks/ecommerce/product-card/ProductCard.tsx +17 -0
  47. package/src/components/blocks/ecommerce/product-card/ProductCardContent.tsx +15 -0
  48. package/src/components/blocks/ecommerce/product-card/ProductCardImage.tsx +20 -0
  49. package/src/components/blocks/ecommerce/product-card/ProductCardPrice.tsx +20 -0
  50. package/src/components/blocks/ecommerce/product-card/index.ts +4 -0
  51. package/src/components/blocks/ecommerce/rating-summary/RatingStars.tsx +32 -0
  52. package/src/components/blocks/ecommerce/rating-summary/index.ts +1 -0
  53. package/src/components/blocks/feedback/empty-state/EmptyState.tsx +53 -0
  54. package/src/components/blocks/feedback/empty-state/index.ts +1 -0
  55. package/src/components/blocks/feedback/error-state/ErrorState.tsx +50 -0
  56. package/src/components/blocks/feedback/error-state/index.ts +1 -0
  57. package/src/components/blocks/feedback/index.ts +3 -0
  58. package/src/components/blocks/feedback/not-found/NotFoundState.tsx +47 -0
  59. package/src/components/blocks/feedback/not-found/index.ts +1 -0
  60. package/src/components/blocks/filtering/faceted-sidebar/FacetedGroup.tsx +32 -0
  61. package/src/components/blocks/filtering/faceted-sidebar/FacetedSidebar.tsx +26 -0
  62. package/src/components/blocks/filtering/faceted-sidebar/index.ts +2 -0
  63. package/src/components/blocks/filtering/filter-bar/FilterBar.tsx +85 -0
  64. package/src/components/blocks/filtering/filter-bar/index.ts +1 -0
  65. package/src/components/blocks/filtering/index.ts +3 -0
  66. package/src/components/blocks/filtering/search-result/SearchResultItem.tsx +70 -0
  67. package/src/components/blocks/filtering/search-result/index.ts +1 -0
  68. package/src/components/blocks/index.ts +21 -0
  69. package/src/components/blocks/marketing/cta-block/CtaBlock.tsx +80 -0
  70. package/src/components/blocks/marketing/cta-block/index.ts +1 -0
  71. package/src/components/blocks/marketing/feature-grid/FeatureGrid.tsx +47 -0
  72. package/src/components/blocks/marketing/feature-grid/index.ts +1 -0
  73. package/src/components/blocks/marketing/hero-section/HeroSection.tsx +89 -0
  74. package/src/components/blocks/marketing/hero-section/index.ts +1 -0
  75. package/src/components/blocks/marketing/index.ts +4 -0
  76. package/src/components/blocks/marketing/testimonial-card/TestimonialCard.tsx +71 -0
  77. package/src/components/blocks/marketing/testimonial-card/index.ts +1 -0
  78. package/src/components/blocks/media/call-controls/CallControlButton.tsx +52 -0
  79. package/src/components/blocks/media/call-controls/CallControls.tsx +10 -0
  80. package/src/components/blocks/media/call-controls/index.ts +2 -0
  81. package/src/components/blocks/media/index.ts +2 -0
  82. package/src/components/blocks/media/media-player/MediaPlayer.tsx +20 -0
  83. package/src/components/blocks/media/media-player/MediaPlayerControls.tsx +16 -0
  84. package/src/components/blocks/media/media-player/MediaPlayerScrubber.tsx +29 -0
  85. package/src/components/blocks/media/media-player/MediaPlayerVideo.tsx +25 -0
  86. package/src/components/blocks/media/media-player/index.ts +4 -0
  87. package/src/components/blocks/navigation/app-sidebar/AppSidebar.tsx +32 -0
  88. package/src/components/blocks/navigation/app-sidebar/NavItem.tsx +43 -0
  89. package/src/components/blocks/navigation/app-sidebar/index.ts +2 -0
  90. package/src/components/blocks/navigation/context-switcher/ContextSwitcher.tsx +77 -0
  91. package/src/components/blocks/navigation/context-switcher/index.ts +1 -0
  92. package/src/components/blocks/navigation/index.ts +3 -0
  93. package/src/components/blocks/navigation/top-navbar/TopNavbar.tsx +47 -0
  94. package/src/components/blocks/navigation/top-navbar/index.ts +1 -0
  95. package/src/components/blocks/onboarding/index.ts +2 -0
  96. package/src/components/blocks/onboarding/onboarding-welcome/OnboardingWelcome.tsx +74 -0
  97. package/src/components/blocks/onboarding/onboarding-welcome/index.ts +1 -0
  98. package/src/components/blocks/onboarding/step-wizard/StepWizard.tsx +72 -0
  99. package/src/components/blocks/onboarding/step-wizard/index.ts +1 -0
  100. package/src/components/blocks/profiles/connection-list/ConnectionItem.tsx +35 -0
  101. package/src/components/blocks/profiles/connection-list/ConnectionList.tsx +16 -0
  102. package/src/components/blocks/profiles/connection-list/index.ts +2 -0
  103. package/src/components/blocks/profiles/index.ts +3 -0
  104. package/src/components/blocks/profiles/profile-header/ProfileHeader.tsx +88 -0
  105. package/src/components/blocks/profiles/profile-header/index.ts +1 -0
  106. package/src/components/blocks/profiles/profile-stats/ProfileStats.tsx +20 -0
  107. package/src/components/blocks/profiles/profile-stats/index.ts +1 -0
  108. package/src/components/blocks/scheduling/booking-slot/BookingSlot.tsx +44 -0
  109. package/src/components/blocks/scheduling/booking-slot/index.ts +1 -0
  110. package/src/components/blocks/scheduling/event-card/EventCard.tsx +85 -0
  111. package/src/components/blocks/scheduling/event-card/index.ts +1 -0
  112. package/src/components/blocks/scheduling/index.ts +3 -0
  113. package/src/components/blocks/scheduling/timeline-row/TimelineRow.tsx +82 -0
  114. package/src/components/blocks/scheduling/timeline-row/index.ts +1 -0
  115. package/src/components/blocks/settings/billing-usage/BillingUsage.tsx +49 -0
  116. package/src/components/blocks/settings/billing-usage/index.ts +1 -0
  117. package/src/components/blocks/settings/index.ts +3 -0
  118. package/src/components/blocks/settings/integration-card/IntegrationCard.tsx +62 -0
  119. package/src/components/blocks/settings/integration-card/index.ts +1 -0
  120. package/src/components/blocks/settings/settings-section/SettingsSection.tsx +23 -0
  121. package/src/components/blocks/settings/settings-section/index.ts +1 -0
  122. package/src/components/ui/accordion.tsx +56 -0
  123. package/src/components/ui/alert-dialog.tsx +141 -0
  124. package/src/components/ui/alert.tsx +59 -0
  125. package/src/components/ui/aspect-ratio.tsx +5 -0
  126. package/src/components/ui/avatar.tsx +50 -0
  127. package/src/components/ui/badge.tsx +36 -0
  128. package/src/components/ui/breadcrumb.tsx +115 -0
  129. package/src/components/ui/button.tsx +56 -0
  130. package/src/components/ui/calendar.tsx +211 -0
  131. package/src/components/ui/card.tsx +79 -0
  132. package/src/components/ui/carousel.tsx +262 -0
  133. package/src/components/ui/chart.tsx +367 -0
  134. package/src/components/ui/checkbox.tsx +28 -0
  135. package/src/components/ui/collapsible.tsx +11 -0
  136. package/src/components/ui/command.tsx +153 -0
  137. package/src/components/ui/component-placeholder.tsx +38 -0
  138. package/src/components/ui/context-menu.tsx +198 -0
  139. package/src/components/ui/dialog.tsx +122 -0
  140. package/src/components/ui/drawer.tsx +116 -0
  141. package/src/components/ui/dropdown-menu.tsx +200 -0
  142. package/src/components/ui/form.tsx +176 -0
  143. package/src/components/ui/hover-card.tsx +27 -0
  144. package/src/components/ui/input-otp.tsx +69 -0
  145. package/src/components/ui/input.tsx +22 -0
  146. package/src/components/ui/label.tsx +24 -0
  147. package/src/components/ui/menubar.tsx +256 -0
  148. package/src/components/ui/navigation-menu.tsx +128 -0
  149. package/src/components/ui/pagination.tsx +117 -0
  150. package/src/components/ui/popover.tsx +29 -0
  151. package/src/components/ui/progress.tsx +28 -0
  152. package/src/components/ui/radio-group.tsx +42 -0
  153. package/src/components/ui/resizable.tsx +45 -0
  154. package/src/components/ui/scroll-area.tsx +46 -0
  155. package/src/components/ui/select.tsx +160 -0
  156. package/src/components/ui/separator.tsx +29 -0
  157. package/src/components/ui/sheet.tsx +140 -0
  158. package/src/components/ui/skeleton.tsx +15 -0
  159. package/src/components/ui/slider.tsx +26 -0
  160. package/src/components/ui/sonner.tsx +45 -0
  161. package/src/components/ui/switch.tsx +27 -0
  162. package/src/components/ui/table.tsx +117 -0
  163. package/src/components/ui/tabs.tsx +53 -0
  164. package/src/components/ui/textarea.tsx +22 -0
  165. package/src/components/ui/toast.tsx +127 -0
  166. package/src/components/ui/toaster.tsx +33 -0
  167. package/src/components/ui/toggle-group.tsx +61 -0
  168. package/src/components/ui/toggle.tsx +45 -0
  169. package/src/components/ui/tooltip.tsx +28 -0
  170. package/src/hooks/use-toast.ts +194 -0
  171. package/src/index.ts +53 -56
  172. package/src/styles/index.css +6 -0
  173. package/src/styles/tokens.css +30 -18
  174. package/tailwind.config.js +120 -98
  175. package/tsconfig.json +2 -2
  176. package/src/components/ui/accordion/Accordion.vue +0 -13
  177. package/src/components/ui/accordion/AccordionContent.vue +0 -20
  178. package/src/components/ui/accordion/AccordionItem.vue +0 -15
  179. package/src/components/ui/accordion/AccordionTrigger.vue +0 -25
  180. package/src/components/ui/accordion/index.ts +0 -4
  181. package/src/components/ui/alert/Alert.vue +0 -38
  182. package/src/components/ui/alert/AlertDescription.vue +0 -12
  183. package/src/components/ui/alert/AlertTitle.vue +0 -12
  184. package/src/components/ui/alert/index.ts +0 -3
  185. package/src/components/ui/alert-dialog/AlertDialog.vue +0 -13
  186. package/src/components/ui/alert-dialog/AlertDialogAction.vue +0 -21
  187. package/src/components/ui/alert-dialog/AlertDialogCancel.vue +0 -21
  188. package/src/components/ui/alert-dialog/AlertDialogContent.vue +0 -39
  189. package/src/components/ui/alert-dialog/AlertDialogDescription.vue +0 -15
  190. package/src/components/ui/alert-dialog/AlertDialogFooter.vue +0 -12
  191. package/src/components/ui/alert-dialog/AlertDialogHeader.vue +0 -12
  192. package/src/components/ui/alert-dialog/AlertDialogTitle.vue +0 -15
  193. package/src/components/ui/alert-dialog/AlertDialogTrigger.vue +0 -11
  194. package/src/components/ui/alert-dialog/index.ts +0 -9
  195. package/src/components/ui/avatar/Avatar.vue +0 -14
  196. package/src/components/ui/avatar/index.ts +0 -1
  197. package/src/components/ui/badge/Badge.vue +0 -27
  198. package/src/components/ui/badge/index.ts +0 -1
  199. package/src/components/ui/breadcrumb/Breadcrumb.vue +0 -6
  200. package/src/components/ui/breadcrumb/BreadcrumbEllipsis.vue +0 -12
  201. package/src/components/ui/breadcrumb/BreadcrumbItem.vue +0 -6
  202. package/src/components/ui/breadcrumb/BreadcrumbLink.vue +0 -20
  203. package/src/components/ui/breadcrumb/BreadcrumbList.vue +0 -6
  204. package/src/components/ui/breadcrumb/BreadcrumbPage.vue +0 -6
  205. package/src/components/ui/breadcrumb/BreadcrumbSeparator.vue +0 -11
  206. package/src/components/ui/breadcrumb/index.ts +0 -7
  207. package/src/components/ui/button/Button.vue +0 -65
  208. package/src/components/ui/button/index.ts +0 -1
  209. package/src/components/ui/card/Card.vue +0 -13
  210. package/src/components/ui/card/CardContent.vue +0 -7
  211. package/src/components/ui/card/CardDescription.vue +0 -7
  212. package/src/components/ui/card/CardFooter.vue +0 -7
  213. package/src/components/ui/card/CardHeader.vue +0 -9
  214. package/src/components/ui/card/CardTitle.vue +0 -7
  215. package/src/components/ui/card/index.ts +0 -6
  216. package/src/components/ui/checkbox/Checkbox.vue +0 -25
  217. package/src/components/ui/checkbox/index.ts +0 -1
  218. package/src/components/ui/collapsible/Collapsible.vue +0 -13
  219. package/src/components/ui/collapsible/index.ts +0 -2
  220. package/src/components/ui/command/Command.vue +0 -16
  221. package/src/components/ui/command/CommandEmpty.vue +0 -5
  222. package/src/components/ui/command/CommandGroup.vue +0 -22
  223. package/src/components/ui/command/CommandInput.vue +0 -21
  224. package/src/components/ui/command/CommandItem.vue +0 -22
  225. package/src/components/ui/command/CommandList.vue +0 -17
  226. package/src/components/ui/command/CommandSeparator.vue +0 -5
  227. package/src/components/ui/command/index.ts +0 -7
  228. package/src/components/ui/context-menu/ContextMenuContent.vue +0 -24
  229. package/src/components/ui/context-menu/ContextMenuItem.vue +0 -16
  230. package/src/components/ui/context-menu/ContextMenuLabel.vue +0 -9
  231. package/src/components/ui/context-menu/ContextMenuSeparator.vue +0 -9
  232. package/src/components/ui/context-menu/ContextMenuSubContent.vue +0 -14
  233. package/src/components/ui/context-menu/index.ts +0 -9
  234. package/src/components/ui/dialog/Dialog.vue +0 -14
  235. package/src/components/ui/dialog/DialogClose.vue +0 -12
  236. package/src/components/ui/dialog/DialogContent.vue +0 -48
  237. package/src/components/ui/dialog/DialogDescription.vue +0 -23
  238. package/src/components/ui/dialog/DialogFooter.vue +0 -12
  239. package/src/components/ui/dialog/DialogHeader.vue +0 -12
  240. package/src/components/ui/dialog/DialogScrollContent.vue +0 -47
  241. package/src/components/ui/dialog/DialogTitle.vue +0 -23
  242. package/src/components/ui/dialog/DialogTrigger.vue +0 -12
  243. package/src/components/ui/dialog/index.ts +0 -9
  244. package/src/components/ui/dropdown-menu/DropdownMenu.vue +0 -13
  245. package/src/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue +0 -28
  246. package/src/components/ui/dropdown-menu/DropdownMenuContent.vue +0 -33
  247. package/src/components/ui/dropdown-menu/DropdownMenuGroup.vue +0 -11
  248. package/src/components/ui/dropdown-menu/DropdownMenuItem.vue +0 -27
  249. package/src/components/ui/dropdown-menu/DropdownMenuLabel.vue +0 -23
  250. package/src/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue +0 -13
  251. package/src/components/ui/dropdown-menu/DropdownMenuRadioItem.vue +0 -27
  252. package/src/components/ui/dropdown-menu/DropdownMenuSeparator.vue +0 -13
  253. package/src/components/ui/dropdown-menu/DropdownMenuShortcut.vue +0 -12
  254. package/src/components/ui/dropdown-menu/DropdownMenuSub.vue +0 -13
  255. package/src/components/ui/dropdown-menu/DropdownMenuSubContent.vue +0 -27
  256. package/src/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue +0 -23
  257. package/src/components/ui/dropdown-menu/DropdownMenuTrigger.vue +0 -11
  258. package/src/components/ui/dropdown-menu/index.ts +0 -14
  259. package/src/components/ui/form/FormControl.vue +0 -3
  260. package/src/components/ui/form/FormDescription.vue +0 -6
  261. package/src/components/ui/form/FormItem.vue +0 -6
  262. package/src/components/ui/form/FormLabel.vue +0 -10
  263. package/src/components/ui/form/FormMessage.vue +0 -10
  264. package/src/components/ui/form/index.ts +0 -9
  265. package/src/components/ui/hover-card/HoverCard.vue +0 -13
  266. package/src/components/ui/hover-card/HoverCardContent.vue +0 -26
  267. package/src/components/ui/hover-card/HoverCardTrigger.vue +0 -11
  268. package/src/components/ui/hover-card/index.ts +0 -3
  269. package/src/components/ui/input/Input.vue +0 -23
  270. package/src/components/ui/input/index.ts +0 -1
  271. package/src/components/ui/label/Label.vue +0 -18
  272. package/src/components/ui/label/index.ts +0 -1
  273. package/src/components/ui/lib/utils.ts +0 -2
  274. package/src/components/ui/menubar/MenubarContent.vue +0 -15
  275. package/src/components/ui/menubar/MenubarItem.vue +0 -13
  276. package/src/components/ui/menubar/MenubarTrigger.vue +0 -13
  277. package/src/components/ui/menubar/index.ts +0 -5
  278. package/src/components/ui/navigation-menu/NavigationMenuContent.vue +0 -14
  279. package/src/components/ui/navigation-menu/NavigationMenuTrigger.vue +0 -15
  280. package/src/components/ui/navigation-menu/index.ts +0 -4
  281. package/src/components/ui/pagination/PaginationContent.vue +0 -13
  282. package/src/components/ui/pagination/PaginationEllipsis.vue +0 -12
  283. package/src/components/ui/pagination/PaginationNext.vue +0 -14
  284. package/src/components/ui/pagination/PaginationPrev.vue +0 -14
  285. package/src/components/ui/pagination/index.ts +0 -6
  286. package/src/components/ui/popover/Popover.vue +0 -13
  287. package/src/components/ui/popover/PopoverContent.vue +0 -27
  288. package/src/components/ui/popover/PopoverTrigger.vue +0 -11
  289. package/src/components/ui/popover/index.ts +0 -3
  290. package/src/components/ui/progress/Progress.vue +0 -21
  291. package/src/components/ui/progress/index.ts +0 -1
  292. package/src/components/ui/radio-group/RadioGroup.vue +0 -16
  293. package/src/components/ui/radio-group/RadioGroupItem.vue +0 -24
  294. package/src/components/ui/radio-group/index.ts +0 -2
  295. package/src/components/ui/scroll-area/ScrollArea.vue +0 -13
  296. package/src/components/ui/scroll-area/index.ts +0 -1
  297. package/src/components/ui/select/Select.vue +0 -13
  298. package/src/components/ui/select/SelectContent.vue +0 -40
  299. package/src/components/ui/select/SelectGroup.vue +0 -15
  300. package/src/components/ui/select/SelectItem.vue +0 -30
  301. package/src/components/ui/select/SelectLabel.vue +0 -15
  302. package/src/components/ui/select/SelectSeparator.vue +0 -13
  303. package/src/components/ui/select/SelectTrigger.vue +0 -23
  304. package/src/components/ui/select/SelectValue.vue +0 -11
  305. package/src/components/ui/select/index.ts +0 -8
  306. package/src/components/ui/separator/Separator.vue +0 -16
  307. package/src/components/ui/separator/index.ts +0 -1
  308. package/src/components/ui/sheet/Sheet.vue +0 -13
  309. package/src/components/ui/sheet/SheetClose.vue +0 -11
  310. package/src/components/ui/sheet/SheetContent.vue +0 -65
  311. package/src/components/ui/sheet/SheetDescription.vue +0 -15
  312. package/src/components/ui/sheet/SheetFooter.vue +0 -12
  313. package/src/components/ui/sheet/SheetHeader.vue +0 -12
  314. package/src/components/ui/sheet/SheetTitle.vue +0 -15
  315. package/src/components/ui/sheet/SheetTrigger.vue +0 -11
  316. package/src/components/ui/sheet/index.ts +0 -8
  317. package/src/components/ui/skeleton/Skeleton.vue +0 -9
  318. package/src/components/ui/skeleton/index.ts +0 -1
  319. package/src/components/ui/slider/Slider.vue +0 -26
  320. package/src/components/ui/slider/index.ts +0 -1
  321. package/src/components/ui/switch/Switch.vue +0 -24
  322. package/src/components/ui/switch/index.ts +0 -1
  323. package/src/components/ui/table/Table.vue +0 -13
  324. package/src/components/ui/table/TableBody.vue +0 -6
  325. package/src/components/ui/table/TableCaption.vue +0 -6
  326. package/src/components/ui/table/TableCell.vue +0 -6
  327. package/src/components/ui/table/TableFooter.vue +0 -6
  328. package/src/components/ui/table/TableHead.vue +0 -6
  329. package/src/components/ui/table/TableHeader.vue +0 -6
  330. package/src/components/ui/table/TableRow.vue +0 -6
  331. package/src/components/ui/table/index.ts +0 -8
  332. package/src/components/ui/tabs/Tabs.vue +0 -13
  333. package/src/components/ui/tabs/TabsContent.vue +0 -21
  334. package/src/components/ui/tabs/TabsList.vue +0 -21
  335. package/src/components/ui/tabs/TabsTrigger.vue +0 -21
  336. package/src/components/ui/tabs/index.ts +0 -4
  337. package/src/components/ui/textarea/Textarea.vue +0 -29
  338. package/src/components/ui/textarea/index.ts +0 -1
  339. package/src/components/ui/toggle/Toggle.vue +0 -40
  340. package/src/components/ui/toggle/index.ts +0 -1
  341. package/src/components/ui/toggle-group/ToggleGroup.vue +0 -16
  342. package/src/components/ui/toggle-group/ToggleGroupItem.vue +0 -21
  343. package/src/components/ui/toggle-group/index.ts +0 -2
  344. package/src/components/ui/tooltip/Tooltip.vue +0 -13
  345. package/src/components/ui/tooltip/TooltipContent.vue +0 -27
  346. package/src/components/ui/tooltip/TooltipProvider.vue +0 -12
  347. package/src/components/ui/tooltip/TooltipTrigger.vue +0 -11
  348. package/src/components/ui/tooltip/index.ts +0 -4
@@ -0,0 +1,52 @@
1
+ import React from 'react'
2
+ import { cn } from '@/lib/utils'
3
+ import { Button } from '@/components/ui/button'
4
+ import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip'
5
+
6
+ interface CallControlButtonProps {
7
+ tooltip?: string
8
+ active?: boolean
9
+ destructive?: boolean
10
+ className?: string
11
+ children?: React.ReactNode
12
+ onClick?: React.MouseEventHandler<HTMLButtonElement>
13
+ }
14
+
15
+ export function CallControlButton({
16
+ tooltip,
17
+ active,
18
+ destructive,
19
+ className,
20
+ children,
21
+ onClick,
22
+ }: CallControlButtonProps) {
23
+ const variant = destructive ? 'destructive' : active ? 'default' : 'secondary'
24
+
25
+ const button = (
26
+ <Button
27
+ size="icon"
28
+ variant={variant}
29
+ className={cn('rounded-full h-12 w-12', className)}
30
+ onClick={onClick}
31
+ >
32
+ {children}
33
+ </Button>
34
+ )
35
+
36
+ if (tooltip) {
37
+ return (
38
+ <TooltipProvider>
39
+ <Tooltip>
40
+ <TooltipTrigger asChild>
41
+ {button}
42
+ </TooltipTrigger>
43
+ <TooltipContent>
44
+ <p>{tooltip}</p>
45
+ </TooltipContent>
46
+ </Tooltip>
47
+ </TooltipProvider>
48
+ )
49
+ }
50
+
51
+ return button
52
+ }
@@ -0,0 +1,10 @@
1
+ import React from 'react'
2
+ import { cn } from '@/lib/utils'
3
+
4
+ export function CallControls({ className, children }: { className?: string; children?: React.ReactNode }) {
5
+ return (
6
+ <div className={cn('flex items-center justify-center gap-3 bg-background p-3 rounded-full shadow-sm border mx-auto w-fit', className)}>
7
+ {children}
8
+ </div>
9
+ )
10
+ }
@@ -0,0 +1,2 @@
1
+ export * from './CallControls'
2
+ export * from './CallControlButton'
@@ -0,0 +1,2 @@
1
+ export * from './media-player'
2
+ export * from './call-controls'
@@ -0,0 +1,20 @@
1
+ import React from 'react'
2
+ import { cn } from '@/lib/utils'
3
+
4
+ export function MediaPlayer({
5
+ className,
6
+ children,
7
+ ...props
8
+ }: React.HTMLAttributes<HTMLDivElement>) {
9
+ return (
10
+ <div
11
+ className={cn(
12
+ 'relative rounded-xl overflow-hidden bg-black flex flex-col shadow-sm border',
13
+ className,
14
+ )}
15
+ {...props}
16
+ >
17
+ {children}
18
+ </div>
19
+ )
20
+ }
@@ -0,0 +1,16 @@
1
+ import React from 'react'
2
+ import { cn } from '@/lib/utils'
3
+
4
+ export function MediaPlayerControls({
5
+ className,
6
+ children,
7
+ }: {
8
+ className?: string
9
+ children?: React.ReactNode
10
+ }) {
11
+ return (
12
+ <div className={cn('p-4 bg-background/95 backdrop-blur flex flex-col gap-2 relative z-10 w-full', className)}>
13
+ {children}
14
+ </div>
15
+ )
16
+ }
@@ -0,0 +1,29 @@
1
+ import React from 'react'
2
+ import { Slider } from '@/components/ui/slider'
3
+
4
+ interface MediaPlayerScrubberProps {
5
+ defaultValue?: number[]
6
+ max?: number
7
+ currentTime?: string
8
+ totalTime?: string
9
+ }
10
+
11
+ export function MediaPlayerScrubber({
12
+ defaultValue,
13
+ max,
14
+ currentTime,
15
+ totalTime,
16
+ }: MediaPlayerScrubberProps) {
17
+ return (
18
+ <div className="flex items-center gap-3">
19
+ <span className="text-xs text-muted-foreground tabular-nums">{currentTime || '0:00'}</span>
20
+ <Slider
21
+ defaultValue={defaultValue || [0]}
22
+ max={max || 100}
23
+ step={1}
24
+ className="flex-1"
25
+ />
26
+ <span className="text-xs text-muted-foreground tabular-nums">{totalTime || '0:00'}</span>
27
+ </div>
28
+ )
29
+ }
@@ -0,0 +1,25 @@
1
+ import React from 'react'
2
+ import type { HTMLAttributes } from 'react'
3
+ import { cn } from '@/lib/utils'
4
+ import { Play } from 'lucide-react'
5
+
6
+ interface MediaPlayerVideoProps {
7
+ src?: string
8
+ poster?: string
9
+ className?: HTMLAttributes<HTMLElement>['className']
10
+ }
11
+
12
+ export function MediaPlayerVideo({ src, poster, className }: MediaPlayerVideoProps) {
13
+ return (
14
+ <div className={cn('relative aspect-video bg-muted flex items-center justify-center group', className)}>
15
+ {poster && (
16
+ <img src={poster} className="absolute inset-0 w-full h-full object-cover opacity-60" />
17
+ )}
18
+ <div className="absolute inset-0 bg-black/20 group-hover:bg-black/40 transition-colors flex items-center justify-center cursor-pointer">
19
+ <div className="h-12 w-12 rounded-full bg-background/90 text-foreground flex items-center justify-center shadow-lg transform transition-transform group-hover:scale-110">
20
+ <Play className="h-5 w-5 ml-1" />
21
+ </div>
22
+ </div>
23
+ </div>
24
+ )
25
+ }
@@ -0,0 +1,4 @@
1
+ export * from './MediaPlayer'
2
+ export * from './MediaPlayerVideo'
3
+ export * from './MediaPlayerControls'
4
+ export * from './MediaPlayerScrubber'
@@ -0,0 +1,32 @@
1
+ import React from 'react'
2
+ import { cn } from '@/lib/utils'
3
+ import { ScrollArea } from '@/components/ui/scroll-area'
4
+
5
+ interface AppSidebarProps {
6
+ className?: string
7
+ header?: React.ReactNode
8
+ footer?: React.ReactNode
9
+ children?: React.ReactNode
10
+ }
11
+
12
+ export function AppSidebar({ className, header, footer, children }: AppSidebarProps) {
13
+ return (
14
+ <div className={cn('flex flex-col h-screen w-64 border-r bg-muted/10 text-foreground shrink-0', className)}>
15
+ <div className="h-14 px-4 border-b flex items-center shrink-0">
16
+ {header}
17
+ </div>
18
+
19
+ <ScrollArea className="flex-1 py-4">
20
+ <div className="px-3 flex flex-col gap-1">
21
+ {children}
22
+ </div>
23
+ </ScrollArea>
24
+
25
+ {footer && (
26
+ <div className="p-4 border-t shrink-0">
27
+ {footer}
28
+ </div>
29
+ )}
30
+ </div>
31
+ )
32
+ }
@@ -0,0 +1,43 @@
1
+ import React from 'react'
2
+ import { cn } from '@/lib/utils'
3
+
4
+ interface NavItemProps {
5
+ href?: string
6
+ icon?: React.ComponentType<React.SVGProps<SVGSVGElement>>
7
+ title: string
8
+ isActive?: boolean
9
+ className?: string
10
+ badge?: React.ReactNode
11
+ }
12
+
13
+ export function NavItem({ href, icon: Icon, title, isActive, className, badge }: NavItemProps) {
14
+ const classes = cn(
15
+ 'flex items-center gap-3 px-3 py-2 rounded-md text-sm font-medium transition-colors w-full text-left',
16
+ isActive
17
+ ? 'bg-primary/5 text-primary hover:bg-primary/10'
18
+ : 'text-muted-foreground hover:text-foreground hover:bg-muted',
19
+ className
20
+ )
21
+
22
+ const content = (
23
+ <>
24
+ {Icon && <Icon className="h-4 w-4 shrink-0" />}
25
+ <span className="truncate flex-1">{title}</span>
26
+ {badge}
27
+ </>
28
+ )
29
+
30
+ if (href) {
31
+ return (
32
+ <a href={href} className={classes}>
33
+ {content}
34
+ </a>
35
+ )
36
+ }
37
+
38
+ return (
39
+ <button className={classes}>
40
+ {content}
41
+ </button>
42
+ )
43
+ }
@@ -0,0 +1,2 @@
1
+ export * from './AppSidebar'
2
+ export * from './NavItem'
@@ -0,0 +1,77 @@
1
+ import React from 'react'
2
+ import {
3
+ DropdownMenu,
4
+ DropdownMenuTrigger,
5
+ DropdownMenuContent,
6
+ DropdownMenuItem,
7
+ DropdownMenuLabel,
8
+ DropdownMenuSeparator,
9
+ } from '@/components/ui/dropdown-menu'
10
+ import { ChevronsUpDown, Building2 } from 'lucide-react'
11
+ import { Avatar, AvatarImage, AvatarFallback } from '@/components/ui/avatar'
12
+ import { cn } from '@/lib/utils'
13
+
14
+ interface ContextItem {
15
+ id: string
16
+ name: string
17
+ avatar?: string
18
+ }
19
+
20
+ interface ContextSwitcherProps {
21
+ contexts: ContextItem[]
22
+ activeId?: string
23
+ className?: string
24
+ onSelect?: (id: string) => void
25
+ }
26
+
27
+ export function ContextSwitcher({ contexts, activeId, className, onSelect }: ContextSwitcherProps) {
28
+ const activeContext = contexts.find((c) => c.id === activeId)
29
+
30
+ return (
31
+ <DropdownMenu>
32
+ <DropdownMenuTrigger asChild>
33
+ <button
34
+ className={cn(
35
+ 'flex items-center gap-2 hover:bg-accent hover:text-accent-foreground px-2 py-1.5 rounded-md transition-colors w-full outline-none focus-visible:ring-2 focus-visible:ring-ring',
36
+ className
37
+ )}
38
+ >
39
+ <Avatar className="h-6 w-6 rounded-md shrink-0 border shadow-sm">
40
+ {activeContext?.avatar && <AvatarImage src={activeContext.avatar} />}
41
+ <AvatarFallback className="rounded-md bg-primary/10 text-primary text-xs">
42
+ <Building2 className="h-3 w-3" />
43
+ </AvatarFallback>
44
+ </Avatar>
45
+ <span className="truncate text-sm font-medium flex-1 text-left">
46
+ {activeContext?.name || 'Select Workspace'}
47
+ </span>
48
+ <ChevronsUpDown className="h-3 w-3 shrink-0 text-muted-foreground ml-1" />
49
+ </button>
50
+ </DropdownMenuTrigger>
51
+ <DropdownMenuContent className="w-56" align="start">
52
+ <DropdownMenuLabel className="text-xs text-muted-foreground uppercase tracking-wider font-semibold">
53
+ Workspaces
54
+ </DropdownMenuLabel>
55
+ {contexts.map((ctx) => (
56
+ <DropdownMenuItem
57
+ key={ctx.id}
58
+ onClick={() => onSelect?.(ctx.id)}
59
+ className="gap-2 cursor-pointer py-2"
60
+ >
61
+ <Avatar className="h-5 w-5 rounded shrink-0 border">
62
+ {ctx.avatar && <AvatarImage src={ctx.avatar} />}
63
+ <AvatarFallback className="rounded text-[10px]">
64
+ {ctx.name.substring(0, 2).toUpperCase()}
65
+ </AvatarFallback>
66
+ </Avatar>
67
+ <span className="truncate flex-1">{ctx.name}</span>
68
+ </DropdownMenuItem>
69
+ ))}
70
+ <DropdownMenuSeparator />
71
+ <DropdownMenuItem className="cursor-pointer">
72
+ <span className="text-muted-foreground">Create Workspace...</span>
73
+ </DropdownMenuItem>
74
+ </DropdownMenuContent>
75
+ </DropdownMenu>
76
+ )
77
+ }
@@ -0,0 +1 @@
1
+ export * from './ContextSwitcher'
@@ -0,0 +1,3 @@
1
+ export * from './app-sidebar'
2
+ export * from './top-navbar'
3
+ export * from './context-switcher'
@@ -0,0 +1,47 @@
1
+ import React from 'react'
2
+ import { cn } from '@/lib/utils'
3
+ import { Menu } from 'lucide-react'
4
+ import { Button } from '@/components/ui/button'
5
+
6
+ interface TopNavbarProps {
7
+ className?: string
8
+ onMenuClick?: () => void
9
+ brand?: React.ReactNode
10
+ center?: React.ReactNode
11
+ actions?: React.ReactNode
12
+ }
13
+
14
+ export function TopNavbar({ className, onMenuClick, brand, center, actions }: TopNavbarProps) {
15
+ return (
16
+ <header
17
+ className={cn(
18
+ 'sticky top-0 z-40 w-full border-b bg-background/95 backdrop-blur flex h-14 items-center gap-4 px-4 sm:px-6 shadow-sm',
19
+ className
20
+ )}
21
+ >
22
+ <Button
23
+ variant="ghost"
24
+ size="icon"
25
+ className="md:hidden shrink-0"
26
+ onClick={onMenuClick}
27
+ >
28
+ <Menu className="h-5 w-5" />
29
+ <span className="sr-only">Toggle menu</span>
30
+ </Button>
31
+
32
+ <div className="flex items-center gap-2 md:gap-4 shrink-0 font-bold text-lg">
33
+ {brand}
34
+ </div>
35
+
36
+ <div className="flex-1 flex items-center justify-end md:justify-between gap-4">
37
+ <div className="hidden md:flex flex-[0_1_auto] w-full max-w-sm mr-auto ml-4">
38
+ {center}
39
+ </div>
40
+
41
+ <div className="flex items-center gap-2 shrink-0">
42
+ {actions}
43
+ </div>
44
+ </div>
45
+ </header>
46
+ )
47
+ }
@@ -0,0 +1 @@
1
+ export * from './TopNavbar'
@@ -0,0 +1,2 @@
1
+ export * from './onboarding-welcome'
2
+ export * from './step-wizard'
@@ -0,0 +1,74 @@
1
+ import React from 'react'
2
+ import { Card, CardContent } from '@/components/ui/card'
3
+ import { Button } from '@/components/ui/button'
4
+ import { CheckCircle2, ArrowRight } from 'lucide-react'
5
+ import { cn } from '@/lib/utils'
6
+
7
+ interface OnboardingWelcomeProps {
8
+ title: string
9
+ description: string
10
+ image?: string
11
+ features?: string[]
12
+ primaryAction?: string
13
+ secondaryAction?: string
14
+ className?: string
15
+ onPrimary?: () => void
16
+ onSecondary?: () => void
17
+ }
18
+
19
+ export function OnboardingWelcome({
20
+ title,
21
+ description,
22
+ image,
23
+ features,
24
+ primaryAction,
25
+ secondaryAction,
26
+ className,
27
+ onPrimary,
28
+ onSecondary,
29
+ }: OnboardingWelcomeProps) {
30
+ return (
31
+ <Card className={cn('overflow-hidden border-none shadow-lg max-w-2xl mx-auto', className)}>
32
+ {image ? (
33
+ <div className="w-full h-48 sm:h-64 bg-muted relative">
34
+ <img src={image} className="w-full h-full object-cover" />
35
+ <div className="absolute inset-0 bg-gradient-to-t from-background via-background/20 to-transparent"></div>
36
+ </div>
37
+ ) : (
38
+ <div className="w-full h-32 bg-gradient-to-br from-primary/20 via-primary/5 to-background"></div>
39
+ )}
40
+
41
+ <CardContent className="p-8 sm:p-10 relative z-10 -mt-8 sm:-mt-12 bg-background/95 backdrop-blur shadow-sm mx-6 sm:mx-10 rounded-xl border mb-8">
42
+ <h2 className="text-2xl sm:text-3xl font-bold tracking-tight mb-3 text-center">{title}</h2>
43
+ <p className="text-muted-foreground text-center mb-8 leading-relaxed">
44
+ {description}
45
+ </p>
46
+
47
+ {features && features.length > 0 && (
48
+ <div className="space-y-4 mb-8">
49
+ {features.map((feature) => (
50
+ <div key={feature} className="flex items-start gap-3">
51
+ <CheckCircle2 className="h-5 w-5 text-primary shrink-0 mt-0.5" />
52
+ <span className="text-sm font-medium leading-relaxed">{feature}</span>
53
+ </div>
54
+ ))}
55
+ </div>
56
+ )}
57
+
58
+ <div className="flex flex-col sm:flex-row gap-3 mt-auto">
59
+ {secondaryAction && (
60
+ <Button variant="outline" className="w-full sm:w-1/2" onClick={onSecondary}>
61
+ {secondaryAction}
62
+ </Button>
63
+ )}
64
+ {primaryAction && (
65
+ <Button className={cn('w-full', secondaryAction && 'sm:w-1/2')} onClick={onPrimary}>
66
+ {primaryAction}
67
+ <ArrowRight className="ml-2 h-4 w-4" />
68
+ </Button>
69
+ )}
70
+ </div>
71
+ </CardContent>
72
+ </Card>
73
+ )
74
+ }
@@ -0,0 +1 @@
1
+ export * from './OnboardingWelcome'
@@ -0,0 +1,72 @@
1
+ import React from 'react'
2
+ import { cn } from '@/lib/utils'
3
+ import { Check } from 'lucide-react'
4
+
5
+ interface StepWizardProps {
6
+ steps: { title: string; description?: string }[]
7
+ currentStep: number // 1-indexed
8
+ className?: string
9
+ }
10
+
11
+ export function StepWizard({ steps, currentStep, className }: StepWizardProps) {
12
+ const progressWidth = steps.length > 1
13
+ ? ((currentStep - 1) / (steps.length - 1)) * 100
14
+ : 0
15
+
16
+ return (
17
+ <div className={cn('w-full', className)}>
18
+ <div className="flex items-center justify-between w-full relative">
19
+ {/* Background Connecting Line */}
20
+ <div
21
+ className="absolute top-4 left-0 h-0.5 bg-muted-foreground/20 -z-10"
22
+ style={{ width: '100%' }}
23
+ />
24
+
25
+ {/* Colored Progress Line */}
26
+ <div
27
+ className="absolute top-4 left-0 h-0.5 bg-primary transition-all duration-300 -z-10"
28
+ style={{ width: `${progressWidth}%` }}
29
+ />
30
+
31
+ {steps.map((step, index) => (
32
+ <div
33
+ key={step.title}
34
+ className="flex flex-col items-center relative z-10"
35
+ >
36
+ <div
37
+ className={cn(
38
+ 'w-8 h-8 rounded-full flex items-center justify-center text-sm font-semibold transition-colors duration-200 shadow-sm',
39
+ index + 1 < currentStep
40
+ ? 'bg-primary text-primary-foreground ring-2 ring-primary ring-offset-2 ring-offset-background'
41
+ : index + 1 === currentStep
42
+ ? 'bg-primary text-primary-foreground ring-4 ring-primary/20'
43
+ : 'bg-background text-muted-foreground border-2 border-muted-foreground/30'
44
+ )}
45
+ >
46
+ {index + 1 < currentStep ? (
47
+ <Check className="h-4 w-4" />
48
+ ) : (
49
+ <span>{index + 1}</span>
50
+ )}
51
+ </div>
52
+ <div className="mt-3 text-center hidden sm:flex flex-col items-center max-w-[120px]">
53
+ <h4
54
+ className={cn(
55
+ 'text-sm font-semibold whitespace-nowrap',
56
+ index + 1 <= currentStep ? 'text-foreground' : 'text-muted-foreground'
57
+ )}
58
+ >
59
+ {step.title}
60
+ </h4>
61
+ {step.description && (
62
+ <p className="text-xs text-muted-foreground mt-0.5 text-center line-clamp-2">
63
+ {step.description}
64
+ </p>
65
+ )}
66
+ </div>
67
+ </div>
68
+ ))}
69
+ </div>
70
+ </div>
71
+ )
72
+ }
@@ -0,0 +1 @@
1
+ export * from './StepWizard'
@@ -0,0 +1,35 @@
1
+ import React from 'react'
2
+ import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'
3
+ import { Card } from '@/components/ui/card'
4
+ import { cn } from '@/lib/utils'
5
+
6
+ interface ConnectionItemProps {
7
+ name: string
8
+ description?: string
9
+ avatar?: string
10
+ className?: string
11
+ action?: React.ReactNode
12
+ }
13
+
14
+ export function ConnectionItem({ name, description, avatar, className, action }: ConnectionItemProps) {
15
+ return (
16
+ <Card className={cn('flex items-center justify-between p-4 shadow-sm hover:shadow transition-shadow border-muted', className)}>
17
+ <div className="flex items-center gap-4">
18
+ <Avatar className="h-12 w-12 border border-border/50">
19
+ {avatar && <AvatarImage src={avatar} />}
20
+ <AvatarFallback>{name.substring(0, 2).toUpperCase()}</AvatarFallback>
21
+ </Avatar>
22
+ <div className="flex flex-col">
23
+ <span className="font-semibold text-foreground text-sm lg:text-base leading-tight">{name}</span>
24
+ {description && (
25
+ <span className="text-xs lg:text-sm text-muted-foreground mt-0.5">{description}</span>
26
+ )}
27
+ </div>
28
+ </div>
29
+
30
+ <div className="shrink-0 flex items-center ml-4">
31
+ {action}
32
+ </div>
33
+ </Card>
34
+ )
35
+ }
@@ -0,0 +1,16 @@
1
+ import React from 'react'
2
+ import { cn } from '@/lib/utils'
3
+
4
+ export function ConnectionList({
5
+ className,
6
+ children,
7
+ }: {
8
+ className?: string
9
+ children?: React.ReactNode
10
+ }) {
11
+ return (
12
+ <div className={cn('flex flex-col gap-4', className)}>
13
+ {children}
14
+ </div>
15
+ )
16
+ }
@@ -0,0 +1,2 @@
1
+ export * from './ConnectionList'
2
+ export * from './ConnectionItem'
@@ -0,0 +1,3 @@
1
+ export * from './profile-header'
2
+ export * from './profile-stats'
3
+ export * from './connection-list'