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

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 (541) hide show
  1. package/dist/adapters/interest-card/eslint/eslint-plugin-custom-navigation.mjs +2 -290
  2. package/dist/adapters/interest-card/eslint/taro.mjs +8 -42
  3. package/dist/components/miniapp-open-card.d.ts +46 -1
  4. package/dist/components/miniapp-open-card.js +14 -1
  5. package/dist/components/miniapp-open-card.js.map +1 -1
  6. package/dist/eslint/eslint-plugin-custom-navigation.mjs +290 -0
  7. package/dist/eslint/taro.mjs +35 -1
  8. package/dist/reference/llms.txt +76 -34
  9. package/dist/reference/sdk-api/build/taro/BuildContext.md +7 -2
  10. package/dist/reference/sdk-api/build/taro/CreateMicroappTaroConfigOptions.md +1 -2
  11. package/dist/reference/sdk-api/build/taro/createMicroappTaroConfig.md +1 -2
  12. package/dist/reference/sdk-api/components/miniapp-open-card/MiniappOpenCard.md +109 -0
  13. package/dist/reference/sdk-api/components/miniapp-open-card/MiniappOpenCardEnvVersion.md +38 -0
  14. package/dist/reference/sdk-api/components/miniapp-open-card/MiniappOpenCardErrorDetail.md +52 -0
  15. package/dist/reference/sdk-api/components/miniapp-open-card/MiniappOpenCardProps.md +76 -0
  16. package/dist/reference/sdk-api/components/miniapp-open-card/index.md +12 -0
  17. package/dist/reference/sdk-api/libraries/lucide-taro.md +151 -0
  18. package/dist/reference/sdk-api/runtime/CreateMicroappClientOptions.md +7 -2
  19. package/dist/reference/sdk-api/runtime/createMicroappClient.md +8 -3
  20. package/dist/reference/sdk-api/ui/accordion/Accordion.md +114 -0
  21. package/dist/reference/sdk-api/ui/accordion/AccordionContent.md +100 -0
  22. package/dist/reference/sdk-api/ui/accordion/AccordionItem.md +107 -0
  23. package/dist/reference/sdk-api/ui/accordion/AccordionTrigger.md +100 -0
  24. package/dist/reference/sdk-api/ui/accordion/index.md +12 -0
  25. package/dist/reference/sdk-api/ui/alert/Alert.md +106 -0
  26. package/dist/reference/sdk-api/ui/alert/AlertAction.md +100 -0
  27. package/dist/reference/sdk-api/ui/alert/AlertDescription.md +100 -0
  28. package/dist/reference/sdk-api/ui/alert/AlertTitle.md +100 -0
  29. package/dist/reference/sdk-api/ui/alert/index.md +12 -0
  30. package/dist/reference/sdk-api/ui/alert-dialog/AlertDialog.md +58 -0
  31. package/dist/reference/sdk-api/ui/alert-dialog/AlertDialogAction.md +107 -0
  32. package/dist/reference/sdk-api/ui/alert-dialog/AlertDialogCancel.md +107 -0
  33. package/dist/reference/sdk-api/ui/alert-dialog/AlertDialogContent.md +106 -0
  34. package/dist/reference/sdk-api/ui/alert-dialog/AlertDialogDescription.md +100 -0
  35. package/dist/reference/sdk-api/ui/alert-dialog/AlertDialogFooter.md +100 -0
  36. package/dist/reference/sdk-api/ui/alert-dialog/AlertDialogHeader.md +100 -0
  37. package/dist/reference/sdk-api/ui/alert-dialog/AlertDialogOverlay.md +100 -0
  38. package/dist/reference/sdk-api/ui/alert-dialog/AlertDialogPortal.md +55 -0
  39. package/dist/reference/sdk-api/ui/alert-dialog/AlertDialogTitle.md +100 -0
  40. package/dist/reference/sdk-api/ui/alert-dialog/AlertDialogTrigger.md +118 -0
  41. package/dist/reference/sdk-api/ui/alert-dialog/index.md +19 -0
  42. package/dist/reference/sdk-api/ui/aspect-ratio/AspectRatio.md +106 -0
  43. package/dist/reference/sdk-api/ui/aspect-ratio/index.md +9 -0
  44. package/dist/reference/sdk-api/ui/avatar/Avatar.md +106 -0
  45. package/dist/reference/sdk-api/ui/avatar/AvatarBadge.md +100 -0
  46. package/dist/reference/sdk-api/ui/avatar/AvatarFallback.md +100 -0
  47. package/dist/reference/sdk-api/ui/avatar/AvatarGroup.md +100 -0
  48. package/dist/reference/sdk-api/ui/avatar/AvatarGroupCount.md +100 -0
  49. package/dist/reference/sdk-api/ui/avatar/AvatarImage.md +108 -0
  50. package/dist/reference/sdk-api/ui/avatar/index.md +14 -0
  51. package/dist/reference/sdk-api/ui/badge/Badge.md +114 -0
  52. package/dist/reference/sdk-api/ui/badge/badgeVariants.md +70 -0
  53. package/dist/reference/sdk-api/ui/badge/index.md +10 -0
  54. package/dist/reference/sdk-api/ui/button/Button.md +210 -0
  55. package/dist/reference/sdk-api/ui/button/ButtonProps.md +188 -0
  56. package/dist/reference/sdk-api/ui/button/buttonVariants.md +84 -0
  57. package/dist/reference/sdk-api/ui/button/index.md +11 -0
  58. package/dist/reference/sdk-api/ui/button-group/ButtonGroup.md +106 -0
  59. package/dist/reference/sdk-api/ui/button-group/ButtonGroupSeparator.md +106 -0
  60. package/dist/reference/sdk-api/ui/button-group/ButtonGroupText.md +106 -0
  61. package/dist/reference/sdk-api/ui/button-group/buttonGroupVariants.md +70 -0
  62. package/dist/reference/sdk-api/ui/button-group/index.md +12 -0
  63. package/dist/reference/sdk-api/ui/calendar/Calendar.md +144 -0
  64. package/dist/reference/sdk-api/ui/calendar/CalendarProps.md +118 -0
  65. package/dist/reference/sdk-api/ui/calendar/index.md +10 -0
  66. package/dist/reference/sdk-api/ui/card/Card.md +106 -0
  67. package/dist/reference/sdk-api/ui/card/CardAction.md +100 -0
  68. package/dist/reference/sdk-api/ui/card/CardContent.md +100 -0
  69. package/dist/reference/sdk-api/ui/card/CardDescription.md +100 -0
  70. package/dist/reference/sdk-api/ui/card/CardFooter.md +100 -0
  71. package/dist/reference/sdk-api/ui/card/CardHeader.md +100 -0
  72. package/dist/reference/sdk-api/ui/card/CardTitle.md +100 -0
  73. package/dist/reference/sdk-api/ui/card/index.md +15 -0
  74. package/dist/reference/sdk-api/ui/carousel/Carousel.md +108 -0
  75. package/dist/reference/sdk-api/ui/carousel/CarouselContent.md +100 -0
  76. package/dist/reference/sdk-api/ui/carousel/CarouselItem.md +100 -0
  77. package/dist/reference/sdk-api/ui/carousel/CarouselNext.md +219 -0
  78. package/dist/reference/sdk-api/ui/carousel/CarouselPrevious.md +219 -0
  79. package/dist/reference/sdk-api/ui/carousel/index.md +14 -0
  80. package/dist/reference/sdk-api/ui/carousel/useCarousel.md +46 -0
  81. package/dist/reference/sdk-api/ui/checkbox/Checkbox.md +109 -0
  82. package/dist/reference/sdk-api/ui/checkbox/index.md +9 -0
  83. package/dist/reference/sdk-api/ui/collapsible/Collapsible.md +108 -0
  84. package/dist/reference/sdk-api/ui/collapsible/CollapsibleContent.md +100 -0
  85. package/dist/reference/sdk-api/ui/collapsible/CollapsibleTrigger.md +119 -0
  86. package/dist/reference/sdk-api/ui/collapsible/index.md +11 -0
  87. package/dist/reference/sdk-api/ui/combobox/Combobox.md +124 -0
  88. package/dist/reference/sdk-api/ui/combobox/ComboboxChip.md +107 -0
  89. package/dist/reference/sdk-api/ui/combobox/ComboboxChips.md +100 -0
  90. package/dist/reference/sdk-api/ui/combobox/ComboboxChipsInput.md +107 -0
  91. package/dist/reference/sdk-api/ui/combobox/ComboboxCollection.md +100 -0
  92. package/dist/reference/sdk-api/ui/combobox/ComboboxContent.md +106 -0
  93. package/dist/reference/sdk-api/ui/combobox/ComboboxEmpty.md +100 -0
  94. package/dist/reference/sdk-api/ui/combobox/ComboboxGroup.md +100 -0
  95. package/dist/reference/sdk-api/ui/combobox/ComboboxInput.md +113 -0
  96. package/dist/reference/sdk-api/ui/combobox/ComboboxItem.md +106 -0
  97. package/dist/reference/sdk-api/ui/combobox/ComboboxLabel.md +100 -0
  98. package/dist/reference/sdk-api/ui/combobox/ComboboxList.md +105 -0
  99. package/dist/reference/sdk-api/ui/combobox/ComboboxSeparator.md +100 -0
  100. package/dist/reference/sdk-api/ui/combobox/ComboboxTrigger.md +100 -0
  101. package/dist/reference/sdk-api/ui/combobox/ComboboxValue.md +105 -0
  102. package/dist/reference/sdk-api/ui/combobox/index.md +24 -0
  103. package/dist/reference/sdk-api/ui/combobox/useComboboxAnchor.md +43 -0
  104. package/dist/reference/sdk-api/ui/dialog/Dialog.md +58 -0
  105. package/dist/reference/sdk-api/ui/dialog/DialogClose.md +100 -0
  106. package/dist/reference/sdk-api/ui/dialog/DialogContent.md +107 -0
  107. package/dist/reference/sdk-api/ui/dialog/DialogDescription.md +100 -0
  108. package/dist/reference/sdk-api/ui/dialog/DialogFooter.md +100 -0
  109. package/dist/reference/sdk-api/ui/dialog/DialogHeader.md +100 -0
  110. package/dist/reference/sdk-api/ui/dialog/DialogOverlay.md +100 -0
  111. package/dist/reference/sdk-api/ui/dialog/DialogPortal.md +55 -0
  112. package/dist/reference/sdk-api/ui/dialog/DialogTitle.md +100 -0
  113. package/dist/reference/sdk-api/ui/dialog/DialogTrigger.md +106 -0
  114. package/dist/reference/sdk-api/ui/dialog/index.md +18 -0
  115. package/dist/reference/sdk-api/ui/drawer/Drawer.md +59 -0
  116. package/dist/reference/sdk-api/ui/drawer/DrawerClose.md +100 -0
  117. package/dist/reference/sdk-api/ui/drawer/DrawerContent.md +100 -0
  118. package/dist/reference/sdk-api/ui/drawer/DrawerDescription.md +100 -0
  119. package/dist/reference/sdk-api/ui/drawer/DrawerFooter.md +100 -0
  120. package/dist/reference/sdk-api/ui/drawer/DrawerHeader.md +100 -0
  121. package/dist/reference/sdk-api/ui/drawer/DrawerOverlay.md +100 -0
  122. package/dist/reference/sdk-api/ui/drawer/DrawerPortal.md +55 -0
  123. package/dist/reference/sdk-api/ui/drawer/DrawerTitle.md +100 -0
  124. package/dist/reference/sdk-api/ui/drawer/DrawerTrigger.md +100 -0
  125. package/dist/reference/sdk-api/ui/drawer/index.md +18 -0
  126. package/dist/reference/sdk-api/ui/dropdown-menu/DropdownMenu.md +58 -0
  127. package/dist/reference/sdk-api/ui/dropdown-menu/DropdownMenuCheckboxItem.md +107 -0
  128. package/dist/reference/sdk-api/ui/dropdown-menu/DropdownMenuContent.md +106 -0
  129. package/dist/reference/sdk-api/ui/dropdown-menu/DropdownMenuGroup.md +100 -0
  130. package/dist/reference/sdk-api/ui/dropdown-menu/DropdownMenuItem.md +107 -0
  131. package/dist/reference/sdk-api/ui/dropdown-menu/DropdownMenuLabel.md +106 -0
  132. package/dist/reference/sdk-api/ui/dropdown-menu/DropdownMenuPortal.md +55 -0
  133. package/dist/reference/sdk-api/ui/dropdown-menu/DropdownMenuRadioGroup.md +100 -0
  134. package/dist/reference/sdk-api/ui/dropdown-menu/DropdownMenuRadioItem.md +106 -0
  135. package/dist/reference/sdk-api/ui/dropdown-menu/DropdownMenuSeparator.md +100 -0
  136. package/dist/reference/sdk-api/ui/dropdown-menu/DropdownMenuShortcut.md +100 -0
  137. package/dist/reference/sdk-api/ui/dropdown-menu/DropdownMenuSub.md +58 -0
  138. package/dist/reference/sdk-api/ui/dropdown-menu/DropdownMenuSubContent.md +100 -0
  139. package/dist/reference/sdk-api/ui/dropdown-menu/DropdownMenuSubTrigger.md +106 -0
  140. package/dist/reference/sdk-api/ui/dropdown-menu/DropdownMenuTrigger.md +119 -0
  141. package/dist/reference/sdk-api/ui/dropdown-menu/index.md +23 -0
  142. package/dist/reference/sdk-api/ui/empty/Empty.md +100 -0
  143. package/dist/reference/sdk-api/ui/empty/EmptyContent.md +100 -0
  144. package/dist/reference/sdk-api/ui/empty/EmptyDescription.md +100 -0
  145. package/dist/reference/sdk-api/ui/empty/EmptyHeader.md +100 -0
  146. package/dist/reference/sdk-api/ui/empty/EmptyMedia.md +106 -0
  147. package/dist/reference/sdk-api/ui/empty/EmptyTitle.md +100 -0
  148. package/dist/reference/sdk-api/ui/empty/index.md +14 -0
  149. package/dist/reference/sdk-api/ui/field/Field.md +106 -0
  150. package/dist/reference/sdk-api/ui/field/FieldContent.md +100 -0
  151. package/dist/reference/sdk-api/ui/field/FieldDescription.md +100 -0
  152. package/dist/reference/sdk-api/ui/field/FieldError.md +112 -0
  153. package/dist/reference/sdk-api/ui/field/FieldGroup.md +100 -0
  154. package/dist/reference/sdk-api/ui/field/FieldLabel.md +85 -0
  155. package/dist/reference/sdk-api/ui/field/FieldLegend.md +106 -0
  156. package/dist/reference/sdk-api/ui/field/FieldSeparator.md +105 -0
  157. package/dist/reference/sdk-api/ui/field/FieldSet.md +100 -0
  158. package/dist/reference/sdk-api/ui/field/FieldTitle.md +100 -0
  159. package/dist/reference/sdk-api/ui/field/index.md +18 -0
  160. package/dist/reference/sdk-api/ui/helpers/collectDataIconState.md +66 -0
  161. package/dist/reference/sdk-api/ui/helpers/index.md +9 -0
  162. package/dist/reference/sdk-api/ui/index.md +57 -0
  163. package/dist/reference/sdk-api/ui/input/Input.md +141 -0
  164. package/dist/reference/sdk-api/ui/input/index.md +9 -0
  165. package/dist/reference/sdk-api/ui/input-group/InputGroup.md +100 -0
  166. package/dist/reference/sdk-api/ui/input-group/InputGroupAddon.md +109 -0
  167. package/dist/reference/sdk-api/ui/input-group/InputGroupButton.md +220 -0
  168. package/dist/reference/sdk-api/ui/input-group/InputGroupInput.md +135 -0
  169. package/dist/reference/sdk-api/ui/input-group/InputGroupText.md +100 -0
  170. package/dist/reference/sdk-api/ui/input-group/InputGroupTextarea.md +126 -0
  171. package/dist/reference/sdk-api/ui/input-group/index.md +14 -0
  172. package/dist/reference/sdk-api/ui/input-otp/InputOTP.md +111 -0
  173. package/dist/reference/sdk-api/ui/input-otp/InputOTPGroup.md +100 -0
  174. package/dist/reference/sdk-api/ui/input-otp/InputOTPSeparator.md +100 -0
  175. package/dist/reference/sdk-api/ui/input-otp/InputOTPSlot.md +107 -0
  176. package/dist/reference/sdk-api/ui/input-otp/index.md +12 -0
  177. package/dist/reference/sdk-api/ui/item/Item.md +115 -0
  178. package/dist/reference/sdk-api/ui/item/ItemActions.md +100 -0
  179. package/dist/reference/sdk-api/ui/item/ItemContent.md +100 -0
  180. package/dist/reference/sdk-api/ui/item/ItemDescription.md +100 -0
  181. package/dist/reference/sdk-api/ui/item/ItemFooter.md +100 -0
  182. package/dist/reference/sdk-api/ui/item/ItemGroup.md +100 -0
  183. package/dist/reference/sdk-api/ui/item/ItemHeader.md +100 -0
  184. package/dist/reference/sdk-api/ui/item/ItemMedia.md +106 -0
  185. package/dist/reference/sdk-api/ui/item/ItemSeparator.md +106 -0
  186. package/dist/reference/sdk-api/ui/item/ItemTitle.md +100 -0
  187. package/dist/reference/sdk-api/ui/item/index.md +18 -0
  188. package/dist/reference/sdk-api/ui/label/Label.md +85 -0
  189. package/dist/reference/sdk-api/ui/label/index.md +9 -0
  190. package/dist/reference/sdk-api/ui/menubar/Menubar.md +100 -0
  191. package/dist/reference/sdk-api/ui/menubar/MenubarCheckboxItem.md +111 -0
  192. package/dist/reference/sdk-api/ui/menubar/MenubarContent.md +108 -0
  193. package/dist/reference/sdk-api/ui/menubar/MenubarGroup.md +100 -0
  194. package/dist/reference/sdk-api/ui/menubar/MenubarItem.md +109 -0
  195. package/dist/reference/sdk-api/ui/menubar/MenubarLabel.md +106 -0
  196. package/dist/reference/sdk-api/ui/menubar/MenubarMenu.md +55 -0
  197. package/dist/reference/sdk-api/ui/menubar/MenubarPortal.md +55 -0
  198. package/dist/reference/sdk-api/ui/menubar/MenubarRadioGroup.md +108 -0
  199. package/dist/reference/sdk-api/ui/menubar/MenubarRadioItem.md +110 -0
  200. package/dist/reference/sdk-api/ui/menubar/MenubarSeparator.md +100 -0
  201. package/dist/reference/sdk-api/ui/menubar/MenubarShortcut.md +100 -0
  202. package/dist/reference/sdk-api/ui/menubar/MenubarSub.md +58 -0
  203. package/dist/reference/sdk-api/ui/menubar/MenubarSubContent.md +108 -0
  204. package/dist/reference/sdk-api/ui/menubar/MenubarSubTrigger.md +107 -0
  205. package/dist/reference/sdk-api/ui/menubar/MenubarTrigger.md +100 -0
  206. package/dist/reference/sdk-api/ui/menubar/index.md +24 -0
  207. package/dist/reference/sdk-api/ui/navigation-menu/NavigationMenu.md +100 -0
  208. package/dist/reference/sdk-api/ui/navigation-menu/NavigationMenuContent.md +106 -0
  209. package/dist/reference/sdk-api/ui/navigation-menu/NavigationMenuIndicator.md +100 -0
  210. package/dist/reference/sdk-api/ui/navigation-menu/NavigationMenuItem.md +106 -0
  211. package/dist/reference/sdk-api/ui/navigation-menu/NavigationMenuLink.md +106 -0
  212. package/dist/reference/sdk-api/ui/navigation-menu/NavigationMenuList.md +100 -0
  213. package/dist/reference/sdk-api/ui/navigation-menu/NavigationMenuPositioner.md +100 -0
  214. package/dist/reference/sdk-api/ui/navigation-menu/NavigationMenuTrigger.md +120 -0
  215. package/dist/reference/sdk-api/ui/navigation-menu/index.md +17 -0
  216. package/dist/reference/sdk-api/ui/navigation-menu/navigationMenuTriggerStyle.md +64 -0
  217. package/dist/reference/sdk-api/ui/pagination/Pagination.md +100 -0
  218. package/dist/reference/sdk-api/ui/pagination/PaginationContent.md +100 -0
  219. package/dist/reference/sdk-api/ui/pagination/PaginationEllipsis.md +100 -0
  220. package/dist/reference/sdk-api/ui/pagination/PaginationItem.md +100 -0
  221. package/dist/reference/sdk-api/ui/pagination/PaginationLink.md +107 -0
  222. package/dist/reference/sdk-api/ui/pagination/PaginationNext.md +121 -0
  223. package/dist/reference/sdk-api/ui/pagination/PaginationPrevious.md +121 -0
  224. package/dist/reference/sdk-api/ui/pagination/index.md +15 -0
  225. package/dist/reference/sdk-api/ui/popover/Popover.md +58 -0
  226. package/dist/reference/sdk-api/ui/popover/PopoverAnchor.md +100 -0
  227. package/dist/reference/sdk-api/ui/popover/PopoverContent.md +108 -0
  228. package/dist/reference/sdk-api/ui/popover/PopoverDescription.md +100 -0
  229. package/dist/reference/sdk-api/ui/popover/PopoverHeader.md +100 -0
  230. package/dist/reference/sdk-api/ui/popover/PopoverTitle.md +100 -0
  231. package/dist/reference/sdk-api/ui/popover/PopoverTrigger.md +119 -0
  232. package/dist/reference/sdk-api/ui/popover/index.md +15 -0
  233. package/dist/reference/sdk-api/ui/portal/Portal.md +55 -0
  234. package/dist/reference/sdk-api/ui/portal/index.md +9 -0
  235. package/dist/reference/sdk-api/ui/progress/Progress.md +109 -0
  236. package/dist/reference/sdk-api/ui/progress/ProgressIndicator.md +107 -0
  237. package/dist/reference/sdk-api/ui/progress/ProgressLabel.md +100 -0
  238. package/dist/reference/sdk-api/ui/progress/ProgressTrack.md +100 -0
  239. package/dist/reference/sdk-api/ui/progress/ProgressValue.md +105 -0
  240. package/dist/reference/sdk-api/ui/progress/index.md +13 -0
  241. package/dist/reference/sdk-api/ui/radio-group/RadioGroup.md +108 -0
  242. package/dist/reference/sdk-api/ui/radio-group/RadioGroupItem.md +107 -0
  243. package/dist/reference/sdk-api/ui/radio-group/index.md +10 -0
  244. package/dist/reference/sdk-api/ui/resizable/ResizableHandle.md +107 -0
  245. package/dist/reference/sdk-api/ui/resizable/ResizablePanel.md +108 -0
  246. package/dist/reference/sdk-api/ui/resizable/ResizablePanelGroup.md +107 -0
  247. package/dist/reference/sdk-api/ui/resizable/index.md +11 -0
  248. package/dist/reference/sdk-api/ui/scroll-area/ScrollArea.md +159 -0
  249. package/dist/reference/sdk-api/ui/scroll-area/ScrollBar.md +106 -0
  250. package/dist/reference/sdk-api/ui/scroll-area/index.md +10 -0
  251. package/dist/reference/sdk-api/ui/select/Select.md +80 -0
  252. package/dist/reference/sdk-api/ui/select/SelectContent.md +106 -0
  253. package/dist/reference/sdk-api/ui/select/SelectGroup.md +100 -0
  254. package/dist/reference/sdk-api/ui/select/SelectItem.md +106 -0
  255. package/dist/reference/sdk-api/ui/select/SelectLabel.md +100 -0
  256. package/dist/reference/sdk-api/ui/select/SelectScrollDownButton.md +100 -0
  257. package/dist/reference/sdk-api/ui/select/SelectScrollUpButton.md +100 -0
  258. package/dist/reference/sdk-api/ui/select/SelectSeparator.md +100 -0
  259. package/dist/reference/sdk-api/ui/select/SelectTrigger.md +106 -0
  260. package/dist/reference/sdk-api/ui/select/SelectValue.md +106 -0
  261. package/dist/reference/sdk-api/ui/select/index.md +18 -0
  262. package/dist/reference/sdk-api/ui/separator/Separator.md +106 -0
  263. package/dist/reference/sdk-api/ui/separator/index.md +9 -0
  264. package/dist/reference/sdk-api/ui/sheet/Sheet.md +58 -0
  265. package/dist/reference/sdk-api/ui/sheet/SheetClose.md +100 -0
  266. package/dist/reference/sdk-api/ui/sheet/SheetContent.md +113 -0
  267. package/dist/reference/sdk-api/ui/sheet/SheetDescription.md +100 -0
  268. package/dist/reference/sdk-api/ui/sheet/SheetFooter.md +100 -0
  269. package/dist/reference/sdk-api/ui/sheet/SheetHeader.md +100 -0
  270. package/dist/reference/sdk-api/ui/sheet/SheetOverlay.md +100 -0
  271. package/dist/reference/sdk-api/ui/sheet/SheetPortal.md +55 -0
  272. package/dist/reference/sdk-api/ui/sheet/SheetTitle.md +100 -0
  273. package/dist/reference/sdk-api/ui/sheet/SheetTrigger.md +100 -0
  274. package/dist/reference/sdk-api/ui/sheet/index.md +18 -0
  275. package/dist/reference/sdk-api/ui/skeleton/Skeleton.md +100 -0
  276. package/dist/reference/sdk-api/ui/skeleton/index.md +9 -0
  277. package/dist/reference/sdk-api/ui/slider/Slider.md +116 -0
  278. package/dist/reference/sdk-api/ui/slider/index.md +9 -0
  279. package/dist/reference/sdk-api/ui/sonner/Toaster.md +43 -0
  280. package/dist/reference/sdk-api/ui/sonner/index.md +10 -0
  281. package/dist/reference/sdk-api/ui/sonner/toast.md +58 -0
  282. package/dist/reference/sdk-api/ui/spinner/Spinner.md +100 -0
  283. package/dist/reference/sdk-api/ui/spinner/index.md +9 -0
  284. package/dist/reference/sdk-api/ui/switch/Switch.md +110 -0
  285. package/dist/reference/sdk-api/ui/switch/index.md +9 -0
  286. package/dist/reference/sdk-api/ui/table/Table.md +100 -0
  287. package/dist/reference/sdk-api/ui/table/TableBody.md +100 -0
  288. package/dist/reference/sdk-api/ui/table/TableCaption.md +100 -0
  289. package/dist/reference/sdk-api/ui/table/TableCell.md +106 -0
  290. package/dist/reference/sdk-api/ui/table/TableFooter.md +100 -0
  291. package/dist/reference/sdk-api/ui/table/TableHead.md +106 -0
  292. package/dist/reference/sdk-api/ui/table/TableHeader.md +100 -0
  293. package/dist/reference/sdk-api/ui/table/TableRow.md +100 -0
  294. package/dist/reference/sdk-api/ui/table/index.md +16 -0
  295. package/dist/reference/sdk-api/ui/tabs/Tabs.md +109 -0
  296. package/dist/reference/sdk-api/ui/tabs/TabsContent.md +106 -0
  297. package/dist/reference/sdk-api/ui/tabs/TabsList.md +106 -0
  298. package/dist/reference/sdk-api/ui/tabs/TabsTrigger.md +107 -0
  299. package/dist/reference/sdk-api/ui/tabs/index.md +13 -0
  300. package/dist/reference/sdk-api/ui/tabs/tabsListVariants.md +70 -0
  301. package/dist/reference/sdk-api/ui/textarea/Textarea.md +126 -0
  302. package/dist/reference/sdk-api/ui/textarea/index.md +9 -0
  303. package/dist/reference/sdk-api/ui/toggle/Toggle.md +118 -0
  304. package/dist/reference/sdk-api/ui/toggle/index.md +10 -0
  305. package/dist/reference/sdk-api/ui/toggle/toggleVariants.md +71 -0
  306. package/dist/reference/sdk-api/ui/toggle-group/ToggleGroup.md +122 -0
  307. package/dist/reference/sdk-api/ui/toggle-group/ToggleGroupItem.md +116 -0
  308. package/dist/reference/sdk-api/ui/toggle-group/index.md +10 -0
  309. package/dist/reference/sdk-api.json +74470 -146
  310. package/dist/reference/sdk-api.md +62 -3
  311. package/dist/ui/accordion.d.ts +48 -0
  312. package/dist/ui/accordion.js +40 -0
  313. package/dist/ui/accordion.js.map +1 -1
  314. package/dist/ui/alert-dialog.d.ts +123 -0
  315. package/dist/ui/alert-dialog.js +114 -0
  316. package/dist/ui/alert-dialog.js.map +1 -1
  317. package/dist/ui/alert.d.ts +41 -0
  318. package/dist/ui/alert.js +41 -0
  319. package/dist/ui/alert.js.map +1 -1
  320. package/dist/ui/aspect-ratio.d.ts +11 -0
  321. package/dist/ui/aspect-ratio.js +10 -0
  322. package/dist/ui/aspect-ratio.js.map +1 -1
  323. package/dist/ui/avatar.d.ts +65 -0
  324. package/dist/ui/avatar.js +63 -0
  325. package/dist/ui/avatar.js.map +1 -1
  326. package/dist/ui/badge.d.ts +22 -0
  327. package/dist/ui/badge.js +22 -0
  328. package/dist/ui/badge.js.map +1 -1
  329. package/dist/ui/button-group.d.ts +45 -0
  330. package/dist/ui/button-group.js +43 -0
  331. package/dist/ui/button-group.js.map +1 -1
  332. package/dist/ui/button.d.ts +52 -0
  333. package/dist/ui/button.js +30 -0
  334. package/dist/ui/button.js.map +1 -1
  335. package/dist/ui/calendar.d.ts +44 -0
  336. package/dist/ui/calendar.js +19 -0
  337. package/dist/ui/calendar.js.map +1 -1
  338. package/dist/ui/card.d.ts +71 -0
  339. package/dist/ui/card.js +70 -0
  340. package/dist/ui/card.js.map +1 -1
  341. package/dist/ui/carousel.d.ts +71 -0
  342. package/dist/ui/carousel.js +66 -0
  343. package/dist/ui/carousel.js.map +1 -1
  344. package/dist/ui/checkbox.d.ts +14 -0
  345. package/dist/ui/checkbox.js +10 -0
  346. package/dist/ui/checkbox.js.map +1 -1
  347. package/dist/ui/collapsible.d.ts +37 -0
  348. package/dist/ui/collapsible.js +30 -0
  349. package/dist/ui/collapsible.js.map +1 -1
  350. package/dist/ui/combobox.d.ts +190 -0
  351. package/dist/ui/combobox.js +167 -0
  352. package/dist/ui/combobox.js.map +1 -1
  353. package/dist/ui/dialog.d.ts +109 -0
  354. package/dist/ui/dialog.js +100 -0
  355. package/dist/ui/dialog.js.map +1 -1
  356. package/dist/ui/drawer.d.ts +106 -0
  357. package/dist/ui/drawer.js +100 -0
  358. package/dist/ui/drawer.js.map +1 -1
  359. package/dist/ui/dropdown-menu.d.ts +171 -0
  360. package/dist/ui/dropdown-menu.js +150 -0
  361. package/dist/ui/dropdown-menu.js.map +1 -1
  362. package/dist/ui/empty.d.ts +61 -0
  363. package/dist/ui/empty.js +61 -0
  364. package/dist/ui/empty.js.map +1 -1
  365. package/dist/ui/field.d.ts +105 -0
  366. package/dist/ui/field.js +101 -0
  367. package/dist/ui/field.js.map +1 -1
  368. package/dist/ui/helpers.d.ts +11 -0
  369. package/dist/ui/helpers.js +11 -0
  370. package/dist/ui/helpers.js.map +1 -1
  371. package/dist/ui/input-group.d.ts +65 -0
  372. package/dist/ui/input-group.js +65 -0
  373. package/dist/ui/input-group.js.map +1 -1
  374. package/dist/ui/input-otp.d.ts +48 -0
  375. package/dist/ui/input-otp.js +40 -0
  376. package/dist/ui/input-otp.js.map +1 -1
  377. package/dist/ui/input.d.ts +24 -2
  378. package/dist/ui/input.js +20 -0
  379. package/dist/ui/input.js.map +1 -1
  380. package/dist/ui/item.d.ts +103 -0
  381. package/dist/ui/item.js +103 -0
  382. package/dist/ui/item.js.map +1 -1
  383. package/dist/ui/label.d.ts +10 -0
  384. package/dist/ui/label.js +10 -0
  385. package/dist/ui/label.js.map +1 -1
  386. package/dist/ui/menubar.d.ts +193 -0
  387. package/dist/ui/menubar.js +160 -0
  388. package/dist/ui/menubar.js.map +1 -1
  389. package/dist/ui/navigation-menu.d.ts +98 -0
  390. package/dist/ui/navigation-menu.js +90 -0
  391. package/dist/ui/navigation-menu.js.map +1 -1
  392. package/dist/ui/pagination.d.ts +76 -0
  393. package/dist/ui/pagination.js +73 -0
  394. package/dist/ui/pagination.js.map +1 -1
  395. package/dist/ui/popover.d.ts +81 -0
  396. package/dist/ui/popover.js +70 -0
  397. package/dist/ui/popover.js.map +1 -1
  398. package/dist/ui/portal.d.ts +11 -0
  399. package/dist/ui/portal.js +10 -0
  400. package/dist/ui/portal.js.map +1 -1
  401. package/dist/ui/progress.d.ts +53 -26
  402. package/dist/ui/progress.js +50 -26
  403. package/dist/ui/progress.js.map +1 -1
  404. package/dist/ui/radio-group.d.ts +25 -0
  405. package/dist/ui/radio-group.js +20 -0
  406. package/dist/ui/radio-group.js.map +1 -1
  407. package/dist/ui/resizable.d.ts +37 -0
  408. package/dist/ui/resizable.js +30 -0
  409. package/dist/ui/resizable.js.map +1 -1
  410. package/dist/ui/scroll-area.d.ts +22 -0
  411. package/dist/ui/scroll-area.js +21 -0
  412. package/dist/ui/scroll-area.js.map +1 -1
  413. package/dist/ui/select.d.ts +122 -0
  414. package/dist/ui/select.js +108 -0
  415. package/dist/ui/select.js.map +1 -1
  416. package/dist/ui/separator.d.ts +11 -0
  417. package/dist/ui/separator.js +10 -0
  418. package/dist/ui/separator.js.map +1 -1
  419. package/dist/ui/sheet.d.ts +107 -0
  420. package/dist/ui/sheet.js +101 -0
  421. package/dist/ui/sheet.js.map +1 -1
  422. package/dist/ui/skeleton.d.ts +10 -0
  423. package/dist/ui/skeleton.js +10 -0
  424. package/dist/ui/skeleton.js.map +1 -1
  425. package/dist/ui/slider.d.ts +21 -0
  426. package/dist/ui/slider.js +14 -0
  427. package/dist/ui/slider.js.map +1 -1
  428. package/dist/ui/sonner.d.ts +23 -0
  429. package/dist/ui/sonner.js +21 -0
  430. package/dist/ui/sonner.js.map +1 -1
  431. package/dist/ui/spinner.d.ts +10 -0
  432. package/dist/ui/spinner.js +10 -0
  433. package/dist/ui/spinner.js.map +1 -1
  434. package/dist/ui/switch.d.ts +15 -0
  435. package/dist/ui/switch.js +10 -0
  436. package/dist/ui/switch.js.map +1 -1
  437. package/dist/ui/table.d.ts +81 -0
  438. package/dist/ui/table.js +80 -0
  439. package/dist/ui/table.js.map +1 -1
  440. package/dist/ui/tabs.d.ts +59 -0
  441. package/dist/ui/tabs.js +51 -0
  442. package/dist/ui/tabs.js.map +1 -1
  443. package/dist/ui/textarea.d.ts +13 -0
  444. package/dist/ui/textarea.js +13 -0
  445. package/dist/ui/textarea.js.map +1 -1
  446. package/dist/ui/toggle-group.d.ts +34 -0
  447. package/dist/ui/toggle-group.js +24 -0
  448. package/dist/ui/toggle-group.js.map +1 -1
  449. package/dist/ui/toggle.d.ts +28 -0
  450. package/dist/ui/toggle.js +24 -0
  451. package/dist/ui/toggle.js.map +1 -1
  452. package/package.json +4 -2
  453. package/release-provenance.json +15 -0
  454. package/src/adapters/interest-card/eslint/eslint-plugin-custom-navigation.mjs +2 -0
  455. package/src/adapters/interest-card/eslint/taro.mjs +21 -0
  456. package/src/adapters/interest-card/runtime/microapp.ts +11 -0
  457. package/src/adapters/interest-card/types/taro.d.ts +28 -0
  458. package/src/build/config-overrides.ts +39 -0
  459. package/src/build/index.ts +5 -0
  460. package/src/build/plugins/app-config.ts +47 -0
  461. package/src/build/plugins/depend-card/analyze.ts +122 -0
  462. package/src/build/plugins/depend-card/source.ts +97 -0
  463. package/src/build/plugins/vite-depend-card.ts +168 -0
  464. package/src/build/plugins/vite-image-asset-import.ts +178 -0
  465. package/src/build/plugins/vite-inline-json.ts +149 -0
  466. package/src/build/plugins/vite-taro-source-location.ts +224 -0
  467. package/src/build/plugins/vite-tt-components-entry.ts +33 -0
  468. package/src/build/taro.ts +830 -0
  469. package/src/components/miniapp-open-card.ts +94 -0
  470. package/src/components/native-miniapp-open-card.ts +7 -0
  471. package/src/eslint/eslint-plugin-custom-navigation.mjs +290 -0
  472. package/src/eslint/eslint-plugin-microapp-pages.mjs +659 -0
  473. package/src/eslint/server.mjs +69 -0
  474. package/src/eslint/taro.mjs +587 -0
  475. package/src/index.ts +2 -0
  476. package/src/internal/runtime/douyin-open-button.d.ts +29 -0
  477. package/src/internal/runtime/iframe-auth/identity.ts +236 -0
  478. package/src/internal/runtime/iframe-auth/index.ts +2 -0
  479. package/src/internal/runtime/iframe-auth/sync.ts +37 -0
  480. package/src/internal/vendor-modules.d.ts +8 -0
  481. package/src/lib/measure.ts +115 -0
  482. package/src/lib/platform.ts +11 -0
  483. package/src/lib/utils.ts +6 -0
  484. package/src/runtime/client.ts +246 -0
  485. package/src/runtime/default-client.ts +26 -0
  486. package/src/runtime/default-iframe-auth.ts +13 -0
  487. package/src/runtime/douyin-container-request.ts +367 -0
  488. package/src/runtime/douyin-login-request.ts +514 -0
  489. package/src/runtime/globals.d.ts +342 -0
  490. package/src/runtime/index.ts +4 -0
  491. package/src/runtime/network-url.ts +63 -0
  492. package/src/ui/accordion.tsx +226 -0
  493. package/src/ui/alert-dialog.tsx +407 -0
  494. package/src/ui/alert.tsx +149 -0
  495. package/src/ui/aspect-ratio.tsx +37 -0
  496. package/src/ui/avatar.tsx +238 -0
  497. package/src/ui/badge.tsx +77 -0
  498. package/src/ui/button-group.tsx +173 -0
  499. package/src/ui/button.tsx +215 -0
  500. package/src/ui/calendar.tsx +353 -0
  501. package/src/ui/card.tsx +217 -0
  502. package/src/ui/carousel.tsx +259 -0
  503. package/src/ui/checkbox.tsx +62 -0
  504. package/src/ui/collapsible.tsx +148 -0
  505. package/src/ui/combobox.tsx +650 -0
  506. package/src/ui/dialog.tsx +290 -0
  507. package/src/ui/drawer.tsx +272 -0
  508. package/src/ui/dropdown-menu.tsx +547 -0
  509. package/src/ui/empty.tsx +166 -0
  510. package/src/ui/field.tsx +427 -0
  511. package/src/ui/helpers.tsx +39 -0
  512. package/src/ui/index.ts +47 -0
  513. package/src/ui/input-group.tsx +320 -0
  514. package/src/ui/input-otp.tsx +189 -0
  515. package/src/ui/input.tsx +60 -0
  516. package/src/ui/item.tsx +338 -0
  517. package/src/ui/label.tsx +31 -0
  518. package/src/ui/menubar.tsx +835 -0
  519. package/src/ui/navigation-menu.tsx +341 -0
  520. package/src/ui/pagination.tsx +195 -0
  521. package/src/ui/popover.tsx +363 -0
  522. package/src/ui/portal.tsx +31 -0
  523. package/src/ui/progress.tsx +182 -0
  524. package/src/ui/radio-group.tsx +111 -0
  525. package/src/ui/resizable.tsx +410 -0
  526. package/src/ui/scroll-area.tsx +102 -0
  527. package/src/ui/select.tsx +471 -0
  528. package/src/ui/separator.tsx +37 -0
  529. package/src/ui/sheet.tsx +289 -0
  530. package/src/ui/skeleton.tsx +25 -0
  531. package/src/ui/slider.tsx +176 -0
  532. package/src/ui/sonner.tsx +40 -0
  533. package/src/ui/spinner.tsx +23 -0
  534. package/src/ui/switch.tsx +94 -0
  535. package/src/ui/table.tsx +240 -0
  536. package/src/ui/tabs.tsx +233 -0
  537. package/src/ui/tailwind.css +2 -0
  538. package/src/ui/textarea.tsx +49 -0
  539. package/src/ui/theme.css +234 -0
  540. package/src/ui/toggle-group.tsx +215 -0
  541. package/src/ui/toggle.tsx +113 -0
