├── .dockerignore ├── .editorconfig ├── .eslintrc.js ├── .gitattributes ├── .github ├── .git_commit_msg.txt ├── CONTRIBUTING.md ├── FUNDING.yml ├── ISSUE_TEMPLATE │ └── config.yml ├── PULL_REQUEST_TEMPLATE.md ├── actions │ ├── download-artifact │ │ └── action.yml │ ├── download-locales │ │ └── action.yml │ ├── nightly-release │ │ └── action.yml │ ├── upload-artifact │ │ └── action.yml │ └── yarn-install │ │ └── action.yml ├── issue-close-app.yml ├── lock.yml ├── semantic.yml ├── sponsors.yml └── workflows │ ├── ci.yml │ ├── close-issue.yml │ ├── crowdin-uploads.yml │ ├── nightly-pr.yml │ ├── nightly-schedule.yml │ └── triage.yml ├── .gitignore ├── .vercelignore ├── .yarn └── releases │ └── yarn-1.19.0.cjs ├── .yarnrc ├── CODE_OF_CONDUCT.md ├── LICENSE.md ├── README.md ├── SECURITY.md ├── crowdin.yml ├── eslint-local-rules.js ├── jest.config.js ├── 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 │ │ │ │ ├── Select.json │ │ │ │ ├── SelectionControlGroup.json │ │ │ │ ├── Slider.json │ │ │ │ ├── VAlert.json │ │ │ │ ├── VApp.json │ │ │ │ ├── VAppBar.json │ │ │ │ ├── VAutocomplete.json │ │ │ │ ├── VBadge.json │ │ │ │ ├── VBanner.json │ │ │ │ ├── VBottomNavigation.json │ │ │ │ ├── VBottomSheet.json │ │ │ │ ├── VBreadcrumbs.json │ │ │ │ ├── VBreadcrumbsDivider.json │ │ │ │ ├── VBtn.json │ │ │ │ ├── VBtnGroup.json │ │ │ │ ├── VBtnToggle.json │ │ │ │ ├── VCalendar.json │ │ │ │ ├── VCalendarDaily.json │ │ │ │ ├── VCalendarMonthly.json │ │ │ │ ├── VCalendarWeekly.json │ │ │ │ ├── VCard.json │ │ │ │ ├── VCarousel.json │ │ │ │ ├── VCheckbox.json │ │ │ │ ├── VCheckboxBtn.json │ │ │ │ ├── VChip.json │ │ │ │ ├── VChipGroup.json │ │ │ │ ├── VCol.json │ │ │ │ ├── VColorPicker.json │ │ │ │ ├── VCombobox.json │ │ │ │ ├── VContainer.json │ │ │ │ ├── VCounter.json │ │ │ │ ├── VDataFooter.json │ │ │ │ ├── VDataIterator.json │ │ │ │ ├── VDataTable.json │ │ │ │ ├── VDataTableFooter.json │ │ │ │ ├── VDataTableHeader.json │ │ │ │ ├── VDataTableHeaders.json │ │ │ │ ├── VDataTableRow.json │ │ │ │ ├── VDataTableRows.json │ │ │ │ ├── VDataTableServer.json │ │ │ │ ├── VDataTableVirtual.json │ │ │ │ ├── VDatePicker.json │ │ │ │ ├── VDefaultsProvider.json │ │ │ │ ├── VDialog.json │ │ │ │ ├── VDialogTransition.json │ │ │ │ ├── VDivider.json │ │ │ │ ├── VExpansionPanel.json │ │ │ │ ├── VExpansionPanelTitle.json │ │ │ │ ├── VExpansionPanels.json │ │ │ │ ├── VField.json │ │ │ │ ├── VFieldLabel.json │ │ │ │ ├── VFileInput.json │ │ │ │ ├── VFooter.json │ │ │ │ ├── VForm.json │ │ │ │ ├── VHover.json │ │ │ │ ├── VImg.json │ │ │ │ ├── VInfiniteScroll.json │ │ │ │ ├── VInput.json │ │ │ │ ├── VItemGroup.json │ │ │ │ ├── VLabel.json │ │ │ │ ├── VLayout.json │ │ │ │ ├── VLayoutItem.json │ │ │ │ ├── VLazy.json │ │ │ │ ├── VList.json │ │ │ │ ├── VListGroup.json │ │ │ │ ├── VListItem.json │ │ │ │ ├── VListItemAvatar.json │ │ │ │ ├── VListItemGroup.json │ │ │ │ ├── VListSubheader.json │ │ │ │ ├── VLocaleProvider.json │ │ │ │ ├── VMain.json │ │ │ │ ├── VMenu.json │ │ │ │ ├── VMessages.json │ │ │ │ ├── VNavigationDrawer.json │ │ │ │ ├── VOtpInput.json │ │ │ │ ├── VOverflowBtn.json │ │ │ │ ├── VOverlay-activator.json │ │ │ │ ├── VOverlay-location-strategies.json │ │ │ │ ├── VOverlay-scroll-strategies.json │ │ │ │ ├── VOverlay.json │ │ │ │ ├── VPagination.json │ │ │ │ ├── VParallax.json │ │ │ │ ├── VProgressCircular.json │ │ │ │ ├── VProgressLinear.json │ │ │ │ ├── VRadio.json │ │ │ │ ├── VRadioGroup.json │ │ │ │ ├── VRangeSlider.json │ │ │ │ ├── VRating.json │ │ │ │ ├── VResponsive.json │ │ │ │ ├── VRow.json │ │ │ │ ├── VSelect.json │ │ │ │ ├── VSelectionControl.json │ │ │ │ ├── VSheet.json │ │ │ │ ├── VSimpleCheckbox.json │ │ │ │ ├── VSimpleTable.json │ │ │ │ ├── VSkeletonLoader.json │ │ │ │ ├── VSlideGroup.json │ │ │ │ ├── VSlider.json │ │ │ │ ├── VSnackbar.json │ │ │ │ ├── VSparkline.json │ │ │ │ ├── VSpeedDial.json │ │ │ │ ├── VStepper.json │ │ │ │ ├── VStepperActions.json │ │ │ │ ├── VStepperHeader.json │ │ │ │ ├── VStepperItem.json │ │ │ │ ├── VStepperWindow.json │ │ │ │ ├── VStepperWindowItem.json │ │ │ │ ├── VSwitch.json │ │ │ │ ├── VSystemBar.json │ │ │ │ ├── VTab.json │ │ │ │ ├── VTabItem.json │ │ │ │ ├── VTable.json │ │ │ │ ├── VTabs.json │ │ │ │ ├── VTabsItems.json │ │ │ │ ├── VTextField.json │ │ │ │ ├── VTextarea.json │ │ │ │ ├── VThemeProvider.json │ │ │ │ ├── VTimePicker.json │ │ │ │ ├── VTimeline.json │ │ │ │ ├── VTimelineItem.json │ │ │ │ ├── VToolbar.json │ │ │ │ ├── VTooltip.json │ │ │ │ ├── VTreeview.json │ │ │ │ ├── VTreeviewNode.json │ │ │ │ ├── VVirtualScroll.json │ │ │ │ ├── VWindow.json │ │ │ │ ├── VWindowItem.json │ │ │ │ ├── border.json │ │ │ │ ├── delay.json │ │ │ │ ├── dimension.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 │ │ │ │ ├── nested.json │ │ │ │ ├── position.json │ │ │ │ ├── rounded.json │ │ │ │ ├── router.json │ │ │ │ ├── size.json │ │ │ │ ├── tag.json │ │ │ │ ├── theme.json │ │ │ │ ├── transition.json │ │ │ │ ├── useDate.json │ │ │ │ ├── useDisplay.json │ │ │ │ ├── useLayout.json │ │ │ │ ├── useLocale.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-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 │ ├── .env.example │ ├── .eslintignore │ ├── .eslintrc.js │ ├── .gitignore │ ├── .markdownlintrc │ ├── build │ │ ├── api-plugin.ts │ │ ├── examples-plugin.ts │ │ ├── markdown-it.ts │ │ └── sitemap.js │ ├── index.html │ ├── jest-runner-eslint.config.js │ ├── jest.config.js │ ├── package.json │ ├── public │ │ ├── ads.txt │ │ ├── favicon.ico │ │ ├── img │ │ │ └── icons │ │ │ │ ├── android-chrome-192x192.png │ │ │ │ ├── android-chrome-512x512.png │ │ │ │ ├── apple-touch-icon.png │ │ │ │ ├── favicon-16x16.png │ │ │ │ └── favicon-32x32.png │ │ ├── robots.txt │ │ └── search.xml │ ├── src │ │ ├── App.vue │ │ ├── assets │ │ │ └── logo.png │ │ ├── components │ │ │ ├── Alert.vue │ │ │ ├── Backmatter.vue │ │ │ ├── PageFeatures.vue │ │ │ ├── about │ │ │ │ ├── TeamMember.vue │ │ │ │ └── TeamMembers.vue │ │ │ ├── api │ │ │ │ ├── ApiTable.vue │ │ │ │ ├── EventsTable.vue │ │ │ │ ├── ExposedTable.vue │ │ │ │ ├── Inline.vue │ │ │ │ ├── Links.vue │ │ │ │ ├── NameCell.vue │ │ │ │ ├── PrismCell.vue │ │ │ │ ├── PropsTable.vue │ │ │ │ ├── SassTable.vue │ │ │ │ ├── Search.vue │ │ │ │ ├── Section.vue │ │ │ │ ├── SlotsTable.vue │ │ │ │ └── utils.ts │ │ │ ├── app │ │ │ │ ├── BackToTop.vue │ │ │ │ ├── Banner.vue │ │ │ │ ├── Btn.vue │ │ │ │ ├── Caption.vue │ │ │ │ ├── Divider.vue │ │ │ │ ├── Figure.vue │ │ │ │ ├── Heading.vue │ │ │ │ ├── Headline.vue │ │ │ │ ├── Link.vue │ │ │ │ ├── Markdown.vue │ │ │ │ ├── Markup.vue │ │ │ │ ├── Sheet.vue │ │ │ │ ├── SnackbarQueue.vue │ │ │ │ ├── Table.vue │ │ │ │ ├── TextField.vue │ │ │ │ ├── Title.vue │ │ │ │ ├── Toc.vue │ │ │ │ ├── TooltipBtn.vue │ │ │ │ ├── V2Banner.vue │ │ │ │ ├── VerticalDivider.vue │ │ │ │ ├── bar │ │ │ │ │ ├── AuthDialog.vue │ │ │ │ │ ├── Bar.vue │ │ │ │ │ ├── EcosystemMenu.vue │ │ │ │ │ ├── EnterpriseLink.vue │ │ │ │ │ ├── JobsLink.vue │ │ │ │ │ ├── LanguageMenu.vue │ │ │ │ │ ├── LearnMenu.vue │ │ │ │ │ ├── Logo.vue │ │ │ │ │ ├── NotificationsMenu.vue │ │ │ │ │ ├── PlaygroundLink.vue │ │ │ │ │ ├── SettingsToggle.vue │ │ │ │ │ ├── SponsorLink.vue │ │ │ │ │ ├── StoreLink.vue │ │ │ │ │ ├── SupportMenu.vue │ │ │ │ │ ├── TeamLink.vue │ │ │ │ │ └── ThemeToggle.vue │ │ │ │ ├── drawer │ │ │ │ │ ├── Append.vue │ │ │ │ │ ├── Drawer.vue │ │ │ │ │ └── DrawerToggleRail.vue │ │ │ │ ├── list │ │ │ │ │ ├── LinkListItem.vue │ │ │ │ │ └── List.vue │ │ │ │ ├── menu │ │ │ │ │ └── Menu.vue │ │ │ │ ├── search │ │ │ │ │ ├── Search.vue │ │ │ │ │ ├── SearchRecent.vue │ │ │ │ │ └── SearchResults.vue │ │ │ │ └── settings │ │ │ │ │ ├── AdvancedOptions.vue │ │ │ │ │ ├── Append.vue │ │ │ │ │ ├── DeveloperMode.vue │ │ │ │ │ ├── DocumentationBuild.vue │ │ │ │ │ ├── Drawer.vue │ │ │ │ │ ├── LatestCommit.vue │ │ │ │ │ ├── LatestRelease.vue │ │ │ │ │ ├── Options.vue │ │ │ │ │ ├── PerksOptions.vue │ │ │ │ │ ├── SettingsHeader.vue │ │ │ │ │ └── options │ │ │ │ │ ├── AdOption.vue │ │ │ │ │ ├── ApiOption.vue │ │ │ │ │ ├── AvatarOption.vue │ │ │ │ │ ├── BannerOption.vue │ │ │ │ │ ├── CodeOption.vue │ │ │ │ │ ├── NotificationsOption.vue │ │ │ │ │ ├── QuickbarOption.vue │ │ │ │ │ ├── RailDrawerOption.vue │ │ │ │ │ ├── SlashSearchOption.vue │ │ │ │ │ ├── SyncOption.vue │ │ │ │ │ └── ThemeOption.vue │ │ │ ├── components │ │ │ │ └── ListItem.vue │ │ │ ├── doc │ │ │ │ ├── Contribute.vue │ │ │ │ ├── Explorer.vue │ │ │ │ ├── IconList.vue │ │ │ │ ├── IconTable.vue │ │ │ │ ├── MadeWithVueAttribution.vue │ │ │ │ ├── MadeWithVuetify.vue │ │ │ │ ├── MadeWithVuetifyLink.vue │ │ │ │ ├── ReadyForMore.vue │ │ │ │ ├── RelatedPage.vue │ │ │ │ ├── RelatedPages.vue │ │ │ │ ├── Releases.vue │ │ │ │ ├── Tabs.vue │ │ │ │ ├── ThemeCard.vue │ │ │ │ ├── ThemeVendor.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 │ │ │ │ ├── ActionBtns.vue │ │ │ │ ├── Entry.vue │ │ │ │ ├── Features.vue │ │ │ │ ├── Footer.vue │ │ │ │ ├── Logo.vue │ │ │ │ ├── SpecialSponsor.vue │ │ │ │ └── Sponsors.vue │ │ │ ├── icons │ │ │ │ └── ChevronDown.vue │ │ │ ├── introduction │ │ │ │ ├── Comparison.vue │ │ │ │ ├── DirectSupport.vue │ │ │ │ ├── DiscordDeck.vue │ │ │ │ ├── EnterpriseDeck.vue │ │ │ │ └── EnterpriseForm.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 │ │ │ │ └── Sponsors.vue │ │ │ └── user │ │ │ │ ├── DiscordLogin.vue │ │ │ │ ├── GithubLogin.vue │ │ │ │ ├── OneSubCard.vue │ │ │ │ ├── UserBadges.vue │ │ │ │ ├── UserProfile.vue │ │ │ │ ├── UserTabs.vue │ │ │ │ ├── account │ │ │ │ ├── ConnectedAccounts.vue │ │ │ │ └── OneSubscription.vue │ │ │ │ └── badges │ │ │ │ ├── UserAdminBadge.vue │ │ │ │ ├── UserOneBadge.vue │ │ │ │ └── UserSponsorBadge.vue │ │ ├── composables │ │ │ ├── ad.ts │ │ │ ├── cosmic.ts │ │ │ └── playground.ts │ │ ├── data │ │ │ ├── 301.json │ │ │ ├── metadata.json │ │ │ ├── modified.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-layout │ │ │ │ ├── app-bar-first.vue │ │ │ │ ├── discord.vue │ │ │ │ ├── dynamic.vue │ │ │ │ ├── layout-information-composable.vue │ │ │ │ ├── layout-information-ref.vue │ │ │ │ ├── location.vue │ │ │ │ └── nav-drawer-first.vue │ │ │ ├── application │ │ │ │ └── theme.vue │ │ │ ├── blueprints │ │ │ │ ├── md1.vue │ │ │ │ ├── md2.vue │ │ │ │ └── md3.vue │ │ │ ├── border-radius │ │ │ │ ├── misc-pill-and-circle.vue │ │ │ │ ├── misc-removing-border-radius.vue │ │ │ │ ├── misc-rounding-by-corner.vue │ │ │ │ ├── misc-rounding-by-side.vue │ │ │ │ └── usage.vue │ │ │ ├── color │ │ │ │ ├── classes.vue │ │ │ │ └── text-classes.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-around.vue │ │ │ │ ├── flex-align-content-between.vue │ │ │ │ ├── flex-align-content-center.vue │ │ │ │ ├── flex-align-content-end.vue │ │ │ │ ├── flex-align-content-start.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-spacer.vue │ │ │ │ ├── misc-unique-layouts.vue │ │ │ │ ├── misc-variable-content.vue │ │ │ │ ├── prop-align.vue │ │ │ │ ├── prop-breakpoint-sizing.vue │ │ │ │ ├── prop-justify.vue │ │ │ │ ├── prop-no-gutters.vue │ │ │ │ ├── prop-offset-breakpoint.vue │ │ │ │ ├── prop-offset.vue │ │ │ │ ├── prop-order-first-and-last.vue │ │ │ │ ├── prop-order.vue │ │ │ │ └── usage.vue │ │ │ ├── overflow │ │ │ │ ├── overflow-x.vue │ │ │ │ └── overflow.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 │ │ │ │ ├── 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.vue │ │ │ │ ├── prop-closable.vue │ │ │ │ ├── prop-colored-border.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.vue │ │ │ │ ├── slot-item-and-selection.vue │ │ │ │ └── usage.vue │ │ │ ├── v-avatar │ │ │ │ ├── misc-advanced.vue │ │ │ │ ├── misc-avatar-menu.vue │ │ │ │ ├── misc-profile-card.vue │ │ │ │ ├── prop-size.vue │ │ │ │ ├── prop-tile.vue │ │ │ │ ├── slot-default.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 │ │ │ │ ├── prop-large.vue │ │ │ │ ├── slot-icon-dividers.vue │ │ │ │ ├── slot-prepend.vue │ │ │ │ ├── slot-title.vue │ │ │ │ └── usage.vue │ │ │ ├── v-btn-fab │ │ │ │ ├── misc-display-animation.vue │ │ │ │ ├── misc-lateral-screens.vue │ │ │ │ ├── misc-small.vue │ │ │ │ ├── misc-speed-dial.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-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-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-tile.vue │ │ │ │ ├── prop-variant.vue │ │ │ │ ├── slot-loader.vue │ │ │ │ ├── slot-prepend-append.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-grids.vue │ │ │ │ ├── misc-horizontal-cards.vue │ │ │ │ ├── misc-information-card.vue │ │ │ │ ├── misc-intermediate.vue │ │ │ │ ├── misc-media-with-text.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 │ │ │ │ ├── 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-group │ │ │ │ ├── misc-product-card.vue │ │ │ │ ├── misc-toothbrush-card.vue │ │ │ │ ├── prop-column.vue │ │ │ │ ├── prop-filter.vue │ │ │ │ ├── prop-mandatory.vue │ │ │ │ ├── prop-multiple.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-click-outside │ │ │ │ ├── option-close-on-outside-click.vue │ │ │ │ ├── option-include.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 │ │ │ │ ├── slot-no-data.vue │ │ │ │ └── usage.vue │ │ │ ├── v-data-iterator │ │ │ │ ├── misc-filter.vue │ │ │ │ ├── slot-default.vue │ │ │ │ ├── slot-header-and-footer.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-server-side-paginate-and-sort.vue │ │ │ │ ├── prop-custom-filter.vue │ │ │ │ ├── prop-dense.vue │ │ │ │ ├── prop-filterable.vue │ │ │ │ ├── prop-footer-props.vue │ │ │ │ ├── prop-grouping.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 │ │ │ │ ├── server-search.vue │ │ │ │ ├── server.vue │ │ │ │ ├── slot-group-header.vue │ │ │ │ ├── slot-header.vue │ │ │ │ ├── slot-headers.vue │ │ │ │ ├── slot-item-key.vue │ │ │ │ ├── slot-item.vue │ │ │ │ ├── slot-loading.vue │ │ │ │ ├── slot-main.vue │ │ │ │ ├── slot-simple-checkbox.vue │ │ │ │ ├── usage.vue │ │ │ │ ├── virtual.vue │ │ │ │ └── virtualized.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-date-picker │ │ │ │ ├── event-button-events.vue │ │ │ │ ├── event-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-icons.vue │ │ │ │ ├── prop-multiple.vue │ │ │ │ ├── prop-picker-date.vue │ │ │ │ ├── prop-range.vue │ │ │ │ ├── prop-readonly.vue │ │ │ │ ├── prop-show-adjacent-months.vue │ │ │ │ ├── prop-show-current.vue │ │ │ │ ├── prop-width.vue │ │ │ │ └── usage.vue │ │ │ ├── v-defaults-provider │ │ │ │ ├── prop-defaults.vue │ │ │ │ └── usage.vue │ │ │ ├── v-dialog │ │ │ │ ├── misc-form.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 │ │ │ │ └── usage.vue │ │ │ ├── v-divider │ │ │ │ ├── misc-portrait-view.vue │ │ │ │ ├── misc-subheaders.vue │ │ │ │ ├── prop-inset.vue │ │ │ │ ├── prop-vertical-inset.vue │ │ │ │ ├── prop-vertical.vue │ │ │ │ └── usage.vue │ │ │ ├── v-expansion-panels │ │ │ │ ├── misc-advanced.vue │ │ │ │ ├── misc-custom-icons.vue │ │ │ │ ├── prop-disabled.vue │ │ │ │ ├── prop-focusable.vue │ │ │ │ ├── prop-model.vue │ │ │ │ ├── prop-readonly.vue │ │ │ │ ├── prop-variant.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-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-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-img │ │ │ │ ├── complex-grid.vue │ │ │ │ ├── misc-grid.vue │ │ │ │ ├── prop-contain.vue │ │ │ │ ├── prop-cover.vue │ │ │ │ ├── prop-gradient.vue │ │ │ │ ├── prop-max-height.vue │ │ │ │ ├── slot-error.vue │ │ │ │ ├── slot-placeholder.vue │ │ │ │ └── usage.vue │ │ │ ├── v-infinite-scroll │ │ │ │ ├── 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 │ │ │ │ ├── prop-success.vue │ │ │ │ ├── slot-append-and-prepend.vue │ │ │ │ └── usage.vue │ │ │ ├── v-intersect │ │ │ │ ├── prop-options.vue │ │ │ │ └── usage.vue │ │ │ ├── v-item-group │ │ │ │ ├── misc-chips.vue │ │ │ │ ├── misc-selection.vue │ │ │ │ ├── prop-mandatory.vue │ │ │ │ ├── prop-multiple.vue │ │ │ │ ├── prop-selected-class.vue │ │ │ │ └── usage.vue │ │ │ ├── v-lazy │ │ │ │ └── usage.vue │ │ │ ├── v-list │ │ │ │ ├── misc-action-and-item-groups.vue │ │ │ │ ├── misc-action-stack.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-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-rounded.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-mini-variant.vue │ │ │ │ ├── prop-permanent-and-floating.vue │ │ │ │ ├── prop-right.vue │ │ │ │ ├── prop-temporary.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-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 │ │ │ │ └── usage.vue │ │ │ ├── v-progress-circular │ │ │ │ ├── prop-color.vue │ │ │ │ ├── prop-indeterminate.vue │ │ │ │ ├── prop-rotate.vue │ │ │ │ ├── prop-size-and-width.vue │ │ │ │ ├── prop-slot-default.vue │ │ │ │ └── usage.vue │ │ │ ├── v-progress-linear │ │ │ │ ├── misc-determinate.vue │ │ │ │ ├── misc-file-loader.vue │ │ │ │ ├── misc-toolbar-loader.vue │ │ │ │ ├── prop-buffer-value.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-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-chips.vue │ │ │ │ ├── prop-custom-title-and-value.vue │ │ │ │ ├── prop-dense.vue │ │ │ │ ├── prop-disabled.vue │ │ │ │ ├── prop-item-props.vue │ │ │ │ ├── prop-menu-props.vue │ │ │ │ ├── prop-multiple.vue │ │ │ │ ├── prop-readonly.vue │ │ │ │ ├── slot-append-and-prepend-item.vue │ │ │ │ ├── slot-item.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-inverse-label.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-multi-line.vue │ │ │ │ ├── prop-timeout.vue │ │ │ │ ├── prop-variants.vue │ │ │ │ ├── prop-vertical.vue │ │ │ │ └── usage.vue │ │ │ ├── v-sparkline │ │ │ │ ├── misc-custom-labels.vue │ │ │ │ ├── misc-dashboard-card.vue │ │ │ │ ├── misc-heart-rate.vue │ │ │ │ ├── prop-fill.vue │ │ │ │ └── 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-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 │ │ │ │ └── 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-stacked.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-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-no-title.vue │ │ │ │ ├── prop-range.vue │ │ │ │ ├── prop-readonly.vue │ │ │ │ ├── prop-scrollable.vue │ │ │ │ ├── prop-use-seconds.vue │ │ │ │ ├── prop-width.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-variations.vue │ │ │ │ ├── prop-background.vue │ │ │ │ ├── prop-collapse.vue │ │ │ │ ├── prop-dense.vue │ │ │ │ ├── prop-extended.vue │ │ │ │ ├── prop-extension-height.vue │ │ │ │ ├── prop-floating-with-search.vue │ │ │ │ ├── prop-light-and-dark.vue │ │ │ │ ├── prop-prominent.vue │ │ │ │ └── usage.vue │ │ │ ├── v-tooltip │ │ │ │ ├── prop-color.vue │ │ │ │ ├── prop-location.vue │ │ │ │ ├── prop-visibility.vue │ │ │ │ └── usage.vue │ │ │ ├── v-touch │ │ │ │ └── usage.vue │ │ │ ├── v-treeview │ │ │ │ ├── misc-search-and-filter.vue │ │ │ │ ├── misc-selectable-icons.vue │ │ │ │ ├── playground.vue │ │ │ │ ├── prop-activatable.vue │ │ │ │ ├── prop-color.vue │ │ │ │ ├── prop-dense.vue │ │ │ │ ├── prop-hoverable.vue │ │ │ │ ├── prop-item-disabled.vue │ │ │ │ ├── prop-load-children.vue │ │ │ │ ├── prop-open-all.vue │ │ │ │ ├── prop-rounded.vue │ │ │ │ ├── prop-selectable.vue │ │ │ │ ├── prop-selected-color.vue │ │ │ │ ├── prop-selection-type.vue │ │ │ │ ├── prop-shaped.vue │ │ │ │ ├── slot-append-and-label.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 │ │ │ │ └── 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 │ │ │ ├── default.vue │ │ │ ├── home.vue │ │ │ ├── user.vue │ │ │ └── wireframe.vue │ │ ├── main.ts │ │ ├── pages │ │ │ └── en │ │ │ │ ├── about │ │ │ │ ├── code-of-conduct.md │ │ │ │ ├── licensing.md │ │ │ │ ├── meet-the-team.md │ │ │ │ └── security-disclosure.md │ │ │ │ ├── components │ │ │ │ ├── alerts.md │ │ │ │ ├── all.md │ │ │ │ ├── app-bars.md │ │ │ │ ├── application.md │ │ │ │ ├── aspect-ratios.md │ │ │ │ ├── autocompletes.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-pickers.md │ │ │ │ ├── combobox.md │ │ │ │ ├── data-iterators.md │ │ │ │ ├── data-tables │ │ │ │ │ ├── basics.md │ │ │ │ │ ├── data-and-display.md │ │ │ │ │ ├── introduction.md │ │ │ │ │ ├── server-side-tables.md │ │ │ │ │ └── virtual-tables.md │ │ │ │ ├── date-pickers-month.md │ │ │ │ ├── date-pickers.md │ │ │ │ ├── defaults-providers.md │ │ │ │ ├── dialogs.md │ │ │ │ ├── dividers.md │ │ │ │ ├── expansion-panels.md │ │ │ │ ├── explorer │ │ │ │ │ └── [...name].md │ │ │ │ ├── file-inputs.md │ │ │ │ ├── floating-action-buttons.md │ │ │ │ ├── footers.md │ │ │ │ ├── forms.md │ │ │ │ ├── grids.md │ │ │ │ ├── hover.md │ │ │ │ ├── icons.md │ │ │ │ ├── images.md │ │ │ │ ├── infinite-scroller.md │ │ │ │ ├── inputs.md │ │ │ │ ├── item-groups.md │ │ │ │ ├── lazy.md │ │ │ │ ├── lists.md │ │ │ │ ├── locale-providers.md │ │ │ │ ├── menus.md │ │ │ │ ├── navigation-drawers.md │ │ │ │ ├── no-ssr.md │ │ │ │ ├── otp-input.md │ │ │ │ ├── overflow-btns.md │ │ │ │ ├── overlays.md │ │ │ │ ├── paginations.md │ │ │ │ ├── parallax.md │ │ │ │ ├── progress-circular.md │ │ │ │ ├── progress-linear.md │ │ │ │ ├── radio-buttons.md │ │ │ │ ├── range-sliders.md │ │ │ │ ├── ratings.md │ │ │ │ ├── selects.md │ │ │ │ ├── sheets.md │ │ │ │ ├── skeleton-loaders.md │ │ │ │ ├── slide-groups.md │ │ │ │ ├── sliders.md │ │ │ │ ├── snackbars.md │ │ │ │ ├── sparklines.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 │ │ │ │ ├── virtual-scroller.md │ │ │ │ └── windows.md │ │ │ │ ├── directives │ │ │ │ ├── click-outside.md │ │ │ │ ├── intersect.md │ │ │ │ ├── mutate.md │ │ │ │ ├── resize.md │ │ │ │ ├── ripple.md │ │ │ │ ├── scroll.md │ │ │ │ └── touch.md │ │ │ │ ├── features │ │ │ │ ├── accessibility.md │ │ │ │ ├── aliasing.md │ │ │ │ ├── application-layout.md │ │ │ │ ├── blueprints.md │ │ │ │ ├── dates.md │ │ │ │ ├── display-and-platform.md │ │ │ │ ├── global-configuration.md │ │ │ │ ├── icon-fonts.md │ │ │ │ ├── internationalization.md │ │ │ │ ├── sass-variables.md │ │ │ │ ├── scrolling.md │ │ │ │ ├── theme.md │ │ │ │ └── treeshaking.md │ │ │ │ ├── getting-started │ │ │ │ ├── browser-support.md │ │ │ │ ├── contributing.md │ │ │ │ ├── frequently-asked-questions.md │ │ │ │ ├── installation.md │ │ │ │ ├── release-notes.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 │ │ │ │ ├── resources │ │ │ │ ├── brand-kit.md │ │ │ │ ├── jobs-for-vue.md │ │ │ │ ├── made-with-vuetify.md │ │ │ │ ├── search-engine.md │ │ │ │ ├── themes.md │ │ │ │ └── ui-kits.md │ │ │ │ ├── styles │ │ │ │ ├── border-radius.md │ │ │ │ ├── colors.md │ │ │ │ ├── content.md │ │ │ │ ├── css-reset.md │ │ │ │ ├── display.md │ │ │ │ ├── elevation.md │ │ │ │ ├── flex.md │ │ │ │ ├── float.md │ │ │ │ ├── overflow.md │ │ │ │ ├── sizing.md │ │ │ │ ├── spacing.md │ │ │ │ ├── text-and-typography.md │ │ │ │ └── transitions.md │ │ │ │ ├── user │ │ │ │ ├── dashboard.md │ │ │ │ ├── options.md │ │ │ │ └── subscriptions.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 │ │ │ ├── gtag.ts │ │ │ ├── i18n.ts │ │ │ ├── icons.ts │ │ │ ├── octokit.ts │ │ │ ├── one.ts │ │ │ ├── pinia.ts │ │ │ ├── pwa.ts │ │ │ └── vuetify.ts │ │ ├── service-worker.js │ │ ├── shims.d.ts │ │ ├── store │ │ │ ├── ads.ts │ │ │ ├── app.ts │ │ │ ├── banners.ts │ │ │ ├── commits.ts │ │ │ ├── jobs.ts │ │ │ ├── locale.ts │ │ │ ├── made-with-vuetify.ts │ │ │ ├── promotions.ts │ │ │ ├── releases.ts │ │ │ ├── shopify.ts │ │ │ ├── sponsors.ts │ │ │ ├── spot.ts │ │ │ └── team.ts │ │ ├── util │ │ │ ├── analytics.ts │ │ │ ├── globals.ts │ │ │ ├── helpers.ts │ │ │ ├── markdown-it-rules.ts │ │ │ ├── markdown-it.ts │ │ │ ├── metadata.ts │ │ │ └── routes.ts │ │ └── vite-env.d.ts │ ├── tsconfig.json │ └── vite.config.mts └── vuetify │ ├── .browserslistrc │ ├── .env.example │ ├── .eslintignore │ ├── .eslintrc.js │ ├── .gitignore │ ├── _settings.scss │ ├── _styles.scss │ ├── _tools.scss │ ├── babel.config.js │ ├── build │ ├── babel-plugin-replace-import-extension.js │ ├── rollup.config.mjs │ ├── rollup.types.config.mjs │ └── run-tests.js │ ├── cypress.config.ts │ ├── cypress │ ├── fixtures │ │ ├── example.json │ │ └── text.txt │ ├── support │ │ ├── component-index.html │ │ ├── index.ts │ │ ├── mount.ts │ │ └── selector.ts │ └── templates │ │ ├── Application.tsx │ │ ├── CenteredGrid.tsx │ │ ├── generateStories.tsx │ │ ├── gridOn.tsx │ │ └── index.ts │ ├── dev │ ├── App.vue │ ├── Playground.datepicker.vue │ ├── Playground.template.vue │ ├── favicon.png │ ├── index.html │ ├── index.js │ ├── router.js │ ├── vuetify.js │ └── vuetify │ │ ├── date.js │ │ ├── defaults.js │ │ ├── icons.js │ │ └── locale.js │ ├── jest.config.js │ ├── package.json │ ├── playgrounds │ ├── Playground.datatable.vue │ ├── Playground.infinite.vue │ ├── Playground.items.vue │ ├── Playground.list.vue │ ├── Playground.nested.vue │ └── Playground.slider.vue │ ├── postcss.config.js │ ├── src │ ├── __tests__ │ │ └── framework.spec.ts │ ├── blueprints │ │ ├── index.ts │ │ ├── md1.ts │ │ ├── md2.ts │ │ └── md3.ts │ ├── components │ │ ├── VAlert │ │ │ ├── VAlert.sass │ │ │ ├── VAlert.tsx │ │ │ ├── VAlertTitle.ts │ │ │ ├── __tests__ │ │ │ │ └── VAlert.spec.cy.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.cy.tsx │ │ │ ├── _variables.scss │ │ │ └── index.ts │ │ ├── VAutocomplete │ │ │ ├── VAutocomplete.sass │ │ │ ├── VAutocomplete.tsx │ │ │ ├── __tests__ │ │ │ │ └── VAutocomplete.spec.cy.tsx │ │ │ ├── _variables.scss │ │ │ └── index.ts │ │ ├── VAvatar │ │ │ ├── VAvatar.sass │ │ │ ├── VAvatar.tsx │ │ │ ├── _mixins.scss │ │ │ ├── _variables.scss │ │ │ └── index.ts │ │ ├── VBadge │ │ │ ├── VBadge.sass │ │ │ ├── VBadge.tsx │ │ │ ├── __tests__ │ │ │ │ └── VBadge.spec.cy.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.cy.tsx │ │ │ ├── _variables.scss │ │ │ └── index.ts │ │ ├── VBottomSheet │ │ │ ├── VBottomSheet.sass │ │ │ ├── VBottomSheet.tsx │ │ │ ├── __tests__ │ │ │ │ └── VBottomSheet.spec.cy.tsx │ │ │ ├── _variables.scss │ │ │ └── index.ts │ │ ├── VBreadcrumbs │ │ │ ├── VBreadcrumbs.sass │ │ │ ├── VBreadcrumbs.tsx │ │ │ ├── VBreadcrumbsDivider.tsx │ │ │ ├── VBreadcrumbsItem.tsx │ │ │ ├── __tests__ │ │ │ │ └── VBreadcrumbs.spec.cy.tsx │ │ │ ├── _variables.scss │ │ │ └── index.ts │ │ ├── VBtn │ │ │ ├── VBtn.sass │ │ │ ├── VBtn.tsx │ │ │ ├── __tests__ │ │ │ │ └── VBtn.spec.cy.tsx │ │ │ ├── _mixins.scss │ │ │ ├── _variables.scss │ │ │ └── index.ts │ │ ├── VBtnGroup │ │ │ ├── VBtnGroup.sass │ │ │ ├── VBtnGroup.tsx │ │ │ ├── __tests__ │ │ │ │ └── VBtnGroup.spec.cy.tsx │ │ │ ├── _variables.scss │ │ │ └── index.ts │ │ ├── VBtnToggle │ │ │ ├── VBtnToggle.sass │ │ │ ├── VBtnToggle.tsx │ │ │ ├── _variables.scss │ │ │ └── index.ts │ │ ├── VCalendar │ │ │ ├── VCalendar.ts │ │ │ ├── VCalendarCategory.sass │ │ │ ├── VCalendarCategory.ts │ │ │ ├── VCalendarDaily.sass │ │ │ ├── VCalendarDaily.ts │ │ │ ├── VCalendarMonthly.ts │ │ │ ├── VCalendarWeekly.sass │ │ │ ├── VCalendarWeekly.ts │ │ │ ├── __tests__ │ │ │ │ ├── VCalendar.spec.ts │ │ │ │ ├── VCalendarCategory.spec.ts │ │ │ │ ├── VCalendarDaily.spec.ts │ │ │ │ └── __snapshots__ │ │ │ │ │ ├── VCalendar.spec.ts.snap │ │ │ │ │ └── VCalendarDaily.spec.ts.snap │ │ │ ├── _variables.scss │ │ │ ├── index.ts │ │ │ ├── mixins │ │ │ │ ├── __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 │ │ │ │ │ ├── mouse.spec.ts │ │ │ │ │ └── times.spec.ts │ │ │ │ ├── calendar-base.ts │ │ │ │ ├── calendar-with-events.sass │ │ │ │ ├── calendar-with-events.ts │ │ │ │ ├── calendar-with-intervals.ts │ │ │ │ ├── mouse.ts │ │ │ │ └── times.ts │ │ │ ├── modes │ │ │ │ ├── __tests__ │ │ │ │ │ ├── __snapshots__ │ │ │ │ │ │ └── common.spec.ts.snap │ │ │ │ │ └── common.spec.ts │ │ │ │ ├── column.ts │ │ │ │ ├── common.ts │ │ │ │ ├── index.ts │ │ │ │ └── stack.ts │ │ │ └── util │ │ │ │ ├── __tests__ │ │ │ │ ├── __snapshots__ │ │ │ │ │ ├── events.spec.ts.snap │ │ │ │ │ └── timestamp.spec.ts.snap │ │ │ │ ├── events.spec.ts │ │ │ │ ├── props.spec.ts │ │ │ │ └── timestamp.spec.ts │ │ │ │ ├── events.ts │ │ │ │ ├── parser.ts │ │ │ │ ├── props.ts │ │ │ │ └── timestamp.ts │ │ ├── VCard │ │ │ ├── VCard.sass │ │ │ ├── VCard.tsx │ │ │ ├── VCardActions.tsx │ │ │ ├── VCardItem.tsx │ │ │ ├── VCardSubtitle.ts │ │ │ ├── VCardText.ts │ │ │ ├── VCardTitle.ts │ │ │ ├── _mixins.scss │ │ │ ├── _variables.scss │ │ │ └── index.ts │ │ ├── VCarousel │ │ │ ├── VCarousel.sass │ │ │ ├── VCarousel.tsx │ │ │ ├── VCarouselItem.tsx │ │ │ ├── _variables.scss │ │ │ └── index.ts │ │ ├── VCheckbox │ │ │ ├── VCheckbox.sass │ │ │ ├── VCheckbox.tsx │ │ │ ├── VCheckboxBtn.tsx │ │ │ ├── __tests__ │ │ │ │ └── VCheckboxBtn.spec.cy.tsx │ │ │ ├── _variables.scss │ │ │ └── index.ts │ │ ├── VChip │ │ │ ├── VChip.sass │ │ │ ├── VChip.tsx │ │ │ ├── __tests__ │ │ │ │ └── VChip.spec.cy.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.cy.tsx │ │ │ ├── _variables.scss │ │ │ ├── index.ts │ │ │ └── util │ │ │ │ ├── __tests__ │ │ │ │ └── index.spec.ts │ │ │ │ └── index.ts │ │ ├── VCombobox │ │ │ ├── VCombobox.sass │ │ │ ├── VCombobox.tsx │ │ │ ├── __tests__ │ │ │ │ ├── VCombobox-multiple.spec.ts │ │ │ │ ├── VCombobox.spec.cy.tsx │ │ │ │ └── VCombobox.spec.ts │ │ │ ├── _variables.scss │ │ │ └── index.ts │ │ ├── VCounter │ │ │ ├── VCounter.sass │ │ │ ├── VCounter.tsx │ │ │ ├── _variables.scss │ │ │ └── index.ts │ │ ├── VDataIterator │ │ │ ├── VDataIterator.tsx │ │ │ ├── __tests__ │ │ │ │ └── VDataIterator.spec.cy.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.cy.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 │ │ │ ├── VDatePickerTitle.sass │ │ │ ├── VDatePickerTitle.ts │ │ │ ├── VDatePickerYears.sass │ │ │ ├── VDatePickerYears.tsx │ │ │ ├── __tests__ │ │ │ │ ├── VDatePicker.date.spec.ts │ │ │ │ ├── VDatePicker.month.spec.ts │ │ │ │ ├── VDatePickerDateTable.spec.ts │ │ │ │ ├── VDatePickerHeader.spec.ts │ │ │ │ ├── VDatePickerMonthTable.spec.ts │ │ │ │ ├── VDatePickerTitle.spec.ts │ │ │ │ ├── VDatePickerYears.spec.ts │ │ │ │ ├── __snapshots__ │ │ │ │ │ ├── VDatePicker.date.spec.ts.snap │ │ │ │ │ ├── VDatePicker.month.spec.ts.snap │ │ │ │ │ ├── VDatePickerDateTable.spec.ts.snap │ │ │ │ │ ├── VDatePickerHeader.spec.ts.snap │ │ │ │ │ ├── VDatePickerMonthTable.spec.ts.snap │ │ │ │ │ ├── VDatePickerTitle.spec.ts.snap │ │ │ │ │ └── VDatePickerYears.spec.ts.snap │ │ │ │ └── utils.spec.ts │ │ │ ├── _variables.scss │ │ │ ├── index.ts │ │ │ ├── util │ │ │ │ ├── __tests__ │ │ │ │ │ ├── createNativeLocaleFormatter.spec.ts │ │ │ │ │ ├── monthChange.spec.ts │ │ │ │ │ ├── pad.spec.ts │ │ │ │ │ └── sanitizeDateString.spec.ts │ │ │ │ ├── createNativeLocaleFormatter.ts │ │ │ │ ├── eventHelpers.ts │ │ │ │ ├── index.ts │ │ │ │ ├── isDateAllowed.ts │ │ │ │ ├── monthChange.ts │ │ │ │ ├── pad.ts │ │ │ │ └── sanitizeDateString.ts │ │ │ └── utils.ts │ │ ├── VDefaultsProvider │ │ │ ├── VDefaultsProvider.tsx │ │ │ ├── __tests__ │ │ │ │ └── VDefaultsProvider.spec.cy.tsx │ │ │ └── index.ts │ │ ├── VDialog │ │ │ ├── VDialog.sass │ │ │ ├── VDialog.tsx │ │ │ ├── _variables.scss │ │ │ └── index.ts │ │ ├── VDivider │ │ │ ├── VDivider.sass │ │ │ ├── VDivider.tsx │ │ │ ├── _variables.scss │ │ │ └── index.ts │ │ ├── VExpansionPanel │ │ │ ├── VExpansionPanel.sass │ │ │ ├── VExpansionPanel.tsx │ │ │ ├── VExpansionPanelText.tsx │ │ │ ├── VExpansionPanelTitle.tsx │ │ │ ├── VExpansionPanels.tsx │ │ │ ├── __tests__ │ │ │ │ └── VExpansionPanels.spec.cy.tsx │ │ │ ├── _variables.scss │ │ │ └── index.ts │ │ ├── VField │ │ │ ├── VField.sass │ │ │ ├── VField.tsx │ │ │ ├── VFieldLabel.tsx │ │ │ ├── _variables.scss │ │ │ └── index.ts │ │ ├── VFileInput │ │ │ ├── VFileInput.sass │ │ │ ├── VFileInput.tsx │ │ │ ├── __tests__ │ │ │ │ ├── VFileInput.spec.cy.tsx │ │ │ │ └── VFileInput.spec.tsx │ │ │ ├── _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.tsx │ │ │ ├── VGrid.sass │ │ │ ├── VRow.ts │ │ │ ├── VSpacer.ts │ │ │ ├── __tests__ │ │ │ │ └── VCol.spec.ts │ │ │ ├── _mixins.sass │ │ │ └── index.ts │ │ ├── VHover │ │ │ ├── VHover.tsx │ │ │ ├── __tests__ │ │ │ │ └── VHover.spec.cy.tsx │ │ │ └── index.ts │ │ ├── VIcon │ │ │ ├── VIcon.sass │ │ │ ├── VIcon.tsx │ │ │ ├── __tests__ │ │ │ │ └── VIcon.spec.cy.tsx │ │ │ ├── _variables.scss │ │ │ └── index.ts │ │ ├── VImg │ │ │ ├── VImg.sass │ │ │ ├── VImg.tsx │ │ │ ├── _variables.scss │ │ │ └── index.ts │ │ ├── VInfiniteScroll │ │ │ ├── VInfiniteScroll.sass │ │ │ ├── VInfiniteScroll.tsx │ │ │ ├── __tests__ │ │ │ │ └── VInfiniteScroll.spec.cy.tsx │ │ │ ├── _variables.scss │ │ │ └── index.ts │ │ ├── VInput │ │ │ ├── InputIcon.tsx │ │ │ ├── VInput.sass │ │ │ ├── VInput.tsx │ │ │ ├── __tests__ │ │ │ │ └── VInput.spec.cy.tsx │ │ │ ├── _variables.scss │ │ │ └── index.ts │ │ ├── VItemGroup │ │ │ ├── VItem.tsx │ │ │ ├── VItemGroup.sass │ │ │ ├── VItemGroup.tsx │ │ │ ├── __tests__ │ │ │ │ ├── VItemGroup.spec.cy.tsx │ │ │ │ ├── VItemGroup.spec.ts │ │ │ │ └── __snapshots__ │ │ │ │ │ └── VItemGroup.spec.ts.snap │ │ │ ├── _variables.scss │ │ │ └── index.ts │ │ ├── VKbd │ │ │ ├── VKbd.sass │ │ │ ├── _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.ts │ │ │ ├── VListItemTitle.ts │ │ │ ├── VListSubheader.tsx │ │ │ ├── __tests__ │ │ │ │ ├── VList.spec.cy.tsx │ │ │ │ ├── VList.spec.ts │ │ │ │ ├── VListGroup.spec.cy.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 │ │ │ ├── __tests__ │ │ │ │ └── VMain.spec.cy.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.cy.tsx │ │ │ ├── _variables.scss │ │ │ ├── index.ts │ │ │ ├── sticky.ts │ │ │ └── touch.ts │ │ ├── VNoSsr │ │ │ ├── VNoSsr.tsx │ │ │ └── index.ts │ │ ├── VOtpInput │ │ │ ├── VOtpInput.sass │ │ │ ├── VOtpInput.tsx │ │ │ ├── __tests__ │ │ │ │ └── VOtpInput.spec.cy.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.cy.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.cy.tsx │ │ │ ├── _variables.scss │ │ │ └── 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.cy.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.cy.tsx │ │ │ ├── _variables.scss │ │ │ ├── index.ts │ │ │ └── useScrolling.ts │ │ ├── VSelectionControl │ │ │ ├── VSelectionControl.sass │ │ │ ├── VSelectionControl.tsx │ │ │ ├── __tests__ │ │ │ │ ├── VSelectionControl.spec.cy.tsx │ │ │ │ └── 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.cy.tsx │ │ │ ├── _variables.scss │ │ │ ├── index.ts │ │ │ └── slider.ts │ │ ├── VSnackbar │ │ │ ├── VSnackbar.sass │ │ │ ├── VSnackbar.tsx │ │ │ ├── _variables.scss │ │ │ └── index.ts │ │ ├── VSparkline │ │ │ ├── VSparkline.ts │ │ │ ├── __tests__ │ │ │ │ ├── VSparkline.spec.ts │ │ │ │ └── __snapshots__ │ │ │ │ │ └── VSparkline.spec.ts.snap │ │ │ ├── helpers │ │ │ │ ├── core.ts │ │ │ │ ├── math.ts │ │ │ │ └── path.ts │ │ │ └── index.ts │ │ ├── VSpeedDial │ │ │ ├── VSpeedDial.sass │ │ │ ├── VSpeedDial.ts │ │ │ ├── __tests__ │ │ │ │ ├── VSpeedDial.spec.ts │ │ │ │ └── __snapshots__ │ │ │ │ │ └── VSpeedDial.spec.ts.snap │ │ │ ├── _variables.scss │ │ │ └── index.ts │ │ ├── VStepper │ │ │ ├── VStepper.sass │ │ │ ├── VStepper.tsx │ │ │ ├── VStepperActions.tsx │ │ │ ├── VStepperHeader.ts │ │ │ ├── VStepperItem.sass │ │ │ ├── VStepperItem.tsx │ │ │ ├── VStepperWindow.tsx │ │ │ ├── VStepperWindowItem.tsx │ │ │ ├── _variables.scss │ │ │ └── index.ts │ │ ├── VSwitch │ │ │ ├── VSwitch.sass │ │ │ ├── VSwitch.tsx │ │ │ ├── __tests__ │ │ │ │ └── VSwitch.spec.cy.tsx │ │ │ ├── _variables.scss │ │ │ └── index.ts │ │ ├── VSystemBar │ │ │ ├── VSystemBar.sass │ │ │ ├── VSystemBar.tsx │ │ │ ├── __tests__ │ │ │ │ └── VSystemBar.spec.cy.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 │ │ │ ├── __tests__ │ │ │ │ └── VTabs.spec.cy.tsx │ │ │ ├── _variables.scss │ │ │ ├── index.ts │ │ │ └── shared.ts │ │ ├── VTextField │ │ │ ├── VTextField.sass │ │ │ ├── VTextField.tsx │ │ │ ├── __tests__ │ │ │ │ ├── VTextField.spec.cy.tsx │ │ │ │ └── VTextField.spec.tsx │ │ │ ├── _variables.scss │ │ │ └── index.ts │ │ ├── VTextarea │ │ │ ├── VTextarea.sass │ │ │ ├── VTextarea.tsx │ │ │ ├── __tests__ │ │ │ │ ├── VTextarea.spec.cy.tsx │ │ │ │ └── VTextarea.spec.tsx │ │ │ ├── _variables.scss │ │ │ └── index.ts │ │ ├── VThemeProvider │ │ │ ├── VThemeProvider.sass │ │ │ ├── VThemeProvider.tsx │ │ │ ├── __tests__ │ │ │ │ └── VThemeProvider.spec.cy.tsx │ │ │ └── index.ts │ │ ├── VTimePicker │ │ │ ├── SelectingTimes.ts │ │ │ ├── VTimePicker.ts │ │ │ ├── VTimePickerClock.sass │ │ │ ├── VTimePickerClock.ts │ │ │ ├── VTimePickerTitle.sass │ │ │ ├── VTimePickerTitle.ts │ │ │ ├── __tests__ │ │ │ │ ├── VTimePicker.spec.ts │ │ │ │ ├── VTimePickerClock.spec.ts │ │ │ │ ├── VTimePickerTitle.spec.ts │ │ │ │ └── __snapshots__ │ │ │ │ │ ├── VTimePicker.spec.ts.snap │ │ │ │ │ ├── VTimePickerClock.spec.ts.snap │ │ │ │ │ └── VTimePickerTitle.spec.ts.snap │ │ │ ├── _variables.scss │ │ │ └── index.ts │ │ ├── VTimeline │ │ │ ├── VTimeline.sass │ │ │ ├── VTimeline.tsx │ │ │ ├── VTimelineDivider.tsx │ │ │ ├── VTimelineItem.tsx │ │ │ ├── __tests__ │ │ │ │ └── VTimeline.spec.cy.tsx │ │ │ ├── _mixins.sass │ │ │ ├── _variables.scss │ │ │ └── index.ts │ │ ├── VToolbar │ │ │ ├── VToolbar.sass │ │ │ ├── VToolbar.tsx │ │ │ ├── VToolbarItems.tsx │ │ │ ├── VToolbarTitle.tsx │ │ │ ├── __tests__ │ │ │ │ └── VToolbar.spec.cy.tsx │ │ │ ├── _variables.scss │ │ │ └── index.ts │ │ ├── VTooltip │ │ │ ├── VTooltip.sass │ │ │ ├── VTooltip.tsx │ │ │ ├── _variables.scss │ │ │ └── index.ts │ │ ├── VTreeview │ │ │ ├── VTreeview.sass │ │ │ ├── VTreeview.ts │ │ │ ├── VTreeviewNode.ts │ │ │ ├── __tests__ │ │ │ │ ├── VTreeview.spec.ts │ │ │ │ ├── VTreeviewNode.spec.ts │ │ │ │ └── __snapshots__ │ │ │ │ │ ├── VTreeview.spec.ts.snap │ │ │ │ │ └── VTreeviewNode.spec.ts.snap │ │ │ ├── _mixins.sass │ │ │ ├── _variables.scss │ │ │ ├── index.ts │ │ │ └── util │ │ │ │ ├── __tests__ │ │ │ │ └── filterTreeItems.spec.ts │ │ │ │ └── filterTreeItems.ts │ │ ├── VValidation │ │ │ ├── VValidation.tsx │ │ │ └── index.ts │ │ ├── VVirtualScroll │ │ │ ├── VVirtualScroll.sass │ │ │ ├── VVirtualScroll.tsx │ │ │ ├── VVirtualScrollItem.tsx │ │ │ ├── __tests__ │ │ │ │ └── VVirtualScroll.spec.cy.tsx │ │ │ └── index.ts │ │ ├── VWindow │ │ │ ├── VWindow.sass │ │ │ ├── VWindow.tsx │ │ │ ├── VWindowItem.tsx │ │ │ ├── __tests__ │ │ │ │ └── VWindow.spec.cy.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 │ │ │ ├── border.spec.ts │ │ │ ├── calendar.spec.cy.tsx │ │ │ ├── color.spec.ts │ │ │ ├── defaults.spec.ts │ │ │ ├── delay.spec.ts │ │ │ ├── dimensions.spec.ts │ │ │ ├── display.spec.cy.tsx │ │ │ ├── display.spec.ts │ │ │ ├── elevation.spec.ts │ │ │ ├── filter.spec.ts │ │ │ ├── forwardRefs.spec.tsx │ │ │ ├── group.spec.ts │ │ │ ├── icons.spec.ts │ │ │ ├── items.spec.ts │ │ │ ├── loader.spec.ts │ │ │ ├── location.spec.ts │ │ │ ├── mutationObserver.spec.ts │ │ │ ├── position.spec.ts │ │ │ ├── proxiedModel.spec.ts │ │ │ ├── resizeObserver.spec.ts │ │ │ ├── rounded.spec.ts │ │ │ ├── scroll.spec.ts │ │ │ ├── size.spec.ts │ │ │ ├── tag.spec.ts │ │ │ ├── theme.spec.ts │ │ │ ├── validation.spec.ts │ │ │ └── variant.spec.ts │ │ ├── border.ts │ │ ├── calendar.ts │ │ ├── color.ts │ │ ├── component.ts │ │ ├── date │ │ │ ├── DateAdapter.ts │ │ │ ├── __tests__ │ │ │ │ └── date.spec.ts │ │ │ ├── adapters │ │ │ │ ├── __tests__ │ │ │ │ │ └── vuetify.spec.ts │ │ │ │ └── vuetify.ts │ │ │ ├── date.ts │ │ │ └── index.ts │ │ ├── defaults.ts │ │ ├── delay.ts │ │ ├── density.ts │ │ ├── dimensions.ts │ │ ├── directiveComponent.ts │ │ ├── display.ts │ │ ├── elevation.ts │ │ ├── filter.ts │ │ ├── focus.ts │ │ ├── form.ts │ │ ├── forwardRefs.ts │ │ ├── group.ts │ │ ├── hydration.ts │ │ ├── icons.tsx │ │ ├── index.ts │ │ ├── intersectionObserver.ts │ │ ├── layout.ts │ │ ├── lazy.ts │ │ ├── list-items.ts │ │ ├── loader.tsx │ │ ├── locale.ts │ │ ├── location.ts │ │ ├── mutationObserver.ts │ │ ├── nested │ │ │ ├── __tests__ │ │ │ │ └── selectStrategies.spec.ts │ │ │ ├── nested.ts │ │ │ ├── openStrategies.ts │ │ │ └── selectStrategies.ts │ │ ├── position.ts │ │ ├── proxiedModel.ts │ │ ├── refs.ts │ │ ├── resizeObserver.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.ts │ │ │ └── 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.ts │ │ │ └── index.ts │ │ └── touch │ │ │ ├── __tests__ │ │ │ └── touch.spec.ts │ │ │ └── index.ts │ ├── entry-bundler.ts │ ├── framework.ts │ ├── globals.d.ts │ ├── iconsets │ │ ├── fa-svg.ts │ │ ├── fa.ts │ │ ├── fa4.ts │ │ ├── md.ts │ │ ├── mdi-svg.ts │ │ └── mdi.ts │ ├── labs │ │ ├── VConfirmEdit │ │ │ ├── VConfirmEdit.tsx │ │ │ ├── __test__ │ │ │ │ └── VConfirmEdit.spec.cy.tsx │ │ │ └── index.ts │ │ ├── VPicker │ │ │ ├── VPicker.sass │ │ │ ├── VPicker.tsx │ │ │ ├── VPickerTitle.ts │ │ │ ├── __tests__ │ │ │ │ ├── VPicker.spec.ts │ │ │ │ └── __snapshots__ │ │ │ │ │ └── VPicker.spec.ts.snap │ │ │ ├── _variables.scss │ │ │ └── index.ts │ │ ├── allComponents.ts │ │ ├── components.ts │ │ ├── entry-bundler.ts │ │ └── index.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 │ │ ├── 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 │ ├── services │ │ └── goto │ │ │ ├── __tests__ │ │ │ ├── easing-patterns.spec.ts │ │ │ └── goto.spec.ts │ │ │ ├── easing-patterns.ts │ │ │ ├── index.ts │ │ │ └── util.ts │ ├── shims.d.ts │ ├── styles │ │ ├── elements │ │ │ ├── _blockquote.sass │ │ │ ├── _global.sass │ │ │ └── _index.sass │ │ ├── generic │ │ │ ├── _animations.scss │ │ │ ├── _colors.scss │ │ │ ├── _index.scss │ │ │ ├── _reset.scss │ │ │ ├── _rtl.scss │ │ │ └── _transitions.scss │ │ ├── main.sass │ │ ├── settings │ │ │ ├── _colors.scss │ │ │ ├── _elevations.scss │ │ │ ├── _index.sass │ │ │ ├── _utilities.scss │ │ │ └── _variables.scss │ │ ├── tools │ │ │ ├── _absolute.sass │ │ │ ├── _bootable.sass │ │ │ ├── _border.sass │ │ │ ├── _density.sass │ │ │ ├── _display.sass │ │ │ ├── _elevation.sass │ │ │ ├── _functions.sass │ │ │ ├── _index.sass │ │ │ ├── _position.sass │ │ │ ├── _radius.sass │ │ │ ├── _rounded.sass │ │ │ ├── _rtl.sass │ │ │ ├── _sheet.sass │ │ │ ├── _states.sass │ │ │ ├── _theme.sass │ │ │ ├── _typography.sass │ │ │ ├── _utilities.sass │ │ │ └── _variant.sass │ │ └── utilities │ │ │ ├── _display.sass │ │ │ ├── _elevation.scss │ │ │ ├── _index.sass │ │ │ └── _screenreaders.sass │ └── util │ │ ├── __tests__ │ │ ├── colorUtils.spec.ts │ │ ├── dateTimeUtils.spec.ts │ │ ├── dom.spec.ts │ │ ├── getCurrentInstance.spec.tsx │ │ ├── helpers.spec.ts │ │ └── propsFactory.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 │ │ ├── dateTimeUtils.ts │ │ ├── defineComponent.tsx │ │ ├── dom.ts │ │ ├── easing.ts │ │ ├── events.ts │ │ ├── getCurrentInstance.ts │ │ ├── getScrollParent.ts │ │ ├── globals.ts │ │ ├── helpers.ts │ │ ├── index.ts │ │ ├── injectSelf.ts │ │ ├── isFixedPosition.ts │ │ ├── propsFactory.ts │ │ └── useRender.ts │ ├── test │ ├── index.ts │ └── util │ │ └── to-have-been-warned.ts │ ├── tsconfig.checks.json │ ├── tsconfig.dev.json │ ├── tsconfig.dist.json │ ├── tsconfig.json │ ├── types │ └── cypress.d.ts │ └── vite.config.mjs ├── scripts ├── build.js ├── confirm-npm-tag.js ├── converter.js ├── deploy-and-alias.js ├── deploy.sh ├── 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 │ ├── cypress-types-reference.js │ ├── jest-global-imports.js │ ├── jsx-condition-key.js │ ├── jsx-curly-spacing.js │ ├── no-components-index.js │ ├── no-nullish-coalescing-in-condition.js │ ├── no-render-string-reference.js │ └── sort-imports.js └── warn-npm-install.js ├── templates ├── component.tsx ├── cypress-test.tsx └── jest-test.ts ├── tsconfig.eslint.json ├── tsconfig.json ├── vercel.json └── yarn.lock /.dockerignore: -------------------------------------------------------------------------------- 1 | .git 2 | .vscode 3 | .devbots 4 | .github 5 | node_modules 6 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto eol=lf 2 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: [johnleider, KaelWD, MajesticPotatoe] 4 | patreon: vuetify 5 | open_collective: vuetify 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: npm/vuetify 8 | custom: # Replace with a single custom sponsorship URL 9 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: Vuetify Issue Creator 4 | url: https://issues.vuetifyjs.com 5 | about: Create Vuetify issues here. 6 | -------------------------------------------------------------------------------- /.github/lock.yml: -------------------------------------------------------------------------------- 1 | daysUntilLock: 365 2 | lockComment: false 3 | 4 | pulls: 5 | daysUntilLock: 30 6 | exemptLabels: ['S: on hold', 'S: work in progress'] 7 | -------------------------------------------------------------------------------- /.github/semantic.yml: -------------------------------------------------------------------------------- 1 | titleOnly: true 2 | -------------------------------------------------------------------------------- /.github/sponsors.yml: -------------------------------------------------------------------------------- 1 | - label: 'P: sponsor' 2 | members: 3 | 4 | - label: 'P: elite sponsor' 5 | members: 6 | -------------------------------------------------------------------------------- /.github/workflows/close-issue.yml: -------------------------------------------------------------------------------- 1 | name: Close issues 2 | on: 3 | push: 4 | branches: 5 | - dev 6 | - next 7 | - v2-stable 8 | - v2-dev 9 | 10 | env: 11 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 12 | 13 | jobs: 14 | close: 15 | runs-on: ubuntu-latest 16 | if: github.repository_owner == 'vuetifyjs' 17 | steps: 18 | - uses: vuetifyjs/close-action@master 19 | with: 20 | token: ${{ secrets.GITHUB_TOKEN }} 21 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | .env 4 | 5 | # IDE user config 6 | .vscode/ 7 | .idea/ 8 | .vs/ 9 | 10 | # Logs 11 | yarn-error.log 12 | npm-debug.log 13 | lerna-debug.log 14 | 15 | # Istanbul coverage 16 | coverage/ 17 | 18 | # cypress 19 | cypress/screenshots 20 | cypress/videos 21 | 22 | .vercel 23 | .now 24 | -------------------------------------------------------------------------------- /.vercelignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | /scripts 3 | /packages/vuetify 4 | /packages/api-generator 5 | /packages/docs/src 6 | !/packages/docs/dist 7 | -------------------------------------------------------------------------------- /.yarnrc: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | yarn-path ".yarn/releases/yarn-1.19.0.cjs" 6 | -------------------------------------------------------------------------------- /lerna.json: -------------------------------------------------------------------------------- 1 | { 2 | "command": { 3 | "publish": { 4 | "allowBranch": [ 5 | "master", 6 | "dev", 7 | "next" 8 | ], 9 | "message": "chore(release): publish %s" 10 | }, 11 | "version": { 12 | "push": true 13 | } 14 | }, 15 | "npmClient": "yarn", 16 | "version": "3.4.8", 17 | "useWorkspaces": true 18 | } 19 | -------------------------------------------------------------------------------- /packages/README.md: -------------------------------------------------------------------------------- 1 |

