├── .eslintignore
├── .eslintrc.cjs
├── .github
├── FUNDING.yml
├── ISSUE_TEMPLATE
│ ├── bug-report.yml
│ ├── config.yml
│ └── feature-request.yml
├── PULL_REQUEST_TEMPLATE.md.md
└── workflows
│ ├── build.yaml
│ ├── publish.yaml
│ └── release.yaml
├── .gitignore
├── .histoire
├── package.json
├── postcss.config.js
├── setup.ts
├── style.css
├── tailwind.config.js
├── tsconfig.json
└── vite.config.ts
├── .vscode
├── extensions.json
└── settings.json
├── CODE_OF_CONDUCT.md
├── LICENSE
├── README.md
├── docs
├── .vitepress
│ ├── .temp
│ │ ├── @localSearchIndexroot.W8tjN3ZY.js
│ │ ├── HeroCodeGroup.ec57TU07.js
│ │ ├── NavigationMenuListItem.588qpBN-.js
│ │ ├── NavigationMenuListItem.EfMlHbN-.js
│ │ ├── VPLocalSearchBox.2Mtw9zRs.js
│ │ ├── app.js
│ │ ├── assets
│ │ │ └── style.U91DcI70.css
│ │ ├── components_accordion.md.js
│ │ ├── components_alert-dialog.md.js
│ │ ├── components_aspect-ratio.md.js
│ │ ├── components_avatar.md.js
│ │ ├── components_checkbox.md.js
│ │ ├── components_collapsible.md.js
│ │ ├── components_combobox.md.js
│ │ ├── components_context-menu.md.js
│ │ ├── components_dialog.md.js
│ │ ├── components_dropdown-menu.md.js
│ │ ├── components_hover-card.md.js
│ │ ├── components_label.md.js
│ │ ├── components_menubar.md.js
│ │ ├── components_navigation-menu.md.js
│ │ ├── components_pagination.md.js
│ │ ├── components_pin-input.md.js
│ │ ├── components_popover.md.js
│ │ ├── components_progress.md.js
│ │ ├── components_radio-group.md.js
│ │ ├── components_scroll-area.md.js
│ │ ├── components_select.md.js
│ │ ├── components_separator.md.js
│ │ ├── components_slider.md.js
│ │ ├── components_switch.md.js
│ │ ├── components_tabs.md.js
│ │ ├── components_tags-input.md.js
│ │ ├── components_toast.md.js
│ │ ├── components_toggle-group.md.js
│ │ ├── components_toggle.md.js
│ │ ├── components_toolbar.md.js
│ │ ├── components_tooltip.md.js
│ │ ├── favicon.ico
│ │ ├── guides_animation.md.js
│ │ ├── guides_composition.md.js
│ │ ├── guides_namespaced-components.md.js
│ │ ├── guides_server-side-rendering.md.js
│ │ ├── guides_styling.md.js
│ │ ├── index.-wAv1UcI.js
│ │ ├── index.-yxHsJEj.js
│ │ ├── index.0Y0dHuZY.js
│ │ ├── index.0fshOh8W.js
│ │ ├── index.2GAjyjDD.js
│ │ ├── index.2UjDXlLf.js
│ │ ├── index.3KVMrJIL.js
│ │ ├── index.3foF6oVY.js
│ │ ├── index.3oWZ_XfR.js
│ │ ├── index.3r0NVjTk.js
│ │ ├── index.41lPFD1_.js
│ │ ├── index.49inCpWZ.js
│ │ ├── index.5Tp-zMvz.js
│ │ ├── index.5UxfSml-.js
│ │ ├── index.5qFKdqHl.js
│ │ ├── index.60FoUk0a.js
│ │ ├── index.6Ikmn5lW.js
│ │ ├── index.7SwdZVsi.js
│ │ ├── index.8UveCupA.js
│ │ ├── index.8uaoSEaB.js
│ │ ├── index.9U-T9xxI.js
│ │ ├── index.9Y3xPGCX.js
│ │ ├── index.CiUYTaXz.js
│ │ ├── index.Di5Lm3tl.js
│ │ ├── index.EegLu37b.js
│ │ ├── index.EnkHsDXd.js
│ │ ├── index.Eok5dGqY.js
│ │ ├── index.H4HEaX8x.js
│ │ ├── index.Ijck1Pyz.js
│ │ ├── index.Jln7eolS.js
│ │ ├── index.LEziXYsm.js
│ │ ├── index.LXkbS4pL.js
│ │ ├── index.MhbswMpW.js
│ │ ├── index.Mv8nAelO.js
│ │ ├── index.N5w8tImz.js
│ │ ├── index.PcpFZ_tQ.js
│ │ ├── index.PfQkVDQx.js
│ │ ├── index.PizxzUMs.js
│ │ ├── index.QSnAocj3.js
│ │ ├── index.Qx2heJIM.js
│ │ ├── index.RQxod9Ui.js
│ │ ├── index.SkyMgy3T.js
│ │ ├── index.TndJr_4G.js
│ │ ├── index.WjsV5DJ5.js
│ │ ├── index.XHDnbhzh.js
│ │ ├── index.XdzW-1Uk.js
│ │ ├── index.YA8Ot0vp.js
│ │ ├── index.ZQdK7v4E.js
│ │ ├── index.ZvAhQeh9.js
│ │ ├── index._wV7GETZ.js
│ │ ├── index.adY50xha.js
│ │ ├── index.bLInsU8B.js
│ │ ├── index.baB2ti6k.js
│ │ ├── index.bj13JvTv.js
│ │ ├── index.c1V-kkLt.js
│ │ ├── index.c5TYf3fM.js
│ │ ├── index.cIod08AK.js
│ │ ├── index.dFAYUKd4.js
│ │ ├── index.dIB8wtgD.js
│ │ ├── index.dr0QBCLz.js
│ │ ├── index.eYJ2SKb4.js
│ │ ├── index.f7cC20pG.js
│ │ ├── index.faJ9MUPN.js
│ │ ├── index.fnSf7p0Y.js
│ │ ├── index.g_wOoVdz.js
│ │ ├── index.gcJMds_m.js
│ │ ├── index.h5FAQWNd.js
│ │ ├── index.isrVVGwd.js
│ │ ├── index.iyl6Aaw1.js
│ │ ├── index.j_sN42i4.js
│ │ ├── index.k4V7Bji0.js
│ │ ├── index.k8xhLIY-.js
│ │ ├── index.kMLgnEHP.js
│ │ ├── index.kpQxdjiE.js
│ │ ├── index.lL3S7tgu.js
│ │ ├── index.m_av8aEL.js
│ │ ├── index.md.js
│ │ ├── index.mgmljBqt.js
│ │ ├── index.mo2ff3o1.js
│ │ ├── index.mteCbIyP.js
│ │ ├── index.myrinMzR.js
│ │ ├── index.nYYZtszG.js
│ │ ├── index.nsVhqUko.js
│ │ ├── index.o7SMdQZS.js
│ │ ├── index.oq195dYj.js
│ │ ├── index.qt3zUPQo.js
│ │ ├── index.rQ-nPtIV.js
│ │ ├── index.s-Hh9oeE.js
│ │ ├── index.sPK3_V7F.js
│ │ ├── index.sQ1CC0bl.js
│ │ ├── index.sVOrdHgP.js
│ │ ├── index.ssJzD7KM.js
│ │ ├── index.uk2XmBSV.js
│ │ ├── index.vkG0bUDg.js
│ │ ├── index.xAj7wet3.js
│ │ ├── index.xt90WszU.js
│ │ ├── index.xv26BsCr.js
│ │ ├── index.yvgmD7OK.js
│ │ ├── index.zUnCLiup.js
│ │ ├── logo.png
│ │ ├── logo.svg
│ │ ├── meta_AccordionContent.md.js
│ │ ├── meta_AccordionHeader.md.js
│ │ ├── meta_AccordionItem.md.js
│ │ ├── meta_AccordionRoot.md.js
│ │ ├── meta_AccordionTrigger.md.js
│ │ ├── meta_AlertDialogAction.md.js
│ │ ├── meta_AlertDialogCancel.md.js
│ │ ├── meta_AlertDialogContent.md.js
│ │ ├── meta_AlertDialogDescription.md.js
│ │ ├── meta_AlertDialogOverlay.md.js
│ │ ├── meta_AlertDialogPortal.md.js
│ │ ├── meta_AlertDialogRoot.md.js
│ │ ├── meta_AlertDialogTitle.md.js
│ │ ├── meta_AlertDialogTrigger.md.js
│ │ ├── meta_AspectRatio.md.js
│ │ ├── meta_AvatarFallback.md.js
│ │ ├── meta_AvatarImage.md.js
│ │ ├── meta_AvatarRoot.md.js
│ │ ├── meta_CheckboxIndicator.md.js
│ │ ├── meta_CheckboxRoot.md.js
│ │ ├── meta_CollapsibleContent.md.js
│ │ ├── meta_CollapsibleRoot.md.js
│ │ ├── meta_CollapsibleTrigger.md.js
│ │ ├── meta_ComboboxAnchor.md.js
│ │ ├── meta_ComboboxArrow.md.js
│ │ ├── meta_ComboboxCancel.md.js
│ │ ├── meta_ComboboxContent.md.js
│ │ ├── meta_ComboboxEmpty.md.js
│ │ ├── meta_ComboboxGroup.md.js
│ │ ├── meta_ComboboxInput.md.js
│ │ ├── meta_ComboboxItem.md.js
│ │ ├── meta_ComboboxItemIndicator.md.js
│ │ ├── meta_ComboboxLabel.md.js
│ │ ├── meta_ComboboxPortal.md.js
│ │ ├── meta_ComboboxRoot.md.js
│ │ ├── meta_ComboboxSeparator.md.js
│ │ ├── meta_ComboboxTrigger.md.js
│ │ ├── meta_ComboboxViewport.md.js
│ │ ├── meta_ConfigProvider.md.js
│ │ ├── meta_ContextMenuArrow.md.js
│ │ ├── meta_ContextMenuCheckboxItem.md.js
│ │ ├── meta_ContextMenuContent.md.js
│ │ ├── meta_ContextMenuGroup.md.js
│ │ ├── meta_ContextMenuItem.md.js
│ │ ├── meta_ContextMenuItemIndicator.md.js
│ │ ├── meta_ContextMenuLabel.md.js
│ │ ├── meta_ContextMenuPortal.md.js
│ │ ├── meta_ContextMenuRadioGroup.md.js
│ │ ├── meta_ContextMenuRadioItem.md.js
│ │ ├── meta_ContextMenuRoot.md.js
│ │ ├── meta_ContextMenuSeparator.md.js
│ │ ├── meta_ContextMenuSub.md.js
│ │ ├── meta_ContextMenuSubContent.md.js
│ │ ├── meta_ContextMenuSubTrigger.md.js
│ │ ├── meta_ContextMenuTrigger.md.js
│ │ ├── meta_DialogClose.md.js
│ │ ├── meta_DialogContent.md.js
│ │ ├── meta_DialogDescription.md.js
│ │ ├── meta_DialogOverlay.md.js
│ │ ├── meta_DialogPortal.md.js
│ │ ├── meta_DialogRoot.md.js
│ │ ├── meta_DialogTitle.md.js
│ │ ├── meta_DialogTrigger.md.js
│ │ ├── meta_DropdownMenuArrow.md.js
│ │ ├── meta_DropdownMenuCheckboxItem.md.js
│ │ ├── meta_DropdownMenuContent.md.js
│ │ ├── meta_DropdownMenuGroup.md.js
│ │ ├── meta_DropdownMenuItem.md.js
│ │ ├── meta_DropdownMenuItemIndicator.md.js
│ │ ├── meta_DropdownMenuLabel.md.js
│ │ ├── meta_DropdownMenuPortal.md.js
│ │ ├── meta_DropdownMenuRadioGroup.md.js
│ │ ├── meta_DropdownMenuRadioItem.md.js
│ │ ├── meta_DropdownMenuRoot.md.js
│ │ ├── meta_DropdownMenuSeparator.md.js
│ │ ├── meta_DropdownMenuSub.md.js
│ │ ├── meta_DropdownMenuSubContent.md.js
│ │ ├── meta_DropdownMenuSubTrigger.md.js
│ │ ├── meta_DropdownMenuTrigger.md.js
│ │ ├── meta_HoverCardArrow.md.js
│ │ ├── meta_HoverCardContent.md.js
│ │ ├── meta_HoverCardPortal.md.js
│ │ ├── meta_HoverCardRoot.md.js
│ │ ├── meta_HoverCardTrigger.md.js
│ │ ├── meta_Label.md.js
│ │ ├── meta_MenubarArrow.md.js
│ │ ├── meta_MenubarCheckboxItem.md.js
│ │ ├── meta_MenubarContent.md.js
│ │ ├── meta_MenubarGroup.md.js
│ │ ├── meta_MenubarItem.md.js
│ │ ├── meta_MenubarItemIndicator.md.js
│ │ ├── meta_MenubarLabel.md.js
│ │ ├── meta_MenubarMenu.md.js
│ │ ├── meta_MenubarPortal.md.js
│ │ ├── meta_MenubarRadioGroup.md.js
│ │ ├── meta_MenubarRadioItem.md.js
│ │ ├── meta_MenubarRoot.md.js
│ │ ├── meta_MenubarSeparator.md.js
│ │ ├── meta_MenubarSub.md.js
│ │ ├── meta_MenubarSubContent.md.js
│ │ ├── meta_MenubarSubTrigger.md.js
│ │ ├── meta_MenubarTrigger.md.js
│ │ ├── meta_NavigationMenuContent.md.js
│ │ ├── meta_NavigationMenuIndicator.md.js
│ │ ├── meta_NavigationMenuItem.md.js
│ │ ├── meta_NavigationMenuLink.md.js
│ │ ├── meta_NavigationMenuList.md.js
│ │ ├── meta_NavigationMenuRoot.md.js
│ │ ├── meta_NavigationMenuSub.md.js
│ │ ├── meta_NavigationMenuTrigger.md.js
│ │ ├── meta_NavigationMenuViewport.md.js
│ │ ├── meta_PaginationEllipsis.md.js
│ │ ├── meta_PaginationFirst.md.js
│ │ ├── meta_PaginationLast.md.js
│ │ ├── meta_PaginationList.md.js
│ │ ├── meta_PaginationListItem.md.js
│ │ ├── meta_PaginationNext.md.js
│ │ ├── meta_PaginationPrev.md.js
│ │ ├── meta_PaginationRoot.md.js
│ │ ├── meta_PinInputInput.md.js
│ │ ├── meta_PinInputRoot.md.js
│ │ ├── meta_PopoverAnchor.md.js
│ │ ├── meta_PopoverArrow.md.js
│ │ ├── meta_PopoverClose.md.js
│ │ ├── meta_PopoverContent.md.js
│ │ ├── meta_PopoverPortal.md.js
│ │ ├── meta_PopoverRoot.md.js
│ │ ├── meta_PopoverTrigger.md.js
│ │ ├── meta_ProgressIndicator.md.js
│ │ ├── meta_ProgressRoot.md.js
│ │ ├── meta_RadioGroupIndicator.md.js
│ │ ├── meta_RadioGroupItem.md.js
│ │ ├── meta_RadioGroupRoot.md.js
│ │ ├── meta_ScrollAreaCorner.md.js
│ │ ├── meta_ScrollAreaRoot.md.js
│ │ ├── meta_ScrollAreaScrollbar.md.js
│ │ ├── meta_ScrollAreaThumb.md.js
│ │ ├── meta_ScrollAreaViewport.md.js
│ │ ├── meta_SelectArrow.md.js
│ │ ├── meta_SelectContent.md.js
│ │ ├── meta_SelectGroup.md.js
│ │ ├── meta_SelectIcon.md.js
│ │ ├── meta_SelectItem.md.js
│ │ ├── meta_SelectItemIndicator.md.js
│ │ ├── meta_SelectItemText.md.js
│ │ ├── meta_SelectLabel.md.js
│ │ ├── meta_SelectPortal.md.js
│ │ ├── meta_SelectRoot.md.js
│ │ ├── meta_SelectScrollDownButton.md.js
│ │ ├── meta_SelectScrollUpButton.md.js
│ │ ├── meta_SelectSeparator.md.js
│ │ ├── meta_SelectTrigger.md.js
│ │ ├── meta_SelectValue.md.js
│ │ ├── meta_SelectViewport.md.js
│ │ ├── meta_Separator.md.js
│ │ ├── meta_SliderRange.md.js
│ │ ├── meta_SliderRoot.md.js
│ │ ├── meta_SliderThumb.md.js
│ │ ├── meta_SliderTrack.md.js
│ │ ├── meta_SwitchRoot.md.js
│ │ ├── meta_SwitchThumb.md.js
│ │ ├── meta_TabsContent.md.js
│ │ ├── meta_TabsIndicator.md.js
│ │ ├── meta_TabsList.md.js
│ │ ├── meta_TabsRoot.md.js
│ │ ├── meta_TabsTrigger.md.js
│ │ ├── meta_TagsInputClear.md.js
│ │ ├── meta_TagsInputInput.md.js
│ │ ├── meta_TagsInputItem.md.js
│ │ ├── meta_TagsInputItemDelete.md.js
│ │ ├── meta_TagsInputItemText.md.js
│ │ ├── meta_TagsInputRoot.md.js
│ │ ├── meta_ToastAction.md.js
│ │ ├── meta_ToastClose.md.js
│ │ ├── meta_ToastDescription.md.js
│ │ ├── meta_ToastProvider.md.js
│ │ ├── meta_ToastRoot.md.js
│ │ ├── meta_ToastTitle.md.js
│ │ ├── meta_ToastViewport.md.js
│ │ ├── meta_Toggle.md.js
│ │ ├── meta_ToggleGroupItem.md.js
│ │ ├── meta_ToggleGroupRoot.md.js
│ │ ├── meta_ToolbarButton.md.js
│ │ ├── meta_ToolbarLink.md.js
│ │ ├── meta_ToolbarRoot.md.js
│ │ ├── meta_ToolbarSeparator.md.js
│ │ ├── meta_ToolbarToggleGroup.md.js
│ │ ├── meta_ToolbarToggleItem.md.js
│ │ ├── meta_TooltipArrow.md.js
│ │ ├── meta_TooltipContent.md.js
│ │ ├── meta_TooltipPortal.md.js
│ │ ├── meta_TooltipProvider.md.js
│ │ ├── meta_TooltipRoot.md.js
│ │ ├── meta_TooltipTrigger.md.js
│ │ ├── meta_VisuallyHidden.md.js
│ │ ├── new-ui.jpg
│ │ ├── og.png
│ │ ├── overview_accessibility.md.js
│ │ ├── overview_getting-started.md.js
│ │ ├── overview_installation.md.js
│ │ ├── overview_introduction.md.js
│ │ ├── overview_releases.md.js
│ │ ├── package.json
│ │ ├── plugin-vue_export-helper.yVxbj29m.js
│ │ ├── showcase.md.js
│ │ ├── styles.-WDe1F_g.js
│ │ ├── styles.-gvnnMNi.js
│ │ ├── styles.0LlhAlvW.js
│ │ ├── styles.2IA5UPdp.js
│ │ ├── styles.36A19J4g.js
│ │ ├── styles.6fO4hRGp.js
│ │ ├── styles.7kmovTuJ.js
│ │ ├── styles.8INwlYTw.js
│ │ ├── styles.C9RqAGgC.js
│ │ ├── styles.HRDNsVl9.js
│ │ ├── styles.JD489OzG.js
│ │ ├── styles.KwPfzqIm.js
│ │ ├── styles.MP4xEETY.js
│ │ ├── styles.S_9HaCG_.js
│ │ ├── styles.WPKg1J3Z.js
│ │ ├── styles._BILydqs.js
│ │ ├── styles.a-iP_6rf.js
│ │ ├── styles.a2JT1EaL.js
│ │ ├── styles.bnEbEVpX.js
│ │ ├── styles.cQUp5OJ0.js
│ │ ├── styles.cYH4RqOt.js
│ │ ├── styles.czZ9rpmu.js
│ │ ├── styles.dPKFLiaf.js
│ │ ├── styles.d_pMUKkg.js
│ │ ├── styles.fbHjuy4h.js
│ │ ├── styles.hld49HSe.js
│ │ ├── styles.ne3H309r.js
│ │ ├── styles.rP2DkJqv.js
│ │ ├── styles.sW-vIWXF.js
│ │ ├── styles.w6s-7ei8.js
│ │ ├── styles.wtBj0pAr.js
│ │ ├── styles.ycHQK3BH.js
│ │ ├── tailwind.config.-6npwLs7.js
│ │ ├── tailwind.config.1MQxD9Hc.js
│ │ ├── tailwind.config.2WRXUhgx.js
│ │ ├── tailwind.config.5we9yJNP.js
│ │ ├── tailwind.config.6xMde4MN.js
│ │ ├── tailwind.config.8pkgNPDY.js
│ │ ├── tailwind.config.GciixqWw.js
│ │ ├── tailwind.config.JSbeE2_Y.js
│ │ ├── tailwind.config.O_byLp-A.js
│ │ ├── tailwind.config.RONTAi6P.js
│ │ ├── tailwind.config.RcTkTqwk.js
│ │ ├── tailwind.config.SWf1FdC3.js
│ │ ├── tailwind.config.TTk0cozF.js
│ │ ├── tailwind.config.VThiuV3d.js
│ │ ├── tailwind.config.WvLRHT4I.js
│ │ ├── tailwind.config.XfQuvv_A.js
│ │ ├── tailwind.config.adCxt2nF.js
│ │ ├── tailwind.config.bI3ftqgd.js
│ │ ├── tailwind.config.cCZuDUJ6.js
│ │ ├── tailwind.config.dNdBah1X.js
│ │ ├── tailwind.config.datkePfu.js
│ │ ├── tailwind.config.e_akIKUQ.js
│ │ ├── tailwind.config.erGLIBGg.js
│ │ ├── tailwind.config.f16TraFH.js
│ │ ├── tailwind.config.h8Xdyrje.js
│ │ ├── tailwind.config.oIAwmEaq.js
│ │ ├── tailwind.config.pVR9kjeh.js
│ │ ├── tailwind.config.pe40Utv4.js
│ │ ├── tailwind.config.qOh3_Xos.js
│ │ ├── tailwind.config.sZLKTvRR.js
│ │ ├── tailwind.config.tOF5gdO1.js
│ │ ├── tailwind.config.u2Ei990H.js
│ │ ├── tailwind.config.vvoCFsiX.js
│ │ ├── tailwind.config.xyWq0OmZ.js
│ │ ├── utilities_config-provider.md.js
│ │ ├── utilities_primitive.md.js
│ │ ├── utilities_slot.md.js
│ │ ├── utilities_use-emit-as-props.md.js
│ │ ├── utilities_use-forward-expose.md.js
│ │ ├── utilities_use-forward-props-emits.md.js
│ │ ├── utilities_use-forward-props.md.js
│ │ ├── utilities_use-id.md.js
│ │ └── utilities_visually-hidden.md.js
│ ├── components
│ │ ├── Annoucement.vue
│ │ ├── CardLink.vue
│ │ ├── ComponentLoader.vue
│ │ ├── ComponentPreview.vue
│ │ ├── Contributors.vue
│ │ ├── EmbedIframe.vue
│ │ ├── HomePage.vue
│ │ ├── HomePageDemo.vue
│ │ ├── NewHeroCodeGroup.vue
│ │ ├── NewHeroContainer.vue
│ │ └── Spinner.vue
│ ├── config.ts
│ ├── contributor-names.json
│ ├── contributors.ts
│ ├── layouts
│ │ └── showcase.vue
│ ├── meta.ts
│ ├── plugins
│ │ └── preview.ts
│ └── theme
│ │ ├── index.ts
│ │ ├── style.css
│ │ └── tailwind.postcss
├── codeeditor
│ └── index.ts
├── components
│ ├── Badge.vue
│ ├── CodeBlock.vue
│ ├── CodeSandbox.vue
│ ├── DemoContainer.vue
│ ├── Demos.vue
│ ├── Description.vue
│ ├── HeroCodeGroup.vue
│ ├── HeroContainer.vue
│ ├── Highlights.vue
│ ├── Stackblitz.vue
│ ├── Tooltip.vue
│ ├── demo
│ │ ├── Accordion
│ │ │ ├── css
│ │ │ │ ├── index.vue
│ │ │ │ └── styles.css
│ │ │ └── tailwind
│ │ │ │ ├── index.vue
│ │ │ │ └── tailwind.config.js
│ │ ├── AlertDialog
│ │ │ ├── css
│ │ │ │ ├── index.vue
│ │ │ │ └── styles.css
│ │ │ └── tailwind
│ │ │ │ ├── index.vue
│ │ │ │ └── tailwind.config.js
│ │ ├── AspectRatio
│ │ │ ├── css
│ │ │ │ ├── index.vue
│ │ │ │ └── styles.css
│ │ │ └── tailwind
│ │ │ │ ├── index.vue
│ │ │ │ └── tailwind.config.js
│ │ ├── Avatar
│ │ │ ├── css
│ │ │ │ ├── index.vue
│ │ │ │ └── styles.css
│ │ │ └── tailwind
│ │ │ │ ├── index.vue
│ │ │ │ └── tailwind.config.js
│ │ ├── Checkbox
│ │ │ ├── css
│ │ │ │ ├── index.vue
│ │ │ │ └── styles.css
│ │ │ └── tailwind
│ │ │ │ ├── index.vue
│ │ │ │ └── tailwind.config.js
│ │ ├── Collapsible
│ │ │ ├── css
│ │ │ │ ├── index.vue
│ │ │ │ └── styles.css
│ │ │ └── tailwind
│ │ │ │ ├── index.vue
│ │ │ │ └── tailwind.config.js
│ │ ├── Combobox
│ │ │ ├── css
│ │ │ │ ├── index.vue
│ │ │ │ └── styles.css
│ │ │ └── tailwind
│ │ │ │ ├── index.vue
│ │ │ │ └── tailwind.config.js
│ │ ├── ContextMenu
│ │ │ ├── css
│ │ │ │ ├── index.vue
│ │ │ │ └── styles.css
│ │ │ └── tailwind
│ │ │ │ ├── index.vue
│ │ │ │ └── tailwind.config.js
│ │ ├── Dialog
│ │ │ ├── css
│ │ │ │ ├── index.vue
│ │ │ │ └── styles.css
│ │ │ └── tailwind
│ │ │ │ ├── index.vue
│ │ │ │ └── tailwind.config.js
│ │ ├── DialogNested
│ │ │ └── tailwind
│ │ │ │ ├── index.vue
│ │ │ │ └── tailwind.config.js
│ │ ├── DialogToaster
│ │ │ └── tailwind
│ │ │ │ ├── index.vue
│ │ │ │ └── tailwind.config.js
│ │ ├── DropdownMenu
│ │ │ ├── css
│ │ │ │ ├── index.vue
│ │ │ │ └── styles.css
│ │ │ └── tailwind
│ │ │ │ ├── index.vue
│ │ │ │ └── tailwind.config.js
│ │ ├── GettingStarted
│ │ │ ├── index.vue
│ │ │ └── styles.css
│ │ ├── HoverCard
│ │ │ ├── css
│ │ │ │ ├── index.vue
│ │ │ │ └── styles.css
│ │ │ └── tailwind
│ │ │ │ ├── index.vue
│ │ │ │ └── tailwind.config.js
│ │ ├── Label
│ │ │ ├── css
│ │ │ │ ├── index.vue
│ │ │ │ └── styles.css
│ │ │ └── tailwind
│ │ │ │ ├── index.vue
│ │ │ │ └── tailwind.config.js
│ │ ├── Menubar
│ │ │ ├── css
│ │ │ │ ├── index.vue
│ │ │ │ └── styles.css
│ │ │ └── tailwind
│ │ │ │ ├── index.vue
│ │ │ │ └── tailwind.config.js
│ │ ├── NavigationMenu
│ │ │ ├── css
│ │ │ │ ├── NavigationMenuListItem.vue
│ │ │ │ ├── index.vue
│ │ │ │ └── styles.css
│ │ │ └── tailwind
│ │ │ │ ├── NavigationMenuListItem.vue
│ │ │ │ ├── index.vue
│ │ │ │ └── tailwind.config.js
│ │ ├── Pagination
│ │ │ ├── css
│ │ │ │ ├── index.vue
│ │ │ │ └── styles.css
│ │ │ └── tailwind
│ │ │ │ ├── index.vue
│ │ │ │ └── tailwind.config.js
│ │ ├── PinInput
│ │ │ ├── css
│ │ │ │ ├── index.vue
│ │ │ │ └── styles.css
│ │ │ └── tailwind
│ │ │ │ ├── index.vue
│ │ │ │ └── tailwind.config.js
│ │ ├── Popover
│ │ │ ├── css
│ │ │ │ ├── index.vue
│ │ │ │ └── styles.css
│ │ │ └── tailwind
│ │ │ │ ├── index.vue
│ │ │ │ └── tailwind.config.js
│ │ ├── Progress
│ │ │ ├── css
│ │ │ │ ├── index.vue
│ │ │ │ └── styles.css
│ │ │ └── tailwind
│ │ │ │ ├── index.vue
│ │ │ │ └── tailwind.config.js
│ │ ├── RadioGroup
│ │ │ ├── css
│ │ │ │ ├── index.vue
│ │ │ │ └── styles.css
│ │ │ └── tailwind
│ │ │ │ ├── index.vue
│ │ │ │ └── tailwind.config.js
│ │ ├── ScrollArea
│ │ │ ├── css
│ │ │ │ ├── index.vue
│ │ │ │ └── styles.css
│ │ │ └── tailwind
│ │ │ │ ├── index.vue
│ │ │ │ └── tailwind.config.js
│ │ ├── Select
│ │ │ ├── css
│ │ │ │ ├── index.vue
│ │ │ │ └── styles.css
│ │ │ └── tailwind
│ │ │ │ ├── index.vue
│ │ │ │ └── tailwind.config.js
│ │ ├── Separator
│ │ │ ├── css
│ │ │ │ ├── index.vue
│ │ │ │ └── styles.css
│ │ │ └── tailwind
│ │ │ │ ├── index.vue
│ │ │ │ └── tailwind.config.js
│ │ ├── Slider
│ │ │ ├── css
│ │ │ │ ├── index.vue
│ │ │ │ └── styles.css
│ │ │ └── tailwind
│ │ │ │ ├── index.vue
│ │ │ │ └── tailwind.config.js
│ │ ├── Switch
│ │ │ ├── css
│ │ │ │ ├── index.vue
│ │ │ │ └── styles.css
│ │ │ └── tailwind
│ │ │ │ ├── index.vue
│ │ │ │ └── tailwind.config.js
│ │ ├── Tabs
│ │ │ ├── css
│ │ │ │ ├── index.vue
│ │ │ │ └── styles.css
│ │ │ └── tailwind
│ │ │ │ ├── index.vue
│ │ │ │ └── tailwind.config.js
│ │ ├── TagsInput
│ │ │ ├── css
│ │ │ │ ├── index.vue
│ │ │ │ └── styles.css
│ │ │ └── tailwind
│ │ │ │ ├── index.vue
│ │ │ │ └── tailwind.config.js
│ │ ├── TagsInputCombobox
│ │ │ ├── css
│ │ │ │ ├── index.vue
│ │ │ │ └── styles.css
│ │ │ └── tailwind
│ │ │ │ ├── index.vue
│ │ │ │ └── tailwind.config.js
│ │ ├── Toast
│ │ │ ├── css
│ │ │ │ ├── index.vue
│ │ │ │ └── styles.css
│ │ │ └── tailwind
│ │ │ │ ├── index.vue
│ │ │ │ └── tailwind.config.js
│ │ ├── Toggle
│ │ │ ├── css
│ │ │ │ ├── index.vue
│ │ │ │ └── styles.css
│ │ │ └── tailwind
│ │ │ │ ├── index.vue
│ │ │ │ └── tailwind.config.js
│ │ ├── ToggleGroup
│ │ │ ├── css
│ │ │ │ ├── index.vue
│ │ │ │ └── styles.css
│ │ │ └── tailwind
│ │ │ │ ├── index.vue
│ │ │ │ └── tailwind.config.js
│ │ ├── Toolbar
│ │ │ ├── css
│ │ │ │ ├── index.vue
│ │ │ │ └── styles.css
│ │ │ └── tailwind
│ │ │ │ ├── index.vue
│ │ │ │ └── tailwind.config.js
│ │ └── Tooltip
│ │ │ ├── css
│ │ │ ├── index.vue
│ │ │ └── styles.css
│ │ │ └── tailwind
│ │ │ ├── index.vue
│ │ │ └── tailwind.config.js
│ ├── prose
│ │ ├── ProseA.vue
│ │ ├── ProseCodeInline.vue
│ │ ├── ProseH1.vue
│ │ ├── ProseH2.vue
│ │ ├── ProseH3.vue
│ │ ├── ProseP.vue
│ │ ├── ProseTable.vue
│ │ ├── ProseTbody.vue
│ │ ├── ProseTd.vue
│ │ ├── ProseTh.vue
│ │ ├── ProseThead.vue
│ │ ├── ProseTr.vue
│ │ └── index.ts
│ └── tables
│ │ ├── CssVariablesTable.vue
│ │ ├── DataAttributesTable.vue
│ │ ├── EmitsTable.vue
│ │ ├── KeyboardTable.vue
│ │ ├── PropsTable.vue
│ │ └── SlotsTable.vue
├── content
│ ├── components
│ │ ├── accordion.md
│ │ ├── alert-dialog.md
│ │ ├── aspect-ratio.md
│ │ ├── avatar.md
│ │ ├── checkbox.md
│ │ ├── collapsible.md
│ │ ├── combobox.md
│ │ ├── context-menu.md
│ │ ├── dialog.md
│ │ ├── dropdown-menu.md
│ │ ├── hover-card.md
│ │ ├── label.md
│ │ ├── menubar.md
│ │ ├── navigation-menu.md
│ │ ├── pagination.md
│ │ ├── pin-input.md
│ │ ├── popover.md
│ │ ├── progress.md
│ │ ├── radio-group.md
│ │ ├── scroll-area.md
│ │ ├── select.md
│ │ ├── separator.md
│ │ ├── slider.md
│ │ ├── switch.md
│ │ ├── tabs.md
│ │ ├── tags-input.md
│ │ ├── toast.md
│ │ ├── toggle-group.md
│ │ ├── toggle.md
│ │ ├── toolbar.md
│ │ └── tooltip.md
│ ├── guides
│ │ ├── _dir.yml
│ │ ├── animation.md
│ │ ├── composition.md
│ │ ├── namespaced-components.md
│ │ ├── server-side-rendering.md
│ │ └── styling.md
│ ├── index.md
│ ├── meta
│ │ ├── AccordionContent.md
│ │ ├── AccordionHeader.md
│ │ ├── AccordionItem.md
│ │ ├── AccordionRoot.md
│ │ ├── AccordionTrigger.md
│ │ ├── AlertDialogAction.md
│ │ ├── AlertDialogCancel.md
│ │ ├── AlertDialogContent.md
│ │ ├── AlertDialogDescription.md
│ │ ├── AlertDialogOverlay.md
│ │ ├── AlertDialogPortal.md
│ │ ├── AlertDialogRoot.md
│ │ ├── AlertDialogTitle.md
│ │ ├── AlertDialogTrigger.md
│ │ ├── AspectRatio.md
│ │ ├── AvatarFallback.md
│ │ ├── AvatarImage.md
│ │ ├── AvatarRoot.md
│ │ ├── CheckboxIndicator.md
│ │ ├── CheckboxRoot.md
│ │ ├── CollapsibleContent.md
│ │ ├── CollapsibleRoot.md
│ │ ├── CollapsibleTrigger.md
│ │ ├── ComboboxAnchor.md
│ │ ├── ComboboxArrow.md
│ │ ├── ComboboxCancel.md
│ │ ├── ComboboxContent.md
│ │ ├── ComboboxEmpty.md
│ │ ├── ComboboxGroup.md
│ │ ├── ComboboxInput.md
│ │ ├── ComboboxItem.md
│ │ ├── ComboboxItemIndicator.md
│ │ ├── ComboboxLabel.md
│ │ ├── ComboboxPortal.md
│ │ ├── ComboboxRoot.md
│ │ ├── ComboboxSeparator.md
│ │ ├── ComboboxTrigger.md
│ │ ├── ComboboxViewport.md
│ │ ├── ConfigProvider.md
│ │ ├── ContextMenuArrow.md
│ │ ├── ContextMenuCheckboxItem.md
│ │ ├── ContextMenuContent.md
│ │ ├── ContextMenuGroup.md
│ │ ├── ContextMenuItem.md
│ │ ├── ContextMenuItemIndicator.md
│ │ ├── ContextMenuLabel.md
│ │ ├── ContextMenuPortal.md
│ │ ├── ContextMenuRadioGroup.md
│ │ ├── ContextMenuRadioItem.md
│ │ ├── ContextMenuRoot.md
│ │ ├── ContextMenuSeparator.md
│ │ ├── ContextMenuSub.md
│ │ ├── ContextMenuSubContent.md
│ │ ├── ContextMenuSubTrigger.md
│ │ ├── ContextMenuTrigger.md
│ │ ├── DialogClose.md
│ │ ├── DialogContent.md
│ │ ├── DialogDescription.md
│ │ ├── DialogOverlay.md
│ │ ├── DialogPortal.md
│ │ ├── DialogRoot.md
│ │ ├── DialogTitle.md
│ │ ├── DialogTrigger.md
│ │ ├── DropdownMenuArrow.md
│ │ ├── DropdownMenuCheckboxItem.md
│ │ ├── DropdownMenuContent.md
│ │ ├── DropdownMenuGroup.md
│ │ ├── DropdownMenuItem.md
│ │ ├── DropdownMenuItemIndicator.md
│ │ ├── DropdownMenuLabel.md
│ │ ├── DropdownMenuPortal.md
│ │ ├── DropdownMenuRadioGroup.md
│ │ ├── DropdownMenuRadioItem.md
│ │ ├── DropdownMenuRoot.md
│ │ ├── DropdownMenuSeparator.md
│ │ ├── DropdownMenuSub.md
│ │ ├── DropdownMenuSubContent.md
│ │ ├── DropdownMenuSubTrigger.md
│ │ ├── DropdownMenuTrigger.md
│ │ ├── HoverCardArrow.md
│ │ ├── HoverCardContent.md
│ │ ├── HoverCardPortal.md
│ │ ├── HoverCardRoot.md
│ │ ├── HoverCardTrigger.md
│ │ ├── Label.md
│ │ ├── MenubarArrow.md
│ │ ├── MenubarCheckboxItem.md
│ │ ├── MenubarContent.md
│ │ ├── MenubarGroup.md
│ │ ├── MenubarItem.md
│ │ ├── MenubarItemIndicator.md
│ │ ├── MenubarLabel.md
│ │ ├── MenubarMenu.md
│ │ ├── MenubarPortal.md
│ │ ├── MenubarRadioGroup.md
│ │ ├── MenubarRadioItem.md
│ │ ├── MenubarRoot.md
│ │ ├── MenubarSeparator.md
│ │ ├── MenubarSub.md
│ │ ├── MenubarSubContent.md
│ │ ├── MenubarSubTrigger.md
│ │ ├── MenubarTrigger.md
│ │ ├── NavigationMenuContent.md
│ │ ├── NavigationMenuIndicator.md
│ │ ├── NavigationMenuItem.md
│ │ ├── NavigationMenuLink.md
│ │ ├── NavigationMenuList.md
│ │ ├── NavigationMenuRoot.md
│ │ ├── NavigationMenuSub.md
│ │ ├── NavigationMenuTrigger.md
│ │ ├── NavigationMenuViewport.md
│ │ ├── PaginationEllipsis.md
│ │ ├── PaginationFirst.md
│ │ ├── PaginationLast.md
│ │ ├── PaginationList.md
│ │ ├── PaginationListItem.md
│ │ ├── PaginationNext.md
│ │ ├── PaginationPrev.md
│ │ ├── PaginationRoot.md
│ │ ├── PinInputInput.md
│ │ ├── PinInputRoot.md
│ │ ├── PopoverAnchor.md
│ │ ├── PopoverArrow.md
│ │ ├── PopoverClose.md
│ │ ├── PopoverContent.md
│ │ ├── PopoverPortal.md
│ │ ├── PopoverRoot.md
│ │ ├── PopoverTrigger.md
│ │ ├── ProgressIndicator.md
│ │ ├── ProgressRoot.md
│ │ ├── RadioGroupIndicator.md
│ │ ├── RadioGroupItem.md
│ │ ├── RadioGroupRoot.md
│ │ ├── ScrollAreaCorner.md
│ │ ├── ScrollAreaRoot.md
│ │ ├── ScrollAreaScrollbar.md
│ │ ├── ScrollAreaThumb.md
│ │ ├── ScrollAreaViewport.md
│ │ ├── SelectArrow.md
│ │ ├── SelectContent.md
│ │ ├── SelectGroup.md
│ │ ├── SelectIcon.md
│ │ ├── SelectItem.md
│ │ ├── SelectItemIndicator.md
│ │ ├── SelectItemText.md
│ │ ├── SelectLabel.md
│ │ ├── SelectPortal.md
│ │ ├── SelectRoot.md
│ │ ├── SelectScrollDownButton.md
│ │ ├── SelectScrollUpButton.md
│ │ ├── SelectSeparator.md
│ │ ├── SelectTrigger.md
│ │ ├── SelectValue.md
│ │ ├── SelectViewport.md
│ │ ├── Separator.md
│ │ ├── SliderRange.md
│ │ ├── SliderRoot.md
│ │ ├── SliderThumb.md
│ │ ├── SliderTrack.md
│ │ ├── SwitchRoot.md
│ │ ├── SwitchThumb.md
│ │ ├── TabsContent.md
│ │ ├── TabsIndicator.md
│ │ ├── TabsList.md
│ │ ├── TabsRoot.md
│ │ ├── TabsTrigger.md
│ │ ├── TagsInputClear.md
│ │ ├── TagsInputInput.md
│ │ ├── TagsInputItem.md
│ │ ├── TagsInputItemDelete.md
│ │ ├── TagsInputItemText.md
│ │ ├── TagsInputRoot.md
│ │ ├── ToastAction.md
│ │ ├── ToastClose.md
│ │ ├── ToastDescription.md
│ │ ├── ToastProvider.md
│ │ ├── ToastRoot.md
│ │ ├── ToastTitle.md
│ │ ├── ToastViewport.md
│ │ ├── Toggle.md
│ │ ├── ToggleGroupItem.md
│ │ ├── ToggleGroupRoot.md
│ │ ├── ToolbarButton.md
│ │ ├── ToolbarLink.md
│ │ ├── ToolbarRoot.md
│ │ ├── ToolbarSeparator.md
│ │ ├── ToolbarToggleGroup.md
│ │ ├── ToolbarToggleItem.md
│ │ ├── TooltipArrow.md
│ │ ├── TooltipContent.md
│ │ ├── TooltipPortal.md
│ │ ├── TooltipProvider.md
│ │ ├── TooltipRoot.md
│ │ ├── TooltipTrigger.md
│ │ └── VisuallyHidden.md
│ ├── overview
│ │ ├── _dir.yml
│ │ ├── accessibility.md
│ │ ├── getting-started.md
│ │ ├── installation.md
│ │ ├── introduction.md
│ │ └── releases.md
│ ├── public
│ │ ├── favicon.ico
│ │ ├── logo.png
│ │ ├── logo.svg
│ │ ├── new-ui.jpg
│ │ └── og.png
│ ├── showcase.md
│ └── utilities
│ │ ├── config-provider.md
│ │ ├── primitive.md
│ │ ├── slot.md
│ │ ├── use-emit-as-props.md
│ │ ├── use-forward-expose.md
│ │ ├── use-forward-props-emits.md
│ │ ├── use-forward-props.md
│ │ ├── use-id.md
│ │ └── visually-hidden.md
├── package.json
├── scripts
│ ├── autogen.ts
│ ├── update-contributors.ts
│ └── utils.ts
├── tailwind.config.js
└── tsconfig.json
├── package.json
├── packages
├── plugins
│ ├── build.config.ts
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── src
│ │ ├── namespaced
│ │ │ ├── generate.ts
│ │ │ └── index.ts
│ │ ├── nuxt
│ │ │ └── index.ts
│ │ └── resolver
│ │ │ └── index.ts
│ └── tsconfig.json
└── radix-vue
│ ├── .gitignore
│ ├── .prettierrc.json
│ ├── LICENSE
│ ├── README.md
│ ├── constant
│ ├── components.ts
│ └── index.ts
│ ├── env.d.ts
│ ├── index.html
│ ├── namespaced.d.ts
│ ├── package.json
│ ├── resolver.d.ts
│ ├── src
│ ├── Accordion
│ │ ├── Accordion.test.ts
│ │ ├── AccordionContent.vue
│ │ ├── AccordionHeader.vue
│ │ ├── AccordionItem.vue
│ │ ├── AccordionRoot.vue
│ │ ├── AccordionTrigger.vue
│ │ ├── index.ts
│ │ └── story
│ │ │ ├── AccordionAnimated.story.vue
│ │ │ ├── AccordionChromatic.story.vue
│ │ │ ├── AccordionHorizontal.story.vue
│ │ │ ├── AccordionMultiple.story.vue
│ │ │ ├── AccordionSingle.story.vue
│ │ │ ├── AccordionViewport.story.vue
│ │ │ └── _Accordion.vue
│ ├── AlertDialog
│ │ ├── AlertDialog.test.ts
│ │ ├── AlertDialogAction.vue
│ │ ├── AlertDialogCancel.vue
│ │ ├── AlertDialogContent.vue
│ │ ├── AlertDialogDescription.vue
│ │ ├── AlertDialogOverlay.vue
│ │ ├── AlertDialogPortal.vue
│ │ ├── AlertDialogRoot.vue
│ │ ├── AlertDialogTitle.vue
│ │ ├── AlertDialogTrigger.vue
│ │ ├── index.ts
│ │ └── story
│ │ │ ├── AlertDialog.story.vue
│ │ │ └── _AlertDialog.vue
│ ├── AspectRatio
│ │ ├── AspectRatio.test.ts
│ │ ├── AspectRatio.vue
│ │ ├── __snapshots__
│ │ │ └── AspectRatio.test.ts.snap
│ │ ├── index.ts
│ │ └── story
│ │ │ └── AspectRatio.story.vue
│ ├── Avatar
│ │ ├── Avatar.test.ts
│ │ ├── AvatarFallback.vue
│ │ ├── AvatarImage.vue
│ │ ├── AvatarRoot.vue
│ │ ├── __snapshots__
│ │ │ └── Avatar.test.ts.snap
│ │ ├── index.ts
│ │ ├── story
│ │ │ ├── Avatar.story.vue
│ │ │ └── _Avatar.vue
│ │ └── utils.ts
│ ├── Checkbox
│ │ ├── Checkbox.test.ts
│ │ ├── CheckboxIndicator.vue
│ │ ├── CheckboxRoot.vue
│ │ ├── index.ts
│ │ ├── story
│ │ │ ├── Checkbox.story.vue
│ │ │ └── _Checkbox.vue
│ │ └── utils.ts
│ ├── Collapsible
│ │ ├── Collapsible.test.ts
│ │ ├── CollapsibleContent.vue
│ │ ├── CollapsibleRoot.vue
│ │ ├── CollapsibleTrigger.vue
│ │ ├── index.ts
│ │ └── story
│ │ │ ├── Collapsible.story.vue
│ │ │ └── _Collapsible.vue
│ ├── Collection
│ │ ├── Collection.ts
│ │ └── index.ts
│ ├── Combobox
│ │ ├── Combobox.test.ts
│ │ ├── ComboboxAnchor.vue
│ │ ├── ComboboxArrow.vue
│ │ ├── ComboboxCancel.vue
│ │ ├── ComboboxContent.vue
│ │ ├── ComboboxContentImpl.vue
│ │ ├── ComboboxEmpty.vue
│ │ ├── ComboboxGroup.vue
│ │ ├── ComboboxInput.vue
│ │ ├── ComboboxItem.vue
│ │ ├── ComboboxItemIndicator.vue
│ │ ├── ComboboxLabel.vue
│ │ ├── ComboboxPortal.vue
│ │ ├── ComboboxRoot.vue
│ │ ├── ComboboxSeparator.vue
│ │ ├── ComboboxTrigger.vue
│ │ ├── ComboboxViewport.vue
│ │ ├── index.ts
│ │ └── story
│ │ │ ├── ComboboxAsync.story.vue
│ │ │ ├── ComboboxBasic.story.vue
│ │ │ ├── ComboboxCustom.story.vue
│ │ │ ├── ComboboxMultiple.story.vue
│ │ │ ├── ComboboxObject.story.vue
│ │ │ ├── ComboboxReactive.story.vue
│ │ │ ├── _Combobox.vue
│ │ │ └── _ComboboxObject.vue
│ ├── ConfigProvider
│ │ ├── ConfigProvider.test.ts
│ │ ├── ConfigProvider.vue
│ │ ├── _ConfigProvider.vue
│ │ └── index.ts
│ ├── ContextMenu
│ │ ├── ContextMenu.test.ts
│ │ ├── ContextMenuArrow.vue
│ │ ├── ContextMenuCheckboxItem.vue
│ │ ├── ContextMenuContent.vue
│ │ ├── ContextMenuGroup.vue
│ │ ├── ContextMenuItem.vue
│ │ ├── ContextMenuItemIndicator.vue
│ │ ├── ContextMenuLabel.vue
│ │ ├── ContextMenuPortal.vue
│ │ ├── ContextMenuRadioGroup.vue
│ │ ├── ContextMenuRadioItem.vue
│ │ ├── ContextMenuRoot.vue
│ │ ├── ContextMenuSeparator.vue
│ │ ├── ContextMenuSub.vue
│ │ ├── ContextMenuSubContent.vue
│ │ ├── ContextMenuSubTrigger.vue
│ │ ├── ContextMenuTrigger.vue
│ │ ├── index.ts
│ │ ├── story
│ │ │ ├── ContextMenu.story.vue
│ │ │ └── _ContextMenu.vue
│ │ └── utils.ts
│ ├── Dialog
│ │ ├── Dialog.test.ts
│ │ ├── DialogClose.vue
│ │ ├── DialogContent.vue
│ │ ├── DialogContentImpl.vue
│ │ ├── DialogContentModal.vue
│ │ ├── DialogContentNonModal.vue
│ │ ├── DialogDescription.vue
│ │ ├── DialogOverlay.vue
│ │ ├── DialogOverlayImpl.vue
│ │ ├── DialogPortal.vue
│ │ ├── DialogRoot.vue
│ │ ├── DialogTitle.vue
│ │ ├── DialogTrigger.vue
│ │ ├── index.ts
│ │ ├── story
│ │ │ ├── Dialog.story.vue
│ │ │ ├── DialogProgrammatic.story.vue
│ │ │ ├── DialogWithDropdown.story.vue
│ │ │ └── _Dialog.vue
│ │ └── utils.ts
│ ├── DismissableLayer
│ │ ├── DismissableLayer.test.ts
│ │ ├── DismissableLayer.vue
│ │ ├── DismissableLayerBranch.vue
│ │ ├── index.ts
│ │ ├── story
│ │ │ ├── DismissableLayerBasic.story.vue
│ │ │ ├── DismissableLayerDialog.story.vue
│ │ │ ├── DismissableLayerPopoverNested.story.vue
│ │ │ ├── _DismissableBox.vue
│ │ │ ├── _DismissableLayer.vue
│ │ │ ├── _DummyDialog.vue
│ │ │ └── _DummyPopover.vue
│ │ └── utils.ts
│ ├── DropdownMenu
│ │ ├── DropdownMenu.test.ts
│ │ ├── DropdownMenuArrow.vue
│ │ ├── DropdownMenuCheckboxItem.vue
│ │ ├── DropdownMenuContent.vue
│ │ ├── DropdownMenuGroup.vue
│ │ ├── DropdownMenuItem.vue
│ │ ├── DropdownMenuItemIndicator.vue
│ │ ├── DropdownMenuLabel.vue
│ │ ├── DropdownMenuPortal.vue
│ │ ├── DropdownMenuRadioGroup.vue
│ │ ├── DropdownMenuRadioItem.vue
│ │ ├── DropdownMenuRoot.vue
│ │ ├── DropdownMenuSeparator.vue
│ │ ├── DropdownMenuSub.vue
│ │ ├── DropdownMenuSubContent.vue
│ │ ├── DropdownMenuSubTrigger.vue
│ │ ├── DropdownMenuTrigger.vue
│ │ ├── index.ts
│ │ └── story
│ │ │ ├── DropdownMenu.story.vue
│ │ │ └── _DropdownMenu.vue
│ ├── FocusGuards
│ │ ├── FocusGuards.vue
│ │ └── index.ts
│ ├── FocusScope
│ │ ├── FocusScope.test.ts
│ │ ├── FocusScope.vue
│ │ ├── index.ts
│ │ ├── stack.ts
│ │ ├── story
│ │ │ └── FocusScopeMultiple.story.vue
│ │ └── utils.ts
│ ├── HoverCard
│ │ ├── HoverCard.test.ts
│ │ ├── HoverCardArrow.vue
│ │ ├── HoverCardContent.vue
│ │ ├── HoverCardContentImpl.vue
│ │ ├── HoverCardPortal.vue
│ │ ├── HoverCardRoot.vue
│ │ ├── HoverCardTrigger.vue
│ │ ├── index.ts
│ │ ├── story
│ │ │ ├── HoverCard.story.vue
│ │ │ └── _HoverCard.vue
│ │ └── utils.ts
│ ├── Label
│ │ ├── Label.story.vue
│ │ ├── Label.test.ts
│ │ ├── Label.vue
│ │ └── index.ts
│ ├── Menu
│ │ ├── Menu.test.ts
│ │ ├── MenuAnchor.vue
│ │ ├── MenuArrow.vue
│ │ ├── MenuCheckboxItem.vue
│ │ ├── MenuContent.vue
│ │ ├── MenuContentImpl.vue
│ │ ├── MenuGroup.vue
│ │ ├── MenuItem.vue
│ │ ├── MenuItemImpl.vue
│ │ ├── MenuItemIndicator.vue
│ │ ├── MenuLabel.vue
│ │ ├── MenuPortal.vue
│ │ ├── MenuRadioGroup.vue
│ │ ├── MenuRadioItem.vue
│ │ ├── MenuRoot.vue
│ │ ├── MenuRootContentModal.vue
│ │ ├── MenuRootContentNonModal.vue
│ │ ├── MenuSeparator.vue
│ │ ├── MenuSub.vue
│ │ ├── MenuSubContent.vue
│ │ ├── MenuSubTrigger.vue
│ │ ├── index.ts
│ │ ├── story
│ │ │ ├── MenuCheckboxItems.story.vue
│ │ │ ├── MenuRadioItems.story.vue
│ │ │ ├── MenuStyled.story.vue
│ │ │ ├── MenuSubMenu.story.vue
│ │ │ ├── MenuWithLabels.story.vue
│ │ │ ├── _Menu.vue
│ │ │ ├── _MenuWithAnchor.vue
│ │ │ ├── _Submenu.vue
│ │ │ └── _TickIcon.vue
│ │ └── utils.ts
│ ├── Menubar
│ │ ├── Menubar.test.ts
│ │ ├── MenubarArrow.vue
│ │ ├── MenubarCheckboxItem.vue
│ │ ├── MenubarContent.vue
│ │ ├── MenubarGroup.vue
│ │ ├── MenubarItem.vue
│ │ ├── MenubarItemIndicator.vue
│ │ ├── MenubarLabel.vue
│ │ ├── MenubarMenu.vue
│ │ ├── MenubarPortal.vue
│ │ ├── MenubarRadioGroup.vue
│ │ ├── MenubarRadioItem.vue
│ │ ├── MenubarRoot.vue
│ │ ├── MenubarSeparator.vue
│ │ ├── MenubarSub.vue
│ │ ├── MenubarSubContent.vue
│ │ ├── MenubarSubTrigger.vue
│ │ ├── MenubarTrigger.vue
│ │ ├── index.ts
│ │ └── story
│ │ │ ├── Menubar.story.vue
│ │ │ └── _Menubar.vue
│ ├── NavigationMenu
│ │ ├── NavigationMenu.test.ts
│ │ ├── NavigationMenuContent.vue
│ │ ├── NavigationMenuContentImpl.vue
│ │ ├── NavigationMenuIndicator.vue
│ │ ├── NavigationMenuItem.vue
│ │ ├── NavigationMenuLink.vue
│ │ ├── NavigationMenuList.vue
│ │ ├── NavigationMenuRoot.vue
│ │ ├── NavigationMenuSub.vue
│ │ ├── NavigationMenuTrigger.vue
│ │ ├── NavigationMenuViewport.vue
│ │ ├── index.ts
│ │ ├── story
│ │ │ ├── NavigationMenuBasic.story.vue
│ │ │ ├── NavigationMenuDemo.story.vue
│ │ │ ├── NavigationMenuSubmenus.story.vue
│ │ │ ├── NavigationMenuViewport.story.vue
│ │ │ ├── _LinkGroup.vue
│ │ │ ├── _NavigationMenu.vue
│ │ │ ├── _NavigationMenuListItem.vue
│ │ │ └── _StoryFrame.vue
│ │ └── utils.ts
│ ├── Pagination
│ │ ├── Pagination.test.ts
│ │ ├── PaginationEllipsis.vue
│ │ ├── PaginationFirst.vue
│ │ ├── PaginationLast.vue
│ │ ├── PaginationList.vue
│ │ ├── PaginationListItem.vue
│ │ ├── PaginationNext.vue
│ │ ├── PaginationPrev.vue
│ │ ├── PaginationRoot.vue
│ │ ├── index.ts
│ │ ├── story
│ │ │ ├── PaginationDefault.story.vue
│ │ │ └── _Pagination.vue
│ │ └── utils.ts
│ ├── PinInput
│ │ ├── PinInput.test.ts
│ │ ├── PinInputInput.vue
│ │ ├── PinInputRoot.vue
│ │ ├── index.ts
│ │ └── story
│ │ │ ├── PinInput.story.vue
│ │ │ ├── PinInputNumeric.story.vue
│ │ │ └── _PinInput.vue
│ ├── Popover
│ │ ├── Popover.test.ts
│ │ ├── PopoverAnchor.vue
│ │ ├── PopoverArrow.vue
│ │ ├── PopoverClose.vue
│ │ ├── PopoverContent.vue
│ │ ├── PopoverContentImpl.vue
│ │ ├── PopoverContentModal.vue
│ │ ├── PopoverContentNonModal.vue
│ │ ├── PopoverPortal.vue
│ │ ├── PopoverRoot.vue
│ │ ├── PopoverTrigger.vue
│ │ ├── index.ts
│ │ └── story
│ │ │ ├── CustomArrowSvg.vue
│ │ │ ├── PopoverBodyLock.story.vue
│ │ │ ├── PopoverBoundary.story.vue
│ │ │ ├── PopoverCustomAnchor.story.vue
│ │ │ ├── PopoverCustomArrow.story.vue
│ │ │ ├── PopoverDemo.story.vue
│ │ │ ├── PopoverForceMount.story.vue
│ │ │ ├── PopoverModality.story.vue
│ │ │ ├── PopoverNested.story.vue
│ │ │ └── _Popover.vue
│ ├── Popper
│ │ ├── Popper.test.ts
│ │ ├── PopperAnchor.vue
│ │ ├── PopperArrow.vue
│ │ ├── PopperContent.vue
│ │ ├── PopperRoot.vue
│ │ ├── _Popper.vue
│ │ ├── __snapshots__
│ │ │ └── Popper.test.ts.snap
│ │ ├── index.ts
│ │ └── utils.ts
│ ├── Presence
│ │ ├── Presence.test.ts
│ │ ├── Presence.ts
│ │ ├── index.ts
│ │ ├── story
│ │ │ ├── PresenceAnimation.story.vue
│ │ │ ├── PresenceBasic.story.vue
│ │ │ ├── PresenceTransition.story.vue
│ │ │ ├── _Animation.vue
│ │ │ └── _Toggle.vue
│ │ └── usePresence.ts
│ ├── Primitive
│ │ ├── Primitive.test.ts
│ │ ├── Primitive.ts
│ │ ├── Slot.ts
│ │ ├── index.ts
│ │ └── usePrimitiveElement.ts
│ ├── Progress
│ │ ├── Progress.test.ts
│ │ ├── ProgressIndicator.vue
│ │ ├── ProgressRoot.vue
│ │ ├── index.ts
│ │ └── story
│ │ │ ├── Progress.story.vue
│ │ │ └── _Progress.vue
│ ├── RadioGroup
│ │ ├── Radio.vue
│ │ ├── RadioGroup.test.ts
│ │ ├── RadioGroupIndicator.vue
│ │ ├── RadioGroupItem.vue
│ │ ├── RadioGroupRoot.vue
│ │ ├── index.ts
│ │ └── story
│ │ │ ├── RadioGroup.story.vue
│ │ │ ├── _Radio.vue
│ │ │ └── _RadioGroup.vue
│ ├── RovingFocus
│ │ ├── RovingFocus.test.ts
│ │ ├── RovingFocusGroup.vue
│ │ ├── RovingFocusItem.vue
│ │ ├── index.ts
│ │ ├── story
│ │ │ ├── RovingFocusBasic.story.vue
│ │ │ ├── _Button.vue
│ │ │ └── _ButtonGroup.vue
│ │ └── utils.ts
│ ├── ScrollArea
│ │ ├── ScrollArea.test.ts
│ │ ├── ScrollAreaCorner.vue
│ │ ├── ScrollAreaCornerImpl.vue
│ │ ├── ScrollAreaRoot.vue
│ │ ├── ScrollAreaScrollbar.vue
│ │ ├── ScrollAreaScrollbarAuto.vue
│ │ ├── ScrollAreaScrollbarHover.vue
│ │ ├── ScrollAreaScrollbarImpl.vue
│ │ ├── ScrollAreaScrollbarScroll.vue
│ │ ├── ScrollAreaScrollbarVisible.vue
│ │ ├── ScrollAreaScrollbarX.vue
│ │ ├── ScrollAreaScrollbarY.vue
│ │ ├── ScrollAreaThumb.vue
│ │ ├── ScrollAreaViewport.vue
│ │ ├── __snapshots__
│ │ │ └── ScrollArea.test.ts.snap
│ │ ├── index.ts
│ │ ├── story
│ │ │ ├── ScrollAreaBasic.story.vue
│ │ │ ├── ScrollAreaChromatic.story.vue
│ │ │ ├── ScrollAreaChromaticBoth.story.vue
│ │ │ ├── ScrollAreaChromaticHorizontal.story.vue
│ │ │ ├── ScrollAreaChromaticVertical.story.vue
│ │ │ ├── _ScrollArea.vue
│ │ │ ├── _ScrollAreaCopy.vue
│ │ │ └── _ScrollAreaStory.vue
│ │ ├── types.ts
│ │ └── utils.ts
│ ├── Select
│ │ ├── BubbleSelect.vue
│ │ ├── Select.test.ts
│ │ ├── SelectArrow.vue
│ │ ├── SelectContent.vue
│ │ ├── SelectContentImpl.vue
│ │ ├── SelectGroup.vue
│ │ ├── SelectIcon.vue
│ │ ├── SelectItem.vue
│ │ ├── SelectItemAlignedPosition.vue
│ │ ├── SelectItemIndicator.vue
│ │ ├── SelectItemText.vue
│ │ ├── SelectLabel.vue
│ │ ├── SelectPopperPosition.vue
│ │ ├── SelectPortal.vue
│ │ ├── SelectProvider.vue
│ │ ├── SelectRoot.vue
│ │ ├── SelectScrollButtonImpl.vue
│ │ ├── SelectScrollDownButton.vue
│ │ ├── SelectScrollUpButton.vue
│ │ ├── SelectSeparator.vue
│ │ ├── SelectTrigger.vue
│ │ ├── SelectValue.vue
│ │ ├── SelectViewport.vue
│ │ ├── index.ts
│ │ ├── story
│ │ │ ├── SelectDemo.story.vue
│ │ │ ├── SelectForm.story.vue
│ │ │ ├── SelectWithinDialog.story.vue
│ │ │ ├── _Select.vue
│ │ │ ├── _SelectItem.vue
│ │ │ └── _SelectTest.vue
│ │ └── utils.ts
│ ├── Separator
│ │ ├── Separator.story.vue
│ │ ├── Separator.test.ts
│ │ ├── Separator.vue
│ │ └── index.ts
│ ├── Slider
│ │ ├── Slider.test.ts
│ │ ├── SliderHorizontal.vue
│ │ ├── SliderImpl.vue
│ │ ├── SliderRange.vue
│ │ ├── SliderRoot.vue
│ │ ├── SliderThumb.vue
│ │ ├── SliderThumbImpl.vue
│ │ ├── SliderTrack.vue
│ │ ├── SliderVertical.vue
│ │ ├── index.ts
│ │ ├── story
│ │ │ ├── SliderChromatic.story.vue
│ │ │ ├── SliderDemo.story.vue
│ │ │ ├── SliderExtremes.story.vue
│ │ │ └── _Slider.vue
│ │ └── utils.ts
│ ├── Switch
│ │ ├── Switch.story.vue
│ │ ├── Switch.test.ts
│ │ ├── SwitchRoot.vue
│ │ ├── SwitchThumb.vue
│ │ ├── _Switch.vue
│ │ └── index.ts
│ ├── Tabs
│ │ ├── Tabs.test.ts
│ │ ├── TabsContent.vue
│ │ ├── TabsIndicator.vue
│ │ ├── TabsList.vue
│ │ ├── TabsRoot.vue
│ │ ├── TabsTrigger.vue
│ │ ├── index.ts
│ │ ├── story
│ │ │ ├── Tabs.story.vue
│ │ │ ├── TabsVertical.story.vue
│ │ │ └── _Tabs.vue
│ │ └── utils.ts
│ ├── TagsInput
│ │ ├── TagsInput.test.ts
│ │ ├── TagsInputClear.vue
│ │ ├── TagsInputInput.vue
│ │ ├── TagsInputItem.vue
│ │ ├── TagsInputItemDelete.vue
│ │ ├── TagsInputItemText.vue
│ │ ├── TagsInputRoot.vue
│ │ ├── index.ts
│ │ └── story
│ │ │ ├── TagsInput.story.vue
│ │ │ ├── TagsInputCombobox.story.vue
│ │ │ └── _TagsInput.vue
│ ├── Teleport
│ │ ├── Teleport.vue
│ │ └── index.ts
│ ├── Toast
│ │ ├── FocusProxy.vue
│ │ ├── Toast.test.ts
│ │ ├── ToastAction.vue
│ │ ├── ToastAnnounce.vue
│ │ ├── ToastAnnounceExclude.vue
│ │ ├── ToastClose.vue
│ │ ├── ToastDescription.vue
│ │ ├── ToastProvider.vue
│ │ ├── ToastRoot.vue
│ │ ├── ToastRootImpl.vue
│ │ ├── ToastTitle.vue
│ │ ├── ToastViewport.vue
│ │ ├── index.ts
│ │ ├── story
│ │ │ ├── ToastDemo.story.vue
│ │ │ ├── ToastDemoFromDialog.story.vue
│ │ │ ├── ToastDemoKeyChange.story.vue
│ │ │ └── _Toast.vue
│ │ └── utils.ts
│ ├── Toggle
│ │ ├── Toggle.story.vue
│ │ ├── Toggle.test.ts
│ │ ├── Toggle.vue
│ │ └── index.ts
│ ├── ToggleGroup
│ │ ├── ToggleGroup.test.ts
│ │ ├── ToggleGroupItem.vue
│ │ ├── ToggleGroupRoot.vue
│ │ ├── index.ts
│ │ └── story
│ │ │ ├── ToggleGroup.story.vue
│ │ │ └── _ToggleGroup.vue
│ ├── Toolbar
│ │ ├── Toolbar.test.ts
│ │ ├── ToolbarButton.vue
│ │ ├── ToolbarLink.vue
│ │ ├── ToolbarRoot.vue
│ │ ├── ToolbarSeparator.vue
│ │ ├── ToolbarToggleGroup.vue
│ │ ├── ToolbarToggleItem.vue
│ │ ├── index.ts
│ │ └── story
│ │ │ ├── Toolbar.story.vue
│ │ │ └── _Toolbar.vue
│ ├── Tooltip
│ │ ├── Tooltip.test.ts
│ │ ├── TooltipArrow.vue
│ │ ├── TooltipContent.vue
│ │ ├── TooltipContentHoverable.vue
│ │ ├── TooltipContentImpl.vue
│ │ ├── TooltipPortal.vue
│ │ ├── TooltipProvider.vue
│ │ ├── TooltipRoot.vue
│ │ ├── TooltipTrigger.vue
│ │ ├── index.ts
│ │ ├── stories
│ │ │ ├── Tooltip.content.story.vue
│ │ │ ├── Tooltip.story.vue
│ │ │ └── _Tooltip.vue
│ │ └── utils.ts
│ ├── VisuallyHidden
│ │ ├── VisuallyHidden.vue
│ │ ├── VisuallyHiddenInput.vue
│ │ └── index.ts
│ ├── index.test.ts
│ ├── index.ts
│ ├── shared
│ │ ├── component
│ │ │ ├── Arrow.test.ts
│ │ │ ├── Arrow.vue
│ │ │ ├── BaseSeparator.vue
│ │ │ └── index.ts
│ │ ├── createContext.ts
│ │ ├── handleAndDispatchCustomEvent.ts
│ │ ├── index.ts
│ │ ├── isValidVNodeElement.ts
│ │ ├── object.ts
│ │ ├── onFocusOutside.ts
│ │ ├── renderSlotFragments.ts
│ │ ├── trap-focus.ts
│ │ ├── types.ts
│ │ ├── useArrowNavigation.test.ts
│ │ ├── useArrowNavigation.ts
│ │ ├── useBodyScrollLock.test.ts
│ │ ├── useBodyScrollLock.ts
│ │ ├── useCollection.ts
│ │ ├── useDirection.ts
│ │ ├── useEmitAsProps.ts
│ │ ├── useFocusGuards.ts
│ │ ├── useFormControl.ts
│ │ ├── useForwardExpose.ts
│ │ ├── useForwardProps.test.ts
│ │ ├── useForwardProps.ts
│ │ ├── useForwardPropsEmits.ts
│ │ ├── useForwardRef.ts
│ │ ├── useHideOthers.ts
│ │ ├── useId.ts
│ │ ├── useSingleOrMultipleValue.ts
│ │ ├── useSize.ts
│ │ ├── useStateMachine.ts
│ │ ├── useTypeahead.ts
│ │ └── withDefault.ts
│ └── test
│ │ ├── index.ts
│ │ └── utils.ts
│ ├── tsconfig.app.json
│ ├── tsconfig.build.json
│ ├── tsconfig.check.json
│ ├── tsconfig.json
│ ├── tsconfig.node.json
│ ├── vite.config.ts
│ ├── vitest.config.ts
│ └── vitest.setup.ts
├── patches
├── vitepress@1.0.0-rc.20.patch
└── vitepress@1.0.0-rc.40.patch
├── playground
├── nuxt
│ ├── .gitignore
│ ├── .npmrc
│ ├── README.md
│ ├── app.vue
│ ├── components
│ │ └── Card.vue
│ ├── nuxt.config.ts
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── public
│ │ └── favicon.ico
│ ├── server
│ │ └── tsconfig.json
│ ├── tailwind.config.js
│ └── tsconfig.json
└── vue3
│ ├── .env.d.ts
│ ├── .gitignore
│ ├── .vscode
│ └── extensions.json
│ ├── README.md
│ ├── components.d.ts
│ ├── index.html
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── postcss.config.js
│ ├── public
│ └── vite.svg
│ ├── src
│ ├── App.vue
│ ├── assets
│ │ └── vue.svg
│ ├── components
│ │ └── Card.vue
│ ├── main.ts
│ ├── style.css
│ └── vite-env.d.ts
│ ├── tailwind.config.js
│ ├── tsconfig.json
│ ├── tsconfig.node.json
│ └── vite.config.ts
├── pnpm-lock.yaml
└── pnpm-workspace.yaml
/.eslintignore:
--------------------------------------------------------------------------------
1 | *.js
--------------------------------------------------------------------------------
/.eslintrc.cjs:
--------------------------------------------------------------------------------
1 | const process = require('node:process')
2 |
3 | process.env.ESLINT_TSCONFIG = 'tsconfig.json'
4 |
5 | module.exports = {
6 | extends: '@antfu',
7 |
8 | rules: {
9 | '@typescript-eslint/no-non-null-asserted-optional-chain': 'off',
10 | '@typescript-eslint/ban-ts-comment': 'warn',
11 | '@typescript-eslint/consistent-type-definitions': 'off',
12 | 'import/first': 'off',
13 | 'import/order': 'off',
14 | 'symbol-description': 'off',
15 | 'no-console': 'warn',
16 | 'max-statements-per-line': ['error', { max: 2 }],
17 | 'vue/one-component-per-file': 'off',
18 | },
19 | }
20 |
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | github: [zernonia]
2 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/config.yml:
--------------------------------------------------------------------------------
1 | blank_issues_enabled: true
2 | contact_links:
3 | - name: 📚 Documentation
4 | url: https://www.radix-vue.com/
5 | about: Check the documentation for usage of Radix Vue.
6 | - name: 🗨️ Discord
7 | url: https://chat.radix-vue.com/
8 | about: Join the Radix Vue Discord server.
9 |
--------------------------------------------------------------------------------
/.github/workflows/release.yaml:
--------------------------------------------------------------------------------
1 | # .github/workflows/release.yml
2 |
3 | name: Release
4 |
5 | permissions:
6 | contents: write
7 |
8 | on:
9 | push:
10 | tags:
11 | - 'v*'
12 |
13 | jobs:
14 | release:
15 | runs-on: ubuntu-latest
16 | steps:
17 | - uses: actions/checkout@v3
18 | with:
19 | fetch-depth: 0
20 |
21 | - uses: actions/setup-node@v3
22 | with:
23 | node-version: 18.x
24 |
25 | - run: npx changelogithub
26 | env:
27 | GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
28 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | .DS_Store
12 | dist
13 | dist-ssr
14 | coverage
15 | *.local
16 | .env
17 |
18 | /cypress/videos/
19 | /cypress/screenshots/
20 |
21 | # Editor directories and files
22 | .vscode/*
23 | !.vscode/extensions.json
24 | !.vscode/settings.json
25 | .idea
26 | *.suo
27 | *.ntvs*
28 | *.njsproj
29 | *.sln
30 | *.sw?
31 | ./.nuxt
32 |
33 | test-results/
34 | playwright-report/
35 | vite.config.ts.timestamp*
36 | */.vitepress/cache
--------------------------------------------------------------------------------
/.histoire/postcss.config.js:
--------------------------------------------------------------------------------
1 | export default {
2 | plugins: {
3 | "tailwindcss/nesting": {},
4 | tailwindcss: {},
5 | autoprefixer: {},
6 | },
7 | };
8 |
--------------------------------------------------------------------------------
/.histoire/setup.ts:
--------------------------------------------------------------------------------
1 | import './style.css'
2 |
--------------------------------------------------------------------------------
/.histoire/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "baseUrl": ".",
4 | "paths": {
5 | "@iconify/vue": ["node_modules/@iconify/vue/dist/iconify.mjs"]
6 | }
7 | },
8 | "includes": ["../packages/radix-vue/src/**/*.vue", "../packages/radix-vue/src/**/*.ts"]
9 | }
10 |
--------------------------------------------------------------------------------
/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": [
3 | "Vue.volar",
4 | "Vue.vscode-typescript-vue-plugin",
5 | "dbaeumer.vscode-eslint"
6 | ]
7 | }
8 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "prettier.enable": false,
3 | "editor.formatOnSave": false,
4 | "editor.codeActionsOnSave": {
5 | "source.fixAll.eslint": "explicit",
6 | "source.organizeImports": "never"
7 | },
8 |
9 | "eslint.validate": [
10 | "javascript",
11 | "javascriptreact",
12 | "typescript",
13 | "typescriptreact",
14 | "vue",
15 | "html",
16 | "markdown",
17 | "json",
18 | "jsonc",
19 | "yaml"
20 | ],
21 | "tailwindCSS.experimental.configFile": {
22 | "./.histoire/tailwind.config.js": "./packages/radix-vue/**/*.story.vue"
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/docs/.vitepress/.temp/NavigationMenuListItem.EfMlHbN-.js:
--------------------------------------------------------------------------------
1 | const NavigationMenuListItem = `
6 |
7 |
8 |
14 | {{ fm.hero.prelink.title }}
15 |
16 |
17 |
--------------------------------------------------------------------------------
/docs/.vitepress/components/ComponentLoader.vue:
--------------------------------------------------------------------------------
1 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/docs/.vitepress/components/Contributors.vue:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
25 |
26 |
--------------------------------------------------------------------------------
/docs/.vitepress/components/EmbedIframe.vue:
--------------------------------------------------------------------------------
1 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/docs/.vitepress/components/HomePageDemo.vue:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
11 |
12 |
--------------------------------------------------------------------------------
/docs/.vitepress/components/Spinner.vue:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/docs/.vitepress/theme/tailwind.postcss:
--------------------------------------------------------------------------------
1 | @tailwind base;
2 | @tailwind components;
3 | @tailwind utilities;
--------------------------------------------------------------------------------
/docs/components/Badge.vue:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/docs/components/CodeBlock.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/docs/components/Description.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/docs/components/demo/AspectRatio/css/index.vue:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
8 |
9 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/docs/components/demo/AspectRatio/css/styles.css:
--------------------------------------------------------------------------------
1 | @import '@radix-ui/colors/black-alpha.css';
2 |
3 | .Container {
4 | width: 300px;
5 | border-radius: 6px;
6 | overflow: hidden;
7 | box-shadow: 0 2px 10px var(--black-a7);
8 | }
9 |
10 | .Image {
11 | object-fit: cover;
12 | width: 100%;
13 | height: 100%;
14 | }
--------------------------------------------------------------------------------
/docs/components/demo/AspectRatio/tailwind/index.vue:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/docs/components/demo/AspectRatio/tailwind/tailwind.config.js:
--------------------------------------------------------------------------------
1 | const { blackA } = require('@radix-ui/colors')
2 |
3 | /** @type {import('tailwindcss').Config} */
4 | module.exports = {
5 | content: ['./**/*.vue'],
6 | theme: {
7 | extend: {
8 | colors: {
9 | ...blackA,
10 | },
11 | },
12 | },
13 | plugins: [],
14 | }
15 |
--------------------------------------------------------------------------------
/docs/components/demo/Avatar/tailwind/tailwind.config.js:
--------------------------------------------------------------------------------
1 | const { blackA, grass } = require('@radix-ui/colors')
2 |
3 | /** @type {import('tailwindcss').Config} */
4 | module.exports = {
5 | content: ['./**/*.vue'],
6 | theme: {
7 | extend: {
8 | colors: {
9 | ...blackA,
10 | ...grass,
11 | },
12 | },
13 | },
14 | plugins: [],
15 | }
16 |
--------------------------------------------------------------------------------
/docs/components/demo/Checkbox/css/index.vue:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/docs/components/demo/Checkbox/css/styles.css:
--------------------------------------------------------------------------------
1 | @import '@radix-ui/colors/black-alpha.css';
2 | @import '@radix-ui/colors/grass.css';
3 |
4 | /* reset */
5 | button {
6 | all: unset;
7 | }
8 |
9 | .CheckboxRoot {
10 | background-color: white;
11 | width: 25px;
12 | height: 25px;
13 | border-radius: 4px;
14 | display: flex;
15 | align-items: center;
16 | justify-content: center;
17 | box-shadow: 0 2px 10px var(--black-a7);
18 | }
19 | .CheckboxRoot:hover {
20 | background-color: var(--grass-3);
21 | }
22 | .CheckboxRoot:focus {
23 | box-shadow: 0 0 0 2px black;
24 | }
25 |
26 | .CheckboxIndicator {
27 | color: var(--grass-11);
28 | }
29 |
30 | .Label {
31 | color: white;
32 | padding-left: 15px;
33 | font-size: 15px;
34 | line-height: 1;
35 | }
--------------------------------------------------------------------------------
/docs/components/demo/Checkbox/tailwind/tailwind.config.js:
--------------------------------------------------------------------------------
1 | const { blackA, green } = require('@radix-ui/colors')
2 |
3 | /** @type {import('tailwindcss').Config} */
4 | module.exports = {
5 | content: ['./**/*.vue'],
6 | theme: {
7 | extend: {
8 | colors: {
9 | ...blackA,
10 | ...green,
11 | },
12 | },
13 | },
14 | plugins: [],
15 | }
16 |
--------------------------------------------------------------------------------
/docs/components/demo/Collapsible/tailwind/tailwind.config.js:
--------------------------------------------------------------------------------
1 | const { blackA, green, grass } = require('@radix-ui/colors')
2 |
3 | /** @type {import('tailwindcss').Config} */
4 | module.exports = {
5 | content: ['./**/*.vue'],
6 | theme: {
7 | extend: {
8 | colors: {
9 | ...blackA,
10 | ...green,
11 | ...grass,
12 | },
13 | },
14 | },
15 | plugins: [],
16 | }
17 |
--------------------------------------------------------------------------------
/docs/components/demo/Combobox/tailwind/tailwind.config.js:
--------------------------------------------------------------------------------
1 | const { blackA, green, grass, mauve } = require('@radix-ui/colors')
2 |
3 | /** @type {import('tailwindcss').Config} */
4 | module.exports = {
5 | content: ['./**/*.vue'],
6 | theme: {
7 | extend: {
8 | colors: {
9 | ...blackA,
10 | ...green,
11 | ...grass,
12 | ...mauve,
13 | },
14 | },
15 | },
16 | plugins: [],
17 | }
18 |
--------------------------------------------------------------------------------
/docs/components/demo/ContextMenu/tailwind/tailwind.config.js:
--------------------------------------------------------------------------------
1 | const { blackA, green, grass, mauve } = require('@radix-ui/colors')
2 |
3 | /** @type {import('tailwindcss').Config} */
4 | module.exports = {
5 | content: ['./**/*.vue'],
6 | theme: {
7 | extend: {
8 | colors: {
9 | ...blackA,
10 | ...green,
11 | ...grass,
12 | ...mauve,
13 | },
14 | },
15 | },
16 | plugins: [],
17 | }
18 |
--------------------------------------------------------------------------------
/docs/components/demo/GettingStarted/index.vue:
--------------------------------------------------------------------------------
1 |
12 |
13 |
14 |
15 |
16 | More info
17 |
18 |
19 |
20 | Some more info...
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/docs/components/demo/Label/css/index.vue:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
8 |
9 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/docs/components/demo/Label/css/styles.css:
--------------------------------------------------------------------------------
1 | @import '@radix-ui/colors/black-alpha.css';
2 |
3 | /* reset */
4 | input {
5 | all: unset;
6 | }
7 |
8 | .LabelRoot {
9 | font-size: 15px;
10 | font-weight: 500;
11 | line-height: 35px;
12 | color: white;
13 | }
14 |
15 | .Input {
16 | width: 200px;
17 | display: inline-flex;
18 | align-items: center;
19 | justify-content: center;
20 | border-radius: 4px;
21 | padding: 0 10px;
22 | height: 35px;
23 | font-size: 15px;
24 | line-height: 1;
25 | color: white;
26 | background-color: var(--black-a5);
27 | box-shadow: 0 0 0 1px var(--black-a9);
28 | }
29 | .Input:focus {
30 | box-shadow: 0 0 0 2px black;
31 | }
32 | .Input::selection {
33 | background-color: var(--black-a9);
34 | color: white;
35 | }
--------------------------------------------------------------------------------
/docs/components/demo/Label/tailwind/index.vue:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/docs/components/demo/Label/tailwind/tailwind.config.js:
--------------------------------------------------------------------------------
1 | const { blackA } = require('@radix-ui/colors')
2 |
3 | /** @type {import('tailwindcss').Config} */
4 | module.exports = {
5 | content: ['./**/*.vue'],
6 | theme: {
7 | extend: {
8 | colors: {
9 | ...blackA,
10 | },
11 | },
12 | },
13 | plugins: [],
14 | }
15 |
--------------------------------------------------------------------------------
/docs/components/demo/Menubar/tailwind/tailwind.config.js:
--------------------------------------------------------------------------------
1 | const { blackA, green, grass, mauve } = require('@radix-ui/colors')
2 |
3 | /** @type {import('tailwindcss').Config} */
4 | module.exports = {
5 | content: ['./**/*.vue'],
6 | theme: {
7 | extend: {
8 | colors: {
9 | ...blackA,
10 | ...green,
11 | ...grass,
12 | ...mauve,
13 | },
14 | },
15 | },
16 | plugins: [],
17 | }
18 |
--------------------------------------------------------------------------------
/docs/components/demo/NavigationMenu/css/NavigationMenuListItem.vue:
--------------------------------------------------------------------------------
1 |
8 |
9 |
10 |
11 |
12 |
16 |
17 | {{ props.title }}
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/docs/components/demo/Pagination/tailwind/tailwind.config.js:
--------------------------------------------------------------------------------
1 | const { blackA, grass } = require('@radix-ui/colors')
2 |
3 | /** @type {import('tailwindcss').Config} */
4 | module.exports = {
5 | content: ['./**/*.vue'],
6 | theme: {
7 | extend: {
8 | colors: {
9 | ...blackA,
10 | ...grass,
11 | },
12 | },
13 | },
14 | plugins: [],
15 | }
16 |
--------------------------------------------------------------------------------
/docs/components/demo/PinInput/tailwind/tailwind.config.js:
--------------------------------------------------------------------------------
1 | const { mauve, grass } = require('@radix-ui/colors')
2 |
3 | /** @type {import('tailwindcss').Config} */
4 | module.exports = {
5 | content: ['./**/*.vue'],
6 | theme: {
7 | extend: {
8 | colors: {
9 | ...mauve,
10 | ...grass,
11 | },
12 | },
13 | },
14 | plugins: [],
15 | }
16 |
--------------------------------------------------------------------------------
/docs/components/demo/Progress/css/index.vue:
--------------------------------------------------------------------------------
1 |
13 |
14 |
15 |
20 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/docs/components/demo/Progress/css/styles.css:
--------------------------------------------------------------------------------
1 | @import '@radix-ui/colors/black-alpha.css';
2 |
3 | .ProgressRoot {
4 | position: relative;
5 | overflow: hidden;
6 | background: var(--black-a9);
7 | border-radius: 99999px;
8 | width: 300px;
9 | height: 25px;
10 |
11 | /* Fix overflow clipping in Safari */
12 | /* https://gist.github.com/domske/b66047671c780a238b51c51ffde8d3a0 */
13 | transform: translateZ(0);
14 | }
15 |
16 | .ProgressIndicator {
17 | background-color: white;
18 | width: 100%;
19 | height: 100%;
20 | transition: transform 660ms cubic-bezier(0.65, 0, 0.35, 1);
21 | }
--------------------------------------------------------------------------------
/docs/components/demo/Progress/tailwind/tailwind.config.js:
--------------------------------------------------------------------------------
1 | const { blackA } = require('@radix-ui/colors')
2 |
3 | /** @type {import('tailwindcss').Config} */
4 | module.exports = {
5 | content: ['./**/*.vue'],
6 | theme: {
7 | extend: {
8 | colors: {
9 | ...blackA,
10 | },
11 | },
12 | },
13 | plugins: [],
14 | }
15 |
--------------------------------------------------------------------------------
/docs/components/demo/RadioGroup/tailwind/tailwind.config.js:
--------------------------------------------------------------------------------
1 | const { blackA, green, grass } = require('@radix-ui/colors')
2 |
3 | /** @type {import('tailwindcss').Config} */
4 | module.exports = {
5 | content: ['./**/*.vue'],
6 | theme: {
7 | extend: {
8 | colors: {
9 | ...blackA,
10 | ...green,
11 | ...grass,
12 | },
13 | },
14 | },
15 | plugins: [],
16 | }
17 |
--------------------------------------------------------------------------------
/docs/components/demo/ScrollArea/tailwind/tailwind.config.js:
--------------------------------------------------------------------------------
1 | const { blackA, green, grass, mauve } = require('@radix-ui/colors')
2 |
3 | /** @type {import('tailwindcss').Config} */
4 | module.exports = {
5 | content: ['./**/*.vue'],
6 | theme: {
7 | extend: {
8 | colors: {
9 | ...blackA,
10 | ...green,
11 | ...grass,
12 | ...mauve,
13 | },
14 | },
15 | },
16 | plugins: [],
17 | }
18 |
--------------------------------------------------------------------------------
/docs/components/demo/Separator/css/styles.css:
--------------------------------------------------------------------------------
1 | @import '@radix-ui/colors/grass.css';
2 |
3 | .SeparatorRoot {
4 | background-color: var(--grass-6);
5 | }
6 | .SeparatorRoot[data-orientation='horizontal'] {
7 | height: 1px;
8 | width: 100%;
9 | }
10 | .SeparatorRoot[data-orientation='vertical'] {
11 | height: 100%;
12 | width: 1px;
13 | }
14 |
15 | .Text {
16 | color: white;
17 | font-size: 15px;
18 | line-height: 20px;
19 | }
--------------------------------------------------------------------------------
/docs/components/demo/Separator/tailwind/tailwind.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('tailwindcss').Config} */
2 | module.exports = {
3 | content: ['./**/*.vue'],
4 | theme: {
5 | extend: {
6 | colors: {},
7 | },
8 | },
9 | plugins: [],
10 | }
11 |
--------------------------------------------------------------------------------
/docs/components/demo/Slider/css/index.vue:
--------------------------------------------------------------------------------
1 |
8 |
9 |
10 |
14 |
15 |
16 |
17 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/docs/components/demo/Slider/tailwind/tailwind.config.js:
--------------------------------------------------------------------------------
1 | const { blackA } = require('@radix-ui/colors')
2 |
3 | /** @type {import('tailwindcss').Config} */
4 | module.exports = {
5 | content: ['./**/*.vue'],
6 | theme: {
7 | extend: {
8 | colors: {
9 | ...blackA,
10 | },
11 | },
12 | },
13 | plugins: [],
14 | }
15 |
--------------------------------------------------------------------------------
/docs/components/demo/Switch/css/index.vue:
--------------------------------------------------------------------------------
1 |
8 |
9 |
10 |
11 |
14 |
19 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/docs/components/demo/Switch/tailwind/tailwind.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('tailwindcss').Config} */
2 | module.exports = {
3 | content: ['./**/*.vue'],
4 | theme: {
5 | extend: {},
6 | },
7 | plugins: [],
8 | }
9 |
--------------------------------------------------------------------------------
/docs/components/demo/Tabs/tailwind/tailwind.config.js:
--------------------------------------------------------------------------------
1 | const { blackA, green, grass, mauve } = require('@radix-ui/colors')
2 |
3 | /** @type {import('tailwindcss').Config} */
4 | module.exports = {
5 | content: ['./**/*.vue'],
6 | theme: {
7 | extend: {
8 | colors: {
9 | ...blackA,
10 | ...green,
11 | ...grass,
12 | ...mauve,
13 | },
14 | },
15 | },
16 | plugins: [],
17 | }
18 |
--------------------------------------------------------------------------------
/docs/components/demo/TagsInput/css/styles.css:
--------------------------------------------------------------------------------
1 | @import '@radix-ui/colors/black-alpha.css';
2 | @import '@radix-ui/colors/green.css';
3 | @import '@radix-ui/colors/mauve.css';
4 | @import '@radix-ui/colors/grass.css';
5 |
6 | /* reset */
7 | button,
8 | fieldset,
9 | input {
10 | all: unset;
11 | }
--------------------------------------------------------------------------------
/docs/components/demo/TagsInput/tailwind/tailwind.config.js:
--------------------------------------------------------------------------------
1 | const { blackA, green, grass, mauve } = require('@radix-ui/colors')
2 |
3 | /** @type {import('tailwindcss').Config} */
4 | module.exports = {
5 | content: ['./**/*.vue'],
6 | theme: {
7 | extend: {
8 | colors: {
9 | ...blackA,
10 | ...green,
11 | ...grass,
12 | ...mauve,
13 | },
14 | },
15 | },
16 | plugins: [],
17 | }
18 |
--------------------------------------------------------------------------------
/docs/components/demo/TagsInputCombobox/css/styles.css:
--------------------------------------------------------------------------------
1 | @import '@radix-ui/colors/black-alpha.css';
2 | @import '@radix-ui/colors/green.css';
3 | @import '@radix-ui/colors/mauve.css';
4 | @import '@radix-ui/colors/grass.css';
5 |
6 | /* reset */
7 | button,
8 | fieldset,
9 | input {
10 | all: unset;
11 | }
--------------------------------------------------------------------------------
/docs/components/demo/TagsInputCombobox/tailwind/tailwind.config.js:
--------------------------------------------------------------------------------
1 | const { blackA, green, grass, mauve } = require('@radix-ui/colors')
2 |
3 | /** @type {import('tailwindcss').Config} */
4 | module.exports = {
5 | content: ['./**/*.vue'],
6 | theme: {
7 | extend: {
8 | colors: {
9 | ...blackA,
10 | ...green,
11 | ...grass,
12 | ...mauve,
13 | },
14 | },
15 | },
16 | plugins: [],
17 | }
18 |
--------------------------------------------------------------------------------
/docs/components/demo/Toggle/css/index.vue:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/docs/components/demo/Toggle/css/styles.css:
--------------------------------------------------------------------------------
1 | @import '@radix-ui/colors/black-alpha.css';
2 | @import '@radix-ui/colors/mauve.css';
3 | @import '@radix-ui/colors/grass.css';
4 |
5 | /* reset */
6 | button {
7 | all: unset;
8 | }
9 |
10 | .Toggle {
11 | background-color: white;
12 | color: var(--mauve-11);
13 | height: 35px;
14 | width: 35px;
15 | border-radius: 4px;
16 | display: flex;
17 | font-size: 15px;
18 | line-height: 1;
19 | align-items: center;
20 | justify-content: center;
21 | box-shadow: 0 2px 10px var(--black-a7);
22 | }
23 | .Toggle:hover {
24 | background-color: var(--grass-3);
25 | }
26 | .Toggle[data-state='on'] {
27 | background-color: var(--grass-6);
28 | color: var(--grass-12);
29 | }
30 | .Toggle:focus {
31 | box-shadow: 0 0 0 2px black;
32 | }
--------------------------------------------------------------------------------
/docs/components/demo/Toggle/tailwind/index.vue:
--------------------------------------------------------------------------------
1 |
8 |
9 |
10 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/docs/components/demo/Toggle/tailwind/tailwind.config.js:
--------------------------------------------------------------------------------
1 | const { blackA, green, grass, mauve } = require('@radix-ui/colors')
2 |
3 | /** @type {import('tailwindcss').Config} */
4 | module.exports = {
5 | content: ['./**/*.vue'],
6 | theme: {
7 | extend: {
8 | colors: {
9 | ...blackA,
10 | ...green,
11 | ...grass,
12 | ...mauve,
13 | },
14 | },
15 | },
16 | plugins: [],
17 | }
18 |
--------------------------------------------------------------------------------
/docs/components/demo/ToggleGroup/tailwind/tailwind.config.js:
--------------------------------------------------------------------------------
1 | const { blackA, green, grass, mauve } = require('@radix-ui/colors')
2 |
3 | /** @type {import('tailwindcss').Config} */
4 | module.exports = {
5 | content: ['./**/*.vue'],
6 | theme: {
7 | extend: {
8 | colors: {
9 | ...blackA,
10 | ...green,
11 | ...grass,
12 | ...mauve,
13 | },
14 | },
15 | },
16 | plugins: [],
17 | }
18 |
--------------------------------------------------------------------------------
/docs/components/demo/Toolbar/tailwind/tailwind.config.js:
--------------------------------------------------------------------------------
1 | const { blackA, green, grass, mauve } = require('@radix-ui/colors')
2 |
3 | /** @type {import('tailwindcss').Config} */
4 | module.exports = {
5 | content: ['./**/*.vue'],
6 | theme: {
7 | extend: {
8 | colors: {
9 | ...blackA,
10 | ...green,
11 | ...grass,
12 | ...mauve,
13 | },
14 | },
15 | },
16 | plugins: [],
17 | }
18 |
--------------------------------------------------------------------------------
/docs/components/prose/ProseA.vue:
--------------------------------------------------------------------------------
1 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/docs/components/prose/ProseCodeInline.vue:
--------------------------------------------------------------------------------
1 |
10 |
11 |
12 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/docs/components/prose/ProseH1.vue:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/docs/components/prose/ProseH2.vue:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/docs/components/prose/ProseH3.vue:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/docs/components/prose/ProseP.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/docs/components/prose/ProseTable.vue:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
--------------------------------------------------------------------------------
/docs/components/prose/ProseTbody.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/docs/components/prose/ProseTd.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | |
5 |
6 |
--------------------------------------------------------------------------------
/docs/components/prose/ProseTh.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | |
5 |
6 |
7 |
13 |
--------------------------------------------------------------------------------
/docs/components/prose/ProseThead.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/docs/components/prose/ProseTr.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/docs/components/prose/index.ts:
--------------------------------------------------------------------------------
1 | export { default as ProseA } from './ProseA.vue'
2 | export { default as ProseH1 } from './ProseH1.vue'
3 | export { default as ProseH2 } from './ProseH2.vue'
4 | export { default as ProseH3 } from './ProseH3.vue'
5 | export { default as ProseP } from './ProseP.vue'
6 | export { default as ProseTh } from './ProseTh.vue'
7 | export { default as ProseTd } from './ProseTd.vue'
8 | export { default as ProseTr } from './ProseTr.vue'
9 | export { default as ProseCodeInline } from './ProseCodeInline.vue'
10 | export { default as ProseTable } from './ProseTable.vue'
11 | export { default as ProseThead } from './ProseThead.vue'
12 | export { default as ProseTbody } from './ProseTbody.vue'
13 |
--------------------------------------------------------------------------------
/docs/content/guides/_dir.yml:
--------------------------------------------------------------------------------
1 | title: Guides
2 | icon: heroicons-outline:bookmark-alt
3 |
--------------------------------------------------------------------------------
/docs/content/meta/AccordionContent.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/AccordionHeader.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/AccordionTrigger.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/AlertDialogAction.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/AlertDialogCancel.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/AlertDialogDescription.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/AlertDialogTitle.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/AlertDialogTrigger.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/AvatarRoot.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/CollapsibleTrigger.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/ComboboxAnchor.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/ComboboxCancel.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/ComboboxEmpty.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/ComboboxGroup.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/ComboboxItemIndicator.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/ComboboxSeparator.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/ComboboxViewport.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/ConfigProvider.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
19 |
--------------------------------------------------------------------------------
/docs/content/meta/ContextMenuGroup.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/ContextMenuLabel.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/ContextMenuSeparator.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/DialogClose.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/DialogDescription.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/DialogTitle.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/DialogTrigger.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/DropdownMenuGroup.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/DropdownMenuLabel.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/DropdownMenuSeparator.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/HoverCardTrigger.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/MenubarGroup.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/MenubarLabel.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/MenubarMenu.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
11 |
--------------------------------------------------------------------------------
/docs/content/meta/MenubarSeparator.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/NavigationMenuList.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/PaginationEllipsis.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/PaginationFirst.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/PaginationLast.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/PaginationNext.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/PaginationPrev.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/PopoverClose.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/PopoverTrigger.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/ProgressIndicator.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/ScrollAreaCorner.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/ScrollAreaThumb.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/ScrollAreaViewport.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/SelectGroup.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/SelectIcon.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/SelectItemIndicator.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/SelectItemText.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/SelectScrollDownButton.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/SelectScrollUpButton.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/SelectSeparator.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/SelectViewport.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/SliderRange.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/SliderThumb.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/SliderTrack.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/SwitchThumb.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/TabsIndicator.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/TagsInputClear.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/TagsInputItemDelete.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/TagsInputItemText.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/ToastClose.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/ToastDescription.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/ToastTitle.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/ToolbarLink.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/ToolbarSeparator.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/TooltipTrigger.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/meta/VisuallyHidden.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/docs/content/overview/_dir.yml:
--------------------------------------------------------------------------------
1 | icon: ph:star-duotone
2 | navigation.redirect: /overview/getting-started
3 |
--------------------------------------------------------------------------------
/docs/content/overview/releases.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Releases
3 | description: Discover the latest release of Radix Vue.
4 | ---
5 |
6 |
7 |
8 | # Releases
9 |
10 |
11 | Discover the latest release of Radix Vue.
12 |
13 |
14 | [Latest releases on github](https://github.com/radix-vue/radix-vue/releases)
--------------------------------------------------------------------------------
/docs/content/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yyx990803/radix-vue/7ea1d13cec0fb4eb45fbaa2aa75489d3ac21af56/docs/content/public/favicon.ico
--------------------------------------------------------------------------------
/docs/content/public/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yyx990803/radix-vue/7ea1d13cec0fb4eb45fbaa2aa75489d3ac21af56/docs/content/public/logo.png
--------------------------------------------------------------------------------
/docs/content/public/new-ui.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yyx990803/radix-vue/7ea1d13cec0fb4eb45fbaa2aa75489d3ac21af56/docs/content/public/new-ui.jpg
--------------------------------------------------------------------------------
/docs/content/public/og.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yyx990803/radix-vue/7ea1d13cec0fb4eb45fbaa2aa75489d3ac21af56/docs/content/public/og.png
--------------------------------------------------------------------------------
/docs/content/utilities/use-id.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: useId
3 | description: Generate random id
4 | ---
5 |
6 | # useId
7 |
8 |
9 | Generate random id
10 |
11 |
12 |
13 | ## Usage
14 |
15 | ```ts
16 | import { useId } from 'radix-vue'
17 |
18 | const buttonId = useId() // radix-1
19 | ```
20 |
21 |
22 | ```ts
23 | import { useId } from 'radix-vue'
24 |
25 | const buttonId = useId('test-id') // test-id
26 | ```
27 |
--------------------------------------------------------------------------------
/packages/plugins/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "plugins",
3 | "type": "module",
4 | "version": "1.4.8",
5 | "description": "Nuxt module for Radix Vue",
6 | "license": "MIT",
7 | "keywords": [
8 | "radix",
9 | "radix-vue",
10 | "nuxt-module",
11 | "nuxt",
12 | "nuxt3"
13 | ],
14 | "sideEffects": false,
15 | "scripts": {
16 | "build": "unbuild",
17 | "generate": "tsx ./src/namespaced/generate",
18 | "stub": "unbuild --stub"
19 | },
20 | "dependencies": {
21 | "@nuxt/kit": "npm:@nuxt/kit@latest",
22 | "@nuxt/schema": "latest",
23 | "radix-vue": "file:../radix-vue",
24 | "tsx": "^4.1.2",
25 | "unbuild": "^2.0.0",
26 | "unplugin-vue-components": "^0.25.2"
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/packages/plugins/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "moduleResolution": "node",
4 | "module": "es2020"
5 | },
6 | "exclude": [
7 | "node_modules",
8 | "dist"
9 | ]
10 | }
11 |
--------------------------------------------------------------------------------
/packages/radix-vue/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | .DS_Store
12 | dist
13 | dist-ssr
14 | coverage
15 | *.local
16 |
17 | /cypress/videos/
18 | /cypress/screenshots/
19 |
20 | # Editor directories and files
21 | .vscode
22 | .vscode/*
23 | !.vscode/extensions.json
24 | .idea
25 | *.suo
26 | *.ntvs*
27 | *.njsproj
28 | *.sln
29 | *.sw?
30 |
31 | test-results/
32 | playwright-report/
33 |
--------------------------------------------------------------------------------
/packages/radix-vue/.prettierrc.json:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/packages/radix-vue/constant/index.ts:
--------------------------------------------------------------------------------
1 | export * from './components'
2 |
--------------------------------------------------------------------------------
/packages/radix-vue/env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
4 |
5 | import "vitest";
6 | import type { AxeMatchers } from "vitest-axe/matchers";
7 |
8 | declare module "vitest" {
9 | export interface Assertion extends AxeMatchers {}
10 | export interface AsymmetricMatchersContaining extends AxeMatchers {}
11 | }
--------------------------------------------------------------------------------
/packages/radix-vue/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | radix-vue playground
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/packages/radix-vue/namespaced.d.ts:
--------------------------------------------------------------------------------
1 | export * from "./dist/namespaced"
--------------------------------------------------------------------------------
/packages/radix-vue/resolver.d.ts:
--------------------------------------------------------------------------------
1 | export * from "./dist/resolver"
--------------------------------------------------------------------------------
/packages/radix-vue/src/Accordion/index.ts:
--------------------------------------------------------------------------------
1 | export {
2 | default as AccordionContent,
3 | type AccordionContentProps,
4 | } from './AccordionContent.vue'
5 | export {
6 | default as AccordionHeader,
7 | type AccordionHeaderProps,
8 | } from './AccordionHeader.vue'
9 | export {
10 | default as AccordionItem,
11 | type AccordionItemProps,
12 | } from './AccordionItem.vue'
13 | export {
14 | default as AccordionRoot,
15 | type AccordionRootProps,
16 | type AccordionRootEmits,
17 | } from './AccordionRoot.vue'
18 | export {
19 | default as AccordionTrigger,
20 | type AccordionTriggerProps,
21 | } from './AccordionTrigger.vue'
22 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/AlertDialog/AlertDialogAction.vue:
--------------------------------------------------------------------------------
1 |
7 |
8 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/AlertDialog/AlertDialogDescription.vue:
--------------------------------------------------------------------------------
1 |
7 |
8 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/AlertDialog/AlertDialogOverlay.vue:
--------------------------------------------------------------------------------
1 |
7 |
8 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/AlertDialog/AlertDialogPortal.vue:
--------------------------------------------------------------------------------
1 |
6 |
7 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/AlertDialog/AlertDialogRoot.vue:
--------------------------------------------------------------------------------
1 |
10 |
11 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/AlertDialog/AlertDialogTitle.vue:
--------------------------------------------------------------------------------
1 |
7 |
8 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/AlertDialog/AlertDialogTrigger.vue:
--------------------------------------------------------------------------------
1 |
7 |
8 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/AlertDialog/story/AlertDialog.story.vue:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/AspectRatio/__snapshots__/AspectRatio.test.ts.snap:
--------------------------------------------------------------------------------
1 | // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2 |
3 | exports[`given a default AspectRatio > should render as snapshot 1`] = `
4 | ""
7 | `;
8 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/AspectRatio/index.ts:
--------------------------------------------------------------------------------
1 | export {
2 | default as AspectRatio,
3 | type AspectRatioProps,
4 | } from './AspectRatio.vue'
5 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/AspectRatio/story/AspectRatio.story.vue:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Avatar/__snapshots__/Avatar.test.ts.snap:
--------------------------------------------------------------------------------
1 | // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2 |
3 | exports[`given an Avatar with fallback and a working image > should render as snapshot 1`] = `"
"`;
4 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Avatar/index.ts:
--------------------------------------------------------------------------------
1 | export { default as AvatarRoot, type AvatarRootProps } from './AvatarRoot.vue'
2 | export {
3 | default as AvatarImage,
4 | type AvatarImageProps,
5 | type AvatarImageEmits,
6 | } from './AvatarImage.vue'
7 | export {
8 | default as AvatarFallback,
9 | type AvatarFallbackProps,
10 | } from './AvatarFallback.vue'
11 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Checkbox/index.ts:
--------------------------------------------------------------------------------
1 | export {
2 | default as CheckboxRoot,
3 | type CheckboxRootProps,
4 | type CheckboxRootEmits,
5 | } from './CheckboxRoot.vue'
6 | export {
7 | default as CheckboxIndicator,
8 | type CheckboxIndicatorProps,
9 | } from './CheckboxIndicator.vue'
10 | export type {
11 | CheckedState as CheckboxCheckedState,
12 | } from './utils'
13 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Checkbox/utils.ts:
--------------------------------------------------------------------------------
1 | export type CheckedState = boolean | 'indeterminate'
2 |
3 | export function isIndeterminate(checked?: CheckedState): checked is 'indeterminate' {
4 | return checked === 'indeterminate'
5 | }
6 |
7 | export function getState(checked: CheckedState) {
8 | return isIndeterminate(checked) ? 'indeterminate' : checked ? 'checked' : 'unchecked'
9 | }
10 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Collapsible/index.ts:
--------------------------------------------------------------------------------
1 | export {
2 | default as CollapsibleRoot,
3 | type CollapsibleRootProps,
4 | type CollapsibleRootEmits,
5 | } from './CollapsibleRoot.vue'
6 | export {
7 | default as CollapsibleTrigger,
8 | type CollapsibleTriggerProps,
9 | } from './CollapsibleTrigger.vue'
10 | export {
11 | default as CollapsibleContent,
12 | type CollapsibleContentProps,
13 | } from './CollapsibleContent.vue'
14 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Collapsible/story/_Collapsible.vue:
--------------------------------------------------------------------------------
1 |
12 |
13 |
14 |
15 | Trigger
16 | Content
17 |
18 |
19 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Collection/index.ts:
--------------------------------------------------------------------------------
1 | export * from './Collection'
2 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Combobox/ComboboxAnchor.vue:
--------------------------------------------------------------------------------
1 |
6 |
7 |
16 |
17 |
18 |
19 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Combobox/ComboboxLabel.vue:
--------------------------------------------------------------------------------
1 |
8 |
9 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Combobox/ComboboxPortal.vue:
--------------------------------------------------------------------------------
1 |
6 |
7 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Combobox/ComboboxSeparator.vue:
--------------------------------------------------------------------------------
1 |
7 |
8 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/ConfigProvider/_ConfigProvider.vue:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/ConfigProvider/index.ts:
--------------------------------------------------------------------------------
1 | export { default as ConfigProvider, type ConfigProviderProps } from './ConfigProvider.vue'
2 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/ContextMenu/ContextMenuArrow.vue:
--------------------------------------------------------------------------------
1 |
7 |
8 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/ContextMenu/ContextMenuGroup.vue:
--------------------------------------------------------------------------------
1 |
7 |
8 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/ContextMenu/ContextMenuItem.vue:
--------------------------------------------------------------------------------
1 |
8 |
9 |
19 |
20 |
21 |
24 |
25 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/ContextMenu/ContextMenuItemIndicator.vue:
--------------------------------------------------------------------------------
1 |
7 |
8 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/ContextMenu/ContextMenuLabel.vue:
--------------------------------------------------------------------------------
1 |
6 |
7 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/ContextMenu/ContextMenuPortal.vue:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/ContextMenu/ContextMenuSeparator.vue:
--------------------------------------------------------------------------------
1 |
6 |
7 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/ContextMenu/ContextMenuSubTrigger.vue:
--------------------------------------------------------------------------------
1 |
6 |
7 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/ContextMenu/utils.ts:
--------------------------------------------------------------------------------
1 | export function isTouchOrPen(event: PointerEvent) {
2 | return event.pointerType !== 'mouse'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Dialog/DialogDescription.vue:
--------------------------------------------------------------------------------
1 |
7 |
8 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Dialog/DialogPortal.vue:
--------------------------------------------------------------------------------
1 |
6 |
7 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Dialog/DialogTitle.vue:
--------------------------------------------------------------------------------
1 |
7 |
8 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Dialog/story/Dialog.story.vue:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/DismissableLayer/index.ts:
--------------------------------------------------------------------------------
1 | export {
2 | default as DismissableLayer,
3 | type DismissableLayerEmits,
4 | type DismissableLayerProps,
5 | } from './DismissableLayer.vue'
6 | export { default as DismissableLayerBranch } from './DismissableLayerBranch.vue'
7 | export { type PointerDownOutsideEvent, type FocusOutsideEvent } from './utils'
8 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/DropdownMenu/DropdownMenuArrow.vue:
--------------------------------------------------------------------------------
1 |
7 |
8 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/DropdownMenu/DropdownMenuGroup.vue:
--------------------------------------------------------------------------------
1 |
7 |
8 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/DropdownMenu/DropdownMenuItem.vue:
--------------------------------------------------------------------------------
1 |
8 |
9 |
19 |
20 |
21 |
24 |
25 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/DropdownMenu/DropdownMenuItemIndicator.vue:
--------------------------------------------------------------------------------
1 |
7 |
8 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/DropdownMenu/DropdownMenuLabel.vue:
--------------------------------------------------------------------------------
1 |
7 |
8 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/DropdownMenu/DropdownMenuPortal.vue:
--------------------------------------------------------------------------------
1 |
6 |
7 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/DropdownMenu/DropdownMenuSeparator.vue:
--------------------------------------------------------------------------------
1 |
7 |
8 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/DropdownMenu/DropdownMenuSubTrigger.vue:
--------------------------------------------------------------------------------
1 |
7 |
8 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/FocusGuards/FocusGuards.vue:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/FocusGuards/index.ts:
--------------------------------------------------------------------------------
1 | export { default as FocusGuards } from './FocusGuards.vue'
2 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/FocusScope/index.ts:
--------------------------------------------------------------------------------
1 | export {
2 | default as FocusScope,
3 | type FocusScopeEmits,
4 | type FocusScopeProps,
5 | } from './FocusScope.vue'
6 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/HoverCard/HoverCardArrow.vue:
--------------------------------------------------------------------------------
1 |
7 |
8 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/HoverCard/HoverCardPortal.vue:
--------------------------------------------------------------------------------
1 |
6 |
7 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/HoverCard/index.ts:
--------------------------------------------------------------------------------
1 | export {
2 | default as HoverCardRoot,
3 | type HoverCardRootProps,
4 | type HoverCardRootEmits,
5 | } from './HoverCardRoot.vue'
6 | export {
7 | default as HoverCardTrigger,
8 | type HoverCardTriggerProps,
9 | } from './HoverCardTrigger.vue'
10 | export {
11 | default as HoverCardPortal,
12 | type HoverCardPortalProps,
13 | } from './HoverCardPortal.vue'
14 | export {
15 | default as HoverCardContent,
16 | type HoverCardContentProps,
17 | } from './HoverCardContent.vue'
18 | export {
19 | default as HoverCardArrow,
20 | type HoverCardArrowProps,
21 | } from './HoverCardArrow.vue'
22 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Label/index.ts:
--------------------------------------------------------------------------------
1 | export { default as Label, type LabelProps } from './Label.vue'
2 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Menu/MenuAnchor.vue:
--------------------------------------------------------------------------------
1 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Menu/MenuArrow.vue:
--------------------------------------------------------------------------------
1 |
6 |
7 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Menu/MenuGroup.vue:
--------------------------------------------------------------------------------
1 |
6 |
7 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Menu/MenuLabel.vue:
--------------------------------------------------------------------------------
1 |
6 |
7 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Menu/MenuPortal.vue:
--------------------------------------------------------------------------------
1 |
6 |
7 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Menu/MenuSeparator.vue:
--------------------------------------------------------------------------------
1 |
6 |
7 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Menu/story/_TickIcon.vue:
--------------------------------------------------------------------------------
1 |
2 |
15 |
16 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Menubar/MenubarArrow.vue:
--------------------------------------------------------------------------------
1 |
7 |
8 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Menubar/MenubarGroup.vue:
--------------------------------------------------------------------------------
1 |
6 |
7 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Menubar/MenubarItem.vue:
--------------------------------------------------------------------------------
1 |
8 |
9 |
19 |
20 |
21 |
24 |
25 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Menubar/MenubarItemIndicator.vue:
--------------------------------------------------------------------------------
1 |
7 |
8 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Menubar/MenubarLabel.vue:
--------------------------------------------------------------------------------
1 |
7 |
8 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Menubar/MenubarPortal.vue:
--------------------------------------------------------------------------------
1 |
6 |
7 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Menubar/MenubarSeparator.vue:
--------------------------------------------------------------------------------
1 |
7 |
8 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Menubar/MenubarSubTrigger.vue:
--------------------------------------------------------------------------------
1 |
7 |
8 |
14 |
15 |
16 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/NavigationMenu/story/_LinkGroup.vue:
--------------------------------------------------------------------------------
1 |
8 |
9 |
10 |
11 | -
12 |
16 | {{ item }}
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Pagination/PaginationEllipsis.vue:
--------------------------------------------------------------------------------
1 |
7 |
8 |
14 |
15 |
16 |
20 | …
21 |
22 |
23 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/PinInput/index.ts:
--------------------------------------------------------------------------------
1 | export { default as PinInputRoot, type PinInputRootProps, type PinInputRootEmits } from './PinInputRoot.vue'
2 | export { default as PinInputInput, type PinInputInputProps } from './PinInputInput.vue'
3 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Popover/PopoverArrow.vue:
--------------------------------------------------------------------------------
1 |
7 |
8 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Popover/PopoverPortal.vue:
--------------------------------------------------------------------------------
1 |
6 |
7 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Popover/story/CustomArrowSvg.vue:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Popper/Popper.test.ts:
--------------------------------------------------------------------------------
1 | import { beforeEach, describe, expect, it } from 'vitest'
2 | import Popper from './_Popper.vue'
3 | import type { VueWrapper } from '@vue/test-utils'
4 | import { mount } from '@vue/test-utils'
5 |
6 | describe('give default Popper', async () => {
7 | let wrapper: VueWrapper>
8 | globalThis.ResizeObserver = class ResizeObserver {
9 | observe() {}
10 | unobserve() {}
11 | disconnect() {}
12 | }
13 |
14 | beforeEach(() => {
15 | wrapper = mount(Popper, { attachTo: document.body })
16 | })
17 |
18 | it('should render correctly and match snapshot', async () => {
19 | expect(wrapper.element).toMatchSnapshot()
20 | })
21 | })
22 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Popper/_Popper.vue:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
10 |
11 | Anchor
12 |
13 |
14 |
15 | Content
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Popper/index.ts:
--------------------------------------------------------------------------------
1 | export { default as PopperRoot } from './PopperRoot.vue'
2 | export {
3 | default as PopperAnchor,
4 | type PopperAnchorProps,
5 | } from './PopperAnchor.vue'
6 | export {
7 | default as PopperContent,
8 | type PopperContentProps,
9 | PopperContentPropsDefaultValue,
10 | } from './PopperContent.vue'
11 | export {
12 | default as PopperArrow,
13 | type PopperArrowProps,
14 | } from './PopperArrow.vue'
15 | export * from './utils'
16 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Presence/index.ts:
--------------------------------------------------------------------------------
1 | export { default as Presence, type PresenceProps } from './Presence'
2 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Presence/story/PresenceBasic.story.vue:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
15 |
16 |
17 |
18 |
21 |
22 |
23 | Content
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Presence/story/_Animation.vue:
--------------------------------------------------------------------------------
1 |
12 |
13 |
14 |
15 |
16 |
17 |
18 | Content
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Primitive/index.ts:
--------------------------------------------------------------------------------
1 | export { Primitive, type PrimitiveProps, type AsTag } from './Primitive'
2 | export { Slot } from './Slot'
3 | export { usePrimitiveElement } from './usePrimitiveElement'
4 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Primitive/usePrimitiveElement.ts:
--------------------------------------------------------------------------------
1 | import { unrefElement } from '@vueuse/core'
2 | import { type ComponentPublicInstance, computed, ref } from 'vue'
3 |
4 | /** deprecated */
5 | export function usePrimitiveElement() {
6 | const primitiveElement = ref()
7 | const currentElement = computed(() => ['#text', '#comment'].includes(primitiveElement.value?.$el.nodeName) ? primitiveElement.value?.$el.nextElementSibling : unrefElement(primitiveElement))
8 |
9 | return {
10 | primitiveElement,
11 | currentElement,
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Progress/index.ts:
--------------------------------------------------------------------------------
1 | export {
2 | default as ProgressRoot,
3 | type ProgressRootProps,
4 | type ProgressRootEmits,
5 | } from './ProgressRoot.vue'
6 | export {
7 | default as ProgressIndicator,
8 | type ProgressIndicatorProps,
9 | } from './ProgressIndicator.vue'
10 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/RadioGroup/index.ts:
--------------------------------------------------------------------------------
1 | export {
2 | default as RadioGroupRoot,
3 | type RadioGroupRootProps,
4 | type RadioGroupRootEmits,
5 | } from './RadioGroupRoot.vue'
6 | export {
7 | default as RadioGroupItem,
8 | type RadioGroupItemProps,
9 | } from './RadioGroupItem.vue'
10 | export {
11 | default as RadioGroupIndicator,
12 | type RadioGroupIndicatorProps,
13 | } from './RadioGroupIndicator.vue'
14 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/RadioGroup/story/_Radio.vue:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
14 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/RovingFocus/index.ts:
--------------------------------------------------------------------------------
1 | export {
2 | default as RovingFocusGroup,
3 | type RovingFocusGroupProps,
4 | type RovingFocusGroupEmits,
5 | } from './RovingFocusGroup.vue'
6 | export {
7 | default as RovingFocusItem,
8 | type RovingFocusItemProps,
9 | } from './RovingFocusItem.vue'
10 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/RovingFocus/story/_ButtonGroup.vue:
--------------------------------------------------------------------------------
1 |
16 |
17 |
18 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/ScrollArea/index.ts:
--------------------------------------------------------------------------------
1 | export {
2 | default as ScrollAreaRoot,
3 | type ScrollAreaRootProps,
4 | } from './ScrollAreaRoot.vue'
5 | export {
6 | default as ScrollAreaViewport,
7 | type ScrollAreaViewportProps,
8 | } from './ScrollAreaViewport.vue'
9 | export {
10 | default as ScrollAreaScrollbar,
11 | type ScrollAreaScrollbarProps,
12 | } from './ScrollAreaScrollbar.vue'
13 | export {
14 | default as ScrollAreaThumb,
15 | type ScrollAreaThumbProps,
16 | } from './ScrollAreaThumb.vue'
17 | export {
18 | default as ScrollAreaCorner,
19 | type ScrollAreaCornerProps,
20 | } from './ScrollAreaCorner.vue'
21 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/ScrollArea/types.ts:
--------------------------------------------------------------------------------
1 | export type Direction = 'ltr' | 'rtl'
2 | export interface Sizes {
3 | content: number
4 | viewport: number
5 | scrollbar: {
6 | size: number
7 | paddingStart: number
8 | paddingEnd: number
9 | }
10 | }
11 |
12 | export type ScrollType = 'auto' | 'always' | 'scroll' | 'hover'
13 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Select/SelectIcon.vue:
--------------------------------------------------------------------------------
1 |
6 |
7 |
14 |
15 |
16 |
17 | ▼
18 |
19 |
20 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Select/SelectItemIndicator.vue:
--------------------------------------------------------------------------------
1 |
6 |
7 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Select/SelectLabel.vue:
--------------------------------------------------------------------------------
1 |
8 |
9 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Select/SelectPortal.vue:
--------------------------------------------------------------------------------
1 |
6 |
7 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Select/SelectProvider.vue:
--------------------------------------------------------------------------------
1 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Select/SelectSeparator.vue:
--------------------------------------------------------------------------------
1 |
6 |
7 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Select/utils.ts:
--------------------------------------------------------------------------------
1 | export const OPEN_KEYS = [' ', 'Enter', 'ArrowUp', 'ArrowDown']
2 | export const SELECTION_KEYS = [' ', 'Enter']
3 | export const CONTENT_MARGIN = 10
4 |
5 | export function shouldShowPlaceholder(value?: string) {
6 | return value === '' || value === undefined
7 | }
8 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Separator/Separator.test.ts:
--------------------------------------------------------------------------------
1 | import { expect, it } from 'vitest'
2 | import { axe } from 'vitest-axe'
3 | import Separator from './Separator.vue'
4 | import { mount } from '@vue/test-utils'
5 |
6 | it('should pass axe accessibility tests', async () => {
7 | const wrapper = mount(Separator)
8 | expect(await axe(wrapper.element)).toHaveNoViolations()
9 |
10 | const wrapperVertical = mount(Separator, {
11 | props: {
12 | orientation: 'vertical',
13 | },
14 | })
15 | expect(await axe(wrapperVertical.element)).toHaveNoViolations()
16 | })
17 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Separator/Separator.vue:
--------------------------------------------------------------------------------
1 |
6 |
7 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Separator/index.ts:
--------------------------------------------------------------------------------
1 | export { default as Separator, type SeparatorProps } from './Separator.vue'
2 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Slider/index.ts:
--------------------------------------------------------------------------------
1 | export {
2 | default as SliderRoot,
3 | type SliderRootProps,
4 | type SliderRootEmits,
5 | } from './SliderRoot.vue'
6 | export {
7 | default as SliderThumb,
8 | type SliderThumbProps,
9 | } from './SliderThumb.vue'
10 | export {
11 | default as SliderTrack,
12 | type SliderTrackProps,
13 | } from './SliderTrack.vue'
14 | export {
15 | default as SliderRange,
16 | type SliderRangeProps,
17 | } from './SliderRange.vue'
18 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Switch/_Switch.vue:
--------------------------------------------------------------------------------
1 |
8 |
9 |
10 | {{ checked ? "checked" : "unchecked" }}
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Switch/index.ts:
--------------------------------------------------------------------------------
1 | export {
2 | default as SwitchRoot,
3 | type SwitchRootProps,
4 | type SwitchRootEmits,
5 | } from './SwitchRoot.vue'
6 | export {
7 | default as SwitchThumb,
8 | type SwitchThumbProps,
9 | } from './SwitchThumb.vue'
10 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Tabs/index.ts:
--------------------------------------------------------------------------------
1 | export {
2 | default as TabsRoot,
3 | type TabsRootProps,
4 | type TabsRootEmits,
5 | } from './TabsRoot.vue'
6 | export {
7 | default as TabsList,
8 | type TabsListProps,
9 | } from './TabsList.vue'
10 | export {
11 | default as TabsContent,
12 | type TabsContentProps,
13 | } from './TabsContent.vue'
14 | export {
15 | default as TabsTrigger,
16 | type TabsTriggerProps,
17 | } from './TabsTrigger.vue'
18 | export {
19 | default as TabsIndicator,
20 | type TabsIndicatorProps,
21 | } from './TabsIndicator.vue'
22 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Tabs/utils.ts:
--------------------------------------------------------------------------------
1 | export function makeTriggerId(baseId: string, value: string) {
2 | return `${baseId}-trigger-${value}`
3 | }
4 |
5 | export function makeContentId(baseId: string, value: string) {
6 | return `${baseId}-content-${value}`
7 | }
8 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/TagsInput/TagsInputItemText.vue:
--------------------------------------------------------------------------------
1 |
8 |
9 |
19 |
20 |
21 |
22 | {{ itemContext.value.value }}
23 |
24 |
25 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/TagsInput/index.ts:
--------------------------------------------------------------------------------
1 | export { default as TagsInputRoot, type TagsInputRootProps, type TagsInputRootEmits } from './TagsInputRoot.vue'
2 | export { default as TagsInputInput, type TagsInputInputProps } from './TagsInputInput.vue'
3 | export { default as TagsInputItem, type TagsInputItemProps } from './TagsInputItem.vue'
4 | export { default as TagsInputItemText, type TagsInputItemTextProps } from './TagsInputItemText.vue'
5 | export { default as TagsInputItemDelete, type TagsInputItemDeleteProps } from './TagsInputItemDelete.vue'
6 | export { default as TagsInputClear, type TagsInputClearProps } from './TagsInputClear.vue'
7 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Teleport/index.ts:
--------------------------------------------------------------------------------
1 | export { default as TeleportPrimitive, type TeleportProps } from './Teleport.vue'
2 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Toast/ToastAnnounce.vue:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 | {{ providerContext.label.value }}
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Toast/ToastAnnounceExclude.vue:
--------------------------------------------------------------------------------
1 |
8 |
9 |
14 |
15 |
16 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Toast/ToastDescription.vue:
--------------------------------------------------------------------------------
1 |
7 |
8 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Toast/ToastTitle.vue:
--------------------------------------------------------------------------------
1 |
7 |
8 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Toast/index.ts:
--------------------------------------------------------------------------------
1 | export { default as ToastProvider, type ToastProviderProps } from './ToastProvider.vue'
2 | export { default as ToastRoot, type ToastRootProps, type ToastRootEmits } from './ToastRoot.vue'
3 | export { default as ToastAction, type ToastActionProps } from './ToastAction.vue'
4 | export { default as ToastClose, type ToastCloseProps } from './ToastClose.vue'
5 | export { default as ToastViewport, type ToastViewportProps } from './ToastViewport.vue'
6 | export { default as ToastTitle, type ToastTitleProps } from './ToastTitle.vue'
7 | export { default as ToastDescription, type ToastDescriptionProps } from './ToastDescription.vue'
8 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Toggle/index.ts:
--------------------------------------------------------------------------------
1 | export {
2 | default as Toggle,
3 | type ToggleProps,
4 | type ToggleEmits,
5 | } from './Toggle.vue'
6 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/ToggleGroup/index.ts:
--------------------------------------------------------------------------------
1 | export {
2 | default as ToggleGroupRoot,
3 | type ToggleGroupRootProps,
4 | type ToggleGroupRootEmits,
5 | } from './ToggleGroupRoot.vue'
6 | export {
7 | default as ToggleGroupItem,
8 | type ToggleGroupItemProps,
9 | } from './ToggleGroupItem.vue'
10 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Toolbar/ToolbarToggleItem.vue:
--------------------------------------------------------------------------------
1 |
7 |
8 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Toolbar/index.ts:
--------------------------------------------------------------------------------
1 | export {
2 | default as ToolbarRoot,
3 | type ToolbarRootProps,
4 | } from './ToolbarRoot.vue'
5 | export {
6 | default as ToolbarButton,
7 | type ToolbarButtonProps,
8 | } from './ToolbarButton.vue'
9 | export {
10 | default as ToolbarLink,
11 | type ToolbarLinkProps,
12 | } from './ToolbarLink.vue'
13 | export {
14 | default as ToolbarToggleGroup,
15 | type ToolbarToggleGroupProps,
16 | type ToolbarToggleGroupEmits,
17 | } from './ToolbarToggleGroup.vue'
18 | export {
19 | default as ToolbarToggleItem,
20 | type ToolbarToggleItemProps,
21 | } from './ToolbarToggleItem.vue'
22 | export {
23 | default as ToolbarSeparator,
24 | type ToolbarSeparatorProps,
25 | } from './ToolbarSeparator.vue'
26 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Tooltip/TooltipPortal.vue:
--------------------------------------------------------------------------------
1 |
6 |
7 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/Tooltip/index.ts:
--------------------------------------------------------------------------------
1 | export {
2 | default as TooltipRoot,
3 | type TooltipRootProps,
4 | type TooltipRootEmits,
5 | } from './TooltipRoot.vue'
6 | export {
7 | default as TooltipTrigger,
8 | type TooltipTriggerProps,
9 | } from './TooltipTrigger.vue'
10 | export {
11 | default as TooltipContent,
12 | type TooltipContentProps,
13 | type TooltipContentEmits,
14 | } from './TooltipContent.vue'
15 | export {
16 | default as TooltipArrow,
17 | type TooltipArrowProps,
18 | } from './TooltipArrow.vue'
19 | export {
20 | default as TooltipPortal,
21 | type TooltipPortalProps,
22 | } from './TooltipPortal.vue'
23 | export {
24 | default as TooltipProvider,
25 | type TooltipProviderProps,
26 | } from './TooltipProvider.vue'
27 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/VisuallyHidden/index.ts:
--------------------------------------------------------------------------------
1 | export { default as VisuallyHidden, type VisuallyHiddenProps } from './VisuallyHidden.vue'
2 | export { default as VisuallyHiddenInput } from './VisuallyHiddenInput.vue'
3 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/index.test.ts:
--------------------------------------------------------------------------------
1 | import { expect, it } from 'vitest'
2 | import * as Radix from './index'
3 | import { components, utilities } from '../constant'
4 |
5 | it('should expose the correct components', () => {
6 | expect(Object.keys(Radix)).toEqual([...Object.values(components).flat(), ...Object.values(utilities).flat()])
7 | })
8 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/shared/component/Arrow.test.ts:
--------------------------------------------------------------------------------
1 | import { expect, it } from 'vitest'
2 | import Arrow from './Arrow.vue'
3 | import { mount } from '@vue/test-utils'
4 | import { axe } from 'vitest-axe'
5 |
6 | it('should pass axe accessibility tests', async () => {
7 | const wrapper = mount(Arrow)
8 | expect(await axe(wrapper.element)).toHaveNoViolations()
9 | })
10 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/shared/component/index.ts:
--------------------------------------------------------------------------------
1 | export { default as Arrow } from './Arrow.vue'
2 | export { default as BaseSeparator } from './BaseSeparator.vue'
3 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/shared/handleAndDispatchCustomEvent.ts:
--------------------------------------------------------------------------------
1 | export function handleAndDispatchCustomEvent<
2 | E extends CustomEvent,
3 | OriginalEvent extends Event,
4 | >(
5 | name: string,
6 | handler: ((event: E) => void) | undefined,
7 | detail: { originalEvent: OriginalEvent } & (E extends CustomEvent
8 | ? D
9 | : never),
10 | ) {
11 | const target = detail.originalEvent.target
12 | const event = new CustomEvent(name, {
13 | bubbles: false,
14 | cancelable: true,
15 | detail,
16 | })
17 | if (handler)
18 | target.addEventListener(name, handler as EventListener, { once: true })
19 |
20 | target.dispatchEvent(event)
21 | }
22 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/shared/isValidVNodeElement.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Checks whether a given VNode is a render-vialble element.
3 | */
4 | export function isValidVNodeElement(input: any): boolean {
5 | return (
6 | input
7 | && (typeof input.type === 'string'
8 | || typeof input.type === 'object'
9 | || typeof input.type === 'function')
10 | )
11 | }
12 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/shared/object.ts:
--------------------------------------------------------------------------------
1 | export function pick(object: T, keys: K[]): Pick {
2 | return Object.assign(
3 | {},
4 | // eslint-disable-next-line array-callback-return
5 | ...keys.map((key) => {
6 | if (object && Object.prototype.hasOwnProperty.call(object, key))
7 | return { [key]: object[key] }
8 | }),
9 | )
10 | }
11 |
12 | export function omit(obj: T, ...keys: K[]): Omit {
13 | keys.forEach(key => delete obj[key])
14 | return obj
15 | }
16 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/shared/renderSlotFragments.ts:
--------------------------------------------------------------------------------
1 | import { Fragment, type VNode } from 'vue'
2 |
3 | export function renderSlotFragments(children?: VNode[]): VNode[] {
4 | if (!children)
5 | return []
6 | return children.flatMap((child) => {
7 | if (child.type === Fragment)
8 | return renderSlotFragments(child.children as VNode[])
9 |
10 | return [child]
11 | })
12 | }
13 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/shared/types.ts:
--------------------------------------------------------------------------------
1 | type DataOrientation = 'vertical' | 'horizontal'
2 | type Direction = 'ltr' | 'rtl'
3 | type Type = 'single' | 'multiple'
4 |
5 | type ScrollBodyOption = {
6 | padding?: boolean | number
7 | margin?: boolean | number
8 | }
9 |
10 | export type { DataOrientation, Direction, Type, ScrollBodyOption }
11 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/shared/useDirection.ts:
--------------------------------------------------------------------------------
1 | import { injectConfigProviderContext } from '@/ConfigProvider/ConfigProvider.vue'
2 | import type { Direction } from './types'
3 | import { type Ref, computed, ref } from 'vue'
4 |
5 | export function useDirection(dir?: Ref) {
6 | const context = injectConfigProviderContext({
7 | dir: ref('ltr'),
8 | })
9 | return computed(() => dir?.value || context.dir?.value || 'ltr')
10 | }
11 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/shared/useFormControl.ts:
--------------------------------------------------------------------------------
1 | import { type MaybeElementRef, toValue, unrefElement } from '@vueuse/core'
2 | import { computed } from 'vue'
3 |
4 | export function useFormControl(el: MaybeElementRef) {
5 | // We set this to true by default so that events bubble to forms without JS (SSR)
6 | return computed(() => toValue(el) ? Boolean(unrefElement(el)?.closest('form')) : true)
7 | }
8 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/shared/useForwardRef.ts:
--------------------------------------------------------------------------------
1 | // reference: https://github.com/vuejs/rfcs/issues/258#issuecomment-1068697672
2 | import { type ComponentPublicInstance, getCurrentInstance } from 'vue'
3 |
4 | export function useForwardRef() {
5 | const instance = getCurrentInstance()!
6 | function handleRefChange(ref: Element | ComponentPublicInstance | null) {
7 | if (typeof ref === 'object') {
8 | instance.exposed = ref
9 | instance.exposeProxy = ref
10 | }
11 | }
12 | return handleRefChange
13 | }
14 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/test/index.ts:
--------------------------------------------------------------------------------
1 | export * from '../test/utils'
2 |
--------------------------------------------------------------------------------
/packages/radix-vue/src/test/utils.ts:
--------------------------------------------------------------------------------
1 | import { vi } from 'vitest'
2 |
3 | export const handleSubmit = vi.fn((e) => {
4 | e.preventDefault()
5 | const formData = new FormData(e.target)
6 | return Object.fromEntries(formData as any)
7 | })
8 |
9 | export const sleep = (duration: number) => new Promise(resolve => setTimeout(resolve, duration))
10 |
--------------------------------------------------------------------------------
/packages/radix-vue/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "files": [],
3 | "extends": ["./tsconfig.app.json"]
4 | }
5 |
--------------------------------------------------------------------------------
/packages/radix-vue/tsconfig.node.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@tsconfig/node18/tsconfig.json",
3 | "include": [
4 | "vite.config.*",
5 | "vitest.config.*",
6 | "cypress.config.*",
7 | "nightwatch.conf.*",
8 | "playwright.config.*"
9 | ],
10 | "compilerOptions": {
11 | "composite": true,
12 | "module": "ESNext",
13 | "types": ["node"]
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/packages/radix-vue/vitest.setup.ts:
--------------------------------------------------------------------------------
1 | import { expect } from 'vitest'
2 | import * as matchers from 'vitest-axe/matchers'
3 | import { configureAxe } from 'vitest-axe'
4 | import 'vitest-canvas-mock'
5 |
6 | expect.extend(matchers)
7 |
8 | configureAxe({
9 | globalOptions: {
10 | rules: [{
11 | id: 'region', enabled: false,
12 | }],
13 | },
14 | })
15 |
--------------------------------------------------------------------------------
/playground/nuxt/.gitignore:
--------------------------------------------------------------------------------
1 | # Nuxt dev/build outputs
2 | .output
3 | .nuxt
4 | .nitro
5 | .cache
6 | dist
7 |
8 | # Node dependencies
9 | node_modules
10 |
11 | # Logs
12 | logs
13 | *.log
14 |
15 | # Misc
16 | .DS_Store
17 | .fleet
18 | .idea
19 |
20 | # Local env files
21 | .env
22 | .env.*
23 | !.env.example
24 |
--------------------------------------------------------------------------------
/playground/nuxt/.npmrc:
--------------------------------------------------------------------------------
1 | shamefully-hoist=true
2 | strict-peer-dependencies=false
3 |
--------------------------------------------------------------------------------
/playground/nuxt/components/Card.vue:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
--------------------------------------------------------------------------------
/playground/nuxt/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "nuxt-app",
3 | "private": true,
4 | "scripts": {
5 | "build": "nuxt build",
6 | "dev": "nuxt dev",
7 | "generate": "nuxt generate",
8 | "preview": "nuxt preview",
9 | "postinstall": "nuxt prepare"
10 | },
11 | "dependencies": {
12 | "radix-vue": "link:../../packages/radix-vue"
13 | },
14 | "devDependencies": {
15 | "@floating-ui/vue": "^1.0.2",
16 | "@iconify/vue": "^4.1.1",
17 | "@nuxt/devtools": "latest",
18 | "@nuxtjs/tailwindcss": "^6.8.0",
19 | "@radix-ui/colors": "^1.0.1",
20 | "@types/node": "^18.18.6",
21 | "nuxt": "^3.8.0"
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/playground/nuxt/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yyx990803/radix-vue/7ea1d13cec0fb4eb45fbaa2aa75489d3ac21af56/playground/nuxt/public/favicon.ico
--------------------------------------------------------------------------------
/playground/nuxt/server/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../.nuxt/tsconfig.server.json"
3 | }
4 |
--------------------------------------------------------------------------------
/playground/nuxt/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | // https://nuxt.com/docs/guide/concepts/typescript
3 | "extends": "./.nuxt/tsconfig.json"
4 | }
5 |
--------------------------------------------------------------------------------
/playground/vue3/.env.d.ts:
--------------------------------------------------------------------------------
1 | ///
--------------------------------------------------------------------------------
/playground/vue3/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | dist
12 | dist-ssr
13 | *.local
14 |
15 | # Editor directories and files
16 | .vscode/*
17 | !.vscode/extensions.json
18 | .idea
19 | .DS_Store
20 | *.suo
21 | *.ntvs*
22 | *.njsproj
23 | *.sln
24 | *.sw?
25 |
--------------------------------------------------------------------------------
/playground/vue3/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"]
3 | }
4 |
--------------------------------------------------------------------------------
/playground/vue3/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Vite + Vue + TS
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/playground/vue3/postcss.config.js:
--------------------------------------------------------------------------------
1 | export default {
2 | plugins: {
3 | tailwindcss: {},
4 | autoprefixer: {},
5 | },
6 | }
7 |
--------------------------------------------------------------------------------
/playground/vue3/src/assets/vue.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/playground/vue3/src/components/Card.vue:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
--------------------------------------------------------------------------------
/playground/vue3/src/main.ts:
--------------------------------------------------------------------------------
1 | import { createApp } from 'vue'
2 | import App from './App.vue'
3 | import './style.css'
4 |
5 | createApp(App).mount('#app')
6 |
--------------------------------------------------------------------------------
/playground/vue3/src/style.css:
--------------------------------------------------------------------------------
1 | @tailwind base;
2 | @tailwind components;
3 | @tailwind utilities;
--------------------------------------------------------------------------------
/playground/vue3/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
--------------------------------------------------------------------------------
/playground/vue3/tsconfig.node.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "composite": true,
4 | "skipLibCheck": true,
5 | "module": "ESNext",
6 | "moduleResolution": "bundler",
7 | "allowSyntheticDefaultImports": true
8 | },
9 | "include": ["vite.config.ts"]
10 | }
11 |
--------------------------------------------------------------------------------
/playground/vue3/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vite'
2 | import vue from '@vitejs/plugin-vue'
3 | import Component from 'unplugin-vue-components/vite'
4 |
5 | // https://vitejs.dev/config/
6 | export default defineConfig({
7 | plugins: [
8 | vue(),
9 | Component({
10 | dirs: ['../../docs/components/demo', './src/components'],
11 | dts: true,
12 | deep: true,
13 | directoryAsNamespace: true,
14 | exclude: [/\.md$/],
15 | }),
16 | ],
17 | })
18 |
--------------------------------------------------------------------------------
/pnpm-workspace.yaml:
--------------------------------------------------------------------------------
1 | packages:
2 | - 'packages/*'
3 | - docs
4 | - .histoire
5 |
--------------------------------------------------------------------------------