Repository: vuetifyjs/vuetify Branch: master Commit: 015da5215875 Files: 2850 Total size: 7.6 MB Directory structure: gitextract_h1t3tnb3/ ├── .dockerignore ├── .editorconfig ├── .eslintrc.cjs ├── .gitattributes ├── .github/ │ ├── .git_commit_msg.txt │ ├── CONTRIBUTING.md │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ └── config.yml │ ├── PULL_REQUEST_TEMPLATE.md │ ├── actions/ │ │ ├── download-locales/ │ │ │ └── action.yml │ │ └── nightly-release/ │ │ └── action.yml │ ├── issue-close-app.yml │ ├── lock.yml │ ├── semantic.yml │ ├── sponsors.yml │ └── workflows/ │ ├── ci.yml │ ├── close-issue.yml │ ├── crowdin-uploads.yml │ ├── nightly.yml │ ├── stale.yml │ └── triage.yml ├── .gitignore ├── .husky/ │ ├── commit-msg │ ├── pre-commit │ └── prepare-commit-msg ├── .nvmrc ├── CODE_OF_CONDUCT.md ├── Dockerfile ├── SECURITY.md ├── crowdin.yml ├── docker-compose.yml ├── eslint-local-rules.cjs ├── jest.config.cjs ├── lerna.json ├── package.json ├── packages/ │ ├── README.md │ ├── api-generator/ │ │ ├── .gitignore │ │ ├── package.json │ │ ├── src/ │ │ │ ├── helpers/ │ │ │ │ ├── sass.ts │ │ │ │ └── text.ts │ │ │ ├── index.ts │ │ │ ├── locale/ │ │ │ │ └── en/ │ │ │ │ ├── $vuetify.json │ │ │ │ ├── DataIterator-items.json │ │ │ │ ├── DataTable-expand.json │ │ │ │ ├── DataTable-group.json │ │ │ │ ├── DataTable-header.json │ │ │ │ ├── DataTable-items.json │ │ │ │ ├── DataTable-paginate.json │ │ │ │ ├── DataTable-select.json │ │ │ │ ├── DataTable-sort.json │ │ │ │ ├── DataTable.json │ │ │ │ ├── Select.json │ │ │ │ ├── SelectionControlGroup.json │ │ │ │ ├── Slider.json │ │ │ │ ├── Stepper.json │ │ │ │ ├── StepperItem.json │ │ │ │ ├── VAlert.json │ │ │ │ ├── VApp.json │ │ │ │ ├── VAppBar.json │ │ │ │ ├── VAutocomplete.json │ │ │ │ ├── VAvatar.json │ │ │ │ ├── VAvatarGroup.json │ │ │ │ ├── VBadge.json │ │ │ │ ├── VBanner.json │ │ │ │ ├── VBottomNavigation.json │ │ │ │ ├── VBottomSheet.json │ │ │ │ ├── VBreadcrumbs.json │ │ │ │ ├── VBreadcrumbsDivider.json │ │ │ │ ├── VBtn.json │ │ │ │ ├── VBtnGroup.json │ │ │ │ ├── VBtnToggle.json │ │ │ │ ├── VCalendar.json │ │ │ │ ├── VCard.json │ │ │ │ ├── VCarousel.json │ │ │ │ ├── VCheckbox.json │ │ │ │ ├── VCheckboxBtn.json │ │ │ │ ├── VChip.json │ │ │ │ ├── VChipGroup.json │ │ │ │ ├── VCol.json │ │ │ │ ├── VColorInput.json │ │ │ │ ├── VColorPicker.json │ │ │ │ ├── VCombobox.json │ │ │ │ ├── VCommandPalette.json │ │ │ │ ├── VCommandPaletteItem.json │ │ │ │ ├── VConfirmEdit.json │ │ │ │ ├── VContainer.json │ │ │ │ ├── VCounter.json │ │ │ │ ├── VDataIterator.json │ │ │ │ ├── VDataTable.json │ │ │ │ ├── VDataTableFooter.json │ │ │ │ ├── VDataTableHeaders.json │ │ │ │ ├── VDataTableRow.json │ │ │ │ ├── VDataTableRows.json │ │ │ │ ├── VDataTableServer.json │ │ │ │ ├── VDataTableVirtual.json │ │ │ │ ├── VDateInput.json │ │ │ │ ├── VDatePicker.json │ │ │ │ ├── VDatePickerControls.json │ │ │ │ ├── VDatePickerHeader.json │ │ │ │ ├── VDatePickerMonth.json │ │ │ │ ├── VDatePickerMonths.json │ │ │ │ ├── VDatePickerYears.json │ │ │ │ ├── VDefaultsProvider.json │ │ │ │ ├── VDialog.json │ │ │ │ ├── VDialogTransition.json │ │ │ │ ├── VDivider.json │ │ │ │ ├── VEmptyState.json │ │ │ │ ├── VExpansionPanel.json │ │ │ │ ├── VExpansionPanelTitle.json │ │ │ │ ├── VExpansionPanels.json │ │ │ │ ├── VFab.json │ │ │ │ ├── VField.json │ │ │ │ ├── VFieldLabel.json │ │ │ │ ├── VFileInput.json │ │ │ │ ├── VFileUpload.json │ │ │ │ ├── VFileUploadDropzone.json │ │ │ │ ├── VFileUploadItem.json │ │ │ │ ├── VFileUploadList.json │ │ │ │ ├── VFooter.json │ │ │ │ ├── VForm.json │ │ │ │ ├── VHotkey.json │ │ │ │ ├── VHover.json │ │ │ │ ├── VIconBtn.json │ │ │ │ ├── VImg.json │ │ │ │ ├── VInfiniteScroll.json │ │ │ │ ├── VInput.json │ │ │ │ ├── VItemGroup.json │ │ │ │ ├── VLayout.json │ │ │ │ ├── VLayoutItem.json │ │ │ │ ├── VLazy.json │ │ │ │ ├── VList.json │ │ │ │ ├── VListGroup.json │ │ │ │ ├── VListItem.json │ │ │ │ ├── VListSubheader.json │ │ │ │ ├── VLocaleProvider.json │ │ │ │ ├── VMain.json │ │ │ │ ├── VMenu.json │ │ │ │ ├── VMessages.json │ │ │ │ ├── VNavigationDrawer.json │ │ │ │ ├── VNumberInput.json │ │ │ │ ├── VOtpInput.json │ │ │ │ ├── VOverflowBtn.json │ │ │ │ ├── VOverlay-activator.json │ │ │ │ ├── VOverlay-location-strategies.json │ │ │ │ ├── VOverlay-scroll-strategies.json │ │ │ │ ├── VOverlay.json │ │ │ │ ├── VPagination.json │ │ │ │ ├── VParallax.json │ │ │ │ ├── VPicker.json │ │ │ │ ├── VPie.json │ │ │ │ ├── VPieSegment.json │ │ │ │ ├── VPieTooltip.json │ │ │ │ ├── VProgress.json │ │ │ │ ├── VProgressCircular.json │ │ │ │ ├── VProgressLinear.json │ │ │ │ ├── VPullToRefresh.json │ │ │ │ ├── VRadio.json │ │ │ │ ├── VRadioGroup.json │ │ │ │ ├── VRangeSlider.json │ │ │ │ ├── VRating.json │ │ │ │ ├── VResponsive.json │ │ │ │ ├── VRow.json │ │ │ │ ├── VSelect.json │ │ │ │ ├── VSelectionControl.json │ │ │ │ ├── VSheet.json │ │ │ │ ├── VSkeletonLoader.json │ │ │ │ ├── VSlideGroup.json │ │ │ │ ├── VSlider.json │ │ │ │ ├── VSnackbar.json │ │ │ │ ├── VSnackbarQueue.json │ │ │ │ ├── VSparkline.json │ │ │ │ ├── VSpeedDial.json │ │ │ │ ├── VStepper.json │ │ │ │ ├── VStepperActions.json │ │ │ │ ├── VStepperHeader.json │ │ │ │ ├── VStepperItem.json │ │ │ │ ├── VStepperVertical.json │ │ │ │ ├── VStepperVerticalItem.json │ │ │ │ ├── VStepperWindow.json │ │ │ │ ├── VStepperWindowItem.json │ │ │ │ ├── VSwitch.json │ │ │ │ ├── VSystemBar.json │ │ │ │ ├── VTab.json │ │ │ │ ├── VTable.json │ │ │ │ ├── VTabs.json │ │ │ │ ├── VTextField.json │ │ │ │ ├── VTextarea.json │ │ │ │ ├── VThemeProvider.json │ │ │ │ ├── VTimePicker.json │ │ │ │ ├── VTimePickerClock.json │ │ │ │ ├── VTimePickerControls.json │ │ │ │ ├── VTimeline.json │ │ │ │ ├── VTimelineItem.json │ │ │ │ ├── VToolbar.json │ │ │ │ ├── VTooltip.json │ │ │ │ ├── VTreeview.json │ │ │ │ ├── VTreeviewGroup.json │ │ │ │ ├── VTreeviewItem.json │ │ │ │ ├── VVideo.json │ │ │ │ ├── VVideoControls.json │ │ │ │ ├── VVideoVolume.json │ │ │ │ ├── VVirtualScroll.json │ │ │ │ ├── VWindow.json │ │ │ │ ├── VWindowItem.json │ │ │ │ ├── autocomplete.json │ │ │ │ ├── border.json │ │ │ │ ├── calendar.json │ │ │ │ ├── delay.json │ │ │ │ ├── dimension.json │ │ │ │ ├── display.json │ │ │ │ ├── elevation.json │ │ │ │ ├── filter.json │ │ │ │ ├── focus.json │ │ │ │ ├── form.json │ │ │ │ ├── generic.json │ │ │ │ ├── group-item.json │ │ │ │ ├── group.json │ │ │ │ ├── layout-item.json │ │ │ │ ├── layout.json │ │ │ │ ├── list-items.json │ │ │ │ ├── loader.json │ │ │ │ ├── location.json │ │ │ │ ├── mask.json │ │ │ │ ├── nested.json │ │ │ │ ├── position.json │ │ │ │ ├── rounded.json │ │ │ │ ├── router.json │ │ │ │ ├── size.json │ │ │ │ ├── tag.json │ │ │ │ ├── theme.json │ │ │ │ ├── time-validation.json │ │ │ │ ├── transition.json │ │ │ │ ├── useDate.json │ │ │ │ ├── useDisplay.json │ │ │ │ ├── useGoTo.json │ │ │ │ ├── useHotkey.json │ │ │ │ ├── useLayout.json │ │ │ │ ├── useLocale.json │ │ │ │ ├── useMask.json │ │ │ │ ├── useRtl.json │ │ │ │ ├── useTheme.json │ │ │ │ ├── v-click-outside.json │ │ │ │ ├── v-intersect.json │ │ │ │ ├── v-mutate.json │ │ │ │ ├── v-resize.json │ │ │ │ ├── v-ripple.json │ │ │ │ ├── v-scroll.json │ │ │ │ ├── v-tooltip.json │ │ │ │ ├── v-touch.json │ │ │ │ ├── validation.json │ │ │ │ └── virtual.json │ │ │ ├── shims.d.ts │ │ │ ├── types.ts │ │ │ ├── utils.ts │ │ │ ├── vetur.ts │ │ │ ├── web-types.ts │ │ │ └── worker.ts │ │ ├── templates/ │ │ │ ├── component.d.ts │ │ │ ├── composables.d.ts │ │ │ └── directives.d.ts │ │ └── tsconfig.json │ ├── docs/ │ │ ├── .browserslistrc │ │ ├── .eslintignore │ │ ├── .eslintrc.cjs │ │ ├── .gitignore │ │ ├── .markdownlintrc │ │ ├── auto-imports.d.ts │ │ ├── build/ │ │ │ ├── Caddyfile │ │ │ ├── api-plugin.ts │ │ │ ├── examples-plugin.ts │ │ │ ├── markdown-it.ts │ │ │ ├── markdownBuilders.ts │ │ │ ├── mdi-js.ts │ │ │ └── sitemap.js │ │ ├── components.d.ts │ │ ├── index.html │ │ ├── jest-runner-eslint.config.cjs │ │ ├── jest.config.cjs │ │ ├── package.json │ │ ├── public/ │ │ │ ├── ads.txt │ │ │ ├── llms.txt │ │ │ ├── robots.txt │ │ │ └── search.xml │ │ ├── src/ │ │ │ ├── App.vue │ │ │ ├── components/ │ │ │ │ ├── Alert.vue │ │ │ │ ├── Backmatter.vue │ │ │ │ ├── PageFeatures.vue │ │ │ │ ├── about/ │ │ │ │ │ ├── TeamMember.vue │ │ │ │ │ └── TeamMembers.vue │ │ │ │ ├── api/ │ │ │ │ │ ├── ApiTable.vue │ │ │ │ │ ├── Backlinks.vue │ │ │ │ │ ├── DirectiveTable.vue │ │ │ │ │ ├── EventsTable.vue │ │ │ │ │ ├── ExposedTable.vue │ │ │ │ │ ├── Inline.vue │ │ │ │ │ ├── Links.vue │ │ │ │ │ ├── NameCell.vue │ │ │ │ │ ├── PrismCell.vue │ │ │ │ │ ├── PropsTable.vue │ │ │ │ │ ├── SassTable.vue │ │ │ │ │ ├── Search.vue │ │ │ │ │ ├── Section.vue │ │ │ │ │ ├── SlotsTable.vue │ │ │ │ │ ├── View.vue │ │ │ │ │ └── utils.ts │ │ │ │ ├── app/ │ │ │ │ │ ├── BackToTop.vue │ │ │ │ │ ├── Btn.vue │ │ │ │ │ ├── Caption.vue │ │ │ │ │ ├── CommitBtn.vue │ │ │ │ │ ├── Divider.vue │ │ │ │ │ ├── Figure.vue │ │ │ │ │ ├── Heading.vue │ │ │ │ │ ├── Headline.vue │ │ │ │ │ ├── Link.vue │ │ │ │ │ ├── Markdown.vue │ │ │ │ │ ├── Markup.vue │ │ │ │ │ ├── Sheet.vue │ │ │ │ │ ├── Table.vue │ │ │ │ │ ├── TextField.vue │ │ │ │ │ ├── Title.vue │ │ │ │ │ ├── Toc.vue │ │ │ │ │ ├── TooltipBtn.vue │ │ │ │ │ ├── V2Banner.vue │ │ │ │ │ ├── VersionBtn.vue │ │ │ │ │ ├── VerticalDivider.vue │ │ │ │ │ ├── bar/ │ │ │ │ │ │ ├── Bar.vue │ │ │ │ │ │ ├── BlogLink.vue │ │ │ │ │ │ ├── EcosystemMenu.vue │ │ │ │ │ │ ├── EnterpriseLink.vue │ │ │ │ │ │ ├── GitHubLink.vue │ │ │ │ │ │ ├── JobsLink.vue │ │ │ │ │ │ ├── LanguageMenu.vue │ │ │ │ │ │ ├── LearnMenu.vue │ │ │ │ │ │ ├── Logo.vue │ │ │ │ │ │ ├── NotificationsMenu.vue │ │ │ │ │ │ ├── OneLink.vue │ │ │ │ │ │ ├── PlaygroundLink.vue │ │ │ │ │ │ ├── SettingsToggle.vue │ │ │ │ │ │ ├── SponsorLink.vue │ │ │ │ │ │ ├── StoreLink.vue │ │ │ │ │ │ ├── SupportLink.vue │ │ │ │ │ │ ├── SupportMenu.vue │ │ │ │ │ │ ├── TeamLink.vue │ │ │ │ │ │ └── ThemeToggle.vue │ │ │ │ │ ├── drawer/ │ │ │ │ │ │ ├── Append.vue │ │ │ │ │ │ ├── Drawer.vue │ │ │ │ │ │ ├── DrawerToggleRail.vue │ │ │ │ │ │ └── PinnedItems.vue │ │ │ │ │ ├── list/ │ │ │ │ │ │ ├── LinkListItem.vue │ │ │ │ │ │ └── List.vue │ │ │ │ │ ├── menu/ │ │ │ │ │ │ └── Menu.vue │ │ │ │ │ ├── search/ │ │ │ │ │ │ ├── Search.vue │ │ │ │ │ │ ├── SearchDialog.vue │ │ │ │ │ │ ├── SearchGroup.vue │ │ │ │ │ │ └── SearchResults.vue │ │ │ │ │ └── settings/ │ │ │ │ │ ├── Append.vue │ │ │ │ │ ├── DeveloperMode.vue │ │ │ │ │ ├── DocumentationBuild.vue │ │ │ │ │ ├── Drawer.vue │ │ │ │ │ ├── LatestCommit.vue │ │ │ │ │ ├── LatestRelease.vue │ │ │ │ │ ├── Options.vue │ │ │ │ │ ├── SettingsHeader.vue │ │ │ │ │ └── options/ │ │ │ │ │ ├── AdOption.vue │ │ │ │ │ ├── ApiOption.vue │ │ │ │ │ ├── CodeOption.vue │ │ │ │ │ ├── OfflineOption.vue │ │ │ │ │ ├── PinOption.vue │ │ │ │ │ ├── RailDrawerOption.vue │ │ │ │ │ ├── SlashSearchOption.vue │ │ │ │ │ └── ThemeOption.vue │ │ │ │ ├── components/ │ │ │ │ │ └── ListItem.vue │ │ │ │ ├── dashboard/ │ │ │ │ │ └── DashboardEmptyState.vue │ │ │ │ ├── doc/ │ │ │ │ │ ├── Explorer.vue │ │ │ │ │ ├── IconList.vue │ │ │ │ │ ├── IconTable.vue │ │ │ │ │ ├── Introduced.vue │ │ │ │ │ ├── MadeWithVueAttribution.vue │ │ │ │ │ ├── MadeWithVuetifyGallery.vue │ │ │ │ │ ├── MadeWithVuetifyLink.vue │ │ │ │ │ ├── ReadyForMore.vue │ │ │ │ │ ├── RelatedPage.vue │ │ │ │ │ ├── RelatedPages.vue │ │ │ │ │ ├── Releases.vue │ │ │ │ │ ├── Tabs.vue │ │ │ │ │ ├── ThemeCard.vue │ │ │ │ │ ├── ThemeVendor.vue │ │ │ │ │ ├── TypographyPreview.vue │ │ │ │ │ ├── UpNext.vue │ │ │ │ │ └── VueJobs.vue │ │ │ │ ├── examples/ │ │ │ │ │ ├── Example.vue │ │ │ │ │ ├── ExampleMissing.vue │ │ │ │ │ ├── Usage.vue │ │ │ │ │ ├── UsageExample.vue │ │ │ │ │ └── VueFile.vue │ │ │ │ ├── features/ │ │ │ │ │ ├── BreakpointsTable.vue │ │ │ │ │ ├── ColorPalette.vue │ │ │ │ │ └── SassApi.vue │ │ │ │ ├── getting-started/ │ │ │ │ │ └── WireframeExamples.vue │ │ │ │ ├── home/ │ │ │ │ │ ├── Blogs.vue │ │ │ │ │ ├── Common/ │ │ │ │ │ │ ├── Card.vue │ │ │ │ │ │ ├── Gradient.vue │ │ │ │ │ │ ├── Marquee.vue │ │ │ │ │ │ └── Title.vue │ │ │ │ │ ├── Discord.vue │ │ │ │ │ ├── Ecosystem.vue │ │ │ │ │ ├── Entry.vue │ │ │ │ │ ├── Footer.vue │ │ │ │ │ ├── Gallery/ │ │ │ │ │ │ ├── Analytics.vue │ │ │ │ │ │ ├── Chat/ │ │ │ │ │ │ │ ├── Chat.vue │ │ │ │ │ │ │ ├── Detail.vue │ │ │ │ │ │ │ └── List.vue │ │ │ │ │ │ ├── Components.vue │ │ │ │ │ │ ├── Dashboard.vue │ │ │ │ │ │ ├── Login.vue │ │ │ │ │ │ └── Settings.vue │ │ │ │ │ ├── Logo.vue │ │ │ │ │ ├── Snips.vue │ │ │ │ │ ├── SnipsExample.vue │ │ │ │ │ ├── SpecialSponsor.vue │ │ │ │ │ ├── Sponsors.vue │ │ │ │ │ ├── Store.vue │ │ │ │ │ ├── Support.vue │ │ │ │ │ ├── Tooling.vue │ │ │ │ │ └── VuetifyOne.vue │ │ │ │ ├── icons/ │ │ │ │ │ └── ChevronDown.vue │ │ │ │ ├── introduction/ │ │ │ │ │ ├── Comparison.vue │ │ │ │ │ ├── ConsultingServices.vue │ │ │ │ │ ├── DirectSupport.vue │ │ │ │ │ ├── DiscordDeck.vue │ │ │ │ │ ├── EnterpriseDeck.vue │ │ │ │ │ ├── EnterpriseForm.vue │ │ │ │ │ └── SlaDeck.vue │ │ │ │ ├── one/ │ │ │ │ │ ├── FAQ.vue │ │ │ │ │ ├── Hero.vue │ │ │ │ │ ├── Properties.vue │ │ │ │ │ ├── Roadmap.vue │ │ │ │ │ └── SubscribeCard.vue │ │ │ │ ├── promoted/ │ │ │ │ │ ├── Base.vue │ │ │ │ │ ├── Carbon.vue │ │ │ │ │ ├── Discovery.vue │ │ │ │ │ ├── Entry.vue │ │ │ │ │ ├── Inline.vue │ │ │ │ │ ├── Promoted.vue │ │ │ │ │ ├── Random.vue │ │ │ │ │ ├── Script.vue │ │ │ │ │ └── Vuetify.vue │ │ │ │ ├── promotions/ │ │ │ │ │ └── PromotionCard.vue │ │ │ │ ├── resources/ │ │ │ │ │ ├── ColorPalette.vue │ │ │ │ │ └── Logos.vue │ │ │ │ ├── sponsor/ │ │ │ │ │ ├── Card.vue │ │ │ │ │ ├── Link.vue │ │ │ │ │ ├── SnackbarPopup.vue │ │ │ │ │ └── Sponsors.vue │ │ │ │ └── user/ │ │ │ │ ├── OneSubCard.vue │ │ │ │ ├── UserTabs.vue │ │ │ │ └── badges/ │ │ │ │ ├── UserAdminBadge.vue │ │ │ │ ├── UserOneBadge.vue │ │ │ │ └── UserSponsorBadge.vue │ │ │ ├── composables/ │ │ │ │ ├── ad.ts │ │ │ │ ├── bin.ts │ │ │ │ ├── cosmic.ts │ │ │ │ ├── frontmatter.ts │ │ │ │ ├── markdown.ts │ │ │ │ └── playground.ts │ │ │ ├── data/ │ │ │ │ ├── 301.json │ │ │ │ ├── metadata.json │ │ │ │ ├── nav.json │ │ │ │ ├── new-in.json │ │ │ │ ├── page-to-api.json │ │ │ │ └── team.json │ │ │ ├── examples/ │ │ │ │ ├── accessibility/ │ │ │ │ │ ├── list-item-group.vue │ │ │ │ │ ├── menu.vue │ │ │ │ │ └── select-list-item.vue │ │ │ │ ├── application/ │ │ │ │ │ ├── app-bar-drawer.vue │ │ │ │ │ ├── drawer-app-bar.vue │ │ │ │ │ └── theme.vue │ │ │ │ ├── application-layout/ │ │ │ │ │ ├── app-bar-first.vue │ │ │ │ │ ├── discord.vue │ │ │ │ │ ├── dynamic.vue │ │ │ │ │ ├── layout-information-composable.vue │ │ │ │ │ ├── layout-information-ref.vue │ │ │ │ │ ├── location.vue │ │ │ │ │ └── nav-drawer-first.vue │ │ │ │ ├── blueprints/ │ │ │ │ │ ├── md1.vue │ │ │ │ │ ├── md2.vue │ │ │ │ │ └── md3.vue │ │ │ │ ├── border/ │ │ │ │ │ ├── all.vue │ │ │ │ │ ├── card.vue │ │ │ │ │ ├── colors.vue │ │ │ │ │ ├── sides.vue │ │ │ │ │ └── styles.vue │ │ │ │ ├── border-radius/ │ │ │ │ │ ├── misc-components.vue │ │ │ │ │ ├── misc-pill-and-circle.vue │ │ │ │ │ ├── misc-removing-border-radius.vue │ │ │ │ │ ├── misc-rounded-corners.vue │ │ │ │ │ ├── misc-rounding-by-corner.vue │ │ │ │ │ └── misc-rounding-by-side.vue │ │ │ │ ├── color/ │ │ │ │ │ ├── classes.vue │ │ │ │ │ └── text-classes.vue │ │ │ │ ├── concepts/ │ │ │ │ │ ├── density-and-size.vue │ │ │ │ │ ├── density.vue │ │ │ │ │ └── size.vue │ │ │ │ ├── cursor/ │ │ │ │ │ └── usage.vue │ │ │ │ ├── display/ │ │ │ │ │ ├── display-block.vue │ │ │ │ │ ├── display-inline.vue │ │ │ │ │ ├── hidden-elements.vue │ │ │ │ │ ├── print.vue │ │ │ │ │ └── visibility.vue │ │ │ │ ├── elevation/ │ │ │ │ │ ├── prop-dynamic.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── flex/ │ │ │ │ │ ├── flex-align-content.vue │ │ │ │ │ ├── flex-align-self.vue │ │ │ │ │ ├── flex-align.vue │ │ │ │ │ ├── flex-column.vue │ │ │ │ │ ├── flex-direction.vue │ │ │ │ │ ├── flex-flex.vue │ │ │ │ │ ├── flex-justify.vue │ │ │ │ │ ├── flex-nowrap.vue │ │ │ │ │ ├── flex-order.vue │ │ │ │ │ ├── flex-wrap-reverse.vue │ │ │ │ │ ├── flex-wrap.vue │ │ │ │ │ ├── flexbox-inline.vue │ │ │ │ │ ├── flexbox.vue │ │ │ │ │ ├── grow-shrink.vue │ │ │ │ │ ├── margins-align-items.vue │ │ │ │ │ └── margins.vue │ │ │ │ ├── float/ │ │ │ │ │ ├── classes.vue │ │ │ │ │ └── responsive.vue │ │ │ │ ├── grid/ │ │ │ │ │ ├── misc-column-wrapping.vue │ │ │ │ │ ├── misc-equal-width-columns.vue │ │ │ │ │ ├── misc-grow-and-shrink.vue │ │ │ │ │ ├── misc-margin-helpers.vue │ │ │ │ │ ├── misc-nested-grid.vue │ │ │ │ │ ├── misc-one-column-width.vue │ │ │ │ │ ├── misc-row-and-column-breakpoints.vue │ │ │ │ │ ├── misc-size-overrides.vue │ │ │ │ │ ├── misc-spacer.vue │ │ │ │ │ ├── misc-unique-layouts.vue │ │ │ │ │ ├── misc-variable-content.vue │ │ │ │ │ ├── prop-align.vue │ │ │ │ │ ├── prop-breakpoint-sizing.vue │ │ │ │ │ ├── prop-density-compact.vue │ │ │ │ │ ├── prop-justify.vue │ │ │ │ │ ├── prop-offset-breakpoint.vue │ │ │ │ │ ├── prop-offset.vue │ │ │ │ │ ├── prop-order-first-and-last.vue │ │ │ │ │ ├── prop-order.vue │ │ │ │ │ ├── prop-size.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── hotkey/ │ │ │ │ │ ├── basic.vue │ │ │ │ │ ├── options.vue │ │ │ │ │ ├── platform.vue │ │ │ │ │ ├── reactive.vue │ │ │ │ │ ├── sequences.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── opacity/ │ │ │ │ │ ├── misc-hover.vue │ │ │ │ │ └── misc-opacity.vue │ │ │ │ ├── overflow/ │ │ │ │ │ ├── overflow-x.vue │ │ │ │ │ └── overflow.vue │ │ │ │ ├── position/ │ │ │ │ │ ├── absolute.vue │ │ │ │ │ ├── fixed.vue │ │ │ │ │ ├── relative.vue │ │ │ │ │ ├── static.vue │ │ │ │ │ └── sticky.vue │ │ │ │ ├── scroll/ │ │ │ │ │ └── usage.vue │ │ │ │ ├── sizing/ │ │ │ │ │ ├── height.vue │ │ │ │ │ └── width.vue │ │ │ │ ├── spacing/ │ │ │ │ │ ├── breakpoints.vue │ │ │ │ │ ├── gap.vue │ │ │ │ │ ├── horizontal.vue │ │ │ │ │ ├── negative-margin.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── text-and-typography/ │ │ │ │ │ ├── font-emphasis.vue │ │ │ │ │ ├── text-alignment-responsive.vue │ │ │ │ │ ├── text-alignment.vue │ │ │ │ │ ├── text-break.vue │ │ │ │ │ ├── text-decoration.vue │ │ │ │ │ ├── text-no-wrap.vue │ │ │ │ │ ├── text-opacity.vue │ │ │ │ │ ├── text-rtl.vue │ │ │ │ │ ├── text-transform.vue │ │ │ │ │ ├── text-truncate.vue │ │ │ │ │ ├── typography-breakpoints.vue │ │ │ │ │ └── typography.vue │ │ │ │ ├── transitions/ │ │ │ │ │ ├── create-css-transition-component.vue │ │ │ │ │ ├── create-css-transition-prop.vue │ │ │ │ │ ├── misc-expand-x-padding.vue │ │ │ │ │ ├── misc-expand-x.vue │ │ │ │ │ ├── misc-fab.vue │ │ │ │ │ ├── misc-fade.vue │ │ │ │ │ ├── misc-scale.vue │ │ │ │ │ ├── misc-scroll-x.vue │ │ │ │ │ ├── misc-scroll-y.vue │ │ │ │ │ ├── misc-slide-x.vue │ │ │ │ │ ├── misc-slide-y.vue │ │ │ │ │ ├── misc-todo.vue │ │ │ │ │ ├── prop-custom-origin.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-alert/ │ │ │ │ │ ├── prop-border-color.vue │ │ │ │ │ ├── prop-border.vue │ │ │ │ │ ├── prop-closable.vue │ │ │ │ │ ├── prop-content.vue │ │ │ │ │ ├── prop-density.vue │ │ │ │ │ ├── prop-icon.vue │ │ │ │ │ ├── prop-outlined.vue │ │ │ │ │ ├── prop-prominent.vue │ │ │ │ │ ├── prop-rounded.vue │ │ │ │ │ ├── prop-type.vue │ │ │ │ │ ├── prop-variant.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-app-bar/ │ │ │ │ │ ├── misc-app-bar-nav.vue │ │ │ │ │ ├── misc-menu.vue │ │ │ │ │ ├── prop-dense.vue │ │ │ │ │ ├── prop-density.vue │ │ │ │ │ ├── prop-image.vue │ │ │ │ │ ├── prop-prominent.vue │ │ │ │ │ ├── prop-scroll-behavior.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-autocomplete/ │ │ │ │ │ ├── misc-asynchronous-items.vue │ │ │ │ │ ├── misc-new-tab.vue │ │ │ │ │ ├── misc-state-selector.vue │ │ │ │ │ ├── prop-density.vue │ │ │ │ │ ├── prop-filter-keys.vue │ │ │ │ │ ├── prop-filter.vue │ │ │ │ │ ├── prop-items.vue │ │ │ │ │ ├── slot-item-and-selection.vue │ │ │ │ │ ├── slot-item-and-vbind-props.vue │ │ │ │ │ ├── slot-menu-footer.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-avatar/ │ │ │ │ │ ├── misc-advanced.vue │ │ │ │ │ ├── misc-avatar-menu.vue │ │ │ │ │ ├── misc-profile-card.vue │ │ │ │ │ ├── prop-badge.vue │ │ │ │ │ ├── prop-size.vue │ │ │ │ │ ├── prop-tile.vue │ │ │ │ │ ├── slot-default.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-avatar-group/ │ │ │ │ │ ├── misc-hoverable.vue │ │ │ │ │ ├── prop-items.vue │ │ │ │ │ ├── prop-reverse.vue │ │ │ │ │ ├── prop-size.vue │ │ │ │ │ ├── prop-vertical.vue │ │ │ │ │ ├── slot-overflow.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-badge/ │ │ │ │ │ ├── misc-customization.vue │ │ │ │ │ ├── misc-dynamic.vue │ │ │ │ │ ├── misc-hover.vue │ │ │ │ │ ├── misc-tabs.vue │ │ │ │ │ ├── prop-content.vue │ │ │ │ │ ├── prop-dot.vue │ │ │ │ │ ├── prop-inline.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-banner/ │ │ │ │ │ ├── prop-lines.vue │ │ │ │ │ ├── prop-sticky.vue │ │ │ │ │ ├── slot-actions.vue │ │ │ │ │ ├── slot-icon.vue │ │ │ │ │ ├── slot-prepend.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-bottom-navigation/ │ │ │ │ │ ├── prop-color.vue │ │ │ │ │ ├── prop-grow.vue │ │ │ │ │ ├── prop-hide-on-scroll.vue │ │ │ │ │ ├── prop-horizontal.vue │ │ │ │ │ ├── prop-scroll-threshold.vue │ │ │ │ │ ├── prop-shift.vue │ │ │ │ │ ├── prop-toggle.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-bottom-sheet/ │ │ │ │ │ ├── misc-open-in-list.vue │ │ │ │ │ ├── misc-player.vue │ │ │ │ │ ├── prop-inset.vue │ │ │ │ │ ├── prop-model.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-breadcrumbs/ │ │ │ │ │ ├── prop-divider.vue │ │ │ │ │ ├── slot-icon-dividers.vue │ │ │ │ │ ├── slot-prepend.vue │ │ │ │ │ ├── slot-title.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-btn/ │ │ │ │ │ ├── defaults-banner-actions.vue │ │ │ │ │ ├── defaults-bottom-navigation.vue │ │ │ │ │ ├── defaults-btn-group.vue │ │ │ │ │ ├── defaults-card-actions.vue │ │ │ │ │ ├── defaults-snackbar.vue │ │ │ │ │ ├── defaults-toolbar.vue │ │ │ │ │ ├── misc-cookie-settings.vue │ │ │ │ │ ├── misc-dialog-action.vue │ │ │ │ │ ├── misc-discord-event.vue │ │ │ │ │ ├── misc-group-survey.vue │ │ │ │ │ ├── misc-raised.vue │ │ │ │ │ ├── misc-readonly.vue │ │ │ │ │ ├── misc-tax-form.vue │ │ │ │ │ ├── misc-toolbar.vue │ │ │ │ │ ├── prop-block.vue │ │ │ │ │ ├── prop-density.vue │ │ │ │ │ ├── prop-elevation.vue │ │ │ │ │ ├── prop-flat.vue │ │ │ │ │ ├── prop-floating.vue │ │ │ │ │ ├── prop-icon.vue │ │ │ │ │ ├── prop-loaders.vue │ │ │ │ │ ├── prop-outlined.vue │ │ │ │ │ ├── prop-plain.vue │ │ │ │ │ ├── prop-ripple.vue │ │ │ │ │ ├── prop-rounded.vue │ │ │ │ │ ├── prop-size.vue │ │ │ │ │ ├── prop-spaced.vue │ │ │ │ │ ├── prop-tile.vue │ │ │ │ │ ├── prop-variant.vue │ │ │ │ │ ├── slot-loader.vue │ │ │ │ │ ├── slot-prepend-append.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-btn-toggle/ │ │ │ │ │ ├── misc-toolbar.vue │ │ │ │ │ ├── misc-wysiwyg.vue │ │ │ │ │ ├── prop-divided.vue │ │ │ │ │ ├── prop-mandatory.vue │ │ │ │ │ ├── prop-multiple.vue │ │ │ │ │ ├── prop-rounded.vue │ │ │ │ │ ├── prop-variant.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-calendar/ │ │ │ │ │ ├── event-click.vue │ │ │ │ │ ├── misc-drag-and-drop.vue │ │ │ │ │ ├── prop-type-category.vue │ │ │ │ │ ├── prop-type-day.vue │ │ │ │ │ ├── prop-type-week.vue │ │ │ │ │ ├── slot-day-body.vue │ │ │ │ │ ├── slot-day.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-card/ │ │ │ │ │ ├── basics-combine.vue │ │ │ │ │ ├── basics-content.vue │ │ │ │ │ ├── misc-card-reveal.vue │ │ │ │ │ ├── misc-content-wrapping.vue │ │ │ │ │ ├── misc-custom-actions.vue │ │ │ │ │ ├── misc-earnings-goal.vue │ │ │ │ │ ├── misc-grids.vue │ │ │ │ │ ├── misc-horizontal-cards.vue │ │ │ │ │ ├── misc-information-card.vue │ │ │ │ │ ├── misc-intermediate.vue │ │ │ │ │ ├── misc-media-with-text.vue │ │ │ │ │ ├── misc-shopify-funding.vue │ │ │ │ │ ├── misc-twitter-card.vue │ │ │ │ │ ├── misc-weather-card.vue │ │ │ │ │ ├── prop-color.vue │ │ │ │ │ ├── prop-disabled.vue │ │ │ │ │ ├── prop-elevated.vue │ │ │ │ │ ├── prop-elevation.vue │ │ │ │ │ ├── prop-hover.vue │ │ │ │ │ ├── prop-href.vue │ │ │ │ │ ├── prop-image.vue │ │ │ │ │ ├── prop-link.vue │ │ │ │ │ ├── prop-loading.vue │ │ │ │ │ ├── prop-outlined.vue │ │ │ │ │ ├── prop-variant.vue │ │ │ │ │ ├── slot-prepend-append.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-carousel/ │ │ │ │ │ ├── misc-vertical.vue │ │ │ │ │ ├── prop-custom-icons.vue │ │ │ │ │ ├── prop-custom-transition.vue │ │ │ │ │ ├── prop-cycle.vue │ │ │ │ │ ├── prop-hide-controls.vue │ │ │ │ │ ├── prop-hide-delimiters.vue │ │ │ │ │ ├── prop-model.vue │ │ │ │ │ ├── prop-progress.vue │ │ │ │ │ ├── slots-next-prev.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-checkbox/ │ │ │ │ │ ├── misc-inline-textfield.vue │ │ │ │ │ ├── prop-colors.vue │ │ │ │ │ ├── prop-model-as-array.vue │ │ │ │ │ ├── prop-model-as-boolean.vue │ │ │ │ │ ├── prop-states.vue │ │ │ │ │ ├── slot-label.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-chip/ │ │ │ │ │ ├── event-action-chips.vue │ │ │ │ │ ├── misc-custom-list.vue │ │ │ │ │ ├── misc-expandable.vue │ │ │ │ │ ├── misc-filtering.vue │ │ │ │ │ ├── misc-in-selects.vue │ │ │ │ │ ├── prop-closable.vue │ │ │ │ │ ├── prop-colored.vue │ │ │ │ │ ├── prop-draggable.vue │ │ │ │ │ ├── prop-filter.vue │ │ │ │ │ ├── prop-label.vue │ │ │ │ │ ├── prop-no-ripple.vue │ │ │ │ │ ├── prop-outlined.vue │ │ │ │ │ ├── prop-sizes.vue │ │ │ │ │ ├── slot-icon.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-chip-group/ │ │ │ │ │ ├── misc-product-card.vue │ │ │ │ │ ├── misc-reddit-categories.vue │ │ │ │ │ ├── misc-toothbrush-card.vue │ │ │ │ │ ├── prop-column.vue │ │ │ │ │ ├── prop-filter.vue │ │ │ │ │ ├── prop-mandatory.vue │ │ │ │ │ ├── prop-multiple.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-click-outside/ │ │ │ │ │ ├── option-close-on-outside-click.vue │ │ │ │ │ ├── option-include.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-color-input/ │ │ │ │ │ ├── prop-color-pip.vue │ │ │ │ │ ├── prop-model.vue │ │ │ │ │ ├── prop-pip-location.vue │ │ │ │ │ ├── prop-pip-variant.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-color-picker/ │ │ │ │ │ ├── prop-canvas.vue │ │ │ │ │ ├── prop-elevation.vue │ │ │ │ │ ├── prop-mode.vue │ │ │ │ │ ├── prop-model.vue │ │ │ │ │ ├── prop-swatches.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-combobox/ │ │ │ │ │ ├── misc-advanced.vue │ │ │ │ │ ├── prop-density.vue │ │ │ │ │ ├── prop-multiple.vue │ │ │ │ │ ├── prop-placeholder.vue │ │ │ │ │ ├── slot-custom-chip.vue │ │ │ │ │ ├── slot-menu-header.vue │ │ │ │ │ ├── slot-no-data.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-command-palette/ │ │ │ │ │ ├── prop-close-on-select.vue │ │ │ │ │ ├── prop-hotkey.vue │ │ │ │ │ ├── prop-items.vue │ │ │ │ │ ├── slot-item-append.vue │ │ │ │ │ ├── slot-item-prepend.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-confirm-edit/ │ │ │ │ │ ├── misc-date-picker.vue │ │ │ │ │ ├── misc-disable-actions.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-data-iterator/ │ │ │ │ │ ├── misc-filter.vue │ │ │ │ │ ├── slot-default.vue │ │ │ │ │ ├── slot-header-and-footer.vue │ │ │ │ │ ├── slot-loader.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-data-table/ │ │ │ │ │ ├── headers-multiple.vue │ │ │ │ │ ├── misc-crud.vue │ │ │ │ │ ├── misc-edit-dialog.vue │ │ │ │ │ ├── misc-expand.vue │ │ │ │ │ ├── misc-external-paginate.vue │ │ │ │ │ ├── misc-external-sort.vue │ │ │ │ │ ├── misc-select-all.vue │ │ │ │ │ ├── misc-server-side-paginate-and-sort.vue │ │ │ │ │ ├── prop-custom-filter.vue │ │ │ │ │ ├── prop-dense.vue │ │ │ │ │ ├── prop-filter-keys.vue │ │ │ │ │ ├── prop-footer-props.vue │ │ │ │ │ ├── prop-grouping.vue │ │ │ │ │ ├── prop-headers-sort-raw.vue │ │ │ │ │ ├── prop-hide-header-footer.vue │ │ │ │ │ ├── prop-item-selectable.vue │ │ │ │ │ ├── prop-item-value.vue │ │ │ │ │ ├── prop-loading.vue │ │ │ │ │ ├── prop-multi-sort.vue │ │ │ │ │ ├── prop-return-object.vue │ │ │ │ │ ├── prop-row-selection.vue │ │ │ │ │ ├── prop-search.vue │ │ │ │ │ ├── prop-select-strategy.vue │ │ │ │ │ ├── prop-sort-by.vue │ │ │ │ │ ├── prop-sort-icon.vue │ │ │ │ │ ├── server-search.vue │ │ │ │ │ ├── server.vue │ │ │ │ │ ├── slot-group-header.vue │ │ │ │ │ ├── slot-group-summary.vue │ │ │ │ │ ├── slot-header.vue │ │ │ │ │ ├── slot-headers.vue │ │ │ │ │ ├── slot-item-data-table-select.vue │ │ │ │ │ ├── slot-item-key.vue │ │ │ │ │ ├── slot-item.vue │ │ │ │ │ ├── slot-loading.vue │ │ │ │ │ ├── slot-main.vue │ │ │ │ │ ├── slot-simple-checkbox.vue │ │ │ │ │ ├── usage.vue │ │ │ │ │ ├── virtual-custom.vue │ │ │ │ │ ├── virtual.vue │ │ │ │ │ └── virtualized.vue │ │ │ │ ├── v-date-input/ │ │ │ │ │ ├── misc-passenger.vue │ │ │ │ │ ├── prop-input-format.vue │ │ │ │ │ ├── prop-model.vue │ │ │ │ │ ├── prop-multiple-range.vue │ │ │ │ │ ├── prop-multiple.vue │ │ │ │ │ ├── prop-prepend-icon.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-date-picker/ │ │ │ │ │ ├── event-button-events.vue │ │ │ │ │ ├── guide-locale.vue │ │ │ │ │ ├── misc-birthday.vue │ │ │ │ │ ├── misc-dialog-and-menu.vue │ │ │ │ │ ├── misc-formatting-external-libraries.vue │ │ │ │ │ ├── misc-formatting.vue │ │ │ │ │ ├── misc-internationalization.vue │ │ │ │ │ ├── misc-orientation.vue │ │ │ │ │ ├── prop-allowed-dates.vue │ │ │ │ │ ├── prop-colors.vue │ │ │ │ │ ├── prop-elevation.vue │ │ │ │ │ ├── prop-events.vue │ │ │ │ │ ├── prop-icons.vue │ │ │ │ │ ├── prop-landscape.vue │ │ │ │ │ ├── prop-multiple.vue │ │ │ │ │ ├── prop-range.vue │ │ │ │ │ ├── prop-readonly.vue │ │ │ │ │ ├── prop-show-adjacent-months.vue │ │ │ │ │ ├── prop-show-current.vue │ │ │ │ │ ├── prop-width.vue │ │ │ │ │ ├── slots-controls.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-date-picker-month/ │ │ │ │ │ ├── misc-dialog-and-menu.vue │ │ │ │ │ ├── misc-internationalization.vue │ │ │ │ │ ├── misc-orientation.vue │ │ │ │ │ ├── prop-allowed-months.vue │ │ │ │ │ ├── prop-colors.vue │ │ │ │ │ ├── prop-icons.vue │ │ │ │ │ ├── prop-multiple.vue │ │ │ │ │ ├── prop-readonly.vue │ │ │ │ │ ├── prop-show-current.vue │ │ │ │ │ ├── prop-width.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-defaults-provider/ │ │ │ │ │ ├── prop-defaults.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-dialog/ │ │ │ │ │ ├── misc-data-table.vue │ │ │ │ │ ├── misc-form.vue │ │ │ │ │ ├── misc-invite-dialog.vue │ │ │ │ │ ├── misc-loader.vue │ │ │ │ │ ├── misc-nesting.vue │ │ │ │ │ ├── misc-overflowed.vue │ │ │ │ │ ├── misc-without-activator.vue │ │ │ │ │ ├── prop-activator.vue │ │ │ │ │ ├── prop-fullscreen.vue │ │ │ │ │ ├── prop-model.vue │ │ │ │ │ ├── prop-persistent.vue │ │ │ │ │ ├── prop-scrollable.vue │ │ │ │ │ ├── prop-transitions.vue │ │ │ │ │ ├── slot-default.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-divider/ │ │ │ │ │ ├── misc-portrait-view.vue │ │ │ │ │ ├── misc-subheaders.vue │ │ │ │ │ ├── prop-gradient.vue │ │ │ │ │ ├── prop-inset.vue │ │ │ │ │ ├── prop-vertical.vue │ │ │ │ │ ├── slot-default.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-empty-state/ │ │ │ │ │ ├── misc-astro-cat.vue │ │ │ │ │ ├── misc-astro-dog.vue │ │ │ │ │ ├── prop-actions.vue │ │ │ │ │ ├── prop-content.vue │ │ │ │ │ ├── prop-media.vue │ │ │ │ │ ├── slot-actions.vue │ │ │ │ │ ├── slot-default.vue │ │ │ │ │ ├── slot-title.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-expansion-panels/ │ │ │ │ │ ├── misc-advanced.vue │ │ │ │ │ ├── misc-custom-icons.vue │ │ │ │ │ ├── prop-disabled.vue │ │ │ │ │ ├── prop-model.vue │ │ │ │ │ ├── prop-readonly.vue │ │ │ │ │ ├── prop-variant.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-fab/ │ │ │ │ │ ├── misc-display-animation.vue │ │ │ │ │ ├── misc-lateral-screens.vue │ │ │ │ │ ├── misc-small.vue │ │ │ │ │ ├── misc-speed-dial.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-file-input/ │ │ │ │ │ ├── misc-complex-selection.vue │ │ │ │ │ ├── prop-accept.vue │ │ │ │ │ ├── prop-chips.vue │ │ │ │ │ ├── prop-counter.vue │ │ │ │ │ ├── prop-dense.vue │ │ │ │ │ ├── prop-multiple.vue │ │ │ │ │ ├── prop-prepend-icon.vue │ │ │ │ │ ├── prop-show-size.vue │ │ │ │ │ ├── prop-validation.vue │ │ │ │ │ ├── slot-selection.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-file-upload/ │ │ │ │ │ ├── misc-list.vue │ │ │ │ │ ├── prop-content.vue │ │ │ │ │ ├── prop-inset-file-list.vue │ │ │ │ │ ├── prop-scrim.vue │ │ │ │ │ ├── slot-item.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-footer/ │ │ │ │ │ ├── misc-company-footer.vue │ │ │ │ │ ├── misc-indigo-footer.vue │ │ │ │ │ ├── misc-teal-footer.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-form/ │ │ │ │ │ ├── misc-exposed.vue │ │ │ │ │ ├── misc-vee-validate.vue │ │ │ │ │ ├── misc-vuelidate.vue │ │ │ │ │ ├── prop-disabled.vue │ │ │ │ │ ├── prop-fast-fail.vue │ │ │ │ │ ├── rules-async.vue │ │ │ │ │ ├── rules-required.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-hotkey/ │ │ │ │ │ ├── prop-display-mode.vue │ │ │ │ │ ├── prop-inline.vue │ │ │ │ │ ├── prop-key-map.vue │ │ │ │ │ ├── prop-keys.vue │ │ │ │ │ ├── prop-platform-aware.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-hover/ │ │ │ │ │ ├── misc-hover-list.vue │ │ │ │ │ ├── misc-transition.vue │ │ │ │ │ ├── prop-disabled.vue │ │ │ │ │ ├── prop-open-and-close-delay.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-icon/ │ │ │ │ │ ├── event-click.vue │ │ │ │ │ ├── misc-buttons.vue │ │ │ │ │ ├── misc-font-awesome.vue │ │ │ │ │ ├── misc-md.vue │ │ │ │ │ ├── misc-mdi-svg.vue │ │ │ │ │ ├── prop-color.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-icon-btn/ │ │ │ │ │ ├── misc-dialog.vue │ │ │ │ │ ├── misc-markdown-editor.vue │ │ │ │ │ ├── misc-table-actions.vue │ │ │ │ │ ├── misc-video-controls.vue │ │ │ │ │ ├── prop-active.vue │ │ │ │ │ ├── prop-opacity.vue │ │ │ │ │ ├── prop-rotate.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-img/ │ │ │ │ │ ├── complex-grid.vue │ │ │ │ │ ├── misc-grid.vue │ │ │ │ │ ├── prop-contain.vue │ │ │ │ │ ├── prop-cover.vue │ │ │ │ │ ├── prop-gradient.vue │ │ │ │ │ ├── prop-image-class.vue │ │ │ │ │ ├── prop-max-height.vue │ │ │ │ │ ├── prop-rounded.vue │ │ │ │ │ ├── slot-error.vue │ │ │ │ │ ├── slot-placeholder.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-infinite-scroll/ │ │ │ │ │ ├── misc-reset.vue │ │ │ │ │ ├── misc-virtual.vue │ │ │ │ │ ├── prop-color.vue │ │ │ │ │ ├── prop-direction.vue │ │ │ │ │ ├── prop-mode.vue │ │ │ │ │ ├── prop-side-both.vue │ │ │ │ │ ├── prop-side-start.vue │ │ │ │ │ ├── slot-empty.vue │ │ │ │ │ ├── slot-error.vue │ │ │ │ │ ├── slot-load-more.vue │ │ │ │ │ ├── slot-loading.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-input/ │ │ │ │ │ ├── event-slot-clicks.vue │ │ │ │ │ ├── prop-error-count.vue │ │ │ │ │ ├── prop-error.vue │ │ │ │ │ ├── prop-hide-details.vue │ │ │ │ │ ├── prop-hint.vue │ │ │ │ │ ├── prop-loading.vue │ │ │ │ │ ├── prop-rules.vue │ │ │ │ │ ├── slot-append-and-prepend.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-intersect/ │ │ │ │ │ ├── prop-options.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-item-group/ │ │ │ │ │ ├── misc-selection.vue │ │ │ │ │ ├── prop-mandatory.vue │ │ │ │ │ ├── prop-multiple.vue │ │ │ │ │ ├── prop-selected-class.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-lazy/ │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-list/ │ │ │ │ │ ├── misc-action-stack.vue │ │ │ │ │ ├── misc-actions.vue │ │ │ │ │ ├── misc-card-list.vue │ │ │ │ │ ├── misc-simple-avatar-list.vue │ │ │ │ │ ├── misc-single-line-list.vue │ │ │ │ │ ├── misc-subheadings-and-dividers.vue │ │ │ │ │ ├── prop-density.vue │ │ │ │ │ ├── prop-disabled.vue │ │ │ │ │ ├── prop-items-custom.vue │ │ │ │ │ ├── prop-items-prop.vue │ │ │ │ │ ├── prop-items-type.vue │ │ │ │ │ ├── prop-items.vue │ │ │ │ │ ├── prop-nav.vue │ │ │ │ │ ├── prop-rounded.vue │ │ │ │ │ ├── prop-shaped.vue │ │ │ │ │ ├── prop-sub-group.vue │ │ │ │ │ ├── prop-three-line.vue │ │ │ │ │ ├── prop-two-line-and-subheader.vue │ │ │ │ │ ├── prop-variant.vue │ │ │ │ │ ├── slot-expansion-lists.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-mask-input/ │ │ │ │ │ ├── credit-card-form.vue │ │ │ │ │ ├── custom-mask.vue │ │ │ │ │ ├── custom-token.vue │ │ │ │ │ ├── ip-address.vue │ │ │ │ │ ├── phone.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-menu/ │ │ │ │ │ ├── misc-popover.vue │ │ │ │ │ ├── misc-transition.vue │ │ │ │ │ ├── misc-use-in-components.vue │ │ │ │ │ ├── prop-absolute-without-activator.vue │ │ │ │ │ ├── prop-absolute.vue │ │ │ │ │ ├── prop-close-on-click.vue │ │ │ │ │ ├── prop-close-on-content-click.vue │ │ │ │ │ ├── prop-disabled.vue │ │ │ │ │ ├── prop-location.vue │ │ │ │ │ ├── prop-open-on-hover.vue │ │ │ │ │ ├── prop-positioningmenu.vue │ │ │ │ │ ├── prop-rounded.vue │ │ │ │ │ ├── prop-submenu.vue │ │ │ │ │ ├── slot-activator-and-tooltip.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-mutate/ │ │ │ │ │ ├── option-modifiers.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-navigation-drawer/ │ │ │ │ │ ├── misc-colored.vue │ │ │ │ │ ├── misc-combined.vue │ │ │ │ │ ├── prop-bottom-drawer.vue │ │ │ │ │ ├── prop-expand-on-hover.vue │ │ │ │ │ ├── prop-images.vue │ │ │ │ │ ├── prop-permanent-and-floating.vue │ │ │ │ │ ├── prop-rail-variant.vue │ │ │ │ │ ├── prop-right.vue │ │ │ │ │ ├── prop-temporary.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-number-input/ │ │ │ │ │ ├── prop-control-variant.vue │ │ │ │ │ ├── prop-hide-input.vue │ │ │ │ │ ├── prop-inset.vue │ │ │ │ │ ├── prop-min-max.vue │ │ │ │ │ ├── prop-precision.vue │ │ │ │ │ ├── prop-reverse.vue │ │ │ │ │ ├── prop-step.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-otp-input/ │ │ │ │ │ ├── misc-card.vue │ │ │ │ │ ├── misc-divider.vue │ │ │ │ │ ├── misc-mobile.vue │ │ │ │ │ ├── misc-verify.vue │ │ │ │ │ ├── prop-error.vue │ │ │ │ │ ├── prop-focus-all.vue │ │ │ │ │ ├── prop-length.vue │ │ │ │ │ ├── prop-loader.vue │ │ │ │ │ ├── prop-masked.vue │ │ │ │ │ ├── prop-variant.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-overflow-btn/ │ │ │ │ │ ├── prop-counter.vue │ │ │ │ │ ├── prop-dense.vue │ │ │ │ │ ├── prop-disabled.vue │ │ │ │ │ ├── prop-editable.vue │ │ │ │ │ ├── prop-filled.vue │ │ │ │ │ ├── prop-hint.vue │ │ │ │ │ ├── prop-loading.vue │ │ │ │ │ ├── prop-menu-props.vue │ │ │ │ │ ├── prop-readonly.vue │ │ │ │ │ ├── prop-segmented.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-overlay/ │ │ │ │ │ ├── connected-playground.vue │ │ │ │ │ ├── misc-advanced.vue │ │ │ │ │ ├── misc-loader.vue │ │ │ │ │ ├── prop-contained.vue │ │ │ │ │ ├── scroll-block.vue │ │ │ │ │ ├── scroll-close.vue │ │ │ │ │ ├── scroll-none.vue │ │ │ │ │ ├── scroll-reposition.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-pagination/ │ │ │ │ │ ├── prop-disabled.vue │ │ │ │ │ ├── prop-icons.vue │ │ │ │ │ ├── prop-length.vue │ │ │ │ │ ├── prop-rounded.vue │ │ │ │ │ ├── prop-total-visible.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-parallax/ │ │ │ │ │ ├── misc-content.vue │ │ │ │ │ ├── misc-custom-height.vue │ │ │ │ │ ├── misc-welcome.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-pie/ │ │ │ │ │ ├── misc-custom-legend.vue │ │ │ │ │ ├── misc-patterns.vue │ │ │ │ │ ├── prop-formats.vue │ │ │ │ │ ├── prop-legend.vue │ │ │ │ │ ├── prop-palette.vue │ │ │ │ │ ├── prop-size.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-progress/ │ │ │ │ │ ├── misc-card-loader.vue │ │ │ │ │ ├── prop-label.vue │ │ │ │ │ ├── prop-value-format.vue │ │ │ │ │ ├── slot-label-and-value.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-progress-circular/ │ │ │ │ │ ├── prop-color.vue │ │ │ │ │ ├── prop-indeterminate.vue │ │ │ │ │ ├── prop-reveal.vue │ │ │ │ │ ├── prop-rotate.vue │ │ │ │ │ ├── prop-size-and-width.vue │ │ │ │ │ ├── prop-slot-default.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-progress-linear/ │ │ │ │ │ ├── misc-buffer-color.vue │ │ │ │ │ ├── misc-determinate.vue │ │ │ │ │ ├── misc-file-loader.vue │ │ │ │ │ ├── misc-toolbar-loader.vue │ │ │ │ │ ├── prop-buffer-value.vue │ │ │ │ │ ├── prop-chunks.vue │ │ │ │ │ ├── prop-colors.vue │ │ │ │ │ ├── prop-indeterminate.vue │ │ │ │ │ ├── prop-query.vue │ │ │ │ │ ├── prop-reverse.vue │ │ │ │ │ ├── prop-rounded.vue │ │ │ │ │ ├── prop-stream.vue │ │ │ │ │ ├── prop-striped.vue │ │ │ │ │ ├── slot-default.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-pull-to-refresh/ │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-radio-group/ │ │ │ │ │ ├── prop-colors.vue │ │ │ │ │ ├── prop-direction.vue │ │ │ │ │ ├── prop-model-group.vue │ │ │ │ │ ├── prop-model-radio.vue │ │ │ │ │ ├── slot-label.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-range-slider/ │ │ │ │ │ ├── prop-disabled.vue │ │ │ │ │ ├── prop-min-and-max.vue │ │ │ │ │ ├── prop-step.vue │ │ │ │ │ ├── prop-strict.vue │ │ │ │ │ ├── prop-vertical.vue │ │ │ │ │ ├── slot-thumb-label.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-rating/ │ │ │ │ │ ├── misc-advanced.vue │ │ │ │ │ ├── misc-card-overview.vue │ │ │ │ │ ├── misc-card.vue │ │ │ │ │ ├── prop-clearable.vue │ │ │ │ │ ├── prop-color.vue │ │ │ │ │ ├── prop-density.vue │ │ │ │ │ ├── prop-half-increments.vue │ │ │ │ │ ├── prop-hover.vue │ │ │ │ │ ├── prop-icon-label.vue │ │ │ │ │ ├── prop-icons.vue │ │ │ │ │ ├── prop-item-labels.vue │ │ │ │ │ ├── prop-length.vue │ │ │ │ │ ├── prop-readonly.vue │ │ │ │ │ ├── prop-size.vue │ │ │ │ │ ├── slot-item-label.vue │ │ │ │ │ ├── slot-item.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-resize/ │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-responsive/ │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-ripple/ │ │ │ │ │ ├── misc-custom-color.vue │ │ │ │ │ ├── misc-ripple-in-components.vue │ │ │ │ │ ├── option-center.vue │ │ │ │ │ ├── stop.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-scroll/ │ │ │ │ │ ├── option-self.vue │ │ │ │ │ ├── option-target.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-select/ │ │ │ │ │ ├── prop-avoid-duplicate-text.vue │ │ │ │ │ ├── prop-chips.vue │ │ │ │ │ ├── prop-custom-title-and-value.vue │ │ │ │ │ ├── prop-dense.vue │ │ │ │ │ ├── prop-disabled.vue │ │ │ │ │ ├── prop-item-props.vue │ │ │ │ │ ├── prop-list-props.vue │ │ │ │ │ ├── prop-menu-props.vue │ │ │ │ │ ├── prop-multiple.vue │ │ │ │ │ ├── prop-readonly.vue │ │ │ │ │ ├── slot-append-and-prepend-item.vue │ │ │ │ │ ├── slot-item.vue │ │ │ │ │ ├── slot-menu-header-and-footer.vue │ │ │ │ │ ├── slot-selection.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-sheet/ │ │ │ │ │ ├── misc-congratulations.vue │ │ │ │ │ ├── misc-privacy-policy.vue │ │ │ │ │ ├── misc-reconcile.vue │ │ │ │ │ ├── misc-referral-program.vue │ │ │ │ │ ├── prop-color.vue │ │ │ │ │ ├── prop-elevation.vue │ │ │ │ │ ├── prop-rounded.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-skeleton-loader/ │ │ │ │ │ ├── misc-ice-cream.vue │ │ │ │ │ ├── prop-boilerplate.vue │ │ │ │ │ ├── prop-elevation.vue │ │ │ │ │ ├── prop-loading.vue │ │ │ │ │ ├── prop-type.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-slide-group/ │ │ │ │ │ ├── misc-pseudo-carousel.vue │ │ │ │ │ ├── prop-active-class.vue │ │ │ │ │ ├── prop-center-active.vue │ │ │ │ │ ├── prop-custom-icons.vue │ │ │ │ │ ├── prop-mandatory.vue │ │ │ │ │ ├── prop-multiple.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-slider/ │ │ │ │ │ ├── prop-colors.vue │ │ │ │ │ ├── prop-disabled.vue │ │ │ │ │ ├── prop-icons.vue │ │ │ │ │ ├── prop-min-and-max.vue │ │ │ │ │ ├── prop-readonly.vue │ │ │ │ │ ├── prop-step.vue │ │ │ │ │ ├── prop-thumb.vue │ │ │ │ │ ├── prop-ticks.vue │ │ │ │ │ ├── prop-validation.vue │ │ │ │ │ ├── prop-vertical.vue │ │ │ │ │ ├── slot-append-and-prepend.vue │ │ │ │ │ ├── slot-append-text-field.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-snackbar/ │ │ │ │ │ ├── prop-loading.vue │ │ │ │ │ ├── prop-prepend-avatar.vue │ │ │ │ │ ├── prop-prepend-icon.vue │ │ │ │ │ ├── prop-timeout.vue │ │ │ │ │ ├── prop-timer-position.vue │ │ │ │ │ ├── prop-variants.vue │ │ │ │ │ ├── prop-vertical.vue │ │ │ │ │ ├── slot-header.vue │ │ │ │ │ ├── slot-prepend.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-snackbar-queue/ │ │ │ │ │ ├── misc-promise.vue │ │ │ │ │ ├── prop-total-visible.vue │ │ │ │ │ ├── prop-transition.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-sparkline/ │ │ │ │ │ ├── misc-custom-labels.vue │ │ │ │ │ ├── misc-dashboard-card.vue │ │ │ │ │ ├── misc-heart-rate.vue │ │ │ │ │ ├── prop-fill.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-speed-dial/ │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-stepper/ │ │ │ │ │ ├── misc-alternate-error.vue │ │ │ │ │ ├── misc-dynamic.vue │ │ │ │ │ ├── misc-editable.vue │ │ │ │ │ ├── misc-error.vue │ │ │ │ │ ├── misc-horizontal.vue │ │ │ │ │ ├── misc-linear.vue │ │ │ │ │ ├── misc-non-editable.vue │ │ │ │ │ ├── misc-optional.vue │ │ │ │ │ ├── misc-vertical-error.vue │ │ │ │ │ ├── prop-alternate-label.vue │ │ │ │ │ ├── prop-mobile.vue │ │ │ │ │ ├── prop-non-linear.vue │ │ │ │ │ ├── prop-vertical.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-stepper-vertical/ │ │ │ │ │ ├── prop-non-linear.vue │ │ │ │ │ ├── slot-actions.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-switch/ │ │ │ │ │ ├── prop-colors.vue │ │ │ │ │ ├── prop-custom-values.vue │ │ │ │ │ ├── prop-flat.vue │ │ │ │ │ ├── prop-inset.vue │ │ │ │ │ ├── prop-model-as-array.vue │ │ │ │ │ ├── prop-states.vue │ │ │ │ │ ├── slot-label.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-system-bar/ │ │ │ │ │ ├── prop-color.vue │ │ │ │ │ ├── prop-window.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-table/ │ │ │ │ │ ├── prop-dark.vue │ │ │ │ │ ├── prop-dense.vue │ │ │ │ │ ├── prop-fixed-header.vue │ │ │ │ │ ├── prop-height.vue │ │ │ │ │ ├── prop-striped.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-tabs/ │ │ │ │ │ ├── misc-content.vue │ │ │ │ │ ├── misc-dynamic-height.vue │ │ │ │ │ ├── misc-dynamic.vue │ │ │ │ │ ├── misc-mobile.vue │ │ │ │ │ ├── misc-overflow-to-menu.vue │ │ │ │ │ ├── misc-pagination.vue │ │ │ │ │ ├── misc-tab-items.vue │ │ │ │ │ ├── prop-align-tabs-center.vue │ │ │ │ │ ├── prop-align-tabs-end.vue │ │ │ │ │ ├── prop-align-tabs-title.vue │ │ │ │ │ ├── prop-center-active.vue │ │ │ │ │ ├── prop-direction.vue │ │ │ │ │ ├── prop-fixed-tabs.vue │ │ │ │ │ ├── prop-grow.vue │ │ │ │ │ ├── prop-icons.vue │ │ │ │ │ ├── prop-slider-transition.vue │ │ │ │ │ ├── prop-spaced.vue │ │ │ │ │ ├── prop-stacked.vue │ │ │ │ │ ├── slot-tabs.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-text-field/ │ │ │ │ │ ├── event-icons.vue │ │ │ │ │ ├── misc-custom-validation.vue │ │ │ │ │ ├── misc-full-width-with-counter.vue │ │ │ │ │ ├── misc-guide.vue │ │ │ │ │ ├── misc-login-form.vue │ │ │ │ │ ├── misc-password.vue │ │ │ │ │ ├── prop-clearable.vue │ │ │ │ │ ├── prop-contained.vue │ │ │ │ │ ├── prop-counter.vue │ │ │ │ │ ├── prop-custom-colors.vue │ │ │ │ │ ├── prop-dense.vue │ │ │ │ │ ├── prop-disabled-and-readonly.vue │ │ │ │ │ ├── prop-filled.vue │ │ │ │ │ ├── prop-focused.vue │ │ │ │ │ ├── prop-hide-details.vue │ │ │ │ │ ├── prop-hint.vue │ │ │ │ │ ├── prop-icon.vue │ │ │ │ │ ├── prop-label.vue │ │ │ │ │ ├── prop-messages.vue │ │ │ │ │ ├── prop-outlined.vue │ │ │ │ │ ├── prop-placeholder.vue │ │ │ │ │ ├── prop-prefixes-and-suffixes.vue │ │ │ │ │ ├── prop-rules.vue │ │ │ │ │ ├── prop-single-line.vue │ │ │ │ │ ├── prop-validation.vue │ │ │ │ │ ├── prop-variant.vue │ │ │ │ │ ├── slot-icons.vue │ │ │ │ │ ├── slot-label.vue │ │ │ │ │ ├── slot-progress.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-textarea/ │ │ │ │ │ ├── misc-signup-form.vue │ │ │ │ │ ├── prop-auto-grow.vue │ │ │ │ │ ├── prop-background-color.vue │ │ │ │ │ ├── prop-browser-autocomplete.vue │ │ │ │ │ ├── prop-clearable.vue │ │ │ │ │ ├── prop-counter.vue │ │ │ │ │ ├── prop-icons.vue │ │ │ │ │ ├── prop-no-resize.vue │ │ │ │ │ ├── prop-rows.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-theme-provider/ │ │ │ │ │ └── prop-with-background.vue │ │ │ │ ├── v-time-picker/ │ │ │ │ │ ├── misc-dialog-and-menu.vue │ │ │ │ │ ├── prop-allowed-times.vue │ │ │ │ │ ├── prop-ampm-in-title.vue │ │ │ │ │ ├── prop-color.vue │ │ │ │ │ ├── prop-disabled.vue │ │ │ │ │ ├── prop-elevation.vue │ │ │ │ │ ├── prop-format.vue │ │ │ │ │ ├── prop-hide-header.vue │ │ │ │ │ ├── prop-range.vue │ │ │ │ │ ├── prop-readonly.vue │ │ │ │ │ ├── prop-scrollable.vue │ │ │ │ │ ├── prop-use-seconds.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-timeline/ │ │ │ │ │ ├── misc-advanced.vue │ │ │ │ │ ├── prop-align.vue │ │ │ │ │ ├── prop-color.vue │ │ │ │ │ ├── prop-direction.vue │ │ │ │ │ ├── prop-icon-dots.vue │ │ │ │ │ ├── prop-line-inset.vue │ │ │ │ │ ├── prop-mirror.vue │ │ │ │ │ ├── prop-single-side.vue │ │ │ │ │ ├── prop-size.vue │ │ │ │ │ ├── prop-truncate-line.vue │ │ │ │ │ ├── slot-icon.vue │ │ │ │ │ ├── slot-opposite.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-toolbar/ │ │ │ │ │ ├── misc-contextual-action-bar.vue │ │ │ │ │ ├── misc-flexible-and-card.vue │ │ │ │ │ ├── misc-tooltips-and-speed-dial.vue │ │ │ │ │ ├── prop-background.vue │ │ │ │ │ ├── prop-collapse.vue │ │ │ │ │ ├── prop-dense.vue │ │ │ │ │ ├── prop-extended.vue │ │ │ │ │ ├── prop-extension-height.vue │ │ │ │ │ ├── prop-floating-with-search.vue │ │ │ │ │ ├── prop-location.vue │ │ │ │ │ ├── slot-extension.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-tooltip/ │ │ │ │ │ ├── misc-at-cursor.vue │ │ │ │ │ ├── prop-color.vue │ │ │ │ │ ├── prop-interactive.vue │ │ │ │ │ ├── prop-location.vue │ │ │ │ │ ├── prop-open-on-click.vue │ │ │ │ │ ├── prop-visibility.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-tooltip-directive/ │ │ │ │ │ ├── args.vue │ │ │ │ │ ├── object-literals.vue │ │ │ │ │ ├── text.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-touch/ │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-treeview/ │ │ │ │ │ ├── misc-indent-lines.vue │ │ │ │ │ ├── misc-search-and-filter.vue │ │ │ │ │ ├── misc-selectable-icons.vue │ │ │ │ │ ├── playground.vue │ │ │ │ │ ├── prop-activatable.vue │ │ │ │ │ ├── prop-color.vue │ │ │ │ │ ├── prop-dense.vue │ │ │ │ │ ├── prop-fluid.vue │ │ │ │ │ ├── prop-hoverable.vue │ │ │ │ │ ├── prop-item-props.vue │ │ │ │ │ ├── prop-items-registration.vue │ │ │ │ │ ├── prop-load-children.vue │ │ │ │ │ ├── prop-open-all.vue │ │ │ │ │ ├── prop-rounded.vue │ │ │ │ │ ├── prop-selected-color.vue │ │ │ │ │ ├── prop-selection-type.vue │ │ │ │ │ ├── slot-append-and-label.vue │ │ │ │ │ ├── slot-append-and-prepend-item.vue │ │ │ │ │ ├── slot-no-data.vue │ │ │ │ │ ├── slot-title.vue │ │ │ │ │ ├── slot-toggle.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-video/ │ │ │ │ │ ├── misc-in-card.vue │ │ │ │ │ ├── misc-mini.vue │ │ │ │ │ ├── misc-tube.vue │ │ │ │ │ ├── prop-color.vue │ │ │ │ │ ├── prop-density.vue │ │ │ │ │ ├── prop-image.vue │ │ │ │ │ ├── prop-rounded.vue │ │ │ │ │ ├── prop-start-at.vue │ │ │ │ │ ├── slot-append-and-prepend.vue │ │ │ │ │ ├── slot-controls.vue │ │ │ │ │ ├── slot-error.vue │ │ │ │ │ ├── slot-header.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-virtual-scroll/ │ │ │ │ │ ├── misc-user-directory.vue │ │ │ │ │ ├── prop-dynamic-item-height.vue │ │ │ │ │ ├── prop-height-parent.vue │ │ │ │ │ ├── prop-height.vue │ │ │ │ │ ├── prop-item-height.vue │ │ │ │ │ ├── prop-renderless.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── v-window/ │ │ │ │ │ ├── misc-account-creation.vue │ │ │ │ │ ├── misc-onboarding.vue │ │ │ │ │ ├── prop-direction.vue │ │ │ │ │ ├── prop-reverse.vue │ │ │ │ │ ├── prop-show-arrows.vue │ │ │ │ │ ├── slots-next-prev.vue │ │ │ │ │ └── usage.vue │ │ │ │ ├── why-vuetify/ │ │ │ │ │ ├── card-components.vue │ │ │ │ │ ├── card-props.vue │ │ │ │ │ └── card-slots.vue │ │ │ │ └── wireframes/ │ │ │ │ ├── baseline.vue │ │ │ │ ├── constrained.vue │ │ │ │ ├── discord.vue │ │ │ │ ├── extended-toolbar.vue │ │ │ │ ├── inbox.vue │ │ │ │ ├── side-navigation.vue │ │ │ │ ├── steam.vue │ │ │ │ ├── system-bar.vue │ │ │ │ └── three-column.vue │ │ │ ├── i18n/ │ │ │ │ ├── locales.json │ │ │ │ └── messages/ │ │ │ │ ├── .gitignore │ │ │ │ └── en.json │ │ │ ├── layouts/ │ │ │ │ ├── 404.vue │ │ │ │ ├── blank.vue │ │ │ │ ├── blog.vue │ │ │ │ ├── default.vue │ │ │ │ ├── home.vue │ │ │ │ ├── user.vue │ │ │ │ └── wireframe.vue │ │ │ ├── main.scss │ │ │ ├── main.ts │ │ │ ├── pages/ │ │ │ │ └── en/ │ │ │ │ ├── about/ │ │ │ │ │ ├── code-of-conduct.md │ │ │ │ │ ├── licensing.md │ │ │ │ │ ├── meet-the-team.md │ │ │ │ │ └── security-disclosure.md │ │ │ │ ├── api/ │ │ │ │ │ ├── [name].md │ │ │ │ │ └── use-hotkey.md │ │ │ │ ├── blog/ │ │ │ │ │ ├── announcing-vuetify-3.8.md │ │ │ │ │ ├── april-2025-update.md │ │ │ │ │ ├── august-2025-update.md │ │ │ │ │ ├── building-a-basic-nuxt-application-with-vuetify.md │ │ │ │ │ ├── building-with-nuxt-and-unocss.md │ │ │ │ │ ├── building-with-vite-and-tailwindcss.md │ │ │ │ │ ├── december-2025-update.md │ │ │ │ │ ├── february-2026-update.md │ │ │ │ │ ├── index.md │ │ │ │ │ ├── january-2026-update.md │ │ │ │ │ ├── july-2025-update.md │ │ │ │ │ ├── june-2025-update.md │ │ │ │ │ ├── may-2025-update.md │ │ │ │ │ ├── november-2025-update.md │ │ │ │ │ ├── october-2025-update.md │ │ │ │ │ ├── september-2025-update.md │ │ │ │ │ ├── state-of-the-union-2024-post-mortem.md │ │ │ │ │ ├── state-of-the-union-2024.md │ │ │ │ │ └── vuetify-herodevs-partnership.md │ │ │ │ ├── components/ │ │ │ │ │ ├── alerts.md │ │ │ │ │ ├── all.md │ │ │ │ │ ├── app-bars.md │ │ │ │ │ ├── application.md │ │ │ │ │ ├── aspect-ratios.md │ │ │ │ │ ├── autocompletes.md │ │ │ │ │ ├── avatar-groups.md │ │ │ │ │ ├── avatars.md │ │ │ │ │ ├── badges.md │ │ │ │ │ ├── banners.md │ │ │ │ │ ├── bottom-navigation.md │ │ │ │ │ ├── bottom-sheets.md │ │ │ │ │ ├── breadcrumbs.md │ │ │ │ │ ├── button-groups.md │ │ │ │ │ ├── buttons.md │ │ │ │ │ ├── calendars.md │ │ │ │ │ ├── cards.md │ │ │ │ │ ├── carousels.md │ │ │ │ │ ├── checkboxes.md │ │ │ │ │ ├── chip-groups.md │ │ │ │ │ ├── chips.md │ │ │ │ │ ├── color-inputs.md │ │ │ │ │ ├── color-pickers.md │ │ │ │ │ ├── combobox.md │ │ │ │ │ ├── command-palettes.md │ │ │ │ │ ├── confirm-edit.md │ │ │ │ │ ├── data-iterators.md │ │ │ │ │ ├── data-tables/ │ │ │ │ │ │ ├── basics.md │ │ │ │ │ │ ├── data-and-display.md │ │ │ │ │ │ ├── introduction.md │ │ │ │ │ │ ├── server-side-tables.md │ │ │ │ │ │ └── virtual-tables.md │ │ │ │ │ ├── date-inputs.md │ │ │ │ │ ├── date-pickers-month.md │ │ │ │ │ ├── date-pickers.md │ │ │ │ │ ├── defaults-providers.md │ │ │ │ │ ├── dialogs.md │ │ │ │ │ ├── dividers.md │ │ │ │ │ ├── empty-states.md │ │ │ │ │ ├── expansion-panels.md │ │ │ │ │ ├── explorer/ │ │ │ │ │ │ └── [...name].md │ │ │ │ │ ├── file-inputs.md │ │ │ │ │ ├── file-upload.md │ │ │ │ │ ├── floating-action-buttons.md │ │ │ │ │ ├── footers.md │ │ │ │ │ ├── forms.md │ │ │ │ │ ├── grids.md │ │ │ │ │ ├── hotkeys.md │ │ │ │ │ ├── hover.md │ │ │ │ │ ├── icon-buttons.md │ │ │ │ │ ├── icons.md │ │ │ │ │ ├── images.md │ │ │ │ │ ├── infinite-scroller.md │ │ │ │ │ ├── inputs.md │ │ │ │ │ ├── item-groups.md │ │ │ │ │ ├── lazy.md │ │ │ │ │ ├── lists.md │ │ │ │ │ ├── locale-providers.md │ │ │ │ │ ├── mask-inputs.md │ │ │ │ │ ├── menus.md │ │ │ │ │ ├── navigation-drawers.md │ │ │ │ │ ├── no-ssr.md │ │ │ │ │ ├── number-inputs.md │ │ │ │ │ ├── otp-input.md │ │ │ │ │ ├── overflow-btns.md │ │ │ │ │ ├── overlays.md │ │ │ │ │ ├── paginations.md │ │ │ │ │ ├── parallax.md │ │ │ │ │ ├── pie-charts.md │ │ │ │ │ ├── progress-circular.md │ │ │ │ │ ├── progress-linear.md │ │ │ │ │ ├── progress.md │ │ │ │ │ ├── pull-to-refresh.md │ │ │ │ │ ├── radio-buttons.md │ │ │ │ │ ├── range-sliders.md │ │ │ │ │ ├── ratings.md │ │ │ │ │ ├── selects.md │ │ │ │ │ ├── sheets.md │ │ │ │ │ ├── skeleton-loaders.md │ │ │ │ │ ├── slide-groups.md │ │ │ │ │ ├── sliders.md │ │ │ │ │ ├── snackbar-queue.md │ │ │ │ │ ├── snackbars.md │ │ │ │ │ ├── sparklines.md │ │ │ │ │ ├── speed-dials.md │ │ │ │ │ ├── steppers.md │ │ │ │ │ ├── switches.md │ │ │ │ │ ├── system-bars.md │ │ │ │ │ ├── tables.md │ │ │ │ │ ├── tabs.md │ │ │ │ │ ├── text-fields.md │ │ │ │ │ ├── textareas.md │ │ │ │ │ ├── theme-providers.md │ │ │ │ │ ├── time-pickers.md │ │ │ │ │ ├── timelines.md │ │ │ │ │ ├── toolbars.md │ │ │ │ │ ├── tooltips.md │ │ │ │ │ ├── treeview.md │ │ │ │ │ ├── vertical-steppers.md │ │ │ │ │ ├── videos.md │ │ │ │ │ ├── virtual-scroller.md │ │ │ │ │ └── windows.md │ │ │ │ ├── concepts/ │ │ │ │ │ ├── density-and-sizing.md │ │ │ │ │ ├── items.md │ │ │ │ │ ├── routing.md │ │ │ │ │ ├── v-model.md │ │ │ │ │ └── variants.md │ │ │ │ ├── directives/ │ │ │ │ │ ├── click-outside.md │ │ │ │ │ ├── intersect.md │ │ │ │ │ ├── mutate.md │ │ │ │ │ ├── resize.md │ │ │ │ │ ├── ripple.md │ │ │ │ │ ├── scroll.md │ │ │ │ │ ├── tooltip.md │ │ │ │ │ └── touch.md │ │ │ │ ├── features/ │ │ │ │ │ ├── accessibility.md │ │ │ │ │ ├── aliasing.md │ │ │ │ │ ├── application-layout.md │ │ │ │ │ ├── blueprints.md │ │ │ │ │ ├── css-utilities/ │ │ │ │ │ │ ├── overview.md │ │ │ │ │ │ ├── tailwindcss.md │ │ │ │ │ │ ├── unocss-tailwind-preset.md │ │ │ │ │ │ └── unocss-vuetify-preset.md │ │ │ │ │ ├── dates.md │ │ │ │ │ ├── display-and-platform.md │ │ │ │ │ ├── global-configuration.md │ │ │ │ │ ├── hotkey.md │ │ │ │ │ ├── icon-fonts.md │ │ │ │ │ ├── internationalization.md │ │ │ │ │ ├── rules.md │ │ │ │ │ ├── sass-variables.md │ │ │ │ │ ├── scrolling.md │ │ │ │ │ ├── theme.md │ │ │ │ │ └── treeshaking.md │ │ │ │ ├── getting-started/ │ │ │ │ │ ├── browser-support.md │ │ │ │ │ ├── contributing.md │ │ │ │ │ ├── elevation-migration.md │ │ │ │ │ ├── frequently-asked-questions.md │ │ │ │ │ ├── grid-legacy-mode.md │ │ │ │ │ ├── installation.md │ │ │ │ │ ├── release-notes.md │ │ │ │ │ ├── typography-migration.md │ │ │ │ │ ├── unit-testing.md │ │ │ │ │ ├── upgrade-guide.md │ │ │ │ │ └── wireframes.md │ │ │ │ ├── index.md │ │ │ │ ├── introduction/ │ │ │ │ │ ├── enterprise-support.md │ │ │ │ │ ├── long-term-support.md │ │ │ │ │ ├── roadmap.md │ │ │ │ │ ├── sponsors-and-backers.md │ │ │ │ │ └── why-vuetify.md │ │ │ │ ├── labs/ │ │ │ │ │ └── introduction.md │ │ │ │ ├── one.md │ │ │ │ ├── resources/ │ │ │ │ │ ├── brand-kit.md │ │ │ │ │ ├── jobs-for-vue.md │ │ │ │ │ ├── made-with-vuetify.md │ │ │ │ │ ├── search-engine.md │ │ │ │ │ ├── themes.md │ │ │ │ │ └── ui-kits.md │ │ │ │ ├── styles/ │ │ │ │ │ ├── border-radius.md │ │ │ │ │ ├── borders.md │ │ │ │ │ ├── colors.md │ │ │ │ │ ├── content.md │ │ │ │ │ ├── css-reset.md │ │ │ │ │ ├── cursor.md │ │ │ │ │ ├── display.md │ │ │ │ │ ├── elevation.md │ │ │ │ │ ├── entry-points.md │ │ │ │ │ ├── flex.md │ │ │ │ │ ├── float.md │ │ │ │ │ ├── layers.md │ │ │ │ │ ├── opacity.md │ │ │ │ │ ├── overflow.md │ │ │ │ │ ├── position.md │ │ │ │ │ ├── sizing.md │ │ │ │ │ ├── spacing.md │ │ │ │ │ ├── text-and-typography.md │ │ │ │ │ └── transitions.md │ │ │ │ ├── user/ │ │ │ │ │ └── dashboard.md │ │ │ │ └── wireframes/ │ │ │ │ ├── baseline.md │ │ │ │ ├── constrained.md │ │ │ │ ├── discord.md │ │ │ │ ├── extended-toolbar.md │ │ │ │ ├── inbox.md │ │ │ │ ├── side-navigation.md │ │ │ │ ├── steam.md │ │ │ │ ├── system-bar.md │ │ │ │ └── three-column.md │ │ │ ├── plugins/ │ │ │ │ ├── global-components.ts │ │ │ │ ├── i18n.ts │ │ │ │ ├── icons.ts │ │ │ │ ├── octokit.ts │ │ │ │ ├── one.ts │ │ │ │ ├── pinia.ts │ │ │ │ ├── pwa.ts │ │ │ │ └── vuetify.ts │ │ │ ├── service-worker.js │ │ │ ├── shims.d.ts │ │ │ ├── stores/ │ │ │ │ ├── ads.ts │ │ │ │ ├── app.ts │ │ │ │ ├── commits.ts │ │ │ │ ├── jobs.ts │ │ │ │ ├── locale.ts │ │ │ │ ├── made-with-vuetify.ts │ │ │ │ ├── pins.ts │ │ │ │ ├── promotions.ts │ │ │ │ ├── pwa.ts │ │ │ │ ├── releases.ts │ │ │ │ ├── shopify.ts │ │ │ │ ├── sponsors.ts │ │ │ │ ├── spot.ts │ │ │ │ └── team-members.ts │ │ │ ├── utils/ │ │ │ │ ├── analytics.ts │ │ │ │ ├── api.ts │ │ │ │ ├── globals.ts │ │ │ │ ├── helpers.ts │ │ │ │ ├── markdown-it-rules.ts │ │ │ │ ├── markdown-it.ts │ │ │ │ ├── metadata.ts │ │ │ │ ├── pwa.ts │ │ │ │ └── routes.ts │ │ │ └── vite-env.d.ts │ │ ├── tsconfig.json │ │ └── vite.config.mts │ └── vuetify/ │ ├── .browserslistrc │ ├── .eslintignore │ ├── .eslintrc.cjs │ ├── .gitignore │ ├── LICENSE.md │ ├── README.md │ ├── _settings.scss │ ├── _styles.scss │ ├── _tools.scss │ ├── babel.config.js │ ├── build/ │ │ ├── babel-plugin-replace-import-extension.js │ │ ├── constants.js │ │ ├── rollup.config.js │ │ ├── rollup.types.config.js │ │ ├── run-tests.js │ │ ├── transform-types.js │ │ └── types-code-transform.js │ ├── dev/ │ │ ├── App.vue │ │ ├── Playground.template.vue │ │ ├── index.html │ │ ├── index.js │ │ ├── router.js │ │ ├── vuetify/ │ │ │ ├── date.js │ │ │ ├── defaults.js │ │ │ ├── icons.js │ │ │ └── locale.js │ │ └── vuetify.js │ ├── package.json │ ├── playgrounds/ │ │ ├── Playground.datatable.vue │ │ ├── Playground.infinite.vue │ │ ├── Playground.items.vue │ │ ├── Playground.list.vue │ │ ├── Playground.nested.vue │ │ └── Playground.slider.vue │ ├── src/ │ │ ├── __tests__/ │ │ │ └── framework.spec.browser.tsx │ │ ├── auto-imports.d.ts │ │ ├── blueprints/ │ │ │ ├── index.ts │ │ │ ├── md1.ts │ │ │ ├── md2.ts │ │ │ └── md3.ts │ │ ├── components/ │ │ │ ├── VAlert/ │ │ │ │ ├── VAlert.sass │ │ │ │ ├── VAlert.tsx │ │ │ │ ├── VAlertTitle.ts │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VAlert.spec.browser.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VApp/ │ │ │ │ ├── VApp.sass │ │ │ │ ├── VApp.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VAppBar/ │ │ │ │ ├── VAppBar.sass │ │ │ │ ├── VAppBar.tsx │ │ │ │ ├── VAppBarNavIcon.tsx │ │ │ │ ├── VAppBarTitle.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VAppBar.spec.browser.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VAutocomplete/ │ │ │ │ ├── VAutocomplete.sass │ │ │ │ ├── VAutocomplete.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VAutocomplete.spec.browser.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VAvatar/ │ │ │ │ ├── VAvatar.sass │ │ │ │ ├── VAvatar.tsx │ │ │ │ ├── _mixins.scss │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VBadge/ │ │ │ │ ├── VBadge.sass │ │ │ │ ├── VBadge.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VBadge.spec.browser.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VBanner/ │ │ │ │ ├── VBanner.sass │ │ │ │ ├── VBanner.tsx │ │ │ │ ├── VBannerActions.tsx │ │ │ │ ├── VBannerText.ts │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VBottomNavigation/ │ │ │ │ ├── VBottomNavigation.sass │ │ │ │ ├── VBottomNavigation.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VBottomNavigation.spec.browser.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VBottomSheet/ │ │ │ │ ├── VBottomSheet.sass │ │ │ │ ├── VBottomSheet.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VBottomSheet.spec.browser.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VBreadcrumbs/ │ │ │ │ ├── VBreadcrumbs.sass │ │ │ │ ├── VBreadcrumbs.tsx │ │ │ │ ├── VBreadcrumbsDivider.tsx │ │ │ │ ├── VBreadcrumbsItem.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VBreadcrumbs.spec.browser.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VBtn/ │ │ │ │ ├── VBtn.sass │ │ │ │ ├── VBtn.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VBtn.spec.browser.tsx │ │ │ │ ├── _mixins.scss │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VBtnGroup/ │ │ │ │ ├── VBtnGroup.sass │ │ │ │ ├── VBtnGroup.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VBtnToggle/ │ │ │ │ ├── VBtnToggle.sass │ │ │ │ ├── VBtnToggle.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VCalendar/ │ │ │ │ ├── VCalendar.tsx │ │ │ │ ├── VCalendarCategory.sass │ │ │ │ ├── VCalendarCategory.tsx │ │ │ │ ├── VCalendarDaily.sass │ │ │ │ ├── VCalendarDaily.tsx │ │ │ │ ├── VCalendarWeekly.sass │ │ │ │ ├── VCalendarWeekly.tsx │ │ │ │ ├── _variables.scss │ │ │ │ ├── composables/ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── calendar-base.spec.ts.snap │ │ │ │ │ │ │ ├── calendar-with-events.spec.ts.snap │ │ │ │ │ │ │ ├── calendar-with-intervals.spec.ts.snap │ │ │ │ │ │ │ └── times.spec.ts.snap │ │ │ │ │ │ ├── calendar-base.spec.ts │ │ │ │ │ │ ├── calendar-with-events.spec.ts │ │ │ │ │ │ ├── calendar-with-intervals.spec.ts │ │ │ │ │ │ └── times.spec.ts │ │ │ │ │ ├── calendarBase.ts │ │ │ │ │ ├── calendarWithEvents.sass │ │ │ │ │ ├── calendarWithEvents.tsx │ │ │ │ │ ├── calendarWithIntervals.ts │ │ │ │ │ └── times.ts │ │ │ │ ├── index.ts │ │ │ │ ├── modes/ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ └── common.spec.ts.snap │ │ │ │ │ │ └── common.spec.ts │ │ │ │ │ ├── column.ts │ │ │ │ │ ├── common.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── stack.ts │ │ │ │ ├── types.ts │ │ │ │ └── util/ │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── events.spec.ts.snap │ │ │ │ │ │ └── timestamp.spec.ts.snap │ │ │ │ │ ├── events.spec.ts │ │ │ │ │ └── timestamp.spec.ts │ │ │ │ ├── dateTimeUtils.ts │ │ │ │ ├── events.ts │ │ │ │ ├── parser.ts │ │ │ │ └── timestamp.ts │ │ │ ├── VCard/ │ │ │ │ ├── VCard.sass │ │ │ │ ├── VCard.tsx │ │ │ │ ├── VCardActions.tsx │ │ │ │ ├── VCardItem.tsx │ │ │ │ ├── VCardSubtitle.tsx │ │ │ │ ├── VCardText.tsx │ │ │ │ ├── VCardTitle.ts │ │ │ │ ├── _mixins.scss │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VCarousel/ │ │ │ │ ├── VCarousel.sass │ │ │ │ ├── VCarousel.tsx │ │ │ │ ├── VCarouselItem.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VCarousel.spec.browser.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VCheckbox/ │ │ │ │ ├── VCheckbox.sass │ │ │ │ ├── VCheckbox.tsx │ │ │ │ ├── VCheckboxBtn.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── VCheckbox.spec.tsx │ │ │ │ │ └── VCheckboxBtn.spec.browser.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VChip/ │ │ │ │ ├── VChip.sass │ │ │ │ ├── VChip.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VChip.spec.browser.tsx │ │ │ │ ├── _mixins.scss │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VChipGroup/ │ │ │ │ ├── VChipGroup.sass │ │ │ │ ├── VChipGroup.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VCode/ │ │ │ │ ├── VCode.sass │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VColorPicker/ │ │ │ │ ├── VColorPicker.sass │ │ │ │ ├── VColorPicker.tsx │ │ │ │ ├── VColorPickerCanvas.sass │ │ │ │ ├── VColorPickerCanvas.tsx │ │ │ │ ├── VColorPickerEdit.sass │ │ │ │ ├── VColorPickerEdit.tsx │ │ │ │ ├── VColorPickerPreview.sass │ │ │ │ ├── VColorPickerPreview.tsx │ │ │ │ ├── VColorPickerSwatches.sass │ │ │ │ ├── VColorPickerSwatches.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VColorPicker.spec.browser.tsx │ │ │ │ ├── _variables.scss │ │ │ │ ├── index.ts │ │ │ │ └── util/ │ │ │ │ ├── __tests__/ │ │ │ │ │ └── index.spec.ts │ │ │ │ └── index.ts │ │ │ ├── VCombobox/ │ │ │ │ ├── VCombobox.sass │ │ │ │ ├── VCombobox.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── VCombobox-multiple.spec.ts │ │ │ │ │ ├── VCombobox.spec.browser.tsx │ │ │ │ │ └── VCombobox.spec.ts │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VConfirmEdit/ │ │ │ │ ├── VConfirmEdit.tsx │ │ │ │ ├── __test__/ │ │ │ │ │ └── VConfirmEdit.spec.browser.tsx │ │ │ │ └── index.ts │ │ │ ├── VCounter/ │ │ │ │ ├── VCounter.sass │ │ │ │ ├── VCounter.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VDataIterator/ │ │ │ │ ├── VDataIterator.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VDataIterator.spec.browser.tsx │ │ │ │ ├── composables/ │ │ │ │ │ └── items.ts │ │ │ │ └── index.ts │ │ │ ├── VDataTable/ │ │ │ │ ├── VDataTable.sass │ │ │ │ ├── VDataTable.tsx │ │ │ │ ├── VDataTableColumn.tsx │ │ │ │ ├── VDataTableFooter.sass │ │ │ │ ├── VDataTableFooter.tsx │ │ │ │ ├── VDataTableGroupHeaderRow.tsx │ │ │ │ ├── VDataTableHeaders.tsx │ │ │ │ ├── VDataTableRow.tsx │ │ │ │ ├── VDataTableRows.tsx │ │ │ │ ├── VDataTableServer.tsx │ │ │ │ ├── VDataTableVirtual.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── MobileRow.spec.ts │ │ │ │ │ ├── Row.spec.ts │ │ │ │ │ ├── RowGroup.spec.ts │ │ │ │ │ ├── VDataTable.spec.cy.tsx │ │ │ │ │ ├── VDataTable.spec.ts │ │ │ │ │ ├── VDataTableHeader.spec.ts │ │ │ │ │ ├── VDataTableServer.spec.cy.tsx │ │ │ │ │ ├── VDataTableVirtual.spec.browser.tsx │ │ │ │ │ ├── VEditDialog.spec.ts │ │ │ │ │ ├── VSimpleTable.spec.ts │ │ │ │ │ ├── VVirtualTable.spec.ts │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── MobileRow.spec.ts.snap │ │ │ │ │ │ ├── Row.spec.ts.snap │ │ │ │ │ │ ├── RowGroup.spec.ts.snap │ │ │ │ │ │ ├── VDataTable.spec.ts.snap │ │ │ │ │ │ ├── VDataTableHeader.spec.ts.snap │ │ │ │ │ │ ├── VEditDialog.spec.ts.snap │ │ │ │ │ │ ├── VSimpleTable.spec.ts.snap │ │ │ │ │ │ └── VVirtualTable.spec.ts.snap │ │ │ │ │ ├── headers.spec.ts │ │ │ │ │ └── sort.spec.ts │ │ │ │ ├── _variables.scss │ │ │ │ ├── composables/ │ │ │ │ │ ├── expand.ts │ │ │ │ │ ├── group.ts │ │ │ │ │ ├── headers.ts │ │ │ │ │ ├── items.ts │ │ │ │ │ ├── options.ts │ │ │ │ │ ├── paginate.ts │ │ │ │ │ ├── select.ts │ │ │ │ │ └── sort.ts │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ │ ├── VDatePicker/ │ │ │ │ ├── VDatePicker.sass │ │ │ │ ├── VDatePicker.tsx │ │ │ │ ├── VDatePickerControls.sass │ │ │ │ ├── VDatePickerControls.tsx │ │ │ │ ├── VDatePickerHeader.sass │ │ │ │ ├── VDatePickerHeader.tsx │ │ │ │ ├── VDatePickerMonth.sass │ │ │ │ ├── VDatePickerMonth.tsx │ │ │ │ ├── VDatePickerMonths.sass │ │ │ │ ├── VDatePickerMonths.tsx │ │ │ │ ├── VDatePickerYears.sass │ │ │ │ ├── VDatePickerYears.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── VDatePicker.a11y.spec.tsx │ │ │ │ │ ├── VDatePicker.date.spec.ts │ │ │ │ │ ├── VDatePicker.events.spec.browser.tsx │ │ │ │ │ ├── VDatePicker.month.spec.ts │ │ │ │ │ ├── VDatePicker.spec.browser.tsx │ │ │ │ │ ├── VDatePickerHeader.spec.ts │ │ │ │ │ ├── VDatePickerTitle.spec.ts │ │ │ │ │ ├── VDatePickerYears.spec.ts │ │ │ │ │ └── __snapshots__/ │ │ │ │ │ ├── VDatePicker.date.spec.ts.snap │ │ │ │ │ ├── VDatePicker.month.spec.ts.snap │ │ │ │ │ ├── VDatePickerHeader.spec.ts.snap │ │ │ │ │ └── VDatePickerYears.spec.ts.snap │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VDefaultsProvider/ │ │ │ │ ├── VDefaultsProvider.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VDefaultsProvider.spec.tsx │ │ │ │ └── index.ts │ │ │ ├── VDialog/ │ │ │ │ ├── VDialog.sass │ │ │ │ ├── VDialog.tsx │ │ │ │ ├── __test__/ │ │ │ │ │ └── VDialog.spec.browser.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VDivider/ │ │ │ │ ├── VDivider.sass │ │ │ │ ├── VDivider.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VDivider.spec.browser.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VEmptyState/ │ │ │ │ ├── VEmptyState.sass │ │ │ │ ├── VEmptyState.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VExpansionPanel/ │ │ │ │ ├── VExpansionPanel.sass │ │ │ │ ├── VExpansionPanel.tsx │ │ │ │ ├── VExpansionPanelText.tsx │ │ │ │ ├── VExpansionPanelTitle.tsx │ │ │ │ ├── VExpansionPanels.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VExpansionPanels.spec.browser.tsx │ │ │ │ ├── _variables.scss │ │ │ │ ├── index.ts │ │ │ │ └── shared.ts │ │ │ ├── VFab/ │ │ │ │ ├── VFab.sass │ │ │ │ ├── VFab.tsx │ │ │ │ ├── _mixins.scss │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VField/ │ │ │ │ ├── VField.sass │ │ │ │ ├── VField.tsx │ │ │ │ ├── VFieldLabel.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VFileInput/ │ │ │ │ ├── VFileInput.sass │ │ │ │ ├── VFileInput.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── VFileInput.spec.browser.tsx │ │ │ │ │ ├── VFileInput.spec.tsx │ │ │ │ │ └── text.txt │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VFooter/ │ │ │ │ ├── VFooter.sass │ │ │ │ ├── VFooter.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VForm/ │ │ │ │ ├── VForm.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VForm.spec.cy.tsx │ │ │ │ └── index.ts │ │ │ ├── VGrid/ │ │ │ │ ├── VCol.ts │ │ │ │ ├── VContainer.sass │ │ │ │ ├── VContainer.tsx │ │ │ │ ├── VGrid.sass │ │ │ │ ├── VRow.ts │ │ │ │ ├── VSpacer.sass │ │ │ │ ├── VSpacer.ts │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── VCol.spec.browser.tsx │ │ │ │ │ └── VCol.spec.ts │ │ │ │ ├── _mixins.sass │ │ │ │ └── index.ts │ │ │ ├── VHotkey/ │ │ │ │ ├── VHotkey.scss │ │ │ │ ├── VHotkey.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VHotkey.spec.browser.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VHover/ │ │ │ │ ├── VHover.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VHover.spec.browser.tsx │ │ │ │ └── index.ts │ │ │ ├── VIcon/ │ │ │ │ ├── VIcon.sass │ │ │ │ ├── VIcon.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VIcon.spec.browser.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VImg/ │ │ │ │ ├── VImg.sass │ │ │ │ ├── VImg.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VInfiniteScroll/ │ │ │ │ ├── VInfiniteScroll.sass │ │ │ │ ├── VInfiniteScroll.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VInfiniteScroll.spec.browser.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VInput/ │ │ │ │ ├── InputIcon.tsx │ │ │ │ ├── VInput.sass │ │ │ │ ├── VInput.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VInput.spec.browser.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VItemGroup/ │ │ │ │ ├── VItem.tsx │ │ │ │ ├── VItemGroup.sass │ │ │ │ ├── VItemGroup.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── VItemGroup.spec.browser.tsx │ │ │ │ │ ├── VItemGroup.spec.ts │ │ │ │ │ └── __snapshots__/ │ │ │ │ │ └── VItemGroup.spec.ts.snap │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VKbd/ │ │ │ │ ├── VKbd.scss │ │ │ │ ├── VKbd.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VLabel/ │ │ │ │ ├── VLabel.sass │ │ │ │ ├── VLabel.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VLayout/ │ │ │ │ ├── VLayout.sass │ │ │ │ ├── VLayout.tsx │ │ │ │ ├── VLayoutItem.sass │ │ │ │ ├── VLayoutItem.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VLayout.spec.cy.tsx │ │ │ │ └── index.ts │ │ │ ├── VLazy/ │ │ │ │ ├── VLazy.tsx │ │ │ │ └── index.ts │ │ │ ├── VList/ │ │ │ │ ├── VList.sass │ │ │ │ ├── VList.tsx │ │ │ │ ├── VListChildren.tsx │ │ │ │ ├── VListGroup.tsx │ │ │ │ ├── VListImg.ts │ │ │ │ ├── VListItem.sass │ │ │ │ ├── VListItem.tsx │ │ │ │ ├── VListItemAction.tsx │ │ │ │ ├── VListItemMedia.tsx │ │ │ │ ├── VListItemSubtitle.tsx │ │ │ │ ├── VListItemTitle.ts │ │ │ │ ├── VListSubheader.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── VList.spec.browser.tsx │ │ │ │ │ ├── VList.spec.ts │ │ │ │ │ ├── VListGroup.spec.browser.tsx │ │ │ │ │ ├── VListItem.spec.cy.tsx │ │ │ │ │ ├── VListItemMedia.spec.ts │ │ │ │ │ └── __snapshots__/ │ │ │ │ │ ├── VList.spec.ts.snap │ │ │ │ │ └── VListItemMedia.spec.ts.snap │ │ │ │ ├── _variables.scss │ │ │ │ ├── index.ts │ │ │ │ └── list.ts │ │ │ ├── VLocaleProvider/ │ │ │ │ ├── VLocaleProvider.sass │ │ │ │ ├── VLocaleProvider.tsx │ │ │ │ └── index.ts │ │ │ ├── VMain/ │ │ │ │ ├── VMain.sass │ │ │ │ ├── VMain.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VMenu/ │ │ │ │ ├── VMenu.sass │ │ │ │ ├── VMenu.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── VMenu.spec.ts │ │ │ │ │ └── __snapshots__/ │ │ │ │ │ └── VMenu.spec.ts.snap │ │ │ │ ├── _variables.scss │ │ │ │ ├── index.ts │ │ │ │ └── shared.ts │ │ │ ├── VMessages/ │ │ │ │ ├── VMessages.sass │ │ │ │ ├── VMessages.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VNavigationDrawer/ │ │ │ │ ├── VNavigationDrawer.sass │ │ │ │ ├── VNavigationDrawer.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VNavigationDrawer.spec.browser.tsx │ │ │ │ ├── _variables.scss │ │ │ │ ├── index.ts │ │ │ │ ├── sticky.ts │ │ │ │ └── touch.ts │ │ │ ├── VNoSsr/ │ │ │ │ ├── VNoSsr.tsx │ │ │ │ └── index.ts │ │ │ ├── VNumberInput/ │ │ │ │ ├── VNumberInput.sass │ │ │ │ ├── VNumberInput.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VNumberInput.spec.browser.tsx │ │ │ │ ├── _variables.scss │ │ │ │ ├── hold.ts │ │ │ │ └── index.ts │ │ │ ├── VOtpInput/ │ │ │ │ ├── VOtpInput.sass │ │ │ │ ├── VOtpInput.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VOtpInput.spec.browser.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VOverflowBtn/ │ │ │ │ ├── VOverflowBtn.sass │ │ │ │ ├── VOverflowBtn.ts │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── VOverflowBtn.spec.ts │ │ │ │ │ └── __snapshots__/ │ │ │ │ │ └── VOverflowBtn.spec.ts.snap │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VOverlay/ │ │ │ │ ├── VOverlay.sass │ │ │ │ ├── VOverlay.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VOverlay.spec.cy.tsx │ │ │ │ ├── _variables.scss │ │ │ │ ├── index.ts │ │ │ │ ├── locationStrategies.ts │ │ │ │ ├── requestNewFrame.ts │ │ │ │ ├── scrollStrategies.ts │ │ │ │ ├── useActivator.tsx │ │ │ │ └── util/ │ │ │ │ └── point.ts │ │ │ ├── VPagination/ │ │ │ │ ├── VPagination.sass │ │ │ │ ├── VPagination.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VPagination.spec.browser.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VParallax/ │ │ │ │ ├── VParallax.sass │ │ │ │ ├── VParallax.tsx │ │ │ │ └── index.ts │ │ │ ├── VProgressCircular/ │ │ │ │ ├── VProgressCircular.sass │ │ │ │ ├── VProgressCircular.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VProgressLinear/ │ │ │ │ ├── VProgressLinear.sass │ │ │ │ ├── VProgressLinear.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VProgressLinear.spec.browser.tsx │ │ │ │ ├── _variables.scss │ │ │ │ ├── chunks.ts │ │ │ │ └── index.ts │ │ │ ├── VRadio/ │ │ │ │ ├── VRadio.tsx │ │ │ │ └── index.ts │ │ │ ├── VRadioGroup/ │ │ │ │ ├── VRadioGroup.sass │ │ │ │ ├── VRadioGroup.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VRangeSlider/ │ │ │ │ ├── VRangeSlider.tsx │ │ │ │ └── index.ts │ │ │ ├── VRating/ │ │ │ │ ├── VRating.sass │ │ │ │ ├── VRating.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VRating.spec.browser.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VResponsive/ │ │ │ │ ├── VResponsive.sass │ │ │ │ ├── VResponsive.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── VResponsive.spec.ts │ │ │ │ │ └── __snapshots__/ │ │ │ │ │ └── VResponsive.spec.ts.snap │ │ │ │ └── index.ts │ │ │ ├── VSelect/ │ │ │ │ ├── VSelect.sass │ │ │ │ ├── VSelect.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VSelect.spec.browser.tsx │ │ │ │ ├── _mixins.scss │ │ │ │ ├── _variables.scss │ │ │ │ ├── index.ts │ │ │ │ └── useScrolling.ts │ │ │ ├── VSelectionControl/ │ │ │ │ ├── VSelectionControl.sass │ │ │ │ ├── VSelectionControl.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VSelectionControl.spec.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VSelectionControlGroup/ │ │ │ │ ├── VSelectionControlGroup.sass │ │ │ │ ├── VSelectionControlGroup.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VSheet/ │ │ │ │ ├── VSheet.sass │ │ │ │ ├── VSheet.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VSkeletonLoader/ │ │ │ │ ├── VSkeletonLoader.sass │ │ │ │ ├── VSkeletonLoader.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VSlideGroup/ │ │ │ │ ├── VSlideGroup.sass │ │ │ │ ├── VSlideGroup.tsx │ │ │ │ ├── VSlideGroupItem.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VSlideGroup.spec.cy.tsx │ │ │ │ ├── _variables.scss │ │ │ │ ├── helpers.ts │ │ │ │ └── index.ts │ │ │ ├── VSlider/ │ │ │ │ ├── VSlider.sass │ │ │ │ ├── VSlider.tsx │ │ │ │ ├── VSliderThumb.sass │ │ │ │ ├── VSliderThumb.tsx │ │ │ │ ├── VSliderTrack.sass │ │ │ │ ├── VSliderTrack.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VSlider.spec.browser.tsx │ │ │ │ ├── _variables.scss │ │ │ │ ├── index.ts │ │ │ │ └── slider.ts │ │ │ ├── VSnackbar/ │ │ │ │ ├── VSnackbar.sass │ │ │ │ ├── VSnackbar.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VSnackbarQueue/ │ │ │ │ ├── VSnackbarQueue.tsx │ │ │ │ ├── index.ts │ │ │ │ └── queue.ts │ │ │ ├── VSparkline/ │ │ │ │ ├── VBarline.tsx │ │ │ │ ├── VSparkline.tsx │ │ │ │ ├── VTrendline.tsx │ │ │ │ ├── index.ts │ │ │ │ └── util/ │ │ │ │ ├── line.ts │ │ │ │ └── path.ts │ │ │ ├── VSpeedDial/ │ │ │ │ ├── VSpeedDial.sass │ │ │ │ ├── VSpeedDial.tsx │ │ │ │ └── index.ts │ │ │ ├── VStepper/ │ │ │ │ ├── VStepper.sass │ │ │ │ ├── VStepper.tsx │ │ │ │ ├── VStepperActions.tsx │ │ │ │ ├── VStepperHeader.ts │ │ │ │ ├── VStepperItem.sass │ │ │ │ ├── VStepperItem.tsx │ │ │ │ ├── VStepperWindow.tsx │ │ │ │ ├── VStepperWindowItem.tsx │ │ │ │ ├── _variables.scss │ │ │ │ ├── index.ts │ │ │ │ └── shared.ts │ │ │ ├── VSwitch/ │ │ │ │ ├── VSwitch.sass │ │ │ │ ├── VSwitch.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VSwitch.spec.browser.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VSystemBar/ │ │ │ │ ├── VSystemBar.sass │ │ │ │ ├── VSystemBar.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VTable/ │ │ │ │ ├── VTable.sass │ │ │ │ ├── VTable.tsx │ │ │ │ ├── _mixins.scss │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VTabs/ │ │ │ │ ├── VTab.sass │ │ │ │ ├── VTab.tsx │ │ │ │ ├── VTabs.sass │ │ │ │ ├── VTabs.tsx │ │ │ │ ├── VTabsWindow.tsx │ │ │ │ ├── VTabsWindowItem.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VTabs.spec.browser.tsx │ │ │ │ ├── _variables.scss │ │ │ │ ├── index.ts │ │ │ │ └── shared.ts │ │ │ ├── VTextField/ │ │ │ │ ├── VTextField.sass │ │ │ │ ├── VTextField.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── VTextField.spec.browser.tsx │ │ │ │ │ └── VTextField.spec.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VTextarea/ │ │ │ │ ├── VTextarea.sass │ │ │ │ ├── VTextarea.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── VTextarea.spec.browser.tsx │ │ │ │ │ └── VTextarea.spec.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VThemeProvider/ │ │ │ │ ├── VThemeProvider.sass │ │ │ │ ├── VThemeProvider.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VThemeProvider.spec.browser.tsx │ │ │ │ └── index.ts │ │ │ ├── VTimePicker/ │ │ │ │ ├── VTimePicker.sass │ │ │ │ ├── VTimePicker.tsx │ │ │ │ ├── VTimePickerClock.sass │ │ │ │ ├── VTimePickerClock.tsx │ │ │ │ ├── VTimePickerControls.sass │ │ │ │ ├── VTimePickerControls.tsx │ │ │ │ ├── VTimePickerField.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VTimePicker.spec.browser.tsx │ │ │ │ ├── _variables.scss │ │ │ │ ├── index.ts │ │ │ │ ├── shared.ts │ │ │ │ ├── useTimeValidation.ts │ │ │ │ └── util.ts │ │ │ ├── VTimeline/ │ │ │ │ ├── VTimeline.sass │ │ │ │ ├── VTimeline.tsx │ │ │ │ ├── VTimelineDivider.tsx │ │ │ │ ├── VTimelineItem.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VTimeline.spec.browser.tsx │ │ │ │ ├── _mixins.sass │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VToolbar/ │ │ │ │ ├── VToolbar.sass │ │ │ │ ├── VToolbar.tsx │ │ │ │ ├── VToolbarItems.tsx │ │ │ │ ├── VToolbarTitle.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VToolbar.spec.browser.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VTooltip/ │ │ │ │ ├── VTooltip.sass │ │ │ │ ├── VTooltip.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VTreeview/ │ │ │ │ ├── VTreeview.tsx │ │ │ │ ├── VTreeviewChildren.tsx │ │ │ │ ├── VTreeviewGroup.tsx │ │ │ │ ├── VTreeviewItem.sass │ │ │ │ ├── VTreeviewItem.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VTreeview.spec.browser.tsx │ │ │ │ ├── _variables.scss │ │ │ │ ├── index.ts │ │ │ │ └── shared.ts │ │ │ ├── VValidation/ │ │ │ │ ├── VValidation.tsx │ │ │ │ └── index.ts │ │ │ ├── VVirtualScroll/ │ │ │ │ ├── VVirtualScroll.sass │ │ │ │ ├── VVirtualScroll.tsx │ │ │ │ ├── VVirtualScrollItem.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VVirtualScroll.spec.browser.tsx │ │ │ │ └── index.ts │ │ │ ├── VWindow/ │ │ │ │ ├── VWindow.sass │ │ │ │ ├── VWindow.tsx │ │ │ │ ├── VWindowItem.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VWindow.spec.browser.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ └── transitions/ │ │ │ ├── createTransition.ts │ │ │ ├── dialog-transition.tsx │ │ │ ├── expand-transition.ts │ │ │ └── index.ts │ │ ├── composables/ │ │ │ ├── __tests__/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── group.spec.ts.snap │ │ │ │ │ └── theme.spec.ts.snap │ │ │ │ ├── autocomplete.spec.ts │ │ │ │ ├── border.spec.ts │ │ │ │ ├── calendar.spec.ts │ │ │ │ ├── color.spec.ts │ │ │ │ ├── defaults.spec.ts │ │ │ │ ├── delay.spec.ts │ │ │ │ ├── dimensions.spec.ts │ │ │ │ ├── display-components.spec.browser.tsx │ │ │ │ ├── display.spec.browser.ts │ │ │ │ ├── elevation.spec.ts │ │ │ │ ├── fileFilter.spec.ts │ │ │ │ ├── filter.spec.ts │ │ │ │ ├── forwardRefs.spec.tsx │ │ │ │ ├── goto.spec.browser.tsx │ │ │ │ ├── group.spec.ts │ │ │ │ ├── icons.spec.ts │ │ │ │ ├── list-items.spec.ts │ │ │ │ ├── loader.spec.ts │ │ │ │ ├── location.spec.ts │ │ │ │ ├── mutationObserver.spec.ts │ │ │ │ ├── position.spec.ts │ │ │ │ ├── proxiedModel.spec.ts │ │ │ │ ├── resizeObserver.spec.browser.tsx │ │ │ │ ├── rounded.spec.ts │ │ │ │ ├── router.spec.browser.tsx │ │ │ │ ├── scroll.spec.browser.tsx │ │ │ │ ├── size.spec.ts │ │ │ │ ├── tag.spec.ts │ │ │ │ ├── theme.spec.ts │ │ │ │ ├── validation.spec.ts │ │ │ │ └── variant.spec.ts │ │ │ ├── autocomplete.ts │ │ │ ├── autofocus.ts │ │ │ ├── border.ts │ │ │ ├── calendar.ts │ │ │ ├── color.ts │ │ │ ├── component.ts │ │ │ ├── date/ │ │ │ │ ├── DateAdapter.ts │ │ │ │ ├── __tests__/ │ │ │ │ │ └── date.spec.ts │ │ │ │ ├── adapters/ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ └── vuetify.spec.ts │ │ │ │ │ ├── string.ts │ │ │ │ │ └── vuetify.ts │ │ │ │ ├── date.ts │ │ │ │ └── index.ts │ │ │ ├── dateFormat.ts │ │ │ ├── defaults.ts │ │ │ ├── delay.ts │ │ │ ├── density.ts │ │ │ ├── dimensions.ts │ │ │ ├── directiveComponent.ts │ │ │ ├── display.ts │ │ │ ├── documentVisibility.ts │ │ │ ├── elevation.ts │ │ │ ├── fileDrop.ts │ │ │ ├── fileFilter.ts │ │ │ ├── filter.tsx │ │ │ ├── focus.ts │ │ │ ├── focusGroups.ts │ │ │ ├── focusTrap.ts │ │ │ ├── form.ts │ │ │ ├── forwardRefs.ts │ │ │ ├── goto.ts │ │ │ ├── group.ts │ │ │ ├── hotkey/ │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── hotkey-parsing.spec.ts │ │ │ │ │ └── hotkey.spec.ts │ │ │ │ ├── hotkey-parsing.ts │ │ │ │ ├── hotkey.ts │ │ │ │ ├── index.ts │ │ │ │ └── key-aliases.ts │ │ │ ├── hydration.ts │ │ │ ├── iconSizes.ts │ │ │ ├── icons.tsx │ │ │ ├── index.ts │ │ │ ├── intersectionObserver.ts │ │ │ ├── layout.ts │ │ │ ├── lazy.ts │ │ │ ├── list-items.ts │ │ │ ├── loader.tsx │ │ │ ├── locale.ts │ │ │ ├── location.ts │ │ │ ├── mask/ │ │ │ │ ├── __tests__/ │ │ │ │ │ └── mask.spec.ts │ │ │ │ ├── index.ts │ │ │ │ └── mask.ts │ │ │ ├── menuActivator.ts │ │ │ ├── mutationObserver.ts │ │ │ ├── nested/ │ │ │ │ ├── __tests__/ │ │ │ │ │ └── selectStrategies.spec.ts │ │ │ │ ├── activeStrategies.ts │ │ │ │ ├── nested.ts │ │ │ │ ├── openStrategies.ts │ │ │ │ └── selectStrategies.ts │ │ │ ├── position.ts │ │ │ ├── proxiedModel.ts │ │ │ ├── refs.ts │ │ │ ├── resizeObserver.ts │ │ │ ├── reveal.ts │ │ │ ├── rounded.ts │ │ │ ├── router.tsx │ │ │ ├── scopeId.ts │ │ │ ├── scroll.ts │ │ │ ├── selectLink.ts │ │ │ ├── size.ts │ │ │ ├── ssrBoot.ts │ │ │ ├── stack.ts │ │ │ ├── tag.ts │ │ │ ├── teleport.ts │ │ │ ├── theme.ts │ │ │ ├── toggleScope.ts │ │ │ ├── touch.ts │ │ │ ├── transition.ts │ │ │ ├── validation.ts │ │ │ ├── variant.tsx │ │ │ └── virtual.ts │ │ ├── directives/ │ │ │ ├── click-outside/ │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── click-outside-shadow-dom.spec.ts │ │ │ │ │ └── click-outside.spec.ts │ │ │ │ └── index.ts │ │ │ ├── color/ │ │ │ │ ├── __tests__/ │ │ │ │ │ └── color.spec.ts │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── intersect/ │ │ │ │ ├── __tests__/ │ │ │ │ │ └── intersect.spec.browser.tsx │ │ │ │ └── index.ts │ │ │ ├── mutate/ │ │ │ │ ├── __tests__/ │ │ │ │ │ └── mutate.spec.ts │ │ │ │ └── index.ts │ │ │ ├── resize/ │ │ │ │ ├── __tests__/ │ │ │ │ │ └── resize.spec.ts │ │ │ │ └── index.ts │ │ │ ├── ripple/ │ │ │ │ ├── VRipple.sass │ │ │ │ ├── __tests__/ │ │ │ │ │ └── ripple.spec.ts │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── scroll/ │ │ │ │ ├── __tests__/ │ │ │ │ │ └── scroll.spec.browser.tsx │ │ │ │ └── index.ts │ │ │ ├── tooltip/ │ │ │ │ └── index.ts │ │ │ └── touch/ │ │ │ ├── __tests__/ │ │ │ │ └── touch.spec.browser.tsx │ │ │ └── index.ts │ │ ├── entry-bundler.ts │ │ ├── entry-styles.ts │ │ ├── framework.ts │ │ ├── globals.d.ts │ │ ├── icons.ts │ │ ├── iconsets/ │ │ │ ├── bx.ts │ │ │ ├── carbon.ts │ │ │ ├── fa-svg.ts │ │ │ ├── fa.ts │ │ │ ├── fa4.ts │ │ │ ├── fa6.ts │ │ │ ├── lucide.ts │ │ │ ├── md.ts │ │ │ ├── mdi-svg.ts │ │ │ ├── mdi-unocss.ts │ │ │ ├── mdi.ts │ │ │ ├── ms.ts │ │ │ ├── ph.ts │ │ │ ├── ri.ts │ │ │ └── tabler.ts │ │ ├── labs/ │ │ │ ├── VAvatarGroup/ │ │ │ │ ├── VAvatarGroup.scss │ │ │ │ ├── VAvatarGroup.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VAvatarGroup.spec.browser.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VColorInput/ │ │ │ │ ├── VColorInput.sass │ │ │ │ ├── VColorInput.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VColorInput.spec.browser.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VCommandPalette/ │ │ │ │ ├── VCommandPalette.scss │ │ │ │ ├── VCommandPalette.tsx │ │ │ │ ├── VCommandPaletteItem.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VCommandPalette.spec.browser.tsx │ │ │ │ ├── _variables.scss │ │ │ │ ├── composables/ │ │ │ │ │ └── useCommandPaletteNavigation.ts │ │ │ │ ├── index.ts │ │ │ │ ├── shared.ts │ │ │ │ └── types.ts │ │ │ ├── VDateInput/ │ │ │ │ ├── VDateInput.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VDateInput.spec.browser.tsx │ │ │ │ └── index.ts │ │ │ ├── VFileUpload/ │ │ │ │ ├── VFileUpload.sass │ │ │ │ ├── VFileUpload.tsx │ │ │ │ ├── VFileUploadDropzone.tsx │ │ │ │ ├── VFileUploadItem.tsx │ │ │ │ ├── VFileUploadList.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VIconBtn/ │ │ │ │ ├── VIconBtn.scss │ │ │ │ ├── VIconBtn.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VIconBtn.spec.browser.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VMaskInput/ │ │ │ │ ├── VMaskInput.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── VMaskInput.spec.browser.tsx │ │ │ │ └── index.ts │ │ │ ├── VPicker/ │ │ │ │ ├── VPicker.sass │ │ │ │ ├── VPicker.tsx │ │ │ │ ├── VPickerTitle.ts │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── VPicker.spec.ts │ │ │ │ │ └── __snapshots__/ │ │ │ │ │ └── VPicker.spec.ts.snap │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VPie/ │ │ │ │ ├── VPie.sass │ │ │ │ ├── VPie.tsx │ │ │ │ ├── VPieSegment.tsx │ │ │ │ ├── VPieTooltip.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ └── pie-arc.spec.ts │ │ │ │ ├── _variables.scss │ │ │ │ ├── index.ts │ │ │ │ ├── types.ts │ │ │ │ └── utils.ts │ │ │ ├── VProgress/ │ │ │ │ ├── VProgress.sass │ │ │ │ ├── VProgress.tsx │ │ │ │ └── index.ts │ │ │ ├── VPullToRefresh/ │ │ │ │ ├── VPullToRefresh.sass │ │ │ │ ├── VPullToRefresh.tsx │ │ │ │ └── index.ts │ │ │ ├── VStepperVertical/ │ │ │ │ ├── VStepperVertical.tsx │ │ │ │ ├── VStepperVerticalActions.tsx │ │ │ │ ├── VStepperVerticalItem.sass │ │ │ │ ├── VStepperVerticalItem.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── VVideo/ │ │ │ │ ├── VVideo.sass │ │ │ │ ├── VVideo.tsx │ │ │ │ ├── VVideoControls.tsx │ │ │ │ ├── VVideoVolume.tsx │ │ │ │ ├── _variables.scss │ │ │ │ └── index.ts │ │ │ ├── allComponents.ts │ │ │ ├── components.ts │ │ │ ├── composables.ts │ │ │ ├── entry-bundler.ts │ │ │ ├── index.ts │ │ │ └── rules/ │ │ │ ├── index.ts │ │ │ ├── plugin.ts │ │ │ └── rules.ts │ │ ├── locale/ │ │ │ ├── __tests__/ │ │ │ │ └── index.spec.ts │ │ │ ├── adapters/ │ │ │ │ ├── vue-i18n.ts │ │ │ │ └── vuetify.ts │ │ │ ├── af.ts │ │ │ ├── ar.ts │ │ │ ├── az.ts │ │ │ ├── bg.ts │ │ │ ├── ca.ts │ │ │ ├── ckb.ts │ │ │ ├── cs.ts │ │ │ ├── da.ts │ │ │ ├── de.ts │ │ │ ├── el.ts │ │ │ ├── en.ts │ │ │ ├── es.ts │ │ │ ├── et.ts │ │ │ ├── fa.ts │ │ │ ├── fi.ts │ │ │ ├── fr.ts │ │ │ ├── he.ts │ │ │ ├── hr.ts │ │ │ ├── hu.ts │ │ │ ├── id.ts │ │ │ ├── index.ts │ │ │ ├── it.ts │ │ │ ├── ja.ts │ │ │ ├── km.ts │ │ │ ├── ko.ts │ │ │ ├── lt.ts │ │ │ ├── lv.ts │ │ │ ├── nl.ts │ │ │ ├── no.ts │ │ │ ├── pl.ts │ │ │ ├── pt.ts │ │ │ ├── ro.ts │ │ │ ├── ru.ts │ │ │ ├── sk.ts │ │ │ ├── sl.ts │ │ │ ├── sr-Cyrl.ts │ │ │ ├── sr-Latn.ts │ │ │ ├── sv.ts │ │ │ ├── th.ts │ │ │ ├── tr.ts │ │ │ ├── uk.ts │ │ │ ├── vi.ts │ │ │ ├── zh-Hans.ts │ │ │ └── zh-Hant.ts │ │ ├── shims.d.ts │ │ ├── styles/ │ │ │ ├── colors.scss │ │ │ ├── core.scss │ │ │ ├── elements/ │ │ │ │ ├── _blockquote.sass │ │ │ │ ├── _global.sass │ │ │ │ └── _index.sass │ │ │ ├── generic/ │ │ │ │ ├── _animations.scss │ │ │ │ ├── _colors.scss │ │ │ │ ├── _index.scss │ │ │ │ ├── _layers.scss │ │ │ │ ├── _reset.scss │ │ │ │ ├── _rtl.scss │ │ │ │ ├── _theme.scss │ │ │ │ └── _transitions.scss │ │ │ ├── main.sass │ │ │ ├── settings/ │ │ │ │ ├── _colors.scss │ │ │ │ ├── _elevations.scss │ │ │ │ ├── _index.sass │ │ │ │ ├── _utilities.scss │ │ │ │ └── _variables.scss │ │ │ ├── tools/ │ │ │ │ ├── _absolute.sass │ │ │ │ ├── _border.sass │ │ │ │ ├── _density.sass │ │ │ │ ├── _display.sass │ │ │ │ ├── _elevation.sass │ │ │ │ ├── _functions.sass │ │ │ │ ├── _index.sass │ │ │ │ ├── _layer.scss │ │ │ │ ├── _position.sass │ │ │ │ ├── _rounded.sass │ │ │ │ ├── _rtl.sass │ │ │ │ ├── _states.sass │ │ │ │ ├── _theme.sass │ │ │ │ ├── _typography.sass │ │ │ │ ├── _utilities.sass │ │ │ │ └── _variant.sass │ │ │ ├── utilities/ │ │ │ │ ├── _display.sass │ │ │ │ ├── _elevation.scss │ │ │ │ ├── _index.sass │ │ │ │ ├── _pointer-events.sass │ │ │ │ └── _screenreaders.sass │ │ │ └── utilities.scss │ │ ├── types.ts │ │ └── util/ │ │ ├── __tests__/ │ │ │ ├── colorUtils.spec.ts │ │ │ ├── deepEqual.spec.ts │ │ │ ├── dom.spec.ts │ │ │ ├── getCurrentInstance.spec.tsx │ │ │ ├── helpers.spec.ts │ │ │ ├── propsFactory.spec.ts │ │ │ └── throttle.spec.ts │ │ ├── anchor.ts │ │ ├── animation.ts │ │ ├── bindProps.ts │ │ ├── box.ts │ │ ├── color/ │ │ │ ├── APCA.ts │ │ │ ├── transformCIELAB.ts │ │ │ └── transformSRGB.ts │ │ ├── colorUtils.ts │ │ ├── colors.ts │ │ ├── console.ts │ │ ├── createSimpleFunctional.ts │ │ ├── deepEqual.ts │ │ ├── defineComponent.tsx │ │ ├── dom.ts │ │ ├── easing.ts │ │ ├── events.ts │ │ ├── getCurrentInstance.ts │ │ ├── getScrollParent.ts │ │ ├── globals.ts │ │ ├── helpers.ts │ │ ├── indentLines.ts │ │ ├── index.ts │ │ ├── injectSelf.ts │ │ ├── isFixedPosition.ts │ │ ├── propsFactory.ts │ │ ├── svg-arc-corners.ts │ │ ├── throttle.ts │ │ ├── timeUtils.ts │ │ └── useRender.ts │ ├── test/ │ │ ├── contextStub.ts │ │ ├── globals.d.ts │ │ ├── index.ts │ │ ├── setup/ │ │ │ ├── browser-commands.ts │ │ │ ├── browser-setup.ts │ │ │ ├── to-have-been-warned.ts │ │ │ └── unit-setup.ts │ │ └── templates/ │ │ ├── Application.tsx │ │ ├── CenteredGrid.tsx │ │ ├── generateStories.tsx │ │ ├── gridOn.tsx │ │ └── index.ts │ ├── tsconfig.checks.json │ ├── tsconfig.dev.json │ ├── tsconfig.dist.json │ ├── tsconfig.json │ ├── vite.config.ts │ ├── vitest.config.ts │ └── vizzly.config.js ├── patches/ │ ├── @mdi__js@7.4.47.patch │ ├── @testing-library__vue.patch │ ├── @vitest__browser.patch │ └── playwright-core.patch ├── pnpm-workspace.yaml ├── renovate.json ├── scripts/ │ ├── build.js │ ├── confirm-npm-tag.js │ ├── converter.js │ ├── dev.js │ ├── lint-commit-message.js │ ├── options-to-composition.mjs │ ├── parse-npm-tag.js │ ├── post-install.js │ ├── post-release-merge.js │ ├── prepare-commit-message.js │ ├── rules/ │ │ ├── jsx-condition-key.js │ │ ├── jsx-curly-spacing.js │ │ ├── jsx-prop-casing.js │ │ ├── no-components-index.js │ │ ├── no-nullish-coalescing-in-condition.js │ │ ├── no-render-string-reference.js │ │ ├── sort-imports.js │ │ └── vitest-global-imports.js │ ├── tdd-run.js │ └── warn-npm-install.js ├── templates/ │ ├── browser-test.tsx │ ├── component.tsx │ ├── page.md │ └── unit-test.ts ├── tsconfig.eslint.json └── tsconfig.json ================================================ FILE CONTENTS ================================================ ================================================ FILE: .dockerignore ================================================ .git .vscode .devbots .github node_modules ================================================ FILE: .editorconfig ================================================ root = true [*] charset = utf-8 indent_style = space indent_size = 2 end_of_line = lf insert_final_newline = true trim_trailing_whitespace = true ================================================ FILE: .eslintrc.cjs ================================================ module.exports = { root: true, parserOptions: { parser: '@typescript-eslint/parser', ecmaVersion: 2020, sourceType: 'module', projectService: true, tsconfigRootDir: __dirname, extraFileExtensions: ['.vue', '.json'], suppressDeprecatedPropertyWarnings: true, }, extends: [ 'standard', 'plugin:vue/recommended', // 'plugin:vuetify/base', 'plugin:sonarjs/recommended', ], env: { node: true, browser: true, es6: true, }, plugins: [ '@typescript-eslint', '@stylistic/ts', 'sonarjs', 'react', 'eslint-plugin-local-rules', ], rules: { 'no-var': 'error', // allow paren-less arrow functions 'arrow-parens': ['error', 'as-needed'], // set maximum line characters 'max-len': ['error', { code: 140, ignoreUrls: true, ignoreTemplateLiterals: true, ignoreTrailingComments: true, }], complexity: ['error', 32], quotes: ['error', 'single', { avoidEscape: true, allowTemplateLiterals: true, }], 'no-console': 'off', 'comma-dangle': ['error', { arrays: 'always-multiline', objects: 'always-multiline', imports: 'always-multiline', exports: 'always-multiline', functions: 'only-multiline', }], // allow debugger during development 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', 'no-return-assign': 'off', 'no-unused-vars': 'error', 'no-empty': 'error', 'array-bracket-spacing': ['error', 'never'], 'object-curly-spacing': ['error', 'always'], 'space-before-function-paren': [ 'error', { anonymous: 'always', named: 'always', asyncArrow: 'always', }, ], 'no-return-await': 'warn', 'object-shorthand': ['error', 'always'], 'no-extra-semi': 'error', 'prefer-const': ['error', { destructuring: 'all', ignoreReadBeforeAssign: true, }], 'no-prototype-builtins': 'off', 'no-void': 'off', 'no-case-declarations': 'off', indent: ['error', 2, { ...require('eslint-config-standard').rules.indent[2], flatTernaryExpressions: true, offsetTernaryExpressions: false, }], 'sort-imports': ['warn', { ignoreDeclarationSort: true, ignoreCase: true, }], 'multiline-ternary': 'off', 'no-implicit-coercion': ['error', { boolean: false }], 'sonarjs/cognitive-complexity': 'off', 'sonarjs/no-duplicate-string': 'off', // Not in override, these apply to non-.vue files too 'vue/require-default-prop': 'off', 'vue/require-prop-types': 'off', 'vue/one-component-per-file': 'off', 'vue/custom-event-name-casing': ['error', 'camelCase', { ignores: ['/^[a-z]+(?:-[a-z]+)*:[a-z]+(?:-[a-z]+)*$/u'] }], 'vue/multi-word-component-names': 'off', 'vue/attributes-order': ['error', { order: [ 'DEFINITION', 'LIST_RENDERING', 'CONDITIONALS', 'RENDER_MODIFIERS', 'UNIQUE', 'GLOBAL', 'SLOT', 'TWO_WAY_BINDING', 'ATTR_DYNAMIC', 'ATTR_STATIC', 'ATTR_SHORTHAND_BOOL', 'OTHER_DIRECTIVES', 'EVENTS', 'CONTENT', ], alphabetical: true, }], }, overrides: [ { files: '**/*.vue', rules: { indent: 'off', 'vue/script-indent': ['error', 2, { baseIndent: 1, switchCase: 1, ignores: [], }], 'vue/html-closing-bracket-newline': ['error', { singleline: 'never', multiline: 'always', }], 'vue/html-closing-bracket-spacing': 'error', 'vue/max-attributes-per-line': ['error', { singleline: 5, multiline: 1, }], 'vue/valid-v-on': 'off', // This rule doesn't allow empty event listeners 'vue/no-v-html': 'off', 'vue/singleline-html-element-content-newline': 'off', 'vue/multiline-html-element-content-newline': 'off', 'vue/valid-v-slot': ['error', { allowModifiers: true }], /* TODO: this really should be enabled, we just do it so much I didn't have time to fix them all */ 'vue/no-v-text-v-html-on-component': 'off', }, }, { files: ['**/*.ts', '**/*.tsx'], parser: '@typescript-eslint/parser', rules: { // Can't overload function exports with this enabled 'import/export': 'off', // False positives on types 'no-undef': 'off', quotes: 'off', '@stylistic/ts/quotes': ['error', 'single', { avoidEscape: true, allowTemplateLiterals: true, }], indent: 'off', '@stylistic/ts/indent': ['error', 2, { ...require('eslint-config-standard').rules.indent[2], ignoredNodes: [...require('eslint-config-standard').rules.indent[2].ignoredNodes, 'TSTypeParameterInstantiation'], flatTernaryExpressions: true, offsetTernaryExpressions: false, }], 'func-call-spacing': 'off', '@stylistic/ts/func-call-spacing': require('eslint-config-standard').rules['func-call-spacing'], // Handled by tsc 'no-redeclare': 'off', 'no-use-before-define': 'off', '@typescript-eslint/no-use-before-define': ['error', 'nofunc'], 'no-useless-constructor': 'off', '@typescript-eslint/no-useless-constructor': ['error'], // Enabled in tsconfig 'no-unused-vars': 'off', '@stylistic/ts/member-delimiter-style': ['error', { multiline: { delimiter: 'none', }, singleline: { delimiter: 'comma', }, }], '@stylistic/ts/type-annotation-spacing': 'error', '@typescript-eslint/prefer-namespace-keyword': 'error', '@typescript-eslint/adjacent-overload-signatures': 'error', // '@typescript-eslint/ban-types': 'error', '@typescript-eslint/member-ordering': 'error', '@typescript-eslint/no-inferrable-types': 'error', '@typescript-eslint/unified-signatures': 'error', '@typescript-eslint/no-invalid-this': 'error', '@typescript-eslint/consistent-type-imports': ['error', { prefer: 'type-imports', fixStyle: 'separate-type-imports', }], 'import/consistent-type-specifier-style': ['error', 'prefer-top-level'], 'import/no-duplicates': ['error', { 'prefer-inline': false }], '@typescript-eslint/no-non-null-asserted-optional-chain': 'error', '@typescript-eslint/no-unnecessary-boolean-literal-compare': 'error', // '@typescript-eslint/no-unnecessary-condition': 'error', '@typescript-eslint/prefer-includes': 'error', // '@typescript-eslint/prefer-nullish-coalescing': 'warn', // '@typescript-eslint/prefer-optional-chain': 'warn', '@typescript-eslint/prefer-string-starts-ends-with': 'error', '@typescript-eslint/prefer-ts-expect-error': 'warn', '@typescript-eslint/restrict-plus-operands': 'error', '@typescript-eslint/no-wrapper-object-types': 'error', }, }, { files: '**/*.tsx', rules: { 'jsx-quotes': 'error', 'react/jsx-boolean-value': 'error', 'react/jsx-closing-bracket-location': ['error', 'line-aligned'], 'react/jsx-curly-brace-presence': 'error', // https://github.com/yannickcr/eslint-plugin-react/issues/2415 // 'react/jsx-curly-spacing': ['error', { when: 'always', spacing: { objectLiterals: 'never' } }], 'local-rules/jsx-condition-key': 'error', 'local-rules/jsx-curly-spacing': ['error', { when: 'always', spacing: { objectLiterals: 'never', arrayLiterals: 'never', multilineClose: 'never', }, children: true, }], 'local-rules/jsx-prop-casing': 'error', 'react/jsx-equals-spacing': 'error', 'react/jsx-first-prop-new-line': 'error', 'react/jsx-max-props-per-line': ['error', { when: 'multiline' }], 'react/jsx-no-comment-textnodes': 'error', 'react/jsx-tag-spacing': 'error', 'react/jsx-wrap-multilines': ['error', { declaration: 'parens-new-line', assignment: 'parens-new-line', return: 'parens-new-line', arrow: 'parens-new-line', condition: 'parens-new-line', logical: 'parens-new-line', }], }, }, { files: '**/*.d.ts', rules: { 'import/no-duplicates': 'off', }, }, { files: '**/*.json', parser: '@typescript-eslint/parser', extends: ['plugin:@typescript-eslint/disable-type-checked'], rules: { quotes: ['error', 'double'], 'comma-dangle': ['error', 'never'], 'quote-props': ['error', 'always'], 'max-len': 'off', 'no-unused-expressions': 'off', 'no-template-curly-in-string': 'off', }, }, ], } ================================================ FILE: .gitattributes ================================================ * text=auto eol=lf ================================================ FILE: .github/.git_commit_msg.txt ================================================ # ------------------------ >8 ------------------------ # |<---- Using a Maximum Of 50 Characters ---->| Hard limit to 72 -->| # : # # # # fixes # # # ---------------------------------------------------- # # can be # feat (new feature) # fix (bug fix) # docs (documentation only) # refactor (refactoring production code) # style (formatting, missing semicolons, etc. no code change) # test (adding or refactoring tests; no production code change) # chore (updating npm scripts etc. no production code change) # revert (revert a commit # must be the reverted commit's title # must contain "This reverts commit .") # # Remember to # Not capitalize the subject line # Use the imperative mood in the subject line # Do not end the subject line with a period # Separate subject from body with a blank line (comments don't count) # Use the body to explain what and why vs. how # # If you can't summarize your changes in a single line, they should # probably be split into multiple commits ================================================ FILE: .github/CONTRIBUTING.md ================================================ # Vuetify Contributing Guide Thank you for your interest in improving Vuetify! Please review these guidelines to ensure a smooth contribution process. ## Important Information - Detailed instructions for [Contributing to Vuetify](https://vuetifyjs.com/getting-started/contributing/) are available in the documentation. - For general questions, join [our Discord Community](https://community.vuetifyjs.com/). ## Reporting Issues - Issues **must** be created using or they will be closed immediately. - The issue list is **exclusively** for bug reports and feature requests. - Search for existing issues before submitting a new one. - Ensure the issue is reproducible with the [latest version](https://github.com/vuetifyjs/vuetify/releases/latest). - Provide a **minimal** and **concise** reproduction using [Vuetify Play](https://play.vuetifyjs.com/) or a public repository with: - An initial commit showing the working state. - A subsequent commit triggering the issue. - Include clear reproduction steps (actions another developer can follow after opening your link). - Avoid comments like "+1" or "me too!" without additional details—use the :+1: button instead. ## Pull Requests - Work on a new branch in your fork (e.g., `fix/1234-some-issue`), not `dev` or `master`. - Submit bug fixes to the `master` branch; new features or breaking changes to the `dev` branch. - Use a descriptive title (max 64 characters) for the PR—it will become the commit message. - Include examples of the problem and proposed solution, ideally referencing an existing issue (e.g., `Fixes #1234`). - Follow [commit guidelines](#commit-guidelines) for all changes. ## Local Development Setup 1. **Prerequisites:** - Git (>v2.20) - Node.js (LTS) - [pnpm](https://pnpm.io/) - Additional tools may be needed for [node-gyp](https://github.com/nodejs/node-gyp#installation) on Windows. 1. **Clone and Install:** ```bash git clone https://github.com/vuetifyjs/vuetify.git cd vuetify pnpm i pnpm build vuetify pnpm build api ``` 1. **Development:** - Run `pnpm dev` from the root to start a dev server at `localhost:8090` with `packages/vuetify/dev/Playground.vue`. - Test changes in `Playground.vue` and include its contents in your PR. - For documentation, run `pnpm dev docs` (after building Vuetify with `pnpm build:lib`) at `localhost:8095`. 1. **Submitting Changes:** - Fork the repository and add your fork as a remote: ```bash git remote add fork https://github.com/YOUR_USERNAME/vuetify.git ``` - Choose the correct base branch: - Bug fixes/Documentation: `master` - New features: `dev` - Push your branch and open a PR. ## Commit Guidelines Follow the [conventional-changelog](https://github.com/conventional-changelog/conventional-changelog) standard: - Format: `(scope): ` (e.g., `fix(VSelect): resolve dropdown bug`) or `: ` (e.g., `docs: update contributing guide`). - Subject: Max 60 characters, imperative mood (e.g., "fix", not "fixed"). - Body: Reference issues (e.g., `resolves #1234`), wrap at 72 characters, explain "what" and "why" (not "how"). - Types: `feat`, `fix`, `docs`, `style`, `refactor`, `perf`, `test`, `chore`, `revert`. ================================================ FILE: .github/FUNDING.yml ================================================ # These are supported funding model platforms github: [johnleider, KaelWD, MajesticPotatoe] open_collective: vuetify ko_fi: # Replace with a single Ko-fi username tidelift: npm/vuetify custom: # Replace with a single custom sponsorship URL ================================================ FILE: .github/ISSUE_TEMPLATE/config.yml ================================================ blank_issues_enabled: false contact_links: - name: Vuetify Issue Creator url: https://issues.vuetifyjs.com about: Create Vuetify issues here. ================================================ FILE: .github/PULL_REQUEST_TEMPLATE.md ================================================ ## Description ## Markup: ```vue ``` ================================================ FILE: .github/actions/download-locales/action.yml ================================================ name: Download translations description: Download translations from Crowdin inputs: crowdin-branch: description: 'Crowdin branch name' required: false default: 'v4' runs: using: composite steps: - id: get-date run: | echo "date=$(/bin/date -u "+%Y%m%d")" >> $GITHUB_OUTPUT shell: bash - uses: actions/cache@v4 id: cache-crowdin with: key: crowdin-${{ inputs.crowdin-branch }}-${{ steps.get-date.outputs.date }} path: |- packages/api-generator/src/locale/**/*.json !packages/api-generator/src/locale/en/**/*.json packages/docs/src/pages/**/*.md !packages/docs/src/pages/en/**/*.md packages/docs/src/i18n/messages/*.json !packages/docs/src/i18n/messages/en.json - name: Download eo-UY if: ${{ steps.cache-crowdin.outputs.cache-hit != 'true' }} uses: crowdin/github-action@v2.7.1 with: download_language: eo config: crowdin.yml upload_sources: false download_translations: true push_translations: false export_only_approved: false crowdin_branch_name: ${{ inputs.crowdin-branch }} - name: Download es-MX if: ${{ steps.cache-crowdin.outputs.cache-hit != 'true' }} uses: crowdin/github-action@v2.7.1 with: download_language: es-MX config: crowdin.yml upload_sources: false download_translations: true push_translations: false export_only_approved: false crowdin_branch_name: ${{ inputs.crowdin-branch }} - name: Download ja-JP if: ${{ steps.cache-crowdin.outputs.cache-hit != 'true' }} uses: crowdin/github-action@v2.7.1 with: download_language: ja config: crowdin.yml upload_sources: false download_translations: true push_translations: false export_only_approved: false crowdin_branch_name: ${{ inputs.crowdin-branch }} - name: Download zh-CN if: ${{ steps.cache-crowdin.outputs.cache-hit != 'true' }} uses: crowdin/github-action@v2.7.1 with: download_language: zh-CN config: crowdin.yml upload_sources: false download_translations: true push_translations: false export_only_approved: false crowdin_branch_name: ${{ inputs.crowdin-branch }} ================================================ FILE: .github/actions/nightly-release/action.yml ================================================ name: Nightly Release description: Automatically release nightly builds inputs: checkout-repo: description: 'Repository to checkout' required: true checkout-ref: description: 'Ref to checkout' required: true release-id: description: 'Release ID' required: true npm-tag: description: 'NPM tag' required: true outputs: full-version: description: 'Full version' value: ${{ steps.get-version.outputs.full-version }} runs: using: composite steps: - run: | git config --global user.email "actions@github.com" git config --global user.name "GitHub Actions" shell: bash - uses: actions/checkout@v4 with: repository: ${{ inputs.checkout-repo }} ref: ${{ inputs.checkout-ref }} fetch-depth: 0 - uses: vuetifyjs/setup-action@master - run: >- node -e " const json = require('./lerna.json'); delete json.command.publish.allowBranch; fs.writeFileSync('./lerna.json', JSON.stringify(json, null, 2))" shell: bash - id: get-version run: echo "full-version=$(node -e "console.log(require('./lerna.json').version)")-${{ inputs.release-id }}" >> $GITHUB_OUTPUT shell: bash - run: pnpm lerna version ${{ steps.get-version.outputs.full-version }} --no-push --no-commit-hooks --force-publish --yes shell: bash - run: pnpm conventional-changelog -p vuetify --outfile ./packages/vuetify/CHANGELOG.md -r 2 shell: bash - run: >- node -e "fs.writeFileSync( './package.json', JSON.stringify({ ...require('./package.json'), name: '@vuetify/nightly' }, null, 2) )" shell: bash working-directory: ./packages/vuetify - run: pnpm run --filter @vuetify/nightly build shell: bash - run: pnpm run --filter @vuetify/api-generator build shell: bash - run: npm install -g npm@latest shell: bash - name: NPM Release run: | npm publish ./packages/vuetify --tag ${{ inputs.npm-tag }} --access public shell: bash env: NPM_API_KEY: ${{ inputs.npm-token }} ================================================ FILE: .github/issue-close-app.yml ================================================ comment: "Please only create issues with the provided [issue creator](https://issues.vuetifyjs.com). In the boilerplate for creating an issue, it explains that any ticket made without this will be automatically closed. For general questions, please join [the Discord chat room](https://community.vuetifyjs.com). You can also check [reddit](https://www.reddit.com/r/vuetifyjs/) or [stackoverflow](https://stackoverflow.com/questions/tagged/vuetify.js). Thank you." issueConfigs: - content: - "" - content: - "" label: "invalid" exception: - "johnleider" - "KaelWD" - "MajesticPotatoe" ================================================ FILE: .github/lock.yml ================================================ daysUntilLock: 365 lockComment: false pulls: daysUntilLock: 30 exemptLabels: ['S: on hold', 'S: work in progress'] ================================================ FILE: .github/semantic.yml ================================================ titleOnly: true ================================================ FILE: .github/sponsors.yml ================================================ - label: 'P: sponsor' members: - label: 'P: elite sponsor' members: ================================================ FILE: .github/workflows/ci.yml ================================================ name: CI on: [push, pull_request] concurrency: group: ci-${{ github.ref }} cancel-in-progress: true env: CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }} CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }} jobs: pre_job: runs-on: ubuntu-24.04 outputs: should_skip: ${{ steps.skip_check.outputs.should_skip }} steps: - id: skip_check if: ${{ !startsWith(github.ref, 'refs/tags/v') && github.ref_name != 'master' }} uses: fkirc/skip-duplicate-actions@master with: skip_after_successful_duplicate: 'true' concurrent_skipping: same_content do_not_skip: '["pull_request", "workflow_dispatch", "schedule"]' build-vuetify: name: Build vuetify needs: pre_job if: needs.pre_job.outputs.should_skip != 'true' runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 - uses: vuetifyjs/setup-action@master - run: pnpm build vuetify - uses: actions/upload-artifact@v4 with: name: vuetify-dist path: | packages/vuetify/dist packages/vuetify/lib lint: name: Lint needs: [pre_job, build-vuetify] if: needs.pre_job.outputs.should_skip != 'true' runs-on: ubuntu-24.04 strategy: fail-fast: false matrix: scopes: ['--filter vuetify --filter @vuetify/api-generator', '--filter vuetifyjs.com'] steps: - uses: actions/checkout@v4 - uses: actions/download-artifact@v4 with: name: vuetify-dist path: packages/vuetify - uses: vuetifyjs/setup-action@master - run: pnpm run $SCOPES lint env: SCOPES: ${{ matrix.scopes }} test: name: Test needs: pre_job if: needs.pre_job.outputs.should_skip != 'true' runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 - uses: actions/cache@v4 with: path: ~/.cache/ms-playwright key: ${{ runner.os }}-playwright-${{ hashFiles('./pnpm-lock.yaml') }} - uses: vuetifyjs/setup-action@master - run: pnpm exec playwright install chromium - run: pnpm run test working-directory: ./packages/vuetify - uses: actions/upload-artifact@v4 if: failure() with: name: Test screenshots path: packages/vuetify/test/__screenshots__ if-no-files-found: ignore overwrite: true deploy: needs: [lint, test, build-vuetify] runs-on: ubuntu-24.04 if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') && github.repository_owner == 'vuetifyjs' environment: production permissions: contents: write id-token: write steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - uses: actions/download-artifact@v4 with: name: vuetify-dist path: packages/vuetify - uses: vuetifyjs/setup-action@master - run: pnpm build api - run: npm install -g npm@latest - name: NPM Release run: | npm publish ./packages/vuetify --tag $(node ./scripts/parse-npm-tag.js $GITHUB_REF_NAME) - name: GitHub release id: create_release run: pnpm conventional-github-releaser -p vuetify env: DEBUG: '*' CONVENTIONAL_GITHUB_RELEASER_TOKEN: ${{ secrets.GITHUB_TOKEN }} build-docs: name: Build docs needs: [pre_job, build-vuetify] if: > needs.pre_job.outputs.should_skip != 'true' && github.event_name == 'push' && github.repository_owner == 'vuetifyjs' && contains(toJSON('["master", "dev", "next"]'), github.ref_name) runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 - uses: actions/download-artifact@v4 with: name: vuetify-dist path: packages/vuetify - uses: vuetifyjs/setup-action@master - uses: ./.github/actions/download-locales - run: pnpm build api - run: pnpm build docs env: NODE_OPTIONS: --max-old-space-size=10240 VITE_COSMIC_2_BUCKET_SLUG: ${{ secrets.COSMIC_2_BUCKET_SLUG }} VITE_COSMIC_2_BUCKET_READ_KEY: ${{ secrets.COSMIC_2_BUCKET_READ_KEY }} VITE_COSMIC_BUCKET_SLUG: ${{ secrets.COSMIC_BUCKET_SLUG }} VITE_COSMIC_BUCKET_READ_KEY: ${{ secrets.COSMIC_BUCKET_READ_KEY }} VITE_COSMIC_BUCKET_SLUG_STORE: ${{ secrets.COSMIC_BUCKET_SLUG_STORE }} VITE_COSMIC_BUCKET_READ_KEY_STORE: ${{ secrets.COSMIC_BUCKET_READ_KEY_STORE }} VITE_EMAILJS_PUBLIC_KEY: ${{ secrets.EMAILJS_PUBLIC_KEY }} VITE_EMAILJS_SERVICE_ID: ${{ secrets.EMAILJS_SERVICE_ID }} VITE_EMAILJS_TEMPLATE_ID: ${{ secrets.EMAILJS_TEMPLATE_ID }} VITE_API_SERVER_URL: ${{ secrets.API_SERVER_URL }} VITE_GITHUB_SHA: ${{ github.sha }} VITE_GITHUB_REF: ${{ github.ref_name }} - uses: actions/upload-artifact@v4 with: name: docs-dist path: packages/docs/dist publish-docs: needs: [lint, test, build-docs] runs-on: ubuntu-24.04 environment: ${{ github.ref_name }} steps: - uses: actions/checkout@v4 - uses: actions/download-artifact@v4 with: name: docs-dist path: packages/docs/dist - uses: vuetifyjs/coolify-action@master with: token: ${{ secrets.GITHUB_TOKEN }} imageName: docs coolifyWebhook: ${{ secrets.COOLIFY_WEBHOOK }} coolifySecret: ${{ secrets.COOLIFY_TOKEN }} ================================================ FILE: .github/workflows/close-issue.yml ================================================ name: Close issues on: push: branches: - dev - next - v3-stable - v2-stable - v2-dev env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} jobs: close: runs-on: ubuntu-24.04 if: github.repository_owner == 'vuetifyjs' steps: - uses: vuetifyjs/close-action@master with: token: ${{ secrets.GITHUB_TOKEN }} ================================================ FILE: .github/workflows/crowdin-uploads.yml ================================================ name: Crowdin Uploads concurrency: group: crowdin-${{ github.ref }} cancel-in-progress: true on: push: branches: - 'master' paths: - 'packages/api-generator/src/locale/en/**' - 'packages/docs/src/i18n/messages/en.json' - 'packages/docs/src/pages/en/**' - '.github/workflows/**' env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }} CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }} CROWDIN_BRANCH: v4 jobs: upload-to-crowdin: runs-on: ubuntu-24.04 steps: - name: Checkout uses: actions/checkout@v4 - name: Upload uses: crowdin/github-action@v2.7.1 with: config: crowdin.yml crowdin_branch_name: ${{ env.CROWDIN_BRANCH }} ================================================ FILE: .github/workflows/nightly.yml ================================================ name: Nightly Release on: schedule: - cron: '0 12 * * *' # 1200 UTC workflow_dispatch: inputs: pr: description: 'Pull Request number' required: false type: string jobs: nightly-schedule: runs-on: ubuntu-24.04 if: ${{ github.event_name == 'schedule' && github.repository_owner == 'vuetifyjs' }} environment: preview permissions: contents: read id-token: write strategy: max-parallel: 1 fail-fast: false matrix: branch: [ 'master', 'dev', 'next', 'v3-stable', 'v2-stable', 'v2-dev' ] include: - branch: 'master' tag: 'latest' - branch: 'dev' tag: 'dev' - branch: 'next' tag: 'next' - branch: 'v3-stable' tag: 'v3-stable' - branch: 'v2-stable' tag: 'v2-stable' - branch: 'v2-dev' tag: 'v2-dev' steps: - uses: actions/checkout@v4 with: ref: ${{ matrix.branch }} fetch-depth: 0 - run: | last=$(git show -s --format=%ct HEAD) now=$(date +%s) diff=$(($now - $last)) if [ $diff -gt 86400 ]; then echo "Last commit was more than 24 hours ago, skipping release" exit 1 fi - run: echo "RELEASE_ID=$(date +'%Y-%m-%d')" >> $GITHUB_ENV - uses: ./.github/actions/nightly-release with: checkout-repo: ${{ github.repository }} checkout-ref: ${{ matrix.branch }} release-id: ${{ matrix.branch }}.${{ env.RELEASE_ID }} npm-tag: ${{ matrix.tag }} - uses: actions/checkout@v4 nightly-pr: runs-on: ubuntu-24.04 if: ${{ github.event_name == 'workflow_dispatch' && github.repository_owner == 'vuetifyjs' }} environment: preview permissions: contents: read id-token: write pull-requests: write steps: - uses: actions/checkout@v4 - uses: actions/github-script@v7 with: script: | const pr = await github.rest.pulls.get({ owner: context.repo.owner, repo: context.repo.repo, pull_number: ${{ github.event.inputs.pr }} }) core.exportVariable('CHECKOUT_REPO', pr.data.head.repo.full_name) core.exportVariable('CHECKOUT_REF', pr.data.head.ref) core.exportVariable('SHORT_SHA', pr.data.head.sha.slice(0, 7)) - id: nightly-release uses: ./.github/actions/nightly-release with: checkout-repo: ${{ env.CHECKOUT_REPO }} checkout-ref: ${{ env.CHECKOUT_REF }} release-id: pr-${{ github.event.inputs.pr }}.${{ env.SHORT_SHA }} npm-tag: pr - uses: actions/github-script@v7 with: script: | const fullVersion = process.env.FULL_VERSION const pr = await github.rest.issues.createComment({ owner: context.repo.owner, repo: context.repo.repo, issue_number: ${{ github.event.inputs.pr }}, body: `:rocket: Nightly release published to [@vuetify/nightly@${fullVersion}](https://www.npmjs.com/package/@vuetify/nightly/v/${fullVersion}).` }) env: FULL_VERSION: ${{ steps.nightly-release.outputs.full-version }} vizzly: name: Visual regression tests runs-on: ubuntu-24.04 if: ${{ github.event_name == 'schedule' && github.repository_owner == 'vuetifyjs' }} steps: - uses: actions/checkout@v4 with: ref: master fetch-depth: 0 - run: | last=$(git show -s --format=%ct HEAD) now=$(date +%s) diff=$(($now - $last)) if [ $diff -gt 86400 ]; then echo "Last commit was more than 24 hours ago, skipping tests" exit 1 fi - uses: vuetifyjs/setup-action@master - run: pnpm exec playwright install chromium - run: pnpm vizzly run "pnpm test:browser" working-directory: ./packages/vuetify env: VIZZLY_TOKEN: ${{ secrets.VIZZLY_TOKEN }} TEST_TDD_ONLY: 1 ================================================ FILE: .github/workflows/stale.yml ================================================ name: 'Close stale issues' on: workflow_dispatch: schedule: - cron: '08 11 * * *' jobs: stale: runs-on: ubuntu-24.04 steps: - uses: actions/stale@v9 with: days-before-stale: 180 days-before-close: 14 only-labels: 'S: triage' stale-issue-label: 'S: stale' stale-pr-label: 'S: stale' exempt-all-milestones: true exempt-draft-pr: true ================================================ FILE: .github/workflows/triage.yml ================================================ name: Issue triage on: issues: types: [opened, labeled, unlabeled, closed] jobs: triage: runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 - uses: vuetifyjs/triage-action@master with: token: ${{ secrets.GITHUB_TOKEN }} triageLabel: 'S: triage' staleLabel: 'S: stale' sponsorsFile: '.github/sponsors.yml' duplicateLabel: 'duplicate' triagedLabels: |- T: documentation T: bug T: enhancement T: feature T: question Epic Task duplicate layer 8 issue invalid wontfix working as intended ================================================ FILE: .gitignore ================================================ .DS_Store node_modules/ .env .knit knit.lock # IDE user config .vscode/ .idea/ .vs/ # Logs yarn-error.log npm-debug.log lerna-debug.log # Istanbul coverage coverage/ # cypress cypress/screenshots cypress/videos # vitest __screenshots__/ .vercel .now ================================================ FILE: .husky/commit-msg ================================================ node scripts/lint-commit-message.js $1 ================================================ FILE: .husky/pre-commit ================================================ node scripts/warn-npm-install.js ================================================ FILE: .husky/prepare-commit-msg ================================================ node scripts/prepare-commit-message.js $1 $2 ================================================ FILE: .nvmrc ================================================ 24.11.1 ================================================ FILE: CODE_OF_CONDUCT.md ================================================ # Contributor Covenant Code of Conduct ## Our Pledge In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. ## Our Standards Examples of behavior that contributes to creating a positive environment include: * Using welcoming and inclusive language * Being respectful of differing viewpoints and experiences * Gracefully accepting constructive criticism * Focusing on what is best for the community * Showing empathy towards other community members Examples of unacceptable behavior by participants include: * The use of sexualized language or imagery and unwelcome sexual attention or advances * Trolling, insulting/derogatory comments, and personal or political attacks * Public or private harassment * Publishing others' private information, such as a physical or electronic address, without explicit permission * Other conduct which could reasonably be considered inappropriate in a professional setting ## Our Responsibilities Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. ## Scope This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. ## Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at hello@vuetifyjs.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. ## Attribution This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [https://contributor-covenant.org/version/1/4][version] [homepage]: https://contributor-covenant.org [version]: https://contributor-covenant.org/version/1/4/ ================================================ FILE: Dockerfile ================================================ FROM caddy:2.10.2-alpine COPY ./packages/docs/dist /srv COPY ./packages/docs/build/Caddyfile /etc/caddy/Caddyfile ================================================ FILE: SECURITY.md ================================================ # Security Disclosure Procedures This document outlines security procedures and general policies for the Vuetify project. * [Reporting a Bug](#reporting-a-bug) * [Disclosure Policy](#disclosure-policy) * [Comments on this Policy](#comments-on-this-policy) ## Reporting a Bug The Vuetify team and community take all security bugs in Vuetify seriously. We appreciate your efforts and responsible disclosure and will make every effort to acknowledge your contributions. To report a security issue, email [security@vuetifyjs.com](mailto:security@vuetifyjs.com?subject=SECURITY) and include the word **"SECURITY"** in the subject line. The Vuetify team will send a response indicating the next steps in handling your report. After the initial reply to your report, the security team will keep you informed of the progress towards a fix and full announcement, and may ask for additional information or guidance. Report security bugs in third-party modules to the person or team maintaining the module. You can also report a vulnerability through the [Node Security Project](https://nodesecurity.io/report). ## Disclosure Policy When the security team receives a security bug report, they will assign it to a primary handler. This person will coordinate the fix and release process, involving the following steps: * Confirm the problem and determine the affected versions. * Audit code to find any potential similar problems. * Prepare fixes for all releases still under maintenance. These fixes will be released as fast as possible to npm. ## Comments on this Policy If you have suggestions on how this process could be improved please submit a pull request using the [issue creator](https://issues.vuetifyjs.com). ================================================ FILE: crowdin.yml ================================================ project_id_env: CROWDIN_PROJECT_ID api_token_env: CROWDIN_PERSONAL_TOKEN project_identifier: vuetify preserve_hierarchy: true files: - source: packages/api-generator/src/locale/en/**/*.json translation: packages/api-generator/src/locale/%locale%/**/%original_file_name% - source: packages/docs/src/pages/en/**/*.md translation: packages/docs/src/pages/%locale%/**/%original_file_name% - source: packages/docs/src/i18n/messages/en.json translation: packages/docs/src/i18n/messages/%locale%.json ================================================ FILE: docker-compose.yml ================================================ services: docs: image: caddy:alpine ports: - ${PORT:-8095}:80 volumes: - ./packages/docs/dist:/srv - ./packages/docs/build/Caddyfile:/etc/caddy/Caddyfile ================================================ FILE: eslint-local-rules.cjs ================================================ 'use strict' const path = require('node:path') const glob = require('glob') module.exports = Object.fromEntries( glob.sync('./scripts/rules/*', { cwd: __dirname, dotRelative: true }).map(name => { const modulePath = path.resolve(__dirname, name) const module = require(modulePath) return [path.parse(name).name, module.default || module] }) ) ================================================ FILE: jest.config.cjs ================================================ module.exports = { verbose: false, testEnvironment: 'jsdom', testEnvironmentOptions: { customExportConditions: ['node', 'node-addons'], }, roots: [ '/src', ], setupFilesAfterEnv: [ '/test/index.ts', ], moduleFileExtensions: [ 'tsx', 'ts', 'js', ], moduleDirectories: [ 'node_modules', ], moduleNameMapper: { '^@/test$': '/test/index.js', '^@/test/(.*)$': '/test/$1', '^@/(.*)$': '/src/$1', '\\.(css|sass|scss)$': 'identity-obj-proxy', }, transform: { '.*\\.(j|t)sx?$': 'babel-jest', }, collectCoverageFrom: [ 'src/**/*.{js,ts,tsx}', '!**/*.d.ts', ], transformIgnorePatterns: [ 'node_modules/(?!vue-router)', ], snapshotSerializers: [ 'jest-serializer-html', ], testMatch: [ // Default '**/test/**/*.js', '**/__tests__/**/*.spec.js', '**/__tests__/**/*.spec.ts', '**/__tests__/**/*.spec.tsx', ], } ================================================ FILE: lerna.json ================================================ { "command": { "publish": { "allowBranch": [ "master", "dev", "next" ], "message": "chore(release): publish %s" }, "version": { "push": true } }, "npmClient": "pnpm", "version": "4.0.3" } ================================================ FILE: package.json ================================================ { "name": "@vuetify/vuetify-root", "type": "module", "private": true, "repository": { "type": "git", "url": "git+https://github.com/vuetifyjs/vuetify.git" }, "scripts": { "dev": "node scripts/dev.js", "build": "node scripts/build.js", "lint": "pnpm run -r --parallel --stream lint", "lint:fix": "pnpm run -r --parallel lint:fix", "version": "node scripts/confirm-npm-tag.js", "prepare": "husky; node scripts/post-install.js; $CI || pnpm exec playwright install chromium", "postversion": "node scripts/post-release-merge.js", "clean": "pnpm -r exec rm -r node_modules && rm -r node_modules", "changelog": "conventional-changelog -u -p vuetify", "all-checks": "pnpm run -r --stream build && pnpm run lint && pnpm run -r test", "vue-ecosystem-ci:build": "pnpm --filter vuetify run build", "vue-ecosystem-ci:test": "pnpm --filter vuetify run lint && pnpm --filter vuetify run test" }, "engines": { "node": ">=24.11.1" }, "devDependencies": { "@babel/cli": "^7.28.3", "@babel/core": "^7.28.5", "@babel/preset-env": "^7.28.5", "@babel/preset-typescript": "^7.28.5", "@lerna-lite/cli": "^4.9.3", "@lerna-lite/version": "^4.9.3", "@mdi/font": "7.4.47", "@mdi/js": "7.4.47", "@mdi/svg": "7.4.47", "@octokit/core": "^6.1.5", "@rollup/plugin-terser": "^0.4.4", "@stylistic/eslint-plugin-ts": "^3.1.0", "@types/lodash-es": "^4.17.12", "@types/node": "24.10.1", "@types/yargs": "^17.0.35", "@typescript-eslint/eslint-plugin": "^8.32.0", "@typescript-eslint/parser": "^8.32.0", "@typescript/native-preview": "7.0.0-dev.20250912.1", "@unhead/vue": "^2.0.19", "@vitejs/plugin-vue": "^6.0.2", "@vue/compiler-sfc": "^3.5.25", "@vue/language-server": "^3.1.5", "@vue/runtime-core": "^3.5.25", "@vue/runtime-dom": "^3.5.25", "@vuetify/github-releaser": "^4.0.3", "@vueuse/head": "^1.3.1", "concurrently": "^9.2.1", "conventional-changelog-cli": "^5.0.0", "conventional-changelog-vuetify": "^2.0.2", "cross-spawn": "^7.0.6", "eslint": "^8.57.0", "eslint-config-standard": "^17.1.0", "eslint-formatter-codeframe": "^7.32.2", "eslint-plugin-import": "^2.32.0", "eslint-plugin-local-rules": "^2.0.1", "eslint-plugin-n": "^16.6.2", "eslint-plugin-promise": "^6.6.0", "eslint-plugin-react": "^7.37.5", "eslint-plugin-sonarjs": "^0.25.1", "eslint-plugin-vue": "^10.6.0", "eslint-plugin-vuetify": "^2.5.3", "glob": "^11.1.0", "husky": "^9.1.7", "inquirer": "^12.6.0", "lodash-es": "^4.17.21", "magic-string": "^0.30.21", "mkdirp": "^3.0.1", "moment": "^2.30.1", "rimraf": "^6.1.2", "rollup": "^4.53.3", "rollup-plugin-dts": "^6.2.3", "rollup-plugin-sass": "^1.15.3", "rollup-plugin-sourcemaps": "^0.6.3", "sass": "1.93.3", "sass-embedded": "1.93.3", "semver": "^7.7.3", "shelljs": "^0.10.0", "stringify-object": "^5.0.0", "typescript": "~5.8.3", "upath": "^2.0.1", "vite": "^7.2.4", "vite-plugin-inspect": "11.3.3", "vue": "^3.5.25", "vue-eslint-parser": "^10.2.0", "vue-tsc": "^3.1.5", "vuetify": "workspace:*", "yargs": "^17.7.2" }, "packageManager": "pnpm@10.26.1" } ================================================ FILE: packages/README.md ================================================

These are the packages for the Vuetify monorepo.

## Packages for the Vuetify 1. **api-generator** - generates api for Vuetify docs and other resources. 2. **docs** - Vuetify documentation 3. **vuetify** - main source code for Vuetify ================================================ FILE: packages/api-generator/.gitignore ================================================ /dist/ /lib/ /src/locale/* /templates/tmp/ !/src/locale/en ================================================ FILE: packages/api-generator/package.json ================================================ { "name": "@vuetify/api-generator", "type": "module", "version": "4.0.3", "private": true, "description": "", "scripts": { "build": "node src/index.ts", "lint": "eslint --ext .ts,.json src -f codeframe --max-warnings 0", "lint:fix": "pnpm lint --fix" }, "author": "", "license": "ISC", "dependencies": { "deepmerge": "^4.3.1", "piscina": "^4.9.2", "prettier": "^3.6.2", "ts-morph": "^25.0.1", "vue": "^3.5.25", "vuetify": "workspace:*" }, "devDependencies": { "@types/stringify-object": "^4.0.5", "eslint": "^8.57.0", "stringify-object": "^5.0.0" } } ================================================ FILE: packages/api-generator/src/helpers/sass.ts ================================================ import fs from 'node:fs' function processVariableFile (filePath: string, tagUse: string | string[]) { if (fs.existsSync(filePath)) { const varFile = fs.readFileSync(filePath, 'utf8') const vars = varFile.replace(/\/\/.+[\r\n]+/g, '').split(/;[\n]*/g) const varValues: Record = {} for (const [index, variable] of vars.entries()) { const varArr = variable.split(':') if (varArr.length >= 2 && varArr[0].startsWith('$')) { const varName = varArr.shift()!.trim() const varDefault = (vars[index + 1].startsWith('@')) ? vars[index + 1] : varArr.join(':') varValues[varName] = { default: varDefault.replace('!default', '').trim(), ...{ use: tagUse === 'all' || tagUse?.includes(varName) ? 'vuetify' : 'vuetify/settings' }, } } } return varValues } return {} } export const parseSassVariables = (componentName: string) => { const rootDir = './../vuetify/src/components' return processVariableFile(`${rootDir}/${componentName}/_variables.scss`, '') } export function parseGlobalSassVariables () { return { ...processVariableFile(`./../vuetify/src/styles/settings/_variables.scss`, ['$reset', '$color-pack', '$utilities']), ...processVariableFile(`./../vuetify/src/styles/settings/_colors.scss`, 'all'), ...processVariableFile(`./../vuetify/src/styles/settings/_elevations.scss`, []), } } ================================================ FILE: packages/api-generator/src/helpers/text.ts ================================================ import { capitalize } from 'lodash-es' export { camelCase, capitalize } from 'lodash-es' export const kebabCase = (str: string) => { let kebab = '' for (let i = 0; i < str.length; i++) { const charCode = str.charCodeAt(i) if (charCode >= 65 && charCode <= 90) { kebab += `${i > 0 ? '-' : ''}${str[i].toLowerCase()}` } else { kebab += str[i] } } return kebab } export const pascalize = (str: string) => str.split('-').map(capitalize).join('') ================================================ FILE: packages/api-generator/src/index.ts ================================================ import fs from 'node:fs/promises' import path from 'upath' import { components } from 'vuetify/dist/vuetify-labs.js' import importMap from 'vuetify/dist/json/importMap.json' with { type: 'json' } import importMapLabs from 'vuetify/dist/json/importMap-labs.json' with { type: 'json' } import { kebabCase } from './helpers/text.ts' import type { ComponentData, DirectiveData } from './types.ts' import { generateComposableDataFromTypes, generateDirectiveDataFromTypes } from './types.ts' import Piscina from 'piscina' import { addDescriptions, addDirectiveDescriptions, addPropData, reportMissingDescriptions, sortByKey, stringifyProps } from './utils.ts' import * as os from 'os' import { mkdirp } from 'mkdirp' import { createVeturApi } from './vetur.ts' import { rimraf } from 'rimraf' import { createWebTypesApi } from './web-types.ts' import inspector from 'inspector' import yargs from 'yargs' import { parseGlobalSassVariables, parseSassVariables } from './helpers/sass.ts' const yar = yargs(process.argv.slice(2)) .option('components', { type: 'array', }) .option('skip-directives', { type: 'boolean', }) .option('skip-composables', { type: 'boolean', }) const reset = '\x1b[0m' const red = '\x1b[31m' const blue = '\x1b[34m' const componentsInfo: Record = { ...importMap.components, ...importMapLabs.components, } type Truthy = Exclude; const BooleanFilter = (x: T): x is Truthy => Boolean(x) function clamp (v: number, min: number, max: number) { return Math.max(min, Math.floor(Math.min(max, v))) } const run = async () => { const argv = await yar.argv const locales = await fs.readdir('./src/locale', 'utf-8') // Components const pool = new Piscina({ filename: path.resolve('./src/worker.ts'), niceIncrement: 10, maxThreads: inspector.url() ? 1 : clamp(os.freemem() / (1.1 * 1024 ** 3), 1, os.cpus().length / 2), }) const template = await fs.readFile('./templates/component.d.ts', 'utf-8') await rimraf(path.resolve('./dist')) await fs.mkdir(path.resolve('./dist')) await mkdirp('./templates/tmp') for (const component in components) { // await fs.writeFile(`./templates/tmp/${component}.d.ts`, template.replaceAll('__component__', component)) await fs.writeFile(`./templates/tmp/${component}.d.ts`, template.replaceAll('__component__', component) .replaceAll('__name__', componentsInfo[component].from) ) } const outPath = path.resolve('./dist/api') await mkdirp(outPath) const componentData = (await Promise.all( Object.entries(components).map(async ([componentName, componentInstance]) => { if (argv.components && !argv.components.includes(componentName)) return null const data = await pool.run(componentName) const componentProps = stringifyProps(componentInstance.props) const sources = addPropData(componentName, data, componentProps) await addDescriptions(componentName, data, locales, sources) const sass = sortByKey(parseSassVariables(componentName)) const component = { displayName: componentName, fileName: componentName, pathName: kebabCase(componentName), ...data, sass, } satisfies ComponentData await fs.writeFile(path.resolve(outPath, `${component.fileName}.json`), JSON.stringify(component, null, 2)) return component }) )).filter(BooleanFilter) // globalSass const globalSass = { fileName: 'globals', displayName: 'globals', pathName: 'globals', sass: sortByKey(parseGlobalSassVariables()), } await fs.writeFile(path.resolve(outPath, `globals.json`), JSON.stringify(globalSass, null, 2)) // Composables if (!argv.skipComposables) { const composables = await Promise.all((await generateComposableDataFromTypes()).map(async composable => { console.log(blue, composable.displayName, reset) await addDescriptions(composable.fileName, composable, locales) return composable })) for (const composable of composables) { await fs.writeFile( path.resolve(outPath, `${composable.fileName}.json`), JSON.stringify(composable, null, 2) ) } } // Directives let directives: DirectiveData[] = [] if (!argv.skipDirectives) { directives = await Promise.all((await generateDirectiveDataFromTypes()).map(async data => { console.log(blue, data.fileName, reset) await addDirectiveDescriptions(data.fileName, data, locales) return data })) for (const directive of directives) { await fs.writeFile( path.resolve(outPath, `${directive.fileName}.json`), JSON.stringify(directive, null, 2) ) } } reportMissingDescriptions() createVeturApi(componentData) createWebTypesApi(componentData, directives) await fs.mkdir(path.resolve('../vuetify/dist/json'), { recursive: true }) await fs.copyFile(path.resolve('./dist/tags.json'), path.resolve('../vuetify/dist/json/tags.json')) await fs.copyFile(path.resolve('./dist/attributes.json'), path.resolve('../vuetify/dist/json/attributes.json')) await fs.copyFile(path.resolve('./dist/web-types.json'), path.resolve('../vuetify/dist/json/web-types.json')) rimraf.sync(path.resolve('./templates/tmp')) } run() ================================================ FILE: packages/api-generator/src/locale/en/$vuetify.json ================================================ { "functions": { "goTo": "Scroll to target location, using provided options." } } ================================================ FILE: packages/api-generator/src/locale/en/DataIterator-items.json ================================================ { "props": { "itemSelectable": "Property on supplied `items` that contains the boolean value indicating if the item is selectable.", "itemValue": "Property on supplied `items` that contains its value.", "returnObject": "Changes the selection behavior to return the object directly rather than the value specified with **item-value**." } } ================================================ FILE: packages/api-generator/src/locale/en/DataTable-expand.json ================================================ { "props": { "expanded": "Array of expanded items. Can be bound to external variable using **v-model:expanded**.", "expandOnClick": "Expands item when the row is clicked.", "showExpand": "Shows the expand icon." }, "events": { "update:expanded": "Emits when the **expanded** items are updated." } } ================================================ FILE: packages/api-generator/src/locale/en/DataTable-group.json ================================================ { "props": { "groupBy": "Defines the grouping of the table items.", "pageBy": "Controls how pagination counts items.\n- **item** paginates by individual items,\n- **auto** paginates by top-level groups and falls back to regular items if **group-by** is empty,\n- **any** paginates by both items and groups combined" } } ================================================ FILE: packages/api-generator/src/locale/en/DataTable-header.json ================================================ { "props": { "headers": "An array of objects that each describe a header column." } } ================================================ FILE: packages/api-generator/src/locale/en/DataTable-items.json ================================================ { "props": { "itemSelectable": "Property on supplied `items` that indicates whether the item is selectable.", "itemValue": "Property on supplied `items` that contains its value.", "returnObject": "Changes the selection behavior to return the object directly rather than the value specified with **item-value**." } } ================================================ FILE: packages/api-generator/src/locale/en/DataTable-paginate.json ================================================ { "props": { "itemsPerPage": "The number of items to display on each page.", "page": "The current displayed page number (1-indexed)." } } ================================================ FILE: packages/api-generator/src/locale/en/DataTable-select.json ================================================ { "props": { "selectStrategy": "Defines the strategy of selecting items in the list. Possible values are: 'single' (only one item can be selected at a time), 'page' ('Select all' button will select only items on the current page), 'all' ('Select all' button will select all items in the list).", "showSelect": "Shows the column with checkboxes for selecting items in the list." } } ================================================ FILE: packages/api-generator/src/locale/en/DataTable-sort.json ================================================ { "props": { "customKeySort": "Function used on specific keys within the item object. `customSort` is skipped for columns with `customKeySort` specified.", "disableSort": "Toggles rendering of sort button.", "initialSortOrder": "Specifies the initial sort order when an unsorted column is clicked.", "multiSort": "Let user sort by multiple properties/columns.\n\n- **key**: (optional) when set to `ctrl`, user is required to hold a keyboard key (Ctrl on PC and Command on Mac)\n- **mode**: when user selects a new column to sort by, it will be set first (`prepend`) or last (`append`) in the sort priority. Defaults to `append`\n- **modifier**: (optional) allows user to use both multi-sort modes (`append` and `prepend`) simultaneously", "mustSort": "Forces sorting on the column(s).", "sortBy": "Array of column keys and sort orders that determines the sort order of the table." } } ================================================ FILE: packages/api-generator/src/locale/en/DataTable.json ================================================ { "props": { "hideDefaultBody": "Hides the default body.", "hideDefaultHeader": "Hides the default header.", "hideDefaultFooter": "Hides the default footer.", "search": "Text input used to filter items." } } ================================================ FILE: packages/api-generator/src/locale/en/Select.json ================================================ { "props": { "closeText": "Text set to the inputs `aria-label` and `title` when input menu is closed.", "chips": "Changes display of selections to chips.", "closableChips": "Enables the [closable](/api/v-chip/#props-closable) prop on all [v-chip](/components/chips/) components.", "hideSelected": "Do not display in the select menu items that are already selected.", "itemColor": "Sets color of selected items.", "listProps": "Pass props through to the `v-list` component. Accepts an object with anything from [v-list](/api/v-list/#props) props, camelCase keys are recommended.", "menuElevation": "Sets the elevation of the dropdown menu.", "multiple": "Changes select to multiple. Accepts array for value.", "noAutoScroll": "Prevents the select menu to scroll to the selected item automatically.", "openOnClear": "Open's the menu whenever the clear icon is clicked.", "openText": "Text set to the inputs **aria-label** and **title** when input menu is open." }, "slots": { "menu-header": "Defines a header above the items list.", "menu-footer": "Defines a footer below the items list." } } ================================================ FILE: packages/api-generator/src/locale/en/SelectionControlGroup.json ================================================ { "props": { "defaultsTarget": "The target component to provide defaults values for.", "error": "Puts the input in a manual error state.", "falseIcon": "The icon used when inactive.", "id": "Sets the DOM id on the component.", "inline": "Puts children inputs into a row.", "multiple": "Changes select to multiple. Accepts array for value.", "readonly": "Puts input in readonly state.", "trueIcon": "The icon used when active.", "type": "Provides the default type for children selection controls." } } ================================================ FILE: packages/api-generator/src/locale/en/Slider.json ================================================ { "props": { "max": "Sets the maximum allowed value.", "min": "Sets the minimum allowed value.", "noKeyboard": "**FOR INTERNAL USE ONLY** Ignore keyboard events.", "reverse": "Reverses the slider direction.", "showTicks": "Show track ticks. If `true` it shows ticks when using slider. If set to `'always'` it always shows ticks.", "step": "If greater than 0, sets step interval for ticks.", "thumbColor": "Sets the thumb and thumb label color.", "thumbLabel": "Show thumb label. If `true` it shows label when using slider. If set to `'always'` it always shows label. Use `'hover'` to show label when hovering over the thumb.", "thumbSize": "Controls the size of the thumb label.", "ticks": "Show track ticks. If `true` it shows ticks when using slider. If set to `'always'` it always shows ticks.", "tickSize": "Controls the size of **ticks**", "trackColor": "Sets the track's color", "trackFillColor": "Sets the track's fill color", "trackSize": "Sets the track's size (height)." } } ================================================ FILE: packages/api-generator/src/locale/en/Stepper.json ================================================ { "props": { "altLabels": "Places the labels beneath the step.", "editable": "Marks step as editable.", "hideActions": "Hide actions bar (prev and next buttons).", "itemProps": "Props object that will be applied to each item component. `true` will treat the original object as raw props and pass it directly to the component.", "itemTitle": "Property on supplied `items` that contains its title.", "itemValue": "Property on supplied `items` that contains its value.", "mobile": "Forces the stepper into a mobile state, removing labels from stepper items.", "nextText": "The text used for the Next button.", "prevText": "The text used for the Prev button.", "nonLinear": "Allow user to jump to any step." }, "slots": { "[`header-item.${string}`]": "Slot for customizing header items when using the [items](/api/v-stepper/#props-items) prop.", "[`item.${string}`]": "Slot for customizing the content for each step.", "actions": "Slot for customizing [v-stepper-actions](/api/v-stepper-actions/).", "header": "Slot for customizing the header.", "header-item": "Slot for customizing all header items.", "icon": "Slot for customizing all stepper item icons.", "next": "Slot for customizing the next step functionality", "prev": "Slot for customizing the prev step functionality" }, "exposed": { "next": "Move to the next step.", "prev": "Move to the prev step." } } ================================================ FILE: packages/api-generator/src/locale/en/StepperItem.json ================================================ { "props": { "complete": "Marks step as complete.", "completeIcon": "Icon to display when step is marked as completed.", "editable": "Marks step as editable.", "editIcon": "Icon to display when step is editable.", "errorIcon": "Icon to display when step has an error.", "error": "Puts the stepper item in a manual error state.", "rules": "Accepts a mixed array of types `function`, `boolean` and `string`. Functions pass an input value as an argument and must return either `true` / `false` or a `string` containing an error message. The input field will enter an error state if a function returns (or any value in the array contains) `false` or is a `string`." } } ================================================ FILE: packages/api-generator/src/locale/en/VAlert.json ================================================ { "props": { "border": "Adds a colored border to the component.", "borderColor": "Specifies the color of the border. Only used in combination with **border** prop. Accepts any color value.", "closable": "Adds a close icon that can hide the alert.", "closeIcon": "Change the default icon used for **closable** alerts.", "closeLabel": "Text used for *aria-label* on **closable** alerts. Can also be customized globally in [Internationalization](/customization/internationalization).", "height": "Sets the height for the component.", "maxHeight": "Sets the maximum height for the component.", "maxWidth": "Sets the maximum width for the component.", "minHeight": "Sets the minimum height for the component.", "minWidth": "Sets the minimum width for the component.", "modelValue": "Controls whether the component is visible or hidden.", "prominent": "Displays a larger vertically centered icon to draw more attention.", "tile": "Removes the component's border-radius.", "type": "Create a specialized alert that uses a contextual color and has a pre-defined icon.", "width": "Sets the width for the component." }, "slots": { "append": "Slot for icon at end of alert.", "close": "Slot for icon used in **dismissible** prop.", "prepend": "Slot for icon at beginning of alert." } } ================================================ FILE: packages/api-generator/src/locale/en/VApp.json ================================================ { "exposed": { "theme": "The instance of the injected active theme." } } ================================================ FILE: packages/api-generator/src/locale/en/VAppBar.json ================================================ { "props": { "collapse": "Morphs the component into a collapsed state, reducing its maximum width.", "extensionHeight": "Designate an explicit height for the `extension` slot.", "flat": "Removes the component's **box-shadow**.", "floating": "Applies **display: inline-flex** to the component.", "location": "Aligns the component towards the top or bottom.", "scrollBehavior": "Specify an action to take when the scroll position of **scroll-target** reaches **scroll-threshold**. Accepts any combination of hide, inverted, collapse, elevate, and fade-image. Multiple values can be used, separated by a space.", "scrollTarget": "The element to target for scrolling events. Uses `window` by default.", "scrollThreshold": "The amount of scroll distance down before **scroll-behavior** activates." }, "slots": { "extension": "Slot positioned directly under the main content of the toolbar. Height of this slot can be set explicitly with the **extension-height** prop.", "image": "Expects the [`v-img`](/components/images/) component." } } ================================================ FILE: packages/api-generator/src/locale/en/VAutocomplete.json ================================================ { "props": { "autoSelectFirst": "When searching, will always highlight the first option and select it on blur. `exact` will only highlight and select exact matches.", "clearOnSelect": "Reset the search text when a selection is made while using the **multiple** prop.", "itemChildren": "This property currently has **no effect**.", "items": "Can be an array of objects or strings. By default objects should have **title** and **value** properties, and can optionally have a **props** property containing any [VListItem props](/api/v-list-item/#props). Keys to use for these can be changed with the **item-title**, **item-value**, and **item-props** props.", "noFilter": "Do not apply filtering when searching. Useful when data is being filtered server side." }, "slots": { "item": "Define a custom item appearance. The root element of this slot must be a **v-list-item** with `v-bind=\"props\"` applied. `props` includes everything required for the default select list behaviour - including title, value, click handlers, virtual scrolling, and anything else that has been added with `item-props`." } } ================================================ FILE: packages/api-generator/src/locale/en/VAvatar.json ================================================ { "props": { "badge": "Wraps the avatar in a [VBadge](/api/v-badge/). When set to `true`, displays a dot badge. Accepts an object of VBadge props for further customization." }, "slots": { "badge": "Slot for custom badge content. When used, the badge **dot** mode is disabled." } } ================================================ FILE: packages/api-generator/src/locale/en/VAvatarGroup.json ================================================ { "props": { "border": "Applies border styles to the child [v-avatar](/components/avatars) components.", "gap": "Sets the overlap gap between avatars. Negative values cause avatars to overlap.", "hoverable": "Enables a hover animation on child avatars.", "itemProps": "Props object that will be applied to each item component. `true` will treat the original object as raw props and pass it directly to the component.", "limit": "The total number of avatars to display, including the overflow indicator. E.g. a limit of `3` with 5 items renders 2 avatars and a `+3` overflow indicator.", "overflowText": "Custom text to display in the overflow avatar. Defaults to `+N` where N is the number of hidden items.", "reverse": "Reverses the stacking order of the avatars.", "size": "Sets the size of all child avatars.", "vertical": "Stacks avatars vertically instead of horizontally." }, "slots": { "prepend": "Custom content to be displayed before the avatar list.", "append": "Custom content to be displayed after the avatar list.", "item": "Customize each avatar item. Receives `props` and `index`.", "overflow": "Customize the overflow indicator. Receives the count of hidden items." } } ================================================ FILE: packages/api-generator/src/locale/en/VBadge.json ================================================ { "props": { "bordered": "Applies a **2px** by default and **1.5px** border around the badge when using the **dot** property.", "content": "Text content to show in the badge.", "dot": "Reduce the size of the badge and hide its contents.", "dotSize": "Sets the size of the **dot** variant (includes border when using with **bordered**)", "floating": "Move the badge further away from the slotted content. Equivalent to an 8px offset.", "inline": "Display as an inline block instead of absolute position. **location**, **floating**, and **offset** will have no effect.", "label": "The **aria-label** used for the badge.", "max": "Sets the maximum number allowed when using the **content** prop with a `number` like value. If the content number exceeds the maximum value, a `+` suffix is added.", "offsetX": "Offset the badge on the x-axis.", "offsetY": "Offset the badge on the y-axis.", "modelValue": "Controls whether the component is visible or hidden." }, "slots": { "badge": "The slot used for the badge's content." } } ================================================ FILE: packages/api-generator/src/locale/en/VBanner.json ================================================ { "props": { "avatar": "Designates a specific src image to pass to the thumbnail.", "lines": "The amount of visible lines of text before it truncates.", "mobile": "Applies the mobile banner styles.", "sticky": "Applies `position: sticky` to the component with `top: 0`. You can find more information on the [MDN documentation for sticky position](https://developer.mozilla.org/en-US/docs/Web/CSS/position).", "stacked": "Forces the banner actions onto a new line. This is not applicable when the banner has `lines=\"one\"`." }, "slots": { "actions": "The slot used for the action's content such as a [v-btn](/components/buttons).", "prepend": "Slot for icon at beginning of banner." } } ================================================ FILE: packages/api-generator/src/locale/en/VBottomNavigation.json ================================================ { "props": { "grow": "Force all [v-btn](/components/buttons) children to take up all available horizontal space.", "mode": "Changes the orientation and active state styling of the component." }, "events": { "update:active": "Event that is emitted when the active state changes." } } ================================================ FILE: packages/api-generator/src/locale/en/VBottomSheet.json ================================================ { "props": { "inset": "Reduces the sheet content maximum width to 70%." } } ================================================ FILE: packages/api-generator/src/locale/en/VBreadcrumbs.json ================================================ { "props": { "divider": "Specifies the dividing character between items." }, "slots": { "divider": "The slot used for dividers.", "prepend": "The slot used for prepend content.", "title": "The slot used to display the title of each breadcrumb." } } ================================================ FILE: packages/api-generator/src/locale/en/VBreadcrumbsDivider.json ================================================ { "props": { "divider": "Specifies the dividing character between items." } } ================================================ FILE: packages/api-generator/src/locale/en/VBtn.json ================================================ { "props": { "block": "Expands the button to 100% of available space.", "flat": "Removes the button box shadow. This is different than using the 'flat' variant.", "icon": "Apply a specific icon using the [v-icon](/components/icons/) component. The button will become _round_.", "readonly": "Puts the button in a readonly state. Cannot be clicked or navigated to by keyboard.", "stacked": "Displays the button as a flex-column.", "spaced": "Extends content to the edges to move main content from prepend and append slots.", "slim": "Reduces padding to 0 8px." }, "exposed": { "group": "Internal representation when used in VBtnToggle." } } ================================================ FILE: packages/api-generator/src/locale/en/VBtnGroup.json ================================================ { "props": { "direction": "Control how children components are arranged - in a row or column.", "divided": "Add dividers between children [v-btn](/components/buttons) components." } } ================================================ FILE: packages/api-generator/src/locale/en/VBtnToggle.json ================================================ { "props": { "rounded": "Round edge buttons.", "tile": "Removes the component's border-radius." }, "exposed": { "next": "Activates the next button.", "prev": "Activates the previous button.", "select": "Selects a button by index, the second parameter is a boolean to indicate if the button should be selected or not." } } ================================================ FILE: packages/api-generator/src/locale/en/VCalendar.json ================================================ { "props": { "categories": "Specifies what categories to display in the `category` view. This controls the order of the categories as well. If the calendar uses events any categories specified in those events not specified in this value are dynamically rendered in the view unless `category-hide-dynamic` is true.", "categoryHideDynamic": "Sets whether categories specified in an event should be hidden if it's not defined in `categories`.", "categoryShowAll": "Set whether the `category` view should show all defined `categories` even if there are no events for a category.", "categoryForInvalid": "The category to place events in that have invalid categories. A category is invalid when it is not a string. By default events without a category are not displayed until this value is specified.", "categoryDays": "The number of days to render in the `category` view.", "categoryText": "If categories is a list of objects, you can use this to determine what property to print out as the category text on the calendar. You can provide a function to do some logic or just define the prop name. It's similar to item-text on v-select", "dayFormat": "Formats day of the month string that appears in a day to a specified locale", "end": "The ending date on the calendar (inclusive) in the format of `YYYY-MM-DD`. This may be ignored depending on the `type` of the calendar.", "eventCategory": "Set property of *event*'s category. Instead of a property a function can be given which takes an event and returns the category.", "eventColor": "A background color for all events or a function which accepts an event object passed to the calendar to return a color.", "eventEnd": "Set property of *event*'s end timestamp.", "eventHeight": "The height of an event in pixels in the `month` view and at the top of the `day` views.", "eventMarginBottom": "Margin bottom for event", "eventMore": "Whether the more 'button' is displayed on a calendar with too many events in a given day. It will say something like '5 more' and when clicked generates a `click:more` event.", "eventMoreText": "The text to display in the more 'button' given the number of hidden events.", "eventName": "Set property of *event*'s displayed name, or a function which accepts an event object passed to the calendar as the first argument and a flag signalling whether the name is for a timed event (true) or an event over a day.", "eventOverlapMode": "One of `stack`, `column`, or a custom render function", "eventOverlapThreshold": "A value in minutes that's used to determine whether two timed events should be placed in column beside each other or should be treated as slightly overlapping events.", "eventRipple": "Applies the `v-ripple` directive.", "events": "An array of event objects with a property for a start timestamp and optionally a name and end timestamp. If an end timestamp is not given, the value of start will be used. If no name is given, you must provide an implementation for the `event` slot.", "eventStart": "Set property of *event*'s start timestamp.", "eventTextColor": "A text color for all events or a function which accepts an event object passed to the calendar to return a color.", "eventTimed": "If Dates or milliseconds are used as the start or end timestamp of an event, this prop can be a string to a property on the event that is truthy if the event is a timed event or a function which takes the event and returns a truthy value if the event is a timed event.", "firstInterval": "The first interval to display in the `day` view. If `intervalMinutes` is set to 60 and this is set to 9 the first time in the view is 9am.", "firstTime": "The first time to display in the `day` view. If specified, this overwrites any `firstInterval` value specified. This can be the number of minutes since midnight, a string in the format of `HH:mm`, or an object with number properties hour and minute.", "hideHeader": "If the header at the top of the `day` view should be visible.", "intervalCount": "The number of intervals to display in the `day` view.", "intervalFormat": "Formats time of day string that appears in the interval gutter of the `day` and `week` view to specified locale", "intervalHeight": "The height of an interval in pixels in the `day` view.", "intervalWidth": "The width of the interval gutter on the left side in the `day` view.", "intervalMinutes": "The number of minutes the intervals are in the `day` view. A common interval is 60 minutes so the intervals are an hour.", "intervalStyle": "Returns CSS styling to apply to the interval.", "locale": "The locale of the calendar.", "maxDays": "The maximum number of days to display in the custom calendar if an `end` day is not set.", "minWeeks": "The minimum number of weeks to display in the `month` or `week` view.", "monthFormat": "Formats month string that appears in a day to specified locale", "now": "Override the day & time which is considered now. This is in the format of `YYYY-MM-DD hh:mm:ss`. The calendar is styled according to now.", "shortIntervals": "If true, the intervals in the `day` view will be 9 AM as opposed to 09:00 AM", "shortMonths": "Whether the short versions of a month should be used (Jan vs January).", "shortWeekdays": "Whether the short versions of a weekday should be used (Mon vs Monday).", "showIntervalLabel": "Checks if a given day and time should be displayed in the interval gutter of the `day` view.", "showMonthOnFirst": "Whether the name of the month should be displayed on the first day of the month.", "showWeek": "Whether week numbers should be displayed when using the `month` view.", "start": "The starting date on the calendar (inclusive) in the format of `YYYY-MM-DD`. This may be ignored depending on the `type` of the calendar.", "type": "A string which is one of `month`, `week`, `day`, `4day`, `custom-weekly`, `custom-daily`, and `category`. The custom types look at the `start` and `end` dates passed to the component as opposed to the `value`.", "v-model": "Sets the `value` property but also updates it when the link of a day is clicked.", "value": "A date in the format of `YYYY-MM-DD` which determines what span of time for the calendar.", "weekdayFormat": "Formats day of the week string that appears in the header to specified locale" }, "slots": { "category": "The content placed in a category header for the `category` type. The category variable is null for events with invalid (non-string) categories.", "day-body": "The content that is placed in a `day` view in the scrollable interval container. The day & time object is passed through this slots scope.", "day-header": "The content that is placed in a `day` view in the top container. The day & time object is passed through this slots scope.", "day-label": "The content that is placed in the day of the month space in the `custom-weekly` or `month` view. The day & time object is passed through this slots scope.", "day-label-header": "The content that is placed in the day of the month space in the `week`, `day`, `4day`, or `custom-daily` view. The day & time object is passed through this slots scope.", "day-month": "The content that is placed in the month space in the `week` or `month` view. The day & time object is passed through this slots scope.", "day": "The content that is placed in a `week` or `month` view. The day & time object is passed through this slots scope.", "event": "The content placed in an event. This ignores the `event-name` prop.", "interval": "The content that is placed in the interval space in the `day` view. The day & time object is passed through this slots scope.", "interval-header": "The content that is placed in the interval space in the top left of the `day` view." }, "events": { "[`${string}:date`]": "Any event on the day of the month link. The second argument is the day & time object.", "[`${string}:dayCategory`]": "Any event on a day in the `category` view. The second argument is the day object.", "[`${string}:day`]": "Any event on a day. The second argument is the day object.", "[`${string}:event`]": "Any event on a specific event. The second argument is the day & time object.", "[`${string}:interval`]": "Any event at a specific interval label in the `day` view. The second argument is the day & time object.", "[`${string}:more`]": "Any event on the `X more` button on views with too many events in a day. The second argument is the day & time object.", "[`${string}:timeCategory`]": "Any event at a specific time in the `category` view. The second argument is the day & time object.", "[`${string}:time`]": "Any event at a specific time in the `day` view. The second argument is the day & time object.", "change": "The range of days displayed on the calendar changed. This is triggered on initialization. The event passed is an object with start and end date objects.", "moved": "One of the functions `next`, `prev`, and `move` was called. The event passed is the day object calculated for the movement." } } ================================================ FILE: packages/api-generator/src/locale/en/VCard.json ================================================ { "props": { "flat": "Removes the card's elevation.", "hover": "Applies **3dp** (level 2) of elevation when hovered (default 1dp). You can find more information on the [elevation page](/styles/elevation).", "image": "Apply a specific background image to the component.", "prependIcon": "Prepends a [v-icon](/components/icons/) component to the header." }, "slots": { "actions": "The slot used for the card actions; located at the bottom of the card.", "image": "The slot used for the card image. This is used with the [image](#props-image) prop." } } ================================================ FILE: packages/api-generator/src/locale/en/VCarousel.json ================================================ { "props": { "color": "Applies a color to the navigation dots - supports utility colors (for example `success` or `purple`) or css color (`#033` or `rgba(255, 0, 0, 0.5)`). Find a list of built-in classes on the [colors page](/styles/colors#material-colors).", "continuous": "Determines whether carousel is continuous.", "cycle": "Determines if the carousel should cycle through images.", "delimiterIcon": "Sets icon for carousel delimiter.", "hideDelimiters": "Hides the carousel's bottom delimiters.", "hideDelimiterBackground": "Hides the bottom delimiter background.", "interval": "The duration between image cycles. Requires the **cycle** prop.", "nextIcon": "The displayed icon for forcing pagination to the next item.", "prevIcon": "The displayed icon for forcing pagination to the previous item.", "progress": "Displays a carousel progress bar. Requires the **cycle** prop and **interval**.", "showArrows": "Displays arrows for next/previous navigation.", "verticalArrows": "Displays the navigation arrows vertically instead of horizontally.", "verticalDelimiters": "Displays carousel delimiters vertically." } } ================================================ FILE: packages/api-generator/src/locale/en/VCheckbox.json ================================================ { "props": { "falseIcon": "The icon used when inactive.", "indeterminate": "Sets an indeterminate state for the checkbox.", "indeterminateIcon": "The icon used when in an indeterminate state.", "multiple": "Changes expected model to an array.", "trueIcon": "The icon used when active." } } ================================================ FILE: packages/api-generator/src/locale/en/VCheckboxBtn.json ================================================ { "props": { "indeterminate": "Puts the control in an indeterminate state. Used with the [indeterminate-icon](#props-indeterminate-icon) property.", "indeterminateIcon": "Icon used when the component is in an indeterminate state." }, "events": { "update:indeterminate": "Event that is emitted when the component's indeterminate state changes." } } ================================================ FILE: packages/api-generator/src/locale/en/VChip.json ================================================ { "props": { "closable": "Adds remove button and then a chip can be closed.", "closeIcon": "Change the default icon used for **close** chips.", "closeLabel": "Text used for *aria-label* on the close button in **close** chips. Can also be customized globally in [Internationalization](/customization/internationalization).", "draggable": "Makes the chip draggable.", "filter": "Displays a selection icon when selected.", "filterIcon": "Change the default icon used for **filter** chips.", "label": "Applies a medium size border radius.", "pill": "Remove `v-avatar` padding.", "size": "Sets the height, padding and the font size of the component. Accepts only predefined options: **x-small**, **small**, **default**, **large**, and **x-large**.", "value": "The value used when a child of a [v-chip-group](/components/chip-groups)." }, "events": { "click": "Emitted when component is clicked, toggles chip if contained in a chip group - Will trigger component to ripple when clicked unless the `.native` modifier is used." }, "slots": { "close": "Slot for icon used in **close** prop.", "filter": "Slot for icon used in **filter** prop." } } ================================================ FILE: packages/api-generator/src/locale/en/VChipGroup.json ================================================ { "props": { "baseColor": "Sets the color of component when not focused. Recommended with `color` or `filter` to properly highlight selected items.", "centerActive": "Forces the selected chip to be centered.", "column": "Remove horizontal pagination and wrap items as needed.", "filter": "Applies an checkmark icon in front of every chip for using it like a filter.", "nextIcon": "Specify the icon to use for the next icon.", "prevIcon": "Specify the icon to use for the prev icon.", "showArrows": "Force the display of the pagination arrows." } } ================================================ FILE: packages/api-generator/src/locale/en/VCol.json ================================================ { "props": { "alignSelf": "Deprecated, use **align-self-\\*** class. Available options are: **start**, **center**, **end**, **auto**, **baseline** and **stretch**.", "cols": "Sets the default number of columns the component extends. Available options are: **1 -> 12** and **auto**. It accepts `{n}/{size}` syntax (e.g. 1/5 or 3/24) that overrides grid columns count for size calculation.", "lg": "Changes the number of columns on large and greater breakpoints.", "md": "Changes the number of columns on medium and greater breakpoints.", "offset": "Sets the default offset for the column. Similarly to **cols**, accepts `{n}/{size}` syntax (e.g. 1/5 or 3/24).", "offsetLg": "Changes the offset of the component on large and greater breakpoints.", "offsetMd": "Changes the offset of the component on medium and greater breakpoints.", "offsetSm": "Changes the offset of the component on small and greater breakpoints.", "offsetXl": "Changes the offset of the component on extra large and greater breakpoints.", "offsetXxl": "Changes the offset of the component on extra extra large and greater breakpoints.", "order": "Deprecated, use **order-\\*** class", "orderLg": "Deprecated, use **order-lg-\\*** class", "orderMd": "Deprecated, use **order-md-\\*** class", "orderSm": "Deprecated, use **order-sm-\\*** class", "orderXl": "Deprecated, use **order-xl-\\*** class", "orderXxl": "Deprecated, use **order-xxl-\\*** class", "sm": "Changes the number of columns on small and greater breakpoints.", "xl": "Changes the number of columns on extra large and greater breakpoints.", "xxl": "Changes the number of columns on extra extra large and greater breakpoints." } } ================================================ FILE: packages/api-generator/src/locale/en/VColorInput.json ================================================ { "props": { "hidePip": "Hide pip icon", "colorPip": "Synchronize pip color with current value", "pipIcon": "The icon used for pip", "pipLocation": "Move pip icon to a different slot", "pipVariant": "Variant of the pip control" } } ================================================ FILE: packages/api-generator/src/locale/en/VColorPicker.json ================================================ { "props": { "canvasHeight": "Height of canvas.", "dotSize": "Changes the size of the selection dot on the canvas.", "eyeDropperIcon": "Icon used to trigger EyeDropper API.", "hideCanvas": "Hides canvas.", "hideEyeDropper": "Hides eyedropper icon.", "hideSliders": "Hides sliders.", "hideInputs": "Hides inputs.", "mode": "The current selected input type. Syncable with `v-model:mode`.", "modes": "Sets available input types.", "readonly": "Puts the color picker in a readonly state.", "showSwatches": "Displays color swatches.", "swatches": "Sets the available color swatches to select from. 2D array of rows and columns, accepts any color format the picker does.", "swatchesMaxHeight": "Sets the maximum height of the swatches section.", "width": "Sets the width of the color picker." }, "events": { "update:mode": "Selected mode." } } ================================================ FILE: packages/api-generator/src/locale/en/VCombobox.json ================================================ { "props": { "alwaysFilter": "When enabled, dropdown list will always show items matching non-empty value within the field. Recommended when the list is meant to show suggestions rather than options to choose from. For optimal UX, should be combined with `:menu-icon=\"false\"` and `hide-selected`.", "autoSelectFirst": "When searching, will always highlight the first option and select it on blur. `exact` will only highlight and select exact matches.", "clearOnSelect": "Reset the search text when a selection is made while using the **multiple** prop.", "itemChildren": "This property currently has **no effect**.", "delimiters": "Accepts an array of strings that will trigger a new tag when typing. Does not replace the normal Tab and Enter keys.", "items": "Can be an array of objects or strings. By default objects should have **title** and **value** properties, and can optionally have a **props** property containing any [VListItem props](/api/v-list-item/#props). Keys to use for these can be changed with the **item-title**, **item-value**, and **item-props** props." }, "slots": { "item": "Define a custom item appearance. The root element of this slot must be a **v-list-item** with `v-bind=\"props\"` applied. `props` includes everything required for the default select list behaviour - including title, value, click handlers, virtual scrolling, and anything else that has been added with `item-props`." }, "exposed": { "selectionIndex": "The index of the currently selected item." } } ================================================ FILE: packages/api-generator/src/locale/en/VCommandPalette.json ================================================ { "props": { "closeOnSelect": "Controls whether the palette closes automatically after selecting an actionable item. Set to **false** to keep it open for external drill-in and nested navigation flows.", "hotkey": "Global keyboard shortcut to toggle the palette. Accepts hotkey strings like `'ctrl+shift+p'` or `'meta+j'`. The shortcut is automatically registered on mount and cleaned up on unmount.", "inputIcon": "Icon to display at the start of the search input field.", "items": "Array of command palette items. Objects should have **title** and optionally **subtitle**, **prependIcon**, **appendIcon**, **prependAvatar**, **appendAvatar**, **hotkey**, **onClick**, **to**, **href**, and **value** properties. Use `type: 'subheader'` with a **title** for section headers, or `type: 'divider'` for visual separators between groups.", "listProps": "Pass props through to the `v-list` component. Accepts an object with anything from [v-list](/api/v-list/#props) props, camelCase keys are recommended.", "modelValue": "Controls the visibility of the command palette dialog. Use `v-model` for two-way binding.", "noDataText": "Text displayed when no items match the current search query.", "placeholder": "Placeholder text displayed in the search input.", "search": "The current search query. Use `v-model:search` to control or monitor the search input value." }, "events": { "before-select": "Emitted before the default auto-close behavior for actionable item selection. The payload includes the selected item, the triggering event, and a **preventDefault** callback. Call **preventDefault()** to keep the palette open.", "click:item": "Emitted when an item is clicked or activated via Enter key. The payload includes the selected item object and the triggering event (MouseEvent or KeyboardEvent).", "update:modelValue": "Emitted when the dialog visibility changes.", "update:search": "Emitted when the search query changes." }, "slots": { "prepend": "Content to render above the search input, inside the command palette card. Useful for headers, breadcrumbs, or instructions.", "input": "Custom search input field. Replaces the default **v-text-field**. Useful for providing a completely custom search implementation.", "input.append-inner": "Content appended inside the search input field. Useful for adding icons or buttons within the input.", "append": "Content to render below the items list, inside the command palette card. Useful for footers, keyboard shortcut hints, or additional actions.", "no-data": "Custom content to display when no items match the search query. Replaces the default no-data message.", "list.prepend": "Content to prepend to the list component.", "list.subheader": "Slot for customizing the rendering of subheader items in the list.", "item.prepend": "Content to display before each item's title.", "item.title": "Slot for customizing the title of each item.", "item.append": "Content to display after each item's title, replaces hotkey (if provided)." } } ================================================ FILE: packages/api-generator/src/locale/en/VCommandPaletteItem.json ================================================ { "props": { "item": "The command palette item data object.", "index": "The index of the item within the command palette list." } } ================================================ FILE: packages/api-generator/src/locale/en/VConfirmEdit.json ================================================ { "props": { "modelValue": "Represents the committed v-model value", "cancelText": "Text for the cancel button", "okText": "Text for the ok button", "hideActions": "Prevent showing the default actions buttons. Does not affect ``", "disabled": "Control the disabled state of action buttons. If not provided, internal logic will be used to determine the disabled state." }, "events": { "save": "The event emitted when the user clicks the Save button", "cancel": "The event emitted when the user clicks the Cancel button" }, "exposed": { "save": "Manually commit the change", "cancel": "Manually cancel the change" } } ================================================ FILE: packages/api-generator/src/locale/en/VContainer.json ================================================ { "props": { "fluid": "Removes viewport maximum-width size breakpoints." } } ================================================ FILE: packages/api-generator/src/locale/en/VCounter.json ================================================ { "props": { "active": "Determines whether the counter is visible or not.", "max": "Sets the maximum allowed value.", "value": "Sets the current counter value." } } ================================================ FILE: packages/api-generator/src/locale/en/VDataIterator.json ================================================ { "props": { "customFilter": "Function to filter items.", "expanded": "Array of expanded items. Can be bound to external variable using **v-model:expanded**.", "groupBy": "Configures attributes (and sort order) to group items together.", "initialSortOrder": "Specifies the initial sort order when an **toggleSort** is called for unsorted property.", "itemsPerPage": "Changes how many items per page should be visible. Can be bound to external variable using **v-model:itemsPerPage**.. Setting this prop to `-1` will display all items on the page.", "itemsLength": "The total number of items. Useful when using server-side pagination to correctly compute page counts.", "loading": "If `true` and no items are provided, then a loading text will be shown.", "search": "Text input used to filter items." }, "slots": { "default": "The default slot. Use this to render your items.", "footer": "Defines a footer below the items.", "header": "Defines a header above the items.", "no-data": "Defines content for when no items are provided." }, "events": { "update:currentItems": "Emits with the items currently being displayed.", "update:expanded": "Emits when the **expanded** items are updated.", "update:groupBy": "Emits when the **group-by** prop is updated.", "update:itemsPerPage": "Emits when the **items-per-page** prop is updated.", "update:options": "Emits when pagination related properties (page, itemsPerPage, sortBy, groupBy, search) is updated.", "update:page": "Emits when the **page** prop is updated.", "update:sortBy": "Emits when the **sortBy** prop is updated." } } ================================================ FILE: packages/api-generator/src/locale/en/VDataTable.json ================================================ { "props": { "collapseIcon": "Icon to display when the expandable row is expanded.", "customFilter": "Function to filter items.", "density": "Adjusts the vertical height of the table rows.", "expandIcon": "Icon to display when the expandable row is collapsed.", "fixedHeader": "Fixed header to top of table.", "groupBy": "Configures attributes (and sort order) to group items together. Can be customized further with `group-header` and `group-summary` slots.", "groupCollapseIcon": "Icon to display when the row group is expanded.", "groupExpandIcon": "Icon to display when the row group is collapsed.", "headerProps": "Pass props to the default header. See [`v-data-table-headers` API](/api/v-data-table-headers) for more information.", "headers": "An array of objects that each describe a header column.", "height": "Set an explicit height of table.", "hover": "Adds a hover effects to a table rows.", "itemsPerPage": "Changes how many items per page should be visible. Can be bound to external variable using **v-model:itemsPerPage**.. Setting this prop to `-1` will display all items on the page.", "page": "The current displayed page number (1-indexed).", "showSelect": "Shows the select checkboxes in both the header and rows (if using default rows).", "showExpand": "Shows the expand toggle in default rows.", "sortBy": "Changes which item property (or properties) should be used for sort order. Can be bound to external variable using **v-model:sortBy**.." }, "slots": { "[`header.${string}`]": "Slot for custom rendering of a header cell.", "[`item.${string}`]": "Slot for custom rendering of a row cell.", "header.data-table-expand": "Slot to replace the default `v-icon` used when expanding header.", "body": "Slot to replace the default table ``.", "body.append": "Appends elements to the end of the default table ``.", "body.prepend": "Prepends elements to the start of the default table ``.", "bottom": "Slot for custom rendering of a data table footer.", "colgroup": "Slot to replace the default rendering of the `` element.", "footer.prepend": "Adds content to the empty space in the footer.", "group-header": "Slot for custom rendering of a group header.", "group-summary": "Slot for custom rendering of a group summary.", "header.": "Slot to customize a specific header column.", "header.data-table-select": "Slot to replace the default `v-checkbox-btn` in header.", "headers": "An array of objects that each describe a header column.", "item": "Slot to replace the default rendering of a row.", "item.data-table-select": "Slot to replace the default `v-checkbox-btn` used when selecting rows.", "item.data-table-expand": "Slot to replace the default `v-icon` used when expanding rows.", "item.": "Slot to customize a specific column.", "loading": "Defines content for when `loading` is true and no items are provided.", "tbody": "Slot to replace the default table ``.", "thead": "Slot to replace the default table ``.", "tfoot": "Slot to replace the default table ``.", "no-data": "Defines content for when no items are provided.", "top": "Slot to add content above the table." }, "events": { "click:row": "Emits when a table row is clicked. This event provides 2 arguments: the first is the native click event, and the second is an object containing the corresponding item for that row. **NOTE:** will not emit when table rows are defined through a slot such as `item` or `body`.", "contextmenu:row": "Emits when a table row is right-clicked. The item for the row is included. **NOTE:** will not emit when table rows are defined through a slot such as `item` or `body`.", "dblclick:row": "Emits when a table row is double-clicked. The item for the row is included. **NOTE:** will not emit when table rows are defined through a slot such as `item` or `body`.", "update:currentItems": "Emits with the items currently being displayed.", "update:groupBy": "Emits when the **group-by** prop is updated.", "update:itemsPerPage": "Emits when the **items-per-page** prop is updated.", "update:modelValue": "Emits when the component's model changes.", "update:options": "Emits when pagination related properties (page, itemsPerPage, sortBy, groupBy, search) is updated.", "update:page": "Emits when the **page** prop is updated.", "update:sortBy": "Emits when the **sortBy** prop is updated." } } ================================================ FILE: packages/api-generator/src/locale/en/VDataTableFooter.json ================================================ { "props": { "firstIcon": "First icon.", "firstPageLabel": "Label for first page.", "itemsPerPageOptions": "Array of options to show in the items-per-page dropdown.", "itemsPerPageText": "Text for items-per-page dropdown.", "lastIcon": "Last icon.", "lastPageLabel": "Label for last page.", "nextIcon": "Next icon.", "nextPageLabel": "Label for next page.", "pageText": "Label for page number.", "prevIcon": "Previous icon.", "prevPageLabel": "Label for previous page.", "showCurrentPage": "Show current page number between prev/next icons." }, "slots": { "prepend": "Extra content placed before the default pagination." } } ================================================ FILE: packages/api-generator/src/locale/en/VDataTableHeaders.json ================================================ { "props": { "color": "Applies a color to checkboxes, page size dropdown and sort badges in the table header.", "sortIcon": "Icon used for unsorted columns. By default it uses either **sortAscIcon** or **sortDescIcon** depending on **initialSortOrder**, but can be customized to show a neutral icon instead.", "sortAscIcon": "Icon used for ascending sort button.", "sortDescIcon": "Icon used for descending sort button.", "sticky": "Deprecated, use `fixed-header` instead.", "fixedHeader": "Sticks the header to the top of the table.", "headerProps": "Additional props to be be passed to the default header" }, "slots": { "[`column.${string}`]": "Slot for custom rendering of a column.", "[`header.${string}`]": "Slot for custom rendering of a header cell.", "header.data-table-expand": "Slot for the expand button in the header.", "header.data-table-select": "Slot for the select-all checkbox in the header.", "headers": "Slot to replace the default rendering of the `` element." } } ================================================ FILE: packages/api-generator/src/locale/en/VDataTableRow.json ================================================ { "props": { "cellProps": "Props to be applied to the cell.", "collapseIcon": "Icon to display when the expandable row is expanded.", "expandIcon": "Icon to display when the expandable row is collapsed.", "index": "Row index.", "item": "Data (key, index and column values) of the displayed item." }, "events": { "contextmenu": "The event emitted when the user clicks the context menu button.", "dblclick": "The event emitted when the user double clicks the row.", "[`item.${string}`]": "The event emitted when the user clicks the item." }, "slots": { "[`header.${string}`]": "Slot for custom rendering of a header cell.", "[`item.${string}`]": "Slot for custom rendering of a row cell.", "header.data-table-expand": "Slot to replace the default `v-icon` used when expanding header.", "header.data-table-select": "Slot to replace the default `v-checkbox-btn` in header.", "item.data-table-expand": "Slot for the expand button in the row.", "item.data-table-select": "Slot for the select checkbox in the row." } } ================================================ FILE: packages/api-generator/src/locale/en/VDataTableRows.json ================================================ { "props": { "cellProps": "An object of additional props to be passed to each `` in the table body. Also accepts a function that will be called for each cell. If the same prop is defined both here and in `cellProps` in a headers object, the value from the headers object will be used.", "loading": "Displays `loading` slot if set to `true`", "loadingText": "Text shown when the data is loading.", "rowProps": "An object of additional props to be passed to each `` in the table body. Also accepts a function that will be called for each row." }, "slots": { "[`header.${string}`]": "Slot for custom rendering of a header cell.", "header.data-table-expand": "Slot to replace the default `v-icon` used when expanding header.", "header.data-table-select": "Slot to replace the default `v-checkbox-btn` in header.", "[`item.${string}`]": "Slot for custom rendering of a column.", "data-table-group": "Slot for custom rendering of a group.", "data-table-select": "Slot for custom rendering of a header cell with the select checkbox.", "expanded-row": "Slot for custom rendering of an expanded row.", "group-header": "Slot for custom rendering of a group header.", "group-summary": "Slot for custom rendering of a group summary.", "item.data-table-expand": "Slot for custom rendering of a row cell with the expand icon.", "item.data-table-select": "Slot for custom rendering of a row cell with the select checkbox.", "loading": "Slot for custom rendering of the loading state." } } ================================================ FILE: packages/api-generator/src/locale/en/VDataTableServer.json ================================================ { "props": { "itemsLength": "Number of all items.", "headerProps": "Pass props to the default header. See [`v-data-table-server` API](/api/v-data-table-server) for more information." }, "slots": { "[`header.${string}`]": "Slot for a specific header. See [`v-data-table-server` API](/api/v-data-table-server) for more information.", "[`column.${string}`]": "Slot for custom rendering of a column.", "[`item.${string}`]": "Slot for custom rendering of a row cell.", "body": "Slot to replace the default rendering of the `` element.", "body.append": "Adds content to the empty space in the body.", "body.prepend": "Adds content to the empty space in the body.", "header.data-table-expand": "Slot for the expand button in the header.", "header.data-table-select": "Slot for the select-all checkbox in the header.", "bottom": "Slot to add content below the table.", "colgroup": "Slot to replace the default rendering of the `` element.", "data-table-select": "Slot for custom rendering of a header cell with the select checkbox.", "expanded-row": "Slot for custom rendering of an expanded row.", "footer.prepend": "Adds content to the empty space in the footer.", "group-header": "Slot for custom rendering of a group header.", "group-summary": "Slot for custom rendering of a group summary.", "headers": "Slot to replace the default rendering of the `` element.", "item": "Slot to replace the default rendering of a row.", "item.data-table-expand": "Slot to replace the default `v-icon` used when expanding rows.", "item.data-table-select": "Slot to replace the default checkbox used when selecting rows.", "loading": "Defines content for when `loading` is true and no items are provided.", "tbody": "Slot to replace the default rendering of the `` element.", "tfoot": "Slot to replace the default rendering of the `` element.", "thead": "Slot to replace the default rendering of the `` element.", "top": "Slot to add content above the table." }, "events": { "click:row": "Emits when a table row is clicked. This event provides 2 arguments: the first is the native click event, and the second is an object containing the corresponding item for that row. **NOTE:** will not emit when table rows are defined through a slot such as `item` or `body`.", "update:expanded": "Emits when the **expanded** prop is updated.", "update:groupBy": "Emits when the **group-by** prop is updated.", "update:itemsPerPage": "Emits when the **items-per-page** prop is updated.", "update:modelValue": "Emits when the component's model changes.", "update:options": "Emits when pagination related properties (page, itemsPerPage, sortBy, groupBy, search) is updated.", "update:page": "Emits when the **page** prop is updated.", "update:sortBy": "Emits when the **sortBy** prop is updated." } } ================================================ FILE: packages/api-generator/src/locale/en/VDataTableVirtual.json ================================================ { "props": { "headerProps": "Pass props to the default header.", "itemKey": "The property on each item that is used as a unique key." }, "slots": { "[`header.${string}`]": "Slot for a specific header. See [`v-data-table-virtual` API](/api/v-data-table-virtual) for more information.", "[`column.${string}`]": "Slot for custom rendering of a column.", "[`item.${string}`]": "Slot for custom rendering of a row cell.", "header.data-table-expand": "Slot for the expand button in the header.", "header.data-table-select": "Slot for the select-all checkbox in the header.", "body.append": "Slot to add content below the table.", "body.prepend": "Slot to add content above the table.", "bottom": "Slot to add content below the table.", "colgroup": "Slot to replace the default rendering of the `` element.", "data-table-group": "Slot for custom rendering of a group.", "data-table-select": "Slot for custom rendering of a header cell with the select checkbox.", "expanded-row": "Slot for custom rendering of an expanded row.", "group-header": "Slot for custom rendering of a group header.", "group-summary": "Slot for custom rendering of a group summary.", "headers": "Slot to replace the default rendering of the `` element.", "item": "Slot to replace the default rendering of a row.", "item.data-table-expand": "Slot to replace the default `v-icon` used when expanding rows.", "item.data-table-select": "Slot to replace the default checkbox used when selecting rows.", "loading": "Defines content for when `loading` is true and no items are provided.", "tbody": "Slot to replace the default table ``.", "thead": "Slot to replace the default table ``.", "tfoot": "Slot to replace the default table ``.", "top": "Slot to add content above the table" }, "events": { "click:row": "Emits when a table row is clicked. This event provides 2 arguments: the first is the native click event, and the second is an object containing the corresponding item for that row. **NOTE:** will not emit when table rows are defined through a slot such as `item` or `body`.", "update:expanded": "Emits when the **expanded** prop is updated.", "update:groupBy": "Emits when the **group-by** prop is updated.", "update:modelValue": "Emits when the component's model changes.", "update:options": "Emits when pagination related properties (page, itemsPerPage, sortBy, groupBy, search) is updated.", "update:sortBy": "Emits when the **sortBy** prop is updated." }, "exposed": { "calculateVisibleItems": "Trigger updating the currently rendered items based on scroll position." } } ================================================ FILE: packages/api-generator/src/locale/en/VDateInput.json ================================================ { "props": { "hideActions": "Hide the Cancel and OK buttons, and automatically update the value when a date is selected.", "displayFormat": "The format of the date that is displayed in the input. Can use any format [here](/features/dates/#format-options) or a custom function.", "inputFormat": "Format for manual date input. Use yyyy, mm, dd with separators '.', '-', '/' (e.g. 'yyyy-mm-dd', 'dd/mm/yyyy').", "location": "Specifies the date picker's location. Can combine by using a space separated string.", "updateOn": "Specifies when the text input should update the model value. If empty, the text field will go into read-only state." } } ================================================ FILE: packages/api-generator/src/locale/en/VDatePicker.json ================================================ { "props": { "allowedDates": "Restricts which dates can be selected.", "eventColor": "Sets the color for event dots. It can be string (all events will have the same color) or `object` where attribute is the event date and value is boolean/color/array of colors for specified date or `function` taking date as a parameter and returning boolean/color/array of colors for that date.", "events": "Array of dates or object defining events or colors or function returning boolean/color/array of colors.", "headerColor": "Allows you to set a different color for the header when used in conjunction with the `color` prop.", "hideHeader": "Hides the header.", "hideWeekdays": "Hides the weekdays.", "landscape": "Changes the picker to landscape mode.", "landscapeHeaderWidth": "Sets header width when in landscape mode.", "month": "Sets the month.", "year": "Sets the year.", "header": "Text shown when no **display-date** is set.", "headerDateFormat": "Allows you to customize the format of the date selection text that appears in the header of the calendar.", "max": "Maximum allowed date/month (ISO 8601 format).", "min": "Minimum allowed date/month (ISO 8601 format).", "multiple": "Allow the selection of multiple dates. The **range** value selects all dates between two selections.", "nextIcon": "Sets the icon for next month/year button.", "prevIcon": "Sets the icon for previous month/year button.", "readonly": "Makes the picker readonly (doesn't allow to select new date).", "showAdjacentMonths": "Toggles visibility of days from previous and next months.", "showWeek": "Toggles visibility of the week numbers in the body of the calendar.", "width": "Width of the picker.", "modeIcon": "Icon displayed next to the current month and year, toggles year selection when clicked.", "viewMode": "Determines which picker in the date or month picker is being displayed. Allowed values: `'month'`, `'months'`, `'year'`." }, "events": { "update:month": "Emitted when the month changes.", "update:viewMode": "Emitted when the view mode changes.", "update:year": "Emitted when the year changes." }, "slots": { "actions": "Slot for the actions.", "controls": "Slot for the controls.", "header": "Slot for the header.", "year": "Slot for the year." } } ================================================ FILE: packages/api-generator/src/locale/en/VDatePickerControls.json ================================================ { "props": { "controlHeight": "Sets the height of the controls.", "controlVariant": "- **docked:** Separate control groups for month and year.\n- **modal:** Month and year are displayed together, clicking the text opens a month picker, clicking the dropdown arrow opens a year picker. There are also arrow buttons to scroll between months.", "modeIcon": "Icon used for the mode button.", "nextIcon": "Icon used for the next button.", "noMonthPicker": "Only applies to `controlVariant=\"modal\"`, the month and year picker buttons are combined into one that only opens the year picker.", "prevIcon": "Icon used for the previous button.", "monthText": "Text displayed for the current month.", "yearText": "Text displayed for the current year.", "viewMode": "Sets the view mode of the date picker." }, "events": { "click:month": "Event fired when clicking on the month.", "click:next": "Event fired when clicking the next button.", "click:prev": "Event fired when clicking the previous button.", "click:year": "Event fired when clicking the date text.", "click:prev-year": "Event fired when clicking the previous year button.", "click:next-year": "Event fired when clicking the next year button." } } ================================================ FILE: packages/api-generator/src/locale/en/VDatePickerHeader.json ================================================ { "props": { "header": "Sets the header content.", "transition": "Sets the transition when the header changes." } } ================================================ FILE: packages/api-generator/src/locale/en/VDatePickerMonth.json ================================================ { "props": { "allowedDates": "Sets the allowed dates of the month.", "hideWeekdays": "Hide the days of the week letters.", "max": "Sets the maximum date of the month.", "min": "Sets the minimum date of the month.", "month": "Sets the month.", "year": "Sets the year.", "multiple": "Sets the multiple of the month.", "readonly": "Puts the picker in a readonly state.", "showAdjacentMonths": "Show adjacent months.", "showWeek": "Show the week number.", "transition": "The transition used when changing months into the future", "reverseTransition": "The transition used when changing months into the past" }, "events": { "update:month": "Fired when the month changes.", "update:year": "Fired when the year changes." }, "slots": { "day": "Slot for a day in the month." } } ================================================ FILE: packages/api-generator/src/locale/en/VDatePickerMonths.json ================================================ { "props": { "min": "Sets the minimum selectable date. Months before this date will be disabled.", "max": "Sets the maximum selectable date. Months after this date will be disabled.", "year": "Sets the year for the given months.", "allowedMonths": "Restricts which months can be selected." }, "slots": { "month": "Slot for the month." } } ================================================ FILE: packages/api-generator/src/locale/en/VDatePickerYears.json ================================================ { "props": { "max": "Sets the maximum date of the month.", "min": "Sets the minimum date of the month.", "allowedYears": "Restricts which years can be selected." }, "slots": { "year": "Slot for the year." } } ================================================ FILE: packages/api-generator/src/locale/en/VDefaultsProvider.json ================================================ { "props": { "defaults": "Specify new default prop values for components. Keep in mind that this will be merged with previously defined values.", "disabled": "Turns off all calculations of new default values for improved performance in situations where defaults propagation isn't necessary.", "reset": "Reset the default values up the nested chain by {n} amount.", "root": "Force current defaults to match the application root defaults.", "scoped": "Prevents the ability for default values to be inherited from parent components." } } ================================================ FILE: packages/api-generator/src/locale/en/VDialog.json ================================================ { "props": { "fullscreen": "Changes layout for fullscreen display.", "maxWidth": "Sets the maximum width for the component.", "noClickAnimation": "Disables the bounce effect when clicking outside of a `v-dialog`'s content when using the **persistent** prop.", "openOnHover": "Designates whether component should activate when its activator is hovered.", "persistent": "Clicking outside of the element or pressing **esc** key will not deactivate it.", "scrollable": "When set to true, expects a `v-card` and a `v-card-text` component with a designated height. For more information, check out the [scrollable example](/components/dialogs#scrollable)." }, "exposed": { "animateClick": "Function invoked when user clicks outside the component and the **persistent** prop is used.", "globalTop": "Used by activator to determine a components position in the global stack order.", "localTop": "Used by activator to determine a components position in the local stack order.", "updateLocation": "Function used for locationStrategy positioning." } } ================================================ FILE: packages/api-generator/src/locale/en/VDialogTransition.json ================================================ { "props": { "target": "Sets the target element for the transition." } } ================================================ FILE: packages/api-generator/src/locale/en/VDivider.json ================================================ { "props": { "contentOffset": "Increases content spacing from the lines. When passed as an array, the second value shifts slot content down (or right in vertical mode).", "gradient": "Adds fading effect for both sides.", "inset": "Adds indentation (72px) for **normal** dividers, reduces max height for **vertical**.", "length": "Sets the dividers length. Default unit is px.", "thickness": "Sets the dividers thickness. Default unit is px.", "variant": "Applies `border-style`.", "vertical": "Displays dividers vertically." } } ================================================ FILE: packages/api-generator/src/locale/en/VEmptyState.json ================================================ { "props": { "actionText": "The text used for the action button.", "headline": "A large headline often used for 404 pages.", "href": "The URL the action button links to.", "justify": "Control the justification of the text.", "textWidth": "Sets the width of the text container.", "to": "The URL the action button links to.", "size": "The size used to control the dimensions of the media element inside the component. Can be specified as a number or a string (e.g., '50%', '100px')." }, "events": { "click:action": "Event emitted when the action button is clicked." }, "slots": { "actions": "Slot for the action button.", "headline": "Slot for the component's headline.", "media": "Slot for the component's media." } } ================================================ FILE: packages/api-generator/src/locale/en/VExpansionPanel.json ================================================ { "props": { "disabled": "Disables the expansion-panel content.", "readonly": "Makes the expansion panel content read only.", "focusable": "Makes the expansion panel content focusable.", "value": "Controls the opened/closed state of content.", "static": "Remove title size expansion when selected." }, "exposed": { "groupItem": "The current expansion panel within the group in ``." } } ================================================ FILE: packages/api-generator/src/locale/en/VExpansionPanelTitle.json ================================================ { "props": { "collapseIcon": "Icon used when the expansion panel is in a collapsable state.", "expandIcon": "Icon used when the expansion panel is in a expandable state.", "hideActions": "Hide the expand icon in the content title.", "static": "Remove title size expansion when selected.", "focusable": "Makes the expansion panel headers focusable.", "readonly": "Makes the expansion panel content read only." }, "slots": { "actions": "Slot for the actions." } } ================================================ FILE: packages/api-generator/src/locale/en/VExpansionPanels.json ================================================ { "props": { "focusable": "Makes the expansion-panel headers focusable.", "flat": "Removes the expansion-panel's elevation and borders.", "modelValue": "Controls expanded panel(s). Defaults to an empty array when using **multiple** prop. It is recommended to set unique `value` prop for the panels inside, otherwise index is used instead.", "readonly": "Makes the entire expansion panel read only.", "static": "Remove title size expansion when selected.", "tile": "Removes the border-radius." }, "exposed": { "prev": "Open the previous panel from the currently selected panel.", "next": "Open the next panel from the currently selected panel." } } ================================================ FILE: packages/api-generator/src/locale/en/VFab.json ================================================ { "props": { "app": "If true, attaches to the closest layout and positions according to the value of **location**.", "layout": "If true, will effect layout dimensions based on size and position.", "appear": "Used to control the animation of the FAB.", "extended": "An alternate style for the FAB that expects text.", "location": "The location of the fab relative to the layout. Only works when using **app**.", "offset": "Translates the Fab up or down, depending on if location is set to **top** or **bottom**." } } ================================================ FILE: packages/api-generator/src/locale/en/VField.json ================================================ { "props": { "appendInnerIcon": "Creates a [v-icon](/api/v-icon/) component in the **append-inner** slot.", "baseColor": "Sets the color of the input when it is not focused.", "centerAffix": "Vertically align **appendInner**, **prependInner**, **clearIcon** and **label** in the center.", "clearIcon": "The icon used when the **clearable** prop is set to true.", "dirty": "Manually apply the dirty state styling.", "disabled": "Removes the ability to click or target the input.", "glow": "Makes prepend/append icons full opacity when the field is focused and apply color.", "error": "Puts the input in a manual error state.", "flat": "Removes box shadow when using a variant with elevation.", "iconColor": "Sets the color of the prepend/append icons.", "id": "Sets the DOM id on the component.", "labelId": "Sets the DOM id on the inner label element. Useful for associating the label with custom input elements.", "details": "Controls whether the field generates an `aria-describedby` attribute for accessibility.", "persistentClear": "Always show the clearable icon when the input is dirty (By default it only shows on hover).", "prependInnerIcon": "Creates a [v-icon](/api/v-icon/) component in the **prepend-inner** slot.", "reverse": "Reverses the orientation.", "singleLine": "Label does not move on focus/dirty." }, "events": { "click:appendInner": "Emitted when appended inner icon is clicked.", "click:clear": "Emitted when clearable icon clicked.", "click:prependInner": "Emitted when prepended inner icon is clicked.", "update:focused": "Emitted when the input is focused or blurred" }, "slots": { "append-inner": "Slot that is appended to the input.", "clear": "Slot for custom clear icon (displayed when the **clearable** prop is equal to true).", "label": "The default slot of the [v-label](/api/v-label/) or [v-field-label](/api/v-field-label/) component.", "prepend-inner": "Slot that is prepended to the input." }, "exposed": { "controlRef": "Reference to the control element of the field.", "fieldIconColor": "The color of the icon." } } ================================================ FILE: packages/api-generator/src/locale/en/VFieldLabel.json ================================================ { "props": { "floating": "Elevates the label above the slotted content." } } ================================================ FILE: packages/api-generator/src/locale/en/VFileInput.json ================================================ { "props": { "chips": "Changes display of selections to chips.", "counter": "Displays the number of selected files.", "counterSizeString": "The text displayed when using the **counter** and **show-size** props. Can also be customized globally on the [internationalization page](/customization/internationalization).", "counterString": "The text displayed when using the **counter** prop. Can also be customized globally on the [internationalization page](/customization/internationalization).", "hideInput": "Display the icon only without the input (file names).", "multiple": "Adds the **multiple** attribute to the input, allowing multiple file selections.", "showSize": "Sets the displayed size of selected file(s). When using **true** will default to _1000_ displaying (**kB, MB, GB**) while _1024_ will display (**KiB, MiB, GiB**).", "truncateLength": "The length of a filename before it is truncated with ellipsis." }, "slots": { "counter": "Slot for the input’s counter text.", "selection": "Slot for defining a custom appearance for selected item(s). Provides the current **index**, **text** (truncated) and [file](https://developer.mozilla.org/en-US/docs/Web/API/File)." }, "events": { "mousedown:control": "Event that is emitted when using mousedown on the main control area." } } ================================================ FILE: packages/api-generator/src/locale/en/VFileUpload.json ================================================ { "props": { "browseText": "Text for the browse button.", "dividerText": "Text in the divider.", "hideBrowse": "Hides the browse button.", "multiple": "Allows multiple files to be uploaded.", "scrim": "Determines whether an overlay is used when hovering over the component with files. Accepts true/false to enable background, and string to define color.", "insetFileList": "Renders the file list inside the dropzone container instead of below it.", "showSize": "Shows the size of the file." }, "slots": { "browse": "Slot for the browse button.", "divider": "Slot for the divider between icon and the browse button.", "icon": "Slot for a custom appearance in icon section.", "input": "Define a custom native input.", "single": "Slot for customizing the appearance of a single file when using inset file list mode." }, "exposed": { "controlRef": "Reference to the underlying input control element." } } ================================================ FILE: packages/api-generator/src/locale/en/VFileUploadDropzone.json ================================================ { "props": { "browseText": "Text for the browse button.", "dividerText": "Text in the divider.", "error": "Puts the dropzone in an error state, changing the border color.", "hideBrowse": "Hides the browse button.", "insetFileList": "Renders the file list inside the dropzone container instead of below it.", "multiple": "Allows multiple files to be uploaded.", "scrim": "Determines whether an overlay is used when hovering over the component with files. Accepts true/false to enable background, and string to define color.", "showSize": "Shows the size of the file." }, "slots": { "browse": "Slot for the browse button.", "divider": "Slot for the divider between icon and the browse button.", "icon": "Slot to replace the default upload icon.", "input": "Slot to replace the native file input.", "single": "Slot for customizing the appearance of a single file when using inset file list mode." }, "events": { "drop": "Emitted when files are dropped onto the dropzone.", "click:browse": "Emitted when the browse button is clicked.", "click:remove": "Emitted when a file's remove button is clicked." } } ================================================ FILE: packages/api-generator/src/locale/en/VFileUploadItem.json ================================================ { "props": { "file": "The file object uploaded", "fileIcon": "The icon prepending each uploaded file. This will be a preview image if the file is an image.", "index": "The index of the file in the upload list.", "showSize": "Show the size of the file" }, "events": { "click:remove": "Emitted when the remove icon is clicked" }, "slots": { "clear": "Slot for the icon button to clear/remove a file" } } ================================================ FILE: packages/api-generator/src/locale/en/VFileUploadList.json ================================================ { "props": { "files": "An array of File objects to display in the list. When used inside a VFileUpload, this is provided automatically via injection.", "showSize": "Shows the size of each file." } } ================================================ FILE: packages/api-generator/src/locale/en/VFooter.json ================================================ { "props": { "app": "Determines the position of the footer. If true, the footer would be given a fixed position at the bottom of the viewport. If false, the footer is set to the bottom of the page." } } ================================================ FILE: packages/api-generator/src/locale/en/VForm.json ================================================ { "events": { "submit": "Emitted when form is submitted.", "update:modelValue": "Event emitted when the form's validity changes." }, "exposed": { "errors": "Contains all current form input errors.", "isDisabled": "Indicates if form is disabled or not.", "isReadonly": "Indicates if form is readonly or not.", "isValid": "Indicates if form is valid or not.", "isValidating": "Indicates if form is currently being validated or not.", "items": "Array of all registered inputs.", "reset": "Resets validation of all registered inputs, and clears their values.", "resetValidation": "Resets validation of all registered inputs without modifying their values.", "validate": "Validates all registered inputs." } } ================================================ FILE: packages/api-generator/src/locale/en/VHotkey.json ================================================ { "props": { "keys": "String representing keyboard shortcuts to display. Supports multiple formats:\n- **Single keys:** `\"k\"`, `\"enter\"`, `\"escape\"`\n- **Key combinations:** `\"ctrl+k\"`, `\"meta+shift+p\"`, `\"alt+arrowup\"`\n- **Sequential actions:** `\"ctrl+k-then-p\"` (use dash for 'then' relationships)\n- **Multiple shortcuts:** `\"ctrl+k meta+p\"` (space-separated for alternative shortcuts)\n\nSupports platform-aware key names like `meta` (becomes Cmd on Mac, Ctrl on PC) and `alt` (becomes Option on Mac).", "displayMode": "Controls how keyboard keys are visually represented. Affects the entire component's appearance:\n- **icon:** Uses SVG icons for keys when appropriate (default)\n- **symbol:** Uses Unicode symbols (⌘, ⌃, ⇧, ⌥) - Allows you to manage presentation of modifier keys with fonts\n- **text:** Uses full text labels (Command, Control, Shift, Alt) - most accessible and descriptive", "keyMap": "Custom key mapping object that defines how individual keys should be displayed. Users can import and modify the exported `hotkeyMap` to create custom configurations. Each key maps to a `PlatformKeyConfig` object with:\n\n```typescript\n{\n mac?: { symbol?: string, icon?: string, text: string },\n default: { symbol?: string, icon?: string, text: string }\n}\n```\n\n**Usage Example:**\n```typescript\nimport { hotkeyMap } from 'vuetify/labs/VHotkey'\n\nconst customKeyMap = {\n ...hotkeyMap,\n 'custom-key': {\n default: { text: 'Custom', icon: 'custom-icon' },\n mac: { text: 'Custom', symbol: '⚡' }\n }\n}\n```\n\nThis enables:\n- **Custom key definitions:** Add support for application-specific keys\n- **Localization:** Override text representations for different languages\n- **Brand customization:** Change how modifier keys appear\n- **Platform-specific styling:** Different representations for Mac vs other platforms\n\nRecommended to set at the application level via component defaults rather than per-instance for consistency.", "platform": "Controls platform-specific rendering behavior for keyboard shortcuts. Accepts three values:\n- **`'auto'` (default):** Automatically detects the user's platform based on user agent and renders appropriately\n- **`'mac'`:** Forces Mac-style rendering (Command symbols, icons, Option key, etc.)\n- **`'pc'`:** Forces PC-style rendering (Ctrl text, Alt key, etc.)\n\nThis is particularly useful for:\n- **Cross-platform testing:** Verify how shortcuts appear on different platforms\n- **Design consistency:** Ensure specific platform rendering in demos and prototypes\n- **Development workflow:** Test platform-specific behaviors without switching devices\n- **Documentation:** Show platform-specific examples in help content", "inline": "Optimizes the component for seamless integration within text content and documentation. Applies compact styling with baseline alignment, constrained height (1lh), and responsive typography that inherits from parent text. Ideal for help documentation, tooltips, and instructional content. When using multiple inline hotkeys in the same paragraph, increase line-height to prevent visual overlap on text wrapping.", "variant": "Controls the visual style and presentation of the hotkey component. Supports standard Vuetify variants plus a special contained variant:\n\n**Standard Variants** (apply styling to individual key elements):\n- **elevated (default):** Raised appearance with shadow, good for standalone hotkey displays\n- **flat:** Solid background without shadow, clean and minimal\n- **tonal:** Subtle tinted background without border, balances visibility with restraint\n- **outlined:** Border-only styling without elevation, lightweight and unobtrusive\n- **text:** Minimal styling with text color emphasis only, blends with content\n- **plain:** No background or border, most subtle option\n\n**Special Variant** (different visual structure):\n- **contained:** Follows MDN's nested `` pattern - wraps all keys in a single styled container with unstyled nested elements. Creates a cohesive visual unit that clearly groups related keys together. Cannot be combined with standard variants. Ideal for complex key combinations where you want to show the entire sequence as one unit.", "disabled": "Applies a disabled visual state to the component.", "prefix": "Text to display before the hotkey.", "suffix": "Text to display after the hotkey." }, "slots": { "default": "The default Vue slot. Not supported." } } ================================================ FILE: packages/api-generator/src/locale/en/VHover.json ================================================ { "props": { "disabled": "Removes hover functionality." } } ================================================ FILE: packages/api-generator/src/locale/en/VIconBtn.json ================================================ { "props": { "active": "When undefined (default), the component utilizes its default variant, otherwise it will use the activeVariant if active is true, or the baseVariant if active is false.", "activeIcon": "When active is a boolean, this icon is used when active is true.", "activeVariant": "When active is a boolean, this variant is used when active is true.", "baseVariant": "When active is a boolean, this variant is used when active is false.", "hideOverlay": "Hides overlay from being displayed when active or focused.", "iconColor": "Explicit color applied to the icon.", "loading": "Displays circular progress bar in place of the icon.", "readonly": "Puts the button in a readonly state. Cannot be clicked or navigated to by keyboard.", "rotate": "The rotation of the icon in degrees.", "sizes": "An array of tuples that define the button sizes for each named size." }, "events": { "update:active": "Event that is emitted when the active state changes." } } ================================================ FILE: packages/api-generator/src/locale/en/VImg.json ================================================ { "props": { "absolute": "Applies position: absolute to the component.", "alt": "Alternate text for screen readers. Leave empty for decorative images.", "aspectRatio": "Calculated as `width/height`, so for a 1920x1080px image this will be `1.7778`. Will be calculated automatically if omitted.", "cover": "Resizes the background image to cover the entire container.", "draggable": "Controls the `draggable` behavior of the image. See [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/draggable).", "lazySrc": "Something to show while waiting for the main image to load, typically a small base64-encoded thumbnail. Has a slight blur filter applied. \nNOTE: This prop has no effect unless either `height` or `aspect-ratio` are provided.", "crossorigin": "Specify that images should be fetched with CORS enabled [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#crossorigin)", "position": "Applies [object-position](https://developer.mozilla.org/en-US/docs/Web/CSS/object-position) styles to the image and placeholder elements.", "referrerpolicy": "Define which referrer is sent when fetching the resource [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#referrerpolicy)", "options": "Options that are passed to the [Intersection observer](https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API) constructor.", "sizes": "For use with `srcset`, see [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#attr-sizes).", "src": "The image URL. This prop is mandatory.", "srcset": "A set of alternate images to use based on device size. [Read more...](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#attr-srcset).", "transition": "The transition to use when switching from `lazy-src` to `src`. Can be one of the [built in](/styles/transitions/) or custom transition.", "gradient": "The gradient to apply to the image. Only supports [linear-gradient](https://developer.mozilla.org/en-US/docs/Web/CSS/gradient/linear-gradient) syntax, anything else should be done with classes.", "imageClass": "Applies CSS classes to the inner `` element." }, "slots": { "placeholder": "Display an overlay while the image is loading.", "error": "Will be shown if the image fails to load, replacing the placeholder slot.", "sources": "A list of `` elements. If this slot is used v-img will render a `` instead of ``." }, "events": { "error": "Emitted if the image fails to load.", "load": "Emitted when the image is loaded.", "loadstart": "Emitted when the image starts to load." }, "exposed": { "currentSrc": "The current source of the image. This is the image that is currently being displayed. This is useful for determining if the image is loading or not.", "image": "The image element.", "naturalHeight": "The natural height of the image.", "naturalWidth": "The natural width of the image.", "state": "The current state of the image. This is useful for determining if the image is loading or not." } } ================================================ FILE: packages/api-generator/src/locale/en/VInfiniteScroll.json ================================================ { "props": { "direction": "Specifies if scroller is **vertical** or **horizontal**.", "emptyText": "Text shown when there is no more content to load.", "loadMoreText": "Text shown in default load more button, when in manual mode.", "margin": "Value sent to the intersection observer. Will make the observer trigger earlier, by the margin (px) value supplied.", "mode": "Specifies if content should load automatically when scrolling (**intersect**) or manually (**manual**).", "side": "Specifies the side where new content should appear. Either the **start**, **end**, or **both** sides." }, "slots": { "empty": "Shown when load returned status 'empty'.", "error": "Shown when load returned status 'error'.", "load-more": "Shown when scrolled to either side of the content, in manual mode.", "loading": "Shown when content is loading." }, "events": { "load": "Emitted when reaching the start / end threshold, or if triggered when using manual mode." }, "exposed": { "reset": "Resets side status to 'ok' letting it trigger 'load' again. Useful to prevent given side being stuck in 'empty' or 'error' state." } } ================================================ FILE: packages/api-generator/src/locale/en/VInput.json ================================================ { "props": { "baseColor": "Sets the color of the input when it is not focused.", "centerAffix": "Vertically align **appendInner**, **prependInner**, **clearIcon** and **label** in the center.", "direction": "Changes the direction of the input.", "hideDetails": "Hides hint and validation errors. When set to `auto` messages will be rendered only if there's a message (hint, error message, counter value etc) to display.", "hideSpinButtons": "Hides spin buttons on the input when type is set to `number`.", "glow": "Makes prepend/append icons full opacity when the input is focused and apply color.", "hint": "Displays hint text below the input when focused. Force this always open with the [persistent-hint](#props-persistent-hint) property.", "iconColor": "Sets the color of the prepend/append icons.", "id": "Sets the DOM id on the component.", "indentDetails": "Adds / removes inline padding in inputs details. Useful when trying to align different variants of fields and selection controls.", "persistentHint": "Forces [hint](#props-hint) to always be visible.", "prependIcon": "Prepends an icon to the component, uses the same syntax as `v-icon`." }, "events": { "click:append": "Emitted when appended icon is clicked.", "click:prepend": "Emitted when prepended icon is clicked." }, "exposed": { "errorMessages": "An array of error messages that were set by the `setErrors` method.", "isValid": "Boolean indicating if the input is valid.", "reset": "Resets the input value.", "resetValidation": "Resets validation of the input without modifying its value.", "validate": "Validates the input's value." } } ================================================ FILE: packages/api-generator/src/locale/en/VItemGroup.json ================================================ { "props": { "selectedClass": "Configure the selected CSS class. This class will be available in `v-item` default scoped slot." } } ================================================ FILE: packages/api-generator/src/locale/en/VLayout.json ================================================ {} ================================================ FILE: packages/api-generator/src/locale/en/VLayoutItem.json ================================================ { "props": { "position": "The position of the item." } } ================================================ FILE: packages/api-generator/src/locale/en/VLazy.json ================================================ { "props": { "options": "Options that are passed to the [Intersection observer](https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API) constructor." } } ================================================ FILE: packages/api-generator/src/locale/en/VList.json ================================================ { "props": { "activeColor": "Deprecated, use `color` instead.", "activatable": "Designates whether the list items are activatable. Additionally, sets necessary accessibility attributes internally.", "disabled": "Puts all children inputs into a disabled state.", "filterable": "**FOR INTERNAL USE ONLY** Prevents list item selection using [space] key and pass it back to the text input. Used internally for VAutocomplete and VCombobox.", "itemsRegistration": "When set to 'props', skips rendering collapsed items/nodes (for significant performance gains).", "lines": "Designates a **minimum-height** for all children `v-list-item` components. This prop uses [line-clamp](https://developer.mozilla.org/en-US/docs/Web/CSS/-webkit-line-clamp) and is not supported in all browsers.", "nav": "An alternative styling that reduces `v-list-item` width and rounds the corners. Typically used with **[v-navigation-drawer](/components/navigation-drawers)**.", "navigationIndex": "Specifies the currently selected navigation index when using `navigationStrategy=\"track\"`. Can be used with `v-model:navigationIndex` for two-way binding. Items at this index receive visual keyboard focus styling and automatic scrolling. Note: Only works with the `items` prop, not with slotted items.", "navigationStrategy": "Determines keyboard navigation behavior. **focus** (default) moves DOM focus to items, suitable for traditional lists. **track** provides visual keyboard focus without moving DOM focus, ideal for command palettes and autocomplete where an external element retains focus. When track mode is active, items automatically receive `tabindex=\"-1\"`, proper `aria-activedescendant` is set on the list container, and keyboard-focused items display focus-visible styling with auto-scrolling.", "slim": "Reduces horizontal spacing for badges, icons, tooltips, and avatars within slim list items to create a more compact visual representation.", "prependGap": "Sets the horizontal spacing between prepend slot and the main content within list item. Also affects indent to ensure expected alignment of group children.", "indent": "Overrides the indent size for nested groups.", "collapseIcon": "Icon to display when the list item is expanded.", "expandIcon": "Icon to display when the list item is collapsed.", "selectable": "Designates whether the list items are selectable. Additionally, sets necessary accessibility attributes internally." }, "events": { "click:activate": "Emitted when the list item is activated.", "click:open": "Emitted when the list item is opened.", "click:select": "Emitted when the list item is selected.", "update:activated": "Emitted when the list item is activated.", "update:navigationIndex": "Emitted when keyboard navigation occurs in `navigationStrategy=\"track\"`. The event payload is the new index of the selected item. Automatically skips non-selectable items like dividers and subheaders.", "update:opened": "Emitted when the list item is opened.", "update:selected": "Emitted when the list item is selected." }, "slots": { "item": "Slot for rendering custom list items. Receives `{ props }` where `props` contains item data (`title`, `subtitle`, `value`, etc.) plus `index` (the item's position in the list). Use this to completely customize item rendering while still using VList's navigation and selection features.", "header": "Slot for rendering custom group headers when using nested items. Receives `{ props }` containing the group's header item data plus activator props for expand/collapse functionality." }, "exposed": { "children": "The nested list items within the component.", "focus": "Focus the list item.", "getPath": "Get the position of an item within the nested structure.", "navigationIndex": "A computed ref that returns the current navigation index when using `navigationStrategy=\"track\"`. Returns -1 when no item is selected or when using `navigationStrategy=\"focus\"`.", "open": "Open the list item.", "parents": "The parent list items within the component." } } ================================================ FILE: packages/api-generator/src/locale/en/VListGroup.json ================================================ { "props": { "activeColor": "Deprecated, use `color` instead.", "disabled": "Puts all children inputs into a disabled state.", "collapseIcon": "Icon to display when the list item is expanded.", "expandIcon": "Icon to display when the list item is collapsed.", "prependIcon": "Prepends an icon to the component, uses the same syntax as `v-icon`.", "rawId": "Defines the root element's id attribute in the component. If it is provided, the id attribute will be dynamically generated in the format: \"v-list-group--id-[rawId]\".", "subgroup": "Designate the component as nested list group.", "value": "Expands / Collapse the list-group.", "fluid": "Removes the left padding assigned for action icons from group items." }, "exposed": { "isOpen": "Returns the current state of the list-group." } } ================================================ FILE: packages/api-generator/src/locale/en/VListItem.json ================================================ { "props": { "active": "Controls the **active** state of the item. This is typically used to highlight the component.", "activeColor": "Deprecated, use `color` instead.", "color": "Applies specified color to the control when in an **active** state or **input-value** is **true** - supports utility colors (for example `success` or `purple`) or css color (`#033` or `rgba(255, 0, 0, 0.5)`). Find a list of built-in classes on the [colors page](/styles/colors#material-colors),", "title": "Generates a `v-list-item-title` component with the supplied value. Note that this overrides the native [`title`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/title) attribute, that must be set with `v-bind:title.attr` instead.", "value": "The value used for selection. Obtained from [`v-list`](/api/v-list)'s `v-model:selected` when the item is selected.", "lines": "The line declaration specifies the minimum height of the item and can also be controlled from v-list with the same prop.", "nav": "Reduces the width v-list-item takes up as well as adding a border radius.", "slim": "Reduces horizontal spacing for badges, icons, tooltips, and avatars to create a more compact visual representation.", "index": "The index of the item within the list. Used internally for keyboard navigation and selection.", "tabindex": "Controls the tabindex of the list item. When set, overrides the default tabindex behavior. Automatically set to -1 by VList when using `navigationStrategy=\"track\"` to prevent Tab key navigation into items." }, "exposed": { "activate": "Activate the list item.", "id": "The unique identifier of the list item.", "isActivated": "Check if the list item is activated.", "isGroupActivator": "Check if the list item activates a group.", "isSelected": "Check if the list item is selected.", "link": "Navigation information if list item functions as a link.", "list": "The reference to the parent list component.", "root": "The root nested list component", "select": "Select this list item." } } ================================================ FILE: packages/api-generator/src/locale/en/VListSubheader.json ================================================ { "props": { "tag": "Specify a custom tag used on the root element.", "title": "Specify a title text for the component.", "inset": "Insets the subheader without additional spacing, aligning it flush with the surrounding content.", "sticky": "Sticks the header to the top of the table." } } ================================================ FILE: packages/api-generator/src/locale/en/VLocaleProvider.json ================================================ { "props": { "fallbackLocale": "Specify a fallback locale to use when a locale is not found.", "locale": "Specify a locale to use.", "rtl": "Specify a RTL mode." } } ================================================ FILE: packages/api-generator/src/locale/en/VMain.json ================================================ { "props": { "scrollable": "Specify a custom scrollable function." } } ================================================ FILE: packages/api-generator/src/locale/en/VMenu.json ================================================ { "props": { "attach": "Specifies which DOM element the overlay content should teleport to. Can be a direct element reference, querySelector string, or `true` to disable teleporting. Uses `body` by default. Generally not recommended except as a last resort: the default positioning algorithm should handle most scenarios better than is possible without teleporting, and you may have unexpected behavior if the menu ends up as child of its activator.", "id": "The unique identifier of the component.", "closeOnContentClick": "Designates if menu should close when its content is clicked.", "closeDelay": "Milliseconds to wait before closing component. Only works with the **open-on-hover** prop.", "disableInitialFocus": "Deprecated, use `capture-focus` instead. Prevents automatic redirect of first `focusin` event. Intended to use on permanently open menus or VSpeedDial.", "minWidth": "Sets the minimum width for the component. Use `auto` to use the activator width.", "openDelay": "Milliseconds to wait before opening component. Only works with the **open-on-hover** prop.", "openOnClick": "Designates whether menu should open on activator click.", "openOnHover": "Designates whether menu should open on activator hover.", "submenu": "Opens with right arrow and closes on left instead of up/down. Implies `location=\"end\"`. Directions are reversed for RTL." }, "exposed": { "animateClick": "Function invoked when user clicks outside.", "globalTop": "Used by activator to determine a components position in the global stack order.", "id": "The unique identifier of the component.", "localTop": "Used by activator to determine a components position in the local stack order.", "target": "Ref to the current target element.", "updateLocation": "Function used for locationStrategy positioning." } } ================================================ FILE: packages/api-generator/src/locale/en/VMessages.json ================================================ { "props": { "active": "Determines whether the messages are visible or not." } } ================================================ FILE: packages/api-generator/src/locale/en/VNavigationDrawer.json ================================================ { "props": { "disableResizeWatcher": "Prevents the automatic opening or closing of the drawer when resized, based on whether the device is mobile or desktop.", "disableRouteWatcher": "Disables opening of navigation drawer when route changes.", "expandOnHover": "Collapses the drawer to a **rail-variant** until hovering with the mouse.", "floating": "A floating drawer has no visible container (no border-right).", "image": "Apply a specific background image to the component.", "mobileBreakpoint": "Sets the designated mobile breakpoint for the component. This will apply alternate styles for mobile devices such as the `temporary` prop, or activate the `bottom` prop when the breakpoint value is met. Setting the value to `0` will disable this functionality.", "permanent": "The drawer remains visible regardless of screen size.", "rail": "Sets the component width to the **rail-width** value.", "railWidth": "Sets the width for the component when `rail` is enabled.", "scrim": "Determines whether an overlay is used when a **temporary** drawer is open. Accepts true/false to enable background, and string to define color.", "temporary": "A temporary drawer sits above its application and uses a scrim (overlay) to darken the background.", "touchless": "Disable mobile touch functionality.", "location": "Controls the edge of the screen the drawer is attached to.", "sticky": "When true, the drawer will remain visible when scrolling past the top of the page." }, "slots": { "append": "A slot at the bottom of the drawer.", "image": "Used to modify `v-img` properties when using the **src** prop.", "prepend": "A slot at the top of the drawer" }, "events": { "update:rail": "Event that is emitted when the rail model changes." }, "exposed": { "isStuck": "Used to determine if the drawer is stuck to the top of the page." } } ================================================ FILE: packages/api-generator/src/locale/en/VNumberInput.json ================================================ { "props": { "controlVariant": "The color of the control. It defaults to the value of `variant` prop.", "decimalSeparator": "Expects single character to be used as decimal separator.", "hideInput": "Hide the input field.", "inset": "Applies an indentation to the dividers used in the stepper buttons.", "max": "Specifies the maximum allowable value for the input.", "min": "Specifies the minimum allowable value for the input.", "minFractionDigits": "Specifies the minimum fraction digits to be displayed (capped to `precision`). Defaults to `precision` when not explicitly set.", "precision": "Enforces strict precision. It is expected to be an integer value in range between `0` and `15`, or null for unrestricted.", "step": "Defines the interval between allowed values when the user increments or decrements the input", "type": "**IGNORED** underlying input is always of type 'text'" }, "slots": { "decrement": "Slot for customizing the decrement button or icon used to decrease the value of the input.", "increment": "Slot for customizing the increment button or icon used to increase the value of the input." } } ================================================ FILE: packages/api-generator/src/locale/en/VOtpInput.json ================================================ { "props": { "autofocus": "Automatically focuses the first input on page load", "divider": "Specifies the dividing character between items.", "focusAll": "Puts all inputs into a focus state when any are focused", "length": "The OTP field's length.", "placeholder": "Sets the input’s placeholder text.", "masked": "Hides the entered characters with bullets, similar to a password input, but makes it possible to also restrict characters to digits with `type=\"number\"`.", "type": "Supported types: `text`, `password`, `number`." }, "events": { "finish": "Emitted when the input is filled completely and cursor is blurred." }, "exposed": { "reset": "Reset's the input model to an empty array" } } ================================================ FILE: packages/api-generator/src/locale/en/VOverflowBtn.json ================================================ { "props": { "editable": "Creates an editable button.", "overflow": "Creates an overflow button.", "persistentPlaceholder": "Forces label to always be visible.", "segmented": "Creates a segmented button." } } ================================================ FILE: packages/api-generator/src/locale/en/VOverlay-activator.json ================================================ { "props": { "activator": "Explicitly sets the overlay's activator.", "activatorProps": "Apply custom properties to the activator.", "contentProps": "Apply custom properties to the content.", "closeOnContentClick": "Closes component when you click on its content.", "location": "Specifies the anchor point for positioning the component, using directional cues to align it either horizontally, vertically, or both..", "openOnClick": "Activate the component when the activator is clicked.", "openOnFocus": "Activate the component when the activator is focused.", "openOnHover": "Activate the component when the activator is hovered.", "target": "For locationStrategy=\"connected\", specify an element or array of x,y coordinates that the overlay should position itself relative to. This will be the activator element by default." } } ================================================ FILE: packages/api-generator/src/locale/en/VOverlay-location-strategies.json ================================================ { "props": { "locationStrategy": "A function used to specifies how the component should position relative to its activator.", "offset": "Increases distance from the target. When passed as a pair of numbers, the second value shifts anchor along the side and away from the target.", "stickToTarget": "Enables the overlay content to go off-screen when scrolling.", "viewportMargin": "Sets custom viewport margin for the overlay content" } } ================================================ FILE: packages/api-generator/src/locale/en/VOverlay-scroll-strategies.json ================================================ { "props": { "scrollStrategy": "Strategy used when the component is activate and user scrolls." } } ================================================ FILE: packages/api-generator/src/locale/en/VOverlay.json ================================================ { "props": { "absolute": "Applies **position: absolute** to the content element.", "attach": "Specifies which DOM element the overlay content should teleport to. Can be a direct element reference, querySelector string, or `true` to disable teleporting. Uses `body` by default.", "closeOnBack": "Closes the overlay content when the browser's back button is pressed or `$router.back()` is called, cancelling the original navigation. `persistent` overlays will cancel navigation and animate as if they were clicked outside instead of closing.", "contained": "Limits the size of the component and scrim to its offset parent. Implies `absolute` and `attach`. (Note: The parent element must have position: relative.).", "noClickAnimation": "Disables the bounce effect when clicking outside of the content element when using the persistent prop.", "opacity": "Sets the opacity of the scrim element. Only applies if `scrim` is enabled.", "persistent": "Clicking outside of the element or pressing esc key will not deactivate it.", "scrim": "Accepts true/false to enable background, and string to define color.", "zIndex": "The z-index used for the component." }, "events": { "click:outside": "Event that fires when clicking outside an active overlay.", "afterLeave": "Event that fires after the overlay has finished transitioning out.", "afterEnter": "Event that fires after the overlay has finished transitioning in.", "keydown": "Emitted when **any** key is pressed." }, "exposed": { "activatorEl": "Ref to the current activator element.", "animateClick": "Function invoked when user clicks outside.", "contentEl": "Ref to the current content element.", "globalTop": "Used by activator to determine a components position in the global stack order.", "localTop": "Used by activator to determine a components position in the local stack order.", "rootEl": "Ref to the root v-overlay element.", "scrimEl": "Ref to the current scrim element.", "target": "Ref to the current target element.", "updateLocation": "Function used for locationStrategy positioning." } } ================================================ FILE: packages/api-generator/src/locale/en/VPagination.json ================================================ { "props": { "ariaLabel": "Label for the root element.", "color": "Applies specified color to the selected page button - supports utility colors (for example `success` or `purple`) or css color (`#033` or `rgba(255, 0, 0, 0.5)`). Find a list of built-in classes on the [colors page](/styles/colors#material-colors).", "currentPageAriaLabel": "Label for the currently selected page.", "ellipsis": "Text to show between page buttons when truncating the list.", "firstAriaLabel": "Label for the go to first button.", "firstIcon": "The icon to use for the first button.", "lastAriaLabel": "Label for the go to last button.", "lastIcon": "The icon to use for the last button.", "length": "The number of pages.", "nextAriaLabel": "Label for the next button.", "nextIcon": "The icon to use for the next button.", "pageAriaLabel": "Label for each page button.", "prevIcon": "The icon to use for the prev button.", "previousAriaLabel": "Label for the previous button.", "showFirstLastPage": "Show buttons for going to first and last page.", "start": "Specify the starting page.", "totalVisible": "Specify the total visible pagination numbers." }, "slots": { "first": "Define a custom appearance for the first button.", "last": "Define a custom appearance for the last button.", "next": "Define a custom appearance for the next button.", "prev": "Define a custom appearance for the previous button." }, "events": { "first": "Emitted when clicking on go to first button.", "last": "Emitted when clicking on go to last button.", "next": "Emitted when clicking on go to next button.", "prev": "Emitted when clicking on go to previous button." } } ================================================ FILE: packages/api-generator/src/locale/en/VParallax.json ================================================ { "props": { "scale": "The scale of the parallax image." }, "slots": { "error": "Puts the input in a manual error state.", "placeholder": "Sets the input's placeholder text.", "sources": "A list of `` elements." } } ================================================ FILE: packages/api-generator/src/locale/en/VPicker.json ================================================ { "props": { "divided": "Adds a divider between the header and controls.", "landscape": "Puts the picker into landscape mode.", "hideHeader": "Hide the picker header.", "hideTitle": "Hide the picker title." }, "slots": { "actions": "Slot for customizing the content in the actions area", "header": "Slot for the component's header content." } } ================================================ FILE: packages/api-generator/src/locale/en/VPie.json ================================================ { "props": { "gaugeCut": "Allows removing bottom part of the chart to make it into a gauge. Expects angle (0-180).", "hoverScale": "Enables interactive behavior by reducing segment size until it gets hovered. Expects fraction value (0-0.25).", "innerCut": "Specifies inner radius for a donut-style chart as a percent (0-100). Without `hide-slice`, inner slice is visible with translucent color matching the item.", "items": "Data items expected to contain `key`, `title` and `value`.", "legend": "Controls legend visibility, position and text format.", "palette": "Defines colors and patterns to be applied based on the data items order. Data items can also define their colors.", "rotate": "Rotates the chart segments clockwise.", "size": "Sets the height and width of the chart (excluding title and legend).", "tooltip": "Controls tooltip visibility, transition, offset from the cursor and formats of title and subtitle." }, "slots": { "center": "Slot used to put custom content in the center of the chart", "legend": "Slot used to override how legend is being displayed", "legend-text": "Slot used to customize as text content of single legend item", "title": "Slot used to customize the title above the chart", "tooltip": "Slot used to customize tooltip content" } } ================================================ FILE: packages/api-generator/src/locale/en/VPieSegment.json ================================================ { "props": { "animation": "Controls duration and easing of the expand/collapse and hover effect. Defaults to `easeInOutCubic` over 400ms.", "color": "Sets segment color to be passed straight to CSS style attribute.", "gap": "Reduces segment size by a specified angle. Recommended to in range (0-10).", "hideSlice": "Makes inner slice invisible instead of semi-transparent.", "innerCut": "Sets inner slice size in percent (0-100).", "pattern": "Decal pattern to put on top of the outer slice.", "rotate": "Sets segment offset angle.", "rounded": "Number passed as corner radius relative to 100x100 SVG viewport", "value": "The value used for calculate segment/arc angle size.", "hoverScale": "Reduces outer radius until segment is hovered. Expects fraction value (0-0.25)", "reveal": "Enables and controls duration for initial reveal animation. Easing function is shared with `animation` prop." }, "events": { "update:active": "Emitted when the segment's active (hovered) state changes." } } ================================================ FILE: packages/api-generator/src/locale/en/VPieTooltip.json ================================================ { "props": { "item": "Data item related to hovered segment", "titleFormat": "Formatter definition or function. When passed as String macros for `[title]` and `[value]` get replaced dynamically.", "subtitleFormat": "Formatter definition or function. When passed as String macros for `[title]` and `[value]` get replaced dynamically.", "target": "The coordinates used to position the tooltip.", "transition": "The transition used when hovering between chart segments" } } ================================================ FILE: packages/api-generator/src/locale/en/VProgress.json ================================================ { "props": { "absolute": "Positions the component absolutely within its parent, centering the progress indicator and placing details without affecting layout.", "type": "Determines which progress indicator to render.", "label": "Text displayed alongside the progress indicator and placed in `aria-label`.", "detailsPosition": "Controls the position of the details (label and value) relative to the progress indicator.", "max": "Sets the maximum value for the progress indicator.", "hideLabel": "Hides the label text.", "hideValue": "Hides the value text.", "valueFormat": "Formatter for the visible value text and `aria-valuetext`. Use `[value]` and `[max]` as placeholders in strings, or pass a function that receives `{ value, max }` and returns a string." }, "slots": { "label": "Slot for custom label content.", "value": "Slot for custom value content." } } ================================================ FILE: packages/api-generator/src/locale/en/VProgressCircular.json ================================================ { "props": { "indeterminate": "Constantly animates, use when loading progress is unknown. If set to the string `'disable-shrink'` it will use a simpler animation that does not run on the main thread.", "reveal": "Animates the progress circle from 0 to its model value when the component mounts.", "rounded": "Rounds the ends of the progress arc for a softer appearance. When enabled, the progress stroke will have rounded caps instead of square ends.", "modelValue": "The percentage value for current progress.", "rotate": "Rotates the circle start point in degrees.", "size": "Sets the diameter of the circle in pixels.", "width": "Sets the stroke of the circle in pixels." } } ================================================ FILE: packages/api-generator/src/locale/en/VProgressLinear.json ================================================ { "props": { "absolute": "Applies position: absolute to the component.", "active": "Reduce the height to 0, hiding component.", "bgOpacity": "Background opacity, if null it defaults to 0.3 if background color is not specified or 1 otherwise.", "bufferColor": "Sets the color of the buffer bar.", "bufferOpacity": "Set the opacity of the buffer bar.", "bufferValue": "The percentage value for the buffer.", "chunkCount": "Specifies amount of chunks to divide the bar into.", "chunkGap": "Defines size of the gap between chunks.", "chunkWidth": "Defines chunk absolute size. Useful when chunk is narrow.", "clickable": "Clicking on the progress track will automatically set the value.", "indeterminate": "Constantly animates, use when loading progress is unknown.", "max": "Sets the maximum value the progress can reach.", "opacity": "Set the opacity of the progress bar.", "reverse": "Displays reversed progress (right to left in LTR mode and left to right in RTL).", "roundedBar": "Applies a border radius to the progress bar.", "stream": "An alternative style for portraying loading that works in tandem with **buffer-value**.", "striped": "Adds a stripe background to the filled portion of the progress component." }, "slots": { "default": "Provides the current value of the component." } } ================================================ FILE: packages/api-generator/src/locale/en/VPullToRefresh.json ================================================ { "props": { "pullDownThreshold": "The distance the user must pull down to trigger a refresh." }, "events": { "load": "Emitted when the user pulls down past the threshold." }, "slots": { "pullDownPanel": "Slot to override the display of the progress indicator after a pull down" } } ================================================ FILE: packages/api-generator/src/locale/en/VRadio.json ================================================ { "props": { "falseIcon": "The icon used when inactive.", "trueIcon": "The icon used when active." } } ================================================ FILE: packages/api-generator/src/locale/en/VRadioGroup.json ================================================ { "props": { "inline": "Displays radio buttons in row." } } ================================================ FILE: packages/api-generator/src/locale/en/VRangeSlider.json ================================================ { "props": { "strict": "Disallows dragging the ending thumb past the starting thumb and vice versa." }, "slots": { "thumb-label": "Slot for the thumb label.", "tick-label": "Slot for the tick label." }, "events": { "end": "Slider value emitted at the end of slider movement.", "start": "Slider value emitted at start of slider movement." }, "exposed": { "focus": "Focus the first slider handle" } } ================================================ FILE: packages/api-generator/src/locale/en/VRating.json ================================================ { "props": { "clearable": "Allows for the component to be cleared by clicking on the current value.", "emptyIcon": "The icon displayed when empty.", "fullIcon": "The icon displayed when full.", "itemLabels": "Array of labels to display next to each item..", "itemLabelPosition": "Position of item labels. Accepts 'top' and 'bottom'.", "halfIncrements": "Allows the selection of half increments.", "hover": "Provides visual feedback when hovering over icons.", "length": "The amount of items to show.", "readonly": "Removes all hover effects and pointer events.", "itemAriaLabel": "The **aria-label** used for each item." }, "slots": { "item": "The slot for each item.", "item-label": "The slot for each item label." } } ================================================ FILE: packages/api-generator/src/locale/en/VResponsive.json ================================================ { "props": { "aspectRatio": "Sets a base aspect ratio, calculated as width/height. This will only set a **minimum** height, the component can still grow if it has a lot of content.", "contentClass": "Apply a custom class to the internal content element.", "inline": "Display as an inline element instead of a block, also disables flex-grow." }, "slots": { "additional": "The slot for additional content." } } ================================================ FILE: packages/api-generator/src/locale/en/VRow.json ================================================ { "props": { "align": "Deprecated, use **align-\\*** class. Available options are: **start**, **center**, **end**, **baseline** and **stretch**.", "alignLg": "Deprecated, use **align-lg-\\*** class", "alignMd": "Deprecated, use **align-md-\\*** class", "alignSm": "Deprecated, use **align-sm-\\*** class", "alignXl": "Deprecated, use **align-xl-\\*** class", "alignXxl": "Deprecated, use **align-xxl-\\*** class", "alignContent": "Deprecated, use **align-content-\\***. Available options are: **start**, **center**, **end**, **space-between**, **space-around** and **stretch**.", "alignContentLg": "Deprecated, use **align-content-lg-\\*** class", "alignContentMd": "Deprecated, use **align-content-md-\\*** class", "alignContentSm": "Deprecated, use **align-content-sm-\\*** class", "alignContentXl": "Deprecated, use **align-content-xl-\\*** class", "alignContentXxl": "Deprecated, use **align-content-xxl-\\*** class", "dense": "Deprecated, use `density` with **comfortable** instead.", "density": "Adjusts the spacing between `v-col`s. Available options are: **default**, **comfortable**, **compact**.", "justify": "Deprecated, use **justify-\\***. Available options are: **start**, **center**, **end**, **space-between** and **space-around**.", "justifyLg": "Deprecated, use **justify-lg-\\*** class", "justifyMd": "Deprecated, use **justify-md-\\*** class", "justifySm": "Deprecated, use **justify-sm-\\*** class", "justifyXl": "Deprecated, use **justify-xl-\\*** class", "justifyXxl": "Deprecated, use **justify-xxl-\\*** class", "gap": "Sets the gap between `v-col`s. Can be a single value for both row and column gap, or the array of two values [column gap, row gap].", "noGutters": "Removes the gutter between `v-col`s (same as `gap='0'`).", "size": "Sets the number of columns." } } ================================================ FILE: packages/api-generator/src/locale/en/VSelect.json ================================================ { "props": { "chips": "Changes display of selections to chips.", "closableChips": "Enables the [closable](/api/v-chip/#props-closable) prop on all [v-chip](/components/chips/) components.", "hideSelected": "Do not display in the select menu items that are already selected.", "itemColor": "Sets color of selected items.", "itemChildren": "This property currently has **no effect**.", "items": "Can be an array of objects or strings. By default objects should have **title** and **value** properties, and can optionally have a **props** property containing any [VListItem props](/api/v-list-item/#props). Keys to use for these can be changed with the **item-title**, **item-value**, and **item-props** props.", "itemValue": "Set property of **items**'s value - **must be primitive**. Dot notation is supported. **Note:** This is currently not supported with `v-combobox` [GitHub Issue](https://github.com/vuetifyjs/vuetify/issues/5479).", "minWidth": "Sets the minimum width of the select's `v-menu` content.", "multiple": "Changes select to multiple. Accepts array for value.", "openOnClear": "When using the **clearable** prop, once cleared, the select menu will either open or stay open, depending on the current state." }, "slots": { "item": "Define a custom item appearance. The root element of this slot must be a **v-list-item** with `v-bind=\"props\"` applied. `props` includes everything required for the default select list behaviour - including title, value, click handlers, virtual scrolling, and anything else that has been added with [`item-props`](api/v-select/#props-item-props)." } } ================================================ FILE: packages/api-generator/src/locale/en/VSelectionControl.json ================================================ { "props": { "baseColor": "Sets the color of the input when it is not focused.", "value": "The value used when the component is selected in a group. If not provided, a unique ID will be used." }, "slots": { "input": "The slot used for the default input element." }, "exposed": { "isFocused": "Will return true if the component is currently focused.", "input": "Reference to the root input element." } } ================================================ FILE: packages/api-generator/src/locale/en/VSheet.json ================================================ {} ================================================ FILE: packages/api-generator/src/locale/en/VSkeletonLoader.json ================================================ { "props": { "boilerplate": "Remove the loading animation from the skeleton.", "loading": "Applies a loading animation with a on-hover loading cursor. A value of **false** will only work when there is content in the `default` slot.", "loadingText": "aria-label for the element in a loading state.", "type": "A string delimited list of skeleton components to create such as `type=\"text@3\"` or `type=\"card, list-item\"`. Will recursively generate a corresponding skeleton from the provided string. Also supports short-hand for multiple elements such as **article@3** and **paragraph@2** which will generate 3 _article_ skeletons and 2 _paragraph_ skeletons. Please see below for a list of available pre-defined options." } } ================================================ FILE: packages/api-generator/src/locale/en/VSlideGroup.json ================================================ { "props": { "centerActive": "Forces the selected component to be centered.", "contentClass": "Adds classes to the slide group item.", "direction": "Switch between horizontal and vertical modes.", "mobileBreakpoint": "Sets the designated mobile breakpoint for the component.", "nextIcon": "The appended slot when arrows are shown.", "prevIcon": "The prepended slot when arrows are shown.", "showArrows": "Change when the overflow arrow indicators are shown. By **default**, arrows *always* display on Desktop when the container is overflowing. When the container overflows on mobile, arrows are not shown by default. A **show-arrows** value of `true` allows these arrows to show on Mobile if the container overflowing. A value of `desktop` *always* displays arrows on Desktop while a value of `mobile` always displays arrows on Mobile. A value of `always` always displays arrows on Desktop *and* Mobile. Use **never** to turn arrows off. Find more information on how to customize breakpoint thresholds on the [breakpoints page](/customizing/breakpoints)." }, "slots": { "next": "The next slot.", "prev": "The prev slot." }, "exposed": { "focus": "Focus the component.", "hasNext": "Returns true if there are items after current index.", "hasPrev": "Returns true if there are items before current index.", "scrollOffset": "Scroll the component to a given index.", "scrollTo": "Scroll the component to a given index.", "selected": "Get the selected component index." } } ================================================ FILE: packages/api-generator/src/locale/en/VSlider.json ================================================ { "slots": { "thumb-label": "Slot for the thumb label.", "tick-label": "Slot for the tick label." }, "events": { "end": "Slider value emitted at the end of slider movement.", "start": "Slider value emitted at start of slider movement." }, "exposed": { "focus": "Focus the slider handle." } } ================================================ FILE: packages/api-generator/src/locale/en/VSnackbar.json ================================================ { "props": { "loading": "Displays a loading spinner in the prepend area.", "prependAvatar": "Displays an avatar in the prepend area using the provided image source.", "prependIcon": "Displays an icon in the prepend area.", "reverseTimer": "Reverses the direction of the timer progress bar, filling up instead of depleting.", "timer": "Display a progress bar that counts down until the snackbar closes. Use `bottom` to change the default placement.", "timerColor": "Sets the color of the timer progress bar.", "timeout": "Time (in milliseconds) to wait until snackbar is automatically hidden. Use `-1` to keep open indefinitely. It is recommended for this number to be between `4000` and `10000`. Changes to this property will reset the countdown.", "transition": "Sets the component transition. Can be one of the [built in](/styles/transitions/) or custom transition. Supports special location-aware mode with **slide-auto** and **scroll-auto**", "collapsed": "Alters the element size fit behind front snackbar in the queue.", "queueGap": "Sets the offset to show collapsed snackbars as a stack. Requires value in pixels.", "queueIndex": "The index position of this snackbar within a queue.", "vertical": "Stacks snackbar content on top of the actions (button)." }, "slots": { "actions": "Used to bind styles to [v-btn](/components/buttons) to match MD2 specification.", "header": "Slot for custom content above the snackbar body." }, "exposed": { "animateClick": "Function invoked when user clicks outside.", "globalTop": "Used by activator to determine a components position in the global stack order.", "localTop": "Used by activator to determine a components position in the local stack order.", "updateLocation": "Function used for locationStrategy positioning." } } ================================================ FILE: packages/api-generator/src/locale/en/VSnackbarQueue.json ================================================ { "props": { "closable": "Adds a dismiss button that closes the active snackbar.", "displayStrategy": "Determines how new snackbars are handled when the queue is full. **hold** (default) keeps new messages queued until a slot opens. **overflow** dismisses the oldest snackbar to make room for the new one.", "closeText": "The text used in the close button when using the **closable** prop.", "gap": "Sets the gap between stacked snackbars. Requires value in pixels.", "collapsed": "Puts the visible snackbars behind each other (expands on hover).", "totalVisible": "Specify the total visible snackbars." }, "exposed": { "clear": "Dismisses all visible snackbars and clears the queue." } } ================================================ FILE: packages/api-generator/src/locale/en/VSparkline.json ================================================ { "props": { "autoDraw": "Trace the length of the line when first rendered.", "autoDrawDuration": "Amount of time (in ms) to run the trace animation.", "autoDrawEasing": "The easing function to use for the trace animation.", "autoLineWidth": "Automatically expand bars to use space efficiently.", "fill": "Using the **fill** property allows you to better customize the look and feel of your sparkline.", "gradient": "An array of colors to use as a linear-gradient.", "gradientDirection": "The direction the gradient should run.", "height": "Height of the SVG trendline or bars.", "labels": "An array of string labels that correspond to the same index as its data counterpart.", "labelSize": "The label font size.", "lineWidth": "The thickness of the line, in px.", "padding": "Low `smooth` or high `line-width` values may result in cropping, increase padding to compensate.", "showLabels": "Show labels below each data point.", "smooth": "Number of px to use as a corner radius. `true` defaults to 8, `false` is 0.", "type": "Choose between a trendline or bars.", "width": "Width of the SVG trendline or bars.", "id": "The id of the component.", "itemValue": "The value of the item.", "max": "The maximum value of the sparkline.", "min": "The minimum value of the sparkline." } } ================================================ FILE: packages/api-generator/src/locale/en/VSpeedDial.json ================================================ { "props": { "openOnHover": "Opens speed-dial on hover." } } ================================================ FILE: packages/api-generator/src/locale/en/VStepper.json ================================================ { "props": { "completeIcon": "Icon to display when step is marked as completed.", "editIcon": "Icon to display when step is editable.", "errorIcon": "Icon to display when step has an error.", "flat": "Removes the stepper's elevation." }, "exposed": { "next": "Move to the next step.", "prev": "Move to the prev step." } } ================================================ FILE: packages/api-generator/src/locale/en/VStepperActions.json ================================================ { "props": { "nextText": "The text used for the Next button.", "prevText": "The text used for the Prev button." }, "events": { "click:next": "Event emitted when clicking the next button.", "click:prev": "Event emitted when clicking the prev button." }, "slots": { "next": "Slot for customizing the next step functionality", "prev": "Slot for customizing the prev step functionality" } } ================================================ FILE: packages/api-generator/src/locale/en/VStepperHeader.json ================================================ { "props": {} } ================================================ FILE: packages/api-generator/src/locale/en/VStepperItem.json ================================================ { "props": { }, "events": { }, "slots": { "icon": "Slot for customizing all stepper item icons." } } ================================================ FILE: packages/api-generator/src/locale/en/VStepperVertical.json ================================================ { "props": { "completeIcon": "Icon to display when step is marked as completed.", "editIcon": "Icon to display when step is editable.", "errorIcon": "Icon to display when step has an error." } } ================================================ FILE: packages/api-generator/src/locale/en/VStepperVerticalItem.json ================================================ { "events": { "click:finish": "Event emitted when clicking the finish button", "click:next": "Event emitted when clicking the next button", "click:prev": "Event emitted when clicking the previous button" }, "slots": { "icon": "Slot to override the icon", "next": "Slot to override the next button", "prev": "Slot to override the previous button" } } ================================================ FILE: packages/api-generator/src/locale/en/VStepperWindow.json ================================================ { "props": {} } ================================================ FILE: packages/api-generator/src/locale/en/VStepperWindowItem.json ================================================ { "props": {} } ================================================ FILE: packages/api-generator/src/locale/en/VSwitch.json ================================================ { "props": { "flat": "Display component without elevation. Default elevation for thumb is 4dp, `flat` resets it.", "indeterminate": "Sets an indeterminate state for the switch.", "inset": "Enlarge the `v-switch` track to encompass the thumb.", "loading": "Displays circular progress bar. Can either be a String which specifies which color is applied to the progress bar (any material color or theme color - primary, secondary, success, info, warning, error) or a Boolean which uses the component color (set by color prop - if it's supported by the component) or the primary color.", "multiple": "Changes expected model to an array." }, "events": { "update:indeterminate": "Event that is emitted when the component's indeterminate state changes." }, "slots": { "thumb": "Slot for custom thumb content.", "track-true": "Slot for custom track content when value is true.", "track-false": "Slot for custom track content when value is false." } } ================================================ FILE: packages/api-generator/src/locale/en/VSystemBar.json ================================================ { "props": { "height": "Sets the height for the component.", "window": "Increases the system bar height to 32px (24px default)." } } ================================================ FILE: packages/api-generator/src/locale/en/VTab.json ================================================ { "props": { "direction": "Changes the direction of the tabs. Can be either `horizontal` or `vertical`.", "hideSlider": "Hides the active tab slider component (no exit or enter animation).", "inset": "Changes the slider to take full height. Automatically propagated from VTabs.", "fixed": "Forces component to take up all available space up to their maximum width (300px), and centers it.", "sliderColor": "Applies specified color to the slider when active on that component - supports utility colors (for example `success` or `purple`) or css color (`#033` or `rgba(255, 0, 0, 0.5)`). Find a list of built-in classes on the [colors page](/styles/colors#material-colors).", "sliderTransition": "Changes slider transition to one of the predefined animation presets.", "sliderTransitionDuration": "Applies custom slider transition duration. Default duration depends on transition type (fade: 400, grow: 350, shift: 225).", "stacked": "Displays the tab as a flex-column." } } ================================================ FILE: packages/api-generator/src/locale/en/VTable.json ================================================ { "props": { "fixedFooter": "Use the fixed-footer prop together with the height prop to fix the footer to the bottom of the table.", "fixedHeader": "Use the fixed-header prop together with the height prop to fix the header to the top of the table.", "height": "Use the height prop to set the height of the table.", "hover": "Will add a hover effect to a table's row when the mouse is over it.", "striped": "Applies a background to either **even** or **odd** rows." }, "slots": { "bottom": "Slot to add content below the table.", "top": "Slot to add content above the table.", "wrapper": "Slots for custom rendering of the table wrapper." } } ================================================ FILE: packages/api-generator/src/locale/en/VTabs.json ================================================ { "props": { "alignTabs": "Aligns the tabs to the `start`, `center`, or `end` of container. Also accepts `title` to align with the `v-toolbar-title` component.", "color": "Applies specified color to the selected tab - supports utility colors (for example `success` or `purple`) or css color (`#033` or `rgba(255, 0, 0, 0.5)`). Find a list of built-in classes on the [colors page](/styles/colors#material-colors).", "centerActive": "Forces the selected tab to be centered.", "direction": "Changes the direction of the tabs. Can be either `horizontal` or `vertical`.", "fixedTabs": "Tabs will be centered and each tab item will grow up to 300px width.", "grow": "Forces tabs to take up all available space.", "height": "Sets the height of the tabs bar.", "hideSlider": "Hide's the generated `v-tabs-slider`.", "inset": "Changes the slider to take full height. Tabs will also get some spacing and customizable rounding.", "insetPadding": "Sets custom spacing between tabs for `inset` mode.", "insetRadius": "Sets custom border radius for the tabs container `inset` mode. Rounding for individual tabs is calculated by subtracting the padding.", "items": "The items to display in the component. This can be an array of strings or objects with a property `text`.", "mobileBreakpoint": "Sets the designated mobile breakpoint for the component.", "prevIcon": "Left pagination icon.", "nextIcon": "Right pagination icon.", "showArrows": "Show pagination arrows if the tab items overflow their container. For mobile devices, arrows will only display when using this prop.", "sliderColor": "Changes the background color of an auto-generated `v-tabs-slider`.", "sliderTransition": "Changes slider transition to one of the predefined animation presets.", "sliderTransitionDuration": "Applies custom slider transition duration. Default duration depends on transition type (fade: 400, grow: 350, shift: 225).", "stacked": "Apply the stacked prop to all children v-tab components." }, "slots": { "[`item.${string}`]": "Dynamic slot to define custom slots for specific tab window items", "[`tab.${string}`]": "Dynamic slot to define custom slots for specific tab headers in the slide group", "tab": "Slot for custom tab header content.", "window": "Slot for custom tab window content." } } ================================================ FILE: packages/api-generator/src/locale/en/VTextField.json ================================================ { "props": { "autofocus": "Enables autofocus.", "clearIcon": "Applied when using **clearable** and the input is dirty.", "counterValue": "Function returns the counter display text.", "flat": "Removes elevation (shadow) added to element when using the **solo** or **solo-inverted** props.", "persistentPlaceholder": "Forces placeholder to always be visible.", "placeholder": "Sets the input’s placeholder text.", "prefix": "Displays prefix text.", "prependIcon": "Prepends an icon to the outside the component's input, uses the same syntax as `v-icon`.", "prependInnerIcon": "Prepends an icon inside the component's input, uses the same syntax as `v-icon`.", "reverse": "Reverses the input orientation.", "role": "The role attribute applied to the input.", "rounded": "Adds a border radius to the input.", "suffix": "Displays suffix text.", "type": "Sets input type." }, "events": { "click:append": "Emitted when append icon is clicked.", "click:appendInner": "Emitted when appended inner icon is clicked.", "click:clear": "Emitted when clearable icon clicked.", "click:prepend": "Emitted when prepended icon is clicked.", "click:prependInner": "Emitted when prepended inner icon is clicked.", "mousedown:control": "Event that is emitted when using mousedown on the main control area." }, "slots": { "counter": "Slot for the input’s counter text." } } ================================================ FILE: packages/api-generator/src/locale/en/VTextarea.json ================================================ { "props": { "autoGrow": "Automatically grow the textarea depending on amount of text.", "counterValue": "Display the input length but do not provide any validation.", "noResize": "Remove resize handle.", "persistentPlaceholder": "Forces placeholder to always be visible.", "prefix": "Displays prefix text.", "rows": "Default row count.", "suffix": "Displays suffix text.", "maxHeight": "Alternative for **max-rows**. Specifies the maximum height in pixels (including the field padding) for **auto-grow**.", "maxRows": "Specifies the maximum number of rows for **auto-grow**.", "autofocus": "The element should be focused as soon as the page loads." }, "events": { "mousedown:control": "Event that is emitted when using mousedown on the main control area.", "update:rows": "Emitted when the number of rows changes." }, "slots": { "counter": "Slot for the input’s counter text." } } ================================================ FILE: packages/api-generator/src/locale/en/VThemeProvider.json ================================================ { "props": { "withBackground": "Wraps its children in an element and applies the current theme's background color to it." }, "slots": { "default": "All child components will have their theme overridden. Must have exactly one root element." } } ================================================ FILE: packages/api-generator/src/locale/en/VTimePicker.json ================================================ { "props": { "allowedHours": "Restricts which hours can be selected.", "allowedMinutes": "Restricts which minutes can be selected.", "allowedSeconds": "Restricts which seconds can be selected.", "format": "Defines the format of a time displayed in picker. Available options are `ampm` and `24hr`.", "max": "Maximum allowed time.", "min": "Minimum allowed time.", "period": "Sets period for 12hr format.", "readonly": "Puts picker in readonly state.", "scrollable": "Allows changing hour/minute with mouse scroll.", "useSeconds": "Toggles the use of seconds in picker.", "width": "Width of the picker.", "viewMode": "The current view mode of the picker.`" }, "slots": { "default": "Displayed below the clock, can be used for example for adding action button (`OK` and `Cancel`)" }, "events": { "update:hour": "Emitted when user selects the hour.", "update:minute": "Emitted when user selects the minute.", "update:second": "Emitted when user selects the second.", "update:period": "Emitted when user clicks the AM/PM button.", "update:viewMode": "Emitted when the view mode changes." } } ================================================ FILE: packages/api-generator/src/locale/en/VTimePickerClock.json ================================================ { "props": { "allowedValues": "Restricts which hours can be selected.", "ampm": "Displays time in a 12-hour format.", "displayedValue": "Used to display a custom value on the clock.", "double": "If set, this probably indicates a double rotation or a mode where more than one set of values (like hours and minutes) is displayed on the clock at the same time.", "format": "Specifies the format of the displayed time, either 12-hour or 24-hour, depending on the component's setup.", "max": "Defines the maximum time value that can be selected.", "min": "Defines the minimum time value that can be selected.", "readonly": "When true, the picker is in a read-only state, and users cannot modify the selected time.", "rotate": "Controls rotation, specifying the degree of rotation for the clock hands.", "scrollable": "Allows the time selection to be scrollable, enhancing user experience for devices with scroll inputs.", "step": "Defines the increments between selectable times, such as a step of 1 for every minute or a larger step for every 5 or 15 minutes." }, "events": { "change": "The event that is triggered when the selected time is changed." } } ================================================ FILE: packages/api-generator/src/locale/en/VTimePickerControls.json ================================================ { "props": { "ampm": "Enables AM/PM mode.", "hour": "The current hour value.", "minute": "The current minute value.", "second": "The current second value.", "period": "The current period value. either `am` or `pm`.", "readonly": "Makes the timepicker readonly.", "useSeconds": "Enables the display and selection of seconds in the timepicker.", "value": "The current value of the timepicker.", "inputHints": "Displays labels below the time input controls.", "viewMode": "The current view mode of the timepicker. Can be either `hour`, `minute`, or `second`." }, "events": { "update:period": "Emitted when the period is changed. The event payload is either `am` or `pm`.", "update:hour": "Emitted when the hour value changes.", "update:minute": "Emitted when the minute value changes.", "update:second": "Emitted when the second value changes.", "update:viewMode": "Emitted when the view mode is changed. The event payload is either `hour`, `minute`, or `second`." } } ================================================ FILE: packages/api-generator/src/locale/en/VTimeline.json ================================================ { "props": { "align": "Places the timeline dot at the top or center of the timeline item.", "direction": "Display timeline in a **vertical** or **horizontal** direction.", "justify": "Places timeline line at the center or automatically on the left or right side.", "lineColor": "Color of the timeline line.", "lineInset": "Specifies the distance between the line and the dot of timeline items.", "lineThickness": "Thickness of the timeline line.", "side": "Display all timeline items on one side of the timeline, either **start** or **end**.", "truncateLine": "Truncate timeline directly at the **start** or **end** of the line, or on **both** ends." } } ================================================ FILE: packages/api-generator/src/locale/en/VTimelineItem.json ================================================ { "props": { "dotColor": "Color of the item dot.", "fillDot": "Remove outer border of item dot, making the color fill the entire dot.", "hideDot": "Hide the timeline item dot.", "hideOpposite": "Hide opposite content if it exists.", "icon": "Apply a specific icon to the inside dot using the [v-icon](/components/icons/) component.", "iconColor": "Color of the icon.", "lineInset": "Specifies the distance between the line and the dot of the item.", "side": "Show the item either **before** or **after** the timeline. This will override the implicit ordering of items, but will in turn be overridden by the `v-timeline` **single-side** prop.", "size": "Size of the item dot" }, "slots": { "icon": "Used to customize the icon inside the item dot.", "opposite": "Used to customize the opposite side of timeline items." } } ================================================ FILE: packages/api-generator/src/locale/en/VToolbar.json ================================================ { "props": { "absolute": "Applies position: absolute to the component.", "collapse": "Puts the toolbar into a collapsed state reducing its maximum width.", "collapsePosition": "Specifies side to attach the collapsed toolbar.", "extended": "Use this prop to increase the height of the toolbar _without_ using the `extension` slot for adding content. May be used in conjunction with the **extension-height** prop. When false, will not show extension slot even if content is present.", "extensionHeight": "Specify an explicit height for the `extension` slot.", "flat": "Removes the toolbar's box-shadow.", "floating": "Applies **display: inline-flex** to the component.", "height": "Designates a specific height for the toolbar. Overrides the heights imposed by other props, e.g. **prominent**, **dense**, **extended**, etc.", "image": "Specifies a [v-img](/components/images) as the component's background.", "location": "Specifies the component's location. Can combine by using a space separated string. Requires the **absolute** prop." }, "slots": { "extension": "Slot positioned directly under the main content of the toolbar. Height of this slot can be set explicitly with the **extension-height** prop. If this slot has no content, the **extended** prop may be used instead.", "image": "Expects the [v-img](/components/images) component. Scoped **props** should be applied with `v-bind=\"props\"`." }, "exposed": { "contentHeight": "The current height of the component's content.", "extensionHeight": "The current height of the component's extension slot." } } ================================================ FILE: packages/api-generator/src/locale/en/VTooltip.json ================================================ { "props": { "closeDelay": "Delay (in ms) after which menu closes (when open-on-hover prop is set to true).", "id": "HTML id attribute of the tooltip overlay. If not set, a globally unique id will be used.", "interactive": "When true, the tooltip will respond to pointer events, allowing you to copy text from it.", "openDelay": "Delay (in ms) after which tooltip opens (when `open-on-hover` prop is set to **true**).", "openOnClick": "Designates whether the tooltip should open on activator click.", "openOnHover": "Designates whether the tooltip should open on activator hover." }, "exposed": { "animateClick": "Function invoked when user clicks outside.", "globalTop": "Used by activator to determine a components position in the global stack order.", "localTop": "Used by activator to determine a components position in the local stack order.", "updateLocation": "Function used for locationStrategy positioning." } } ================================================ FILE: packages/api-generator/src/locale/en/VTreeview.json ================================================ { "props": { "activatable": "Allows user to mark a node as active by clicking on it.", "color": "Applies specified color to the active node - supports utility colors (for example `success` or `purple`) or css color (`#033` or `rgba(255, 0, 0, 0.5)`). Find a list of built-in classes on the [colors page](/styles/colors#material-colors).", "disabled": "Disables selection for all nodes.", "expandIcon": "Icon used to indicate that a node can be expanded.", "fluid": "Removes indentation from nested items.", "hideActions": "Hide the expand icon and loading indicator next to each item title.", "indeterminateIcon": "Icon used when node is in an indeterminate state. Only visible when `selectable` is `true`.", "itemChildren": "Property on supplied `items` that contains its children.", "items": "An array of items used to build the treeview.", "loadChildren": "A function used when dynamically loading children. If this prop is set, then the supplied function will be run if expanding an item that has a `item-children` property that is an empty array. Supports returning a Promise.", "loadingIcon": "Icon used when node is in a loading state.", "modelValue": "Allows one to control which nodes are selected. The array contains the values of currently selected items. It is equivalent to the `v-model:selected`", "openAll": "When `true` will cause all branch nodes to be opened when component is mounted.", "openOnClick": "When `true` will cause nodes to be opened by clicking anywhere on it, instead of only opening by clicking on expand icon. When using this prop with `activatable` you will be unable to mark nodes with children as active.", "returnObject": "When `true` will make `v-model`, `v-model:selected, `v-model:activated` and `v-model:opened` return the complete object instead of just the key.", "rounded": "Provides an alternative active style for `v-treeview` node. Only visible when `activatable` is `true` and should not be used in conjunction with the `shaped` prop.", "search": "The search model for filtering results.", "selectable": "Will render a checkbox next to each node allowing them to be selected. Additionally, the **[openOnClick](/api/v-treeview/#props-open-on-click)** property will be applied internally.", "selectedColor": "The color of the selection checkbox.", "separateRoots": "Applies to `default` variant of `indent-lines`. Prevents showing lines between root-level nodes.", "indentLines": "Controls visibility and variant of the indent lines.", "indentLinesColor": "Sets color of indent lines", "indentLinesOpacity": "Sets opacity of indent lines", "collapseIcon": "Icon to display when the list item is expanded." }, "slots": { "append": "Appends content after label.", "prepend": "Prepends content before label.", "header": "Slot for expandable nodes (all items that are not leafs).", "footer": "Slot for footer below expanded children.", "subheader": "Slot for custom subheader.", "divider": "Slot for custom divider." }, "events": { "click:open": "Emits the item when it is clicked to open.", "click:select": "Emits the item when it is clicked to select.", "update:activated": "Emits the array of active items when this value changes.", "update:opened": "Emits the array of open items when this value changes.", "update:selected": "Emits the array of selected items when this value changes." } } ================================================ FILE: packages/api-generator/src/locale/en/VTreeviewGroup.json ================================================ { "props": { "fluid": "Removes indentation from nested items." } } ================================================ FILE: packages/api-generator/src/locale/en/VTreeviewItem.json ================================================ { "props": { "hideActions": "Hide the expand icon and loading indicator next to each item title.", "indentLines": "Array of indent lines to render next to the item.", "loading": "Places the v-treeview-item into a loading state.", "nav": "Reduces the width of v-list-item takes and adds a border radius.", "slim": "Reduces the vertical padding or height of the v-treeview-item, making it more compact.", "index": "The index of the item within the treeview list.", "toggleIcon": "Allows customization of the icon used to toggle the expansion and collapse of treeview branches." }, "events": { "toggleExpand": "Emitted when the item is toggled to expand or collapse." }, "slots": { "toggle": "Slot for custom expand icon and loading indicator." } } ================================================ FILE: packages/api-generator/src/locale/en/VVideo.json ================================================ { "props": { "aspectRatio": "Sets the aspect ratio for the playback, calculated as width/height.", "src": "Media file URL", "srcObject": "Sets the source of the video to a MediaStream, MediaSource, or Blob object. Useful for WebRTC streaming.", "type": "Media file type (optional)", "error": "Puts the component in the manual error state.", "image": "Apply a specific image as cover before the video is loaded.", "autoplay": "Starts loading the media file without waiting for user to click. Playback begins once enough data is loaded.", "muted": "Hides volume control and disables the playback sound.", "eager": "Silently loades the media file without waiting for user to click.", "hideOverlay": "Hide center play icon.", "noFullscreen": "Disable fullscreen and hide the default fullscreen button.", "rounded": "Applies a border radius to the video container and the controls. Accepts array of two values to customize elements separately.", "startAt": "Moves progress to the specified time (in seconds) once the media file is loaded.", "controlsProps": "Pass props through to the `v-video-controls` component. Accepts an object with anything from [v-video-controls](/api/v-video-controls/#props) props, camelCase keys are recommended.", "controlsTransition": "The reveal transition applied to the VVideoControls component once the media file is loaded.", "controlsVariant": "Variant passed to the VVideoControls component." }, "events": { "loaded": "Emitted when the video has loaded and is ready to be played.", "update:playing": "Emitted when playing state changes.", "update:progress": "Emitted when the internal playback progress changes.", "update:volume": "Emitted when the volume changes.", "error": "Emits `true` when the video fails to load or `false` when user triggered retry." }, "slots": { "header": "Slot for additional content placed on top of the video.", "append": "Additional content on the right within the control bar.", "controls": "Replaces controls bar with custom content.", "loader": "Slot used to replace loader displayed when the video is being loaded.", "prepend": "Additional content on the left within the control bar.", "sources": "Slot for content placed within native `