These are the packages for the Vuetify monorepo.

2 | 3 | ## Packages for the Vuetify 4 | 5 | 1. **api-generator** - generates api for Vuetify docs and other resources. 6 | 2. **docs** - Vuetify documentation 7 | 3. **vuetify** - main source code for Vuetify 8 | -------------------------------------------------------------------------------- /packages/api-generator/.gitignore: -------------------------------------------------------------------------------- 1 | /dist/ 2 | /lib/ 3 | /src/locale/* 4 | /templates/tmp/ 5 | !/src/locale/en 6 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/$vuetify.json: -------------------------------------------------------------------------------- 1 | { 2 | "functions": { 3 | "goTo": "Scroll to target location, using provided options." 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/DataIterator-items.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "itemSelectable": "Property on supplied `items` that contains the boolean value indicating if the item is selectable.", 4 | "itemValue": "Property on supplied `items` that contains its value.", 5 | "returnObject": "Changes the selection behavior to return the object directly rather than the value specified with **item-value**." 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/DataTable-expand.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "expanded": "Whether the item is expanded or not.", 4 | "expandOnClick": "Expands item when the row is clicked.", 5 | "showExpand": "Shows the expand icon." 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/DataTable-group.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "groupBy": "Defines the grouping of the table items." 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/DataTable-header.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "headers": "An array of objects that each describe a header column." 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/DataTable-items.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "itemSelectable": "Property on supplied `items` that indicates whether the item is selectable.", 4 | "itemValue": "Property on supplied `items` that contains its value.", 5 | "returnObject": "Changes the selection behavior to return the object directly rather than the value specified with **item-value**." 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/DataTable-paginate.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "itemsPerPage": "The number of items to display on each page.", 4 | "page": "The current displayed page number (1-indexed)." 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/DataTable-select.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "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).", 4 | "showSelect": "Shows the column with checkboxes for selecting items in the list." 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/DataTable-sort.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "customKeySort": "Function used on specific keys within the item object. `customSort` is skipped for columns with `customKeySort` specified.", 4 | "mustSort": "Forces sorting on the column(s).", 5 | "sortBy": "Array of column keys and sort orders that determines the sort order of the table." 6 | 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VApp.json: -------------------------------------------------------------------------------- 1 | { 2 | "exposed": { 3 | "theme": "The instance of the injected active theme." 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VBottomNavigation.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "grow": "Force all [v-btn](/components/buttons) children to take up all available horizontal space.", 4 | "mode": "Changes the orientation and active state styling of the component." 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VBottomSheet.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "inset": "Reduces the sheet content maximum width to 70%." 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VBreadcrumbsDivider.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "divider": "Specifies the dividing character between items." 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VBtnGroup.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "divided": "Add dividers between children [v-btn](/components/buttons) components." 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VCheckboxBtn.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "indeterminate": "Puts the control in an indeterminate state. Used with the [indeterminate-icon](#props-indeterminate-icon) property.", 4 | "indeterminateIcon": "Icon used when the component is in an indeterminate state." 5 | }, 6 | "events": { 7 | "update:indeterminate": "Event that is emitted when the component's indeterminate state changes." 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VContainer.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "fluid": "Removes viewport maximum-width size breakpoints." 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VCounter.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "active": "Determines whether the counter is visible or not.", 4 | "max": "Sets the maximum allowed value.", 5 | "value": "Sets the current counter value." 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VDataTableHeaders.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "sortAscIcon": "Icon used for ascending sort button.", 4 | "sortDescIcon": "Icon used for descending sort button.", 5 | "sticky": "Sticks the header to the top of the table." 6 | }, 7 | "slots": { 8 | "[`column.${string}`]": "Slot for custom rendering of a column." 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VDataTableRow.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "index": "Row index.", 4 | "item": "Data (key, index and column values) of the displayed item." 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VDialogTransition.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VDivider.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "inset": "Adds indentation (72px) for **normal** dividers, reduces max height for **vertical**.", 4 | "length": "Sets the dividers length. Default unit is px.", 5 | "thickness": "Sets the dividers thickness. Default unit is px.", 6 | "vertical": "Displays dividers vertically." 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VExpansionPanel.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "disabled": "Disables the expansion-panel content.", 4 | "readonly": "Makes the expansion-panel content read only.", 5 | "value": "Controls the opened/closed state of content." 6 | }, 7 | "events": { 8 | "change": "Toggles the value of the selected panel.", 9 | "click": "Mouse click event." 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VExpansionPanelTitle.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "collapseIcon": "Icon used when the expansion panel is in a collapsable state.", 4 | "expandIcon": "Icon used when the expansion panel is in a expandable state.", 5 | "hideActions": "Hide the expand icon in the content title." 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VFieldLabel.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "floating": "Elevates the label above the slotted content." 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VFooter.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "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." 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VHover.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "disabled": "Removes hover functionality." 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VItemGroup.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "selectedClass": "Configure the selected CSS class. This class will be available in `v-item` default scoped slot." 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VLabel.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "clickable": "Changes the cursor to a pointer when the mouse is over the element." 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VLayout.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VLayoutItem.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VLazy.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "options": "Options that are passed to the [Intersection observer](https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API) constructor." 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VListItemAvatar.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "horizontal": "Uses an alternative horizontal style." 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VListItemGroup.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "value": "Sets the active list-item inside the list-group." 4 | }, 5 | "events": { 6 | "change": "Emitted when the component value is changed by user interaction.", 7 | "click": "Emitted when component is clicked - Will trigger component to ripple when clicked unless the `.native` modifier is used." 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VListSubheader.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VLocaleProvider.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VMain.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VMessages.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "active": "Determines whether the messages are visible or not.", 4 | "message": "Display a single message." 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VOverflowBtn.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "editable": "Creates an editable button.", 4 | "overflow": "Creates an overflow button.", 5 | "persistentPlaceholder": "Forces label to always be visible.", 6 | "segmented": "Creates a segmented button." 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VOverlay-location-strategies.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "locationStrategy": "A function used to specifies how the component should position relative to its activator.", 4 | "offset": "A single value that offsets content away from the target based upon what side it is on." 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VOverlay-scroll-strategies.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "scrollStrategy": "Strategy used when the component is activate and user scrolls." 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VParallax.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "alt": "Attaches an alt property to the parallax image.", 4 | "src": "The image to parallax.", 5 | "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)." 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VRadio.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "falseIcon": "The icon used when inactive.", 4 | "trueIcon": "The icon used when active." 5 | }, 6 | "events": { 7 | "change": "Emitted when the input is changed by user interaction.", 8 | "click": "Emitted when input is clicked. **Note:** the **change** event should be used instead of **click** when monitoring state change." 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VRadioGroup.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "column": "Displays radio buttons in column.", 4 | "inline": "Displays radio buttons in row." 5 | }, 6 | "events": { 7 | "change": "Emitted when the input is changed by user interaction." 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VRangeSlider.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "strict": "Disallows dragging the ending thumb past the starting thumb and vice versa." 4 | 5 | }, 6 | "slots": { 7 | "thumb-label": "Slot for the thumb label.", 8 | "tick-label": "Slot for the tick label." 9 | }, 10 | "events": { 11 | "end": "Slider value emitted at the end of slider movement.", 12 | "start": "Slider value emitted at start of slider movement." 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VResponsive.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "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.", 4 | "contentClass": "Apply a custom class to the internal content element.", 5 | "inline": "Display as an inline element instead of a block, also disables flex-grow." 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VSelectionControl.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "value": "The value used when the component is selected in a group. If not provided, a unique ID will be used." 4 | }, 5 | "slots": { 6 | "input": "The slot used for the default input element." 7 | }, 8 | "exposed": { 9 | "isFocused": "Will return true if the component is currently focused.", 10 | "input": "Reference to the root input element." 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VSheet.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VSimpleTable.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "dense": "Decreases paddings to render a dense table.", 4 | "fixedHeader": "Sets table header to fixed mode." 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VSpeedDial.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "direction": "Direction in which speed-dial content will show. Possible values are `top`, `bottom`, `left`, `right`.", 4 | "openOnHover": "Opens speed-dial on hover." 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VStepperActions.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "nextText": "The text used for the Next button.", 4 | "prevText": "The text used for the Prev button." 5 | }, 6 | "events": { 7 | "click:next": "Event emitted when clicking the next button.", 8 | "click:prev": "Event emitted when clicking the prev button." 9 | }, 10 | "slots": { 11 | "next": "Slot for customizing the next step functionailty", 12 | "prev": "Slot for customizing the prev step functionality" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VStepperHeader.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": {} 3 | } 4 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VStepperWindow.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": {} 3 | } 4 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VStepperWindowItem.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": {} 3 | } 4 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VSystemBar.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "height": "Sets the height for the component.", 4 | "lightsOut": "Reduces the system bar opacity.", 5 | "window": "Increases the system bar height to 32px (24px default)." 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VTabItem.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "value": "Sets the value of the tab. If not provided, the index will be used." 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VTabsItems.json: -------------------------------------------------------------------------------- 1 | { 2 | "events": { 3 | "change": "Emitted when user swipes between tabs." 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VThemeProvider.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "root": "Use the current value of `$vuetify.theme.dark` as opposed to the provided one." 4 | }, 5 | "slots": { 6 | "default": "All child components will have their theme overridden. Must have exactly one root element." 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/VVirtualScroll.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "height": "Height of the component as a css value/", 4 | "itemKey": "Required when using **dynamic-item-height** together with object items. Should point to a property with a unique value for each item.", 5 | "items": "The array of items to display.", 6 | "renderless": "Disables default component rendering functionality." 7 | }, 8 | "slots": { 9 | "default": "Default slot to render a single item." 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/border.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "border": "Applies border styles to component." 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/delay.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "closeDelay": "Milliseconds to wait before closing component. Only applies to hover and focus events.", 4 | "openDelay": "Milliseconds to wait before opening component. Only applies to hover and focus events." 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/dimension.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "height": "Sets the height for the component.", 4 | "maxHeight": "Sets the maximum height for the component.", 5 | "maxWidth": "Sets the maximum width for the component.", 6 | "minHeight": "Sets the minimum height for the component.", 7 | "minWidth": "Sets the minimum width for the component.", 8 | "width": "Sets the width for the component." 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/elevation.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "elevation": "Designates an elevation applied to the component between 0 and 24. You can find more information on the [elevation page](/styles/elevation)." 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/focus.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "focused": "Forces a focused state styling on the component." 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/group-item.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "value": "The value used when the component is selected in a group. If not provided, a unique ID will be used." 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/group.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "disabled": "Puts all children components into a disabled state.", 4 | "max": "Sets a maximum number of selections that can be made.", 5 | "multiple": "Allows one to select multiple items.", 6 | "value": "The value used when the component is selected within a group. If not provided, the render index is used." 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/layout-item.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "absolute": "Applies **position: absolute** to the component.", 4 | "name": "Assign a specific name for layout registration.", 5 | "order": "Adjust the order of the component in relation to its registration order." 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/layout.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "fullHeight": "Sets the component height to 100%.", 4 | "overlaps": "**FOR INTERNAL USE ONLY**" 5 | }, 6 | "exposed": { 7 | "getLayoutItem": "Function that returns position and size information about a specific layout item.", 8 | "items": "A array of all registered layout items." 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/loader.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "loading": "Displays linear 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." 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/location.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "location": "Specifies the component's location. Can combine by using a space separated string." 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/position.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "position": "Sets the position for the component." 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/rounded.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "rounded": "Designates the **border-radius** applied to the component. You can find more information on the [Border Radius page](/styles/border-radius)." 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/size.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "size": "Sets the height and width of the component. Default unit is px. Can also use the following predefined sizes: **x-small**, **small**, **default**, **large**, and **x-large**." 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/tag.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "tag": "Specify a custom tag used on the root element." 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/theme.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "theme": "Specify a theme for this component and all of its children." 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/transition.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "transition": "Sets the component transition. Can be one of the [built in](/styles/transitions/) or custom transition." 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/useLayout.json: -------------------------------------------------------------------------------- 1 | { 2 | "exposed": { 3 | "getLayoutItem": "Function that returns position and size information about a specific layout item.", 4 | "mainRect": "Position and size information for the v-main area.", 5 | "mainStyles": "CSS styles applied to the v-main area." 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/useRtl.json: -------------------------------------------------------------------------------- 1 | { 2 | "exposed": { 3 | "isRtl": "Indicates if RTL is currently active or not.", 4 | "rtlClasses": "**FOR INTERNAL USE ONLY**" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/useTheme.json: -------------------------------------------------------------------------------- 1 | { 2 | "exposed": { 3 | "computedThemes": "Object containing all parsed theme definitions.", 4 | "current": "Current theme object.", 5 | "global": "Reference to the global theme instance.", 6 | "isDisabled": "Indicates if theming is disabled.", 7 | "name": "Name of current theme.", 8 | "styles": "**FOR INTERNAL USE ONLY**", 9 | "themeClasses": "**FOR INTERNAL USE ONLY**", 10 | "themes": "Raw theme definitions." 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/v-click-outside.json: -------------------------------------------------------------------------------- 1 | { 2 | "argument": { 3 | "value": "By default takes a function that is invoked when user clicks outside of the element the directive is attached to. It can also be an object, which allows you to provide `closeConditional` and `include` callbacks." 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/v-resize.json: -------------------------------------------------------------------------------- 1 | { 2 | "argument": { 3 | "value": "The provided handler function will be invoked each time the browser window is resized." 4 | }, 5 | "modifiers": { 6 | "active": "By default the resize event listener is added to window with the `passive` option. This modifier sets `passive` to **false**.", 7 | "quiet": "By default the provided handler function is invoked once when the directive is attached to the element. This modifier disabled that behavior." 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/v-touch.json: -------------------------------------------------------------------------------- 1 | { 2 | "argument": { 3 | "value": "The value is always an object. The `start`, `end`, `move`, `left`, `right`, `up` and `down` functions can be used to invoke a function when the corresponding touch action occurs. If the `parent` option attaches the touch listeners to the parent element instead of the element the directive is used on. The `options` object is described [here](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener)." 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /packages/api-generator/src/locale/en/virtual.json: -------------------------------------------------------------------------------- 1 | { 2 | "props": { 3 | "itemHeight": "Height in pixels of each item to display." 4 | }, 5 | "exposed": { 6 | "scrollToIndex": "Scrolls to the item at a given index." 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /packages/api-generator/src/shims.d.ts: -------------------------------------------------------------------------------- 1 | import { ts } from '@ts-morph/common' 2 | 3 | declare module 'ts-morph' { 4 | export interface Type { 5 | _context: { 6 | compilerFactory: { 7 | getType(type: TType): Type 8 | } 9 | } 10 | } 11 | 12 | namespace ts { 13 | interface Type { 14 | indexInfos: { 15 | keyType: Type 16 | type: Type 17 | }[] 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /packages/api-generator/src/worker.ts: -------------------------------------------------------------------------------- 1 | import { generateComponentDataFromTypes } from './types' 2 | 3 | const reset = '\x1b[0m' 4 | const red = '\x1b[31m' 5 | const blue = '\x1b[34m' 6 | 7 | export default async (componentName: string) => { 8 | console.log(blue, componentName, reset) 9 | 10 | try { 11 | return await generateComponentDataFromTypes(componentName) 12 | } catch (err: any) { 13 | console.error(red, `${componentName}: ${err}`, err.stack, reset) 14 | return null 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /packages/api-generator/templates/composables.d.ts: -------------------------------------------------------------------------------- 1 | import type vuetify from '../../vuetify/lib/index.d.mts' 2 | 3 | type IsComposable = T extends `use${Capitalize}` ? T : never; 4 | 5 | type ExtractComposables = T extends object 6 | ? { 7 | [K in keyof T as K extends IsComposable ? K : never]: T[K] 8 | } 9 | : never 10 | 11 | export type Composables = Prettify> 12 | 13 | type Prettify = { [K in keyof T]: T[K] } & {} 14 | -------------------------------------------------------------------------------- /packages/api-generator/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "strict": true, 5 | "noUnusedLocals": false, 6 | "module": "ESNext", 7 | "moduleResolution": "bundler", 8 | "noEmitOnError": false, 9 | "resolveJsonModule": true, 10 | "paths": { 11 | "@/*": [ 12 | "../vuetify/src/*" 13 | ] 14 | }, 15 | }, 16 | "include": [ 17 | "./src/locale/**/*.json", 18 | ], 19 | } 20 | -------------------------------------------------------------------------------- /packages/docs/.browserslistrc: -------------------------------------------------------------------------------- 1 | >0.5% 2 | Chrome >0 and since 2021-05 3 | ChromeAndroid >0 and since 2021-05 4 | Firefox >0 and since 2021-05 5 | FirefoxAndroid >0 and since 2021-05 6 | Safari >0 and since 2021-05 7 | iOS >0 and since 2021-05 8 | not dead 9 | not op_mini all 10 | not and_uc 1 11 | -------------------------------------------------------------------------------- /packages/docs/.env.example: -------------------------------------------------------------------------------- 1 | # Development 2 | EN_LOCALE_ONLY=true 3 | HOST=localhost 4 | PORT=8095 5 | 6 | # Private authentication API 7 | VITE_API_SERVER_URL= 8 | 9 | # Cosmic.js 10 | VITE_COSMIC_2_BUCKET_SLUG= 11 | VITE_COSMIC_2_BUCKET_READ_KEY= 12 | 13 | VITE_COSMIC_BUCKET_SLUG= 14 | VITE_COSMIC_BUCKET_READ_KEY= 15 | 16 | VITE_COSMIC_BUCKET_SLUG_STORE= 17 | VITE_COSMIC_BUCKET_READ_KEY_STORE= 18 | 19 | # Emailjs 20 | VITE_EMAILJS_SERVICE_ID= 21 | VITE_EMAILJS_TEMPLATE_ID= 22 | VITE_EMAILJS_PUBLIC_KEY= 23 | -------------------------------------------------------------------------------- /packages/docs/.eslintignore: -------------------------------------------------------------------------------- 1 | src/api/* 2 | -------------------------------------------------------------------------------- /packages/docs/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | /src/api 5 | /src/pages/* 6 | !/src/pages/en 7 | .vite-ssg-temp 8 | 9 | # local env files 10 | .env.local 11 | .env.*.local 12 | 13 | # Log files 14 | npm-debug.log* 15 | yarn-debug.log* 16 | yarn-error.log* 17 | 18 | # Editor directories and files 19 | .idea 20 | .vscode 21 | *.suo 22 | *.ntvs* 23 | *.njsproj 24 | *.sln 25 | *.sw? 26 | 27 | .vercel 28 | -------------------------------------------------------------------------------- /packages/docs/.markdownlintrc: -------------------------------------------------------------------------------- 1 | { 2 | "line-length": false, 3 | "blanks-around-headings": true, 4 | "single-title": { 5 | "front_matter_title": "" 6 | }, 7 | "no-trailing-punctuation": false, 8 | "ol-prefix": false, 9 | "no-inline-html": false, 10 | "no-emphasis-as-heading": false, 11 | "no-bare-urls": false, 12 | "emphasis-style": false, 13 | "link-fragments": false 14 | } 15 | -------------------------------------------------------------------------------- /packages/docs/jest-runner-eslint.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | cliOptions: { 3 | ext: ['.js', '.ts', '.tsx', '.vue'], 4 | maxWarnings: 0, 5 | fix: process.env.JEST_FIX === 'true', 6 | }, 7 | } 8 | -------------------------------------------------------------------------------- /packages/docs/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yyx990803/vuetify/7968c1eb456f957308b765eda3135a522a531b0c/packages/docs/public/favicon.ico -------------------------------------------------------------------------------- /packages/docs/public/img/icons/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yyx990803/vuetify/7968c1eb456f957308b765eda3135a522a531b0c/packages/docs/public/img/icons/android-chrome-192x192.png -------------------------------------------------------------------------------- /packages/docs/public/img/icons/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yyx990803/vuetify/7968c1eb456f957308b765eda3135a522a531b0c/packages/docs/public/img/icons/android-chrome-512x512.png -------------------------------------------------------------------------------- /packages/docs/public/img/icons/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yyx990803/vuetify/7968c1eb456f957308b765eda3135a522a531b0c/packages/docs/public/img/icons/apple-touch-icon.png -------------------------------------------------------------------------------- /packages/docs/public/img/icons/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yyx990803/vuetify/7968c1eb456f957308b765eda3135a522a531b0c/packages/docs/public/img/icons/favicon-16x16.png -------------------------------------------------------------------------------- /packages/docs/public/img/icons/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yyx990803/vuetify/7968c1eb456f957308b765eda3135a522a531b0c/packages/docs/public/img/icons/favicon-32x32.png -------------------------------------------------------------------------------- /packages/docs/public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: 3 | -------------------------------------------------------------------------------- /packages/docs/public/search.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Vuetify 4 | Vuetify documentation 5 | UTF-8 6 | https://vuetifyjs.com/favicon.ico 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/docs/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yyx990803/vuetify/7968c1eb456f957308b765eda3135a522a531b0c/packages/docs/src/assets/logo.png -------------------------------------------------------------------------------- /packages/docs/src/components/app/Caption.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 18 | -------------------------------------------------------------------------------- /packages/docs/src/components/app/Divider.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 8 | -------------------------------------------------------------------------------- /packages/docs/src/components/app/Sheet.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 14 | -------------------------------------------------------------------------------- /packages/docs/src/components/app/Table.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 17 | 18 | 23 | -------------------------------------------------------------------------------- /packages/docs/src/components/app/Title.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 8 | -------------------------------------------------------------------------------- /packages/docs/src/components/app/VerticalDivider.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 13 | -------------------------------------------------------------------------------- /packages/docs/src/components/app/settings/Append.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 19 | -------------------------------------------------------------------------------- /packages/docs/src/components/doc/MadeWithVueAttribution.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 17 | -------------------------------------------------------------------------------- /packages/docs/src/components/doc/Tabs.vue: -------------------------------------------------------------------------------- 1 | 15 | 16 | 21 | -------------------------------------------------------------------------------- /packages/docs/src/components/examples/ExampleMissing.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 20 | 21 | 25 | -------------------------------------------------------------------------------- /packages/docs/src/components/examples/Usage.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | -------------------------------------------------------------------------------- /packages/docs/src/components/icons/ChevronDown.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 12 | -------------------------------------------------------------------------------- /packages/docs/src/components/promoted/Discovery.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 8 | -------------------------------------------------------------------------------- /packages/docs/src/components/promoted/Random.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 8 | -------------------------------------------------------------------------------- /packages/docs/src/composables/cosmic.ts: -------------------------------------------------------------------------------- 1 | // Imports 2 | import { createBucketClient } from '@cosmicjs/sdk' 3 | 4 | export function useCosmic ( 5 | bucketSlug = import.meta.env.VITE_COSMIC_2_BUCKET_SLUG as string | undefined, 6 | readKey = import.meta.env.VITE_COSMIC_2_BUCKET_READ_KEY as string | undefined, 7 | ) { 8 | return { 9 | bucket: (readKey && bucketSlug) 10 | ? createBucketClient({ bucketSlug, readKey }) 11 | : undefined, 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /packages/docs/src/data/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Vuetify — A Vue Component Framework", 3 | "description": "Vuetify is a no design skills required UI Component Framework for Vue. It provides you with all of the tools necessary to create beautiful content rich web applications.", 4 | "keywords": "vue, material design components, vue components, material design components, vuetify, vuetify, component framework" 5 | } 6 | -------------------------------------------------------------------------------- /packages/docs/src/examples/accessibility/select-list-item.vue: -------------------------------------------------------------------------------- 1 | 15 | -------------------------------------------------------------------------------- /packages/docs/src/examples/application-layout/app-bar-first.vue: -------------------------------------------------------------------------------- 1 | 16 | -------------------------------------------------------------------------------- /packages/docs/src/examples/application-layout/nav-drawer-first.vue: -------------------------------------------------------------------------------- 1 | 16 | -------------------------------------------------------------------------------- /packages/docs/src/examples/border-radius/misc-pill-and-circle.vue: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /packages/docs/src/examples/border-radius/misc-removing-border-radius.vue: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /packages/docs/src/examples/color/classes.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /packages/docs/src/examples/color/text-classes.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /packages/docs/src/examples/display/display-block.vue: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /packages/docs/src/examples/display/display-inline.vue: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /packages/docs/src/examples/display/print.vue: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /packages/docs/src/examples/display/visibility.vue: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /packages/docs/src/examples/elevation/usage.vue: -------------------------------------------------------------------------------- 1 | 20 | -------------------------------------------------------------------------------- /packages/docs/src/examples/flex/flex-align-content-around.vue: -------------------------------------------------------------------------------- 1 | 15 | -------------------------------------------------------------------------------- /packages/docs/src/examples/flex/flex-align-content-between.vue: -------------------------------------------------------------------------------- 1 | 15 | -------------------------------------------------------------------------------- /packages/docs/src/examples/flex/flex-align-content-center.vue: -------------------------------------------------------------------------------- 1 | 15 | -------------------------------------------------------------------------------- /packages/docs/src/examples/flex/flex-align-content-end.vue: -------------------------------------------------------------------------------- 1 | 15 | -------------------------------------------------------------------------------- /packages/docs/src/examples/flex/flex-align-content-start.vue: -------------------------------------------------------------------------------- 1 | 15 | -------------------------------------------------------------------------------- /packages/docs/src/examples/flex/flex-flex.vue: -------------------------------------------------------------------------------- 1 | 16 | -------------------------------------------------------------------------------- /packages/docs/src/examples/flex/flex-nowrap.vue: -------------------------------------------------------------------------------- 1 | 15 | -------------------------------------------------------------------------------- /packages/docs/src/examples/flex/flex-order.vue: -------------------------------------------------------------------------------- 1 | 16 | -------------------------------------------------------------------------------- /packages/docs/src/examples/flex/flex-wrap-reverse.vue: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /packages/docs/src/examples/flex/flex-wrap.vue: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /packages/docs/src/examples/flex/flexbox-inline.vue: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /packages/docs/src/examples/flex/flexbox.vue: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /packages/docs/src/examples/float/classes.vue: -------------------------------------------------------------------------------- 1 | 16 | -------------------------------------------------------------------------------- /packages/docs/src/examples/grid/prop-no-gutters.vue: -------------------------------------------------------------------------------- 1 | 17 | -------------------------------------------------------------------------------- /packages/docs/src/examples/grid/usage.vue: -------------------------------------------------------------------------------- 1 | 17 | -------------------------------------------------------------------------------- /packages/docs/src/examples/sizing/height.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /packages/docs/src/examples/sizing/width.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /packages/docs/src/examples/spacing/breakpoints.vue: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /packages/docs/src/examples/spacing/gap.vue: -------------------------------------------------------------------------------- 1 | 15 | -------------------------------------------------------------------------------- /packages/docs/src/examples/spacing/horizontal.vue: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /packages/docs/src/examples/spacing/negative-margin.vue: -------------------------------------------------------------------------------- 1 | 20 | -------------------------------------------------------------------------------- /packages/docs/src/examples/text-and-typography/text-break.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 19 | -------------------------------------------------------------------------------- /packages/docs/src/examples/text-and-typography/text-no-wrap.vue: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /packages/docs/src/examples/text-and-typography/text-opacity.vue: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /packages/docs/src/examples/text-and-typography/text-transform.vue: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /packages/docs/src/examples/text-and-typography/text-truncate.vue: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /packages/docs/src/examples/text-and-typography/typography-breakpoints.vue: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-alert/prop-content.vue: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-alert/prop-density.vue: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-alert/prop-type.vue: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-alert/prop-variant.vue: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-avatar/prop-size.vue: -------------------------------------------------------------------------------- 1 | 16 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-avatar/prop-tile.vue: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-avatar/slot-default.vue: -------------------------------------------------------------------------------- 1 | 19 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-banner/slot-actions.vue: -------------------------------------------------------------------------------- 1 | 22 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-btn/defaults-banner-actions.vue: -------------------------------------------------------------------------------- 1 | 20 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-btn/defaults-card-actions.vue: -------------------------------------------------------------------------------- 1 | 13 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-btn/defaults-toolbar.vue: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-btn/misc-raised.vue: -------------------------------------------------------------------------------- 1 | 18 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-btn/prop-block.vue: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-btn/prop-density.vue: -------------------------------------------------------------------------------- 1 | 18 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-btn/prop-plain.vue: -------------------------------------------------------------------------------- 1 | 18 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-btn/prop-tile.vue: -------------------------------------------------------------------------------- 1 | 17 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-btn/prop-variant.vue: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-btn/slot-prepend-append.vue: -------------------------------------------------------------------------------- 1 | 19 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-card/basics-combine.vue: -------------------------------------------------------------------------------- 1 | 16 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-card/prop-disabled.vue: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-card/prop-href.vue: -------------------------------------------------------------------------------- 1 | 13 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-card/prop-image.vue: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-card/prop-link.vue: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-chip/prop-draggable.vue: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-chip/prop-no-ripple.vue: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-data-table/prop-loading.vue: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-date-picker-month/prop-multiple.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 16 | 17 | 24 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-date-picker-month/usage.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 19 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-date-picker/prop-colors.vue: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-date-picker/prop-elevation.vue: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-date-picker/prop-show-adjacent-months.vue: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-date-picker/prop-width.vue: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-file-input/prop-accept.vue: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-file-input/prop-chips.vue: -------------------------------------------------------------------------------- 1 | 15 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-file-input/prop-counter.vue: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-file-input/prop-dense.vue: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-file-input/prop-multiple.vue: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-file-input/prop-prepend-icon.vue: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-file-input/prop-show-size.vue: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-icon/misc-md.vue: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-img/slot-error.vue: -------------------------------------------------------------------------------- 1 | 18 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-input/prop-error-count.vue: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-input/prop-error.vue: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-input/prop-loading.vue: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-input/prop-success.vue: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-input/slot-append-and-prepend.vue: -------------------------------------------------------------------------------- 1 | 15 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-otp-input/prop-error.vue: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-otp-input/prop-focus-all.vue: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-otp-input/prop-length.vue: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-otp-input/prop-variant.vue: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-overlay/scroll-block.vue: -------------------------------------------------------------------------------- 1 | 18 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-overlay/scroll-close.vue: -------------------------------------------------------------------------------- 1 | 18 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-overlay/scroll-none.vue: -------------------------------------------------------------------------------- 1 | 18 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-overlay/scroll-reposition.vue: -------------------------------------------------------------------------------- 1 | 18 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-pagination/prop-disabled.vue: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-pagination/prop-total-visible.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 16 | 17 | 26 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-parallax/misc-content.vue: -------------------------------------------------------------------------------- 1 | 15 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-parallax/misc-custom-height.vue: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-parallax/usage.vue: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-range-slider/prop-step.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 14 | 15 | 24 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-range-slider/prop-strict.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 17 | 18 | 27 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-range-slider/prop-vertical.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 13 | 14 | 23 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-rating/prop-clearable.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 | 23 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-rating/prop-color.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 16 | 17 | 22 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-rating/prop-half-increments.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 17 | 18 | 25 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-rating/prop-hover.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 | 23 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-rating/prop-icon-label.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 | 21 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-rating/prop-length.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 | 23 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-rating/prop-readonly.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 | 23 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-ripple/misc-custom-color.vue: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-ripple/option-center.vue: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-ripple/usage.vue: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-select/prop-disabled.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 12 | 13 | 20 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-select/prop-menu-props.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 12 | 13 | 20 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-skeleton-loader/prop-boilerplate.vue: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-skeleton-loader/prop-elevation.vue: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-slider/prop-disabled.vue: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-slider/prop-inverse-label.vue: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-slider/prop-readonly.vue: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-slider/prop-step.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 16 | 17 | 26 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-slider/prop-vertical.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 14 | 15 | 24 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-stepper/prop-alternate-label.vue: -------------------------------------------------------------------------------- 1 | 16 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-switch/prop-custom-values.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 16 | 17 | 24 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-switch/prop-flat.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 | 25 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-switch/prop-inset.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 | 25 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-tabs/misc-pagination.vue: -------------------------------------------------------------------------------- 1 | 18 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-tabs/prop-fixed-tabs.vue: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-tabs/prop-icons.vue: -------------------------------------------------------------------------------- 1 | 18 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-text-field/prop-label.vue: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-text-field/prop-messages.vue: -------------------------------------------------------------------------------- 1 | 13 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-text-field/prop-placeholder.vue: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-text-field/slot-label.vue: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-textarea/prop-auto-grow.vue: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-textarea/prop-browser-autocomplete.vue: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-textarea/prop-clearable.vue: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-theme-provider/prop-with-background.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-time-picker/prop-format.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 17 | 18 | 27 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-timeline/usage.vue: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-toolbar/prop-background.vue: -------------------------------------------------------------------------------- 1 | 20 | -------------------------------------------------------------------------------- /packages/docs/src/examples/v-toolbar/prop-collapse.vue: -------------------------------------------------------------------------------- 1 | 19 | -------------------------------------------------------------------------------- /packages/docs/src/examples/why-vuetify/card-components.vue: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /packages/docs/src/examples/why-vuetify/card-props.vue: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /packages/docs/src/examples/why-vuetify/card-slots.vue: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /packages/docs/src/i18n/messages/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | !en.json -------------------------------------------------------------------------------- /packages/docs/src/pages/en/user/dashboard.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: user 3 | meta: 4 | nav: Dashboard 5 | title: User Dashboard 6 | description: User Dashboard 7 | keywords: user dashboard 8 | --- 9 | 10 | 13 | 14 | ### Perks 15 | 16 | 17 | -------------------------------------------------------------------------------- /packages/docs/src/pages/en/user/subscriptions.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: user 3 | meta: 4 | nav: Dashboard 5 | title: Subscriptions 6 | description: Subscriptions 7 | keywords: Subscriptions 8 | --- 9 | 10 | 13 | 14 | ### Vuetify One Subscription 15 | 16 | Support Vuetify and gain access to exclusive documentation perks and features for only $1 per month 17 | 18 | 19 | -------------------------------------------------------------------------------- /packages/docs/src/pages/en/wireframes/baseline.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: wireframe 3 | meta: 4 | title: Baseline Wireframe 5 | keywords: vuetify wireframe, vuetify app, vue app 6 | description: A baseline wireframe template for Vuetify 7 | --- 8 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /packages/docs/src/pages/en/wireframes/constrained.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: wireframe 3 | meta: 4 | title: Constrained Wireframe 5 | keywords: vuetify wireframe, vuetify app, vue app 6 | description: A constrained wireframe template for Vuetify 7 | --- 8 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /packages/docs/src/pages/en/wireframes/discord.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: wireframe 3 | meta: 4 | title: Discord Wireframe 5 | keywords: vuetify wireframe, vuetify app, vue app 6 | description: A discord wireframe template for Vuetify 7 | --- 8 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /packages/docs/src/pages/en/wireframes/extended-toolbar.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: wireframe 3 | meta: 4 | title: Extended Toolbar Wireframe 5 | keywords: vuetify wireframe, vuetify app, vue app 6 | description: A toolbar wireframe template for Vuetify 7 | --- 8 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /packages/docs/src/pages/en/wireframes/inbox.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: wireframe 3 | meta: 4 | title: Inbox Wireframe 5 | keywords: vuetify wireframe, vuetify app, vue app 6 | description: A inbox wireframe template for Vuetify 7 | --- 8 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /packages/docs/src/pages/en/wireframes/side-navigation.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: wireframe 3 | meta: 4 | title: Base Wireframe 5 | --- 6 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /packages/docs/src/pages/en/wireframes/steam.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: wireframe 3 | meta: 4 | title: Steam Wireframe 5 | keywords: vuetify wireframe, vuetify app, vue app 6 | description: A steam wireframe template for Vuetify 7 | --- 8 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /packages/docs/src/pages/en/wireframes/system-bar.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: wireframe 3 | meta: 4 | title: System bar Wireframe 5 | keywords: vuetify wireframe, vuetify app, vue app 6 | description: A system bar wireframe template for Vuetify 7 | --- 8 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /packages/docs/src/pages/en/wireframes/three-column.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: wireframe 3 | meta: 4 | title: Three column Wireframe 5 | keywords: vuetify wireframe, vuetify app, vue app 6 | description: A three-column wireframe template for Vuetify 7 | --- 8 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /packages/docs/src/plugins/octokit.ts: -------------------------------------------------------------------------------- 1 | // Imports 2 | import { Octokit } from '@octokit/core' 3 | 4 | export default new Octokit() 5 | -------------------------------------------------------------------------------- /packages/docs/src/plugins/one.ts: -------------------------------------------------------------------------------- 1 | // Styles 2 | import '@vuetify/one/styles' 3 | 4 | // Plugins 5 | import { createOne } from '@vuetify/one' 6 | 7 | // Types 8 | import type { App } from 'vue' 9 | 10 | export function installOne (app: App) { 11 | const one = createOne() 12 | 13 | return app.use(one as any) 14 | } 15 | -------------------------------------------------------------------------------- /packages/docs/src/plugins/pinia.ts: -------------------------------------------------------------------------------- 1 | // Imports 2 | import { createPinia } from 'pinia' 3 | import { markRaw } from 'vue' 4 | 5 | // Types 6 | import type { App } from 'vue' 7 | import type { Router } from 'vue-router' 8 | 9 | export const pinia = createPinia() 10 | 11 | export function installPinia (app: App, router: Router) { 12 | pinia.use(({ store }) => { 13 | store.router = markRaw(router) 14 | }) 15 | 16 | app.use(pinia) 17 | } 18 | -------------------------------------------------------------------------------- /packages/docs/src/store/locale.ts: -------------------------------------------------------------------------------- 1 | // Utilities 2 | import { defineStore } from 'pinia' 3 | import { preferredLocale } from '@/util/routes' 4 | 5 | // Types 6 | export type RootState = { 7 | locale: string 8 | } 9 | 10 | export const useLocaleStore = defineStore({ 11 | id: 'locale', 12 | state: () => ({ 13 | locale: preferredLocale(), 14 | } as RootState), 15 | }) 16 | -------------------------------------------------------------------------------- /packages/docs/src/store/made-with-vuetify.ts: -------------------------------------------------------------------------------- 1 | // Utilities 2 | import { defineStore } from 'pinia' 3 | import { onBeforeMount, ref } from 'vue' 4 | 5 | export const useMadeWithVuetifyStore = defineStore('made-with-vuetify', () => { 6 | const items = ref([]) 7 | 8 | onBeforeMount(async () => { 9 | const res = await fetch('https://madewithvuejs.com/api/tag/vuetify') 10 | .then(res => res.json()) 11 | 12 | items.value = res.data 13 | }) 14 | 15 | return { items } 16 | }) 17 | -------------------------------------------------------------------------------- /packages/docs/src/util/analytics.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable camelcase */ 2 | 3 | // Composables 4 | import { useGtag } from 'vue-gtag-next' 5 | 6 | export function gtagClick ( 7 | event_category: string, 8 | event_label: string, 9 | value: string 10 | ) { 11 | const { event } = useGtag() 12 | 13 | event('click', { event_category, event_label, value }) 14 | } 15 | -------------------------------------------------------------------------------- /packages/docs/src/util/globals.ts: -------------------------------------------------------------------------------- 1 | const IN_BROWSER = typeof window !== 'undefined' 2 | const IS_DEBUG = import.meta.env.DEBUG === 'true' 3 | const IS_PROD = import.meta.env.NODE_ENV === 'production' 4 | const IS_SERVER = import.meta.env.SSR 5 | 6 | export { 7 | IN_BROWSER, 8 | IS_DEBUG, 9 | IS_PROD, 10 | IS_SERVER, 11 | } 12 | -------------------------------------------------------------------------------- /packages/docs/src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /packages/vuetify/.browserslistrc: -------------------------------------------------------------------------------- 1 | >0.5% 2 | Chrome >0 and since 2021-05 3 | ChromeAndroid >0 and since 2021-05 4 | Firefox >0 and since 2021-05 5 | FirefoxAndroid >0 and since 2021-05 6 | Safari >0 and since 2021-05 7 | iOS >0 and since 2021-05 8 | not dead 9 | not op_mini all 10 | not and_uc 1 11 | -------------------------------------------------------------------------------- /packages/vuetify/.env.example: -------------------------------------------------------------------------------- 1 | HOST=localhost 2 | PORT=8090 3 | 4 | PERCY_TOKEN= 5 | -------------------------------------------------------------------------------- /packages/vuetify/.eslintignore: -------------------------------------------------------------------------------- 1 | /build/ 2 | 3 | # playground components type definitions generated by unplugin-vue-components 4 | /dev/components.d.ts 5 | 6 | # Built files 7 | /es5/ 8 | /lib/ 9 | /lib-temp/ 10 | /dist/ 11 | /cypress/ 12 | -------------------------------------------------------------------------------- /packages/vuetify/.gitignore: -------------------------------------------------------------------------------- 1 | /dev/Playground.vue 2 | /dev/components.d.ts 3 | /cypress/screenshots 4 | 5 | # Built files 6 | /es5/ 7 | /lib/ 8 | /lib-temp/ 9 | /types-temp/ 10 | /dist/ 11 | /dev/dist/ 12 | 13 | # local env files 14 | .env.local 15 | .env.*.local 16 | 17 | # Log files 18 | npm-debug.log* 19 | yarn-debug.log* 20 | yarn-error.log* 21 | 22 | # Editor directories and files 23 | .idea 24 | .vscode 25 | *.suo 26 | *.ntvs* 27 | *.njsproj 28 | *.sln 29 | *.sw? 30 | 31 | .vercel 32 | -------------------------------------------------------------------------------- /packages/vuetify/_settings.scss: -------------------------------------------------------------------------------- 1 | @forward './lib/styles/settings'; 2 | @forward './dist/component-variables'; 3 | @forward './dist/component-variables-labs'; 4 | -------------------------------------------------------------------------------- /packages/vuetify/_styles.scss: -------------------------------------------------------------------------------- 1 | @forward './lib/styles/main'; 2 | -------------------------------------------------------------------------------- /packages/vuetify/_tools.scss: -------------------------------------------------------------------------------- 1 | @forward './lib/styles/tools'; 2 | -------------------------------------------------------------------------------- /packages/vuetify/build/run-tests.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const spawn = require('child_process').spawn 3 | 4 | const args = process.argv.slice(2) 5 | 6 | let child 7 | 8 | if (process.platform === 'win32') { 9 | // yarn test -i 10 | child = spawn('yarn.cmd', ['test:win32', ...args], { stdio: 'inherit' }) 11 | } else { 12 | // yarn test 13 | child = spawn('yarn', ['test:unix', ...args], { stdio: 'inherit' }) 14 | } 15 | 16 | child.on('exit', process.exit) 17 | -------------------------------------------------------------------------------- /packages/vuetify/cypress.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'cypress' 2 | 3 | export default defineConfig({ 4 | projectId: '5w5r1i', 5 | component: { 6 | devServer: { 7 | framework: 'vue', 8 | bundler: 'vite', 9 | }, 10 | specPattern: './src/**/*.spec.cy.{js,jsx,ts,tsx}', 11 | supportFile: './cypress/support/index.ts', 12 | video: false, 13 | }, 14 | viewportWidth: 1075, 15 | viewportHeight: 825, 16 | }) 17 | -------------------------------------------------------------------------------- /packages/vuetify/cypress/fixtures/example.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Using fixtures to represent data", 3 | "email": "hello@cypress.io", 4 | "body": "Fixtures are a great way to mock data for responses to routes" 5 | } 6 | -------------------------------------------------------------------------------- /packages/vuetify/cypress/fixtures/text.txt: -------------------------------------------------------------------------------- 1 | This is just a simple text file. 2 | -------------------------------------------------------------------------------- /packages/vuetify/cypress/support/index.ts: -------------------------------------------------------------------------------- 1 | import '@percy/cypress' 2 | import 'cypress-file-upload' 3 | import 'cy-mobile-commands' 4 | import 'cypress-real-events/support' 5 | import '@mdi/font/css/materialdesignicons.css' 6 | import './mount' 7 | import './selector' 8 | -------------------------------------------------------------------------------- /packages/vuetify/cypress/support/selector.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | Cypress.Commands.add('getBySel', (selector, ...args) => { 4 | return cy.get(`[data-test=${selector}]`, ...args) as any 5 | }) 6 | -------------------------------------------------------------------------------- /packages/vuetify/cypress/templates/Application.tsx: -------------------------------------------------------------------------------- 1 | import { VApp } from '@/components/VApp' 2 | import { VLocaleProvider } from '@/components/VLocaleProvider' 3 | import type { FunctionalComponent } from 'vue' 4 | 5 | export const Application: FunctionalComponent<{ rtl?: boolean }> = (props, { slots, attrs }) => { 6 | return ( 7 | 8 | 9 | { slots.default?.() } 10 | 11 | 12 | ) 13 | } 14 | -------------------------------------------------------------------------------- /packages/vuetify/cypress/templates/CenteredGrid.tsx: -------------------------------------------------------------------------------- 1 | import { FunctionalComponent } from 'vue' 2 | 3 | export const CenteredGrid: FunctionalComponent<{ width?: string }> = (props, { slots, attrs }) => { 4 | const width = props.width || 'auto' 5 | return ( 6 |
10 | { slots.default?.() } 11 |
12 | ) 13 | } 14 | -------------------------------------------------------------------------------- /packages/vuetify/cypress/templates/gridOn.tsx: -------------------------------------------------------------------------------- 1 | import { VNode } from 'vue' 2 | 3 | export function gridOn (a: Readonly, b: Readonly, fn: (a: A, b: B) => VNode) { 4 | return ( 5 |
6 | { a.map(a => ( 7 | <> 8 |
{ a as any }
9 |
10 | { b.map(b => fn(a, b)) } 11 |
12 | 13 | ))} 14 |
15 | ) 16 | } 17 | -------------------------------------------------------------------------------- /packages/vuetify/cypress/templates/index.ts: -------------------------------------------------------------------------------- 1 | export * from './CenteredGrid' 2 | export * from './generateStories' 3 | export * from './Application' 4 | export * from './gridOn' 5 | -------------------------------------------------------------------------------- /packages/vuetify/dev/App.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 8 | -------------------------------------------------------------------------------- /packages/vuetify/dev/Playground.template.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 19 | -------------------------------------------------------------------------------- /packages/vuetify/dev/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yyx990803/vuetify/7968c1eb456f957308b765eda3135a522a531b0c/packages/vuetify/dev/favicon.png -------------------------------------------------------------------------------- /packages/vuetify/dev/vuetify/date.js: -------------------------------------------------------------------------------- 1 | // import DateFnsAdapter from '@date-io/date-fns' 2 | // import { enAU, enUS, ja, sv } from 'date-fns/locale' 3 | 4 | export default { 5 | // adapter: DateFnsAdapter, 6 | formats: { 7 | // dayOfMonth: date => date.getDate(), 8 | }, 9 | locale: { 10 | en: 'en-US', 11 | // en: 'en-AU', 12 | // en: enAU, 13 | // en: enUS, 14 | // ja, 15 | // sv, 16 | }, 17 | } 18 | -------------------------------------------------------------------------------- /packages/vuetify/dev/vuetify/defaults.js: -------------------------------------------------------------------------------- 1 | export default { 2 | // 3 | } 4 | -------------------------------------------------------------------------------- /packages/vuetify/dev/vuetify/icons.js: -------------------------------------------------------------------------------- 1 | import { aliases } from 'vuetify/src/iconsets/mdi-svg' 2 | import { mdi } from 'vuetify/src/iconsets/mdi' 3 | import { fa } from 'vuetify/src/iconsets/fa-svg' 4 | 5 | export default { 6 | defaultSet: 'mdi', 7 | aliases, 8 | sets: { 9 | mdi, 10 | fa, 11 | }, 12 | } 13 | -------------------------------------------------------------------------------- /packages/vuetify/dev/vuetify/locale.js: -------------------------------------------------------------------------------- 1 | import { ar, en, ja, sv } from 'vuetify/src/locale' 2 | 3 | export default { 4 | messages: { 5 | en, 6 | ar, 7 | sv, 8 | ja, 9 | }, 10 | } 11 | -------------------------------------------------------------------------------- /packages/vuetify/jest.config.js: -------------------------------------------------------------------------------- 1 | const base = require('../../jest.config') 2 | 3 | module.exports = { 4 | ...base, 5 | id: 'Vuetify', 6 | displayName: 'Vuetify', 7 | setupFiles: [ 8 | 'jest-canvas-mock', 9 | ], 10 | } 11 | -------------------------------------------------------------------------------- /packages/vuetify/postcss.config.js: -------------------------------------------------------------------------------- 1 | const autoprefixer = require('autoprefixer') 2 | 3 | module.exports = ctx => ({ 4 | plugins: [ 5 | autoprefixer({ 6 | remove: false 7 | }) 8 | ] 9 | }) 10 | -------------------------------------------------------------------------------- /packages/vuetify/src/blueprints/index.ts: -------------------------------------------------------------------------------- 1 | export { md1 } from './md1' 2 | export { md2 } from './md2' 3 | export { md3 } from './md3' 4 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VAlert/VAlertTitle.ts: -------------------------------------------------------------------------------- 1 | // Utilities 2 | import { createSimpleFunctional } from '@/util' 3 | 4 | export const VAlertTitle = createSimpleFunctional('v-alert-title') 5 | 6 | export type VAlertTitle = InstanceType 7 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VAlert/index.ts: -------------------------------------------------------------------------------- 1 | export { VAlert } from './VAlert' 2 | export { VAlertTitle } from './VAlertTitle' 3 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VApp/VApp.sass: -------------------------------------------------------------------------------- 1 | @use './variables' as * 2 | 3 | .v-application 4 | display: flex 5 | background: $application-background 6 | color: $application-color 7 | 8 | .v-application__wrap 9 | backface-visibility: hidden 10 | display: flex 11 | flex-direction: column 12 | flex: 1 1 auto 13 | max-width: 100% 14 | min-height: 100vh 15 | min-height: 100dvh 16 | position: relative 17 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VApp/_variables.scss: -------------------------------------------------------------------------------- 1 | @use '../../styles/settings'; 2 | @use '../../styles/tools'; 3 | 4 | // VApp 5 | $application-background: rgb(var(--v-theme-background)) !default; 6 | $application-color: rgba(var(--v-theme-on-background), var(--v-high-emphasis-opacity)) !default; 7 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VApp/index.ts: -------------------------------------------------------------------------------- 1 | export { VApp } from './VApp' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VAppBar/VAppBar.sass: -------------------------------------------------------------------------------- 1 | @use '../../styles/tools' 2 | @use './variables' as * 3 | 4 | .v-app-bar 5 | display: flex 6 | 7 | &.v-toolbar 8 | @include tools.theme($app-bar-theme...) 9 | 10 | &:not(.v-toolbar--flat) 11 | @include tools.elevation($app-bar-elevation) 12 | 13 | &:not(.v-toolbar--absolute) 14 | padding-inline-end: var(--v-scrollbar-offset) 15 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VAppBar/index.ts: -------------------------------------------------------------------------------- 1 | export { VAppBar } from './VAppBar' 2 | export { VAppBarNavIcon } from './VAppBarNavIcon' 3 | export { VAppBarTitle } from './VAppBarTitle' 4 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VAutocomplete/index.ts: -------------------------------------------------------------------------------- 1 | export { VAutocomplete } from './VAutocomplete' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VAvatar/index.ts: -------------------------------------------------------------------------------- 1 | export { VAvatar } from './VAvatar' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VBadge/index.ts: -------------------------------------------------------------------------------- 1 | export { VBadge } from './VBadge' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VBanner/VBannerText.ts: -------------------------------------------------------------------------------- 1 | // Utilities 2 | import { createSimpleFunctional } from '@/util' 3 | 4 | export const VBannerText = createSimpleFunctional('v-banner-text') 5 | 6 | export type VBannerText = InstanceType 7 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VBanner/index.ts: -------------------------------------------------------------------------------- 1 | export { VBanner } from './VBanner' 2 | export { VBannerActions } from './VBannerActions' 3 | export { VBannerText } from './VBannerText' 4 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VBottomNavigation/index.ts: -------------------------------------------------------------------------------- 1 | export { VBottomNavigation } from './VBottomNavigation' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VBottomSheet/_variables.scss: -------------------------------------------------------------------------------- 1 | @use '../../styles/settings'; 2 | 3 | $bottom-sheet-elevation: 12 !default; 4 | $bottom-sheet-inset-width: 70% !default; 5 | $bottom-sheet-border-radius: 0 !default; 6 | $bottom-sheet-transition-duration: .2s !default; 7 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VBottomSheet/index.ts: -------------------------------------------------------------------------------- 1 | export { VBottomSheet } from './VBottomSheet' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VBreadcrumbs/index.ts: -------------------------------------------------------------------------------- 1 | export { VBreadcrumbs } from './VBreadcrumbs' 2 | export { VBreadcrumbsItem } from './VBreadcrumbsItem' 3 | export { VBreadcrumbsDivider } from './VBreadcrumbsDivider' 4 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VBtn/index.ts: -------------------------------------------------------------------------------- 1 | export { VBtn } from './VBtn' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VBtnGroup/index.ts: -------------------------------------------------------------------------------- 1 | export { VBtnGroup } from './VBtnGroup' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VBtnToggle/VBtnToggle.sass: -------------------------------------------------------------------------------- 1 | @use './variables' as * 2 | @use '../../styles/tools' 3 | 4 | .v-btn-toggle 5 | > .v-btn.v-btn--active:not(.v-btn--disabled) 6 | @include tools.active-states('> .v-btn__overlay', $btn-toggle-selected-opacity) 7 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VBtnToggle/_variables.scss: -------------------------------------------------------------------------------- 1 | @use 'sass:map'; 2 | @use '../../styles/settings'; 3 | @use '../../styles/tools'; 4 | 5 | // VBtnToggle 6 | $btn-toggle-selected-opacity: map.get(settings.$states, 'activated') !default; 7 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VBtnToggle/index.ts: -------------------------------------------------------------------------------- 1 | export { VBtnToggle } from './VBtnToggle' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VCalendar/mixins/__tests__/__snapshots__/times.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`times.ts should parse timestamp 1`] = ` 4 | Object { 5 | "date": "2019-02-08", 6 | "day": 8, 7 | "future": false, 8 | "hasDay": true, 9 | "hasTime": false, 10 | "hour": 0, 11 | "minute": 0, 12 | "month": 2, 13 | "past": false, 14 | "present": false, 15 | "time": "", 16 | "weekday": 5, 17 | "year": 2019, 18 | } 19 | `; 20 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VCalendar/modes/index.ts: -------------------------------------------------------------------------------- 1 | // @ts-nocheck 2 | /* eslint-disable */ 3 | 4 | import { CalendarEventOverlapMode } from 'vuetify/types' 5 | import { stack } from './stack' 6 | import { column } from './column' 7 | 8 | export const CalendarEventOverlapModes: Record = { 9 | stack, 10 | column, 11 | } 12 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VCard/VCardSubtitle.ts: -------------------------------------------------------------------------------- 1 | // Utilities 2 | import { createSimpleFunctional } from '@/util' 3 | 4 | export const VCardSubtitle = createSimpleFunctional('v-card-subtitle') 5 | 6 | export type VCardSubtitle = InstanceType 7 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VCard/VCardText.ts: -------------------------------------------------------------------------------- 1 | // Utilities 2 | import { createSimpleFunctional } from '@/util' 3 | 4 | export const VCardText = createSimpleFunctional('v-card-text') 5 | 6 | export type VCardText = InstanceType 7 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VCard/VCardTitle.ts: -------------------------------------------------------------------------------- 1 | // Utilities 2 | import { createSimpleFunctional } from '@/util' 3 | 4 | export const VCardTitle = createSimpleFunctional('v-card-title') 5 | 6 | export type VCardTitle = InstanceType 7 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VCard/_mixins.scss: -------------------------------------------------------------------------------- 1 | @mixin card-line-height-densities ($map) { 2 | @each $density, $lineHeight in $map { 3 | @if $density == null { 4 | .v-card & { 5 | line-height: $lineHeight; 6 | } 7 | } @else { 8 | .v-card--density-#{$density} & { 9 | line-height: $lineHeight; 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VCard/index.ts: -------------------------------------------------------------------------------- 1 | export { VCard } from './VCard' 2 | export { VCardActions } from './VCardActions' 3 | export { VCardItem } from './VCardItem' 4 | export { VCardSubtitle } from './VCardSubtitle' 5 | export { VCardText } from './VCardText' 6 | export { VCardTitle } from './VCardTitle' 7 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VCarousel/index.ts: -------------------------------------------------------------------------------- 1 | export { VCarousel } from './VCarousel' 2 | export { VCarouselItem } from './VCarouselItem' 3 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VCheckbox/VCheckbox.sass: -------------------------------------------------------------------------------- 1 | @use 'sass:map' 2 | @use '../../styles/settings' 3 | @use '../../styles/tools' 4 | @use './variables' as * 5 | 6 | .v-checkbox 7 | .v-selection-control 8 | min-height: var(--v-input-control-height) 9 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VCheckbox/_variables.scss: -------------------------------------------------------------------------------- 1 | $checkbox-disabled-color: rgba(var(--v-theme-on-surface), var(--v-disabled-opacity)) !default; 2 | $checkbox-error-color: rgb(var(--v-theme-error)) !default; 3 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VCheckbox/index.ts: -------------------------------------------------------------------------------- 1 | export { VCheckbox } from './VCheckbox' 2 | export { VCheckboxBtn } from './VCheckboxBtn' 3 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VChip/index.ts: -------------------------------------------------------------------------------- 1 | export { VChip } from './VChip' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VChipGroup/_variables.scss: -------------------------------------------------------------------------------- 1 | // VChipGroup 2 | $chip-group-selected-opacity: var(--v-activated-opacity) !default; 3 | $chip-group-padding: 4px 0 !default; 4 | $chip-group-margin: 4px 8px 4px 0 !default; 5 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VChipGroup/index.ts: -------------------------------------------------------------------------------- 1 | export { VChipGroup } from './VChipGroup' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VCode/VCode.sass: -------------------------------------------------------------------------------- 1 | @use './variables' as * 2 | 3 | .v-code 4 | background-color: $code-background-color 5 | color: $code-color 6 | border-radius: $code-border-radius 7 | line-height: $code-line-height 8 | font-size: $code-font-size 9 | font-weight: $code-font-weight 10 | padding: $code-padding 11 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VCode/_variables.scss: -------------------------------------------------------------------------------- 1 | $code-background-color: rgb(var(--v-theme-code)) !default; 2 | $code-color: rgb(var(--v-theme-on-code)) !default; 3 | $code-border-radius: 4px !default; 4 | $code-line-height: 1.8 !default; 5 | $code-font-size: 0.9em !default; 6 | $code-font-weight: normal !default; 7 | $code-padding: .2em .4em !default; 8 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VCode/index.ts: -------------------------------------------------------------------------------- 1 | // Styles 2 | import './VCode.sass' 3 | 4 | // Utilities 5 | import { createSimpleFunctional } from '@/util' 6 | 7 | export const VCode = createSimpleFunctional('v-code') 8 | 9 | export type VCode = InstanceType 10 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VColorPicker/index.ts: -------------------------------------------------------------------------------- 1 | export { VColorPicker } from './VColorPicker' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VCombobox/index.ts: -------------------------------------------------------------------------------- 1 | export { VCombobox } from './VCombobox' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VCounter/VCounter.sass: -------------------------------------------------------------------------------- 1 | @use '../../styles/settings' 2 | @use './variables' as * 3 | 4 | .v-counter 5 | color: $counter-color 6 | flex: $counter-flex 7 | font-size: $counter-font-size 8 | transition-duration: $counter-transition-duration 9 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VCounter/_variables.scss: -------------------------------------------------------------------------------- 1 | // VCounter 2 | $counter-color: rgba(var(--v-theme-on-surface), var(--v-medium-emphasis-opacity)) !default; 3 | $counter-flex: 0 1 auto !default; 4 | $counter-font-size: 12px !default; 5 | $counter-line-height: $counter-font-size !default; 6 | $counter-min-height: 12px !default; 7 | $counter-transition-duration: 150ms !default; 8 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VCounter/index.ts: -------------------------------------------------------------------------------- 1 | export { VCounter } from './VCounter' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VDataIterator/index.ts: -------------------------------------------------------------------------------- 1 | export { VDataIterator } from './VDataIterator' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VDataTable/__tests__/__snapshots__/RowGroup.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Table RowGroup should render with "column.summary" slot 1`] = ` 4 | 5 |
6 |
7 | 8 | `; 9 | 10 | exports[`Table RowGroup should render with "row.summary" slot 1`] = ` 11 |
12 |
13 | `; 14 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VDataTable/_variables.scss: -------------------------------------------------------------------------------- 1 | @use '../../styles/settings'; 2 | @use '../../styles/tools'; 3 | 4 | $data-table-footer-padding: 4px !default; 5 | $data-table-header-sort-badge-size: 20px !default; 6 | $data-table-header-sort-badge-color: rgba(var(--v-border-color), var(--v-border-opacity)) !default; 7 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VDataTable/index.ts: -------------------------------------------------------------------------------- 1 | export { VDataTable } from './VDataTable' 2 | export { VDataTableFooter } from './VDataTableFooter' 3 | export { VDataTableRows } from './VDataTableRows' 4 | export { VDataTableRow } from './VDataTableRow' 5 | export { VDataTableVirtual } from './VDataTableVirtual' 6 | export { VDataTableServer } from './VDataTableServer' 7 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VDatePicker/VDatePicker.sass: -------------------------------------------------------------------------------- 1 | @use '../../styles/tools' 2 | 3 | .v-date-picker__input 4 | padding-top: 16px 5 | padding-left: 24px 6 | padding-right: 24px 7 | 8 | .v-date-picker 9 | overflow: hidden 10 | width: 360px 11 | 12 | &--show-week 13 | width: 408px 14 | 15 | .v-date-picker-month 16 | padding: 0 12px 12px 17 | 18 | .v-date-picker-month__day 19 | height: 48px 20 | width: 48px 21 | 22 | .v-btn 23 | --v-btn-height: 28px 24 | --v-btn-size: 0.85rem 25 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VDatePicker/VDatePickerYears.sass: -------------------------------------------------------------------------------- 1 | .v-date-picker-years 2 | height: 320px 3 | overflow-y: scroll 4 | 5 | .v-date-picker-years__content 6 | display: grid 7 | flex: 1 1 8 | justify-content: space-around 9 | grid-template-columns: repeat(3, 1fr) 10 | gap: 8px 24px 11 | padding-inline: 36px 12 | 13 | .v-btn 14 | padding-inline: 8px 15 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VDatePicker/index.ts: -------------------------------------------------------------------------------- 1 | export { VDatePicker } from './VDatePicker' 2 | export { VDatePickerControls } from './VDatePickerControls' 3 | export { VDatePickerHeader } from './VDatePickerHeader' 4 | export { VDatePickerMonth } from './VDatePickerMonth' 5 | export { VDatePickerMonths } from './VDatePickerMonths' 6 | export { VDatePickerYears } from './VDatePickerYears' 7 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VDatePicker/util/__tests__/monthChange.spec.ts: -------------------------------------------------------------------------------- 1 | // @ts-nocheck 2 | /* eslint-disable */ 3 | 4 | // import monthChange from '../monthChange' 5 | 6 | describe.skip('VDatePicker/util/monthChange.ts', () => { 7 | it('should change month', () => { 8 | expect(monthChange('2000-01', -1)).toBe('1999-12') 9 | expect(monthChange('2000-01', +1)).toBe('2000-02') 10 | expect(monthChange('2000-12', -1)).toBe('2000-11') 11 | expect(monthChange('2000-12', +1)).toBe('2001-01') 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VDatePicker/util/isDateAllowed.ts: -------------------------------------------------------------------------------- 1 | // @ts-nocheck 2 | /* eslint-disable */ 3 | 4 | import { DatePickerAllowedDatesFunction } from 'vuetify/types' 5 | 6 | export default function isDateAllowed (date: string, min: string, max: string, allowedFn: DatePickerAllowedDatesFunction | undefined) { 7 | return (!allowedFn || allowedFn(date)) && 8 | (!min || date >= min.substr(0, 10)) && 9 | (!max || date <= max) 10 | } 11 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VDatePicker/util/sanitizeDateString.ts: -------------------------------------------------------------------------------- 1 | // Adds leading zero to month/day if necessary, returns 'YYYY' if type = 'year', 2 | // 'YYYY-MM' if 'month' and 'YYYY-MM-DD' if 'date' 3 | import pad from './pad' 4 | 5 | export default (dateString: string, type: 'date' | 'month' | 'year'): string => { 6 | const [year, month = 1, date = 1] = dateString.split('-') 7 | return `${year}-${pad(month)}-${pad(date)}`.substr(0, { date: 10, month: 7, year: 4 }[type]) 8 | } 9 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VDefaultsProvider/index.ts: -------------------------------------------------------------------------------- 1 | export { VDefaultsProvider } from './VDefaultsProvider' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VDialog/index.ts: -------------------------------------------------------------------------------- 1 | export { VDialog } from './VDialog' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VDivider/index.ts: -------------------------------------------------------------------------------- 1 | export { VDivider } from './VDivider' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VExpansionPanel/index.ts: -------------------------------------------------------------------------------- 1 | export { VExpansionPanels } from './VExpansionPanels' 2 | export { VExpansionPanel } from './VExpansionPanel' 3 | export { VExpansionPanelText } from './VExpansionPanelText' 4 | export { VExpansionPanelTitle } from './VExpansionPanelTitle' 5 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VField/index.ts: -------------------------------------------------------------------------------- 1 | export { VField } from './VField' 2 | export { VFieldLabel } from './VFieldLabel' 3 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VFileInput/_variables.scss: -------------------------------------------------------------------------------- 1 | // Defaults 2 | $file-input-chip-margin-inline-end: null !default; 3 | $file-input-chips-margin-top: null !default; 4 | $file-input-chips-margin-bottom: null !default; 5 | $file-input-details-padding-inline: 16px !default; 6 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VFileInput/index.ts: -------------------------------------------------------------------------------- 1 | export { VFileInput } from './VFileInput' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VFooter/index.ts: -------------------------------------------------------------------------------- 1 | export { VFooter } from './VFooter' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VForm/index.ts: -------------------------------------------------------------------------------- 1 | export { VForm } from './VForm' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VGrid/VSpacer.ts: -------------------------------------------------------------------------------- 1 | // Styles 2 | import './VGrid.sass' 3 | 4 | // Utilities 5 | import { createSimpleFunctional } from '@/util' 6 | 7 | export const VSpacer = createSimpleFunctional('v-spacer', 'div', 'VSpacer') 8 | 9 | export type VSpacer = InstanceType 10 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VGrid/index.ts: -------------------------------------------------------------------------------- 1 | export { VContainer } from './VContainer' 2 | export { VCol } from './VCol' 3 | export { VRow } from './VRow' 4 | export { VSpacer } from './VSpacer' 5 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VHover/index.ts: -------------------------------------------------------------------------------- 1 | export { VHover } from './VHover' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VIcon/index.ts: -------------------------------------------------------------------------------- 1 | export { VIcon } from './VIcon' 2 | export { VComponentIcon, VSvgIcon, VLigatureIcon, VClassIcon } from '@/composables/icons' 3 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VImg/_variables.scss: -------------------------------------------------------------------------------- 1 | // Defaults 2 | $img-preload-filter: blur(4px) !default; 3 | $img-card-media-height: 200px !default; 4 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VImg/index.ts: -------------------------------------------------------------------------------- 1 | export { VImg } from './VImg' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VInfiniteScroll/_variables.scss: -------------------------------------------------------------------------------- 1 | @use '../../styles/settings'; 2 | 3 | $infinite-scroll-side-padding: 8px !default; 4 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VInfiniteScroll/index.ts: -------------------------------------------------------------------------------- 1 | export { VInfiniteScroll } from './VInfiniteScroll' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VInput/index.ts: -------------------------------------------------------------------------------- 1 | export { VInput } from './VInput' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VItemGroup/VItemGroup.sass: -------------------------------------------------------------------------------- 1 | @use './variables' as * 2 | 3 | .v-item-group 4 | flex: 0 1 auto 5 | max-width: 100% 6 | position: relative 7 | transition: $item-group-transition 8 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VItemGroup/__tests__/__snapshots__/VItemGroup.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`VItemGroup should render with a specified tag when the tag prop is provided with a value 1`] = ` 4 | 6 | `; 7 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VItemGroup/_variables.scss: -------------------------------------------------------------------------------- 1 | @use '../../styles/settings'; 2 | 3 | // Defaults 4 | $item-group-transition: 0.2s settings.$standard-easing !default; 5 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VItemGroup/index.ts: -------------------------------------------------------------------------------- 1 | export { VItemGroup } from './VItemGroup' 2 | export { VItem } from './VItem' 3 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VKbd/VKbd.sass: -------------------------------------------------------------------------------- 1 | @use '../../styles/tools' 2 | @use './variables' as * 3 | 4 | .v-kbd 5 | background: rgb(var(--v-theme-kbd)) 6 | color: rgb(var(--v-theme-on-kbd)) 7 | border-radius: $kbd-border-radius 8 | display: $kbd-display 9 | font-size: $kbd-font-size 10 | font-weight: $kbd-font-weight 11 | padding: $kbd-padding 12 | 13 | @include tools.elevation($kbd-elevation) 14 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VKbd/_variables.scss: -------------------------------------------------------------------------------- 1 | // VKbd 2 | $kbd-border-radius: 3px !default; 3 | $kbd-display: inline !default; 4 | $kbd-elevation: 2 !default; 5 | $kbd-font-size: 85% !default; 6 | $kbd-font-weight: normal !default; 7 | $kbd-padding: .2em .4rem !default; 8 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VKbd/index.ts: -------------------------------------------------------------------------------- 1 | // Styles 2 | import './VKbd.sass' 3 | 4 | // Utilities 5 | import { createSimpleFunctional } from '@/util' 6 | 7 | export const VKbd = createSimpleFunctional('v-kbd') 8 | 9 | export type VKbd = InstanceType 10 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VLabel/VLabel.sass: -------------------------------------------------------------------------------- 1 | @use '../../styles/settings' 2 | @use '../../styles/tools' 3 | @use './variables' as * 4 | 5 | .v-label 6 | align-items: center 7 | color: $label-color 8 | display: $label-display 9 | font-size: $label-font-size 10 | letter-spacing: $label-letter-spacing 11 | min-width: 0 12 | opacity: var(--v-medium-emphasis-opacity) 13 | overflow: hidden 14 | text-overflow: ellipsis 15 | white-space: nowrap 16 | 17 | .v-label--clickable 18 | cursor: pointer 19 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VLabel/_variables.scss: -------------------------------------------------------------------------------- 1 | @use '../../styles/settings'; 2 | 3 | // VLabel 4 | $label-color: inherit !default; 5 | $label-disabled-color: rgba(var(--v-theme-on-surface), var(--v-disabled-opacity)) !default; 6 | $label-display: inline-flex !default; 7 | $label-error-color: rgb(var(--v-theme-error)) !default; 8 | $label-font-size: 1rem !default; 9 | $label-letter-spacing: .009375em !default; 10 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VLabel/index.ts: -------------------------------------------------------------------------------- 1 | export { VLabel } from './VLabel' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VLayout/VLayout.sass: -------------------------------------------------------------------------------- 1 | .v-layout 2 | --v-scrollbar-offset: 0px 3 | display: flex 4 | flex: 1 1 auto 5 | 6 | &--full-height 7 | --v-scrollbar-offset: inherit 8 | height: 100% 9 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VLayout/VLayoutItem.sass: -------------------------------------------------------------------------------- 1 | @use '../../styles/settings' 2 | 3 | .v-layout-item 4 | position: absolute 5 | transition: 0.2s settings.$standard-easing 6 | 7 | .v-layout-item--absolute 8 | position: absolute 9 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VLayout/index.ts: -------------------------------------------------------------------------------- 1 | export { VLayout } from './VLayout' 2 | export { VLayoutItem } from './VLayoutItem' 3 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VLazy/index.ts: -------------------------------------------------------------------------------- 1 | export { VLazy } from './VLazy' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VList/VListImg.ts: -------------------------------------------------------------------------------- 1 | // Utilities 2 | import { createSimpleFunctional } from '@/util' 3 | 4 | export const VListImg = createSimpleFunctional('v-list-img') 5 | 6 | export type VListImg = InstanceType 7 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VList/VListItemSubtitle.ts: -------------------------------------------------------------------------------- 1 | // Utilities 2 | import { createSimpleFunctional } from '@/util' 3 | 4 | export const VListItemSubtitle = createSimpleFunctional('v-list-item-subtitle') 5 | 6 | export type VListItemSubtitle = InstanceType 7 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VList/VListItemTitle.ts: -------------------------------------------------------------------------------- 1 | // Utilities 2 | import { createSimpleFunctional } from '@/util' 3 | 4 | export const VListItemTitle = createSimpleFunctional('v-list-item-title') 5 | 6 | export type VListItemTitle = InstanceType 7 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VList/__tests__/__snapshots__/VList.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`VList should match a snapshot 1`] = ` 4 |
8 |
9 | `; 10 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VList/__tests__/__snapshots__/VListItemMedia.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`VListItemMedia should match a snapshot 1`] = ` 4 |
5 |
6 | `; 7 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VList/index.ts: -------------------------------------------------------------------------------- 1 | export { VList } from './VList' 2 | export { VListGroup } from './VListGroup' 3 | export { VListImg } from './VListImg' 4 | export { VListItem } from './VListItem' 5 | export { VListItemAction } from './VListItemAction' 6 | export { VListItemMedia } from './VListItemMedia' 7 | export { VListItemSubtitle } from './VListItemSubtitle' 8 | export { VListItemTitle } from './VListItemTitle' 9 | export { VListSubheader } from './VListSubheader' 10 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VLocaleProvider/VLocaleProvider.sass: -------------------------------------------------------------------------------- 1 | .v-locale-provider 2 | display: contents 3 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VLocaleProvider/index.ts: -------------------------------------------------------------------------------- 1 | export { VLocaleProvider } from './VLocaleProvider' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VMain/__tests__/VMain.spec.cy.tsx: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | // Components 4 | import { VMain } from '..' 5 | import { VApp } from '@/components/VApp' 6 | 7 | describe('VAppBar', () => { 8 | it('should allow custom height', () => { 9 | cy.mount(() => ( 10 | 11 | 12 | 13 | )) 14 | 15 | cy.get('.v-main').should('have.prop', 'tagName').should('eq', 'DIV') 16 | }) 17 | }) 18 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VMain/_variables.scss: -------------------------------------------------------------------------------- 1 | @use '../../styles/settings'; 2 | 3 | // VMain 4 | $main-transition: 0.2s settings.$standard-easing !default; 5 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VMain/index.ts: -------------------------------------------------------------------------------- 1 | export { VMain } from './VMain' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VMenu/VMenu.sass: -------------------------------------------------------------------------------- 1 | @use '../../styles/tools' 2 | @use './variables' as * 3 | 4 | .v-menu 5 | > .v-overlay__content 6 | display: flex 7 | flex-direction: column 8 | @include tools.rounded($menu-content-border-radius) 9 | 10 | > .v-card, 11 | > .v-sheet, 12 | > .v-list 13 | background: rgb(var(--v-theme-surface)) 14 | border-radius: inherit 15 | overflow: auto 16 | height: 100% 17 | 18 | @include tools.elevation($menu-elevation) 19 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VMenu/_variables.scss: -------------------------------------------------------------------------------- 1 | @use '../../styles/settings'; 2 | 3 | $menu-elevation: 8 !default; 4 | $menu-content-border-radius: settings.$border-radius-root !default; 5 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VMenu/index.ts: -------------------------------------------------------------------------------- 1 | export { VMenu } from './VMenu' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VMenu/shared.ts: -------------------------------------------------------------------------------- 1 | // Types 2 | import type { InjectionKey } from 'vue' 3 | 4 | interface MenuProvide { 5 | register (): void 6 | unregister (): void 7 | closeParents (): void 8 | } 9 | 10 | export const VMenuSymbol: InjectionKey = Symbol.for('vuetify:v-menu') 11 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VMessages/_variables.scss: -------------------------------------------------------------------------------- 1 | // VMessages 2 | $messages-color: rgba(var(--v-theme-on-surface), var(--v-medium-emphasis-opacity)) !default; 3 | $messages-font-size: 12px !default; 4 | $messages-line-height: $messages-font-size !default; 5 | $messages-min-height: 14px !default; 6 | $messages-transition-duration: 150ms !default; 7 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VMessages/index.ts: -------------------------------------------------------------------------------- 1 | export { VMessages } from './VMessages' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VNavigationDrawer/index.ts: -------------------------------------------------------------------------------- 1 | export { VNavigationDrawer } from './VNavigationDrawer' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VNoSsr/VNoSsr.tsx: -------------------------------------------------------------------------------- 1 | // Composables 2 | import { useHydration } from '@/composables/hydration' 3 | 4 | // Utilities 5 | import { defineComponent } from '@/util' 6 | 7 | export const VNoSsr = defineComponent({ 8 | name: 'VNoSsr', 9 | 10 | setup (_, { slots }) { 11 | const show = useHydration() 12 | 13 | return () => show.value && slots.default?.() 14 | }, 15 | }) 16 | 17 | export type VNoSsr = InstanceType 18 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VNoSsr/index.ts: -------------------------------------------------------------------------------- 1 | export { VNoSsr } from './VNoSsr' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VOtpInput/_variables.scss: -------------------------------------------------------------------------------- 1 | @use '../../styles/settings'; 2 | @use '../../styles/tools'; 3 | 4 | $otp-input-content-gap: .5rem !default; 5 | $otp-input-content-height: 64px !default; 6 | $otp-input-content-max-width: 320px !default; 7 | $otp-input-content-padding: .5rem !default; 8 | $otp-input-divided-content-max-width: 360px !default; 9 | $otp-input-divider-margin: 0 8px !default; 10 | $otp-input-field-font-size: 1.25rem !default; 11 | $otp-input-padding: .5rem 0 !default; 12 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VOtpInput/index.ts: -------------------------------------------------------------------------------- 1 | export { VOtpInput } from './VOtpInput' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VOverflowBtn/index.ts: -------------------------------------------------------------------------------- 1 | import VOverflowBtn from './VOverflowBtn' 2 | 3 | export { VOverflowBtn } 4 | export default VOverflowBtn 5 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VOverlay/_variables.scss: -------------------------------------------------------------------------------- 1 | // Defaults 2 | $overlay-opacity: 0.32 !default; 3 | $overlay-scrim-background: rgb(var(--v-theme-on-surface)) !default; 4 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VOverlay/index.ts: -------------------------------------------------------------------------------- 1 | export { VOverlay } from './VOverlay' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VPagination/VPagination.sass: -------------------------------------------------------------------------------- 1 | @use './variables' as * 2 | 3 | .v-pagination 4 | &__list 5 | display: inline-flex 6 | list-style-type: none 7 | justify-content: center 8 | width: 100% 9 | 10 | &__item, 11 | &__first, 12 | &__prev, 13 | &__next, 14 | &__last 15 | margin: $pagination-item-margin 16 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VPagination/_variables.scss: -------------------------------------------------------------------------------- 1 | // Defaults 2 | $pagination-item-margin: .3rem !default; 3 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VPagination/index.ts: -------------------------------------------------------------------------------- 1 | export { VPagination } from './VPagination' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VParallax/VParallax.sass: -------------------------------------------------------------------------------- 1 | .v-parallax 2 | position: relative 3 | overflow: hidden 4 | 5 | &--active > .v-img__img 6 | will-change: transform 7 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VParallax/index.ts: -------------------------------------------------------------------------------- 1 | export { VParallax } from './VParallax' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VProgressCircular/index.ts: -------------------------------------------------------------------------------- 1 | export { VProgressCircular } from './VProgressCircular' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VProgressLinear/index.ts: -------------------------------------------------------------------------------- 1 | export { VProgressLinear } from './VProgressLinear' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VRadio/index.ts: -------------------------------------------------------------------------------- 1 | export { VRadio } from './VRadio' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VRadioGroup/_variables.scss: -------------------------------------------------------------------------------- 1 | $radio-group-details-padding-inline: 16px !default; 2 | $radio-group-label-margin-inline-start: 16px !default; 3 | $radio-group-label-selection-group-margin-top: 8px !default; 4 | $radio-group-label-selection-group-padding-inline: 6px !default; 5 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VRadioGroup/index.ts: -------------------------------------------------------------------------------- 1 | export { VRadioGroup } from './VRadioGroup' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VRangeSlider/index.ts: -------------------------------------------------------------------------------- 1 | export { VRangeSlider } from './VRangeSlider' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VRating/_variables.scss: -------------------------------------------------------------------------------- 1 | @use '../../styles/settings'; 2 | 3 | // Defaults 4 | $rating-item-focused-button-overlay-opacity: var(--v-hover-opacity) !default; 5 | $rating-item-align-items: center !default; 6 | $rating-item-button-opacity: 1 !default; 7 | $rating-item-button-transition-property: transform !default; 8 | $rating-item-icon-transform: scale(1.25) !default; 9 | $rating-item-transition-timing-function: settings.$decelerated-easing !default; 10 | $rating-white-space: nowrap !default; 11 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VRating/index.ts: -------------------------------------------------------------------------------- 1 | export { VRating } from './VRating' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VResponsive/index.ts: -------------------------------------------------------------------------------- 1 | export { VResponsive } from './VResponsive' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VSelect/_variables.scss: -------------------------------------------------------------------------------- 1 | @use '../../styles/settings'; 2 | 3 | // Defaults 4 | $select-content-border-radius: 4px !default; 5 | $select-content-elevation: 4 !default; 6 | $select-line-height: 1.75 !default; 7 | $select-transition: .2s settings.$standard-easing !default; 8 | $select-chips-control-min-height: null !default; 9 | $select-chips-margin-top: null !default; 10 | $select-chips-margin-bottom: null !default; 11 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VSelect/index.ts: -------------------------------------------------------------------------------- 1 | export { VSelect } from './VSelect' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VSelectionControl/index.ts: -------------------------------------------------------------------------------- 1 | export { VSelectionControl } from './VSelectionControl' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VSelectionControlGroup/VSelectionControlGroup.sass: -------------------------------------------------------------------------------- 1 | @use './variables' as * 2 | 3 | .v-selection-control-group 4 | grid-area: $selection-control-group-grid-area 5 | display: flex 6 | flex-direction: column 7 | 8 | &--inline 9 | flex-direction: row 10 | flex-wrap: wrap 11 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VSelectionControlGroup/_variables.scss: -------------------------------------------------------------------------------- 1 | $selection-control-group-grid-area: control !default; 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VSelectionControlGroup/index.ts: -------------------------------------------------------------------------------- 1 | export { VSelectionControlGroup } from './VSelectionControlGroup' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VSheet/VSheet.sass: -------------------------------------------------------------------------------- 1 | @use '../../styles/tools' 2 | @use './variables' as * 3 | 4 | .v-sheet 5 | display: block 6 | 7 | @include tools.border($sheet-border...) 8 | @include tools.elevation($sheet-elevation) 9 | @include tools.position($sheet-positions) 10 | @include tools.rounded($sheet-border-radius) 11 | @include tools.theme($sheet-theme...) 12 | 13 | &--rounded 14 | @include tools.rounded($sheet-rounded-border-radius) 15 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VSheet/index.ts: -------------------------------------------------------------------------------- 1 | export { VSheet } from './VSheet' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VSkeletonLoader/index.ts: -------------------------------------------------------------------------------- 1 | export { VSkeletonLoader } from './VSkeletonLoader' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VSlideGroup/_variables.scss: -------------------------------------------------------------------------------- 1 | $slide-group-prev-basis: 52px !default; 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VSlideGroup/index.ts: -------------------------------------------------------------------------------- 1 | export { VSlideGroup } from './VSlideGroup' 2 | export { VSlideGroupItem } from './VSlideGroupItem' 3 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VSlider/index.ts: -------------------------------------------------------------------------------- 1 | export { VSlider } from './VSlider' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VSnackbar/index.ts: -------------------------------------------------------------------------------- 1 | export { VSnackbar } from './VSnackbar' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VSparkline/index.ts: -------------------------------------------------------------------------------- 1 | import VSparkline from './VSparkline' 2 | 3 | export { VSparkline } 4 | 5 | export default VSparkline 6 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VSpeedDial/_variables.scss: -------------------------------------------------------------------------------- 1 | @import '../../styles/styles.sass'; 2 | 3 | $speed-dial-padding: 16px !default; 4 | $speed-dial-button-margin: 6px !default; 5 | $speed-dial-z-index: 1 !default; 6 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VSpeedDial/index.ts: -------------------------------------------------------------------------------- 1 | import VSpeedDial from './VSpeedDial' 2 | 3 | export { VSpeedDial } 4 | export default VSpeedDial 5 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VStepper/VStepperHeader.ts: -------------------------------------------------------------------------------- 1 | // Utilities 2 | import { createSimpleFunctional } from '@/util' 3 | 4 | export const VStepperHeader = createSimpleFunctional('v-stepper-header') 5 | 6 | export type VStepperHeader = InstanceType 7 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VStepper/index.ts: -------------------------------------------------------------------------------- 1 | export { VStepper } from './VStepper' 2 | export { VStepperActions } from './VStepperActions' 3 | export { VStepperHeader } from './VStepperHeader' 4 | export { VStepperItem } from './VStepperItem' 5 | export { VStepperWindow } from './VStepperWindow' 6 | export { VStepperWindowItem } from './VStepperWindowItem' 7 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VSwitch/index.ts: -------------------------------------------------------------------------------- 1 | export { VSwitch } from './VSwitch' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VSystemBar/index.ts: -------------------------------------------------------------------------------- 1 | export { VSystemBar } from './VSystemBar' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VTable/index.ts: -------------------------------------------------------------------------------- 1 | export { VTable } from './VTable' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VTabs/_variables.scss: -------------------------------------------------------------------------------- 1 | @use 'sass:math'; 2 | @use 'sass:map'; 3 | 4 | // VTabs 5 | $tabs-density: ( 'default': 0, 'comfortable' : -1, 'compact': -3) !default; 6 | $tabs-height: 48px !default; 7 | $tabs-stacked-height: 72px !default; 8 | 9 | // VTab 10 | $tab-align-tabs-title-margin: 42px !default; 11 | $tab-border-radius: 0 !default; 12 | $tab-max-width: 360px !default; 13 | $tab-min-width: 90px !default; 14 | $tab-slider-size: 2px !default; 15 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VTabs/index.ts: -------------------------------------------------------------------------------- 1 | export { VTabs } from './VTabs' 2 | export { VTab } from './VTab' 3 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VTabs/shared.ts: -------------------------------------------------------------------------------- 1 | // Types 2 | import type { InjectionKey } from 'vue' 3 | import type { GroupProvide } from '@/composables/group' 4 | 5 | export const VTabsSymbol: InjectionKey = Symbol.for('vuetify:v-tabs') 6 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VTextField/index.ts: -------------------------------------------------------------------------------- 1 | export { VTextField } from './VTextField' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VTextarea/index.ts: -------------------------------------------------------------------------------- 1 | export { VTextarea } from './VTextarea' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VThemeProvider/VThemeProvider.sass: -------------------------------------------------------------------------------- 1 | .v-theme-provider 2 | background: rgb(var(--v-theme-background)) 3 | color: rgb(var(--v-theme-on-background)) 4 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VThemeProvider/index.ts: -------------------------------------------------------------------------------- 1 | export { VThemeProvider } from './VThemeProvider' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VTimePicker/SelectingTimes.ts: -------------------------------------------------------------------------------- 1 | // @ts-nocheck 2 | /* eslint-disable */ 3 | 4 | enum SelectingTimes { 5 | Hour = 1, 6 | Minute = 2, 7 | Second = 3 8 | } 9 | 10 | export { SelectingTimes } 11 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VTimePicker/index.ts: -------------------------------------------------------------------------------- 1 | import VTimePicker from './VTimePicker' 2 | import VTimePickerClock from './VTimePickerClock' 3 | import VTimePickerTitle from './VTimePickerTitle' 4 | 5 | export { VTimePicker, VTimePickerClock, VTimePickerTitle } 6 | 7 | export default { 8 | $_vuetify_subcomponents: { 9 | VTimePicker, 10 | VTimePickerClock, 11 | VTimePickerTitle, 12 | }, 13 | } 14 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VTimeline/index.ts: -------------------------------------------------------------------------------- 1 | export { VTimeline } from './VTimeline' 2 | export { VTimelineItem } from './VTimelineItem' 3 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VToolbar/index.ts: -------------------------------------------------------------------------------- 1 | export { VToolbar } from './VToolbar' 2 | export { VToolbarTitle } from './VToolbarTitle' 3 | export { VToolbarItems } from './VToolbarItems' 4 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VTooltip/index.ts: -------------------------------------------------------------------------------- 1 | export { VTooltip } from './VTooltip' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VTreeview/_variables.scss: -------------------------------------------------------------------------------- 1 | @import '../../styles/styles.sass'; 2 | 3 | $treeview-transition: .2s map-get($transition, 'linear-out-slow-in') !default; 4 | $treeview-label-font-size: inherit !default; 5 | $treeview-node-height: 48px !default; 6 | $treeview-node-height-dense: 40px !default; 7 | $treeview-node-shaped-margin: 8px !default; 8 | $treeview-node-padding: 8px !default; 9 | $treeview-node-margin: 6px !default; 10 | $treeview-node-level-width: 24px !default; 11 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VTreeview/index.ts: -------------------------------------------------------------------------------- 1 | import VTreeview from './VTreeview' 2 | import VTreeviewNode from './VTreeviewNode' 3 | 4 | export { VTreeview, VTreeviewNode } 5 | 6 | export default { 7 | $_vuetify_subcomponents: { 8 | VTreeview, 9 | VTreeviewNode, 10 | }, 11 | } 12 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VValidation/index.ts: -------------------------------------------------------------------------------- 1 | export { VValidation } from './VValidation' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VVirtualScroll/VVirtualScroll.sass: -------------------------------------------------------------------------------- 1 | .v-virtual-scroll 2 | display: block 3 | flex: 1 1 auto 4 | max-width: 100% 5 | overflow: auto 6 | position: relative 7 | 8 | &__container 9 | display: block 10 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VVirtualScroll/index.ts: -------------------------------------------------------------------------------- 1 | export { VVirtualScroll } from './VVirtualScroll' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VWindow/_variables.scss: -------------------------------------------------------------------------------- 1 | @use '../../styles/settings'; 2 | 3 | // VWindow 4 | $window-transition: .3s cubic-bezier(.25, .8, .50, 1) !default; 5 | $window-controls-padding: 0 16px !default; 6 | -------------------------------------------------------------------------------- /packages/vuetify/src/components/VWindow/index.ts: -------------------------------------------------------------------------------- 1 | export { VWindow } from './VWindow' 2 | export { VWindowItem } from './VWindowItem' 3 | -------------------------------------------------------------------------------- /packages/vuetify/src/composables/date/index.ts: -------------------------------------------------------------------------------- 1 | export { createDate, useDate, DateAdapterSymbol } from './date' 2 | export type { DateAdapter } from './DateAdapter' 3 | export type { DateOptions, DateInstance } from './date' 4 | -------------------------------------------------------------------------------- /packages/vuetify/src/composables/refs.ts: -------------------------------------------------------------------------------- 1 | // Utilities 2 | import { onBeforeUpdate, ref } from 'vue' 3 | 4 | // Types 5 | import type { Ref } from 'vue' 6 | 7 | export function useRefs () { 8 | const refs = ref<(T | undefined)[]>([]) as Ref<(T | undefined)[]> 9 | 10 | onBeforeUpdate(() => (refs.value = [])) 11 | 12 | function updateRef (e: any, i: number) { 13 | refs.value[i] = e 14 | } 15 | 16 | return { refs, updateRef } 17 | } 18 | -------------------------------------------------------------------------------- /packages/vuetify/src/composables/scopeId.ts: -------------------------------------------------------------------------------- 1 | // Utilities 2 | import { getCurrentInstance } from '@/util' 3 | 4 | export function useScopeId () { 5 | const vm = getCurrentInstance('useScopeId') 6 | 7 | const scopeId = vm!.vnode.scopeId 8 | 9 | return { scopeId: scopeId ? { [scopeId]: '' } : undefined } 10 | } 11 | -------------------------------------------------------------------------------- /packages/vuetify/src/composables/selectLink.ts: -------------------------------------------------------------------------------- 1 | // Utilities 2 | import { nextTick, watch } from 'vue' 3 | 4 | // Types 5 | import type { UseLink } from './router' 6 | 7 | export function useSelectLink (link: UseLink, select?: (value: boolean, e?: Event) => void) { 8 | watch(() => link.isActive?.value, isActive => { 9 | if (link.isLink.value && isActive && select) { 10 | nextTick(() => { 11 | select(true) 12 | }) 13 | } 14 | }, { 15 | immediate: true, 16 | }) 17 | } 18 | -------------------------------------------------------------------------------- /packages/vuetify/src/composables/tag.ts: -------------------------------------------------------------------------------- 1 | // Utilities 2 | import { propsFactory } from '@/util' 3 | 4 | // Types 5 | export interface TagProps { 6 | tag: string 7 | } 8 | 9 | // Composables 10 | export const makeTagProps = propsFactory({ 11 | tag: { 12 | type: String, 13 | default: 'div', 14 | }, 15 | }, 'tag') 16 | -------------------------------------------------------------------------------- /packages/vuetify/src/directives/index.ts: -------------------------------------------------------------------------------- 1 | export { ClickOutside } from './click-outside' 2 | // export { Color } from './color' 3 | export { Intersect } from './intersect' 4 | export { Mutate } from './mutate' 5 | export { Resize } from './resize' 6 | export { Ripple } from './ripple' 7 | export { Scroll } from './scroll' 8 | export { Touch } from './touch' 9 | -------------------------------------------------------------------------------- /packages/vuetify/src/directives/ripple/_variables.scss: -------------------------------------------------------------------------------- 1 | @use '../../styles/settings'; 2 | 3 | $ripple-animation-transition-in: transform .25s settings.$decelerated-easing, 4 | opacity .1s settings.$decelerated-easing !default; 5 | $ripple-animation-transition-out: opacity .3s settings.$decelerated-easing !default; 6 | $ripple-animation-visible-opacity: calc(.25 * var(--v-theme-overlay-multiplier)) !default; 7 | -------------------------------------------------------------------------------- /packages/vuetify/src/labs/VConfirmEdit/index.ts: -------------------------------------------------------------------------------- 1 | export { VConfirmEdit } from './VConfirmEdit' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/labs/VPicker/VPickerTitle.ts: -------------------------------------------------------------------------------- 1 | // Utilities 2 | import { createSimpleFunctional } from '@/util' 3 | 4 | export const VPickerTitle = createSimpleFunctional('v-picker-title') 5 | 6 | export type VPickerTitle = InstanceType 7 | -------------------------------------------------------------------------------- /packages/vuetify/src/labs/VPicker/_variables.scss: -------------------------------------------------------------------------------- 1 | @use '../../styles/settings'; 2 | 3 | $picker-border-radius: settings.$border-radius-root !default; 4 | $picker-elevation: 0 !default; 5 | $picker-title-padding: 16px !default; 6 | $picker-inactive-btn-opacity: .6 !default; 7 | $picker-active-btn-opacity: 1 !default; 8 | $picker-landscape-title-width: 170px !default; 9 | $picker-font-size: 1rem !default; 10 | -------------------------------------------------------------------------------- /packages/vuetify/src/labs/VPicker/index.ts: -------------------------------------------------------------------------------- 1 | export { VPicker } from './VPicker' 2 | export { VPickerTitle } from './VPickerTitle' 3 | -------------------------------------------------------------------------------- /packages/vuetify/src/labs/allComponents.ts: -------------------------------------------------------------------------------- 1 | export * from '@/components' 2 | export * from './components' 3 | -------------------------------------------------------------------------------- /packages/vuetify/src/labs/components.ts: -------------------------------------------------------------------------------- 1 | export * from './VConfirmEdit' 2 | export * from './VPicker' 3 | -------------------------------------------------------------------------------- /packages/vuetify/src/labs/index.ts: -------------------------------------------------------------------------------- 1 | export * as components from './components' 2 | -------------------------------------------------------------------------------- /packages/vuetify/src/styles/elements/_blockquote.sass: -------------------------------------------------------------------------------- 1 | @use '../settings' 2 | 3 | .blockquote 4 | padding: settings.$spacer*4 0 settings.$spacer*4 settings.$spacer*6 5 | font-size: settings.$blockquote-font-size 6 | font-weight: settings.$blockquote-font-weight 7 | -------------------------------------------------------------------------------- /packages/vuetify/src/styles/elements/_index.sass: -------------------------------------------------------------------------------- 1 | @use './blockquote' 2 | @use './global' 3 | -------------------------------------------------------------------------------- /packages/vuetify/src/styles/generic/_animations.scss: -------------------------------------------------------------------------------- 1 | @keyframes v-shake { 2 | 59% { 3 | margin-left: 0; 4 | } 5 | 6 | 60%, 80% { 7 | margin-left: 2px; 8 | } 9 | 10 | 70%, 90% { 11 | margin-left: -2px; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /packages/vuetify/src/styles/generic/_index.scss: -------------------------------------------------------------------------------- 1 | @use './animations'; 2 | @use './colors'; 3 | @use './reset'; 4 | @use './transitions'; 5 | @use './rtl'; 6 | -------------------------------------------------------------------------------- /packages/vuetify/src/styles/generic/_rtl.scss: -------------------------------------------------------------------------------- 1 | .v-locale { 2 | &--is-rtl { 3 | direction: rtl; 4 | } 5 | 6 | &--is-ltr { 7 | direction: ltr; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /packages/vuetify/src/styles/main.sass: -------------------------------------------------------------------------------- 1 | // Modeled after ITCSS https://www.xfive.co/blog/itcss-scalable-maintainable-css-architecture/ 2 | 3 | @forward './settings' 4 | @use './generic' 5 | @use './elements' 6 | @use './utilities' 7 | -------------------------------------------------------------------------------- /packages/vuetify/src/styles/settings/_index.sass: -------------------------------------------------------------------------------- 1 | @forward './variables' 2 | @forward './colors' 3 | @forward './elevations' 4 | @forward './utilities' 5 | -------------------------------------------------------------------------------- /packages/vuetify/src/styles/tools/_absolute.sass: -------------------------------------------------------------------------------- 1 | @mixin absolute($pseudo: false) 2 | @if ($pseudo) 3 | content: '' 4 | position: absolute 5 | top: 0 6 | left: 0 7 | width: 100% 8 | height: 100% 9 | -------------------------------------------------------------------------------- /packages/vuetify/src/styles/tools/_bootable.sass: -------------------------------------------------------------------------------- 1 | @mixin bootable() 2 | &:not([data-booted="true"]) 3 | transition: none !important 4 | -------------------------------------------------------------------------------- /packages/vuetify/src/styles/tools/_border.sass: -------------------------------------------------------------------------------- 1 | @mixin border($color: null, $style: null, $width: null, $thin-width: false, $important: false) 2 | border-color: $color if($important, !important, null) 3 | border-style: $style if($important, !important, null) 4 | border-width: $width if($important, !important, null) 5 | 6 | @if $thin-width 7 | &--border 8 | border-width: $thin-width 9 | box-shadow: none 10 | -------------------------------------------------------------------------------- /packages/vuetify/src/styles/tools/_density.sass: -------------------------------------------------------------------------------- 1 | @use '../settings' 2 | 3 | @mixin density($name, $densities) 4 | @each $density, $multiplier in $densities 5 | .#{$name}--density-#{$density} 6 | @content($multiplier * settings.$spacer) 7 | -------------------------------------------------------------------------------- /packages/vuetify/src/styles/tools/_display.sass: -------------------------------------------------------------------------------- 1 | @use './functions' as * 2 | @use '../settings' as * 3 | 4 | @mixin visually-hidden 5 | position: absolute !important 6 | height: 1px 7 | width: 1px 8 | overflow: hidden 9 | clip: rect(1px, 1px, 1px, 1px) 10 | white-space: nowrap 11 | display: initial 12 | 13 | =media-breakpoint-up($name, $breakpoints: $grid-breakpoints) 14 | $min: breakpoint-min($name, $breakpoints) 15 | @if $min 16 | @media (min-width: $min) 17 | @content 18 | @else 19 | @content 20 | -------------------------------------------------------------------------------- /packages/vuetify/src/styles/tools/_elevation.sass: -------------------------------------------------------------------------------- 1 | @use 'sass:map' 2 | @use '../settings' 3 | 4 | @mixin elevation($z, $important: false) 5 | box-shadow: map.get(settings.$shadow-key-umbra, $z), map.get(settings.$shadow-key-penumbra, $z), map.get(settings.$shadow-key-ambient, $z) if($important, !important, null) 6 | 7 | @mixin elevationTransition($duration: 280ms, $easing: cubic-bezier(0.4, 0, 0.2, 1)) 8 | transition: box-shadow $duration $easing 9 | -------------------------------------------------------------------------------- /packages/vuetify/src/styles/tools/_index.sass: -------------------------------------------------------------------------------- 1 | @forward '_absolute' 2 | @forward '_functions' 3 | @forward '_bootable' 4 | @forward '_border' 5 | @forward '_density' 6 | @forward '_elevation' 7 | @forward '_position' 8 | @forward '_radius' 9 | @forward '_rounded' 10 | @forward '_rtl' 11 | @forward '_sheet' 12 | @forward '_states' 13 | @forward '_theme' 14 | @forward '_typography' 15 | @forward '_utilities' 16 | @forward '_variant' 17 | @forward '_display' 18 | -------------------------------------------------------------------------------- /packages/vuetify/src/styles/tools/_position.sass: -------------------------------------------------------------------------------- 1 | @mixin position($positions, $important: false) 2 | @each $position in $positions 3 | &--#{$position} 4 | position: #{$position} if($important, !important, null) 5 | -------------------------------------------------------------------------------- /packages/vuetify/src/styles/tools/_radius.sass: -------------------------------------------------------------------------------- 1 | @use 'sass:map' 2 | @use '../settings' 3 | 4 | @mixin radius($r, $important: false) 5 | // Key exists within the $rounded variable 6 | @if (map.has-key(settings.$rounded, $r)) 7 | border-radius: map.get(settings.$rounded, $r) if($important, !important, null) 8 | @else 9 | border-radius: $r if($important, !important, null) 10 | -------------------------------------------------------------------------------- /packages/vuetify/src/styles/tools/_rounded.sass: -------------------------------------------------------------------------------- 1 | @mixin rounded($radius: null, $important: false) 2 | border-radius: $radius if($important, !important, null) 3 | -------------------------------------------------------------------------------- /packages/vuetify/src/styles/tools/_rtl.sass: -------------------------------------------------------------------------------- 1 | @use 'sass:selector' 2 | 3 | @mixin rtl() 4 | @at-root #{selector.append('.v-locale--is-rtl', &)}, 5 | .v-locale--is-rtl & 6 | @content 7 | 8 | @mixin ltr() 9 | @at-root #{selector.append('.v-locale--is-ltr', &)}, 10 | .v-locale--is-ltr & 11 | @content 12 | -------------------------------------------------------------------------------- /packages/vuetify/src/styles/tools/_sheet.sass: -------------------------------------------------------------------------------- 1 | @mixin paper ($elevation, $radius, $shaped-radius) 2 | @include tools.radius($radius) 3 | 4 | &:not(.v-sheet--outlined) 5 | @include tools.elevation($elevation) 6 | 7 | @if ($shaped-radius) 8 | &.v-sheet--shaped 9 | @include tools.radius($shaped-radius) 10 | 11 | 12 | @mixin sheet ($component, $elevation, $radius, $shaped-radius) 13 | .v-sheet.#{$component} 14 | @include paper($elevation, $radius, $shaped-radius) 15 | -------------------------------------------------------------------------------- /packages/vuetify/src/styles/tools/_theme.sass: -------------------------------------------------------------------------------- 1 | @mixin theme ($background, $color) 2 | background: $background 3 | color: $color 4 | -------------------------------------------------------------------------------- /packages/vuetify/src/styles/tools/_typography.sass: -------------------------------------------------------------------------------- 1 | @mixin typography ($font-size, $font-weight, $letter-spacing, $line-height, $text-transform) 2 | font-size: $font-size 3 | font-weight: $font-weight 4 | letter-spacing: $letter-spacing 5 | line-height: $line-height 6 | text-transform: $text-transform 7 | -------------------------------------------------------------------------------- /packages/vuetify/src/styles/utilities/_display.sass: -------------------------------------------------------------------------------- 1 | @use '../settings' 2 | 3 | @if (settings.$utilities != false and length(settings.$utilities) > 0) 4 | @each $size, $media_query in settings.$display-breakpoints 5 | .hidden 6 | &-#{$size} 7 | @media #{$media_query} 8 | display: none !important 9 | -------------------------------------------------------------------------------- /packages/vuetify/src/styles/utilities/_elevation.scss: -------------------------------------------------------------------------------- 1 | @use '../tools'; 2 | @use '../settings'; 3 | 4 | @if (settings.$utilities != false and length(settings.$utilities) > 0) { 5 | $z: 24; 6 | @while $z >= 0 { 7 | .elevation-#{$z} { 8 | @include tools.elevation($z, $important: true); 9 | } 10 | 11 | $z: $z - 1; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /packages/vuetify/src/util/easing.ts: -------------------------------------------------------------------------------- 1 | export const standardEasing = 'cubic-bezier(0.4, 0, 0.2, 1)' 2 | export const deceleratedEasing = 'cubic-bezier(0.0, 0, 0.2, 1)' // Entering 3 | export const acceleratedEasing = 'cubic-bezier(0.4, 0, 1, 1)' // Leaving 4 | -------------------------------------------------------------------------------- /packages/vuetify/src/util/globals.ts: -------------------------------------------------------------------------------- 1 | export const IN_BROWSER = typeof window !== 'undefined' 2 | export const SUPPORTS_INTERSECTION = IN_BROWSER && 'IntersectionObserver' in window 3 | export const SUPPORTS_TOUCH = IN_BROWSER && ('ontouchstart' in window || window.navigator.maxTouchPoints > 0) 4 | export const SUPPORTS_EYE_DROPPER = IN_BROWSER && 'EyeDropper' in window 5 | -------------------------------------------------------------------------------- /packages/vuetify/src/util/isFixedPosition.ts: -------------------------------------------------------------------------------- 1 | export function isFixedPosition (el?: HTMLElement) { 2 | while (el) { 3 | if (window.getComputedStyle(el).position === 'fixed') { 4 | return true 5 | } 6 | el = el.offsetParent as HTMLElement 7 | } 8 | return false 9 | } 10 | -------------------------------------------------------------------------------- /packages/vuetify/src/util/useRender.ts: -------------------------------------------------------------------------------- 1 | // Utilities 2 | import { getCurrentInstance } from './getCurrentInstance' 3 | 4 | // Types 5 | import type { VNode } from 'vue' 6 | 7 | export function useRender (render: () => VNode): void { 8 | const vm = getCurrentInstance('useRender') as any 9 | vm.render = render 10 | } 11 | -------------------------------------------------------------------------------- /packages/vuetify/tsconfig.checks.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.dev.json", 3 | "compilerOptions": { 4 | "skipLibCheck": true 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /packages/vuetify/tsconfig.dev.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "include": [ 4 | "src", 5 | "dev", 6 | "cypress" 7 | ], 8 | "compilerOptions": { 9 | "allowJs": true 10 | }, 11 | "vueCompilerOptions": { 12 | "strictTemplates": true 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /packages/vuetify/tsconfig.dist.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "exclude": ["dev", "**/*.spec.*", "cypress"] 4 | } 5 | -------------------------------------------------------------------------------- /packages/vuetify/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "include": [ 4 | "src", 5 | "dev" 6 | ], 7 | "exclude": ["types-temp"], 8 | "compilerOptions": { 9 | "baseUrl": ".", 10 | "outDir": "./types-temp", 11 | "paths": { 12 | "@/*": [ 13 | "src/*" 14 | ], 15 | "types": [ 16 | "jest", 17 | "node", 18 | "vue-router" 19 | ] 20 | }, 21 | "stripInternal": true 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /scripts/deploy.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | npm config set //registry.npmjs.org/:_authToken ${NPM_API_KEY:?} 4 | npm whoami 5 | yarn lerna publish from-git --npm-tag $(node ./scripts/parse-npm-tag.js ${RELEASE_TAG:?}) --yes --no-verify-access 6 | -------------------------------------------------------------------------------- /scripts/dev.js: -------------------------------------------------------------------------------- 1 | const spawn = require('cross-spawn') 2 | 3 | let target = process.argv[2] 4 | const alias = { 5 | docs: 'vuetifyjs.com', 6 | } 7 | target = alias[target] || target 8 | 9 | if (!target) { 10 | spawn('yarn', ['lerna', 'run', 'dev', '--scope', 'vuetify', '--stream'], { stdio: 'inherit' }) 11 | } else { 12 | spawn('yarn', ['lerna', 'run', 'dev', '--scope', target, '--stream'], { stdio: 'inherit' }) 13 | } 14 | -------------------------------------------------------------------------------- /scripts/parse-npm-tag.js: -------------------------------------------------------------------------------- 1 | const semver = require('semver') 2 | 3 | const version = process.argv[2] 4 | 5 | if (!semver.valid(version)) { 6 | console.error(`Error: '${version}' is not a valid NPM version string`) 7 | process.exit(9) 8 | } 9 | 10 | const prerelease = semver.prerelease(version) 11 | const major = semver.major(version) 12 | 13 | if (prerelease == null) { 14 | if (major > 3) { 15 | console.log('next') 16 | } else { 17 | console.log('latest') 18 | } 19 | } else { 20 | console.log('next') 21 | } 22 | -------------------------------------------------------------------------------- /scripts/post-install.js: -------------------------------------------------------------------------------- 1 | const shell = require('shelljs') 2 | const fs = require('fs') 3 | const path = require('path') 4 | const resolve = target => path.resolve(__dirname, target) 5 | const devTargetFolder = '../packages/vuetify/dev' 6 | const devTargetFile = `${devTargetFolder}/Playground.vue` 7 | 8 | if (!fs.existsSync(resolve(devTargetFile))) { 9 | shell.cp( 10 | resolve(`${devTargetFolder}/Playground.template.vue`), 11 | resolve(devTargetFile) 12 | ) 13 | } 14 | -------------------------------------------------------------------------------- /scripts/prepare-commit-message.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs') 2 | 3 | const [ 4 | messageFile, 5 | commitType, 6 | ] = process.env.HUSKY_GIT_PARAMS.split(' ') 7 | 8 | if (commitType == null) { 9 | const currentMessage = fs.readFileSync(messageFile) 10 | const newMessage = fs.readFileSync('.github/.git_commit_msg.txt') 11 | fs.writeFileSync(messageFile, newMessage) 12 | fs.appendFileSync(messageFile, currentMessage) 13 | } 14 | -------------------------------------------------------------------------------- /scripts/rules/no-components-index.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | create (context) { 3 | return { 4 | ImportDeclaration (node) { 5 | if (node.source.value === '@/components') { 6 | context.report(node.source, 'Do not import from "@/components"') 7 | } 8 | }, 9 | } 10 | }, 11 | } 12 | -------------------------------------------------------------------------------- /templates/cypress-test.tsx: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | import { NAME } from '..' 4 | import { generate } from '@/../cypress/templates' 5 | 6 | const props = {} 7 | 8 | const stories = { 9 | Default: , 10 | } 11 | 12 | // Tests 13 | describe('NAME', () => { 14 | generate({ stories, props, component: NAME }) 15 | }) 16 | -------------------------------------------------------------------------------- /templates/jest-test.ts: -------------------------------------------------------------------------------- 1 | // Utilities 2 | import { mount } from '@vue/test-utils' 3 | import { describe, expect, it } from '@jest/globals' 4 | 5 | describe('NAME', () => { 6 | it('', () => { 7 | expect().toBe() 8 | }) 9 | }) 10 | -------------------------------------------------------------------------------- /tsconfig.eslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "include": [ 4 | "**/*.ts", 5 | "**/*.tsx", 6 | "**/*.js", 7 | "**/.*.ts", 8 | "**/.*.js", 9 | "**/*.vue", 10 | "**/*.json" 11 | ] 12 | } 13 | --------------------------------------------------------------------------------