cloudcommerce 0.24.0 → 0.24.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/ecomplus-stores/barra-doce/functions/many/package.json +3 -3
- package/ecomplus-stores/barra-doce/functions/ssr/package.json +6 -6
- package/ecomplus-stores/barra-doce/functions/ssr/src/components/ShopHeader.vue +31 -5
- package/ecomplus-stores/barra-doce/functions/with-apps/package.json +3 -3
- package/ecomplus-stores/barra-doce/package.json +2 -2
- package/ecomplus-stores/iluminim/.ecomplus.cd.json +3 -3
- package/ecomplus-stores/iluminim/functions/many/package.json +3 -3
- package/ecomplus-stores/iluminim/functions/ssr/package.json +6 -6
- package/ecomplus-stores/iluminim/functions/ssr/src/components/ShopHeader.vue +31 -5
- package/ecomplus-stores/iluminim/functions/with-apps/package.json +3 -3
- package/ecomplus-stores/iluminim/package.json +2 -2
- package/package.json +2 -2
- package/packages/api/package.json +1 -1
- package/packages/apps/affilate-program/package.json +1 -1
- package/packages/apps/correios/package.json +1 -1
- package/packages/apps/custom-payment/package.json +1 -1
- package/packages/apps/custom-shipping/package.json +1 -1
- package/packages/apps/datafrete/package.json +1 -1
- package/packages/apps/discounts/package.json +1 -1
- package/packages/apps/emails/package.json +1 -1
- package/packages/apps/fb-conversions/package.json +1 -1
- package/packages/apps/flash-courier/package.json +1 -1
- package/packages/apps/frenet/package.json +1 -1
- package/packages/apps/galaxpay/package.json +1 -1
- package/packages/apps/google-analytics/package.json +1 -1
- package/packages/apps/jadlog/package.json +1 -1
- package/packages/apps/loyalty-points/package.json +1 -1
- package/packages/apps/melhor-envio/package.json +1 -1
- package/packages/apps/mercadopago/package.json +1 -1
- package/packages/apps/pagarme/package.json +1 -1
- package/packages/apps/paghiper/package.json +1 -1
- package/packages/apps/pix/package.json +1 -1
- package/packages/apps/tiny-erp/package.json +1 -1
- package/packages/apps/webhooks/package.json +1 -1
- package/packages/cli/package.json +1 -1
- package/packages/config/package.json +1 -1
- package/packages/emails/package.json +1 -1
- package/packages/eslint/package.json +1 -1
- package/packages/eslint/storefront.eslintrc.cjs +1 -0
- package/packages/events/package.json +1 -1
- package/packages/feeds/package.json +1 -1
- package/packages/firebase/package.json +1 -1
- package/packages/i18n/package.json +1 -1
- package/packages/modules/package.json +1 -1
- package/packages/passport/package.json +1 -1
- package/packages/ssr/package.json +1 -1
- package/packages/storefront/config/storefront.unocss.cjs +1 -1
- package/packages/storefront/package.json +1 -1
- package/packages/storefront/src/lib/components/globals/Skeleton.vue +29 -0
- package/packages/storefront/src/lib/pages/_vue.ts +2 -0
- package/packages/storefront/src/vue-globals.d.ts +1 -0
- package/packages/types/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
### [0.24.1](https://github.com/ecomplus/cloud-commerce/compare/v0.24.0...v0.24.1) (2023-08-19)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* **storefront:** Add new global <Skeleton> component ([83c42b1](https://github.com/ecomplus/cloud-commerce/commit/83c42b113200c28dd56b77f80df393f911194957))
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
* **storefront:** Fix regression with icons aliases selectors on UnoCSS config ([37f7c8e](https://github.com/ecomplus/cloud-commerce/commit/37f7c8efaa63273cf3c0eb575d174cb9e2358fdc))
|
|
16
|
+
|
|
5
17
|
## [0.24.0](https://github.com/ecomplus/cloud-commerce/compare/v0.23.3...v0.24.0) (2023-08-18)
|
|
6
18
|
|
|
7
19
|
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
},
|
|
16
16
|
"main": "index.js",
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@cloudcommerce/feeds": "^0.
|
|
19
|
-
"@cloudcommerce/firebase": "^0.
|
|
20
|
-
"@cloudcommerce/passport": "^0.
|
|
18
|
+
"@cloudcommerce/feeds": "^0.24.0",
|
|
19
|
+
"@cloudcommerce/firebase": "^0.24.0",
|
|
20
|
+
"@cloudcommerce/passport": "^0.24.0"
|
|
21
21
|
}
|
|
22
22
|
}
|
|
@@ -17,14 +17,14 @@
|
|
|
17
17
|
},
|
|
18
18
|
"main": "index.js",
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@cloudcommerce/api": "^0.
|
|
21
|
-
"@cloudcommerce/firebase": "^0.
|
|
22
|
-
"@cloudcommerce/ssr": "^0.
|
|
20
|
+
"@cloudcommerce/api": "^0.24.0",
|
|
21
|
+
"@cloudcommerce/firebase": "^0.24.0",
|
|
22
|
+
"@cloudcommerce/ssr": "^0.24.0"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
|
-
"@cloudcommerce/i18n": "^0.
|
|
26
|
-
"@cloudcommerce/storefront": "^0.
|
|
27
|
-
"@cloudcommerce/types": "^0.
|
|
25
|
+
"@cloudcommerce/i18n": "^0.24.0",
|
|
26
|
+
"@cloudcommerce/storefront": "^0.24.0",
|
|
27
|
+
"@cloudcommerce/types": "^0.24.0",
|
|
28
28
|
"@fontsource/croissant-one": "^5.0.5",
|
|
29
29
|
"@iconify-json/mingcute": "^1.1.7"
|
|
30
30
|
}
|
|
@@ -114,7 +114,14 @@
|
|
|
114
114
|
:has-close-button="false"
|
|
115
115
|
placement="top"
|
|
116
116
|
>
|
|
117
|
-
<
|
|
117
|
+
<Suspense>
|
|
118
|
+
<SearchModal v-if="isSearchOpenOnce" />
|
|
119
|
+
<template #fallback>
|
|
120
|
+
<div class="container mx-auto">
|
|
121
|
+
<Skeleton class="p-6" is-large />
|
|
122
|
+
</div>
|
|
123
|
+
</template>
|
|
124
|
+
</Suspense>
|
|
118
125
|
</Drawer>
|
|
119
126
|
<Teleport v-if="isMounted" to="#teleported-overlap">
|
|
120
127
|
<Drawer
|
|
@@ -122,14 +129,25 @@
|
|
|
122
129
|
placement="end"
|
|
123
130
|
backdrop-target="#teleported-overlap"
|
|
124
131
|
>
|
|
125
|
-
<
|
|
132
|
+
<Suspense>
|
|
133
|
+
<CartSidebar v-if="isCartOpenOnce" @close="isCartOpen = false" />
|
|
134
|
+
<template #fallback>
|
|
135
|
+
<Skeleton class="pt-16 px-6" is-bold />
|
|
136
|
+
</template>
|
|
137
|
+
</Suspense>
|
|
126
138
|
</Drawer>
|
|
127
139
|
</Teleport>
|
|
128
140
|
</header>
|
|
129
141
|
</template>
|
|
130
142
|
|
|
131
143
|
<script setup lang="ts">
|
|
132
|
-
import {
|
|
144
|
+
import {
|
|
145
|
+
ref,
|
|
146
|
+
watch,
|
|
147
|
+
onMounted,
|
|
148
|
+
defineAsyncComponent,
|
|
149
|
+
} from 'vue';
|
|
150
|
+
import { watchOnce } from '@vueuse/core';
|
|
133
151
|
import { totalItems } from '@@sf/state/shopping-cart';
|
|
134
152
|
import {
|
|
135
153
|
type Props as UseShopHeaderProps,
|
|
@@ -138,12 +156,12 @@ import {
|
|
|
138
156
|
import Drawer from '@@sf/components/Drawer.vue';
|
|
139
157
|
import ShopSidenav from '~/components/ShopSidenav.vue';
|
|
140
158
|
import ShopHeaderMenu from '~/components/ShopHeaderMenu.vue';
|
|
141
|
-
import SearchModal from '~/components/SearchModal.vue';
|
|
142
159
|
import AccountMenu from '~/components/AccountMenu.vue';
|
|
143
|
-
import CartSidebar from '~/components/CartSidebar.vue';
|
|
144
160
|
|
|
145
161
|
export interface Props extends Omit<UseShopHeaderProps, 'header'> {}
|
|
146
162
|
|
|
163
|
+
const SearchModal = defineAsyncComponent(() => import('~/components/SearchModal.vue'));
|
|
164
|
+
const CartSidebar = defineAsyncComponent(() => import('~/components/CartSidebar.vue'));
|
|
147
165
|
const props = defineProps<Props>();
|
|
148
166
|
const header = ref<HTMLElement | null>(null);
|
|
149
167
|
const {
|
|
@@ -154,7 +172,15 @@ const {
|
|
|
154
172
|
} = useShopHeader({ ...props, header });
|
|
155
173
|
const isSidenavOpen = ref(false);
|
|
156
174
|
const isSearchOpen = ref(false);
|
|
175
|
+
const isSearchOpenOnce = ref(false);
|
|
176
|
+
watchOnce(isSearchOpen, () => {
|
|
177
|
+
isSearchOpenOnce.value = true;
|
|
178
|
+
});
|
|
157
179
|
const isCartOpen = ref(false);
|
|
180
|
+
const isCartOpenOnce = ref(false);
|
|
181
|
+
watchOnce(isCartOpen, () => {
|
|
182
|
+
isCartOpenOnce.value = true;
|
|
183
|
+
});
|
|
158
184
|
const isMounted = ref(false);
|
|
159
185
|
const delayedTotalItems = ref(0);
|
|
160
186
|
const searchTerm = ref('');
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
},
|
|
16
16
|
"main": "index.js",
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@cloudcommerce/events": "^0.
|
|
19
|
-
"@cloudcommerce/firebase": "^0.
|
|
20
|
-
"@cloudcommerce/modules": "^0.
|
|
18
|
+
"@cloudcommerce/events": "^0.24.0",
|
|
19
|
+
"@cloudcommerce/firebase": "^0.24.0",
|
|
20
|
+
"@cloudcommerce/modules": "^0.24.0"
|
|
21
21
|
}
|
|
22
22
|
}
|
|
@@ -23,9 +23,9 @@
|
|
|
23
23
|
"url": "https://github.com/ecomplus/cloud-commerce/issues"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@cloudcommerce/cli": "^0.
|
|
26
|
+
"@cloudcommerce/cli": "^0.24.0"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
|
-
"@cloudcommerce/eslint": "^0.
|
|
29
|
+
"@cloudcommerce/eslint": "^0.24.0"
|
|
30
30
|
}
|
|
31
31
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"trigger": "
|
|
3
|
-
"resource": "
|
|
4
|
-
"slug": "
|
|
2
|
+
"trigger": "64dd2f382cd6b659591a3cfc",
|
|
3
|
+
"resource": "products",
|
|
4
|
+
"slug": "refletor-holofote-microled-slim-100w-branco-frio,refletor-holofote-microled-slim-200w-branco-frio"
|
|
5
5
|
}
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
},
|
|
16
16
|
"main": "index.js",
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@cloudcommerce/feeds": "^0.
|
|
19
|
-
"@cloudcommerce/firebase": "^0.
|
|
20
|
-
"@cloudcommerce/passport": "^0.
|
|
18
|
+
"@cloudcommerce/feeds": "^0.24.0",
|
|
19
|
+
"@cloudcommerce/firebase": "^0.24.0",
|
|
20
|
+
"@cloudcommerce/passport": "^0.24.0"
|
|
21
21
|
}
|
|
22
22
|
}
|
|
@@ -17,14 +17,14 @@
|
|
|
17
17
|
},
|
|
18
18
|
"main": "index.js",
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@cloudcommerce/api": "^0.
|
|
21
|
-
"@cloudcommerce/firebase": "^0.
|
|
22
|
-
"@cloudcommerce/ssr": "^0.
|
|
20
|
+
"@cloudcommerce/api": "^0.24.0",
|
|
21
|
+
"@cloudcommerce/firebase": "^0.24.0",
|
|
22
|
+
"@cloudcommerce/ssr": "^0.24.0"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
|
-
"@cloudcommerce/i18n": "^0.
|
|
26
|
-
"@cloudcommerce/storefront": "^0.
|
|
27
|
-
"@cloudcommerce/types": "^0.
|
|
25
|
+
"@cloudcommerce/i18n": "^0.24.0",
|
|
26
|
+
"@cloudcommerce/storefront": "^0.24.0",
|
|
27
|
+
"@cloudcommerce/types": "^0.24.0",
|
|
28
28
|
"@fontsource-variable/heebo": "^5.0.5",
|
|
29
29
|
"@iconify-json/carbon": "^1.1.18"
|
|
30
30
|
}
|
|
@@ -73,7 +73,14 @@
|
|
|
73
73
|
:has-close-button="false"
|
|
74
74
|
placement="top"
|
|
75
75
|
>
|
|
76
|
-
<
|
|
76
|
+
<Suspense>
|
|
77
|
+
<SearchModal v-if="isSearchOpenOnce" />
|
|
78
|
+
<template #fallback>
|
|
79
|
+
<div class="container mx-auto">
|
|
80
|
+
<Skeleton class="p-6" is-large />
|
|
81
|
+
</div>
|
|
82
|
+
</template>
|
|
83
|
+
</Suspense>
|
|
77
84
|
</Drawer>
|
|
78
85
|
<Teleport v-if="isMounted" to="#teleported-overlap">
|
|
79
86
|
<Drawer
|
|
@@ -81,14 +88,25 @@
|
|
|
81
88
|
placement="end"
|
|
82
89
|
backdrop-target="#teleported-overlap"
|
|
83
90
|
>
|
|
84
|
-
<
|
|
91
|
+
<Suspense>
|
|
92
|
+
<CartSidebar v-if="isCartOpenOnce" @close="isCartOpen = false" />
|
|
93
|
+
<template #fallback>
|
|
94
|
+
<Skeleton class="pt-16 px-6" is-bold />
|
|
95
|
+
</template>
|
|
96
|
+
</Suspense>
|
|
85
97
|
</Drawer>
|
|
86
98
|
</Teleport>
|
|
87
99
|
</header>
|
|
88
100
|
</template>
|
|
89
101
|
|
|
90
102
|
<script setup lang="ts">
|
|
91
|
-
import {
|
|
103
|
+
import {
|
|
104
|
+
ref,
|
|
105
|
+
watch,
|
|
106
|
+
onMounted,
|
|
107
|
+
defineAsyncComponent,
|
|
108
|
+
} from 'vue';
|
|
109
|
+
import { watchOnce } from '@vueuse/core';
|
|
92
110
|
import { totalItems } from '@@sf/state/shopping-cart';
|
|
93
111
|
import {
|
|
94
112
|
type Props as UseShopHeaderProps,
|
|
@@ -97,12 +115,12 @@ import {
|
|
|
97
115
|
import Drawer from '@@sf/components/Drawer.vue';
|
|
98
116
|
import ShopSidenav from '~/components/ShopSidenav.vue';
|
|
99
117
|
import ShopHeaderMenu from '~/components/ShopHeaderMenu.vue';
|
|
100
|
-
import SearchModal from '~/components/SearchModal.vue';
|
|
101
118
|
import AccountMenu from '~/components/AccountMenu.vue';
|
|
102
|
-
import CartSidebar from '~/components/CartSidebar.vue';
|
|
103
119
|
|
|
104
120
|
export interface Props extends Omit<UseShopHeaderProps, 'header'> {}
|
|
105
121
|
|
|
122
|
+
const SearchModal = defineAsyncComponent(() => import('~/components/SearchModal.vue'));
|
|
123
|
+
const CartSidebar = defineAsyncComponent(() => import('~/components/CartSidebar.vue'));
|
|
106
124
|
const props = defineProps<Props>();
|
|
107
125
|
const header = ref<HTMLElement | null>(null);
|
|
108
126
|
const {
|
|
@@ -113,7 +131,15 @@ const {
|
|
|
113
131
|
} = useShopHeader({ ...props, header });
|
|
114
132
|
const isSidenavOpen = ref(false);
|
|
115
133
|
const isSearchOpen = ref(false);
|
|
134
|
+
const isSearchOpenOnce = ref(false);
|
|
135
|
+
watchOnce(isSearchOpen, () => {
|
|
136
|
+
isSearchOpenOnce.value = true;
|
|
137
|
+
});
|
|
116
138
|
const isCartOpen = ref(false);
|
|
139
|
+
const isCartOpenOnce = ref(false);
|
|
140
|
+
watchOnce(isCartOpen, () => {
|
|
141
|
+
isCartOpenOnce.value = true;
|
|
142
|
+
});
|
|
117
143
|
const isMounted = ref(false);
|
|
118
144
|
const delayedTotalItems = ref(0);
|
|
119
145
|
onMounted(() => {
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
},
|
|
16
16
|
"main": "index.js",
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@cloudcommerce/events": "^0.
|
|
19
|
-
"@cloudcommerce/firebase": "^0.
|
|
20
|
-
"@cloudcommerce/modules": "^0.
|
|
18
|
+
"@cloudcommerce/events": "^0.24.0",
|
|
19
|
+
"@cloudcommerce/firebase": "^0.24.0",
|
|
20
|
+
"@cloudcommerce/modules": "^0.24.0"
|
|
21
21
|
}
|
|
22
22
|
}
|
|
@@ -23,9 +23,9 @@
|
|
|
23
23
|
"url": "https://github.com/ecomplus/cloud-commerce/issues"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@cloudcommerce/cli": "^0.
|
|
26
|
+
"@cloudcommerce/cli": "^0.24.0"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
|
-
"@cloudcommerce/eslint": "^0.
|
|
29
|
+
"@cloudcommerce/eslint": "^0.24.0"
|
|
30
30
|
}
|
|
31
31
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cloudcommerce",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.24.
|
|
4
|
+
"version": "0.24.1",
|
|
5
5
|
"description": "Open fair-code headless commerce platform: API-first, microservices based, event driven and cloud native",
|
|
6
6
|
"main": "packages/api/lib/index.js",
|
|
7
7
|
"author": "E-Com Club Softwares para E-commerce <ti@e-com.club>",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"vite": "^4.4.9",
|
|
31
31
|
"vitest": "^0.34.1",
|
|
32
32
|
"zx": "^7.2.3",
|
|
33
|
-
"@cloudcommerce/eslint": "0.24.
|
|
33
|
+
"@cloudcommerce/eslint": "0.24.1"
|
|
34
34
|
},
|
|
35
35
|
"scripts": {
|
|
36
36
|
"fix-install": "bash scripts/pre-install.sh && pnpm i",
|
|
@@ -69,7 +69,7 @@ const genUnoCSSConfig = (_tailwindConfig) => {
|
|
|
69
69
|
'--collection': iconset,
|
|
70
70
|
'--icon': icon,
|
|
71
71
|
} = utilities[s];
|
|
72
|
-
shortcuts.push({ [
|
|
72
|
+
shortcuts.push({ [s.replace('.', '')]: `i-${iconset}:${icon}` });
|
|
73
73
|
} else if (!s.startsWith('.ui-') && !s.includes('prose')) {
|
|
74
74
|
rules.push([s.replace('.', ''), utilities[s]]);
|
|
75
75
|
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { computed } from 'vue';
|
|
3
|
+
|
|
4
|
+
export interface Props {
|
|
5
|
+
isBold?: boolean;
|
|
6
|
+
isLarge?: boolean;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
const props = defineProps<Props>();
|
|
10
|
+
const rowClassName = 'bg-gray-200 rounded-md dark:bg-gray-700';
|
|
11
|
+
const firstRowClassName = computed(() => {
|
|
12
|
+
return `${rowClassName} ${(props.isBold ? 'h-8 mb-6' : 'h-2.5 mb-4')}`;
|
|
13
|
+
});
|
|
14
|
+
const nextRowsClassName = computed(() => {
|
|
15
|
+
return `${rowClassName} ${(props.isBold ? 'h-5 mb-4' : 'h-2 mb-2.5')}`;
|
|
16
|
+
});
|
|
17
|
+
</script>
|
|
18
|
+
|
|
19
|
+
<template>
|
|
20
|
+
<div role="status" class="animate-pulse" :class="isLarge ? 'max-w-4xl' : 'max-w-sm'">
|
|
21
|
+
<div :class="[firstRowClassName, isLarge ? 'w-96' : 'w-48']"></div>
|
|
22
|
+
<div :class="[nextRowsClassName, isLarge ? 'max-w-[680px]' : 'max-w-[340px]']"></div>
|
|
23
|
+
<div :class="nextRowsClassName"></div>
|
|
24
|
+
<div :class="[nextRowsClassName, isLarge ? 'max-w-[660px]' : 'max-w-[330px]']"></div>
|
|
25
|
+
<div :class="[nextRowsClassName, isLarge ? 'max-w-[600px]' : 'max-w-[300px]']"></div>
|
|
26
|
+
<div :class="[nextRowsClassName, isLarge ? 'max-w-[720px]' : 'max-w-[360px]']"></div>
|
|
27
|
+
<span class="sr-only">Loading...</span>
|
|
28
|
+
</div>
|
|
29
|
+
</template>
|
|
@@ -3,6 +3,7 @@ import { i18n, formatMoney } from '@ecomplus/utils';
|
|
|
3
3
|
import Fade from '@@sf/components/globals/Fade.vue';
|
|
4
4
|
import ALink from '@@sf/components/globals/ALink.vue';
|
|
5
5
|
import AImg from '@@sf/components/globals/AImg.vue';
|
|
6
|
+
import Skeleton from '@@sf/components/globals/Skeleton.vue';
|
|
6
7
|
|
|
7
8
|
const formatPercentage = (value: number, digits = 1) => {
|
|
8
9
|
return Number.isInteger(value) ? `${value}%` : `${value.toFixed(digits)}%`;
|
|
@@ -26,6 +27,7 @@ const createApp = (app: App) => {
|
|
|
26
27
|
app.component('Fade', Fade);
|
|
27
28
|
app.component('ALink', ALink);
|
|
28
29
|
app.component('AImg', AImg);
|
|
30
|
+
app.component('Skeleton', Skeleton);
|
|
29
31
|
};
|
|
30
32
|
|
|
31
33
|
export default createApp;
|
|
@@ -26,6 +26,7 @@ declare module '@vue/runtime-core' {
|
|
|
26
26
|
Fade: typeof import('@@sf/components/globals/Fade.vue')['default'];
|
|
27
27
|
ALink: typeof import('@@sf/components/globals/ALink.vue')['default'];
|
|
28
28
|
AImg: typeof import('@@sf/components/globals/AImg.vue')['default'];
|
|
29
|
+
Skeleton: typeof import('@@sf/components/globals/Skeleton.vue')['default'];
|
|
29
30
|
}
|
|
30
31
|
}
|
|
31
32
|
|