@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,69 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { readFileSync } from 'node:fs';
3
+ import path from 'node:path';
4
+ import eslint from '@eslint/js';
5
+ import importPlugin from 'eslint-plugin-import';
6
+ import globals from 'globals';
7
+ import tseslint from 'typescript-eslint';
8
+
9
+ export function createMicroappServerEslintConfig(options = {}) {
10
+ const serverRoot = path.resolve(options.tsconfigRootDir ?? process.cwd());
11
+ const dependencyManifestFingerprint = createHash('sha256')
12
+ .update(readFileSync(path.resolve(serverRoot, '../package.json')))
13
+ .update('\0')
14
+ .update(readFileSync(path.resolve(serverRoot, 'package.json')))
15
+ .digest('hex');
16
+ const defaults = tseslint.config(
17
+ {
18
+ ignores: ['eslint.config.mjs'],
19
+ },
20
+ eslint.configs.recommended,
21
+ ...tseslint.configs.recommendedTypeChecked,
22
+ {
23
+ languageOptions: {
24
+ globals: {
25
+ ...globals.node,
26
+ ...globals.jest,
27
+ },
28
+ sourceType: 'commonjs',
29
+ parserOptions: {
30
+ projectService: true,
31
+ tsconfigRootDir: serverRoot,
32
+ },
33
+ },
34
+ },
35
+ {
36
+ settings: {
37
+ 'microapp/dependency-manifest-fingerprint': dependencyManifestFingerprint,
38
+ },
39
+ plugins: {
40
+ import: importPlugin,
41
+ },
42
+ rules: {
43
+ 'import/no-extraneous-dependencies': [
44
+ 'error',
45
+ {
46
+ includeTypes: true,
47
+ packageDir: serverRoot,
48
+ },
49
+ ],
50
+ '@typescript-eslint/no-explicit-any': 'off',
51
+ '@typescript-eslint/no-floating-promises': 'warn',
52
+ '@typescript-eslint/no-unsafe-argument': 'off',
53
+ '@typescript-eslint/no-unsafe-assignment': 'off',
54
+ '@typescript-eslint/no-unsafe-member-access': 'off',
55
+ '@typescript-eslint/no-unsafe-call': 'off',
56
+ '@typescript-eslint/no-unsafe-return': 'off',
57
+ '@typescript-eslint/no-unused-vars': 'off',
58
+ '@typescript-eslint/require-await': 'off',
59
+ '@typescript-eslint/no-redundant-type-constituents': 'off',
60
+ },
61
+ },
62
+ );
63
+ const overrides = options.overrides;
64
+ if (!overrides) return defaults;
65
+ if (typeof overrides === 'function') return overrides(defaults) ?? defaults;
66
+ return tseslint.config(...defaults, ...(Array.isArray(overrides) ? overrides : [overrides]));
67
+ }
68
+
69
+ export default createMicroappServerEslintConfig
@@ -0,0 +1,587 @@
1
+ import eslint from '@eslint/js';
2
+ import { fixupPluginRules } from '@eslint/compat';
3
+ import tseslint from 'typescript-eslint';
4
+ import reactPlugin from 'eslint-plugin-react';
5
+ import reactHooksPlugin from 'eslint-plugin-react-hooks';
6
+ import importPlugin from 'eslint-plugin-import';
7
+ import globals from 'globals';
8
+ import microappPages from './eslint-plugin-microapp-pages.mjs';
9
+ import customNavigation from './eslint-plugin-custom-navigation.mjs';
10
+
11
+ const REMOTE_CSS_IMPORT_PATTERN =
12
+ /@import\s+(?:url\(\s*['"]?((?:https?:)?\/\/[^'")\s]+)['"]?\s*\)|['"]((?:https?:)?\/\/[^'"\s]+)['"])/g;
13
+ const CSS_FONT_SIZE_DECLARATION_PATTERN =
14
+ /(?:^|[;{\s])font-size\s*:\s*([^;{}]+)/gi;
15
+
16
+ /**
17
+ * 检测项目选定的 Lucide Taro 包导入的图标是否显式传了 color 属性。
18
+ * 小程序端图标通过 base64 SVG + <Image /> 渲染,无法继承 currentColor 或 CSS text-* 颜色,
19
+ * 未传 color 时笔画默认为黑色。
20
+ */
21
+ function createLucideColorCheckPlugin(importSources = ['@open-dy/lucide-taro']) {
22
+ const sources = new Set(
23
+ (Array.isArray(importSources) ? importSources : [importSources])
24
+ .filter((source) => typeof source === 'string' && source.length > 0),
25
+ )
26
+ const label = [...sources].join(' / ') || '@open-dy/lucide-taro'
27
+
28
+ return {
29
+ rules: {
30
+ 'require-lucide-color': {
31
+ create(context) {
32
+ const lucideImports = new Set();
33
+
34
+ return {
35
+ ImportDeclaration(node) {
36
+ if (sources.has(node.source.value)) {
37
+ for (const specifier of node.specifiers) {
38
+ if (specifier.type === 'ImportSpecifier') {
39
+ lucideImports.add(specifier.local.name);
40
+ }
41
+ }
42
+ }
43
+ },
44
+ JSXOpeningElement(node) {
45
+ const name =
46
+ node.name.type === 'JSXIdentifier' ? node.name.name : null;
47
+ if (!name || !lucideImports.has(name)) return;
48
+
49
+ const hasColor = node.attributes.some(
50
+ attr =>
51
+ attr.type === 'JSXAttribute' &&
52
+ attr.name &&
53
+ attr.name.name === 'color'
54
+ );
55
+
56
+ if (!hasColor) {
57
+ context.report({
58
+ node,
59
+ message: `${label} 规范:<${name}> 缺少 color 属性。小程序端图标通过 <Image /> 渲染,无法继承父级颜色,未传 color 时笔画默认为黑色。请显式传入,如 color="#6366f1"。`,
60
+ });
61
+ }
62
+ },
63
+ };
64
+ },
65
+ },
66
+ },
67
+ }
68
+ }
69
+
70
+ const cssImportGuardPlugin = {
71
+ processors: {
72
+ css: {
73
+ preprocess(text, filename) {
74
+ const lines = text.replace(/\/\*[\s\S]*?\*\//g, comment => {
75
+ if (comment.includes('eslint-')) return comment;
76
+ return comment.replace(/[^\n]/g, ' ');
77
+ }).split('\n');
78
+ const virtualLines = lines.map(line => {
79
+ const externalImportCalls = [...line.matchAll(REMOTE_CSS_IMPORT_PATTERN)]
80
+ .map(match => {
81
+ const url = match[1] ?? match[2];
82
+
83
+ return `__cssExternalImport(${JSON.stringify(url)});`;
84
+ });
85
+
86
+ const arbitraryFontSizeCalls = [...line.matchAll(CSS_FONT_SIZE_DECLARATION_PATTERN)]
87
+ .map(match => match[1].trim())
88
+ .filter(isArbitraryFontSizeValue)
89
+ .map(value => `__cssArbitraryFontSize(${JSON.stringify(value)});`);
90
+
91
+ if (/eslint-(?:disable|enable)/.test(line)) {
92
+ return [
93
+ line.trim(),
94
+ ...externalImportCalls,
95
+ ...arbitraryFontSizeCalls,
96
+ ].join(' ');
97
+ }
98
+
99
+ return [
100
+ ...externalImportCalls,
101
+ ...arbitraryFontSizeCalls,
102
+ ].join(' ');
103
+ });
104
+
105
+ // Scope this guard to the SDK-based host app; OpenCard has its own CSS pipeline.
106
+ if (filename.replaceAll('\\', '/').endsWith('/src/app.css')) {
107
+ const css = lines.join('\n');
108
+ const imports = [...css.matchAll(/@import\s+(?:url\(\s*)?['"]([^'"]+)['"]/g)]
109
+ .map(match => match[1]);
110
+ const usesSdkTheme = imports.some(value => /^@[^/]+\/vibecoding-sdk-taro\/ui\/tailwind\.css$/.test(value));
111
+ const hasUtilities = imports.some(value => ['weapp-tailwindcss', 'tailwindcss', 'tailwindcss/utilities.css', 'weapp-tailwindcss/utilities.css'].includes(value))
112
+ || /@tailwind\s+utilities\s*;/.test(css);
113
+ if (usesSdkTheme && !hasUtilities) {
114
+ virtualLines[0] = `${virtualLines[0] ?? ''} __cssMissingTailwindEntry();`;
115
+ }
116
+ }
117
+ return [virtualLines.join('\n')];
118
+ },
119
+ postprocess(messages) {
120
+ return messages.flat();
121
+ },
122
+ supportsAutofix: false,
123
+ },
124
+ },
125
+ };
126
+
127
+ function isArbitraryFontSizeValue(value) {
128
+ const normalized = value
129
+ .replace(/\s*!important\s*$/i, '')
130
+ .trim();
131
+
132
+ return ARBITRARY_FONT_SIZE_VALUE_PATTERN.test(normalized);
133
+ }
134
+
135
+ const baseRestrictedSyntaxRules = [
136
+ {
137
+ selector: "CallExpression[callee.name='require']",
138
+ message:
139
+ "工程规范:前端 src 目录使用 ES Module,禁止使用 require()",
140
+ },
141
+ {
142
+ selector: "MemberExpression[object.name='process'][property.name='env']",
143
+ message:
144
+ '工程规范:请勿在 src 目录下直接使用 process.env\n如需获取 URL 请求前缀,请使用已经注入全局的 PROJECT_DOMAIN',
145
+ },
146
+ {
147
+ selector:
148
+ ":matches(ExportNamedDeclaration, ExportDefaultDeclaration) :matches([id.name='Network'], [declaration.id.name='Network'])",
149
+ message:
150
+ "工程规范:禁止自行定义 Network,项目已提供 src/network.ts,请直接使用: import { Network } from '@/network'",
151
+ },
152
+ {
153
+ selector:
154
+ "CallExpression[callee.name='__cssExternalImport'] > Literal[value=/^(?:https?:)?\\/\\//]",
155
+ message:
156
+ '抖音小程序兼容性:禁止在 CSS/TTSS 中使用远程 @import(如 Google Fonts)。请改为本地静态资源或删除该导入。',
157
+ },
158
+ {
159
+ selector:
160
+ "JSXAttribute[name.name='color'][value.type='Literal'][value.value='currentColor'], JSXAttribute[name.name='color'] > JSXExpressionContainer > Literal[value='currentColor']",
161
+ message:
162
+ '图标组件规范:禁止使用 color="currentColor",小程序端不会按预期继承颜色。请改为显式颜色值,或通过 LucideProvider 提供默认颜色。',
163
+ },
164
+ {
165
+ selector:
166
+ "ImportDeclaration[source.value='@tarojs/taro'] > ImportSpecifier[imported.name='Taro']",
167
+ message:
168
+ "Taro 导入规范:禁止 `import { Taro } from '@tarojs/taro'`。前端 tsconfig 未开启 esModuleInterop,tsc 会报 TS2596。请使用默认导入:`import Taro from '@tarojs/taro'`;需要 Hook 时写成 `import Taro, { useDidShow } from '@tarojs/taro'`。",
169
+ },
170
+ {
171
+ selector:
172
+ "ImportDeclaration[source.value='@tarojs/taro'] > ImportNamespaceSpecifier",
173
+ message:
174
+ "Taro 导入规范:禁止 `import * as Taro from '@tarojs/taro'`。请使用默认导入:`import Taro from '@tarojs/taro'`。",
175
+ },
176
+ ];
177
+
178
+ function createPageRestrictedSyntaxRules(
179
+ preferredUiImportBase = '@open-dy/vibecoding-sdk-taro/ui',
180
+ ) {
181
+ return [
182
+ ['Button', 'button'],
183
+ ['Input', 'input'],
184
+ ['Textarea', 'textarea'],
185
+ ['Label', 'label'],
186
+ ['Switch', 'switch'],
187
+ ['Slider', 'slider'],
188
+ ['Progress', 'progress'],
189
+ ].map(([component, module]) => ({
190
+ selector:
191
+ `ImportDeclaration[source.value='@tarojs/components'] ImportSpecifier[imported.name='${component}']`,
192
+ message:
193
+ `组件规范:${component} 优先使用 '${preferredUiImportBase}/${module}',` +
194
+ `不要在页面中直接使用 '@tarojs/components' 的 ${component}。`,
195
+ }))
196
+ }
197
+
198
+ const ARBITRARY_FONT_SIZE_CLASS_PATTERN =
199
+ /^(?:!)?text-\[(?:length:)?(?:(?:\d+(?:\.\d+)?|\.\d+)(?:px|rpx|rem|em|vw|vh)|calc\([^\]]+\)|clamp\([^\]]+\)|min\([^\]]+\)|max\([^\]]+\))(?:\/[^\]]+)?\]$/;
200
+ const ARBITRARY_FONT_SIZE_VALUE_PATTERN =
201
+ /^(?:(?:\d+(?:\.\d+)?|\.\d+)(?:px|rpx|rem|em|vw|vh)|calc\([^)]+\)|clamp\([^)]+\)|min\([^)]+\)|max\([^)]+\))$/i;
202
+
203
+ function splitTailwindClassToken(token) {
204
+ let bracketDepth = 0;
205
+ let lastSeparatorIndex = -1;
206
+
207
+ for (let index = 0; index < token.length; index += 1) {
208
+ const char = token[index];
209
+
210
+ if (char === '[') bracketDepth += 1;
211
+ if (char === ']') bracketDepth -= 1;
212
+ if (char === ':' && bracketDepth === 0) lastSeparatorIndex = index;
213
+ }
214
+
215
+ return lastSeparatorIndex >= 0
216
+ ? token.slice(lastSeparatorIndex + 1)
217
+ : token;
218
+ }
219
+
220
+ function collectStaticStrings(node, result = []) {
221
+ if (!node) return result;
222
+
223
+ if (node.type === 'Literal' && typeof node.value === 'string') {
224
+ result.push(node.value);
225
+ return result;
226
+ }
227
+
228
+ if (node.type === 'TemplateLiteral') {
229
+ for (const quasi of node.quasis) {
230
+ if (quasi.value.cooked) result.push(quasi.value.cooked);
231
+ }
232
+
233
+ for (const expression of node.expressions) {
234
+ collectStaticStrings(expression, result);
235
+ }
236
+
237
+ return result;
238
+ }
239
+
240
+ for (const key of [
241
+ 'left',
242
+ 'right',
243
+ 'argument',
244
+ 'callee',
245
+ 'test',
246
+ 'consequent',
247
+ 'alternate',
248
+ 'object',
249
+ 'property',
250
+ ]) {
251
+ collectStaticStrings(node[key], result);
252
+ }
253
+
254
+ for (const key of ['arguments', 'elements', 'expressions']) {
255
+ if (Array.isArray(node[key])) {
256
+ for (const child of node[key]) collectStaticStrings(child, result);
257
+ }
258
+ }
259
+
260
+ return result;
261
+ }
262
+
263
+ const tailwindEnforcementPlugin = {
264
+ rules: {
265
+ 'require-utilities-entry': {
266
+ create(context) {
267
+ return {
268
+ CallExpression(node) {
269
+ if (node.callee?.name !== '__cssMissingTailwindEntry') return;
270
+ context.report({ node, message: 'src/app.css 缺少 Tailwind 工具类入口。请保留模板的 @import "weapp-tailwindcss";;SDK ui/tailwind.css 只提供主题和组件扫描,不能替代此入口。' });
271
+ },
272
+ };
273
+ },
274
+ },
275
+ 'no-arbitrary-font-size': {
276
+ create(context) {
277
+ function reportArbitraryFontSize(node, className) {
278
+ const violating = className
279
+ .split(/\s+/)
280
+ .map(token => token.trim())
281
+ .filter(Boolean)
282
+ .filter(token => ARBITRARY_FONT_SIZE_CLASS_PATTERN.test(splitTailwindClassToken(token)));
283
+
284
+ if (violating.length === 0) return;
285
+
286
+ context.report({
287
+ node,
288
+ message:
289
+ `字体规范:除非特殊情况,避免使用任意字体大小类 [${violating.join(', ')}]。` +
290
+ '请改用 Tailwind 标准字号,如 text-xs、text-sm、text-base、text-lg,避免小程序/H5 端单位转换不一致。',
291
+ });
292
+ }
293
+
294
+ function reportCssArbitraryFontSize(node, value) {
295
+ context.report({
296
+ node,
297
+ message:
298
+ `字体规范:除非特殊情况,避免在样式文件中直接声明 font-size: ${value}。` +
299
+ '请优先使用 Tailwind 标准字号类,如 text-xs、text-sm、text-base、text-lg,避免小程序/H5 端单位转换不一致。',
300
+ });
301
+ }
302
+
303
+ return {
304
+ JSXAttribute(node) {
305
+ if (node.name?.name !== 'className') return;
306
+
307
+ if (node.value?.type === 'Literal' && typeof node.value.value === 'string') {
308
+ reportArbitraryFontSize(node, node.value.value);
309
+ return;
310
+ }
311
+
312
+ if (node.value?.type !== 'JSXExpressionContainer') return;
313
+
314
+ for (const className of collectStaticStrings(node.value.expression)) {
315
+ reportArbitraryFontSize(node, className);
316
+ }
317
+ },
318
+ CallExpression(node) {
319
+ if (node.callee?.name !== '__cssArbitraryFontSize') return;
320
+
321
+ const [valueNode] = node.arguments;
322
+ const value = valueNode?.value;
323
+
324
+ reportCssArbitraryFontSize(
325
+ node,
326
+ typeof value === 'string' ? value : '任意字号'
327
+ );
328
+ },
329
+ };
330
+ },
331
+ },
332
+ },
333
+ };
334
+
335
+ const pageRestrictedCssImportPatterns = [
336
+ {
337
+ group: [
338
+ '*.css',
339
+ '**/*.css',
340
+ '*.scss',
341
+ '**/*.scss',
342
+ '*.less',
343
+ '**/*.less',
344
+ '*.sass',
345
+ '**/*.sass',
346
+ ],
347
+ message:
348
+ '样式规范:页面中禁止直接 import CSS/SCSS 文件,请使用 Tailwind className 实现样式。' +
349
+ '仅在 Tailwind 明显无法满足(如复杂关键帧动画)时才创建页面级样式文件,且范围须最小化。',
350
+ },
351
+ ];
352
+
353
+ const TARO_NATIVE_SVG_ELEMENTS = [
354
+ 'svg',
355
+ 'circle',
356
+ 'path',
357
+ 'rect',
358
+ 'line',
359
+ 'polyline',
360
+ 'polygon',
361
+ 'ellipse',
362
+ 'g',
363
+ 'defs',
364
+ 'clipPath',
365
+ 'linearGradient',
366
+ 'radialGradient',
367
+ 'stop',
368
+ 'mask',
369
+ 'pattern',
370
+ 'textPath',
371
+ 'use',
372
+ ];
373
+
374
+ const indexPageRestrictedSyntaxRules = [
375
+ {
376
+ selector: 'JSXText[value=/\\s*应用开发中\\s*/]',
377
+ message:
378
+ '工程规范:检测到首页 (src/pages/index/index.tsx) 仍为默认占位页面,这会导致用户无法进入新增页面,请根据用户需求开发实际的首页功能与界面。如果已经开发了新的首页,也需要删除旧首页,并更新 src/app.config.ts 文件',
379
+ },
380
+ ];
381
+
382
+ export function createMicroappTaroEslintConfig(options = {}) {
383
+ const lucideColorCheckPlugin = createLucideColorCheckPlugin(options.lucideImportSources)
384
+ const pageRestrictedSyntaxRules = createPageRestrictedSyntaxRules(
385
+ options.preferredUiImportBase,
386
+ )
387
+ const defaults = tseslint.config(
388
+ {
389
+ ignores: ['eslint.config.mjs', 'dist/**', 'dist-*/**', 'node_modules/**', 'src/components/sar-game/**'],
390
+ },
391
+ eslint.configs.recommended,
392
+ ...tseslint.configs.recommended,
393
+ {
394
+ languageOptions: {
395
+ globals: {
396
+ ...globals.browser,
397
+ ...globals.node,
398
+ ...globals.es2021,
399
+ },
400
+ parserOptions: {
401
+ ecmaFeatures: { jsx: true },
402
+ sourceType: 'module',
403
+ },
404
+ },
405
+ settings: {
406
+ react: {
407
+ pragma: 'React',
408
+ version: 'detect',
409
+ },
410
+ 'import/resolver': {
411
+ typescript: {
412
+ alwaysTryTypes: true,
413
+ project: './tsconfig.json',
414
+ },
415
+ },
416
+ 'import/core-modules': ['@tarojs/taro', '@tarojs/components'],
417
+ },
418
+ plugins: {
419
+ react: fixupPluginRules(reactPlugin),
420
+ 'react-hooks': fixupPluginRules(reactHooksPlugin),
421
+ import: fixupPluginRules(importPlugin),
422
+ },
423
+ rules: {
424
+ 'react-hooks/rules-of-hooks': 'error',
425
+ 'react-hooks/exhaustive-deps': 'warn',
426
+ 'react/jsx-key': 'warn',
427
+ 'react/jsx-no-duplicate-props': ['error', { ignoreCase: true }],
428
+ 'react/jsx-no-undef': 'error',
429
+ 'react/jsx-uses-vars': 'error',
430
+ 'react/jsx-uses-react': 'off',
431
+ 'react/react-in-jsx-scope': 'off',
432
+ 'react/no-children-prop': 'error',
433
+ 'react/no-direct-mutation-state': 'error',
434
+ 'react/no-string-refs': 'error',
435
+ 'react/require-render-return': 'error',
436
+ 'react/no-danger-with-children': 'error',
437
+ 'react/jsx-no-leaked-render': ['error', { validStrategies: ['ternary', 'coerce'] }],
438
+
439
+ 'import/export': 'error',
440
+ 'import/no-duplicates': 'error',
441
+
442
+ 'no-undef': 'off',
443
+ '@typescript-eslint/no-explicit-any': 'off',
444
+ '@typescript-eslint/no-unused-vars': 'off',
445
+ '@typescript-eslint/no-require-imports': 'off',
446
+ '@typescript-eslint/no-namespace': 'off',
447
+
448
+ 'react/forbid-elements': [
449
+ 'error',
450
+ {
451
+ forbid: [
452
+ { element: 'select', message: '请使用 Picker 组件代替 <select>' },
453
+ ...TARO_NATIVE_SVG_ELEMENTS.map(element => ({
454
+ element,
455
+ message:
456
+ `抖音小程序兼容性:禁止使用原生 <${element}> SVG 标签。` +
457
+ '请优先用 View + Tailwind/CSS 实现;其次使用 Image、本地静态资源或项目已适配的 @open-dy/lucide-taro 图标组件;复杂动态绘制才考虑 Canvas。',
458
+ })),
459
+ ],
460
+ },
461
+ ],
462
+ 'tailwindcss/classnames-order': 'off',
463
+ 'tailwindcss/no-custom-classname': 'off',
464
+ },
465
+ },
466
+ {
467
+ files: ['src/**/*.{js,jsx,ts,tsx}'],
468
+ plugins: { customNavigation },
469
+ rules: {
470
+ 'customNavigation/no-navigation-control-apis': 'error',
471
+ },
472
+ },
473
+ {
474
+ files: ['src/**/*.{js,jsx,ts,tsx}'],
475
+ ignores: ['src/network.ts'],
476
+ plugins: {
477
+ lucide: lucideColorCheckPlugin,
478
+ microappPages,
479
+ customNavigation,
480
+ tailwind: tailwindEnforcementPlugin,
481
+ },
482
+ rules: {
483
+ 'customNavigation/require-custom-navigation-style': 'error',
484
+ 'customNavigation/pages-must-use-custom-nav-space': 'error',
485
+ 'microappPages/nav-url-in-app-pages': 'error',
486
+ // 'microappPages/page-dirs-in-app-pages': 'error',
487
+ 'microappPages/declared-pages-must-exist': 'error',
488
+ 'microappPages/no-screen-height-in-tabbar-page': 'error',
489
+ 'lucide/require-lucide-color': 'error',
490
+ 'tailwind/no-arbitrary-font-size': 'error',
491
+ '@typescript-eslint/no-require-imports': 'error',
492
+ 'no-restricted-syntax': ['error', ...baseRestrictedSyntaxRules],
493
+ 'no-restricted-globals': [
494
+ 'error',
495
+ {
496
+ name: 'fetch',
497
+ message:
498
+ '工程规范:禁止直接使用 fetch API,请使用 network.ts 中的 Network.request 方法来发起网络请求。',
499
+ },
500
+ ],
501
+ 'no-restricted-properties': [
502
+ 'error',
503
+ {
504
+ object: 'window',
505
+ property: 'fetch',
506
+ message:
507
+ '工程规范:禁止直接使用 window.fetch API,请使用 network.ts 中的 Network.request 方法来发起网络请求。',
508
+ },
509
+ {
510
+ object: 'Taro',
511
+ property: 'request',
512
+ message:
513
+ "工程规范:请使用 Network.request 替代 Taro.request,导入方式: import { Network } from '@/network'",
514
+ },
515
+ {
516
+ object: 'Taro',
517
+ property: 'uploadFile',
518
+ message:
519
+ "工程规范:请使用 Network.uploadFile 替代 Taro.uploadFile,导入方式: import { Network } from '@/network'",
520
+ },
521
+ {
522
+ object: 'Taro',
523
+ property: 'downloadFile',
524
+ message:
525
+ "工程规范:请使用 Network.downloadFile 替代 Taro.downloadFile,导入方式: import { Network } from '@/network'",
526
+ },
527
+ {
528
+ object: 'Taro',
529
+ property: 'getWindowInfo',
530
+ message:
531
+ "工程规范:请使用 Taro.getSystemInfoSync 替代 Taro.getWindowInfo",
532
+ },
533
+ ],
534
+ },
535
+ },
536
+ {
537
+ files: ['src/**/*.{css,scss}'],
538
+ plugins: {
539
+ local: cssImportGuardPlugin,
540
+ tailwind: tailwindEnforcementPlugin,
541
+ },
542
+ processor: 'local/css',
543
+ rules: {
544
+ 'tailwind/require-utilities-entry': 'error',
545
+ 'no-undef': 'off',
546
+ 'tailwind/no-arbitrary-font-size': 'error',
547
+ 'no-restricted-syntax': ['error', ...baseRestrictedSyntaxRules],
548
+ },
549
+ },
550
+ {
551
+ files: ['src/components/ui/**/*.tsx'],
552
+ rules: {
553
+ 'lucide/require-lucide-color': 'off',
554
+ },
555
+ },
556
+ {
557
+ files: ['src/pages/**/*.tsx'],
558
+ rules: {
559
+ 'no-restricted-syntax': [
560
+ 'error',
561
+ ...baseRestrictedSyntaxRules,
562
+ ...pageRestrictedSyntaxRules,
563
+ ],
564
+ 'no-restricted-imports': ['warn', { patterns: pageRestrictedCssImportPatterns }],
565
+ },
566
+ },
567
+ {
568
+ files: ['src/pages/index/index.tsx'],
569
+ rules: {
570
+ 'no-restricted-syntax': [
571
+ 'error',
572
+ ...baseRestrictedSyntaxRules,
573
+ ...pageRestrictedSyntaxRules,
574
+ ...indexPageRestrictedSyntaxRules,
575
+ ],
576
+ 'no-restricted-imports': ['warn', { patterns: pageRestrictedCssImportPatterns }],
577
+ },
578
+ },
579
+ );
580
+
581
+ const overrides = options.overrides
582
+ if (!overrides) return defaults
583
+ if (typeof overrides === 'function') return overrides(defaults) ?? defaults
584
+ return tseslint.config(...defaults, ...(Array.isArray(overrides) ? overrides : [overrides]))
585
+ }
586
+
587
+ export default createMicroappTaroEslintConfig
package/src/index.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from './runtime/index'
2
+ export * from './build/index'
@@ -0,0 +1,29 @@
1
+ /**
2
+ * 抖音 Button openType 扩展。上游 Taro 类型未声明这些字段,但 TT 运行时支持。
3
+ * 保持为 module,确保 declare module 与官方 Button 类型合并而不是覆盖。
4
+ */
5
+ import "@tarojs/components";
6
+
7
+ export {};
8
+
9
+ declare global {
10
+ type DouyinOpenTypeDetailEvent = {
11
+ detail?: { errMsg?: string; errNo?: number };
12
+ };
13
+
14
+ type DouyinOpenButtonExtras = {
15
+ hideBorder?: boolean;
16
+ dataVideoId?: string;
17
+ dataVideoType?: string;
18
+ dataChannel?: string;
19
+ "data-video-id"?: string;
20
+ "data-video-type"?: string;
21
+ "data-channel"?: string;
22
+ onNavigateToVideoView?: (event: DouyinOpenTypeDetailEvent) => void;
23
+ onAddShortcut?: (event: DouyinOpenTypeDetailEvent) => void;
24
+ };
25
+ }
26
+
27
+ declare module "@tarojs/components/types/Button" {
28
+ interface ButtonProps extends DouyinOpenButtonExtras {}
29
+ }