cja-phoenix 0.7.2 → 0.7.4

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.
@@ -1,223 +0,0 @@
1
- <template>
2
- <footer class="main-footer-container" id="page-footer">
3
- <div class="footer-wrapper">
4
- <img class="footer-logo" :src="imageURL + 'CPJ-logo-header.svg'" />
5
- <nav class="footer-navigation">
6
- <Scaffold v-if="activeViewport.lg">
7
- <div class="nav-column" v-for="navColumn in navGroups">
8
- <div class="nav-group" v-for="category in navColumn">
9
- <component
10
- class="nav-group-title footer-link"
11
- :is="category.link ? 'a' : 'div'"
12
- :href="category.link ? getStoryblokUrl(category.link) : ''"
13
- :target="category.link?.target"
14
- >{{ category.text }}</component
15
- >
16
- <ul class="footer-link-list" v-if="category.subLinks?.length">
17
- <li v-for="footerLink in category.subLinks">
18
- <a
19
- class="footer-link"
20
- :href="getStoryblokUrl(footerLink.link)"
21
- :target="footerLink.link.target"
22
- >{{ footerLink.text }}</a
23
- >
24
- </li>
25
- </ul>
26
- </div>
27
- </div>
28
- </Scaffold>
29
- <Scaffold v-else>
30
- <Scaffold v-for="navColumn in navGroups">
31
- <Scaffold v-for="category in navColumn">
32
- <CollapseContainer v-if="category.subLinks?.length">
33
- <template #header>
34
- <span class="nav-group-title">{{ category.text }}</span>
35
- </template>
36
- <template #content>
37
- <ul class="footer-link-list">
38
- <li v-if="category.link">
39
- <a
40
- class="footer-link"
41
- :href="getStoryblokUrl(category.link)"
42
- :target="category.link.target"
43
- >{{ category.text }}</a
44
- >
45
- </li>
46
- <li v-for="footerLink in category.subLinks">
47
- <a
48
- class="footer-link"
49
- :href="getStoryblokUrl(footerLink.link)"
50
- :target="footerLink.link.target"
51
- >{{ footerLink.text }}</a
52
- >
53
- </li>
54
- </ul>
55
- </template>
56
- </CollapseContainer>
57
- <a
58
- v-else-if="category.link"
59
- class="nav-group-title footer-link"
60
- :href="getStoryblokUrl(category.link)"
61
- :target="category.link.target"
62
- >{{ category.text }}</a
63
- >
64
- </Scaffold>
65
- </Scaffold>
66
- </Scaffold>
67
- </nav>
68
- </div>
69
- <div class="social-links-container" v-if="socialLinks">
70
- <h4>{{ socialLinksTitle }}</h4>
71
- <ul class="social-links-list">
72
- <li v-for="social in socialLinks">
73
- <a
74
- :class="[social.socialNetwork]"
75
- :href="getStoryblokUrl(social.link)"
76
- :target="social.link.target"
77
- ></a>
78
- </li>
79
- </ul>
80
- </div>
81
- </footer>
82
- </template>
83
-
84
- <script lang="ts" setup>
85
- import { FooterCategory, SocialLink } from "../../types/Footer";
86
- import { getStoryblokUrl } from "../../utils/storyblokLink";
87
- import Scaffold from "../structural/Scaffold.vue";
88
- import CollapseContainer from "../structural/CollapseContainer.vue";
89
- import { useViewportDetector, useGlobalProperties } from "../../utils";
90
-
91
- withDefaults(
92
- defineProps<{
93
- navGroups: FooterCategory[][];
94
- socialLinksTitle?: string;
95
- socialLinks?: SocialLink[];
96
- }>(),
97
- {
98
- socialLinksTitle: "Siga-nos nas redes sociais",
99
- }
100
- );
101
-
102
- const { imageURL } = useGlobalProperties();
103
-
104
- const { activeViewport } = useViewportDetector();
105
- </script>
106
-
107
- <style lang="scss" scoped>
108
- @import "../../assets/breakpoints.scss";
109
-
110
- .main-footer-container {
111
- background: linear-gradient(
112
- 75.75deg,
113
- rgba(7, 107, 156, 0.08) 0%,
114
- rgba(255, 255, 255, 0) 100%
115
- ),
116
- #ffffff;
117
-
118
- .footer-wrapper {
119
- padding: 60px 32px;
120
- max-width: 1170px;
121
- margin: 0 auto;
122
-
123
- .footer-logo {
124
- display: block;
125
- margin: 0 auto 40px;
126
- width: 200px;
127
- }
128
- }
129
-
130
- .footer-navigation {
131
- display: grid;
132
- grid-template-columns: 1fr;
133
- gap: 16px;
134
- max-width: 400px;
135
- margin: 0 auto;
136
-
137
- @media screen and (min-width: $break-lg-min) {
138
- grid-template-columns: repeat(4, 1fr);
139
- max-width: none;
140
- margin: 0;
141
- }
142
-
143
- .nav-column {
144
- display: flex;
145
- flex-direction: column;
146
- gap: 40px;
147
-
148
- .nav-group {
149
- display: flex;
150
- flex-direction: column;
151
- gap: 16px;
152
- }
153
- }
154
-
155
- .nav-group-title {
156
- display: block;
157
- font-weight: 700;
158
- font-size: 16px;
159
- line-height: 20px;
160
- }
161
-
162
- .footer-link {
163
- color: inherit;
164
-
165
- &:hover {
166
- text-decoration: none;
167
- color: #076b9c;
168
- }
169
- }
170
-
171
- .footer-link-list {
172
- display: flex;
173
- flex-direction: column;
174
- gap: 16px;
175
- list-style: none;
176
- margin: 0;
177
- padding: 0 0 16px;
178
-
179
- @media screen and (min-width: $break-lg-min) {
180
- padding: 0;
181
- }
182
-
183
- li {
184
- font-size: 14px;
185
- line-height: 18px;
186
- }
187
- }
188
- }
189
-
190
- .social-links-container {
191
- background: #fff;
192
- box-shadow: 0px 4px 20px rgba(7, 107, 156, 0.1);
193
- padding: 32px 24px;
194
-
195
- h4 {
196
- font-size: 24px;
197
- line-height: 26px;
198
- margin: 0 0 20px;
199
- text-align: center;
200
- }
201
-
202
- ul {
203
- list-style: none;
204
- margin: 0;
205
- padding: 0;
206
- display: flex;
207
- flex-direction: row;
208
- justify-content: center;
209
- gap: 20px;
210
-
211
- a {
212
- border: 2px solid #076b9c;
213
- border-radius: 50%;
214
- font-size: 36px;
215
-
216
- &:hover {
217
- text-decoration: none;
218
- }
219
- }
220
- }
221
- }
222
- }
223
- </style>
@@ -1,17 +0,0 @@
1
- import { StoryLink } from "./Storyblok";
2
-
3
- interface FooterLink {
4
- text: string;
5
- link: StoryLink;
6
- }
7
-
8
- export interface FooterCategory {
9
- text: string;
10
- link?: StoryLink;
11
- subLinks?: FooterLink[];
12
- }
13
-
14
- export interface SocialLink {
15
- socialNetwork: string;
16
- link: StoryLink;
17
- }
@@ -1,10 +0,0 @@
1
- export interface StoryLink {
2
- linktype: "url" | "story" | "asset" | "email";
3
- url?: string;
4
- target?: HTMLAnchorElement["target"];
5
- story?: {
6
- url: string;
7
- slug: string;
8
- full_slug: string;
9
- };
10
- }
@@ -1,4 +0,0 @@
1
- import { StoryLink } from "../types/Storyblok";
2
-
3
- export const getStoryblokUrl = (link: StoryLink) =>
4
- link.linktype == "story" ? `/${link.story?.url}` : link.url;