diff --git a/.env.example b/.env.example index 03bbc6af6c..d207e8e3a1 100644 --- a/.env.example +++ b/.env.example @@ -11,5 +11,6 @@ VUE_APP_PERMAFROST_URL="" VUE_APP_AR_URL="" MATRIX="" SUBSQUID_ENDPOINT="" +RAMP_API_KEY="" TRANSAK_API_KEY="" -TRANSAK_ENV="" #STAGING|PRODUCTION \ No newline at end of file +TRANSAK_ENV="" #STAGING|PRODUCTION diff --git a/.eslintrc.js b/.eslintrc.js index 7be58ce897..5641b8fc84 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -5,9 +5,9 @@ module.exports = { node: true, }, extends: [ - 'plugin:vue/recommended', + 'plugin:vue/vue3-recommended', 'plugin:@typescript-eslint/recommended', - 'plugin:vue-scoped-css/recommended', + 'plugin:vue-scoped-css/vue3-recommended', 'prettier', ], parser: 'vue-eslint-parser', @@ -16,8 +16,10 @@ module.exports = { ecmaVersion: 2022, sourceType: 'module', }, - plugins: ['vue', 'prettier', '@typescript-eslint', 'unicorn'], + plugins: ['prettier', '@typescript-eslint', 'unicorn'], rules: { + 'prettier/prettier': 'error', + 'no-empty-function': 'warn', 'no-trailing-spaces': 'error', 'unicorn/no-for-loop': 'error', 'brace-style': ['error', '1tbs', { allowSingleLine: false }], @@ -48,6 +50,7 @@ module.exports = { ], 'vue/multi-word-component-names': 'off', '@typescript-eslint/no-unused-vars': 'error', + '@typescript-eslint/no-explicit-any': 'warn', 'vue-scoped-css/v-deep-pseudo-style': ['error', ':deep'], 'vue-scoped-css/no-deprecated-deep-combinator': 'error', 'vue-scoped-css/require-v-deep-argument': 'error', diff --git a/.github/diagram.svg b/.github/diagram.svg index 5069d31329..a947d7e35a 100644 --- a/.github/diagram.svg +++ b/.github/diagram.svg @@ -1 +1 @@ -utilsutilsteststestsstylesstylesstoresstoresservicesservicesqueriesqueriespluginspluginsparamsparamspagespageslibslibslayoutslayoutscomposablescomposablescomponentscomponentsconfigconfigapiapicomponentscomponentsabstractsabstractssubsquidsubsquid_prefix_prefixuiuistaticstatictransactiontransactionmassmintmassminttransfertransferteleportteleportsharedsharedseriesseriessearchsearchrmrkrmrkprofileprofilenavbarnavbarmediamediamassmintmassmintlandinglandingitemsitemsidentityidentitygallerygalleryexploreexploredropsdropscommoncommoncollectioncollectioncarouselcarouselbsxbsxbasebasegeneralgeneralsrcsrcmintTokenmintTokenfiltersfiltersserviceserviceGalleryGalleryCreateCreateItemsGridItemsGridunlockableunlockabledropdropactivityactivityOfferOfferCreateCreatecomponentscomponentsmodulesmodulesHolderHoldereventseventsMediaItemMediaItem.ahk.filters.graphql.js.mjs.scss.tab.ts.ui.vue.yamleach dot sized by file size \ No newline at end of file +utilsutilsteststestsstoresstoresqueriesqueriespluginspluginsparamsparamspagespageslibslibslayoutslayoutscomposablescomposablescomponentscomponentspublicpublicconfigconfige2ee2esubsquidsubsquid[prefix][prefix]uiuistaticstatictransactiontransactionmassmintmassminttransfertransfersharedsharedseriesseriessearchsearchrmrkrmrkprofileprofilenavbarnavbarmediamediamassmintmassmintlandinglandingitemsitemsidentityidentitygallerygalleryexploreexploredropsdropscreatecreatecommoncommoncollectioncollectioncarouselcarouselbsxbsxdropdropblogbloggeneralgeneralsrcsrcfiltersfiltersGalleryGalleryCreateCreatelistingCartlistingCartunlockableunlockableactivityactivityOfferOffercomponentscomponentsmodulesmoduleseventseventsMediaItemMediaItem.ahk.filters.graphql.js.mjs.scss.tab.ts.txt.ui.vue.xml.yamleach dot sized by file size diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7fa2e46685..161b7dd9c1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -5,7 +5,7 @@ on: push: branches: [main] pull_request: - branches: [main, beta, hyper-jpeg] + branches: [main, beta, production, nuxt] jobs: test: diff --git a/.github/workflows/playwright.yml b/.github/workflows/playwright.yml index bcafab4a34..27aedf9400 100644 --- a/.github/workflows/playwright.yml +++ b/.github/workflows/playwright.yml @@ -1,9 +1,9 @@ name: Playwright Tests on: push: - branches: [ main, master ] + branches: [ main, beta, production, nuxt ] pull_request: - branches: [ main, master ] + branches: [ main, beta, production, nuxt ] jobs: test: timeout-minutes: 15 @@ -19,9 +19,9 @@ jobs: - name: Run Build run: pnpm generate - + - name: Install Playwright Browsers - run: pnpm exec playwright install --with-deps + run: pnpm exec playwright install --with-deps chromium - name: Run Playwright tests run: pnpm exec playwright test diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b2a90b34ce..96c180d468 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -10,6 +10,9 @@ We might give retro-active reward, where the bounty label wasn't present, **if w **For better coordination, please join our [Development channel (#coordination) on [KodaDot Ecosystem Telegram](https://t.me/kodadot_eco)** +## Deploy Kodadot nft gallery to Netlify + [![Deploy to Netlify](https://www.netlify.com/img/deploy/button.svg)](https://app.netlify.com/start/deploy?repository=https://github.com/kodadot/nft-gallery) + ## Getting started Before you being: diff --git a/README.md b/README.md index b36984aa17..f8625b509d 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,8 @@ # Contributing +[![Twitter Follow](https://img.shields.io/twitter/follow/kodadot?style=social)](https://twitter.com/intent/follow?screen_name=kodadot) + [![Test & Build app](https://github.com/kodadot/nft-gallery/actions/workflows/build.yml/badge.svg)](https://github.com/kodadot/nft-gallery/actions/workflows/build.yml) [![Reviewdog](https://github.com/kodadot/nft-gallery/actions/workflows/reviewdog.yml/badge.svg)](https://github.com/kodadot/nft-gallery/actions/workflows/reviewdog.yml) [![Maintainability](https://api.codeclimate.com/v1/badges/7d14fab327c632d5f0ce/maintainability)](https://codeclimate.com/github/kodadot/nft-gallery/maintainability) ![image](https://user-images.githubusercontent.com/5887929/217076362-464e1293-8a2d-43ee-829f-fba17408e4c3.png) diff --git a/styles/abstracts/_animations.scss b/assets/styles/abstracts/_animations.scss similarity index 100% rename from styles/abstracts/_animations.scss rename to assets/styles/abstracts/_animations.scss diff --git a/styles/abstracts/_derived-variables.scss b/assets/styles/abstracts/_derived-variables.scss similarity index 100% rename from styles/abstracts/_derived-variables.scss rename to assets/styles/abstracts/_derived-variables.scss diff --git a/styles/abstracts/_fonts.scss b/assets/styles/abstracts/_fonts.scss similarity index 100% rename from styles/abstracts/_fonts.scss rename to assets/styles/abstracts/_fonts.scss diff --git a/styles/abstracts/_initial-variables.scss b/assets/styles/abstracts/_initial-variables.scss similarity index 100% rename from styles/abstracts/_initial-variables.scss rename to assets/styles/abstracts/_initial-variables.scss diff --git a/styles/abstracts/_mixins.scss b/assets/styles/abstracts/_mixins.scss similarity index 100% rename from styles/abstracts/_mixins.scss rename to assets/styles/abstracts/_mixins.scss diff --git a/styles/abstracts/_theme.scss b/assets/styles/abstracts/_theme.scss similarity index 100% rename from styles/abstracts/_theme.scss rename to assets/styles/abstracts/_theme.scss diff --git a/styles/abstracts/_variables.scss b/assets/styles/abstracts/_variables.scss similarity index 100% rename from styles/abstracts/_variables.scss rename to assets/styles/abstracts/_variables.scss diff --git a/styles/base/_typography.scss b/assets/styles/base/_typography.scss similarity index 100% rename from styles/base/_typography.scss rename to assets/styles/base/_typography.scss diff --git a/styles/components/_button.scss b/assets/styles/components/_button.scss similarity index 100% rename from styles/components/_button.scss rename to assets/styles/components/_button.scss diff --git a/styles/components/_card.scss b/assets/styles/components/_card.scss similarity index 100% rename from styles/components/_card.scss rename to assets/styles/components/_card.scss diff --git a/styles/components/_carousel-arrows.scss b/assets/styles/components/_carousel-arrows.scss similarity index 100% rename from styles/components/_carousel-arrows.scss rename to assets/styles/components/_carousel-arrows.scss diff --git a/styles/components/_carousel.scss b/assets/styles/components/_carousel.scss similarity index 100% rename from styles/components/_carousel.scss rename to assets/styles/components/_carousel.scss diff --git a/styles/components/_collection-card.scss b/assets/styles/components/_collection-card.scss similarity index 100% rename from styles/components/_collection-card.scss rename to assets/styles/components/_collection-card.scss diff --git a/styles/components/_collection.scss b/assets/styles/components/_collection.scss similarity index 100% rename from styles/components/_collection.scss rename to assets/styles/components/_collection.scss diff --git a/styles/components/_connect-wallet.scss b/assets/styles/components/_connect-wallet.scss similarity index 100% rename from styles/components/_connect-wallet.scss rename to assets/styles/components/_connect-wallet.scss diff --git a/styles/components/_content-markdown.scss b/assets/styles/components/_content-markdown.scss similarity index 72% rename from styles/components/_content-markdown.scss rename to assets/styles/components/_content-markdown.scss index c8fc70473c..620c609fbc 100644 --- a/styles/components/_content-markdown.scss +++ b/assets/styles/components/_content-markdown.scss @@ -1,5 +1,5 @@ @import '~/node_modules/highlight.js/styles/github-dark.css'; -@import '@/styles/abstracts/variables'; +@import '@/assets/styles/abstracts/variables'; .content-markdown { code { diff --git a/styles/components/_gallery-item.scss b/assets/styles/components/_gallery-item.scss similarity index 100% rename from styles/components/_gallery-item.scss rename to assets/styles/components/_gallery-item.scss diff --git a/styles/components/_keyboard-shortcut.scss b/assets/styles/components/_keyboard-shortcut.scss similarity index 100% rename from styles/components/_keyboard-shortcut.scss rename to assets/styles/components/_keyboard-shortcut.scss diff --git a/styles/components/_modal.scss b/assets/styles/components/_modal.scss similarity index 100% rename from styles/components/_modal.scss rename to assets/styles/components/_modal.scss diff --git a/styles/components/_price-chart.scss b/assets/styles/components/_price-chart.scss similarity index 100% rename from styles/components/_price-chart.scss rename to assets/styles/components/_price-chart.scss diff --git a/styles/components/_scroll-to-top-button.scss b/assets/styles/components/_scroll-to-top-button.scss similarity index 100% rename from styles/components/_scroll-to-top-button.scss rename to assets/styles/components/_scroll-to-top-button.scss diff --git a/styles/components/_search.scss b/assets/styles/components/_search.scss similarity index 99% rename from styles/components/_search.scss rename to assets/styles/components/_search.scss index 4d379e99cb..f208b18114 100644 --- a/styles/components/_search.scss +++ b/assets/styles/components/_search.scss @@ -90,6 +90,7 @@ .search-bar-container { position: relative; + width: 100%; .search-bar-collection-search { z-index: 2; diff --git a/styles/components/_tippy.scss b/assets/styles/components/_tippy.scss similarity index 100% rename from styles/components/_tippy.scss rename to assets/styles/components/_tippy.scss diff --git a/styles/components/_toast.scss b/assets/styles/components/_toast.scss similarity index 100% rename from styles/components/_toast.scss rename to assets/styles/components/_toast.scss diff --git a/styles/components/_top-collections.scss b/assets/styles/components/_top-collections.scss similarity index 100% rename from styles/components/_top-collections.scss rename to assets/styles/components/_top-collections.scss diff --git a/styles/global.scss b/assets/styles/global.scss similarity index 93% rename from styles/global.scss rename to assets/styles/global.scss index b44dbcfb50..9b5b310c5b 100644 --- a/styles/global.scss +++ b/assets/styles/global.scss @@ -19,7 +19,6 @@ main { // without this, footer image is above main contents // block hover, click events z-index: 100; - height: 100%; } main { @@ -229,6 +228,12 @@ hr { } } +.has-text-grey-fix { + @include ktheme() { + color: theme('k-grey-fix') !important; + } +} + .has-text-inverse { @include ktheme() { color: theme('text-color-inverse'); @@ -326,6 +331,18 @@ a.has-text-grey { } } +.border-k-grey { + @include ktheme() { + border-color: theme('k-grey') !important; + } +} + +.border-top-k-shade { + @include ktheme() { + border-top: 1px solid theme('k-shade'); + } +} + .has-text-k-shade { @include ktheme() { color: theme('k-shade'); @@ -362,6 +379,12 @@ a.has-text-grey { } } +.has-text-k-grey { + @include ktheme() { + color: theme('k-grey'); + } +} + .has-text-color { @include ktheme() { color: theme('text-color') !important; @@ -391,6 +414,13 @@ a.has-text-grey { } } +.k-shade { + @include ktheme() { + background-color: theme('k-shade'); + } +} + + .k-yellow { @include ktheme() { background-color: theme('k-yellow'); @@ -430,6 +460,10 @@ a.has-text-grey { } } + +.is-cursor-pointer { + cursor: pointer !important; +} //hover .is-hoverable-item { @@ -490,3 +524,8 @@ a.has-text-grey { .no-border-left { border-left: none !important; } + +.is-rounded { + border-radius: 50%; +} + diff --git a/styles/index.scss b/assets/styles/index.scss similarity index 96% rename from styles/index.scss rename to assets/styles/index.scss index 0c959beca9..1aaa2cffed 100644 --- a/styles/index.scss +++ b/assets/styles/index.scss @@ -6,7 +6,7 @@ @import "abstracts/theme"; // FRAMEWORK (note: don't move this on top) -@import "~bulma"; +@import "bulma/bulma.sass"; // GLOBAL @import "./global.scss"; diff --git a/styles/layouts/_footer.scss b/assets/styles/layouts/_footer.scss similarity index 100% rename from styles/layouts/_footer.scss rename to assets/styles/layouts/_footer.scss diff --git a/styles/layouts/_main-navigation.scss b/assets/styles/layouts/_main-navigation.scss similarity index 99% rename from styles/layouts/_main-navigation.scss rename to assets/styles/layouts/_main-navigation.scss index 327b6a587c..8c2d285a0f 100644 --- a/styles/layouts/_main-navigation.scss +++ b/assets/styles/layouts/_main-navigation.scss @@ -194,7 +194,6 @@ .navbar-start { flex: 1; - margin-top: 10px; @media screen and (max-width: 1024px) { display: none; } diff --git a/styles/pages/create.scss b/assets/styles/pages/create.scss similarity index 96% rename from styles/pages/create.scss rename to assets/styles/pages/create.scss index b41e84a566..7aa7074b52 100644 --- a/styles/pages/create.scss +++ b/assets/styles/pages/create.scss @@ -1,4 +1,4 @@ -@import '@/styles/abstracts/variables'; +@import '@/assets/styles/abstracts/variables'; :deep(.o-field__label) { margin-bottom: 4px; diff --git a/components/common/ColorModeButton.vue b/components/ColorModeButton.vue similarity index 100% rename from components/common/ColorModeButton.vue rename to components/ColorModeButton.vue diff --git a/components/CookieBanner.vue b/components/CookieBanner.vue index 55cea78e01..7fb56f0e83 100644 --- a/components/CookieBanner.vue +++ b/components/CookieBanner.vue @@ -1,6 +1,6 @@ diff --git a/components/shared/Error.vue b/components/Error.vue similarity index 99% rename from components/shared/Error.vue rename to components/Error.vue index 00210013ee..693ed9679c 100644 --- a/components/shared/Error.vue +++ b/components/Error.vue @@ -27,7 +27,7 @@ const props = withDefaults( hasImg: true, errorTitle: 'Indexer Error', errorSubtitle: 'Indexer is not working properly.', - } + }, ) const imgSrc = computed(() => `https://http.cat/${props.errorCode}`) diff --git a/components/shared/MessageNotify.vue b/components/MessageNotify.vue similarity index 79% rename from components/shared/MessageNotify.vue rename to components/MessageNotify.vue index 841501fdb3..588e897ba0 100644 --- a/components/shared/MessageNotify.vue +++ b/components/MessageNotify.vue @@ -1,8 +1,11 @@ diff --git a/components/collectionDetailsPopover/CollectionDetailsPopoverContent.vue b/components/collectionDetailsPopover/CollectionDetailsPopoverContent.vue index dfd954cf2c..85e02e2351 100644 --- a/components/collectionDetailsPopover/CollectionDetailsPopoverContent.vue +++ b/components/collectionDetailsPopover/CollectionDetailsPopoverContent.vue @@ -88,20 +88,20 @@ const props = defineProps<{ }>() const CommonTokenMoney = defineAsyncComponent( - () => import('@/components/shared/CommonTokenMoney.vue') + () => import('@/components/shared/CommonTokenMoney.vue'), ) const GalleryCard = defineAsyncComponent( - () => import('@/components/rmrk/Gallery/GalleryCard.vue') + () => import('@/components/rmrk/Gallery/GalleryCard.vue'), ) const { urlPrefix } = usePrefix() -let { stats } = useCollectionDetails({ +const { stats } = useCollectionDetails({ collectionId: props.nft?.collection?.id || props.nft?.collectionId, }) -let { highestBuyPrice } = useBuyEvents({ +const { highestBuyPrice } = useBuyEvents({ collectionId: props.nft?.collection?.id || props.nft?.collectionId, }) @@ -112,7 +112,7 @@ const { nftEntities: soldItems } = useCollectionSoldData({ diff --git a/components/common/NotificationBox/NotificationBoxModal.vue b/components/common/NotificationBox/NotificationBoxModal.vue index ee4f668e92..48f96ce100 100644 --- a/components/common/NotificationBox/NotificationBoxModal.vue +++ b/components/common/NotificationBox/NotificationBoxModal.vue @@ -14,7 +14,7 @@ v-if="!showFilter" no-shadow class="rounded" - @click.native="showFilter = !showFilter"> + @click="showFilter = !showFilter"> {{ $t('notification.add') }} @@ -22,7 +22,7 @@ v-else no-shadow class="rounded" - @click.native="showFilter = !showFilter"> + @click="showFilter = !showFilter"> {{ $t('notification.done') }} @@ -96,7 +96,7 @@ v-for="(event, index) in displayedEvents" :key="`${event.id}-${index}`" :event="event" - @click.native="closeModal(ModalCloseType.NAVIGATION)" /> + @click="closeModal(ModalCloseType.NAVIGATION)" /> @@ -164,7 +164,7 @@ const toggleEventFilter = (target) => { } const isFilterEmpty = computed( - () => !collectionFilter.value && eventFilter.value.length === 0 + () => !collectionFilter.value && eventFilter.value.length === 0, ) const displayedEvents = computed(() => @@ -173,13 +173,13 @@ const displayedEvents = computed(() => (!collectionFilter.value || collectionFilter.value.id === item.nft.collection?.id) && (eventFilter.value.length === 0 || - eventFilter.value.some((x) => x === item.interaction)) - ) + eventFilter.value.some((x) => x === item.interaction)), + ), ) diff --git a/components/common/itemTransfer/ItemTransferModal.vue b/components/common/itemTransfer/ItemTransferModal.vue index 7e3e29517a..d7f04db793 100644 --- a/components/common/itemTransfer/ItemTransferModal.vue +++ b/components/common/itemTransfer/ItemTransferModal.vue @@ -1,7 +1,7 @@ + diff --git a/components/create/Confirm/MintConfirmModal.vue b/components/create/Confirm/MintConfirmModal.vue new file mode 100644 index 0000000000..7c202aed00 --- /dev/null +++ b/components/create/Confirm/MintConfirmModal.vue @@ -0,0 +1,273 @@ + + + + + diff --git a/components/create/Confirm/PriceItem.vue b/components/create/Confirm/PriceItem.vue new file mode 100644 index 0000000000..74ff573030 --- /dev/null +++ b/components/create/Confirm/PriceItem.vue @@ -0,0 +1,175 @@ + + + diff --git a/components/create/CreateCollection.vue b/components/create/CreateCollection.vue index d0ceb6c957..596713818b 100644 --- a/components/create/CreateCollection.vue +++ b/components/create/CreateCollection.vue @@ -1,10 +1,14 @@ @@ -186,6 +181,7 @@ import { availablePrefixes } from '@/utils/chain' import { Interaction } from '@kodadot1/minimark/v1' import { notificationTypes, showNotification } from '@/utils/notification' import { makeSymbol } from '@kodadot1/minimark/shared' +import MintConfirmModal from '@/components/create/Confirm/MintConfirmModal.vue' // props withDefaults( @@ -194,13 +190,14 @@ withDefaults( }>(), { classColumn: true, - } + }, ) // composables const { transaction, status, isLoading } = useTransaction() const { urlPrefix, setUrlPrefix } = usePrefix() -const { $consola } = useNuxtApp() +const { $consola, $i18n } = useNuxtApp() +const { isLogIn } = useAuth() // form state const logo = ref(null) @@ -209,13 +206,17 @@ const description = ref('') const unlimited = ref(true) const max = ref(1) const symbol = ref('') -const { isLogIn } = useAuth() +const modalShowStatus = ref(false) + const menus = availablePrefixes() -const { $i18n } = useNuxtApp() const chainByPrefix = menus.find((menu) => menu.value === urlPrefix.value) const selectBlockchain = ref(chainByPrefix?.value || menus[0].value) +watch(urlPrefix, (value) => { + selectBlockchain.value = value +}) + const submitButtonLabel = computed(() => { return !isLogIn.value ? $i18n.t('mint.nft.connect') @@ -229,7 +230,7 @@ const currentChain = computed(() => { }) const { isAssetHub, isBasilisk, isRemark } = useIsChain(currentChain) -const { balance, totalCollectionDeposit, chainSymbol } = +const { balance, totalCollectionDeposit, chainSymbol, chain } = useDeposit(currentChain) // balance state @@ -240,7 +241,22 @@ const canDeposit = computed(() => { ) }) -watchEffect(() => setUrlPrefix(currentChain.value as Prefix)) +const collectionInformation = computed(() => ({ + file: logo.value, + name: name.value, + paidToken: chain.value, + mintType: CreateComponent.Collection, +})) + +watch(currentChain, () => { + if (currentChain.value !== urlPrefix.value) { + setUrlPrefix(currentChain.value as Prefix) + } +}) + +const showConfirm = () => { + modalShowStatus.value = true +} const createCollection = async () => { let collection: BaseCollectionType = { @@ -269,9 +285,10 @@ const createCollection = async () => { try { showNotification( `Creating Collection: "${name.value}"`, - notificationTypes.info + notificationTypes.info, ) isLoading.value = true + modalShowStatus.value = false await transaction( { @@ -282,7 +299,7 @@ const createCollection = async () => { | CollectionToMintKusama | CollectionToMintStatmine, }, - currentChain.value + currentChain.value, ) } catch (error) { showNotification(`[ERR] ${error}`, notificationTypes.warn) @@ -295,4 +312,4 @@ onMounted(() => { }) - + diff --git a/components/create/CreateLanding.vue b/components/create/CreateLanding.vue index 3c5b9af605..bf25e968b3 100644 --- a/components/create/CreateLanding.vue +++ b/components/create/CreateLanding.vue @@ -77,7 +77,7 @@ const gotoPathAfterLogin = (path: RawLocation) => { + diff --git a/components/create/CreateNftPreview.vue b/components/create/CreateNftPreview.vue index 420dd81f83..592a400222 100644 --- a/components/create/CreateNftPreview.vue +++ b/components/create/CreateNftPreview.vue @@ -36,7 +36,7 @@ defineProps<{ diff --git a/components/media/type/IFrameMedia.vue b/components/media/type/IFrameMedia.vue deleted file mode 100644 index b3bc31a589..0000000000 --- a/components/media/type/IFrameMedia.vue +++ /dev/null @@ -1,24 +0,0 @@ -