@@ -0,0 +1,320 @@
1
+ import * as React from "react"
2
+ import { Input as TaroInput, Textarea as TaroTextarea, View, type ViewProps } from "@tarojs/components"
3
+ import { cva, type VariantProps } from "class-variance-authority"
4
+
5
+ import { cn } from "../lib/utils"
6
+ import { Button } from "./button"
7
+
8
+ type InputGroupAlign = "inline-start" | "inline-end" | "block-start" | "block-end"
9
+
10
+ type InputGroupState = {
11
+ disabled: boolean
12
+ invalid: boolean
13
+ hasInlineStartAddon: boolean
14
+ hasInlineEndAddon: boolean
15
+ hasBlockStartAddon: boolean
16
+ hasBlockEndAddon: boolean
17
+ isMultiline: boolean
18
+ }
19
+
20
+ const inputGroupContext = React.createContext<InputGroupState>({
21
+ disabled: false,
22
+ invalid: false,
23
+ hasInlineStartAddon: false,
24
+ hasInlineEndAddon: false,
25
+ hasBlockStartAddon: false,
26
+ hasBlockEndAddon: false,
27
+ isMultiline: false,
28
+ })
29
+
30
+ function isAriaStateEnabled(value: unknown) {
31
+ return value !== undefined && value !== false && value !== "false"
32
+ }
33
+
34
+ function collectInputGroupState(children: React.ReactNode): InputGroupState {
35
+ const state: InputGroupState = {
36
+ disabled: false,
37
+ invalid: false,
38
+ hasInlineStartAddon: false,
39
+ hasInlineEndAddon: false,
40
+ hasBlockStartAddon: false,
41
+ hasBlockEndAddon: false,
42
+ isMultiline: false,
43
+ }
44
+
45
+ const visit = (node: React.ReactNode) => {
46
+ React.Children.forEach(node, (child) => {
47
+ if (!React.isValidElement(child)) return
48
+
49
+ const props = child.props as {
50
+ align?: InputGroupAlign
51
+ disabled?: boolean
52
+ children?: React.ReactNode
53
+ "aria-invalid"?: boolean | "true" | "false"
54
+ }
55
+
56
+ if (props.disabled) state.disabled = true
57
+ if (isAriaStateEnabled(props["aria-invalid"])) state.invalid = true
58
+
59
+ if (child.type === InputGroupAddon) {
60
+ switch (props.align) {
61
+ case "inline-end":
62
+ state.hasInlineEndAddon = true
63
+ break
64
+ case "block-start":
65
+ state.hasBlockStartAddon = true
66
+ break
67
+ case "block-end":
68
+ state.hasBlockEndAddon = true
69
+ break
70
+ case "inline-start":
71
+ default:
72
+ state.hasInlineStartAddon = true
73
+ break
74
+ }
75
+ }
76
+
77
+ if (child.type === InputGroupTextarea) {
78
+ state.isMultiline = true
79
+ }
80
+
81
+ if (props.children) {
82
+ visit(props.children)
83
+ }
84
+ })
85
+ }
86
+
87
+ visit(children)
88
+
89
+ return state
90
+ }
91
+
92
+ /**
93
+ * @desc 输入组合组件。
94
+ * @param {Parameters<typeof InputGroup>[0]} props 组件属性;自有字段的用途及默认行为见下表,继承属性另列。
95
+ * @return {ReturnType<typeof InputGroup>} 组件渲染结果;类型见返回值契约。
96
+ * @example
97
+ * ```tsx
98
+ * import { InputGroup } from '@open-dy/vibecoding-sdk-taro/ui/input-group'
99
+ * <InputGroup />
100
+ * ```
101
+ */
102
+ function InputGroup({ className, children, ...props }: ViewProps) {
103
+ const groupState = React.useMemo(
104
+ () => collectInputGroupState(children),
105
+ [children]
106
+ )
107
+ const isVertical =
108
+ groupState.hasBlockStartAddon ||
109
+ groupState.hasBlockEndAddon ||
110
+ groupState.isMultiline
111
+
112
+ return (
113
+ <inputGroupContext.Provider value={groupState}>
114
+ <View
115
+ className={cn(
116
+ "relative flex w-full min-w-0 rounded-lg border border-input bg-transparent transition-colors outline-none focus-within:border-ring focus-within:ring-3 focus-within:ring-ring/50 dark:bg-input/30",
117
+ isVertical ? "h-auto flex-col" : "h-8 items-center",
118
+ groupState.disabled &&
119
+ "bg-input/50 opacity-50 dark:bg-input/80",
120
+ groupState.invalid &&
121
+ "border-destructive ring-3 ring-destructive/20 dark:border-destructive/50 dark:ring-destructive/40",
122
+ className
123
+ )}
124
+ {...props}
125
+ >
126
+ {children}
127
+ </View>
128
+ </inputGroupContext.Provider>
129
+ )
130
+ }
131
+
132
+ const inputGroupAddonVariants = cva(
133
+ "flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4",
134
+ {
135
+ variants: {
136
+ align: {
137
+ "inline-start": "order-first pl-2",
138
+ "inline-end": "order-last pr-2",
139
+ "block-start": "order-first w-full justify-start px-2.5 pt-2 pb-2",
140
+ "block-end": "order-last w-full justify-start px-2.5 pt-2 pb-2",
141
+ },
142
+ },
143
+ defaultVariants: {
144
+ align: "inline-start",
145
+ },
146
+ }
147
+ )
148
+
149
+ /**
150
+ * @desc 输入组合附加内容。
151
+ * @param {Parameters<typeof InputGroupAddon>[0]} props 组件属性;自有字段的用途及默认行为见下表,继承属性另列。
152
+ * @param {Parameters<typeof InputGroupAddon>[0]["align"]} props.align 附加区位置,默认 inline-start(行首),inline-end 行尾;block-start 顶部、block-end 底部,这两项让 InputGroup 使用纵向布局。
153
+ * @return {ReturnType<typeof InputGroupAddon>} 组件渲染结果;类型见返回值契约。
154
+ * @example
155
+ * ```tsx
156
+ * import { InputGroup, InputGroupAddon } from '@open-dy/vibecoding-sdk-taro/ui/input-group'
157
+ * <InputGroup><InputGroupAddon /></InputGroup>
158
+ * ```
159
+ */
160
+ function InputGroupAddon({
161
+ className,
162
+ align = "inline-start",
163
+ ...props
164
+ }: ViewProps & VariantProps<typeof inputGroupAddonVariants>) {
165
+ const groupState = React.useContext(inputGroupContext)
166
+
167
+ return (
168
+ <View
169
+ className={cn(
170
+ inputGroupAddonVariants({ align }),
171
+ groupState.disabled && "opacity-50",
172
+ className
173
+ )}
174
+ {...props}
175
+ />
176
+ )
177
+ }
178
+
179
+ const inputGroupButtonVariants = cva(
180
+ "flex items-center gap-2 text-sm shadow-none",
181
+ {
182
+ variants: {
183
+ size: {
184
+ xs: "h-6 gap-1 rounded-[calc(var(--radius)-3px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5",
185
+ sm: "",
186
+ "icon-xs":
187
+ "size-6 rounded-[calc(var(--radius)-3px)] p-0 has-[>svg]:p-0",
188
+ "icon-sm": "size-8 p-0 has-[>svg]:p-0",
189
+ },
190
+ },
191
+ defaultVariants: {
192
+ size: "xs",
193
+ },
194
+ }
195
+ )
196
+
197
+ /**
198
+ * @desc 输入组合操作按钮。
199
+ * @param {Parameters<typeof InputGroupButton>[0]} props 组件属性;自有字段的用途及默认行为见下表,继承属性另列。
200
+ * @param {Parameters<typeof InputGroupButton>[0]["variant"]} props.variant 按钮外观,默认 ghost;其余变体同 Button.variant。
201
+ * @param {Parameters<typeof InputGroupButton>[0]["size"]} props.size 输入组按钮尺寸,默认 xs;xs 为 h-6,sm 不额外缩小底层默认按钮,icon-xs 为 size-6,icon-sm 为 size-8。
202
+ * @return {ReturnType<typeof InputGroupButton>} 组件渲染结果;类型见返回值契约。
203
+ * @example
204
+ * ```tsx
205
+ * import { InputGroup, InputGroupButton } from '@open-dy/vibecoding-sdk-taro/ui/input-group'
206
+ * <InputGroup><InputGroupButton /></InputGroup>
207
+ * ```
208
+ */
209
+ function InputGroupButton({
210
+ className,
211
+ variant = "ghost",
212
+ size = "xs",
213
+ ...props
214
+ }: Omit<React.ComponentProps<typeof Button>, "size"> &
215
+ VariantProps<typeof inputGroupButtonVariants>) {
216
+ return (
217
+ <Button
218
+ variant={variant}
219
+ className={cn(inputGroupButtonVariants({ size }), className)}
220
+ {...props}
221
+ />
222
+ )
223
+ }
224
+
225
+ /**
226
+ * @desc 输入组合文本区域。
227
+ * @param {Parameters<typeof InputGroupText>[0]} props 组件属性;自有字段的用途及默认行为见下表,继承属性另列。
228
+ * @return {ReturnType<typeof InputGroupText>} 组件渲染结果;类型见返回值契约。
229
+ * @example
230
+ * ```tsx
231
+ * import { InputGroup, InputGroupText } from '@open-dy/vibecoding-sdk-taro/ui/input-group'
232
+ * <InputGroup><InputGroupText /></InputGroup>
233
+ * ```
234
+ */
235
+ function InputGroupText({ className, ...props }: ViewProps) {
236
+ return (
237
+ <View
238
+ className={cn(
239
+ "flex items-center gap-2 text-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",
240
+ className
241
+ )}
242
+ {...props}
243
+ />
244
+ )
245
+ }
246
+
247
+ /**
248
+ * @desc 输入组合输入区域。
249
+ * @param {Parameters<typeof InputGroupInput>[0]} props 组件属性;自有字段的用途及默认行为见下表,继承属性另列。
250
+ * @param {Parameters<typeof InputGroupInput>[0]["className"]} props.className 附加到内部原生 Input 的类名;外层布局和横向内边距由 InputGroup 组合状态控制。
251
+ * @return {ReturnType<typeof InputGroupInput>} 组件渲染结果;类型见返回值契约。
252
+ * @example
253
+ * ```tsx
254
+ * import { InputGroup, InputGroupInput } from '@open-dy/vibecoding-sdk-taro/ui/input-group'
255
+ * <InputGroup><InputGroupInput /></InputGroup>
256
+ * ```
257
+ */
258
+ function InputGroupInput({
259
+ className,
260
+ ...props
261
+ }: React.ComponentPropsWithoutRef<typeof TaroInput>) {
262
+ const groupState = React.useContext(inputGroupContext)
263
+ const horizontalPadding =
264
+ groupState.hasInlineStartAddon || groupState.hasInlineEndAddon
265
+ ? "px-1.5"
266
+ : "px-2.5"
267
+
268
+ return (
269
+ <View
270
+ className={cn(
271
+ "flex min-w-0 flex-1 items-center py-2",
272
+ groupState.isMultiline ? "w-full" : "h-full",
273
+ horizontalPadding
274
+ )}
275
+ >
276
+ <TaroInput
277
+ className={cn(
278
+ "w-full flex-1 bg-transparent text-base text-foreground placeholder:text-muted-foreground outline-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
279
+ className
280
+ )}
281
+ {...props}
282
+ />
283
+ </View>
284
+ )
285
+ }
286
+
287
+ /**
288
+ * @desc 输入组合多行输入区域。
289
+ * @param {Parameters<typeof InputGroupTextarea>[0]} props 组件属性;自有字段的用途及默认行为见下表,继承属性另列。
290
+ * @param {Parameters<typeof InputGroupTextarea>[0]["className"]} props.className 附加到原生 Textarea 的类名,用于覆写输入区尺寸和文字样式。
291
+ * @return {ReturnType<typeof InputGroupTextarea>} 组件渲染结果;类型见返回值契约。
292
+ * @example
293
+ * ```tsx
294
+ * import { InputGroup, InputGroupTextarea } from '@open-dy/vibecoding-sdk-taro/ui/input-group'
295
+ * <InputGroup><InputGroupTextarea /></InputGroup>
296
+ * ```
297
+ */
298
+ function InputGroupTextarea({
299
+ className,
300
+ ...props
301
+ }: React.ComponentPropsWithoutRef<typeof TaroTextarea>) {
302
+ return (
303
+ <TaroTextarea
304
+ className={cn(
305
+ "min-h-16 w-full flex-1 resize-none border-0 bg-transparent px-2.5 py-2 text-sm text-foreground outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed",
306
+ className
307
+ )}
308
+ {...props}
309
+ />
310
+ )
311
+ }
312
+
313
+ export {
314
+ InputGroup,
315
+ InputGroupAddon,
316
+ InputGroupButton,
317
+ InputGroupText,
318
+ InputGroupInput,
319
+ InputGroupTextarea,
320
+ }
@@ -0,0 +1,189 @@
1
+ import * as React from "react"
2
+ import { View, Input as TaroInput, type ViewProps } from "@tarojs/components"
3
+
4
+ import { cn } from "../lib/utils"
5
+ import { Minus } from "@open-dy/lucide-taro"
6
+
7
+ type InputOTPProps = ViewProps & {
8
+ /** @desc 必填最大字符数,应为正整数;原生数字输入按此值截断,需自行渲染对应数量的 InputOTPSlot。 */
9
+ maxLength: number
10
+ /** @desc 受控验证码字符串;传入后以该值为准,需同步 onChange。受控值本身不自动截断,请保持长度不超过 maxLength。 */
11
+ value?: string
12
+ /** @desc 非受控初始验证码,默认空字符串;初始化时截断到 maxLength,传入 value 后不生效。 */
13
+ defaultValue?: string
14
+ /** @desc 原生输入改变时调用,收到截断到 maxLength 的字符串;不是 Taro 事件对象,受控模式需同步 value。 */
15
+ onChange?: (value: string) => void
16
+ /** @desc 是否禁用原生输入,默认可输入;同时降低容器透明度。 */
17
+ disabled?: boolean
18
+ /** @desc 是否请求原生输入聚焦;省略时不主动聚焦,实际行为由目标平台决定。 */
19
+ autoFocus?: boolean
20
+ }
21
+
22
+ /**
23
+ * @desc 验证码输入组件。
24
+ * @param {Parameters<typeof InputOTP>[0]} props 组件属性;自有字段的用途及默认行为见下表,继承属性另列。
25
+ * @return {ReturnType<typeof InputOTP>} 组件渲染结果;类型见返回值契约。
26
+ * @example
27
+ * ```tsx
28
+ * import { InputOTP } from '@open-dy/vibecoding-sdk-taro/ui/input-otp'
29
+ * <InputOTP maxLength={6} />
30
+ * ```
31
+ */
32
+ function InputOTP({
33
+ className,
34
+ maxLength,
35
+ value: valueProp,
36
+ defaultValue,
37
+ onChange,
38
+ disabled,
39
+ autoFocus,
40
+ children,
41
+ ...props
42
+ }: InputOTPProps) {
43
+ const [internal, setInternal] = React.useState(() =>
44
+ (defaultValue ?? "").slice(0, maxLength)
45
+ )
46
+ const [isFocused, setIsFocused] = React.useState(false)
47
+ const controlled = valueProp !== undefined
48
+ const value = controlled ? valueProp : internal
49
+
50
+ const handleInput = (e: { detail: { value: string } }) => {
51
+ const newValue = e.detail.value.slice(0, maxLength)
52
+ if (!controlled) setInternal(newValue)
53
+ onChange?.(newValue)
54
+ }
55
+
56
+ return (
57
+ <View
58
+ data-slot="input-otp"
59
+ className={cn("relative flex items-center", disabled && "opacity-50", className)}
60
+ {...props}
61
+ >
62
+ <TaroInput
63
+ className="z-10"
64
+ style={{
65
+ position: "absolute",
66
+ left: 0,
67
+ top: 0,
68
+ width: "100%",
69
+ height: "100%",
70
+ opacity: 0,
71
+ zIndex: 10,
72
+ backgroundColor: "transparent",
73
+ borderWidth: 0,
74
+ padding: 0,
75
+ margin: 0,
76
+ outline: "none",
77
+ color: "transparent",
78
+ caretColor: "transparent",
79
+ }}
80
+ type="number"
81
+ maxlength={maxLength}
82
+ value={value}
83
+ onInput={handleInput}
84
+ onFocus={() => setIsFocused(true)}
85
+ onBlur={() => setIsFocused(false)}
86
+ disabled={disabled}
87
+ focus={autoFocus}
88
+ />
89
+ <InputOTPContext.Provider value={{ value, maxLength, isFocused }}>
90
+ {children}
91
+ </InputOTPContext.Provider>
92
+ </View>
93
+ )
94
+ }
95
+
96
+ const InputOTPContext = React.createContext<{
97
+ value: string
98
+ maxLength: number
99
+ isFocused: boolean
100
+ }>({ value: "", maxLength: 6, isFocused: false })
101
+
102
+ /**
103
+ * @desc 验证码输入分组容器。
104
+ * @param {Parameters<typeof InputOTPGroup>[0]} props 组件属性;自有字段的用途及默认行为见下表,继承属性另列。
105
+ * @return {ReturnType<typeof InputOTPGroup>} 组件渲染结果;类型见返回值契约。
106
+ * @example
107
+ * ```tsx
108
+ * import { InputOTP, InputOTPGroup } from '@open-dy/vibecoding-sdk-taro/ui/input-otp'
109
+ * <InputOTP maxLength={6}><InputOTPGroup><InputOTPGroup /></InputOTPGroup></InputOTP>
110
+ * ```
111
+ */
112
+ function InputOTPGroup({ className, ...props }: ViewProps) {
113
+ return (
114
+ <View
115
+ data-slot="input-otp-group"
116
+ className={cn("flex items-center rounded-lg", className)}
117
+ {...props}
118
+ />
119
+ )
120
+ }
121
+
122
+ /**
123
+ * @desc 验证码输入单字符槽位。
124
+ * @param {Parameters<typeof InputOTPSlot>[0]} props 组件属性;自有字段的用途及默认行为见下表,继承属性另列。
125
+ * @return {ReturnType<typeof InputOTPSlot>} 组件渲染结果;类型见返回值契约。
126
+ * @example
127
+ * ```tsx
128
+ * import { InputOTP, InputOTPGroup, InputOTPSlot } from '@open-dy/vibecoding-sdk-taro/ui/input-otp'
129
+ * <InputOTP maxLength={6}><InputOTPGroup><InputOTPSlot index={0} /></InputOTPGroup></InputOTP>
130
+ * ```
131
+ */
132
+ function InputOTPSlot({
133
+ index,
134
+ className,
135
+ "aria-invalid": ariaInvalid,
136
+ ...props
137
+ }: ViewProps & {
138
+ /** @desc 必填字符位置,从 0 开始;应小于父 InputOTP.maxLength,显示对应字符,聚焦且位于末尾时显示输入光标。 */
139
+ index: number
140
+ /** @desc 是否显示此单元格的校验失败样式;true 或 "true" 表示失败,不执行验证码校验。 */
141
+ "aria-invalid"?: boolean | "true" | "false"
142
+ }) {
143
+ const { value, isFocused } = React.useContext(InputOTPContext)
144
+ const char = value[index] ?? ""
145
+ const isActive = isFocused && value.length === index
146
+
147
+ return (
148
+ <View
149
+ data-slot="input-otp-slot"
150
+ data-active={isActive || undefined}
151
+ aria-invalid={ariaInvalid}
152
+ className={cn(
153
+ "relative flex size-8 items-center justify-center border-y border-r border-input text-sm transition-all first:rounded-l-lg first:border-l last:rounded-r-lg aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",
154
+ isActive && "z-10 border-ring ring-3 ring-ring/50",
155
+ className
156
+ )}
157
+ {...props}
158
+ >
159
+ {char}
160
+ {isActive ? <View className="pointer-events-none absolute inset-0 flex items-center justify-center">
161
+ <View className="h-4 w-px animate-pulse bg-foreground" />
162
+ </View> : null}
163
+ </View>
164
+ )
165
+ }
166
+
167
+ /**
168
+ * @desc 验证码输入分隔线。
169
+ * @param {Parameters<typeof InputOTPSeparator>[0]} props 组件属性;自有字段的用途及默认行为见下表,继承属性另列。
170
+ * @return {ReturnType<typeof InputOTPSeparator>} 组件渲染结果;类型见返回值契约。
171
+ * @example
172
+ * ```tsx
173
+ * import { InputOTP, InputOTPGroup, InputOTPSeparator } from '@open-dy/vibecoding-sdk-taro/ui/input-otp'
174
+ * <InputOTP maxLength={6}><InputOTPGroup><InputOTPSeparator /></InputOTPGroup></InputOTP>
175
+ * ```
176
+ */
177
+ function InputOTPSeparator({ ...props }: ViewProps) {
178
+ return (
179
+ <View
180
+ data-slot="input-otp-separator"
181
+ className="flex items-center [&_svg:not([class*='size-'])]:size-4"
182
+ {...props}
183
+ >
184
+ <Minus />
185
+ </View>
186
+ )
187
+ }
188
+
189
+ export { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }
@@ -0,0 +1,60 @@
1
+ import { Input as TaroInput, View } from "@tarojs/components"
2
+
3
+ import { cn } from "../lib/utils"
4
+
5
+ type InputProps = React.ComponentPropsWithoutRef<typeof TaroInput> & {
6
+ /** @desc 校验失败的视觉状态;true 或 "true" 设置错误边框和光圈,默认无错误样式,不执行值校验。 */
7
+ "aria-invalid"?: boolean | "true" | "false"
8
+ }
9
+
10
+ /**
11
+ * @desc 带视觉容器的 Taro 输入框;用于普通小程序和兴趣卡落地页。
12
+ * @param {InputProps} props 输入属性;value、onInput 等传给原生输入框,className 和 style 作用于外层 View。
13
+ * @param {Parameters<typeof Input>[0]["className"]} props.className 外层 View 容器的附加类名,控制边框、尺寸和布局;不会传给内部原生 Input。
14
+ * @param {Parameters<typeof Input>[0]["style"]} props.style 外层 View 的内联样式;内部 Input 使用固定的透明背景和零内边距样式。
15
+ * @param {Parameters<typeof Input>[0]["value"]} props.value 原生输入值;在 onInput 中更新可构成受控输入,事件值位于 event.detail.value。省略时沿用 Taro Input 行为。
16
+ * @param {Parameters<typeof Input>[0]["onInput"]} props.onInput 原生 Input 输入事件,值位于 event.detail.value;与 InputOTP.onChange 接收字符串的协议不同。
17
+ * @param {Parameters<typeof Input>[0]["disabled"]} props.disabled 是否禁用原生 Input,默认 false;同时对外层添加透明度和 pointer-events-none。
18
+ * @param {Parameters<typeof Input>[0]["type"]} props.type 输入类型,直接传给原生 Taro Input;此组件不做转换,省略时由平台默认行为决定。
19
+ * @return {React.JSX.Element} 一个带边框、背景、圆角、横向内边距和原生输入框的 View。
20
+ * @remarks 默认容器使用 h-11、w-full、rounded-lg、border、bg-background、px-3。通过 className 覆写容器,不要在外层再加相同边框、背景或内边距;横向布局的外层 View 只负责 flex 和间距。className 不会直接改变内部原生输入框的 text-sm。
21
+ * @example
22
+ * ```tsx
23
+ * import { Input } from '@open-dy/vibecoding-sdk-taro/ui/input'
24
+ * import { View } from '@tarojs/components'
25
+ * export function TaskInput() {
26
+ * return <View className="flex gap-3"><Input placeholder="添加任务" className="flex-1 rounded-none border-4 border-black bg-white" /></View>
27
+ * }
28
+ * ```
29
+ */
30
+ function Input({
31
+ className,
32
+ type,
33
+ disabled = false,
34
+ "aria-invalid": ariaInvalid,
35
+ style,
36
+ ...props
37
+ }: InputProps) {
38
+ return (
39
+ <View
40
+ data-slot="input"
41
+ aria-invalid={ariaInvalid}
42
+ style={style}
43
+ className={cn(
44
+ "flex h-11 w-full min-w-0 items-center rounded-lg border border-input bg-background px-3 text-base transition-colors outline-none placeholder:text-muted-foreground focus-within:border-ring aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",
45
+ disabled && "pointer-events-none cursor-not-allowed opacity-50",
46
+ className
47
+ )}
48
+ >
49
+ <TaroInput
50
+ type={type}
51
+ disabled={disabled}
52
+ className="w-full flex-1 text-sm outline-none"
53
+ {...props}
54
+ style={{ backgroundColor: 'transparent', padding: 0, borderRadius: 0, height: 'auto' }}
55
+ />
56
+ </View>
57
+ )
58
+ }
59
+
60
+ export { Input }