Full Code of unovue/shadcn-vue for AI

dev e005af9299be cached
5959 files
34.7 MB
9.4M tokens
884 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (37,657K chars total). Download the full file to get everything.
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
│     

================================================
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
================================================
<!---☝️ PR title should follow conventional commits (https://conventionalcommits.org) -->

### 🔗 Linked issue

<!-- Please ensure there is an open issue and mention its number as #123 -->

### ❓ Type of change

<!-- What types of changes does your code introduce? Put an `x` in all the boxes that apply. -->

- [ ] 📖 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

<!-- Describe your changes in detail -->
<!-- Why is this change required? What problem does it solve? -->
<!-- If it resolves an open issue, please link to the issue here. For example "Resolves #1337" -->

### 📸 Screenshots (if appropriate)

<!-- Add screenshots to help explain the change. -->

### 📝 Checklist

<!-- Put an `x` in all the boxes that apply. -->
<!-- If your change requires a documentation PR, please link it appropriately -->
<!-- If you're unsure about any of these, don't hesitate to ask. We're here to help! -->

- [ ] 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<string, any> = {

"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
================================================
<script setup lang="ts">
import { ConfigProvider, TooltipProvider } from 'reka-ui'
import { Toaster } from '@/registry/new-york-v4/ui/sonner'

const { config, isLayoutFull } = useConfig()
const activeTheme = computed(() => config.value.activeTheme)
const isScaled = computed(() => !!activeTheme.value?.endsWith('-scaled'))
const colorMode = useColorMode()
</script>

<template>
  <SiteBody>
    <ConfigProvider>
      <TooltipProvider>
        <NuxtLayout>
          <NuxtPage />
        </NuxtLayout>
      </TooltipProvider>
    </ConfigProvider>

    <ClientOnly>
      <Toaster class="pointer-events-auto" :theme="colorMode.preference as any || 'system'" position="top-center" />
    </ClientOnly>
  </SiteBody>
</template>


================================================
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
================================================
<script setup lang="ts">
import { ArrowRightIcon } from 'lucide-vue-next'

import { Badge } from '@/registry/new-york-v4/ui/badge'
</script>

<template>
  <Badge as-child variant="secondary" class="bg-transparent">
    <NuxtLink href="/docs/changelog">
      <span class="flex size-2 rounded-full bg-green-500" title="New" />
      New Components: Field, Input Group, Item and more <ArrowRightIcon />
    </NuxtLink>
  </Badge>
</template>


================================================
FILE: apps/v4/components/BaseColorPicker.vue
================================================
<script setup lang="ts">
import { useMounted } from '@vueuse/core'
import { BASE_COLORS } from '@/registry/config'

const props = defineProps<{
  isMobile: boolean
  anchorRef: HTMLDivElement | null
}>()

const params = useDesignSystemSearchParams()
const mounted = useMounted()
const colorMode = useColorMode()

const currentBaseColor = computed(
  () => BASE_COLORS.find(baseColor => baseColor.name === params.baseColor.value),
)
</script>

<template>
  <div class="group/picker relative">
    <Picker>
      <PickerTrigger>
        <div class="flex flex-col justify-start text-left">
          <div class="text-muted-foreground text-xs">
            Base Color
          </div>
          <div class="text-foreground text-sm font-medium">
            {{ currentBaseColor?.title }}
          </div>
        </div>
        <div
          v-if="mounted"
          :style="
            {
              '--color':
                currentBaseColor?.cssVars?.[
                  colorMode.value as 'light' | 'dark'
                ]?.['muted-foreground'],
            }
          "
          class="pointer-events-none absolute top-1/2 right-4 size-4 -translate-y-1/2 rounded-full bg-(--color) select-none"
        />
      </PickerTrigger>
      <PickerContent
        :anchor="isMobile ? anchorRef : undefined"
        :side="isMobile ? 'top' : 'right'"
        :align="isMobile ? 'center' : 'start'"
      >
        <PickerRadioGroup
          :model-value="currentBaseColor?.name"
          @update:model-value="(value) => {
            if (value === 'dark') {
              colorMode.preference = colorMode.value === 'dark' ? 'light' : 'dark'
              return
            }

            params.baseColor.value = value
          }"
        >
          <PickerGroup>
            <PickerRadioItem v-for="baseColor in BASE_COLORS" :key="baseColor.name" :value="baseColor.name">
              <div class="flex items-center gap-2">
                <div
                  v-if="mounted"
                  :style="
                    {
                      '--color':
                        baseColor.cssVars?.[
                          colorMode.value as 'light' | 'dark'
                        ]?.['muted-foreground'],
                    }
                  "
                  class="size-4 rounded-full bg-(--color)"
                />
                {{ baseColor.title }}
              </div>
            </PickerRadioItem>
          </PickerGroup>
          <PickerSeparator />
          <PickerGroup>
            <PickerItem
              @click="() => {
                colorMode.preference = colorMode.value === 'dark' ? 'light' : 'dark'
              }"
            >
              <div class="flex flex-col justify-start pointer-coarse:gap-1">
                <div>
                  Switch to {{ colorMode.value === "dark" ? "Light" : "Dark" }} Mode
                </div>
                <div class="text-muted-foreground text-xs pointer-coarse:text-sm">
                  Base colors are easier to see in dark colorMode.
                </div>
              </div>
            </PickerItem>
          </PickerGroup>
        </PickerRadioGroup>
      </PickerContent>
    </Picker>
    <LockButton
      param="baseColor"
      class="absolute top-1/2 right-10 -translate-y-1/2"
    />
  </div>
</template>


================================================
FILE: apps/v4/components/BlockDisplay.vue
================================================
<script setup lang="ts">
import { cn } from '~/lib/utils'

const props = defineProps<{
  name: string
}>()

const { data } = await useFetch(() => `/api/block/${props.name}`)
</script>

<template>
  <BlockViewer v-if="data?.item" :item="data.item" :tree="data.tree" :highlighted-files="data.highlightedFiles">
    <ComponentPreview
      :name="name"
      hide-code
      :class="cn(
        'my-0 **:[.preview]:h-auto **:[.preview]:p-4 **:[.preview>.p-6]:p-0',
        // item.meta?.containerClassName
      )"
    />
  </BlockViewer>
</template>


================================================
FILE: apps/v4/components/BlockViewer.vue
================================================
<script lang="ts">
import { createContext } from 'reka-ui'

export interface BlockViewerContext {
  item: z.infer<typeof registryItemSchema>
  view: Ref<'code' | 'preview'>
  // setView: (view: 'code' | 'preview') => void
  activeFile: Ref<string | null>
  // setActiveFile: (file: string) => void
  resizablePanelRef: Ref<InstanceType<typeof ResizablePanel> | null>
  tree: ReturnType<typeof createFileTreeForRegistryItemFiles> | null
  highlightedFiles:
    | (z.infer<typeof registryItemFileSchema> & {
      highlightedContent: string
    })[]
    | null
  iframeKey?: Ref<number>
  // setIframeKey?: (key: number) => void
}

export const [useBlockViewer, provideBlockViewerContext] = createContext<BlockViewerContext>('BlockViewer')
</script>

<script setup lang="ts">
import type { SplitterPanel as ResizablePanel } from 'reka-ui'
import type { registryItemFileSchema, registryItemSchema } from 'shadcn-vue/schema'
import type { z } from 'zod'
import type { createFileTreeForRegistryItemFiles } from '~/lib/registry'

const props = defineProps<Pick<BlockViewerContext, 'item' | 'highlightedFiles' | 'tree'>>()

const view = ref<'code' | 'preview'>('preview')
const activeFile = ref(props.highlightedFiles?.[0]?.target ?? null)
const resizablePanelRef = ref<InstanceType<typeof ResizablePanel> | null>(null)
const iframeKey = ref(0)

provideBlockViewerContext({
  view,
  activeFile,
  resizablePanelRef,
  iframeKey,
  item: props.item,
  highlightedFiles: props.highlightedFiles,
  tree: props.tree,
})
</script>

<template>
  <div
    :id="item.name"
    :data-view="view"
    class="group/block-view-wrapper flex min-w-0 scroll-mt-24 flex-col-reverse items-stretch gap-4 overflow-hidden md:flex-col"
    :style=" {
      '--height': item.meta?.iframeHeight ?? '930px',
    }
    "
  >
    <BlockViewerToolbar />
    <BlockViewerView />
    <BlockViewerCode />
    <BlockViewerMobile>
      <slot />
    </BlockViewerMobile>
  </div>
</template>


================================================
FILE: apps/v4/components/BlockViewerCode.vue
================================================
<script setup lang="ts">
import { useBlockViewer } from './BlockViewer.vue'
import { getIconForLanguageExtension } from './Icons'

const { activeFile, highlightedFiles } = useBlockViewer()

const file = computed(() => {
  return highlightedFiles?.find(file => file.target === activeFile.value)
})

const language = computed(() => file.value?.path.split('.').pop() ?? 'vue')
</script>

<template>
  <div v-if="file" class="bg-code text-code-foreground mr-[14px] flex overflow-hidden rounded-xl border group-data-[view=preview]/block-view-wrapper:hidden md:h-(--height)">
    <div class="w-72">
      <BlockViewerFileTree />
    </div>
    <figure
      data-pretty-code-figure=""
      class="!mx-0 mt-0 flex min-w-0 flex-1 flex-col rounded-xl border-none"
    >
      <figcaption
        class="text-code-foreground [&_svg]:text-code-foreground flex h-12 shrink-0 items-center gap-2 border-b px-4 py-2 [&_svg]:size-4 [&_svg]:opacity-70"
        :data-language="language"
      >
        <component :is="getIconForLanguageExtension(language)" />
        {{ file.target }}
        <div class="ml-auto flex items-center gap-2">
          <CopyButton :value="file.content" />
        </div>
      </figcaption>
      <div
        :key="file?.path"
        class="no-scrollbar overflow-y-auto"
        v-html="file.highlightedContent ?? ''"
      />
    </figure>
  </div>
</template>


================================================
FILE: apps/v4/components/BlockViewerFileTree.vue
================================================
<script setup lang="ts">
import {
  Sidebar,
  SidebarGroup,
  SidebarGroupContent,
  SidebarGroupLabel,
  SidebarMenu,
  SidebarProvider,
} from '@/registry/new-york-v4/ui/sidebar'
import { useBlockViewer } from './BlockViewer.vue'

const { tree } = useBlockViewer()
</script>

<template>
  <SidebarProvider v-if="tree" class="flex !min-h-full flex-col border-r">
    <Sidebar collapsible="none" class="w-full flex-1">
      <SidebarGroupLabel class="h-12 rounded-none border-b px-4 text-sm">
        Files
      </SidebarGroupLabel>
      <SidebarGroup class="p-0">
        <SidebarGroupContent>
          <SidebarMenu class="translate-x-0 gap-1.5">
            <BlockViewerTree v-for="(file, index) in tree" :key="index" :item="file" :index="1" />
          </SidebarMenu>
        </SidebarGroupContent>
      </SidebarGroup>
    </Sidebar>
  </SidebarProvider>
</template>


================================================
FILE: apps/v4/components/BlockViewerIframe.vue
================================================
<script setup lang="ts">
import type { HTMLAttributes } from 'vue'
import { cn } from '~/lib/utils'
import { useBlockViewer } from './BlockViewer.vue'

const props = defineProps<{
  class?: HTMLAttributes['class']
}>()

const { item, iframeKey } = useBlockViewer()
</script>

<template>
  <iframe
    :key="iframeKey"
    :src="`/view/${item.name}`"
    :height="item.meta?.iframeHeight ?? 930"
    loading="lazy"
    :class="cn(
      'bg-background no-scrollbar relative z-20 w-full',
      props.class,
    )"
  />
</template>


================================================
FILE: apps/v4/components/BlockViewerMobile.vue
================================================
<script setup lang="ts">
import { useBlockViewer } from './BlockViewer.vue'

const { item } = useBlockViewer()
</script>

<template>
  <div class="flex flex-col gap-2 lg:hidden">
    <div class="flex items-center gap-2 px-2">
      <div class="line-clamp-1 text-sm font-medium">
        {{ item.description }}
      </div>
      <div class="text-muted-foreground ml-auto shrink-0 font-mono text-xs">
        {{ item.name }}
      </div>
    </div>
    <template v-if="item.meta?.mobile === 'component'">
      <slot />
    </template>

    <div v-else class="overflow-hidden rounded-xl border">
      <!-- <img
        :src="`/r/styles/new-york-v4/${item.name}-light.png`"
        :alt="item.name"
        :data-block="item.name"
        :width="1440"
        :height="900"
        class="object-cover dark:hidden"
      >
      <img
        :src="`/r/styles/new-york-v4/${item.name}-dark.png`"
        :alt="item.name"
        :data-block="item.name"
        :width="1440"
        :height="900"
        class="hidden object-cover dark:block"
      > -->
    </div>
  </div>
</template>


================================================
FILE: apps/v4/components/BlockViewerToolbar.vue
================================================
<script setup lang="ts">
import { useClipboard } from '@vueuse/core'
import {
  Check,
  Fullscreen,
  Monitor,
  RotateCw,
  Smartphone,
  Tablet,
  Terminal,
} from 'lucide-vue-next'
import { Button } from '@/registry/new-york-v4/ui/button'
import { Separator } from '@/registry/new-york-v4/ui/separator'
import { Tabs, TabsList, TabsTrigger } from '@/registry/new-york-v4/ui/tabs'

import {
  ToggleGroup,
  ToggleGroupItem,
} from '@/registry/new-york-v4/ui/toggle-group'
import { useBlockViewer } from './BlockViewer.vue'

const { view, item, iframeKey, resizablePanelRef }
  = useBlockViewer()

const { copy, copied } = useClipboard()
</script>

<template>
  <div class="hidden w-full items-center gap-2 pl-2 md:pr-6 lg:flex">
    <Tabs v-model="view">
      <TabsList class="grid h-8 grid-cols-2 items-center rounded-md p-1 *:data-[slot=tabs-trigger]:h-6 *:data-[slot=tabs-trigger]:rounded-sm *:data-[slot=tabs-trigger]:px-2 *:data-[slot=tabs-trigger]:text-xs">
        <TabsTrigger value="preview">
          Preview
        </TabsTrigger>
        <TabsTrigger value="code">
          Code
        </TabsTrigger>
      </TabsList>
    </Tabs>
    <Separator orientation="vertical" class="mx-2 !h-4" />
    <a
      :href="`#${item.name}`"
      class="flex-1 text-center text-sm font-medium underline-offset-2 hover:underline md:flex-auto md:text-left"
    >
      {{ item.description?.replace(/\.$/, "") }}
    </a>
    <div class="ml-auto flex items-center gap-2">
      <div class="h-8 items-center gap-1.5 rounded-md border p-1 shadow-none">
        <ToggleGroup
          type="single"
          :default-value="100"
          class="gap-1 *:data-[slot=toggle-group-item]:!size-6 *:data-[slot=toggle-group-item]:!rounded-sm"
          @update:model-value="(value) => {
            view = 'preview'
            if (resizablePanelRef) {
              resizablePanelRef.resize(value as number)
            }
          }"
        >
          <ToggleGroupItem value="100" title="Desktop">
            <Monitor />
          </ToggleGroupItem>
          <ToggleGroupItem value="60" title="Tablet">
            <Tablet />
          </ToggleGroupItem>
          <ToggleGroupItem value="30" title="Mobile">
            <Smartphone />
          </ToggleGroupItem>
          <Separator orientation="vertical" class="!h-4" />
          <Button
            size="icon"
            variant="ghost"
            class="size-6 rounded-sm p-0"
            as-child
            title="Open in New Tab"
          >
            <NuxtLink :to="`/view/${item.name}`" target="_blank">
              <span class="sr-only">Open in New Tab</span>
              <Fullscreen />
            </NuxtLink>
          </Button>
          <Separator orientation="vertical" class="!h-4" />
          <Button
            size="icon"
            variant="ghost"
            class="size-6 rounded-sm p-0"
            title="Refresh Preview"

            @click="() => {
              if (iframeKey)
                iframeKey += 1
            }"
          >
            <RotateCw />
            <span class="sr-only">Refresh Preview</span>
          </Button>
        </ToggleGroup>
      </div>
      <Separator orientation="vertical" class="mx-1 !h-4" />
      <Button
        variant="outline"
        class="w-fit gap-1 px-2 shadow-none"
        size="sm"
        @click="() => {
          copy(`npx shadcn-vue@latest add ${item.name}`)

        }"
      >
        <Check v-if="copied" />
        <Terminal v-else />
        <span>npx shadcn-vue add {{ item.name }}</span>
      </Button>
    </div>
  </div>
</template>


================================================
FILE: apps/v4/components/BlockViewerTree.vue
================================================
<script setup lang="ts">
import type { FileTree } from '@/lib/registry'
import {
  ChevronRight,
  File,
  Folder,
} from 'lucide-vue-next'
import {
  Collapsible,
  CollapsibleContent,
  CollapsibleTrigger,
} from '@/registry/new-york-v4/ui/collapsible'
import {
  SidebarMenuButton,
  SidebarMenuItem,
  SidebarMenuSub,
} from '@/registry/new-york-v4/ui/sidebar'

import { useBlockViewer } from './BlockViewer.vue'

const props = defineProps<{
  item: FileTree
  index: number
}>()

const { activeFile } = useBlockViewer()
</script>

<template>
  <SidebarMenuItem v-if="!item.children">
    <SidebarMenuButton
      :is-active="item.path === activeFile"
      class="hover:bg-muted-foreground/15 focus:bg-muted-foreground/15 focus-visible:bg-muted-foreground/15 active:bg-muted-foreground/15 data-[active=true]:bg-muted-foreground/15 rounded-none pl-(--index) whitespace-nowrap"
      :data-index="index"
      :style="{ '--index': `${index * (index === 2 ? 1.2 : 1.3)}rem` }
      "
      @click="() => {
        if (item.path)
          activeFile = item.path
      }"
    >
      <ChevronRight class="invisible" />
      <File class="h-4 w-4" />
      {{ item.name }}
    </SidebarMenuButton>
  </SidebarMenuItem>

  <SidebarMenuItem v-else>
    <Collapsible
      class="group/collapsible [&[data-state=open]>button>svg:first-child]:rotate-90"
      default-open
    >
      <CollapsibleTrigger as-child>
        <SidebarMenuButton
          class="hover:bg-muted-foreground/15 focus:bg-muted-foreground/15 focus-visible:bg-muted-foreground/15 active:bg-muted-foreground/15 data-[active=true]:bg-muted-foreground/15 rounded-none pl-(--index) whitespace-nowrap"
          :style="{ '--index': `${index * (index === 1 ? 1 : 1.2)}rem` } "
        >
          <ChevronRight class="transition-transform" />
          <Folder />
          {{ item.name }}
        </SidebarMenuButton>
      </CollapsibleTrigger>
      <CollapsibleContent>
        <SidebarMenuSub class="m-0 w-full translate-x-0 border-none p-0">
          <BlockViewerTree v-for="(subItem, key) in item.children" :key="key" :item="subItem" :index="index + 1" />
        </SidebarMenuSub>
      </CollapsibleContent>
    </Collapsible>
  </SidebarMenuItem>
</template>


================================================
FILE: apps/v4/components/BlockViewerView.vue
================================================
<script setup lang="ts">
import { SplitterPanel as ResizablePanel } from 'reka-ui'
import { ResizableHandle, ResizablePanelGroup } from '~/registry/new-york-v4/ui/resizable'
import { useBlockViewer } from './BlockViewer.vue'

const { resizablePanelRef } = useBlockViewer()
</script>

<template>
  <div class="hidden group-data-[view=code]/block-view-wrapper:hidden md:h-(--height) lg:flex">
    <div class="relative grid w-full gap-4">
      <div class="absolute inset-0 right-4 [background-image:radial-gradient(#d4d4d4_1px,transparent_1px)] [background-size:20px_20px] dark:[background-image:radial-gradient(#404040_1px,transparent_1px)]" />
      <ResizablePanelGroup
        direction="horizontal"
        class="after:bg-surface/50 relative z-10 after:absolute after:inset-0 after:right-3 after:z-0 after:rounded-xl"
      >
        <ResizablePanel
          ref="resizablePanelRef"
          data-slot="resizable-panel"
          class="bg-background relative aspect-[4/2.5] overflow-hidden rounded-lg border md:aspect-auto md:rounded-xl"
          :default-size="100"
          :min-size="30"
        >
          <BlockViewerIframe />
        </ResizablePanel>
        <ResizableHandle class="after:bg-border relative hidden w-3 bg-transparent p-0 after:absolute after:top-1/2 after:right-0 after:h-8 after:w-[6px] after:translate-x-[-1px] after:-translate-y-1/2 after:rounded-full after:transition-all after:hover:h-10 md:block" />
        <ResizablePanel :default-size="0" :min-size="0" />
      </ResizablePanelGroup>
    </div>
  </div>
</template>


================================================
FILE: apps/v4/components/BlocksNav.vue
================================================
<script setup lang="ts">
import { ScrollArea, ScrollBar } from '@/registry/new-york-v4/ui/scroll-area'
import { registryCategories } from '~/lib/categories'

const { path } = toRefs(useRoute())
</script>

<template>
  <div class="relative overflow-hidden">
    <ScrollArea class="max-w-none">
      <div class="flex items-center">
        <NuxtLink
          :to="`/blocks`"
          :data-active="path === '/blocks'"
          class="text-muted-foreground hover:text-primary data-[active=true]:text-primary flex h-7 items-center justify-center px-4 text-center text-base font-medium transition-colors"
        >
          Featured
        </NuxtLink>

        <NuxtLink
          v-for="category in registryCategories.filter(i => !i.hidden)"
          :key="category.slug"
          :to="`/blocks/${category.slug}`"
          :data-active="path === `/blocks/${category.slug}`"
          class="text-muted-foreground hover:text-primary data-[active=true]:text-primary flex h-7 items-center justify-center px-4 text-center text-base font-medium transition-colors"
        >
          {{ category.name }}
        </NuxtLink>
      </div>
      <ScrollBar orientation="horizontal" class="invisible" />
    </ScrollArea>
  </div>
</template>


================================================
FILE: apps/v4/components/CarbonAds.vue
================================================
<script setup lang="ts">
import { onMounted, ref, watch } from 'vue'

const { path } = toRefs(useRoute())
const carbonOptions = {
  code: 'CW7DK27U',
  placement: 'wwwshadcn-vuecom',
}
const container = ref()

let isInitialized = false

function init() {
  if (!isInitialized) {
    isInitialized = true
    const s = document.createElement('script')
    s.type = 'text/javascript'
    s.id = '_carbonads_js'
    s.src = `//cdn.carbonads.com/carbon.js?serve=${carbonOptions.code}&placement=${carbonOptions.placement}&format=cover`
    s.async = true
    container.value.appendChild(s)
  }
}

watch(path, () => {
  if (isInitialized) {
    ;(window as any)._carbonads?.refresh()
  }
})

// no need to account for option changes during dev, we can just
// refresh the page
if (carbonOptions) {
  onMounted(() => {
    if (import.meta.env.DEV)
      return

    // if the page is loaded when aside is active, load carbon directly.
    // otherwise, only load it if the page resizes to wide enough. this avoids
    // loading carbon at all on mobile where it's never shown
    init()
  })
}
</script>

<template>
  <div ref="container" />
</template>

<style>
@reference "../assets/css/main.css";

#carbon-responsive {
  @apply !w-[238px];
}

.carbon-responsive-wrap {
	@apply !bg-muted/50 !border-0 !p-6 !rounded-lg !flex !flex-col !items-center;
}

.carbon-responsive-wrap .carbon-img {
	@apply !flex-none !rounded !overflow-hidden;
}

.carbon-responsive-wrap .carbon-text {
  @apply !text-muted-foreground !text-sm !flex-none !font-sans;
}

#carbonads .carbon-poweredby {
	@apply !bg-background !text-muted-foreground !block !text-right !text-[10px] !uppercase !no-underline;
}
</style>


================================================
FILE: apps/v4/components/ChartDisplay.vue
================================================
<script lang="ts">
import type { registryItemSchema } from 'shadcn-vue/schema'
import type { z } from 'zod'
import { fixImport } from '~/lib/registry-utils'
import { cn } from '~/lib/utils'

export type Chart = z.infer<typeof registryItemSchema> & {
  // highlightedCode: string
}
</script>

<script setup lang="ts">
import type { HTMLAttributes } from 'vue'

const props = defineProps<{
  name: string
  class?: HTMLAttributes['class']
}>()

const code = fixImport((await import(`@/registry/new-york-v4/charts/${props.name}.vue?raw`)).default)
</script>

<template>
  <div
    :class="cn(
      'themes-wrapper group relative flex flex-col overflow-hidden rounded-xl border transition-all duration-200 ease-in-out hover:z-30',
      props.class,
    )"
  >
    <ChartToolbar
      :name
      :code
      class="bg-card text-card-foreground relative z-20 flex justify-end border-b px-3 py-2.5"
    >
      <slot />
    </ChartToolbar>
    <div class="relative z-10 [&>div]:rounded-none [&>div]:border-none [&>div]:shadow-none">
      <slot />
    </div>
  </div>
</template>


================================================
FILE: apps/v4/components/ChartToolbar.vue
================================================
<script setup lang="ts">
import type { HTMLAttributes } from 'vue'
import {
  AreaChartIcon,
  BarChartBigIcon,
  HexagonIcon,
  LineChartIcon,
  MousePointer2Icon,
  PieChartIcon,
  RadarIcon,
} from 'lucide-vue-next'
import { Separator } from '@/registry/new-york-v4/ui/separator'
import { cn } from '~/lib/utils'
import TooltipProvider from '~/registry/new-york-v4/ui/tooltip/TooltipProvider.vue'

const props = defineProps<{
  name: string
  code: string
  class?: HTMLAttributes['class']
}>()
</script>

<template>
  <div :class="cn('flex items-center gap-2', props.class)">
    <div class="text-muted-foreground flex items-center gap-1.5 pl-1 text-[13px] [&>svg]:h-[0.9rem] [&>svg]:w-[0.9rem]">
      <template v-if="name.includes('ChartLine')">
        <LineChartIcon /> Line Chart
      </template>
      <template v-else-if="name.includes('ChartBar')">
        <BarChartBigIcon /> Bar Chart
      </template>
      <template v-else-if="name.includes('ChartPie')">
        <PieChartIcon /> Pie Chart
      </template>
      <template v-else-if="name.includes('ChartArea')">
        <AreaChartIcon /> Area Chart
      </template>
      <template v-else-if="name.includes('ChartRadar')">
        <HexagonIcon /> Radar Chart
      </template>
      <template v-else-if="name.includes('ChartRadial')">
        <RadarIcon /> Radial Chart
      </template>
      <template v-else-if="name.includes('ChartTooltip')">
        <MousePointer2Icon /> Tooltip
      </template>
    </div>
    <div class="ml-auto flex items-center gap-2 [&>form]:flex">
      <TooltipProvider>
        <CopyButton
          :value="code"
          class="[&_svg]-h-3 text-foreground hover:bg-muted dark:text-foreground h-6 w-6 rounded-[6px] bg-transparent shadow-none [&_svg]:w-3 static"
        />
      </TooltipProvider>
      <Separator
        orientation="vertical"
        class="mx-0 hidden !h-4 md:flex"
      />
      <!-- <ChartCodeViewer chart="{chart}">
        <slot />
      </ChartCodeViewer> -->
    </div>
  </div>
</template>


================================================
FILE: apps/v4/components/ChartsNav.vue
================================================
<script setup lang="ts">
import type { HTMLAttributes } from 'vue'
import { cn } from '@/lib/utils'
import { ScrollArea, ScrollBar } from '@/registry/new-york-v4/ui/scroll-area'

const props = defineProps<{
  class?: HTMLAttributes['class']
}>()

const { path } = toRefs(useRoute())

