@open-dy/vibecoding-sdk-taro 0.0.1-beta.4 → 0.0.1

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 (532) hide show
  1. package/dist/build/plugins/vite-tt-components-entry.d.ts +10 -0
  2. package/dist/build/plugins/vite-tt-components-entry.js +32 -0
  3. package/dist/build/plugins/vite-tt-components-entry.js.map +1 -0
  4. package/dist/build/taro.js +3 -1
  5. package/dist/build/taro.js.map +1 -1
  6. package/dist/reference/llms.txt +52 -2
  7. package/dist/reference/sdk-api/build/taro/BuildContext.md +7 -2
  8. package/dist/reference/sdk-api/build/taro/CreateMicroappTaroConfigOptions.md +1 -2
  9. package/dist/reference/sdk-api/build/taro/createMicroappTaroConfig.md +1 -2
  10. package/dist/reference/sdk-api/runtime/CreateMicroappClientOptions.md +7 -2
  11. package/dist/reference/sdk-api/runtime/createMicroappClient.md +7 -2
  12. package/dist/reference/sdk-api/ui/accordion/Accordion.md +114 -0
  13. package/dist/reference/sdk-api/ui/accordion/AccordionContent.md +100 -0
  14. package/dist/reference/sdk-api/ui/accordion/AccordionItem.md +107 -0
  15. package/dist/reference/sdk-api/ui/accordion/AccordionTrigger.md +100 -0
  16. package/dist/reference/sdk-api/ui/accordion/index.md +12 -0
  17. package/dist/reference/sdk-api/ui/alert/Alert.md +106 -0
  18. package/dist/reference/sdk-api/ui/alert/AlertAction.md +100 -0
  19. package/dist/reference/sdk-api/ui/alert/AlertDescription.md +100 -0
  20. package/dist/reference/sdk-api/ui/alert/AlertTitle.md +100 -0
  21. package/dist/reference/sdk-api/ui/alert/index.md +12 -0
  22. package/dist/reference/sdk-api/ui/alert-dialog/AlertDialog.md +58 -0
  23. package/dist/reference/sdk-api/ui/alert-dialog/AlertDialogAction.md +107 -0
  24. package/dist/reference/sdk-api/ui/alert-dialog/AlertDialogCancel.md +107 -0
  25. package/dist/reference/sdk-api/ui/alert-dialog/AlertDialogContent.md +106 -0
  26. package/dist/reference/sdk-api/ui/alert-dialog/AlertDialogDescription.md +100 -0
  27. package/dist/reference/sdk-api/ui/alert-dialog/AlertDialogFooter.md +100 -0
  28. package/dist/reference/sdk-api/ui/alert-dialog/AlertDialogHeader.md +100 -0
  29. package/dist/reference/sdk-api/ui/alert-dialog/AlertDialogOverlay.md +100 -0
  30. package/dist/reference/sdk-api/ui/alert-dialog/AlertDialogPortal.md +55 -0
  31. package/dist/reference/sdk-api/ui/alert-dialog/AlertDialogTitle.md +100 -0
  32. package/dist/reference/sdk-api/ui/alert-dialog/AlertDialogTrigger.md +118 -0
  33. package/dist/reference/sdk-api/ui/alert-dialog/index.md +19 -0
  34. package/dist/reference/sdk-api/ui/aspect-ratio/AspectRatio.md +106 -0
  35. package/dist/reference/sdk-api/ui/aspect-ratio/index.md +9 -0
  36. package/dist/reference/sdk-api/ui/avatar/Avatar.md +106 -0
  37. package/dist/reference/sdk-api/ui/avatar/AvatarBadge.md +100 -0
  38. package/dist/reference/sdk-api/ui/avatar/AvatarFallback.md +100 -0
  39. package/dist/reference/sdk-api/ui/avatar/AvatarGroup.md +100 -0
  40. package/dist/reference/sdk-api/ui/avatar/AvatarGroupCount.md +100 -0
  41. package/dist/reference/sdk-api/ui/avatar/AvatarImage.md +108 -0
  42. package/dist/reference/sdk-api/ui/avatar/index.md +14 -0
  43. package/dist/reference/sdk-api/ui/badge/Badge.md +114 -0
  44. package/dist/reference/sdk-api/ui/badge/badgeVariants.md +70 -0
  45. package/dist/reference/sdk-api/ui/badge/index.md +10 -0
  46. package/dist/reference/sdk-api/ui/button/Button.md +210 -0
  47. package/dist/reference/sdk-api/ui/button/ButtonProps.md +188 -0
  48. package/dist/reference/sdk-api/ui/button/buttonVariants.md +84 -0
  49. package/dist/reference/sdk-api/ui/button/index.md +11 -0
  50. package/dist/reference/sdk-api/ui/button-group/ButtonGroup.md +106 -0
  51. package/dist/reference/sdk-api/ui/button-group/ButtonGroupSeparator.md +106 -0
  52. package/dist/reference/sdk-api/ui/button-group/ButtonGroupText.md +106 -0
  53. package/dist/reference/sdk-api/ui/button-group/buttonGroupVariants.md +70 -0
  54. package/dist/reference/sdk-api/ui/button-group/index.md +12 -0
  55. package/dist/reference/sdk-api/ui/calendar/Calendar.md +144 -0
  56. package/dist/reference/sdk-api/ui/calendar/CalendarProps.md +118 -0
  57. package/dist/reference/sdk-api/ui/calendar/index.md +10 -0
  58. package/dist/reference/sdk-api/ui/card/Card.md +106 -0
  59. package/dist/reference/sdk-api/ui/card/CardAction.md +100 -0
  60. package/dist/reference/sdk-api/ui/card/CardContent.md +100 -0
  61. package/dist/reference/sdk-api/ui/card/CardDescription.md +100 -0
  62. package/dist/reference/sdk-api/ui/card/CardFooter.md +100 -0
  63. package/dist/reference/sdk-api/ui/card/CardHeader.md +100 -0
  64. package/dist/reference/sdk-api/ui/card/CardTitle.md +100 -0
  65. package/dist/reference/sdk-api/ui/card/index.md +15 -0
  66. package/dist/reference/sdk-api/ui/carousel/Carousel.md +108 -0
  67. package/dist/reference/sdk-api/ui/carousel/CarouselContent.md +100 -0
  68. package/dist/reference/sdk-api/ui/carousel/CarouselItem.md +100 -0
  69. package/dist/reference/sdk-api/ui/carousel/CarouselNext.md +219 -0
  70. package/dist/reference/sdk-api/ui/carousel/CarouselPrevious.md +219 -0
  71. package/dist/reference/sdk-api/ui/carousel/index.md +14 -0
  72. package/dist/reference/sdk-api/ui/carousel/useCarousel.md +46 -0
  73. package/dist/reference/sdk-api/ui/checkbox/Checkbox.md +109 -0
  74. package/dist/reference/sdk-api/ui/checkbox/index.md +9 -0
  75. package/dist/reference/sdk-api/ui/collapsible/Collapsible.md +108 -0
  76. package/dist/reference/sdk-api/ui/collapsible/CollapsibleContent.md +100 -0
  77. package/dist/reference/sdk-api/ui/collapsible/CollapsibleTrigger.md +119 -0
  78. package/dist/reference/sdk-api/ui/collapsible/index.md +11 -0
  79. package/dist/reference/sdk-api/ui/combobox/Combobox.md +124 -0
  80. package/dist/reference/sdk-api/ui/combobox/ComboboxChip.md +107 -0
  81. package/dist/reference/sdk-api/ui/combobox/ComboboxChips.md +100 -0
  82. package/dist/reference/sdk-api/ui/combobox/ComboboxChipsInput.md +107 -0
  83. package/dist/reference/sdk-api/ui/combobox/ComboboxCollection.md +100 -0
  84. package/dist/reference/sdk-api/ui/combobox/ComboboxContent.md +106 -0
  85. package/dist/reference/sdk-api/ui/combobox/ComboboxEmpty.md +100 -0
  86. package/dist/reference/sdk-api/ui/combobox/ComboboxGroup.md +100 -0
  87. package/dist/reference/sdk-api/ui/combobox/ComboboxInput.md +113 -0
  88. package/dist/reference/sdk-api/ui/combobox/ComboboxItem.md +106 -0
  89. package/dist/reference/sdk-api/ui/combobox/ComboboxLabel.md +100 -0
  90. package/dist/reference/sdk-api/ui/combobox/ComboboxList.md +105 -0
  91. package/dist/reference/sdk-api/ui/combobox/ComboboxSeparator.md +100 -0
  92. package/dist/reference/sdk-api/ui/combobox/ComboboxTrigger.md +100 -0
  93. package/dist/reference/sdk-api/ui/combobox/ComboboxValue.md +105 -0
  94. package/dist/reference/sdk-api/ui/combobox/index.md +24 -0
  95. package/dist/reference/sdk-api/ui/combobox/useComboboxAnchor.md +43 -0
  96. package/dist/reference/sdk-api/ui/dialog/Dialog.md +58 -0
  97. package/dist/reference/sdk-api/ui/dialog/DialogClose.md +100 -0
  98. package/dist/reference/sdk-api/ui/dialog/DialogContent.md +107 -0
  99. package/dist/reference/sdk-api/ui/dialog/DialogDescription.md +100 -0
  100. package/dist/reference/sdk-api/ui/dialog/DialogFooter.md +100 -0
  101. package/dist/reference/sdk-api/ui/dialog/DialogHeader.md +100 -0
  102. package/dist/reference/sdk-api/ui/dialog/DialogOverlay.md +100 -0
  103. package/dist/reference/sdk-api/ui/dialog/DialogPortal.md +55 -0
  104. package/dist/reference/sdk-api/ui/dialog/DialogTitle.md +100 -0
  105. package/dist/reference/sdk-api/ui/dialog/DialogTrigger.md +106 -0
  106. package/dist/reference/sdk-api/ui/dialog/index.md +18 -0
  107. package/dist/reference/sdk-api/ui/drawer/Drawer.md +59 -0
  108. package/dist/reference/sdk-api/ui/drawer/DrawerClose.md +100 -0
  109. package/dist/reference/sdk-api/ui/drawer/DrawerContent.md +100 -0
  110. package/dist/reference/sdk-api/ui/drawer/DrawerDescription.md +100 -0
  111. package/dist/reference/sdk-api/ui/drawer/DrawerFooter.md +100 -0
  112. package/dist/reference/sdk-api/ui/drawer/DrawerHeader.md +100 -0
  113. package/dist/reference/sdk-api/ui/drawer/DrawerOverlay.md +100 -0
  114. package/dist/reference/sdk-api/ui/drawer/DrawerPortal.md +55 -0
  115. package/dist/reference/sdk-api/ui/drawer/DrawerTitle.md +100 -0
  116. package/dist/reference/sdk-api/ui/drawer/DrawerTrigger.md +100 -0
  117. package/dist/reference/sdk-api/ui/drawer/index.md +18 -0
  118. package/dist/reference/sdk-api/ui/dropdown-menu/DropdownMenu.md +58 -0
  119. package/dist/reference/sdk-api/ui/dropdown-menu/DropdownMenuCheckboxItem.md +107 -0
  120. package/dist/reference/sdk-api/ui/dropdown-menu/DropdownMenuContent.md +106 -0
  121. package/dist/reference/sdk-api/ui/dropdown-menu/DropdownMenuGroup.md +100 -0
  122. package/dist/reference/sdk-api/ui/dropdown-menu/DropdownMenuItem.md +107 -0
  123. package/dist/reference/sdk-api/ui/dropdown-menu/DropdownMenuLabel.md +106 -0
  124. package/dist/reference/sdk-api/ui/dropdown-menu/DropdownMenuPortal.md +55 -0
  125. package/dist/reference/sdk-api/ui/dropdown-menu/DropdownMenuRadioGroup.md +100 -0
  126. package/dist/reference/sdk-api/ui/dropdown-menu/DropdownMenuRadioItem.md +106 -0
  127. package/dist/reference/sdk-api/ui/dropdown-menu/DropdownMenuSeparator.md +100 -0
  128. package/dist/reference/sdk-api/ui/dropdown-menu/DropdownMenuShortcut.md +100 -0
  129. package/dist/reference/sdk-api/ui/dropdown-menu/DropdownMenuSub.md +58 -0
  130. package/dist/reference/sdk-api/ui/dropdown-menu/DropdownMenuSubContent.md +100 -0
  131. package/dist/reference/sdk-api/ui/dropdown-menu/DropdownMenuSubTrigger.md +106 -0
  132. package/dist/reference/sdk-api/ui/dropdown-menu/DropdownMenuTrigger.md +119 -0
  133. package/dist/reference/sdk-api/ui/dropdown-menu/index.md +23 -0
  134. package/dist/reference/sdk-api/ui/empty/Empty.md +100 -0
  135. package/dist/reference/sdk-api/ui/empty/EmptyContent.md +100 -0
  136. package/dist/reference/sdk-api/ui/empty/EmptyDescription.md +100 -0
  137. package/dist/reference/sdk-api/ui/empty/EmptyHeader.md +100 -0
  138. package/dist/reference/sdk-api/ui/empty/EmptyMedia.md +106 -0
  139. package/dist/reference/sdk-api/ui/empty/EmptyTitle.md +100 -0
  140. package/dist/reference/sdk-api/ui/empty/index.md +14 -0
  141. package/dist/reference/sdk-api/ui/field/Field.md +106 -0
  142. package/dist/reference/sdk-api/ui/field/FieldContent.md +100 -0
  143. package/dist/reference/sdk-api/ui/field/FieldDescription.md +100 -0
  144. package/dist/reference/sdk-api/ui/field/FieldError.md +112 -0
  145. package/dist/reference/sdk-api/ui/field/FieldGroup.md +100 -0
  146. package/dist/reference/sdk-api/ui/field/FieldLabel.md +85 -0
  147. package/dist/reference/sdk-api/ui/field/FieldLegend.md +106 -0
  148. package/dist/reference/sdk-api/ui/field/FieldSeparator.md +105 -0
  149. package/dist/reference/sdk-api/ui/field/FieldSet.md +100 -0
  150. package/dist/reference/sdk-api/ui/field/FieldTitle.md +100 -0
  151. package/dist/reference/sdk-api/ui/field/index.md +18 -0
  152. package/dist/reference/sdk-api/ui/helpers/collectDataIconState.md +66 -0
  153. package/dist/reference/sdk-api/ui/helpers/index.md +9 -0
  154. package/dist/reference/sdk-api/ui/index.md +57 -0
  155. package/dist/reference/sdk-api/ui/input/Input.md +141 -0
  156. package/dist/reference/sdk-api/ui/input/index.md +9 -0
  157. package/dist/reference/sdk-api/ui/input-group/InputGroup.md +100 -0
  158. package/dist/reference/sdk-api/ui/input-group/InputGroupAddon.md +109 -0
  159. package/dist/reference/sdk-api/ui/input-group/InputGroupButton.md +220 -0
  160. package/dist/reference/sdk-api/ui/input-group/InputGroupInput.md +135 -0
  161. package/dist/reference/sdk-api/ui/input-group/InputGroupText.md +100 -0
  162. package/dist/reference/sdk-api/ui/input-group/InputGroupTextarea.md +126 -0
  163. package/dist/reference/sdk-api/ui/input-group/index.md +14 -0
  164. package/dist/reference/sdk-api/ui/input-otp/InputOTP.md +111 -0
  165. package/dist/reference/sdk-api/ui/input-otp/InputOTPGroup.md +100 -0
  166. package/dist/reference/sdk-api/ui/input-otp/InputOTPSeparator.md +100 -0
  167. package/dist/reference/sdk-api/ui/input-otp/InputOTPSlot.md +107 -0
  168. package/dist/reference/sdk-api/ui/input-otp/index.md +12 -0
  169. package/dist/reference/sdk-api/ui/item/Item.md +115 -0
  170. package/dist/reference/sdk-api/ui/item/ItemActions.md +100 -0
  171. package/dist/reference/sdk-api/ui/item/ItemContent.md +100 -0
  172. package/dist/reference/sdk-api/ui/item/ItemDescription.md +100 -0
  173. package/dist/reference/sdk-api/ui/item/ItemFooter.md +100 -0
  174. package/dist/reference/sdk-api/ui/item/ItemGroup.md +100 -0
  175. package/dist/reference/sdk-api/ui/item/ItemHeader.md +100 -0
  176. package/dist/reference/sdk-api/ui/item/ItemMedia.md +106 -0
  177. package/dist/reference/sdk-api/ui/item/ItemSeparator.md +106 -0
  178. package/dist/reference/sdk-api/ui/item/ItemTitle.md +100 -0
  179. package/dist/reference/sdk-api/ui/item/index.md +18 -0
  180. package/dist/reference/sdk-api/ui/label/Label.md +85 -0
  181. package/dist/reference/sdk-api/ui/label/index.md +9 -0
  182. package/dist/reference/sdk-api/ui/menubar/Menubar.md +100 -0
  183. package/dist/reference/sdk-api/ui/menubar/MenubarCheckboxItem.md +111 -0
  184. package/dist/reference/sdk-api/ui/menubar/MenubarContent.md +108 -0
  185. package/dist/reference/sdk-api/ui/menubar/MenubarGroup.md +100 -0
  186. package/dist/reference/sdk-api/ui/menubar/MenubarItem.md +109 -0
  187. package/dist/reference/sdk-api/ui/menubar/MenubarLabel.md +106 -0
  188. package/dist/reference/sdk-api/ui/menubar/MenubarMenu.md +55 -0
  189. package/dist/reference/sdk-api/ui/menubar/MenubarPortal.md +55 -0
  190. package/dist/reference/sdk-api/ui/menubar/MenubarRadioGroup.md +108 -0
  191. package/dist/reference/sdk-api/ui/menubar/MenubarRadioItem.md +110 -0
  192. package/dist/reference/sdk-api/ui/menubar/MenubarSeparator.md +100 -0
  193. package/dist/reference/sdk-api/ui/menubar/MenubarShortcut.md +100 -0
  194. package/dist/reference/sdk-api/ui/menubar/MenubarSub.md +58 -0
  195. package/dist/reference/sdk-api/ui/menubar/MenubarSubContent.md +108 -0
  196. package/dist/reference/sdk-api/ui/menubar/MenubarSubTrigger.md +107 -0
  197. package/dist/reference/sdk-api/ui/menubar/MenubarTrigger.md +100 -0
  198. package/dist/reference/sdk-api/ui/menubar/index.md +24 -0
  199. package/dist/reference/sdk-api/ui/navigation-menu/NavigationMenu.md +100 -0
  200. package/dist/reference/sdk-api/ui/navigation-menu/NavigationMenuContent.md +106 -0
  201. package/dist/reference/sdk-api/ui/navigation-menu/NavigationMenuIndicator.md +100 -0
  202. package/dist/reference/sdk-api/ui/navigation-menu/NavigationMenuItem.md +106 -0
  203. package/dist/reference/sdk-api/ui/navigation-menu/NavigationMenuLink.md +106 -0
  204. package/dist/reference/sdk-api/ui/navigation-menu/NavigationMenuList.md +100 -0
  205. package/dist/reference/sdk-api/ui/navigation-menu/NavigationMenuPositioner.md +100 -0
  206. package/dist/reference/sdk-api/ui/navigation-menu/NavigationMenuTrigger.md +120 -0
  207. package/dist/reference/sdk-api/ui/navigation-menu/index.md +17 -0
  208. package/dist/reference/sdk-api/ui/navigation-menu/navigationMenuTriggerStyle.md +64 -0
  209. package/dist/reference/sdk-api/ui/pagination/Pagination.md +100 -0
  210. package/dist/reference/sdk-api/ui/pagination/PaginationContent.md +100 -0
  211. package/dist/reference/sdk-api/ui/pagination/PaginationEllipsis.md +100 -0
  212. package/dist/reference/sdk-api/ui/pagination/PaginationItem.md +100 -0
  213. package/dist/reference/sdk-api/ui/pagination/PaginationLink.md +107 -0
  214. package/dist/reference/sdk-api/ui/pagination/PaginationNext.md +121 -0
  215. package/dist/reference/sdk-api/ui/pagination/PaginationPrevious.md +121 -0
  216. package/dist/reference/sdk-api/ui/pagination/index.md +15 -0
  217. package/dist/reference/sdk-api/ui/popover/Popover.md +58 -0
  218. package/dist/reference/sdk-api/ui/popover/PopoverAnchor.md +100 -0
  219. package/dist/reference/sdk-api/ui/popover/PopoverContent.md +108 -0
  220. package/dist/reference/sdk-api/ui/popover/PopoverDescription.md +100 -0
  221. package/dist/reference/sdk-api/ui/popover/PopoverHeader.md +100 -0
  222. package/dist/reference/sdk-api/ui/popover/PopoverTitle.md +100 -0
  223. package/dist/reference/sdk-api/ui/popover/PopoverTrigger.md +119 -0
  224. package/dist/reference/sdk-api/ui/popover/index.md +15 -0
  225. package/dist/reference/sdk-api/ui/portal/Portal.md +55 -0
  226. package/dist/reference/sdk-api/ui/portal/index.md +9 -0
  227. package/dist/reference/sdk-api/ui/progress/Progress.md +109 -0
  228. package/dist/reference/sdk-api/ui/progress/ProgressIndicator.md +107 -0
  229. package/dist/reference/sdk-api/ui/progress/ProgressLabel.md +100 -0
  230. package/dist/reference/sdk-api/ui/progress/ProgressTrack.md +100 -0
  231. package/dist/reference/sdk-api/ui/progress/ProgressValue.md +105 -0
  232. package/dist/reference/sdk-api/ui/progress/index.md +13 -0
  233. package/dist/reference/sdk-api/ui/radio-group/RadioGroup.md +108 -0
  234. package/dist/reference/sdk-api/ui/radio-group/RadioGroupItem.md +107 -0
  235. package/dist/reference/sdk-api/ui/radio-group/index.md +10 -0
  236. package/dist/reference/sdk-api/ui/resizable/ResizableHandle.md +107 -0
  237. package/dist/reference/sdk-api/ui/resizable/ResizablePanel.md +108 -0
  238. package/dist/reference/sdk-api/ui/resizable/ResizablePanelGroup.md +107 -0
  239. package/dist/reference/sdk-api/ui/resizable/index.md +11 -0
  240. package/dist/reference/sdk-api/ui/scroll-area/ScrollArea.md +159 -0
  241. package/dist/reference/sdk-api/ui/scroll-area/ScrollBar.md +106 -0
  242. package/dist/reference/sdk-api/ui/scroll-area/index.md +10 -0
  243. package/dist/reference/sdk-api/ui/select/Select.md +80 -0
  244. package/dist/reference/sdk-api/ui/select/SelectContent.md +106 -0
  245. package/dist/reference/sdk-api/ui/select/SelectGroup.md +100 -0
  246. package/dist/reference/sdk-api/ui/select/SelectItem.md +106 -0
  247. package/dist/reference/sdk-api/ui/select/SelectLabel.md +100 -0
  248. package/dist/reference/sdk-api/ui/select/SelectScrollDownButton.md +100 -0
  249. package/dist/reference/sdk-api/ui/select/SelectScrollUpButton.md +100 -0
  250. package/dist/reference/sdk-api/ui/select/SelectSeparator.md +100 -0
  251. package/dist/reference/sdk-api/ui/select/SelectTrigger.md +106 -0
  252. package/dist/reference/sdk-api/ui/select/SelectValue.md +106 -0
  253. package/dist/reference/sdk-api/ui/select/index.md +18 -0
  254. package/dist/reference/sdk-api/ui/separator/Separator.md +106 -0
  255. package/dist/reference/sdk-api/ui/separator/index.md +9 -0
  256. package/dist/reference/sdk-api/ui/sheet/Sheet.md +58 -0
  257. package/dist/reference/sdk-api/ui/sheet/SheetClose.md +100 -0
  258. package/dist/reference/sdk-api/ui/sheet/SheetContent.md +113 -0
  259. package/dist/reference/sdk-api/ui/sheet/SheetDescription.md +100 -0
  260. package/dist/reference/sdk-api/ui/sheet/SheetFooter.md +100 -0
  261. package/dist/reference/sdk-api/ui/sheet/SheetHeader.md +100 -0
  262. package/dist/reference/sdk-api/ui/sheet/SheetOverlay.md +100 -0
  263. package/dist/reference/sdk-api/ui/sheet/SheetPortal.md +55 -0
  264. package/dist/reference/sdk-api/ui/sheet/SheetTitle.md +100 -0
  265. package/dist/reference/sdk-api/ui/sheet/SheetTrigger.md +100 -0
  266. package/dist/reference/sdk-api/ui/sheet/index.md +18 -0
  267. package/dist/reference/sdk-api/ui/skeleton/Skeleton.md +100 -0
  268. package/dist/reference/sdk-api/ui/skeleton/index.md +9 -0
  269. package/dist/reference/sdk-api/ui/slider/Slider.md +116 -0
  270. package/dist/reference/sdk-api/ui/slider/index.md +9 -0
  271. package/dist/reference/sdk-api/ui/sonner/Toaster.md +43 -0
  272. package/dist/reference/sdk-api/ui/sonner/index.md +10 -0
  273. package/dist/reference/sdk-api/ui/sonner/toast.md +58 -0
  274. package/dist/reference/sdk-api/ui/spinner/Spinner.md +100 -0
  275. package/dist/reference/sdk-api/ui/spinner/index.md +9 -0
  276. package/dist/reference/sdk-api/ui/switch/Switch.md +110 -0
  277. package/dist/reference/sdk-api/ui/switch/index.md +9 -0
  278. package/dist/reference/sdk-api/ui/table/Table.md +100 -0
  279. package/dist/reference/sdk-api/ui/table/TableBody.md +100 -0
  280. package/dist/reference/sdk-api/ui/table/TableCaption.md +100 -0
  281. package/dist/reference/sdk-api/ui/table/TableCell.md +106 -0
  282. package/dist/reference/sdk-api/ui/table/TableFooter.md +100 -0
  283. package/dist/reference/sdk-api/ui/table/TableHead.md +106 -0
  284. package/dist/reference/sdk-api/ui/table/TableHeader.md +100 -0
  285. package/dist/reference/sdk-api/ui/table/TableRow.md +100 -0
  286. package/dist/reference/sdk-api/ui/table/index.md +16 -0
  287. package/dist/reference/sdk-api/ui/tabs/Tabs.md +109 -0
  288. package/dist/reference/sdk-api/ui/tabs/TabsContent.md +106 -0
  289. package/dist/reference/sdk-api/ui/tabs/TabsList.md +106 -0
  290. package/dist/reference/sdk-api/ui/tabs/TabsTrigger.md +107 -0
  291. package/dist/reference/sdk-api/ui/tabs/index.md +13 -0
  292. package/dist/reference/sdk-api/ui/tabs/tabsListVariants.md +70 -0
  293. package/dist/reference/sdk-api/ui/textarea/Textarea.md +126 -0
  294. package/dist/reference/sdk-api/ui/textarea/index.md +9 -0
  295. package/dist/reference/sdk-api/ui/toggle/Toggle.md +118 -0
  296. package/dist/reference/sdk-api/ui/toggle/index.md +10 -0
  297. package/dist/reference/sdk-api/ui/toggle/toggleVariants.md +71 -0
  298. package/dist/reference/sdk-api/ui/toggle-group/ToggleGroup.md +122 -0
  299. package/dist/reference/sdk-api/ui/toggle-group/ToggleGroupItem.md +116 -0
  300. package/dist/reference/sdk-api/ui/toggle-group/index.md +10 -0
  301. package/dist/reference/sdk-api.json +73810 -2
  302. package/dist/reference/sdk-api.md +50 -2
  303. package/dist/ui/accordion.d.ts +48 -0
  304. package/dist/ui/accordion.js +40 -0
  305. package/dist/ui/accordion.js.map +1 -1
  306. package/dist/ui/alert-dialog.d.ts +123 -0
  307. package/dist/ui/alert-dialog.js +114 -0
  308. package/dist/ui/alert-dialog.js.map +1 -1
  309. package/dist/ui/alert.d.ts +41 -0
  310. package/dist/ui/alert.js +41 -0
  311. package/dist/ui/alert.js.map +1 -1
  312. package/dist/ui/aspect-ratio.d.ts +11 -0
  313. package/dist/ui/aspect-ratio.js +10 -0
  314. package/dist/ui/aspect-ratio.js.map +1 -1
  315. package/dist/ui/avatar.d.ts +65 -0
  316. package/dist/ui/avatar.js +63 -0
  317. package/dist/ui/avatar.js.map +1 -1
  318. package/dist/ui/badge.d.ts +22 -0
  319. package/dist/ui/badge.js +22 -0
  320. package/dist/ui/badge.js.map +1 -1
  321. package/dist/ui/button-group.d.ts +45 -0
  322. package/dist/ui/button-group.js +43 -0
  323. package/dist/ui/button-group.js.map +1 -1
  324. package/dist/ui/button.d.ts +52 -0
  325. package/dist/ui/button.js +30 -0
  326. package/dist/ui/button.js.map +1 -1
  327. package/dist/ui/calendar.d.ts +44 -0
  328. package/dist/ui/calendar.js +19 -0
  329. package/dist/ui/calendar.js.map +1 -1
  330. package/dist/ui/card.d.ts +71 -0
  331. package/dist/ui/card.js +70 -0
  332. package/dist/ui/card.js.map +1 -1
  333. package/dist/ui/carousel.d.ts +71 -0
  334. package/dist/ui/carousel.js +66 -0
  335. package/dist/ui/carousel.js.map +1 -1
  336. package/dist/ui/checkbox.d.ts +14 -0
  337. package/dist/ui/checkbox.js +10 -0
  338. package/dist/ui/checkbox.js.map +1 -1
  339. package/dist/ui/collapsible.d.ts +37 -0
  340. package/dist/ui/collapsible.js +30 -0
  341. package/dist/ui/collapsible.js.map +1 -1
  342. package/dist/ui/combobox.d.ts +190 -0
  343. package/dist/ui/combobox.js +167 -0
  344. package/dist/ui/combobox.js.map +1 -1
  345. package/dist/ui/dialog.d.ts +109 -0
  346. package/dist/ui/dialog.js +100 -0
  347. package/dist/ui/dialog.js.map +1 -1
  348. package/dist/ui/drawer.d.ts +106 -0
  349. package/dist/ui/drawer.js +100 -0
  350. package/dist/ui/drawer.js.map +1 -1
  351. package/dist/ui/dropdown-menu.d.ts +171 -0
  352. package/dist/ui/dropdown-menu.js +150 -0
  353. package/dist/ui/dropdown-menu.js.map +1 -1
  354. package/dist/ui/empty.d.ts +61 -0
  355. package/dist/ui/empty.js +61 -0
  356. package/dist/ui/empty.js.map +1 -1
  357. package/dist/ui/field.d.ts +105 -0
  358. package/dist/ui/field.js +101 -0
  359. package/dist/ui/field.js.map +1 -1
  360. package/dist/ui/helpers.d.ts +11 -0
  361. package/dist/ui/helpers.js +11 -0
  362. package/dist/ui/helpers.js.map +1 -1
  363. package/dist/ui/input-group.d.ts +65 -0
  364. package/dist/ui/input-group.js +65 -0
  365. package/dist/ui/input-group.js.map +1 -1
  366. package/dist/ui/input-otp.d.ts +48 -0
  367. package/dist/ui/input-otp.js +40 -0
  368. package/dist/ui/input-otp.js.map +1 -1
  369. package/dist/ui/input.d.ts +24 -2
  370. package/dist/ui/input.js +20 -0
  371. package/dist/ui/input.js.map +1 -1
  372. package/dist/ui/item.d.ts +103 -0
  373. package/dist/ui/item.js +103 -0
  374. package/dist/ui/item.js.map +1 -1
  375. package/dist/ui/label.d.ts +10 -0
  376. package/dist/ui/label.js +10 -0
  377. package/dist/ui/label.js.map +1 -1
  378. package/dist/ui/menubar.d.ts +193 -0
  379. package/dist/ui/menubar.js +160 -0
  380. package/dist/ui/menubar.js.map +1 -1
  381. package/dist/ui/navigation-menu.d.ts +98 -0
  382. package/dist/ui/navigation-menu.js +90 -0
  383. package/dist/ui/navigation-menu.js.map +1 -1
  384. package/dist/ui/pagination.d.ts +76 -0
  385. package/dist/ui/pagination.js +73 -0
  386. package/dist/ui/pagination.js.map +1 -1
  387. package/dist/ui/popover.d.ts +81 -0
  388. package/dist/ui/popover.js +70 -0
  389. package/dist/ui/popover.js.map +1 -1
  390. package/dist/ui/portal.d.ts +11 -0
  391. package/dist/ui/portal.js +10 -0
  392. package/dist/ui/portal.js.map +1 -1
  393. package/dist/ui/progress.d.ts +53 -26
  394. package/dist/ui/progress.js +50 -26
  395. package/dist/ui/progress.js.map +1 -1
  396. package/dist/ui/radio-group.d.ts +25 -0
  397. package/dist/ui/radio-group.js +20 -0
  398. package/dist/ui/radio-group.js.map +1 -1
  399. package/dist/ui/resizable.d.ts +37 -0
  400. package/dist/ui/resizable.js +30 -0
  401. package/dist/ui/resizable.js.map +1 -1
  402. package/dist/ui/scroll-area.d.ts +22 -0
  403. package/dist/ui/scroll-area.js +21 -0
  404. package/dist/ui/scroll-area.js.map +1 -1
  405. package/dist/ui/select.d.ts +122 -0
  406. package/dist/ui/select.js +108 -0
  407. package/dist/ui/select.js.map +1 -1
  408. package/dist/ui/separator.d.ts +11 -0
  409. package/dist/ui/separator.js +10 -0
  410. package/dist/ui/separator.js.map +1 -1
  411. package/dist/ui/sheet.d.ts +107 -0
  412. package/dist/ui/sheet.js +101 -0
  413. package/dist/ui/sheet.js.map +1 -1
  414. package/dist/ui/skeleton.d.ts +10 -0
  415. package/dist/ui/skeleton.js +10 -0
  416. package/dist/ui/skeleton.js.map +1 -1
  417. package/dist/ui/slider.d.ts +21 -0
  418. package/dist/ui/slider.js +14 -0
  419. package/dist/ui/slider.js.map +1 -1
  420. package/dist/ui/sonner.d.ts +23 -0
  421. package/dist/ui/sonner.js +21 -0
  422. package/dist/ui/sonner.js.map +1 -1
  423. package/dist/ui/spinner.d.ts +10 -0
  424. package/dist/ui/spinner.js +10 -0
  425. package/dist/ui/spinner.js.map +1 -1
  426. package/dist/ui/switch.d.ts +15 -0
  427. package/dist/ui/switch.js +10 -0
  428. package/dist/ui/switch.js.map +1 -1
  429. package/dist/ui/table.d.ts +81 -0
  430. package/dist/ui/table.js +80 -0
  431. package/dist/ui/table.js.map +1 -1
  432. package/dist/ui/tabs.d.ts +59 -0
  433. package/dist/ui/tabs.js +51 -0
  434. package/dist/ui/tabs.js.map +1 -1
  435. package/dist/ui/textarea.d.ts +13 -0
  436. package/dist/ui/textarea.js +13 -0
  437. package/dist/ui/textarea.js.map +1 -1
  438. package/dist/ui/toggle-group.d.ts +34 -0
  439. package/dist/ui/toggle-group.js +24 -0
  440. package/dist/ui/toggle-group.js.map +1 -1
  441. package/dist/ui/toggle.d.ts +28 -0
  442. package/dist/ui/toggle.js +24 -0
  443. package/dist/ui/toggle.js.map +1 -1
  444. package/package.json +5 -3
  445. package/release-provenance.json +15 -0
  446. package/src/adapters/interest-card/eslint/eslint-plugin-custom-navigation.mjs +290 -0
  447. package/src/adapters/interest-card/eslint/taro.mjs +55 -0
  448. package/src/adapters/interest-card/runtime/microapp.ts +11 -0
  449. package/src/adapters/interest-card/types/taro.d.ts +28 -0
  450. package/src/build/config-overrides.ts +39 -0
  451. package/src/build/index.ts +5 -0
  452. package/src/build/plugins/app-config.ts +47 -0
  453. package/src/build/plugins/depend-card/analyze.ts +122 -0
  454. package/src/build/plugins/depend-card/source.ts +97 -0
  455. package/src/build/plugins/vite-depend-card.ts +168 -0
  456. package/src/build/plugins/vite-image-asset-import.ts +178 -0
  457. package/src/build/plugins/vite-inline-json.ts +149 -0
  458. package/src/build/plugins/vite-taro-source-location.ts +224 -0
  459. package/src/build/plugins/vite-tt-components-entry.ts +33 -0
  460. package/src/build/taro.ts +830 -0
  461. package/src/components/miniapp-open-card.ts +49 -0
  462. package/src/components/native-miniapp-open-card.ts +7 -0
  463. package/src/eslint/eslint-plugin-microapp-pages.mjs +659 -0
  464. package/src/eslint/server.mjs +69 -0
  465. package/src/eslint/taro.mjs +553 -0
  466. package/src/index.ts +2 -0
  467. package/src/internal/runtime/douyin-open-button.d.ts +29 -0
  468. package/src/internal/runtime/iframe-auth/identity.ts +236 -0
  469. package/src/internal/runtime/iframe-auth/index.ts +2 -0
  470. package/src/internal/runtime/iframe-auth/sync.ts +37 -0
  471. package/src/internal/vendor-modules.d.ts +8 -0
  472. package/src/lib/measure.ts +115 -0
  473. package/src/lib/platform.ts +11 -0
  474. package/src/lib/utils.ts +6 -0
  475. package/src/runtime/client.ts +246 -0
  476. package/src/runtime/default-client.ts +26 -0
  477. package/src/runtime/default-iframe-auth.ts +13 -0
  478. package/src/runtime/douyin-container-request.ts +367 -0
  479. package/src/runtime/douyin-login-request.ts +514 -0
  480. package/src/runtime/globals.d.ts +342 -0
  481. package/src/runtime/index.ts +4 -0
  482. package/src/runtime/network-url.ts +63 -0
  483. package/src/ui/accordion.tsx +226 -0
  484. package/src/ui/alert-dialog.tsx +407 -0
  485. package/src/ui/alert.tsx +149 -0
  486. package/src/ui/aspect-ratio.tsx +37 -0
  487. package/src/ui/avatar.tsx +238 -0
  488. package/src/ui/badge.tsx +77 -0
  489. package/src/ui/button-group.tsx +173 -0
  490. package/src/ui/button.tsx +215 -0
  491. package/src/ui/calendar.tsx +353 -0
  492. package/src/ui/card.tsx +217 -0
  493. package/src/ui/carousel.tsx +259 -0
  494. package/src/ui/checkbox.tsx +62 -0
  495. package/src/ui/collapsible.tsx +148 -0
  496. package/src/ui/combobox.tsx +650 -0
  497. package/src/ui/dialog.tsx +290 -0
  498. package/src/ui/drawer.tsx +272 -0
  499. package/src/ui/dropdown-menu.tsx +547 -0
  500. package/src/ui/empty.tsx +166 -0
  501. package/src/ui/field.tsx +427 -0
  502. package/src/ui/helpers.tsx +39 -0
  503. package/src/ui/index.ts +47 -0
  504. package/src/ui/input-group.tsx +320 -0
  505. package/src/ui/input-otp.tsx +189 -0
  506. package/src/ui/input.tsx +60 -0
  507. package/src/ui/item.tsx +338 -0
  508. package/src/ui/label.tsx +31 -0
  509. package/src/ui/menubar.tsx +835 -0
  510. package/src/ui/navigation-menu.tsx +341 -0
  511. package/src/ui/pagination.tsx +195 -0
  512. package/src/ui/popover.tsx +363 -0
  513. package/src/ui/portal.tsx +31 -0
  514. package/src/ui/progress.tsx +182 -0
  515. package/src/ui/radio-group.tsx +111 -0
  516. package/src/ui/resizable.tsx +410 -0
  517. package/src/ui/scroll-area.tsx +102 -0
  518. package/src/ui/select.tsx +471 -0
  519. package/src/ui/separator.tsx +37 -0
  520. package/src/ui/sheet.tsx +289 -0
  521. package/src/ui/skeleton.tsx +25 -0
  522. package/src/ui/slider.tsx +176 -0
  523. package/src/ui/sonner.tsx +40 -0
  524. package/src/ui/spinner.tsx +23 -0
  525. package/src/ui/switch.tsx +94 -0
  526. package/src/ui/table.tsx +240 -0
  527. package/src/ui/tabs.tsx +233 -0
  528. package/src/ui/tailwind.css +2 -0
  529. package/src/ui/textarea.tsx +49 -0
  530. package/src/ui/theme.css +234 -0
  531. package/src/ui/toggle-group.tsx +215 -0
  532. package/src/ui/toggle.tsx +113 -0
