@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,215 @@
1
+ import * as React from "react"
2
+ import { Button as TaroButton, View, type ViewProps } from "@tarojs/components"
3
+ import { cva, type VariantProps } from "class-variance-authority"
4
+
5
+ import { cn } from "../lib/utils"
6
+ import { collectDataIconState } from "./helpers"
7
+
8
+ type TaroButtonProps = React.ComponentProps<typeof TaroButton>
9
+
10
+ type OpenTypeDetailEvent = {
11
+ /** @desc 原生能力回调的结果明细;平台未提供时可缺省,使用前需判空。 */
12
+ detail?: {
13
+ /** @desc 平台提供的结果或错误描述;可缺省,请保留原文用于判断和诊断。 */
14
+ errMsg?: string;
15
+ /** @desc 平台提供的数值结果码;可缺省,含义以所用原生能力的契约为准。 */
16
+ errNo?: number }
17
+ }
18
+
19
+ type DouyinButtonExtras = {
20
+ /** @desc 抖音原生按钮能力类型;非空时改用 Taro Button 并透传该值,否则渲染 View。可用值和授权要求以目标平台能力为准。 */
21
+ openType?: TaroButtonProps["openType"] | (string & {})
22
+ /** @desc navigateToVideoView 的视频标识;优先于 data-video-id,同时注入两种拼写给原生按钮。其他 openType 仅透传。 */
23
+ dataVideoId?: string
24
+ /** @desc 视频类型;优先于 data-video-type。navigateToVideoView 场景省略时为 "raw",其他场景不设置默认值。 */
25
+ dataVideoType?: string
26
+ /** @desc 原生视频能力的渠道参数;优先于 data-channel,未提供时不注入。不控制 SDK 网络通道。 */
27
+ dataChannel?: string
28
+ /** @desc dataVideoId 的兼容写法;两者都提供时以 dataVideoId 为准。 */
29
+ "data-video-id"?: string
30
+ /** @desc dataVideoType 的兼容写法;两者都提供时以 dataVideoType 为准。 */
31
+ "data-video-type"?: string
32
+ /** @desc dataChannel 的兼容写法;两者都提供时以 dataChannel 为准。 */
33
+ "data-channel"?: string
34
+ /** @desc 仅在原生 navigateToVideoView 能力分支中透传的结果回调;event.detail 可缺省,不代表业务点击回调。 */
35
+ onNavigateToVideoView?: (event: OpenTypeDetailEvent) => void
36
+ /** @desc 仅在原生 addShortcut 能力分支中透传的结果回调;结果从 event.detail 读取,普通 View 按钮不会主动调用。 */
37
+ onAddShortcut?: (event: OpenTypeDetailEvent) => void
38
+ }
39
+
40
+ type NativeButtonProps = TaroButtonProps &
41
+ DouyinButtonExtras & {
42
+ plain?: boolean
43
+ }
44
+
45
+ const NativeButton = TaroButton as React.ComponentType<NativeButtonProps>
46
+
47
+ type ButtonVariant = VariantProps<typeof buttonVariants>["variant"]
48
+
49
+ /** Taro Button `size`/`type` 与 CVA variant 同名,必须 Omit,否则 size 会收成只剩 `"default"`。 */
50
+ type TaroButtonNativeKeys =
51
+ | keyof ViewProps
52
+ | "className"
53
+ | "style"
54
+ | "children"
55
+ | "size"
56
+ | "type"
57
+
58
+ /**
59
+ * @desc 按钮组件的属性类型;保留 Taro 原生能力,避免 size/type 与样式变体同名冲突。
60
+ * @property {ButtonProps["variant"]} variant 视觉变体,默认 default(主题色);outline 描边、secondary 次要、ghost 无底色、destructive 危险色、link 链接样式。只控制样式,不执行业务动作。
61
+ * @property {ButtonProps["size"]} size 尺寸,默认 default(h-8);xs/sm/lg 分别为 h-6/h-7/h-9;icon/icon-xs/icon-sm/icon-lg 为 size-8/6/7/9 正方形图标按钮。
62
+ * @example
63
+ * ```tsx
64
+ * import { ButtonProps } from '@open-dy/vibecoding-sdk-taro/ui/button'
65
+ * const props: ButtonProps = { children: '确认' }
66
+ * ```
67
+ */
68
+ export type ButtonProps = ViewProps &
69
+ VariantProps<typeof buttonVariants> &
70
+ Omit<TaroButtonProps, TaroButtonNativeKeys> &
71
+ DouyinButtonExtras
72
+
73
+ /**
74
+ * @desc 生成按钮的样式类名;接受其声明的样式变体。
75
+ * @param {Parameters<typeof buttonVariants>[0]} props 样式变体以及附加的 class 或 className。
76
+ * @param {Parameters<typeof buttonVariants>[0]["variant"]} props.variant 视觉变体,默认 default(主题色);outline 描边、secondary 次要、ghost 无底色、destructive 危险色、link 链接样式。只控制样式,不执行业务动作。
77
+ * @param {Parameters<typeof buttonVariants>[0]["size"]} props.size 尺寸,默认 default(h-8);xs/sm/lg 分别为 h-6/h-7/h-9;icon/icon-xs/icon-sm/icon-lg 为 size-8/6/7/9 正方形图标按钮。
78
+ * @return {string} 合并后的样式类名。
79
+ * @example
80
+ * ```tsx
81
+ * import { buttonVariants } from '@open-dy/vibecoding-sdk-taro/ui/button'
82
+ * buttonVariants()
83
+ * ```
84
+ */
85
+ const buttonVariants = cva(
86
+ "group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-[transform,opacity,background-color,color,box-shadow] duration-150 ease-out outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:scale-[0.98] active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
87
+ {
88
+ variants: {
89
+ variant: {
90
+ default: "bg-primary text-primary-foreground [a]:hover:bg-primary/80",
91
+ outline:
92
+ "border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",
93
+ secondary:
94
+ "bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",
95
+ ghost:
96
+ "hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",
97
+ destructive:
98
+ "bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",
99
+ link: "text-primary underline-offset-4 hover:underline",
100
+ },
101
+ size: {
102
+ default: "h-8 gap-1.5 px-2.5",
103
+ xs: "h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs [&_svg:not([class*='size-'])]:size-3",
104
+ sm: "h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] [&_svg:not([class*='size-'])]:size-3.5",
105
+ lg: "h-9 gap-1.5 px-2.5",
106
+ icon: "size-8",
107
+ "icon-xs": "size-6 rounded-[min(var(--radius-md),10px)] [&_svg:not([class*='size-'])]:size-3",
108
+ "icon-sm": "size-7 rounded-[min(var(--radius-md),12px)]",
109
+ "icon-lg": "size-9",
110
+ },
111
+ },
112
+ defaultVariants: {
113
+ variant: "default",
114
+ size: "default",
115
+ },
116
+ }
117
+ )
118
+
119
+ function getButtonHoverClass(variant: ButtonVariant) {
120
+ switch (variant) {
121
+ case "outline":
122
+ return "scale-[0.98] bg-muted/90 text-foreground"
123
+ case "secondary":
124
+ return "scale-[0.98] opacity-85"
125
+ case "ghost":
126
+ return "scale-[0.98] bg-muted/80 text-foreground"
127
+ case "destructive":
128
+ return "scale-[0.98] bg-destructive/20 text-destructive dark:bg-destructive/30"
129
+ case "link":
130
+ return "opacity-70"
131
+ case "default":
132
+ default:
133
+ return "scale-[0.98] opacity-88"
134
+ }
135
+ }
136
+
137
+ /**
138
+ * @desc 支持主题样式和抖音 openType 的小程序按钮;用于普通小程序和兴趣卡落地页。
139
+ * @param {ButtonProps} props 按钮属性;variant 和 size 选择视觉样式,className 覆写容器,onClick 处理普通点击。
140
+ * @param {Parameters<typeof Button>[0]["variant"]} props.variant 视觉变体,默认 default(主题色);outline 描边、secondary 次要、ghost 无底色、destructive 危险色、link 链接样式。只控制样式,不执行业务动作。
141
+ * @param {Parameters<typeof Button>[0]["size"]} props.size 尺寸,默认 default(h-8);xs/sm/lg 分别为 h-6/h-7/h-9;icon/icon-xs/icon-sm/icon-lg 为 size-8/6/7/9 正方形图标按钮。
142
+ * @param {Parameters<typeof Button>[0]["className"]} props.className 追加到预置样式之后的容器类名,可覆写色彩、边框、圆角和尺寸。普通分支应用于 View,openType 分支应用于原生 Button。
143
+ * @param {Parameters<typeof Button>[0]["style"]} props.style 传给渲染根节点的内联样式;普通分支为 View,openType 分支为原生 Button。
144
+ * @param {Parameters<typeof Button>[0]["disabled"]} props.disabled 原生 Taro Button 的禁用属性,仅 openType 分支有原生禁用保证。普通 View 分支透传该值但未实现点击拦截,请在业务回调中处理。
145
+ * @return {React.JSX.Element} 普通交互返回 View;传入 openType 时返回原生 Taro Button。
146
+ * @remarks variant 默认 default(主题背景和前景色),size 默认 default(h-8)。className 合并在预置样式之后,可覆写背景、文字色、边框、圆角和尺寸。不要为获得另一种风格重写通用按钮;按 DESIGN.md 传入 className 或 variant。openType 走原生按钮能力,普通按钮走 View,两者使用同一组视觉样式。
147
+ * @example
148
+ * ```tsx
149
+ * import { Button } from '@open-dy/vibecoding-sdk-taro/ui/button'
150
+ * export function AddTaskButton() {
151
+ * return <Button className="h-11 rounded-none border-4 border-black bg-black text-white" onClick={() => console.log('add task')}>添加</Button>
152
+ * }
153
+ * ```
154
+ */
155
+ function Button({
156
+ className,
157
+ variant = "default",
158
+ size = "default",
159
+ openType,
160
+ dataVideoId,
161
+ dataVideoType,
162
+ dataChannel,
163
+ "data-video-id": dataVideoIdAttr,
164
+ "data-video-type": dataVideoTypeAttr,
165
+ "data-channel": dataChannelAttr,
166
+ style,
167
+ ...props
168
+ }: ButtonProps) {
169
+ const { hasInlineStartIcon, hasInlineEndIcon } = React.useMemo(
170
+ () => collectDataIconState(props.children),
171
+ [props.children]
172
+ )
173
+
174
+ const sharedClassName = cn(
175
+ buttonVariants({ variant, size }),
176
+ hasInlineStartIcon && (size === "xs" || size === "sm" ? "pl-1.5" : "pl-2"),
177
+ hasInlineEndIcon && (size === "xs" || size === "sm" ? "pr-1.5" : "pr-2"),
178
+ className
179
+ )
180
+ const visualProps = {
181
+ "data-slot": "button",
182
+ className: sharedClassName,
183
+ hoverClass: getButtonHoverClass(variant),
184
+ hoverStartTime: 20,
185
+ hoverStayTime: 90,
186
+ }
187
+
188
+ if (openType) {
189
+ const videoId = dataVideoId ?? dataVideoIdAttr
190
+ const videoType =
191
+ dataVideoType ??
192
+ dataVideoTypeAttr ??
193
+ (openType === "navigateToVideoView" ? "raw" : undefined)
194
+ const channel = dataChannel ?? dataChannelAttr
195
+
196
+ // 不要 plain / 内联 transparent:会盖掉 Tailwind bg-primary(TT 编译已有 #9333ea 兜底)
197
+ return (
198
+ <NativeButton
199
+ {...props}
200
+ {...visualProps}
201
+ openType={openType}
202
+ {...(videoId ? { dataVideoId: videoId, "data-video-id": videoId } : {})}
203
+ {...(videoType
204
+ ? { dataVideoType: videoType, "data-video-type": videoType }
205
+ : {})}
206
+ {...(channel ? { dataChannel: channel, "data-channel": channel } : {})}
207
+ style={style}
208
+ />
209
+ )
210
+ }
211
+
212
+ return <View {...props} {...visualProps} style={style} />
213
+ }
214
+
215
+ export { Button, buttonVariants }
@@ -0,0 +1,353 @@
1
+ import * as React from "react"
2
+ import { Picker, Text, View, type ViewProps } from "@tarojs/components"
3
+
4
+ import { cn } from "../lib/utils"
5
+ import { Button } from "./button"
6
+ import { ChevronLeft, ChevronRight } from "@open-dy/lucide-taro"
7
+
8
+ type DateRange = {
9
+ /** @desc 范围起始日;未选择起点时省略。组件仅在 mode="range" 下读取该字段。 */
10
+ from?: Date;
11
+ /** @desc 范围结束日;仅选好起点时省略,完成范围后必须不早于 from。 */
12
+ to?: Date }
13
+
14
+ type CalendarBaseProps = ViewProps & {
15
+ /** @desc 受控显示月份;传入后以该 Date 的年/月为准,需通过 onMonthChange 更新。省略时从 selected 或当前日期初始化内部月份。 */
16
+ month?: Date
17
+ /** @desc 切换上一月/下一月或下拉年月时调用,参数为新月份的第一天;受控 month 需由调用方同步。 */
18
+ onMonthChange?: (month: Date) => void
19
+ /** @desc 是否显示相邻月份的日期,默认 true;为 false 时保留日历网格空位,隐藏那些日期。 */
20
+ showOutsideDays?: boolean
21
+ /** @desc 禁选日期判定函数;对每个日期返回 true 表示不可选,省略时不禁用日期,禁用日期不会触发 onSelect。 */
22
+ disabled?: (date: Date) => boolean
23
+ /** @desc 标题布局,默认 label(年月文本);dropdown 使用原生年月 Picker。 */
24
+ captionLayout?: "label" | "dropdown"
25
+ /** @desc dropdown 年份选项的起始年,默认当前年减 100;会扩展以包含显示中的年份,不限制可选日期。 */
26
+ fromYear?: number
27
+ /** @desc dropdown 年份选项的结束年,默认当前年加 20;会扩展以包含显示中的年份,不限制可选日期。 */
28
+ toYear?: number
29
+ /** @desc 日历根 View 的附加类名,在基础样式之后合并;省略时使用 bg-background p-2。 */
30
+ className?: string
31
+ }
32
+
33
+ type SingleCalendarProps = CalendarBaseProps & {
34
+ /** @desc 单日选择模式,省略时为 single;此分支的 selected 使用 Date,onSelect 接收单日。 */
35
+ mode?: "single"
36
+ /** @desc 外部维护的选中日;省略时没有选中日。组件不保存选中状态,需在 onSelect 中更新。 */
37
+ selected?: Date
38
+ /** @desc 点击未禁用日期时传入该 Date;类型允许 undefined,但当前实现不会通过再次点击自动取消选择。 */
39
+ onSelect?: (date: Date | undefined) => void
40
+ }
41
+
42
+ type RangeCalendarProps = CalendarBaseProps & {
43
+ /** @desc 必须为 range,启用范围选择;selected 使用 { from, to },不能与单日 props 混用。 */
44
+ mode: "range"
45
+ /** @desc 外部维护的范围;首次选择只有 from,完成后含 from/to。组件不保存选中范围,需在 onSelect 中更新。 */
46
+ selected?: DateRange
47
+ /** @desc 点击时返回下一范围:无起点/已完成时重新开始;只有起点时完成范围,早于起点的日期会交换端点。当前实现不发出 undefined。 */
48
+ onSelect?: (range: DateRange | undefined) => void
49
+ }
50
+
51
+ /**
52
+ * @desc 日历属性联合类型;mode 区分单日选择和日期范围选择。
53
+ * @example
54
+ * ```tsx
55
+ * import { CalendarProps } from '@open-dy/vibecoding-sdk-taro/ui/calendar'
56
+ * const single: CalendarProps = { mode: 'single', selected: new Date(2026, 9, 1) }
57
+ * const range: CalendarProps = { mode: 'range', selected: { from: new Date(2026, 9, 1), to: new Date(2026, 9, 3) } }
58
+ * ```
59
+ */
60
+ type CalendarProps = SingleCalendarProps | RangeCalendarProps
61
+
62
+ function isRangeCalendarProps(
63
+ props: CalendarProps
64
+ ): props is RangeCalendarProps {
65
+ return props.mode === "range"
66
+ }
67
+
68
+ function getDaysInMonth(year: number, month: number) {
69
+ return new Date(year, month + 1, 0).getDate()
70
+ }
71
+
72
+ function getFirstDayOfMonth(year: number, month: number) {
73
+ return new Date(year, month, 1).getDay()
74
+ }
75
+
76
+ function isSameDay(a: Date, b: Date) {
77
+ return (
78
+ a.getFullYear() === b.getFullYear() &&
79
+ a.getMonth() === b.getMonth() &&
80
+ a.getDate() === b.getDate()
81
+ )
82
+ }
83
+
84
+ /**
85
+ * @desc 日期选择日历组件。
86
+ * @param {Parameters<typeof Calendar>[0]} calendarProps 组件属性;自有字段的用途及默认行为见下表,继承属性另列。
87
+ * @return {ReturnType<typeof Calendar>} 组件渲染结果;类型见返回值契约。
88
+ * @example
89
+ * ```tsx
90
+ * import { useState } from 'react'
91
+ * import { Calendar } from '@open-dy/vibecoding-sdk-taro/ui/calendar'
92
+ * export function SingleDatePicker() {
93
+ * const [selected, setSelected] = useState<Date>()
94
+ * const [month, setMonth] = useState(new Date(2026, 9, 1))
95
+ * return <Calendar month={month} onMonthChange={setMonth} selected={selected} onSelect={setSelected} />
96
+ * }
97
+ * export function DateRangePicker() {
98
+ * const [selected, setSelected] = useState<{ from?: Date; to?: Date }>({})
99
+ * return <Calendar mode="range" selected={selected} onSelect={(next) => setSelected(next ?? {})} />
100
+ * }
101
+ * ```
102
+ */
103
+ function Calendar(calendarProps: CalendarProps) {
104
+ const {
105
+ className,
106
+ month: monthProp,
107
+ onMonthChange,
108
+ showOutsideDays = true,
109
+ disabled,
110
+ captionLayout = "label",
111
+ fromYear,
112
+ toYear,
113
+ mode = "single",
114
+ selected: _selected,
115
+ onSelect: _onSelect,
116
+ ...viewProps
117
+ } = calendarProps
118
+ const selectedSingle = isRangeCalendarProps(calendarProps)
119
+ ? undefined
120
+ : calendarProps.selected
121
+ const selectedRange = isRangeCalendarProps(calendarProps)
122
+ ? calendarProps.selected
123
+ : undefined
124
+ const today = new Date()
125
+ const [internalMonth, setInternalMonth] = React.useState(
126
+ monthProp ?? selectedSingle ?? selectedRange?.from ?? today
127
+ )
128
+ const currentMonth = monthProp ?? internalMonth
129
+
130
+ const year = currentMonth.getFullYear()
131
+ const month = currentMonth.getMonth()
132
+ const daysInMonth = getDaysInMonth(year, month)
133
+ const firstDay = getFirstDayOfMonth(year, month)
134
+ const daysInPrevMonth = getDaysInMonth(year, month - 1)
135
+
136
+ const weekdays = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]
137
+ const monthNames = [
138
+ "January", "February", "March", "April", "May", "June",
139
+ "July", "August", "September", "October", "November", "December",
140
+ ]
141
+ const yearOptions = React.useMemo(() => {
142
+ const baseYear = new Date().getFullYear()
143
+ const minYear = fromYear ?? baseYear - 100
144
+ const maxYear = toYear ?? baseYear + 20
145
+ const start = Math.min(minYear, year)
146
+ const end = Math.max(maxYear, year)
147
+ return Array.from({ length: end - start + 1 }, (_, index) => start + index)
148
+ }, [fromYear, toYear, year])
149
+ const monthOptions = React.useMemo(
150
+ () => Array.from({ length: 12 }, (_, index) => index + 1),
151
+ []
152
+ )
153
+ const yearIndex = Math.max(yearOptions.indexOf(year), 0)
154
+ const monthIndex = month
155
+
156
+ const goToPrevMonth = () => {
157
+ const prev = new Date(year, month - 1, 1)
158
+ setInternalMonth(prev)
159
+ onMonthChange?.(prev)
160
+ }
161
+
162
+ const goToNextMonth = () => {
163
+ const next = new Date(year, month + 1, 1)
164
+ setInternalMonth(next)
165
+ onMonthChange?.(next)
166
+ }
167
+
168
+ const setYear = (nextYear: number) => {
169
+ const next = new Date(nextYear, month, 1)
170
+ setInternalMonth(next)
171
+ onMonthChange?.(next)
172
+ }
173
+
174
+ const setMonthOfYear = (nextMonth: number) => {
175
+ const next = new Date(year, nextMonth - 1, 1)
176
+ setInternalMonth(next)
177
+ onMonthChange?.(next)
178
+ }
179
+
180
+ const handleDayClick = (date: Date) => {
181
+ if (disabled?.(date)) return
182
+
183
+ if (isRangeCalendarProps(calendarProps)) {
184
+ const range = calendarProps.selected
185
+ if (!range?.from || (range.from && range.to)) {
186
+ calendarProps.onSelect?.({ from: date, to: undefined })
187
+ } else {
188
+ if (date < range.from) {
189
+ calendarProps.onSelect?.({ from: date, to: range.from })
190
+ } else {
191
+ calendarProps.onSelect?.({ from: range.from, to: date })
192
+ }
193
+ }
194
+ } else {
195
+ calendarProps.onSelect?.(date)
196
+ }
197
+ }
198
+
199
+ const isSelected = (date: Date) => {
200
+ if (selectedSingle) {
201
+ return isSameDay(date, selectedSingle)
202
+ }
203
+ if (selectedRange) {
204
+ if (selectedRange.from && isSameDay(date, selectedRange.from)) return true
205
+ if (selectedRange.to && isSameDay(date, selectedRange.to)) return true
206
+ }
207
+ return false
208
+ }
209
+
210
+ const isInRange = (date: Date) => {
211
+ if (!selectedRange?.from || !selectedRange.to) return false
212
+ return date > selectedRange.from && date < selectedRange.to
213
+ }
214
+
215
+ const days: Array<{ date: Date; isOutside: boolean }> = []
216
+
217
+ for (let i = firstDay - 1; i >= 0; i--) {
218
+ days.push({
219
+ date: new Date(year, month - 1, daysInPrevMonth - i),
220
+ isOutside: true,
221
+ })
222
+ }
223
+
224
+ for (let i = 1; i <= daysInMonth; i++) {
225
+ days.push({ date: new Date(year, month, i), isOutside: false })
226
+ }
227
+
228
+ const remaining = 42 - days.length
229
+ for (let i = 1; i <= remaining; i++) {
230
+ days.push({ date: new Date(year, month + 1, i), isOutside: true })
231
+ }
232
+
233
+ const weeks: typeof days[] = []
234
+ for (let i = 0; i < days.length; i += 7) {
235
+ weeks.push(days.slice(i, i + 7))
236
+ }
237
+
238
+ return (
239
+ <View
240
+ data-slot="calendar"
241
+ className={cn("bg-background p-2", className)}
242
+ {...viewProps}
243
+ >
244
+ <View className="flex items-center justify-between">
245
+ <Button
246
+ variant="ghost"
247
+ size="icon"
248
+ onClick={goToPrevMonth}
249
+ onTap={goToPrevMonth}
250
+ >
251
+ <ChevronLeft className="size-4" />
252
+ </Button>
253
+ {captionLayout === "dropdown" ? (
254
+ <View className="flex items-center gap-2">
255
+ <Picker
256
+ mode="selector"
257
+ range={yearOptions}
258
+ value={yearIndex}
259
+ onChange={(event) =>
260
+ setYear(yearOptions[Number(event.detail.value)] ?? year)
261
+ }
262
+ >
263
+ <Button variant="ghost" className="h-8 px-2">
264
+ <Text className="text-sm font-medium">{year}</Text>
265
+ </Button>
266
+ </Picker>
267
+ <Picker
268
+ mode="selector"
269
+ range={monthOptions}
270
+ value={monthIndex}
271
+ onChange={(event) =>
272
+ setMonthOfYear(
273
+ monthOptions[Number(event.detail.value)] ?? month + 1
274
+ )
275
+ }
276
+ >
277
+ <Button variant="ghost" className="h-8 px-2">
278
+ <Text className="text-sm font-medium">
279
+ {String(month + 1).padStart(2, "0")}月
280
+ </Text>
281
+ </Button>
282
+ </Picker>
283
+ </View>
284
+ ) : (
285
+ <View className="text-sm font-medium">
286
+ {monthNames[month]} {year}
287
+ </View>
288
+ )}
289
+ <Button
290
+ variant="ghost"
291
+ size="icon"
292
+ onClick={goToNextMonth}
293
+ onTap={goToNextMonth}
294
+ >
295
+ <ChevronRight className="size-4" />
296
+ </Button>
297
+ </View>
298
+
299
+ <View className="mt-2 flex">
300
+ {weekdays.map((day) => (
301
+ <View
302
+ key={day}
303
+ className="flex-1 text-center text-xs font-normal text-muted-foreground"
304
+ >
305
+ {day}
306
+ </View>
307
+ ))}
308
+ </View>
309
+
310
+ {weeks.map((week, wi) => (
311
+ <View key={wi} className="mt-1 flex">
312
+ {week.map((day, di) => {
313
+ if (day.isOutside && !showOutsideDays) {
314
+ return <View key={di} className="flex-1" />
315
+ }
316
+
317
+ const isDisabled = disabled?.(day.date)
318
+ const sel = isSelected(day.date)
319
+ const inRange = isInRange(day.date)
320
+ const isToday = isSameDay(day.date, today)
321
+
322
+ return (
323
+ <View
324
+ key={di}
325
+ className={cn(
326
+ "flex flex-1 items-center justify-center",
327
+ inRange && "bg-muted"
328
+ )}
329
+ >
330
+ <View
331
+ className={cn(
332
+ "flex size-7 items-center justify-center rounded-md text-sm",
333
+ day.isOutside && "text-muted-foreground opacity-50",
334
+ isDisabled && "opacity-50",
335
+ isToday && !sel && "bg-muted font-medium",
336
+ sel && "bg-primary text-primary-foreground",
337
+ !sel && !isDisabled && !day.isOutside && "active:bg-accent"
338
+ )}
339
+ onClick={() => !isDisabled && handleDayClick(day.date)}
340
+ onTap={() => !isDisabled && handleDayClick(day.date)}
341
+ >
342
+ {day.date.getDate()}
343
+ </View>
344
+ </View>
345
+ )
346
+ })}
347
+ </View>
348
+ ))}
349
+ </View>
350
+ )
351
+ }
352
+
353
+ export { Calendar, type CalendarProps }