@ozdao/martyrs 0.2.508 → 0.2.509
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/dist/_virtual/index.cjs +4 -4
- package/dist/_virtual/index.js +4 -4
- package/dist/_virtual/index2.cjs +4 -4
- package/dist/_virtual/index2.js +4 -4
- package/dist/{main-AWSb_d2P.cjs → main-D89N_jml.cjs} +1 -1
- package/dist/{main-Dq-UfO4G.js → main-DSiCr7yl.js} +7 -8
- package/dist/martyrs/src/components/Chips/{Chips.vue2.cjs → Chips.vue.cjs} +2 -2
- package/dist/martyrs/src/components/Chips/Chips.vue.cjs.map +1 -0
- package/dist/martyrs/src/components/Chips/{Chips.vue2.js → Chips.vue.js} +2 -2
- package/dist/martyrs/src/components/Chips/Chips.vue.js.map +1 -0
- package/dist/martyrs/src/components/Dropdown/{Dropdown.vue2.cjs → Dropdown.vue.cjs} +2 -2
- package/dist/martyrs/src/components/Dropdown/{Dropdown.vue2.js.map → Dropdown.vue.cjs.map} +1 -1
- package/dist/martyrs/src/components/Dropdown/{Dropdown.vue2.js → Dropdown.vue.js} +2 -2
- package/dist/martyrs/src/components/Dropdown/Dropdown.vue.js.map +1 -0
- package/dist/martyrs/src/components/Feed/Carousel.vue.cjs +4 -3
- package/dist/martyrs/src/components/Feed/Carousel.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/Feed/Carousel.vue.js +5 -4
- package/dist/martyrs/src/components/Feed/Carousel.vue.js.map +1 -1
- package/dist/martyrs/src/components/Feed/Feed.vue.cjs +1 -1
- package/dist/martyrs/src/components/Feed/Feed.vue.js +1 -1
- package/dist/martyrs/src/components/FieldBig/FieldBig.vue.cjs +2 -2
- package/dist/martyrs/src/components/FieldBig/FieldBig.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js +2 -2
- package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js.map +1 -1
- package/dist/martyrs/src/components/FieldTags/FieldTags.vue.cjs +1 -1
- package/dist/martyrs/src/components/FieldTags/FieldTags.vue.js +1 -1
- package/dist/martyrs/src/components/Menu/{Menu.vue.cjs → Menu.vue2.cjs} +2 -2
- package/dist/martyrs/src/components/Menu/Menu.vue2.cjs.map +1 -0
- package/dist/martyrs/src/components/Menu/{Menu.vue.js → Menu.vue2.js} +2 -2
- package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +1 -0
- package/dist/martyrs/src/components/Select/{Select.vue.cjs → Select.vue2.cjs} +2 -2
- package/dist/martyrs/src/components/Select/Select.vue2.cjs.map +1 -0
- package/dist/martyrs/src/components/Select/{Select.vue.js → Select.vue2.js} +2 -2
- package/dist/martyrs/src/components/Select/{Select.vue.cjs.map → Select.vue2.js.map} +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +2 -2
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +2 -2
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.cjs +17 -11
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +18 -12
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.cjs +1 -1
- package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js +1 -1
- package/dist/martyrs/src/modules/community/components/layouts/Community.vue.cjs +1 -1
- package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js +1 -1
- package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.cjs +1 -1
- package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +1 -1
- package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.cjs +1 -1
- package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs +2 -2
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +2 -2
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +2 -2
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +2 -2
- package/dist/martyrs/src/modules/globals/globals.client.js +15 -15
- package/dist/martyrs/src/modules/globals/globals.client.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/classes/globals.i18n.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/classes/globals.i18n.js +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Footer.vue.cjs +121 -107
- package/dist/martyrs/src/modules/globals/views/components/partials/Footer.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Footer.vue.js +131 -117
- package/dist/martyrs/src/modules/globals/views/components/partials/Footer.vue.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.cjs +2 -2
- package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.js +2 -2
- package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.js +1 -1
- package/dist/martyrs/src/modules/icons/logos/Logotype.vue.cjs +3 -3
- package/dist/martyrs/src/modules/icons/logos/Logotype.vue.js +3 -3
- package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.cjs +1 -1
- package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +1 -1
- package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.cjs +1 -1
- package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js +1 -1
- package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.cjs +138 -136
- package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.js +137 -135
- package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.js.map +1 -1
- package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.cjs +2 -2
- package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +2 -2
- package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.cjs +1 -1
- package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.cjs +1 -1
- package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.cjs +1 -1
- package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Album.vue.cjs +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.cjs +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Track.vue.cjs +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +1 -1
- package/dist/martyrs/src/modules/music/router/music.cjs +1 -1
- package/dist/martyrs/src/modules/music/router/music.js +1 -1
- package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.cjs +61 -9
- package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +61 -9
- package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormPayment.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormPayment.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/orders.client.cjs +36 -38
- package/dist/martyrs/src/modules/orders/orders.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/orders.client.js +36 -38
- package/dist/martyrs/src/modules/orders/orders.client.js.map +1 -1
- package/dist/martyrs/src/modules/orders/store/models/customer.cjs +7 -0
- package/dist/martyrs/src/modules/orders/store/models/customer.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/store/models/customer.js +7 -0
- package/dist/martyrs/src/modules/orders/store/models/customer.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs +3 -3
- package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +3 -3
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.cjs +17 -28
- package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.js +17 -28
- package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/router/organizations.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/router/organizations.js +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.cjs +9 -1
- package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.js +9 -1
- package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +2 -2
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Products.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/sections/ProductsPopular.vue.cjs +10 -5
- package/dist/martyrs/src/modules/products/components/sections/ProductsPopular.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/ProductsPopular.vue.js +10 -5
- package/dist/martyrs/src/modules/products/components/sections/ProductsPopular.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.cjs +5 -2
- package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js +5 -2
- package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js.map +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.cjs +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +1 -1
- package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.cjs +1 -1
- package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.cjs +1 -1
- package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.cjs +1 -1
- package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.cjs +1 -1
- package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.js +1 -1
- package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.cjs +3 -3
- package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +3 -3
- package/dist/martyrs.cjs.js +1 -1
- package/dist/martyrs.css +1 -1
- package/dist/martyrs.es.js +1 -1
- package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.cjs +1 -1
- package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.js +1 -1
- package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.cjs +1 -1
- package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.js +1 -1
- package/dist/orders.server.cjs +58 -0
- package/dist/orders.server.js +58 -0
- package/dist/products.server.cjs +11 -1
- package/dist/products.server.js +11 -1
- package/dist/style.css +30 -41
- package/dist/{web-DaBwwCQ5.cjs → web-XyQNm3cW.cjs} +1 -1
- package/dist/{web-BXajFCU2.js → web-gtBkwjra.js} +1 -1
- package/package.json +1 -1
- package/src/components/Feed/Carousel.vue +3 -1
- package/src/components/FieldBig/FieldBig.vue +2 -2
- package/src/modules/auth/views/components/pages/ProfileEdit.vue +17 -10
- package/src/modules/globals/views/components/partials/Footer.centered.vue +338 -0
- package/src/modules/globals/views/components/partials/Footer.vue +104 -99
- package/src/modules/globals/views/components/partials/Header.vue +1 -1
- package/src/modules/icons/logos/Logotype.vue +1 -1
- package/src/modules/inventory/components/pages/Inventory.vue +126 -119
- package/src/modules/orders/components/forms/FormCustomerDetails.vue +51 -0
- package/src/modules/orders/middlewares/customers.verifier.js +60 -0
- package/src/modules/orders/models/customer.model.js +18 -0
- package/src/modules/orders/orders.client.js +36 -38
- package/src/modules/orders/store/models/customer.js +7 -0
- package/src/modules/organizations/configs/navigation.organization.config.js +17 -26
- package/src/modules/products/TASKS.MD +1 -157
- package/src/modules/products/components/elements/QuantitySelector.vue +17 -9
- package/src/modules/products/components/pages/Product.vue +1 -1
- package/src/modules/products/components/pages/Products.vue +0 -1
- package/src/modules/products/components/sections/ProductsPopular.vue +9 -5
- package/src/modules/products/components/sections/ProductsRecommended.vue +4 -1
- package/src/modules/products/controllers/configs/products.lookup.config.js +11 -1
- package/src/styles/base/all.scss +9 -4
- package/src/styles/config.scss +10 -0
- package/src/styles/responsive.scss +2 -1
- package/src/styles/typography.scss +0 -5
- package/dist/martyrs/src/components/Chips/Chips.vue2.cjs.map +0 -1
- package/dist/martyrs/src/components/Chips/Chips.vue2.js.map +0 -1
- package/dist/martyrs/src/components/Dropdown/Dropdown.vue2.cjs.map +0 -1
- package/dist/martyrs/src/components/Menu/Menu.vue.cjs.map +0 -1
- package/dist/martyrs/src/components/Menu/Menu.vue.js.map +0 -1
- package/dist/martyrs/src/components/Select/Select.vue.js.map +0 -1
|
@@ -0,0 +1,338 @@
|
|
|
1
|
+
<script setup="props">
|
|
2
|
+
import { computed, ref } from 'vue'
|
|
3
|
+
import { useRouter, useRoute } from 'vue-router'
|
|
4
|
+
import { useI18n } from 'vue-i18n'
|
|
5
|
+
|
|
6
|
+
// Martyrs Components
|
|
7
|
+
import FieldSubscribeNewsletter from '@martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue'
|
|
8
|
+
|
|
9
|
+
import LabelGooglePlay from '@martyrs/src/modules/icons/labels/LabelGooglePlay.vue';
|
|
10
|
+
import LabelAppStore from '@martyrs/src/modules/icons/labels/LabelAppStore.vue';
|
|
11
|
+
|
|
12
|
+
import IconPhone from '@martyrs/src/modules/icons/entities/IconPhone.vue';
|
|
13
|
+
import IconEmail from '@martyrs/src/modules/icons/entities/IconEmail.vue';
|
|
14
|
+
import IconAddress from '@martyrs/src/modules/icons/entities/IconAddress.vue';
|
|
15
|
+
import IconTime from '@martyrs/src/modules/icons/entities/IconTime.vue';
|
|
16
|
+
|
|
17
|
+
import IconInfo from '@martyrs/src/modules/icons/navigation/IconInfo.vue'
|
|
18
|
+
import IconInstagram from '@martyrs/src/modules/icons/socials/instagram.vue';
|
|
19
|
+
import IconFacebook from '@martyrs/src/modules/icons/socials/facebook.vue';
|
|
20
|
+
import IconLinkedin from '@martyrs/src/modules/icons/socials/linkedin.vue'
|
|
21
|
+
import IconYoutube from '@martyrs/src/modules/icons/socials/youtube.vue'
|
|
22
|
+
import IconWhatsapp from '@martyrs/src/modules/icons/socials/whatsapp.vue'
|
|
23
|
+
|
|
24
|
+
import Logotype from '@martyrs/src/modules/icons/logos/Logotype.vue'
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
// Props
|
|
28
|
+
const props = defineProps({
|
|
29
|
+
theme: {
|
|
30
|
+
type: String,
|
|
31
|
+
default: "light"
|
|
32
|
+
},
|
|
33
|
+
logotype: {
|
|
34
|
+
type: Object
|
|
35
|
+
}
|
|
36
|
+
})
|
|
37
|
+
|
|
38
|
+
// State
|
|
39
|
+
const router = useRouter()
|
|
40
|
+
const route = useRoute()
|
|
41
|
+
|
|
42
|
+
// Localization
|
|
43
|
+
const text = {
|
|
44
|
+
locale: 'en',
|
|
45
|
+
messages: {
|
|
46
|
+
en: {
|
|
47
|
+
linkAppStore: '2',
|
|
48
|
+
linkGooglePlay: '1',
|
|
49
|
+
// Contact
|
|
50
|
+
description: "3SR – Premium Video Gear Rentals for Filmmakers and Content Creators",
|
|
51
|
+
contact: 'Contact',
|
|
52
|
+
phone: 'Phone / WhatsApp',
|
|
53
|
+
email: 'Email',
|
|
54
|
+
hours: 'Hours',
|
|
55
|
+
hours_text: 'Mon–Sun, 10:00–19:00',
|
|
56
|
+
app: 'Get Our App',
|
|
57
|
+
|
|
58
|
+
// Subscribe
|
|
59
|
+
subscribe: 'Subscribe',
|
|
60
|
+
subscribe_text: 'Get updates on new equipment and special offers',
|
|
61
|
+
email_placeholder: 'Enter your email',
|
|
62
|
+
follow: 'Follow Us',
|
|
63
|
+
|
|
64
|
+
// Footer
|
|
65
|
+
year: '2025 ',
|
|
66
|
+
heart: "❤",
|
|
67
|
+
copyright: 'Three Steps Studio Ltd. All Rights Reserved.',
|
|
68
|
+
ozdao: 'Builded in OZ DAO',
|
|
69
|
+
|
|
70
|
+
// Contact info
|
|
71
|
+
phoneNumber: '+44 77 7878 4893',
|
|
72
|
+
emailAddress: "info{'@'}3stepsprod.com",
|
|
73
|
+
|
|
74
|
+
// Navigation columns
|
|
75
|
+
navigationColumns: [
|
|
76
|
+
{
|
|
77
|
+
sections: [
|
|
78
|
+
{
|
|
79
|
+
title: 'Equipment',
|
|
80
|
+
items: [
|
|
81
|
+
{ name: 'Cameras', url: 'products/categories/cameras' },
|
|
82
|
+
{ name: 'Lighting', url: 'products/categories/lighting-kits' },
|
|
83
|
+
{ name: 'Stabilizers', url: 'products/categories/stabilization-motion' },
|
|
84
|
+
{ name: 'Accessories', url: 'products/categories/accessories' }
|
|
85
|
+
]
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
title: 'Services',
|
|
89
|
+
items: [
|
|
90
|
+
{ name: 'Kits & Packages', url: 'products/categories/kits-packages' },
|
|
91
|
+
{ name: 'Studio Hire', url: 'products/categories/studio-hire' },
|
|
92
|
+
{ name: 'Delivery', url: 'products/categories/delivery' },
|
|
93
|
+
{ name: 'Production Help', url: 'products/categories/production-help' }
|
|
94
|
+
]
|
|
95
|
+
}
|
|
96
|
+
]
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
sections: [
|
|
100
|
+
{
|
|
101
|
+
title: 'Company',
|
|
102
|
+
items: [
|
|
103
|
+
{ name: 'About Us', url: 'pages/about' },
|
|
104
|
+
{ name: 'Contact', url: 'pages/contact' },
|
|
105
|
+
{ name: 'FAQ', url: 'pages/faq' },
|
|
106
|
+
{ name: 'Blog', url: '/community' }
|
|
107
|
+
]
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
title: 'Legal',
|
|
111
|
+
items: [
|
|
112
|
+
{ name: 'Privacy Policy', url: 'pages/privacy-policy' },
|
|
113
|
+
{ name: 'Cookie Policy', url: 'pages/cookie-policy' },
|
|
114
|
+
{ name: 'Terms of Use', url: 'pages/terms-of-use' },
|
|
115
|
+
{ name: 'EULA', url: 'pages/eula' }
|
|
116
|
+
]
|
|
117
|
+
}
|
|
118
|
+
]
|
|
119
|
+
}
|
|
120
|
+
],
|
|
121
|
+
|
|
122
|
+
// Social links
|
|
123
|
+
socialLinks: [
|
|
124
|
+
{
|
|
125
|
+
name: 'IconInstagram',
|
|
126
|
+
url: 'https://www.instagram.com/3stepsprod'
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
name: 'IconYoutube',
|
|
130
|
+
url: 'https://www.youtube.com/@threestepsproduction'
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
name: 'IconWhatsapp',
|
|
134
|
+
url: 'https://api.whatsapp.com/send/?phone=447778784893&text&type=phone_number&app_absent=0'
|
|
135
|
+
}
|
|
136
|
+
]
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
const { t, te, tm } = useI18n({
|
|
142
|
+
useScope: 'global',
|
|
143
|
+
messages: text.messages
|
|
144
|
+
})
|
|
145
|
+
|
|
146
|
+
// Component mapping for social icons
|
|
147
|
+
const iconComponents = {
|
|
148
|
+
IconInstagram,
|
|
149
|
+
IconFacebook,
|
|
150
|
+
IconLinkedin,
|
|
151
|
+
IconYoutube,
|
|
152
|
+
IconWhatsapp
|
|
153
|
+
}
|
|
154
|
+
</script>
|
|
155
|
+
|
|
156
|
+
<template>
|
|
157
|
+
<footer
|
|
158
|
+
class="
|
|
159
|
+
w-100
|
|
160
|
+
br-t br-solid
|
|
161
|
+
mobile:t-center
|
|
162
|
+
"
|
|
163
|
+
:class="{
|
|
164
|
+
't-black bg-white br-light': theme === 'light',
|
|
165
|
+
't-white bg-black br-dark': theme === 'dark'
|
|
166
|
+
}"
|
|
167
|
+
>
|
|
168
|
+
<div class="pd-medium">
|
|
169
|
+
<!-- Top Section -->
|
|
170
|
+
<component
|
|
171
|
+
v-if="logotype"
|
|
172
|
+
:is="logotype"
|
|
173
|
+
@click="router.push({ path: '/' })"
|
|
174
|
+
:theme="theme"
|
|
175
|
+
class="cursor-pointer h-3r mn-b-medium"
|
|
176
|
+
/>
|
|
177
|
+
|
|
178
|
+
<div class="grid cols-3-footer tablet:cols-2 mobile:cols-1 gap-extra mobile:gap-big">
|
|
179
|
+
|
|
180
|
+
<!-- Contact Block -->
|
|
181
|
+
<div class="flex flex-column mobile:flex-h-center w-max-15r mobile:mn-auto">
|
|
182
|
+
<p class="p-semi t-medium mn-b-semi">{{ t('description') }}</p>
|
|
183
|
+
|
|
184
|
+
<div class="mn-b-semi mobile:flex-v-center flex flex-column gap-small">
|
|
185
|
+
<a
|
|
186
|
+
:href="`tel:${t('phoneNumber').replace(/\s/g, '')}`"
|
|
187
|
+
class="flex mn-b-micro gap-micro flex-v-center transition-opacity hover-opacity-70"
|
|
188
|
+
:class="theme === 'light' ? 't-black' : 't-white'"
|
|
189
|
+
>
|
|
190
|
+
<IconPhone class="i-regular" :fill="theme === 'light' ? 'rgb(var(--black))' : 'rgb(var(--white))'" />
|
|
191
|
+
<span class="t-small">{{ t('phoneNumber') }}</span>
|
|
192
|
+
</a>
|
|
193
|
+
|
|
194
|
+
<a
|
|
195
|
+
:href="`mailto:${t('emailAddress')}`"
|
|
196
|
+
class="flex mn-b-micro gap-micro flex-v-center transition-opacity hover-opacity-70"
|
|
197
|
+
:class="theme === 'light' ? 't-black' : 't-white'"
|
|
198
|
+
>
|
|
199
|
+
<IconEmail class="i-regular" :fill="theme === 'light' ? 'rgb(var(--black))' : 'rgb(var(--white))'" />
|
|
200
|
+
<span class="t-small">{{ t('emailAddress') }}</span>
|
|
201
|
+
</a>
|
|
202
|
+
|
|
203
|
+
<div class="flex mn-b-micro gap-micro flex-v-center">
|
|
204
|
+
<IconTime class="i-regular" :fill="theme === 'light' ? 'rgb(var(--black))' : 'rgb(var(--white))'" />
|
|
205
|
+
<span class="t-small">{{ t('hours_text') }}</span>
|
|
206
|
+
</div>
|
|
207
|
+
</div>
|
|
208
|
+
|
|
209
|
+
<h4 class="h5 t-medium mn-b-regular">{{ t('app') }}</h4>
|
|
210
|
+
<div class="w-100 flex-nowrap flex gap-thin">
|
|
211
|
+
<a
|
|
212
|
+
v-if="te('linkAppStore') || te('label')"
|
|
213
|
+
:href="te('linkAppStore') ? t('linkAppStore') : null"
|
|
214
|
+
:target="te('linkAppStore') ? '_blank' : null"
|
|
215
|
+
class="pos-relative w-100 h-100"
|
|
216
|
+
>
|
|
217
|
+
<span
|
|
218
|
+
v-if="te('label')"
|
|
219
|
+
class="z-index-2 radius-medium bg-main t-medium uppercase pd-thin pos-absolute pos-r-10-negative pos-t-10-negative"
|
|
220
|
+
>
|
|
221
|
+
{{ t('label') }}
|
|
222
|
+
</span>
|
|
223
|
+
<LabelAppStore class="w-100 h-max" alt="Download on App Store"/>
|
|
224
|
+
</a>
|
|
225
|
+
|
|
226
|
+
<a
|
|
227
|
+
v-if="te('linkGooglePlay') || te('label')"
|
|
228
|
+
:href="te('linkGooglePlay') ? t('linkGooglePlay') : null"
|
|
229
|
+
:target="te('linkGooglePlay') ? '_blank' : null"
|
|
230
|
+
class="pos-relative w-100 h-100"
|
|
231
|
+
>
|
|
232
|
+
<span
|
|
233
|
+
v-if="te('label')"
|
|
234
|
+
class="z-index-2 pd-thin radius-medium bg-main t-medium uppercase pos-absolute pos-r-10-negative pos-t-10-negative"
|
|
235
|
+
>
|
|
236
|
+
{{ t('label') }}
|
|
237
|
+
</span>
|
|
238
|
+
<LabelGooglePlay class="w-100 h-max" alt="Download on Google Play"/>
|
|
239
|
+
</a>
|
|
240
|
+
</div>
|
|
241
|
+
</div>
|
|
242
|
+
|
|
243
|
+
<!-- Navigation Columns -->
|
|
244
|
+
<div class="cols-2 gap-big">
|
|
245
|
+
<div v-for="(column, colIndex) in tm('navigationColumns')" :key="colIndex" class="flex flex-column gap-medium">
|
|
246
|
+
<div v-for="(section, sectionIndex) in column.sections" :key="sectionIndex" class="">
|
|
247
|
+
<h4 class="h5 t-medium mn-b-regular">{{ section.title }}</h4>
|
|
248
|
+
<nav>
|
|
249
|
+
<ul class="flex flex-column gap-thin">
|
|
250
|
+
<li v-for="item in section.items" :key="item.url">
|
|
251
|
+
<router-link
|
|
252
|
+
:to="`/${item.url}`"
|
|
253
|
+
class="t-small transition-opacity hover-opacity-70"
|
|
254
|
+
:class="theme === 'light' ? 't-black' : 't-white'"
|
|
255
|
+
>
|
|
256
|
+
{{ item.name }}
|
|
257
|
+
</router-link>
|
|
258
|
+
</li>
|
|
259
|
+
</ul>
|
|
260
|
+
</nav>
|
|
261
|
+
</div>
|
|
262
|
+
</div>
|
|
263
|
+
</div>
|
|
264
|
+
|
|
265
|
+
<!-- Subscribe Block -->
|
|
266
|
+
<div class="col">
|
|
267
|
+
<h4 class="h5 t-medium mn-b-regular">{{ t('subscribe') }}</h4>
|
|
268
|
+
<p class="t-small mn-b-small t-transp">{{ t('subscribe_text') }}</p>
|
|
269
|
+
|
|
270
|
+
<FieldSubscribeNewsletter
|
|
271
|
+
:action="false"
|
|
272
|
+
fieldName="footer-newsletter"
|
|
273
|
+
fieldId="footer-newsletter-email"
|
|
274
|
+
class="d-inline-flex mn-b-medium bg-light t-black w-100"
|
|
275
|
+
/>
|
|
276
|
+
|
|
277
|
+
<h4 class="h5 t-medium mn-b-regular">{{ t('follow') }}</h4>
|
|
278
|
+
<!-- Social Links -->
|
|
279
|
+
<div class="flex mobile:flex-h-center gap-thin">
|
|
280
|
+
<a
|
|
281
|
+
v-for="social in tm('socialLinks')"
|
|
282
|
+
:key="social.name"
|
|
283
|
+
:href="social.url"
|
|
284
|
+
target="_blank"
|
|
285
|
+
class="
|
|
286
|
+
w-3r h-3r
|
|
287
|
+
flex flex-center
|
|
288
|
+
radius-small
|
|
289
|
+
bg-light
|
|
290
|
+
transition-opacity
|
|
291
|
+
hover-opacity-70
|
|
292
|
+
"
|
|
293
|
+
>
|
|
294
|
+
<component
|
|
295
|
+
:is="iconComponents[social.name]"
|
|
296
|
+
class="i-semi"
|
|
297
|
+
:fill="theme === 'light' ? 'rgb(var(--black))' : 'rgb(var(--white))'"
|
|
298
|
+
/>
|
|
299
|
+
</a>
|
|
300
|
+
</div>
|
|
301
|
+
</div>
|
|
302
|
+
</div>
|
|
303
|
+
</div>
|
|
304
|
+
|
|
305
|
+
<!-- Bottom Section -->
|
|
306
|
+
<div class="
|
|
307
|
+
pd-medium
|
|
308
|
+
br-t br-solid
|
|
309
|
+
flex flex-justify-between flex-v-center
|
|
310
|
+
flex-nowrap
|
|
311
|
+
mobile:flex-column mobile:gap-small
|
|
312
|
+
mobile:t-center
|
|
313
|
+
"
|
|
314
|
+
:class="{
|
|
315
|
+
'br-light': theme === 'light',
|
|
316
|
+
'br-dark': theme === 'dark'
|
|
317
|
+
}"
|
|
318
|
+
>
|
|
319
|
+
<!-- Copyright -->
|
|
320
|
+
<p class="t-small t-medium uppercase mobile:t-center">
|
|
321
|
+
{{ t('year') }}
|
|
322
|
+
<span class="t-main copyleft">{{ t('heart') }}</span>
|
|
323
|
+
{{ t('copyright') }}
|
|
324
|
+
</p>
|
|
325
|
+
|
|
326
|
+
<a href="https://ozdao.dev" target="_blank" rel="noopener" class="flex-nowrap flex-v-center flex t-medium gap-thin br-1px br-light pd-thin radius-thin">
|
|
327
|
+
<Logotype class="h-1r w-auto"/>
|
|
328
|
+
<span>{{ t('ozdao') }}</span>
|
|
329
|
+
</a>
|
|
330
|
+
</div>
|
|
331
|
+
</footer>
|
|
332
|
+
</template>
|
|
333
|
+
|
|
334
|
+
<style lang="scss">
|
|
335
|
+
.cols-3-footer {
|
|
336
|
+
grid-template-columns: 5fr 7fr 4fr;
|
|
337
|
+
}
|
|
338
|
+
</style>
|
|
@@ -15,11 +15,14 @@ import IconAddress from '@martyrs/src/modules/icons/entities/IconAddress.vue';
|
|
|
15
15
|
import IconTime from '@martyrs/src/modules/icons/entities/IconTime.vue';
|
|
16
16
|
|
|
17
17
|
import IconInfo from '@martyrs/src/modules/icons/navigation/IconInfo.vue'
|
|
18
|
-
import
|
|
19
|
-
import
|
|
20
|
-
import
|
|
21
|
-
import
|
|
22
|
-
import
|
|
18
|
+
import IconInstagram from '@martyrs/src/modules/icons/socials/instagram.vue';
|
|
19
|
+
import IconFacebook from '@martyrs/src/modules/icons/socials/facebook.vue';
|
|
20
|
+
import IconLinkedin from '@martyrs/src/modules/icons/socials/linkedin.vue'
|
|
21
|
+
import IconYoutube from '@martyrs/src/modules/icons/socials/youtube.vue'
|
|
22
|
+
import IconWhatsapp from '@martyrs/src/modules/icons/socials/whatsapp.vue'
|
|
23
|
+
|
|
24
|
+
import Logotype from '@martyrs/src/modules/icons/logos/Logotype.vue'
|
|
25
|
+
|
|
23
26
|
|
|
24
27
|
// Props
|
|
25
28
|
const props = defineProps({
|
|
@@ -41,8 +44,8 @@ const text = {
|
|
|
41
44
|
locale: 'en',
|
|
42
45
|
messages: {
|
|
43
46
|
en: {
|
|
44
|
-
linkAppStore: '
|
|
45
|
-
linkGooglePlay: '
|
|
47
|
+
linkAppStore: 'https://play.google.com/store/apps/details?id=com.threestepsrental.app',
|
|
48
|
+
linkGooglePlay: 'https://play.google.com/store/apps/details?id=com.threestepsrental.app',
|
|
46
49
|
// Contact
|
|
47
50
|
description: "3SR – Premium Video Gear Rentals for Filmmakers and Content Creators",
|
|
48
51
|
contact: 'Contact',
|
|
@@ -61,12 +64,12 @@ const text = {
|
|
|
61
64
|
// Footer
|
|
62
65
|
year: '2025 ',
|
|
63
66
|
heart: "❤",
|
|
64
|
-
copyright: 'Three Steps Studio Ltd. ',
|
|
65
|
-
ozdao: 'Builded
|
|
67
|
+
copyright: 'Three Steps Studio Ltd. All Rights Reserved.',
|
|
68
|
+
ozdao: 'Builded in OZ DAO',
|
|
66
69
|
|
|
67
70
|
// Contact info
|
|
68
71
|
phoneNumber: '+44 77 7878 4893',
|
|
69
|
-
emailAddress: '
|
|
72
|
+
emailAddress: "info{'@'}3stepsprod.com",
|
|
70
73
|
|
|
71
74
|
// Navigation columns
|
|
72
75
|
navigationColumns: [
|
|
@@ -75,19 +78,19 @@ const text = {
|
|
|
75
78
|
{
|
|
76
79
|
title: 'Equipment',
|
|
77
80
|
items: [
|
|
78
|
-
{ name: 'Cameras', url: 'cameras' },
|
|
79
|
-
{ name: 'Lighting', url: 'lighting' },
|
|
80
|
-
{ name: 'Stabilizers', url: '
|
|
81
|
-
{ name: 'Accessories', url: 'accessories' }
|
|
81
|
+
{ name: 'Cameras', url: 'products/categories/cameras' },
|
|
82
|
+
{ name: 'Lighting', url: 'products/categories/lighting-kits' },
|
|
83
|
+
{ name: 'Stabilizers', url: 'products/categories/stabilization-motion' },
|
|
84
|
+
{ name: 'Accessories', url: 'products/categories/accessories' }
|
|
82
85
|
]
|
|
83
86
|
},
|
|
84
87
|
{
|
|
85
88
|
title: 'Services',
|
|
86
89
|
items: [
|
|
87
|
-
{ name: 'Kits & Packages', url: 'kits-packages' },
|
|
88
|
-
{ name: 'Studio Hire', url: 'studio-hire' },
|
|
89
|
-
{ name: 'Delivery', url: 'delivery' },
|
|
90
|
-
{ name: 'Production Help', url: 'production-help' }
|
|
90
|
+
{ name: 'Kits & Packages', url: 'products/categories/kits-packages' },
|
|
91
|
+
{ name: 'Studio Hire', url: 'products/categories/studio-hire' },
|
|
92
|
+
{ name: 'Delivery', url: 'products/categories/delivery' },
|
|
93
|
+
{ name: 'Production Help', url: 'products/categories/production-help' }
|
|
91
94
|
]
|
|
92
95
|
}
|
|
93
96
|
]
|
|
@@ -97,19 +100,19 @@ const text = {
|
|
|
97
100
|
{
|
|
98
101
|
title: 'Company',
|
|
99
102
|
items: [
|
|
100
|
-
{ name: 'About Us', url: 'about' },
|
|
101
|
-
{ name: 'Contact', url: 'contact' },
|
|
102
|
-
{ name: 'FAQ', url: 'faq' },
|
|
103
|
-
{ name: 'Blog', url: '
|
|
103
|
+
{ name: 'About Us', url: 'pages/about' },
|
|
104
|
+
{ name: 'Contact', url: 'pages/contact' },
|
|
105
|
+
{ name: 'FAQ', url: 'pages/faq' },
|
|
106
|
+
{ name: 'Blog', url: '/community' }
|
|
104
107
|
]
|
|
105
108
|
},
|
|
106
109
|
{
|
|
107
110
|
title: 'Legal',
|
|
108
111
|
items: [
|
|
109
|
-
{ name: 'Privacy Policy', url: 'privacy-policy' },
|
|
110
|
-
{ name: 'Cookie Policy', url: 'cookie-policy' },
|
|
111
|
-
{ name: 'Terms of Use', url: 'terms-of-use' },
|
|
112
|
-
{ name: 'EULA', url: 'eula' }
|
|
112
|
+
{ name: 'Privacy Policy', url: 'pages/privacy-policy' },
|
|
113
|
+
{ name: 'Cookie Policy', url: 'pages/cookie-policy' },
|
|
114
|
+
{ name: 'Terms of Use', url: 'pages/terms-of-use' },
|
|
115
|
+
{ name: 'EULA', url: 'pages/eula' }
|
|
113
116
|
]
|
|
114
117
|
}
|
|
115
118
|
]
|
|
@@ -119,36 +122,40 @@ const text = {
|
|
|
119
122
|
// Social links
|
|
120
123
|
socialLinks: [
|
|
121
124
|
{
|
|
122
|
-
name: '
|
|
123
|
-
url: 'https://www.instagram.com/3stepsprod'
|
|
124
|
-
icon: instagram
|
|
125
|
+
name: 'IconInstagram',
|
|
126
|
+
url: 'https://www.instagram.com/3stepsprod'
|
|
125
127
|
},
|
|
126
128
|
{
|
|
127
|
-
name: '
|
|
128
|
-
url: 'https://www.youtube.com/@threestepsproduction'
|
|
129
|
-
icon: youtube
|
|
129
|
+
name: 'IconYoutube',
|
|
130
|
+
url: 'https://www.youtube.com/@threestepsproduction'
|
|
130
131
|
},
|
|
131
132
|
{
|
|
132
|
-
name: '
|
|
133
|
-
url: 'https://api.whatsapp.com/send/?phone=447778784893&text&type=phone_number&app_absent=0'
|
|
134
|
-
icon: whatsapp
|
|
133
|
+
name: 'IconWhatsapp',
|
|
134
|
+
url: 'https://api.whatsapp.com/send/?phone=447778784893&text&type=phone_number&app_absent=0'
|
|
135
135
|
}
|
|
136
136
|
]
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
139
|
}
|
|
140
140
|
|
|
141
|
-
const { t, te, tm } = useI18n(
|
|
141
|
+
const { t, te, tm } = useI18n({
|
|
142
|
+
useScope: 'global',
|
|
143
|
+
messages: text.messages
|
|
144
|
+
})
|
|
142
145
|
|
|
143
|
-
//
|
|
144
|
-
const
|
|
145
|
-
|
|
146
|
+
// Component mapping for social icons
|
|
147
|
+
const iconComponents = {
|
|
148
|
+
IconInstagram,
|
|
149
|
+
IconFacebook,
|
|
150
|
+
IconLinkedin,
|
|
151
|
+
IconYoutube,
|
|
152
|
+
IconWhatsapp
|
|
153
|
+
}
|
|
146
154
|
</script>
|
|
147
155
|
|
|
148
156
|
<template>
|
|
149
157
|
<footer
|
|
150
158
|
class="
|
|
151
|
-
pd-medium pd-t-large
|
|
152
159
|
w-100
|
|
153
160
|
br-t br-solid
|
|
154
161
|
"
|
|
@@ -157,8 +164,8 @@ const socialLinks = computed(() => tm('socialLinks'))
|
|
|
157
164
|
't-white bg-black br-dark': theme === 'dark'
|
|
158
165
|
}"
|
|
159
166
|
>
|
|
160
|
-
|
|
161
|
-
|
|
167
|
+
<div class="pd-medium">
|
|
168
|
+
<!-- Top Section -->
|
|
162
169
|
<component
|
|
163
170
|
v-if="logotype"
|
|
164
171
|
:is="logotype"
|
|
@@ -167,7 +174,7 @@ const socialLinks = computed(() => tm('socialLinks'))
|
|
|
167
174
|
class="cursor-pointer h-3r mn-b-medium"
|
|
168
175
|
/>
|
|
169
176
|
|
|
170
|
-
<div class="grid cols-
|
|
177
|
+
<div class="grid cols-3-footer tablet:cols-2 mobile:cols-1 gap-extra mobile:gap-big">
|
|
171
178
|
|
|
172
179
|
<!-- Contact Block -->
|
|
173
180
|
<div class="col w-max-15r">
|
|
@@ -233,22 +240,24 @@ const socialLinks = computed(() => tm('socialLinks'))
|
|
|
233
240
|
</div>
|
|
234
241
|
|
|
235
242
|
<!-- Navigation Columns -->
|
|
236
|
-
<div
|
|
237
|
-
<div v-for="(
|
|
238
|
-
<
|
|
239
|
-
|
|
240
|
-
<
|
|
241
|
-
<
|
|
242
|
-
<
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
243
|
+
<div class="cols-2 gap-big">
|
|
244
|
+
<div v-for="(column, colIndex) in tm('navigationColumns')" :key="colIndex" class="flex flex-column gap-medium">
|
|
245
|
+
<div v-for="(section, sectionIndex) in column.sections" :key="sectionIndex" class="">
|
|
246
|
+
<h4 class="h5 t-medium mn-b-regular">{{ section.title }}</h4>
|
|
247
|
+
<nav>
|
|
248
|
+
<ul class="flex flex-column gap-thin">
|
|
249
|
+
<li v-for="item in section.items" :key="item.url">
|
|
250
|
+
<router-link
|
|
251
|
+
:to="`/${item.url}`"
|
|
252
|
+
class="t-small transition-opacity hover-opacity-70"
|
|
253
|
+
:class="theme === 'light' ? 't-black' : 't-white'"
|
|
254
|
+
>
|
|
255
|
+
{{ item.name }}
|
|
256
|
+
</router-link>
|
|
257
|
+
</li>
|
|
258
|
+
</ul>
|
|
259
|
+
</nav>
|
|
260
|
+
</div>
|
|
252
261
|
</div>
|
|
253
262
|
</div>
|
|
254
263
|
|
|
@@ -266,9 +275,9 @@ const socialLinks = computed(() => tm('socialLinks'))
|
|
|
266
275
|
|
|
267
276
|
<h4 class="h5 t-medium mn-b-regular">{{ t('follow') }}</h4>
|
|
268
277
|
<!-- Social Links -->
|
|
269
|
-
<div class="flex gap-
|
|
278
|
+
<div class="flex gap-thin">
|
|
270
279
|
<a
|
|
271
|
-
v-for="social in socialLinks"
|
|
280
|
+
v-for="social in tm('socialLinks')"
|
|
272
281
|
:key="social.name"
|
|
273
282
|
:href="social.url"
|
|
274
283
|
target="_blank"
|
|
@@ -282,7 +291,7 @@ const socialLinks = computed(() => tm('socialLinks'))
|
|
|
282
291
|
"
|
|
283
292
|
>
|
|
284
293
|
<component
|
|
285
|
-
:is="social.
|
|
294
|
+
:is="iconComponents[social.name]"
|
|
286
295
|
class="i-semi"
|
|
287
296
|
:fill="theme === 'light' ? 'rgb(var(--black))' : 'rgb(var(--white))'"
|
|
288
297
|
/>
|
|
@@ -290,47 +299,43 @@ const socialLinks = computed(() => tm('socialLinks'))
|
|
|
290
299
|
</div>
|
|
291
300
|
</div>
|
|
292
301
|
</div>
|
|
302
|
+
</div>
|
|
293
303
|
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
304
|
+
<!-- Bottom Section -->
|
|
305
|
+
<div class="
|
|
306
|
+
pd-medium
|
|
307
|
+
br-t
|
|
308
|
+
br-solid
|
|
309
|
+
flex
|
|
310
|
+
flex-justify-between
|
|
311
|
+
flex-v-center
|
|
312
|
+
flex-nowrap
|
|
313
|
+
mobile:flex-column
|
|
314
|
+
mobile:flex-align-start
|
|
315
|
+
mobile:gap-small
|
|
316
|
+
"
|
|
317
|
+
:class="{
|
|
318
|
+
'br-light': theme === 'light',
|
|
319
|
+
'br-dark': theme === 'dark'
|
|
320
|
+
}"
|
|
321
|
+
>
|
|
322
|
+
<!-- Copyright -->
|
|
323
|
+
<p class="t-small t-medium uppercase">
|
|
324
|
+
{{ t('year') }}
|
|
325
|
+
<span class="t-main copyleft">{{ t('heart') }}</span>
|
|
326
|
+
{{ t('copyright') }}
|
|
327
|
+
</p>
|
|
328
|
+
|
|
329
|
+
<a href="https://ozdao.dev" target="_blank" rel="noopener" class="flex-nowrap flex-v-center flex t-medium gap-thin br-1px br-light pd-thin radius-thin">
|
|
330
|
+
<Logotype class="h-1r w-auto"/>
|
|
331
|
+
<span>{{ t('ozdao') }}</span>
|
|
332
|
+
</a>
|
|
315
333
|
</div>
|
|
316
334
|
</footer>
|
|
317
335
|
</template>
|
|
318
336
|
|
|
319
|
-
<style lang="scss"
|
|
320
|
-
.cols-
|
|
321
|
-
grid-template-columns: 5fr
|
|
322
|
-
}
|
|
323
|
-
footer {
|
|
324
|
-
transition: background-color 0.3s ease, color 0.3s ease;
|
|
325
|
-
|
|
326
|
-
a {
|
|
327
|
-
text-decoration: none;
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
ul {
|
|
331
|
-
list-style: none;
|
|
332
|
-
padding: 0;
|
|
333
|
-
margin: 0;
|
|
334
|
-
}
|
|
337
|
+
<style lang="scss">
|
|
338
|
+
.cols-3-footer {
|
|
339
|
+
grid-template-columns: 5fr 7fr 4fr;
|
|
335
340
|
}
|
|
336
341
|
</style>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<svg class="
|
|
2
|
+
<svg class="w-auto" width="270" height="300" viewBox="0 0 270 300" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
3
3
|
<g clip-path="url(#clip0)">
|
|
4
4
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M264.626 52.2791C265.531 57.2858 266 62.4066 266 67.6155C266 125.882 207.349 173.116 135 173.116C62.6507 173.116 4 125.882 4 67.6155C4 62.4066 4.46875 57.2858 5.37413 52.2791C11.0997 32.6306 21.1714 14.8341 34.4789 0C34.1621 2.17658 34 4.38345 34 6.61562C34 43.8948 79.2192 74.1156 135 74.1156C190.781 74.1156 236 43.8948 236 6.61562C236 4.38345 235.838 2.17659 235.521 5.29254e-06C248.829 14.8341 258.9 32.6306 264.626 52.2791Z" fill="#00FF88"/>
|
|
5
5
|
<path d="M270 165C270 239.558 209.558 300 135 300C60.4416 300 0 239.558 0 165C0 90.4416 60.4416 30 135 30C209.558 30 270 90.4416 270 165Z" fill="#00FF88"/>
|