diff --git a/packages/docs/auto-imports.d.ts b/packages/docs/auto-imports.d.ts index 8a1a9b1878b..c996198571d 100644 --- a/packages/docs/auto-imports.d.ts +++ b/packages/docs/auto-imports.d.ts @@ -172,6 +172,9 @@ declare global { export type { Component, Slot, Slots, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue' import('vue') // @ts-ignore + export type { CodeSection } from './src/composables/playground' + import('./src/composables/playground') + // @ts-ignore export type { Category } from './src/stores/app' import('./src/stores/app') // @ts-ignore diff --git a/packages/docs/components.d.ts b/packages/docs/components.d.ts index 572f87f0385..9db87a6fa0b 100644 --- a/packages/docs/components.d.ts +++ b/packages/docs/components.d.ts @@ -99,7 +99,6 @@ declare module 'vue' { DocMadeWithVueAttribution: typeof import('./src/components/doc/MadeWithVueAttribution.vue')['default'] DocMadeWithVuetifyGallery: typeof import('./src/components/doc/MadeWithVuetifyGallery.vue')['default'] DocMadeWithVuetifyLink: typeof import('./src/components/doc/MadeWithVuetifyLink.vue')['default'] - DocPremiumThemesGallery: typeof import('./src/components/doc/PremiumThemesGallery.vue')['default'] DocReadyForMore: typeof import('./src/components/doc/ReadyForMore.vue')['default'] DocRelatedPage: typeof import('./src/components/doc/RelatedPage.vue')['default'] DocRelatedPages: typeof import('./src/components/doc/RelatedPages.vue')['default'] @@ -119,13 +118,35 @@ declare module 'vue' { FeaturesSassApi: typeof import('./src/components/features/SassApi.vue')['default'] GettingStartedWireframeExamples: typeof import('./src/components/getting-started/WireframeExamples.vue')['default'] HomeActionBtns: typeof import('./src/components/home/ActionBtns.vue')['default'] + HomeBlogs: typeof import('./src/components/home/Blogs.vue')['default'] + HomeCommonCard: typeof import('./src/components/home/Common/Card.vue')['default'] + HomeCommonGradient: typeof import('./src/components/home/Common/Gradient.vue')['default'] + HomeCommonMarquee: typeof import('./src/components/home/Common/Marquee.vue')['default'] + HomeCommonTitle: typeof import('./src/components/home/Common/Title.vue')['default'] + HomeComponentGallery: typeof import('./src/components/home/ComponentGallery.vue')['default'] + HomeDiscord: typeof import('./src/components/home/Discord.vue')['default'] + HomeEcosystem: typeof import('./src/components/home/Ecosystem.vue')['default'] HomeEntry: typeof import('./src/components/home/Entry.vue')['default'] HomeEpicmaxSupport: typeof import('./src/components/home/EpicmaxSupport.vue')['default'] - HomeFeatures: typeof import('./src/components/home/Features.vue')['default'] HomeFooter: typeof import('./src/components/home/Footer.vue')['default'] + HomeGalleryChatChat: typeof import('./src/components/home/Gallery/Chat/Chat.vue')['default'] + HomeGalleryChatDetail: typeof import('./src/components/home/Gallery/Chat/Detail.vue')['default'] + HomeGalleryChatInbox: typeof import('./src/components/home/Gallery/Chat/Inbox.vue')['default'] + HomeGalleryChatList: typeof import('./src/components/home/Gallery/Chat/List.vue')['default'] + HomeGalleryComponentGallery: typeof import('./src/components/home/Gallery/ComponentGallery.vue')['default'] + HomeGalleryComponents: typeof import('./src/components/home/Gallery/Components.vue')['default'] + HomeGalleryData: typeof import('./src/components/home/Gallery/Data.vue')['default'] + HomeGalleryForm: typeof import('./src/components/home/Gallery/Form.vue')['default'] + HomeGalleryLogin: typeof import('./src/components/home/Gallery/Login.vue')['default'] + HomeGallerySelection: typeof import('./src/components/home/Gallery/Selection.vue')['default'] HomeLogo: typeof import('./src/components/home/Logo.vue')['default'] + HomeSnips: typeof import('./src/components/home/Snips.vue')['default'] HomeSpecialSponsor: typeof import('./src/components/home/SpecialSponsor.vue')['default'] HomeSponsors: typeof import('./src/components/home/Sponsors.vue')['default'] + HomeStore: typeof import('./src/components/home/Store.vue')['default'] + HomeSupport: typeof import('./src/components/home/Support.vue')['default'] + HomeTooling: typeof import('./src/components/home/Tooling.vue')['default'] + HomeVuetifyOne: typeof import('./src/components/home/VuetifyOne.vue')['default'] IconsChevronDown: typeof import('./src/components/icons/ChevronDown.vue')['default'] IntroductionComparison: typeof import('./src/components/introduction/Comparison.vue')['default'] IntroductionConsultingServices: typeof import('./src/components/introduction/ConsultingServices.vue')['default'] diff --git a/packages/docs/src/components/app/Markup.vue b/packages/docs/src/components/app/Markup.vue index 5e3c3c3be01..3760cba4272 100644 --- a/packages/docs/src/components/app/Markup.vue +++ b/packages/docs/src/components/app/Markup.vue @@ -53,18 +53,18 @@ - {{ t('open-in-vuetify-bin') }} + {{ t(needsPlaygroundLink ? 'open-in-playground' : 'open-in-vuetify-bin') }}
@@ -97,7 +97,10 @@ const props = defineProps({ resource: String, - code: null, + code: { + type: [String, Array] as PropType, + default: '', + }, inline: Boolean, language: { type: String, @@ -130,16 +133,35 @@ const root = ref() const highlighted = shallowRef('') - watchEffect(async () => { - highlighted.value = props.code && props.language && Prism.highlight(await props.code, Prism.languages[props.language], props.language) - }) const className = computed(() => `language-${props.language}`) const icon = computed(() => clicked.value ? 'mdi-check' : 'mdi-clipboard-text-outline') - async function bin () { + const needsPlaygroundLink = computed(() => Array.isArray(props.code)) + + const displayedCode = computed(() => { + if (typeof props.code === 'string') { + return props.code + } + + return props.code.map((section: CodeSection) => section.content).join('\n\n') + }) + + watchEffect(async () => { + highlighted.value = displayedCode.value && props.language && Prism.highlight(await displayedCode.value, Prism.languages[props.language], props.language) + }) + + function openCode () { + if (needsPlaygroundLink.value) { + openPlayground() + } else { + openBin() + } + } + + async function openBin () { const el = root.value?.$el.querySelector('code') - const code = props.code || el?.innerText || '' + const code = displayedCode.value || el?.innerText || '' const language = props.language || 'markdown' const title = props.resource @@ -148,10 +170,18 @@ window.open(compressed, '_blank') } + async function openPlayground () { + if (typeof props.code === 'string') return + + const url = usePlayground(props.code) + + window.open(url, '_blank') + } + async function copy () { const el = root.value?.$el.querySelector('code') - navigator.clipboard.writeText(props.code || el?.innerText || '') + navigator.clipboard.writeText(displayedCode.value || el?.innerText || '') clicked.value = true diff --git a/packages/docs/src/components/doc/PremiumThemesGallery.vue b/packages/docs/src/components/doc/PremiumThemesGallery.vue deleted file mode 100644 index e987f82af57..00000000000 --- a/packages/docs/src/components/doc/PremiumThemesGallery.vue +++ /dev/null @@ -1,90 +0,0 @@ - - - diff --git a/packages/docs/src/components/home/ActionBtns.vue b/packages/docs/src/components/home/ActionBtns.vue deleted file mode 100644 index e379c7ccdcb..00000000000 --- a/packages/docs/src/components/home/ActionBtns.vue +++ /dev/null @@ -1,53 +0,0 @@ - - - diff --git a/packages/docs/src/components/home/Blogs.vue b/packages/docs/src/components/home/Blogs.vue new file mode 100644 index 00000000000..6d41e0295b7 --- /dev/null +++ b/packages/docs/src/components/home/Blogs.vue @@ -0,0 +1,137 @@ + + + diff --git a/packages/docs/src/components/home/Common/Card.vue b/packages/docs/src/components/home/Common/Card.vue new file mode 100644 index 00000000000..ab0c1198656 --- /dev/null +++ b/packages/docs/src/components/home/Common/Card.vue @@ -0,0 +1,50 @@ + + + diff --git a/packages/docs/src/components/home/Common/Gradient.vue b/packages/docs/src/components/home/Common/Gradient.vue new file mode 100644 index 00000000000..f4eab2768b3 --- /dev/null +++ b/packages/docs/src/components/home/Common/Gradient.vue @@ -0,0 +1,48 @@ + + + + + diff --git a/packages/docs/src/components/home/Common/Marquee.vue b/packages/docs/src/components/home/Common/Marquee.vue new file mode 100644 index 00000000000..44e1c499fca --- /dev/null +++ b/packages/docs/src/components/home/Common/Marquee.vue @@ -0,0 +1,75 @@ + + + + + diff --git a/packages/docs/src/components/home/Common/Title.vue b/packages/docs/src/components/home/Common/Title.vue new file mode 100644 index 00000000000..c4c9869c71c --- /dev/null +++ b/packages/docs/src/components/home/Common/Title.vue @@ -0,0 +1,36 @@ + + + diff --git a/packages/docs/src/components/home/Discord.vue b/packages/docs/src/components/home/Discord.vue new file mode 100644 index 00000000000..a3bc11312a0 --- /dev/null +++ b/packages/docs/src/components/home/Discord.vue @@ -0,0 +1,37 @@ + + + diff --git a/packages/docs/src/components/home/Ecosystem.vue b/packages/docs/src/components/home/Ecosystem.vue new file mode 100644 index 00000000000..293cdc82f66 --- /dev/null +++ b/packages/docs/src/components/home/Ecosystem.vue @@ -0,0 +1,70 @@ + + + diff --git a/packages/docs/src/components/home/Entry.vue b/packages/docs/src/components/home/Entry.vue index 97baed3e2c5..891336d2422 100644 --- a/packages/docs/src/components/home/Entry.vue +++ b/packages/docs/src/components/home/Entry.vue @@ -1,112 +1,172 @@ - - diff --git a/packages/docs/src/components/home/Features.vue b/packages/docs/src/components/home/Features.vue deleted file mode 100644 index 94aedf45db4..00000000000 --- a/packages/docs/src/components/home/Features.vue +++ /dev/null @@ -1,66 +0,0 @@ - - - diff --git a/packages/docs/src/components/home/Gallery/Chat/Chat.vue b/packages/docs/src/components/home/Gallery/Chat/Chat.vue new file mode 100644 index 00000000000..2377ab9a889 --- /dev/null +++ b/packages/docs/src/components/home/Gallery/Chat/Chat.vue @@ -0,0 +1,238 @@ + + + diff --git a/packages/docs/src/components/home/Gallery/Chat/Detail.vue b/packages/docs/src/components/home/Gallery/Chat/Detail.vue new file mode 100644 index 00000000000..6a6bfa0e053 --- /dev/null +++ b/packages/docs/src/components/home/Gallery/Chat/Detail.vue @@ -0,0 +1,132 @@ + + + diff --git a/packages/docs/src/components/home/Gallery/Chat/List.vue b/packages/docs/src/components/home/Gallery/Chat/List.vue new file mode 100644 index 00000000000..c1b885585bf --- /dev/null +++ b/packages/docs/src/components/home/Gallery/Chat/List.vue @@ -0,0 +1,74 @@ + + + diff --git a/packages/docs/src/components/home/Gallery/Components.vue b/packages/docs/src/components/home/Gallery/Components.vue new file mode 100644 index 00000000000..e633569af3d --- /dev/null +++ b/packages/docs/src/components/home/Gallery/Components.vue @@ -0,0 +1,243 @@ + + + + + diff --git a/packages/docs/src/components/home/Gallery/Data.vue b/packages/docs/src/components/home/Gallery/Data.vue new file mode 100644 index 00000000000..00387f70c1d --- /dev/null +++ b/packages/docs/src/components/home/Gallery/Data.vue @@ -0,0 +1,288 @@ + + + diff --git a/packages/docs/src/components/home/Gallery/Form.vue b/packages/docs/src/components/home/Gallery/Form.vue new file mode 100644 index 00000000000..4530b36cb8a --- /dev/null +++ b/packages/docs/src/components/home/Gallery/Form.vue @@ -0,0 +1,254 @@ + + + diff --git a/packages/docs/src/components/home/Gallery/Login.vue b/packages/docs/src/components/home/Gallery/Login.vue new file mode 100644 index 00000000000..3ff347c1111 --- /dev/null +++ b/packages/docs/src/components/home/Gallery/Login.vue @@ -0,0 +1,77 @@ + + + diff --git a/packages/docs/src/components/home/Snips.vue b/packages/docs/src/components/home/Snips.vue new file mode 100644 index 00000000000..46fa401e4b6 --- /dev/null +++ b/packages/docs/src/components/home/Snips.vue @@ -0,0 +1,58 @@ + + + diff --git a/packages/docs/src/components/home/SpecialSponsor.vue b/packages/docs/src/components/home/SpecialSponsor.vue index 9abf5f32531..b7f9959f324 100644 --- a/packages/docs/src/components/home/SpecialSponsor.vue +++ b/packages/docs/src/components/home/SpecialSponsor.vue @@ -1,23 +1,30 @@ diff --git a/packages/docs/src/components/home/Sponsors.vue b/packages/docs/src/components/home/Sponsors.vue index 0b4c436211b..f4fce025ed4 100644 --- a/packages/docs/src/components/home/Sponsors.vue +++ b/packages/docs/src/components/home/Sponsors.vue @@ -1,40 +1,57 @@ + + + + + + - - - - - -
-
- - - + + + + + + + - - - diff --git a/packages/docs/src/components/home/Store.vue b/packages/docs/src/components/home/Store.vue new file mode 100644 index 00000000000..1a854741119 --- /dev/null +++ b/packages/docs/src/components/home/Store.vue @@ -0,0 +1,102 @@ + + + diff --git a/packages/docs/src/components/home/Support.vue b/packages/docs/src/components/home/Support.vue new file mode 100644 index 00000000000..844f0098c99 --- /dev/null +++ b/packages/docs/src/components/home/Support.vue @@ -0,0 +1,87 @@ + + + diff --git a/packages/docs/src/components/home/Tooling.vue b/packages/docs/src/components/home/Tooling.vue new file mode 100644 index 00000000000..c458b58251c --- /dev/null +++ b/packages/docs/src/components/home/Tooling.vue @@ -0,0 +1,63 @@ + + + diff --git a/packages/docs/src/components/home/VuetifyOne.vue b/packages/docs/src/components/home/VuetifyOne.vue new file mode 100644 index 00000000000..afd7ab31190 --- /dev/null +++ b/packages/docs/src/components/home/VuetifyOne.vue @@ -0,0 +1,72 @@ + + + diff --git a/packages/docs/src/composables/playground.ts b/packages/docs/src/composables/playground.ts index 1a35d39dcc0..f4c71e7fe75 100644 --- a/packages/docs/src/composables/playground.ts +++ b/packages/docs/src/composables/playground.ts @@ -3,6 +3,12 @@ import { strFromU8, strToU8, zlibSync } from 'fflate' import { version as vuetifyVersion } from 'vuetify' import { version as vueVersion } from 'vue' +export type CodeSection = { + name: string + content: string + language: string +} + // This is copied directly from playground function utoa (data: string): string { const buffer = strToU8(data) @@ -12,7 +18,7 @@ function utoa (data: string): string { } export function usePlayground ( - sections: ({ name: string, content: string, language: string})[] = [], + sections: CodeSection[] = [], css: string[] = [], imports: Record = {}, setup?: string, diff --git a/packages/docs/src/i18n/messages/en.json b/packages/docs/src/i18n/messages/en.json index f32e5fa2af1..26f7a26509e 100644 --- a/packages/docs/src/i18n/messages/en.json +++ b/packages/docs/src/i18n/messages/en.json @@ -138,6 +138,7 @@ "discord": "Discord", "done": "All done", "edit-in-playground": "Edit in Vuetify Playground", + "open-in-playground": "Open in Vuetify Playground", "edit-this-page": "Edit this page on", "edit": "Edit", "enable-banners": "Enable banners", diff --git a/packages/docs/src/layouts/home.vue b/packages/docs/src/layouts/home.vue index 9eaa631cc2f..a9ee1e1cd52 100644 --- a/packages/docs/src/layouts/home.vue +++ b/packages/docs/src/layouts/home.vue @@ -6,7 +6,9 @@ - + + + diff --git a/packages/docs/src/pages/en/index.md b/packages/docs/src/pages/en/index.md index bca124a674d..0c6d7be837c 100644 --- a/packages/docs/src/pages/en/index.md +++ b/packages/docs/src/pages/en/index.md @@ -8,42 +8,46 @@ meta: -
+ - + -
+ - + -
+ -## Project Sponsors + -The continued development and maintenance of Vuetify is made possible by these generous sponsors:{style="max-width: 568px" .mx-auto .px-4} + - + + + + + - + -## Templates Built With Vuetify + -Check out these premium templates built using Vuetify.{style="max-width: 568px" .mx-auto .px-4} + - + - + -## Made With Vuetify + -Check out these beautiful apps, plugins, and themes built using Vuetify.{style="max-width: 568px" .mx-auto .px-4} + - + - + -
-
-
+ - + diff --git a/packages/docs/src/plugins/icons.ts b/packages/docs/src/plugins/icons.ts index a14235a69cf..4e49ec13467 100644 --- a/packages/docs/src/plugins/icons.ts +++ b/packages/docs/src/plugins/icons.ts @@ -74,6 +74,7 @@ export { mdiCakeVariant, mdiCalendar, mdiCalendarBlank, + mdiCalendarBlankOutline, mdiCalendarRange, mdiCallSplit, mdiCamera, @@ -165,6 +166,7 @@ export { mdiEyedropper, mdiEyeOff, mdiFacebook, + mdiFactory, mdiFastForward, mdiFileDocumentOutline, mdiFileExcel,