const links = [
  {
    name: 'Area Charts',
    href: '/charts/area#charts',
  },
  {
    name: 'Bar Charts',
    href: '/charts/bar#charts',
  },
  {
    name: 'Line Charts',
    href: '/charts/line#charts',
  },
  {
    name: 'Pie Charts',
    href: '/charts/pie#charts',
  },
  // {
  //   name: 'Radar Charts',
  //   href: '/charts/radar#charts',
  // },
  // {
  //   name: 'Radial Charts',
  //   href: '/charts/radial#charts',
  // },
  {
    name: 'Tooltips',
    href: '/charts/tooltip#charts',
  },
]
</script>

<template>
  <div class="relative overflow-hidden">
    <ScrollArea class="max-w-[600px] lg:max-w-none">
      <div :class="cn('flex items-center', props.class)">
        <NuxtLink
          v-for="link in links"
          :key="link.href"
          :to="link.href"
          :data-active="link.href.startsWith(path)"
          :class="cn(
            'text-muted-foreground hover:text-primary data-[active=true]:text-primary flex h-7 shrink-0 items-center justify-center px-4 text-center text-base font-medium transition-colors',
          )"
        >
          {{ link.name }}
        </NuxtLink>
      </div>
      <ScrollBar orientation="horizontal" class="invisible" />
    </ScrollArea>
  </div>
</template>


================================================
FILE: apps/v4/components/CodeBlockCommand.vue
================================================
<script setup lang="ts">
import { TerminalIcon } from 'lucide-vue-next'
import {
  Tabs,
  TabsContent,
  TabsList,
  TabsTrigger,
} from '@/registry/new-york-v4/ui/tabs'

const props = defineProps<{
  code: string
}>()

const tabs = computed(() => {
  const data = { pnpm: '', npm: '', yarn: '', bun: '' }

  if (props.code.includes('npm install')) {
    data.npm = props.code
    data.yarn = props.code.replaceAll('npm install', 'yarn add')
    data.pnpm = props.code.replaceAll('npm install', 'pnpm add')
    data.bun = props.code.replaceAll('npm install', 'bun add')
  }
  else if (props.code.includes('npx create-')) {
    data.npm = props.code
    data.yarn = props.code.replaceAll('npx create-', 'yarn create')
    data.pnpm = props.code.replaceAll('npx create-', 'pnpm create')
    data.bun = props.code.replaceAll('npx', 'bunx --bun')
  }
  else if (props.code.includes('npm create')) {
    data.npm = props.code
    data.yarn = props.code.replaceAll('npm create', 'yarn create')
    data.pnpm = props.code.replaceAll('npm create', 'pnpm create')
    data.bun = props.code.replaceAll('npm create', 'bun create')
  }
  else if (props.code.includes('npx')) {
    data.npm = props.code
    data.yarn = props.code.replaceAll('npx', 'yarn dlx')
    data.pnpm = props.code.replaceAll('npx', 'pnpm dlx')
    data.bun = props.code.replaceAll('npx', 'bunx --bun')
  }
  else if (props.code.includes('npm run')) {
    data.npm = props.code
    data.yarn = props.code.replaceAll('npm run', 'yarn')
    data.pnpm = props.code.replaceAll('npm run', 'pnpm')
    data.bun = props.code.replaceAll('npm run', 'bun')
  }

  return data
})

const { config } = useConfig()
</script>

<template>
  <div class="overflow-x-auto">
    <Tabs v-model="config.packageManager" class="gap-0">
      <div class="border-border/50 flex items-center gap-2 border-b px-3 py-1">
        <div class="bg-foreground flex size-4 items-center justify-center rounded-[1px] opacity-70">
          <TerminalIcon class="text-code size-3" />
        </div>
        <TabsList class="rounded-none bg-transparent p-0">
          <TabsTrigger v-for="key in Object.keys(tabs)" :key="key" :value="key" class="data-[state=active]:bg-accent data-[state=active]:border-input h-7 border border-transparent pt-0.5 data-[state=active]:shadow-none">
            {{ key }}
          </TabsTrigger>
        </TabsList>
      </div>

      <div class="no-scrollbar overflow-x-auto">
        <TabsContent v-for="([key, value]) in Object.entries(tabs)" :key="key" :value="key" class="mt-0 px-4 py-3.5">
          <pre class="language-bash shiki shiki-themes github-light-default github-dark"><code class="relative font-mono text-sm leading-none"><span class="line"><span>{{ value }}</span></span></code></pre>
        </TabsContent>
      </div>
    </Tabs>
    <CopyButton class="absolute top-2 right-2 z-10 size-7 opacity-70 hover:opacity-100 focus-visible:opacity-100" :value="tabs[config.packageManager]" />
  </div>
</template>


================================================
FILE: apps/v4/components/Color.vue
================================================
<script setup lang="ts">
import type { Color } from '@/lib/colors'
import { useClipboard } from '@vueuse/core'
import { Check, Clipboard } from 'lucide-vue-next'
import { toast } from 'vue-sonner'

defineProps<{
  color: Color
}>()

const { format, setLastCopied, lastCopied } = useColors()
const { copied, copy } = useClipboard()
</script>

<template>
  <button
    class="group relative flex aspect-[3/1] w-full flex-1 cursor-pointer flex-col gap-2 text-(--text) sm:aspect-[2/3] sm:h-auto sm:w-auto [&>svg]:absolute [&>svg]:top-4 [&>svg]:right-4 [&>svg]:z-10 [&>svg]:h-3.5 [&>svg]:w-3.5 [&>svg]:opacity-0 [&>svg]:transition-opacity"
    :data-last-copied="lastCopied === color[format]"
    :style="{ '--bg': `${color.oklch}`, '--text': color.foreground }"
    @click="() => {
      copy(color[format])
      setLastCopied(color[format])
      toast.success(`Copied ${color[format]} to clipboard.`)
    }"
  >
    <Check v-if="copied" class="group-hover:opacity-100 group-data-[last-copied=true]:opacity-100" />
    <Clipboard v-else class="group-hover:opacity-100" />
    <div class="border-ghost after:border-input w-full flex-1 rounded-md bg-(--bg) after:rounded-lg md:rounded-lg" />
    <div class="flex w-full flex-col items-center justify-center gap-1">
      <span class="text-muted-foreground group-hover:text-foreground group-data-[last-copied=true]:text-primary font-mono text-xs tabular-nums transition-colors sm:hidden xl:flex">
        {{ color.className }}
      </span>
      <span class="text-muted-foreground group-hover:text-foreground group-data-[last-copied=true]:text-primary hidden font-mono text-xs tabular-nums transition-colors sm:flex xl:hidden">
        {{ color.scale }}
      </span>
    </div>
  </button>
</template>


================================================
FILE: apps/v4/components/ColorFormatSelector.vue
================================================
<script setup lang="ts">
import type { HTMLAttributes } from 'vue'

import type { Color, ColorFormat } from '@/lib/colors'
import { getColorFormat } from '@/lib/colors'
import { cn } from '@/lib/utils'
import {
  Select,
  SelectContent,
  SelectItem,
  SelectTrigger,
} from '@/registry/new-york-v4/ui/select'
import { Skeleton } from '@/registry/new-york-v4/ui/skeleton'

const props = defineProps<{
  color: Color
  class?: HTMLAttributes['class']
}>()

const { format, setFormat, isLoading } = useColors()
const formats = computed(() => getColorFormat(props.color))
</script>

<template>
  <Skeleton
    v-if="isLoading"
    class="h-8 w-[132px] gap-1.5 rounded-md"
  />

  <Select v-else :model-value="format" @update:model-value="setFormat($event as ColorFormat)">
    <SelectTrigger
      size="sm"
      :class="cn(
        'bg-secondary text-secondary-foreground border-secondary shadow-none',
        props.class,
      )"
    >
      <span class="font-medium">Format: </span>
      <span class="text-muted-foreground font-mono">{{ format }}</span>
    </SelectTrigger>
    <SelectContent align="end" class="rounded-xl">
      <SelectItem
        v-for="(value, format) of formats"
        :key="format"
        :value="format"
        class="gap-2 rounded-lg [&>span]:flex [&>span]:items-center [&>span]:gap-2"
      >
        <span class="font-medium">{{ format }}</span>
        <span class="text-muted-foreground font-mono text-xs">
          {{ value }}
        </span>
      </SelectItem>
    </SelectContent>
  </Select>
</template>


================================================
FILE: apps/v4/components/ColorIndicator.vue
================================================
<script setup lang="ts">
const props = defineProps<{ color: string }>()
</script>

<template>
  <span
    class="border-border/50 inline-block size-3 border"
    :style="{
      backgroundColor: color,
    }"
  />
</template>


================================================
FILE: apps/v4/components/ColorPalette.vue
================================================
<script setup lang="ts">
import type { ColorPalette } from '@/lib/colors'
// import { ColorFormatSelector } from "@/components/color-format-selector"

defineProps<{
  colorPalette: ColorPalette
}>()
</script>

<template>
  <div :id="colorPalette.name" class="scroll-mt-20 rounded-lg">
    <div class="flex items-center px-4">
      <div class="flex-1 pl-1 text-sm font-medium">
        <h2 class="capitalize">
          {{ colorPalette.name }}
        </h2>
      </div>
      <ColorFormatSelector
        :color="colorPalette.colors[0]"
        class="ml-auto"
      />
    </div>
    <div class="flex flex-col gap-4 py-4 sm:flex-row sm:gap-2">
      <Color v-for="color in colorPalette.colors" :key="color.hex" :color="color" />
    </div>
  </div>
</template>


================================================
FILE: apps/v4/components/ColorsNav.vue
================================================
<script setup lang="ts">
import type { HTMLAttributes } from 'vue'
import { ScrollArea, ScrollBar } from '@/registry/new-york-v4/ui/scroll-area'
import { getColors } from '~/lib/colors'
import { cn } from '~/lib/utils'

const props = defineProps<{
  class?: HTMLAttributes['class']
}>()

const { path } = toRefs(useRoute())
const colors = getColors()
</script>

<template>
  <div :class="cn('flex items-center', props.class)">
    <ScrollArea class="max-w-full">
      <div class="flex items-center">
        <NuxtLink
          v-for="(colorPalette, index) in colors"
          :key="colorPalette.name"
          :to="`/colors#${colorPalette.name}`"
          :data-active="
            path?.startsWith(colorPalette.name)
              || (index === 0 && path === '/colors')
          "
          :class="cn(
            'text-muted-foreground hover:text-primary data-[active=true]:text-primary flex h-7 items-center justify-center px-4 text-center text-base font-medium capitalize transition-colors',
          )"
        >
          {{ colorPalette.name }}
        </NuxtLink>
      </div>
      <ScrollBar orientation="horizontal" class="invisible" />
    </ScrollArea>
  </div>
</template>


================================================
FILE: apps/v4/components/ComponentPreviewTabs.vue
================================================
<script setup lang="ts">
import type { Component, HTMLAttributes } from 'vue'
import { cn } from '@/lib/utils'

const props = withDefaults(defineProps<{
  component: string | Component
  class?: HTMLAttributes['class']
  hideCode?: boolean
  chromeLessOnMobile?: boolean
  align?: 'center' | 'start' | 'end'
}>(), {
  align: 'center',
})
const tab = ref<'preview' | 'code'>('preview')
</script>

<template>
  <div
    :class="cn(
      'group relative mt-4 mb-12 flex flex-col gap-2 rounded-lg border',
      props.class,
    )"
  >
    <div data-slot="preview">
      <div
        :data-align="align"
        :class="cn(
          'preview flex w-full justify-center data-[align=center]:items-center data-[align=end]:items-end data-[align=start]:items-start',
          chromeLessOnMobile ? 'sm:p-10' : 'h-[450px] p-10',
        )"
      >
        <component :is="component" />
      </div>
      <div
        v-if="!hideCode"
        data-slot="code"
        class="overflow-hidden [&_[data-pretty-code-figure]]:!m-0 [&_[data-pretty-code-figure]]:rounded-t-none [&_[data-pretty-code-figure]]:border-t [&_pre]:max-h-[400px]"
      >
        <slot /> <!-- {{source}} -->
      </div>
    </div>
  </div>
</template>


================================================
FILE: apps/v4/components/ComponentSource.vue
================================================
<script setup lang="ts">
import type { HTMLAttributes } from 'vue'
import { fixImport } from '~/lib/registry-utils'
import { cn } from '~/lib/utils'
import { getIconForLanguageExtension } from './Icons'

const props = withDefaults(defineProps<{
  name?: string
  // src?: string
  title?: string
  language?: string
  collapsible?: boolean
  class?: HTMLAttributes['class']
  chromeLessOnMobile?: boolean
}>(), {
  language: 'vue',
  collapsible: true,
})

const code = fixImport((await import(`@/components/demo/${props.name}.${props.language}?raw`)).default)
</script>

<template>
  <div v-if="!collapsible" :class="cn('relative', props.class)">
    <ProsePre :code :language meta="'showLineNumbers'" :title />
  </div>
  <CodeCollapsibleWrapper v-else :class="props.class">
    <figure data-pretty-code-figure="" class="[&>pre]:max-h-96">
      <figcaption
        v-if="title"
        data-pretty-code-title=""
        class="text-code-foreground [&_svg]:text-code-foreground flex items-center gap-2 [&_svg]:size-4 [&_svg]:opacity-70"
        :data-language="language"
      >
        <component :is="getIconForLanguageExtension(language)" />
        {{ title }}
      </figcaption>
      <CopyButton :value="code" />
      <div>
        <ProsePre unwrap :code :language meta="'showLineNumbers'" :title />
      </div>
    </figure>
  </CodeCollapsibleWrapper>
</template>


================================================
FILE: apps/v4/components/ComponentWrapper.vue
================================================
<script setup lang="ts">
const props = defineProps<{
  name: string
  class?: HTMLAttributes['class']
}>()

import type { HTMLAttributes } from 'vue'
import { cn } from '@/lib/utils'

const hasError = ref(false)
onErrorCaptured(() => {
  hasError.value = true
})

function getComponentName(name: string) {
  return name.replace(/([a-z])([A-Z])/g, '$1 $2')
}

const kebabName = props.name.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase()
</script>

<template>
  <Suspense>
    <div
      v-if="!hasError"
      :id="kebabName"
      :data-name="kebabName"
      :class="cn(
        'flex w-full scroll-mt-16 flex-col rounded-lg border',
        props.class,
      )"
      v-bind="$attrs"
    >
      <div class="border-b px-4 py-3">
        <div class="text-sm font-medium">
          {{ getComponentName(name) }}
        </div>
      </div>
      <div class="flex flex-1 items-center gap-2 p-4">
        <slot />
      </div>
    </div>

    <div v-else class="p-4 text-red-500">
      Something went wrong in component: {{ name }}
    </div>
  </Suspense>
</template>


================================================
FILE: apps/v4/components/CopyButton.vue
================================================
<script setup lang="ts">
import type { HTMLAttributes } from 'vue'
import type { ButtonVariants } from '@/registry/new-york-v4/ui/button'
import { IconCheck, IconCopy } from '@tabler/icons-vue'
import { useClipboard } from '@vueuse/core'

import { toRefs } from 'vue'

import { cn } from '@/lib/utils'
import { Button } from '@/registry/new-york-v4/ui/button'
import {
  Tooltip,
  TooltipContent,
  TooltipProvider,
  TooltipTrigger,
} from '@/registry/new-york-v4/ui/tooltip'

const props = withDefaults(defineProps<{
  value?: string
  class?: HTMLAttributes['class']
  variant?: ButtonVariants['variant']
  tooltip?: string
}>(), {
  value: '',
  variant: 'ghost',
  tooltip: 'Copy to Clipboard',
})
const { value } = toRefs(props)

const { copy, copied } = useClipboard({ source: value })
</script>

<template>
  <TooltipProvider>
    <Tooltip>
      <TooltipTrigger as-child>
        <Button
          data-slot="copy-button"
          size="icon"
          :variant="variant"
          :class="cn(
            'bg-code absolute top-3 right-2 z-10 size-7 hover:opacity-100 focus-visible:opacity-100',
            props.class,
          )"
          v-bind="$attrs"
          @click="copy()"
        >
          <span class="sr-only">Copy</span>
          <IconCheck v-if="copied" /><IconCopy v-else />
        </Button>
      </TooltipTrigger>
      <TooltipContent>
        {{ copied ? "Copied" : tooltip }}
      </TooltipContent>
    </Tooltip>
  </TooltipProvider>
</template>


================================================
FILE: apps/v4/components/CopyCodeButton.vue
================================================
<script setup lang="ts">
import type { HTMLAttributes } from 'vue'
import type { ButtonVariants } from '@/registry/new-york-v4/ui/button'
import { IconCopy } from '@tabler/icons-vue'
import { Button } from '@/registry/new-york-v4/ui/button'
import {
  Dialog,
  DialogContent,
  DialogDescription,
  DialogHeader,
  DialogTitle,
  DialogTrigger,
} from '@/registry/new-york-v4/ui/dialog'
import {
  Drawer,
  DrawerContent,
  DrawerDescription,
  DrawerHeader,
  DrawerTitle,
  DrawerTrigger,
} from '@/registry/new-york-v4/ui/drawer'
import { cn } from '~/lib/utils'

defineOptions({
  inheritAttrs: false,
})

const props = defineProps<{
  class?: HTMLAttributes['class']
  size?: ButtonVariants['size']
}>()

const { config } = useConfig()
</script>

<template>
  <Drawer>
    <DrawerTrigger as-child>
      <Button :class="cn('sm:hidden', props.class)" v-bind="$attrs">
        Copy Code
      </Button>
    </DrawerTrigger>
    <DrawerContent class="h-auto">
      <DrawerHeader>
        <DrawerTitle class="capitalize">
          {{ config.activeTheme === "neutral" ? "Default" : config.activeTheme }}
        </DrawerTitle>
        <DrawerDescription>
          Copy and paste the following code into your CSS file.
        </DrawerDescription>
      </DrawerHeader>
      <CustomizerCode :theme-name="config.activeTheme" />
    </DrawerContent>
  </Drawer>
  <Dialog>
    <DialogTrigger as-child>
      <Button :data-size="props.size" :class="cn('group/button hidden sm:flex', props.class)" :size="props.size" v-bind="$attrs">
        <IconCopy />
        <span class="group-data-[size=icon-sm]/button:sr-only">
          Copy Code
        </span>
      </Button>
    </DialogTrigger>
    <DialogContent class="rounded-xl border-none bg-clip-padding shadow-2xl ring-4 ring-neutral-200/80 outline-none md:max-w-2xl dark:bg-neutral-800 dark:ring-neutral-900">
      <DialogHeader>
        <DialogTitle class="capitalize">
          {{ config.activeTheme === "neutral" ? "Default" : config.activeTheme }}
        </DialogTitle>
        <DialogDescription>
          Copy and paste the following code into your CSS file.
        </DialogDescription>
      </DialogHeader>
      <CustomizerCode :theme-name="config.activeTheme" />
    </DialogContent>
  </Dialog>
</template>


================================================
FILE: apps/v4/components/CreateProjectDialog.vue
================================================
<script setup lang="ts">
import type { PackageManager } from '@/composables/useUserConfig'
import { Tick02Icon } from '@hugeicons/core-free-icons'
import { HugeiconsIcon } from '@hugeicons/vue'
import { useClipboard } from '@vueuse/core'
import { CopyIcon } from 'lucide-vue-next'
import { Button } from '@/registry/new-york-v4/ui/button'
import {
  Dialog,
  DialogContent,
  DialogDescription,
  DialogHeader,
  DialogTitle,
} from '@/registry/new-york-v4/ui/dialog'
import {
  Tabs,
  TabsContent,
  TabsList,
  TabsTrigger,
} from '@/registry/new-york-v4/ui/tabs'
import {
  Tooltip,
  TooltipContent,
  TooltipTrigger,
} from '@/registry/new-york-v4/ui/tooltip'

const props = defineProps<{
  open: boolean
}>()

const emit = defineEmits<{
  'update:open': [value: boolean]
}>()

const params = useDesignSystemSearchParams()
const { config } = useConfig()

const TEMPLATES = [
  { value: 'nuxt', label: 'Nuxt', createCommand: 'npx nuxi@latest init' },
  { value: 'vite', label: 'Vite', createCommand: 'npm create vite@latest' },
] as const

const PACKAGE_MANAGERS: { value: PackageManager, label: string, runCommand: string }[] = [
  { value: 'pnpm', label: 'pnpm', runCommand: 'pnpm dlx' },
  { value: 'npm', label: 'npm', runCommand: 'npx' },
  { value: 'yarn', label: 'yarn', runCommand: 'yarn dlx' },
  { value: 'bun', label: 'bun', runCommand: 'bunx' },
]

const currentTemplate = computed(() => TEMPLATES.find(t => t.value === params.template.value) ?? TEMPLATES[0])
const currentPackageManager = computed(() => PACKAGE_MANAGERS.find(pm => pm.value === config.value.packageManager) ?? PACKAGE_MANAGERS[0])

function buildInitCommand() {
  const pm = currentPackageManager.value
  const parts = [`${pm.runCommand} shadcn-vue@latest init`]

  // Add style
  if (params.style.value && params.style.value !== 'vega') {
    parts.push(`--style ${params.style.value}`)
  }

  // Add base color
  if (params.baseColor.value && params.baseColor.value !== 'neutral') {
    parts.push(`--base-color ${params.baseColor.value}`)
  }

  // Add theme (primary color)
  if (params.theme.value && params.theme.value !== params.baseColor.value) {
    parts.push(`--theme ${params.theme.value}`)
  }

  // Add icon library
  if (params.iconLibrary.value && params.iconLibrary.value !== 'lucide') {
    parts.push(`--icon-library ${params.iconLibrary.value}`)
  }

  return parts.join(' \\\n  ')
}

const initCommand = computed(() => buildInitCommand())

const steps = computed(() => {
  const template = currentTemplate.value
  const pm = currentPackageManager.value

  return [
    {
      title: `Create a new ${template.label} project`,
      command: `${template.createCommand} my-app`,
    },
    {
      title: 'Navigate to the project directory',
      command: 'cd my-app',
    },
    {
      title: 'Initialize shadcn-vue with your theme',
      command: initCommand.value,
    },
    {
      title: 'Start adding components',
      command: `${pm.runCommand} shadcn-vue@latest add button`,
    },
  ]
})

const { copy, copied } = useClipboard()
const copiedIndex = ref<number | null>(null)

function copyCommand(command: string, index: number) {
  // Remove line continuations for copying
  const cleanCommand = command.replace(/\s*\\\n\s*/g, ' ')
  copy(cleanCommand)
  copiedIndex.value = index
  setTimeout(() => {
    copiedIndex.value = null
  }, 2000)
}

function handleOpenChange(value: boolean) {
  emit('update:open', value)
}
</script>

<template>
  <Dialog :open="open" @update:open="handleOpenChange">
    <DialogContent class="max-w-2xl">
      <DialogHeader>
        <DialogTitle>Create New Project</DialogTitle>
        <DialogDescription>
          Follow these steps to create a new project with your custom theme.
        </DialogDescription>
      </DialogHeader>

      <Tabs v-model="params.template.value" class="w-full">
        <div class="flex items-center justify-between gap-4">
          <TabsList class="grid w-fit grid-cols-2">
            <TabsTrigger
              v-for="template in TEMPLATES"
              :key="template.value"
              :value="template.value"
            >
              {{ template.label }}
            </TabsTrigger>
          </TabsList>

          <div class="flex items-center gap-1">
            <Button
              v-for="pm in PACKAGE_MANAGERS"
              :key="pm.value"
              variant="ghost"
              size="sm"
              class="h-7 px-2 text-xs" :class="[
                config.packageManager === pm.value
                  ? 'bg-accent text-accent-foreground'
                  : 'text-muted-foreground',
              ]"
              @click="config.packageManager = pm.value"
            >
              {{ pm.label }}
            </Button>
          </div>
        </div>

        <TabsContent
          v-for="template in TEMPLATES"
          :key="template.value"
          :value="template.value"
          class="mt-4 space-y-4"
        >
          <div
            v-for="(step, index) in steps"
            :key="index"
            class="space-y-2"
          >
            <div class="flex items-center gap-2">
              <div class="bg-primary text-primary-foreground flex size-6 shrink-0 items-center justify-center rounded-full text-xs font-medium">
                {{ index + 1 }}
              </div>
              <span class="text-sm font-medium">{{ step.title }}</span>
            </div>
            <div class="bg-muted relative ml-8 rounded-md">
              <pre class="overflow-x-auto p-3 text-sm"><code>{{ step.command }}</code></pre>
              <Tooltip>
                <TooltipTrigger as-child>
                  <Button
                    variant="ghost"
                    size="icon"
                    class="absolute top-1.5 right-1.5 size-7"
                    @click="copyCommand(step.command, index)"
                  >
                    <HugeiconsIcon
                      v-if="copiedIndex === index"
                      :icon="Tick02Icon"
                      :stroke-width="2"
                      class="size-4"
                    />
                    <CopyIcon v-else class="size-4" />
                    <span class="sr-only">Copy</span>
                  </Button>
                </TooltipTrigger>
                <TooltipContent>
                  {{ copiedIndex === index ? 'Copied!' : 'Copy' }}
                </TooltipContent>
              </Tooltip>
            </div>
          </div>
        </TabsContent>
      </Tabs>

      <div class="bg-muted/50 mt-2 rounded-lg border p-4">
        <p class="text-muted-foreground text-sm">
          <strong class="text-foreground">Note:</strong> Your theme configuration will be applied during initialization.
          You can always customize it later by editing your <code class="bg-muted rounded px-1 py-0.5">components.json</code> file.
        </p>
      </div>
    </DialogContent>
  </Dialog>
</template>


================================================
FILE: apps/v4/components/Customizer.vue
================================================
<script setup lang="ts">
import { Settings05Icon } from '@hugeicons/core-free-icons'
import { HugeiconsIcon } from '@hugeicons/vue'
import { FONTS } from '@/lib/fonts'
import { getThemesForBaseColor, PRESETS, STYLES } from '@/registry/config'
import { FieldGroup } from '@/registry/new-york-v4/ui/field'

const { baseColor } = useDesignSystemSearchParams()
const isMobile = useIsMobile()

const availableThemes = computed(() => getThemesForBaseColor(baseColor.value))

const anchorRef = ref<HTMLDivElement | null>(null)
</script>

<template>
  <div ref="anchorRef" class="no-scrollbar -mx-2.5 flex flex-col overflow-y-auto p-1 md:mx-0 md:h-[calc(100svh-var(--header-height)-2rem)] md:w-48 md:gap-0 md:py-0">
    <div class="hidden items-center gap-2 px-[calc(--spacing(2.5))] pb-1 md:flex md:flex-col md:items-start">
      <HugeiconsIcon
        :icon="Settings05Icon"
        class="size-4"
        :stroke-width="2"
      />
      <div class="relative flex flex-col gap-1 rounded-lg text-[13px]/snug">
        <div class="flex items-center gap-1 font-medium text-balance">
          Build your own theme
        </div>
        <div class="hidden md:flex">
          When you're done, click Create Project to start a new project.
        </div>
      </div>
    </div>
    <div class="no-scrollbar h-14 overflow-x-auto overflow-y-hidden p-px md:h-full md:overflow-x-hidden md:overflow-y-auto">
      <FieldGroup class="flex h-full flex-1 flex-row gap-2 md:flex-col md:gap-0">
        <PresetPicker
          :presets="PRESETS"
          :is-mobile="isMobile"
          :anchor-ref="anchorRef"
        />
        <StylePicker
          :styles="STYLES as any"
          :is-mobile="isMobile"
          :anchor-ref="anchorRef"
        />
        <BaseColorPicker
          :is-mobile="isMobile"
          :anchor-ref="anchorRef"
        />
        <ThemePicker
          :themes="availableThemes"
          :is-mobile="isMobile"
          :anchor-ref="anchorRef"
        />
        <IconLibraryPicker
          :is-mobile="isMobile"
          :anchor-ref="anchorRef"
        />
        <FontPicker
          :fonts="FONTS as any"
          :is-mobile="isMobile"
          :anchor-ref="anchorRef"
        />
        <RadiusPicker
          :is-mobile="isMobile"
          :anchor-ref="anchorRef"
        />
        <MenuColorPicker
          :is-mobile="isMobile"
          :anchor-ref="anchorRef"
        />
        <MenuAccentPicker
          :is-mobile="isMobile"
          :anchor-ref="anchorRef"
        />
        <CustomizerControls class="mt-auto hidden w-full md:flex" />
      </FieldGroup>
    </div>
  </div>