@@ -0,0 +1,363 @@
1
+ import * as React from "react"
2
+ import { View, type ViewProps } from "@tarojs/components"
3
+ import { computePosition, getRectById } from "../lib/measure"
4
+ import { isH5 } from "../lib/platform"
5
+ import { cn } from "../lib/utils"
6
+ import { Portal } from "./portal"
7
+
8
+ const PopoverContext = React.createContext<{
9
+ open: boolean
10
+ onOpenChange: (open: boolean) => void
11
+ triggerId: string
12
+ }>({
13
+ open: false,
14
+ onOpenChange: () => {},
15
+ triggerId: "",
16
+ })
17
+
18
+ type PopoverTriggerRenderProps = Omit<ViewProps, "children"> & {
19
+ /** @desc 组件自动注入的触发器标识;自定义 render 应转发到触发节点,不手动修改。 */
20
+ "data-slot": "popover-trigger"
21
+ /** @desc 组件自动注入的展开状态;自定义 render 应转发到触发节点。 */
22
+ "aria-expanded": boolean
23
+ }
24
+
25
+ type PopoverTriggerClickEvent = Parameters<
26
+ NonNullable<ViewProps["onClick"]>
27
+ >[0]
28
+
29
+ type PopoverTriggerProps = Omit<ViewProps, "children"> & {
30
+ /** @desc 默认触发器内的内容;设置 render 时由自定义渲染结果取代。 */
31
+ children?: React.ReactNode
32
+ /** @desc 自定义触发器元素或渲染函数;省略时使用 View。元素会被克隆并合并点击处理;函数收到状态和事件 props,必须传给实际可点击节点。 */
33
+ render?:
34
+ | React.ReactElement
35
+ | ((props: PopoverTriggerRenderProps) => React.ReactNode)
36
+ }
37
+
38
+ /**
39
+ * @desc 弹出面板组件。
40
+ * @param {Parameters<typeof Popover>[0]} props 组件属性;自有字段的用途及默认行为见下表,继承属性另列。
41
+ * @return {ReturnType<typeof Popover>} 组件渲染结果;类型见返回值契约。
42
+ * @example
43
+ * ```tsx
44
+ * import { Popover } from '@open-dy/vibecoding-sdk-taro/ui/popover'
45
+ * <Popover />
46
+ * ```
47
+ */
48
+ function Popover({
49
+ open: openProp,
50
+ defaultOpen,
51
+ onOpenChange,
52
+ children,
53
+ }: {
54
+ /** @desc 受控展开状态;传入后以该值为准,需在 onOpenChange 中更新。省略时由组件内部管理。 */
55
+ open?: boolean
56
+ /** @desc 非受控模式的初始展开状态,默认 false;仅初始化时读取,传入 open 后不生效。 */
57
+ defaultOpen?: boolean
58
+ /** @desc 触发器或关闭操作请求改变展开状态时调用,参数为下一状态;受控模式需由调用方同步 open。 */
59
+ onOpenChange?: (open: boolean) => void
60
+ /** @desc 同一实例的触发器、内容区等组合子组件;省略时不显示内容,子组件通过上下文共享状态。 */
61
+ children?: React.ReactNode
62
+ }) {
63
+ const triggerId = React.useRef(
64
+ `popover-trigger-${Math.random().toString(36).slice(2, 10)}`
65
+ )
66
+ const [internal, setInternal] = React.useState(defaultOpen ?? false)
67
+ const controlled = openProp !== undefined
68
+ const open = controlled ? openProp : internal
69
+
70
+ React.useEffect(() => {
71
+ if (!open || !isH5() || typeof document === "undefined") return
72
+
73
+ const onKeyDown = (event: KeyboardEvent) => {
74
+ if (event.key === "Escape") {
75
+ onOpenChange?.(false)
76
+ if (!controlled) setInternal(false)
77
+ }
78
+ }
79
+
80
+ document.addEventListener("keydown", onKeyDown)
81
+ return () => document.removeEventListener("keydown", onKeyDown)
82
+ }, [controlled, onOpenChange, open])
83
+
84
+ return (
85
+ <PopoverContext.Provider
86
+ value={{
87
+ open,
88
+ onOpenChange: (v) => {
89
+ if (!controlled) setInternal(v)
90
+ onOpenChange?.(v)
91
+ },
92
+ triggerId: triggerId.current,
93
+ }}
94
+ >
95
+ {children}
96
+ </PopoverContext.Provider>
97
+ )
98
+ }
99
+
100
+ /**
101
+ * @desc 弹出面板触发器。
102
+ * @param {Parameters<typeof PopoverTrigger>[0]} props 组件属性;自有字段的用途及默认行为见下表,继承属性另列。
103
+ * @return {ReturnType<typeof PopoverTrigger>} 组件渲染结果;类型见返回值契约。
104
+ * @example
105
+ * ```tsx
106
+ * import { Popover, PopoverTrigger } from '@open-dy/vibecoding-sdk-taro/ui/popover'
107
+ * <Popover><PopoverTrigger /></Popover>
108
+ * ```
109
+ */
110
+ function PopoverTrigger({
111
+ children,
112
+ render,
113
+ onClick,
114
+ ...props
115
+ }: PopoverTriggerProps) {
116
+ const { open, onOpenChange, triggerId } = React.useContext(PopoverContext)
117
+
118
+ const handleClick = (event: PopoverTriggerClickEvent) => {
119
+ onClick?.(event)
120
+ onOpenChange(!open)
121
+ }
122
+
123
+ const triggerProps: PopoverTriggerRenderProps = {
124
+ "data-slot": "popover-trigger",
125
+ "aria-expanded": open,
126
+ id: triggerId,
127
+ onClick: handleClick,
128
+ ...props,
129
+ }
130
+
131
+ if (render) {
132
+ if (typeof render === "function") {
133
+ return <>{render(triggerProps)}</>
134
+ }
135
+
136
+ if (React.isValidElement(render)) {
137
+ const element = render as React.ReactElement<{
138
+ onClick?: ViewProps["onClick"]
139
+ }>
140
+
141
+ return React.cloneElement(element, {
142
+ ...triggerProps,
143
+ onClick: (event: PopoverTriggerClickEvent) => {
144
+ element.props.onClick?.(event)
145
+ handleClick(event)
146
+ },
147
+ })
148
+ }
149
+ }
150
+
151
+ return (
152
+ <View {...triggerProps}>
153
+ {children}
154
+ </View>
155
+ )
156
+ }
157
+
158
+ /**
159
+ * @desc 弹出面板内容容器。
160
+ * @param {Parameters<typeof PopoverContent>[0]} props 组件属性;自有字段的用途及默认行为见下表,继承属性另列。
161
+ * @return {ReturnType<typeof PopoverContent>} 组件渲染结果;类型见返回值契约。
162
+ * @example
163
+ * ```tsx
164
+ * import { Popover, PopoverContent } from '@open-dy/vibecoding-sdk-taro/ui/popover'
165
+ * <Popover><PopoverContent /></Popover>
166
+ * ```
167
+ */
168
+ function PopoverContent({
169
+ className,
170
+ align = "center",
171
+ sideOffset = 4,
172
+ side = "bottom",
173
+ children,
174
+ style,
175
+ ...props
176
+ }: ViewProps & {
177
+ /** @desc 相对触发器的对齐位置:start 起端、center 居中、end 末端;默认 center。 */
178
+ align?: "start" | "center" | "end"
179
+ /** @desc 内容与触发器之间的间距,单位为像素,默认 4;参与测量后的浮层定位。 */
180
+ sideOffset?: number
181
+ /** @desc 内容出现的方向:top、bottom、left 或 right;默认 bottom,定位时会结合视口边界调整。 */
182
+ side?: "top" | "right" | "bottom" | "left"
183
+ }) {
184
+ const { open, onOpenChange, triggerId } = React.useContext(PopoverContext)
185
+ const contentId = React.useRef(
186
+ `popover-content-${Math.random().toString(36).slice(2, 10)}`
187
+ )
188
+ const [position, setPosition] = React.useState<{
189
+ left: number
190
+ top: number
191
+ } | null>(null)
192
+
193
+ React.useEffect(() => {
194
+ if (!open) {
195
+ setPosition(null)
196
+ return
197
+ }
198
+
199
+ let cancelled = false
200
+
201
+ const updatePosition = async () => {
202
+ const [triggerRect, contentRect] = await Promise.all([
203
+ getRectById(triggerId),
204
+ getRectById(contentId.current),
205
+ ])
206
+
207
+ if (cancelled || !triggerRect?.width || !contentRect?.width) return
208
+
209
+ setPosition(
210
+ computePosition({
211
+ triggerRect,
212
+ contentRect,
213
+ align,
214
+ side,
215
+ sideOffset,
216
+ })
217
+ )
218
+ }
219
+
220
+ const timer =
221
+ typeof requestAnimationFrame !== "undefined"
222
+ ? requestAnimationFrame(() => updatePosition())
223
+ : (setTimeout(() => updatePosition(), 0) as unknown as number)
224
+
225
+ return () => {
226
+ cancelled = true
227
+ if (typeof cancelAnimationFrame !== "undefined") {
228
+ cancelAnimationFrame(timer)
229
+ } else {
230
+ clearTimeout(timer)
231
+ }
232
+ }
233
+ }, [align, open, side, sideOffset, triggerId])
234
+
235
+ if (!open) return null
236
+
237
+ const contentStyle = position
238
+ ? ({
239
+ ...(style as object),
240
+ left: position.left,
241
+ top: position.top,
242
+ } as React.CSSProperties)
243
+ : ({
244
+ ...(style as object),
245
+ left: 0,
246
+ top: 0,
247
+ opacity: 0,
248
+ pointerEvents: "none",
249
+ } as React.CSSProperties)
250
+
251
+ return (
252
+ <Portal>
253
+ <View
254
+ className="fixed inset-0 z-40"
255
+ onClick={() => onOpenChange(false)}
256
+ />
257
+ <View
258
+ id={contentId.current}
259
+ data-slot="popover-content"
260
+ data-state="open"
261
+ data-align={align}
262
+ data-side={side}
263
+ className={cn(
264
+ "fixed z-50 w-72 origin-[var(--transform-origin)] rounded-lg border bg-popover p-4 text-popover-foreground shadow-md outline-hidden",
265
+ className
266
+ )}
267
+ style={contentStyle}
268
+ onClick={(event) => event.stopPropagation()}
269
+ {...props}
270
+ >
271
+ {children}
272
+ </View>
273
+ </Portal>
274
+ )
275
+ }
276
+
277
+ /**
278
+ * @desc 弹出面板定位锚点。
279
+ * @param {Parameters<typeof PopoverAnchor>[0]} props 组件属性;自有字段的用途及默认行为见下表,继承属性另列。
280
+ * @return {ReturnType<typeof PopoverAnchor>} 组件渲染结果;类型见返回值契约。
281
+ * @example
282
+ * ```tsx
283
+ * import { Popover, PopoverAnchor } from '@open-dy/vibecoding-sdk-taro/ui/popover'
284
+ * <Popover><PopoverAnchor /></Popover>
285
+ * ```
286
+ */
287
+ function PopoverAnchor({ children, ...props }: ViewProps) {
288
+ return (
289
+ <View data-slot="popover-anchor" {...props}>
290
+ {children}
291
+ </View>
292
+ )
293
+ }
294
+
295
+ /**
296
+ * @desc 弹出面板头部布局。
297
+ * @param {Parameters<typeof PopoverHeader>[0]} props 组件属性;自有字段的用途及默认行为见下表,继承属性另列。
298
+ * @return {ReturnType<typeof PopoverHeader>} 组件渲染结果;类型见返回值契约。
299
+ * @example
300
+ * ```tsx
301
+ * import { Popover, PopoverHeader } from '@open-dy/vibecoding-sdk-taro/ui/popover'
302
+ * <Popover><PopoverHeader /></Popover>
303
+ * ```
304
+ */
305
+ function PopoverHeader({ className, ...props }: ViewProps) {
306
+ return (
307
+ <View
308
+ data-slot="popover-header"
309
+ className={cn("grid gap-1.5", className)}
310
+ {...props}
311
+ />
312
+ )
313
+ }
314
+
315
+ /**
316
+ * @desc 弹出面板标题。
317
+ * @param {Parameters<typeof PopoverTitle>[0]} props 组件属性;自有字段的用途及默认行为见下表,继承属性另列。
318
+ * @return {ReturnType<typeof PopoverTitle>} 组件渲染结果;类型见返回值契约。
319
+ * @example
320
+ * ```tsx
321
+ * import { Popover, PopoverTitle } from '@open-dy/vibecoding-sdk-taro/ui/popover'
322
+ * <Popover><PopoverTitle /></Popover>
323
+ * ```
324
+ */
325
+ function PopoverTitle({ className, ...props }: ViewProps) {
326
+ return (
327
+ <View
328
+ data-slot="popover-title"
329
+ className={cn("font-medium leading-none", className)}
330
+ {...props}
331
+ />
332
+ )
333
+ }
334
+
335
+ /**
336
+ * @desc 弹出面板说明文本。
337
+ * @param {Parameters<typeof PopoverDescription>[0]} props 组件属性;自有字段的用途及默认行为见下表,继承属性另列。
338
+ * @return {ReturnType<typeof PopoverDescription>} 组件渲染结果;类型见返回值契约。
339
+ * @example
340
+ * ```tsx
341
+ * import { Popover, PopoverDescription } from '@open-dy/vibecoding-sdk-taro/ui/popover'
342
+ * <Popover><PopoverDescription /></Popover>
343
+ * ```
344
+ */
345
+ function PopoverDescription({ className, ...props }: ViewProps) {
346
+ return (
347
+ <View
348
+ data-slot="popover-description"
349
+ className={cn("text-sm text-muted-foreground", className)}
350
+ {...props}
351
+ />
352
+ )
353
+ }
354
+
355
+ export {
356
+ Popover,
357
+ PopoverTrigger,
358
+ PopoverContent,
359
+ PopoverAnchor,
360
+ PopoverHeader,
361
+ PopoverTitle,
362
+ PopoverDescription,
363
+ }
@@ -0,0 +1,31 @@
1
+ import * as React from "react"
2
+ import * as TaroComponents from "@tarojs/components"
3
+ import { createPortal } from "react-dom"
4
+ import { isH5 } from "../lib/platform"
5
+
6
+ const RootPortal = (TaroComponents as any).RootPortal
7
+
8
+ /**
9
+ * @desc H5 将内容挂载到 document.body;其他端优先使用 RootPortal,不可用时保留子节点。
10
+ * @param {Parameters<typeof Portal>[0]} props 组件属性;自有字段的用途及默认行为见下表,继承属性另列。
11
+ * @return {ReturnType<typeof Portal>} 组件渲染结果;类型见返回值契约。
12
+ * @example
13
+ * ```tsx
14
+ * import { Portal } from '@open-dy/vibecoding-sdk-taro/ui/portal'
15
+ * <Portal>内容</Portal>
16
+ * ```
17
+ */
18
+ const Portal = ({ children }: {
19
+ /** @desc 要挂载的节点;H5 挂到 document.body,小程序优先使用 RootPortal,不可用时在当前位置渲染。 */
20
+ children: React.ReactNode }) => {
21
+ if (isH5()) {
22
+ if (typeof document === "undefined") return <>{children}</>
23
+ return createPortal(children, document.body)
24
+ }
25
+ if (!RootPortal) {
26
+ return <>{children}</>
27
+ }
28
+ return <RootPortal>{children}</RootPortal>
29
+ }
30
+
31
+ export { Portal }
@@ -0,0 +1,182 @@
1
+ import * as React from "react"
2
+ import { View, type ViewProps } from "@tarojs/components"
3
+
4
+ import { cn } from "../lib/utils"
5
+
6
+ type ProgressContextValue = {
7
+ formattedValue: string | null
8
+ percentage: number
9
+ value: number | null
10
+ }
11
+
12
+ type ProgressValueRender = (formattedValue: string | null, value: number | null) => React.ReactNode
13
+
14
+ type ProgressValueProps = Omit<ViewProps, "children"> & {
15
+ /** @desc 自定义数值节点或渲染函数;函数收到格式化百分比和原始 value,缺少确定值时收到 "indeterminate" 和 null。省略时显示上下文百分比。 */
16
+ children?: React.ReactNode | ProgressValueRender
17
+ }
18
+
19
+ const ProgressContext = React.createContext<ProgressContextValue | null>(null)
20
+
21
+ function getProgressPercentage(value = 0, max = 100) {
22
+ const safeMax = max > 0 ? max : 100
23
+ const percentage = (value / safeMax) * 100
24
+ return Math.min(100, Math.max(0, percentage))
25
+ }
26
+
27
+ /**
28
+ * @desc 进度上下文与布局容器;没有 children 时自动渲染默认轨道和指示器。
29
+ * @param {Parameters<typeof Progress>[0]} props 组件属性;自有字段的用途及默认行为见下表,继承属性另列。
30
+ * @param {Parameters<typeof Progress>[0]["children"]} props.children 自定义组合内容;省略或 null 时自动渲染 ProgressTrack 与 ProgressIndicator,提供内容时需自行组合轨道和填充。
31
+ * @return {ReturnType<typeof Progress>} 组件渲染结果;类型见返回值契约。
32
+ * @remarks 未传 children 时自动渲染轨道和指示器;传入 children 后显式组合 ProgressTrack 和 ProgressIndicator,避免双轨道。
33
+ * @example
34
+ * ```tsx
35
+ * import { Progress } from '@open-dy/vibecoding-sdk-taro/ui/progress'
36
+ * <Progress />
37
+ * ```
38
+ */
39
+ function Progress({
40
+ className,
41
+ children,
42
+ value,
43
+ max = 100,
44
+ ...props
45
+ }: ViewProps & {
46
+ /** @desc 当前进度值;省略或 null 表示没有确定值(填充宽度为 0、默认数值文本为空)。数值按 max 换算百分比并限制在 0–100%。 */
47
+ value?: number | null
48
+ /** @desc 进度满值,默认 100;大于 0 时作为百分比的分母,非正数回退为 100。 */
49
+ max?: number
50
+ }) {
51
+ const percentage = getProgressPercentage(value ?? 0, max)
52
+ const formattedValue = value == null ? null : `${Math.round(percentage)}%`
53
+
54
+ return (
55
+ <ProgressContext.Provider value={{ formattedValue, percentage, value: value ?? null }}>
56
+ <View
57
+ data-slot="progress"
58
+ className={cn("flex flex-wrap gap-3", className)}
59
+ {...props}
60
+ >
61
+ {children ?? (
62
+ <ProgressTrack>
63
+ <ProgressIndicator />
64
+ </ProgressTrack>
65
+ )}
66
+ </View>
67
+ </ProgressContext.Provider>
68
+ )
69
+ }
70
+
71
+ /**
72
+ * @desc 进度条轨道。
73
+ * @param {Parameters<typeof ProgressTrack>[0]} props 组件属性;自有字段的用途及默认行为见下表,继承属性另列。
74
+ * @return {ReturnType<typeof ProgressTrack>} 组件渲染结果;类型见返回值契约。
75
+ * @example
76
+ * ```tsx
77
+ * import { Progress, ProgressTrack } from '@open-dy/vibecoding-sdk-taro/ui/progress'
78
+ * <Progress><ProgressTrack /></Progress>
79
+ * ```
80
+ */
81
+ function ProgressTrack({ className, ...props }: ViewProps) {
82
+ return (
83
+ <View
84
+ className={cn(
85
+ "relative flex h-1 w-full items-center overflow-x-hidden rounded-full bg-muted",
86
+ className
87
+ )}
88
+ data-slot="progress-track"
89
+ {...props}
90
+ />
91
+ )
92
+ }
93
+
94
+ /**
95
+ * @desc 从 Progress 上下文读取百分比作为宽度;显式 style.width 优先。
96
+ * @param {Parameters<typeof ProgressIndicator>[0]} props 组件属性;自有字段的用途及默认行为见下表,继承属性另列。
97
+ * @param {Parameters<typeof ProgressIndicator>[0]["style"]} props.style 填充条内联样式;指定 width 时优先于上下文百分比,不指定时按 Progress.value/max 计算。
98
+ * @return {ReturnType<typeof ProgressIndicator>} 组件渲染结果;类型见返回值契约。
99
+ * @remarks ProgressIndicator — 自动从 ProgressContext 读取百分比,无需手动传 style={{ width }}。 若外部显式传入 style.width,则以外部值为准。
100
+ * @example
101
+ * ```tsx
102
+ * import { Progress, ProgressIndicator } from '@open-dy/vibecoding-sdk-taro/ui/progress'
103
+ * <Progress><ProgressIndicator /></Progress>
104
+ * ```
105
+ */
106
+ function ProgressIndicator({
107
+ className,
108
+ style,
109
+ ...props
110
+ }: ViewProps) {
111
+ const ctx = React.useContext(ProgressContext)
112
+ const width = (style as React.CSSProperties | undefined)?.width ?? (ctx ? `${ctx.percentage}%` : "0%")
113
+
114
+ return (
115
+ <View
116
+ data-slot="progress-indicator"
117
+ className={cn("h-full bg-primary transition-all", className)}
118
+ style={{ ...(style as object), width }}
119
+ {...props}
120
+ />
121
+ )
122
+ }
123
+
124
+ /**
125
+ * @desc 进度条标签文本。
126
+ * @param {Parameters<typeof ProgressLabel>[0]} props 组件属性;自有字段的用途及默认行为见下表,继承属性另列。
127
+ * @return {ReturnType<typeof ProgressLabel>} 组件渲染结果;类型见返回值契约。
128
+ * @example
129
+ * ```tsx
130
+ * import { Progress, ProgressLabel } from '@open-dy/vibecoding-sdk-taro/ui/progress'
131
+ * <Progress><ProgressLabel /></Progress>
132
+ * ```
133
+ */
134
+ function ProgressLabel({ className, ...props }: ViewProps) {
135
+ return (
136
+ <View
137
+ className={cn("text-sm font-medium", className)}
138
+ data-slot="progress-label"
139
+ {...props}
140
+ />
141
+ )
142
+ }
143
+
144
+ /**
145
+ * @desc 展示进度值;支持自定义 children 或读取格式化值的渲染函数。
146
+ * @param {Parameters<typeof ProgressValue>[0]} props 组件属性;自有字段的用途及默认行为见下表,继承属性另列。
147
+ * @return {ReturnType<typeof ProgressValue>} 组件渲染结果;类型见返回值契约。
148
+ * @example
149
+ * ```tsx
150
+ * import { Progress, ProgressValue } from '@open-dy/vibecoding-sdk-taro/ui/progress'
151
+ * <Progress><ProgressValue /></Progress>
152
+ * ```
153
+ */
154
+ function ProgressValue({ className, children, ...props }: ProgressValueProps) {
155
+ const context = React.useContext(ProgressContext)
156
+ const content = typeof children === "function"
157
+ ? children(context?.formattedValue ?? "indeterminate", context?.value ?? null)
158
+ : React.Children.count(children) > 0
159
+ ? children
160
+ : context?.formattedValue ?? null
161
+
162
+ return (
163
+ <View
164
+ className={cn(
165
+ "ml-auto text-sm text-muted-foreground tabular-nums",
166
+ className
167
+ )}
168
+ data-slot="progress-value"
169
+ {...props}
170
+ >
171
+ {content}
172
+ </View>
173
+ )
174
+ }
175
+
176
+ export {
177
+ Progress,
178
+ ProgressTrack,
179
+ ProgressIndicator,
180
+ ProgressLabel,
181
+ ProgressValue,
182
+ }
@@ -0,0 +1,111 @@
1
+ import * as React from "react"
2
+ import { View, type ViewProps } from "@tarojs/components"
3
+
4
+ import { cn } from "../lib/utils"
5
+
6
+ const RadioGroupContext = React.createContext<{
7
+ value?: string
8
+ onValueChange?: (value: string) => void
9
+ }>({})
10
+
11
+ /**
12
+ * @desc 单选组组件。
13
+ * @param {Parameters<typeof RadioGroup>[0]} props 组件属性;自有字段的用途及默认行为见下表,继承属性另列。
14
+ * @return {ReturnType<typeof RadioGroup>} 组件渲染结果;类型见返回值契约。
15
+ * @example
16
+ * ```tsx
17
+ * import { RadioGroup } from '@open-dy/vibecoding-sdk-taro/ui/radio-group'
18
+ * <RadioGroup />
19
+ * ```
20
+ */
21
+ function RadioGroup({
22
+ className,
23
+ value: valueProp,
24
+ defaultValue,
25
+ onValueChange,
26
+ children,
27
+ ...props
28
+ }: ViewProps & {
29
+ /** @desc 受控选中项的标识;传入后以该值为准,需在 onValueChange 中更新。省略时由内部状态管理。 */
30
+ value?: string
31
+ /** @desc 非受控模式的初始选中项,默认空字符串(没有选中项);传入 value 后不生效。 */
32
+ defaultValue?: string
33
+ /** @desc 用户选择项目时调用,参数为下一选中项标识;受控模式需由调用方同步 value。 */
34
+ onValueChange?: (value: string) => void
35
+ }) {
36
+ const [internal, setInternal] = React.useState(defaultValue ?? "")
37
+ const controlled = valueProp !== undefined
38
+ const value = controlled ? valueProp : internal
39
+
40
+ return (
41
+ <RadioGroupContext.Provider
42
+ value={{
43
+ value,
44
+ onValueChange: (v) => {
45
+ if (!controlled) setInternal(v)
46
+ onValueChange?.(v)
47
+ },
48
+ }}
49
+ >
50
+ <View
51
+ data-slot="radio-group"
52
+ className={cn("grid w-full gap-2", className)}
53
+ {...props}
54
+ >
55
+ {children}
56
+ </View>
57
+ </RadioGroupContext.Provider>
58
+ )
59
+ }
60
+
61
+ /**
62
+ * @desc 单选组条目。
63
+ * @param {Parameters<typeof RadioGroupItem>[0]} props 组件属性;自有字段的用途及默认行为见下表,继承属性另列。
64
+ * @return {ReturnType<typeof RadioGroupItem>} 组件渲染结果;类型见返回值契约。
65
+ * @example
66
+ * ```tsx
67
+ * import { RadioGroup, RadioGroupItem } from '@open-dy/vibecoding-sdk-taro/ui/radio-group'
68
+ * <RadioGroup><RadioGroupItem value="one" /></RadioGroup>
69
+ * ```
70
+ */
71
+ function RadioGroupItem({
72
+ className,
73
+ value,
74
+ disabled,
75
+ ...props
76
+ }: ViewProps & {
77
+ /** @desc 当前项目的唯一标识;必须与父组件的 value/defaultValue 对应,不同项目使用不同值。 */
78
+ value: string;
79
+ /** @desc 是否禁用当前单选项;默认可操作,禁用后不触发父组的 onValueChange。 */
80
+ disabled?: boolean }) {
81
+ const ctx = React.useContext(RadioGroupContext)
82
+ const checked = ctx.value === value
83
+
84
+ return (
85
+ <View
86
+ data-slot="radio-group-item"
87
+ data-checked={checked || undefined}
88
+ aria-checked={checked}
89
+ aria-disabled={disabled || undefined}
90
+ className={cn(
91
+ "group/radio-group-item peer relative flex aspect-square size-4 shrink-0 rounded-full border border-input outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",
92
+ checked && "border-primary bg-primary text-primary-foreground dark:bg-primary",
93
+ className
94
+ )}
95
+ onClick={() => {
96
+ if (disabled) return
97
+ ctx.onValueChange?.(value)
98
+ }}
99
+ {...props}
100
+ >
101
+ {checked ? <View
102
+ data-slot="radio-group-indicator"
103
+ className="flex size-4 items-center justify-center"
104
+ >
105
+ <View className="absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary-foreground" />
106
+ </View> : null}
107
+ </View>
108
+ )
109
+ }
110
+
111
+ export { RadioGroup, RadioGroupItem }