Repository: unovue/shadcn-vue Branch: dev Commit: e005af9299be Files: 5959 Total size: 34.7 MB Directory structure: gitextract_8l7sqfc6/ ├── .editorconfig ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug-report.yml │ │ ├── config.yml │ │ └── feature-request.yml │ ├── PULL_REQUEST_TEMPLATE.md │ ├── actions/ │ │ └── setup/ │ │ └── action.yml │ └── workflows/ │ ├── pkg.pr.new-module.yaml │ ├── pkg.pr.new.yaml │ ├── publish.yaml │ ├── release.yaml │ └── test.yaml ├── .gitignore ├── .vscode/ │ ├── extensions.json │ └── settings.json ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── apps/ │ └── v4/ │ ├── .gitignore │ ├── .wrangler/ │ │ └── deploy/ │ │ └── config.json │ ├── README.md │ ├── __registry__/ │ │ └── index.ts │ ├── app.vue │ ├── assets/ │ │ └── css/ │ │ ├── fonts.css │ │ ├── main.css │ │ └── themes.css │ ├── components/ │ │ ├── Announcement.vue │ │ ├── BaseColorPicker.vue │ │ ├── BlockDisplay.vue │ │ ├── BlockViewer.vue │ │ ├── BlockViewerCode.vue │ │ ├── BlockViewerFileTree.vue │ │ ├── BlockViewerIframe.vue │ │ ├── BlockViewerMobile.vue │ │ ├── BlockViewerToolbar.vue │ │ ├── BlockViewerTree.vue │ │ ├── BlockViewerView.vue │ │ ├── BlocksNav.vue │ │ ├── CarbonAds.vue │ │ ├── ChartDisplay.vue │ │ ├── ChartToolbar.vue │ │ ├── ChartsNav.vue │ │ ├── CodeBlockCommand.vue │ │ ├── Color.vue │ │ ├── ColorFormatSelector.vue │ │ ├── ColorIndicator.vue │ │ ├── ColorPalette.vue │ │ ├── ColorsNav.vue │ │ ├── ComponentPreviewTabs.vue │ │ ├── ComponentSource.vue │ │ ├── ComponentWrapper.vue │ │ ├── CopyButton.vue │ │ ├── CopyCodeButton.vue │ │ ├── CreateProjectDialog.vue │ │ ├── Customizer.vue │ │ ├── CustomizerCode.vue │ │ ├── CustomizerControls.vue │ │ ├── DocsCopyPage.vue │ │ ├── DocsSidebar.vue │ │ ├── DocsTableOfContents.vue │ │ ├── ExamplesNav.vue │ │ ├── FontPicker.vue │ │ ├── GitHubLink.vue │ │ ├── IconLibraryPicker.vue │ │ ├── IconPlaceholder.vue │ │ ├── Icons.ts │ │ ├── ItemExplorer.vue │ │ ├── ItemPicker.vue │ │ ├── LockButton.vue │ │ ├── MainNav.vue │ │ ├── MenuAccentPicker.vue │ │ ├── MenuColorPicker.vue │ │ ├── MobileNav.vue │ │ ├── ModeSwitcher.vue │ │ ├── NavHeader.vue │ │ ├── OgImage/ │ │ │ └── Custom.vue │ │ ├── PageActions.vue │ │ ├── PageHeader.vue │ │ ├── PageHeaderDescription.vue │ │ ├── PageHeaderHeading.vue │ │ ├── PageNav.vue │ │ ├── PresetPicker.vue │ │ ├── Preview.vue │ │ ├── RadiusPicker.vue │ │ ├── ShareButton.vue │ │ ├── SiteBody.vue │ │ ├── SiteConfig.vue │ │ ├── SiteFooter.vue │ │ ├── SiteHeader.vue │ │ ├── StylePicker.vue │ │ ├── ThemeCustomizer.vue │ │ ├── ThemePicker.vue │ │ ├── ThemeSelector.vue │ │ ├── ToolbarControls.vue │ │ ├── WelcomeDialog.vue │ │ ├── _internal/ │ │ │ └── sink/ │ │ │ ├── AccordionDemo.vue │ │ │ ├── AlertDemo.vue │ │ │ ├── AlertDialogDemo.vue │ │ │ ├── AspectRatioDemo.vue │ │ │ ├── AvatarDemo.vue │ │ │ ├── BadgeDemo.vue │ │ │ ├── BreadcrumbDemo.vue │ │ │ ├── ButtonDemo.vue │ │ │ ├── CalendarDemo.vue │ │ │ ├── CardDemo.vue │ │ │ ├── CarouselDemo.vue │ │ │ ├── CheckboxDemo.vue │ │ │ ├── CollapsibleDemo.vue │ │ │ ├── ComboboxDemo.vue │ │ │ ├── CommandDemo.vue │ │ │ ├── ContextMenuDemo.vue │ │ │ ├── DataTableDemoColumn.vue │ │ │ ├── DatePickerDemo.vue │ │ │ ├── DialogDemo.vue │ │ │ ├── DrawerDemo.vue │ │ │ ├── DropdownMenuDemo.vue │ │ │ ├── FormDemo.vue │ │ │ ├── FormsDemo.vue │ │ │ ├── HoverCardDemo.vue │ │ │ ├── InputDemo.vue │ │ │ ├── LabelDemo.vue │ │ │ ├── MenubarDemo.vue │ │ │ ├── NavigationMenuDemo.vue │ │ │ ├── NavigationMenuItem.vue │ │ │ ├── PaginationDemo.vue │ │ │ ├── PinInputDemo.vue │ │ │ ├── PopoverDemo.vue │ │ │ ├── ProgressDemo.vue │ │ │ ├── RadioGroupDemo.vue │ │ │ ├── ResizableDemo.vue │ │ │ ├── ScrollAreaDemo.vue │ │ │ ├── SelectDemo.vue │ │ │ ├── SeparatorDemo.vue │ │ │ ├── SheetDemo.vue │ │ │ ├── SkeletonDemo.vue │ │ │ ├── SliderDemo.vue │ │ │ ├── SonnerDemo.vue │ │ │ ├── SwitchDemo.vue │ │ │ ├── TableDemo.vue │ │ │ ├── TabsDemo.vue │ │ │ ├── TextareaDemo.vue │ │ │ ├── ToggleDemo.vue │ │ │ ├── ToggleGroupDemo.vue │ │ │ └── TooltipDemo.vue │ │ ├── cards/ │ │ │ ├── ActivityGoal.vue │ │ │ ├── Calendar.vue │ │ │ ├── Chat.vue │ │ │ ├── CookieSettings.vue │ │ │ ├── CreateAccount.vue │ │ │ ├── Demo.vue │ │ │ ├── ExerciseMinutes.vue │ │ │ ├── Forms.vue │ │ │ ├── PaymentMethod.vue │ │ │ ├── Payments.vue │ │ │ ├── ReportIssue.vue │ │ │ ├── Share.vue │ │ │ ├── Stats.vue │ │ │ └── TeamMembers.vue │ │ ├── command-menu/ │ │ │ ├── CommandItem.vue │ │ │ ├── CommandMenu.vue │ │ │ └── CommandMenuKbd.vue │ │ ├── content/ │ │ │ ├── ButtonA.vue │ │ │ ├── Callout.vue │ │ │ ├── CodeCollapsibleWrapper.vue │ │ │ ├── CodeTabs.vue │ │ │ ├── ComponentPreview.vue │ │ │ ├── ComponentsList.vue │ │ │ ├── LinkedCard.vue │ │ │ ├── ProseA.vue │ │ │ ├── ProseBlockQuote.vue │ │ │ ├── ProseCode.vue │ │ │ ├── ProseH1.vue │ │ │ ├── ProseH2.vue │ │ │ ├── ProseH3.vue │ │ │ ├── ProseH4.vue │ │ │ ├── ProseH5.vue │ │ │ ├── ProseH6.vue │ │ │ ├── ProseHr.vue │ │ │ ├── ProseImg.vue │ │ │ ├── ProseLi.vue │ │ │ ├── ProseOl.vue │ │ │ ├── ProseP.vue │ │ │ ├── ProsePre.vue │ │ │ ├── ProseStrong.vue │ │ │ ├── ProseTable.vue │ │ │ ├── ProseTd.vue │ │ │ ├── ProseTh.vue │ │ │ ├── ProseTr.vue │ │ │ ├── ProseUl.vue │ │ │ ├── Step.vue │ │ │ ├── Steps.vue │ │ │ ├── Tabs.vue │ │ │ ├── TabsContent.vue │ │ │ ├── TabsList.vue │ │ │ ├── TabsTrigger.vue │ │ │ └── VueSchoolLink.vue │ │ ├── demo/ │ │ │ ├── AccordionDemo.vue │ │ │ ├── AlertDemo.vue │ │ │ ├── AlertDestructive.vue │ │ │ ├── AlertDialogDemo.vue │ │ │ ├── AspectRatioDemo.vue │ │ │ ├── AvatarDemo.vue │ │ │ ├── BadgeDemo.vue │ │ │ ├── BadgeDestructive.vue │ │ │ ├── BadgeOutline.vue │ │ │ ├── BadgeSecondary.vue │ │ │ ├── BreadcrumbCollapsedDemo.vue │ │ │ ├── BreadcrumbCustomSeparatorDemo.vue │ │ │ ├── BreadcrumbDemo.vue │ │ │ ├── BreadcrumbDropdownDemo.vue │ │ │ ├── BreadcrumbLinkDemo.vue │ │ │ ├── BreadcrumbResponsiveDemo.vue │ │ │ ├── ButtonDefault.vue │ │ │ ├── ButtonDemo.vue │ │ │ ├── ButtonDestructive.vue │ │ │ ├── ButtonGhost.vue │ │ │ ├── ButtonGroupDemo.vue │ │ │ ├── ButtonGroupInputGroupDemo.vue │ │ │ ├── ButtonGroupNestedDemo.vue │ │ │ ├── ButtonGroupOrientationDemo.vue │ │ │ ├── ButtonGroupSeparatorDemo.vue │ │ │ ├── ButtonGroupSizeDemo.vue │ │ │ ├── ButtonGroupSplitDemo.vue │ │ │ ├── ButtonGroupWithDropdownMenuDemo.vue │ │ │ ├── ButtonGroupWithInputDemo.vue │ │ │ ├── ButtonGroupWithPopoverDemo.vue │ │ │ ├── ButtonGroupWithSelectDemo.vue │ │ │ ├── ButtonIcon.vue │ │ │ ├── ButtonLink.vue │ │ │ ├── ButtonLoading.vue │ │ │ ├── ButtonOutline.vue │ │ │ ├── ButtonRounded.vue │ │ │ ├── ButtonSecondary.vue │ │ │ ├── ButtonSize.vue │ │ │ ├── ButtonWithIcon.vue │ │ │ ├── CREATED_COMPONENTS.md │ │ │ ├── CalendarCustomCellSize.vue │ │ │ ├── CalendarDateAndTimePicker.vue │ │ │ ├── CalendarDateBirth.vue │ │ │ ├── CalendarDemo.vue │ │ │ ├── CalendarNaturalLanguagePicker.vue │ │ │ ├── CalendarPersianDemo.vue │ │ │ ├── CalendarRangeDemo.vue │ │ │ ├── CalendarSystems.vue │ │ │ ├── CalendarYearAndMonthSelector.vue │ │ │ ├── CardDemo.vue │ │ │ ├── CarouselApi.vue │ │ │ ├── CarouselDemo.vue │ │ │ ├── CarouselOrientation.vue │ │ │ ├── CarouselPlugin.vue │ │ │ ├── CarouselSize.vue │ │ │ ├── CarouselSpacing.vue │ │ │ ├── ChartBarDemo.vue │ │ │ ├── ChartBarDemoAxis.vue │ │ │ ├── ChartBarDemoLegend.vue │ │ │ ├── ChartBarDemoTooltip.vue │ │ │ ├── ChartDemo.vue │ │ │ ├── CheckboxDemo.vue │ │ │ ├── CheckboxDisabled.vue │ │ │ ├── CollapsibleDemo.vue │ │ │ ├── ComboboxDemo.vue │ │ │ ├── CommandDemo.vue │ │ │ ├── ContextMenuDemo.vue │ │ │ ├── DataTableDemo.vue │ │ │ ├── DatePickerDemo.vue │ │ │ ├── DialogCloseButton.vue │ │ │ ├── DialogDemo.vue │ │ │ ├── DialogForm.vue │ │ │ ├── DialogResponsive.vue │ │ │ ├── DrawerDemo.vue │ │ │ ├── DropdownMenuDemo.vue │ │ │ ├── EmptyAvatarDemo.vue │ │ │ ├── EmptyAvatarGroupDemo.vue │ │ │ ├── EmptyBackgroundDemo.vue │ │ │ ├── EmptyDemo.vue │ │ │ ├── EmptyInputGroupDemo.vue │ │ │ ├── EmptyOutlineDemo.vue │ │ │ ├── FieldCheckboxDemo.vue │ │ │ ├── FieldChoiceCardDemo.vue │ │ │ ├── FieldDemo.vue │ │ │ ├── FieldFieldsetDemo.vue │ │ │ ├── FieldGroupDemo.vue │ │ │ ├── FieldInputDemo.vue │ │ │ ├── FieldRadioDemo.vue │ │ │ ├── FieldResponsiveDemo.vue │ │ │ ├── FieldSelectDemo.vue │ │ │ ├── FieldSliderDemo.vue │ │ │ ├── FieldSwitchDemo.vue │ │ │ ├── FieldTextareaDemo.vue │ │ │ ├── FormDemo.vue │ │ │ ├── HoverCardDemo.vue │ │ │ ├── InputDemo.vue │ │ │ ├── InputDisabled.vue │ │ │ ├── InputFile.vue │ │ │ ├── InputForm.vue │ │ │ ├── InputFormAutoAnimate.vue │ │ │ ├── InputGroupDemo.vue │ │ │ ├── InputGroupWithButton.vue │ │ │ ├── InputGroupWithButtonGroup.vue │ │ │ ├── InputGroupWithCustomInput.vue │ │ │ ├── InputGroupWithDropdown.vue │ │ │ ├── InputGroupWithIcon.vue │ │ │ ├── InputGroupWithLabel.vue │ │ │ ├── InputGroupWithSpinner.vue │ │ │ ├── InputGroupWithText.vue │ │ │ ├── InputGroupWithTextarea.vue │ │ │ ├── InputGroupWithTooltip.vue │ │ │ ├── InputOTPControlledDemo.vue │ │ │ ├── InputOTPDemo.vue │ │ │ ├── InputOTPFormDemo.vue │ │ │ ├── InputOTPPatternDemo.vue │ │ │ ├── InputOTPSeparatorDemo.vue │ │ │ ├── InputWithButton.vue │ │ │ ├── InputWithLabel.vue │ │ │ ├── InputWithText.vue │ │ │ ├── ItemAvatarDemo.vue │ │ │ ├── ItemDemo.vue │ │ │ ├── ItemDropdownDemo.vue │ │ │ ├── ItemGroupDemo.vue │ │ │ ├── ItemHeaderDemo.vue │ │ │ ├── ItemIconDemo.vue │ │ │ ├── ItemImageDemo.vue │ │ │ ├── ItemLinkDemo.vue │ │ │ ├── ItemSizeDemo.vue │ │ │ ├── ItemVariantDemo.vue │ │ │ ├── KbdDemo.vue │ │ │ ├── KbdGroupDemo.vue │ │ │ ├── KbdWithButton.vue │ │ │ ├── KbdWithInputGroup.vue │ │ │ ├── KbdWithTooltip.vue │ │ │ ├── LabelDemo.vue │ │ │ ├── MenubarDemo.vue │ │ │ ├── NativeSelectDemo.vue │ │ │ ├── NativeSelectDisabledDemo.vue │ │ │ ├── NativeSelectFormDemo.vue │ │ │ ├── NativeSelectGroupsDemo.vue │ │ │ ├── NativeSelectInputGroupDemo.vue │ │ │ ├── NativeSelectInvalidDemo.vue │ │ │ ├── NavigationMenuDemo.vue │ │ │ ├── NavigationMenuItem.vue │ │ │ ├── NumberFieldCurrencyDemo.vue │ │ │ ├── NumberFieldDecimalDemo.vue │ │ │ ├── NumberFieldDemo.vue │ │ │ ├── NumberFieldDisabledDemo.vue │ │ │ ├── NumberFieldFormDemo.vue │ │ │ ├── NumberFieldPercentageDemo.vue │ │ │ ├── PaginationDemo.vue │ │ │ ├── PinInputDemo.vue │ │ │ ├── PopoverDemo.vue │ │ │ ├── ProgressDemo.vue │ │ │ ├── RadioGroupDemo.vue │ │ │ ├── ResizableDemo.vue │ │ │ ├── ScrollAreaDemo.vue │ │ │ ├── SelectDemo.vue │ │ │ ├── SelectMultipleDemo.vue │ │ │ ├── SelectScrollable.vue │ │ │ ├── SeparatorDemo.vue │ │ │ ├── SheetDemo.vue │ │ │ ├── SidebarDemo.vue │ │ │ ├── SkeletonDemo.vue │ │ │ ├── SliderDemo.vue │ │ │ ├── SonnerDemo.vue │ │ │ ├── SonnerTypesDemo.vue │ │ │ ├── SonnerWithDialogDemo.vue │ │ │ ├── SpinnerBadgeDemo.vue │ │ │ ├── SpinnerBasic.vue │ │ │ ├── SpinnerButtonDemo.vue │ │ │ ├── SpinnerColorDemo.vue │ │ │ ├── SpinnerCustomDemo.vue │ │ │ ├── SpinnerDemo.vue │ │ │ ├── SpinnerEmptyDemo.vue │ │ │ ├── SpinnerInputGroupDemo.vue │ │ │ ├── SpinnerItemDemo.vue │ │ │ ├── SpinnerSizeDemo.vue │ │ │ ├── StepperDemo.vue │ │ │ ├── StepperForm.vue │ │ │ ├── StepperHorizental.vue │ │ │ ├── StepperVertical.vue │ │ │ ├── SwitchDemo.vue │ │ │ ├── TableDemo.vue │ │ │ ├── TabsDemo.vue │ │ │ ├── TagsInputDemo.vue │ │ │ ├── TagsInputWithListbox.vue │ │ │ ├── TanStackFormArray.vue │ │ │ ├── TanStackFormCheckbox.vue │ │ │ ├── TanStackFormComplex.vue │ │ │ ├── TanStackFormDemo.vue │ │ │ ├── TanStackFormInput.vue │ │ │ ├── TanStackFormRadioGroup.vue │ │ │ ├── TanStackFormSelect.vue │ │ │ ├── TanStackFormSwitch.vue │ │ │ ├── TanStackFormTextarea.vue │ │ │ ├── TextareaDemo.vue │ │ │ ├── TextareaDisabled.vue │ │ │ ├── ToggleDemo.vue │ │ │ ├── ToggleDisabledDemo.vue │ │ │ ├── ToggleGroupDefaultDemo.vue │ │ │ ├── ToggleGroupDemo.vue │ │ │ ├── ToggleGroupDisabledDemo.vue │ │ │ ├── ToggleGroupLargeDemo.vue │ │ │ ├── ToggleGroupSingleDemo.vue │ │ │ ├── ToggleGroupSmallDemo.vue │ │ │ ├── ToggleLargeDemo.vue │ │ │ ├── ToggleOutlineDemo.vue │ │ │ ├── ToggleSmallDemo.vue │ │ │ ├── ToggleTextDemo.vue │ │ │ ├── TooltipDemo.vue │ │ │ ├── TypographyBlockquote.vue │ │ │ ├── TypographyDemo.vue │ │ │ ├── TypographyH1.vue │ │ │ ├── TypographyH2.vue │ │ │ ├── TypographyH3.vue │ │ │ ├── TypographyH4.vue │ │ │ ├── TypographyInlineCode.vue │ │ │ ├── TypographyLarge.vue │ │ │ ├── TypographyLead.vue │ │ │ ├── TypographyList.vue │ │ │ ├── TypographyMuted.vue │ │ │ ├── TypographyP.vue │ │ │ ├── TypographySmall.vue │ │ │ ├── TypographyTable.vue │ │ │ ├── VeeValidateArrayDemo.vue │ │ │ ├── VeeValidateCheckboxDemo.vue │ │ │ ├── VeeValidateComplexDemo.vue │ │ │ ├── VeeValidateDemo.vue │ │ │ ├── VeeValidateInputDemo.vue │ │ │ ├── VeeValidatePasswordDemo.vue │ │ │ ├── VeeValidateRadioGroupDemo.vue │ │ │ ├── VeeValidateSelectDemo.vue │ │ │ ├── VeeValidateSwitchDemo.vue │ │ │ ├── VeeValidateTextareaDemo.vue │ │ │ └── index.ts │ │ ├── examples/ │ │ │ ├── AppearanceSettings.vue │ │ │ ├── ButtonGroupDemo.vue │ │ │ ├── ButtonGroupNested.vue │ │ │ ├── ButtonGroupPopover.vue │ │ │ ├── EmptyAvatarGroup.vue │ │ │ ├── ExamplesRoot.vue │ │ │ ├── FieldCheckbox.vue │ │ │ ├── FieldDemo.vue │ │ │ ├── FieldHear.vue │ │ │ ├── InputGroupButton.vue │ │ │ ├── ItemDemo.vue │ │ │ ├── NotionPromptForm.vue │ │ │ ├── SpinnerBadge.vue │ │ │ ├── SpinnerEmpty.vue │ │ │ ├── authentication/ │ │ │ │ └── components/ │ │ │ │ └── UserAuthForm.vue │ │ │ ├── dashboard/ │ │ │ │ ├── components/ │ │ │ │ │ ├── AppSidebar.vue │ │ │ │ │ ├── ChartAreaInteractive.vue │ │ │ │ │ ├── DataTable.vue │ │ │ │ │ ├── DragHandle.vue │ │ │ │ │ ├── DraggableRow.vue │ │ │ │ │ ├── NavDocuments.vue │ │ │ │ │ ├── NavMain.vue │ │ │ │ │ ├── NavSecondary.vue │ │ │ │ │ ├── NavUser.vue │ │ │ │ │ ├── SectionCards.vue │ │ │ │ │ └── SiteHeader.vue │ │ │ │ └── data.json │ │ │ ├── playground/ │ │ │ │ ├── components/ │ │ │ │ │ ├── CodeViewer.vue │ │ │ │ │ ├── MaxLengthSelector.vue │ │ │ │ │ ├── ModelSelector.vue │ │ │ │ │ ├── PresetActions.vue │ │ │ │ │ ├── PresetSave.vue │ │ │ │ │ ├── PresetSelector.vue │ │ │ │ │ ├── PresetShare.vue │ │ │ │ │ ├── TemperatureSelector.vue │ │ │ │ │ └── TopPSelector.vue │ │ │ │ └── data/ │ │ │ │ ├── models.ts │ │ │ │ └── presets.ts │ │ │ └── tasks/ │ │ │ ├── components/ │ │ │ │ ├── DataTable.vue │ │ │ │ ├── DataTableColumnHeader.vue │ │ │ │ ├── DataTableFacetedFilter.vue │ │ │ │ ├── DataTablePagination.vue │ │ │ │ ├── DataTableRowActions.vue │ │ │ │ ├── DataTableToolbar.vue │ │ │ │ ├── DataTableViewOptions.vue │ │ │ │ ├── UserNav.vue │ │ │ │ └── columns.ts │ │ │ └── data/ │ │ │ ├── data.ts │ │ │ ├── schema.ts │ │ │ └── tasks.json │ │ └── picker/ │ │ ├── Picker.vue │ │ ├── PickerCheckboxItem.vue │ │ ├── PickerContent.vue │ │ ├── PickerExample.vue │ │ ├── PickerGroup.vue │ │ ├── PickerItem.vue │ │ ├── PickerLabel.vue │ │ ├── PickerPortal.vue │ │ ├── PickerRadioGroup.vue │ │ ├── PickerRadioItem.vue │ │ ├── PickerSeparator.vue │ │ ├── PickerShortcut.vue │ │ ├── PickerSub.vue │ │ ├── PickerSubContent.vue │ │ ├── PickerSubTrigger.vue │ │ └── PickerTrigger.vue │ ├── composables/ │ │ ├── useColor.ts │ │ ├── useDesignSystemProvider.ts │ │ ├── useDesignSystemSearchParams.ts │ │ ├── useIframeMessageListener.ts │ │ ├── useIsMac.ts │ │ ├── useLocks.ts │ │ ├── useMobile.ts │ │ ├── useNavigation.ts │ │ └── useUserConfig.ts │ ├── constants/ │ │ └── charts.ts │ ├── content/ │ │ └── docs/ │ │ ├── .about.md │ │ ├── .charts.md │ │ ├── .contribution.md │ │ ├── .tailwind-v4.md │ │ ├── .typography.md │ │ ├── 01.introduction.md │ │ ├── 02.components.md │ │ ├── 02.installation.md │ │ ├── 03.components-json.md │ │ ├── 04.theming.md │ │ ├── 05.dark-mode.md │ │ ├── 06.cli.md │ │ ├── 07.javascript.md │ │ ├── 09.figma.md │ │ ├── 10.changelog.md │ │ ├── 11.legacy.md │ │ ├── components/ │ │ │ ├── accordion.md │ │ │ ├── alert-dialog.md │ │ │ ├── alert.md │ │ │ ├── aspect-ratio.md │ │ │ ├── avatar.md │ │ │ ├── badge.md │ │ │ ├── breadcrumb.md │ │ │ ├── button-group.md │ │ │ ├── button.md │ │ │ ├── calendar.md │ │ │ ├── card.md │ │ │ ├── carousel.md │ │ │ ├── chart.md │ │ │ ├── checkbox.md │ │ │ ├── collapsible.md │ │ │ ├── combobox.md │ │ │ ├── command.md │ │ │ ├── context-menu.md │ │ │ ├── data-table.md │ │ │ ├── date-picker.md │ │ │ ├── dialog.md │ │ │ ├── drawer.md │ │ │ ├── dropdown-menu.md │ │ │ ├── empty.md │ │ │ ├── field.md │ │ │ ├── form.md │ │ │ ├── hover-card.md │ │ │ ├── input-group.md │ │ │ ├── input-otp.md │ │ │ ├── input.md │ │ │ ├── item.md │ │ │ ├── kbd.md │ │ │ ├── label.md │ │ │ ├── menubar.md │ │ │ ├── native-select.md │ │ │ ├── navigation-menu.md │ │ │ ├── number-field.md │ │ │ ├── pagination.md │ │ │ ├── pin-input.md │ │ │ ├── popover.md │ │ │ ├── progress.md │ │ │ ├── radio-group.md │ │ │ ├── range-calendar.md │ │ │ ├── resizable.md │ │ │ ├── scroll-area.md │ │ │ ├── select.md │ │ │ ├── separator.md │ │ │ ├── sheet.md │ │ │ ├── sidebar.md │ │ │ ├── skeleton.md │ │ │ ├── slider.md │ │ │ ├── sonner.md │ │ │ ├── spinner.md │ │ │ ├── stepper.md │ │ │ ├── switch.md │ │ │ ├── table.md │ │ │ ├── tabs.md │ │ │ ├── tags-input.md │ │ │ ├── textarea.md │ │ │ ├── toast.md │ │ │ ├── toggle-group.md │ │ │ ├── toggle.md │ │ │ ├── tooltip.md │ │ │ └── typography.md │ │ ├── dark-mode/ │ │ │ ├── 01.vite.md │ │ │ ├── 02.nuxt.md │ │ │ ├── 03.vitepress.md │ │ │ └── 04.astro.md │ │ ├── forms/ │ │ │ ├── 01.vee-validate.md │ │ │ └── 02.tanstack-form.md │ │ ├── forms.md │ │ ├── installation/ │ │ │ ├── 01.vite.md │ │ │ ├── 02.nuxt.md │ │ │ ├── 03.astro.md │ │ │ ├── 04.laravel.md │ │ │ └── 05.manual.md │ │ ├── mcp.md │ │ └── registry/ │ │ ├── examples.md │ │ ├── faq.md │ │ ├── getting-started.md │ │ ├── index.md │ │ ├── registry-item-json.md │ │ └── registry-json.md │ ├── content.config.ts │ ├── error.vue │ ├── layouts/ │ │ ├── blank.vue │ │ └── default.vue │ ├── lib/ │ │ ├── blocks.ts │ │ ├── categories.ts │ │ ├── colors.ts │ │ ├── config.ts │ │ ├── constants.ts │ │ ├── create.ts │ │ ├── flag.ts │ │ ├── fonts.ts │ │ ├── registry-utils.ts │ │ ├── registry.ts │ │ ├── themes.ts │ │ └── utils.ts │ ├── nuxt.config.ts │ ├── package.json │ ├── pages/ │ │ ├── blocks/ │ │ │ ├── [...categories].vue │ │ │ └── index.vue │ │ ├── blocks.vue │ │ ├── charts/ │ │ │ └── [...type].vue │ │ ├── charts.vue │ │ ├── colors/ │ │ │ └── index.vue │ │ ├── colors.vue │ │ ├── create.vue │ │ ├── docs/ │ │ │ └── [...slug].vue │ │ ├── docs.vue │ │ ├── examples/ │ │ │ ├── authentication.vue │ │ │ ├── dashboard.vue │ │ │ ├── playground.vue │ │ │ └── tasks.vue │ │ ├── examples.vue │ │ ├── index.vue │ │ ├── preview/ │ │ │ └── [base]/ │ │ │ └── [name].vue │ │ ├── themes.vue │ │ └── view/ │ │ └── [name].vue │ ├── public/ │ │ ├── llms.txt │ │ ├── r/ │ │ │ ├── colors/ │ │ │ │ ├── gray.json │ │ │ │ ├── index.json │ │ │ │ ├── neutral.json │ │ │ │ ├── slate.json │ │ │ │ ├── stone.json │ │ │ │ └── zinc.json │ │ │ ├── icons/ │ │ │ │ └── index.json │ │ │ ├── index.json │ │ │ ├── styles/ │ │ │ │ ├── default/ │ │ │ │ │ ├── AccordionDemo.json │ │ │ │ │ ├── AlertDemo.json │ │ │ │ │ ├── AlertDestructiveDemo.json │ │ │ │ │ ├── AlertDialogDemo.json │ │ │ │ │ ├── AreaChartCustomTooltip.json │ │ │ │ │ ├── AreaChartDemo.json │ │ │ │ │ ├── AreaChartSparkline.json │ │ │ │ │ ├── AspectRatioDemo.json │ │ │ │ │ ├── Authentication01.json │ │ │ │ │ ├── Authentication02.json │ │ │ │ │ ├── Authentication03.json │ │ │ │ │ ├── Authentication04.json │ │ │ │ │ ├── AutoFormApi.json │ │ │ │ │ ├── AutoFormArray.json │ │ │ │ │ ├── AutoFormBasic.json │ │ │ │ │ ├── AutoFormConfirmPassword.json │ │ │ │ │ ├── AutoFormControlled.json │ │ │ │ │ ├── AutoFormDependencies.json │ │ │ │ │ ├── AutoFormInputWithoutLabel.json │ │ │ │ │ ├── AutoFormSubObject.json │ │ │ │ │ ├── AvatarDemo.json │ │ │ │ │ ├── BadgeDemo.json │ │ │ │ │ ├── BadgeDestructiveDemo.json │ │ │ │ │ ├── BadgeOutlineDemo.json │ │ │ │ │ ├── BadgeSecondaryDemo.json │ │ │ │ │ ├── BarChartCustomTooltip.json │ │ │ │ │ ├── BarChartDemo.json │ │ │ │ │ ├── BarChartRounded.json │ │ │ │ │ ├── BarChartStacked.json │ │ │ │ │ ├── BreadcrumbDemo.json │ │ │ │ │ ├── BreadcrumbDropdown.json │ │ │ │ │ ├── BreadcrumbEllipsisDemo.json │ │ │ │ │ ├── BreadcrumbLinkDemo.json │ │ │ │ │ ├── BreadcrumbResponsive.json │ │ │ │ │ ├── BreadcrumbSeparatorDemo.json │ │ │ │ │ ├── ButtonAsChildDemo.json │ │ │ │ │ ├── ButtonDemo.json │ │ │ │ │ ├── ButtonDestructiveDemo.json │ │ │ │ │ ├── ButtonGhostDemo.json │ │ │ │ │ ├── ButtonGroupDemo.json │ │ │ │ │ ├── ButtonGroupInputGroupDemo.json │ │ │ │ │ ├── ButtonGroupNestedDemo.json │ │ │ │ │ ├── ButtonGroupOrientationDemo.json │ │ │ │ │ ├── ButtonGroupSeparatorDemo.json │ │ │ │ │ ├── ButtonGroupSizeDemo.json │ │ │ │ │ ├── ButtonGroupSplitDemo.json │ │ │ │ │ ├── ButtonGroupWithDropdownMenuDemo.json │ │ │ │ │ ├── ButtonGroupWithInputDemo.json │ │ │ │ │ ├── ButtonGroupWithPopoverDemo.json │ │ │ │ │ ├── ButtonGroupWithSelectDemo.json │ │ │ │ │ ├── ButtonIconDemo.json │ │ │ │ │ ├── ButtonLinkDemo.json │ │ │ │ │ ├── ButtonLoadingDemo.json │ │ │ │ │ ├── ButtonOutlineDemo.json │ │ │ │ │ ├── ButtonSecondaryDemo.json │ │ │ │ │ ├── ButtonWithIconDemo.json │ │ │ │ │ ├── CalendarDemo.json │ │ │ │ │ ├── CalendarForm.json │ │ │ │ │ ├── CalendarWithSelect.json │ │ │ │ │ ├── CardChat.json │ │ │ │ │ ├── CardDemo.json │ │ │ │ │ ├── CardFormDemo.json │ │ │ │ │ ├── CardStats.json │ │ │ │ │ ├── CardWithForm.json │ │ │ │ │ ├── CarouselApi.json │ │ │ │ │ ├── CarouselDemo.json │ │ │ │ │ ├── CarouselOrientation.json │ │ │ │ │ ├── CarouselPlugin.json │ │ │ │ │ ├── CarouselSize.json │ │ │ │ │ ├── CarouselSpacing.json │ │ │ │ │ ├── CarouselThumbnails.json │ │ │ │ │ ├── CheckboxDemo.json │ │ │ │ │ ├── CheckboxDisabled.json │ │ │ │ │ ├── CheckboxFormMultiple.json │ │ │ │ │ ├── CheckboxFormSingle.json │ │ │ │ │ ├── CheckboxWithText.json │ │ │ │ │ ├── CollapsibleDemo.json │ │ │ │ │ ├── ComboboxDemo.json │ │ │ │ │ ├── ComboboxDropdownMenu.json │ │ │ │ │ ├── ComboboxForm.json │ │ │ │ │ ├── ComboboxPopover.json │ │ │ │ │ ├── ComboboxResponsive.json │ │ │ │ │ ├── ComboboxTrigger.json │ │ │ │ │ ├── CommandDemo.json │ │ │ │ │ ├── CommandDialogDemo.json │ │ │ │ │ ├── CommandDropdownMenu.json │ │ │ │ │ ├── CommandForm.json │ │ │ │ │ ├── CommandPopover.json │ │ │ │ │ ├── CommandResponsive.json │ │ │ │ │ ├── ContextMenuDemo.json │ │ │ │ │ ├── CustomChartTooltip.json │ │ │ │ │ ├── Dashboard01.json │ │ │ │ │ ├── Dashboard02.json │ │ │ │ │ ├── Dashboard03.json │ │ │ │ │ ├── Dashboard04.json │ │ │ │ │ ├── Dashboard05.json │ │ │ │ │ ├── Dashboard06.json │ │ │ │ │ ├── Dashboard07.json │ │ │ │ │ ├── DataTableColumnPinningDemo.json │ │ │ │ │ ├── DataTableDemo.json │ │ │ │ │ ├── DataTableDemoColumn.json │ │ │ │ │ ├── DataTableReactiveDemo.json │ │ │ │ │ ├── DatePickerDemo.json │ │ │ │ │ ├── DatePickerForm.json │ │ │ │ │ ├── DatePickerWithIndependentMonths.json │ │ │ │ │ ├── DatePickerWithPresets.json │ │ │ │ │ ├── DatePickerWithRange.json │ │ │ │ │ ├── DemoSidebar.json │ │ │ │ │ ├── DemoSidebarControlled.json │ │ │ │ │ ├── DemoSidebarFooter.json │ │ │ │ │ ├── DemoSidebarGroup.json │ │ │ │ │ ├── DemoSidebarGroupAction.json │ │ │ │ │ ├── DemoSidebarGroupCollapsible.json │ │ │ │ │ ├── DemoSidebarHeader.json │ │ │ │ │ ├── DemoSidebarMenu.json │ │ │ │ │ ├── DemoSidebarMenuAction.json │ │ │ │ │ ├── DemoSidebarMenuBadge.json │ │ │ │ │ ├── DemoSidebarMenuCollapsible.json │ │ │ │ │ ├── DemoSidebarMenuSub.json │ │ │ │ │ ├── DialogCustomCloseButton.json │ │ │ │ │ ├── DialogDemo.json │ │ │ │ │ ├── DialogForm.json │ │ │ │ │ ├── DialogScrollBodyDemo.json │ │ │ │ │ ├── DialogScrollOverlayDemo.json │ │ │ │ │ ├── DonutChartColor.json │ │ │ │ │ ├── DonutChartCustomTooltip.json │ │ │ │ │ ├── DonutChartDemo.json │ │ │ │ │ ├── DonutChartPie.json │ │ │ │ │ ├── DrawerDemo.json │ │ │ │ │ ├── DrawerDialog.json │ │ │ │ │ ├── DropdownMenuCheckboxes.json │ │ │ │ │ ├── DropdownMenuDemo.json │ │ │ │ │ ├── DropdownMenuRadioGroup.json │ │ │ │ │ ├── EmptyAvatarDemo.json │ │ │ │ │ ├── EmptyAvatarGroupDemo.json │ │ │ │ │ ├── EmptyBackgroundDemo.json │ │ │ │ │ ├── EmptyDemo.json │ │ │ │ │ ├── EmptyInputGroupDemo.json │ │ │ │ │ ├── EmptyOutlineDemo.json │ │ │ │ │ ├── FieldCheckboxDemo.json │ │ │ │ │ ├── FieldChoiceCardDemo.json │ │ │ │ │ ├── FieldDemo.json │ │ │ │ │ ├── FieldFieldsetDemo.json │ │ │ │ │ ├── FieldGroupDemo.json │ │ │ │ │ ├── FieldInputDemo.json │ │ │ │ │ ├── FieldRadioDemo.json │ │ │ │ │ ├── FieldResponsiveDemo.json │ │ │ │ │ ├── FieldSelectDemo.json │ │ │ │ │ ├── FieldSliderDemo.json │ │ │ │ │ ├── FieldSwitchDemo.json │ │ │ │ │ ├── FieldTextareaDemo.json │ │ │ │ │ ├── HoverCardDemo.json │ │ │ │ │ ├── InputDemo.json │ │ │ │ │ ├── InputDisabled.json │ │ │ │ │ ├── InputFile.json │ │ │ │ │ ├── InputForm.json │ │ │ │ │ ├── InputFormAutoAnimate.json │ │ │ │ │ ├── InputGroupDemo.json │ │ │ │ │ ├── InputGroupWithButton.json │ │ │ │ │ ├── InputGroupWithButtonGroup.json │ │ │ │ │ ├── InputGroupWithCustomInput.json │ │ │ │ │ ├── InputGroupWithDropdown.json │ │ │ │ │ ├── InputGroupWithIcon.json │ │ │ │ │ ├── InputGroupWithLabel.json │ │ │ │ │ ├── InputGroupWithSpinner.json │ │ │ │ │ ├── InputGroupWithText.json │ │ │ │ │ ├── InputGroupWithTextarea.json │ │ │ │ │ ├── InputGroupWithTooltip.json │ │ │ │ │ ├── InputWithButton.json │ │ │ │ │ ├── InputWithIcon.json │ │ │ │ │ ├── InputWithLabel.json │ │ │ │ │ ├── ItemAvatarDemo.json │ │ │ │ │ ├── ItemDemo.json │ │ │ │ │ ├── ItemDropdownDemo.json │ │ │ │ │ ├── ItemGroupDemo.json │ │ │ │ │ ├── ItemHeaderDemo.json │ │ │ │ │ ├── ItemIconDemo.json │ │ │ │ │ ├── ItemImageDemo.json │ │ │ │ │ ├── ItemLinkDemo.json │ │ │ │ │ ├── ItemSizeDemo.json │ │ │ │ │ ├── ItemVariantDemo.json │ │ │ │ │ ├── KbdDemo.json │ │ │ │ │ ├── KbdWithButton.json │ │ │ │ │ ├── KbdWithInputGroup.json │ │ │ │ │ ├── KbdWithTooltip.json │ │ │ │ │ ├── LabelDemo.json │ │ │ │ │ ├── LineChartCustomTooltip.json │ │ │ │ │ ├── LineChartDemo.json │ │ │ │ │ ├── LineChartSparkline.json │ │ │ │ │ ├── Login01.json │ │ │ │ │ ├── Login02.json │ │ │ │ │ ├── Login03.json │ │ │ │ │ ├── Login04.json │ │ │ │ │ ├── Login05.json │ │ │ │ │ ├── MenubarDemo.json │ │ │ │ │ ├── NavigationMenuDemo.json │ │ │ │ │ ├── NumberFieldCurrency.json │ │ │ │ │ ├── NumberFieldDecimal.json │ │ │ │ │ ├── NumberFieldDemo.json │ │ │ │ │ ├── NumberFieldDisabled.json │ │ │ │ │ ├── NumberFieldForm.json │ │ │ │ │ ├── NumberFieldPercentage.json │ │ │ │ │ ├── PaginationDemo.json │ │ │ │ │ ├── PinInputControlled.json │ │ │ │ │ ├── PinInputDemo.json │ │ │ │ │ ├── PinInputDisabled.json │ │ │ │ │ ├── PinInputFormDemo.json │ │ │ │ │ ├── PinInputSeparatorDemo.json │ │ │ │ │ ├── PopoverDemo.json │ │ │ │ │ ├── ProgressDemo.json │ │ │ │ │ ├── RadioGroupDemo.json │ │ │ │ │ ├── RadioGroupForm.json │ │ │ │ │ ├── RangeCalendarDemo.json │ │ │ │ │ ├── ResizableDemo.json │ │ │ │ │ ├── ResizableHandleDemo.json │ │ │ │ │ ├── ResizableVerticalDemo.json │ │ │ │ │ ├── ScrollAreaDemo.json │ │ │ │ │ ├── ScrollAreaHorizontalDemo.json │ │ │ │ │ ├── SelectDemo.json │ │ │ │ │ ├── SelectForm.json │ │ │ │ │ ├── SelectScrollable.json │ │ │ │ │ ├── SeparatorDemo.json │ │ │ │ │ ├── SheetDemo.json │ │ │ │ │ ├── SheetSideDemo.json │ │ │ │ │ ├── Sidebar01.json │ │ │ │ │ ├── Sidebar02.json │ │ │ │ │ ├── Sidebar03.json │ │ │ │ │ ├── Sidebar04.json │ │ │ │ │ ├── Sidebar05.json │ │ │ │ │ ├── Sidebar06.json │ │ │ │ │ ├── Sidebar07.json │ │ │ │ │ ├── Sidebar08.json │ │ │ │ │ ├── Sidebar09.json │ │ │ │ │ ├── Sidebar10.json │ │ │ │ │ ├── Sidebar11.json │ │ │ │ │ ├── Sidebar12.json │ │ │ │ │ ├── Sidebar13.json │ │ │ │ │ ├── Sidebar14.json │ │ │ │ │ ├── Sidebar15.json │ │ │ │ │ ├── SkeletonCard.json │ │ │ │ │ ├── SkeletonDemo.json │ │ │ │ │ ├── SliderDemo.json │ │ │ │ │ ├── SliderForm.json │ │ │ │ │ ├── SonnerDemo.json │ │ │ │ │ ├── SonnerWithDialog.json │ │ │ │ │ ├── SpinnerBadgeDemo.json │ │ │ │ │ ├── SpinnerButtonsDemo.json │ │ │ │ │ ├── SpinnerColorDemo.json │ │ │ │ │ ├── SpinnerColorsDemo.json │ │ │ │ │ ├── SpinnerCustomDemo.json │ │ │ │ │ ├── SpinnerDemo.json │ │ │ │ │ ├── SpinnerEmptyDemo.json │ │ │ │ │ ├── SpinnerInputGroupDemo.json │ │ │ │ │ ├── SpinnerItemDemo.json │ │ │ │ │ ├── SpinnerSizesDemo.json │ │ │ │ │ ├── StepperDemo.json │ │ │ │ │ ├── StepperForm.json │ │ │ │ │ ├── StepperHorizental.json │ │ │ │ │ ├── StepperVertical.json │ │ │ │ │ ├── SwitchDemo.json │ │ │ │ │ ├── SwitchForm.json │ │ │ │ │ ├── TableDemo.json │ │ │ │ │ ├── TabsDemo.json │ │ │ │ │ ├── TabsVerticalDemo.json │ │ │ │ │ ├── TagsInputComboboxDemo.json │ │ │ │ │ ├── TagsInputDemo.json │ │ │ │ │ ├── TagsInputFormDemo.json │ │ │ │ │ ├── TextareaDemo.json │ │ │ │ │ ├── TextareaDisabled.json │ │ │ │ │ ├── TextareaForm.json │ │ │ │ │ ├── TextareaWithButton.json │ │ │ │ │ ├── TextareaWithLabel.json │ │ │ │ │ ├── TextareaWithText.json │ │ │ │ │ ├── ToastDemo.json │ │ │ │ │ ├── ToastDestructive.json │ │ │ │ │ ├── ToastSimple.json │ │ │ │ │ ├── ToastWithAction.json │ │ │ │ │ ├── ToastWithTitle.json │ │ │ │ │ ├── ToggleDemo.json │ │ │ │ │ ├── ToggleDisabledDemo.json │ │ │ │ │ ├── ToggleGroupDemo.json │ │ │ │ │ ├── ToggleGroupDisabledDemo.json │ │ │ │ │ ├── ToggleGroupLargeDemo.json │ │ │ │ │ ├── ToggleGroupOutlineDemo.json │ │ │ │ │ ├── ToggleGroupSingleDemo.json │ │ │ │ │ ├── ToggleGroupSmallDemo.json │ │ │ │ │ ├── ToggleItalicDemo.json │ │ │ │ │ ├── ToggleItalicWithTextDemo.json │ │ │ │ │ ├── ToggleLargeDemo.json │ │ │ │ │ ├── ToggleSmallDemo.json │ │ │ │ │ ├── TooltipDemo.json │ │ │ │ │ ├── TypographyBlockquote.json │ │ │ │ │ ├── TypographyDemo.json │ │ │ │ │ ├── TypographyH1.json │ │ │ │ │ ├── TypographyH2.json │ │ │ │ │ ├── TypographyH3.json │ │ │ │ │ ├── TypographyH4.json │ │ │ │ │ ├── TypographyInlineCode.json │ │ │ │ │ ├── TypographyLarge.json │ │ │ │ │ ├── TypographyLead.json │ │ │ │ │ ├── TypographyList.json │ │ │ │ │ ├── TypographyMuted.json │ │ │ │ │ ├── TypographyP.json │ │ │ │ │ ├── TypographySmall.json │ │ │ │ │ ├── TypographyTable.json │ │ │ │ │ ├── accordion.json │ │ │ │ │ ├── alert-dialog.json │ │ │ │ │ ├── alert.json │ │ │ │ │ ├── aspect-ratio.json │ │ │ │ │ ├── auto-form.json │ │ │ │ │ ├── avatar.json │ │ │ │ │ ├── badge.json │ │ │ │ │ ├── breadcrumb.json │ │ │ │ │ ├── button-group.json │ │ │ │ │ ├── button.json │ │ │ │ │ ├── calendar.json │ │ │ │ │ ├── card.json │ │ │ │ │ ├── carousel.json │ │ │ │ │ ├── chart-area.json │ │ │ │ │ ├── chart-bar.json │ │ │ │ │ ├── chart-donut.json │ │ │ │ │ ├── chart-line.json │ │ │ │ │ ├── chart.json │ │ │ │ │ ├── checkbox.json │ │ │ │ │ ├── collapsible.json │ │ │ │ │ ├── combobox.json │ │ │ │ │ ├── command.json │ │ │ │ │ ├── context-menu.json │ │ │ │ │ ├── dialog.json │ │ │ │ │ ├── drawer.json │ │ │ │ │ ├── dropdown-menu.json │ │ │ │ │ ├── empty.json │ │ │ │ │ ├── field.json │ │ │ │ │ ├── form.json │ │ │ │ │ ├── hover-card.json │ │ │ │ │ ├── index.json │ │ │ │ │ ├── input-group.json │ │ │ │ │ ├── input.json │ │ │ │ │ ├── item.json │ │ │ │ │ ├── kbd.json │ │ │ │ │ ├── label.json │ │ │ │ │ ├── menubar.json │ │ │ │ │ ├── navigation-menu.json │ │ │ │ │ ├── number-field.json │ │ │ │ │ ├── pagination.json │ │ │ │ │ ├── pin-input.json │ │ │ │ │ ├── popover.json │ │ │ │ │ ├── progress.json │ │ │ │ │ ├── radio-group.json │ │ │ │ │ ├── range-calendar.json │ │ │ │ │ ├── registry.json │ │ │ │ │ ├── resizable.json │ │ │ │ │ ├── scroll-area.json │ │ │ │ │ ├── select.json │ │ │ │ │ ├── separator.json │ │ │ │ │ ├── sheet.json │ │ │ │ │ ├── sidebar.json │ │ │ │ │ ├── skeleton.json │ │ │ │ │ ├── slider.json │ │ │ │ │ ├── sonner.json │ │ │ │ │ ├── spinner.json │ │ │ │ │ ├── stepper.json │ │ │ │ │ ├── style.json │ │ │ │ │ ├── switch.json │ │ │ │ │ ├── table.json │ │ │ │ │ ├── tabs.json │ │ │ │ │ ├── tags-input.json │ │ │ │ │ ├── textarea.json │ │ │ │ │ ├── theme-daylight.json │ │ │ │ │ ├── theme-emerald.json │ │ │ │ │ ├── theme-midnight.json │ │ │ │ │ ├── toast.json │ │ │ │ │ ├── toggle-group.json │ │ │ │ │ ├── toggle.json │ │ │ │ │ ├── tooltip.json │ │ │ │ │ └── utils.json │ │ │ │ ├── index.json │ │ │ │ ├── new-york/ │ │ │ │ │ ├── AccordionDemo.json │ │ │ │ │ ├── AlertDemo.json │ │ │ │ │ ├── AlertDestructiveDemo.json │ │ │ │ │ ├── AlertDialogDemo.json │ │ │ │ │ ├── AreaChartCustomTooltip.json │ │ │ │ │ ├── AreaChartDemo.json │ │ │ │ │ ├── AreaChartSparkline.json │ │ │ │ │ ├── AspectRatioDemo.json │ │ │ │ │ ├── Authentication01.json │ │ │ │ │ ├── Authentication02.json │ │ │ │ │ ├── Authentication03.json │ │ │ │ │ ├── Authentication04.json │ │ │ │ │ ├── AutoFormApi.json │ │ │ │ │ ├── AutoFormArray.json │ │ │ │ │ ├── AutoFormBasic.json │ │ │ │ │ ├── AutoFormConfirmPassword.json │ │ │ │ │ ├── AutoFormControlled.json │ │ │ │ │ ├── AutoFormDependencies.json │ │ │ │ │ ├── AutoFormInputWithoutLabel.json │ │ │ │ │ ├── AutoFormSubObject.json │ │ │ │ │ ├── AvatarDemo.json │ │ │ │ │ ├── BadgeDemo.json │ │ │ │ │ ├── BadgeDestructiveDemo.json │ │ │ │ │ ├── BadgeOutlineDemo.json │ │ │ │ │ ├── BadgeSecondaryDemo.json │ │ │ │ │ ├── BarChartCustomTooltip.json │ │ │ │ │ ├── BarChartDemo.json │ │ │ │ │ ├── BarChartRounded.json │ │ │ │ │ ├── BarChartStacked.json │ │ │ │ │ ├── BreadcrumbDemo.json │ │ │ │ │ ├── BreadcrumbDropdown.json │ │ │ │ │ ├── BreadcrumbEllipsisDemo.json │ │ │ │ │ ├── BreadcrumbLinkDemo.json │ │ │ │ │ ├── BreadcrumbResponsive.json │ │ │ │ │ ├── BreadcrumbSeparatorDemo.json │ │ │ │ │ ├── ButtonAsChildDemo.json │ │ │ │ │ ├── ButtonDemo.json │ │ │ │ │ ├── ButtonDestructiveDemo.json │ │ │ │ │ ├── ButtonGhostDemo.json │ │ │ │ │ ├── ButtonGroupDemo.json │ │ │ │ │ ├── ButtonGroupInputGroupDemo.json │ │ │ │ │ ├── ButtonGroupNestedDemo.json │ │ │ │ │ ├── ButtonGroupOrientationDemo.json │ │ │ │ │ ├── ButtonGroupSeparatorDemo.json │ │ │ │ │ ├── ButtonGroupSizeDemo.json │ │ │ │ │ ├── ButtonGroupSplitDemo.json │ │ │ │ │ ├── ButtonGroupWithDropdownMenuDemo.json │ │ │ │ │ ├── ButtonGroupWithInputDemo.json │ │ │ │ │ ├── ButtonGroupWithPopoverDemo.json │ │ │ │ │ ├── ButtonGroupWithSelectDemo.json │ │ │ │ │ ├── ButtonIconDemo.json │ │ │ │ │ ├── ButtonLinkDemo.json │ │ │ │ │ ├── ButtonLoadingDemo.json │ │ │ │ │ ├── ButtonOutlineDemo.json │ │ │ │ │ ├── ButtonSecondaryDemo.json │ │ │ │ │ ├── ButtonWithIconDemo.json │ │ │ │ │ ├── CalendarDemo.json │ │ │ │ │ ├── CalendarForm.json │ │ │ │ │ ├── CalendarWithSelect.json │ │ │ │ │ ├── CardChat.json │ │ │ │ │ ├── CardDemo.json │ │ │ │ │ ├── CardFormDemo.json │ │ │ │ │ ├── CardStats.json │ │ │ │ │ ├── CardWithForm.json │ │ │ │ │ ├── CarouselApi.json │ │ │ │ │ ├── CarouselDemo.json │ │ │ │ │ ├── CarouselOrientation.json │ │ │ │ │ ├── CarouselPlugin.json │ │ │ │ │ ├── CarouselSize.json │ │ │ │ │ ├── CarouselSpacing.json │ │ │ │ │ ├── CarouselThumbnails.json │ │ │ │ │ ├── CheckboxDemo.json │ │ │ │ │ ├── CheckboxDisabled.json │ │ │ │ │ ├── CheckboxFormMultiple.json │ │ │ │ │ ├── CheckboxFormSingle.json │ │ │ │ │ ├── CheckboxWithText.json │ │ │ │ │ ├── CollapsibleDemo.json │ │ │ │ │ ├── ComboboxDemo.json │ │ │ │ │ ├── ComboboxDropdownMenu.json │ │ │ │ │ ├── ComboboxForm.json │ │ │ │ │ ├── ComboboxPopover.json │ │ │ │ │ ├── ComboboxResponsive.json │ │ │ │ │ ├── ComboboxTrigger.json │ │ │ │ │ ├── CommandDemo.json │ │ │ │ │ ├── CommandDialogDemo.json │ │ │ │ │ ├── CommandDropdownMenu.json │ │ │ │ │ ├── CommandForm.json │ │ │ │ │ ├── CommandPopover.json │ │ │ │ │ ├── CommandResponsive.json │ │ │ │ │ ├── ContextMenuDemo.json │ │ │ │ │ ├── CustomChartTooltip.json │ │ │ │ │ ├── Dashboard01.json │ │ │ │ │ ├── Dashboard02.json │ │ │ │ │ ├── Dashboard03.json │ │ │ │ │ ├── Dashboard04.json │ │ │ │ │ ├── Dashboard05.json │ │ │ │ │ ├── Dashboard06.json │ │ │ │ │ ├── Dashboard07.json │ │ │ │ │ ├── DataTableColumnPinningDemo.json │ │ │ │ │ ├── DataTableDemo.json │ │ │ │ │ ├── DataTableDemoColumn.json │ │ │ │ │ ├── DataTableReactiveDemo.json │ │ │ │ │ ├── DatePickerDemo.json │ │ │ │ │ ├── DatePickerForm.json │ │ │ │ │ ├── DatePickerWithIndependentMonths.json │ │ │ │ │ ├── DatePickerWithPresets.json │ │ │ │ │ ├── DatePickerWithRange.json │ │ │ │ │ ├── DemoSidebar.json │ │ │ │ │ ├── DemoSidebarControlled.json │ │ │ │ │ ├── DemoSidebarFooter.json │ │ │ │ │ ├── DemoSidebarGroup.json │ │ │ │ │ ├── DemoSidebarGroupAction.json │ │ │ │ │ ├── DemoSidebarGroupCollapsible.json │ │ │ │ │ ├── DemoSidebarHeader.json │ │ │ │ │ ├── DemoSidebarMenu.json │ │ │ │ │ ├── DemoSidebarMenuAction.json │ │ │ │ │ ├── DemoSidebarMenuBadge.json │ │ │ │ │ ├── DemoSidebarMenuCollapsible.json │ │ │ │ │ ├── DemoSidebarMenuSub.json │ │ │ │ │ ├── DialogCustomCloseButton.json │ │ │ │ │ ├── DialogDemo.json │ │ │ │ │ ├── DialogForm.json │ │ │ │ │ ├── DialogScrollBodyDemo.json │ │ │ │ │ ├── DialogScrollOverlayDemo.json │ │ │ │ │ ├── DonutChartColor.json │ │ │ │ │ ├── DonutChartCustomTooltip.json │ │ │ │ │ ├── DonutChartDemo.json │ │ │ │ │ ├── DonutChartPie.json │ │ │ │ │ ├── DrawerDemo.json │ │ │ │ │ ├── DrawerDialog.json │ │ │ │ │ ├── DropdownMenuCheckboxes.json │ │ │ │ │ ├── DropdownMenuDemo.json │ │ │ │ │ ├── DropdownMenuRadioGroup.json │ │ │ │ │ ├── EmptyAvatarDemo.json │ │ │ │ │ ├── EmptyAvatarGroupDemo.json │ │ │ │ │ ├── EmptyBackgroundDemo.json │ │ │ │ │ ├── EmptyDemo.json │ │ │ │ │ ├── EmptyInputGroupDemo.json │ │ │ │ │ ├── EmptyOutlineDemo.json │ │ │ │ │ ├── FieldCheckboxDemo.json │ │ │ │ │ ├── FieldChoiceCardDemo.json │ │ │ │ │ ├── FieldDemo.json │ │ │ │ │ ├── FieldFieldsetDemo.json │ │ │ │ │ ├── FieldGroupDemo.json │ │ │ │ │ ├── FieldInputDemo.json │ │ │ │ │ ├── FieldRadioDemo.json │ │ │ │ │ ├── FieldResponsiveDemo.json │ │ │ │ │ ├── FieldSelectDemo.json │ │ │ │ │ ├── FieldSliderDemo.json │ │ │ │ │ ├── FieldSwitchDemo.json │ │ │ │ │ ├── FieldTextareaDemo.json │ │ │ │ │ ├── HoverCardDemo.json │ │ │ │ │ ├── InputDemo.json │ │ │ │ │ ├── InputDisabled.json │ │ │ │ │ ├── InputFile.json │ │ │ │ │ ├── InputForm.json │ │ │ │ │ ├── InputFormAutoAnimate.json │ │ │ │ │ ├── InputGroupDemo.json │ │ │ │ │ ├── InputGroupWithButton.json │ │ │ │ │ ├── InputGroupWithButtonGroup.json │ │ │ │ │ ├── InputGroupWithCustomInput.json │ │ │ │ │ ├── InputGroupWithDropdown.json │ │ │ │ │ ├── InputGroupWithIcon.json │ │ │ │ │ ├── InputGroupWithLabel.json │ │ │ │ │ ├── InputGroupWithSpinner.json │ │ │ │ │ ├── InputGroupWithText.json │ │ │ │ │ ├── InputGroupWithTextarea.json │ │ │ │ │ ├── InputGroupWithTooltip.json │ │ │ │ │ ├── InputWithButton.json │ │ │ │ │ ├── InputWithIcon.json │ │ │ │ │ ├── InputWithLabel.json │ │ │ │ │ ├── ItemAvatarDemo.json │ │ │ │ │ ├── ItemDemo.json │ │ │ │ │ ├── ItemDropdownDemo.json │ │ │ │ │ ├── ItemGroupDemo.json │ │ │ │ │ ├── ItemHeaderDemo.json │ │ │ │ │ ├── ItemIconDemo.json │ │ │ │ │ ├── ItemImageDemo.json │ │ │ │ │ ├── ItemLinkDemo.json │ │ │ │ │ ├── ItemSizeDemo.json │ │ │ │ │ ├── ItemVariantDemo.json │ │ │ │ │ ├── KbdDemo.json │ │ │ │ │ ├── KbdWithButton.json │ │ │ │ │ ├── KbdWithInputGroup.json │ │ │ │ │ ├── KbdWithTooltip.json │ │ │ │ │ ├── LabelDemo.json │ │ │ │ │ ├── LineChartCustomTooltip.json │ │ │ │ │ ├── LineChartDemo.json │ │ │ │ │ ├── LineChartSparkline.json │ │ │ │ │ ├── Login01.json │ │ │ │ │ ├── Login02.json │ │ │ │ │ ├── Login03.json │ │ │ │ │ ├── Login04.json │ │ │ │ │ ├── Login05.json │ │ │ │ │ ├── MenubarDemo.json │ │ │ │ │ ├── NavigationMenuDemo.json │ │ │ │ │ ├── NumberFieldCurrency.json │ │ │ │ │ ├── NumberFieldDecimal.json │ │ │ │ │ ├── NumberFieldDemo.json │ │ │ │ │ ├── NumberFieldDisabled.json │ │ │ │ │ ├── NumberFieldForm.json │ │ │ │ │ ├── NumberFieldPercentage.json │ │ │ │ │ ├── PaginationDemo.json │ │ │ │ │ ├── PinInputControlled.json │ │ │ │ │ ├── PinInputDemo.json │ │ │ │ │ ├── PinInputDisabled.json │ │ │ │ │ ├── PinInputFormDemo.json │ │ │ │ │ ├── PinInputSeparatorDemo.json │ │ │ │ │ ├── PopoverDemo.json │ │ │ │ │ ├── ProgressDemo.json │ │ │ │ │ ├── RadioGroupDemo.json │ │ │ │ │ ├── RadioGroupForm.json │ │ │ │ │ ├── RangeCalendarDemo.json │ │ │ │ │ ├── ResizableDemo.json │ │ │ │ │ ├── ResizableHandleDemo.json │ │ │ │ │ ├── ResizableVerticalDemo.json │ │ │ │ │ ├── ScrollAreaDemo.json │ │ │ │ │ ├── ScrollAreaHorizontalDemo.json │ │ │ │ │ ├── SelectDemo.json │ │ │ │ │ ├── SelectForm.json │ │ │ │ │ ├── SelectScrollable.json │ │ │ │ │ ├── SeparatorDemo.json │ │ │ │ │ ├── SheetDemo.json │ │ │ │ │ ├── SheetSideDemo.json │ │ │ │ │ ├── Sidebar01.json │ │ │ │ │ ├── Sidebar02.json │ │ │ │ │ ├── Sidebar03.json │ │ │ │ │ ├── Sidebar04.json │ │ │ │ │ ├── Sidebar05.json │ │ │ │ │ ├── Sidebar06.json │ │ │ │ │ ├── Sidebar07.json │ │ │ │ │ ├── Sidebar08.json │ │ │ │ │ ├── Sidebar09.json │ │ │ │ │ ├── Sidebar10.json │ │ │ │ │ ├── Sidebar11.json │ │ │ │ │ ├── Sidebar12.json │ │ │ │ │ ├── Sidebar13.json │ │ │ │ │ ├── Sidebar14.json │ │ │ │ │ ├── Sidebar15.json │ │ │ │ │ ├── SkeletonCard.json │ │ │ │ │ ├── SkeletonDemo.json │ │ │ │ │ ├── SliderDemo.json │ │ │ │ │ ├── SliderForm.json │ │ │ │ │ ├── SonnerDemo.json │ │ │ │ │ ├── SonnerWithDialog.json │ │ │ │ │ ├── SpinnerBadgeDemo.json │ │ │ │ │ ├── SpinnerButtonsDemo.json │ │ │ │ │ ├── SpinnerColorDemo.json │ │ │ │ │ ├── SpinnerColorsDemo.json │ │ │ │ │ ├── SpinnerCustomDemo.json │ │ │ │ │ ├── SpinnerDemo.json │ │ │ │ │ ├── SpinnerEmptyDemo.json │ │ │ │ │ ├── SpinnerInputGroupDemo.json │ │ │ │ │ ├── SpinnerItemDemo.json │ │ │ │ │ ├── SpinnerSizesDemo.json │ │ │ │ │ ├── StepperDemo.json │ │ │ │ │ ├── StepperForm.json │ │ │ │ │ ├── StepperHorizental.json │ │ │ │ │ ├── StepperVertical.json │ │ │ │ │ ├── SwitchDemo.json │ │ │ │ │ ├── SwitchForm.json │ │ │ │ │ ├── TableDemo.json │ │ │ │ │ ├── TabsDemo.json │ │ │ │ │ ├── TabsVerticalDemo.json │ │ │ │ │ ├── TagsInputComboboxDemo.json │ │ │ │ │ ├── TagsInputDemo.json │ │ │ │ │ ├── TagsInputFormDemo.json │ │ │ │ │ ├── TextareaDemo.json │ │ │ │ │ ├── TextareaDisabled.json │ │ │ │ │ ├── TextareaForm.json │ │ │ │ │ ├── TextareaWithButton.json │ │ │ │ │ ├── TextareaWithLabel.json │ │ │ │ │ ├── TextareaWithText.json │ │ │ │ │ ├── ToastDemo.json │ │ │ │ │ ├── ToastDestructive.json │ │ │ │ │ ├── ToastSimple.json │ │ │ │ │ ├── ToastWithAction.json │ │ │ │ │ ├── ToastWithTitle.json │ │ │ │ │ ├── ToggleDemo.json │ │ │ │ │ ├── ToggleDisabledDemo.json │ │ │ │ │ ├── ToggleGroupDemo.json │ │ │ │ │ ├── ToggleGroupDisabledDemo.json │ │ │ │ │ ├── ToggleGroupLargeDemo.json │ │ │ │ │ ├── ToggleGroupOutlineDemo.json │ │ │ │ │ ├── ToggleGroupSingleDemo.json │ │ │ │ │ ├── ToggleGroupSmallDemo.json │ │ │ │ │ ├── ToggleItalicDemo.json │ │ │ │ │ ├── ToggleItalicWithTextDemo.json │ │ │ │ │ ├── ToggleLargeDemo.json │ │ │ │ │ ├── ToggleSmallDemo.json │ │ │ │ │ ├── TooltipDemo.json │ │ │ │ │ ├── TypographyBlockquote.json │ │ │ │ │ ├── TypographyDemo.json │ │ │ │ │ ├── TypographyH1.json │ │ │ │ │ ├── TypographyH2.json │ │ │ │ │ ├── TypographyH3.json │ │ │ │ │ ├── TypographyH4.json │ │ │ │ │ ├── TypographyInlineCode.json │ │ │ │ │ ├── TypographyLarge.json │ │ │ │ │ ├── TypographyLead.json │ │ │ │ │ ├── TypographyList.json │ │ │ │ │ ├── TypographyMuted.json │ │ │ │ │ ├── TypographyP.json │ │ │ │ │ ├── TypographySmall.json │ │ │ │ │ ├── TypographyTable.json │ │ │ │ │ ├── accordion.json │ │ │ │ │ ├── alert-dialog.json │ │ │ │ │ ├── alert.json │ │ │ │ │ ├── aspect-ratio.json │ │ │ │ │ ├── auto-form.json │ │ │ │ │ ├── avatar.json │ │ │ │ │ ├── badge.json │ │ │ │ │ ├── breadcrumb.json │ │ │ │ │ ├── button-group.json │ │ │ │ │ ├── button.json │ │ │ │ │ ├── calendar.json │ │ │ │ │ ├── card.json │ │ │ │ │ ├── carousel.json │ │ │ │ │ ├── chart-area.json │ │ │ │ │ ├── chart-bar.json │ │ │ │ │ ├── chart-donut.json │ │ │ │ │ ├── chart-line.json │ │ │ │ │ ├── chart.json │ │ │ │ │ ├── checkbox.json │ │ │ │ │ ├── collapsible.json │ │ │ │ │ ├── combobox.json │ │ │ │ │ ├── command.json │ │ │ │ │ ├── context-menu.json │ │ │ │ │ ├── dialog.json │ │ │ │ │ ├── drawer.json │ │ │ │ │ ├── dropdown-menu.json │ │ │ │ │ ├── empty.json │ │ │ │ │ ├── field.json │ │ │ │ │ ├── form.json │ │ │ │ │ ├── hover-card.json │ │ │ │ │ ├── index.json │ │ │ │ │ ├── input-group.json │ │ │ │ │ ├── input.json │ │ │ │ │ ├── item.json │ │ │ │ │ ├── kbd.json │ │ │ │ │ ├── label.json │ │ │ │ │ ├── menubar.json │ │ │ │ │ ├── navigation-menu.json │ │ │ │ │ ├── number-field.json │ │ │ │ │ ├── pagination.json │ │ │ │ │ ├── pin-input.json │ │ │ │ │ ├── popover.json │ │ │ │ │ ├── progress.json │ │ │ │ │ ├── radio-group.json │ │ │ │ │ ├── range-calendar.json │ │ │ │ │ ├── registry.json │ │ │ │ │ ├── resizable.json │ │ │ │ │ ├── scroll-area.json │ │ │ │ │ ├── select.json │ │ │ │ │ ├── separator.json │ │ │ │ │ ├── sheet.json │ │ │ │ │ ├── sidebar.json │ │ │ │ │ ├── skeleton.json │ │ │ │ │ ├── slider.json │ │ │ │ │ ├── sonner.json │ │ │ │ │ ├── spinner.json │ │ │ │ │ ├── stepper.json │ │ │ │ │ ├── style.json │ │ │ │ │ ├── switch.json │ │ │ │ │ ├── table.json │ │ │ │ │ ├── tabs.json │ │ │ │ │ ├── tags-input.json │ │ │ │ │ ├── textarea.json │ │ │ │ │ ├── theme-daylight.json │ │ │ │ │ ├── theme-emerald.json │ │ │ │ │ ├── theme-midnight.json │ │ │ │ │ ├── toast.json │ │ │ │ │ ├── toggle-group.json │ │ │ │ │ ├── toggle.json │ │ │ │ │ ├── tooltip.json │ │ │ │ │ └── utils.json │ │ │ │ └── new-york-v4/ │ │ │ │ ├── ChartAreaAxes.json │ │ │ │ ├── ChartAreaGradient.json │ │ │ │ ├── ChartAreaIcons.json │ │ │ │ ├── ChartAreaInteractive.json │ │ │ │ ├── ChartBarDefault.json │ │ │ │ ├── ChartBarHorizontal.json │ │ │ │ ├── ChartBarInteractive.json │ │ │ │ ├── ChartBarMultiple.json │ │ │ │ ├── ChartLineDefault.json │ │ │ │ ├── ChartLineInteractive.json │ │ │ │ ├── ChartLineLinear.json │ │ │ │ ├── ChartLineStep.json │ │ │ │ ├── ChartPieDonut.json │ │ │ │ ├── ChartPieDonutText.json │ │ │ │ ├── ChartPieSimple.json │ │ │ │ ├── ChartPieStacked.json │ │ │ │ ├── ChartTooltipDefault.json │ │ │ │ ├── ChartTooltipIcons.json │ │ │ │ ├── ChartTooltipIndicatorLine.json │ │ │ │ ├── ChartTooltipIndicatorNone.json │ │ │ │ ├── ChartTooltipLabelCustom.json │ │ │ │ ├── ChartTooltipLabelFormatter.json │ │ │ │ ├── ChartTooltipLabelNone.json │ │ │ │ ├── accordion.json │ │ │ │ ├── alert-dialog.json │ │ │ │ ├── alert-example.json │ │ │ │ ├── alert.json │ │ │ │ ├── aspect-ratio.json │ │ │ │ ├── auto-form.json │ │ │ │ ├── avatar.json │ │ │ │ ├── badge.json │ │ │ │ ├── breadcrumb.json │ │ │ │ ├── button-group.json │ │ │ │ ├── button.json │ │ │ │ ├── calendar.json │ │ │ │ ├── card.json │ │ │ │ ├── carousel.json │ │ │ │ ├── chart.json │ │ │ │ ├── checkbox.json │ │ │ │ ├── collapsible.json │ │ │ │ ├── combobox.json │ │ │ │ ├── command.json │ │ │ │ ├── context-menu.json │ │ │ │ ├── dashboard-01.json │ │ │ │ ├── dialog.json │ │ │ │ ├── drawer.json │ │ │ │ ├── dropdown-menu.json │ │ │ │ ├── empty.json │ │ │ │ ├── field.json │ │ │ │ ├── form.json │ │ │ │ ├── hover-card.json │ │ │ │ ├── index.json │ │ │ │ ├── input-group.json │ │ │ │ ├── input-otp.json │ │ │ │ ├── input.json │ │ │ │ ├── item.json │ │ │ │ ├── kbd.json │ │ │ │ ├── label.json │ │ │ │ ├── login-01.json │ │ │ │ ├── login-02.json │ │ │ │ ├── login-03.json │ │ │ │ ├── login-04.json │ │ │ │ ├── login-05.json │ │ │ │ ├── menubar.json │ │ │ │ ├── native-select.json │ │ │ │ ├── navigation-menu.json │ │ │ │ ├── number-field.json │ │ │ │ ├── otp-01.json │ │ │ │ ├── otp-02.json │ │ │ │ ├── otp-03.json │ │ │ │ ├── otp-04.json │ │ │ │ ├── otp-05.json │ │ │ │ ├── pagination.json │ │ │ │ ├── pin-input.json │ │ │ │ ├── popover.json │ │ │ │ ├── products-01.json │ │ │ │ ├── progress.json │ │ │ │ ├── radio-group.json │ │ │ │ ├── range-calendar.json │ │ │ │ ├── registry.json │ │ │ │ ├── resizable.json │ │ │ │ ├── scroll-area.json │ │ │ │ ├── select.json │ │ │ │ ├── separator.json │ │ │ │ ├── sheet.json │ │ │ │ ├── sidebar-01.json │ │ │ │ ├── sidebar-02.json │ │ │ │ ├── sidebar-03.json │ │ │ │ ├── sidebar-04.json │ │ │ │ ├── sidebar-05.json │ │ │ │ ├── sidebar-06.json │ │ │ │ ├── sidebar-07.json │ │ │ │ ├── sidebar-08.json │ │ │ │ ├── sidebar-09.json │ │ │ │ ├── sidebar-10.json │ │ │ │ ├── sidebar-11.json │ │ │ │ ├── sidebar-12.json │ │ │ │ ├── sidebar-13.json │ │ │ │ ├── sidebar-14.json │ │ │ │ ├── sidebar-15.json │ │ │ │ ├── sidebar-16.json │ │ │ │ ├── sidebar-demo.json │ │ │ │ ├── sidebar.json │ │ │ │ ├── signup-01.json │ │ │ │ ├── signup-02.json │ │ │ │ ├── signup-03.json │ │ │ │ ├── signup-04.json │ │ │ │ ├── signup-05.json │ │ │ │ ├── skeleton.json │ │ │ │ ├── slider.json │ │ │ │ ├── sonner.json │ │ │ │ ├── spinner.json │ │ │ │ ├── stepper.json │ │ │ │ ├── style.json │ │ │ │ ├── switch.json │ │ │ │ ├── table.json │ │ │ │ ├── tabs.json │ │ │ │ ├── tags-input.json │ │ │ │ ├── textarea.json │ │ │ │ ├── theme-daylight.json │ │ │ │ ├── theme-emerald.json │ │ │ │ ├── theme-gray.json │ │ │ │ ├── theme-midnight.json │ │ │ │ ├── theme-neutral.json │ │ │ │ ├── theme-slate.json │ │ │ │ ├── theme-stone.json │ │ │ │ ├── theme-zinc.json │ │ │ │ ├── toggle-group.json │ │ │ │ ├── toggle.json │ │ │ │ ├── tooltip.json │ │ │ │ └── utils.json │ │ │ ├── themes/ │ │ │ │ ├── gray.json │ │ │ │ ├── neutral.json │ │ │ │ ├── slate.json │ │ │ │ ├── stone.json │ │ │ │ └── zinc.json │ │ │ └── themes.css │ │ ├── schema/ │ │ │ ├── registry-item.json │ │ │ └── registry.json │ │ ├── schema.json │ │ └── site.webmanifest │ ├── registry/ │ │ ├── __blocks__.json │ │ ├── __index__.ts │ │ ├── _legacy-base-colors.ts │ │ ├── _legacy-colors.ts │ │ ├── _legacy-themes.ts │ │ ├── base-colors.ts │ │ ├── bases/ │ │ │ ├── __index__.ts │ │ │ └── reka/ │ │ │ ├── blocks/ │ │ │ │ ├── _registry.ts │ │ │ │ ├── chatgpt.vue │ │ │ │ ├── elevenlabs.vue │ │ │ │ ├── github.vue │ │ │ │ ├── preview.vue │ │ │ │ └── vercel.vue │ │ │ ├── components/ │ │ │ │ ├── example/ │ │ │ │ │ ├── Example.vue │ │ │ │ │ ├── ExampleWrapper.vue │ │ │ │ │ └── index.ts │ │ │ │ └── icon-placeholder/ │ │ │ │ ├── IconPlaceholder.vue │ │ │ │ └── index.ts │ │ │ ├── examples/ │ │ │ │ ├── _registry.ts │ │ │ │ ├── accordion/ │ │ │ │ │ ├── AccordionBasic.vue │ │ │ │ │ ├── AccordionExample.vue │ │ │ │ │ ├── AccordionInCard.vue │ │ │ │ │ ├── AccordionMultiple.vue │ │ │ │ │ ├── AccordionWithBorders.vue │ │ │ │ │ └── AccordionWithDisabled.vue │ │ │ │ ├── alert/ │ │ │ │ │ ├── AlertBasic.vue │ │ │ │ │ ├── AlertDestructive.vue │ │ │ │ │ ├── AlertExample.vue │ │ │ │ │ ├── AlertWithActions.vue │ │ │ │ │ └── AlertWithIcons.vue │ │ │ │ ├── alert-dialog/ │ │ │ │ │ ├── AlertDialogBasic.vue │ │ │ │ │ ├── AlertDialogDestructive.vue │ │ │ │ │ ├── AlertDialogExample.vue │ │ │ │ │ ├── AlertDialogInDialog.vue │ │ │ │ │ ├── AlertDialogSmall.vue │ │ │ │ │ ├── AlertDialogSmallWithMedia.vue │ │ │ │ │ └── AlertDialogWithMedia.vue │ │ │ │ ├── aspect-ratio/ │ │ │ │ │ ├── AspectRatio16x9.vue │ │ │ │ │ ├── AspectRatio1x1.vue │ │ │ │ │ ├── AspectRatio21x9.vue │ │ │ │ │ ├── AspectRatio9x16.vue │ │ │ │ │ └── AspectRatioExample.vue │ │ │ │ ├── avatar/ │ │ │ │ │ ├── AvatarExample.vue │ │ │ │ │ ├── AvatarGroupExample.vue │ │ │ │ │ ├── AvatarGroupWithCount.vue │ │ │ │ │ ├── AvatarGroupWithIconCount.vue │ │ │ │ │ ├── AvatarInEmpty.vue │ │ │ │ │ ├── AvatarSizes.vue │ │ │ │ │ ├── AvatarWithBadge.vue │ │ │ │ │ └── AvatarWithBadgeIcon.vue │ │ │ │ ├── badge/ │ │ │ │ │ ├── BadgeAsLink.vue │ │ │ │ │ ├── BadgeCustomColors.vue │ │ │ │ │ ├── BadgeExample.vue │ │ │ │ │ ├── BadgeLongText.vue │ │ │ │ │ ├── BadgeVariants.vue │ │ │ │ │ ├── BadgeWithIconLeft.vue │ │ │ │ │ ├── BadgeWithIconRight.vue │ │ │ │ │ └── BadgeWithSpinner.vue │ │ │ │ ├── breadcrumb/ │ │ │ │ │ ├── BreadcrumbBasic.vue │ │ │ │ │ ├── BreadcrumbExample.vue │ │ │ │ │ ├── BreadcrumbWithDropdown.vue │ │ │ │ │ └── BreadcrumbWithLink.vue │ │ │ │ ├── button/ │ │ │ │ │ ├── ButtonExample.vue │ │ │ │ │ ├── ButtonExamples.vue │ │ │ │ │ ├── ButtonIconLeft.vue │ │ │ │ │ ├── ButtonIconOnly.vue │ │ │ │ │ ├── ButtonIconRight.vue │ │ │ │ │ ├── ButtonInvalidStates.vue │ │ │ │ │ └── ButtonVariantsAndSizes.vue │ │ │ │ ├── button-group/ │ │ │ │ │ ├── ButtonGroupBasic.vue │ │ │ │ │ ├── ButtonGroupExample.vue │ │ │ │ │ ├── ButtonGroupNavigation.vue │ │ │ │ │ ├── ButtonGroupNested.vue │ │ │ │ │ ├── ButtonGroupPagination.vue │ │ │ │ │ ├── ButtonGroupPaginationSplit.vue │ │ │ │ │ ├── ButtonGroupTextAlignment.vue │ │ │ │ │ ├── ButtonGroupVertical.vue │ │ │ │ │ ├── ButtonGroupVerticalNested.vue │ │ │ │ │ ├── ButtonGroupWithDropdown.vue │ │ │ │ │ ├── ButtonGroupWithFields.vue │ │ │ │ │ ├── ButtonGroupWithIcons.vue │ │ │ │ │ ├── ButtonGroupWithInput.vue │ │ │ │ │ ├── ButtonGroupWithInputGroup.vue │ │ │ │ │ ├── ButtonGroupWithLike.vue │ │ │ │ │ ├── ButtonGroupWithSelect.vue │ │ │ │ │ ├── ButtonGroupWithSelectAndInput.vue │ │ │ │ │ └── ButtonGroupWithText.vue │ │ │ │ ├── calendar/ │ │ │ │ │ ├── CalendarBookedDates.vue │ │ │ │ │ ├── CalendarCustomDays.vue │ │ │ │ │ ├── CalendarExample.vue │ │ │ │ │ ├── CalendarMultiple.vue │ │ │ │ │ ├── CalendarRange.vue │ │ │ │ │ ├── CalendarRangeMultipleMonths.vue │ │ │ │ │ ├── CalendarSingle.vue │ │ │ │ │ ├── CalendarWeekNumbers.vue │ │ │ │ │ ├── CalendarWithPresets.vue │ │ │ │ │ ├── CalendarWithTime.vue │ │ │ │ │ ├── DatePickerSimple.vue │ │ │ │ │ ├── DatePickerWithDropdowns.vue │ │ │ │ │ └── DatePickerWithRange.vue │ │ │ │ ├── card/ │ │ │ │ │ ├── CardDefault.vue │ │ │ │ │ ├── CardExample.vue │ │ │ │ │ ├── CardFooterWithBorder.vue │ │ │ │ │ ├── CardFooterWithBorderSmall.vue │ │ │ │ │ ├── CardHeaderWithBorder.vue │ │ │ │ │ ├── CardHeaderWithBorderSmall.vue │ │ │ │ │ ├── CardLogin.vue │ │ │ │ │ ├── CardMeetingNotes.vue │ │ │ │ │ ├── CardSmall.vue │ │ │ │ │ ├── CardWithImage.vue │ │ │ │ │ └── CardWithImageSmall.vue │ │ │ │ ├── carousel/ │ │ │ │ │ ├── CarouselBasic.vue │ │ │ │ │ ├── CarouselExample.vue │ │ │ │ │ ├── CarouselMultiple.vue │ │ │ │ │ └── CarouselWithGap.vue │ │ │ │ ├── chart/ │ │ │ │ │ ├── ChartAreaExample.vue │ │ │ │ │ ├── ChartBarExample.vue │ │ │ │ │ ├── ChartExample.vue │ │ │ │ │ ├── ChartLineExample.vue │ │ │ │ │ └── ChartRadialExample.vue │ │ │ │ ├── checkbox/ │ │ │ │ │ ├── CheckboxBasic.vue │ │ │ │ │ ├── CheckboxDisabled.vue │ │ │ │ │ ├── CheckboxExample.vue │ │ │ │ │ ├── CheckboxGroup.vue │ │ │ │ │ ├── CheckboxInTable.vue │ │ │ │ │ ├── CheckboxInvalid.vue │ │ │ │ │ ├── CheckboxWithDescription.vue │ │ │ │ │ └── CheckboxWithTitle.vue │ │ │ │ ├── collapsible/ │ │ │ │ │ ├── CollapsibleExample.vue │ │ │ │ │ ├── CollapsibleFileTree.vue │ │ │ │ │ └── CollapsibleSettings.vue │ │ │ │ ├── combobox/ │ │ │ │ │ ├── ComboboxAutoHighlight.vue │ │ │ │ │ ├── ComboboxBasic.vue │ │ │ │ │ ├── ComboboxDisabled.vue │ │ │ │ │ ├── ComboboxExample.vue │ │ │ │ │ ├── ComboboxInDialog.vue │ │ │ │ │ ├── ComboboxInPopup.vue │ │ │ │ │ ├── ComboboxInputAddon.vue │ │ │ │ │ ├── ComboboxInvalid.vue │ │ │ │ │ ├── ComboboxLargeList.vue │ │ │ │ │ ├── ComboboxWithClear.vue │ │ │ │ │ ├── ComboboxWithForm.vue │ │ │ │ │ ├── ComboboxWithGroups.vue │ │ │ │ │ ├── ComboboxWithGroupsAndSeparator.vue │ │ │ │ │ └── ComboboxWithOtherInputs.vue │ │ │ │ ├── command/ │ │ │ │ │ ├── CommandBasic.vue │ │ │ │ │ ├── CommandExample.vue │ │ │ │ │ ├── CommandManyItems.vue │ │ │ │ │ ├── CommandWithGroups.vue │ │ │ │ │ └── CommandWithShortcuts.vue │ │ │ │ ├── context-menu/ │ │ │ │ │ ├── ContextMenuBasic.vue │ │ │ │ │ ├── ContextMenuExample.vue │ │ │ │ │ ├── ContextMenuInDialog.vue │ │ │ │ │ ├── ContextMenuWithCheckboxes.vue │ │ │ │ │ ├── ContextMenuWithDestructive.vue │ │ │ │ │ ├── ContextMenuWithGroups.vue │ │ │ │ │ ├── ContextMenuWithIcons.vue │ │ │ │ │ ├── ContextMenuWithRadio.vue │ │ │ │ │ ├── ContextMenuWithShortcuts.vue │ │ │ │ │ ├── ContextMenuWithSides.vue │ │ │ │ │ └── ContextMenuWithSubmenu.vue │ │ │ │ ├── dialog/ │ │ │ │ │ ├── DialogChatSettings.vue │ │ │ │ │ ├── DialogExample.vue │ │ │ │ │ ├── DialogNoCloseButton.vue │ │ │ │ │ ├── DialogScrollableContent.vue │ │ │ │ │ ├── DialogWithForm.vue │ │ │ │ │ └── DialogWithStickyFooter.vue │ │ │ │ ├── drawer/ │ │ │ │ │ ├── DrawerExample.vue │ │ │ │ │ ├── DrawerScrollableContent.vue │ │ │ │ │ └── DrawerWithSides.vue │ │ │ │ ├── dropdown-menu/ │ │ │ │ │ ├── DropdownMenuBasic.vue │ │ │ │ │ ├── DropdownMenuComplex.vue │ │ │ │ │ ├── DropdownMenuExample.vue │ │ │ │ │ ├── DropdownMenuInDialog.vue │ │ │ │ │ ├── DropdownMenuWithAvatar.vue │ │ │ │ │ ├── DropdownMenuWithCheckboxes.vue │ │ │ │ │ ├── DropdownMenuWithCheckboxesIcons.vue │ │ │ │ │ ├── DropdownMenuWithDestructive.vue │ │ │ │ │ ├── DropdownMenuWithIcons.vue │ │ │ │ │ ├── DropdownMenuWithRadio.vue │ │ │ │ │ ├── DropdownMenuWithRadioIcons.vue │ │ │ │ │ ├── DropdownMenuWithShortcuts.vue │ │ │ │ │ └── DropdownMenuWithSubmenu.vue │ │ │ │ ├── empty/ │ │ │ │ │ ├── EmptyBasic.vue │ │ │ │ │ ├── EmptyExample.vue │ │ │ │ │ ├── EmptyInCard.vue │ │ │ │ │ ├── EmptyWithBorder.vue │ │ │ │ │ ├── EmptyWithIcon.vue │ │ │ │ │ ├── EmptyWithMutedBackground.vue │ │ │ │ │ └── EmptyWithMutedBackgroundAlt.vue │ │ │ │ ├── field/ │ │ │ │ │ ├── CheckboxFields.vue │ │ │ │ │ ├── FieldExample.vue │ │ │ │ │ ├── InputFields.vue │ │ │ │ │ ├── InputOTPFields.vue │ │ │ │ │ ├── NativeSelectFields.vue │ │ │ │ │ ├── RadioFields.vue │ │ │ │ │ ├── SelectFields.vue │ │ │ │ │ ├── SliderFields.vue │ │ │ │ │ ├── SwitchFields.vue │ │ │ │ │ └── TextareaFields.vue │ │ │ │ ├── form/ │ │ │ │ │ ├── FormBasic.vue │ │ │ │ │ ├── FormExample.vue │ │ │ │ │ └── FormWithCheckbox.vue │ │ │ │ ├── hover-card/ │ │ │ │ │ ├── HoverCardExample.vue │ │ │ │ │ ├── HoverCardInDialog.vue │ │ │ │ │ └── HoverCardSides.vue │ │ │ │ ├── input/ │ │ │ │ │ ├── InputBasic.vue │ │ │ │ │ ├── InputDisabled.vue │ │ │ │ │ ├── InputExample.vue │ │ │ │ │ ├── InputForm.vue │ │ │ │ │ ├── InputInvalid.vue │ │ │ │ │ ├── InputTypes.vue │ │ │ │ │ ├── InputWithButton.vue │ │ │ │ │ ├── InputWithDescription.vue │ │ │ │ │ ├── InputWithLabel.vue │ │ │ │ │ ├── InputWithNativeSelect.vue │ │ │ │ │ └── InputWithSelect.vue │ │ │ │ ├── input-group/ │ │ │ │ │ ├── InputGroupBasic.vue │ │ │ │ │ ├── InputGroupExample.vue │ │ │ │ │ ├── InputGroupWithButton.vue │ │ │ │ │ └── InputGroupWithTextarea.vue │ │ │ │ ├── input-otp/ │ │ │ │ │ └── InputOTPExample.vue │ │ │ │ ├── item/ │ │ │ │ │ ├── ItemBasic.vue │ │ │ │ │ ├── ItemExample.vue │ │ │ │ │ └── ItemWithActions.vue │ │ │ │ ├── kbd/ │ │ │ │ │ ├── KbdBasic.vue │ │ │ │ │ ├── KbdExample.vue │ │ │ │ │ └── KbdWithGroup.vue │ │ │ │ ├── label/ │ │ │ │ │ ├── LabelDisabled.vue │ │ │ │ │ ├── LabelExample.vue │ │ │ │ │ ├── LabelWithCheckbox.vue │ │ │ │ │ ├── LabelWithInput.vue │ │ │ │ │ └── LabelWithTextarea.vue │ │ │ │ ├── menubar/ │ │ │ │ │ ├── MenubarBasic.vue │ │ │ │ │ ├── MenubarExample.vue │ │ │ │ │ ├── MenubarWithCheckboxes.vue │ │ │ │ │ ├── MenubarWithIcons.vue │ │ │ │ │ ├── MenubarWithRadio.vue │ │ │ │ │ └── MenubarWithSubmenu.vue │ │ │ │ ├── native-select/ │ │ │ │ │ ├── NativeSelectBasic.vue │ │ │ │ │ ├── NativeSelectExample.vue │ │ │ │ │ └── NativeSelectWithOptGroup.vue │ │ │ │ ├── navigation-menu/ │ │ │ │ │ ├── NavigationMenuBasic.vue │ │ │ │ │ └── NavigationMenuExample.vue │ │ │ │ ├── number-field/ │ │ │ │ │ ├── NumberFieldBasic.vue │ │ │ │ │ ├── NumberFieldDisabled.vue │ │ │ │ │ ├── NumberFieldExample.vue │ │ │ │ │ └── NumberFieldWithLabel.vue │ │ │ │ ├── pagination/ │ │ │ │ │ ├── PaginationBasic.vue │ │ │ │ │ ├── PaginationExample.vue │ │ │ │ │ ├── PaginationSimple.vue │ │ │ │ │ └── PaginationWithSelect.vue │ │ │ │ ├── pin-input/ │ │ │ │ │ ├── PinInputBasic.vue │ │ │ │ │ ├── PinInputExample.vue │ │ │ │ │ ├── PinInputMasked.vue │ │ │ │ │ └── PinInputWithSeparator.vue │ │ │ │ ├── popover/ │ │ │ │ │ ├── PopoverAlignments.vue │ │ │ │ │ ├── PopoverBasic.vue │ │ │ │ │ ├── PopoverExample.vue │ │ │ │ │ ├── PopoverInDialog.vue │ │ │ │ │ └── PopoverWithForm.vue │ │ │ │ ├── progress/ │ │ │ │ │ ├── FileUploadList.vue │ │ │ │ │ ├── ProgressControlled.vue │ │ │ │ │ ├── ProgressExample.vue │ │ │ │ │ ├── ProgressValues.vue │ │ │ │ │ └── ProgressWithLabel.vue │ │ │ │ ├── radio-group/ │ │ │ │ │ ├── RadioGroupBasic.vue │ │ │ │ │ ├── RadioGroupDisabled.vue │ │ │ │ │ ├── RadioGroupExample.vue │ │ │ │ │ ├── RadioGroupGrid.vue │ │ │ │ │ ├── RadioGroupInvalid.vue │ │ │ │ │ ├── RadioGroupWithDescriptions.vue │ │ │ │ │ └── RadioGroupWithFieldSet.vue │ │ │ │ ├── range-calendar/ │ │ │ │ │ ├── RangeCalendarBasic.vue │ │ │ │ │ ├── RangeCalendarExample.vue │ │ │ │ │ └── RangeCalendarMultipleMonths.vue │ │ │ │ ├── resizable/ │ │ │ │ │ └── ResizableExample.vue │ │ │ │ ├── scroll-area/ │ │ │ │ │ ├── ScrollAreaExample.vue │ │ │ │ │ ├── ScrollAreaHorizontal.vue │ │ │ │ │ └── ScrollAreaVertical.vue │ │ │ │ ├── select/ │ │ │ │ │ ├── SelectBasic.vue │ │ │ │ │ ├── SelectDisabled.vue │ │ │ │ │ ├── SelectExample.vue │ │ │ │ │ ├── SelectInDialog.vue │ │ │ │ │ ├── SelectInline.vue │ │ │ │ │ ├── SelectInvalid.vue │ │ │ │ │ ├── SelectLargeList.vue │ │ │ │ │ ├── SelectPlan.vue │ │ │ │ │ ├── SelectPopper.vue │ │ │ │ │ ├── SelectSizes.vue │ │ │ │ │ ├── SelectWithButton.vue │ │ │ │ │ ├── SelectWithField.vue │ │ │ │ │ ├── SelectWithGroups.vue │ │ │ │ │ └── SelectWithIcons.vue │ │ │ │ ├── separator/ │ │ │ │ │ ├── SeparatorExample.vue │ │ │ │ │ ├── SeparatorHorizontal.vue │ │ │ │ │ ├── SeparatorInList.vue │ │ │ │ │ ├── SeparatorVertical.vue │ │ │ │ │ └── SeparatorVerticalMenu.vue │ │ │ │ ├── sheet/ │ │ │ │ │ ├── SheetExample.vue │ │ │ │ │ ├── SheetWithForm.vue │ │ │ │ │ └── SheetWithSides.vue │ │ │ │ ├── sidebar/ │ │ │ │ │ ├── SidebarBasic.vue │ │ │ │ │ ├── SidebarCollapsible.vue │ │ │ │ │ └── SidebarExample.vue │ │ │ │ ├── skeleton/ │ │ │ │ │ ├── SkeletonAvatar.vue │ │ │ │ │ ├── SkeletonCard.vue │ │ │ │ │ ├── SkeletonExample.vue │ │ │ │ │ ├── SkeletonForm.vue │ │ │ │ │ ├── SkeletonTable.vue │ │ │ │ │ └── SkeletonText.vue │ │ │ │ ├── slider/ │ │ │ │ │ ├── SliderBasic.vue │ │ │ │ │ ├── SliderControlled.vue │ │ │ │ │ ├── SliderDisabled.vue │ │ │ │ │ ├── SliderExample.vue │ │ │ │ │ ├── SliderMultiple.vue │ │ │ │ │ ├── SliderRange.vue │ │ │ │ │ └── SliderVertical.vue │ │ │ │ ├── sonner/ │ │ │ │ │ └── SonnerExample.vue │ │ │ │ ├── spinner/ │ │ │ │ │ ├── SpinnerBasic.vue │ │ │ │ │ ├── SpinnerExample.vue │ │ │ │ │ ├── SpinnerInBadges.vue │ │ │ │ │ ├── SpinnerInButtons.vue │ │ │ │ │ ├── SpinnerInEmpty.vue │ │ │ │ │ └── SpinnerInInputGroup.vue │ │ │ │ ├── stepper/ │ │ │ │ │ ├── StepperBasic.vue │ │ │ │ │ ├── StepperExample.vue │ │ │ │ │ └── StepperVertical.vue │ │ │ │ ├── switch/ │ │ │ │ │ ├── SwitchBasic.vue │ │ │ │ │ ├── SwitchDisabled.vue │ │ │ │ │ ├── SwitchExample.vue │ │ │ │ │ ├── SwitchSizes.vue │ │ │ │ │ └── SwitchWithDescription.vue │ │ │ │ ├── table/ │ │ │ │ │ ├── TableBasic.vue │ │ │ │ │ ├── TableExample.vue │ │ │ │ │ ├── TableSimple.vue │ │ │ │ │ ├── TableWithActions.vue │ │ │ │ │ ├── TableWithBadges.vue │ │ │ │ │ ├── TableWithFooter.vue │ │ │ │ │ ├── TableWithInput.vue │ │ │ │ │ ├── TableWithSelect.vue │ │ │ │ │ └── data.ts │ │ │ │ ├── tabs/ │ │ │ │ │ ├── TabsBasic.vue │ │ │ │ │ ├── TabsDisabled.vue │ │ │ │ │ ├── TabsExample.vue │ │ │ │ │ ├── TabsIconOnly.vue │ │ │ │ │ ├── TabsLine.vue │ │ │ │ │ ├── TabsLineDisabled.vue │ │ │ │ │ ├── TabsLineWithContent.vue │ │ │ │ │ ├── TabsMultiple.vue │ │ │ │ │ ├── TabsVariantsComparison.vue │ │ │ │ │ ├── TabsVertical.vue │ │ │ │ │ ├── TabsWithContent.vue │ │ │ │ │ ├── TabsWithDropdown.vue │ │ │ │ │ ├── TabsWithIcons.vue │ │ │ │ │ └── TabsWithInputAndButton.vue │ │ │ │ ├── tags-input/ │ │ │ │ │ ├── TagsInputBasic.vue │ │ │ │ │ ├── TagsInputExample.vue │ │ │ │ │ └── TagsInputWithLabel.vue │ │ │ │ ├── textarea/ │ │ │ │ │ ├── TextareaBasic.vue │ │ │ │ │ ├── TextareaDisabled.vue │ │ │ │ │ ├── TextareaExample.vue │ │ │ │ │ ├── TextareaInvalid.vue │ │ │ │ │ ├── TextareaWithDescription.vue │ │ │ │ │ └── TextareaWithLabel.vue │ │ │ │ ├── toggle/ │ │ │ │ │ ├── ToggleBasic.vue │ │ │ │ │ ├── ToggleDisabled.vue │ │ │ │ │ ├── ToggleExample.vue │ │ │ │ │ ├── ToggleOutline.vue │ │ │ │ │ ├── ToggleSizes.vue │ │ │ │ │ ├── ToggleWithButtonIcon.vue │ │ │ │ │ ├── ToggleWithButtonIconText.vue │ │ │ │ │ ├── ToggleWithButtonText.vue │ │ │ │ │ └── ToggleWithIcon.vue │ │ │ │ ├── toggle-group/ │ │ │ │ │ ├── ToggleGroupBasic.vue │ │ │ │ │ ├── ToggleGroupDateRange.vue │ │ │ │ │ ├── ToggleGroupExample.vue │ │ │ │ │ ├── ToggleGroupFilter.vue │ │ │ │ │ ├── ToggleGroupOutline.vue │ │ │ │ │ ├── ToggleGroupOutlineWithIcons.vue │ │ │ │ │ ├── ToggleGroupSizes.vue │ │ │ │ │ ├── ToggleGroupSort.vue │ │ │ │ │ ├── ToggleGroupSpacing.vue │ │ │ │ │ ├── ToggleGroupVertical.vue │ │ │ │ │ ├── ToggleGroupVerticalOutline.vue │ │ │ │ │ ├── ToggleGroupVerticalOutlineWithIcons.vue │ │ │ │ │ ├── ToggleGroupVerticalWithSpacing.vue │ │ │ │ │ ├── ToggleGroupWithIcons.vue │ │ │ │ │ └── ToggleGroupWithInputAndSelect.vue │ │ │ │ └── tooltip/ │ │ │ │ ├── TooltipBasic.vue │ │ │ │ ├── TooltipDisabled.vue │ │ │ │ ├── TooltipExample.vue │ │ │ │ ├── TooltipFormatted.vue │ │ │ │ ├── TooltipLongContent.vue │ │ │ │ ├── TooltipOnLink.vue │ │ │ │ ├── TooltipSides.vue │ │ │ │ ├── TooltipWithIcon.vue │ │ │ │ └── TooltipWithKeyboard.vue │ │ │ ├── lib/ │ │ │ │ ├── _registry.ts │ │ │ │ └── utils.ts │ │ │ ├── registry.ts │ │ │ └── ui/ │ │ │ ├── _registry.ts │ │ │ ├── accordion/ │ │ │ │ ├── Accordion.vue │ │ │ │ ├── AccordionContent.vue │ │ │ │ ├── AccordionItem.vue │ │ │ │ ├── AccordionTrigger.vue │ │ │ │ └── index.ts │ │ │ ├── alert/ │ │ │ │ ├── Alert.vue │ │ │ │ ├── AlertAction.vue │ │ │ │ ├── AlertDescription.vue │ │ │ │ ├── AlertTitle.vue │ │ │ │ └── index.ts │ │ │ ├── alert-dialog/ │ │ │ │ ├── AlertDialog.vue │ │ │ │ ├── AlertDialogAction.vue │ │ │ │ ├── AlertDialogCancel.vue │ │ │ │ ├── AlertDialogContent.vue │ │ │ │ ├── AlertDialogDescription.vue │ │ │ │ ├── AlertDialogFooter.vue │ │ │ │ ├── AlertDialogHeader.vue │ │ │ │ ├── AlertDialogMedia.vue │ │ │ │ ├── AlertDialogTitle.vue │ │ │ │ ├── AlertDialogTrigger.vue │ │ │ │ └── index.ts │ │ │ ├── aspect-ratio/ │ │ │ │ ├── AspectRatio.vue │ │ │ │ └── index.ts │ │ │ ├── avatar/ │ │ │ │ ├── Avatar.vue │ │ │ │ ├── AvatarBadge.vue │ │ │ │ ├── AvatarFallback.vue │ │ │ │ ├── AvatarGroup.vue │ │ │ │ ├── AvatarGroupCount.vue │ │ │ │ ├── AvatarImage.vue │ │ │ │ └── index.ts │ │ │ ├── badge/ │ │ │ │ ├── Badge.vue │ │ │ │ └── index.ts │ │ │ ├── breadcrumb/ │ │ │ │ ├── Breadcrumb.vue │ │ │ │ ├── BreadcrumbEllipsis.vue │ │ │ │ ├── BreadcrumbItem.vue │ │ │ │ ├── BreadcrumbLink.vue │ │ │ │ ├── BreadcrumbList.vue │ │ │ │ ├── BreadcrumbPage.vue │ │ │ │ ├── BreadcrumbSeparator.vue │ │ │ │ └── index.ts │ │ │ ├── button/ │ │ │ │ ├── Button.vue │ │ │ │ └── index.ts │ │ │ ├── button-group/ │ │ │ │ ├── ButtonGroup.vue │ │ │ │ ├── ButtonGroupSeparator.vue │ │ │ │ ├── ButtonGroupText.vue │ │ │ │ └── index.ts │ │ │ ├── calendar/ │ │ │ │ ├── Calendar.vue │ │ │ │ ├── CalendarCell.vue │ │ │ │ ├── CalendarCellTrigger.vue │ │ │ │ ├── CalendarGrid.vue │ │ │ │ ├── CalendarGridBody.vue │ │ │ │ ├── CalendarGridHead.vue │ │ │ │ ├── CalendarGridRow.vue │ │ │ │ ├── CalendarHeadCell.vue │ │ │ │ ├── CalendarHeader.vue │ │ │ │ ├── CalendarHeading.vue │ │ │ │ ├── CalendarNextButton.vue │ │ │ │ ├── CalendarPrevButton.vue │ │ │ │ └── index.ts │ │ │ ├── card/ │ │ │ │ ├── Card.vue │ │ │ │ ├── CardAction.vue │ │ │ │ ├── CardContent.vue │ │ │ │ ├── CardDescription.vue │ │ │ │ ├── CardFooter.vue │ │ │ │ ├── CardHeader.vue │ │ │ │ ├── CardTitle.vue │ │ │ │ └── index.ts │ │ │ ├── carousel/ │ │ │ │ ├── Carousel.vue │ │ │ │ ├── CarouselContent.vue │ │ │ │ ├── CarouselItem.vue │ │ │ │ ├── CarouselNext.vue │ │ │ │ ├── CarouselPrevious.vue │ │ │ │ ├── index.ts │ │ │ │ ├── interface.ts │ │ │ │ └── useCarousel.ts │ │ │ ├── chart/ │ │ │ │ ├── ChartContainer.vue │ │ │ │ ├── ChartLegendContent.vue │ │ │ │ ├── ChartStyle.vue │ │ │ │ ├── ChartTooltipContent.vue │ │ │ │ ├── index.ts │ │ │ │ └── utils.ts │ │ │ ├── checkbox/ │ │ │ │ ├── Checkbox.vue │ │ │ │ └── index.ts │ │ │ ├── collapsible/ │ │ │ │ ├── Collapsible.vue │ │ │ │ ├── CollapsibleContent.vue │ │ │ │ ├── CollapsibleTrigger.vue │ │ │ │ └── index.ts │ │ │ ├── combobox/ │ │ │ │ ├── Combobox.vue │ │ │ │ ├── ComboboxAnchor.vue │ │ │ │ ├── ComboboxEmpty.vue │ │ │ │ ├── ComboboxGroup.vue │ │ │ │ ├── ComboboxInput.vue │ │ │ │ ├── ComboboxItem.vue │ │ │ │ ├── ComboboxItemIndicator.vue │ │ │ │ ├── ComboboxList.vue │ │ │ │ ├── ComboboxSeparator.vue │ │ │ │ ├── ComboboxTrigger.vue │ │ │ │ ├── ComboboxViewport.vue │ │ │ │ └── index.ts │ │ │ ├── command/ │ │ │ │ ├── Command.vue │ │ │ │ ├── CommandDialog.vue │ │ │ │ ├── CommandEmpty.vue │ │ │ │ ├── CommandGroup.vue │ │ │ │ ├── CommandInput.vue │ │ │ │ ├── CommandItem.vue │ │ │ │ ├── CommandList.vue │ │ │ │ ├── CommandSeparator.vue │ │ │ │ ├── CommandShortcut.vue │ │ │ │ └── index.ts │ │ │ ├── context-menu/ │ │ │ │ ├── ContextMenu.vue │ │ │ │ ├── ContextMenuCheckboxItem.vue │ │ │ │ ├── ContextMenuContent.vue │ │ │ │ ├── ContextMenuGroup.vue │ │ │ │ ├── ContextMenuItem.vue │ │ │ │ ├── ContextMenuLabel.vue │ │ │ │ ├── ContextMenuPortal.vue │ │ │ │ ├── ContextMenuRadioGroup.vue │ │ │ │ ├── ContextMenuRadioItem.vue │ │ │ │ ├── ContextMenuSeparator.vue │ │ │ │ ├── ContextMenuShortcut.vue │ │ │ │ ├── ContextMenuSub.vue │ │ │ │ ├── ContextMenuSubContent.vue │ │ │ │ ├── ContextMenuSubTrigger.vue │ │ │ │ ├── ContextMenuTrigger.vue │ │ │ │ └── index.ts │ │ │ ├── dialog/ │ │ │ │ ├── Dialog.vue │ │ │ │ ├── DialogClose.vue │ │ │ │ ├── DialogContent.vue │ │ │ │ ├── DialogDescription.vue │ │ │ │ ├── DialogFooter.vue │ │ │ │ ├── DialogHeader.vue │ │ │ │ ├── DialogOverlay.vue │ │ │ │ ├── DialogScrollContent.vue │ │ │ │ ├── DialogTitle.vue │ │ │ │ ├── DialogTrigger.vue │ │ │ │ └── index.ts │ │ │ ├── drawer/ │ │ │ │ ├── Drawer.vue │ │ │ │ ├── DrawerClose.vue │ │ │ │ ├── DrawerContent.vue │ │ │ │ ├── DrawerDescription.vue │ │ │ │ ├── DrawerFooter.vue │ │ │ │ ├── DrawerHeader.vue │ │ │ │ ├── DrawerOverlay.vue │ │ │ │ ├── DrawerTitle.vue │ │ │ │ ├── DrawerTrigger.vue │ │ │ │ └── index.ts │ │ │ ├── dropdown-menu/ │ │ │ │ ├── DropdownMenu.vue │ │ │ │ ├── DropdownMenuCheckboxItem.vue │ │ │ │ ├── DropdownMenuContent.vue │ │ │ │ ├── DropdownMenuGroup.vue │ │ │ │ ├── DropdownMenuItem.vue │ │ │ │ ├── DropdownMenuLabel.vue │ │ │ │ ├── DropdownMenuRadioGroup.vue │ │ │ │ ├── DropdownMenuRadioItem.vue │ │ │ │ ├── DropdownMenuSeparator.vue │ │ │ │ ├── DropdownMenuShortcut.vue │ │ │ │ ├── DropdownMenuSub.vue │ │ │ │ ├── DropdownMenuSubContent.vue │ │ │ │ ├── DropdownMenuSubTrigger.vue │ │ │ │ ├── DropdownMenuTrigger.vue │ │ │ │ └── index.ts │ │ │ ├── empty/ │ │ │ │ ├── Empty.vue │ │ │ │ ├── EmptyContent.vue │ │ │ │ ├── EmptyDescription.vue │ │ │ │ ├── EmptyHeader.vue │ │ │ │ ├── EmptyMedia.vue │ │ │ │ ├── EmptyTitle.vue │ │ │ │ └── index.ts │ │ │ ├── field/ │ │ │ │ ├── Field.vue │ │ │ │ ├── FieldContent.vue │ │ │ │ ├── FieldDescription.vue │ │ │ │ ├── FieldError.vue │ │ │ │ ├── FieldGroup.vue │ │ │ │ ├── FieldLabel.vue │ │ │ │ ├── FieldLegend.vue │ │ │ │ ├── FieldSeparator.vue │ │ │ │ ├── FieldSet.vue │ │ │ │ ├── FieldTitle.vue │ │ │ │ └── index.ts │ │ │ ├── form/ │ │ │ │ ├── FormControl.vue │ │ │ │ ├── FormDescription.vue │ │ │ │ ├── FormItem.vue │ │ │ │ ├── FormLabel.vue │ │ │ │ ├── FormMessage.vue │ │ │ │ ├── index.ts │ │ │ │ ├── injectionKeys.ts │ │ │ │ └── useFormField.ts │ │ │ ├── hover-card/ │ │ │ │ ├── HoverCard.vue │ │ │ │ ├── HoverCardContent.vue │ │ │ │ ├── HoverCardTrigger.vue │ │ │ │ └── index.ts │ │ │ ├── input/ │ │ │ │ ├── Input.vue │ │ │ │ └── index.ts │ │ │ ├── input-group/ │ │ │ │ ├── InputGroup.vue │ │ │ │ ├── InputGroupAddon.vue │ │ │ │ ├── InputGroupButton.vue │ │ │ │ ├── InputGroupInput.vue │ │ │ │ ├── InputGroupText.vue │ │ │ │ ├── InputGroupTextarea.vue │ │ │ │ └── index.ts │ │ │ ├── input-otp/ │ │ │ │ ├── InputOTP.vue │ │ │ │ ├── InputOTPGroup.vue │ │ │ │ ├── InputOTPSeparator.vue │ │ │ │ ├── InputOTPSlot.vue │ │ │ │ └── index.ts │ │ │ ├── item/ │ │ │ │ ├── Item.vue │ │ │ │ ├── ItemActions.vue │ │ │ │ ├── ItemContent.vue │ │ │ │ ├── ItemDescription.vue │ │ │ │ ├── ItemFooter.vue │ │ │ │ ├── ItemGroup.vue │ │ │ │ ├── ItemHeader.vue │ │ │ │ ├── ItemMedia.vue │ │ │ │ ├── ItemSeparator.vue │ │ │ │ ├── ItemTitle.vue │ │ │ │ └── index.ts │ │ │ ├── kbd/ │ │ │ │ ├── Kbd.vue │ │ │ │ ├── KbdGroup.vue │ │ │ │ └── index.ts │ │ │ ├── label/ │ │ │ │ ├── Label.vue │ │ │ │ └── index.ts │ │ │ ├── menubar/ │ │ │ │ ├── Menubar.vue │ │ │ │ ├── MenubarCheckboxItem.vue │ │ │ │ ├── MenubarContent.vue │ │ │ │ ├── MenubarGroup.vue │ │ │ │ ├── MenubarItem.vue │ │ │ │ ├── MenubarLabel.vue │ │ │ │ ├── MenubarMenu.vue │ │ │ │ ├── MenubarRadioGroup.vue │ │ │ │ ├── MenubarRadioItem.vue │ │ │ │ ├── MenubarSeparator.vue │ │ │ │ ├── MenubarShortcut.vue │ │ │ │ ├── MenubarSub.vue │ │ │ │ ├── MenubarSubContent.vue │ │ │ │ ├── MenubarSubTrigger.vue │ │ │ │ ├── MenubarTrigger.vue │ │ │ │ └── index.ts │ │ │ ├── native-select/ │ │ │ │ ├── NativeSelect.vue │ │ │ │ ├── NativeSelectOptGroup.vue │ │ │ │ ├── NativeSelectOption.vue │ │ │ │ └── index.ts │ │ │ ├── navigation-menu/ │ │ │ │ ├── NavigationMenu.vue │ │ │ │ ├── NavigationMenuContent.vue │ │ │ │ ├── NavigationMenuIndicator.vue │ │ │ │ ├── NavigationMenuItem.vue │ │ │ │ ├── NavigationMenuLink.vue │ │ │ │ ├── NavigationMenuList.vue │ │ │ │ ├── NavigationMenuTrigger.vue │ │ │ │ ├── NavigationMenuViewport.vue │ │ │ │ └── index.ts │ │ │ ├── number-field/ │ │ │ │ ├── NumberField.vue │ │ │ │ ├── NumberFieldContent.vue │ │ │ │ ├── NumberFieldDecrement.vue │ │ │ │ ├── NumberFieldIncrement.vue │ │ │ │ ├── NumberFieldInput.vue │ │ │ │ └── index.ts │ │ │ ├── pagination/ │ │ │ │ ├── Pagination.vue │ │ │ │ ├── PaginationContent.vue │ │ │ │ ├── PaginationEllipsis.vue │ │ │ │ ├── PaginationFirst.vue │ │ │ │ ├── PaginationItem.vue │ │ │ │ ├── PaginationLast.vue │ │ │ │ ├── PaginationLink.vue │ │ │ │ ├── PaginationNext.vue │ │ │ │ ├── PaginationPrevious.vue │ │ │ │ └── index.ts │ │ │ ├── pin-input/ │ │ │ │ ├── PinInput.vue │ │ │ │ ├── PinInputGroup.vue │ │ │ │ ├── PinInputSeparator.vue │ │ │ │ ├── PinInputSlot.vue │ │ │ │ └── index.ts │ │ │ ├── popover/ │ │ │ │ ├── Popover.vue │ │ │ │ ├── PopoverAnchor.vue │ │ │ │ ├── PopoverContent.vue │ │ │ │ ├── PopoverDescription.vue │ │ │ │ ├── PopoverHeader.vue │ │ │ │ ├── PopoverTitle.vue │ │ │ │ ├── PopoverTrigger.vue │ │ │ │ └── index.ts │ │ │ ├── progress/ │ │ │ │ ├── Progress.vue │ │ │ │ └── index.ts │ │ │ ├── radio-group/ │ │ │ │ ├── RadioGroup.vue │ │ │ │ ├── RadioGroupItem.vue │ │ │ │ └── index.ts │ │ │ ├── range-calendar/ │ │ │ │ ├── RangeCalendar.vue │ │ │ │ ├── RangeCalendarCell.vue │ │ │ │ ├── RangeCalendarCellTrigger.vue │ │ │ │ ├── RangeCalendarGrid.vue │ │ │ │ ├── RangeCalendarGridBody.vue │ │ │ │ ├── RangeCalendarGridHead.vue │ │ │ │ ├── RangeCalendarGridRow.vue │ │ │ │ ├── RangeCalendarHeadCell.vue │ │ │ │ ├── RangeCalendarHeader.vue │ │ │ │ ├── RangeCalendarHeading.vue │ │ │ │ ├── RangeCalendarNextButton.vue │ │ │ │ ├── RangeCalendarPrevButton.vue │ │ │ │ └── index.ts │ │ │ ├── resizable/ │ │ │ │ ├── ResizableHandle.vue │ │ │ │ ├── ResizablePanel.vue │ │ │ │ ├── ResizablePanelGroup.vue │ │ │ │ └── index.ts │ │ │ ├── scroll-area/ │ │ │ │ ├── ScrollArea.vue │ │ │ │ ├── ScrollBar.vue │ │ │ │ └── index.ts │ │ │ ├── select/ │ │ │ │ ├── Select.vue │ │ │ │ ├── SelectContent.vue │ │ │ │ ├── SelectGroup.vue │ │ │ │ ├── SelectItem.vue │ │ │ │ ├── SelectItemText.vue │ │ │ │ ├── SelectLabel.vue │ │ │ │ ├── SelectScrollDownButton.vue │ │ │ │ ├── SelectScrollUpButton.vue │ │ │ │ ├── SelectSeparator.vue │ │ │ │ ├── SelectTrigger.vue │ │ │ │ ├── SelectValue.vue │ │ │ │ └── index.ts │ │ │ ├── separator/ │ │ │ │ ├── Separator.vue │ │ │ │ └── index.ts │ │ │ ├── sheet/ │ │ │ │ ├── Sheet.vue │ │ │ │ ├── SheetClose.vue │ │ │ │ ├── SheetContent.vue │ │ │ │ ├── SheetDescription.vue │ │ │ │ ├── SheetFooter.vue │ │ │ │ ├── SheetHeader.vue │ │ │ │ ├── SheetOverlay.vue │ │ │ │ ├── SheetTitle.vue │ │ │ │ ├── SheetTrigger.vue │ │ │ │ └── index.ts │ │ │ ├── sidebar/ │ │ │ │ ├── Sidebar.vue │ │ │ │ ├── SidebarContent.vue │ │ │ │ ├── SidebarFooter.vue │ │ │ │ ├── SidebarGroup.vue │ │ │ │ ├── SidebarGroupAction.vue │ │ │ │ ├── SidebarGroupContent.vue │ │ │ │ ├── SidebarGroupLabel.vue │ │ │ │ ├── SidebarHeader.vue │ │ │ │ ├── SidebarInput.vue │ │ │ │ ├── SidebarInset.vue │ │ │ │ ├── SidebarMenu.vue │ │ │ │ ├── SidebarMenuAction.vue │ │ │ │ ├── SidebarMenuBadge.vue │ │ │ │ ├── SidebarMenuButton.vue │ │ │ │ ├── SidebarMenuButtonChild.vue │ │ │ │ ├── SidebarMenuItem.vue │ │ │ │ ├── SidebarMenuSkeleton.vue │ │ │ │ ├── SidebarMenuSub.vue │ │ │ │ ├── SidebarMenuSubButton.vue │ │ │ │ ├── SidebarMenuSubItem.vue │ │ │ │ ├── SidebarProvider.vue │ │ │ │ ├── SidebarRail.vue │ │ │ │ ├── SidebarSeparator.vue │ │ │ │ ├── SidebarTrigger.vue │ │ │ │ ├── index.ts │ │ │ │ └── utils.ts │ │ │ ├── skeleton/ │ │ │ │ ├── Skeleton.vue │ │ │ │ └── index.ts │ │ │ ├── slider/ │ │ │ │ ├── Slider.vue │ │ │ │ └── index.ts │ │ │ ├── sonner/ │ │ │ │ ├── Sonner.vue │ │ │ │ └── index.ts │ │ │ ├── spinner/ │ │ │ │ ├── Spinner.vue │ │ │ │ └── index.ts │ │ │ ├── stepper/ │ │ │ │ ├── Stepper.vue │ │ │ │ ├── StepperDescription.vue │ │ │ │ ├── StepperIndicator.vue │ │ │ │ ├── StepperItem.vue │ │ │ │ ├── StepperSeparator.vue │ │ │ │ ├── StepperTitle.vue │ │ │ │ ├── StepperTrigger.vue │ │ │ │ └── index.ts │ │ │ ├── switch/ │ │ │ │ ├── Switch.vue │ │ │ │ └── index.ts │ │ │ ├── table/ │ │ │ │ ├── Table.vue │ │ │ │ ├── TableBody.vue │ │ │ │ ├── TableCaption.vue │ │ │ │ ├── TableCell.vue │ │ │ │ ├── TableEmpty.vue │ │ │ │ ├── TableFooter.vue │ │ │ │ ├── TableHead.vue │ │ │ │ ├── TableHeader.vue │ │ │ │ ├── TableRow.vue │ │ │ │ ├── index.ts │ │ │ │ └── utils.ts │ │ │ ├── tabs/ │ │ │ │ ├── Tabs.vue │ │ │ │ ├── TabsContent.vue │ │ │ │ ├── TabsList.vue │ │ │ │ ├── TabsTrigger.vue │ │ │ │ └── index.ts │ │ │ ├── tags-input/ │ │ │ │ ├── TagsInput.vue │ │ │ │ ├── TagsInputInput.vue │ │ │ │ ├── TagsInputItem.vue │ │ │ │ ├── TagsInputItemDelete.vue │ │ │ │ ├── TagsInputItemText.vue │ │ │ │ └── index.ts │ │ │ ├── textarea/ │ │ │ │ ├── Textarea.vue │ │ │ │ └── index.ts │ │ │ ├── toggle/ │ │ │ │ ├── Toggle.vue │ │ │ │ └── index.ts │ │ │ ├── toggle-group/ │ │ │ │ ├── ToggleGroup.vue │ │ │ │ ├── ToggleGroupItem.vue │ │ │ │ └── index.ts │ │ │ └── tooltip/ │ │ │ ├── Tooltip.vue │ │ │ ├── TooltipContent.vue │ │ │ ├── TooltipProvider.vue │ │ │ ├── TooltipTrigger.vue │ │ │ └── index.ts │ │ ├── bases.ts │ │ ├── config.ts │ │ ├── fonts.ts │ │ ├── icons/ │ │ │ ├── __hugeicons__.ts │ │ │ ├── __lucide__.ts │ │ │ ├── __phosphor__.ts │ │ │ ├── __remixicon__.ts │ │ │ ├── __tabler__.ts │ │ │ ├── create-icon-loader.ts │ │ │ ├── icon-hugeicons.ts │ │ │ ├── icon-lucide.ts │ │ │ ├── icon-phosphor.ts │ │ │ ├── icon-remixicon.ts │ │ │ └── icon-tabler.ts │ │ ├── index.ts │ │ ├── new-york-v4/ │ │ │ ├── blocks/ │ │ │ │ ├── _meta.ts │ │ │ │ ├── _registry.ts │ │ │ │ ├── dashboard-01/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── AppSidebar.vue │ │ │ │ │ │ ├── ChartAreaInteractive.vue │ │ │ │ │ │ ├── DataTable.vue │ │ │ │ │ │ ├── DragHandle.vue │ │ │ │ │ │ ├── DraggableRow.vue │ │ │ │ │ │ ├── NavDocuments.vue │ │ │ │ │ │ ├── NavMain.vue │ │ │ │ │ │ ├── NavSecondary.vue │ │ │ │ │ │ ├── NavUser.vue │ │ │ │ │ │ ├── SectionCards.vue │ │ │ │ │ │ └── SiteHeader.vue │ │ │ │ │ └── page.vue │ │ │ │ ├── login-01/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── LoginForm.vue │ │ │ │ │ └── page.vue │ │ │ │ ├── login-02/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── LoginForm.vue │ │ │ │ │ └── page.vue │ │ │ │ ├── login-03/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── LoginForm.vue │ │ │ │ │ └── page.vue │ │ │ │ ├── login-04/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── LoginForm.vue │ │ │ │ │ └── page.vue │ │ │ │ ├── login-05/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── LoginForm.vue │ │ │ │ │ └── page.vue │ │ │ │ ├── otp-01/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── OTPForm.vue │ │ │ │ │ └── page.vue │ │ │ │ ├── otp-02/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── OTPForm.vue │ │ │ │ │ └── page.vue │ │ │ │ ├── otp-03/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── OTPForm.vue │ │ │ │ │ └── page.vue │ │ │ │ ├── otp-04/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── OTPForm.vue │ │ │ │ │ └── page.vue │ │ │ │ ├── otp-05/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── OTPForm.vue │ │ │ │ │ └── page.vue │ │ │ │ ├── products-01/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── ProductsTable.vue │ │ │ │ │ └── page.vue │ │ │ │ ├── sidebar-01/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── AppSidebar.vue │ │ │ │ │ │ ├── SearchForm.vue │ │ │ │ │ │ └── VersionSwitcher.vue │ │ │ │ │ └── page.vue │ │ │ │ ├── sidebar-02/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── AppSidebar.vue │ │ │ │ │ │ ├── SearchForm.vue │ │ │ │ │ │ └── VersionSwitcher.vue │ │ │ │ │ └── page.vue │ │ │ │ ├── sidebar-03/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── AppSidebar.vue │ │ │ │ │ └── page.vue │ │ │ │ ├── sidebar-04/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── AppSidebar.vue │ │ │ │ │ └── page.vue │ │ │ │ ├── sidebar-05/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── AppSidebar.vue │ │ │ │ │ │ └── SearchForm.vue │ │ │ │ │ └── page.vue │ │ │ │ ├── sidebar-06/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── AppSidebar.vue │ │ │ │ │ │ ├── NavMain.vue │ │ │ │ │ │ └── SidebarOptInForm.vue │ │ │ │ │ └── page.vue │ │ │ │ ├── sidebar-07/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── AppSidebar.vue │ │ │ │ │ │ ├── NavMain.vue │ │ │ │ │ │ ├── NavProjects.vue │ │ │ │ │ │ ├── NavUser.vue │ │ │ │ │ │ └── TeamSwitcher.vue │ │ │ │ │ └── page.vue │ │ │ │ ├── sidebar-08/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── AppSidebar.vue │ │ │ │ │ │ ├── NavMain.vue │ │ │ │ │ │ ├── NavProjects.vue │ │ │ │ │ │ ├── NavSecondary.vue │ │ │ │ │ │ └── NavUser.vue │ │ │ │ │ └── page.vue │ │ │ │ ├── sidebar-09/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── AppSidebar.vue │ │ │ │ │ │ └── NavUser.vue │ │ │ │ │ └── page.vue │ │ │ │ ├── sidebar-10/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── AppSidebar.vue │ │ │ │ │ │ ├── NavActions.vue │ │ │ │ │ │ ├── NavFavorites.vue │ │ │ │ │ │ ├── NavMain.vue │ │ │ │ │ │ ├── NavSecondary.vue │ │ │ │ │ │ ├── NavWorkspaces.vue │ │ │ │ │ │ └── TeamSwitcher.vue │ │ │ │ │ └── page.vue │ │ │ │ ├── sidebar-11/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── AppSidebar.vue │ │ │ │ │ │ └── Tree.vue │ │ │ │ │ └── page.vue │ │ │ │ ├── sidebar-12/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── AppSidebar.vue │ │ │ │ │ │ ├── Calendars.vue │ │ │ │ │ │ ├── DatePicker.vue │ │ │ │ │ │ └── NavUser.vue │ │ │ │ │ └── page.vue │ │ │ │ ├── sidebar-13/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── SettingsDialog.vue │ │ │ │ │ └── page.vue │ │ │ │ ├── sidebar-14/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── AppSidebar.vue │ │ │ │ │ └── page.vue │ │ │ │ ├── sidebar-15/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── AppSidebar.vue │ │ │ │ │ │ ├── Calendars.vue │ │ │ │ │ │ ├── DatePicker.vue │ │ │ │ │ │ ├── NavFavorites.vue │ │ │ │ │ │ ├── NavMain.vue │ │ │ │ │ │ ├── NavSecondary.vue │ │ │ │ │ │ ├── NavUser.vue │ │ │ │ │ │ ├── NavWorkspaces.vue │ │ │ │ │ │ ├── SidebarLeft.vue │ │ │ │ │ │ ├── SidebarRight.vue │ │ │ │ │ │ └── TeamSwitcher.vue │ │ │ │ │ └── page.vue │ │ │ │ ├── sidebar-16/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── AppSidebar.vue │ │ │ │ │ │ ├── NavMain.vue │ │ │ │ │ │ ├── NavProjects.vue │ │ │ │ │ │ ├── NavSecondary.vue │ │ │ │ │ │ ├── NavUser.vue │ │ │ │ │ │ ├── SearchForm.vue │ │ │ │ │ │ └── SiteHeader.vue │ │ │ │ │ └── page.vue │ │ │ │ ├── sidebar-demo/ │ │ │ │ │ └── page.vue │ │ │ │ ├── signup-01/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── SignupForm.vue │ │ │ │ │ └── page.vue │ │ │ │ ├── signup-02/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── SignupForm.vue │ │ │ │ │ └── page.vue │ │ │ │ ├── signup-03/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── SignupForm.vue │ │ │ │ │ └── page.vue │ │ │ │ ├── signup-04/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── SignupForm.vue │ │ │ │ │ └── page.vue │ │ │ │ └── signup-05/ │ │ │ │ ├── components/ │ │ │ │ │ └── SignupForm.vue │ │ │ │ └── page.vue │ │ │ ├── charts/ │ │ │ │ ├── ChartAreaAxes.vue │ │ │ │ ├── ChartAreaGradient.vue │ │ │ │ ├── ChartAreaIcons.vue │ │ │ │ ├── ChartAreaInteractive.vue │ │ │ │ ├── ChartBarDefault.vue │ │ │ │ ├── ChartBarHorizontal.vue │ │ │ │ ├── ChartBarInteractive.vue │ │ │ │ ├── ChartBarMultiple.vue │ │ │ │ ├── ChartLineDefault.vue │ │ │ │ ├── ChartLineInteractive.vue │ │ │ │ ├── ChartLineLinear.vue │ │ │ │ ├── ChartLineStep.vue │ │ │ │ ├── ChartPieDonut.vue │ │ │ │ ├── ChartPieDonutText.vue │ │ │ │ ├── ChartPieSimple.vue │ │ │ │ ├── ChartPieStacked.vue │ │ │ │ ├── ChartTooltipDefault.vue │ │ │ │ ├── ChartTooltipIcons.vue │ │ │ │ ├── ChartTooltipIndicatorLine.vue │ │ │ │ ├── ChartTooltipIndicatorNone.vue │ │ │ │ ├── ChartTooltipLabelCustom.vue │ │ │ │ ├── ChartTooltipLabelFormatter.vue │ │ │ │ ├── ChartTooltipLabelNone.vue │ │ │ │ └── _registry.ts │ │ │ ├── examples/ │ │ │ │ └── _registry.ts │ │ │ ├── lib/ │ │ │ │ ├── _registry.ts │ │ │ │ └── utils.ts │ │ │ └── ui/ │ │ │ ├── _registry.ts │ │ │ ├── accordion/ │ │ │ │ ├── Accordion.vue │ │ │ │ ├── AccordionContent.vue │ │ │ │ ├── AccordionItem.vue │ │ │ │ ├── AccordionTrigger.vue │ │ │ │ └── index.ts │ │ │ ├── alert/ │ │ │ │ ├── Alert.vue │ │ │ │ ├── AlertDescription.vue │ │ │ │ ├── AlertTitle.vue │ │ │ │ └── index.ts │ │ │ ├── alert-dialog/ │ │ │ │ ├── AlertDialog.vue │ │ │ │ ├── AlertDialogAction.vue │ │ │ │ ├── AlertDialogCancel.vue │ │ │ │ ├── AlertDialogContent.vue │ │ │ │ ├── AlertDialogDescription.vue │ │ │ │ ├── AlertDialogFooter.vue │ │ │ │ ├── AlertDialogHeader.vue │ │ │ │ ├── AlertDialogTitle.vue │ │ │ │ ├── AlertDialogTrigger.vue │ │ │ │ └── index.ts │ │ │ ├── aspect-ratio/ │ │ │ │ ├── AspectRatio.vue │ │ │ │ └── index.ts │ │ │ ├── avatar/ │ │ │ │ ├── Avatar.vue │ │ │ │ ├── AvatarFallback.vue │ │ │ │ ├── AvatarImage.vue │ │ │ │ └── index.ts │ │ │ ├── badge/ │ │ │ │ ├── Badge.vue │ │ │ │ └── index.ts │ │ │ ├── breadcrumb/ │ │ │ │ ├── Breadcrumb.vue │ │ │ │ ├── BreadcrumbEllipsis.vue │ │ │ │ ├── BreadcrumbItem.vue │ │ │ │ ├── BreadcrumbLink.vue │ │ │ │ ├── BreadcrumbList.vue │ │ │ │ ├── BreadcrumbPage.vue │ │ │ │ ├── BreadcrumbSeparator.vue │ │ │ │ └── index.ts │ │ │ ├── button/ │ │ │ │ ├── Button.vue │ │ │ │ └── index.ts │ │ │ ├── button-group/ │ │ │ │ ├── ButtonGroup.vue │ │ │ │ ├── ButtonGroupSeparator.vue │ │ │ │ ├── ButtonGroupText.vue │ │ │ │ └── index.ts │ │ │ ├── calendar/ │ │ │ │ ├── Calendar.vue │ │ │ │ ├── CalendarCell.vue │ │ │ │ ├── CalendarCellTrigger.vue │ │ │ │ ├── CalendarGrid.vue │ │ │ │ ├── CalendarGridBody.vue │ │ │ │ ├── CalendarGridHead.vue │ │ │ │ ├── CalendarGridRow.vue │ │ │ │ ├── CalendarHeadCell.vue │ │ │ │ ├── CalendarHeader.vue │ │ │ │ ├── CalendarHeading.vue │ │ │ │ ├── CalendarNextButton.vue │ │ │ │ ├── CalendarPrevButton.vue │ │ │ │ └── index.ts │ │ │ ├── card/ │ │ │ │ ├── Card.vue │ │ │ │ ├── CardAction.vue │ │ │ │ ├── CardContent.vue │ │ │ │ ├── CardDescription.vue │ │ │ │ ├── CardFooter.vue │ │ │ │ ├── CardHeader.vue │ │ │ │ ├── CardTitle.vue │ │ │ │ └── index.ts │ │ │ ├── carousel/ │ │ │ │ ├── Carousel.vue │ │ │ │ ├── CarouselContent.vue │ │ │ │ ├── CarouselItem.vue │ │ │ │ ├── CarouselNext.vue │ │ │ │ ├── CarouselPrevious.vue │ │ │ │ ├── index.ts │ │ │ │ ├── interface.ts │ │ │ │ └── useCarousel.ts │ │ │ ├── chart/ │ │ │ │ ├── ChartContainer.vue │ │ │ │ ├── ChartLegendContent.vue │ │ │ │ ├── ChartStyle.vue │ │ │ │ ├── ChartTooltipContent.vue │ │ │ │ ├── index.ts │ │ │ │ └── utils.ts │ │ │ ├── checkbox/ │ │ │ │ ├── Checkbox.vue │ │ │ │ └── index.ts │ │ │ ├── collapsible/ │ │ │ │ ├── Collapsible.vue │ │ │ │ ├── CollapsibleContent.vue │ │ │ │ ├── CollapsibleTrigger.vue │ │ │ │ └── index.ts │ │ │ ├── combobox/ │ │ │ │ ├── Combobox.vue │ │ │ │ ├── ComboboxAnchor.vue │ │ │ │ ├── ComboboxEmpty.vue │ │ │ │ ├── ComboboxGroup.vue │ │ │ │ ├── ComboboxInput.vue │ │ │ │ ├── ComboboxItem.vue │ │ │ │ ├── ComboboxItemIndicator.vue │ │ │ │ ├── ComboboxList.vue │ │ │ │ ├── ComboboxSeparator.vue │ │ │ │ ├── ComboboxTrigger.vue │ │ │ │ ├── ComboboxViewport.vue │ │ │ │ └── index.ts │ │ │ ├── command/ │ │ │ │ ├── Command.vue │ │ │ │ ├── CommandDialog.vue │ │ │ │ ├── CommandEmpty.vue │ │ │ │ ├── CommandGroup.vue │ │ │ │ ├── CommandInput.vue │ │ │ │ ├── CommandItem.vue │ │ │ │ ├── CommandList.vue │ │ │ │ ├── CommandSeparator.vue │ │ │ │ ├── CommandShortcut.vue │ │ │ │ └── index.ts │ │ │ ├── context-menu/ │ │ │ │ ├── ContextMenu.vue │ │ │ │ ├── ContextMenuCheckboxItem.vue │ │ │ │ ├── ContextMenuContent.vue │ │ │ │ ├── ContextMenuGroup.vue │ │ │ │ ├── ContextMenuItem.vue │ │ │ │ ├── ContextMenuLabel.vue │ │ │ │ ├── ContextMenuPortal.vue │ │ │ │ ├── ContextMenuRadioGroup.vue │ │ │ │ ├── ContextMenuRadioItem.vue │ │ │ │ ├── ContextMenuSeparator.vue │ │ │ │ ├── ContextMenuShortcut.vue │ │ │ │ ├── ContextMenuSub.vue │ │ │ │ ├── ContextMenuSubContent.vue │ │ │ │ ├── ContextMenuSubTrigger.vue │ │ │ │ ├── ContextMenuTrigger.vue │ │ │ │ └── index.ts │ │ │ ├── dialog/ │ │ │ │ ├── Dialog.vue │ │ │ │ ├── DialogClose.vue │ │ │ │ ├── DialogContent.vue │ │ │ │ ├── DialogDescription.vue │ │ │ │ ├── DialogFooter.vue │ │ │ │ ├── DialogHeader.vue │ │ │ │ ├── DialogOverlay.vue │ │ │ │ ├── DialogScrollContent.vue │ │ │ │ ├── DialogTitle.vue │ │ │ │ ├── DialogTrigger.vue │ │ │ │ └── index.ts │ │ │ ├── drawer/ │ │ │ │ ├── Drawer.vue │ │ │ │ ├── DrawerClose.vue │ │ │ │ ├── DrawerContent.vue │ │ │ │ ├── DrawerDescription.vue │ │ │ │ ├── DrawerFooter.vue │ │ │ │ ├── DrawerHeader.vue │ │ │ │ ├── DrawerOverlay.vue │ │ │ │ ├── DrawerTitle.vue │ │ │ │ ├── DrawerTrigger.vue │ │ │ │ └── index.ts │ │ │ ├── dropdown-menu/ │ │ │ │ ├── DropdownMenu.vue │ │ │ │ ├── DropdownMenuCheckboxItem.vue │ │ │ │ ├── DropdownMenuContent.vue │ │ │ │ ├── DropdownMenuGroup.vue │ │ │ │ ├── DropdownMenuItem.vue │ │ │ │ ├── DropdownMenuLabel.vue │ │ │ │ ├── DropdownMenuRadioGroup.vue │ │ │ │ ├── DropdownMenuRadioItem.vue │ │ │ │ ├── DropdownMenuSeparator.vue │ │ │ │ ├── DropdownMenuShortcut.vue │ │ │ │ ├── DropdownMenuSub.vue │ │ │ │ ├── DropdownMenuSubContent.vue │ │ │ │ ├── DropdownMenuSubTrigger.vue │ │ │ │ ├── DropdownMenuTrigger.vue │ │ │ │ └── index.ts │ │ │ ├── empty/ │ │ │ │ ├── Empty.vue │ │ │ │ ├── EmptyContent.vue │ │ │ │ ├── EmptyDescription.vue │ │ │ │ ├── EmptyHeader.vue │ │ │ │ ├── EmptyMedia.vue │ │ │ │ ├── EmptyTitle.vue │ │ │ │ └── index.ts │ │ │ ├── field/ │ │ │ │ ├── Field.vue │ │ │ │ ├── FieldContent.vue │ │ │ │ ├── FieldDescription.vue │ │ │ │ ├── FieldError.vue │ │ │ │ ├── FieldGroup.vue │ │ │ │ ├── FieldLabel.vue │ │ │ │ ├── FieldLegend.vue │ │ │ │ ├── FieldSeparator.vue │ │ │ │ ├── FieldSet.vue │ │ │ │ ├── FieldTitle.vue │ │ │ │ └── index.ts │ │ │ ├── form/ │ │ │ │ ├── FormControl.vue │ │ │ │ ├── FormDescription.vue │ │ │ │ ├── FormItem.vue │ │ │ │ ├── FormLabel.vue │ │ │ │ ├── FormMessage.vue │ │ │ │ ├── index.ts │ │ │ │ ├── injectionKeys.ts │ │ │ │ └── useFormField.ts │ │ │ ├── hover-card/ │ │ │ │ ├── HoverCard.vue │ │ │ │ ├── HoverCardContent.vue │ │ │ │ ├── HoverCardTrigger.vue │ │ │ │ └── index.ts │ │ │ ├── input/ │ │ │ │ ├── Input.vue │ │ │ │ └── index.ts │ │ │ ├── input-group/ │ │ │ │ ├── InputGroup.vue │ │ │ │ ├── InputGroupAddon.vue │ │ │ │ ├── InputGroupButton.vue │ │ │ │ ├── InputGroupInput.vue │ │ │ │ ├── InputGroupText.vue │ │ │ │ ├── InputGroupTextarea.vue │ │ │ │ └── index.ts │ │ │ ├── input-otp/ │ │ │ │ ├── InputOTP.vue │ │ │ │ ├── InputOTPGroup.vue │ │ │ │ ├── InputOTPSeparator.vue │ │ │ │ ├── InputOTPSlot.vue │ │ │ │ └── index.ts │ │ │ ├── item/ │ │ │ │ ├── Item.vue │ │ │ │ ├── ItemActions.vue │ │ │ │ ├── ItemContent.vue │ │ │ │ ├── ItemDescription.vue │ │ │ │ ├── ItemFooter.vue │ │ │ │ ├── ItemGroup.vue │ │ │ │ ├── ItemHeader.vue │ │ │ │ ├── ItemMedia.vue │ │ │ │ ├── ItemSeparator.vue │ │ │ │ ├── ItemTitle.vue │ │ │ │ └── index.ts │ │ │ ├── kbd/ │ │ │ │ ├── Kbd.vue │ │ │ │ ├── KbdGroup.vue │ │ │ │ └── index.ts │ │ │ ├── label/ │ │ │ │ ├── Label.vue │ │ │ │ └── index.ts │ │ │ ├── menubar/ │ │ │ │ ├── Menubar.vue │ │ │ │ ├── MenubarCheckboxItem.vue │ │ │ │ ├── MenubarContent.vue │ │ │ │ ├── MenubarGroup.vue │ │ │ │ ├── MenubarItem.vue │ │ │ │ ├── MenubarLabel.vue │ │ │ │ ├── MenubarMenu.vue │ │ │ │ ├── MenubarRadioGroup.vue │ │ │ │ ├── MenubarRadioItem.vue │ │ │ │ ├── MenubarSeparator.vue │ │ │ │ ├── MenubarShortcut.vue │ │ │ │ ├── MenubarSub.vue │ │ │ │ ├── MenubarSubContent.vue │ │ │ │ ├── MenubarSubTrigger.vue │ │ │ │ ├── MenubarTrigger.vue │ │ │ │ └── index.ts │ │ │ ├── native-select/ │ │ │ │ ├── NativeSelect.vue │ │ │ │ ├── NativeSelectOptGroup.vue │ │ │ │ ├── NativeSelectOption.vue │ │ │ │ └── index.ts │ │ │ ├── navigation-menu/ │ │ │ │ ├── NavigationMenu.vue │ │ │ │ ├── NavigationMenuContent.vue │ │ │ │ ├── NavigationMenuIndicator.vue │ │ │ │ ├── NavigationMenuItem.vue │ │ │ │ ├── NavigationMenuLink.vue │ │ │ │ ├── NavigationMenuList.vue │ │ │ │ ├── NavigationMenuTrigger.vue │ │ │ │ ├── NavigationMenuViewport.vue │ │ │ │ └── index.ts │ │ │ ├── number-field/ │ │ │ │ ├── NumberField.vue │ │ │ │ ├── NumberFieldContent.vue │ │ │ │ ├── NumberFieldDecrement.vue │ │ │ │ ├── NumberFieldIncrement.vue │ │ │ │ ├── NumberFieldInput.vue │ │ │ │ └── index.ts │ │ │ ├── pagination/ │ │ │ │ ├── Pagination.vue │ │ │ │ ├── PaginationContent.vue │ │ │ │ ├── PaginationEllipsis.vue │ │ │ │ ├── PaginationFirst.vue │ │ │ │ ├── PaginationItem.vue │ │ │ │ ├── PaginationLast.vue │ │ │ │ ├── PaginationNext.vue │ │ │ │ ├── PaginationPrevious.vue │ │ │ │ └── index.ts │ │ │ ├── pin-input/ │ │ │ │ ├── PinInput.vue │ │ │ │ ├── PinInputGroup.vue │ │ │ │ ├── PinInputSeparator.vue │ │ │ │ ├── PinInputSlot.vue │ │ │ │ └── index.ts │ │ │ ├── popover/ │ │ │ │ ├── Popover.vue │ │ │ │ ├── PopoverAnchor.vue │ │ │ │ ├── PopoverContent.vue │ │ │ │ ├── PopoverTrigger.vue │ │ │ │ └── index.ts │ │ │ ├── progress/ │ │ │ │ ├── Progress.vue │ │ │ │ └── index.ts │ │ │ ├── radio-group/ │ │ │ │ ├── RadioGroup.vue │ │ │ │ ├── RadioGroupItem.vue │ │ │ │ └── index.ts │ │ │ ├── range-calendar/ │ │ │ │ ├── RangeCalendar.vue │ │ │ │ ├── RangeCalendarCell.vue │ │ │ │ ├── RangeCalendarCellTrigger.vue │ │ │ │ ├── RangeCalendarGrid.vue │ │ │ │ ├── RangeCalendarGridBody.vue │ │ │ │ ├── RangeCalendarGridHead.vue │ │ │ │ ├── RangeCalendarGridRow.vue │ │ │ │ ├── RangeCalendarHeadCell.vue │ │ │ │ ├── RangeCalendarHeader.vue │ │ │ │ ├── RangeCalendarHeading.vue │ │ │ │ ├── RangeCalendarNextButton.vue │ │ │ │ ├── RangeCalendarPrevButton.vue │ │ │ │ └── index.ts │ │ │ ├── resizable/ │ │ │ │ ├── ResizableHandle.vue │ │ │ │ ├── ResizablePanel.vue │ │ │ │ ├── ResizablePanelGroup.vue │ │ │ │ └── index.ts │ │ │ ├── scroll-area/ │ │ │ │ ├── ScrollArea.vue │ │ │ │ ├── ScrollBar.vue │ │ │ │ └── index.ts │ │ │ ├── select/ │ │ │ │ ├── Select.vue │ │ │ │ ├── SelectContent.vue │ │ │ │ ├── SelectGroup.vue │ │ │ │ ├── SelectItem.vue │ │ │ │ ├── SelectItemText.vue │ │ │ │ ├── SelectLabel.vue │ │ │ │ ├── SelectScrollDownButton.vue │ │ │ │ ├── SelectScrollUpButton.vue │ │ │ │ ├── SelectSeparator.vue │ │ │ │ ├── SelectTrigger.vue │ │ │ │ ├── SelectValue.vue │ │ │ │ └── index.ts │ │ │ ├── separator/ │ │ │ │ ├── Separator.vue │ │ │ │ └── index.ts │ │ │ ├── sheet/ │ │ │ │ ├── Sheet.vue │ │ │ │ ├── SheetClose.vue │ │ │ │ ├── SheetContent.vue │ │ │ │ ├── SheetDescription.vue │ │ │ │ ├── SheetFooter.vue │ │ │ │ ├── SheetHeader.vue │ │ │ │ ├── SheetOverlay.vue │ │ │ │ ├── SheetTitle.vue │ │ │ │ ├── SheetTrigger.vue │ │ │ │ └── index.ts │ │ │ ├── sidebar/ │ │ │ │ ├── Sidebar.vue │ │ │ │ ├── SidebarContent.vue │ │ │ │ ├── SidebarFooter.vue │ │ │ │ ├── SidebarGroup.vue │ │ │ │ ├── SidebarGroupAction.vue │ │ │ │ ├── SidebarGroupContent.vue │ │ │ │ ├── SidebarGroupLabel.vue │ │ │ │ ├── SidebarHeader.vue │ │ │ │ ├── SidebarInput.vue │ │ │ │ ├── SidebarInset.vue │ │ │ │ ├── SidebarMenu.vue │ │ │ │ ├── SidebarMenuAction.vue │ │ │ │ ├── SidebarMenuBadge.vue │ │ │ │ ├── SidebarMenuButton.vue │ │ │ │ ├── SidebarMenuButtonChild.vue │ │ │ │ ├── SidebarMenuItem.vue │ │ │ │ ├── SidebarMenuSkeleton.vue │ │ │ │ ├── SidebarMenuSub.vue │ │ │ │ ├── SidebarMenuSubButton.vue │ │ │ │ ├── SidebarMenuSubItem.vue │ │ │ │ ├── SidebarProvider.vue │ │ │ │ ├── SidebarRail.vue │ │ │ │ ├── SidebarSeparator.vue │ │ │ │ ├── SidebarTrigger.vue │ │ │ │ ├── index.ts │ │ │ │ └── utils.ts │ │ │ ├── skeleton/ │ │ │ │ ├── Skeleton.vue │ │ │ │ └── index.ts │ │ │ ├── slider/ │ │ │ │ ├── Slider.vue │ │ │ │ └── index.ts │ │ │ ├── sonner/ │ │ │ │ ├── Sonner.vue │ │ │ │ └── index.ts │ │ │ ├── spinner/ │ │ │ │ ├── Spinner.vue │ │ │ │ └── index.ts │ │ │ ├── stepper/ │ │ │ │ ├── Stepper.vue │ │ │ │ ├── StepperDescription.vue │ │ │ │ ├── StepperIndicator.vue │ │ │ │ ├── StepperItem.vue │ │ │ │ ├── StepperSeparator.vue │ │ │ │ ├── StepperTitle.vue │ │ │ │ ├── StepperTrigger.vue │ │ │ │ └── index.ts │ │ │ ├── switch/ │ │ │ │ ├── Switch.vue │ │ │ │ └── index.ts │ │ │ ├── table/ │ │ │ │ ├── Table.vue │ │ │ │ ├── TableBody.vue │ │ │ │ ├── TableCaption.vue │ │ │ │ ├── TableCell.vue │ │ │ │ ├── TableEmpty.vue │ │ │ │ ├── TableFooter.vue │ │ │ │ ├── TableHead.vue │ │ │ │ ├── TableHeader.vue │ │ │ │ ├── TableRow.vue │ │ │ │ ├── index.ts │ │ │ │ └── utils.ts │ │ │ ├── tabs/ │ │ │ │ ├── Tabs.vue │ │ │ │ ├── TabsContent.vue │ │ │ │ ├── TabsList.vue │ │ │ │ ├── TabsTrigger.vue │ │ │ │ └── index.ts │ │ │ ├── tags-input/ │ │ │ │ ├── TagsInput.vue │ │ │ │ ├── TagsInputInput.vue │ │ │ │ ├── TagsInputItem.vue │ │ │ │ ├── TagsInputItemDelete.vue │ │ │ │ ├── TagsInputItemText.vue │ │ │ │ └── index.ts │ │ │ ├── textarea/ │ │ │ │ ├── Textarea.vue │ │ │ │ └── index.ts │ │ │ ├── toggle/ │ │ │ │ ├── Toggle.vue │ │ │ │ └── index.ts │ │ │ ├── toggle-group/ │ │ │ │ ├── ToggleGroup.vue │ │ │ │ ├── ToggleGroupItem.vue │ │ │ │ └── index.ts │ │ │ └── tooltip/ │ │ │ ├── Tooltip.vue │ │ │ ├── TooltipContent.vue │ │ │ ├── TooltipProvider.vue │ │ │ ├── TooltipTrigger.vue │ │ │ └── index.ts │ │ ├── styles/ │ │ │ ├── style-lyra.css │ │ │ ├── style-maia.css │ │ │ ├── style-mira.css │ │ │ ├── style-nova.css │ │ │ └── style-vega.css │ │ ├── styles.ts │ │ └── themes.ts │ ├── registry.json │ ├── scripts/ │ │ ├── FINAL_SUMMARY.md │ │ ├── QUICKSTART.md │ │ ├── build-registry.ts │ │ ├── crawl-content.ts │ │ ├── generate-base-registry.ts │ │ ├── registry.config.ts │ │ └── seed-d1.ts │ ├── server/ │ │ ├── api/ │ │ │ ├── all-items.ts │ │ │ ├── base/ │ │ │ │ └── [name].ts │ │ │ ├── block/ │ │ │ │ └── [name].ts │ │ │ └── category/ │ │ │ └── [name].ts │ │ ├── routes/ │ │ │ └── raw/ │ │ │ └── [...slug].md.get.ts │ │ └── tsconfig.json │ └── tsconfig.json ├── deprecated/ │ └── www/ │ ├── .vitepress/ │ │ ├── config.mts │ │ └── theme/ │ │ ├── components/ │ │ │ ├── APITable.vue │ │ │ ├── Announcement.vue │ │ │ ├── BlockContainer.vue │ │ │ ├── BlockCopyCodeButton.vue │ │ │ ├── BlockPage.vue │ │ │ ├── BlockPreview.vue │ │ │ ├── BlockViewerCode.vue │ │ │ ├── BlockViewerFileTree.vue │ │ │ ├── Blocks.vue │ │ │ ├── BlocksNav.vue │ │ │ ├── Callout.vue │ │ │ ├── CarbonAds.vue │ │ │ ├── CodeBlockCommand.vue │ │ │ ├── CodeConfigCustomizer.vue │ │ │ ├── CodeSandbox.vue │ │ │ ├── CodeWrapper.ts │ │ │ ├── ComponentLoader.vue │ │ │ ├── ComponentPreview.vue │ │ │ ├── CustomizerCode.vue │ │ │ ├── DocsBreadcrumb.vue │ │ │ ├── EditLink.vue │ │ │ ├── ExamplesNav.vue │ │ │ ├── InlineThemePicker.vue │ │ │ ├── Kbd.vue │ │ │ ├── LandingExample.vue │ │ │ ├── LandingPage.vue │ │ │ ├── LinkedCard.vue │ │ │ ├── Logo.vue │ │ │ ├── ManualInstall.vue │ │ │ ├── MobileNav.vue │ │ │ ├── PageAction.vue │ │ │ ├── PageHeader.vue │ │ │ ├── PageHeaderDescription.vue │ │ │ ├── PageHeaderHeading.vue │ │ │ ├── Spinner.vue │ │ │ ├── Stackblitz.vue │ │ │ ├── Steps.vue │ │ │ ├── StyleSwitcher.vue │ │ │ ├── TabMarkdown.vue │ │ │ ├── TabPreview.vue │ │ │ ├── TableOfContent.vue │ │ │ ├── TableOfContentItem.vue │ │ │ ├── TableOfContentTree.vue │ │ │ ├── TabsMarkdown.vue │ │ │ ├── ThemeCustomizer.vue │ │ │ ├── ThemePopover.vue │ │ │ ├── Tooltip.vue │ │ │ ├── VPImage.vue │ │ │ ├── breadcrumb/ │ │ │ │ ├── BreadCrumb.vue │ │ │ │ ├── BreadCrumbItem.vue │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ └── theming/ │ │ │ ├── Theming.vue │ │ │ └── utils/ │ │ │ ├── charts.ts │ │ │ └── data.ts │ │ ├── composables/ │ │ │ └── style.ts │ │ ├── config/ │ │ │ ├── docs.ts │ │ │ ├── shiki.ts │ │ │ └── site.ts │ │ ├── index.ts │ │ ├── layout/ │ │ │ ├── DocsLayout.vue │ │ │ ├── ExamplesLayout.vue │ │ │ ├── MainLayout.vue │ │ │ └── ThemingLayout.vue │ │ ├── plugins/ │ │ │ ├── codeblock.ts │ │ │ ├── codewrapper.ts │ │ │ ├── previewer.ts │ │ │ └── utils.ts │ │ ├── style.css │ │ ├── styles/ │ │ │ ├── shiki.css │ │ │ ├── themes.css │ │ │ └── vp-doc.css │ │ ├── types/ │ │ │ ├── colors.ts │ │ │ └── docs.ts │ │ └── utils/ │ │ └── codeeditor.ts │ ├── __registry__/ │ │ ├── .autogenerated │ │ ├── README.md │ │ ├── block.ts │ │ ├── icons.ts │ │ └── index.ts │ ├── package.json │ ├── scripts/ │ │ ├── autogen.ts │ │ ├── build-registry.ts │ │ └── fix-import.ts │ ├── src/ │ │ ├── assets/ │ │ │ └── diagrams.drawio │ │ ├── components.d.ts │ │ ├── content/ │ │ │ ├── block-renderer.md │ │ │ ├── blocks/ │ │ │ │ ├── [categories].md │ │ │ │ └── [categories].paths.ts │ │ │ ├── blocks.md │ │ │ ├── docs/ │ │ │ │ ├── about.md │ │ │ │ ├── changelog.md │ │ │ │ ├── charts/ │ │ │ │ │ ├── area.md │ │ │ │ │ ├── bar.md │ │ │ │ │ ├── donut.md │ │ │ │ │ └── line.md │ │ │ │ ├── charts.md │ │ │ │ ├── cli.md │ │ │ │ ├── components/ │ │ │ │ │ ├── accordion.md │ │ │ │ │ ├── alert-dialog.md │ │ │ │ │ ├── alert.md │ │ │ │ │ ├── aspect-ratio.md │ │ │ │ │ ├── auto-form.md │ │ │ │ │ ├── avatar.md │ │ │ │ │ ├── badge.md │ │ │ │ │ ├── breadcrumb.md │ │ │ │ │ ├── button-group.md │ │ │ │ │ ├── button.md │ │ │ │ │ ├── calendar.md │ │ │ │ │ ├── card.md │ │ │ │ │ ├── carousel.md │ │ │ │ │ ├── checkbox.md │ │ │ │ │ ├── collapsible.md │ │ │ │ │ ├── combobox.md │ │ │ │ │ ├── command.md │ │ │ │ │ ├── context-menu.md │ │ │ │ │ ├── data-table.md │ │ │ │ │ ├── date-picker.md │ │ │ │ │ ├── dialog.md │ │ │ │ │ ├── drawer.md │ │ │ │ │ ├── dropdown-menu.md │ │ │ │ │ ├── empty.md │ │ │ │ │ ├── field.md │ │ │ │ │ ├── form.md │ │ │ │ │ ├── hover-card.md │ │ │ │ │ ├── input-group.md │ │ │ │ │ ├── input.md │ │ │ │ │ ├── item.md │ │ │ │ │ ├── kbd.md │ │ │ │ │ ├── label.md │ │ │ │ │ ├── menubar.md │ │ │ │ │ ├── navigation-menu.md │ │ │ │ │ ├── number-field.md │ │ │ │ │ ├── pagination.md │ │ │ │ │ ├── pin-input.md │ │ │ │ │ ├── popover.md │ │ │ │ │ ├── progress.md │ │ │ │ │ ├── radio-group.md │ │ │ │ │ ├── range-calendar.md │ │ │ │ │ ├── resizable.md │ │ │ │ │ ├── scroll-area.md │ │ │ │ │ ├── select.md │ │ │ │ │ ├── separator.md │ │ │ │ │ ├── sheet.md │ │ │ │ │ ├── sidebar.md │ │ │ │ │ ├── skeleton.md │ │ │ │ │ ├── slider.md │ │ │ │ │ ├── sonner.md │ │ │ │ │ ├── spinner.md │ │ │ │ │ ├── stepper.md │ │ │ │ │ ├── switch.md │ │ │ │ │ ├── table.md │ │ │ │ │ ├── tabs.md │ │ │ │ │ ├── tags-input.md │ │ │ │ │ ├── textarea.md │ │ │ │ │ ├── toast.md │ │ │ │ │ ├── toggle-group.md │ │ │ │ │ ├── toggle.md │ │ │ │ │ └── tooltip.md │ │ │ │ ├── components-json.md │ │ │ │ ├── components.md │ │ │ │ ├── contribution.md │ │ │ │ ├── dark-mode/ │ │ │ │ │ ├── astro.md │ │ │ │ │ ├── nuxt.md │ │ │ │ │ ├── vite.md │ │ │ │ │ └── vitepress.md │ │ │ │ ├── dark-mode.md │ │ │ │ ├── figma.md │ │ │ │ ├── installation/ │ │ │ │ │ ├── astro.md │ │ │ │ │ ├── laravel.md │ │ │ │ │ ├── manual.md │ │ │ │ │ ├── nuxt.md │ │ │ │ │ └── vite.md │ │ │ │ ├── installation.md │ │ │ │ ├── introduction.md │ │ │ │ ├── registry/ │ │ │ │ │ ├── examples.md │ │ │ │ │ ├── faq.md │ │ │ │ │ ├── getting-started.md │ │ │ │ │ ├── index.md │ │ │ │ │ ├── registry-item-json.md │ │ │ │ │ └── registry-json.md │ │ │ │ ├── tailwind-v4.md │ │ │ │ ├── theming.md │ │ │ │ └── typography.md │ │ │ ├── examples/ │ │ │ │ ├── authentication.md │ │ │ │ ├── cards.md │ │ │ │ ├── dashboard.md │ │ │ │ ├── forms/ │ │ │ │ │ ├── account.md │ │ │ │ │ ├── appearance.md │ │ │ │ │ ├── display.md │ │ │ │ │ ├── index.md │ │ │ │ │ └── notifications.md │ │ │ │ ├── mail.md │ │ │ │ ├── music.md │ │ │ │ ├── playground.md │ │ │ │ └── tasks.md │ │ │ ├── index.md │ │ │ ├── meta/ │ │ │ │ ├── AreaChart.md │ │ │ │ ├── BarChart.md │ │ │ │ ├── ChartCrosshair.md │ │ │ │ ├── ChartLegend.md │ │ │ │ ├── ChartSingleTooltip.md │ │ │ │ ├── ChartTooltip.md │ │ │ │ ├── DonutChart.md │ │ │ │ └── LineChart.md │ │ │ └── themes.md │ │ ├── examples/ │ │ │ ├── authentication/ │ │ │ │ ├── Example.vue │ │ │ │ └── components/ │ │ │ │ └── UserAuthForm.vue │ │ │ ├── cards/ │ │ │ │ ├── Example.vue │ │ │ │ └── components/ │ │ │ │ ├── Container.vue │ │ │ │ ├── CookieSettings.vue │ │ │ │ ├── CreateAccount.vue │ │ │ │ ├── DatePicker.vue │ │ │ │ ├── GitHubCard.vue │ │ │ │ ├── Notifications.vue │ │ │ │ ├── PaymentMethod.vue │ │ │ │ ├── ReportAnIssue.vue │ │ │ │ ├── ShareDocument.vue │ │ │ │ └── TeamMembers.vue │ │ │ ├── dashboard/ │ │ │ │ ├── Example.vue │ │ │ │ └── components/ │ │ │ │ ├── DateRangePicker.vue │ │ │ │ ├── MainNav.vue │ │ │ │ ├── Overview.vue │ │ │ │ ├── RecentSales.vue │ │ │ │ ├── Search.vue │ │ │ │ ├── TeamSwitcher.vue │ │ │ │ └── UserNav.vue │ │ │ ├── forms/ │ │ │ │ ├── Account.vue │ │ │ │ ├── Appearance.vue │ │ │ │ ├── Display.vue │ │ │ │ ├── Example.vue │ │ │ │ ├── Notifications.vue │ │ │ │ ├── components/ │ │ │ │ │ ├── AccountForm.vue │ │ │ │ │ ├── AppearanceForm.vue │ │ │ │ │ ├── DisplayForm.vue │ │ │ │ │ ├── NotificationsForm.vue │ │ │ │ │ ├── ProfileForm.vue │ │ │ │ │ └── SidebarNav.vue │ │ │ │ └── layouts/ │ │ │ │ └── FormsLayout.vue │ │ │ ├── mail/ │ │ │ │ ├── Example.vue │ │ │ │ ├── components/ │ │ │ │ │ ├── AccountSwitcher.vue │ │ │ │ │ ├── Mail.vue │ │ │ │ │ ├── MailDisplay.vue │ │ │ │ │ ├── MailList.vue │ │ │ │ │ └── Nav.vue │ │ │ │ └── data/ │ │ │ │ └── mails.ts │ │ │ ├── music/ │ │ │ │ ├── Example.vue │ │ │ │ ├── components/ │ │ │ │ │ ├── AlbumArtwork.vue │ │ │ │ │ ├── Menu.vue │ │ │ │ │ ├── PodcastEmptyPlaceholder.vue │ │ │ │ │ └── Sidebar.vue │ │ │ │ └── data/ │ │ │ │ ├── albums.ts │ │ │ │ └── playlists.ts │ │ │ ├── playground/ │ │ │ │ ├── Example.vue │ │ │ │ ├── components/ │ │ │ │ │ ├── CodeViewer.vue │ │ │ │ │ ├── MaxLengthSelector.vue │ │ │ │ │ ├── ModelSelector.vue │ │ │ │ │ ├── PresetActions.vue │ │ │ │ │ ├── PresetSave.vue │ │ │ │ │ ├── PresetSelector.vue │ │ │ │ │ ├── PresetShare.vue │ │ │ │ │ ├── TemperatureSelector.vue │ │ │ │ │ └── TopPSelector.vue │ │ │ │ └── data/ │ │ │ │ ├── models.ts │ │ │ │ └── presets.ts │ │ │ └── tasks/ │ │ │ ├── Example.vue │ │ │ ├── components/ │ │ │ │ ├── DataTable.vue │ │ │ │ ├── DataTableColumnHeader.vue │ │ │ │ ├── DataTableFacetedFilter.vue │ │ │ │ ├── DataTablePagination.vue │ │ │ │ ├── DataTableRowActions.vue │ │ │ │ ├── DataTableToolbar.vue │ │ │ │ ├── DataTableViewOptions.vue │ │ │ │ ├── UserNav.vue │ │ │ │ └── columns.ts │ │ │ └── data/ │ │ │ ├── data.ts │ │ │ ├── schema.ts │ │ │ └── tasks.json │ │ ├── lib/ │ │ │ └── utils.ts │ │ ├── public/ │ │ │ ├── r/ │ │ │ │ ├── colors/ │ │ │ │ │ ├── gray.json │ │ │ │ │ ├── index.json │ │ │ │ │ ├── neutral.json │ │ │ │ │ ├── slate.json │ │ │ │ │ ├── stone.json │ │ │ │ │ └── zinc.json │ │ │ │ ├── icons/ │ │ │ │ │ └── index.json │ │ │ │ ├── index.json │ │ │ │ ├── styles/ │ │ │ │ │ ├── default/ │ │ │ │ │ │ ├── AccordionDemo.json │ │ │ │ │ │ ├── AlertDemo.json │ │ │ │ │ │ ├── AlertDestructiveDemo.json │ │ │ │ │ │ ├── AlertDialogDemo.json │ │ │ │ │ │ ├── AreaChartCustomTooltip.json │ │ │ │ │ │ ├── AreaChartDemo.json │ │ │ │ │ │ ├── AreaChartSparkline.json │ │ │ │ │ │ ├── AspectRatioDemo.json │ │ │ │ │ │ ├── Authentication01.json │ │ │ │ │ │ ├── Authentication02.json │ │ │ │ │ │ ├── Authentication03.json │ │ │ │ │ │ ├── Authentication04.json │ │ │ │ │ │ ├── AutoFormApi.json │ │ │ │ │ │ ├── AutoFormArray.json │ │ │ │ │ │ ├── AutoFormBasic.json │ │ │ │ │ │ ├── AutoFormConfirmPassword.json │ │ │ │ │ │ ├── AutoFormControlled.json │ │ │ │ │ │ ├── AutoFormDependencies.json │ │ │ │ │ │ ├── AutoFormInputWithoutLabel.json │ │ │ │ │ │ ├── AutoFormSubObject.json │ │ │ │ │ │ ├── AvatarDemo.json │ │ │ │ │ │ ├── BadgeDemo.json │ │ │ │ │ │ ├── BadgeDestructiveDemo.json │ │ │ │ │ │ ├── BadgeOutlineDemo.json │ │ │ │ │ │ ├── BadgeSecondaryDemo.json │ │ │ │ │ │ ├── BarChartCustomTooltip.json │ │ │ │ │ │ ├── BarChartDemo.json │ │ │ │ │ │ ├── BarChartRounded.json │ │ │ │ │ │ ├── BarChartStacked.json │ │ │ │ │ │ ├── BreadcrumbDemo.json │ │ │ │ │ │ ├── BreadcrumbDropdown.json │ │ │ │ │ │ ├── BreadcrumbEllipsisDemo.json │ │ │ │ │ │ ├── BreadcrumbLinkDemo.json │ │ │ │ │ │ ├── BreadcrumbResponsive.json │ │ │ │ │ │ ├── BreadcrumbSeparatorDemo.json │ │ │ │ │ │ ├── ButtonAsChildDemo.json │ │ │ │ │ │ ├── ButtonDemo.json │ │ │ │ │ │ ├── ButtonDestructiveDemo.json │ │ │ │ │ │ ├── ButtonGhostDemo.json │ │ │ │ │ │ ├── ButtonGroupDemo.json │ │ │ │ │ │ ├── ButtonGroupInputGroupDemo.json │ │ │ │ │ │ ├── ButtonGroupNestedDemo.json │ │ │ │ │ │ ├── ButtonGroupOrientationDemo.json │ │ │ │ │ │ ├── ButtonGroupSeparatorDemo.json │ │ │ │ │ │ ├── ButtonGroupSizeDemo.json │ │ │ │ │ │ ├── ButtonGroupSplitDemo.json │ │ │ │ │ │ ├── ButtonGroupWithDropdownMenuDemo.json │ │ │ │ │ │ ├── ButtonGroupWithInputDemo.json │ │ │ │ │ │ ├── ButtonGroupWithPopoverDemo.json │ │ │ │ │ │ ├── ButtonGroupWithSelectDemo.json │ │ │ │ │ │ ├── ButtonIconDemo.json │ │ │ │ │ │ ├── ButtonLinkDemo.json │ │ │ │ │ │ ├── ButtonLoadingDemo.json │ │ │ │ │ │ ├── ButtonOutlineDemo.json │ │ │ │ │ │ ├── ButtonSecondaryDemo.json │ │ │ │ │ │ ├── ButtonWithIconDemo.json │ │ │ │ │ │ ├── CalendarDemo.json │ │ │ │ │ │ ├── CalendarForm.json │ │ │ │ │ │ ├── CalendarWithSelect.json │ │ │ │ │ │ ├── CardChat.json │ │ │ │ │ │ ├── CardDemo.json │ │ │ │ │ │ ├── CardFormDemo.json │ │ │ │ │ │ ├── CardStats.json │ │ │ │ │ │ ├── CardWithForm.json │ │ │ │ │ │ ├── CarouselApi.json │ │ │ │ │ │ ├── CarouselDemo.json │ │ │ │ │ │ ├── CarouselOrientation.json │ │ │ │ │ │ ├── CarouselPlugin.json │ │ │ │ │ │ ├── CarouselSize.json │ │ │ │ │ │ ├── CarouselSpacing.json │ │ │ │ │ │ ├── CarouselThumbnails.json │ │ │ │ │ │ ├── CheckboxDemo.json │ │ │ │ │ │ ├── CheckboxDisabled.json │ │ │ │ │ │ ├── CheckboxFormMultiple.json │ │ │ │ │ │ ├── CheckboxFormSingle.json │ │ │ │ │ │ ├── CheckboxWithText.json │ │ │ │ │ │ ├── CollapsibleDemo.json │ │ │ │ │ │ ├── ComboboxDemo.json │ │ │ │ │ │ ├── ComboboxDropdownMenu.json │ │ │ │ │ │ ├── ComboboxForm.json │ │ │ │ │ │ ├── ComboboxPopover.json │ │ │ │ │ │ ├── ComboboxResponsive.json │ │ │ │ │ │ ├── ComboboxTrigger.json │ │ │ │ │ │ ├── CommandDemo.json │ │ │ │ │ │ ├── CommandDialogDemo.json │ │ │ │ │ │ ├── CommandDropdownMenu.json │ │ │ │ │ │ ├── CommandForm.json │ │ │ │ │ │ ├── CommandPopover.json │ │ │ │ │ │ ├── CommandResponsive.json │ │ │ │ │ │ ├── ContextMenuDemo.json │ │ │ │ │ │ ├── CustomChartTooltip.json │ │ │ │ │ │ ├── Dashboard01.json │ │ │ │ │ │ ├── Dashboard02.json │ │ │ │ │ │ ├── Dashboard03.json │ │ │ │ │ │ ├── Dashboard04.json │ │ │ │ │ │ ├── Dashboard05.json │ │ │ │ │ │ ├── Dashboard06.json │ │ │ │ │ │ ├── Dashboard07.json │ │ │ │ │ │ ├── DataTableColumnPinningDemo.json │ │ │ │ │ │ ├── DataTableDemo.json │ │ │ │ │ │ ├── DataTableDemoColumn.json │ │ │ │ │ │ ├── DataTableReactiveDemo.json │ │ │ │ │ │ ├── DatePickerDemo.json │ │ │ │ │ │ ├── DatePickerForm.json │ │ │ │ │ │ ├── DatePickerWithIndependentMonths.json │ │ │ │ │ │ ├── DatePickerWithPresets.json │ │ │ │ │ │ ├── DatePickerWithRange.json │ │ │ │ │ │ ├── DemoSidebar.json │ │ │ │ │ │ ├── DemoSidebarControlled.json │ │ │ │ │ │ ├── DemoSidebarFooter.json │ │ │ │ │ │ ├── DemoSidebarGroup.json │ │ │ │ │ │ ├── DemoSidebarGroupAction.json │ │ │ │ │ │ ├── DemoSidebarGroupCollapsible.json │ │ │ │ │ │ ├── DemoSidebarHeader.json │ │ │ │ │ │ ├── DemoSidebarMenu.json │ │ │ │ │ │ ├── DemoSidebarMenuAction.json │ │ │ │ │ │ ├── DemoSidebarMenuBadge.json │ │ │ │ │ │ ├── DemoSidebarMenuCollapsible.json │ │ │ │ │ │ ├── DemoSidebarMenuSub.json │ │ │ │ │ │ ├── DialogCustomCloseButton.json │ │ │ │ │ │ ├── DialogDemo.json │ │ │ │ │ │ ├── DialogForm.json │ │ │ │ │ │ ├── DialogScrollBodyDemo.json │ │ │ │ │ │ ├── DialogScrollOverlayDemo.json │ │ │ │ │ │ ├── DonutChartColor.json │ │ │ │ │ │ ├── DonutChartCustomTooltip.json │ │ │ │ │ │ ├── DonutChartDemo.json │ │ │ │ │ │ ├── DonutChartPie.json │ │ │ │ │ │ ├── DrawerDemo.json │ │ │ │ │ │ ├── DrawerDialog.json │ │ │ │ │ │ ├── DropdownMenuCheckboxes.json │ │ │ │ │ │ ├── DropdownMenuDemo.json │ │ │ │ │ │ ├── DropdownMenuRadioGroup.json │ │ │ │ │ │ ├── EmptyAvatarDemo.json │ │ │ │ │ │ ├── EmptyAvatarGroupDemo.json │ │ │ │ │ │ ├── EmptyBackgroundDemo.json │ │ │ │ │ │ ├── EmptyDemo.json │ │ │ │ │ │ ├── EmptyInputGroupDemo.json │ │ │ │ │ │ ├── EmptyOutlineDemo.json │ │ │ │ │ │ ├── FieldCheckboxDemo.json │ │ │ │ │ │ ├── FieldChoiceCardDemo.json │ │ │ │ │ │ ├── FieldDemo.json │ │ │ │ │ │ ├── FieldFieldsetDemo.json │ │ │ │ │ │ ├── FieldGroupDemo.json │ │ │ │ │ │ ├── FieldInputDemo.json │ │ │ │ │ │ ├── FieldRadioDemo.json │ │ │ │ │ │ ├── FieldResponsiveDemo.json │ │ │ │ │ │ ├── FieldSelectDemo.json │ │ │ │ │ │ ├── FieldSliderDemo.json │ │ │ │ │ │ ├── FieldSwitchDemo.json │ │ │ │ │ │ ├── FieldTextareaDemo.json │ │ │ │ │ │ ├── HoverCardDemo.json │ │ │ │ │ │ ├── InputDemo.json │ │ │ │ │ │ ├── InputDisabled.json │ │ │ │ │ │ ├── InputFile.json │ │ │ │ │ │ ├── InputForm.json │ │ │ │ │ │ ├── InputFormAutoAnimate.json │ │ │ │ │ │ ├── InputGroupDemo.json │ │ │ │ │ │ ├── InputGroupWithButton.json │ │ │ │ │ │ ├── InputGroupWithButtonGroup.json │ │ │ │ │ │ ├── InputGroupWithCustomInput.json │ │ │ │ │ │ ├── InputGroupWithDropdown.json │ │ │ │ │ │ ├── InputGroupWithIcon.json │ │ │ │ │ │ ├── InputGroupWithLabel.json │ │ │ │ │ │ ├── InputGroupWithSpinner.json │ │ │ │ │ │ ├── InputGroupWithText.json │ │ │ │ │ │ ├── InputGroupWithTextarea.json │ │ │ │ │ │ ├── InputGroupWithTooltip.json │ │ │ │ │ │ ├── InputWithButton.json │ │ │ │ │ │ ├── InputWithIcon.json │ │ │ │ │ │ ├── InputWithLabel.json │ │ │ │ │ │ ├── ItemAvatarDemo.json │ │ │ │ │ │ ├── ItemDemo.json │ │ │ │ │ │ ├── ItemDropdownDemo.json │ │ │ │ │ │ ├── ItemGroupDemo.json │ │ │ │ │ │ ├── ItemHeaderDemo.json │ │ │ │ │ │ ├── ItemIconDemo.json │ │ │ │ │ │ ├── ItemImageDemo.json │ │ │ │ │ │ ├── ItemLinkDemo.json │ │ │ │ │ │ ├── ItemSizeDemo.json │ │ │ │ │ │ ├── ItemVariantDemo.json │ │ │ │ │ │ ├── KbdDemo.json │ │ │ │ │ │ ├── KbdWithButton.json │ │ │ │ │ │ ├── KbdWithInputGroup.json │ │ │ │ │ │ ├── KbdWithTooltip.json │ │ │ │ │ │ ├── LabelDemo.json │ │ │ │ │ │ ├── LineChartCustomTooltip.json │ │ │ │ │ │ ├── LineChartDemo.json │ │ │ │ │ │ ├── LineChartSparkline.json │ │ │ │ │ │ ├── Login01.json │ │ │ │ │ │ ├── Login02.json │ │ │ │ │ │ ├── Login03.json │ │ │ │ │ │ ├── Login04.json │ │ │ │ │ │ ├── Login05.json │ │ │ │ │ │ ├── MenubarDemo.json │ │ │ │ │ │ ├── NavigationMenuDemo.json │ │ │ │ │ │ ├── NumberFieldCurrency.json │ │ │ │ │ │ ├── NumberFieldDecimal.json │ │ │ │ │ │ ├── NumberFieldDemo.json │ │ │ │ │ │ ├── NumberFieldDisabled.json │ │ │ │ │ │ ├── NumberFieldForm.json │ │ │ │ │ │ ├── NumberFieldPercentage.json │ │ │ │ │ │ ├── PaginationDemo.json │ │ │ │ │ │ ├── PinInputControlled.json │ │ │ │ │ │ ├── PinInputDemo.json │ │ │ │ │ │ ├── PinInputDisabled.json │ │ │ │ │ │ ├── PinInputFormDemo.json │ │ │ │ │ │ ├── PinInputSeparatorDemo.json │ │ │ │ │ │ ├── PopoverDemo.json │ │ │ │ │ │ ├── ProgressDemo.json │ │ │ │ │ │ ├── RadioGroupDemo.json │ │ │ │ │ │ ├── RadioGroupForm.json │ │ │ │ │ │ ├── RangeCalendarDemo.json │ │ │ │ │ │ ├── ResizableDemo.json │ │ │ │ │ │ ├── ResizableHandleDemo.json │ │ │ │ │ │ ├── ResizableVerticalDemo.json │ │ │ │ │ │ ├── ScrollAreaDemo.json │ │ │ │ │ │ ├── ScrollAreaHorizontalDemo.json │ │ │ │ │ │ ├── SelectDemo.json │ │ │ │ │ │ ├── SelectForm.json │ │ │ │ │ │ ├── SelectScrollable.json │ │ │ │ │ │ ├── SeparatorDemo.json │ │ │ │ │ │ ├── SheetDemo.json │ │ │ │ │ │ ├── SheetSideDemo.json │ │ │ │ │ │ ├── Sidebar01.json │ │ │ │ │ │ ├── Sidebar02.json │ │ │ │ │ │ ├── Sidebar03.json │ │ │ │ │ │ ├── Sidebar04.json │ │ │ │ │ │ ├── Sidebar05.json │ │ │ │ │ │ ├── Sidebar06.json │ │ │ │ │ │ ├── Sidebar07.json │ │ │ │ │ │ ├── Sidebar08.json │ │ │ │ │ │ ├── Sidebar09.json │ │ │ │ │ │ ├── Sidebar10.json │ │ │ │ │ │ ├── Sidebar11.json │ │ │ │ │ │ ├── Sidebar12.json │ │ │ │ │ │ ├── Sidebar13.json │ │ │ │ │ │ ├── Sidebar14.json │ │ │ │ │ │ ├── Sidebar15.json │ │ │ │ │ │ ├── SkeletonCard.json │ │ │ │ │ │ ├── SkeletonDemo.json │ │ │ │ │ │ ├── SliderDemo.json │ │ │ │ │ │ ├── SliderForm.json │ │ │ │ │ │ ├── SonnerDemo.json │ │ │ │ │ │ ├── SonnerWithDialog.json │ │ │ │ │ │ ├── SpinnerBadgeDemo.json │ │ │ │ │ │ ├── SpinnerButtonsDemo.json │ │ │ │ │ │ ├── SpinnerColorDemo.json │ │ │ │ │ │ ├── SpinnerColorsDemo.json │ │ │ │ │ │ ├── SpinnerCustomDemo.json │ │ │ │ │ │ ├── SpinnerDemo.json │ │ │ │ │ │ ├── SpinnerEmptyDemo.json │ │ │ │ │ │ ├── SpinnerInputGroupDemo.json │ │ │ │ │ │ ├── SpinnerItemDemo.json │ │ │ │ │ │ ├── SpinnerSizesDemo.json │ │ │ │ │ │ ├── StepperDemo.json │ │ │ │ │ │ ├── StepperForm.json │ │ │ │ │ │ ├── StepperHorizental.json │ │ │ │ │ │ ├── StepperVertical.json │ │ │ │ │ │ ├── SwitchDemo.json │ │ │ │ │ │ ├── SwitchForm.json │ │ │ │ │ │ ├── TableDemo.json │ │ │ │ │ │ ├── TabsDemo.json │ │ │ │ │ │ ├── TabsVerticalDemo.json │ │ │ │ │ │ ├── TagsInputComboboxDemo.json │ │ │ │ │ │ ├── TagsInputDemo.json │ │ │ │ │ │ ├── TagsInputFormDemo.json │ │ │ │ │ │ ├── TextareaDemo.json │ │ │ │ │ │ ├── TextareaDisabled.json │ │ │ │ │ │ ├── TextareaForm.json │ │ │ │ │ │ ├── TextareaWithButton.json │ │ │ │ │ │ ├── TextareaWithLabel.json │ │ │ │ │ │ ├── TextareaWithText.json │ │ │ │ │ │ ├── ToastDemo.json │ │ │ │ │ │ ├── ToastDestructive.json │ │ │ │ │ │ ├── ToastSimple.json │ │ │ │ │ │ ├── ToastWithAction.json │ │ │ │ │ │ ├── ToastWithTitle.json │ │ │ │ │ │ ├── ToggleDemo.json │ │ │ │ │ │ ├── ToggleDisabledDemo.json │ │ │ │ │ │ ├── ToggleGroupDemo.json │ │ │ │ │ │ ├── ToggleGroupDisabledDemo.json │ │ │ │ │ │ ├── ToggleGroupLargeDemo.json │ │ │ │ │ │ ├── ToggleGroupOutlineDemo.json │ │ │ │ │ │ ├── ToggleGroupSingleDemo.json │ │ │ │ │ │ ├── ToggleGroupSmallDemo.json │ │ │ │ │ │ ├── ToggleItalicDemo.json │ │ │ │ │ │ ├── ToggleItalicWithTextDemo.json │ │ │ │ │ │ ├── ToggleLargeDemo.json │ │ │ │ │ │ ├── ToggleSmallDemo.json │ │ │ │ │ │ ├── TooltipDemo.json │ │ │ │ │ │ ├── TypographyBlockquote.json │ │ │ │ │ │ ├── TypographyDemo.json │ │ │ │ │ │ ├── TypographyH1.json │ │ │ │ │ │ ├── TypographyH2.json │ │ │ │ │ │ ├── TypographyH3.json │ │ │ │ │ │ ├── TypographyH4.json │ │ │ │ │ │ ├── TypographyInlineCode.json │ │ │ │ │ │ ├── TypographyLarge.json │ │ │ │ │ │ ├── TypographyLead.json │ │ │ │ │ │ ├── TypographyList.json │ │ │ │ │ │ ├── TypographyMuted.json │ │ │ │ │ │ ├── TypographyP.json │ │ │ │ │ │ ├── TypographySmall.json │ │ │ │ │ │ ├── TypographyTable.json │ │ │ │ │ │ ├── accordion.json │ │ │ │ │ │ ├── alert-dialog.json │ │ │ │ │ │ ├── alert.json │ │ │ │ │ │ ├── aspect-ratio.json │ │ │ │ │ │ ├── auto-form.json │ │ │ │ │ │ ├── avatar.json │ │ │ │ │ │ ├── badge.json │ │ │ │ │ │ ├── breadcrumb.json │ │ │ │ │ │ ├── button-group.json │ │ │ │ │ │ ├── button.json │ │ │ │ │ │ ├── calendar.json │ │ │ │ │ │ ├── card.json │ │ │ │ │ │ ├── carousel.json │ │ │ │ │ │ ├── chart-area.json │ │ │ │ │ │ ├── chart-bar.json │ │ │ │ │ │ ├── chart-donut.json │ │ │ │ │ │ ├── chart-line.json │ │ │ │ │ │ ├── chart.json │ │ │ │ │ │ ├── checkbox.json │ │ │ │ │ │ ├── collapsible.json │ │ │ │ │ │ ├── combobox.json │ │ │ │ │ │ ├── command.json │ │ │ │ │ │ ├── context-menu.json │ │ │ │ │ │ ├── dialog.json │ │ │ │ │ │ ├── drawer.json │ │ │ │ │ │ ├── dropdown-menu.json │ │ │ │ │ │ ├── empty.json │ │ │ │ │ │ ├── field.json │ │ │ │ │ │ ├── form.json │ │ │ │ │ │ ├── hover-card.json │ │ │ │ │ │ ├── index.json │ │ │ │ │ │ ├── input-group.json │ │ │ │ │ │ ├── input.json │ │ │ │ │ │ ├── item.json │ │ │ │ │ │ ├── kbd.json │ │ │ │ │ │ ├── label.json │ │ │ │ │ │ ├── menubar.json │ │ │ │ │ │ ├── navigation-menu.json │ │ │ │ │ │ ├── number-field.json │ │ │ │ │ │ ├── pagination.json │ │ │ │ │ │ ├── pin-input.json │ │ │ │ │ │ ├── popover.json │ │ │ │ │ │ ├── progress.json │ │ │ │ │ │ ├── radio-group.json │ │ │ │ │ │ ├── range-calendar.json │ │ │ │ │ │ ├── registry.json │ │ │ │ │ │ ├── resizable.json │ │ │ │ │ │ ├── scroll-area.json │ │ │ │ │ │ ├── select.json │ │ │ │ │ │ ├── separator.json │ │ │ │ │ │ ├── sheet.json │ │ │ │ │ │ ├── sidebar.json │ │ │ │ │ │ ├── skeleton.json │ │ │ │ │ │ ├── slider.json │ │ │ │ │ │ ├── sonner.json │ │ │ │ │ │ ├── spinner.json │ │ │ │ │ │ ├── stepper.json │ │ │ │ │ │ ├── style.json │ │ │ │ │ │ ├── switch.json │ │ │ │ │ │ ├── table.json │ │ │ │ │ │ ├── tabs.json │ │ │ │ │ │ ├── tags-input.json │ │ │ │ │ │ ├── textarea.json │ │ │ │ │ │ ├── theme-daylight.json │ │ │ │ │ │ ├── theme-emerald.json │ │ │ │ │ │ ├── theme-midnight.json │ │ │ │ │ │ ├── toast.json │ │ │ │ │ │ ├── toggle-group.json │ │ │ │ │ │ ├── toggle.json │ │ │ │ │ │ ├── tooltip.json │ │ │ │ │ │ └── utils.json │ │ │ │ │ ├── index.json │ │ │ │ │ ├── new-york/ │ │ │ │ │ │ ├── AccordionDemo.json │ │ │ │ │ │ ├── AlertDemo.json │ │ │ │ │ │ ├── AlertDestructiveDemo.json │ │ │ │ │ │ ├── AlertDialogDemo.json │ │ │ │ │ │ ├── AreaChartCustomTooltip.json │ │ │ │ │ │ ├── AreaChartDemo.json │ │ │ │ │ │ ├── AreaChartSparkline.json │ │ │ │ │ │ ├── AspectRatioDemo.json │ │ │ │ │ │ ├── Authentication01.json │ │ │ │ │ │ ├── Authentication02.json │ │ │ │ │ │ ├── Authentication03.json │ │ │ │ │ │ ├── Authentication04.json │ │ │ │ │ │ ├── AutoFormApi.json │ │ │ │ │ │ ├── AutoFormArray.json │ │ │ │ │ │ ├── AutoFormBasic.json │ │ │ │ │ │ ├── AutoFormConfirmPassword.json │ │ │ │ │ │ ├── AutoFormControlled.json │ │ │ │ │ │ ├── AutoFormDependencies.json │ │ │ │ │ │ ├── AutoFormInputWithoutLabel.json │ │ │ │ │ │ ├── AutoFormSubObject.json │ │ │ │ │ │ ├── AvatarDemo.json │ │ │ │ │ │ ├── BadgeDemo.json │ │ │ │ │ │ ├── BadgeDestructiveDemo.json │ │ │ │ │ │ ├── BadgeOutlineDemo.json │ │ │ │ │ │ ├── BadgeSecondaryDemo.json │ │ │ │ │ │ ├── BarChartCustomTooltip.json │ │ │ │ │ │ ├── BarChartDemo.json │ │ │ │ │ │ ├── BarChartRounded.json │ │ │ │ │ │ ├── BarChartStacked.json │ │ │ │ │ │ ├── BreadcrumbDemo.json │ │ │ │ │ │ ├── BreadcrumbDropdown.json │ │ │ │ │ │ ├── BreadcrumbEllipsisDemo.json │ │ │ │ │ │ ├── BreadcrumbLinkDemo.json │ │ │ │ │ │ ├── BreadcrumbResponsive.json │ │ │ │ │ │ ├── BreadcrumbSeparatorDemo.json │ │ │ │ │ │ ├── ButtonAsChildDemo.json │ │ │ │ │ │ ├── ButtonDemo.json │ │ │ │ │ │ ├── ButtonDestructiveDemo.json │ │ │ │ │ │ ├── ButtonGhostDemo.json │ │ │ │ │ │ ├── ButtonGroupDemo.json │ │ │ │ │ │ ├── ButtonGroupInputGroupDemo.json │ │ │ │ │ │ ├── ButtonGroupNestedDemo.json │ │ │ │ │ │ ├── ButtonGroupOrientationDemo.json │ │ │ │ │ │ ├── ButtonGroupSeparatorDemo.json │ │ │ │ │ │ ├── ButtonGroupSizeDemo.json │ │ │ │ │ │ ├── ButtonGroupSplitDemo.json │ │ │ │ │ │ ├── ButtonGroupWithDropdownMenuDemo.json │ │ │ │ │ │ ├── ButtonGroupWithInputDemo.json │ │ │ │ │ │ ├── ButtonGroupWithPopoverDemo.json │ │ │ │ │ │ ├── ButtonGroupWithSelectDemo.json │ │ │ │ │ │ ├── ButtonIconDemo.json │ │ │ │ │ │ ├── ButtonLinkDemo.json │ │ │ │ │ │ ├── ButtonLoadingDemo.json │ │ │ │ │ │ ├── ButtonOutlineDemo.json │ │ │ │ │ │ ├── ButtonSecondaryDemo.json │ │ │ │ │ │ ├── ButtonWithIconDemo.json │ │ │ │ │ │ ├── CalendarDemo.json │ │ │ │ │ │ ├── CalendarForm.json │ │ │ │ │ │ ├── CalendarWithSelect.json │ │ │ │ │ │ ├── CardChat.json │ │ │ │ │ │ ├── CardDemo.json │ │ │ │ │ │ ├── CardFormDemo.json │ │ │ │ │ │ ├── CardStats.json │ │ │ │ │ │ ├── CardWithForm.json │ │ │ │ │ │ ├── CarouselApi.json │ │ │ │ │ │ ├── CarouselDemo.json │ │ │ │ │ │ ├── CarouselOrientation.json │ │ │ │ │ │ ├── CarouselPlugin.json │ │ │ │ │ │ ├── CarouselSize.json │ │ │ │ │ │ ├── CarouselSpacing.json │ │ │ │ │ │ ├── CarouselThumbnails.json │ │ │ │ │ │ ├── CheckboxDemo.json │ │ │ │ │ │ ├── CheckboxDisabled.json │ │ │ │ │ │ ├── CheckboxFormMultiple.json │ │ │ │ │ │ ├── CheckboxFormSingle.json │ │ │ │ │ │ ├── CheckboxWithText.json │ │ │ │ │ │ ├── CollapsibleDemo.json │ │ │ │ │ │ ├── ComboboxDemo.json │ │ │ │ │ │ ├── ComboboxDropdownMenu.json │ │ │ │ │ │ ├── ComboboxForm.json │ │ │ │ │ │ ├── ComboboxPopover.json │ │ │ │ │ │ ├── ComboboxResponsive.json │ │ │ │ │ │ ├── ComboboxTrigger.json │ │ │ │ │ │ ├── CommandDemo.json │ │ │ │ │ │ ├── CommandDialogDemo.json │ │ │ │ │ │ ├── CommandDropdownMenu.json │ │ │ │ │ │ ├── CommandForm.json │ │ │ │ │ │ ├── CommandPopover.json │ │ │ │ │ │ ├── CommandResponsive.json │ │ │ │ │ │ ├── ContextMenuDemo.json │ │ │ │ │ │ ├── CustomChartTooltip.json │ │ │ │ │ │ ├── Dashboard01.json │ │ │ │ │ │ ├── Dashboard02.json │ │ │ │ │ │ ├── Dashboard03.json │ │ │ │ │ │ ├── Dashboard04.json │ │ │ │ │ │ ├── Dashboard05.json │ │ │ │ │ │ ├── Dashboard06.json │ │ │ │ │ │ ├── Dashboard07.json │ │ │ │ │ │ ├── DataTableColumnPinningDemo.json │ │ │ │ │ │ ├── DataTableDemo.json │ │ │ │ │ │ ├── DataTableDemoColumn.json │ │ │ │ │ │ ├── DataTableReactiveDemo.json │ │ │ │ │ │ ├── DatePickerDemo.json │ │ │ │ │ │ ├── DatePickerForm.json │ │ │ │ │ │ ├── DatePickerWithIndependentMonths.json │ │ │ │ │ │ ├── DatePickerWithPresets.json │ │ │ │ │ │ ├── DatePickerWithRange.json │ │ │ │ │ │ ├── DemoSidebar.json │ │ │ │ │ │ ├── DemoSidebarControlled.json │ │ │ │ │ │ ├── DemoSidebarFooter.json │ │ │ │ │ │ ├── DemoSidebarGroup.json │ │ │ │ │ │ ├── DemoSidebarGroupAction.json │ │ │ │ │ │ ├── DemoSidebarGroupCollapsible.json │ │ │ │ │ │ ├── DemoSidebarHeader.json │ │ │ │ │ │ ├── DemoSidebarMenu.json │ │ │ │ │ │ ├── DemoSidebarMenuAction.json │ │ │ │ │ │ ├── DemoSidebarMenuBadge.json │ │ │ │ │ │ ├── DemoSidebarMenuCollapsible.json │ │ │ │ │ │ ├── DemoSidebarMenuSub.json │ │ │ │ │ │ ├── DialogCustomCloseButton.json │ │ │ │ │ │ ├── DialogDemo.json │ │ │ │ │ │ ├── DialogForm.json │ │ │ │ │ │ ├── DialogScrollBodyDemo.json │ │ │ │ │ │ ├── DialogScrollOverlayDemo.json │ │ │ │ │ │ ├── DonutChartColor.json │ │ │ │ │ │ ├── DonutChartCustomTooltip.json │ │ │ │ │ │ ├── DonutChartDemo.json │ │ │ │ │ │ ├── DonutChartPie.json │ │ │ │ │ │ ├── DrawerDemo.json │ │ │ │ │ │ ├── DrawerDialog.json │ │ │ │ │ │ ├── DropdownMenuCheckboxes.json │ │ │ │ │ │ ├── DropdownMenuDemo.json │ │ │ │ │ │ ├── DropdownMenuRadioGroup.json │ │ │ │ │ │ ├── EmptyAvatarDemo.json │ │ │ │ │ │ ├── EmptyAvatarGroupDemo.json │ │ │ │ │ │ ├── EmptyBackgroundDemo.json │ │ │ │ │ │ ├── EmptyDemo.json │ │ │ │ │ │ ├── EmptyInputGroupDemo.json │ │ │ │ │ │ ├── EmptyOutlineDemo.json │ │ │ │ │ │ ├── FieldCheckboxDemo.json │ │ │ │ │ │ ├── FieldChoiceCardDemo.json │ │ │ │ │ │ ├── FieldDemo.json │ │ │ │ │ │ ├── FieldFieldsetDemo.json │ │ │ │ │ │ ├── FieldGroupDemo.json │ │ │ │ │ │ ├── FieldInputDemo.json │ │ │ │ │ │ ├── FieldRadioDemo.json │ │ │ │ │ │ ├── FieldResponsiveDemo.json │ │ │ │ │ │ ├── FieldSelectDemo.json │ │ │ │ │ │ ├── FieldSliderDemo.json │ │ │ │ │ │ ├── FieldSwitchDemo.json │ │ │ │ │ │ ├── FieldTextareaDemo.json │ │ │ │ │ │ ├── HoverCardDemo.json │ │ │ │ │ │ ├── InputDemo.json │ │ │ │ │ │ ├── InputDisabled.json │ │ │ │ │ │ ├── InputFile.json │ │ │ │ │ │ ├── InputForm.json │ │ │ │ │ │ ├── InputFormAutoAnimate.json │ │ │ │ │ │ ├── InputGroupDemo.json │ │ │ │ │ │ ├── InputGroupWithButton.json │ │ │ │ │ │ ├── InputGroupWithButtonGroup.json │ │ │ │ │ │ ├── InputGroupWithCustomInput.json │ │ │ │ │ │ ├── InputGroupWithDropdown.json │ │ │ │ │ │ ├── InputGroupWithIcon.json │ │ │ │ │ │ ├── InputGroupWithLabel.json │ │ │ │ │ │ ├── InputGroupWithSpinner.json │ │ │ │ │ │ ├── InputGroupWithText.json │ │ │ │ │ │ ├── InputGroupWithTextarea.json │ │ │ │ │ │ ├── InputGroupWithTooltip.json │ │ │ │ │ │ ├── InputWithButton.json │ │ │ │ │ │ ├── InputWithIcon.json │ │ │ │ │ │ ├── InputWithLabel.json │ │ │ │ │ │ ├── ItemAvatarDemo.json │ │ │ │ │ │ ├── ItemDemo.json │ │ │ │ │ │ ├── ItemDropdownDemo.json │ │ │ │ │ │ ├── ItemGroupDemo.json │ │ │ │ │ │ ├── ItemHeaderDemo.json │ │ │ │ │ │ ├── ItemIconDemo.json │ │ │ │ │ │ ├── ItemImageDemo.json │ │ │ │ │ │ ├── ItemLinkDemo.json │ │ │ │ │ │ ├── ItemSizeDemo.json │ │ │ │ │ │ ├── ItemVariantDemo.json │ │ │ │ │ │ ├── KbdDemo.json │ │ │ │ │ │ ├── KbdWithButton.json │ │ │ │ │ │ ├── KbdWithInputGroup.json │ │ │ │ │ │ ├── KbdWithTooltip.json │ │ │ │ │ │ ├── LabelDemo.json │ │ │ │ │ │ ├── LineChartCustomTooltip.json │ │ │ │ │ │ ├── LineChartDemo.json │ │ │ │ │ │ ├── LineChartSparkline.json │ │ │ │ │ │ ├── Login01.json │ │ │ │ │ │ ├── Login02.json │ │ │ │ │ │ ├── Login03.json │ │ │ │ │ │ ├── Login04.json │ │ │ │ │ │ ├── Login05.json │ │ │ │ │ │ ├── MenubarDemo.json │ │ │ │ │ │ ├── NavigationMenuDemo.json │ │ │ │ │ │ ├── NumberFieldCurrency.json │ │ │ │ │ │ ├── NumberFieldDecimal.json │ │ │ │ │ │ ├── NumberFieldDemo.json │ │ │ │ │ │ ├── NumberFieldDisabled.json │ │ │ │ │ │ ├── NumberFieldForm.json │ │ │ │ │ │ ├── NumberFieldPercentage.json │ │ │ │ │ │ ├── PaginationDemo.json │ │ │ │ │ │ ├── PinInputControlled.json │ │ │ │ │ │ ├── PinInputDemo.json │ │ │ │ │ │ ├── PinInputDisabled.json │ │ │ │ │ │ ├── PinInputFormDemo.json │ │ │ │ │ │ ├── PinInputSeparatorDemo.json │ │ │ │ │ │ ├── PopoverDemo.json │ │ │ │ │ │ ├── ProgressDemo.json │ │ │ │ │ │ ├── RadioGroupDemo.json │ │ │ │ │ │ ├── RadioGroupForm.json │ │ │ │ │ │ ├── RangeCalendarDemo.json │ │ │ │ │ │ ├── ResizableDemo.json │ │ │ │ │ │ ├── ResizableHandleDemo.json │ │ │ │ │ │ ├── ResizableVerticalDemo.json │ │ │ │ │ │ ├── ScrollAreaDemo.json │ │ │ │ │ │ ├── ScrollAreaHorizontalDemo.json │ │ │ │ │ │ ├── SelectDemo.json │ │ │ │ │ │ ├── SelectForm.json │ │ │ │ │ │ ├── SelectScrollable.json │ │ │ │ │ │ ├── SeparatorDemo.json │ │ │ │ │ │ ├── SheetDemo.json │ │ │ │ │ │ ├── SheetSideDemo.json │ │ │ │ │ │ ├── Sidebar01.json │ │ │ │ │ │ ├── Sidebar02.json │ │ │ │ │ │ ├── Sidebar03.json │ │ │ │ │ │ ├── Sidebar04.json │ │ │ │ │ │ ├── Sidebar05.json │ │ │ │ │ │ ├── Sidebar06.json │ │ │ │ │ │ ├── Sidebar07.json │ │ │ │ │ │ ├── Sidebar08.json │ │ │ │ │ │ ├── Sidebar09.json │ │ │ │ │ │ ├── Sidebar10.json │ │ │ │ │ │ ├── Sidebar11.json │ │ │ │ │ │ ├── Sidebar12.json │ │ │ │ │ │ ├── Sidebar13.json │ │ │ │ │ │ ├── Sidebar14.json │ │ │ │ │ │ ├── Sidebar15.json │ │ │ │ │ │ ├── SkeletonCard.json │ │ │ │ │ │ ├── SkeletonDemo.json │ │ │ │ │ │ ├── SliderDemo.json │ │ │ │ │ │ ├── SliderForm.json │ │ │ │ │ │ ├── SonnerDemo.json │ │ │ │ │ │ ├── SonnerWithDialog.json │ │ │ │ │ │ ├── SpinnerBadgeDemo.json │ │ │ │ │ │ ├── SpinnerButtonsDemo.json │ │ │ │ │ │ ├── SpinnerColorDemo.json │ │ │ │ │ │ ├── SpinnerColorsDemo.json │ │ │ │ │ │ ├── SpinnerCustomDemo.json │ │ │ │ │ │ ├── SpinnerDemo.json │ │ │ │ │ │ ├── SpinnerEmptyDemo.json │ │ │ │ │ │ ├── SpinnerInputGroupDemo.json │ │ │ │ │ │ ├── SpinnerItemDemo.json │ │ │ │ │ │ ├── SpinnerSizesDemo.json │ │ │ │ │ │ ├── StepperDemo.json │ │ │ │ │ │ ├── StepperForm.json │ │ │ │ │ │ ├── StepperHorizental.json │ │ │ │ │ │ ├── StepperVertical.json │ │ │ │ │ │ ├── SwitchDemo.json │ │ │ │ │ │ ├── SwitchForm.json │ │ │ │ │ │ ├── TableDemo.json │ │ │ │ │ │ ├── TabsDemo.json │ │ │ │ │ │ ├── TabsVerticalDemo.json │ │ │ │ │ │ ├── TagsInputComboboxDemo.json │ │ │ │ │ │ ├── TagsInputDemo.json │ │ │ │ │ │ ├── TagsInputFormDemo.json │ │ │ │ │ │ ├── TextareaDemo.json │ │ │ │ │ │ ├── TextareaDisabled.json │ │ │ │ │ │ ├── TextareaForm.json │ │ │ │ │ │ ├── TextareaWithButton.json │ │ │ │ │ │ ├── TextareaWithLabel.json │ │ │ │ │ │ ├── TextareaWithText.json │ │ │ │ │ │ ├── ToastDemo.json │ │ │ │ │ │ ├── ToastDestructive.json │ │ │ │ │ │ ├── ToastSimple.json │ │ │ │ │ │ ├── ToastWithAction.json │ │ │ │ │ │ ├── ToastWithTitle.json │ │ │ │ │ │ ├── ToggleDemo.json │ │ │ │ │ │ ├── ToggleDisabledDemo.json │ │ │ │ │ │ ├── ToggleGroupDemo.json │ │ │ │ │ │ ├── ToggleGroupDisabledDemo.json │ │ │ │ │ │ ├── ToggleGroupLargeDemo.json │ │ │ │ │ │ ├── ToggleGroupOutlineDemo.json │ │ │ │ │ │ ├── ToggleGroupSingleDemo.json │ │ │ │ │ │ ├── ToggleGroupSmallDemo.json │ │ │ │ │ │ ├── ToggleItalicDemo.json │ │ │ │ │ │ ├── ToggleItalicWithTextDemo.json │ │ │ │ │ │ ├── ToggleLargeDemo.json │ │ │ │ │ │ ├── ToggleSmallDemo.json │ │ │ │ │ │ ├── TooltipDemo.json │ │ │ │ │ │ ├── TypographyBlockquote.json │ │ │ │ │ │ ├── TypographyDemo.json │ │ │ │ │ │ ├── TypographyH1.json │ │ │ │ │ │ ├── TypographyH2.json │ │ │ │ │ │ ├── TypographyH3.json │ │ │ │ │ │ ├── TypographyH4.json │ │ │ │ │ │ ├── TypographyInlineCode.json │ │ │ │ │ │ ├── TypographyLarge.json │ │ │ │ │ │ ├── TypographyLead.json │ │ │ │ │ │ ├── TypographyList.json │ │ │ │ │ │ ├── TypographyMuted.json │ │ │ │ │ │ ├── TypographyP.json │ │ │ │ │ │ ├── TypographySmall.json │ │ │ │ │ │ ├── TypographyTable.json │ │ │ │ │ │ ├── accordion.json │ │ │ │ │ │ ├── alert-dialog.json │ │ │ │ │ │ ├── alert.json │ │ │ │ │ │ ├── aspect-ratio.json │ │ │ │ │ │ ├── auto-form.json │ │ │ │ │ │ ├── avatar.json │ │ │ │ │ │ ├── badge.json │ │ │ │ │ │ ├── breadcrumb.json │ │ │ │ │ │ ├── button-group.json │ │ │ │ │ │ ├── button.json │ │ │ │ │ │ ├── calendar.json │ │ │ │ │ │ ├── card.json │ │ │ │ │ │ ├── carousel.json │ │ │ │ │ │ ├── chart-area.json │ │ │ │ │ │ ├── chart-bar.json │ │ │ │ │ │ ├── chart-donut.json │ │ │ │ │ │ ├── chart-line.json │ │ │ │ │ │ ├── chart.json │ │ │ │ │ │ ├── checkbox.json │ │ │ │ │ │ ├── collapsible.json │ │ │ │ │ │ ├── combobox.json │ │ │ │ │ │ ├── command.json │ │ │ │ │ │ ├── context-menu.json │ │ │ │ │ │ ├── dialog.json │ │ │ │ │ │ ├── drawer.json │ │ │ │ │ │ ├── dropdown-menu.json │ │ │ │ │ │ ├── empty.json │ │ │ │ │ │ ├── field.json │ │ │ │ │ │ ├── form.json │ │ │ │ │ │ ├── hover-card.json │ │ │ │ │ │ ├── index.json │ │ │ │ │ │ ├── input-group.json │ │ │ │ │ │ ├── input.json │ │ │ │ │ │ ├── item.json │ │ │ │ │ │ ├── kbd.json │ │ │ │ │ │ ├── label.json │ │ │ │ │ │ ├── menubar.json │ │ │ │ │ │ ├── navigation-menu.json │ │ │ │ │ │ ├── number-field.json │ │ │ │ │ │ ├── pagination.json │ │ │ │ │ │ ├── pin-input.json │ │ │ │ │ │ ├── popover.json │ │ │ │ │ │ ├── progress.json │ │ │ │ │ │ ├── radio-group.json │ │ │ │ │ │ ├── range-calendar.json │ │ │ │ │ │ ├── registry.json │ │ │ │ │ │ ├── resizable.json │ │ │ │ │ │ ├── scroll-area.json │ │ │ │ │ │ ├── select.json │ │ │ │ │ │ ├── separator.json │ │ │ │ │ │ ├── sheet.json │ │ │ │ │ │ ├── sidebar.json │ │ │ │ │ │ ├── skeleton.json │ │ │ │ │ │ ├── slider.json │ │ │ │ │ │ ├── sonner.json │ │ │ │ │ │ ├── spinner.json │ │ │ │ │ │ ├── stepper.json │ │ │ │ │ │ ├── style.json │ │ │ │ │ │ ├── switch.json │ │ │ │ │ │ ├── table.json │ │ │ │ │ │ ├── tabs.json │ │ │ │ │ │ ├── tags-input.json │ │ │ │ │ │ ├── textarea.json │ │ │ │ │ │ ├── theme-daylight.json │ │ │ │ │ │ ├── theme-emerald.json │ │ │ │ │ │ ├── theme-midnight.json │ │ │ │ │ │ ├── toast.json │ │ │ │ │ │ ├── toggle-group.json │ │ │ │ │ │ ├── toggle.json │ │ │ │ │ │ ├── tooltip.json │ │ │ │ │ │ └── utils.json │ │ │ │ │ └── new-york-v4/ │ │ │ │ │ ├── ChartAreaAxes.json │ │ │ │ │ ├── ChartAreaGradient.json │ │ │ │ │ ├── ChartAreaIcons.json │ │ │ │ │ ├── ChartAreaInteractive.json │ │ │ │ │ ├── ChartBarDefault.json │ │ │ │ │ ├── ChartBarHorizontal.json │ │ │ │ │ ├── ChartBarInteractive.json │ │ │ │ │ ├── ChartBarMultiple.json │ │ │ │ │ ├── ChartLineDefault.json │ │ │ │ │ ├── ChartLineInteractive.json │ │ │ │ │ ├── ChartLineLinear.json │ │ │ │ │ ├── ChartLineStep.json │ │ │ │ │ ├── ChartPieDonut.json │ │ │ │ │ ├── ChartPieDonutText.json │ │ │ │ │ ├── ChartPieSimple.json │ │ │ │ │ ├── ChartPieStacked.json │ │ │ │ │ ├── ChartTooltipDefault.json │ │ │ │ │ ├── ChartTooltipIcons.json │ │ │ │ │ ├── ChartTooltipIndicatorLine.json │ │ │ │ │ ├── ChartTooltipIndicatorNone.json │ │ │ │ │ ├── ChartTooltipLabelCustom.json │ │ │ │ │ ├── ChartTooltipLabelFormatter.json │ │ │ │ │ ├── ChartTooltipLabelNone.json │ │ │ │ │ ├── Login01.json │ │ │ │ │ ├── Login02.json │ │ │ │ │ ├── Login03.json │ │ │ │ │ ├── Login04.json │ │ │ │ │ ├── Login05.json │ │ │ │ │ ├── Products01.json │ │ │ │ │ ├── Sidebar01.json │ │ │ │ │ ├── Sidebar02.json │ │ │ │ │ ├── Sidebar03.json │ │ │ │ │ ├── Sidebar04.json │ │ │ │ │ ├── Sidebar05.json │ │ │ │ │ ├── Sidebar06.json │ │ │ │ │ ├── Sidebar07.json │ │ │ │ │ ├── Sidebar08.json │ │ │ │ │ ├── Sidebar09.json │ │ │ │ │ ├── Sidebar10.json │ │ │ │ │ ├── Sidebar11.json │ │ │ │ │ ├── Sidebar12.json │ │ │ │ │ ├── Sidebar13.json │ │ │ │ │ ├── Sidebar14.json │ │ │ │ │ ├── Sidebar15.json │ │ │ │ │ ├── Sidebar16.json │ │ │ │ │ ├── accordion.json │ │ │ │ │ ├── alert-dialog.json │ │ │ │ │ ├── alert.json │ │ │ │ │ ├── aspect-ratio.json │ │ │ │ │ ├── auto-form.json │ │ │ │ │ ├── avatar.json │ │ │ │ │ ├── badge.json │ │ │ │ │ ├── breadcrumb.json │ │ │ │ │ ├── button-group.json │ │ │ │ │ ├── button.json │ │ │ │ │ ├── calendar.json │ │ │ │ │ ├── card.json │ │ │ │ │ ├── carousel.json │ │ │ │ │ ├── chart.json │ │ │ │ │ ├── checkbox.json │ │ │ │ │ ├── collapsible.json │ │ │ │ │ ├── combobox.json │ │ │ │ │ ├── command.json │ │ │ │ │ ├── context-menu.json │ │ │ │ │ ├── dashboard-01.json │ │ │ │ │ ├── dialog.json │ │ │ │ │ ├── drawer.json │ │ │ │ │ ├── dropdown-menu.json │ │ │ │ │ ├── empty.json │ │ │ │ │ ├── field.json │ │ │ │ │ ├── form.json │ │ │ │ │ ├── hover-card.json │ │ │ │ │ ├── index.json │ │ │ │ │ ├── input-group.json │ │ │ │ │ ├── input.json │ │ │ │ │ ├── item.json │ │ │ │ │ ├── kbd.json │ │ │ │ │ ├── label.json │ │ │ │ │ ├── login-01.json │ │ │ │ │ ├── login-02.json │ │ │ │ │ ├── login-03.json │ │ │ │ │ ├── login-04.json │ │ │ │ │ ├── login-05.json │ │ │ │ │ ├── menubar.json │ │ │ │ │ ├── navigation-menu.json │ │ │ │ │ ├── number-field.json │ │ │ │ │ ├── pagination.json │ │ │ │ │ ├── pin-input.json │ │ │ │ │ ├── popover.json │ │ │ │ │ ├── products-01.json │ │ │ │ │ ├── progress.json │ │ │ │ │ ├── radio-group.json │ │ │ │ │ ├── range-calendar.json │ │ │ │ │ ├── registry.json │ │ │ │ │ ├── resizable.json │ │ │ │ │ ├── scroll-area.json │ │ │ │ │ ├── select.json │ │ │ │ │ ├── separator.json │ │ │ │ │ ├── sheet.json │ │ │ │ │ ├── sidebar-01.json │ │ │ │ │ ├── sidebar-02.json │ │ │ │ │ ├── sidebar-03.json │ │ │ │ │ ├── sidebar-04.json │ │ │ │ │ ├── sidebar-05.json │ │ │ │ │ ├── sidebar-06.json │ │ │ │ │ ├── sidebar-07.json │ │ │ │ │ ├── sidebar-08.json │ │ │ │ │ ├── sidebar-09.json │ │ │ │ │ ├── sidebar-10.json │ │ │ │ │ ├── sidebar-11.json │ │ │ │ │ ├── sidebar-12.json │ │ │ │ │ ├── sidebar-13.json │ │ │ │ │ ├── sidebar-14.json │ │ │ │ │ ├── sidebar-15.json │ │ │ │ │ ├── sidebar-16.json │ │ │ │ │ ├── sidebar-demo.json │ │ │ │ │ ├── sidebar.json │ │ │ │ │ ├── skeleton.json │ │ │ │ │ ├── slider.json │ │ │ │ │ ├── sonner.json │ │ │ │ │ ├── spinner.json │ │ │ │ │ ├── stepper.json │ │ │ │ │ ├── style.json │ │ │ │ │ ├── switch.json │ │ │ │ │ ├── table.json │ │ │ │ │ ├── tabs.json │ │ │ │ │ ├── tags-input.json │ │ │ │ │ ├── textarea.json │ │ │ │ │ ├── theme-daylight.json │ │ │ │ │ ├── theme-emerald.json │ │ │ │ │ ├── theme-gray.json │ │ │ │ │ ├── theme-midnight.json │ │ │ │ │ ├── theme-neutral.json │ │ │ │ │ ├── theme-slate.json │ │ │ │ │ ├── theme-stone.json │ │ │ │ │ ├── theme-zinc.json │ │ │ │ │ ├── toggle-group.json │ │ │ │ │ ├── toggle.json │ │ │ │ │ ├── tooltip.json │ │ │ │ │ └── utils.json │ │ │ │ ├── themes/ │ │ │ │ │ ├── gray.json │ │ │ │ │ ├── neutral.json │ │ │ │ │ ├── slate.json │ │ │ │ │ ├── stone.json │ │ │ │ │ └── zinc.json │ │ │ │ └── themes.css │ │ │ ├── schema/ │ │ │ │ ├── registry-item.json │ │ │ │ └── registry.json │ │ │ ├── schema.json │ │ │ └── site.webmanifest │ │ ├── registry/ │ │ │ ├── .eslintrc.json │ │ │ ├── crawl-content.ts │ │ │ ├── default/ │ │ │ │ ├── blocks/ │ │ │ │ │ ├── Authentication01.vue │ │ │ │ │ ├── Authentication02.vue │ │ │ │ │ ├── Authentication03.vue │ │ │ │ │ ├── Authentication04.vue │ │ │ │ │ ├── Dashboard01.vue │ │ │ │ │ ├── Dashboard02.vue │ │ │ │ │ ├── Dashboard03.vue │ │ │ │ │ ├── Dashboard04.vue │ │ │ │ │ ├── Dashboard05.vue │ │ │ │ │ ├── Dashboard06.vue │ │ │ │ │ ├── Dashboard07.vue │ │ │ │ │ ├── DemoSidebar.vue │ │ │ │ │ ├── DemoSidebarControlled.vue │ │ │ │ │ ├── DemoSidebarFooter.vue │ │ │ │ │ ├── DemoSidebarGroup.vue │ │ │ │ │ ├── DemoSidebarGroupAction.vue │ │ │ │ │ ├── DemoSidebarGroupCollapsible.vue │ │ │ │ │ ├── DemoSidebarHeader.vue │ │ │ │ │ ├── DemoSidebarMenu.vue │ │ │ │ │ ├── DemoSidebarMenuAction.vue │ │ │ │ │ ├── DemoSidebarMenuBadge.vue │ │ │ │ │ ├── DemoSidebarMenuCollapsible.vue │ │ │ │ │ ├── DemoSidebarMenuSub.vue │ │ │ │ │ ├── Login01/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── LoginForm.vue │ │ │ │ │ │ └── page.vue │ │ │ │ │ ├── Login02/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── LoginForm.vue │ │ │ │ │ │ └── page.vue │ │ │ │ │ ├── Login03/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── LoginForm.vue │ │ │ │ │ │ └── page.vue │ │ │ │ │ ├── Login04/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── LoginForm.vue │ │ │ │ │ │ └── page.vue │ │ │ │ │ ├── Login05/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── LoginForm.vue │ │ │ │ │ │ └── page.vue │ │ │ │ │ ├── Sidebar01/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── AppSidebar.vue │ │ │ │ │ │ │ ├── SearchForm.vue │ │ │ │ │ │ │ └── VersionSwitcher.vue │ │ │ │ │ │ └── page.vue │ │ │ │ │ ├── Sidebar02/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── AppSidebar.vue │ │ │ │ │ │ │ ├── SearchForm.vue │ │ │ │ │ │ │ └── VersionSwitcher.vue │ │ │ │ │ │ └── page.vue │ │ │ │ │ ├── Sidebar03/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── AppSidebar.vue │ │ │ │ │ │ └── page.vue │ │ │ │ │ ├── Sidebar04/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── AppSidebar.vue │ │ │ │ │ │ └── page.vue │ │ │ │ │ ├── Sidebar05/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── AppSidebar.vue │ │ │ │ │ │ │ └── SearchForm.vue │ │ │ │ │ │ └── page.vue │ │ │ │ │ ├── Sidebar06/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── AppSidebar.vue │ │ │ │ │ │ │ ├── NavMain.vue │ │ │ │ │ │ │ └── SidebarOptInForm.vue │ │ │ │ │ │ └── page.vue │ │ │ │ │ ├── Sidebar07/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── AppSidebar.vue │ │ │ │ │ │ │ ├── NavMain.vue │ │ │ │ │ │ │ ├── NavProjects.vue │ │ │ │ │ │ │ ├── NavUser.vue │ │ │ │ │ │ │ └── TeamSwitcher.vue │ │ │ │ │ │ └── page.vue │ │ │ │ │ ├── Sidebar08/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── AppSidebar.vue │ │ │ │ │ │ │ ├── NavMain.vue │ │ │ │ │ │ │ ├── NavProjects.vue │ │ │ │ │ │ │ ├── NavSecondary.vue │ │ │ │ │ │ │ └── NavUser.vue │ │ │ │ │ │ └── page.vue │ │ │ │ │ ├── Sidebar09/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── AppSidebar.vue │ │ │ │ │ │ │ └── NavUser.vue │ │ │ │ │ │ └── page.vue │ │ │ │ │ ├── Sidebar10/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── AppSidebar.vue │ │ │ │ │ │ │ ├── NavActions.vue │ │ │ │ │ │ │ ├── NavFavorites.vue │ │ │ │ │ │ │ ├── NavMain.vue │ │ │ │ │ │ │ ├── NavSecondary.vue │ │ │ │ │ │ │ ├── NavWorkspaces.vue │ │ │ │ │ │ │ └── TeamSwitcher.vue │ │ │ │ │ │ └── page.vue │ │ │ │ │ ├── Sidebar11/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── AppSidebar.vue │ │ │ │ │ │ │ └── Tree.vue │ │ │ │ │ │ └── page.vue │ │ │ │ │ ├── Sidebar12/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── AppSidebar.vue │ │ │ │ │ │ │ ├── Calendars.vue │ │ │ │ │ │ │ ├── DatePicker.vue │ │ │ │ │ │ │ └── NavUser.vue │ │ │ │ │ │ └── page.vue │ │ │ │ │ ├── Sidebar13/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── SettingsDialog.vue │ │ │ │ │ │ └── page.vue │ │ │ │ │ ├── Sidebar14/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── AppSidebar.vue │ │ │ │ │ │ └── page.vue │ │ │ │ │ └── Sidebar15/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── AppSidebar.vue │ │ │ │ │ │ ├── Calendars.vue │ │ │ │ │ │ ├── DatePicker.vue │ │ │ │ │ │ ├── NavFavorites.vue │ │ │ │ │ │ ├── NavMain.vue │ │ │ │ │ │ ├── NavSecondary.vue │ │ │ │ │ │ ├── NavUser.vue │ │ │ │ │ │ ├── NavWorkspaces.vue │ │ │ │ │ │ ├── SidebarLeft.vue │ │ │ │ │ │ ├── SidebarRight.vue │ │ │ │ │ │ └── TeamSwitcher.vue │ │ │ │ │ └── page.vue │ │ │ │ ├── examples/ │ │ │ │ │ ├── AccordionDemo.vue │ │ │ │ │ ├── AlertDemo.vue │ │ │ │ │ ├── AlertDestructiveDemo.vue │ │ │ │ │ ├── AlertDialogDemo.vue │ │ │ │ │ ├── AreaChartCustomTooltip.vue │ │ │ │ │ ├── AreaChartDemo.vue │ │ │ │ │ ├── AreaChartSparkline.vue │ │ │ │ │ ├── AspectRatioDemo.vue │ │ │ │ │ ├── AutoFormApi.vue │ │ │ │ │ ├── AutoFormArray.vue │ │ │ │ │ ├── AutoFormBasic.vue │ │ │ │ │ ├── AutoFormConfirmPassword.vue │ │ │ │ │ ├── AutoFormControlled.vue │ │ │ │ │ ├── AutoFormDependencies.vue │ │ │ │ │ ├── AutoFormInputWithoutLabel.vue │ │ │ │ │ ├── AutoFormSubObject.vue │ │ │ │ │ ├── AvatarDemo.vue │ │ │ │ │ ├── BadgeDemo.vue │ │ │ │ │ ├── BadgeDestructiveDemo.vue │ │ │ │ │ ├── BadgeOutlineDemo.vue │ │ │ │ │ ├── BadgeSecondaryDemo.vue │ │ │ │ │ ├── BarChartCustomTooltip.vue │ │ │ │ │ ├── BarChartDemo.vue │ │ │ │ │ ├── BarChartRounded.vue │ │ │ │ │ ├── BarChartStacked.vue │ │ │ │ │ ├── BreadcrumbDemo.vue │ │ │ │ │ ├── BreadcrumbDropdown.vue │ │ │ │ │ ├── BreadcrumbEllipsisDemo.vue │ │ │ │ │ ├── BreadcrumbLinkDemo.vue │ │ │ │ │ ├── BreadcrumbResponsive.vue │ │ │ │ │ ├── BreadcrumbSeparatorDemo.vue │ │ │ │ │ ├── ButtonAsChildDemo.vue │ │ │ │ │ ├── ButtonDemo.vue │ │ │ │ │ ├── ButtonDestructiveDemo.vue │ │ │ │ │ ├── ButtonGhostDemo.vue │ │ │ │ │ ├── ButtonGroupDemo.vue │ │ │ │ │ ├── ButtonGroupInputGroupDemo.vue │ │ │ │ │ ├── ButtonGroupNestedDemo.vue │ │ │ │ │ ├── ButtonGroupOrientationDemo.vue │ │ │ │ │ ├── ButtonGroupSeparatorDemo.vue │ │ │ │ │ ├── ButtonGroupSizeDemo.vue │ │ │ │ │ ├── ButtonGroupSplitDemo.vue │ │ │ │ │ ├── ButtonGroupWithDropdownMenuDemo.vue │ │ │ │ │ ├── ButtonGroupWithInputDemo.vue │ │ │ │ │ ├── ButtonGroupWithPopoverDemo.vue │ │ │ │ │ ├── ButtonGroupWithSelectDemo.vue │ │ │ │ │ ├── ButtonIconDemo.vue │ │ │ │ │ ├── ButtonLinkDemo.vue │ │ │ │ │ ├── ButtonLoadingDemo.vue │ │ │ │ │ ├── ButtonOutlineDemo.vue │ │ │ │ │ ├── ButtonSecondaryDemo.vue │ │ │ │ │ ├── ButtonWithIconDemo.vue │ │ │ │ │ ├── CalendarDemo.vue │ │ │ │ │ ├── CalendarForm.vue │ │ │ │ │ ├── CalendarWithSelect.vue │ │ │ │ │ ├── CardChat.vue │ │ │ │ │ ├── CardDemo.vue │ │ │ │ │ ├── CardFormDemo.vue │ │ │ │ │ ├── CardStats.vue │ │ │ │ │ ├── CardWithForm.vue │ │ │ │ │ ├── Cards/ │ │ │ │ │ │ ├── ActivityGoal.vue │ │ │ │ │ │ ├── DataTable.vue │ │ │ │ │ │ └── Metric.vue │ │ │ │ │ ├── CarouselApi.vue │ │ │ │ │ ├── CarouselDemo.vue │ │ │ │ │ ├── CarouselOrientation.vue │ │ │ │ │ ├── CarouselPlugin.vue │ │ │ │ │ ├── CarouselSize.vue │ │ │ │ │ ├── CarouselSpacing.vue │ │ │ │ │ ├── CarouselThumbnails.vue │ │ │ │ │ ├── CheckboxDemo.vue │ │ │ │ │ ├── CheckboxDisabled.vue │ │ │ │ │ ├── CheckboxFormMultiple.vue │ │ │ │ │ ├── CheckboxFormSingle.vue │ │ │ │ │ ├── CheckboxWithText.vue │ │ │ │ │ ├── CollapsibleDemo.vue │ │ │ │ │ ├── ComboboxDemo.vue │ │ │ │ │ ├── ComboboxDropdownMenu.vue │ │ │ │ │ ├── ComboboxForm.vue │ │ │ │ │ ├── ComboboxPopover.vue │ │ │ │ │ ├── ComboboxResponsive.vue │ │ │ │ │ ├── ComboboxTrigger.vue │ │ │ │ │ ├── CommandDemo.vue │ │ │ │ │ ├── CommandDialogDemo.vue │ │ │ │ │ ├── CommandDropdownMenu.vue │ │ │ │ │ ├── CommandForm.vue │ │ │ │ │ ├── CommandPopover.vue │ │ │ │ │ ├── CommandResponsive.vue │ │ │ │ │ ├── ContextMenuDemo.vue │ │ │ │ │ ├── CustomChartTooltip.vue │ │ │ │ │ ├── DataTableColumnPinningDemo.vue │ │ │ │ │ ├── DataTableDemo.vue │ │ │ │ │ ├── DataTableDemoColumn.vue │ │ │ │ │ ├── DataTableReactiveDemo.vue │ │ │ │ │ ├── DatePickerDemo.vue │ │ │ │ │ ├── DatePickerForm.vue │ │ │ │ │ ├── DatePickerWithIndependentMonths.vue │ │ │ │ │ ├── DatePickerWithPresets.vue │ │ │ │ │ ├── DatePickerWithRange.vue │ │ │ │ │ ├── DialogCustomCloseButton.vue │ │ │ │ │ ├── DialogDemo.vue │ │ │ │ │ ├── DialogForm.vue │ │ │ │ │ ├── DialogScrollBodyDemo.vue │ │ │ │ │ ├── DialogScrollOverlayDemo.vue │ │ │ │ │ ├── DonutChartColor.vue │ │ │ │ │ ├── DonutChartCustomTooltip.vue │ │ │ │ │ ├── DonutChartDemo.vue │ │ │ │ │ ├── DonutChartPie.vue │ │ │ │ │ ├── DrawerDemo.vue │ │ │ │ │ ├── DrawerDialog.vue │ │ │ │ │ ├── DropdownMenuCheckboxes.vue │ │ │ │ │ ├── DropdownMenuDemo.vue │ │ │ │ │ ├── DropdownMenuRadioGroup.vue │ │ │ │ │ ├── EmptyAvatarDemo.vue │ │ │ │ │ ├── EmptyAvatarGroupDemo.vue │ │ │ │ │ ├── EmptyBackgroundDemo.vue │ │ │ │ │ ├── EmptyDemo.vue │ │ │ │ │ ├── EmptyInputGroupDemo.vue │ │ │ │ │ ├── EmptyOutlineDemo.vue │ │ │ │ │ ├── FieldCheckboxDemo.vue │ │ │ │ │ ├── FieldChoiceCardDemo.vue │ │ │ │ │ ├── FieldDemo.vue │ │ │ │ │ ├── FieldFieldsetDemo.vue │ │ │ │ │ ├── FieldGroupDemo.vue │ │ │ │ │ ├── FieldInputDemo.vue │ │ │ │ │ ├── FieldRadioDemo.vue │ │ │ │ │ ├── FieldResponsiveDemo.vue │ │ │ │ │ ├── FieldSelectDemo.vue │ │ │ │ │ ├── FieldSliderDemo.vue │ │ │ │ │ ├── FieldSwitchDemo.vue │ │ │ │ │ ├── FieldTextareaDemo.vue │ │ │ │ │ ├── HoverCardDemo.vue │ │ │ │ │ ├── InputDemo.vue │ │ │ │ │ ├── InputDisabled.vue │ │ │ │ │ ├── InputFile.vue │ │ │ │ │ ├── InputForm.vue │ │ │ │ │ ├── InputFormAutoAnimate.vue │ │ │ │ │ ├── InputGroupDemo.vue │ │ │ │ │ ├── InputGroupWithButton.vue │ │ │ │ │ ├── InputGroupWithButtonGroup.vue │ │ │ │ │ ├── InputGroupWithCustomInput.vue │ │ │ │ │ ├── InputGroupWithDropdown.vue │ │ │ │ │ ├── InputGroupWithIcon.vue │ │ │ │ │ ├── InputGroupWithLabel.vue │ │ │ │ │ ├── InputGroupWithSpinner.vue │ │ │ │ │ ├── InputGroupWithText.vue │ │ │ │ │ ├── InputGroupWithTextarea.vue │ │ │ │ │ ├── InputGroupWithTooltip.vue │ │ │ │ │ ├── InputWithButton.vue │ │ │ │ │ ├── InputWithIcon.vue │ │ │ │ │ ├── InputWithLabel.vue │ │ │ │ │ ├── ItemAvatarDemo.vue │ │ │ │ │ ├── ItemDemo.vue │ │ │ │ │ ├── ItemDropdownDemo.vue │ │ │ │ │ ├── ItemGroupDemo.vue │ │ │ │ │ ├── ItemHeaderDemo.vue │ │ │ │ │ ├── ItemIconDemo.vue │ │ │ │ │ ├── ItemImageDemo.vue │ │ │ │ │ ├── ItemLinkDemo.vue │ │ │ │ │ ├── ItemSizeDemo.vue │ │ │ │ │ ├── ItemVariantDemo.vue │ │ │ │ │ ├── KbdDemo.vue │ │ │ │ │ ├── KbdWithButton.vue │ │ │ │ │ ├── KbdWithInputGroup.vue │ │ │ │ │ ├── KbdWithTooltip.vue │ │ │ │ │ ├── LabelDemo.vue │ │ │ │ │ ├── LineChartCustomTooltip.vue │ │ │ │ │ ├── LineChartDemo.vue │ │ │ │ │ ├── LineChartSparkline.vue │ │ │ │ │ ├── MenubarDemo.vue │ │ │ │ │ ├── NavigationMenuDemo.vue │ │ │ │ │ ├── NumberFieldCurrency.vue │ │ │ │ │ ├── NumberFieldDecimal.vue │ │ │ │ │ ├── NumberFieldDemo.vue │ │ │ │ │ ├── NumberFieldDisabled.vue │ │ │ │ │ ├── NumberFieldForm.vue │ │ │ │ │ ├── NumberFieldPercentage.vue │ │ │ │ │ ├── PaginationDemo.vue │ │ │ │ │ ├── PinInputControlled.vue │ │ │ │ │ ├── PinInputDemo.vue │ │ │ │ │ ├── PinInputDisabled.vue │ │ │ │ │ ├── PinInputFormDemo.vue │ │ │ │ │ ├── PinInputSeparatorDemo.vue │ │ │ │ │ ├── PopoverDemo.vue │ │ │ │ │ ├── ProgressDemo.vue │ │ │ │ │ ├── RadioGroupDemo.vue │ │ │ │ │ ├── RadioGroupForm.vue │ │ │ │ │ ├── RangeCalendarDemo.vue │ │ │ │ │ ├── ResizableDemo.vue │ │ │ │ │ ├── ResizableHandleDemo.vue │ │ │ │ │ ├── ResizableVerticalDemo.vue │ │ │ │ │ ├── ScrollAreaDemo.vue │ │ │ │ │ ├── ScrollAreaHorizontalDemo.vue │ │ │ │ │ ├── SelectDemo.vue │ │ │ │ │ ├── SelectForm.vue │ │ │ │ │ ├── SelectScrollable.vue │ │ │ │ │ ├── SeparatorDemo.vue │ │ │ │ │ ├── SheetDemo.vue │ │ │ │ │ ├── SheetSideDemo.vue │ │ │ │ │ ├── SkeletonCard.vue │ │ │ │ │ ├── SkeletonDemo.vue │ │ │ │ │ ├── SliderDemo.vue │ │ │ │ │ ├── SliderForm.vue │ │ │ │ │ ├── SonnerDemo.vue │ │ │ │ │ ├── SonnerWithDialog.vue │ │ │ │ │ ├── SpinnerBadgeDemo.vue │ │ │ │ │ ├── SpinnerButtonsDemo.vue │ │ │ │ │ ├── SpinnerColorsDemo.vue │ │ │ │ │ ├── SpinnerCustomDemo.vue │ │ │ │ │ ├── SpinnerDemo.vue │ │ │ │ │ ├── SpinnerEmptyDemo.vue │ │ │ │ │ ├── SpinnerInputGroupDemo.vue │ │ │ │ │ ├── SpinnerItemDemo.vue │ │ │ │ │ ├── SpinnerSizesDemo.vue │ │ │ │ │ ├── StepperDemo.vue │ │ │ │ │ ├── StepperForm.vue │ │ │ │ │ ├── StepperHorizental.vue │ │ │ │ │ ├── StepperVertical.vue │ │ │ │ │ ├── SwitchDemo.vue │ │ │ │ │ ├── SwitchForm.vue │ │ │ │ │ ├── TableDemo.vue │ │ │ │ │ ├── TabsDemo.vue │ │ │ │ │ ├── TabsVerticalDemo.vue │ │ │ │ │ ├── TagsInputComboboxDemo.vue │ │ │ │ │ ├── TagsInputDemo.vue │ │ │ │ │ ├── TagsInputFormDemo.vue │ │ │ │ │ ├── TextareaDemo.vue │ │ │ │ │ ├── TextareaDisabled.vue │ │ │ │ │ ├── TextareaForm.vue │ │ │ │ │ ├── TextareaWithButton.vue │ │ │ │ │ ├── TextareaWithLabel.vue │ │ │ │ │ ├── TextareaWithText.vue │ │ │ │ │ ├── ToastDemo.vue │ │ │ │ │ ├── ToastDestructive.vue │ │ │ │ │ ├── ToastSimple.vue │ │ │ │ │ ├── ToastWithAction.vue │ │ │ │ │ ├── ToastWithTitle.vue │ │ │ │ │ ├── ToggleDemo.vue │ │ │ │ │ ├── ToggleDisabledDemo.vue │ │ │ │ │ ├── ToggleGroupDemo.vue │ │ │ │ │ ├── ToggleGroupDisabledDemo.vue │ │ │ │ │ ├── ToggleGroupLargeDemo.vue │ │ │ │ │ ├── ToggleGroupOutlineDemo.vue │ │ │ │ │ ├── ToggleGroupSingleDemo.vue │ │ │ │ │ ├── ToggleGroupSmallDemo.vue │ │ │ │ │ ├── ToggleItalicDemo.vue │ │ │ │ │ ├── ToggleItalicWithTextDemo.vue │ │ │ │ │ ├── ToggleLargeDemo.vue │ │ │ │ │ ├── ToggleSmallDemo.vue │ │ │ │ │ ├── TooltipDemo.vue │ │ │ │ │ ├── TypographyBlockquote.vue │ │ │ │ │ ├── TypographyDemo.vue │ │ │ │ │ ├── TypographyH1.vue │ │ │ │ │ ├── TypographyH2.vue │ │ │ │ │ ├── TypographyH3.vue │ │ │ │ │ ├── TypographyH4.vue │ │ │ │ │ ├── TypographyInlineCode.vue │ │ │ │ │ ├── TypographyLarge.vue │ │ │ │ │ ├── TypographyLead.vue │ │ │ │ │ ├── TypographyList.vue │ │ │ │ │ ├── TypographyMuted.vue │ │ │ │ │ ├── TypographyP.vue │ │ │ │ │ ├── TypographySmall.vue │ │ │ │ │ └── TypographyTable.vue │ │ │ │ ├── lib/ │ │ │ │ │ └── utils.ts │ │ │ │ └── ui/ │ │ │ │ ├── accordion/ │ │ │ │ │ ├── Accordion.vue │ │ │ │ │ ├── AccordionContent.vue │ │ │ │ │ ├── AccordionItem.vue │ │ │ │ │ ├── AccordionTrigger.vue │ │ │ │ │ ├── index.ts │ │ │ │ │ └── metadata.json │ │ │ │ ├── alert/ │ │ │ │ │ ├── Alert.vue │ │ │ │ │ ├── AlertDescription.vue │ │ │ │ │ ├── AlertTitle.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── alert-dialog/ │ │ │ │ │ ├── AlertDialog.vue │ │ │ │ │ ├── AlertDialogAction.vue │ │ │ │ │ ├── AlertDialogCancel.vue │ │ │ │ │ ├── AlertDialogContent.vue │ │ │ │ │ ├── AlertDialogDescription.vue │ │ │ │ │ ├── AlertDialogFooter.vue │ │ │ │ │ ├── AlertDialogHeader.vue │ │ │ │ │ ├── AlertDialogTitle.vue │ │ │ │ │ ├── AlertDialogTrigger.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── aspect-ratio/ │ │ │ │ │ ├── AspectRatio.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── auto-form/ │ │ │ │ │ ├── AutoForm.vue │ │ │ │ │ ├── AutoFormField.vue │ │ │ │ │ ├── AutoFormFieldArray.vue │ │ │ │ │ ├── AutoFormFieldBoolean.vue │ │ │ │ │ ├── AutoFormFieldDate.vue │ │ │ │ │ ├── AutoFormFieldEnum.vue │ │ │ │ │ ├── AutoFormFieldFile.vue │ │ │ │ │ ├── AutoFormFieldInput.vue │ │ │ │ │ ├── AutoFormFieldNumber.vue │ │ │ │ │ ├── AutoFormFieldObject.vue │ │ │ │ │ ├── AutoFormLabel.vue │ │ │ │ │ ├── constant.ts │ │ │ │ │ ├── dependencies.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── interface.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── avatar/ │ │ │ │ │ ├── Avatar.vue │ │ │ │ │ ├── AvatarFallback.vue │ │ │ │ │ ├── AvatarImage.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── badge/ │ │ │ │ │ ├── Badge.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── breadcrumb/ │ │ │ │ │ ├── Breadcrumb.vue │ │ │ │ │ ├── BreadcrumbEllipsis.vue │ │ │ │ │ ├── BreadcrumbItem.vue │ │ │ │ │ ├── BreadcrumbLink.vue │ │ │ │ │ ├── BreadcrumbList.vue │ │ │ │ │ ├── BreadcrumbPage.vue │ │ │ │ │ ├── BreadcrumbSeparator.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── button/ │ │ │ │ │ ├── Button.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── button-group/ │ │ │ │ │ ├── ButtonGroup.vue │ │ │ │ │ ├── ButtonGroupSeparator.vue │ │ │ │ │ ├── ButtonGroupText.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── calendar/ │ │ │ │ │ ├── Calendar.vue │ │ │ │ │ ├── CalendarCell.vue │ │ │ │ │ ├── CalendarCellTrigger.vue │ │ │ │ │ ├── CalendarGrid.vue │ │ │ │ │ ├── CalendarGridBody.vue │ │ │ │ │ ├── CalendarGridHead.vue │ │ │ │ │ ├── CalendarGridRow.vue │ │ │ │ │ ├── CalendarHeadCell.vue │ │ │ │ │ ├── CalendarHeader.vue │ │ │ │ │ ├── CalendarHeading.vue │ │ │ │ │ ├── CalendarNextButton.vue │ │ │ │ │ ├── CalendarPrevButton.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── card/ │ │ │ │ │ ├── Card.vue │ │ │ │ │ ├── CardContent.vue │ │ │ │ │ ├── CardDescription.vue │ │ │ │ │ ├── CardFooter.vue │ │ │ │ │ ├── CardHeader.vue │ │ │ │ │ ├── CardTitle.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── carousel/ │ │ │ │ │ ├── Carousel.vue │ │ │ │ │ ├── CarouselContent.vue │ │ │ │ │ ├── CarouselItem.vue │ │ │ │ │ ├── CarouselNext.vue │ │ │ │ │ ├── CarouselPrevious.vue │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── interface.ts │ │ │ │ │ └── useCarousel.ts │ │ │ │ ├── chart/ │ │ │ │ │ ├── ChartCrosshair.vue │ │ │ │ │ ├── ChartLegend.vue │ │ │ │ │ ├── ChartSingleTooltip.vue │ │ │ │ │ ├── ChartTooltip.vue │ │ │ │ │ ├── index.ts │ │ │ │ │ └── interface.ts │ │ │ │ ├── chart-area/ │ │ │ │ │ ├── AreaChart.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── chart-bar/ │ │ │ │ │ ├── BarChart.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── chart-donut/ │ │ │ │ │ ├── DonutChart.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── chart-line/ │ │ │ │ │ ├── LineChart.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── checkbox/ │ │ │ │ │ ├── Checkbox.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── collapsible/ │ │ │ │ │ ├── Collapsible.vue │ │ │ │ │ ├── CollapsibleContent.vue │ │ │ │ │ ├── CollapsibleTrigger.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── combobox/ │ │ │ │ │ ├── Combobox.vue │ │ │ │ │ ├── ComboboxAnchor.vue │ │ │ │ │ ├── ComboboxEmpty.vue │ │ │ │ │ ├── ComboboxGroup.vue │ │ │ │ │ ├── ComboboxInput.vue │ │ │ │ │ ├── ComboboxItem.vue │ │ │ │ │ ├── ComboboxList.vue │ │ │ │ │ ├── ComboboxSeparator.vue │ │ │ │ │ ├── ComboboxTrigger.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── command/ │ │ │ │ │ ├── Command.vue │ │ │ │ │ ├── CommandDialog.vue │ │ │ │ │ ├── CommandEmpty.vue │ │ │ │ │ ├── CommandGroup.vue │ │ │ │ │ ├── CommandInput.vue │ │ │ │ │ ├── CommandItem.vue │ │ │ │ │ ├── CommandList.vue │ │ │ │ │ ├── CommandSeparator.vue │ │ │ │ │ ├── CommandShortcut.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── context-menu/ │ │ │ │ │ ├── ContextMenu.vue │ │ │ │ │ ├── ContextMenuCheckboxItem.vue │ │ │ │ │ ├── ContextMenuContent.vue │ │ │ │ │ ├── ContextMenuGroup.vue │ │ │ │ │ ├── ContextMenuItem.vue │ │ │ │ │ ├── ContextMenuLabel.vue │ │ │ │ │ ├── ContextMenuPortal.vue │ │ │ │ │ ├── ContextMenuRadioGroup.vue │ │ │ │ │ ├── ContextMenuRadioItem.vue │ │ │ │ │ ├── ContextMenuSeparator.vue │ │ │ │ │ ├── ContextMenuShortcut.vue │ │ │ │ │ ├── ContextMenuSub.vue │ │ │ │ │ ├── ContextMenuSubContent.vue │ │ │ │ │ ├── ContextMenuSubTrigger.vue │ │ │ │ │ ├── ContextMenuTrigger.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── dialog/ │ │ │ │ │ ├── Dialog.vue │ │ │ │ │ ├── DialogClose.vue │ │ │ │ │ ├── DialogContent.vue │ │ │ │ │ ├── DialogDescription.vue │ │ │ │ │ ├── DialogFooter.vue │ │ │ │ │ ├── DialogHeader.vue │ │ │ │ │ ├── DialogScrollContent.vue │ │ │ │ │ ├── DialogTitle.vue │ │ │ │ │ ├── DialogTrigger.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── drawer/ │ │ │ │ │ ├── Drawer.vue │ │ │ │ │ ├── DrawerContent.vue │ │ │ │ │ ├── DrawerDescription.vue │ │ │ │ │ ├── DrawerFooter.vue │ │ │ │ │ ├── DrawerHeader.vue │ │ │ │ │ ├── DrawerOverlay.vue │ │ │ │ │ ├── DrawerTitle.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── dropdown-menu/ │ │ │ │ │ ├── DropdownMenu.vue │ │ │ │ │ ├── DropdownMenuCheckboxItem.vue │ │ │ │ │ ├── DropdownMenuContent.vue │ │ │ │ │ ├── DropdownMenuGroup.vue │ │ │ │ │ ├── DropdownMenuItem.vue │ │ │ │ │ ├── DropdownMenuLabel.vue │ │ │ │ │ ├── DropdownMenuRadioGroup.vue │ │ │ │ │ ├── DropdownMenuRadioItem.vue │ │ │ │ │ ├── DropdownMenuSeparator.vue │ │ │ │ │ ├── DropdownMenuShortcut.vue │ │ │ │ │ ├── DropdownMenuSub.vue │ │ │ │ │ ├── DropdownMenuSubContent.vue │ │ │ │ │ ├── DropdownMenuSubTrigger.vue │ │ │ │ │ ├── DropdownMenuTrigger.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── empty/ │ │ │ │ │ ├── Empty.vue │ │ │ │ │ ├── EmptyContent.vue │ │ │ │ │ ├── EmptyDescription.vue │ │ │ │ │ ├── EmptyHeader.vue │ │ │ │ │ ├── EmptyMedia.vue │ │ │ │ │ ├── EmptyTitle.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── field/ │ │ │ │ │ ├── Field.vue │ │ │ │ │ ├── FieldContent.vue │ │ │ │ │ ├── FieldDescription.vue │ │ │ │ │ ├── FieldError.vue │ │ │ │ │ ├── FieldGroup.vue │ │ │ │ │ ├── FieldLabel.vue │ │ │ │ │ ├── FieldLegend.vue │ │ │ │ │ ├── FieldSeparator.vue │ │ │ │ │ ├── FieldSet.vue │ │ │ │ │ ├── FieldTitle.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── form/ │ │ │ │ │ ├── FormControl.vue │ │ │ │ │ ├── FormDescription.vue │ │ │ │ │ ├── FormItem.vue │ │ │ │ │ ├── FormLabel.vue │ │ │ │ │ ├── FormMessage.vue │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── injectionKeys.ts │ │ │ │ │ └── useFormField.ts │ │ │ │ ├── hover-card/ │ │ │ │ │ ├── HoverCard.vue │ │ │ │ │ ├── HoverCardContent.vue │ │ │ │ │ ├── HoverCardTrigger.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── input/ │ │ │ │ │ ├── Input.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── input-group/ │ │ │ │ │ ├── InputGroup.vue │ │ │ │ │ ├── InputGroupAddon.vue │ │ │ │ │ ├── InputGroupButton.vue │ │ │ │ │ ├── InputGroupInput.vue │ │ │ │ │ ├── InputGroupText.vue │ │ │ │ │ ├── InputGroupTextarea.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── item/ │ │ │ │ │ ├── Item.vue │ │ │ │ │ ├── ItemActions.vue │ │ │ │ │ ├── ItemContent.vue │ │ │ │ │ ├── ItemDescription.vue │ │ │ │ │ ├── ItemFooter.vue │ │ │ │ │ ├── ItemGroup.vue │ │ │ │ │ ├── ItemHeader.vue │ │ │ │ │ ├── ItemMedia.vue │ │ │ │ │ ├── ItemSeparator.vue │ │ │ │ │ ├── ItemTitle.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── kbd/ │ │ │ │ │ ├── Kbd.vue │ │ │ │ │ ├── KbdGroup.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── label/ │ │ │ │ │ ├── Label.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── menubar/ │ │ │ │ │ ├── Menubar.vue │ │ │ │ │ ├── MenubarCheckboxItem.vue │ │ │ │ │ ├── MenubarContent.vue │ │ │ │ │ ├── MenubarGroup.vue │ │ │ │ │ ├── MenubarItem.vue │ │ │ │ │ ├── MenubarLabel.vue │ │ │ │ │ ├── MenubarMenu.vue │ │ │ │ │ ├── MenubarRadioGroup.vue │ │ │ │ │ ├── MenubarRadioItem.vue │ │ │ │ │ ├── MenubarSeparator.vue │ │ │ │ │ ├── MenubarShortcut.vue │ │ │ │ │ ├── MenubarSub.vue │ │ │ │ │ ├── MenubarSubContent.vue │ │ │ │ │ ├── MenubarSubTrigger.vue │ │ │ │ │ ├── MenubarTrigger.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── navigation-menu/ │ │ │ │ │ ├── NavigationMenu.vue │ │ │ │ │ ├── NavigationMenuContent.vue │ │ │ │ │ ├── NavigationMenuIndicator.vue │ │ │ │ │ ├── NavigationMenuItem.vue │ │ │ │ │ ├── NavigationMenuLink.vue │ │ │ │ │ ├── NavigationMenuList.vue │ │ │ │ │ ├── NavigationMenuTrigger.vue │ │ │ │ │ ├── NavigationMenuViewport.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── number-field/ │ │ │ │ │ ├── NumberField.vue │ │ │ │ │ ├── NumberFieldContent.vue │ │ │ │ │ ├── NumberFieldDecrement.vue │ │ │ │ │ ├── NumberFieldIncrement.vue │ │ │ │ │ ├── NumberFieldInput.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── pagination/ │ │ │ │ │ ├── Pagination.vue │ │ │ │ │ ├── PaginationContent.vue │ │ │ │ │ ├── PaginationEllipsis.vue │ │ │ │ │ ├── PaginationFirst.vue │ │ │ │ │ ├── PaginationItem.vue │ │ │ │ │ ├── PaginationLast.vue │ │ │ │ │ ├── PaginationNext.vue │ │ │ │ │ ├── PaginationPrevious.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── pin-input/ │ │ │ │ │ ├── PinInput.vue │ │ │ │ │ ├── PinInputGroup.vue │ │ │ │ │ ├── PinInputSeparator.vue │ │ │ │ │ ├── PinInputSlot.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── popover/ │ │ │ │ │ ├── Popover.vue │ │ │ │ │ ├── PopoverContent.vue │ │ │ │ │ ├── PopoverTrigger.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── progress/ │ │ │ │ │ ├── Progress.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── radio-group/ │ │ │ │ │ ├── RadioGroup.vue │ │ │ │ │ ├── RadioGroupItem.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── range-calendar/ │ │ │ │ │ ├── RangeCalendar.vue │ │ │ │ │ ├── RangeCalendarCell.vue │ │ │ │ │ ├── RangeCalendarCellTrigger.vue │ │ │ │ │ ├── RangeCalendarGrid.vue │ │ │ │ │ ├── RangeCalendarGridBody.vue │ │ │ │ │ ├── RangeCalendarGridHead.vue │ │ │ │ │ ├── RangeCalendarGridRow.vue │ │ │ │ │ ├── RangeCalendarHeadCell.vue │ │ │ │ │ ├── RangeCalendarHeader.vue │ │ │ │ │ ├── RangeCalendarHeading.vue │ │ │ │ │ ├── RangeCalendarNextButton.vue │ │ │ │ │ ├── RangeCalendarPrevButton.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── resizable/ │ │ │ │ │ ├── ResizableHandle.vue │ │ │ │ │ ├── ResizablePanelGroup.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── scroll-area/ │ │ │ │ │ ├── ScrollArea.vue │ │ │ │ │ ├── ScrollBar.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── select/ │ │ │ │ │ ├── Select.vue │ │ │ │ │ ├── SelectContent.vue │ │ │ │ │ ├── SelectGroup.vue │ │ │ │ │ ├── SelectItem.vue │ │ │ │ │ ├── SelectItemText.vue │ │ │ │ │ ├── SelectLabel.vue │ │ │ │ │ ├── SelectScrollDownButton.vue │ │ │ │ │ ├── SelectScrollUpButton.vue │ │ │ │ │ ├── SelectSeparator.vue │ │ │ │ │ ├── SelectTrigger.vue │ │ │ │ │ ├── SelectValue.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── separator/ │ │ │ │ │ ├── Separator.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── sheet/ │ │ │ │ │ ├── Sheet.vue │ │ │ │ │ ├── SheetClose.vue │ │ │ │ │ ├── SheetContent.vue │ │ │ │ │ ├── SheetDescription.vue │ │ │ │ │ ├── SheetFooter.vue │ │ │ │ │ ├── SheetHeader.vue │ │ │ │ │ ├── SheetTitle.vue │ │ │ │ │ ├── SheetTrigger.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── sidebar/ │ │ │ │ │ ├── Sidebar.vue │ │ │ │ │ ├── SidebarContent.vue │ │ │ │ │ ├── SidebarFooter.vue │ │ │ │ │ ├── SidebarGroup.vue │ │ │ │ │ ├── SidebarGroupAction.vue │ │ │ │ │ ├── SidebarGroupContent.vue │ │ │ │ │ ├── SidebarGroupLabel.vue │ │ │ │ │ ├── SidebarHeader.vue │ │ │ │ │ ├── SidebarInput.vue │ │ │ │ │ ├── SidebarInset.vue │ │ │ │ │ ├── SidebarMenu.vue │ │ │ │ │ ├── SidebarMenuAction.vue │ │ │ │ │ ├── SidebarMenuBadge.vue │ │ │ │ │ ├── SidebarMenuButton.vue │ │ │ │ │ ├── SidebarMenuButtonChild.vue │ │ │ │ │ ├── SidebarMenuItem.vue │ │ │ │ │ ├── SidebarMenuSkeleton.vue │ │ │ │ │ ├── SidebarMenuSub.vue │ │ │ │ │ ├── SidebarMenuSubButton.vue │ │ │ │ │ ├── SidebarMenuSubItem.vue │ │ │ │ │ ├── SidebarProvider.vue │ │ │ │ │ ├── SidebarRail.vue │ │ │ │ │ ├── SidebarSeparator.vue │ │ │ │ │ ├── SidebarTrigger.vue │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── metadata.json │ │ │ │ │ └── utils.ts │ │ │ │ ├── skeleton/ │ │ │ │ │ ├── Skeleton.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── slider/ │ │ │ │ │ ├── Slider.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── sonner/ │ │ │ │ │ ├── Sonner.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── spinner/ │ │ │ │ │ ├── Spinner.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── stepper/ │ │ │ │ │ ├── Stepper.vue │ │ │ │ │ ├── StepperDescription.vue │ │ │ │ │ ├── StepperIndicator.vue │ │ │ │ │ ├── StepperItem.vue │ │ │ │ │ ├── StepperSeparator.vue │ │ │ │ │ ├── StepperTitle.vue │ │ │ │ │ ├── StepperTrigger.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── switch/ │ │ │ │ │ ├── Switch.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── table/ │ │ │ │ │ ├── Table.vue │ │ │ │ │ ├── TableBody.vue │ │ │ │ │ ├── TableCaption.vue │ │ │ │ │ ├── TableCell.vue │ │ │ │ │ ├── TableEmpty.vue │ │ │ │ │ ├── TableFooter.vue │ │ │ │ │ ├── TableHead.vue │ │ │ │ │ ├── TableHeader.vue │ │ │ │ │ ├── TableRow.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── tabs/ │ │ │ │ │ ├── Tabs.vue │ │ │ │ │ ├── TabsContent.vue │ │ │ │ │ ├── TabsList.vue │ │ │ │ │ ├── TabsTrigger.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── tags-input/ │ │ │ │ │ ├── TagsInput.vue │ │ │ │ │ ├── TagsInputInput.vue │ │ │ │ │ ├── TagsInputItem.vue │ │ │ │ │ ├── TagsInputItemDelete.vue │ │ │ │ │ ├── TagsInputItemText.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── textarea/ │ │ │ │ │ ├── Textarea.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── toast/ │ │ │ │ │ ├── Toast.vue │ │ │ │ │ ├── ToastAction.vue │ │ │ │ │ ├── ToastClose.vue │ │ │ │ │ ├── ToastDescription.vue │ │ │ │ │ ├── ToastProvider.vue │ │ │ │ │ ├── ToastTitle.vue │ │ │ │ │ ├── ToastViewport.vue │ │ │ │ │ ├── Toaster.vue │ │ │ │ │ ├── index.ts │ │ │ │ │ └── use-toast.ts │ │ │ │ ├── toggle/ │ │ │ │ │ ├── Toggle.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── toggle-group/ │ │ │ │ │ ├── ToggleGroup.vue │ │ │ │ │ ├── ToggleGroupItem.vue │ │ │ │ │ └── index.ts │ │ │ │ └── tooltip/ │ │ │ │ ├── Tooltip.vue │ │ │ │ ├── TooltipContent.vue │ │ │ │ ├── TooltipProvider.vue │ │ │ │ ├── TooltipTrigger.vue │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── new-york/ │ │ │ │ ├── blocks/ │ │ │ │ │ ├── Authentication01.vue │ │ │ │ │ ├── Authentication02.vue │ │ │ │ │ ├── Authentication03.vue │ │ │ │ │ ├── Authentication04.vue │ │ │ │ │ ├── Dashboard01.vue │ │ │ │ │ ├── Dashboard02.vue │ │ │ │ │ ├── Dashboard03.vue │ │ │ │ │ ├── Dashboard04.vue │ │ │ │ │ ├── Dashboard05.vue │ │ │ │ │ ├── Dashboard06.vue │ │ │ │ │ ├── Dashboard07.vue │ │ │ │ │ ├── DemoSidebar.vue │ │ │ │ │ ├── DemoSidebarControlled.vue │ │ │ │ │ ├── DemoSidebarFooter.vue │ │ │ │ │ ├── DemoSidebarGroup.vue │ │ │ │ │ ├── DemoSidebarGroupAction.vue │ │ │ │ │ ├── DemoSidebarGroupCollapsible.vue │ │ │ │ │ ├── DemoSidebarHeader.vue │ │ │ │ │ ├── DemoSidebarMenu.vue │ │ │ │ │ ├── DemoSidebarMenuAction.vue │ │ │ │ │ ├── DemoSidebarMenuBadge.vue │ │ │ │ │ ├── DemoSidebarMenuCollapsible.vue │ │ │ │ │ ├── DemoSidebarMenuSub.vue │ │ │ │ │ ├── Login01/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── LoginForm.vue │ │ │ │ │ │ └── page.vue │ │ │ │ │ ├── Login02/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── LoginForm.vue │ │ │ │ │ │ └── page.vue │ │ │ │ │ ├── Login03/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── LoginForm.vue │ │ │ │ │ │ └── page.vue │ │ │ │ │ ├── Login04/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── LoginForm.vue │ │ │ │ │ │ └── page.vue │ │ │ │ │ ├── Login05/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── LoginForm.vue │ │ │ │ │ │ └── page.vue │ │ │ │ │ ├── Sidebar01/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── AppSidebar.vue │ │ │ │ │ │ │ ├── SearchForm.vue │ │ │ │ │ │ │ └── VersionSwitcher.vue │ │ │ │ │ │ └── page.vue │ │ │ │ │ ├── Sidebar02/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── AppSidebar.vue │ │ │ │ │ │ │ ├── SearchForm.vue │ │ │ │ │ │ │ └── VersionSwitcher.vue │ │ │ │ │ │ └── page.vue │ │ │ │ │ ├── Sidebar03/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── AppSidebar.vue │ │ │ │ │ │ └── page.vue │ │ │ │ │ ├── Sidebar04/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── AppSidebar.vue │ │ │ │ │ │ └── page.vue │ │ │ │ │ ├── Sidebar05/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── AppSidebar.vue │ │ │ │ │ │ │ └── SearchForm.vue │ │ │ │ │ │ └── page.vue │ │ │ │ │ ├── Sidebar06/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── AppSidebar.vue │ │ │ │ │ │ │ ├── NavMain.vue │ │ │ │ │ │ │ └── SidebarOptInForm.vue │ │ │ │ │ │ └── page.vue │ │ │ │ │ ├── Sidebar07/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── AppSidebar.vue │ │ │ │ │ │ │ ├── NavMain.vue │ │ │ │ │ │ │ ├── NavProjects.vue │ │ │ │ │ │ │ ├── NavUser.vue │ │ │ │ │ │ │ └── TeamSwitcher.vue │ │ │ │ │ │ └── page.vue │ │ │ │ │ ├── Sidebar08/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── AppSidebar.vue │ │ │ │ │ │ │ ├── NavMain.vue │ │ │ │ │ │ │ ├── NavProjects.vue │ │ │ │ │ │ │ ├── NavSecondary.vue │ │ │ │ │ │ │ └── NavUser.vue │ │ │ │ │ │ └── page.vue │ │ │ │ │ ├── Sidebar09/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── AppSidebar.vue │ │ │ │ │ │ │ └── NavUser.vue │ │ │ │ │ │ └── page.vue │ │ │ │ │ ├── Sidebar10/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── AppSidebar.vue │ │ │ │ │ │ │ ├── NavActions.vue │ │ │ │ │ │ │ ├── NavFavorites.vue │ │ │ │ │ │ │ ├── NavMain.vue │ │ │ │ │ │ │ ├── NavSecondary.vue │ │ │ │ │ │ │ ├── NavWorkspaces.vue │ │ │ │ │ │ │ └── TeamSwitcher.vue │ │ │ │ │ │ └── page.vue │ │ │ │ │ ├── Sidebar11/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── AppSidebar.vue │ │ │ │ │ │ │ └── Tree.vue │ │ │ │ │ │ └── page.vue │ │ │ │ │ ├── Sidebar12/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── AppSidebar.vue │ │ │ │ │ │ │ ├── Calendars.vue │ │ │ │ │ │ │ ├── DatePicker.vue │ │ │ │ │ │ │ └── NavUser.vue │ │ │ │ │ │ └── page.vue │ │ │ │ │ ├── Sidebar13/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── SettingsDialog.vue │ │ │ │ │ │ └── page.vue │ │ │ │ │ ├── Sidebar14/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── AppSidebar.vue │ │ │ │ │ │ └── page.vue │ │ │ │ │ └── Sidebar15/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── AppSidebar.vue │ │ │ │ │ │ ├── Calendars.vue │ │ │ │ │ │ ├── DatePicker.vue │ │ │ │ │ │ ├── NavFavorites.vue │ │ │ │ │ │ ├── NavMain.vue │ │ │ │ │ │ ├── NavSecondary.vue │ │ │ │ │ │ ├── NavUser.vue │ │ │ │ │ │ ├── NavWorkspaces.vue │ │ │ │ │ │ ├── SidebarLeft.vue │ │ │ │ │ │ ├── SidebarRight.vue │ │ │ │ │ │ └── TeamSwitcher.vue │ │ │ │ │ └── page.vue │ │ │ │ ├── examples/ │ │ │ │ │ ├── AccordionDemo.vue │ │ │ │ │ ├── AlertDemo.vue │ │ │ │ │ ├── AlertDestructiveDemo.vue │ │ │ │ │ ├── AlertDialogDemo.vue │ │ │ │ │ ├── AreaChartCustomTooltip.vue │ │ │ │ │ ├── AreaChartDemo.vue │ │ │ │ │ ├── AreaChartSparkline.vue │ │ │ │ │ ├── AspectRatioDemo.vue │ │ │ │ │ ├── AutoFormApi.vue │ │ │ │ │ ├── AutoFormArray.vue │ │ │ │ │ ├── AutoFormBasic.vue │ │ │ │ │ ├── AutoFormConfirmPassword.vue │ │ │ │ │ ├── AutoFormControlled.vue │ │ │ │ │ ├── AutoFormDependencies.vue │ │ │ │ │ ├── AutoFormInputWithoutLabel.vue │ │ │ │ │ ├── AutoFormSubObject.vue │ │ │ │ │ ├── AvatarDemo.vue │ │ │ │ │ ├── BadgeDemo.vue │ │ │ │ │ ├── BadgeDestructiveDemo.vue │ │ │ │ │ ├── BadgeOutlineDemo.vue │ │ │ │ │ ├── BadgeSecondaryDemo.vue │ │ │ │ │ ├── BarChartCustomTooltip.vue │ │ │ │ │ ├── BarChartDemo.vue │ │ │ │ │ ├── BarChartRounded.vue │ │ │ │ │ ├── BarChartStacked.vue │ │ │ │ │ ├── BreadcrumbDemo.vue │ │ │ │ │ ├── BreadcrumbDropdown.vue │ │ │ │ │ ├── BreadcrumbEllipsisDemo.vue │ │ │ │ │ ├── BreadcrumbLinkDemo.vue │ │ │ │ │ ├── BreadcrumbResponsive.vue │ │ │ │ │ ├── BreadcrumbSeparatorDemo.vue │ │ │ │ │ ├── ButtonAsChildDemo.vue │ │ │ │ │ ├── ButtonDemo.vue │ │ │ │ │ ├── ButtonDestructiveDemo.vue │ │ │ │ │ ├── ButtonGhostDemo.vue │ │ │ │ │ ├── ButtonGroupDemo.vue │ │ │ │ │ ├── ButtonGroupInputGroupDemo.vue │ │ │ │ │ ├── ButtonGroupNestedDemo.vue │ │ │ │ │ ├── ButtonGroupOrientationDemo.vue │ │ │ │ │ ├── ButtonGroupSeparatorDemo.vue │ │ │ │ │ ├── ButtonGroupSizeDemo.vue │ │ │ │ │ ├── ButtonGroupSplitDemo.vue │ │ │ │ │ ├── ButtonGroupWithDropdownMenuDemo.vue │ │ │ │ │ ├── ButtonGroupWithInputDemo.vue │ │ │ │ │ ├── ButtonGroupWithPopoverDemo.vue │ │ │ │ │ ├── ButtonGroupWithSelectDemo.vue │ │ │ │ │ ├── ButtonIconDemo.vue │ │ │ │ │ ├── ButtonLinkDemo.vue │ │ │ │ │ ├── ButtonLoadingDemo.vue │ │ │ │ │ ├── ButtonOutlineDemo.vue │ │ │ │ │ ├── ButtonSecondaryDemo.vue │ │ │ │ │ ├── ButtonWithIconDemo.vue │ │ │ │ │ ├── CalendarDemo.vue │ │ │ │ │ ├── CalendarForm.vue │ │ │ │ │ ├── CalendarWithSelect.vue │ │ │ │ │ ├── CardChat.vue │ │ │ │ │ ├── CardDemo.vue │ │ │ │ │ ├── CardFormDemo.vue │ │ │ │ │ ├── CardStats.vue │ │ │ │ │ ├── CardWithForm.vue │ │ │ │ │ ├── Cards/ │ │ │ │ │ │ ├── ActivityGoal.vue │ │ │ │ │ │ ├── DataTable.vue │ │ │ │ │ │ └── Metric.vue │ │ │ │ │ ├── CarouselApi.vue │ │ │ │ │ ├── CarouselDemo.vue │ │ │ │ │ ├── CarouselOrientation.vue │ │ │ │ │ ├── CarouselPlugin.vue │ │ │ │ │ ├── CarouselSize.vue │ │ │ │ │ ├── CarouselSpacing.vue │ │ │ │ │ ├── CarouselThumbnails.vue │ │ │ │ │ ├── CheckboxDemo.vue │ │ │ │ │ ├── CheckboxDisabled.vue │ │ │ │ │ ├── CheckboxFormMultiple.vue │ │ │ │ │ ├── CheckboxFormSingle.vue │ │ │ │ │ ├── CheckboxWithText.vue │ │ │ │ │ ├── CollapsibleDemo.vue │ │ │ │ │ ├── ComboboxDemo.vue │ │ │ │ │ ├── ComboboxDropdownMenu.vue │ │ │ │ │ ├── ComboboxForm.vue │ │ │ │ │ ├── ComboboxPopover.vue │ │ │ │ │ ├── ComboboxResponsive.vue │ │ │ │ │ ├── ComboboxTrigger.vue │ │ │ │ │ ├── CommandDemo.vue │ │ │ │ │ ├── CommandDialogDemo.vue │ │ │ │ │ ├── CommandDropdownMenu.vue │ │ │ │ │ ├── CommandForm.vue │ │ │ │ │ ├── CommandPopover.vue │ │ │ │ │ ├── CommandResponsive.vue │ │ │ │ │ ├── ContextMenuDemo.vue │ │ │ │ │ ├── CustomChartTooltip.vue │ │ │ │ │ ├── DataTableColumnPinningDemo.vue │ │ │ │ │ ├── DataTableDemo.vue │ │ │ │ │ ├── DataTableDemoColumn.vue │ │ │ │ │ ├── DataTableReactiveDemo.vue │ │ │ │ │ ├── DatePickerDemo.vue │ │ │ │ │ ├── DatePickerForm.vue │ │ │ │ │ ├── DatePickerWithIndependentMonths.vue │ │ │ │ │ ├── DatePickerWithPresets.vue │ │ │ │ │ ├── DatePickerWithRange.vue │ │ │ │ │ ├── DialogCustomCloseButton.vue │ │ │ │ │ ├── DialogDemo.vue │ │ │ │ │ ├── DialogForm.vue │ │ │ │ │ ├── DialogScrollBodyDemo.vue │ │ │ │ │ ├── DialogScrollOverlayDemo.vue │ │ │ │ │ ├── DonutChartColor.vue │ │ │ │ │ ├── DonutChartCustomTooltip.vue │ │ │ │ │ ├── DonutChartDemo.vue │ │ │ │ │ ├── DonutChartPie.vue │ │ │ │ │ ├── DrawerDemo.vue │ │ │ │ │ ├── DrawerDialog.vue │ │ │ │ │ ├── DropdownMenuCheckboxes.vue │ │ │ │ │ ├── DropdownMenuDemo.vue │ │ │ │ │ ├── DropdownMenuRadioGroup.vue │ │ │ │ │ ├── EmptyAvatarDemo.vue │ │ │ │ │ ├── EmptyAvatarGroupDemo.vue │ │ │ │ │ ├── EmptyBackgroundDemo.vue │ │ │ │ │ ├── EmptyDemo.vue │ │ │ │ │ ├── EmptyInputGroupDemo.vue │ │ │ │ │ ├── EmptyOutlineDemo.vue │ │ │ │ │ ├── FieldCheckboxDemo.vue │ │ │ │ │ ├── FieldChoiceCardDemo.vue │ │ │ │ │ ├── FieldDemo.vue │ │ │ │ │ ├── FieldFieldsetDemo.vue │ │ │ │ │ ├── FieldGroupDemo.vue │ │ │ │ │ ├── FieldInputDemo.vue │ │ │ │ │ ├── FieldRadioDemo.vue │ │ │ │ │ ├── FieldResponsiveDemo.vue │ │ │ │ │ ├── FieldSelectDemo.vue │ │ │ │ │ ├── FieldSliderDemo.vue │ │ │ │ │ ├── FieldSwitchDemo.vue │ │ │ │ │ ├── FieldTextareaDemo.vue │ │ │ │ │ ├── HoverCardDemo.vue │ │ │ │ │ ├── InputDemo.vue │ │ │ │ │ ├── InputDisabled.vue │ │ │ │ │ ├── InputFile.vue │ │ │ │ │ ├── InputForm.vue │ │ │ │ │ ├── InputFormAutoAnimate.vue │ │ │ │ │ ├── InputGroupDemo.vue │ │ │ │ │ ├── InputGroupWithButton.vue │ │ │ │ │ ├── InputGroupWithButtonGroup.vue │ │ │ │ │ ├── InputGroupWithCustomInput.vue │ │ │ │ │ ├── InputGroupWithDropdown.vue │ │ │ │ │ ├── InputGroupWithIcon.vue │ │ │ │ │ ├── InputGroupWithLabel.vue │ │ │ │ │ ├── InputGroupWithSpinner.vue │ │ │ │ │ ├── InputGroupWithText.vue │ │ │ │ │ ├── InputGroupWithTextarea.vue │ │ │ │ │ ├── InputGroupWithTooltip.vue │ │ │ │ │ ├── InputWithButton.vue │ │ │ │ │ ├── InputWithIcon.vue │ │ │ │ │ ├── InputWithLabel.vue │ │ │ │ │ ├── ItemAvatarDemo.vue │ │ │ │ │ ├── ItemDemo.vue │ │ │ │ │ ├── ItemDropdownDemo.vue │ │ │ │ │ ├── ItemGroupDemo.vue │ │ │ │ │ ├── ItemHeaderDemo.vue │ │ │ │ │ ├── ItemIconDemo.vue │ │ │ │ │ ├── ItemImageDemo.vue │ │ │ │ │ ├── ItemLinkDemo.vue │ │ │ │ │ ├── ItemSizeDemo.vue │ │ │ │ │ ├── ItemVariantDemo.vue │ │ │ │ │ ├── KbdDemo.vue │ │ │ │ │ ├── KbdWithButton.vue │ │ │ │ │ ├── KbdWithInputGroup.vue │ │ │ │ │ ├── KbdWithTooltip.vue │ │ │ │ │ ├── LabelDemo.vue │ │ │ │ │ ├── LineChartCustomTooltip.vue │ │ │ │ │ ├── LineChartDemo.vue │ │ │ │ │ ├── LineChartSparkline.vue │ │ │ │ │ ├── MenubarDemo.vue │ │ │ │ │ ├── NavigationMenuDemo.vue │ │ │ │ │ ├── NumberFieldCurrency.vue │ │ │ │ │ ├── NumberFieldDecimal.vue │ │ │ │ │ ├── NumberFieldDemo.vue │ │ │ │ │ ├── NumberFieldDisabled.vue │ │ │ │ │ ├── NumberFieldForm.vue │ │ │ │ │ ├── NumberFieldPercentage.vue │ │ │ │ │ ├── PaginationDemo.vue │ │ │ │ │ ├── PinInputControlled.vue │ │ │ │ │ ├── PinInputDemo.vue │ │ │ │ │ ├── PinInputDisabled.vue │ │ │ │ │ ├── PinInputFormDemo.vue │ │ │ │ │ ├── PinInputSeparatorDemo.vue │ │ │ │ │ ├── PopoverDemo.vue │ │ │ │ │ ├── ProgressDemo.vue │ │ │ │ │ ├── RadioGroupDemo.vue │ │ │ │ │ ├── RadioGroupForm.vue │ │ │ │ │ ├── RangeCalendarDemo.vue │ │ │ │ │ ├── ResizableDemo.vue │ │ │ │ │ ├── ResizableHandleDemo.vue │ │ │ │ │ ├── ResizableVerticalDemo.vue │ │ │ │ │ ├── ScrollAreaDemo.vue │ │ │ │ │ ├── ScrollAreaHorizontalDemo.vue │ │ │ │ │ ├── SelectDemo.vue │ │ │ │ │ ├── SelectForm.vue │ │ │ │ │ ├── SelectScrollable.vue │ │ │ │ │ ├── SeparatorDemo.vue │ │ │ │ │ ├── SheetDemo.vue │ │ │ │ │ ├── SheetSideDemo.vue │ │ │ │ │ ├── SkeletonCard.vue │ │ │ │ │ ├── SkeletonDemo.vue │ │ │ │ │ ├── SliderDemo.vue │ │ │ │ │ ├── SliderForm.vue │ │ │ │ │ ├── SonnerDemo.vue │ │ │ │ │ ├── SonnerWithDialog.vue │ │ │ │ │ ├── SpinnerBadgeDemo.vue │ │ │ │ │ ├── SpinnerButtonsDemo.vue │ │ │ │ │ ├── SpinnerColorsDemo.vue │ │ │ │ │ ├── SpinnerCustomDemo.vue │ │ │ │ │ ├── SpinnerDemo.vue │ │ │ │ │ ├── SpinnerEmptyDemo.vue │ │ │ │ │ ├── SpinnerInputGroupDemo.vue │ │ │ │ │ ├── SpinnerItemDemo.vue │ │ │ │ │ ├── SpinnerSizesDemo.vue │ │ │ │ │ ├── StepperDemo.vue │ │ │ │ │ ├── StepperForm.vue │ │ │ │ │ ├── StepperHorizental.vue │ │ │ │ │ ├── StepperVertical.vue │ │ │ │ │ ├── SwitchDemo.vue │ │ │ │ │ ├── SwitchForm.vue │ │ │ │ │ ├── TableDemo.vue │ │ │ │ │ ├── TabsDemo.vue │ │ │ │ │ ├── TabsVerticalDemo.vue │ │ │ │ │ ├── TagsInputComboboxDemo.vue │ │ │ │ │ ├── TagsInputDemo.vue │ │ │ │ │ ├── TagsInputFormDemo.vue │ │ │ │ │ ├── TextareaDemo.vue │ │ │ │ │ ├── TextareaDisabled.vue │ │ │ │ │ ├── TextareaForm.vue │ │ │ │ │ ├── TextareaWithButton.vue │ │ │ │ │ ├── TextareaWithLabel.vue │ │ │ │ │ ├── TextareaWithText.vue │ │ │ │ │ ├── ToastDemo.vue │ │ │ │ │ ├── ToastDestructive.vue │ │ │ │ │ ├── ToastSimple.vue │ │ │ │ │ ├── ToastWithAction.vue │ │ │ │ │ ├── ToastWithTitle.vue │ │ │ │ │ ├── ToggleDemo.vue │ │ │ │ │ ├── ToggleDisabledDemo.vue │ │ │ │ │ ├── ToggleGroupDemo.vue │ │ │ │ │ ├── ToggleGroupDisabledDemo.vue │ │ │ │ │ ├── ToggleGroupLargeDemo.vue │ │ │ │ │ ├── ToggleGroupOutlineDemo.vue │ │ │ │ │ ├── ToggleGroupSingleDemo.vue │ │ │ │ │ ├── ToggleGroupSmallDemo.vue │ │ │ │ │ ├── ToggleItalicDemo.vue │ │ │ │ │ ├── ToggleItalicWithTextDemo.vue │ │ │ │ │ ├── ToggleLargeDemo.vue │ │ │ │ │ ├── ToggleSmallDemo.vue │ │ │ │ │ ├── TooltipDemo.vue │ │ │ │ │ ├── TypographyBlockquote.vue │ │ │ │ │ ├── TypographyDemo.vue │ │ │ │ │ ├── TypographyH1.vue │ │ │ │ │ ├── TypographyH2.vue │ │ │ │ │ ├── TypographyH3.vue │ │ │ │ │ ├── TypographyH4.vue │ │ │ │ │ ├── TypographyInlineCode.vue │ │ │ │ │ ├── TypographyLarge.vue │ │ │ │ │ ├── TypographyLead.vue │ │ │ │ │ ├── TypographyList.vue │ │ │ │ │ ├── TypographyMuted.vue │ │ │ │ │ ├── TypographyP.vue │ │ │ │ │ ├── TypographySmall.vue │ │ │ │ │ └── TypographyTable.vue │ │ │ │ ├── lib/ │ │ │ │ │ └── utils.ts │ │ │ │ └── ui/ │ │ │ │ ├── accordion/ │ │ │ │ │ ├── Accordion.vue │ │ │ │ │ ├── AccordionContent.vue │ │ │ │ │ ├── AccordionItem.vue │ │ │ │ │ ├── AccordionTrigger.vue │ │ │ │ │ ├── index.ts │ │ │ │ │ └── metadata.json │ │ │ │ ├── alert/ │ │ │ │ │ ├── Alert.vue │ │ │ │ │ ├── AlertDescription.vue │ │ │ │ │ ├── AlertTitle.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── alert-dialog/ │ │ │ │ │ ├── AlertDialog.vue │ │ │ │ │ ├── AlertDialogAction.vue │ │ │ │ │ ├── AlertDialogCancel.vue │ │ │ │ │ ├── AlertDialogContent.vue │ │ │ │ │ ├── AlertDialogDescription.vue │ │ │ │ │ ├── AlertDialogFooter.vue │ │ │ │ │ ├── AlertDialogHeader.vue │ │ │ │ │ ├── AlertDialogTitle.vue │ │ │ │ │ ├── AlertDialogTrigger.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── aspect-ratio/ │ │ │ │ │ ├── AspectRatio.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── auto-form/ │ │ │ │ │ ├── AutoForm.vue │ │ │ │ │ ├── AutoFormField.vue │ │ │ │ │ ├── AutoFormFieldArray.vue │ │ │ │ │ ├── AutoFormFieldBoolean.vue │ │ │ │ │ ├── AutoFormFieldDate.vue │ │ │ │ │ ├── AutoFormFieldEnum.vue │ │ │ │ │ ├── AutoFormFieldFile.vue │ │ │ │ │ ├── AutoFormFieldInput.vue │ │ │ │ │ ├── AutoFormFieldNumber.vue │ │ │ │ │ ├── AutoFormFieldObject.vue │ │ │ │ │ ├── AutoFormLabel.vue │ │ │ │ │ ├── constant.ts │ │ │ │ │ ├── dependencies.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── interface.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── avatar/ │ │ │ │ │ ├── Avatar.vue │ │ │ │ │ ├── AvatarFallback.vue │ │ │ │ │ ├── AvatarImage.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── badge/ │ │ │ │ │ ├── Badge.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── breadcrumb/ │ │ │ │ │ ├── Breadcrumb.vue │ │ │ │ │ ├── BreadcrumbEllipsis.vue │ │ │ │ │ ├── BreadcrumbItem.vue │ │ │ │ │ ├── BreadcrumbLink.vue │ │ │ │ │ ├── BreadcrumbList.vue │ │ │ │ │ ├── BreadcrumbPage.vue │ │ │ │ │ ├── BreadcrumbSeparator.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── button/ │ │ │ │ │ ├── Button.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── button-group/ │ │ │ │ │ ├── ButtonGroup.vue │ │ │ │ │ ├── ButtonGroupSeparator.vue │ │ │ │ │ ├── ButtonGroupText.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── calendar/ │ │ │ │ │ ├── Calendar.vue │ │ │ │ │ ├── CalendarCell.vue │ │ │ │ │ ├── CalendarCellTrigger.vue │ │ │ │ │ ├── CalendarGrid.vue │ │ │ │ │ ├── CalendarGridBody.vue │ │ │ │ │ ├── CalendarGridHead.vue │ │ │ │ │ ├── CalendarGridRow.vue │ │ │ │ │ ├── CalendarHeadCell.vue │ │ │ │ │ ├── CalendarHeader.vue │ │ │ │ │ ├── CalendarHeading.vue │ │ │ │ │ ├── CalendarNextButton.vue │ │ │ │ │ ├── CalendarPrevButton.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── card/ │ │ │ │ │ ├── Card.vue │ │ │ │ │ ├── CardContent.vue │ │ │ │ │ ├── CardDescription.vue │ │ │ │ │ ├── CardFooter.vue │ │ │ │ │ ├── CardHeader.vue │ │ │ │ │ ├── CardTitle.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── carousel/ │ │ │ │ │ ├── Carousel.vue │ │ │ │ │ ├── CarouselContent.vue │ │ │ │ │ ├── CarouselItem.vue │ │ │ │ │ ├── CarouselNext.vue │ │ │ │ │ ├── CarouselPrevious.vue │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── interface.ts │ │ │ │ │ └── useCarousel.ts │ │ │ │ ├── chart/ │ │ │ │ │ ├── ChartCrosshair.vue │ │ │ │ │ ├── ChartLegend.vue │ │ │ │ │ ├── ChartSingleTooltip.vue │ │ │ │ │ ├── ChartTooltip.vue │ │ │ │ │ ├── index.ts │ │ │ │ │ └── interface.ts │ │ │ │ ├── chart-area/ │ │ │ │ │ ├── AreaChart.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── chart-bar/ │ │ │ │ │ ├── BarChart.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── chart-donut/ │ │ │ │ │ ├── DonutChart.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── chart-line/ │ │ │ │ │ ├── LineChart.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── checkbox/ │ │ │ │ │ ├── Checkbox.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── collapsible/ │ │ │ │ │ ├── Collapsible.vue │ │ │ │ │ ├── CollapsibleContent.vue │ │ │ │ │ ├── CollapsibleTrigger.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── combobox/ │ │ │ │ │ ├── Combobox.vue │ │ │ │ │ ├── ComboboxAnchor.vue │ │ │ │ │ ├── ComboboxEmpty.vue │ │ │ │ │ ├── ComboboxGroup.vue │ │ │ │ │ ├── ComboboxInput.vue │ │ │ │ │ ├── ComboboxItem.vue │ │ │ │ │ ├── ComboboxList.vue │ │ │ │ │ ├── ComboboxSeparator.vue │ │ │ │ │ ├── ComboboxTrigger.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── command/ │ │ │ │ │ ├── Command.vue │ │ │ │ │ ├── CommandDialog.vue │ │ │ │ │ ├── CommandEmpty.vue │ │ │ │ │ ├── CommandGroup.vue │ │ │ │ │ ├── CommandInput.vue │ │ │ │ │ ├── CommandItem.vue │ │ │ │ │ ├── CommandList.vue │ │ │ │ │ ├── CommandSeparator.vue │ │ │ │ │ ├── CommandShortcut.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── context-menu/ │ │ │ │ │ ├── ContextMenu.vue │ │ │ │ │ ├── ContextMenuCheckboxItem.vue │ │ │ │ │ ├── ContextMenuContent.vue │ │ │ │ │ ├── ContextMenuGroup.vue │ │ │ │ │ ├── ContextMenuItem.vue │ │ │ │ │ ├── ContextMenuLabel.vue │ │ │ │ │ ├── ContextMenuPortal.vue │ │ │ │ │ ├── ContextMenuRadioGroup.vue │ │ │ │ │ ├── ContextMenuRadioItem.vue │ │ │ │ │ ├── ContextMenuSeparator.vue │ │ │ │ │ ├── ContextMenuShortcut.vue │ │ │ │ │ ├── ContextMenuSub.vue │ │ │ │ │ ├── ContextMenuSubContent.vue │ │ │ │ │ ├── ContextMenuSubTrigger.vue │ │ │ │ │ ├── ContextMenuTrigger.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── dialog/ │ │ │ │ │ ├── Dialog.vue │ │ │ │ │ ├── DialogClose.vue │ │ │ │ │ ├── DialogContent.vue │ │ │ │ │ ├── DialogDescription.vue │ │ │ │ │ ├── DialogFooter.vue │ │ │ │ │ ├── DialogHeader.vue │ │ │ │ │ ├── DialogScrollContent.vue │ │ │ │ │ ├── DialogTitle.vue │ │ │ │ │ ├── DialogTrigger.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── drawer/ │ │ │ │ │ ├── Drawer.vue │ │ │ │ │ ├── DrawerContent.vue │ │ │ │ │ ├── DrawerDescription.vue │ │ │ │ │ ├── DrawerFooter.vue │ │ │ │ │ ├── DrawerHeader.vue │ │ │ │ │ ├── DrawerOverlay.vue │ │ │ │ │ ├── DrawerTitle.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── dropdown-menu/ │ │ │ │ │ ├── DropdownMenu.vue │ │ │ │ │ ├── DropdownMenuCheckboxItem.vue │ │ │ │ │ ├── DropdownMenuContent.vue │ │ │ │ │ ├── DropdownMenuGroup.vue │ │ │ │ │ ├── DropdownMenuItem.vue │ │ │ │ │ ├── DropdownMenuLabel.vue │ │ │ │ │ ├── DropdownMenuRadioGroup.vue │ │ │ │ │ ├── DropdownMenuRadioItem.vue │ │ │ │ │ ├── DropdownMenuSeparator.vue │ │ │ │ │ ├── DropdownMenuShortcut.vue │ │ │ │ │ ├── DropdownMenuSub.vue │ │ │ │ │ ├── DropdownMenuSubContent.vue │ │ │ │ │ ├── DropdownMenuSubTrigger.vue │ │ │ │ │ ├── DropdownMenuTrigger.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── empty/ │ │ │ │ │ ├── Empty.vue │ │ │ │ │ ├── EmptyContent.vue │ │ │ │ │ ├── EmptyDescription.vue │ │ │ │ │ ├── EmptyHeader.vue │ │ │ │ │ ├── EmptyMedia.vue │ │ │ │ │ ├── EmptyTitle.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── field/ │ │ │ │ │ ├── Field.vue │ │ │ │ │ ├── FieldContent.vue │ │ │ │ │ ├── FieldDescription.vue │ │ │ │ │ ├── FieldError.vue │ │ │ │ │ ├── FieldGroup.vue │ │ │ │ │ ├── FieldLabel.vue │ │ │ │ │ ├── FieldLegend.vue │ │ │ │ │ ├── FieldSeparator.vue │ │ │ │ │ ├── FieldSet.vue │ │ │ │ │ ├── FieldTitle.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── form/ │ │ │ │ │ ├── FormControl.vue │ │ │ │ │ ├── FormDescription.vue │ │ │ │ │ ├── FormItem.vue │ │ │ │ │ ├── FormLabel.vue │ │ │ │ │ ├── FormMessage.vue │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── injectionKeys.ts │ │ │ │ │ └── useFormField.ts │ │ │ │ ├── hover-card/ │ │ │ │ │ ├── HoverCard.vue │ │ │ │ │ ├── HoverCardContent.vue │ │ │ │ │ ├── HoverCardTrigger.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── input/ │ │ │ │ │ ├── Input.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── input-group/ │ │ │ │ │ ├── InputGroup.vue │ │ │ │ │ ├── InputGroupAddon.vue │ │ │ │ │ ├── InputGroupButton.vue │ │ │ │ │ ├── InputGroupInput.vue │ │ │ │ │ ├── InputGroupText.vue │ │ │ │ │ ├── InputGroupTextarea.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── item/ │ │ │ │ │ ├── Item.vue │ │ │ │ │ ├── ItemActions.vue │ │ │ │ │ ├── ItemContent.vue │ │ │ │ │ ├── ItemDescription.vue │ │ │ │ │ ├── ItemFooter.vue │ │ │ │ │ ├── ItemGroup.vue │ │ │ │ │ ├── ItemHeader.vue │ │ │ │ │ ├── ItemMedia.vue │ │ │ │ │ ├── ItemSeparator.vue │ │ │ │ │ ├── ItemTitle.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── kbd/ │ │ │ │ │ ├── Kbd.vue │ │ │ │ │ ├── KbdGroup.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── label/ │ │ │ │ │ ├── Label.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── menubar/ │ │ │ │ │ ├── Menubar.vue │ │ │ │ │ ├── MenubarCheckboxItem.vue │ │ │ │ │ ├── MenubarContent.vue │ │ │ │ │ ├── MenubarGroup.vue │ │ │ │ │ ├── MenubarItem.vue │ │ │ │ │ ├── MenubarLabel.vue │ │ │ │ │ ├── MenubarMenu.vue │ │ │ │ │ ├── MenubarRadioGroup.vue │ │ │ │ │ ├── MenubarRadioItem.vue │ │ │ │ │ ├── MenubarSeparator.vue │ │ │ │ │ ├── MenubarShortcut.vue │ │ │ │ │ ├── MenubarSub.vue │ │ │ │ │ ├── MenubarSubContent.vue │ │ │ │ │ ├── MenubarSubTrigger.vue │ │ │ │ │ ├── MenubarTrigger.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── navigation-menu/ │ │ │ │ │ ├── NavigationMenu.vue │ │ │ │ │ ├── NavigationMenuContent.vue │ │ │ │ │ ├── NavigationMenuIndicator.vue │ │ │ │ │ ├── NavigationMenuItem.vue │ │ │ │ │ ├── NavigationMenuLink.vue │ │ │ │ │ ├── NavigationMenuList.vue │ │ │ │ │ ├── NavigationMenuTrigger.vue │ │ │ │ │ ├── NavigationMenuViewport.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── number-field/ │ │ │ │ │ ├── NumberField.vue │ │ │ │ │ ├── NumberFieldContent.vue │ │ │ │ │ ├── NumberFieldDecrement.vue │ │ │ │ │ ├── NumberFieldIncrement.vue │ │ │ │ │ ├── NumberFieldInput.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── pagination/ │ │ │ │ │ ├── Pagination.vue │ │ │ │ │ ├── PaginationContent.vue │ │ │ │ │ ├── PaginationEllipsis.vue │ │ │ │ │ ├── PaginationFirst.vue │ │ │ │ │ ├── PaginationItem.vue │ │ │ │ │ ├── PaginationLast.vue │ │ │ │ │ ├── PaginationNext.vue │ │ │ │ │ ├── PaginationPrevious.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── pin-input/ │ │ │ │ │ ├── PinInput.vue │ │ │ │ │ ├── PinInputGroup.vue │ │ │ │ │ ├── PinInputSeparator.vue │ │ │ │ │ ├── PinInputSlot.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── popover/ │ │ │ │ │ ├── Popover.vue │ │ │ │ │ ├── PopoverContent.vue │ │ │ │ │ ├── PopoverTrigger.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── progress/ │ │ │ │ │ ├── Progress.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── radio-group/ │ │ │ │ │ ├── RadioGroup.vue │ │ │ │ │ ├── RadioGroupItem.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── range-calendar/ │ │ │ │ │ ├── RangeCalendar.vue │ │ │ │ │ ├── RangeCalendarCell.vue │ │ │ │ │ ├── RangeCalendarCellTrigger.vue │ │ │ │ │ ├── RangeCalendarGrid.vue │ │ │ │ │ ├── RangeCalendarGridBody.vue │ │ │ │ │ ├── RangeCalendarGridHead.vue │ │ │ │ │ ├── RangeCalendarGridRow.vue │ │ │ │ │ ├── RangeCalendarHeadCell.vue │ │ │ │ │ ├── RangeCalendarHeader.vue │ │ │ │ │ ├── RangeCalendarHeading.vue │ │ │ │ │ ├── RangeCalendarNextButton.vue │ │ │ │ │ ├── RangeCalendarPrevButton.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── resizable/ │ │ │ │ │ ├── ResizableHandle.vue │ │ │ │ │ ├── ResizablePanelGroup.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── scroll-area/ │ │ │ │ │ ├── ScrollArea.vue │ │ │ │ │ ├── ScrollBar.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── select/ │ │ │ │ │ ├── Select.vue │ │ │ │ │ ├── SelectContent.vue │ │ │ │ │ ├── SelectGroup.vue │ │ │ │ │ ├── SelectItem.vue │ │ │ │ │ ├── SelectItemText.vue │ │ │ │ │ ├── SelectLabel.vue │ │ │ │ │ ├── SelectScrollDownButton.vue │ │ │ │ │ ├── SelectScrollUpButton.vue │ │ │ │ │ ├── SelectSeparator.vue │ │ │ │ │ ├── SelectTrigger.vue │ │ │ │ │ ├── SelectValue.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── separator/ │ │ │ │ │ ├── Separator.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── sheet/ │ │ │ │ │ ├── Sheet.vue │ │ │ │ │ ├── SheetClose.vue │ │ │ │ │ ├── SheetContent.vue │ │ │ │ │ ├── SheetDescription.vue │ │ │ │ │ ├── SheetFooter.vue │ │ │ │ │ ├── SheetHeader.vue │ │ │ │ │ ├── SheetTitle.vue │ │ │ │ │ ├── SheetTrigger.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── sidebar/ │ │ │ │ │ ├── Sidebar.vue │ │ │ │ │ ├── SidebarContent.vue │ │ │ │ │ ├── SidebarFooter.vue │ │ │ │ │ ├── SidebarGroup.vue │ │ │ │ │ ├── SidebarGroupAction.vue │ │ │ │ │ ├── SidebarGroupContent.vue │ │ │ │ │ ├── SidebarGroupLabel.vue │ │ │ │ │ ├── SidebarHeader.vue │ │ │ │ │ ├── SidebarInput.vue │ │ │ │ │ ├── SidebarInset.vue │ │ │ │ │ ├── SidebarMenu.vue │ │ │ │ │ ├── SidebarMenuAction.vue │ │ │ │ │ ├── SidebarMenuBadge.vue │ │ │ │ │ ├── SidebarMenuButton.vue │ │ │ │ │ ├── SidebarMenuButtonChild.vue │ │ │ │ │ ├── SidebarMenuItem.vue │ │ │ │ │ ├── SidebarMenuSkeleton.vue │ │ │ │ │ ├── SidebarMenuSub.vue │ │ │ │ │ ├── SidebarMenuSubButton.vue │ │ │ │ │ ├── SidebarMenuSubItem.vue │ │ │ │ │ ├── SidebarProvider.vue │ │ │ │ │ ├── SidebarRail.vue │ │ │ │ │ ├── SidebarSeparator.vue │ │ │ │ │ ├── SidebarTrigger.vue │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── metadata.json │ │ │ │ │ └── utils.ts │ │ │ │ ├── skeleton/ │ │ │ │ │ ├── Skeleton.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── slider/ │ │ │ │ │ ├── Slider.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── sonner/ │ │ │ │ │ ├── Sonner.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── spinner/ │ │ │ │ │ ├── Spinner.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── stepper/ │ │ │ │ │ ├── Stepper.vue │ │ │ │ │ ├── StepperDescription.vue │ │ │ │ │ ├── StepperIndicator.vue │ │ │ │ │ ├── StepperItem.vue │ │ │ │ │ ├── StepperSeparator.vue │ │ │ │ │ ├── StepperTitle.vue │ │ │ │ │ ├── StepperTrigger.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── switch/ │ │ │ │ │ ├── Switch.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── table/ │ │ │ │ │ ├── Table.vue │ │ │ │ │ ├── TableBody.vue │ │ │ │ │ ├── TableCaption.vue │ │ │ │ │ ├── TableCell.vue │ │ │ │ │ ├── TableEmpty.vue │ │ │ │ │ ├── TableFooter.vue │ │ │ │ │ ├── TableHead.vue │ │ │ │ │ ├── TableHeader.vue │ │ │ │ │ ├── TableRow.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── tabs/ │ │ │ │ │ ├── Tabs.vue │ │ │ │ │ ├── TabsContent.vue │ │ │ │ │ ├── TabsList.vue │ │ │ │ │ ├── TabsTrigger.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── tags-input/ │ │ │ │ │ ├── TagsInput.vue │ │ │ │ │ ├── TagsInputInput.vue │ │ │ │ │ ├── TagsInputItem.vue │ │ │ │ │ ├── TagsInputItemDelete.vue │ │ │ │ │ ├── TagsInputItemText.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── textarea/ │ │ │ │ │ ├── Textarea.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── toast/ │ │ │ │ │ ├── Toast.vue │ │ │ │ │ ├── ToastAction.vue │ │ │ │ │ ├── ToastClose.vue │ │ │ │ │ ├── ToastDescription.vue │ │ │ │ │ ├── ToastProvider.vue │ │ │ │ │ ├── ToastTitle.vue │ │ │ │ │ ├── ToastViewport.vue │ │ │ │ │ ├── Toaster.vue │ │ │ │ │ ├── index.ts │ │ │ │ │ └── use-toast.ts │ │ │ │ ├── toggle/ │ │ │ │ │ ├── Toggle.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── toggle-group/ │ │ │ │ │ ├── ToggleGroup.vue │ │ │ │ │ ├── ToggleGroupItem.vue │ │ │ │ │ └── index.ts │ │ │ │ └── tooltip/ │ │ │ │ ├── Tooltip.vue │ │ │ │ ├── TooltipContent.vue │ │ │ │ ├── TooltipProvider.vue │ │ │ │ ├── TooltipTrigger.vue │ │ │ │ └── index.ts │ │ │ ├── registry-base-colors.ts │ │ │ ├── registry-blocks.ts │ │ │ ├── registry-categories.ts │ │ │ ├── registry-charts.ts │ │ │ ├── registry-colors.ts │ │ │ ├── registry-composables.ts │ │ │ ├── registry-examples.ts │ │ │ ├── registry-icons.ts │ │ │ ├── registry-lib.ts │ │ │ ├── registry-styles.ts │ │ │ ├── registry-themes.ts │ │ │ └── registry-ui.ts │ │ └── stores/ │ │ └── config.ts │ ├── tailwind.config.js │ ├── tsconfig.json │ └── tsconfig.registry.json ├── eslint.config.js ├── package.json ├── packages/ │ ├── cli/ │ │ ├── README.md │ │ ├── package.json │ │ ├── scripts/ │ │ │ └── rimraf.js │ │ ├── src/ │ │ │ ├── commands/ │ │ │ │ ├── add.ts │ │ │ │ ├── build.ts │ │ │ │ ├── create.ts │ │ │ │ ├── diff.ts │ │ │ │ ├── info.ts │ │ │ │ ├── init.ts │ │ │ │ ├── mcp.ts │ │ │ │ ├── migrate.ts │ │ │ │ ├── registry/ │ │ │ │ │ ├── build.ts │ │ │ │ │ └── mcp.ts │ │ │ │ ├── search.ts │ │ │ │ └── view.ts │ │ │ ├── icons/ │ │ │ │ ├── index.ts │ │ │ │ └── libraries.ts │ │ │ ├── index.ts │ │ │ ├── mcp/ │ │ │ │ ├── index.ts │ │ │ │ └── utils.ts │ │ │ ├── migrations/ │ │ │ │ ├── migrate-icons.test.ts │ │ │ │ └── migrate-icons.ts │ │ │ ├── preflights/ │ │ │ │ ├── preflight-add.ts │ │ │ │ ├── preflight-build.ts │ │ │ │ ├── preflight-init.ts │ │ │ │ ├── preflight-migrate.ts │ │ │ │ └── preflight-registry.ts │ │ │ ├── registry/ │ │ │ │ ├── api.test.ts │ │ │ │ ├── api.ts │ │ │ │ ├── builder.ts │ │ │ │ ├── config.ts │ │ │ │ ├── constants.ts │ │ │ │ ├── context.ts │ │ │ │ ├── env.ts │ │ │ │ ├── errors.ts │ │ │ │ ├── fetcher.ts │ │ │ │ ├── index.ts │ │ │ │ ├── namespaces.ts │ │ │ │ ├── parser.ts │ │ │ │ ├── resolver.ts │ │ │ │ ├── schema.ts │ │ │ │ ├── search.ts │ │ │ │ ├── utils.ts │ │ │ │ └── validator.ts │ │ │ ├── schema/ │ │ │ │ └── index.ts │ │ │ ├── styles/ │ │ │ │ ├── create-style-map.test.ts │ │ │ │ ├── create-style-map.ts │ │ │ │ ├── transform-style-map.test.ts │ │ │ │ ├── transform-style-map.ts │ │ │ │ └── transform.ts │ │ │ ├── tailwind.css │ │ │ └── utils/ │ │ │ ├── add-components.ts │ │ │ ├── compare.ts │ │ │ ├── create-project.ts │ │ │ ├── env-helpers.ts │ │ │ ├── env-loader.ts │ │ │ ├── errors.ts │ │ │ ├── file-helper.ts │ │ │ ├── fonts.ts │ │ │ ├── frameworks.ts │ │ │ ├── get-config.ts │ │ │ ├── get-package-info.ts │ │ │ ├── get-project-info.ts │ │ │ ├── handle-error.ts │ │ │ ├── highlighter.ts │ │ │ ├── icon-libraries.ts │ │ │ ├── index.ts │ │ │ ├── is-safe-target.ts │ │ │ ├── logger.ts │ │ │ ├── registries.ts │ │ │ ├── resolve-import.ts │ │ │ ├── spinner.ts │ │ │ ├── templates.ts │ │ │ ├── transformers/ │ │ │ │ ├── index.ts │ │ │ │ ├── transform-css-vars.ts │ │ │ │ ├── transform-icons.ts │ │ │ │ ├── transform-import.ts │ │ │ │ ├── transform-menu.test.ts │ │ │ │ ├── transform-menu.ts │ │ │ │ ├── transform-sfc.ts │ │ │ │ ├── transform-style.ts │ │ │ │ └── transform-tw-prefix.ts │ │ │ └── updaters/ │ │ │ ├── update-css-vars.ts │ │ │ ├── update-css.ts │ │ │ ├── update-dependencies.ts │ │ │ ├── update-env-vars.ts │ │ │ ├── update-files.ts │ │ │ ├── update-tailwind-config.ts │ │ │ └── update-tailwind-content.ts │ │ ├── test/ │ │ │ ├── commands/ │ │ │ │ ├── create.test.ts │ │ │ │ └── init.test.ts │ │ │ ├── fixtures/ │ │ │ │ ├── colors/ │ │ │ │ │ ├── neutral.json │ │ │ │ │ ├── slate.json │ │ │ │ │ ├── stone.json │ │ │ │ │ └── zinc.json │ │ │ │ ├── config-full/ │ │ │ │ │ ├── components.json │ │ │ │ │ ├── package.json │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── config-invalid/ │ │ │ │ │ ├── components.json │ │ │ │ │ └── package.json │ │ │ │ ├── config-js/ │ │ │ │ │ ├── components.json │ │ │ │ │ ├── jsconfig.json │ │ │ │ │ └── package.json │ │ │ │ ├── config-none/ │ │ │ │ │ └── package.json │ │ │ │ ├── config-nuxt/ │ │ │ │ │ └── .nuxt/ │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── config-partial/ │ │ │ │ │ ├── components.json │ │ │ │ │ ├── package.json │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── config-ui/ │ │ │ │ │ ├── components.json │ │ │ │ │ ├── package.json │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── frameworks/ │ │ │ │ │ ├── nuxt/ │ │ │ │ │ │ ├── .nuxt/ │ │ │ │ │ │ │ └── tsconfig.json │ │ │ │ │ │ ├── app.vue │ │ │ │ │ │ ├── assets/ │ │ │ │ │ │ │ └── css/ │ │ │ │ │ │ │ └── tailwind.css │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── ui/ │ │ │ │ │ │ │ ├── alert-dialog/ │ │ │ │ │ │ │ │ ├── AlertDialog.vue │ │ │ │ │ │ │ │ ├── AlertDialogAction.vue │ │ │ │ │ │ │ │ ├── AlertDialogCancel.vue │ │ │ │ │ │ │ │ ├── AlertDialogContent.vue │ │ │ │ │ │ │ │ ├── AlertDialogDescription.vue │ │ │ │ │ │ │ │ ├── AlertDialogFooter.vue │ │ │ │ │ │ │ │ ├── AlertDialogHeader.vue │ │ │ │ │ │ │ │ ├── AlertDialogTitle.vue │ │ │ │ │ │ │ │ ├── AlertDialogTrigger.vue │ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ │ └── button/ │ │ │ │ │ │ │ ├── Button.vue │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── components.json │ │ │ │ │ │ ├── lib/ │ │ │ │ │ │ │ └── utils.ts │ │ │ │ │ │ ├── nuxt.config.ts │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── tailwind.config.ts │ │ │ │ │ │ └── tsconfig.json │ │ │ │ │ ├── vite/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── env.d.ts │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── postcss.config.js │ │ │ │ │ │ ├── src/ │ │ │ │ │ │ │ ├── App.vue │ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ │ └── HelloWorld.vue │ │ │ │ │ │ │ ├── index.css │ │ │ │ │ │ │ └── main.ts │ │ │ │ │ │ ├── tailwind.config.js │ │ │ │ │ │ ├── tsconfig.app.json │ │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ │ ├── tsconfig.node.json │ │ │ │ │ │ └── vite.config.ts │ │ │ │ │ └── vite-tw3/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── env.d.ts │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── postcss.config.js │ │ │ │ │ ├── src/ │ │ │ │ │ │ ├── App.vue │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── HelloWorld.vue │ │ │ │ │ │ ├── index.css │ │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tailwind.config.js │ │ │ │ │ ├── tsconfig.app.json │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ ├── tsconfig.node.json │ │ │ │ │ └── vite.config.ts │ │ │ │ ├── project/ │ │ │ │ │ ├── components.json │ │ │ │ │ └── package.json │ │ │ │ ├── project-bun/ │ │ │ │ │ ├── bun.lockb │ │ │ │ │ └── package.json │ │ │ │ ├── project-npm/ │ │ │ │ │ └── package.json │ │ │ │ ├── project-pnpm/ │ │ │ │ │ └── package.json │ │ │ │ ├── project-src/ │ │ │ │ │ ├── components.json │ │ │ │ │ └── package.json │ │ │ │ ├── project-yarn/ │ │ │ │ │ └── package.json │ │ │ │ ├── with-base-url/ │ │ │ │ │ └── tsconfig.json │ │ │ │ └── without-base-url/ │ │ │ │ └── tsconfig.json │ │ │ └── utils/ │ │ │ ├── __fixtures__/ │ │ │ │ └── props.ts │ │ │ ├── __snapshots__/ │ │ │ │ ├── transform-cjs-to-esm.test.ts.snap │ │ │ │ ├── transform-css-vars.test.ts.snap │ │ │ │ ├── transform-icons.test.ts.snap │ │ │ │ ├── transform-import.test.ts.snap │ │ │ │ ├── transform-sfc.test.ts.snap │ │ │ │ └── transform-tw-prefix.test.ts.snap │ │ │ ├── apply-color-mapping.test.ts │ │ │ ├── apply-prefix.test.ts │ │ │ ├── create-project.test.ts │ │ │ ├── get-config.test.ts │ │ │ ├── get-item-target-path.test.ts │ │ │ ├── get-project-info.test.ts │ │ │ ├── get-tailwind-css-file.test.ts │ │ │ ├── get-ts-config-alias-prefix.test.ts │ │ │ ├── icon-libraries.test.ts │ │ │ ├── is-typescript-project.test.ts │ │ │ ├── registry-api.test.ts │ │ │ ├── registry-config.test.ts │ │ │ ├── registry.test.ts │ │ │ ├── resolve-import.test.ts │ │ │ ├── schema/ │ │ │ │ └── __snapshots__/ │ │ │ │ └── registry-resolve-items-tree.test.ts.snap │ │ │ ├── schema.test.ts │ │ │ ├── transform-css-vars.test.ts │ │ │ ├── transform-icons.test.ts │ │ │ ├── transform-import.test.ts │ │ │ ├── transform-sfc.test.ts │ │ │ ├── transform-style.test.ts │ │ │ ├── transform-tw-prefix.test.ts │ │ │ └── updaters/ │ │ │ ├── __snapshots__/ │ │ │ │ ├── update-tailwind-config.test.ts.snap │ │ │ │ └── update-tailwind-content.test.ts.snap │ │ │ ├── update-css-vars.test.ts │ │ │ ├── update-files.test.ts │ │ │ ├── update-tailwind-config.test.ts │ │ │ └── update-tailwind-content.test.ts │ │ ├── tsconfig.json │ │ ├── tsconfig.test.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ └── module/ │ ├── .gitignore │ ├── .npmrc │ ├── README.md │ ├── package.json │ ├── playground/ │ │ ├── .npmrc │ │ ├── app.vue │ │ ├── assets/ │ │ │ └── css/ │ │ │ └── tailwind.css │ │ ├── components/ │ │ │ └── ui/ │ │ │ ├── button/ │ │ │ │ ├── Button.vue │ │ │ │ └── index.ts │ │ │ ├── carousel/ │ │ │ │ ├── Carousel.vue │ │ │ │ ├── CarouselContent.vue │ │ │ │ ├── CarouselItem.vue │ │ │ │ ├── CarouselNext.vue │ │ │ │ ├── CarouselPrevious.vue │ │ │ │ ├── index.ts │ │ │ │ ├── interface.ts │ │ │ │ └── useCarousel.ts │ │ │ └── dropdown-menu/ │ │ │ ├── DropdownMenu.vue │ │ │ ├── DropdownMenuCheckboxItem.vue │ │ │ └── index.ts │ │ ├── components.json │ │ ├── lib/ │ │ │ └── utils.ts │ │ ├── nuxt.config.ts │ │ ├── package.json │ │ ├── tailwind.config.js │ │ └── tsconfig.json │ ├── src/ │ │ └── module.ts │ ├── test/ │ │ ├── basic.test.ts │ │ ├── fixtures/ │ │ │ ├── basic/ │ │ │ │ ├── app.vue │ │ │ │ ├── nuxt.config.ts │ │ │ │ └── package.json │ │ │ └── multi-dir/ │ │ │ ├── app.vue │ │ │ ├── components/ │ │ │ │ ├── ai/ │ │ │ │ │ └── chat-panel/ │ │ │ │ │ ├── ChatPanel.vue │ │ │ │ │ └── index.ts │ │ │ │ └── ui/ │ │ │ │ └── button/ │ │ │ │ ├── Button.vue │ │ │ │ └── index.ts │ │ │ ├── nuxt.config.ts │ │ │ ├── package.json │ │ │ └── shims-vue.d.ts │ │ └── multi-dir.test.ts │ └── tsconfig.json ├── pnpm-workspace.yaml └── tsconfig.json ================================================ FILE CONTENTS ================================================ ================================================ FILE: .editorconfig ================================================ # EditorConfig is awesome: https://EditorConfig.org # top-most EditorConfig file root = true [*] indent_style = space indent_size = 2 end_of_line = lf charset = utf-8 trim_trailing_whitespace = true insert_final_newline = true ================================================ FILE: .github/FUNDING.yml ================================================ github: [zernonia] ================================================ FILE: .github/ISSUE_TEMPLATE/bug-report.yml ================================================ name: 🐞 Bug report description: Create a report to help us improve shadcn-vue. title: '[Bug]: ' labels: [bug] body: - type: markdown attributes: value: | Thanks for taking the time to fill out this bug report! This form is only for submitting bug reports. If you have a usage question or are unsure if this is really a bug, make sure to: - Read the [docs](https://reka-ui.com/) - Ask on [Discord Chat](https://chat.unovue.com/) - Ask on [GitHub Discussions](https://github.com/shadcn-vue/shadcn-vue/discussions) - type: input id: reproduction attributes: label: Reproduction description: | A [minimal reproduction](https://stackoverflow.com/help/minimal-reproducible-example) is **required**, otherwise the issue might be closed without further notice. [**Why?**](https://antfu.me/posts/why-reproductions-are-required) To get started, you can use the StackBlitz and CodeSandbox playgrounds in shadcn-vue demos: https://www.shadcn-vue.com/docs/components/accordion.html or use template presets https://vite.new https://nuxt.new placeholder: Reproduction validations: required: true - type: textarea id: bug-description attributes: label: Describe the bug description: A clear and concise description of what the bug is. If you intend to submit a PR for this issue, tell us in the description. Thanks! placeholder: Bug description validations: required: true - type: textarea id: system-info attributes: label: System Info description: Output of `npx envinfo --system --npmPackages vue,@vueuse/core,radix-vue,reka-ui,nuxt,shadcn-vue,shadcn-nuxt,unplugin-auto-import --binaries --browsers` render: bash placeholder: System, Binaries, Browsers validations: required: true - type: checkboxes id: contributes attributes: label: Contributes options: - label: I am willing to submit a PR to fix this issue - label: I am willing to submit a PR with failing tests ================================================ FILE: .github/ISSUE_TEMPLATE/config.yml ================================================ blank_issues_enabled: true contact_links: # - name: 📚 Documentation # url: https://www.reka-ui.com/ # about: Check the documentation for usage of Radix Vue. - name: 🗨️ Discord url: https://chat.unovue.com/ about: Join the unovue Discord server. ================================================ FILE: .github/ISSUE_TEMPLATE/feature-request.yml ================================================ name: 🚀 Feature request description: Suggest a feature that will improve shadcn-vue. title: '[Feature]: ' labels: [feature request] body: - type: markdown attributes: value: | Thank you for taking the time to fill out this feature request! - type: textarea id: feature-description attributes: label: Describe the feature description: A clear and concise description of what you think would be a helpful addition to shadcn-vue, including the possible use cases and alternatives you have considered. If you have a working prototype or module that implements it, please include a link. placeholder: Feature description validations: required: true - type: checkboxes id: additional-info attributes: label: Additional information description: Additional information that helps us decide how to proceed. options: - label: I intend to submit a PR for this feature. - label: I have already implemented and/or tested this feature. validations: required: false ================================================ FILE: .github/PULL_REQUEST_TEMPLATE.md ================================================ ### 🔗 Linked issue ### ❓ Type of change - [ ] 📖 Documentation (updates to the documentation, readme or JSdoc annotations) - [ ] 🐞 Bug fix (a non-breaking change that fixes an issue) - [ ] 👌 Enhancement (improving an existing functionality like performance) - [ ] ✨ New feature (a non-breaking change that adds functionality) - [ ] 🧹 Chore (updates to the build process or auxiliary tools and libraries) - [ ] ⚠️ Breaking change (fix or feature that would cause existing functionality to change) ### 📚 Description ### 📸 Screenshots (if appropriate) ### 📝 Checklist - [ ] I have linked an issue or discussion. - [ ] I have updated the documentation accordingly. ================================================ FILE: .github/actions/setup/action.yml ================================================ name: Setup description: Installs Node, Enables Corepack and caches pnpm. runs: using: composite steps: - name: Use Latest Corepack run: | echo "Before: corepack version => $(corepack --version || echo 'not installed')" npm install -g corepack@latest echo "After : corepack version => $(corepack --version)" corepack enable pnpm --version shell: bash - name: Setup node & pnpm uses: actions/setup-node@v4 with: node-version: lts/* cache: pnpm registry-url: 'https://registry.npmjs.org' ================================================ FILE: .github/workflows/pkg.pr.new-module.yaml ================================================ name: Preview Module release permissions: pull-requests: write on: pull_request: push: types: [opened, synchronize, labeled] paths: - packages/module/** path-ignore: - 'test/**' - '*.md' tags-ignore: - '*' jobs: preview: if: > github.repository == 'unovue/shadcn-vue' && (github.event_name == 'push' || (github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'trigger: module preview'))) runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Install pnpm uses: pnpm/action-setup@v4.0.0 - name: Install dependencies run: pnpm install - name: Build working-directory: ./packages/module run: pnpm build - run: pnpm dlx pkg-pr-new publish --compact --no-template --pnpm ./packages/module ================================================ FILE: .github/workflows/pkg.pr.new.yaml ================================================ name: Preview CLI release permissions: pull-requests: write on: pull_request: push: types: [opened, synchronize, labeled] paths: - packages/cli/** path-ignore: - 'test/**' - '*.md' tags-ignore: - '*' jobs: preview: if: > github.repository == 'unovue/shadcn-vue' && (github.event_name == 'push' || (github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'trigger: preview'))) runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Install pnpm uses: pnpm/action-setup@v4.0.0 - name: Install dependencies run: pnpm install - name: Build working-directory: ./packages/cli run: pnpm build - run: pnpm dlx pkg-pr-new publish --compact --no-template --pnpm ./packages/cli ================================================ FILE: .github/workflows/publish.yaml ================================================ name: Publish website on: push: branches: - dev paths: - 'apps/v4/**' pull_request: branches: - dev paths: - 'apps/v4/**' pull_request_target: types: # When a created pull request from forked repo, it will be comment 'Should deploy to add label' - opened # When a labeled '🚀request-deploy' pull request from forked repo, it will be deploy to Cloudflare Pages - labeled # Allows you to run this workflow manually from the Actions tab workflow_dispatch: permissions: # default contents: read & write (in forked repos, only read) contents: write # default deployments: read & write (in forked repos, only read) deployments: write # default pull-requests: read & write (in forked repos, only read) pull-requests: write jobs: publish: runs-on: ubuntu-latest name: Publish to Cloudflare Worker # push event in main branch # workflow_dispatch event # pull_request event from not forked repo # pull_request_target event with label "🚀request-deploy" from forked repo if: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' || (github.event_name == 'pull_request' && github.event.pull_request.head.repo.fork == false) || (github.event_name == 'pull_request_target' && github.event.action == 'labeled' && github.event.pull_request.head.repo.fork == true && contains(github.event.label.name, '🚀request-deploy')) }} steps: - name: Checkout uses: actions/checkout@v4 - name: Setup (Install Node & pnpm) uses: ./.github/actions/setup - name: Install dependencies run: pnpm i --frozen-lockfile - name: Build v4 run: pnpm build # Run a action to publish docs - name: Publish to Cloudflare Worker uses: cloudflare/wrangler-action@v3 with: apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} workingDirectory: apps/v4 - name: Remove label if: ${{ github.event_name == 'pull_request_target' && contains(github.event.label.name, '🚀request-deploy') }} uses: actions/github-script@v6 with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | github.rest.issues.removeLabel({ issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, name: ['🚀request-deploy'] }) ================================================ FILE: .github/workflows/release.yaml ================================================ # .github/workflows/release.yml name: Release (next) permissions: contents: write on: push: tags: - 'v*' jobs: release: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Setup (Install Node & pnpm) uses: ./.github/actions/setup - name: Install dependencies run: pnpm i --frozen-lockfile - run: pnpm dlx changelogithub env: GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} - name: Build CLI & Publish to npm run: pnpm --filter shadcn-vue pub:release env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - name: Build Module & Publish to npm run: pnpm --filter shadcn-nuxt pub:release env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} ================================================ FILE: .github/workflows/test.yaml ================================================ name: Test on: push: branches: - dev paths: - 'packages/**' pull_request: branches: - dev paths: - 'packages/**' jobs: test: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: Setup (Install Node & pnpm) uses: ./.github/actions/setup - name: Install dependencies run: pnpm i --frozen-lockfile - name: Test run: pnpm test ================================================ FILE: .gitignore ================================================ # Logs logs *.log npm-debug.log* yarn-debug.log* yarn-error.log* pnpm-debug.log* lerna-debug.log* # .nuxt .env node_modules .DS_Store dist dist-ssr coverage *.local /cypress/videos/ /cypress/screenshots/ # Editor directories and files .vscode/* !.vscode/extensions.json !.vscode/settings.json .idea *.suo *.ntvs* *.njsproj *.sln *.sw? test-results/ playwright-report/ vite.config.ts.timestamp* **/.vitepress/cache/* **/.vitepress/.temp **/temp.json ================================================ FILE: .vscode/extensions.json ================================================ { "recommendations": [ "Vue.volar", "dbaeumer.vscode-eslint", "bradlc.vscode-tailwindcss" ] } ================================================ FILE: .vscode/settings.json ================================================ { "vue.server.includeLanguages": [ "vue" ], "prettier.enable": false, "editor.formatOnSave": false, "editor.codeActionsOnSave": { "source.fixAll.eslint": "explicit", "source.organizeImports": "never" }, "eslint.workingDirectories": [ { "pattern": "apps/*/" }, { "pattern": "packages/*/" } ], "eslint.useFlatConfig": true, "eslint.rules.customizations": [ { "rule": "style/*", "severity": "off", "fixable": true }, { "rule": "format/*", "severity": "off", "fixable": true }, { "rule": "*-indent", "severity": "off", "fixable": true }, { "rule": "*-spacing", "severity": "off", "fixable": true }, { "rule": "*-spaces", "severity": "off", "fixable": true }, { "rule": "*-order", "severity": "off", "fixable": true }, { "rule": "*-dangle", "severity": "off", "fixable": true }, { "rule": "*-newline", "severity": "off", "fixable": true }, { "rule": "*quotes", "severity": "off", "fixable": true }, { "rule": "*semi", "severity": "off", "fixable": true } ], "eslint.validate": [ "javascript", "javascriptreact", "typescript", "typescriptreact", "vue", "html", "markdown", "json", "jsonc", "yaml", "toml", "xml", "astro", "css", "less", "scss", "pcss", "postcss" ], "tailwindCSS.classFunctions": ["cva", "cn"], "files.exclude": { "deprecated": true } } ================================================ FILE: CONTRIBUTING.md ================================================ # Contributing Thanks for your interest in contributing to shadcn-vue.com. We're happy to have you here. Please take a moment to review this document before submitting your first pull request. We also strongly recommend that you check for open issues and pull requests to see if someone else is working on something similar. If you need any help, feel free to reach out to the core team on [Discord](https://chat.unovue.com/). ## About this repository This repository is a monorepo. - We use [pnpm](https://pnpm.io) and [`workspaces`](https://pnpm.io/workspaces) for development. ## Structure This repository is structured as follows: ``` apps └── v4 ├── components ├── content └── registry └── new-york-v4 ├── example └── ui packages └── cli ``` | Path | Description | | ----------------------------| -------------------------------------------| | `apps/v4` | The Nuxt application for the website. | | `apps/v4/components` | The Vue components for the website. | | `apps/v4/content` | The content for the website. | | `apps/v4/registry` | The registry for the components. | | `packages/cli` | The `shadcn-vue` package. | ## Development ### Start by cloning the repository: ``` git clone git@github.com:unovue/shadcn-vue.git ``` ### Install dependencies ``` pnpm install ``` ### Run a workspace You can use the `pnpm --filter=[WORKSPACE]` command to start the development process for a workspace or some of the shortcut command that we have setup. #### Examples 1. To run the `shadcn-vue.com` website: ``` pnpm dev ``` 2. To run the `shadcn-vue` cli package: ``` pnpm dev:cli ``` ## Documentation The documentation for this project is located in the `v4` workspace. You can run the documentation locally by running the following command: ```bash pnpm dev ``` Documentation is written using [md](https://content.nuxt.com/). You can find the documentation files in the `apps/v4/content` directory. ## Components We use a registry system for developing components. You can find the source code for the components under `apps/v4/registry`. The components are organized by styles. ```bash apps └── v4 └── registry └── new-york-v4 ├── example └── ui ``` When adding or modifying components, please ensure that: 1. You make the changes for every style. 2. You update the documentation. 3. You run `pnpm registry:build` to update the registry. ## Commit Convention Before you create a Pull Request, please check whether your commits comply with the commit conventions used in this repository. When you create a commit we kindly ask you to follow the convention `category(scope or module): message` in your commit message while using one of the following categories: - `feat / feature`: all changes that introduce completely new code or new features - `fix`: changes that fix a bug (ideally you will additionally reference an issue if present) - `refactor`: any code related change that is not a fix nor a feature - `docs`: changing existing or creating new documentation (i.e. README, docs for usage of a lib or cli usage) - `build`: all changes regarding the build of the software, changes to dependencies or the addition of new dependencies - `test`: all changes regarding tests (adding new tests or changing existing ones) - `ci`: all changes regarding the configuration of continuous integration (i.e. github actions, ci system) - `chore`: all changes to the repository that do not fit into any of the above categories e.g. `feat(components): add new prop to the avatar component` If you are interested in the detailed specification you can visit https://www.conventionalcommits.org/ or check out the [Angular Commit Message Guidelines](https://github.com/angular/angular/blob/22b96b9/CONTRIBUTING.md#-commit-message-guidelines). ## Requests for new components If you have a request for a new component, please open a discussion on GitHub. We'll be happy to help you out. ## CLI The `shadcn-vue` package is a CLI for adding components to your project. You can find the documentation for the CLI [here](https://shadcn-vue.com/docs/cli). Any changes to the CLI should be made in the `packages/cli` directory. If you can, it would be great if you could add tests for your changes. ## Testing Tests are written using [Vitest](https://vitest.dev). You can run all the tests from the root of the repository. ```bash pnpm test ``` Please ensure that the tests are passing when submitting a pull request. If you're adding new features, please include tests. ================================================ FILE: LICENSE ================================================ MIT License Copyright (c) 2023 unovue Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: README.md ================================================ # shadcn-vue A set of beautifully designed components that you can customize, extend, and build on. Start here then make it your own. Open Source. Open Code. **Use this to build your own component library**. ![hero](apps/v4/public/opengraph-image.png) ## Documentation Visit http://shadcn-vue.com/docs to view the documentation. ## Contributing Please read the [contributing guide](/CONTRIBUTING.md). ## License Licensed under the [MIT license](https://github.com/unovue/shadcn-vue/blob/dev/LICENSE). ================================================ FILE: apps/v4/.gitignore ================================================ # Nuxt dev/build outputs .output .data .nuxt .nitro .cache dist # Node dependencies node_modules # Logs logs *.log # Misc .DS_Store .fleet .idea # Local env files .env .env.* !.env.example ================================================ FILE: apps/v4/.wrangler/deploy/config.json ================================================ { "configPath": "../../.output/server/wrangler.json" } ================================================ FILE: apps/v4/README.md ================================================ # Nuxt Minimal Starter Look at the [Nuxt documentation](https://nuxt.com/docs/getting-started/introduction) to learn more. ## Setup Make sure to install dependencies: ```bash # npm npm install # pnpm pnpm install # yarn yarn install # bun bun install ``` ## Development Server Start the development server on `http://localhost:3000`: ```bash # npm npm run dev # pnpm pnpm dev # yarn yarn dev # bun bun run dev ``` ## Production Build the application for production: ```bash # npm npm run build # pnpm pnpm build # yarn yarn build # bun bun run build ``` Locally preview production build: ```bash # npm npm run preview # pnpm pnpm preview # yarn yarn preview # bun bun run preview ``` Check out the [deployment documentation](https://nuxt.com/docs/getting-started/deployment) for more information. ================================================ FILE: apps/v4/__registry__/index.ts ================================================ // @ts-nocheck // This file is autogenerated by scripts/build-registry.ts // Do not edit this file directly. export const Index: Record = { "utils": { name: "utils", description: "", type: "registry:lib", registryDependencies: undefined, files: [{ path: "registry/new-york-v4/lib/utils.ts", type: "registry:lib", target: "" }], component: () => import("@/registry/new-york-v4/lib/utils.ts").then((m) => m.default), source: "", category: "", subcategory: "" }, "accordion": { name: "accordion", description: "", type: "registry:ui", registryDependencies: [], files: [{ path: "registry/new-york-v4/ui/accordion/Accordion.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/accordion/AccordionContent.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/accordion/AccordionItem.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/accordion/AccordionTrigger.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/accordion/index.ts", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/accordion/Accordion.vue").then((m) => m.default), source: "", category: "", subcategory: "" }, "alert": { name: "alert", description: "", type: "registry:ui", registryDependencies: [], files: [{ path: "registry/new-york-v4/ui/alert/Alert.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/alert/AlertDescription.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/alert/AlertTitle.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/alert/index.ts", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/alert/Alert.vue").then((m) => m.default), source: "", category: "", subcategory: "" }, "alert-dialog": { name: "alert-dialog", description: "", type: "registry:ui", registryDependencies: ["button"], files: [{ path: "registry/new-york-v4/ui/alert-dialog/AlertDialog.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/alert-dialog/AlertDialogAction.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/alert-dialog/AlertDialogCancel.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/alert-dialog/AlertDialogContent.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/alert-dialog/AlertDialogDescription.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/alert-dialog/AlertDialogFooter.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/alert-dialog/AlertDialogHeader.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/alert-dialog/AlertDialogTitle.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/alert-dialog/AlertDialogTrigger.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/alert-dialog/index.ts", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/alert-dialog/AlertDialog.vue").then((m) => m.default), source: "", category: "", subcategory: "" }, "aspect-ratio": { name: "aspect-ratio", description: "", type: "registry:ui", registryDependencies: [], files: [{ path: "registry/new-york-v4/ui/aspect-ratio/AspectRatio.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/aspect-ratio/index.ts", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/aspect-ratio/AspectRatio.vue").then((m) => m.default), source: "", category: "", subcategory: "" }, "avatar": { name: "avatar", description: "", type: "registry:ui", registryDependencies: [], files: [{ path: "registry/new-york-v4/ui/avatar/Avatar.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/avatar/AvatarFallback.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/avatar/AvatarImage.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/avatar/index.ts", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/avatar/Avatar.vue").then((m) => m.default), source: "", category: "", subcategory: "" }, "badge": { name: "badge", description: "", type: "registry:ui", registryDependencies: [], files: [{ path: "registry/new-york-v4/ui/badge/Badge.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/badge/index.ts", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/badge/Badge.vue").then((m) => m.default), source: "", category: "", subcategory: "" }, "breadcrumb": { name: "breadcrumb", description: "", type: "registry:ui", registryDependencies: [], files: [{ path: "registry/new-york-v4/ui/breadcrumb/Breadcrumb.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/breadcrumb/BreadcrumbEllipsis.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/breadcrumb/BreadcrumbItem.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/breadcrumb/BreadcrumbLink.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/breadcrumb/BreadcrumbList.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/breadcrumb/BreadcrumbPage.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/breadcrumb/BreadcrumbSeparator.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/breadcrumb/index.ts", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/breadcrumb/Breadcrumb.vue").then((m) => m.default), source: "", category: "", subcategory: "" }, "button": { name: "button", description: "", type: "registry:ui", registryDependencies: [], files: [{ path: "registry/new-york-v4/ui/button/Button.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/button/index.ts", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/button/Button.vue").then((m) => m.default), source: "", category: "", subcategory: "" }, "button-group": { name: "button-group", description: "", type: "registry:ui", registryDependencies: ["separator"], files: [{ path: "registry/new-york-v4/ui/button-group/ButtonGroup.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/button-group/ButtonGroupSeparator.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/button-group/ButtonGroupText.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/button-group/index.ts", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/button-group/ButtonGroup.vue").then((m) => m.default), source: "", category: "", subcategory: "" }, "calendar": { name: "calendar", description: "", type: "registry:ui", registryDependencies: ["button"], files: [{ path: "registry/new-york-v4/ui/calendar/Calendar.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/calendar/CalendarCell.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/calendar/CalendarCellTrigger.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/calendar/CalendarGrid.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/calendar/CalendarGridBody.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/calendar/CalendarGridHead.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/calendar/CalendarGridRow.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/calendar/CalendarHeadCell.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/calendar/CalendarHeader.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/calendar/CalendarHeading.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/calendar/CalendarNextButton.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/calendar/CalendarPrevButton.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/calendar/index.ts", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/calendar/Calendar.vue").then((m) => m.default), source: "", category: "", subcategory: "" }, "card": { name: "card", description: "", type: "registry:ui", registryDependencies: [], files: [{ path: "registry/new-york-v4/ui/card/Card.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/card/CardAction.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/card/CardContent.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/card/CardDescription.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/card/CardFooter.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/card/CardHeader.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/card/CardTitle.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/card/index.ts", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/card/Card.vue").then((m) => m.default), source: "", category: "", subcategory: "" }, "carousel": { name: "carousel", description: "", type: "registry:ui", registryDependencies: ["button"], files: [{ path: "registry/new-york-v4/ui/carousel/Carousel.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/carousel/CarouselContent.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/carousel/CarouselItem.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/carousel/CarouselNext.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/carousel/CarouselPrevious.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/carousel/index.ts", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/carousel/interface.ts", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/carousel/useCarousel.ts", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/carousel/Carousel.vue").then((m) => m.default), source: "", category: "", subcategory: "" }, "checkbox": { name: "checkbox", description: "", type: "registry:ui", registryDependencies: [], files: [{ path: "registry/new-york-v4/ui/checkbox/Checkbox.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/checkbox/index.ts", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/checkbox/Checkbox.vue").then((m) => m.default), source: "", category: "", subcategory: "" }, "collapsible": { name: "collapsible", description: "", type: "registry:ui", registryDependencies: [], files: [{ path: "registry/new-york-v4/ui/collapsible/Collapsible.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/collapsible/CollapsibleContent.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/collapsible/CollapsibleTrigger.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/collapsible/index.ts", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/collapsible/Collapsible.vue").then((m) => m.default), source: "", category: "", subcategory: "" }, "combobox": { name: "combobox", description: "", type: "registry:ui", registryDependencies: [], files: [{ path: "registry/new-york-v4/ui/combobox/Combobox.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/combobox/ComboboxAnchor.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/combobox/ComboboxEmpty.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/combobox/ComboboxGroup.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/combobox/ComboboxInput.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/combobox/ComboboxItem.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/combobox/ComboboxItemIndicator.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/combobox/ComboboxList.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/combobox/ComboboxSeparator.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/combobox/ComboboxTrigger.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/combobox/ComboboxViewport.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/combobox/index.ts", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/combobox/Combobox.vue").then((m) => m.default), source: "", category: "", subcategory: "" }, "command": { name: "command", description: "", type: "registry:ui", registryDependencies: ["dialog"], files: [{ path: "registry/new-york-v4/ui/command/Command.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/command/CommandDialog.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/command/CommandEmpty.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/command/CommandGroup.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/command/CommandInput.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/command/CommandItem.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/command/CommandList.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/command/CommandSeparator.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/command/CommandShortcut.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/command/index.ts", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/command/Command.vue").then((m) => m.default), source: "", category: "", subcategory: "" }, "context-menu": { name: "context-menu", description: "", type: "registry:ui", registryDependencies: [], files: [{ path: "registry/new-york-v4/ui/context-menu/ContextMenu.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/context-menu/ContextMenuCheckboxItem.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/context-menu/ContextMenuContent.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/context-menu/ContextMenuGroup.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/context-menu/ContextMenuItem.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/context-menu/ContextMenuLabel.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/context-menu/ContextMenuPortal.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/context-menu/ContextMenuRadioGroup.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/context-menu/ContextMenuRadioItem.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/context-menu/ContextMenuSeparator.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/context-menu/ContextMenuShortcut.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/context-menu/ContextMenuSub.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/context-menu/ContextMenuSubContent.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/context-menu/ContextMenuSubTrigger.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/context-menu/ContextMenuTrigger.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/context-menu/index.ts", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/context-menu/ContextMenu.vue").then((m) => m.default), source: "", category: "", subcategory: "" }, "dialog": { name: "dialog", description: "", type: "registry:ui", registryDependencies: [], files: [{ path: "registry/new-york-v4/ui/dialog/Dialog.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/dialog/DialogClose.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/dialog/DialogContent.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/dialog/DialogDescription.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/dialog/DialogFooter.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/dialog/DialogHeader.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/dialog/DialogOverlay.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/dialog/DialogScrollContent.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/dialog/DialogTitle.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/dialog/DialogTrigger.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/dialog/index.ts", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/dialog/Dialog.vue").then((m) => m.default), source: "", category: "", subcategory: "" }, "drawer": { name: "drawer", description: "", type: "registry:ui", registryDependencies: [], files: [{ path: "registry/new-york-v4/ui/drawer/Drawer.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/drawer/DrawerClose.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/drawer/DrawerContent.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/drawer/DrawerDescription.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/drawer/DrawerFooter.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/drawer/DrawerHeader.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/drawer/DrawerOverlay.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/drawer/DrawerTitle.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/drawer/DrawerTrigger.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/drawer/index.ts", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/drawer/Drawer.vue").then((m) => m.default), source: "", category: "", subcategory: "" }, "dropdown-menu": { name: "dropdown-menu", description: "", type: "registry:ui", registryDependencies: [], files: [{ path: "registry/new-york-v4/ui/dropdown-menu/DropdownMenu.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/dropdown-menu/DropdownMenuCheckboxItem.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/dropdown-menu/DropdownMenuContent.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/dropdown-menu/DropdownMenuGroup.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/dropdown-menu/DropdownMenuItem.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/dropdown-menu/DropdownMenuLabel.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/dropdown-menu/DropdownMenuRadioGroup.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/dropdown-menu/DropdownMenuRadioItem.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/dropdown-menu/DropdownMenuSeparator.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/dropdown-menu/DropdownMenuShortcut.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/dropdown-menu/DropdownMenuSub.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/dropdown-menu/DropdownMenuSubContent.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/dropdown-menu/DropdownMenuSubTrigger.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/dropdown-menu/DropdownMenuTrigger.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/dropdown-menu/index.ts", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/dropdown-menu/DropdownMenu.vue").then((m) => m.default), source: "", category: "", subcategory: "" }, "empty": { name: "empty", description: "", type: "registry:ui", registryDependencies: [], files: [{ path: "registry/new-york-v4/ui/empty/Empty.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/empty/EmptyContent.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/empty/EmptyDescription.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/empty/EmptyHeader.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/empty/EmptyMedia.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/empty/EmptyTitle.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/empty/index.ts", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/empty/Empty.vue").then((m) => m.default), source: "", category: "", subcategory: "" }, "field": { name: "field", description: "", type: "registry:ui", registryDependencies: ["label","separator"], files: [{ path: "registry/new-york-v4/ui/field/Field.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/field/FieldContent.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/field/FieldDescription.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/field/FieldError.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/field/FieldGroup.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/field/FieldLabel.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/field/FieldLegend.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/field/FieldSeparator.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/field/FieldSet.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/field/FieldTitle.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/field/index.ts", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/field/Field.vue").then((m) => m.default), source: "", category: "", subcategory: "" }, "form": { name: "form", description: "", type: "registry:ui", registryDependencies: ["label"], files: [{ path: "registry/new-york-v4/ui/form/FormControl.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/form/FormDescription.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/form/FormItem.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/form/FormLabel.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/form/FormMessage.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/form/index.ts", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/form/injectionKeys.ts", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/form/useFormField.ts", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/form/FormControl.vue").then((m) => m.default), source: "", category: "", subcategory: "" }, "hover-card": { name: "hover-card", description: "", type: "registry:ui", registryDependencies: [], files: [{ path: "registry/new-york-v4/ui/hover-card/HoverCard.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/hover-card/HoverCardContent.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/hover-card/HoverCardTrigger.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/hover-card/index.ts", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/hover-card/HoverCard.vue").then((m) => m.default), source: "", category: "", subcategory: "" }, "input": { name: "input", description: "", type: "registry:ui", registryDependencies: [], files: [{ path: "registry/new-york-v4/ui/input/index.ts", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/input/Input.vue", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/input/index.ts").then((m) => m.default), source: "", category: "", subcategory: "" }, "input-group": { name: "input-group", description: "", type: "registry:ui", registryDependencies: ["button","input","textarea"], files: [{ path: "registry/new-york-v4/ui/input-group/index.ts", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/input-group/InputGroup.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/input-group/InputGroupAddon.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/input-group/InputGroupButton.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/input-group/InputGroupInput.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/input-group/InputGroupText.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/input-group/InputGroupTextarea.vue", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/input-group/index.ts").then((m) => m.default), source: "", category: "", subcategory: "" }, "item": { name: "item", description: "", type: "registry:ui", registryDependencies: ["separator"], files: [{ path: "registry/new-york-v4/ui/item/index.ts", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/item/Item.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/item/ItemActions.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/item/ItemContent.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/item/ItemDescription.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/item/ItemFooter.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/item/ItemGroup.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/item/ItemHeader.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/item/ItemMedia.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/item/ItemSeparator.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/item/ItemTitle.vue", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/item/index.ts").then((m) => m.default), source: "", category: "", subcategory: "" }, "kbd": { name: "kbd", description: "", type: "registry:ui", registryDependencies: [], files: [{ path: "registry/new-york-v4/ui/kbd/index.ts", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/kbd/Kbd.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/kbd/KbdGroup.vue", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/kbd/index.ts").then((m) => m.default), source: "", category: "", subcategory: "" }, "label": { name: "label", description: "", type: "registry:ui", registryDependencies: [], files: [{ path: "registry/new-york-v4/ui/label/index.ts", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/label/Label.vue", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/label/index.ts").then((m) => m.default), source: "", category: "", subcategory: "" }, "menubar": { name: "menubar", description: "", type: "registry:ui", registryDependencies: [], files: [{ path: "registry/new-york-v4/ui/menubar/index.ts", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/menubar/Menubar.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/menubar/MenubarCheckboxItem.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/menubar/MenubarContent.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/menubar/MenubarGroup.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/menubar/MenubarItem.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/menubar/MenubarLabel.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/menubar/MenubarMenu.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/menubar/MenubarRadioGroup.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/menubar/MenubarRadioItem.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/menubar/MenubarSeparator.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/menubar/MenubarShortcut.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/menubar/MenubarSub.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/menubar/MenubarSubContent.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/menubar/MenubarSubTrigger.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/menubar/MenubarTrigger.vue", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/menubar/index.ts").then((m) => m.default), source: "", category: "", subcategory: "" }, "navigation-menu": { name: "navigation-menu", description: "", type: "registry:ui", registryDependencies: [], files: [{ path: "registry/new-york-v4/ui/navigation-menu/index.ts", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/navigation-menu/NavigationMenu.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/navigation-menu/NavigationMenuContent.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/navigation-menu/NavigationMenuIndicator.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/navigation-menu/NavigationMenuItem.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/navigation-menu/NavigationMenuLink.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/navigation-menu/NavigationMenuList.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/navigation-menu/NavigationMenuTrigger.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/navigation-menu/NavigationMenuViewport.vue", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/navigation-menu/index.ts").then((m) => m.default), source: "", category: "", subcategory: "" }, "number-field": { name: "number-field", description: "", type: "registry:ui", registryDependencies: [], files: [{ path: "registry/new-york-v4/ui/number-field/index.ts", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/number-field/NumberField.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/number-field/NumberFieldContent.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/number-field/NumberFieldDecrement.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/number-field/NumberFieldIncrement.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/number-field/NumberFieldInput.vue", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/number-field/index.ts").then((m) => m.default), source: "", category: "", subcategory: "" }, "pagination": { name: "pagination", description: "", type: "registry:ui", registryDependencies: ["button"], files: [{ path: "registry/new-york-v4/ui/pagination/index.ts", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/pagination/Pagination.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/pagination/PaginationContent.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/pagination/PaginationEllipsis.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/pagination/PaginationFirst.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/pagination/PaginationItem.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/pagination/PaginationLast.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/pagination/PaginationNext.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/pagination/PaginationPrevious.vue", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/pagination/index.ts").then((m) => m.default), source: "", category: "", subcategory: "" }, "pin-input": { name: "pin-input", description: "", type: "registry:ui", registryDependencies: [], files: [{ path: "registry/new-york-v4/ui/pin-input/index.ts", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/pin-input/PinInput.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/pin-input/PinInputGroup.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/pin-input/PinInputSeparator.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/pin-input/PinInputSlot.vue", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/pin-input/index.ts").then((m) => m.default), source: "", category: "", subcategory: "" }, "popover": { name: "popover", description: "", type: "registry:ui", registryDependencies: [], files: [{ path: "registry/new-york-v4/ui/popover/index.ts", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/popover/Popover.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/popover/PopoverAnchor.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/popover/PopoverContent.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/popover/PopoverTrigger.vue", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/popover/index.ts").then((m) => m.default), source: "", category: "", subcategory: "" }, "progress": { name: "progress", description: "", type: "registry:ui", registryDependencies: [], files: [{ path: "registry/new-york-v4/ui/progress/index.ts", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/progress/Progress.vue", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/progress/index.ts").then((m) => m.default), source: "", category: "", subcategory: "" }, "radio-group": { name: "radio-group", description: "", type: "registry:ui", registryDependencies: [], files: [{ path: "registry/new-york-v4/ui/radio-group/index.ts", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/radio-group/RadioGroup.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/radio-group/RadioGroupItem.vue", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/radio-group/index.ts").then((m) => m.default), source: "", category: "", subcategory: "" }, "range-calendar": { name: "range-calendar", description: "", type: "registry:ui", registryDependencies: ["button"], files: [{ path: "registry/new-york-v4/ui/range-calendar/index.ts", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/range-calendar/RangeCalendar.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/range-calendar/RangeCalendarCell.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/range-calendar/RangeCalendarCellTrigger.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/range-calendar/RangeCalendarGrid.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/range-calendar/RangeCalendarGridBody.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/range-calendar/RangeCalendarGridHead.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/range-calendar/RangeCalendarGridRow.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/range-calendar/RangeCalendarHeadCell.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/range-calendar/RangeCalendarHeader.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/range-calendar/RangeCalendarHeading.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/range-calendar/RangeCalendarNextButton.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/range-calendar/RangeCalendarPrevButton.vue", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/range-calendar/index.ts").then((m) => m.default), source: "", category: "", subcategory: "" }, "resizable": { name: "resizable", description: "", type: "registry:ui", registryDependencies: [], files: [{ path: "registry/new-york-v4/ui/resizable/index.ts", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/resizable/ResizableHandle.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/resizable/ResizablePanel.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/resizable/ResizablePanelGroup.vue", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/resizable/index.ts").then((m) => m.default), source: "", category: "", subcategory: "" }, "scroll-area": { name: "scroll-area", description: "", type: "registry:ui", registryDependencies: [], files: [{ path: "registry/new-york-v4/ui/scroll-area/index.ts", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/scroll-area/ScrollArea.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/scroll-area/ScrollBar.vue", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/scroll-area/index.ts").then((m) => m.default), source: "", category: "", subcategory: "" }, "select": { name: "select", description: "", type: "registry:ui", registryDependencies: [], files: [{ path: "registry/new-york-v4/ui/select/index.ts", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/select/Select.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/select/SelectContent.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/select/SelectGroup.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/select/SelectItem.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/select/SelectItemText.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/select/SelectLabel.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/select/SelectScrollDownButton.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/select/SelectScrollUpButton.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/select/SelectSeparator.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/select/SelectTrigger.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/select/SelectValue.vue", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/select/index.ts").then((m) => m.default), source: "", category: "", subcategory: "" }, "separator": { name: "separator", description: "", type: "registry:ui", registryDependencies: [], files: [{ path: "registry/new-york-v4/ui/separator/index.ts", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/separator/Separator.vue", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/separator/index.ts").then((m) => m.default), source: "", category: "", subcategory: "" }, "sheet": { name: "sheet", description: "", type: "registry:ui", registryDependencies: [], files: [{ path: "registry/new-york-v4/ui/sheet/index.ts", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/sheet/Sheet.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/sheet/SheetClose.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/sheet/SheetContent.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/sheet/SheetDescription.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/sheet/SheetFooter.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/sheet/SheetHeader.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/sheet/SheetOverlay.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/sheet/SheetTitle.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/sheet/SheetTrigger.vue", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/sheet/index.ts").then((m) => m.default), source: "", category: "", subcategory: "" }, "sidebar": { name: "sidebar", description: "", type: "registry:ui", registryDependencies: ["sheet","input","tooltip","skeleton","separator","button"], files: [{ path: "registry/new-york-v4/ui/sidebar/index.ts", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/sidebar/Sidebar.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/sidebar/SidebarContent.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/sidebar/SidebarFooter.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/sidebar/SidebarGroup.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/sidebar/SidebarGroupAction.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/sidebar/SidebarGroupContent.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/sidebar/SidebarGroupLabel.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/sidebar/SidebarHeader.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/sidebar/SidebarInput.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/sidebar/SidebarInset.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/sidebar/SidebarMenu.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/sidebar/SidebarMenuAction.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/sidebar/SidebarMenuBadge.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/sidebar/SidebarMenuButton.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/sidebar/SidebarMenuButtonChild.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/sidebar/SidebarMenuItem.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/sidebar/SidebarMenuSkeleton.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/sidebar/SidebarMenuSub.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/sidebar/SidebarMenuSubButton.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/sidebar/SidebarMenuSubItem.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/sidebar/SidebarProvider.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/sidebar/SidebarRail.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/sidebar/SidebarSeparator.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/sidebar/SidebarTrigger.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/sidebar/utils.ts", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/sidebar/index.ts").then((m) => m.default), source: "", category: "", subcategory: "" }, "skeleton": { name: "skeleton", description: "", type: "registry:ui", registryDependencies: [], files: [{ path: "registry/new-york-v4/ui/skeleton/index.ts", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/skeleton/Skeleton.vue", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/skeleton/index.ts").then((m) => m.default), source: "", category: "", subcategory: "" }, "slider": { name: "slider", description: "", type: "registry:ui", registryDependencies: [], files: [{ path: "registry/new-york-v4/ui/slider/index.ts", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/slider/Slider.vue", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/slider/index.ts").then((m) => m.default), source: "", category: "", subcategory: "" }, "sonner": { name: "sonner", description: "", type: "registry:ui", registryDependencies: [], files: [{ path: "registry/new-york-v4/ui/sonner/index.ts", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/sonner/Sonner.vue", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/sonner/index.ts").then((m) => m.default), source: "", category: "", subcategory: "" }, "spinner": { name: "spinner", description: "", type: "registry:ui", registryDependencies: [], files: [{ path: "registry/new-york-v4/ui/spinner/index.ts", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/spinner/Spinner.vue", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/spinner/index.ts").then((m) => m.default), source: "", category: "", subcategory: "" }, "stepper": { name: "stepper", description: "", type: "registry:ui", registryDependencies: [], files: [{ path: "registry/new-york-v4/ui/stepper/index.ts", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/stepper/Stepper.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/stepper/StepperDescription.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/stepper/StepperIndicator.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/stepper/StepperItem.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/stepper/StepperSeparator.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/stepper/StepperTitle.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/stepper/StepperTrigger.vue", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/stepper/index.ts").then((m) => m.default), source: "", category: "", subcategory: "" }, "switch": { name: "switch", description: "", type: "registry:ui", registryDependencies: [], files: [{ path: "registry/new-york-v4/ui/switch/index.ts", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/switch/Switch.vue", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/switch/index.ts").then((m) => m.default), source: "", category: "", subcategory: "" }, "table": { name: "table", description: "", type: "registry:ui", registryDependencies: [], files: [{ path: "registry/new-york-v4/ui/table/index.ts", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/table/Table.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/table/TableBody.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/table/TableCaption.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/table/TableCell.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/table/TableEmpty.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/table/TableFooter.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/table/TableHead.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/table/TableHeader.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/table/TableRow.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/table/utils.ts", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/table/index.ts").then((m) => m.default), source: "", category: "", subcategory: "" }, "tabs": { name: "tabs", description: "", type: "registry:ui", registryDependencies: [], files: [{ path: "registry/new-york-v4/ui/tabs/index.ts", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/tabs/Tabs.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/tabs/TabsContent.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/tabs/TabsList.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/tabs/TabsTrigger.vue", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/tabs/index.ts").then((m) => m.default), source: "", category: "", subcategory: "" }, "tags-input": { name: "tags-input", description: "", type: "registry:ui", registryDependencies: [], files: [{ path: "registry/new-york-v4/ui/tags-input/index.ts", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/tags-input/TagsInput.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/tags-input/TagsInputInput.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/tags-input/TagsInputItem.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/tags-input/TagsInputItemDelete.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/tags-input/TagsInputItemText.vue", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/tags-input/index.ts").then((m) => m.default), source: "", category: "", subcategory: "" }, "textarea": { name: "textarea", description: "", type: "registry:ui", registryDependencies: [], files: [{ path: "registry/new-york-v4/ui/textarea/index.ts", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/textarea/Textarea.vue", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/textarea/index.ts").then((m) => m.default), source: "", category: "", subcategory: "" }, "toggle": { name: "toggle", description: "", type: "registry:ui", registryDependencies: [], files: [{ path: "registry/new-york-v4/ui/toggle/index.ts", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/toggle/Toggle.vue", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/toggle/index.ts").then((m) => m.default), source: "", category: "", subcategory: "" }, "toggle-group": { name: "toggle-group", description: "", type: "registry:ui", registryDependencies: ["toggle"], files: [{ path: "registry/new-york-v4/ui/toggle-group/index.ts", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/toggle-group/ToggleGroup.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/toggle-group/ToggleGroupItem.vue", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/toggle-group/index.ts").then((m) => m.default), source: "", category: "", subcategory: "" }, "tooltip": { name: "tooltip", description: "", type: "registry:ui", registryDependencies: [], files: [{ path: "registry/new-york-v4/ui/tooltip/index.ts", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/tooltip/Tooltip.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/tooltip/TooltipContent.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/tooltip/TooltipProvider.vue", type: "registry:ui", target: "" },{ path: "registry/new-york-v4/ui/tooltip/TooltipTrigger.vue", type: "registry:ui", target: "" }], component: () => import("@/registry/new-york-v4/ui/tooltip/index.ts").then((m) => m.default), source: "", category: "", subcategory: "" }, "Login01": { name: "Login01", description: "", type: "registry:block", registryDependencies: ["button","card","input","label"], files: [{ path: "registry/new-york-v4/blocks/Login01/page.vue", type: "registry:page", target: "pages/dashboard/index.vue" },{ path: "registry/new-york-v4/blocks/login-01/components/LoginForm.vue", type: "registry:component", target: "" }], component: () => import("@/registry/new-york-v4/blocks/Login01/page.vue").then((m) => m.default), source: "", category: "login", subcategory: "" }, "Login02": { name: "Login02", description: "", type: "registry:block", registryDependencies: ["button","input","label"], files: [{ path: "registry/new-york-v4/blocks/Login02/page.vue", type: "registry:page", target: "pages/dashboard/index.vue" },{ path: "registry/new-york-v4/blocks/login-02/components/LoginForm.vue", type: "registry:component", target: "" }], component: () => import("@/registry/new-york-v4/blocks/Login02/page.vue").then((m) => m.default), source: "", category: "login", subcategory: "" }, "Login03": { name: "Login03", description: "", type: "registry:block", registryDependencies: ["button","card","input","label"], files: [{ path: "registry/new-york-v4/blocks/Login03/page.vue", type: "registry:page", target: "pages/dashboard/index.vue" },{ path: "registry/new-york-v4/blocks/login-03/components/LoginForm.vue", type: "registry:component", target: "" }], component: () => import("@/registry/new-york-v4/blocks/Login03/page.vue").then((m) => m.default), source: "", category: "login", subcategory: "" }, "Login04": { name: "Login04", description: "", type: "registry:block", registryDependencies: ["button","card","input","label"], files: [{ path: "registry/new-york-v4/blocks/Login04/page.vue", type: "registry:page", target: "pages/dashboard/index.vue" },{ path: "registry/new-york-v4/blocks/login-04/components/LoginForm.vue", type: "registry:component", target: "" }], component: () => import("@/registry/new-york-v4/blocks/Login04/page.vue").then((m) => m.default), source: "", category: "login", subcategory: "" }, "Login05": { name: "Login05", description: "", type: "registry:block", registryDependencies: ["button","input","label"], files: [{ path: "registry/new-york-v4/blocks/Login05/page.vue", type: "registry:page", target: "pages/dashboard/index.vue" },{ path: "registry/new-york-v4/blocks/login-05/components/LoginForm.vue", type: "registry:component", target: "" }], component: () => import("@/registry/new-york-v4/blocks/Login05/page.vue").then((m) => m.default), source: "", category: "login", subcategory: "" }, "Products01": { name: "Products01", description: "", type: "registry:block", registryDependencies: ["badge","button","checkbox","dropdown-menu","pagination","select","table","tabs"], files: [{ path: "registry/new-york-v4/blocks/Products01/page.vue", type: "registry:page", target: "pages/dashboard/index.vue" },{ path: "registry/new-york-v4/blocks/Products01/components/ProductsTable.vue", type: "registry:component", target: "" }], component: () => import("@/registry/new-york-v4/blocks/Products01/page.vue").then((m) => m.default), source: "", category: "", subcategory: "" }, "Sidebar01": { name: "Sidebar01", description: "", type: "registry:block", registryDependencies: ["breadcrumb","separator","sidebar","label","dropdown-menu"], files: [{ path: "registry/new-york-v4/blocks/Sidebar01/page.vue", type: "registry:page", target: "pages/dashboard/index.vue" },{ path: "registry/new-york-v4/blocks/sidebar-01/components/AppSidebar.vue", type: "registry:component", target: "" },{ path: "registry/new-york-v4/blocks/sidebar-01/components/SearchForm.vue", type: "registry:component", target: "" },{ path: "registry/new-york-v4/blocks/sidebar-01/components/VersionSwitcher.vue", type: "registry:component", target: "" }], component: () => import("@/registry/new-york-v4/blocks/Sidebar01/page.vue").then((m) => m.default), source: "", category: "sidebar", subcategory: "" }, "Sidebar02": { name: "Sidebar02", description: "", type: "registry:block", registryDependencies: ["breadcrumb","separator","sidebar","collapsible","label","dropdown-menu"], files: [{ path: "registry/new-york-v4/blocks/Sidebar02/page.vue", type: "registry:page", target: "pages/dashboard/index.vue" },{ path: "registry/new-york-v4/blocks/sidebar-02/components/AppSidebar.vue", type: "registry:component", target: "" },{ path: "registry/new-york-v4/blocks/sidebar-02/components/SearchForm.vue", type: "registry:component", target: "" },{ path: "registry/new-york-v4/blocks/sidebar-02/components/VersionSwitcher.vue", type: "registry:component", target: "" }], component: () => import("@/registry/new-york-v4/blocks/Sidebar02/page.vue").then((m) => m.default), source: "", category: "sidebar", subcategory: "" }, "Sidebar03": { name: "Sidebar03", description: "", type: "registry:block", registryDependencies: ["breadcrumb","separator","sidebar"], files: [{ path: "registry/new-york-v4/blocks/Sidebar03/page.vue", type: "registry:page", target: "pages/dashboard/index.vue" },{ path: "registry/new-york-v4/blocks/sidebar-03/components/AppSidebar.vue", type: "registry:component", target: "" }], component: () => import("@/registry/new-york-v4/blocks/Sidebar03/page.vue").then((m) => m.default), source: "", category: "sidebar", subcategory: "" }, "Sidebar04": { name: "Sidebar04", description: "", type: "registry:block", registryDependencies: ["breadcrumb","separator","sidebar"], files: [{ path: "registry/new-york-v4/blocks/Sidebar04/page.vue", type: "registry:page", target: "pages/dashboard/index.vue" },{ path: "registry/new-york-v4/blocks/sidebar-04/components/AppSidebar.vue", type: "registry:component", target: "" }], component: () => import("@/registry/new-york-v4/blocks/Sidebar04/page.vue").then((m) => m.default), source: "", category: "sidebar", subcategory: "" }, "Sidebar05": { name: "Sidebar05", description: "", type: "registry:block", registryDependencies: ["breadcrumb","separator","sidebar","collapsible","label"], files: [{ path: "registry/new-york-v4/blocks/Sidebar05/page.vue", type: "registry:page", target: "pages/dashboard/index.vue" },{ path: "registry/new-york-v4/blocks/sidebar-05/components/AppSidebar.vue", type: "registry:component", target: "" },{ path: "registry/new-york-v4/blocks/sidebar-05/components/SearchForm.vue", type: "registry:component", target: "" }], component: () => import("@/registry/new-york-v4/blocks/Sidebar05/page.vue").then((m) => m.default), source: "", category: "sidebar", subcategory: "" }, "Sidebar06": { name: "Sidebar06", description: "", type: "registry:block", registryDependencies: ["breadcrumb","separator","sidebar","dropdown-menu","button","card"], files: [{ path: "registry/new-york-v4/blocks/Sidebar06/page.vue", type: "registry:page", target: "pages/dashboard/index.vue" },{ path: "registry/new-york-v4/blocks/sidebar-06/components/AppSidebar.vue", type: "registry:component", target: "" },{ path: "registry/new-york-v4/blocks/sidebar-06/components/NavMain.vue", type: "registry:component", target: "" },{ path: "registry/new-york-v4/blocks/sidebar-06/components/SidebarOptInForm.vue", type: "registry:component", target: "" }], component: () => import("@/registry/new-york-v4/blocks/Sidebar06/page.vue").then((m) => m.default), source: "", category: "sidebar", subcategory: "" }, "Sidebar07": { name: "Sidebar07", description: "", type: "registry:block", registryDependencies: ["breadcrumb","separator","sidebar","collapsible","dropdown-menu","avatar"], files: [{ path: "registry/new-york-v4/blocks/Sidebar07/page.vue", type: "registry:page", target: "pages/dashboard/index.vue" },{ path: "registry/new-york-v4/blocks/sidebar-07/components/AppSidebar.vue", type: "registry:component", target: "" },{ path: "registry/new-york-v4/blocks/sidebar-07/components/NavMain.vue", type: "registry:component", target: "" },{ path: "registry/new-york-v4/blocks/sidebar-07/components/NavProjects.vue", type: "registry:component", target: "" },{ path: "registry/new-york-v4/blocks/sidebar-07/components/NavUser.vue", type: "registry:component", target: "" },{ path: "registry/new-york-v4/blocks/sidebar-07/components/TeamSwitcher.vue", type: "registry:component", target: "" }], component: () => import("@/registry/new-york-v4/blocks/Sidebar07/page.vue").then((m) => m.default), source: "", category: "sidebar", subcategory: "" }, "Sidebar08": { name: "Sidebar08", description: "", type: "registry:block", registryDependencies: ["breadcrumb","separator","sidebar","collapsible","dropdown-menu","avatar"], files: [{ path: "registry/new-york-v4/blocks/Sidebar08/page.vue", type: "registry:page", target: "pages/dashboard/index.vue" },{ path: "registry/new-york-v4/blocks/sidebar-08/components/AppSidebar.vue", type: "registry:component", target: "" },{ path: "registry/new-york-v4/blocks/sidebar-08/components/NavMain.vue", type: "registry:component", target: "" },{ path: "registry/new-york-v4/blocks/sidebar-08/components/NavProjects.vue", type: "registry:component", target: "" },{ path: "registry/new-york-v4/blocks/sidebar-08/components/NavSecondary.vue", type: "registry:component", target: "" },{ path: "registry/new-york-v4/blocks/sidebar-08/components/NavUser.vue", type: "registry:component", target: "" }], component: () => import("@/registry/new-york-v4/blocks/Sidebar08/page.vue").then((m) => m.default), source: "", category: "sidebar", subcategory: "" }, "Sidebar09": { name: "Sidebar09", description: "", type: "registry:block", registryDependencies: ["breadcrumb","separator","sidebar","label","switch","avatar","dropdown-menu"], files: [{ path: "registry/new-york-v4/blocks/Sidebar09/page.vue", type: "registry:page", target: "pages/dashboard/index.vue" },{ path: "registry/new-york-v4/blocks/sidebar-09/components/AppSidebar.vue", type: "registry:component", target: "" },{ path: "registry/new-york-v4/blocks/sidebar-09/components/NavUser.vue", type: "registry:component", target: "" }], component: () => import("@/registry/new-york-v4/blocks/Sidebar09/page.vue").then((m) => m.default), source: "", category: "sidebar", subcategory: "" }, "Sidebar10": { name: "Sidebar10", description: "", type: "registry:block", registryDependencies: ["breadcrumb","separator","sidebar","button","popover","dropdown-menu","collapsible"], files: [{ path: "registry/new-york-v4/blocks/Sidebar10/page.vue", type: "registry:page", target: "pages/dashboard/index.vue" },{ path: "registry/new-york-v4/blocks/sidebar-10/components/AppSidebar.vue", type: "registry:component", target: "" },{ path: "registry/new-york-v4/blocks/sidebar-10/components/NavActions.vue", type: "registry:component", target: "" },{ path: "registry/new-york-v4/blocks/sidebar-10/components/NavFavorites.vue", type: "registry:component", target: "" },{ path: "registry/new-york-v4/blocks/sidebar-10/components/NavMain.vue", type: "registry:component", target: "" },{ path: "registry/new-york-v4/blocks/sidebar-10/components/NavSecondary.vue", type: "registry:component", target: "" },{ path: "registry/new-york-v4/blocks/sidebar-10/components/NavWorkspaces.vue", type: "registry:component", target: "" },{ path: "registry/new-york-v4/blocks/sidebar-10/components/TeamSwitcher.vue", type: "registry:component", target: "" }], component: () => import("@/registry/new-york-v4/blocks/Sidebar10/page.vue").then((m) => m.default), source: "", category: "sidebar", subcategory: "" }, "Sidebar11": { name: "Sidebar11", description: "", type: "registry:block", registryDependencies: ["breadcrumb","separator","sidebar","collapsible"], files: [{ path: "registry/new-york-v4/blocks/Sidebar11/page.vue", type: "registry:page", target: "pages/dashboard/index.vue" },{ path: "registry/new-york-v4/blocks/sidebar-11/components/AppSidebar.vue", type: "registry:component", target: "" },{ path: "registry/new-york-v4/blocks/sidebar-11/components/Tree.vue", type: "registry:component", target: "" }], component: () => import("@/registry/new-york-v4/blocks/Sidebar11/page.vue").then((m) => m.default), source: "", category: "sidebar", subcategory: "" }, "Sidebar12": { name: "Sidebar12", description: "", type: "registry:block", registryDependencies: ["breadcrumb","separator","sidebar","collapsible","calendar","avatar","dropdown-menu"], files: [{ path: "registry/new-york-v4/blocks/Sidebar12/page.vue", type: "registry:page", target: "pages/dashboard/index.vue" },{ path: "registry/new-york-v4/blocks/sidebar-12/components/AppSidebar.vue", type: "registry:component", target: "" },{ path: "registry/new-york-v4/blocks/sidebar-12/components/Calendars.vue", type: "registry:component", target: "" },{ path: "registry/new-york-v4/blocks/sidebar-12/components/DatePicker.vue", type: "registry:component", target: "" },{ path: "registry/new-york-v4/blocks/sidebar-12/components/NavUser.vue", type: "registry:component", target: "" }], component: () => import("@/registry/new-york-v4/blocks/Sidebar12/page.vue").then((m) => m.default), source: "", category: "sidebar", subcategory: "" }, "Sidebar13": { name: "Sidebar13", description: "", type: "registry:block", registryDependencies: ["breadcrumb","button","dialog","sidebar"], files: [{ path: "registry/new-york-v4/blocks/Sidebar13/page.vue", type: "registry:page", target: "pages/dashboard/index.vue" },{ path: "registry/new-york-v4/blocks/sidebar-13/components/SettingsDialog.vue", type: "registry:component", target: "" }], component: () => import("@/registry/new-york-v4/blocks/Sidebar13/page.vue").then((m) => m.default), source: "", category: "sidebar", subcategory: "" }, "Sidebar14": { name: "Sidebar14", description: "", type: "registry:block", registryDependencies: ["breadcrumb","sidebar"], files: [{ path: "registry/new-york-v4/blocks/Sidebar14/page.vue", type: "registry:page", target: "pages/dashboard/index.vue" },{ path: "registry/new-york-v4/blocks/sidebar-14/components/AppSidebar.vue", type: "registry:component", target: "" }], component: () => import("@/registry/new-york-v4/blocks/Sidebar14/page.vue").then((m) => m.default), source: "", category: "sidebar", subcategory: "" }, "Sidebar15": { name: "Sidebar15", description: "", type: "registry:block", registryDependencies: ["breadcrumb","separator","sidebar","collapsible","calendar","dropdown-menu","avatar"], files: [{ path: "registry/new-york-v4/blocks/Sidebar15/page.vue", type: "registry:page", target: "pages/dashboard/index.vue" },{ path: "registry/new-york-v4/blocks/sidebar-15/components/AppSidebar.vue", type: "registry:component", target: "" },{ path: "registry/new-york-v4/blocks/sidebar-15/components/Calendars.vue", type: "registry:component", target: "" },{ path: "registry/new-york-v4/blocks/sidebar-15/components/DatePicker.vue", type: "registry:component", target: "" },{ path: "registry/new-york-v4/blocks/sidebar-15/components/NavFavorites.vue", type: "registry:component", target: "" },{ path: "registry/new-york-v4/blocks/sidebar-15/components/NavMain.vue", type: "registry:component", target: "" },{ path: "registry/new-york-v4/blocks/sidebar-15/components/NavSecondary.vue", type: "registry:component", target: "" },{ path: "registry/new-york-v4/blocks/sidebar-15/components/NavUser.vue", type: "registry:component", target: "" },{ path: "registry/new-york-v4/blocks/sidebar-15/components/NavWorkspaces.vue", type: "registry:component", target: "" },{ path: "registry/new-york-v4/blocks/sidebar-15/components/SidebarLeft.vue", type: "registry:component", target: "" },{ path: "registry/new-york-v4/blocks/sidebar-15/components/SidebarRight.vue", type: "registry:component", target: "" },{ path: "registry/new-york-v4/blocks/sidebar-15/components/TeamSwitcher.vue", type: "registry:component", target: "" }], component: () => import("@/registry/new-york-v4/blocks/Sidebar15/page.vue").then((m) => m.default), source: "", category: "sidebar", subcategory: "" }, "Sidebar16": { name: "Sidebar16", description: "", type: "registry:block", registryDependencies: ["sidebar","collapsible","dropdown-menu","avatar","label","breadcrumb","button","separator"], files: [{ path: "registry/new-york-v4/blocks/Sidebar16/page.vue", type: "registry:page", target: "pages/dashboard/index.vue" },{ path: "registry/new-york-v4/blocks/sidebar-16/components/AppSidebar.vue", type: "registry:component", target: "" },{ path: "registry/new-york-v4/blocks/sidebar-16/components/NavMain.vue", type: "registry:component", target: "" },{ path: "registry/new-york-v4/blocks/sidebar-16/components/NavProjects.vue", type: "registry:component", target: "" },{ path: "registry/new-york-v4/blocks/sidebar-16/components/NavSecondary.vue", type: "registry:component", target: "" },{ path: "registry/new-york-v4/blocks/sidebar-16/components/NavUser.vue", type: "registry:component", target: "" },{ path: "registry/new-york-v4/blocks/sidebar-16/components/SearchForm.vue", type: "registry:component", target: "" },{ path: "registry/new-york-v4/blocks/sidebar-16/components/SiteHeader.vue", type: "registry:component", target: "" }], component: () => import("@/registry/new-york-v4/blocks/Sidebar16/page.vue").then((m) => m.default), source: "", category: "sidebar", subcategory: "" }, } ================================================ FILE: apps/v4/app.vue ================================================ ================================================ FILE: apps/v4/assets/css/fonts.css ================================================ @theme { --font-sans: "Geist", Arial, ui-sans-serif, system-ui, sans-serif; --font-mono: "Geist Mono", ui-monospace, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; } ================================================ FILE: apps/v4/assets/css/main.css ================================================ @import "tailwindcss"; @import "tw-animate-css"; @import "./themes.css"; @import "./fonts.css"; @import "../../registry/styles/style-vega.css" layer(base); @import "../../registry/styles/style-nova.css" layer(base); @import "../../registry/styles/style-lyra.css" layer(base); @import "../../registry/styles/style-maia.css" layer(base); @import "../../registry/styles/style-mira.css" layer(base); @custom-variant style-vega (&:where(.style-vega *)); @custom-variant style-nova (&:where(.style-nova *)); @custom-variant style-lyra (&:where(.style-lyra *)); @custom-variant style-maia (&:where(.style-maia *)); @custom-variant style-mira (&:where(.style-mira *)); @custom-variant dark (&:is(.dark *)); @custom-variant fixed (&:is(.layout-fixed *)); @theme inline { --breakpoint-3xl: 1600px; --breakpoint-4xl: 2000px; --radius-sm: calc(var(--radius) - 4px); --radius-md: calc(var(--radius) - 2px); --radius-lg: var(--radius); --radius-xl: calc(var(--radius) + 4px); --color-background: var(--background); --color-foreground: var(--foreground); --color-card: var(--card); --color-card-foreground: var(--card-foreground); --color-popover: var(--popover); --color-popover-foreground: var(--popover-foreground); --color-primary: var(--primary); --color-primary-foreground: var(--primary-foreground); --color-secondary: var(--secondary); --color-secondary-foreground: var(--secondary-foreground); --color-muted: var(--muted); --color-muted-foreground: var(--muted-foreground); --color-accent: var(--accent); --color-accent-foreground: var(--accent-foreground); --color-destructive: var(--destructive); --color-border: var(--border); --color-input: var(--input); --color-ring: var(--ring); --color-chart-1: var(--chart-1); --color-chart-2: var(--chart-2); --color-chart-3: var(--chart-3); --color-chart-4: var(--chart-4); --color-chart-5: var(--chart-5); --color-sidebar: var(--sidebar); --color-sidebar-foreground: var(--sidebar-foreground); --color-sidebar-primary: var(--sidebar-primary); --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); --color-sidebar-accent: var(--sidebar-accent); --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); --color-sidebar-border: var(--sidebar-border); --color-sidebar-ring: var(--sidebar-ring); --color-surface: var(--surface); --color-surface-foreground: var(--surface-foreground); --color-code: var(--code); --color-code-foreground: var(--code-foreground); --color-code-highlight: var(--code-highlight); --color-code-number: var(--code-number); --color-selection: var(--selection); --color-selection-foreground: var(--selection-foreground); } :root { --radius: 0.625rem; --background: oklch(1 0 0); --foreground: oklch(0.145 0 0); --card: oklch(1 0 0); --card-foreground: oklch(0.145 0 0); --popover: oklch(1 0 0); --popover-foreground: oklch(0.145 0 0); --primary: oklch(0.205 0 0); --primary-foreground: oklch(0.985 0 0); --secondary: oklch(0.97 0 0); --secondary-foreground: oklch(0.205 0 0); --muted: oklch(0.97 0 0); --muted-foreground: oklch(0.556 0 0); --accent: oklch(0.97 0 0); --accent-foreground: oklch(0.205 0 0); --destructive: oklch(0.577 0.245 27.325); --border: oklch(0.922 0 0); --input: oklch(0.922 0 0); --ring: oklch(0.708 0 0); --chart-1: var(--color-blue-300); --chart-2: var(--color-blue-500); --chart-3: var(--color-blue-600); --chart-4: var(--color-blue-700); --chart-5: var(--color-blue-800); --sidebar: oklch(0.985 0 0); --sidebar-foreground: oklch(0.145 0 0); --sidebar-primary: oklch(0.205 0 0); --sidebar-primary-foreground: oklch(0.985 0 0); --sidebar-accent: oklch(0.97 0 0); --sidebar-accent-foreground: oklch(0.205 0 0); --sidebar-border: oklch(0.922 0 0); --sidebar-ring: oklch(0.708 0 0); --surface: oklch(0.98 0 0); --surface-foreground: var(--foreground); --code: var(--surface); --code-foreground: var(--surface-foreground); --code-highlight: oklch(0.96 0 0); --code-number: oklch(0.56 0 0); --selection: oklch(0.145 0 0); --selection-foreground: oklch(1 0 0); } .dark { --background: oklch(0.145 0 0); --foreground: oklch(0.985 0 0); --card: oklch(0.205 0 0); --card-foreground: oklch(0.985 0 0); --popover: oklch(0.269 0 0); --popover-foreground: oklch(0.985 0 0); --primary: oklch(0.922 0 0); --primary-foreground: oklch(0.205 0 0); --secondary: oklch(0.269 0 0); --secondary-foreground: oklch(0.985 0 0); --muted: oklch(0.269 0 0); --muted-foreground: oklch(0.708 0 0); --accent: oklch(0.371 0 0); --accent-foreground: oklch(0.985 0 0); --destructive: oklch(0.704 0.191 22.216); --border: oklch(1 0 0 / 10%); --input: oklch(1 0 0 / 15%); --ring: oklch(0.556 0 0); --chart-1: var(--color-blue-300); --chart-2: var(--color-blue-500); --chart-3: var(--color-blue-600); --chart-4: var(--color-blue-700); --chart-5: var(--color-blue-800); --sidebar: oklch(0.205 0 0); --sidebar-foreground: oklch(0.985 0 0); --sidebar-primary: oklch(0.488 0.243 264.376); --sidebar-primary-foreground: oklch(0.985 0 0); --sidebar-accent: oklch(0.269 0 0); --sidebar-accent-foreground: oklch(0.985 0 0); --sidebar-border: oklch(1 0 0 / 10%); --sidebar-ring: oklch(0.439 0 0); --surface: oklch(0.2 0 0); --surface-foreground: oklch(0.708 0 0); --code: var(--surface); --code-foreground: var(--surface-foreground); --code-highlight: oklch(0.27 0 0); --code-number: oklch(0.72 0 0); --selection: oklch(0.922 0 0); --selection-foreground: oklch(0.205 0 0); } @layer base { * { @apply border-border outline-ring/50; } ::selection { @apply bg-selection text-selection-foreground; } html { @apply overscroll-y-none scroll-smooth; } html { color-scheme: light dark; } html.dark { color-scheme: dark; } html.light { color-scheme: light; } body { font-synthesis-weight: none; text-rendering: optimizeLegibility; } [data-slot="layout"] { @apply overscroll-none; } @supports (font: -apple-system-body) and (-webkit-appearance: none) { [data-wrapper] { @apply min-[1800px]:border-t; } } a:active, button:active { @apply opacity-60 md:opacity-100; } } @utility border-grid { @apply border-border/50 dark:border-border; } @utility section-soft { @apply from-background to-surface/40 dark:bg-background 3xl:fixed:bg-none bg-gradient-to-b; } @utility theme-container { @apply font-sans; } @utility container-wrapper { @apply 3xl:fixed:max-w-[calc(var(--breakpoint-2xl)+2rem)] mx-auto w-full px-2; } @utility container { @apply 3xl:max-w-screen-2xl mx-auto max-w-[1400px] px-4 lg:px-8; } @utility no-scrollbar { -ms-overflow-style: none; scrollbar-width: none; &::-webkit-scrollbar { display: none; } } @utility border-ghost { @apply after:border-border relative after:absolute after:inset-0 after:border after:mix-blend-darken dark:after:mix-blend-lighten; } @utility step { counter-increment: step; @apply relative; &:before { @apply text-muted-foreground right-0 mr-2 hidden size-7 items-center justify-center rounded-full text-center -indent-px font-mono text-sm font-medium md:absolute; content: counter(step); } } @utility extend-touch-target { @media (pointer: coarse) { @apply relative touch-manipulation after:absolute after:-inset-2; } } @layer components { .steps { &:first-child { @apply !mt-0; } &:first-child > h3:first-child { @apply !mt-0; } > h3 { @apply !mt-16; } > h3 + p { @apply !mt-2; } } [data-pretty-code-figure] { background-color: var(--color-code); color: var(--color-code-foreground); border-radius: var(--radius-lg); border-width: 0px; border-color: var(--border); margin-top: calc(var(--spacing) * 6); overflow: hidden; font-size: var(--text-sm); outline: none; position: relative; @apply -mx-1 md:-mx-1; &:has([data-pretty-code-title]) [data-slot="copy-button"] { top: calc(var(--spacing) * 1.5) !important; } } [data-pretty-code-title] { border-bottom: color-mix(in oklab, var(--border) 30%, transparent); border-bottom-width: 1px; border-bottom-style: solid; padding-block: calc(var(--spacing) * 2.5); padding-inline: calc(var(--spacing) * 4); font-size: var(--text-sm); font-family: var(--font-mono); color: var(--color-code-foreground); } [data-line-numbers] { display: grid; min-width: 100%; white-space: pre; border: 0; background: transparent; padding: 0; counter-reset: line; box-decoration-break: clone; } [data-line-numbers] [data-line]::before { font-size: var(--text-sm); counter-increment: line; content: counter(line); display: inline-block; width: calc(var(--spacing) * 16); padding-right: calc(var(--spacing) * 6); text-align: right; color: var(--color-code-number); background-color: var(--color-code); position: sticky; left: 0; } [data-line-numbers] [data-highlighted-line][data-line]::before { background-color: var(--color-code-highlight); } [data-line] { padding-top: calc(var(--spacing) * 0.5); padding-bottom: calc(var(--spacing) * 0.5); min-height: calc(var(--spacing) * 1); width: 100%; display: inline-block; } [data-line] span { color: var(--shiki-light); @variant dark { color: var(--shiki-dark) !important; } } [data-highlighted-line], [data-highlighted-chars] { position: relative; background-color: var(--color-code-highlight); } [data-highlighted-line] { &:after { position: absolute; top: 0; left: 0; width: 2px; height: 100%; content: ""; background-color: color-mix( in oklab, var(--muted-foreground) 50%, transparent ); } } [data-highlighted-chars] { border-radius: var(--radius-sm); padding-inline: 0.3rem; padding-block: 0.1rem; font-family: var(--font-mono); font-size: 0.8rem; } } ================================================ FILE: apps/v4/assets/css/themes.css ================================================ .theme-default .theme-container, .theme-default [data-reka-popper-content-wrapper] { --chart-1: var(--color-blue-300); --chart-2: var(--color-blue-500); --chart-3: var(--color-blue-600); --chart-4: var(--color-blue-700); --chart-5: var(--color-blue-800); } .theme-mono .theme-container, .theme-mono [data-reka-popper-content-wrapper] { --font-sans: var(--font-mono); --primary: var(--color-stone-600); --primary-foreground: var(--color-stone-50); --chart-1: var(--color-stone-300); --chart-2: var(--color-stone-500); --chart-3: var(--color-stone-600); --chart-4: var(--color-stone-700); --chart-5: var(--color-stone-800); --sidebar-primary: var(--color-stone-600); --sidebar-primary-foreground: var(--color-stone-50); --sidebar-ring: var(--color-stone-400); @variant dark { --primary: var(--color-stone-500); --primary-foreground: var(--color-stone-50); --sidebar-primary: var(--color-stone-500); --sidebar-primary-foreground: var(--color-stone-50); --sidebar-ring: var(--color-stone-900); } @media (min-width: 1024px) { --font-sans: var(--font-mono); --radius: 0.45em; --text-lg: 1rem; --text-xl: 1.1rem; --text-2xl: 1.2rem; --text-3xl: 1.3rem; --text-4xl: 1.4rem; --text-5xl: 1.5rem; --text-6xl: 1.6rem; --text-7xl: 1.7rem; --text-8xl: 1.8rem; --text-base: 0.85rem; --text-sm: 0.8rem; --spacing: 0.222222rem; } .rounded-xs, .rounded-sm, .rounded-md, .rounded-lg, .rounded-xl { border-radius: 0; } .shadow-xs, .shadow-sm, .shadow-md, .shadow-lg, .shadow-xl { box-shadow: none; } [data-slot="toggle-group"], [data-slot="toggle-group-item"], [data-slot="checkbox"], [data-slot="radio"], [data-slot="switch"], [data-slot="switch-thumb"] { @apply !rounded-none !shadow-none; } } .theme-scaled .theme-container, .theme-scaled [data-reka-popper-content-wrapper] { --chart-1: var(--color-blue-300); --chart-2: var(--color-blue-500); --chart-3: var(--color-blue-600); --chart-4: var(--color-blue-700); --chart-5: var(--color-blue-800); @media (min-width: 1024px) { --radius: 0.45em; --text-lg: 1rem; --text-xl: 1.1rem; --text-2xl: 1.2rem; --text-3xl: 1.3rem; --text-4xl: 1.4rem; --text-5xl: 1.5rem; --text-6xl: 1.6rem; --text-7xl: 1.7rem; --text-8xl: 1.8rem; --text-base: 0.85rem; --text-sm: 0.8rem; --spacing: 0.2rem; } [data-slot="select-trigger"], [data-slot="toggle-group-item"] { --spacing: 0.2rem; } [data-slot="card"] { border-radius: var(--radius); padding-block: calc(var(--spacing) * 4); gap: calc(var(--spacing) * 2); } [data-slot="card"].pb-0 { padding-bottom: 0; } } .theme-rounded-none .theme-container, .theme-rounded-none [data-reka-popper-content-wrapper] { --radius: 0; } .theme-rounded-small .theme-container, .theme-rounded-small [data-reka-popper-content-wrapper] { --radius: 0.4rem; } .theme-rounded-medium .theme-container, .theme-rounded-medium [data-reka-popper-content-wrapper] { --radius: 0.65rem; } .theme-rounded-large .theme-container, .theme-rounded-large [data-reka-popper-content-wrapper] { --radius: 1rem; } .theme-rounded-full .theme-container, .theme-rounded-full [data-reka-popper-content-wrapper] { --radius: 1.2rem; } .theme-inter .theme-container, .theme-inter [data-reka-popper-content-wrapper] { --font-sans: var(--font-inter); } .theme-noto-sans .theme-container, .theme-noto-sans [data-reka-popper-content-wrapper] { --font-sans: var(--font-noto-sans); } .theme-nunito-sans .theme-container, .theme-nunito-sans [data-reka-popper-content-wrapper] { --font-sans: var(--font-nunito-sans); } .theme-figtree .theme-container, .theme-figtree [data-reka-popper-content-wrapper] { --font-sans: var(--font-figtree); } .theme-blue .theme-container, .theme-blue [data-reka-popper-content-wrapper] { --primary: var(--color-blue-700); --primary-foreground: var(--color-blue-50); /* --ring: var(--color-blue-100); */ --sidebar-primary: var(--color-blue-600); --sidebar-primary-foreground: var(--color-blue-50); /* --sidebar-ring: var(--color-blue-400); */ --chart-1: var(--color-blue-300); --chart-2: var(--color-blue-500); --chart-3: var(--color-blue-600); --chart-4: var(--color-blue-700); --chart-5: var(--color-blue-800); @variant dark { --primary: var(--color-blue-700); --primary-foreground: var(--color-blue-50); /* --ring: var(--color-blue-900); */ --sidebar-primary: var(--color-blue-500); --sidebar-primary-foreground: var(--color-blue-50); /* --sidebar-ring: var(--color-blue-900); */ } } .theme-green .theme-container, .theme-green [data-reka-popper-content-wrapper] { --primary: var(--color-lime-600); --primary-foreground: var(--color-lime-50); --ring: var(--color-lime-400); --chart-1: var(--color-green-300); --chart-2: var(--color-green-500); --chart-3: var(--color-green-600); --chart-4: var(--color-green-700); --chart-5: var(--color-green-800); --sidebar-primary: var(--color-lime-600); --sidebar-primary-foreground: var(--color-lime-50); --sidebar-ring: var(--color-lime-400); @variant dark { --primary: var(--color-lime-600); --primary-foreground: var(--color-lime-50); --ring: var(--color-lime-900); --sidebar-primary: var(--color-lime-500); --sidebar-primary-foreground: var(--color-lime-50); --sidebar-ring: var(--color-lime-900); } } .theme-amber .theme-container, .theme-amber [data-reka-popper-content-wrapper] { --primary: var(--color-amber-600); --primary-foreground: var(--color-amber-50); --ring: var(--color-amber-400); --chart-1: var(--color-amber-300); --chart-2: var(--color-amber-500); --chart-3: var(--color-amber-600); --chart-4: var(--color-amber-700); --chart-5: var(--color-amber-800); --sidebar-primary: var(--color-amber-600); --sidebar-primary-foreground: var(--color-amber-50); --sidebar-ring: var(--color-amber-400); @variant dark { --primary: var(--color-amber-500); --primary-foreground: var(--color-amber-50); --ring: var(--color-amber-900); --sidebar-primary: var(--color-amber-500); --sidebar-primary-foreground: var(--color-amber-50); --sidebar-ring: var(--color-amber-900); } } .theme-rose .theme-container, .theme-rose [data-reka-popper-content-wrapper] { --primary: var(--color-rose-600); --primary-foreground: var(--color-rose-50); --ring: var(--color-rose-400); --chart-1: var(--color-rose-300); --chart-2: var(--color-rose-500); --chart-3: var(--color-rose-600); --chart-4: var(--color-rose-700); --chart-5: var(--color-rose-800); --sidebar-primary: var(--color-rose-600); --sidebar-primary-foreground: var(--color-rose-50); --sidebar-ring: var(--color-rose-400); @variant dark { --primary: var(--color-rose-500); --primary-foreground: var(--color-rose-50); --ring: var(--color-rose-900); --sidebar-primary: var(--color-rose-500); --sidebar-primary-foreground: var(--color-rose-50); --sidebar-ring: var(--color-rose-900); } } .theme-purple .theme-container, .theme-purple [data-reka-popper-content-wrapper] { --primary: var(--color-purple-600); --primary-foreground: var(--color-purple-50); --ring: var(--color-purple-400); --chart-1: var(--color-purple-300); --chart-2: var(--color-purple-500); --chart-3: var(--color-purple-600); --chart-4: var(--color-purple-700); --chart-5: var(--color-purple-800); --sidebar-primary: var(--color-purple-600); --sidebar-primary-foreground: var(--color-purple-50); --sidebar-ring: var(--color-purple-400); @variant dark { --primary: var(--color-purple-500); --primary-foreground: var(--color-purple-50); --ring: var(--color-purple-900); --sidebar-primary: var(--color-purple-500); --sidebar-primary-foreground: var(--color-purple-50); --sidebar-ring: var(--color-purple-900); } } .theme-orange .theme-container, .theme-orange [data-reka-popper-content-wrapper] { --primary: var(--color-orange-600); --primary-foreground: var(--color-orange-50); --ring: var(--color-orange-400); --chart-1: var(--color-orange-300); --chart-2: var(--color-orange-500); --chart-3: var(--color-orange-600); --chart-4: var(--color-orange-700); --chart-5: var(--color-orange-800); --sidebar-primary: var(--color-orange-600); --sidebar-primary-foreground: var(--color-orange-50); --sidebar-ring: var(--color-orange-400); @variant dark { --primary: var(--color-orange-500); --primary-foreground: var(--color-orange-50); --ring: var(--color-orange-900); --sidebar-primary: var(--color-orange-500); --sidebar-primary-foreground: var(--color-orange-50); --sidebar-ring: var(--color-orange-900); } } .theme-teal .theme-container, .theme-teal [data-reka-popper-content-wrapper] { --primary: var(--color-teal-600); --primary-foreground: var(--color-teal-50); --chart-1: var(--color-teal-300); --chart-2: var(--color-teal-500); --chart-3: var(--color-teal-600); --chart-4: var(--color-teal-700); --chart-5: var(--color-teal-800); --sidebar-primary: var(--color-teal-600); --sidebar-primary-foreground: var(--color-teal-50); --sidebar-ring: var(--color-teal-400); @variant dark { --primary: var(--color-teal-500); --primary-foreground: var(--color-teal-50); --sidebar-primary: var(--color-teal-500); --sidebar-primary-foreground: var(--color-teal-50); --sidebar-ring: var(--color-teal-900); } } .theme-red .theme-container, .theme-red [data-reka-popper-content-wrapper] { --primary: var(--color-red-600); --primary-foreground: var(--color-red-50); --ring: var(--color-red-400); --chart-1: var(--color-red-300); --chart-2: var(--color-red-500); --chart-3: var(--color-red-600); --chart-4: var(--color-red-700); --chart-5: var(--color-red-800); --sidebar-primary: var(--color-red-600); --sidebar-primary-foreground: var(--color-red-50); --sidebar-ring: var(--color-red-400); @variant dark { --primary: var(--color-red-500); --primary-foreground: var(--color-red-50); --ring: var(--color-red-900); --sidebar-primary: var(--color-red-500); --sidebar-primary-foreground: var(--color-red-50); --sidebar-ring: var(--color-red-900); } } .theme-yellow .theme-container, .theme-yellow [data-reka-popper-content-wrapper] { --primary: var(--color-yellow-400); --primary-foreground: var(--color-yellow-900); --ring: var(--color-yellow-400); --chart-1: var(--color-yellow-300); --chart-2: var(--color-yellow-500); --chart-3: var(--color-yellow-600); --chart-4: var(--color-yellow-700); --chart-5: var(--color-yellow-800); --sidebar-primary: var(--color-yellow-600); --sidebar-primary-foreground: var(--color-yellow-50); --sidebar-ring: var(--color-yellow-400); @variant dark { --primary: var(--color-yellow-500); --primary-foreground: var(--color-yellow-900); --ring: var(--color-yellow-900); --sidebar-primary: var(--color-yellow-500); --sidebar-primary-foreground: var(--color-yellow-50); --sidebar-ring: var(--color-yellow-900); } } .theme-violet .theme-container, .theme-violet [data-reka-popper-content-wrapper] { --primary: var(--color-violet-600); --primary-foreground: var(--color-violet-50); --ring: var(--color-violet-400); --chart-1: var(--color-violet-300); --chart-2: var(--color-violet-500); --chart-3: var(--color-violet-600); --chart-4: var(--color-violet-700); --chart-5: var(--color-violet-800); --sidebar-primary: var(--color-violet-600); --sidebar-primary-foreground: var(--color-violet-50); --sidebar-ring: var(--color-violet-400); @variant dark { --primary: var(--color-violet-500); --primary-foreground: var(--color-violet-50); --ring: var(--color-violet-900); --sidebar-primary: var(--color-violet-500); --sidebar-primary-foreground: var(--color-violet-50); --sidebar-ring: var(--color-violet-900); } } ================================================ FILE: apps/v4/components/Announcement.vue ================================================ ================================================ FILE: apps/v4/components/BaseColorPicker.vue ================================================ ================================================ FILE: apps/v4/components/BlockDisplay.vue ================================================ ================================================ FILE: apps/v4/components/BlockViewer.vue ================================================ ================================================ FILE: apps/v4/components/BlockViewerCode.vue ================================================ ================================================ FILE: apps/v4/components/BlockViewerFileTree.vue ================================================ ================================================ FILE: apps/v4/components/BlockViewerIframe.vue ================================================