</template>


================================================
FILE: apps/v4/components/CustomizerCode.vue
================================================
<script setup lang="ts">
import type {
  BaseColor,
} from '~/registry/_legacy-base-colors'
import { IconCopy } from '@tabler/icons-vue'
import { useClipboard } from '@vueuse/core'
import { CheckIcon } from 'lucide-vue-next'
import { Icons } from '@/components/Icons'
import { Button } from '@/registry/new-york-v4/ui/button'
import {
  Tabs,
  TabsContent,
  TabsList,
  TabsTrigger,
} from '@/registry/new-york-v4/ui/tabs'
import {
  baseColors,
  baseColorsOKLCH,
} from '~/registry/_legacy-base-colors'

interface BaseColorOKLCH {
  light: Record<string, string>
  dark: Record<string, string>
}

const props = defineProps<{
  themeName: string
}>()

const tailwindVersion = ref('v4')
const activeTheme = computed(() => baseColors.find(theme => theme.name === props.themeName))
const activeThemeOKLCH = computed(() => baseColorsOKLCH[props.themeName as keyof typeof baseColorsOKLCH])

const { copy, copied } = useClipboard()

function getThemeCodeOKLCH(theme: BaseColorOKLCH | undefined, radius: number) {
  if (!theme) {
    return ''
  }

  const rootSection
    = `:root {\n  --radius: ${
      radius
    }rem;\n${
      Object.entries(theme.light)
        .map(entry => `  --${entry[0]}: ${entry[1]};`)
        .join('\n')
    }\n}\n\n.dark {\n${
      Object.entries(theme.dark)
        .map(entry => `  --${entry[0]}: ${entry[1]};`)
        .join('\n')
    }\n}\n`

  return rootSection
}

function getThemeCodeHSLV4(theme: BaseColor | undefined, radius: number) {
  if (!theme) {
    return ''
  }

  const rootSection
    = `:root {\n  --radius: ${
      radius
    }rem;\n${
      Object.entries(theme.cssVars.light)
        .map(entry => `  --${entry[0]}: hsl(${entry[1]});`)
        .join('\n')
    }\n}\n\n.dark {\n${
      Object.entries(theme.cssVars.dark)
        .map(entry => `  --${entry[0]}: hsl(${entry[1]});`)
        .join('\n')
    }\n}\n`

  return rootSection
}

function template(base: string, data: Record<string, any>) {
  return base.replace(/<%-(.*?)%>/g, (match, path) => {
    return path.trim().split(/[.[\]"']/).filter(Boolean).reduce((obj: any, key: any) => obj?.[key], data) ?? ''
  })
};

const BASE_STYLES_WITH_VARIABLES = `
@layer base {
  :root {
    --background: <%- colors.light["background"] %>;
    --foreground: <%- colors.light["foreground"] %>;
    --card: <%- colors.light["card"] %>;
    --card-foreground: <%- colors.light["card-foreground"] %>;
    --popover: <%- colors.light["popover"] %>;
    --popover-foreground: <%- colors.light["popover-foreground"] %>;
    --primary: <%- colors.light["primary"] %>;
    --primary-foreground: <%- colors.light["primary-foreground"] %>;
    --secondary: <%- colors.light["secondary"] %>;
    --secondary-foreground: <%- colors.light["secondary-foreground"] %>;
    --muted: <%- colors.light["muted"] %>;
    --muted-foreground: <%- colors.light["muted-foreground"] %>;
    --accent: <%- colors.light["accent"] %>;
    --accent-foreground: <%- colors.light["accent-foreground"] %>;
    --destructive: <%- colors.light["destructive"] %>;
    --destructive-foreground: <%- colors.light["destructive-foreground"] %>;
    --border: <%- colors.light["border"] %>;
    --input: <%- colors.light["input"] %>;
    --ring: <%- colors.light["ring"] %>;
    --radius: <%- radius %>rem;
    --chart-1: <%- colors.light["chart-1"] %>;
    --chart-2: <%- colors.light["chart-2"] %>;
    --chart-3: <%- colors.light["chart-3"] %>;
    --chart-4: <%- colors.light["chart-4"] %>;
    --chart-5: <%- colors.light["chart-5"] %>;
  }

  .dark {
    --background: <%- colors.dark["background"] %>;
    --foreground: <%- colors.dark["foreground"] %>;
    --card: <%- colors.dark["card"] %>;
    --card-foreground: <%- colors.dark["card-foreground"] %>;
    --popover: <%- colors.dark["popover"] %>;
    --popover-foreground: <%- colors.dark["popover-foreground"] %>;
    --primary: <%- colors.dark["primary"] %>;
    --primary-foreground: <%- colors.dark["primary-foreground"] %>;
    --secondary: <%- colors.dark["secondary"] %>;
    --secondary-foreground: <%- colors.dark["secondary-foreground"] %>;
    --muted: <%- colors.dark["muted"] %>;
    --muted-foreground: <%- colors.dark["muted-foreground"] %>;
    --accent: <%- colors.dark["accent"] %>;
    --accent-foreground: <%- colors.dark["accent-foreground"] %>;
    --destructive: <%- colors.dark["destructive"] %>;
    --destructive-foreground: <%- colors.dark["destructive-foreground"] %>;
    --border: <%- colors.dark["border"] %>;
    --input: <%- colors.dark["input"] %>;
    --ring: <%- colors.dark["ring"] %>;
    --chart-1: <%- colors.dark["chart-1"] %>;
    --chart-2: <%- colors.dark["chart-2"] %>;
    --chart-3: <%- colors.dark["chart-3"] %>;
    --chart-4: <%- colors.dark["chart-4"] %>;
    --chart-5: <%- colors.dark["chart-5"] %>;
  }
}
`

function getThemeCode(theme: BaseColor | undefined, radius: number) {
  if (!theme) {
    return ''
  }

  return template(BASE_STYLES_WITH_VARIABLES, {
    colors: theme.cssVars,
    radius: radius.toString(),
  })
}
</script>

<template>
  <Tabs
    v-model="tailwindVersion"
    class="min-w-0 px-4 pb-4 md:p-0"
  >
    <TabsList>
      <TabsTrigger value="v4-oklch">
        OKLCH
      </TabsTrigger>
      <TabsTrigger value="v4-hsl">
        HSL
      </TabsTrigger>
      <TabsTrigger value="v3">
        Tailwind v3
      </TabsTrigger>
    </TabsList>
    <TabsContent value="v4-oklch">
      <figure
        data-pretty-code-figure
        class="!mx-0 mt-0 rounded-lg"
      >
        <figcaption
          class="text-code-foreground [&_svg]:text-code-foreground flex items-center gap-2 [&_svg]:size-4 [&_svg]:opacity-70"
          data-pretty-code-title=""
          data-language="css"
          data-theme="github-dark github-light-default"
        >
          <Icons.css class="fill-foreground" />
          app/assets/css/tailwind.css
        </figcaption>
        <pre class="no-scrollbar max-h-[300px] min-w-0 overflow-x-auto px-4 py-3.5 outline-none has-[[data-highlighted-line]]:px-0 has-[[data-line-numbers]]:px-0 has-[[data-slot=tabs]]:p-0 md:max-h-[450px]"><code data-line-numbers data-language="css">
            <span data-line class="line text-code-foreground">&nbsp;:root &#123;</span>
            <span data-line class="line text-code-foreground">&nbsp;&nbsp;&nbsp;--radius: 0.65rem;</span>
            <span v-for="([key, value]) of Object.entries(activeThemeOKLCH.light)" :key="key" data-line class="line text-code-foreground">&nbsp;&nbsp;&nbsp;--{{ key }}: <ColorIndicator :color="value" /> {{ value }};</span>
            <span data-line class="line text-code-foreground">&nbsp;&#125;</span>
            <span data-line class="line text-code-foreground">&nbsp;</span>
            <span data-line class="line text-code-foreground">&nbsp;.dark &#123;</span>
            <span v-for="([key, value]) of Object.entries(activeThemeOKLCH.dark)" :key="key" data-line class="line text-code-foreground">&nbsp;&nbsp;&nbsp;--{{ key }}: <ColorIndicator :color="value" /> {{ value }};</span>
            <span data-line class="line text-code-foreground">&nbsp;&#125;</span>
          </code><Button
            data-slot="copy-button"
            size="icon"
            variant="ghost"
            class="bg-code text-code-foreground absolute top-3 right-2 z-10 size-7 shadow-none hover:opacity-100 focus-visible:opacity-100"
            @click="() => {
            copy(tailwindVersion === 'v3'
              ? getThemeCode(activeTheme, 0.65)
              : getThemeCodeOKLCH(activeThemeOKLCH, 0.65))
            }"
          >
          <span class="sr-only">Copy</span>
          <CheckIcon v-if="copied" />  <IconCopy v-else />
        </Button></pre>
      </figure>
    </TabsContent>

    <TabsContent value="v4-hsl">
      <figure
        data-pretty-code-figure
        class="!mx-0 mt-0 rounded-lg"
      >
        <figcaption
          class="text-code-foreground [&_svg]:text-code-foreground flex items-center gap-2 [&_svg]:size-4 [&_svg]:opacity-70"
          data-pretty-code-title=""
          data-language="css"
          data-theme="github-dark github-light-default"
        >
          <Icons.css class="fill-foreground" />
          app/assets/css/tailwind.css
        </figcaption>
        <pre class="no-scrollbar max-h-[300px] min-w-0 overflow-x-auto px-4 py-3.5 outline-none has-[[data-highlighted-line]]:px-0 has-[[data-line-numbers]]:px-0 has-[[data-slot=tabs]]:p-0 md:max-h-[450px]"><code data-line-numbers data-language="css">
            <span data-line class="line text-code-foreground">&nbsp;:root &#123;</span>
            <span data-line class="line text-code-foreground">&nbsp;&nbsp;&nbsp;--radius: 0.65rem;</span>
            <span v-for="([key, value]) of Object.entries(activeTheme?.cssVars.light || {})" :key="key" data-line class="line text-code-foreground">&nbsp;&nbsp;&nbsp;--{{ key }}: <ColorIndicator :color="`hsl(${value})`" /> hsl({{ value }});</span>
            <span data-line class="line text-code-foreground">&nbsp;&#125;</span>
            <span data-line class="line text-code-foreground">&nbsp;</span>
            <span data-line class="line text-code-foreground">&nbsp;.dark &#123;</span>
            <span v-for="([key, value]) of Object.entries(activeTheme?.cssVars.dark || {})" :key="key" data-line class="line text-code-foreground">&nbsp;&nbsp;&nbsp;--{{ key }}: <ColorIndicator :color="`hsl(${value})`" /> hsl({{ value }});</span>
            <span data-line class="line text-code-foreground">&nbsp;&#125;</span>
          </code><Button
            data-slot="copy-button"
            size="icon"
            variant="ghost"
            class="bg-code text-code-foreground absolute top-3 right-2 z-10 size-7 shadow-none hover:opacity-100 focus-visible:opacity-100"
            @click="() => {
            copy(getThemeCodeHSLV4(activeTheme, 0.65))
            }"
          >
          <span class="sr-only">Copy</span>
          <CheckIcon v-if="copied" />  <IconCopy v-else />
        </Button></pre>
      </figure>
    </TabsContent>
    <TabsContent value="v3">
      <figure
        data-pretty-code-figure
        class="!mx-0 mt-0 rounded-lg"
      >
        <figcaption
          class="text-code-foreground [&_svg]:text-code-foreground flex items-center gap-2 [&_svg]:size-4 [&_svg]:opacity-70"
          data-pretty-code-title=""
          data-language="css"
          data-theme="github-dark github-light-default"
        >
          <Icons.css class="fill-foreground" />
          app/assets/css/tailwind.css
        </figcaption>
        <pre class="no-scrollbar max-h-[300px] min-w-0 overflow-x-auto px-4 py-3.5 outline-none has-[[data-highlighted-line]]:px-0 has-[[data-line-numbers]]:px-0 has-[[data-slot=tabs]]:p-0 md:max-h-[450px]"><code data-line-numbers data-language="css">
          <span data-line class="line">@layer base &#123;</span>
          <span data-line class="line">&nbsp;&nbsp;:root &#123;</span>
          <span data-line class="line">&nbsp;&nbsp;&nbsp;&nbsp;--background: <ColorIndicator :color="`hsl(${activeTheme?.cssVars.light.background})`" /> {{ activeTheme?.cssVars.light.background }};</span>
          <span data-line class="line">&nbsp;&nbsp;&nbsp;&nbsp;--foreground: <ColorIndicator :color="`hsl(${activeTheme?.cssVars.light.foreground})`" /> {{ activeTheme?.cssVars.light.foreground }};</span>
          <template v-for="prefix in ['card', 'popover', 'primary', 'secondary', 'muted', 'accent', 'destructive']" :key="prefix">
            <span data-line class="line">&nbsp;&nbsp;&nbsp;&nbsp;--{{ prefix }}: <ColorIndicator :color="`hsl(${activeTheme?.cssVars.light[prefix as keyof typeof activeTheme.cssVars.light]})`" /> {{ activeTheme?.cssVars.light[ prefix as keyof typeof activeTheme.cssVars.light ] }};</span>
            <span data-line class="line">&nbsp;&nbsp;&nbsp;&nbsp;--{{ prefix }}-foreground: <ColorIndicator :color="`hsl(${activeTheme?.cssVars.light[`${prefix}-foreground` as keyof typeof activeTheme.cssVars.light]})`" /> {{ activeTheme?.cssVars.light[ `${prefix}-foreground` as keyof typeof activeTheme.cssVars.light ] }};</span>
          </template>
          <span data-line class="line">&nbsp;&nbsp;&nbsp;&nbsp;--border: <ColorIndicator :color="`hsl(${activeTheme?.cssVars.light.border})`" /> {{ activeTheme?.cssVars.light.border }};</span>
          <span data-line class="line">&nbsp;&nbsp;&nbsp;&nbsp;--input: <ColorIndicator :color="`hsl(${activeTheme?.cssVars.light.input})`" /> {{ activeTheme?.cssVars.light.input }};</span>
          <span data-line class="line">&nbsp;&nbsp;&nbsp;&nbsp;--ring: <ColorIndicator :color="`hsl(${activeTheme?.cssVars.light.ring})`" /> {{ activeTheme?.cssVars.light.ring }};</span>
          <span data-line class="line">&nbsp;&nbsp;&nbsp;&nbsp;--radius: 0.5rem;</span>
          <template v-for="prefix in ['chart-1', 'chart-2', 'chart-3', 'chart-4', 'chart-5']" :key="prefix">
            <span data-line class="line">&nbsp;&nbsp;&nbsp;&nbsp;--{{ prefix }}: <ColorIndicator :color="`hsl(${activeTheme?.cssVars.light[prefix as keyof typeof activeTheme.cssVars.light]})`" /> {{ activeTheme?.cssVars.light[ prefix as keyof typeof activeTheme.cssVars.light ] }};</span>
          </template>

          <span data-line class="line">&nbsp;&nbsp;&#125;</span>
          <span data-line class="line">&nbsp;</span>
          <span data-line class="line">&nbsp;&nbsp;.dark &#123;</span>
          <span data-line class="line">&nbsp;&nbsp;&nbsp;&nbsp;--background: <ColorIndicator :color="`hsl(${activeTheme?.cssVars.dark.background})`" /> {{ activeTheme?.cssVars.dark.background }};</span>
          <span data-line class="line">&nbsp;&nbsp;&nbsp;&nbsp;--foreground: <ColorIndicator :color="`hsl(${activeTheme?.cssVars.dark.foreground})`" /> {{ activeTheme?.cssVars.dark.foreground }};</span>

          <template v-for="prefix in ['card', 'popover', 'primary', 'secondary', 'muted', 'accent', 'destructive']" :key="prefix">
            <span data-line class="line">&nbsp;&nbsp;&nbsp;&nbsp;--{{ prefix }}: <ColorIndicator :color="`hsl(${activeTheme?.cssVars.dark[prefix as keyof typeof activeTheme.cssVars.dark]})`" /> {{ activeTheme?.cssVars.dark[prefix as keyof typeof activeTheme.cssVars.dark] }};</span>
            <span data-line class="line">&nbsp;&nbsp;&nbsp;&nbsp;--{{ prefix }}-foreground: <ColorIndicator :color="`hsl(${activeTheme?.cssVars.dark[`${prefix}-foreground` as keyof typeof activeTheme.cssVars.dark]})`" /> {{ activeTheme?.cssVars.dark[ `${prefix}-foreground` as keyof typeof activeTheme.cssVars.dark ] }};</span>
          </template>

          <span data-line class="line">&nbsp;&nbsp;&nbsp;&nbsp;--border: <ColorIndicator :color="`hsl(${activeTheme?.cssVars.dark.border})`" /> {{ activeTheme?.cssVars.dark.border }};</span>
          <span data-line class="line">&nbsp;&nbsp;&nbsp;&nbsp;--input: <ColorIndicator :color="`hsl(${activeTheme?.cssVars.dark.input})`" /> {{ activeTheme?.cssVars.dark.input }};</span>
          <span data-line class="line">&nbsp;&nbsp;&nbsp;&nbsp;--ring: <ColorIndicator :color="`hsl(${activeTheme?.cssVars.dark.ring})`" /> {{ activeTheme?.cssVars.dark.ring }};</span>

          <template v-for="prefix in ['chart-1', 'chart-2', 'chart-3', 'chart-4', 'chart-5']" :key="prefix">
            <span data-line class="line">&nbsp;&nbsp;&nbsp;&nbsp;--{{ prefix }}: <ColorIndicator :color="`hsl(${activeTheme?.cssVars.dark[prefix as keyof typeof activeTheme.cssVars.dark]})`" /> {{ activeTheme?.cssVars.dark[ prefix as keyof typeof activeTheme.cssVars.dark ] }};</span>
          </template>

          <span data-line class="line">&nbsp;&nbsp;&#125;</span>
          <span data-line class="line">&#125;</span>
    </code><Button
              data-slot="copy-button"
              size="icon"
              variant="ghost"
              class="bg-code text-code-foreground absolute top-3 right-2 z-10 size-7 shadow-none hover:opacity-100 focus-visible:opacity-100"
            @click="() => {
copy(tailwindVersion === 'v3'
    ? getThemeCode(activeTheme, 0.65)
    : getThemeCodeOKLCH(activeThemeOKLCH, 0.65))
              }"
            >
              <span class="sr-only">Copy</span>
              <CheckIcon v-if="copied" />  <IconCopy v-else />
            </Button></pre>
      </figure>
    </TabsContent>
  </Tabs>
</template>


================================================
FILE: apps/v4/components/CustomizerControls.vue
================================================
<script setup lang="ts">
import type { HTMLAttributes } from 'vue'
import { ShuffleIcon } from '@hugeicons/core-free-icons'
import { HugeiconsIcon } from '@hugeicons/vue'
import { useLocks } from '@/composables/useLocks'
import { FONTS } from '@/lib/fonts'
import { cn } from '@/lib/utils'
import {
  BASE_COLORS,
  getThemesForBaseColor,
  iconLibraries,
  MENU_ACCENTS,
  MENU_COLORS,
  RADII,
  STYLES,
} from '@/registry/config'
import { Button } from '@/registry/new-york-v4/ui/button'
import {
  Tooltip,
  TooltipContent,
  TooltipTrigger,
} from '@/registry/new-york-v4/ui/tooltip'

const props = defineProps<{
  class?: HTMLAttributes['class']
}>()

const params = useDesignSystemSearchParams()
const { isLocked } = useLocks()

function getRandomItem<T>(array: readonly T[]): T {
  return array[Math.floor(Math.random() * array.length)]!
}

function randomize() {
  // Randomize style if not locked
  if (!isLocked('style')) {
    params.style.value = getRandomItem(STYLES).name
  }

  // Randomize base color if not locked
  if (!isLocked('baseColor')) {
    params.baseColor.value = getRandomItem(BASE_COLORS).name
  }

  // Randomize theme if not locked (must be compatible with base color)
  if (!isLocked('theme')) {
    const availableThemes = getThemesForBaseColor(params.baseColor.value)
    params.theme.value = getRandomItem(availableThemes).name
  }

  // Randomize icon library if not locked
  if (!isLocked('iconLibrary')) {
    const iconLibraryNames = Object.keys(iconLibraries) as (keyof typeof iconLibraries)[]
    params.iconLibrary.value = getRandomItem(iconLibraryNames)
  }

  // Randomize font if not locked
  if (!isLocked('font')) {
    params.font.value = getRandomItem(FONTS).value
  }

  // Randomize radius if not locked
  if (!isLocked('radius')) {
    params.radius.value = getRandomItem(RADII).name
  }

  // Randomize menu color if not locked
  if (!isLocked('menuColor')) {
    params.menuColor.value = getRandomItem(MENU_COLORS).value
  }

  // Randomize menu accent if not locked
  if (!isLocked('menuAccent')) {
    params.menuAccent.value = getRandomItem(MENU_ACCENTS).value
  }

  // Mark as custom since we're randomizing
  params.custom.value = true
}

// Listen for keyboard shortcut (R key)
function handleKeyDown(event: KeyboardEvent) {
  if (event.key === 'r' && !event.metaKey && !event.ctrlKey && !event.altKey) {
    // Don't trigger if typing in an input
    if (event.target instanceof HTMLInputElement || event.target instanceof HTMLTextAreaElement) {
      return
    }
    event.preventDefault()
    randomize()
  }
}

onMounted(() => {
  window.addEventListener('keydown', handleKeyDown)
})

onUnmounted(() => {
  window.removeEventListener('keydown', handleKeyDown)
})
</script>

<template>
  <div :class="cn('flex items-center gap-2', props.class)">
    <Tooltip>
      <TooltipTrigger as-child>
        <Button
          variant="outline"
          size="sm"
          class="gap-2"
          @click="randomize"
        >
          <HugeiconsIcon
            :icon="ShuffleIcon"
            :stroke-width="2"
            class="size-4"
          />
          <span class="hidden sm:inline">Randomize</span>
        </Button>
      </TooltipTrigger>
      <TooltipContent>
        <div class="flex items-center gap-1">
          Randomize unlocked options
          <kbd class="bg-muted text-muted-foreground ml-1 rounded px-1.5 py-0.5 text-xs">R</kbd>
        </div>
      </TooltipContent>
    </Tooltip>
  </div>
</template>


================================================
FILE: apps/v4/components/DocsCopyPage.vue
================================================
<script setup lang="ts">
import type { ContentCollectionItem } from '@nuxt/content'

import { IconCheck, IconChevronDown, IconCopy } from '@tabler/icons-vue'
import { isClient, useClipboard } from '@vueuse/core'
import { Button } from '@/registry/new-york-v4/ui/button'
import {
  DropdownMenu,
  DropdownMenuContent,
  DropdownMenuItem,
  DropdownMenuTrigger,
} from '@/registry/new-york-v4/ui/dropdown-menu'
import {
  Popover,
  PopoverAnchor,
  PopoverContent,
  PopoverTrigger,
} from '@/registry/new-york-v4/ui/popover'
import { Separator } from '@/registry/new-york-v4/ui/separator'

const props = defineProps<{
  page: ContentCollectionItem
}>()

const url = computed(() => {
  return isClient ? window.location.href : ''
})

const route = useRoute()

function getPromptUrl(baseURL: string, url: string) {
  return `${baseURL}?q=${encodeURIComponent(
    `I’m looking at this shadcn-vue documentation: ${url}.
Help me understand how to use it. Be ready to explain concepts, give examples, or help debug based on it.
  `,
  )}`
}

import { h } from 'vue'

