@opengis/cms 0.0.21 → 0.0.22
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/package.json +2 -2
- package/src/App.css +52 -0
- package/src/App.vue +62 -0
- package/src/assets/image.png +0 -0
- package/src/assets/main.css +3 -0
- package/src/assets/tailwind-3.4.17.js +113 -0
- package/src/components/LanguageSwitcher.vue +73 -0
- package/src/components/SettingsCard.vue +40 -0
- package/src/components/builder/CreateForm.vue +128 -0
- package/src/components/builder/formTypeSchema.js +145 -0
- package/src/components/builder/tabs/index.ts +9 -0
- package/src/components/builder/tabs/vs-builder-edit.vue +133 -0
- package/src/components/builder/tabs/vs-builder-monaco.vue +29 -0
- package/src/components/builder/tabs/vs-builder-preview.vue +39 -0
- package/src/components/builder/vs-builder-datatable-controls.vue +138 -0
- package/src/components/builder/vs-builder-datatable-form.vue +80 -0
- package/src/components/builder/vs-builder-datatable.vue +191 -0
- package/src/components/builder/vs-builder-list-item.vue +110 -0
- package/src/components/collections/CollectionsBreadcrumb.vue +52 -0
- package/src/components/collections/CollectionsGrid.vue +176 -0
- package/src/components/collections/ContentBlock.vue +75 -0
- package/src/components/collections/formWrapper.vue +156 -0
- package/src/components/dashboard/ContentItem.vue +82 -0
- package/src/components/dashboard/DashboardHeader.vue +33 -0
- package/src/components/dashboard/QuickActions.vue +84 -0
- package/src/components/dashboard/RecentContent.vue +54 -0
- package/src/components/dashboard/StatCard.vue +63 -0
- package/src/components/dashboard/StatsGrid.vue +28 -0
- package/src/components/form-components/MonacoEditor.vue +104 -0
- package/src/components/form-components/VsFormMeta.vue +40 -0
- package/src/components/form-components/VsFormTags.vue +150 -0
- package/src/components/form-components/custom-datatable/vs-form-custom-datatable-add.vue +84 -0
- package/src/components/form-components/custom-datatable/vs-form-custom-datatable-controls.vue +106 -0
- package/src/components/form-components/index.js +23 -0
- package/src/components/form-components/reference/vs-form-reference-add.vue +92 -0
- package/src/components/form-components/reference/vs-form-reference-controls.vue +101 -0
- package/src/components/form-components/reference-list/referenceOptionList.js +78 -0
- package/src/components/form-components/reference-list/vs-form-reference-add.vue +145 -0
- package/src/components/form-components/reference-list/vs-form-reference-choce.vue +39 -0
- package/src/components/form-components/reference-list/vs-form-reference-controls.vue +110 -0
- package/src/components/form-components/reference-skeleton/about-skeleton.vue +37 -0
- package/src/components/form-components/reference-skeleton/banner-skeleton.vue +29 -0
- package/src/components/form-components/reference-skeleton/body-skeleton.vue +56 -0
- package/src/components/form-components/reference-skeleton/cards-skeleton.vue +47 -0
- package/src/components/form-components/reference-skeleton/documents-skeleton.vue +64 -0
- package/src/components/form-components/reference-skeleton/faq-skeleton.vue +64 -0
- package/src/components/form-components/reference-skeleton/form-skeleton.vue +41 -0
- package/src/components/form-components/reference-skeleton/index.js +36 -0
- package/src/components/form-components/reference-skeleton/infoLine-skeleton.vue +37 -0
- package/src/components/form-components/reference-skeleton/news-skeleton.vue +54 -0
- package/src/components/form-components/reference-skeleton/slider-skeleton.vue +41 -0
- package/src/components/form-components/reference-skeleton/tabs-skeleton.vue +40 -0
- package/src/components/form-components/reference-skeleton/team-skeleton.vue +103 -0
- package/src/components/form-components/reference-skeleton/usefulLinks-skeleton.vue +52 -0
- package/src/components/form-components/reference-skeleton/video-skeleton.vue +36 -0
- package/src/components/form-components/testReferenceTypes.js +773 -0
- package/src/components/form-components/vs-form-color-picker.vue +29 -0
- package/src/components/form-components/vs-form-custom-datatable.vue +214 -0
- package/src/components/form-components/vs-form-integer.vue +86 -0
- package/src/components/form-components/vs-form-key-value.vue +201 -0
- package/src/components/form-components/vs-form-marcdown-md.vue +3 -0
- package/src/components/form-components/vs-form-media-select.vue +780 -0
- package/src/components/form-components/vs-form-reference-list.vue +97 -0
- package/src/components/form-components/vs-form-reference.vue +59 -0
- package/src/components/form-components/vs-form-relation.vue +30 -0
- package/src/components/form-components/vs-form-reletion-link.vue +34 -0
- package/src/components/form-components/vs-form-select-collection.vue +0 -0
- package/src/components/form-components/vs-form-slug.vue +72 -0
- package/src/components/form-components/vs-form-tiptap.vue +7 -0
- package/src/components/form-components/vs-richtext-md.vue +3 -0
- package/src/components/icons/BellIcon.vue +17 -0
- package/src/components/icons/GlobeIcon.vue +18 -0
- package/src/components/icons/KeyIcon.vue +20 -0
- package/src/components/icons/PaletteIcon.vue +22 -0
- package/src/components/icons/SettingsIcon.vue +19 -0
- package/src/components/icons/ShieldIcon.vue +18 -0
- package/src/components/icons/UsersIcon.vue +19 -0
- package/src/components/icons/icon-chevron-right.vue +16 -0
- package/src/components/icons/icon-drag.vue +20 -0
- package/src/components/icons/icon-file-text.vue +21 -0
- package/src/components/icons/icon-folder.vue +18 -0
- package/src/components/icons/icon-grid.vue +17 -0
- package/src/components/icons/icon-group.vue +19 -0
- package/src/components/icons/icon-home.vue +16 -0
- package/src/components/icons/icon-image.vue +18 -0
- package/src/components/icons/icon-list.vue +20 -0
- package/src/components/icons/icon-more.vue +17 -0
- package/src/components/icons/icon-plus.vue +17 -0
- package/src/components/icons-types/icon-array.vue +22 -0
- package/src/components/icons-types/icon-boolean.vue +18 -0
- package/src/components/icons-types/icon-datalist.vue +22 -0
- package/src/components/icons-types/icon-date.vue +20 -0
- package/src/components/icons-types/icon-datetime.vue +20 -0
- package/src/components/icons-types/icon-file.vue +21 -0
- package/src/components/icons-types/icon-gallery.vue +18 -0
- package/src/components/icons-types/icon-image.vue +19 -0
- package/src/components/icons-types/icon-integer.vue +20 -0
- package/src/components/icons-types/icon-merkdown.vue +18 -0
- package/src/components/icons-types/icon-multiselect.vue +22 -0
- package/src/components/icons-types/icon-number.vue +20 -0
- package/src/components/icons-types/icon-radio.vue +22 -0
- package/src/components/icons-types/icon-reference-list.vue +22 -0
- package/src/components/icons-types/icon-reference.vue +20 -0
- package/src/components/icons-types/icon-relation.vue +22 -0
- package/src/components/icons-types/icon-richtext.vue +18 -0
- package/src/components/icons-types/icon-select.vue +22 -0
- package/src/components/icons-types/icon-slug.vue +19 -0
- package/src/components/icons-types/icon-text.vue +19 -0
- package/src/components/icons-types/index.js +43 -0
- package/src/components/layout/Layout.vue +67 -0
- package/src/components/layout/Sidebar.vue +128 -0
- package/src/components/media/FileUploadProgress.vue +29 -0
- package/src/components/media/MediaBreadcrumb.vue +42 -0
- package/src/components/media/MediaCreateFolder.vue +59 -0
- package/src/components/media/MediaFileInfo.vue +148 -0
- package/src/components/media/MediaGrid.vue +148 -0
- package/src/components/media/MediaList.vue +148 -0
- package/src/components/media/MediaViewControls.vue +38 -0
- package/src/components/media/TypeTag.vue +23 -0
- package/src/components/menu/AddNewItemInTree.vue +75 -0
- package/src/components/menu/MenuBody.vue +149 -0
- package/src/components/menu/MenuItem.vue +73 -0
- package/src/components/menu/MenuList.vue +101 -0
- package/src/components/referencec/index.ts +7 -0
- package/src/components/referencec/vs-reference-faq.vue +61 -0
- package/src/components/referencec/vs-reference-user-card.vue +40 -0
- package/src/components/settings/NotificationSettings.vue +32 -0
- package/src/components/settings/SettingsTable.vue +50 -0
- package/src/components/settings/SettingsTitle.vue +33 -0
- package/src/components/settings/SettingsToggleItem.vue +25 -0
- package/src/components/sidebar/DropdownMenu.vue +34 -0
- package/src/components/sidebar/SettingsSidebar.vue +121 -0
- package/src/components/sidebar/SidebarFooter.vue +52 -0
- package/src/components/sidebar/SidebarHeader.vue +57 -0
- package/src/components/sidebar/SidebarMenu.vue +78 -0
- package/src/components/ui/EmptyData.vue +76 -0
- package/src/components/ui/UniversalTable.vue +310 -0
- package/src/components/ui/UniversalTableFilters.vue +0 -0
- package/src/components/ui/UniversalTablePagination.vue +118 -0
- package/src/components/ui/VsPreview.vue +75 -0
- package/src/composables/useCollectionView.ts +21 -0
- package/src/composables/useDebounce.ts +26 -0
- package/src/composables/useMonaco.ts +28 -0
- package/src/composables/useTheme.ts +40 -0
- package/src/content/test-slug/metadata.json +1 -0
- package/src/i18n.ts +75 -0
- package/src/index.css +3 -0
- package/src/locales/en.json +778 -0
- package/src/locales/uk.json +797 -0
- package/src/main.ts +41 -0
- package/src/pages/Dashboard.vue +168 -0
- package/src/pages/EmailPage.vue +183 -0
- package/src/pages/FeedbackPage.vue +232 -0
- package/src/pages/MediaPage.vue +372 -0
- package/src/pages/TagsPage.vue +207 -0
- package/src/pages/builder/BuilderPage.vue +195 -0
- package/src/pages/builder/EditCollectionPage.vue +163 -0
- package/src/pages/collections/ArticlesPage.vue +385 -0
- package/src/pages/collections/CollectionsPage.vue +146 -0
- package/src/pages/collections/SingletonsPage.vue +119 -0
- package/src/pages/collections/contentForm.vue +484 -0
- package/src/pages/collections/schema/seo.ts +27 -0
- package/src/pages/menu/MenuAddPage.vue +123 -0
- package/src/pages/menu/MenuItemPage.vue +183 -0
- package/src/pages/menu/MenuPage.vue +133 -0
- package/src/pages/settings/ApiKeys.vue +75 -0
- package/src/pages/settings/Appearance.vue +80 -0
- package/src/pages/settings/Logs.vue +260 -0
- package/src/pages/settings/PermissionsPage.vue +237 -0
- package/src/pages/settings/Settings.vue +186 -0
- package/src/pages/settings/Users.vue +109 -0
- package/src/pages/settings/general.vue +154 -0
- package/src/pages/settings/generalScheme.js +132 -0
- package/src/pages/users/AddUser.vue +106 -0
- package/src/pages/users/UsersPage.vue +98 -0
- package/src/props/builder.ts +67 -0
- package/src/props/content.ts +56 -0
- package/src/props/media.ts +63 -0
- package/src/router/index.ts +181 -0
- package/src/types/fastify-auth.d.ts +4 -0
- package/src/utils/getField.js +270 -0
- package/src/utils/translit.js +19 -0
- package/src/vite-env.d.ts +1 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="h-full flex flex-col">
|
|
3
|
+
<div class="h-4 bg-gray-400 rounded mb-2"></div>
|
|
4
|
+
<div class="space-y-1.5 flex-1">
|
|
5
|
+
<div class="flex items-center justify-between p-1.5 border-b border-gray-200">
|
|
6
|
+
<div class="flex items-center gap-2">
|
|
7
|
+
<div class="w-3 h-3 bg-gray-400 rounded-full"></div>
|
|
8
|
+
<div class="h-2 bg-gray-300 rounded flex-1 w-28"></div>
|
|
9
|
+
</div>
|
|
10
|
+
<div class="flex gap-1.5">
|
|
11
|
+
<div class="w-3 h-3 bg-gray-200 rounded"></div>
|
|
12
|
+
<div class="w-3 h-3 bg-gray-200 rounded"></div>
|
|
13
|
+
</div>
|
|
14
|
+
</div>
|
|
15
|
+
<div class="flex items-center justify-between p-1.5 border-b border-gray-200">
|
|
16
|
+
<div class="flex items-center gap-2">
|
|
17
|
+
<div class="w-3 h-3 bg-gray-400 rounded-full"></div>
|
|
18
|
+
<div class="h-2 bg-gray-300 rounded flex-1 w-28"></div>
|
|
19
|
+
</div>
|
|
20
|
+
<div class="flex gap-1.5">
|
|
21
|
+
<div class="w-3 h-3 bg-gray-200 rounded"></div>
|
|
22
|
+
<div class="w-3 h-3 bg-gray-200 rounded"></div>
|
|
23
|
+
</div>
|
|
24
|
+
</div>
|
|
25
|
+
<div class="flex items-center justify-between p-1.5 border-b border-gray-200">
|
|
26
|
+
<div class="flex items-center gap-2">
|
|
27
|
+
<div class="w-3 h-3 bg-gray-400 rounded-full"></div>
|
|
28
|
+
<div class="h-2 bg-gray-300 rounded flex-1 w-28"></div>
|
|
29
|
+
</div>
|
|
30
|
+
<div class="flex gap-1.5">
|
|
31
|
+
<div class="w-3 h-3 bg-gray-200 rounded"></div>
|
|
32
|
+
<div class="w-3 h-3 bg-gray-200 rounded"></div>
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
35
|
+
<div class="flex items-center justify-between p-1.5 border-b border-gray-200">
|
|
36
|
+
<div class="flex items-center gap-2">
|
|
37
|
+
<div class="w-3 h-3 bg-gray-400 rounded-full"></div>
|
|
38
|
+
<div class="h-2 bg-gray-300 rounded flex-1 w-28"></div>
|
|
39
|
+
</div>
|
|
40
|
+
<div class="flex gap-1.5">
|
|
41
|
+
<div class="w-3 h-3 bg-gray-200 rounded"></div>
|
|
42
|
+
<div class="w-3 h-3 bg-gray-200 rounded"></div>
|
|
43
|
+
</div>
|
|
44
|
+
</div>
|
|
45
|
+
</div>
|
|
46
|
+
<div class="flex justify-between items-center mt-2 pt-2 border-t border-gray-300">
|
|
47
|
+
<div class="text-xs font-medium text-gray-600">{{ $t(text) }}</div>
|
|
48
|
+
<div class="text-xs text-gray-500" v-if="count && count > 0">{{ count }}</div>
|
|
49
|
+
</div>
|
|
50
|
+
</div>
|
|
51
|
+
</template>
|
|
52
|
+
|
|
53
|
+
<script setup>
|
|
54
|
+
defineProps({
|
|
55
|
+
text: {
|
|
56
|
+
type: String,
|
|
57
|
+
required: true,
|
|
58
|
+
},
|
|
59
|
+
count: {
|
|
60
|
+
type: Number,
|
|
61
|
+
required: true,
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
|
+
</script>
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="h-full w-full flex flex-col">
|
|
3
|
+
<div class="h-3 bg-gray-500 rounded mb-2"></div>
|
|
4
|
+
<div class="space-y-1.5 flex-1">
|
|
5
|
+
<div class="border border-gray-300 rounded p-1">
|
|
6
|
+
<div class="flex items-center justify-between">
|
|
7
|
+
<div class="h-1.5 bg-gray-300 rounded flex-1 mr-2"></div>
|
|
8
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down w-2.5 h-2.5 text-gray-400">
|
|
9
|
+
<path d="m6 9 6 6 6-6"></path>
|
|
10
|
+
</svg>
|
|
11
|
+
</div>
|
|
12
|
+
</div>
|
|
13
|
+
<div class="border border-gray-300 rounded p-1">
|
|
14
|
+
<div class="flex items-center justify-between">
|
|
15
|
+
<div class="h-1.5 bg-gray-300 rounded flex-1 mr-2"></div>
|
|
16
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down w-2.5 h-2.5 text-gray-400">
|
|
17
|
+
<path d="m6 9 6 6 6-6"></path>
|
|
18
|
+
</svg>
|
|
19
|
+
</div>
|
|
20
|
+
<div class="mt-1 pt-1 border-t border-gray-200">
|
|
21
|
+
<div class="space-y-0.5">
|
|
22
|
+
<div class="h-1 bg-gray-200 rounded"></div>
|
|
23
|
+
<div class="h-1 bg-gray-200 rounded w-5/6"></div>
|
|
24
|
+
<div class="h-1 bg-gray-200 rounded w-4/5"></div>
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
27
|
+
</div>
|
|
28
|
+
<div class="border border-gray-300 rounded p-1">
|
|
29
|
+
<div class="flex items-center justify-between">
|
|
30
|
+
<div class="h-1.5 bg-gray-300 rounded flex-1 mr-2"></div>
|
|
31
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down w-2.5 h-2.5 text-gray-400">
|
|
32
|
+
<path d="m6 9 6 6 6-6"></path>
|
|
33
|
+
</svg>
|
|
34
|
+
</div>
|
|
35
|
+
</div>
|
|
36
|
+
<div class="border border-gray-300 rounded p-1">
|
|
37
|
+
<div class="flex items-center justify-between">
|
|
38
|
+
<div class="h-1.5 bg-gray-300 rounded flex-1 mr-2"></div>
|
|
39
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down w-2.5 h-2.5 text-gray-400">
|
|
40
|
+
<path d="m6 9 6 6 6-6"></path>
|
|
41
|
+
</svg>
|
|
42
|
+
</div>
|
|
43
|
+
</div>
|
|
44
|
+
</div>
|
|
45
|
+
<div class="flex justify-between items-center mt-2 pt-2 border-t border-gray-300">
|
|
46
|
+
<div class="text-xs font-medium text-gray-600">{{ $t(text) }}</div>
|
|
47
|
+
<div class="text-xs text-gray-500" v-if="count && count > 0">{{ count }}</div>
|
|
48
|
+
</div>
|
|
49
|
+
</div>
|
|
50
|
+
</template>
|
|
51
|
+
|
|
52
|
+
<script setup>
|
|
53
|
+
defineProps({
|
|
54
|
+
text: {
|
|
55
|
+
type: String,
|
|
56
|
+
required: true,
|
|
57
|
+
},
|
|
58
|
+
count: {
|
|
59
|
+
type: Number,
|
|
60
|
+
required: true,
|
|
61
|
+
},
|
|
62
|
+
});
|
|
63
|
+
</script>
|
|
64
|
+
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="h-full w-full flex flex-col">
|
|
3
|
+
<div class="h-3 bg-gray-500 rounded mb-2"></div>
|
|
4
|
+
<div class="space-y-1.5 flex-1">
|
|
5
|
+
<div>
|
|
6
|
+
<div class="h-1.5 bg-gray-300 rounded mb-1 w-1/4"></div>
|
|
7
|
+
<div class="h-5 bg-gray-200 rounded border border-gray-300"></div>
|
|
8
|
+
</div>
|
|
9
|
+
<div>
|
|
10
|
+
<div class="h-1.5 bg-gray-300 rounded mb-1 w-1/3"></div>
|
|
11
|
+
<div class="h-5 bg-gray-200 rounded border border-gray-300"></div>
|
|
12
|
+
</div>
|
|
13
|
+
<div>
|
|
14
|
+
<div class="h-1.5 bg-gray-300 rounded mb-1 w-1/4"></div>
|
|
15
|
+
<div class="h-5 bg-gray-200 rounded border border-gray-300"></div>
|
|
16
|
+
</div>
|
|
17
|
+
<div>
|
|
18
|
+
<div class="h-1.5 bg-gray-300 rounded mb-1 w-1/3"></div>
|
|
19
|
+
<div class="h-8 bg-gray-200 rounded border border-gray-300"></div>
|
|
20
|
+
</div>
|
|
21
|
+
</div>
|
|
22
|
+
<div class="h-6 bg-gray-600 rounded mt-2"></div>
|
|
23
|
+
<div class="flex justify-between items-center mt-2 pt-2 border-t border-gray-300">
|
|
24
|
+
<div class="text-xs font-medium text-gray-600">{{ $t(text) }}</div>
|
|
25
|
+
<div class="text-xs text-gray-500" v-if="count && count > 0">{{ count }}</div>
|
|
26
|
+
</div>
|
|
27
|
+
</div>
|
|
28
|
+
</template>
|
|
29
|
+
|
|
30
|
+
<script setup>
|
|
31
|
+
defineProps({
|
|
32
|
+
text: {
|
|
33
|
+
type: String,
|
|
34
|
+
required: true,
|
|
35
|
+
},
|
|
36
|
+
count: {
|
|
37
|
+
type: Number,
|
|
38
|
+
required: true,
|
|
39
|
+
},
|
|
40
|
+
});
|
|
41
|
+
</script>
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import CardsSkeleton from "./cards-skeleton.vue";
|
|
2
|
+
import FaqSkeleton from "./faq-skeleton.vue";
|
|
3
|
+
import BannerSkeleton from "./banner-skeleton.vue";
|
|
4
|
+
import FormSkeleton from "./form-skeleton.vue";
|
|
5
|
+
import NewsSkeleton from "./news-skeleton.vue";
|
|
6
|
+
import TeamSkeleton from "./team-skeleton.vue";
|
|
7
|
+
import UsefulLinksSkeleton from "./usefulLinks-skeleton.vue";
|
|
8
|
+
import VideoSkeleton from "./video-skeleton.vue";
|
|
9
|
+
import AboutSkeleton from "./about-skeleton.vue";
|
|
10
|
+
import SliderSkeleton from "./slider-skeleton.vue";
|
|
11
|
+
import InfoLineSkeleton from "./infoLine-skeleton.vue";
|
|
12
|
+
import TabsSkeleton from "./tabs-skeleton.vue";
|
|
13
|
+
import DocumentsSkeleton from "./documents-skeleton.vue";
|
|
14
|
+
import BodySkeleton from "./body-skeleton.vue";
|
|
15
|
+
|
|
16
|
+
export default {
|
|
17
|
+
faq: FaqSkeleton,
|
|
18
|
+
banner: BannerSkeleton,
|
|
19
|
+
slider: SliderSkeleton,
|
|
20
|
+
video: VideoSkeleton,
|
|
21
|
+
about: AboutSkeleton,
|
|
22
|
+
cards: CardsSkeleton,
|
|
23
|
+
usefulLinks: UsefulLinksSkeleton,
|
|
24
|
+
team: TeamSkeleton,
|
|
25
|
+
news: NewsSkeleton,
|
|
26
|
+
form: FormSkeleton,
|
|
27
|
+
tabs: TabsSkeleton,
|
|
28
|
+
vertical_tabs: NewsSkeleton,
|
|
29
|
+
documents: DocumentsSkeleton,
|
|
30
|
+
infoLine: InfoLineSkeleton,
|
|
31
|
+
body: BodySkeleton,
|
|
32
|
+
photoGrid: CardsSkeleton,
|
|
33
|
+
interested: UsefulLinksSkeleton,
|
|
34
|
+
contact: DocumentsSkeleton,
|
|
35
|
+
iframe: BannerSkeleton,
|
|
36
|
+
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="h-full flex flex-col">
|
|
3
|
+
<div class="flex-1 bg-gray-200 rounded relative overflow-hidden">
|
|
4
|
+
<div class="absolute inset-0 flex items-center">
|
|
5
|
+
<div class="flex gap-8 whitespace-nowrap animate-pulse">
|
|
6
|
+
<div class="h-3 bg-gray-400 rounded w-32"></div>
|
|
7
|
+
<div class="h-3 bg-gray-300 rounded w-24"></div>
|
|
8
|
+
<div class="h-3 bg-gray-400 rounded w-40"></div>
|
|
9
|
+
<div class="h-3 bg-gray-300 rounded w-28"></div>
|
|
10
|
+
<div class="h-3 bg-gray-400 rounded w-36"></div>
|
|
11
|
+
<div class="h-3 bg-gray-300 rounded w-20"></div>
|
|
12
|
+
</div>
|
|
13
|
+
</div>
|
|
14
|
+
<div class="absolute top-2 left-2 right-2 flex justify-between items-center">
|
|
15
|
+
<div class="w-2 h-2 bg-gray-500 rounded-full"></div>
|
|
16
|
+
<div class="w-2 h-2 bg-gray-500 rounded-full"></div>
|
|
17
|
+
</div>
|
|
18
|
+
</div>
|
|
19
|
+
<div class="flex justify-between items-center mt-2 pt-2 border-t border-gray-300">
|
|
20
|
+
<div class="text-xs font-medium text-gray-600">{{ $t(text) }}</div>
|
|
21
|
+
<div class="text-xs text-gray-500" v-if="count && count > 0">{{ count }}</div>
|
|
22
|
+
</div>
|
|
23
|
+
</div>
|
|
24
|
+
</template>
|
|
25
|
+
|
|
26
|
+
<script setup>
|
|
27
|
+
defineProps({
|
|
28
|
+
text: {
|
|
29
|
+
type: String,
|
|
30
|
+
required: true,
|
|
31
|
+
},
|
|
32
|
+
count: {
|
|
33
|
+
type: Number,
|
|
34
|
+
required: true,
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
</script>
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="h-full w-full flex flex-col">
|
|
3
|
+
<div class="h-4 bg-gray-400 rounded mb-2"></div>
|
|
4
|
+
<div class="flex gap-2 flex-1">
|
|
5
|
+
<div class="flex-1 space-y-2">
|
|
6
|
+
<div class="bg-gray-200 rounded p-1.5">
|
|
7
|
+
<div class="h-8 bg-gray-300 rounded mb-1"></div>
|
|
8
|
+
<div class="h-1.5 bg-gray-400 rounded mb-1"></div>
|
|
9
|
+
<div class="h-1 bg-gray-300 rounded w-3/4"></div>
|
|
10
|
+
</div>
|
|
11
|
+
<div class="bg-gray-200 rounded p-1.5">
|
|
12
|
+
<div class="h-8 bg-gray-300 rounded mb-1"></div>
|
|
13
|
+
<div class="h-1.5 bg-gray-400 rounded mb-1"></div>
|
|
14
|
+
<div class="h-1 bg-gray-300 rounded w-3/4"></div>
|
|
15
|
+
</div>
|
|
16
|
+
</div>
|
|
17
|
+
<div class="w-20 space-y-1">
|
|
18
|
+
<div class="border-b border-gray-300 pb-1">
|
|
19
|
+
<div class="h-1 bg-gray-300 rounded mb-1"></div>
|
|
20
|
+
<div class="h-1 bg-gray-300 rounded w-4/5"></div>
|
|
21
|
+
</div>
|
|
22
|
+
<div class="border-b border-gray-300 pb-1">
|
|
23
|
+
<div class="h-1 bg-gray-300 rounded mb-1"></div>
|
|
24
|
+
<div class="h-1 bg-gray-300 rounded w-4/5"></div>
|
|
25
|
+
</div>
|
|
26
|
+
<div class="border-b border-gray-300 pb-1">
|
|
27
|
+
<div class="h-1 bg-gray-300 rounded mb-1"></div>
|
|
28
|
+
<div class="h-1 bg-gray-300 rounded w-4/5"></div>
|
|
29
|
+
</div>
|
|
30
|
+
<div class="border-b border-gray-300 pb-1">
|
|
31
|
+
<div class="h-1 bg-gray-300 rounded mb-1"></div>
|
|
32
|
+
<div class="h-1 bg-gray-300 rounded w-4/5"></div>
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
35
|
+
</div>
|
|
36
|
+
<div class="flex justify-between items-center mt-2 pt-2 border-t border-gray-300">
|
|
37
|
+
<div class="text-xs font-medium text-gray-600">{{ $t(text) }}</div>
|
|
38
|
+
<div class="text-xs text-gray-500" v-if="count && count > 0">{{ count }}</div>
|
|
39
|
+
</div>
|
|
40
|
+
</div>
|
|
41
|
+
</template>
|
|
42
|
+
|
|
43
|
+
<script setup>
|
|
44
|
+
defineProps({
|
|
45
|
+
text: {
|
|
46
|
+
type: String,
|
|
47
|
+
required: true,
|
|
48
|
+
},
|
|
49
|
+
count: {
|
|
50
|
+
type: Number,
|
|
51
|
+
required: true,
|
|
52
|
+
},
|
|
53
|
+
});
|
|
54
|
+
</script>
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="h-full w-full flex flex-col">
|
|
3
|
+
<div class="flex-1 bg-gray-200 rounded mb-2 relative">
|
|
4
|
+
<div class="absolute inset-0 flex items-center justify-center">
|
|
5
|
+
<div class="w-12 h-8 bg-gray-300 rounded"></div>
|
|
6
|
+
</div>
|
|
7
|
+
<div class="absolute left-1 top-1/2 transform -translate-y-1/2">
|
|
8
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-left w-4 h-4 text-gray-400"><path d="m15 18-6-6 6-6"></path></svg>
|
|
9
|
+
</div>
|
|
10
|
+
<div class="absolute right-1 top-1/2 transform -translate-y-1/2">
|
|
11
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right w-4 h-4 text-gray-400"><path d="m9 18 6-6-6-6"></path></svg>
|
|
12
|
+
</div>
|
|
13
|
+
</div>
|
|
14
|
+
<div class="h-3 bg-gray-300 rounded mb-2"></div>
|
|
15
|
+
<div class="h-6 w-20 bg-gray-400 rounded"></div>
|
|
16
|
+
<div class="flex justify-center gap-1 mt-2">
|
|
17
|
+
<div class="w-1.5 h-1.5 bg-gray-300 rounded-full"></div>
|
|
18
|
+
<div class="w-1.5 h-1.5 bg-gray-300 rounded-full"></div>
|
|
19
|
+
<div class="w-1.5 h-1.5 bg-gray-300 rounded-full"></div>
|
|
20
|
+
<div class="w-1.5 h-1.5 bg-gray-300 rounded-full"></div>
|
|
21
|
+
<div class="w-1.5 h-1.5 bg-gray-300 rounded-full"></div>
|
|
22
|
+
</div>
|
|
23
|
+
<div class="flex justify-between items-center mt-2 pt-2 border-t border-gray-300">
|
|
24
|
+
<div class="text-xs font-medium text-gray-600">{{ $t(text) }}</div>
|
|
25
|
+
<div class="text-xs text-gray-500" v-if="count && count > 0">{{ count }}</div>
|
|
26
|
+
</div>
|
|
27
|
+
</div>
|
|
28
|
+
</template>
|
|
29
|
+
|
|
30
|
+
<script setup>
|
|
31
|
+
defineProps({
|
|
32
|
+
text: {
|
|
33
|
+
type: String,
|
|
34
|
+
required: true,
|
|
35
|
+
},
|
|
36
|
+
count: {
|
|
37
|
+
type: Number,
|
|
38
|
+
required: true,
|
|
39
|
+
},
|
|
40
|
+
});
|
|
41
|
+
</script>
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="h-full flex flex-col">
|
|
3
|
+
<div class="h-2 bg-gray-300 rounded mb-2"></div>
|
|
4
|
+
<div class="flex gap-1 mb-3">
|
|
5
|
+
<div class="h-4 w-16 bg-gray-400 rounded"></div>
|
|
6
|
+
<div class="h-4 w-16 bg-gray-200 rounded"></div>
|
|
7
|
+
</div>
|
|
8
|
+
<div class="space-y-2 flex-1">
|
|
9
|
+
<div class="h-2 bg-gray-300 rounded w-5/6"></div>
|
|
10
|
+
<div class="h-2 bg-gray-300 rounded"></div>
|
|
11
|
+
<div class="space-y-1 mt-3">
|
|
12
|
+
<div class="flex items-center gap-2">
|
|
13
|
+
<div class="w-2 h-2 bg-gray-400 rounded-full"></div>
|
|
14
|
+
<div class="h-1.5 bg-gray-300 rounded w-20"></div>
|
|
15
|
+
</div>
|
|
16
|
+
<div class="flex items-center gap-2">
|
|
17
|
+
<div class="w-2 h-2 bg-gray-400 rounded-full"></div>
|
|
18
|
+
<div class="h-1.5 bg-gray-300 rounded w-16"></div>
|
|
19
|
+
</div>
|
|
20
|
+
</div>
|
|
21
|
+
</div>
|
|
22
|
+
<div class="flex justify-between items-center mt-2 pt-2 border-t border-gray-300">
|
|
23
|
+
<div class="text-xs font-medium text-gray-600">{{ $t(text) }}</div>
|
|
24
|
+
<div class="text-xs text-gray-500" v-if="count && count > 0">{{ count }}</div>
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
27
|
+
</template>
|
|
28
|
+
|
|
29
|
+
<script setup>
|
|
30
|
+
defineProps({
|
|
31
|
+
text: {
|
|
32
|
+
type: String,
|
|
33
|
+
required: true,
|
|
34
|
+
},
|
|
35
|
+
count: {
|
|
36
|
+
type: Number,
|
|
37
|
+
required: true,
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
</script>
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="h-full w-full flex flex-col">
|
|
3
|
+
<div class="space-y-2 flex-1">
|
|
4
|
+
<div class="flex items-start gap-2">
|
|
5
|
+
<div class="w-8 h-8 bg-gray-300 rounded flex-shrink-0"></div>
|
|
6
|
+
<div class="flex-1 min-w-0">
|
|
7
|
+
<div class="h-2 bg-gray-400 rounded mb-1 w-2/3"></div>
|
|
8
|
+
<div class="h-1.5 bg-gray-300 rounded mb-1"></div>
|
|
9
|
+
<div class="flex gap-1">
|
|
10
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-phone w-2.5 h-2.5 text-gray-400">
|
|
11
|
+
<path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"></path>
|
|
12
|
+
</svg>
|
|
13
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-mail w-2.5 h-2.5 text-gray-400">
|
|
14
|
+
<rect width="20" height="16" x="2" y="4" rx="2"></rect>
|
|
15
|
+
<path d="m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7"></path>
|
|
16
|
+
</svg>
|
|
17
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock w-2.5 h-2.5 text-gray-400">
|
|
18
|
+
<circle cx="12" cy="12" r="10"></circle>
|
|
19
|
+
<polyline points="12 6 12 12 16 14"></polyline>
|
|
20
|
+
</svg>
|
|
21
|
+
</div>
|
|
22
|
+
</div>
|
|
23
|
+
</div>
|
|
24
|
+
<div class="flex items-start gap-2">
|
|
25
|
+
<div class="w-8 h-8 bg-gray-300 rounded flex-shrink-0"></div>
|
|
26
|
+
<div class="flex-1 min-w-0">
|
|
27
|
+
<div class="h-2 bg-gray-400 rounded mb-1 w-2/3"></div>
|
|
28
|
+
<div class="h-1.5 bg-gray-300 rounded mb-1"></div>
|
|
29
|
+
<div class="flex gap-1">
|
|
30
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-phone w-2.5 h-2.5 text-gray-400">
|
|
31
|
+
<path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"></path>
|
|
32
|
+
</svg>
|
|
33
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-mail w-2.5 h-2.5 text-gray-400">
|
|
34
|
+
<rect width="20" height="16" x="2" y="4" rx="2"></rect>
|
|
35
|
+
<path d="m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7"></path>
|
|
36
|
+
</svg>
|
|
37
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock w-2.5 h-2.5 text-gray-400">
|
|
38
|
+
<circle cx="12" cy="12" r="10"></circle>
|
|
39
|
+
<polyline points="12 6 12 12 16 14"></polyline>
|
|
40
|
+
</svg>
|
|
41
|
+
</div>
|
|
42
|
+
</div>
|
|
43
|
+
</div>
|
|
44
|
+
<div class="flex items-start gap-2">
|
|
45
|
+
<div class="w-8 h-8 bg-gray-300 rounded flex-shrink-0"></div>
|
|
46
|
+
<div class="flex-1 min-w-0">
|
|
47
|
+
<div class="h-2 bg-gray-400 rounded mb-1 w-2/3"></div>
|
|
48
|
+
<div class="h-1.5 bg-gray-300 rounded mb-1"></div>
|
|
49
|
+
<div class="flex gap-1">
|
|
50
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-phone w-2.5 h-2.5 text-gray-400">
|
|
51
|
+
<path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"></path>
|
|
52
|
+
</svg>
|
|
53
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-mail w-2.5 h-2.5 text-gray-400">
|
|
54
|
+
<rect width="20" height="16" x="2" y="4" rx="2"></rect>
|
|
55
|
+
<path d="m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7"></path>
|
|
56
|
+
</svg>
|
|
57
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock w-2.5 h-2.5 text-gray-400">
|
|
58
|
+
<circle cx="12" cy="12" r="10"></circle>
|
|
59
|
+
<polyline points="12 6 12 12 16 14"></polyline>
|
|
60
|
+
</svg>
|
|
61
|
+
</div>
|
|
62
|
+
</div>
|
|
63
|
+
</div>
|
|
64
|
+
<div class="flex items-start gap-2">
|
|
65
|
+
<div class="w-8 h-8 bg-gray-300 rounded flex-shrink-0"></div>
|
|
66
|
+
<div class="flex-1 min-w-0">
|
|
67
|
+
<div class="h-2 bg-gray-400 rounded mb-1 w-2/3"></div>
|
|
68
|
+
<div class="h-1.5 bg-gray-300 rounded mb-1"></div>
|
|
69
|
+
<div class="flex gap-1">
|
|
70
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-phone w-2.5 h-2.5 text-gray-400">
|
|
71
|
+
<path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"></path>
|
|
72
|
+
</svg>
|
|
73
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-mail w-2.5 h-2.5 text-gray-400">
|
|
74
|
+
<rect width="20" height="16" x="2" y="4" rx="2"></rect>
|
|
75
|
+
<path d="m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7"></path>
|
|
76
|
+
</svg>
|
|
77
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock w-2.5 h-2.5 text-gray-400">
|
|
78
|
+
<circle cx="12" cy="12" r="10"></circle>
|
|
79
|
+
<polyline points="12 6 12 12 16 14"></polyline>
|
|
80
|
+
</svg>
|
|
81
|
+
</div>
|
|
82
|
+
</div>
|
|
83
|
+
</div>
|
|
84
|
+
</div>
|
|
85
|
+
<div class="flex justify-between items-center mt-2 pt-2 border-t border-gray-300">
|
|
86
|
+
<div class="text-xs font-medium text-gray-600">{{ $t(text) }}</div>
|
|
87
|
+
<div class="text-xs text-gray-500" v-if="count && count > 0">{{ count }}</div>
|
|
88
|
+
</div>
|
|
89
|
+
</div>
|
|
90
|
+
</template>
|
|
91
|
+
|
|
92
|
+
<script setup>
|
|
93
|
+
defineProps({
|
|
94
|
+
text: {
|
|
95
|
+
type: String,
|
|
96
|
+
required: true,
|
|
97
|
+
},
|
|
98
|
+
count: {
|
|
99
|
+
type: Number,
|
|
100
|
+
required: true,
|
|
101
|
+
},
|
|
102
|
+
});
|
|
103
|
+
</script>
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="h-full w-full flex flex-col">
|
|
3
|
+
<div class="h-4 bg-gray-400 rounded mb-3"></div>
|
|
4
|
+
<div class="grid grid-cols-2 gap-2 flex-1">
|
|
5
|
+
<div class="space-y-2">
|
|
6
|
+
<div class="flex items-center justify-between p-1.5 border border-gray-300 rounded">
|
|
7
|
+
<div class="h-1.5 bg-gray-300 rounded flex-1 mr-2"></div>
|
|
8
|
+
<div class="w-2 h-2 bg-gray-400 rounded-full"></div>
|
|
9
|
+
</div>
|
|
10
|
+
<div class="flex items-center justify-between p-1.5 border border-gray-300 rounded">
|
|
11
|
+
<div class="h-1.5 bg-gray-300 rounded flex-1 mr-2"></div>
|
|
12
|
+
<div class="w-2 h-2 bg-gray-400 rounded-full"></div>
|
|
13
|
+
</div>
|
|
14
|
+
<div class="flex items-center justify-between p-1.5 border border-gray-300 rounded">
|
|
15
|
+
<div class="h-1.5 bg-gray-300 rounded flex-1 mr-2"></div>
|
|
16
|
+
<div class="w-2 h-2 bg-gray-400 rounded-full"></div>
|
|
17
|
+
</div>
|
|
18
|
+
</div>
|
|
19
|
+
<div class="space-y-2">
|
|
20
|
+
<div class="flex items-center justify-between p-1.5 border border-gray-300 rounded">
|
|
21
|
+
<div class="h-1.5 bg-gray-300 rounded flex-1 mr-2"></div>
|
|
22
|
+
<div class="w-2 h-2 bg-gray-400 rounded-full"></div>
|
|
23
|
+
</div>
|
|
24
|
+
<div class="flex items-center justify-between p-1.5 border border-gray-300 rounded">
|
|
25
|
+
<div class="h-1.5 bg-gray-300 rounded flex-1 mr-2"></div>
|
|
26
|
+
<div class="w-2 h-2 bg-gray-400 rounded-full"></div>
|
|
27
|
+
</div>
|
|
28
|
+
<div class="flex items-center justify-between p-1.5 border border-gray-300 rounded">
|
|
29
|
+
<div class="h-1.5 bg-gray-300 rounded flex-1 mr-2"></div>
|
|
30
|
+
<div class="w-2 h-2 bg-gray-400 rounded-full"></div>
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|
|
33
|
+
</div>
|
|
34
|
+
<div class="flex justify-between items-center mt-2 pt-2 border-t border-gray-300">
|
|
35
|
+
<div class="text-xs font-medium text-gray-600">{{ $t(text) }}</div>
|
|
36
|
+
<div class="text-xs text-gray-500" v-if="count && count > 0">{{ count }}</div>
|
|
37
|
+
</div>
|
|
38
|
+
</div>
|
|
39
|
+
</template>
|
|
40
|
+
|
|
41
|
+
<script setup>
|
|
42
|
+
defineProps({
|
|
43
|
+
text: {
|
|
44
|
+
type: String,
|
|
45
|
+
required: true,
|
|
46
|
+
},
|
|
47
|
+
count: {
|
|
48
|
+
type: Number,
|
|
49
|
+
required: true,
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
</script>
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="h-full w-full flex flex-col">
|
|
3
|
+
<div class="flex-1 bg-gray-200 rounded relative">
|
|
4
|
+
<div class="absolute inset-0 flex items-center justify-center">
|
|
5
|
+
<div class="w-10 h-10 bg-gray-400 rounded-full flex items-center justify-center">
|
|
6
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-play w-5 h-5 text-white ml-0.5"><polygon points="6 3 20 12 6 21 6 3"></polygon></svg>
|
|
7
|
+
</div>
|
|
8
|
+
</div>
|
|
9
|
+
<div class="absolute bottom-1.5 left-1.5 right-1.5">
|
|
10
|
+
<div class="h-2 bg-gray-400 rounded mb-1"></div>
|
|
11
|
+
<div class="h-2 bg-gray-400 rounded w-3/4"></div>
|
|
12
|
+
</div>
|
|
13
|
+
</div>
|
|
14
|
+
<div class="mt-2 flex items-center gap-2">
|
|
15
|
+
<div class="w-5 h-5 bg-gray-300 rounded"></div>
|
|
16
|
+
<div class="h-2 bg-gray-300 rounded flex-1"></div>
|
|
17
|
+
</div>
|
|
18
|
+
<div class="flex justify-between items-center mt-2 pt-2 border-t border-gray-300">
|
|
19
|
+
<div class="text-xs font-medium text-gray-600">{{ $t(text) }}</div>
|
|
20
|
+
<div class="text-xs text-gray-500" v-if="count && count > 0">{{ count }}</div>
|
|
21
|
+
</div>
|
|
22
|
+
</div>
|
|
23
|
+
</template>
|
|
24
|
+
|
|
25
|
+
<script setup>
|
|
26
|
+
defineProps({
|
|
27
|
+
text: {
|
|
28
|
+
type: String,
|
|
29
|
+
required: true,
|
|
30
|
+
},
|
|
31
|
+
count: {
|
|
32
|
+
type: Number,
|
|
33
|
+
required: true,
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
</script>
|