const menuItems = {
  markdown: (url: string) =>
    h(
      'a',
      {
        href: `${window.location.origin}/raw${route.path}.md`,
        target: '_blank',
        rel: 'noopener noreferrer',
      },
      [
        h(
          'svg',
          {
            'stroke-linejoin': 'round',
            'viewBox': '0 0 22 16',
          },
          h('path', {
            'fill-rule': 'evenodd',
            'clip-rule': 'evenodd',
            'd': 'M19.5 2.25H2.5C1.80964 2.25 1.25 2.80964 1.25 3.5V12.5C1.25 13.1904 1.80964 13.75 2.5 13.75H19.5C20.1904 13.75 20.75 13.1904 20.75 12.5V3.5C20.75 2.80964 20
Download .txt
Showing preview only (302K chars total). Download the full file or copy to clipboard to get everything.
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
│       │   │   │   │       ├── 
Download .txt
SYMBOL INDEX (884 symbols across 245 files)

FILE: apps/v4/components/Icons.ts
  type IconProps (line 5) | interface IconProps {
  function createIcon (line 11) | function createIcon(svgContent: (props: IconProps) => VNode) {
  function getIconForLanguageExtension (line 310) | function getIconForLanguageExtension(language: string) {

FILE: apps/v4/components/examples/playground/data/models.ts
  type ModelType (line 3) | type ModelType = (typeof types)[number]
  type Model (line 5) | interface Model<Type = string> {

FILE: apps/v4/components/examples/playground/data/presets.ts
  type Preset (line 1) | interface Preset {

FILE: apps/v4/components/examples/tasks/data/schema.ts
  type Task (line 13) | type Task = z.infer<typeof taskSchema>

FILE: apps/v4/composables/useColor.ts
  constant COOKIE_NAME (line 4) | const COOKIE_NAME = 'color_config'
  type Config (line 5) | interface Config {
  function useColors (line 10) | function useColors() {

FILE: apps/v4/composables/useDesignSystemProvider.ts
  function useDesignSystemProvider (line 5) | function useDesignSystemProvider() {

FILE: apps/v4/composables/useDesignSystemSearchParams.ts
  function useDesignSystemSearchParams (line 5) | function useDesignSystemSearchParams(mode: 'push' | 'replace' = 'push') {
  type DesignSystemSearchParams (line 66) | type DesignSystemSearchParams = Record<keyof ReturnType<typeof useDesign...

FILE: apps/v4/composables/useIframeMessageListener.ts
  type ParentToIframeMessage (line 3) | interface ParentToIframeMessage {
  function isInIframe (line 8) | function isInIframe() {
  function useIframeMessageListener (line 15) | function useIframeMessageListener<
  function sendToIframe (line 42) | function sendToIframe<

FILE: apps/v4/composables/useIsMac.ts
  function useIsMac (line 3) | function useIsMac() {

FILE: apps/v4/composables/useLocks.ts
  type LockableParam (line 3) | type LockableParam
  function useLocks (line 14) | function useLocks() {

FILE: apps/v4/composables/useNavigation.ts
  type NavigationItemType (line 6) | type NavigationItemType = 'page' | 'component' | 'block' | 'group'
  type NavigationItem (line 9) | interface NavigationItem {
  constant EXCLUDED_PARENT_TITLE (line 19) | const EXCLUDED_PARENT_TITLE = ['Components', 'Registry', 'Forms', 'MCP S...
  function navigationItemType (line 22) | function navigationItemType(item: ContentNavigationItem, parent: Content...
  function mapWithType (line 37) | function mapWithType(item: ContentNavigationItem, parent: ContentNavigat...
  function useNavigation (line 45) | async function useNavigation() {

FILE: apps/v4/composables/useUserConfig.ts
  constant THEMES (line 4) | const THEMES = baseColors.filter(
  constant COOKIE_NAME (line 8) | const COOKIE_NAME = 'user_config'
  type Layout (line 9) | type Layout = 'fixed' | 'full'
  type PackageManager (line 10) | type PackageManager = 'pnpm' | 'npm' | 'yarn' | 'bun'
  type InstallationType (line 11) | type InstallationType = 'cli' | 'manual'

FILE: apps/v4/constants/charts.ts
  type ChartItem (line 26) | interface ChartItem {
  type ChartGroups (line 32) | interface ChartGroups {

FILE: apps/v4/lib/blocks.ts
  function getAllBlockIds (line 4) | async function getAllBlockIds(
  function getAllBlocks (line 16) | async function getAllBlocks(

FILE: apps/v4/lib/colors.ts
  type ColorPalette (line 23) | type ColorPalette = z.infer<typeof colorPaletteSchema>
  function getColorFormat (line 25) | function getColorFormat(color: Color) {
  type ColorFormat (line 36) | type ColorFormat = keyof ReturnType<typeof getColorFormat>
  function getColors (line 38) | function getColors() {
  type Color (line 80) | type Color = ReturnType<typeof getColors>[number]['colors'][number]
  function getForegroundFromBackground (line 82) | function getForegroundFromBackground(rgb: string) {

FILE: apps/v4/lib/config.ts
  constant META_THEME_COLORS (line 39) | const META_THEME_COLORS = {

FILE: apps/v4/lib/constants.ts
  constant ALLOWED_ITEM_TYPES (line 1) | const ALLOWED_ITEM_TYPES = ['registry:block', 'registry:example']

FILE: apps/v4/lib/create.ts
  function groupItemsByType (line 26) | function groupItemsByType(

FILE: apps/v4/lib/fonts.ts
  constant FONTS (line 1) | const FONTS = [
  type Font (line 81) | type Font = (typeof FONTS)[number]

FILE: apps/v4/lib/registry-utils.ts
  function fixImport (line 1) | function fixImport(content: string) {

FILE: apps/v4/lib/registry.ts
  function getRegistryComponent (line 14) | function getRegistryComponent(name: string) {
  function getRegistryItem (line 18) | async function getRegistryItem(name: string) {
  function getFileContent (line 65) | async function getFileContent(file: z.infer<typeof registryItemFileSchem...
  function getFileTarget (line 90) | function getFileTarget(file: z.infer<typeof registryItemFileSchema>) {
  function createTempSourceFile (line 119) | async function createTempSourceFile(filename: string) {
  function fixFilePaths (line 124) | function fixFilePaths(files: z.infer<typeof registryItemSchema>['files']) {
  type FileTree (line 142) | interface FileTree {
  function createFileTreeForRegistryItemFiles (line 148) | function createFileTreeForRegistryItemFiles(

FILE: apps/v4/lib/themes.ts
  constant THEMES (line 1) | const THEMES = [
  type Theme (line 31) | type Theme = (typeof THEMES)[number]

FILE: apps/v4/lib/utils.ts
  function cn (line 6) | function cn(...inputs: ClassValue[]) {
  function valueUpdater (line 10) | function valueUpdater<T extends Updater<any>>(updaterOrValue: T, ref: Re...

FILE: apps/v4/registry/_legacy-base-colors.ts
  type BaseColor (line 756) | type BaseColor = (typeof baseColors)[number]

FILE: apps/v4/registry/base-colors.ts
  constant BASE_COLORS (line 3) | const BASE_COLORS = THEMES.filter(theme =>
  type BaseColor (line 7) | type BaseColor = (typeof BASE_COLORS)[number]

FILE: apps/v4/registry/bases.ts
  constant BASES (line 4) | const BASES: z.infer<typeof registryItemSchema>[] = [
  type Base (line 51) | type Base = (typeof BASES)[number]

FILE: apps/v4/registry/bases/reka/lib/utils.ts
  function cn (line 5) | function cn(...inputs: ClassValue[]) {

FILE: apps/v4/registry/bases/reka/ui/alert/index.ts
  type AlertVariants (line 21) | type AlertVariants = VariantProps<typeof alertVariants>

FILE: apps/v4/registry/bases/reka/ui/avatar/index.ts
  type AvatarVariants (line 27) | type AvatarVariants = VariantProps<typeof avatarVariants>

FILE: apps/v4/registry/bases/reka/ui/badge/index.ts
  type BadgeVariants (line 24) | type BadgeVariants = VariantProps<typeof badgeVariants>

FILE: apps/v4/registry/bases/reka/ui/button-group/index.ts
  type ButtonGroupVariants (line 25) | type ButtonGroupVariants = VariantProps<typeof buttonGroupVariants>

FILE: apps/v4/registry/bases/reka/ui/button/index.ts
  type ButtonVariants (line 35) | type ButtonVariants = VariantProps<typeof buttonVariants>

FILE: apps/v4/registry/bases/reka/ui/calendar/index.ts
  type LayoutTypes (line 14) | type LayoutTypes = "month-and-year" | "month-only" | "year-only" | undef...

FILE: apps/v4/registry/bases/reka/ui/carousel/interface.ts
  type CarouselApi (line 7) | type CarouselApi = EmblaCarouselVueType[1]
  type UseCarouselParameters (line 8) | type UseCarouselParameters = Parameters<typeof useEmblaCarousel>
  type CarouselOptions (line 9) | type CarouselOptions = UseCarouselParameters[0]
  type CarouselPlugin (line 10) | type CarouselPlugin = UseCarouselParameters[1]
  type UnwrapRefCarouselApi (line 12) | type UnwrapRefCarouselApi = UnwrapRef<CarouselApi>
  type CarouselProps (line 14) | interface CarouselProps {
  type CarouselEmits (line 20) | interface CarouselEmits {
  type WithClassAsProps (line 24) | interface WithClassAsProps {

FILE: apps/v4/registry/bases/reka/ui/carousel/useCarousel.ts
  function scrollPrev (line 17) | function scrollPrev() {
  function scrollNext (line 20) | function scrollNext() {
  function onSelect (line 27) | function onSelect(api: CarouselApi) {
  function useCarousel (line 47) | function useCarousel() {

FILE: apps/v4/registry/bases/reka/ui/chart/index.ts
  constant THEMES (line 10) | const THEMES = { light: "", dark: ".dark" } as const
  type ChartConfig (line 12) | type ChartConfig = {
  type ChartContextProps (line 22) | interface ChartContextProps {

FILE: apps/v4/registry/bases/reka/ui/chart/utils.ts
  function serializeKey (line 10) | function serializeKey(key: Record<string, any>): string {
  type Constructor (line 14) | interface Constructor<P = any> {
  function componentToString (line 23) | function componentToString<P>(config: ChartConfig, component: Constructo...

FILE: apps/v4/registry/bases/reka/ui/empty/index.ts
  type EmptyMediaVariants (line 26) | type EmptyMediaVariants = VariantProps<typeof emptyMediaVariants>

FILE: apps/v4/registry/bases/reka/ui/field/index.ts
  type FieldVariants (line 28) | type FieldVariants = VariantProps<typeof fieldVariants>

FILE: apps/v4/registry/bases/reka/ui/form/injectionKeys.ts
  constant FORM_ITEM_INJECTION_KEY (line 3) | const FORM_ITEM_INJECTION_KEY

FILE: apps/v4/registry/bases/reka/ui/form/useFormField.ts
  function useFormField (line 5) | function useFormField() {

FILE: apps/v4/registry/bases/reka/ui/input-group/index.ts
  type InputGroupVariants (line 34) | type InputGroupVariants = VariantProps<typeof inputGroupAddonVariants>
  type InputGroupButtonVariants (line 53) | type InputGroupButtonVariants = VariantProps<typeof inputGroupButtonVari...
  type InputGroupButtonProps (line 55) | interface InputGroupButtonProps {

FILE: apps/v4/registry/bases/reka/ui/item/index.ts
  type ItemVariants (line 54) | type ItemVariants = VariantProps<typeof itemVariants>
  type ItemMediaVariants (line 55) | type ItemMediaVariants = VariantProps<typeof itemMediaVariants>

FILE: apps/v4/registry/bases/reka/ui/sidebar/index.ts
  type SidebarProps (line 5) | interface SidebarProps {
  type SidebarMenuButtonVariants (line 59) | type SidebarMenuButtonVariants = VariantProps<typeof sidebarMenuButtonVa...

FILE: apps/v4/registry/bases/reka/ui/sidebar/utils.ts
  constant SIDEBAR_COOKIE_NAME (line 4) | const SIDEBAR_COOKIE_NAME = "sidebar_state"
  constant SIDEBAR_COOKIE_MAX_AGE (line 5) | const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7
  constant SIDEBAR_WIDTH (line 6) | const SIDEBAR_WIDTH = "16rem"
  constant SIDEBAR_WIDTH_MOBILE (line 7) | const SIDEBAR_WIDTH_MOBILE = "18rem"
  constant SIDEBAR_WIDTH_ICON (line 8) | const SIDEBAR_WIDTH_ICON = "3rem"
  constant SIDEBAR_KEYBOARD_SHORTCUT (line 9) | const SIDEBAR_KEYBOARD_SHORTCUT = "b"

FILE: apps/v4/registry/bases/reka/ui/table/utils.ts
  function valueUpdater (line 6) | function valueUpdater<T>(updaterOrValue: Updater<T>, ref: Ref<T>) {

FILE: apps/v4/registry/bases/reka/ui/toggle/index.ts
  type ToggleVariants (line 27) | type ToggleVariants = VariantProps<typeof toggleVariants>

FILE: apps/v4/registry/config.ts
  constant SHADCN_VERSION (line 15) | const SHADCN_VERSION = "latest"
  type BaseName (line 24) | type BaseName = Base["name"]
  type StyleName (line 25) | type StyleName = Style["name"]
  type ThemeName (line 26) | type ThemeName = Theme["name"]
  type BaseColorName (line 27) | type BaseColorName = BaseColor["name"]
  type FontValue (line 35) | type FontValue = (typeof fontValues)[number]
  constant MENU_ACCENTS (line 37) | const MENU_ACCENTS = [
  type MenuAccent (line 42) | type MenuAccent = (typeof MENU_ACCENTS)[number]
  type MenuAccentValue (line 43) | type MenuAccentValue = MenuAccent["value"]
  constant MENU_COLORS (line 45) | const MENU_COLORS = [
  type MenuColor (line 50) | type MenuColor = (typeof MENU_COLORS)[number]
  type MenuColorValue (line 52) | type MenuColorValue = MenuColor["value"]
  constant RADII (line 54) | const RADII = [
  type Radius (line 62) | type Radius = (typeof RADII)[number]
  type RadiusValue (line 64) | type RadiusValue = Radius["name"]
  type DesignSystemConfig (line 110) | type DesignSystemConfig = z.infer<typeof designSystemConfigSchema>
  constant DEFAULT_CONFIG (line 112) | const DEFAULT_CONFIG: DesignSystemConfig = {
  type Preset (line 126) | type Preset = {
  constant PRESETS (line 132) | const PRESETS: Preset[] = [
  function getThemesForBaseColor (line 210) | function getThemesForBaseColor(baseColorName: string) {
  function getBase (line 221) | function getBase(name: BaseName) {
  function getStyle (line 225) | function getStyle(name: StyleName) {
  function getTheme (line 229) | function getTheme(name: ThemeName) {
  function getBaseColor (line 233) | function getBaseColor(name: BaseColorName) {
  function getIconLibrary (line 237) | function getIconLibrary(name: IconLibraryName) {
  function buildRegistryTheme (line 242) | function buildRegistryTheme(config: DesignSystemConfig) {
  function buildRegistryBase (line 295) | function buildRegistryBase(config: DesignSystemConfig) {

FILE: apps/v4/registry/icons/create-icon-loader.ts
  function getCache (line 16) | function getCache(libraryName: string) {
  function isIconData (line 23) | function isIconData(data: any): data is unknown[] {
  function createIconLoader (line 27) | function createIconLoader(libraryName: IconLibraryName) {

FILE: apps/v4/registry/index.ts
  constant DEPRECATED_ITEMS (line 12) | const DEPRECATED_ITEMS = [
  constant NEW_YORK_V4_STYLE (line 22) | const NEW_YORK_V4_STYLE = {

FILE: apps/v4/registry/new-york-v4/blocks/_meta.ts
  type BlockMeta (line 1) | interface BlockMeta {

FILE: apps/v4/registry/new-york-v4/lib/utils.ts
  function cn (line 5) | function cn(...inputs: ClassValue[]) {

FILE: apps/v4/registry/new-york-v4/ui/alert/index.ts
  type AlertVariants (line 24) | type AlertVariants = VariantProps<typeof alertVariants>

FILE: apps/v4/registry/new-york-v4/ui/badge/index.ts
  type BadgeVariants (line 26) | type BadgeVariants = VariantProps<typeof badgeVariants>

FILE: apps/v4/registry/new-york-v4/ui/button-group/index.ts
  type ButtonGroupVariants (line 25) | type ButtonGroupVariants = VariantProps<typeof buttonGroupVariants>

FILE: apps/v4/registry/new-york-v4/ui/button/index.ts
  type ButtonVariants (line 38) | type ButtonVariants = VariantProps<typeof buttonVariants>

FILE: apps/v4/registry/new-york-v4/ui/calendar/index.ts
  type LayoutTypes (line 14) | type LayoutTypes = "month-and-year" | "month-only" | "year-only" | undef...

FILE: apps/v4/registry/new-york-v4/ui/carousel/interface.ts
  type CarouselApi (line 7) | type CarouselApi = EmblaCarouselVueType[1]
  type UseCarouselParameters (line 8) | type UseCarouselParameters = Parameters<typeof useEmblaCarousel>
  type CarouselOptions (line 9) | type CarouselOptions = UseCarouselParameters[0]
  type CarouselPlugin (line 10) | type CarouselPlugin = UseCarouselParameters[1]
  type UnwrapRefCarouselApi (line 12) | type UnwrapRefCarouselApi = UnwrapRef<CarouselApi>
  type CarouselProps (line 14) | interface CarouselProps {
  type CarouselEmits (line 20) | interface CarouselEmits {
  type WithClassAsProps (line 24) | interface WithClassAsProps {

FILE: apps/v4/registry/new-york-v4/ui/carousel/useCarousel.ts
  function scrollPrev (line 17) | function scrollPrev() {
  function scrollNext (line 20) | function scrollNext() {
  function onSelect (line 27) | function onSelect(api: CarouselApi) {
  function useCarousel (line 47) | function useCarousel() {

FILE: apps/v4/registry/new-york-v4/ui/chart/index.ts
  constant THEMES (line 10) | const THEMES = { light: "", dark: ".dark" } as const
  type ChartConfig (line 12) | type ChartConfig = {
  type ChartContextProps (line 22) | interface ChartContextProps {

FILE: apps/v4/registry/new-york-v4/ui/chart/utils.ts
  function serializeKey (line 10) | function serializeKey(key: Record<string, any>): string {
  type Constructor (line 14) | interface Constructor<P = any> {
  function componentToString (line 23) | function componentToString<P>(config: ChartConfig, component: Constructo...

FILE: apps/v4/registry/new-york-v4/ui/empty/index.ts
  type EmptyMediaVariants (line 26) | type EmptyMediaVariants = VariantProps<typeof emptyMediaVariants>

FILE: apps/v4/registry/new-york-v4/ui/field/index.ts
  type FieldVariants (line 28) | type FieldVariants = VariantProps<typeof fieldVariants>

FILE: apps/v4/registry/new-york-v4/ui/form/injectionKeys.ts
  constant FORM_ITEM_INJECTION_KEY (line 3) | const FORM_ITEM_INJECTION_KEY

FILE: apps/v4/registry/new-york-v4/ui/form/useFormField.ts
  function useFormField (line 5) | function useFormField() {

FILE: apps/v4/registry/new-york-v4/ui/input-group/index.ts
  type InputGroupVariants (line 32) | type InputGroupVariants = VariantProps<typeof inputGroupAddonVariants>
  type InputGroupButtonVariants (line 51) | type InputGroupButtonVariants = VariantProps<typeof inputGroupButtonVari...

FILE: apps/v4/registry/new-york-v4/ui/item/index.ts
  type ItemVariants (line 53) | type ItemVariants = VariantProps<typeof itemVariants>
  type ItemMediaVariants (line 54) | type ItemMediaVariants = VariantProps<typeof itemMediaVariants>

FILE: apps/v4/registry/new-york-v4/ui/sidebar/index.ts
  type SidebarProps (line 5) | interface SidebarProps {
  type SidebarMenuButtonVariants (line 60) | type SidebarMenuButtonVariants = VariantProps<typeof sidebarMenuButtonVa...

FILE: apps/v4/registry/new-york-v4/ui/sidebar/utils.ts
  constant SIDEBAR_COOKIE_NAME (line 4) | const SIDEBAR_COOKIE_NAME = "sidebar_state"
  constant SIDEBAR_COOKIE_MAX_AGE (line 5) | const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7
  constant SIDEBAR_WIDTH (line 6) | const SIDEBAR_WIDTH = "16rem"
  constant SIDEBAR_WIDTH_MOBILE (line 7) | const SIDEBAR_WIDTH_MOBILE = "18rem"
  constant SIDEBAR_WIDTH_ICON (line 8) | const SIDEBAR_WIDTH_ICON = "3rem"
  constant SIDEBAR_KEYBOARD_SHORTCUT (line 9) | const SIDEBAR_KEYBOARD_SHORTCUT = "b"

FILE: apps/v4/registry/new-york-v4/ui/table/utils.ts
  function valueUpdater (line 6) | function valueUpdater<T>(updaterOrValue: Updater<T>, ref: Ref<T>) {

FILE: apps/v4/registry/new-york-v4/ui/toggle/index.ts
  type ToggleVariants (line 28) | type ToggleVariants = VariantProps<typeof toggleVariants>

FILE: apps/v4/registry/styles.ts
  constant STYLES (line 1) | const STYLES = [
  type Style (line 119) | type Style = (typeof STYLES)[number]

FILE: apps/v4/registry/themes.ts
  constant THEMES (line 3) | const THEMES: RegistryItem[] = [
  type Theme (line 864) | type Theme = (typeof THEMES)[number]

FILE: apps/v4/scripts/build-registry.ts
  function writeFile (line 13) | async function writeFile(path: string, payload: any) {
  function getCrawlFunction (line 24) | function getCrawlFunction(crawlType: RegistryContentType['crawlType']) {
  function buildRegistryContentType (line 38) | async function buildRegistryContentType(
  function buildBaseRegistry (line 75) | async function buildBaseRegistry(base: RegistryBase) {
  function buildRegistryIndex (line 94) | async function buildRegistryIndex() {
  function buildRegistryJsonFile (line 151) | async function buildRegistryJsonFile(base: RegistryBase) {
  function buildRegistry (line 205) | async function buildRegistry(base: RegistryBase, tempRegistryPath: strin...
  function buildPublicIndex (line 271) | async function buildPublicIndex() {
  function buildBlocksIndex (line 284) | async function buildBlocksIndex() {
  function buildBasesIndex (line 305) | async function buildBasesIndex() {
  function main (line 403) | async function main() {

FILE: apps/v4/scripts/crawl-content.ts
  type RegistryFile (line 3) | type RegistryFile = NonNullable<RegistryItem['files']>[number]
  constant BLOCK_TITLE_MAP (line 11) | const BLOCK_TITLE_MAP: Record<string, string> = {
  constant DEPENDENCIES (line 19) | const DEPENDENCIES = new Map<string, string[]>([
  constant REGISTRY_DEPENDENCY (line 32) | const REGISTRY_DEPENDENCY = '@/'
  function sanitizeString (line 34) | function sanitizeString(input: string): string {
  function getChartCategories (line 46) | function getChartCategories(componentName: string): string[] {
  function crawlUI (line 63) | async function crawlUI(rootPath: string) {
  function crawlExample (line 80) | async function crawlExample(rootPath: string) {
  function crawlBlock (line 141) | async function crawlBlock(rootPath: string) {
  function crawlChart (line 194) | async function crawlChart(rootPath: string) {
  function crawlComposables (line 240) | async function crawlComposables(rootPath: string) {
  function buildUIRegistry (line 275) | async function buildUIRegistry(componentPath: string, componentName: str...
  function buildBlockRegistry (line 316) | async function buildBlockRegistry(blockPath: string, blockName: string) {
  function getFileDependencies (line 358) | async function getFileDependencies(filename: string, sourceCode: string) {
  function getBlockMetadata (line 404) | async function getBlockMetadata(filename: string, sourceCode: string) {

FILE: apps/v4/scripts/generate-base-registry.ts
  function generateBaseRegistryFile (line 10) | async function generateBaseRegistryFile(base: RegistryBase) {
  function generateSubdirectoryRegistry (line 84) | async function generateSubdirectoryRegistry(
  function main (line 156) | async function main() {

FILE: apps/v4/scripts/registry.config.ts
  type RegistryContentType (line 3) | interface RegistryContentType {
  type RegistryBase (line 16) | interface RegistryBase {

FILE: apps/v4/scripts/seed-d1.ts
  constant OUTPUT_DIR (line 17) | const OUTPUT_DIR = resolve(import.meta.dirname, '../.output')
  constant DUMP_FILE (line 18) | const DUMP_FILE = resolve(OUTPUT_DIR, 'public/dump.content.sql')
  constant SEED_SQL_FILE (line 19) | const SEED_SQL_FILE = resolve(OUTPUT_DIR, 'seed.sql')
  constant WRANGLER_SERVER_DIR (line 22) | const WRANGLER_SERVER_DIR = resolve(OUTPUT_DIR, 'server')
  function stripRawbody (line 41) | function stripRawbody(stmt: string): string {
  constant D1_STMT_LIMIT (line 90) | const D1_STMT_LIMIT = 95_000 // bytes, conservative below D1's 100KB limit

FILE: apps/v4/server/api/block/[name].ts
  function getFileTree (line 27) | async function getFileTree(files: Array<{ path: string, target?: string ...
  function getHighlightedFiles (line 35) | async function getHighlightedFiles(files: z.infer<typeof registryItemFil...

FILE: deprecated/www/.vitepress/theme/components/CodeWrapper.ts
  function crawlSpan (line 5) | function crawlSpan(children: VNodeArrayChildren, cb: (vnode: VNode) => v...

FILE: deprecated/www/.vitepress/theme/components/theming/utils/data.ts
  type Color (line 5) | type Color
  type TeamMember (line 41) | interface TeamMember {
  type Role (line 49) | interface Role {
  type Payments (line 119) | interface Payments {

FILE: deprecated/www/.vitepress/theme/config/docs.ts
  type NavItem (line 3) | interface NavItem {
  type SidebarNavItem (line 12) | type SidebarNavItem = NavItem & {
  type NavItemWithChildren (line 16) | type NavItemWithChildren = NavItem & {
  type DocsConfig (line 20) | interface DocsConfig {
  function transformSidebarNavItemToVitePressSidebarItem (line 31) | function transformSidebarNavItemToVitePressSidebarItem(item: SidebarNavI...
  function transformSidebarNavToVitePressSidebar (line 46) | function transformSidebarNavToVitePressSidebar(items: SidebarNavItem[]):...
  type Example (line 473) | interface Example {

FILE: deprecated/www/.vitepress/theme/config/shiki.ts
  function highlight (line 22) | function highlight(code: string, lang: string) {

FILE: deprecated/www/.vitepress/theme/index.ts
  method enhanceApp (line 14) | enhanceApp({ app }) {

FILE: deprecated/www/.vitepress/theme/plugins/previewer.ts
  function addRenderRule (line 5) | function addRenderRule(type: string) {

FILE: deprecated/www/.vitepress/theme/plugins/utils.ts
  type GenerateOptions (line 6) | interface GenerateOptions {
  function isUndefined (line 13) | function isUndefined(v: any): v is undefined {
  function getPropsMap (line 17) | function getPropsMap(attrs: any[]) {
  function parseProps (line 35) | function parseProps(content: string) {

FILE: deprecated/www/.vitepress/theme/types/colors.ts
  type Color (line 1) | type Color

FILE: deprecated/www/.vitepress/theme/types/docs.ts
  type TableOfContentsItem (line 1) | interface TableOfContentsItem {
  type TableOfContents (line 8) | interface TableOfContents {

FILE: deprecated/www/.vitepress/theme/utils/codeeditor.ts
  function makeCodeSandboxParams (line 8) | function makeCodeSandboxParams(componentName: string, style: RegistrySty...
  function makeStackblitzParams (line 21) | function makeStackblitzParams(componentName: string, style: RegistryStyl...
  function constructFiles (line 72) | function constructFiles(componentName: string, style: RegistryStyle, sou...

FILE: deprecated/www/scripts/autogen.ts
  constant ROOTPATH (line 14) | const ROOTPATH = '../'
  constant OUTPUTPATH (line 15) | const OUTPUTPATH = '../src/content/meta'
  function parseTypeFromSchema (line 64) | function parseTypeFromSchema(schema: PropertyMetaSchema): string {
  function parseMeta (line 88) | function parseMeta(meta: ComponentMeta) {

FILE: deprecated/www/scripts/build-registry.ts
  type RegistryEntry (line 24) | type RegistryEntry = z.infer<typeof registryItemSchema>
  constant METADATA_NAME (line 26) | const METADATA_NAME = 'metadata.json'
  constant REGISTRY_PATH (line 27) | const REGISTRY_PATH = path.join(process.cwd(), 'src/public/r')
  constant REGISTRY_INDEX_WHITELIST (line 29) | const REGISTRY_INDEX_WHITELIST: z.infer<typeof registryItemTypeSchema>[]...
  function syncStyles (line 43) | async function syncStyles() {
  function buildRegistry (line 98) | async function buildRegistry(registry: Registry) {
  function buildStyles (line 309) | async function buildStyles(registry: Registry) {
  function buildStylesIndex (line 436) | async function buildStylesIndex() {
  function buildThemes (line 468) | async function buildThemes() {
  function buildIcons (line 767) | async function buildIcons() {
  function buildRegistryIcons (line 785) | async function buildRegistryIcons() {
  function generateRegistryFiles (line 825) | async function generateRegistryFiles(allItems: RegistryItem[]) {
  function generateRegistryFile (line 866) | async function generateRegistryFile(filename: string, exportName: string...
  function writeFile (line 878) | async function writeFile(path: string, payload: any) {
  function syncRegistry (line 886) | async function syncRegistry() {

FILE: deprecated/www/scripts/fix-import.ts
  function fixImport (line 1) | function fixImport(content: string) {

FILE: deprecated/www/src/components.d.ts
  type GlobalComponents (line 7) | interface GlobalComponents {

FILE: deprecated/www/src/content/blocks/[categories].paths.ts
  method paths (line 7) | paths() {

FILE: deprecated/www/src/examples/mail/data/mails.ts
  type Mail (line 174) | type Mail = (typeof mails)[number]
  type Account (line 194) | type Account = (typeof accounts)[number]
  type Contact (line 279) | type Contact = (typeof contacts)[number]

FILE: deprecated/www/src/examples/music/data/albums.ts
  type Album (line 1) | interface Album {

FILE: deprecated/www/src/examples/music/data/playlists.ts
  type Playlist (line 1) | type Playlist = (typeof playlists)[number]

FILE: deprecated/www/src/examples/playground/data/models.ts
  type ModelType (line 3) | type ModelType = (typeof types)[number]
  type Model (line 5) | interface Model<Type = string> {

FILE: deprecated/www/src/examples/playground/data/presets.ts
  type Preset (line 1) | interface Preset {

FILE: deprecated/www/src/examples/tasks/data/schema.ts
  type Task (line 13) | type Task = z.infer<typeof taskSchema>

FILE: deprecated/www/src/lib/utils.ts
  function cn (line 7) | function cn(...inputs: ClassValue[]) {
  function valueUpdater (line 11) | function valueUpdater<T extends Updater<any>>(updaterOrValue: T, ref: Re...

FILE: deprecated/www/src/registry/crawl-content.ts
  type RegistryFile (line 3) | type RegistryFile = NonNullable<RegistryItem["files"]>[number]
  constant DEPENDENCIES (line 13) | const DEPENDENCIES = new Map<string, string[]>([
  constant REGISTRY_DEPENDENCY (line 24) | const REGISTRY_DEPENDENCY = "@/"
  function getCategories (line 26) | function getCategories(text: string): string[] {
  function buildRegistry (line 41) | async function buildRegistry() {
  function sanitizeString (line 64) | function sanitizeString(input: string): string {
  function crawlUI (line 71) | async function crawlUI(rootPath: string) {
  function crawlExample (line 88) | async function crawlExample(rootPath: string) {
  function crawlBlock (line 128) | async function crawlBlock(rootPath: string) {
  function crawlChart (line 180) | async function crawlChart(rootPath: string) {
  function crawlComposables (line 230) | async function crawlComposables(rootPath: string) {
  function buildUIRegistry (line 266) | async function buildUIRegistry(componentPath: string, componentName: str...
  function buildBlockRegistry (line 308) | async function buildBlockRegistry(blockPath: string, blockName: string) {
  function getFileDependencies (line 347) | async function getFileDependencies(filename: string, sourceCode: string) {
  function getBlockMetadata (line 393) | async function getBlockMetadata(filename: string, sourceCode: string) {

FILE: deprecated/www/src/registry/default/lib/utils.ts
  function cn (line 7) | function cn(...inputs: ClassValue[]) {
  function valueUpdater (line 11) | function valueUpdater<T extends Updater<any>>(updaterOrValue: T, ref: Re...

FILE: deprecated/www/src/registry/default/ui/alert/index.ts
  type AlertVariants (line 24) | type AlertVariants = VariantProps<typeof alertVariants>

FILE: deprecated/www/src/registry/default/ui/auto-form/constant.ts
  constant INPUT_COMPONENTS (line 11) | const INPUT_COMPONENTS: InputComponents = {
  constant DEFAULT_ZOD_HANDLERS (line 29) | const DEFAULT_ZOD_HANDLERS: {

FILE: deprecated/www/src/registry/default/ui/auto-form/dependencies.ts
  function useDependencies (line 12) | function useDependencies(

FILE: deprecated/www/src/registry/default/ui/auto-form/interface.ts
  type FieldProps (line 5) | interface FieldProps {
  type Shape (line 13) | interface Shape {
  type InputComponents (line 21) | interface InputComponents {
  type ConfigItem (line 35) | interface ConfigItem {
  type UnwrapArray (line 48) | type UnwrapArray<T> = T extends (infer U)[] ? U : never
  type Config (line 50) | type Config<SchemaType extends object> = {
  type DependencyType (line 60) | enum DependencyType {
  type BaseDependency (line 67) | interface BaseDependency<SchemaType extends z.infer<z.ZodObject<any, any...
  type ValueDependency (line 74) | type ValueDependency<SchemaType extends z.infer<z.ZodObject<any, any>>>
  type EnumValues (line 82) | type EnumValues = readonly [string, ...string[]]
  type OptionsDependency (line 84) | type OptionsDependency<
  type Dependency (line 93) | type Dependency<SchemaType extends z.infer<z.ZodObject<any, any>>>

FILE: deprecated/www/src/registry/default/ui/auto-form/utils.ts
  type ZodObjectOrWrapped (line 4) | type ZodObjectOrWrapped
  function beautifyObjectName (line 12) | function beautifyObjectName(string: string) {
  function getIndexIfArray (line 25) | function getIndexIfArray(string: string) {
  function getBaseSchema (line 38) | function getBaseSchema<
  function getBaseType (line 56) | function getBaseType(schema: z.ZodAny) {
  function getDefaultValueInZodStack (line 64) | function getDefaultValueInZodStack(schema: z.ZodAny): any {
  function getObjectFormSchema (line 86) | function getObjectFormSchema(
  function isIndex (line 96) | function isIndex(value: unknown): value is number {
  function normalizeFormPath (line 102) | function normalizeFormPath(path: string): string {
  type NestedRecord (line 120) | type NestedRecord = Record<string, unknown> | { [k: string]: NestedRecord }
  function isNotNestedPath (line 124) | function isNotNestedPath(path: string) {
  function isObject (line 127) | function isObject(obj: unknown): obj is Record<string, unknown> {
  function isContainerValue (line 130) | function isContainerValue(value: unknown): value is Record<string, unkno...
  function cleanupNonNestedPath (line 133) | function cleanupNonNestedPath(path: string) {
  function getFromPath (line 149) | function getFromPath<TValue = unknown, TFallback = TValue>(
  type Booleanish (line 173) | type Booleanish = boolean | "true" | "false"
  function booleanishToBoolean (line 175) | function booleanishToBoolean(value: Booleanish) {
  function maybeBooleanishToBoolean (line 186) | function maybeBooleanishToBoolean(value?: Booleanish) {

FILE: deprecated/www/src/registry/default/ui/avatar/index.ts
  type AvatarVariants (line 25) | type AvatarVariants = VariantProps<typeof avatarVariant>

FILE: deprecated/www/src/registry/default/ui/badge/index.ts
  type BadgeVariants (line 26) | type BadgeVariants = VariantProps<typeof badgeVariants>

FILE: deprecated/www/src/registry/default/ui/button-group/index.ts
  type ButtonGroupVariants (line 25) | type ButtonGroupVariants = VariantProps<typeof buttonGroupVariants>

FILE: deprecated/www/src/registry/default/ui/button/index.ts
  type ButtonVariants (line 37) | type ButtonVariants = VariantProps<typeof buttonVariants>

FILE: deprecated/www/src/registry/default/ui/carousel/interface.ts
  type CarouselApi (line 7) | type CarouselApi = EmblaCarouselVueType[1]
  type UseCarouselParameters (line 8) | type UseCarouselParameters = Parameters<typeof useEmblaCarousel>
  type CarouselOptions (line 9) | type CarouselOptions = UseCarouselParameters[0]
  type CarouselPlugin (line 10) | type CarouselPlugin = UseCarouselParameters[1]
  type UnwrapRefCarouselApi (line 12) | type UnwrapRefCarouselApi = UnwrapRef<CarouselApi>
  type CarouselProps (line 14) | interface CarouselProps {
  type CarouselEmits (line 20) | interface CarouselEmits {
  type WithClassAsProps (line 24) | interface WithClassAsProps {

FILE: deprecated/www/src/registry/default/ui/carousel/useCarousel.ts
  function scrollPrev (line 17) | function scrollPrev() {
  function scrollNext (line 20) | function scrollNext() {
  function onSelect (line 27) | function onSelect(api: CarouselApi) {
  function useCarousel (line 47) | function useCarousel() {

FILE: deprecated/www/src/registry/default/ui/chart-area/index.ts
  type KeyOf (line 5) | type KeyOf<T extends Record<string, any>> = Extract<keyof T, string>
  type BaseChartProps (line 7) | interface BaseChartProps<T extends Record<string, any>> {

FILE: deprecated/www/src/registry/default/ui/chart-bar/index.ts
  type KeyOf (line 5) | type KeyOf<T extends Record<string, any>> = Extract<keyof T, string>
  type BaseChartProps (line 7) | interface BaseChartProps<T extends Record<string, any>> {

FILE: deprecated/www/src/registry/default/ui/chart-donut/index.ts
  type KeyOf (line 5) | type KeyOf<T extends Record<string, any>> = Extract<keyof T, string>
  type BaseChartProps (line 7) | interface BaseChartProps<T extends Record<string, any>> {

FILE: deprecated/www/src/registry/default/ui/chart-line/index.ts
  type KeyOf (line 5) | type KeyOf<T extends Record<string, any>> = Extract<keyof T, string>
  type BaseChartProps (line 7) | interface BaseChartProps<T extends Record<string, any>> {

FILE: deprecated/www/src/registry/default/ui/chart/index.ts
  function defaultColors (line 6) | function defaultColors(count: number = 3) {

FILE: deprecated/www/src/registry/default/ui/chart/interface.ts
  type KeyOf (line 3) | type KeyOf<T extends Record<string, any>> = Extract<keyof T, string>
  type BaseChartProps (line 5) | interface BaseChartProps<T extends Record<string, any>> {

FILE: deprecated/www/src/registry/default/ui/empty/index.ts
  type EmptyMediaVariants (line 26) | type EmptyMediaVariants = VariantProps<typeof emptyMediaVariants>

FILE: deprecated/www/src/registry/default/ui/field/index.ts
  type FieldVariants (line 28) | type FieldVariants = VariantProps<typeof fieldVariants>

FILE: deprecated/www/src/registry/default/ui/form/injectionKeys.ts
  constant FORM_ITEM_INJECTION_KEY (line 3) | const FORM_ITEM_INJECTION_KEY

FILE: deprecated/www/src/registry/default/ui/form/useFormField.ts
  function useFormField (line 5) | function useFormField() {

FILE: deprecated/www/src/registry/default/ui/input-group/index.ts
  type InputGroupVariants (line 34) | type InputGroupVariants = VariantProps<typeof inputGroupAddonVariants>
  type InputGroupButtonVariants (line 53) | type InputGroupButtonVariants = VariantProps<typeof inputGroupButtonVari...
  type InputGroupButtonProps (line 55) | interface InputGroupButtonProps {

FILE: deprecated/www/src/registry/default/ui/item/index.ts
  type ItemVariants (line 53) | type ItemVariants = VariantProps<typeof itemVariants>
  type ItemMediaVariants (line 54) | type ItemMediaVariants = VariantProps<typeof itemMediaVariants>

FILE: deprecated/www/src/registry/default/ui/sheet/index.ts
  type SheetVariants (line 32) | type SheetVariants = VariantProps<typeof sheetVariants>

FILE: deprecated/www/src/registry/default/ui/sidebar/index.ts
  type SidebarProps (line 5) | interface SidebarProps {
  type SidebarMenuButtonVariants (line 60) | type SidebarMenuButtonVariants = VariantProps<typeof sidebarMenuButtonVa...

FILE: deprecated/www/src/registry/default/ui/sidebar/utils.ts
  constant SIDEBAR_COOKIE_NAME (line 4) | const SIDEBAR_COOKIE_NAME = "sidebar_state"
  constant SIDEBAR_COOKIE_MAX_AGE (line 5) | const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7
  constant SIDEBAR_WIDTH (line 6) | const SIDEBAR_WIDTH = "16rem"
  constant SIDEBAR_WIDTH_MOBILE (line 7) | const SIDEBAR_WIDTH_MOBILE = "18rem"
  constant SIDEBAR_WIDTH_ICON (line 8) | const SIDEBAR_WIDTH_ICON = "3rem"
  constant SIDEBAR_KEYBOARD_SHORTCUT (line 9) | const SIDEBAR_KEYBOARD_SHORTCUT = "b"

FILE: deprecated/www/src/registry/default/ui/toast/index.ts
  type ToastVariants (line 33) | type ToastVariants = VariantProps<typeof toastVariants>
  type ToastProps (line 35) | interface ToastProps extends ToastRootProps {

FILE: deprecated/www/src/registry/default/ui/toast/use-toast.ts
  constant TOAST_LIMIT (line 5) | const TOAST_LIMIT = 1
  constant TOAST_REMOVE_DELAY (line 6) | const TOAST_REMOVE_DELAY = 1000000
  type StringOrVNode (line 8) | type StringOrVNode
  type ToasterToast (line 13) | type ToasterToast = ToastProps & {
  function genId (line 29) | function genId() {
  type ActionType (line 34) | type ActionType = typeof actionTypes
  type Action (line 36) | type Action
  type State (line 54) | interface State {
  function addToRemoveQueue (line 60) | function addToRemoveQueue(toastId: string) {
  function dispatch (line 79) | function dispatch(action: Action) {
  function useToast (line 124) | function useToast() {
  type Toast (line 132) | type Toast = Omit<ToasterToast, "id">
  function toast (line 134) | function toast(props: Toast) {

FILE: deprecated/www/src/registry/default/ui/toggle/index.ts
  type ToggleVariants (line 28) | type ToggleVariants = VariantProps<typeof toggleVariants>

FILE: deprecated/www/src/registry/new-york/lib/utils.ts
  function cn (line 7) | function cn(...inputs: ClassValue[]) {
  function valueUpdater (line 11) | function valueUpdater<T extends Updater<any>>(updaterOrValue: T, ref: Re...

FILE: deprecated/www/src/registry/new-york/ui/alert/index.ts
  type AlertVariants (line 24) | type AlertVariants = VariantProps<typeof alertVariants>

FILE: deprecated/www/src/registry/new-york/ui/auto-form/constant.ts
  constant INPUT_COMPONENTS (line 11) | const INPUT_COMPONENTS: InputComponents = {
  constant DEFAULT_ZOD_HANDLERS (line 29) | const DEFAULT_ZOD_HANDLERS: {

FILE: deprecated/www/src/registry/new-york/ui/auto-form/dependencies.ts
  function useDependencies (line 12) | function useDependencies(

FILE: deprecated/www/src/registry/new-york/ui/auto-form/interface.ts
  type FieldProps (line 5) | interface FieldProps {
  type Shape (line 13) | interface Shape {
  type InputComponents (line 21) | interface InputComponents {
  type ConfigItem (line 35) | interface ConfigItem {
  type UnwrapArray (line 48) | type UnwrapArray<T> = T extends (infer U)[] ? U : never
  type Config (line 50) | type Config<SchemaType extends object> = {
  type DependencyType (line 60) | enum DependencyType {
  type BaseDependency (line 67) | interface BaseDependency<SchemaType extends z.infer<z.ZodObject<any, any...
  type ValueDependency (line 74) | type ValueDependency<SchemaType extends z.infer<z.ZodObject<any, any>>>
  type EnumValues (line 82) | type EnumValues = readonly [string, ...string[]]
  type OptionsDependency (line 84) | type OptionsDependency<
  type Dependency (line 93) | type Dependency<SchemaType extends z.infer<z.ZodObject<any, any>>>

FILE: deprecated/www/src/registry/new-york/ui/auto-form/utils.ts
  type ZodObjectOrWrapped (line 4) | type ZodObjectOrWrapped
  function beautifyObjectName (line 12) | function beautifyObjectName(string: string) {
  function getIndexIfArray (line 25) | function getIndexIfArray(string: string) {
  function getBaseSchema (line 38) | function getBaseSchema<
  function getBaseType (line 56) | function getBaseType(schema: z.ZodAny) {
  function getDefaultValueInZodStack (line 64) | function getDefaultValueInZodStack(schema: z.ZodAny): any {
  function getObjectFormSchema (line 86) | function getObjectFormSchema(
  function isIndex (line 96) | function isIndex(value: unknown): value is number {
  function normalizeFormPath (line 102) | function normalizeFormPath(path: string): string {
  type NestedRecord (line 120) | type NestedRecord = Record<string, unknown> | { [k: string]: NestedRecord }
  function isNotNestedPath (line 124) | function isNotNestedPath(path: string) {
  function isObject (line 127) | function isObject(obj: unknown): obj is Record<string, unknown> {
  function isContainerValue (line 130) | function isContainerValue(value: unknown): value is Record<string, unkno...
  function cleanupNonNestedPath (line 133) | function cleanupNonNestedPath(path: string) {
  function getFromPath (line 149) | function getFromPath<TValue = unknown, TFallback = TValue>(
  type Booleanish (line 173) | type Booleanish = boolean | "true" | "false"
  function booleanishToBoolean (line 175) | function booleanishToBoolean(value: Booleanish) {
  function maybeBooleanishToBoolean (line 186) | function maybeBooleanishToBoolean(value?: Booleanish) {

FILE: deprecated/www/src/registry/new-york/ui/avatar/index.ts
  type AvatarVariants (line 25) | type AvatarVariants = VariantProps<typeof avatarVariant>

FILE: deprecated/www/src/registry/new-york/ui/badge/index.ts
  type BadgeVariants (line 26) | type BadgeVariants = VariantProps<typeof badgeVariants>

FILE: deprecated/www/src/registry/new-york/ui/button-group/index.ts
  type ButtonGroupVariants (line 25) | type ButtonGroupVariants = VariantProps<typeof buttonGroupVariants>

FILE: deprecated/www/src/registry/new-york/ui/button/index.ts
  type ButtonVariants (line 38) | type ButtonVariants = VariantProps<typeof buttonVariants>

FILE: deprecated/www/src/registry/new-york/ui/carousel/interface.ts
  type CarouselApi (line 7) | type CarouselApi = EmblaCarouselVueType[1]
  type UseCarouselParameters (line 8) | type UseCarouselParameters = Parameters<typeof useEmblaCarousel>
  type CarouselOptions (line 9) | type CarouselOptions = UseCarouselParameters[0]
  type CarouselPlugin (line 10) | type CarouselPlugin = UseCarouselParameters[1]
  type UnwrapRefCarouselApi (line 12) | type UnwrapRefCarouselApi = UnwrapRef<CarouselApi>
  type CarouselProps (line 14) | interface CarouselProps {
  type CarouselEmits (line 20) | interface CarouselEmits {
  type WithClassAsProps (line 24) | interface WithClassAsProps {

FILE: deprecated/www/src/registry/new-york/ui/carousel/useCarousel.ts
  function scrollPrev (line 17) | function scrollPrev() {
  function scrollNext (line 20) | function scrollNext() {
  function onSelect (line 27) | function onSelect(api: CarouselApi) {
  function useCarousel (line 47) | function useCarousel() {

FILE: deprecated/www/src/registry/new-york/ui/chart-area/index.ts
  type KeyOf (line 5) | type KeyOf<T extends Record<string, any>> = Extract<keyof T, string>
  type BaseChartProps (line 7) | interface BaseChartProps<T extends Record<string, any>> {

FILE: deprecated/www/src/registry/new-york/ui/chart-bar/index.ts
  type KeyOf (line 5) | type KeyOf<T extends Record<string, any>> = Extract<keyof T, string>
  type BaseChartProps (line 7) | interface BaseChartProps<T extends Record<string, any>> {

FILE: deprecated/www/src/registry/new-york/ui/chart-donut/index.ts
  type KeyOf (line 5) | type KeyOf<T extends Record<string, any>> = Extract<keyof T, string>
  type BaseChartProps (line 7) | interface BaseChartProps<T extends Record<string, any>> {

FILE: deprecated/www/src/registry/new-york/ui/chart-line/index.ts
  type KeyOf (line 5) | type KeyOf<T extends Record<string, any>> = Extract<keyof T, string>
  type BaseChartProps (line 7) | interface BaseChartProps<T extends Record<string, any>> {

FILE: deprecated/www/src/registry/new-york/ui/chart/index.ts
  function defaultColors (line 6) | function defaultColors(count: number = 3) {

FILE: deprecated/www/src/registry/new-york/ui/chart/interface.ts
  type KeyOf (line 3) | type KeyOf<T extends Record<string, any>> = Extract<keyof T, string>
  type BaseChartProps (line 5) | interface BaseChartProps<T extends Record<string, any>> {

FILE: deprecated/www/src/registry/new-york/ui/empty/index.ts
  type EmptyMediaVariants (line 26) | type EmptyMediaVariants = VariantProps<typeof emptyMediaVariants>

FILE: deprecated/www/src/registry/new-york/ui/field/index.ts
  type FieldVariants (line 28) | type FieldVariants = VariantProps<typeof fieldVariants>

FILE: deprecated/www/src/registry/new-york/ui/form/injectionKeys.ts
  constant FORM_ITEM_INJECTION_KEY (line 3) | const FORM_ITEM_INJECTION_KEY

FILE: deprecated/www/src/registry/new-york/ui/form/useFormField.ts
  function useFormField (line 5) | function useFormField() {

FILE: deprecated/www/src/registry/new-york/ui/input-group/index.ts
  type InputGroupVariants (line 34) | type InputGroupVariants = VariantProps<typeof inputGroupAddonVariants>
  type InputGroupButtonVariants (line 53) | type InputGroupButtonVariants = VariantProps<typeof inputGroupButtonVari...
  type InputGroupButtonProps (line 55) | interface InputGroupButtonProps {

FILE: deprecated/www/src/registry/new-york/ui/item/index.ts
  type ItemVariants (line 53) | type ItemVariants = VariantProps<typeof itemVariants>
  type ItemMediaVariants (line 54) | type ItemMediaVariants = VariantProps<typeof itemMediaVariants>

FILE: deprecated/www/src/registry/new-york/ui/sheet/index.ts
  type SheetVariants (line 32) | type SheetVariants = VariantProps<typeof sheetVariants>

FILE: deprecated/www/src/registry/new-york/ui/sidebar/index.ts
  type SidebarProps (line 5) | interface SidebarProps {
  type SidebarMenuButtonVariants (line 60) | type SidebarMenuButtonVariants = VariantProps<typeof sidebarMenuButtonVa...

FILE: deprecated/www/src/registry/new-york/ui/sidebar/utils.ts
  constant SIDEBAR_COOKIE_NAME (line 4) | const SIDEBAR_COOKIE_NAME = "sidebar_state"
  constant SIDEBAR_COOKIE_MAX_AGE (line 5) | const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7
  constant SIDEBAR_WIDTH (line 6) | const SIDEBAR_WIDTH = "16rem"
  constant SIDEBAR_WIDTH_MOBILE (line 7) | const SIDEBAR_WIDTH_MOBILE = "18rem"
  constant SIDEBAR_WIDTH_ICON (line 8) | const SIDEBAR_WIDTH_ICON = "3rem"
  constant SIDEBAR_KEYBOARD_SHORTCUT (line 9) | const SIDEBAR_KEYBOARD_SHORTCUT = "b"

FILE: deprecated/www/src/registry/new-york/ui/toast/index.ts
  type ToastVariants (line 33) | type ToastVariants = VariantProps<typeof toastVariants>
  type ToastProps (line 35) | interface ToastProps extends ToastRootProps {

FILE: deprecated/www/src/registry/new-york/ui/toast/use-toast.ts
  constant TOAST_LIMIT (line 5) | const TOAST_LIMIT = 1
  constant TOAST_REMOVE_DELAY (line 6) | const TOAST_REMOVE_DELAY = 1000000
  type StringOrVNode (line 8) | type StringOrVNode
  type ToasterToast (line 13) | type ToasterToast = ToastProps & {
  function genId (line 29) | function genId() {
  type ActionType (line 34) | type ActionType = typeof actionTypes
  type Action (line 36) | type Action
  type State (line 54) | interface State {
  function addToRemoveQueue (line 60) | function addToRemoveQueue(toastId: string) {
  function dispatch (line 79) | function dispatch(action: Action) {
  function useToast (line 124) | function useToast() {
  type Toast (line 132) | type Toast = Omit<ToasterToast, "id">
  function toast (line 134) | function toast(props: Toast) {

FILE: deprecated/www/src/registry/new-york/ui/toggle/index.ts
  type ToggleVariants (line 28) | type ToggleVariants = VariantProps<typeof toggleVariants>

FILE: deprecated/www/src/registry/registry-base-colors.ts
  type BaseColor (line 756) | type BaseColor = (typeof baseColors)[number]

FILE: deprecated/www/src/registry/registry-styles.ts
  type Style (line 12) | type Style = (typeof styles)[number]
  type RegistryStyle (line 13) | type RegistryStyle = Style["name"]

FILE: deprecated/www/src/stores/config.ts
  type PackageManager (line 9) | type PackageManager = 'pnpm' | 'npm' | 'yarn' | 'bun'
  type Config (line 11) | interface Config {
  type CodeConfig (line 18) | interface CodeConfig {
  constant RADII (line 24) | const RADII = [0, 0.25, 0.5, 0.75, 1]
  function useConfigStore (line 26) | function useConfigStore() {

FILE: packages/cli/scripts/rimraf.js
  function rmdir (line 3) | function rmdir(dirs) {

FILE: packages/cli/src/commands/add.ts
  function promptForRegistryComponents (line 267) | async function promptForRegistryComponents(

FILE: packages/cli/src/commands/create.ts
  constant SHADCN_VUE_URL (line 25) | const SHADCN_VUE_URL = 'https://shadcn-vue.com'
  function resolvePreset (line 125) | async function resolvePreset(value: string) {
  function validateName (line 143) | function validateName(name: string): string | true {
  function getShadcnCreateUrl (line 155) | function getShadcnCreateUrl(params?: Record<string, string>) {
  function getTemplateFiles (line 169) | function getTemplateFiles(template: string): Array<{ target: string, con...

FILE: packages/cli/src/commands/diff.ts
  function diffComponent (line 150) | async function diffComponent(
  function printDiff (line 206) | async function printDiff(diff: Change[]) {

FILE: packages/cli/src/commands/init.ts
  function runInit (line 340) | async function runInit(
  function promptForConfig (line 460) | async function promptForConfig(defaultConfig: Config | null = null) {
  function promptForMinimalConfig (line 609) | async function promptForMinimalConfig(

FILE: packages/cli/src/commands/mcp.ts
  constant SHADCN_MCP_VERSION (line 20) | const SHADCN_MCP_VERSION = 'latest'
  constant CLIENTS (line 22) | const CLIENTS = [
  constant DEPENDENCIES (line 88) | const DEPENDENCIES = [`shadcn-vue@${SHADCN_MCP_VERSION}`]
  function runMcpInit (line 237) | async function runMcpInit(options: z.infer<typeof mcpInitOptionsSchema>) {

FILE: packages/cli/src/commands/registry/build.ts
  function buildRegistry (line 48) | async function buildRegistry(opts: z.infer<typeof buildOptionsSchema>) {
  function resolveRegistryItems (line 190) | async function resolveRegistryItems(

FILE: packages/cli/src/icons/libraries.ts
  type IconLibraries (line 45) | type IconLibraries = typeof iconLibraries
  type IconLibrary (line 47) | type IconLibrary = IconLibraries[keyof IconLibraries]
  type IconLibraryName (line 49) | type IconLibraryName = keyof IconLibraries

FILE: packages/cli/src/index.ts
  function main (line 17) | async function main() {

FILE: packages/cli/src/mcp/utils.ts
  constant SHADCN_CLI_COMMAND (line 6) | const SHADCN_CLI_COMMAND = 'shadcn-vue'
  function npxShadcnVue (line 8) | async function npxShadcnVue(command: string) {
  function getMcpConfig (line 14) | async function getMcpConfig(cwd = process.cwd()) {
  function formatSearchResultsWithPagination (line 22) | function formatSearchResultsWithPagination(
  function formatRegistryItems (line 80) | function formatRegistryItems(
  function formatItemExamples (line 102) | function formatItemExamples(

FILE: packages/cli/src/migrations/migrate-icons.ts
  function migrateIcons (line 18) | async function migrateIcons(config: Config) {
  function migrateIconsFile (line 129) | async function migrateIconsFile(

FILE: packages/cli/src/preflights/preflight-add.ts
  function preFlightAdd (line 10) | async function preFlightAdd(options: z.infer<typeof addOptionsSchema>) {

FILE: packages/cli/src/preflights/preflight-build.ts
  function preFlightBuild (line 9) | async function preFlightBuild(

FILE: packages/cli/src/preflights/preflight-init.ts
  function preFlightInit (line 11) | async function preFlightInit(

FILE: packages/cli/src/preflights/preflight-migrate.ts
  function preFlightMigrate (line 11) | async function preFlightMigrate(

FILE: packages/cli/src/preflights/preflight-registry.ts
  function preFlightRegistryBuild (line 10) | async function preFlightRegistryBuild(

FILE: packages/cli/src/registry/api.ts
  function getRegistry (line 47) | async function getRegistry(
  function getRegistryItems (line 100) | async function getRegistryItems(
  function resolveRegistryItems (line 114) | async function resolveRegistryItems(
  function getRegistriesConfig (line 127) | async function getRegistriesConfig(
  function getShadcnRegistryIndex (line 160) | async function getShadcnRegistryIndex() {
  function getRegistryStyles (line 172) | async function getRegistryStyles() {
  function getRegistryIcons (line 185) | async function getRegistryIcons() {
  function getRegistryBaseColors (line 196) | async function getRegistryBaseColors() {
  function getRegistryBases (line 203) | function getRegistryBases() {
  function getRegistryVisualStyles (line 210) | function getRegistryVisualStyles() {
  function getRegistryIconLibraries (line 217) | function getRegistryIconLibraries() {
  function getRegistryFonts (line 224) | function getRegistryFonts() {
  function getRegistryBase (line 231) | function getRegistryBase(name: string) {
  function getRegistryVisualStyle (line 238) | function getRegistryVisualStyle(name: string) {
  function getRegistryIconLibrary (line 245) | function getRegistryIconLibrary(name: string) {
  function getRegistryFont (line 252) | function getRegistryFont(name: string) {
  function getRegistryPresets (line 259) | function getRegistryPresets() {
  function getRegistryPreset (line 266) | function getRegistryPreset(name: string) {
  function getRegistryBaseColor (line 270) | async function getRegistryBaseColor(baseColor: string) {
  function resolveTree (line 284) | async function resolveTree(
  function fetchTree (line 314) | async function fetchTree(
  function getItemTargetPath (line 332) | async function getItemTargetPath(
  function getRegistriesIndex (line 356) | async function getRegistriesIndex(options?: { useCache?: boolean }) {

FILE: packages/cli/src/registry/builder.ts
  constant NAME_PLACEHOLDER (line 12) | const NAME_PLACEHOLDER = "{name}"
  constant STYLE_PLACEHOLDER (line 13) | const STYLE_PLACEHOLDER = "{style}"
  constant ENV_VAR_PATTERN (line 14) | const ENV_VAR_PATTERN = /\$\{(\w+)\}/g
  constant QUERY_PARAM_SEPARATOR (line 15) | const QUERY_PARAM_SEPARATOR = "?"
  constant QUERY_PARAM_DELIMITER (line 16) | const QUERY_PARAM_DELIMITER = "&"
  function buildUrlAndHeadersForRegistryItem (line 18) | function buildUrlAndHeadersForRegistryItem(
  function buildUrlFromRegistryConfig (line 44) | function buildUrlFromRegistryConfig(
  function buildHeadersFromRegistryConfig (line 73) | function buildHeadersFromRegistryConfig(
  function appendQueryParams (line 93) | function appendQueryParams(baseUrl: string, params: Record<string, strin...
  function shouldIncludeHeader (line 115) | function shouldIncludeHeader(originalValue: string, expandedValue: strin...
  function resolveRegistryUrl (line 144) | function resolveRegistryUrl(pathOrUrl: string) {

FILE: packages/cli/src/registry/config.ts
  constant DEFAULT_BASE (line 7) | const DEFAULT_BASE = "reka"
  constant VISUAL_STYLES (line 12) | const VISUAL_STYLES = ["vega", "nova", "maia", "lyra", "mira"]
  function resolveRegistryStyle (line 19) | function resolveRegistryStyle(style: string | undefined): string {
  function resolveStyleFromConfig (line 35) | function resolveStyleFromConfig(config: Partial<Config> | Config) {
  function resolveBaseFromConfig (line 49) | function resolveBaseFromConfig(config: Partial<Config> | Config) {
  function configWithDefaults (line 57) | function configWithDefaults(config?: Partial<Config> | Config) {

FILE: packages/cli/src/registry/constants.ts
  constant REGISTRY_URL (line 4) | const REGISTRY_URL
  constant FALLBACK_STYLE (line 7) | const FALLBACK_STYLE = "new-york-v4"
  constant BASES (line 10) | const BASES = [
  constant STYLES (line 20) | const STYLES = [
  constant FONTS (line 49) | const FONTS = [
  constant ICON_LIBRARIES (line 98) | const ICON_LIBRARIES = [
  constant PRESETS (line 127) | const PRESETS = [
  constant BASE_COLORS (line 200) | const BASE_COLORS = [
  constant BUILTIN_REGISTRIES (line 224) | const BUILTIN_REGISTRIES: z.infer<typeof registryConfigSchema> = {
  constant BUILTIN_MODULES (line 228) | const BUILTIN_MODULES = new Set([
  constant DEPRECATED_COMPONENTS (line 352) | const DEPRECATED_COMPONENTS = [

FILE: packages/cli/src/registry/context.ts
  type RegistryContext (line 1) | interface RegistryContext {
  function setRegistryHeaders (line 9) | function setRegistryHeaders(
  function getRegistryHeadersFromContext (line 16) | function getRegistryHeadersFromContext(
  function clearRegistryContext (line 22) | function clearRegistryContext() {

FILE: packages/cli/src/registry/env.ts
  function expandEnvVars (line 1) | function expandEnvVars(value: string) {
  function extractEnvVars (line 5) | function extractEnvVars(value: string) {

FILE: packages/cli/src/registry/errors.ts
  type RegistryErrorCode (line 30) | type RegistryErrorCode
  class RegistryError (line 33) | class RegistryError extends Error {
    method constructor (line 41) | constructor(
    method toJSON (line 65) | toJSON() {
  class RegistryNotFoundError (line 79) | class RegistryNotFoundError extends RegistryError {
    method constructor (line 80) | constructor(public readonly url: string, cause?: unknown) {
  class RegistryUnauthorizedError (line 95) | class RegistryUnauthorizedError extends RegistryError {
    method constructor (line 96) | constructor(public readonly url: string, cause?: unknown) {
  class RegistryForbiddenError (line 111) | class RegistryForbiddenError extends RegistryError {
    method constructor (line 112) | constructor(public readonly url: string, cause?: unknown) {
  class RegistryFetchError (line 127) | class RegistryFetchError extends RegistryError {
    method constructor (line 128) | constructor(
  class RegistryNotConfiguredError (line 167) | class RegistryNotConfiguredError extends RegistryError {
    method constructor (line 168) | constructor(public readonly registryName: string | null) {
  class RegistryLocalFileError (line 188) | class RegistryLocalFileError extends RegistryError {
    method constructor (line 189) | constructor(public readonly filePath: string, cause?: unknown) {
  class RegistryParseError (line 200) | class RegistryParseError extends RegistryError {
    method constructor (line 203) | constructor(public readonly item: string, parseError: unknown) {
  class RegistryMissingEnvironmentVariablesError (line 225) | class RegistryMissingEnvironmentVariablesError extends RegistryError {
    method constructor (line 226) | constructor(
  class RegistryInvalidNamespaceError (line 244) | class RegistryInvalidNamespaceError extends RegistryError {
    method constructor (line 245) | constructor(public readonly name: string) {
  class ConfigMissingError (line 258) | class ConfigMissingError extends RegistryError {
    method constructor (line 259) | constructor(public readonly cwd: string) {
  class ConfigParseError (line 272) | class ConfigParseError extends RegistryError {
    method constructor (line 273) | constructor(public readonly cwd: string, parseError: unknown) {
  class RegistriesIndexParseError (line 301) | class RegistriesIndexParseError extends RegistryError {
    method constructor (line 304) | constructor(parseError: unknown) {

FILE: packages/cli/src/registry/fetcher.ts
  function clearRegistryCache (line 26) | function clearRegistryCache() {
  function fetchRegistry (line 30) | async function fetchRegistry(
  function fetchRegistryLocal (line 131) | async function fetchRegistryLocal(filePath: string) {

FILE: packages/cli/src/registry/namespaces.ts
  function resolveRegistryNamespaces (line 8) | async function resolveRegistryNamespaces(

FILE: packages/cli/src/registry/parser.ts
  constant REGISTRY_PATTERN (line 2) | const REGISTRY_PATTERN = /^(@[a-z0-9](?:[\w-]*[a-z0-9])?)\/(.+)$/i
  function parseRegistryAndItemFromString (line 4) | function parseRegistryAndItemFromString(name: string) {

FILE: packages/cli/src/registry/resolver.ts
  function resolveRegistryItemsFromRegistries (line 35) | function resolveRegistryItemsFromRegistries(
  function fetchRegistryItems (line 66) | async function fetchRegistryItems(
  function resolveRegistryTree (line 121) | async function resolveRegistryTree(
  function resolveDependenciesRecursively (line 363) | async function resolveDependenciesRecursively(
  function resolveRegistryDependencies (line 473) | async function resolveRegistryDependencies(
  function registryGetTheme (line 500) | async function registryGetTheme(name: string, config: Config) {
  function computeItemHash (line 576) | function computeItemHash(
  function extractItemIdentifierFromDependency (line 590) | function extractItemIdentifierFromDependency(dependency: string) {
  function topologicalSortRegistryItems (line 620) | function topologicalSortRegistryItems(

FILE: packages/cli/src/registry/schema.ts
  type RegistryItem (line 186) | type RegistryItem = z.infer<typeof registryItemSchema>
  type RegistryBaseItem (line 189) | type RegistryBaseItem = Extract<RegistryItem, { type: "registry:base" }>
  type RegistryFontItem (line 192) | type RegistryFontItem = Extract<RegistryItem, { type: "registry:font" }>
  type Registry (line 200) | type Registry = z.infer<typeof registrySchema>
  type Preset (line 287) | type Preset = z.infer<typeof presetSchema>
  type ConfigJson (line 293) | type ConfigJson = z.infer<typeof configJsonSchema>

FILE: packages/cli/src/registry/search.ts
  function searchRegistries (line 9) | async function searchRegistries(
  type SearchableItem (line 75) | type SearchableItem = z.infer<typeof searchableItemSchema>
  function searchItems (line 77) | function searchItems<
  function isUrl (line 108) | function isUrl(string: string): boolean {
  function buildRegistryItemNameFromRegistry (line 122) | function buildRegistryItemNameFromRegistry(

FILE: packages/cli/src/registry/utils.ts
  constant FILE_EXTENSIONS_FOR_LOOKUP (line 23) | const FILE_EXTENSIONS_FOR_LOOKUP = [".tsx", ".ts", ".jsx", ".js", ".css"]
  constant FILE_PATH_SKIP_LIST (line 24) | const FILE_PATH_SKIP_LIST = ["lib/utils.ts"]
  constant DEPENDENCY_SKIP_LIST (line 25) | const DEPENDENCY_SKIP_LIST = [
  function getDependencyFromModuleSpecifier (line 36) | function getDependencyFromModuleSpecifier(
  function recursivelyResolveFileImports (line 62) | async function recursivelyResolveFileImports(
  function createTempSourceFile (line 229) | async function createTempSourceFile(filename: string) {
  function determineFileType (line 236) | function determineFileType(
  function isUrl (line 259) | function isUrl(path: string) {
  function isLocalFile (line 270) | function isLocalFile(path: string) {
  function isUniversalRegistryItem (line 281) | function isUniversalRegistryItem(
  function deduplicateFilesByTarget (line 310) | async function deduplicateFilesByTarget(
  function canDeduplicateFiles (line 348) | function canDeduplicateFiles(config: Config) {

FILE: packages/cli/src/registry/validator.ts
  function extractEnvVarsFromRegistryConfig (line 10) | function extractEnvVarsFromRegistryConfig(
  function validateRegistryConfig (line 37) | function validateRegistryConfig(
  function validateRegistryConfigForItems (line 49) | function validateRegistryConfigForItems(

FILE: packages/cli/src/styles/create-style-map.ts
  constant CN_PREFIX (line 6) | const CN_PREFIX = 'cn-'
  type StyleMap (line 13) | type StyleMap = z.infer<typeof styleMapSchema>
  function createStyleMap (line 15) | function createStyleMap(input: string) {
  function normalizeSelector (line 61) | function normalizeSelector(selector: string) {
  function extractTailwindClasses (line 65) | function extractTailwindClasses(rule: postcss.Rule) {
  function findSubjectClass (line 84) | function findSubjectClass(selector: SelectorNodeRoot) {

FILE: packages/cli/src/styles/transform-style-map.test.ts
  function applyTransform (line 11) | async function applyTransform(source: string, styleMap: StyleMap) {

FILE: packages/cli/src/styles/transform-style-map.ts
  constant ALLOWLIST (line 11) | const ALLOWLIST = new Set(['cn-menu-target'])
  function isStringLiteralLike (line 13) | function isStringLiteralLike(
  function applyStyleToCvaString (line 34) | function applyStyleToCvaString(
  function applyToCvaCalls (line 75) | function applyToCvaCalls(
  function applyToClassNameAttributes (line 142) | function applyToClassNameAttributes(
  function extractCnClassesFromAttribute (line 199) | function extractCnClassesFromAttribute(initializer: Node) {
  function cleanCnClassesFromAttribute (line 230) | function cleanCnClassesFromAttribute(initializer: Node) {
  function extractCnClasses (line 264) | function extractCnClasses(str: string) {
  function extractCnClass (line 269) | function extractCnClass(str: string) {
  function removeCnClasses (line 274) | function removeCnClasses(str: string) {
  function removeEmptyArgumentsFromCnCall (line 287) | function removeEmptyArgumentsFromCnCall(callExpression: CallExpression) {
  function applyClassesToElement (line 313) | function applyClassesToElement(element: Node, tailwindClasses: string) {
  function mergeClasses (line 413) | function mergeClasses(newClasses: string, existing: string) {
  function isCnCall (line 420) | function isCnCall(call: CallExpression) {
  function applyToMergePropsCalls (line 425) | function applyToMergePropsCalls(
  function extractCnClassesFromCnCall (line 510) | function extractCnClassesFromCnCall(cnCall: CallExpression): string[] {
  function cleanCnClassesFromCnCall (line 522) | function cleanCnClassesFromCnCall(cnCall: CallExpression) {
  function applyClassesToCnCall (line 533) | function applyClassesToCnCall(

FILE: packages/cli/src/styles/transform.ts
  type TransformerStyle (line 7) | type TransformerStyle<Output = SourceFile> = (opts: {
  function transformStyle (line 12) | async function transformStyle(

FILE: packages/cli/src/utils/add-components.ts
  function addComponents (line 33) | async function addComponents(
  function addProjectComponents (line 69) | async function addProjectComponents(
  function addWorkspaceComponents (line 146) | async function addWorkspaceComponents(
  function shouldOverwriteCssVars (line 374) | async function shouldOverwriteCssVars(
  function validateFilesTarget (line 387) | function validateFilesTarget(

FILE: packages/cli/src/utils/compare.ts
  function isContentSame (line 1) | function isContentSame(

FILE: packages/cli/src/utils/create-project.ts
  constant TEMPLATES (line 13) | const TEMPLATES = {
  type TemplateType (line 19) | type TemplateType = keyof typeof TEMPLATES
  function createProject (line 21) | async function createProject(
  function createNuxtProject (line 123) | async function createNuxtProject(
  function createViteProject (line 166) | async function createViteProject(
  function createViteRouterProject (line 209) | async function createViteRouterProject(

FILE: packages/cli/src/utils/env-helpers.ts
  function isEnvFile (line 4) | function isEnvFile(filePath: string) {
  function findExistingEnvFile (line 13) | function findExistingEnvFile(targetDir: string) {
  function parseEnvContent (line 34) | function parseEnvContent(content: string) {
  function getNewEnvKeys (line 65) | function getNewEnvKeys(existingContent: string, newContent: string) {
  function mergeEnvContent (line 83) | function mergeEnvContent(existingContent: string, newContent: string) {

FILE: packages/cli/src/utils/env-loader.ts
  function loadEnvFiles (line 5) | async function loadEnvFiles(cwd: string = process.cwd()): Promise<void> {

FILE: packages/cli/src/utils/errors.ts
  constant MISSING_DIR_OR_EMPTY_PROJECT (line 1) | const MISSING_DIR_OR_EMPTY_PROJECT = '1'
  constant EXISTING_CONFIG (line 2) | const EXISTING_CONFIG = '2'
  constant MISSING_CONFIG (line 3) | const MISSING_CONFIG = '3'
  constant FAILED_CONFIG_READ (line 4) | const FAILED_CONFIG_READ = '4'
  constant TAILWIND_NOT_CONFIGURED (line 5) | const TAILWIND_NOT_CONFIGURED = '5'
  constant IMPORT_ALIAS_MISSING (line 6) | const IMPORT_ALIAS_MISSING = '6'
  constant UNSUPPORTED_FRAMEWORK (line 7) | const UNSUPPORTED_FRAMEWORK = '7'
  constant COMPONENT_URL_NOT_FOUND (line 8) | const COMPONENT_URL_NOT_FOUND = '8'
  constant COMPONENT_URL_UNAUTHORIZED (line 9) | const COMPONENT_URL_UNAUTHORIZED = '9'
  constant COMPONENT_URL_FORBIDDEN (line 10) | const COMPONENT_URL_FORBIDDEN = '10'
  constant COMPONENT_URL_BAD_REQUEST (line 11) | const COMPONENT_URL_BAD_REQUEST = '11'
  constant COMPONENT_URL_INTERNAL_SERVER_ERROR (line 12) | const COMPONENT_URL_INTERNAL_SERVER_ERROR = '12'
  constant BUILD_MISSING_REGISTRY_FILE (line 13) | const BUILD_MISSING_REGISTRY_FILE = '13'

FILE: packages/cli/src/utils/file-helper.ts
  constant FILE_BACKUP_SUFFIX (line 3) | const FILE_BACKUP_SUFFIX = '.bak'
  function createFileBackup (line 5) | function createFileBackup(filePath: string): string | null {
  function restoreFileBackup (line 21) | function restoreFileBackup(filePath: string): boolean {
  function deleteFileBackup (line 40) | function deleteFileBackup(filePath: string): boolean {

FILE: packages/cli/src/utils/fonts.ts
  type FontConfig (line 3) | type FontConfig = (typeof FONTS)[number]
  function getFont (line 8) | function getFont(name: string): FontConfig | undefined {
  function getFontImport (line 15) | function getFontImport(name: string): string {
  function getFontFamily (line 23) | function getFontFamily(name: string): string {
  function getFontVariable (line 38) | function getFontVariable(name: string): string {
  function generateFontCss (line 47) | function generateFontCss(fontName: string): {

FILE: packages/cli/src/utils/frameworks.ts
  constant FRAMEWORKS (line 1) | const FRAMEWORKS = {
  type Framework (line 60) | type Framework = (typeof FRAMEWORKS)[keyof typeof FRAMEWORKS]

FILE: packages/cli/src/utils/get-config.ts
  constant DEFAULT_STYLE (line 16) | const DEFAULT_STYLE = 'default'
  constant DEFAULT_COMPONENTS (line 17) | const DEFAULT_COMPONENTS = '@/components'
  constant DEFAULT_UTILS (line 18) | const DEFAULT_UTILS = '@/lib/utils'
  constant DEFAULT_TAILWIND_CSS (line 19) | const DEFAULT_TAILWIND_CSS = 'assets/css/tailwind.css' // decide to go w...
  constant DEFAULT_TAILWIND_CONFIG (line 20) | const DEFAULT_TAILWIND_CONFIG = 'tailwind.config.js'
  constant DEFAULT_TAILWIND_BASE_COLOR (line 21) | const DEFAULT_TAILWIND_BASE_COLOR = 'slate'
  constant DEFAULT_TYPESCRIPT_CONFIG (line 22) | const DEFAULT_TYPESCRIPT_CONFIG = './tsconfig.json'
  type Config (line 24) | type Config = z.infer<typeof configSchema>
  function getConfig (line 26) | async function getConfig(cwd: string) {
  function resolveConfigPaths (line 41) | async function resolveConfigPaths(
  function getRawConfig (line 121) | async function getRawConfig(
  function getWorkspaceConfig (line 165) | async function getWorkspaceConfig(config: Config) {
  function findPackageRoot (line 196) | async function findPackageRoot(cwd: string, resolvedPath: string) {
  function isAliasKey (line 213) | function isAliasKey(
  function findCommonRoot (line 222) | function findCommonRoot(cwd: string, resolvedPath: string) {
  function getTargetStyleFromConfig (line 238) | async function getTargetStyleFromConfig(cwd: string, fallback: string) {
  type DeepPartial (line 243) | type DeepPartial<T> = {
  function createConfig (line 254) | function createConfig(partial?: DeepPartial<Config>): Config {

FILE: packages/cli/src/utils/get-package-info.ts
  function getPackageInfo (line 5) | function getPackageInfo(

FILE: packages/cli/src/utils/get-project-info.ts
  type TailwindVersion (line 14) | type TailwindVersion = 'v3' | 'v4' | null
  type ProjectInfo (line 16) | interface ProjectInfo {
  constant PROJECT_SHARED_IGNORE (line 28) | const PROJECT_SHARED_IGNORE = [
  constant TS_CONFIG_SCHEMA (line 36) | const TS_CONFIG_SCHEMA = z.object({
  function detectFrameworkConfigFiles (line 42) | async function detectFrameworkConfigFiles(cwd: string): Promise<Framewor...
  function isTypeScriptProject (line 93) | async function isTypeScriptProject(cwd: string) {
  function getProjectInfo (line 103) | async function getProjectInfo(cwd: string): Promise<ProjectInfo | null> {
  function getTailwindVersion (line 138) | async function getTailwindVersion(
  function getTailwindCssFile (line 178) | async function getTailwindCssFile(cwd: string) {
  function getTailwindConfigFile (line 208) | async function getTailwindConfigFile(cwd: string) {
  function getTsConfigAliasPrefix (line 222) | async function getTsConfigAliasPrefix(cwd: string) {
  function getTsConfig (line 262) | async function getTsConfig(cwd: string) {
  function getProjectConfig (line 288) | async function getProjectConfig(
  function getProjectTailwindVersionFromConfig (line 338) | async function getProjectTailwindVersionFromConfig(config: {

FILE: packages/cli/src/utils/handle-error.ts
  function handleError (line 6) | function handleError(error: unknown) {

FILE: packages/cli/src/utils/icon-libraries.ts
  function getIconLibrary (line 10) | function getIconLibrary(name: string) {
  function getIconLibraryPackages (line 17) | function getIconLibraryPackages(name: string): string[] {
  function getIconImportStatement (line 25) | function getIconImportStatement(libraryName: string, iconName: string): ...
  function getIconUsageExample (line 37) | function getIconUsageExample(libraryName: string, iconName: string): str...
  constant ICON_LIBRARIES (line 46) | const ICON_LIBRARIES = {

FILE: packages/cli/src/utils/is-safe-target.ts
  function isSafeTarget (line 8) | function isSafeTarget(targetPath: string, cwd: string): boolean {

FILE: packages/cli/src/utils/logger.ts
  method error (line 5) | error(...args: unknown[]) {
  method warn (line 8) | warn(...args: unknown[]) {
  method info (line 11) | info(...args: unknown[]) {
  method success (line 14) | success(...args: unknown[]) {
  method log (line 17) | log(...args: unknown[]) {
  method break (line 20) | break() {

FILE: packages/cli/src/utils/registries.ts
  function ensureRegistriesInConfig (line 10) | async function ensureRegistriesInConfig(

FILE: packages/cli/src/utils/resolve-import.ts
  function resolveImport (line 4) | function resolveImport(importPath: string, config: TsConfigResult) {

FILE: packages/cli/src/utils/spinner.ts
  function spinner (line 4) | function spinner(

FILE: packages/cli/src/utils/templates.ts
  constant UTILS (line 1) | const UTILS = `import { type ClassValue, clsx } from 'clsx'
  constant TAILWIND_CONFIG (line 9) | const TAILWIND_CONFIG = `const animate = require("tailwindcss-animate")
  constant TAILWIND_CONFIG_WITH_VARIABLES (line 49) | const TAILWIND_CONFIG_WITH_VARIABLES = `const animate = require("tailwin...

FILE: packages/cli/src/utils/transformers/index.ts
  type TransformOpts (line 14) | interface TransformOpts {
  function transform (line 22) | async function transform(opts: TransformOpts) {

FILE: packages/cli/src/utils/transformers/transform-css-vars.ts
  function transformCssVars (line 6) | function transformCssVars(opts: TransformOpts): CodemodPlugin {
  function splitClassName (line 74) | function splitClassName(className: string): (string | null)[] {
  constant PREFIXES (line 101) | const PREFIXES = ['bg-', 'text-', 'border-', 'ring-offset-', 'ring-']
  function applyColorMapping (line 103) | function applyColorMapping(

FILE: packages/cli/src/utils/transformers/transform-icons.ts
  constant SOURCE_LIBRARY (line 6) | const SOURCE_LIBRARY = 'lucide'
  constant ICON_LIBRARY_IMPORTS (line 9) | const ICON_LIBRARY_IMPORTS = new Set(
  function transformIcons (line 15) | function transformIcons(opts: TransformOpts, registryIcons: Record<strin...

FILE: packages/cli/src/utils/transformers/transform-import.ts
  function transformImport (line 4) | function transformImport(opts: TransformOpts): CodemodPlugin {
  function updateImportAliases (line 84) | function updateImportAliases(

FILE: packages/cli/src/utils/transformers/transform-menu.ts
  function transformMenu (line 7) | function transformMenu(opts: TransformOpts): CodemodPlugin {

FILE: packages/cli/src/utils/transformers/transform-sfc.ts
  function transformSFC (line 4) | async function transformSFC(opts: TransformOpts) {
  function transformByDetype (line 11) | async function transformByDetype(content: string, filename: string) {

FILE: packages/cli/src/utils/transformers/transform-style.ts
  constant STYLE_CLASS_MAPPINGS (line 5) | const STYLE_CLASS_MAPPINGS: Record<string, Record<string, string>> = {
  function transformStyle (line 75) | function transformStyle(opts: TransformOpts): CodemodPlugin {

FILE: packages/cli/src/utils/transformers/transform-tw-prefix.ts
  function transformTwPrefix (line 7) | async function transformTwPrefix(opts: TransformOpts): Promise<CodemodPl...
  function applyPrefix (line 257) | function applyPrefix(input: string, prefix: string = '', tailwindVersion...
  function applyPrefixesCss (line 287) | function applyPrefixesCss(css: string, prefix: string, tailwindVersion: ...

FILE: packages/cli/src/utils/updaters/update-css-vars.ts
  function updateCssVars (line 18) | async function updateCssVars(
  function transformCssVars (line 67) | async function transformCssVars(
  function updateBaseLayerPlugin (line 167) | function updateBaseLayerPlugin({
  function updateCssVarsPlugin (line 242) | function updateCssVarsPlugin(
  function removeConflictVars (line 282) | function removeConflictVars(root: Rule | Root) {
  function cleanupDefaultNextStylesPlugin (line 303) | function cleanupDefaultNextStylesPlugin() {
  function addOrUpdateVars (line 370) | function addOrUpdateVars(
  function updateCssVarsPluginV4 (line 406) | function updateCssVarsPluginV4(
  function updateThemePlugin (line 515) | function updateThemePlugin(cssVars: z.infer<typeof registryItemCssVarsSc...
  function upsertThemeNode (line 612) | function upsertThemeNode(root: Root): AtRule {
  function addCustomVariant (line 634) | function addCustomVariant({ params }: { params: string }) {
  function addCustomImport (line 672) | function addCustomImport({ params }: { params: string }) {
  function addFontImportPlugin (line 725) | function addFontImportPlugin({ fontImport }: { fontImport: string }) {
  function updateTailwindConfigPlugin (line 760) | function updateTailwindConfigPlugin(
  function updateTailwindConfigKeyframesPlugin (line 805) | function updateTailwindConfigKeyframesPlugin(
  function updateTailwindConfigAnimationPlugin (line 882) | function updateTailwindConfigAnimationPlugin(
  function getQuoteType (line 926) | function getQuoteType(root: Root): 'single' | 'double' {
  function isLocalHSLValue (line 936) | function isLocalHSLValue(value: string) {
  function isColorValue (line 954) | function isColorValue(value: string) {

FILE: packages/cli/src/utils/updaters/update-css.ts
  function updateCss (line 14) | async function updateCss(
  function transformCss (line 53) | async function transformCss(
  function updateCssPlugin (line 86) | function updateCssPlugin(css: z.infer<typeof registryItemCssSchema>) {
  function processAtRule (line 389) | function processAtRule(
  function processRule (line 464) | function processRule(parent: Root | AtRule, selector: string, properties...

FILE: packages/cli/src/utils/updaters/update-dependencies.ts
  function updateDependencies (line 6) | async function updateDependencies(

FILE: packages/cli/src/utils/updaters/update-env-vars.ts
  function updateEnvVars (line 15) | async function updateEnvVars(

FILE: packages/cli/src/utils/updaters/update-files.ts
  function updateFiles (line 27) | async function updateFiles(
  function resolveFilePath (line 303) | function resolveFilePath(
  function resolveFileTargetDirectory (line 364) | function resolveFileTargetDirectory(
  function findCommonRoot (line 387) | function findCommonRoot(paths: string[], needle: string): string {
  function resolveNestedFilePath (line 419) | function resolveNestedFilePath(
  function resolvePageTarget (line 457) | function resolvePageTarget(
  function resolveImports (line 494) | async function resolveImports(filePaths: string[], config: Config) {
  function resolveModuleByProbablePath (line 595) | function resolveModuleByProbablePath(
  function toAliasedImport (line 669) | function toAliasedImport(

FILE: packages/cli/src/utils/updaters/update-tailwind-config.ts
  type UpdaterTailwindConfig (line 29) | type UpdaterTailwindConfig = Omit<TailwindConfig, 'plugins'> & {
  function updateTailwindConfig (line 34) | async function updateTailwindConfig(
  function transformTailwindConfig (line 75) | async function transformTailwindConfig(
  function addTailwindConfigProperty (line 126) | function addTailwindConfigProperty(
  function addTailwindConfigTheme (line 188) | async function addTailwindConfigTheme(
  function addTailwindConfigPlugin (line 232) | function addTailwindConfigPlugin(
  function _createSourceFile (line 270) | async function _createSourceFile(input: string, config: Config | null) {
  function _getQuoteChar (line 289) | function _getQuoteChar(configObject: ObjectLiteralExpression) {
  function nestSpreadProperties (line 297) | function nestSpreadProperties(obj: ObjectLiteralExpression) {
  function nestSpreadElements (line 341) | function nestSpreadElements(arr: ArrayLiteralExpression) {
  function unnestSpreadProperties (line 366) | function unnestSpreadProperties(obj: ObjectLiteralExpression) {
  function unsetSpreadElements (line 399) | function unsetSpreadElements(arr: ArrayLiteralExpression) {
  function parseObjectLiteral (line 427) | async function parseObjectLiteral(objectLiteralString: string): Promise<...
  function parseObjectLiteralExpression (line 447) | function parseObjectLiteralExpression(node: ObjectLiteralExpression): any {
  function parseArrayLiteralExpression (line 474) | function parseArrayLiteralExpression(node: ArrayLiteralExpression): any[] {
  function parseValue (line 498) | function parseValue(node: any): any {
  function buildTailwindThemeColorsFromCssVars (line 519) | function buildTailwindThemeColorsFromCssVars(

FILE: packages/cli/src/utils/updaters/update-tailwind-content.ts
  function updateTailwindContent (line 13) | async function updateTailwindContent(
  function transformTailwindContent (line 45) | async function transformTailwindContent(
  function addTailwindConfigContent (line 76) | async function addTailwindConfigContent(

FILE: packages/cli/test/fixtures/frameworks/nuxt/lib/utils.ts
  function cn (line 5) | function cn(...inputs: ClassValue[]) {

FILE: packages/cli/test/utils/__fixtures__/props.ts
  type Props (line 1) | interface Props {

FILE: packages/cli/test/utils/transform-style.test.ts
  function createTestConfig (line 6) | function createTestConfig(style: string): Config {

FILE: packages/cli/test/utils/updaters/update-tailwind-config.test.ts
  constant SHARED_CONFIG (line 13) | const SHARED_CONFIG = {
  function testTransformation (line 946) | function testTransformation(input: string, expected: string) {
  function testTransformation (line 1021) | function testTransformation(input: string, expected: string) {
  function testTransformation (line 1109) | function testTransformation(input: string, expected: string) {
  function testTransformation (line 1184) | function testTransformation(input: string, expected: string) {

FILE: packages/cli/test/utils/updaters/update-tailwind-content.test.ts
  constant SHARED_CONFIG (line 5) | const SHARED_CONFIG = {

FILE: packages/module/playground/components/ui/button/index.ts
  type ButtonVariants (line 36) | type ButtonVariants = VariantProps<typeof buttonVariants>

FILE: packages/module/playground/components/ui/carousel/interface.ts
  type CarouselProps (line 8) | interface CarouselProps {
  type CarouselEmits (line 14) | interface CarouselEmits {
  type WithClassAsProps (line 18) | interface WithClassAsProps {

FILE: packages/module/playground/components/ui/carousel/useCarousel.ts
  function scrollPrev (line 20) | function scrollPrev() {
  function scrollNext (line 23) | function scrollNext() {
  function onSelect (line 30) | function onSelect(api: CarouselApi) {
  function useCarousel (line 50) | function useCarousel() {

FILE: packages/module/playground/lib/utils.ts
  function cn (line 5) | function cn(...inputs: ClassValue[]) {

FILE: packages/module/src/module.ts
  type ComponentDirConfig (line 6) | interface ComponentDirConfig {
  type ComponentDirInput (line 11) | type ComponentDirInput = string | ComponentDirConfig
  type ComponentDirOption (line 13) | type ComponentDirOption = ComponentDirInput | ComponentDirInput[]
  type NormalizedComponentDir (line 15) | interface NormalizedComponentDir {
  function isComponentDirConfig (line 20) | function isComponentDirConfig(value: unknown): value is ComponentDirConf...
  function normalizeComponentDirs (line 24) | function normalizeComponentDirs(componentDir: ComponentDirOption, fallba...
  type ModuleOptions (line 42) | interface ModuleOptions {
  method setup (line 66) | async setup({ prefix, componentDir }, nuxt) {
Copy disabled (too large) Download .json
Condensed preview — 5959 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (40,169K chars).
[
  {
    "path": ".editorconfig",
    "chars": 228,
    "preview": "# EditorConfig is awesome: https://EditorConfig.org\n\n# top-most EditorConfig file\nroot = true\n\n[*]\nindent_style = space\n"
  },
  {
    "path": ".github/FUNDING.yml",
    "chars": 19,
    "preview": "github: [zernonia]\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug-report.yml",
    "chars": 2123,
    "preview": "name: 🐞 Bug report\ndescription: Create a report to help us improve shadcn-vue.\ntitle: '[Bug]: '\nlabels: [bug]\nbody:\n  - "
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "chars": 265,
    "preview": "blank_issues_enabled: true\ncontact_links:\n  # - name: 📚 Documentation\n  #   url: https://www.reka-ui.com/\n  #   about: C"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature-request.yml",
    "chars": 1063,
    "preview": "name: 🚀 Feature request\ndescription: Suggest a feature that will improve shadcn-vue.\ntitle: '[Feature]: '\nlabels: [featu"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "chars": 1415,
    "preview": "<!---☝️ PR title should follow conventional commits (https://conventionalcommits.org) -->\n\n### 🔗 Linked issue\n\n<!-- Plea"
  },
  {
    "path": ".github/actions/setup/action.yml",
    "chars": 589,
    "preview": "name: Setup\ndescription: Installs Node, Enables Corepack and caches pnpm.\n\nruns:\n  using: composite\n\n  steps:\n    - name"
  },
  {
    "path": ".github/workflows/pkg.pr.new-module.yaml",
    "chars": 905,
    "preview": "name: Preview Module release\n\npermissions:\n  pull-requests: write\n\non:\n  pull_request:\n  push:\n    types: [opened, synch"
  },
  {
    "path": ".github/workflows/pkg.pr.new.yaml",
    "chars": 886,
    "preview": "name: Preview CLI release\n\npermissions:\n  pull-requests: write\n\non:\n  pull_request:\n  push:\n    types: [opened, synchron"
  },
  {
    "path": ".github/workflows/publish.yaml",
    "chars": 2560,
    "preview": "name: Publish website\n\non:\n  push:\n    branches:\n      - dev\n    paths:\n      - 'apps/v4/**'\n  pull_request:\n    branche"
  },
  {
    "path": ".github/workflows/release.yaml",
    "chars": 825,
    "preview": "# .github/workflows/release.yml\n\nname: Release (next)\n\npermissions:\n  contents: write\n\non:\n  push:\n    tags:\n      - 'v*"
  },
  {
    "path": ".github/workflows/test.yaml",
    "chars": 479,
    "preview": "name: Test\n\non:\n  push:\n    branches:\n      - dev\n    paths:\n      - 'packages/**'\n\n  pull_request:\n    branches:\n      "
  },
  {
    "path": ".gitignore",
    "chars": 454,
    "preview": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\nlerna-debug.log*\n\n# .nuxt\n.env\nnode_mod"
  },
  {
    "path": ".vscode/extensions.json",
    "chars": 110,
    "preview": "{\n  \"recommendations\": [\n    \"Vue.volar\",\n    \"dbaeumer.vscode-eslint\",\n    \"bradlc.vscode-tailwindcss\"\n  ]\n}\n"
  },
  {
    "path": ".vscode/settings.json",
    "chars": 1415,
    "preview": "{\n  \"vue.server.includeLanguages\": [\n    \"vue\"\n  ],\n  \"prettier.enable\": false,\n  \"editor.formatOnSave\": false,\n  \"edito"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 4726,
    "preview": "# Contributing\n\nThanks for your interest in contributing to shadcn-vue.com. We're happy to have you here.\n\nPlease take a"
  },
  {
    "path": "LICENSE",
    "chars": 1063,
    "preview": "MIT License\n\nCopyright (c) 2023 unovue\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof "
  },
  {
    "path": "README.md",
    "chars": 509,
    "preview": "# shadcn-vue\n\nA set of beautifully designed components that you can customize, extend, and build on. Start here then mak"
  },
  {
    "path": "apps/v4/.gitignore",
    "chars": 193,
    "preview": "# Nuxt dev/build outputs\n.output\n.data\n.nuxt\n.nitro\n.cache\ndist\n\n# Node dependencies\nnode_modules\n\n# Logs\nlogs\n*.log\n\n# "
  },
  {
    "path": "apps/v4/.wrangler/deploy/config.json",
    "chars": 55,
    "preview": "{ \"configPath\": \"../../.output/server/wrangler.json\" }\n"
  },
  {
    "path": "apps/v4/README.md",
    "chars": 822,
    "preview": "# Nuxt Minimal Starter\n\nLook at the [Nuxt documentation](https://nuxt.com/docs/getting-started/introduction) to learn mo"
  },
  {
    "path": "apps/v4/__registry__/index.ts",
    "chars": 76197,
    "preview": "// @ts-nocheck\n// This file is autogenerated by scripts/build-registry.ts\n// Do not edit this file directly.\n\nexport con"
  },
  {
    "path": "apps/v4/app.vue",
    "chars": 728,
    "preview": "<script setup lang=\"ts\">\nimport { ConfigProvider, TooltipProvider } from 'reka-ui'\nimport { Toaster } from '@/registry/n"
  },
  {
    "path": "apps/v4/assets/css/fonts.css",
    "chars": 193,
    "preview": "@theme {\n  --font-sans: \"Geist\", Arial, ui-sans-serif, system-ui, sans-serif;\n  --font-mono: \"Geist Mono\", ui-monospace,"
  },
  {
    "path": "apps/v4/assets/css/main.css",
    "chars": 10175,
    "preview": "@import \"tailwindcss\";\n@import \"tw-animate-css\";\n\n@import \"./themes.css\";\n@import \"./fonts.css\";\n\n\n@import \"../../regist"
  },
  {
    "path": "apps/v4/assets/css/themes.css",
    "chars": 12017,
    "preview": ".theme-default .theme-container,\n.theme-default [data-reka-popper-content-wrapper] {\n  --chart-1: var(--color-blue-300);"
  },
  {
    "path": "apps/v4/components/Announcement.vue",
    "chars": 440,
    "preview": "<script setup lang=\"ts\">\nimport { ArrowRightIcon } from 'lucide-vue-next'\n\nimport { Badge } from '@/registry/new-york-v4"
  },
  {
    "path": "apps/v4/components/BaseColorPicker.vue",
    "chars": 3323,
    "preview": "<script setup lang=\"ts\">\nimport { useMounted } from '@vueuse/core'\nimport { BASE_COLORS } from '@/registry/config'\n\ncons"
  },
  {
    "path": "apps/v4/components/BlockDisplay.vue",
    "chars": 548,
    "preview": "<script setup lang=\"ts\">\nimport { cn } from '~/lib/utils'\n\nconst props = defineProps<{\n  name: string\n}>()\n\nconst { data"
  },
  {
    "path": "apps/v4/components/BlockViewer.vue",
    "chars": 1954,
    "preview": "<script lang=\"ts\">\nimport { createContext } from 'reka-ui'\n\nexport interface BlockViewerContext {\n  item: z.infer<typeof"
  },
  {
    "path": "apps/v4/components/BlockViewerCode.vue",
    "chars": 1380,
    "preview": "<script setup lang=\"ts\">\nimport { useBlockViewer } from './BlockViewer.vue'\nimport { getIconForLanguageExtension } from "
  },
  {
    "path": "apps/v4/components/BlockViewerFileTree.vue",
    "chars": 877,
    "preview": "<script setup lang=\"ts\">\nimport {\n  Sidebar,\n  SidebarGroup,\n  SidebarGroupContent,\n  SidebarGroupLabel,\n  SidebarMenu,\n"
  },
  {
    "path": "apps/v4/components/BlockViewerIframe.vue",
    "chars": 530,
    "preview": "<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '~/lib/utils'\nimport { useBlockVie"
  },
  {
    "path": "apps/v4/components/BlockViewerMobile.vue",
    "chars": 1087,
    "preview": "<script setup lang=\"ts\">\nimport { useBlockViewer } from './BlockViewer.vue'\n\nconst { item } = useBlockViewer()\n</script>"
  },
  {
    "path": "apps/v4/components/BlockViewerToolbar.vue",
    "chars": 3596,
    "preview": "<script setup lang=\"ts\">\nimport { useClipboard } from '@vueuse/core'\nimport {\n  Check,\n  Fullscreen,\n  Monitor,\n  Rotate"
  },
  {
    "path": "apps/v4/components/BlockViewerTree.vue",
    "chars": 2235,
    "preview": "<script setup lang=\"ts\">\nimport type { FileTree } from '@/lib/registry'\nimport {\n  ChevronRight,\n  File,\n  Folder,\n} fro"
  },
  {
    "path": "apps/v4/components/BlockViewerView.vue",
    "chars": 1560,
    "preview": "<script setup lang=\"ts\">\nimport { SplitterPanel as ResizablePanel } from 'reka-ui'\nimport { ResizableHandle, ResizablePa"
  },
  {
    "path": "apps/v4/components/BlocksNav.vue",
    "chars": 1239,
    "preview": "<script setup lang=\"ts\">\nimport { ScrollArea, ScrollBar } from '@/registry/new-york-v4/ui/scroll-area'\nimport { registry"
  },
  {
    "path": "apps/v4/components/CarbonAds.vue",
    "chars": 1686,
    "preview": "<script setup lang=\"ts\">\nimport { onMounted, ref, watch } from 'vue'\n\nconst { path } = toRefs(useRoute())\nconst carbonOp"
  },
  {
    "path": "apps/v4/components/ChartDisplay.vue",
    "chars": 1076,
    "preview": "<script lang=\"ts\">\nimport type { registryItemSchema } from 'shadcn-vue/schema'\nimport type { z } from 'zod'\nimport { fix"
  },
  {
    "path": "apps/v4/components/ChartToolbar.vue",
    "chars": 2024,
    "preview": "<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue'\nimport {\n  AreaChartIcon,\n  BarChartBigIcon,\n  Hexago"
  },
  {
    "path": "apps/v4/components/ChartsNav.vue",
    "chars": 1523,
    "preview": "<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/lib/utils'\nimport { ScrollArea,"
  },
  {
    "path": "apps/v4/components/CodeBlockCommand.vue",
    "chars": 2979,
    "preview": "<script setup lang=\"ts\">\nimport { TerminalIcon } from 'lucide-vue-next'\nimport {\n  Tabs,\n  TabsContent,\n  TabsList,\n  Ta"
  },
  {
    "path": "apps/v4/components/Color.vue",
    "chars": 1749,
    "preview": "<script setup lang=\"ts\">\nimport type { Color } from '@/lib/colors'\nimport { useClipboard } from '@vueuse/core'\nimport { "
  },
  {
    "path": "apps/v4/components/ColorFormatSelector.vue",
    "chars": 1550,
    "preview": "<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue'\n\nimport type { Color, ColorFormat } from '@/lib/color"
  },
  {
    "path": "apps/v4/components/ColorIndicator.vue",
    "chars": 226,
    "preview": "<script setup lang=\"ts\">\nconst props = defineProps<{ color: string }>()\n</script>\n\n<template>\n  <span\n    class=\"border-"
  },
  {
    "path": "apps/v4/components/ColorPalette.vue",
    "chars": 763,
    "preview": "<script setup lang=\"ts\">\nimport type { ColorPalette } from '@/lib/colors'\n// import { ColorFormatSelector } from \"@/comp"
  },
  {
    "path": "apps/v4/components/ColorsNav.vue",
    "chars": 1196,
    "preview": "<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue'\nimport { ScrollArea, ScrollBar } from '@/registry/new"
  },
  {
    "path": "apps/v4/components/ComponentPreviewTabs.vue",
    "chars": 1216,
    "preview": "<script setup lang=\"ts\">\nimport type { Component, HTMLAttributes } from 'vue'\nimport { cn } from '@/lib/utils'\n\nconst pr"
  },
  {
    "path": "apps/v4/components/ComponentSource.vue",
    "chars": 1377,
    "preview": "<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue'\nimport { fixImport } from '~/lib/registry-utils'\nimpo"
  },
  {
    "path": "apps/v4/components/ComponentWrapper.vue",
    "chars": 1074,
    "preview": "<script setup lang=\"ts\">\nconst props = defineProps<{\n  name: string\n  class?: HTMLAttributes['class']\n}>()\n\nimport type "
  },
  {
    "path": "apps/v4/components/CopyButton.vue",
    "chars": 1487,
    "preview": "<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue'\nimport type { ButtonVariants } from '@/registry/new-y"
  },
  {
    "path": "apps/v4/components/CopyCodeButton.vue",
    "chars": 2279,
    "preview": "<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue'\nimport type { ButtonVariants } from '@/registry/new-y"
  },
  {
    "path": "apps/v4/components/CreateProjectDialog.vue",
    "chars": 6926,
    "preview": "<script setup lang=\"ts\">\nimport type { PackageManager } from '@/composables/useUserConfig'\nimport { Tick02Icon } from '@"
  },
  {
    "path": "apps/v4/components/Customizer.vue",
    "chars": 2632,
    "preview": "<script setup lang=\"ts\">\nimport { Settings05Icon } from '@hugeicons/core-free-icons'\nimport { HugeiconsIcon } from '@hug"
  },
  {
    "path": "apps/v4/components/CustomizerCode.vue",
    "chars": 16253,
    "preview": "<script setup lang=\"ts\">\nimport type {\n  BaseColor,\n} from '~/registry/_legacy-base-colors'\nimport { IconCopy } from '@t"
  },
  {
    "path": "apps/v4/components/CustomizerControls.vue",
    "chars": 3492,
    "preview": "<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue'\nimport { ShuffleIcon } from '@hugeicons/core-free-ico"
  },
  {
    "path": "apps/v4/components/DocsCopyPage.vue",
    "chars": 8893,
    "preview": "<script setup lang=\"ts\">\nimport type { ContentCollectionItem } from '@nuxt/content'\n\nimport { IconCheck, IconChevronDown"
  },
  {
    "path": "apps/v4/components/DocsSidebar.vue",
    "chars": 4377,
    "preview": "<script setup lang=\"ts\">\nimport type { ContentNavigationItem } from '@nuxt/content'\nimport {\n  Sidebar,\n  SidebarContent"
  },
  {
    "path": "apps/v4/components/DocsTableOfContents.vue",
    "chars": 2977,
    "preview": "<script setup lang=\"ts\">\nimport type { Toc } from '@nuxt/content'\nimport type { HTMLAttributes } from 'vue'\nimport { Ico"
  },
  {
    "path": "apps/v4/components/ExamplesNav.vue",
    "chars": 2003,
    "preview": "<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/lib/utils'\nimport { ScrollArea,"
  },
  {
    "path": "apps/v4/components/FontPicker.vue",
    "chars": 2627,
    "preview": "<script setup lang=\"ts\">\nimport type { Font } from '@/lib/fonts'\nimport type { FontValue } from '~/registry/config'\nimpo"
  },
  {
    "path": "apps/v4/components/GitHubLink.vue",
    "chars": 902,
    "preview": "<script setup lang=\"ts\">\nimport { Icons } from '@/components/Icons'\nimport { siteConfig } from '@/lib/config'\nimport { B"
  },
  {
    "path": "apps/v4/components/IconLibraryPicker.vue",
    "chars": 7223,
    "preview": "<script setup lang=\"ts\">\nimport type { IconLibraryName } from '@/registry/config'\nimport { Item, ItemContent, ItemTitle "
  },
  {
    "path": "apps/v4/components/IconPlaceholder.vue",
    "chars": 2181,
    "preview": "<script setup lang=\"ts\">\nimport { SquareIcon } from 'lucide-vue-next'\nimport { computed, defineAsyncComponent } from 'vu"
  },
  {
    "path": "apps/v4/components/Icons.ts",
    "chars": 22303,
    "preview": "import type { VNode } from 'vue'\nimport { FileIcon } from 'lucide-vue-next'\nimport { defineComponent, h } from 'vue'\n\nin"
  },
  {
    "path": "apps/v4/components/ItemExplorer.vue",
    "chars": 3525,
    "preview": "<script setup lang=\"ts\">\nimport type { RegistryItem } from 'shadcn-vue/schema'\nimport type { Base } from '~/registry/bas"
  },
  {
    "path": "apps/v4/components/ItemPicker.vue",
    "chars": 2291,
    "preview": "<script setup lang=\"ts\">\nimport type { RegistryItem } from 'shadcn-vue/schema'\nimport { ChevronDownIcon, SearchIcon } fr"
  },
  {
    "path": "apps/v4/components/LockButton.vue",
    "chars": 1396,
    "preview": "<script setup lang=\"ts\">\nimport type { LockableParam } from '@/composables/useLocks'\nimport {\n  SquareLock01Icon,\n  Squa"
  },
  {
    "path": "apps/v4/components/MainNav.vue",
    "chars": 669,
    "preview": "<script setup lang=\"ts\">\nconst props = defineProps<{\n  items: { href: string, label: string }[]\n  class?: HTMLAttributes"
  },
  {
    "path": "apps/v4/components/MenuAccentPicker.vue",
    "chars": 3128,
    "preview": "<script setup lang=\"ts\">\nimport type { MenuAccentValue } from '@/registry/config'\nimport { MENU_ACCENTS } from '@/regist"
  },
  {
    "path": "apps/v4/components/MenuColorPicker.vue",
    "chars": 6607,
    "preview": "<script setup lang=\"ts\">\nimport type { MenuColorValue } from '@/registry/config'\nimport { useMounted } from '@vueuse/cor"
  },
  {
    "path": "apps/v4/components/MobileNav.vue",
    "chars": 4519,
    "preview": "<script setup lang=\"ts\">\nimport type { ContentNavigationItem } from '@nuxt/content'\nimport type { HTMLAttributes } from "
  },
  {
    "path": "apps/v4/components/ModeSwitcher.vue",
    "chars": 969,
    "preview": "<script setup lang=\"ts\">\nimport { Button } from '@/registry/new-york-v4/ui/button'\n\nconst colorMode = useColorMode()\n</s"
  },
  {
    "path": "apps/v4/components/NavHeader.vue",
    "chars": 1152,
    "preview": "<script setup lang=\"ts\">\nimport {\n  NavigationMenu,\n  NavigationMenuItem,\n  NavigationMenuLink,\n  NavigationMenuList,\n} "
  },
  {
    "path": "apps/v4/components/OgImage/Custom.vue",
    "chars": 2057,
    "preview": "<script setup lang=\"ts\">\nconst props = defineProps({\n  title: String,\n  description: String,\n})\n</script>\n\n<template>\n  "
  },
  {
    "path": "apps/v4/components/PageActions.vue",
    "chars": 352,
    "preview": "<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/lib/utils'\n\nconst props = defin"
  },
  {
    "path": "apps/v4/components/PageHeader.vue",
    "chars": 451,
    "preview": "<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/lib/utils'\n\nconst props = defin"
  },
  {
    "path": "apps/v4/components/PageHeaderDescription.vue",
    "chars": 316,
    "preview": "<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/lib/utils'\n\nconst props = defin"
  },
  {
    "path": "apps/v4/components/PageHeaderHeading.vue",
    "chars": 446,
    "preview": "<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/lib/utils'\n\nconst props = defin"
  },
  {
    "path": "apps/v4/components/PageNav.vue",
    "chars": 377,
    "preview": "<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/lib/utils'\n\nconst props = defin"
  },
  {
    "path": "apps/v4/components/PresetPicker.vue",
    "chars": 2712,
    "preview": "<script setup lang=\"ts\">\nimport type { Preset } from '@/registry/config'\nimport { STYLES } from '@/registry/config'\n\ncon"
  },
  {
    "path": "apps/v4/components/Preview.vue",
    "chars": 3564,
    "preview": "<script setup lang=\"ts\">\nimport type { SplitterPanel } from 'reka-ui'\nimport type { DesignSystemSearchParams } from '@/c"
  },
  {
    "path": "apps/v4/components/RadiusPicker.vue",
    "chars": 2877,
    "preview": "<script setup lang=\"ts\">\nimport type { RadiusValue } from '@/registry/config'\nimport { RADII } from '@/registry/config'\n"
  },
  {
    "path": "apps/v4/components/ShareButton.vue",
    "chars": 935,
    "preview": "<script setup lang=\"ts\">\nimport { Share03Icon, Tick02Icon } from '@hugeicons/core-free-icons'\nimport { HugeiconsIcon } f"
  },
  {
    "path": "apps/v4/components/SiteBody.vue",
    "chars": 615,
    "preview": "<script setup lang=\"ts\">\nconst { config, isLayoutFull } = useConfig()\nconst activeTheme = computed(() => config.value.ac"
  },
  {
    "path": "apps/v4/components/SiteConfig.vue",
    "chars": 710,
    "preview": "<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue'\n\nimport { GalleryHorizontalIcon } from 'lucide-vue-ne"
  },
  {
    "path": "apps/v4/components/SiteFooter.vue",
    "chars": 988,
    "preview": "<script setup lang=\"ts\">\nimport { siteConfig } from '@/lib/config'\n</script>\n\n<template>\n  <footer class=\"group-has-[.se"
  },
  {
    "path": "apps/v4/components/SiteHeader.vue",
    "chars": 2471,
    "preview": "<script setup lang=\"ts\">\nimport { PlusSignIcon } from '@hugeicons/core-free-icons'\nimport { HugeiconsIcon } from '@hugei"
  },
  {
    "path": "apps/v4/components/StylePicker.vue",
    "chars": 2330,
    "preview": "<script setup lang=\"ts\">\nimport type { Style, StyleName } from '@/registry/config'\n\nconst props = defineProps<{\n  styles"
  },
  {
    "path": "apps/v4/components/ThemeCustomizer.vue",
    "chars": 2493,
    "preview": "<script setup lang=\"ts\">\nimport { Button } from '@/registry/new-york-v4/ui/button'\n\nimport { Label } from '@/registry/ne"
  },
  {
    "path": "apps/v4/components/ThemePicker.vue",
    "chars": 4418,
    "preview": "<script setup lang=\"ts\">\nimport type { Theme, ThemeName } from '@/registry/config'\nimport { useMounted } from '@vueuse/c"
  },
  {
    "path": "apps/v4/components/ThemeSelector.vue",
    "chars": 1497,
    "preview": "<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/lib/utils'\nimport { Label } fro"
  },
  {
    "path": "apps/v4/components/ToolbarControls.vue",
    "chars": 552,
    "preview": "<script setup lang=\"ts\">\nimport {\n  ComputerTerminal01Icon,\n} from '@hugeicons/core-free-icons'\nimport { HugeiconsIcon }"
  },
  {
    "path": "apps/v4/components/WelcomeDialog.vue",
    "chars": 2926,
    "preview": "<script setup lang=\"ts\">\nimport { useLocalStorage } from '@vueuse/core'\nimport { Button } from '@/registry/new-york-v4/u"
  },
  {
    "path": "apps/v4/components/_internal/sink/AccordionDemo.vue",
    "chars": 3077,
    "preview": "<script setup lang=\"ts\">\nimport {\n  Accordion,\n  AccordionContent,\n  AccordionItem,\n  AccordionTrigger,\n} from '@/regist"
  },
  {
    "path": "apps/v4/components/_internal/sink/AlertDemo.vue",
    "chars": 3735,
    "preview": "<script setup lang=\"ts\">\nimport {\n  AlertCircleIcon,\n  BookmarkCheckIcon,\n  CheckCircle2Icon,\n  GiftIcon,\n  PopcornIcon,"
  },
  {
    "path": "apps/v4/components/_internal/sink/AlertDialogDemo.vue",
    "chars": 1060,
    "preview": "<script setup lang=\"ts\">\nimport {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  Alert"
  },
  {
    "path": "apps/v4/components/_internal/sink/AspectRatioDemo.vue",
    "chars": 827,
    "preview": "<script setup lang=\"ts\">\nimport { AspectRatio } from '@/registry/new-york-v4/ui/aspect-ratio'\n</script>\n\n<template>\n  <d"
  },
  {
    "path": "apps/v4/components/_internal/sink/AvatarDemo.vue",
    "chars": 2827,
    "preview": "<script setup lang=\"ts\">\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from '@/registry/new-york-v4/ui/avatar'\n<"
  },
  {
    "path": "apps/v4/components/_internal/sink/BadgeDemo.vue",
    "chars": 1641,
    "preview": "<script setup lang=\"ts\">\nimport { AlertCircleIcon, ArrowRightIcon, CheckIcon } from 'lucide-vue-next'\nimport { Badge } f"
  },
  {
    "path": "apps/v4/components/_internal/sink/BreadcrumbDemo.vue",
    "chars": 1462,
    "preview": "<script setup lang=\"ts\">\nimport {\n  Breadcrumb,\n  BreadcrumbEllipsis,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbLi"
  },
  {
    "path": "apps/v4/components/_internal/sink/ButtonDemo.vue",
    "chars": 2595,
    "preview": "<script setup lang=\"ts\">\nimport { ArrowRightIcon, Loader2Icon, SendIcon } from 'lucide-vue-next'\nimport { Button } from "
  },
  {
    "path": "apps/v4/components/_internal/sink/CalendarDemo.vue",
    "chars": 1310,
    "preview": "<script setup lang=\"ts\">\nimport type { DateValue } from '@internationalized/date'\nimport { CalendarDate, fromDate, getLo"
  },
  {
    "path": "apps/v4/components/_internal/sink/CardDemo.vue",
    "chars": 6234,
    "preview": "<script setup lang=\"ts\">\nimport { BathIcon, BedIcon, LandPlotIcon } from 'lucide-vue-next'\nimport {\n  Avatar,\n  AvatarFa"
  },
  {
    "path": "apps/v4/components/_internal/sink/CarouselDemo.vue",
    "chars": 2459,
    "preview": "<script setup lang=\"ts\">\nimport { Card, CardContent } from '@/registry/new-york-v4/ui/card'\n\nimport {\n  Carousel,\n  Caro"
  },
  {
    "path": "apps/v4/components/_internal/sink/CheckboxDemo.vue",
    "chars": 1689,
    "preview": "<script setup lang=\"ts\">\nimport { Checkbox } from '@/registry/new-york-v4/ui/checkbox'\nimport { Label } from '@/registry"
  },
  {
    "path": "apps/v4/components/_internal/sink/CollapsibleDemo.vue",
    "chars": 1233,
    "preview": "<script setup lang=\"ts\">\nimport { ChevronsUpDown } from 'lucide-vue-next'\nimport { Button } from '@/registry/new-york-v4"
  },
  {
    "path": "apps/v4/components/_internal/sink/ComboboxDemo.vue",
    "chars": 8795,
    "preview": "<script setup lang=\"ts\">\nimport { Check, ChevronDownIcon, ChevronsUpDown, PlusCircleIcon } from 'lucide-vue-next'\nimport"
  },
  {
    "path": "apps/v4/components/_internal/sink/CommandDemo.vue",
    "chars": 2015,
    "preview": "<script setup lang=\"ts\">\nimport { useMagicKeys, whenever } from '@vueuse/core'\nimport {\n  Calculator,\n  Calendar,\n  Cred"
  },
  {
    "path": "apps/v4/components/_internal/sink/ContextMenuDemo.vue",
    "chars": 2655,
    "preview": "<script setup lang=\"ts\">\nimport { Code2Icon, PlusIcon, TrashIcon } from 'lucide-vue-next'\n\nimport {\n  ContextMenu,\n  Con"
  },
  {
    "path": "apps/v4/components/_internal/sink/DataTableDemoColumn.vue",
    "chars": 1217,
    "preview": "<script setup lang=\"ts\">\nimport { MoreHorizontal } from 'lucide-vue-next'\nimport { Button } from '@/registry/new-york-v4"
  },
  {
    "path": "apps/v4/components/_internal/sink/DatePickerDemo.vue",
    "chars": 2723,
    "preview": "<script setup lang=\"ts\">\nimport type { DateValue } from '@internationalized/date'\nimport { CalendarDate, DateFormatter, "
  },
  {
    "path": "apps/v4/components/_internal/sink/DialogDemo.vue",
    "chars": 4408,
    "preview": "<script setup lang=\"ts\">\nimport { Button } from '@/registry/new-york-v4/ui/button'\nimport {\n  Dialog,\n  DialogClose,\n  D"
  },
  {
    "path": "apps/v4/components/_internal/sink/DrawerDemo.vue",
    "chars": 5866,
    "preview": "<script setup lang=\"ts\">\nimport { Minus, Plus } from 'lucide-vue-next'\nimport { Button } from '@/registry/new-york-v4/ui"
  },
  {
    "path": "apps/v4/components/_internal/sink/DropdownMenuDemo.vue",
    "chars": 10643,
    "preview": "<script setup lang=\"ts\">\nimport {\n  BadgeCheckIcon,\n  BellIcon,\n  ChevronsUpDownIcon,\n  CreditCardIcon,\n  LogOut,\n  LogO"
  },
  {
    "path": "apps/v4/components/_internal/sink/FormDemo.vue",
    "chars": 11642,
    "preview": "<script setup lang=\"ts\">\nimport { fromDate, getLocalTimeZone } from '@internationalized/date'\nimport { toTypedSchema } f"
  },
  {
    "path": "apps/v4/components/_internal/sink/FormsDemo.vue",
    "chars": 8326,
    "preview": "<script setup lang=\"ts\">\nimport { Button } from '@/registry/new-york-v4/ui/button'\nimport {\n  Card,\n  CardContent,\n  Car"
  },
  {
    "path": "apps/v4/components/_internal/sink/HoverCardDemo.vue",
    "chars": 1290,
    "preview": "<script setup lang=\"ts\">\nimport { CalendarIcon } from 'lucide-vue-next'\n\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarIm"
  },
  {
    "path": "apps/v4/components/_internal/sink/InputDemo.vue",
    "chars": 915,
    "preview": "<script setup lang=\"ts\">\nimport { Input } from '@/registry/new-york-v4/ui/input'\n</script>\n\n<template>\n  <div class=\"fle"
  },
  {
    "path": "apps/v4/components/_internal/sink/LabelDemo.vue",
    "chars": 1029,
    "preview": "<script setup lang=\"ts\">\nimport { Checkbox } from '@/registry/new-york-v4/ui/checkbox'\nimport { Input } from '@/registry"
  },
  {
    "path": "apps/v4/components/_internal/sink/MenubarDemo.vue",
    "chars": 4230,
    "preview": "<script setup lang=\"ts\">\nimport { HelpCircleIcon, SettingsIcon, Trash2Icon } from 'lucide-vue-next'\n\nimport {\n  Menubar,"
  },
  {
    "path": "apps/v4/components/_internal/sink/NavigationMenuDemo.vue",
    "chars": 7925,
    "preview": "<script setup lang=\"ts\">\nimport { CircleCheckIcon, CircleHelpIcon, CircleIcon } from 'lucide-vue-next'\nimport {\n  Naviga"
  },
  {
    "path": "apps/v4/components/_internal/sink/NavigationMenuItem.vue",
    "chars": 506,
    "preview": "<script setup lang=\"ts\">\nimport { NavigationMenuLink } from '@/registry/new-york-v4/ui/navigation-menu'\n\ndefineProps<{\n "
  },
  {
    "path": "apps/v4/components/_internal/sink/PaginationDemo.vue",
    "chars": 848,
    "preview": "<script setup lang=\"ts\">\nimport {\n  Pagination,\n  PaginationContent,\n  PaginationEllipsis,\n  PaginationItem,\n  Paginatio"
  },
  {
    "path": "apps/v4/components/_internal/sink/PinInputDemo.vue",
    "chars": 2492,
    "preview": "<script setup lang=\"ts\">\nimport { Label } from '@/registry/new-york-v4/ui/label'\nimport {\n  PinInput,\n  PinInputGroup,\n "
  },
  {
    "path": "apps/v4/components/_internal/sink/PopoverDemo.vue",
    "chars": 1928,
    "preview": "<script setup lang=\"ts\">\nimport { Button } from '@/registry/new-york-v4/ui/button'\nimport { Input } from '@/registry/new"
  },
  {
    "path": "apps/v4/components/_internal/sink/ProgressDemo.vue",
    "chars": 324,
    "preview": "<script setup lang=\"ts\">\nimport { Progress } from '@/registry/new-york-v4/ui/progress'\n\nconst progress = ref(13)\n\nonMoun"
  },
  {
    "path": "apps/v4/components/_internal/sink/RadioGroupDemo.vue",
    "chars": 2049,
    "preview": "<script setup lang=\"ts\">\nimport { Label } from '@/registry/new-york-v4/ui/label'\nimport {\n  RadioGroup,\n  RadioGroupItem"
  },
  {
    "path": "apps/v4/components/_internal/sink/ResizableDemo.vue",
    "chars": 2388,
    "preview": "<script setup lang=\"ts\">\nimport {\n  ResizableHandle,\n  ResizablePanel,\n  ResizablePanelGroup,\n} from '@/registry/new-yor"
  },
  {
    "path": "apps/v4/components/_internal/sink/ScrollAreaDemo.vue",
    "chars": 2031,
    "preview": "<script setup lang=\"ts\">\nimport { ScrollArea, ScrollBar } from '@/registry/new-york-v4/ui/scroll-area'\nimport { Separato"
  },
  {
    "path": "apps/v4/components/_internal/sink/SelectDemo.vue",
    "chars": 2770,
    "preview": "<script setup lang=\"ts\">\nimport {\n  ChartBarIcon,\n  ChartLineIcon,\n  ChartPieIcon,\n  CircleDashed,\n} from 'lucide-vue-ne"
  },
  {
    "path": "apps/v4/components/_internal/sink/SeparatorDemo.vue",
    "chars": 628,
    "preview": "<script setup lang=\"ts\">\nimport { Separator } from '@/registry/new-york-v4/ui/separator'\n</script>\n\n<template>\n  <div>\n "
  },
  {
    "path": "apps/v4/components/_internal/sink/SheetDemo.vue",
    "chars": 3329,
    "preview": "<script setup lang=\"ts\">\nimport { Button } from '@/registry/new-york-v4/ui/button'\nimport { Input } from '@/registry/new"
  },
  {
    "path": "apps/v4/components/_internal/sink/SkeletonDemo.vue",
    "chars": 894,
    "preview": "<script setup lang=\"ts\">\nimport { Card, CardContent, CardHeader } from '@/registry/new-york-v4/ui/card'\nimport { Skeleto"
  },
  {
    "path": "apps/v4/components/_internal/sink/SliderDemo.vue",
    "chars": 1122,
    "preview": "<script setup lang=\"ts\">\nimport { Label } from '@/registry/new-york-v4/ui/label'\nimport { Slider } from '@/registry/new-"
  },
  {
    "path": "apps/v4/components/_internal/sink/SonnerDemo.vue",
    "chars": 3306,
    "preview": "<!-- eslint-disable no-console -->\n<!-- eslint-disable no-template-curly-in-string -->\n<script setup lang=\"ts\">\nimport {"
  },
  {
    "path": "apps/v4/components/_internal/sink/SwitchDemo.vue",
    "chars": 1223,
    "preview": "<script setup lang=\"ts\">\nimport { Label } from '@/registry/new-york-v4/ui/label'\nimport { Switch } from '@/registry/new-"
  },
  {
    "path": "apps/v4/components/_internal/sink/TableDemo.vue",
    "chars": 2124,
    "preview": "<script setup lang=\"ts\">\nimport {\n  Table,\n  TableBody,\n  TableCaption,\n  TableCell,\n  TableFooter,\n  TableHead,\n  Table"
  },
  {
    "path": "apps/v4/components/_internal/sink/TabsDemo.vue",
    "chars": 3340,
    "preview": "<script setup lang=\"ts\">\nimport { AppWindowIcon, CodeIcon } from 'lucide-vue-next'\nimport { Button } from '@/registry/ne"
  },
  {
    "path": "apps/v4/components/_internal/sink/TextareaDemo.vue",
    "chars": 1176,
    "preview": "<script setup lang=\"ts\">\nimport { Label } from '@/registry/new-york-v4/ui/label'\nimport { Textarea } from '@/registry/ne"
  },
  {
    "path": "apps/v4/components/_internal/sink/ToggleDemo.vue",
    "chars": 967,
    "preview": "<script setup lang=\"ts\">\nimport { BoldIcon, BookmarkIcon, ItalicIcon, UnderlineIcon } from 'lucide-vue-next'\n\nimport { T"
  },
  {
    "path": "apps/v4/components/_internal/sink/ToggleGroupDemo.vue",
    "chars": 1972,
    "preview": "<script setup lang=\"ts\">\nimport { BoldIcon, ItalicIcon, UnderlineIcon } from 'lucide-vue-next'\n\nimport {\n  ToggleGroup,\n"
  },
  {
    "path": "apps/v4/components/_internal/sink/TooltipDemo.vue",
    "chars": 1348,
    "preview": "<script setup lang=\"ts\">\nimport { InfoIcon } from 'lucide-vue-next'\n\nimport { Button } from '@/registry/new-york-v4/ui/b"
  },
  {
    "path": "apps/v4/components/cards/ActivityGoal.vue",
    "chars": 2606,
    "preview": "<script setup lang=\"ts\">\nimport type { ChartConfig } from '~/registry/new-york-v4/ui/chart'\nimport { VisStackedBar, VisX"
  },
  {
    "path": "apps/v4/components/cards/Calendar.vue",
    "chars": 852,
    "preview": "<script setup lang=\"ts\">\nimport type { DateValue } from '@internationalized/date'\nimport { CalendarDate, fromDate, getLo"
  },
  {
    "path": "apps/v4/components/cards/Chat.vue",
    "chars": 6394,
    "preview": "<script setup lang=\"ts\">\nimport { Check, Plus, Send } from 'lucide-vue-next'\nimport { computed, ref } from 'vue'\nimport "
  },
  {
    "path": "apps/v4/components/cards/CookieSettings.vue",
    "chars": 1629,
    "preview": "<script setup lang=\"ts\">\nimport { Button } from '@/registry/new-york-v4/ui/button'\nimport {\n  Card,\n  CardContent,\n  Car"
  },
  {
    "path": "apps/v4/components/cards/CreateAccount.vue",
    "chars": 4482,
    "preview": "<script setup lang=\"ts\">\nimport { Button } from '@/registry/new-york-v4/ui/button'\nimport {\n  Card,\n  CardContent,\n  Car"
  },
  {
    "path": "apps/v4/components/cards/Demo.vue",
    "chars": 1562,
    "preview": "<script setup lang=\"ts\">\n</script>\n\n<template>\n  <div class=\"md:grids-col-2 grid **:data-[slot=card]:shadow-none md:gap-"
  },
  {
    "path": "apps/v4/components/cards/ExerciseMinutes.vue",
    "chars": 3329,
    "preview": "<script setup lang=\"ts\">\nimport type { ChartConfig } from '~/registry/new-york-v4/ui/chart'\nimport { Line, Scatter } fro"
  },
  {
    "path": "apps/v4/components/cards/Forms.vue",
    "chars": 6612,
    "preview": "<script setup lang=\"ts\">\nimport { Button } from '@/registry/new-york-v4/ui/button'\nimport {\n  Card,\n  CardContent,\n  Car"
  },
  {
    "path": "apps/v4/components/cards/PaymentMethod.vue",
    "chars": 6587,
    "preview": "<script setup lang=\"ts\">\nimport { Button } from '@/registry/new-york-v4/ui/button'\nimport {\n  Card,\n  CardContent,\n  Car"
  },
  {
    "path": "apps/v4/components/cards/Payments.vue",
    "chars": 8057,
    "preview": "<script setup lang=\"ts\">\nimport type {\n  ColumnDef,\n  ColumnFiltersState,\n  SortingState,\n  VisibilityState,\n} from '@ta"
  },
  {
    "path": "apps/v4/components/cards/ReportIssue.vue",
    "chars": 3096,
    "preview": "<script setup lang=\"ts\">\nimport { Button } from '@/registry/new-york-v4/ui/button'\nimport {\n  Card,\n  CardContent,\n  Car"
  },
  {
    "path": "apps/v4/components/cards/Share.vue",
    "chars": 4355,
    "preview": "<script setup lang=\"ts\">\nimport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n} from '@/registry/new-york-v4/ui/avatar'\ni"
  },
  {
    "path": "apps/v4/components/cards/Stats.vue",
    "chars": 3104,
    "preview": "<script setup lang=\"ts\">\nimport type { ChartConfig } from '~/registry/new-york-v4/ui/chart'\n\nimport { VisArea, VisLine, "
  },
  {
    "path": "apps/v4/components/cards/TeamMembers.vue",
    "chars": 8255,
    "preview": "<script setup lang=\"ts\">\nimport { ChevronDown } from 'lucide-vue-next'\nimport { ref } from 'vue'\n\nimport {\n  Avatar,\n  A"
  },
  {
    "path": "apps/v4/components/command-menu/CommandItem.vue",
    "chars": 1870,
    "preview": "<script setup lang=\"ts\">\nimport type { ListboxItemProps } from 'reka-ui'\nimport type { HTMLAttributes } from 'vue'\nimpor"
  },
  {
    "path": "apps/v4/components/command-menu/CommandMenu.vue",
    "chars": 10320,
    "preview": "<script setup lang=\"ts\">\nimport type { Color, ColorPalette } from '@/lib/colors'\nimport type { NavigationItem } from '~/"
  },
  {
    "path": "apps/v4/components/command-menu/CommandMenuKbd.vue",
    "chars": 272,
    "preview": "<template>\n  <kbd\n    class=\"bg-background text-muted-foreground pointer-events-none flex h-5 items-center justify-cente"
  },
  {
    "path": "apps/v4/components/content/ButtonA.vue",
    "chars": 339,
    "preview": "<script setup lang=\"ts\">\nimport type { NuxtLinkProps } from '#app'\nimport Button from '~/registry/new-york-v4/ui/button/"
  },
  {
    "path": "apps/v4/components/content/Callout.vue",
    "chars": 813,
    "preview": "<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue'\nimport type { AlertVariants } from '@/registry/new-yo"
  },
  {
    "path": "apps/v4/components/content/CodeCollapsibleWrapper.vue",
    "chars": 1483,
    "preview": "<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '@/lib/utils'\nimport { Button } fr"
  },
  {
    "path": "apps/v4/components/content/CodeTabs.vue",
    "chars": 251,
    "preview": "<script setup lang=\"ts\">\nimport { Tabs } from '@/registry/new-york-v4/ui/tabs'\n\nconst { config } = useConfig()\n</script>"
  },
  {
    "path": "apps/v4/components/content/ComponentPreview.vue",
    "chars": 2018,
    "preview": "<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue'\n\nconst props = defineProps<{\n  name: string\n  align?:"
  },
  {
    "path": "apps/v4/components/content/ComponentsList.vue",
    "chars": 726,
    "preview": "<script setup lang=\"ts\">\nconst { data } = await useNavigation()\n\nconst list = computed(() => data.value?.[0]?.children.f"
  },
  {
    "path": "apps/v4/components/content/LinkedCard.vue",
    "chars": 426,
    "preview": "<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '~/lib/utils'\n\nconst props = defin"
  },
  {
    "path": "apps/v4/components/content/ProseA.vue",
    "chars": 375,
    "preview": "<script setup lang=\"ts\">\nconst props = withDefaults(defineProps<{\n  href?: string\n  target?: '_blank' | '_parent' | '_se"
  },
  {
    "path": "apps/v4/components/content/ProseBlockQuote.vue",
    "chars": 139,
    "preview": "<script setup lang=\"ts\">\n</script>\n\n<template>\n  <blockquote class=\"mt-6 border-l-2 pl-6 italic\">\n    <slot />\n  </block"
  },
  {
    "path": "apps/v4/components/content/ProseCode.vue",
    "chars": 189,
    "preview": "<script setup lang=\"ts\">\n</script>\n\n<template>\n  <code class=\"bg-muted relative rounded-md px-[0.3rem] py-[0.2rem] font-"
  },
  {
    "path": "apps/v4/components/content/ProseH1.vue",
    "chars": 158,
    "preview": "<script setup lang=\"ts\"></script>\n\n<template>\n  <h1 class=\"font-heading mt-2 scroll-m-28 text-3xl font-bold tracking-tig"
  },
  {
    "path": "apps/v4/components/content/ProseH2.vue",
    "chars": 264,
    "preview": "<script setup lang=\"ts\">\n</script>\n\n<template>\n  <h2 class=\"font-heading [&+]*:[code]:text-xl mt-10 scroll-m-28 text-xl "
  },
  {
    "path": "apps/v4/components/content/ProseH3.vue",
    "chars": 196,
    "preview": "<script setup lang=\"ts\"></script>\n\n<template>\n  <h3\n    class=\"font-heading mt-12 scroll-m-28 text-lg font-medium tracki"
  },
  {
    "path": "apps/v4/components/content/ProseH4.vue",
    "chars": 168,
    "preview": "<script setup lang=\"ts\"></script>\n\n<template>\n  <h4\n    class=\"font-heading mt-8 scroll-m-28 text-base font-medium track"
  },
  {
    "path": "apps/v4/components/content/ProseH5.vue",
    "chars": 148,
    "preview": "<script setup lang=\"ts\"></script>\n\n<template>\n  <h5 class=\"mt-8 scroll-m-28 text-base font-medium tracking-tight\">\n    <"
  },
  {
    "path": "apps/v4/components/content/ProseH6.vue",
    "chars": 148,
    "preview": "<script setup lang=\"ts\"></script>\n\n<template>\n  <h6 class=\"mt-8 scroll-m-28 text-base font-medium tracking-tight\">\n    <"
  },
  {
    "path": "apps/v4/components/content/ProseHr.vue",
    "chars": 87,
    "preview": "<script setup lang=\"ts\">\n</script>\n\n<template>\n  <hr class=\"my-4 md:my-8\">\n</template>\n"
  },
  {
    "path": "apps/v4/components/content/ProseImg.vue",
    "chars": 86,
    "preview": "<script setup lang=\"ts\">\n</script>\n\n<template>\n  <img class=\"rounded-md\">\n</template>\n"
  },
  {
    "path": "apps/v4/components/content/ProseLi.vue",
    "chars": 100,
    "preview": "<script setup lang=\"ts\">\n</script>\n\n<template>\n  <li class=\"mt-2\">\n    <slot />\n  </li>\n</template>\n"
  },
  {
    "path": "apps/v4/components/content/ProseOl.vue",
    "chars": 118,
    "preview": "<script setup lang=\"ts\">\n</script>\n\n<template>\n  <ol class=\"my-6 ml-6 list-decimal\">\n    <slot />\n  </ol>\n</template>\n"
  },
  {
    "path": "apps/v4/components/content/ProseP.vue",
    "chars": 299,
    "preview": "<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '~/lib/utils'\n\nconst props = defin"
  },
  {
    "path": "apps/v4/components/content/ProsePre.vue",
    "chars": 3517,
    "preview": "<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue'\nimport { getIconForLanguageExtension } from '@/compon"
  },
  {
    "path": "apps/v4/components/content/ProseStrong.vue",
    "chars": 115,
    "preview": "<script setup lang=\"ts\">\n</script>\n\n<template>\n  <strong class=\"font-medium\">\n    <slot />\n  </strong>\n</template>\n"
  },
  {
    "path": "apps/v4/components/content/ProseTable.vue",
    "chars": 542,
    "preview": "<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '~/lib/utils'\n\ndefineOptions({\n  i"
  },
  {
    "path": "apps/v4/components/content/ProseTd.vue",
    "chars": 173,
    "preview": "<script setup lang=\"ts\">\n</script>\n\n<template>\n  <td class=\"px-4 py-2 text-left [&[align=center]]:text-center [&[align=r"
  },
  {
    "path": "apps/v4/components/content/ProseTh.vue",
    "chars": 183,
    "preview": "<script setup lang=\"ts\">\n</script>\n\n<template>\n  <th class=\"px-4 py-2 text-left font-bold [&[align=center]]:text-center "
  },
  {
    "path": "apps/v4/components/content/ProseTr.vue",
    "chars": 127,
    "preview": "<script setup lang=\"ts\">\n</script>\n\n<template>\n  <tr class=\"last:border-b-none m-0 border-b\">\n    <slot />\n  </tr>\n</tem"
  },
  {
    "path": "apps/v4/components/content/ProseUl.vue",
    "chars": 115,
    "preview": "<script setup lang=\"ts\">\n</script>\n\n<template>\n  <ul class=\"my-6 ml-6 list-disc\">\n    <slot />\n  </ul>\n</template>\n"
  },
  {
    "path": "apps/v4/components/content/Step.vue",
    "chars": 358,
    "preview": "<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '~/lib/utils'\n\nconst props = defin"
  },
  {
    "path": "apps/v4/components/content/Steps.vue",
    "chars": 344,
    "preview": "<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue'\nimport { cn } from '~/lib/utils'\n\nconst props = defin"
  },
  {
    "path": "apps/v4/components/content/Tabs.vue",
    "chars": 311,
    "preview": "<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue'\nimport { Tabs } from '@/registry/new-york-v4/ui/tabs'"
  },
  {
    "path": "apps/v4/components/content/TabsContent.vue",
    "chars": 520,
    "preview": "<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue'\nimport { TabsContent } from '@/registry/new-york-v4/u"
  },
  {
    "path": "apps/v4/components/content/TabsList.vue",
    "chars": 379,
    "preview": "<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue'\nimport { TabsList } from '@/registry/new-york-v4/ui/t"
  },
  {
    "path": "apps/v4/components/content/TabsTrigger.vue",
    "chars": 681,
    "preview": "<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue'\nimport { TabsTrigger } from '@/registry/new-york-v4/u"
  },
  {
    "path": "apps/v4/components/content/VueSchoolLink.vue",
    "chars": 2016,
    "preview": "<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue'\nimport { VideoIcon } from 'lucide-vue-next'\nimport { "
  },
  {
    "path": "apps/v4/components/demo/AccordionDemo.vue",
    "chars": 1999,
    "preview": "<script setup lang=\"ts\">\nimport {\n  Accordion,\n  AccordionContent,\n  AccordionItem,\n  AccordionTrigger,\n} from '@/regist"
  },
  {
    "path": "apps/v4/components/demo/AlertDemo.vue",
    "chars": 1116,
    "preview": "<script setup lang=\"ts\">\nimport { AlertCircleIcon, CheckCircle2Icon, PopcornIcon } from 'lucide-vue-next'\nimport {\n  Ale"
  },
  {
    "path": "apps/v4/components/demo/AlertDestructive.vue",
    "chars": 404,
    "preview": "<script setup lang=\"ts\">\nimport { AlertCircleIcon } from 'lucide-vue-next'\nimport {\n  Alert,\n  AlertDescription,\n  Alert"
  },
  {
    "path": "apps/v4/components/demo/AlertDialogDemo.vue",
    "chars": 1060,
    "preview": "<script setup lang=\"ts\">\nimport {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  Alert"
  }
]

// ... and 5759 more files (download for full content)

About this extraction

This page contains the full source code of the unovue/shadcn-vue GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 5959 files (34.7 MB), approximately 9.4M tokens, and a symbol index with 884 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!