@semplice-studio/pa-design-system 0.1.1 → 0.3.0
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/README.md +85 -128
- package/dist/components/PaAccordion/PaAccordion.vue.d.ts +0 -1
- package/dist/components/PaAccordion/PaAccordion.vue.js +3 -5
- package/dist/components/PaAccordion/PaAccordion.vue.js.map +1 -1
- package/dist/components/PaAccordion/PaAccordion.vue2.js +24 -30
- package/dist/components/PaAccordion/PaAccordion.vue2.js.map +1 -1
- package/dist/components/PaBanner/PaBanner.vue.js +6 -6
- package/dist/components/PaBanner/PaBanner.vue2.js +26 -28
- package/dist/components/PaBanner/PaBanner.vue2.js.map +1 -1
- package/dist/components/PaCard/PaCard.vue.d.ts +17 -14
- package/dist/components/PaCard/PaCard.vue.js +2 -2
- package/dist/components/PaCard/PaCard.vue2.js +37 -42
- package/dist/components/PaCard/PaCard.vue2.js.map +1 -1
- package/dist/components/PaCheckbox/PaCheckbox.vue.d.ts +5 -6
- package/dist/components/PaCheckbox/PaCheckbox.vue.js +2 -4
- package/dist/components/PaCheckbox/PaCheckbox.vue.js.map +1 -1
- package/dist/components/PaCheckbox/PaCheckbox.vue2.js +20 -26
- package/dist/components/PaCheckbox/PaCheckbox.vue2.js.map +1 -1
- package/dist/components/PaCheckboxGroup/PaCheckboxGroup.vue.d.ts +5 -6
- package/dist/components/PaCheckboxGroup/PaCheckboxGroup.vue.js +2 -4
- package/dist/components/PaCheckboxGroup/PaCheckboxGroup.vue.js.map +1 -1
- package/dist/components/PaCheckboxGroup/PaCheckboxGroup.vue2.js +25 -31
- package/dist/components/PaCheckboxGroup/PaCheckboxGroup.vue2.js.map +1 -1
- package/dist/components/PaDatePicker/PaDatePicker.vue.d.ts +13 -26
- package/dist/components/PaDatePicker/PaDatePicker.vue.js +4 -6
- package/dist/components/PaDatePicker/PaDatePicker.vue.js.map +1 -1
- package/dist/components/PaDatePicker/PaDatePicker.vue2.js +53 -59
- package/dist/components/PaDatePicker/PaDatePicker.vue2.js.map +1 -1
- package/dist/components/PaDrawer/PaDrawer.vue.js +2 -2
- package/dist/components/PaDrawer/PaDrawer.vue2.js +37 -41
- package/dist/components/PaDrawer/PaDrawer.vue2.js.map +1 -1
- package/dist/components/PaFileUpload/PaFileUpload.vue.d.ts +0 -1
- package/dist/components/PaFileUpload/PaFileUpload.vue.js +3 -5
- package/dist/components/PaFileUpload/PaFileUpload.vue.js.map +1 -1
- package/dist/components/PaFileUpload/PaFileUpload.vue2.js +22 -28
- package/dist/components/PaFileUpload/PaFileUpload.vue2.js.map +1 -1
- package/dist/components/PaFooter/PaFooter.vue.js +1 -1
- package/dist/components/PaFooter/PaFooter.vue2.js +43 -48
- package/dist/components/PaFooter/PaFooter.vue2.js.map +1 -1
- package/dist/components/PaHeaderDesktop/PaHeaderDesktop.vue.js +1 -1
- package/dist/components/PaHeaderDesktop/PaHeaderDesktop.vue2.js +61 -66
- package/dist/components/PaHeaderDesktop/PaHeaderDesktop.vue2.js.map +1 -1
- package/dist/components/PaHeaderMobile/PaHeaderMobile.vue.js +2 -2
- package/dist/components/PaHeaderMobile/PaHeaderMobile.vue2.js +69 -74
- package/dist/components/PaHeaderMobile/PaHeaderMobile.vue2.js.map +1 -1
- package/dist/components/PaHero/PaHero.vue.d.ts +15 -12
- package/dist/components/PaHero/PaHero.vue.js +2 -2
- package/dist/components/PaHero/PaHero.vue2.js +36 -41
- package/dist/components/PaHero/PaHero.vue2.js.map +1 -1
- package/dist/components/PaInput/PaInput.vue.d.ts +15 -13
- package/dist/components/PaInput/PaInput.vue.js +4 -6
- package/dist/components/PaInput/PaInput.vue.js.map +1 -1
- package/dist/components/PaInput/PaInput.vue2.js +27 -33
- package/dist/components/PaInput/PaInput.vue2.js.map +1 -1
- package/dist/components/PaModal/PaModal.vue.d.ts +14 -11
- package/dist/components/PaModal/PaModal.vue.js +3 -3
- package/dist/components/PaModal/PaModal.vue2.js +41 -46
- package/dist/components/PaModal/PaModal.vue2.js.map +1 -1
- package/dist/components/PaMonthPicker/PaMonthPicker.vue.d.ts +13 -26
- package/dist/components/PaMonthPicker/PaMonthPicker.vue.js +2 -4
- package/dist/components/PaMonthPicker/PaMonthPicker.vue.js.map +1 -1
- package/dist/components/PaMonthPicker/PaMonthPicker.vue2.js +64 -70
- package/dist/components/PaMonthPicker/PaMonthPicker.vue2.js.map +1 -1
- package/dist/components/PaPagination/PaPagination.vue.js +2 -2
- package/dist/components/PaPagination/PaPagination.vue2.js +41 -46
- package/dist/components/PaPagination/PaPagination.vue2.js.map +1 -1
- package/dist/components/PaRadioGroup/PaRadioGroup.vue.d.ts +5 -6
- package/dist/components/PaRadioGroup/PaRadioGroup.vue.js +2 -4
- package/dist/components/PaRadioGroup/PaRadioGroup.vue.js.map +1 -1
- package/dist/components/PaRadioGroup/PaRadioGroup.vue2.js +22 -28
- package/dist/components/PaRadioGroup/PaRadioGroup.vue2.js.map +1 -1
- package/dist/components/PaRangePicker/PaRangePicker.vue.d.ts +0 -1
- package/dist/components/PaRangePicker/PaRangePicker.vue.js +4 -6
- package/dist/components/PaRangePicker/PaRangePicker.vue.js.map +1 -1
- package/dist/components/PaRangePicker/PaRangePicker.vue2.js +76 -82
- package/dist/components/PaRangePicker/PaRangePicker.vue2.js.map +1 -1
- package/dist/components/PaSearchBar/PaSearchBar.vue.d.ts +0 -1
- package/dist/components/PaSearchBar/PaSearchBar.vue.js +3 -5
- package/dist/components/PaSearchBar/PaSearchBar.vue.js.map +1 -1
- package/dist/components/PaSearchBar/PaSearchBar.vue2.js +55 -61
- package/dist/components/PaSearchBar/PaSearchBar.vue2.js.map +1 -1
- package/dist/components/PaSelect/PaSelect.vue.d.ts +5 -6
- package/dist/components/PaSelect/PaSelect.vue.js +4 -6
- package/dist/components/PaSelect/PaSelect.vue.js.map +1 -1
- package/dist/components/PaSelect/PaSelect.vue2.js +25 -31
- package/dist/components/PaSelect/PaSelect.vue2.js.map +1 -1
- package/dist/components/PaTabs/PaTabs.vue.js +1 -1
- package/dist/components/PaTabs/PaTabs.vue2.js +17 -19
- package/dist/components/PaTabs/PaTabs.vue2.js.map +1 -1
- package/dist/components/PaTextarea/PaTextarea.vue.d.ts +5 -6
- package/dist/components/PaTextarea/PaTextarea.vue.js +4 -6
- package/dist/components/PaTextarea/PaTextarea.vue.js.map +1 -1
- package/dist/components/PaTextarea/PaTextarea.vue2.js +16 -22
- package/dist/components/PaTextarea/PaTextarea.vue2.js.map +1 -1
- package/dist/components/PaTimePicker/PaTimePicker.vue.d.ts +0 -1
- package/dist/components/PaTimePicker/PaTimePicker.vue.js +2 -4
- package/dist/components/PaTimePicker/PaTimePicker.vue.js.map +1 -1
- package/dist/components/PaTimePicker/PaTimePicker.vue2.js +44 -50
- package/dist/components/PaTimePicker/PaTimePicker.vue2.js.map +1 -1
- package/dist/components/PaTitleBar/PaTitleBar.vue.d.ts +12 -9
- package/dist/components/PaTitleBar/PaTitleBar.vue.js +2 -2
- package/dist/components/PaTitleBar/PaTitleBar.vue2.js +34 -39
- package/dist/components/PaTitleBar/PaTitleBar.vue2.js.map +1 -1
- package/dist/components/PaToggle/PaToggle.vue.d.ts +0 -1
- package/dist/components/PaToggle/PaToggle.vue.js +2 -4
- package/dist/components/PaToggle/PaToggle.vue.js.map +1 -1
- package/dist/components/PaToggle/PaToggle.vue2.js +20 -26
- package/dist/components/PaToggle/PaToggle.vue2.js.map +1 -1
- package/dist/components/PaYearPicker/PaYearPicker.vue.d.ts +13 -26
- package/dist/components/PaYearPicker/PaYearPicker.vue.js +4 -6
- package/dist/components/PaYearPicker/PaYearPicker.vue.js.map +1 -1
- package/dist/components/PaYearPicker/PaYearPicker.vue2.js +70 -76
- package/dist/components/PaYearPicker/PaYearPicker.vue2.js.map +1 -1
- package/dist/style.css +1 -1
- package/docs/design-system.md +590 -0
- package/docs/layouts.md +297 -0
- package/docs/page-composition-examples.md +286 -0
- package/docs/public-surface.md +68 -0
- package/package.json +8 -4
|
@@ -1,49 +1,44 @@
|
|
|
1
|
-
import { defineComponent as z, useSlots as j, computed as n, ref as C, onMounted as
|
|
1
|
+
import { defineComponent as z, useSlots as j, useId as x, computed as n, ref as C, onMounted as D, onBeforeUnmount as F, openBlock as e, createElementBlock as t, normalizeClass as T, createElementVNode as d, toDisplayString as f, createVNode as $, createCommentVNode as l, renderSlot as _, Fragment as b, renderList as v, createBlock as K, withCtx as X, createStaticVNode as U, createTextVNode as Z } from "vue";
|
|
2
2
|
import M from "../PaIcon/PaIcon.vue.js";
|
|
3
|
-
import
|
|
4
|
-
const
|
|
3
|
+
import q from "../PaAccordion/PaAccordion.vue.js";
|
|
4
|
+
const G = {
|
|
5
5
|
key: 0,
|
|
6
6
|
class: "pa-footer__band pa-footer__band--back-to-top"
|
|
7
|
-
},
|
|
7
|
+
}, H = ["aria-label"], J = { class: "pa-footer__back-to-top-label" }, W = {
|
|
8
8
|
key: 1,
|
|
9
9
|
class: "pa-footer__band pa-footer__band--sitemap"
|
|
10
|
-
},
|
|
10
|
+
}, Y = { class: "pa-footer__sitemap-grid" }, ee = ["href"], te = {
|
|
11
11
|
key: 0,
|
|
12
12
|
class: "pa-footer__sitemap-heading"
|
|
13
|
-
},
|
|
13
|
+
}, oe = ["href"], ae = {
|
|
14
14
|
key: 2,
|
|
15
15
|
class: "pa-footer__band pa-footer__band--contact"
|
|
16
|
-
},
|
|
16
|
+
}, se = { class: "pa-footer__contact-content" }, re = {
|
|
17
17
|
key: 0,
|
|
18
18
|
class: "pa-footer__logo"
|
|
19
|
-
},
|
|
19
|
+
}, le = { class: "pa-footer__contact-stack" }, ne = {
|
|
20
20
|
key: 0,
|
|
21
21
|
class: "pa-footer__address"
|
|
22
|
-
},
|
|
22
|
+
}, ie = {
|
|
23
23
|
key: 0,
|
|
24
24
|
class: "pa-footer__address-title"
|
|
25
|
-
},
|
|
25
|
+
}, de = {
|
|
26
26
|
key: 1,
|
|
27
27
|
class: "pa-footer__socials"
|
|
28
|
-
},
|
|
28
|
+
}, ce = ["href", "aria-label"], ue = {
|
|
29
29
|
key: 2,
|
|
30
30
|
class: "pa-footer__contact-extra"
|
|
31
|
-
},
|
|
31
|
+
}, pe = {
|
|
32
32
|
key: 3,
|
|
33
33
|
class: "pa-footer__band pa-footer__band--privacy"
|
|
34
|
-
},
|
|
34
|
+
}, fe = { class: "pa-footer__privacy-content" }, _e = {
|
|
35
35
|
key: 0,
|
|
36
36
|
class: "pa-footer__republic-emblem",
|
|
37
37
|
"aria-hidden": "true"
|
|
38
|
-
},
|
|
38
|
+
}, he = {
|
|
39
39
|
key: 1,
|
|
40
40
|
class: "pa-footer__copyright"
|
|
41
|
-
}
|
|
42
|
-
let he = 0;
|
|
43
|
-
function be() {
|
|
44
|
-
return ++he;
|
|
45
|
-
}
|
|
46
|
-
const me = /* @__PURE__ */ z({
|
|
41
|
+
}, ye = /* @__PURE__ */ z({
|
|
47
42
|
__name: "PaFooter",
|
|
48
43
|
props: {
|
|
49
44
|
backToTop: { type: [Boolean, Object], default: !0 },
|
|
@@ -55,7 +50,7 @@ const me = /* @__PURE__ */ z({
|
|
|
55
50
|
},
|
|
56
51
|
emits: ["back-to-top"],
|
|
57
52
|
setup(i, { emit: R }) {
|
|
58
|
-
const a = i, E = R, c = j(), P = `pa-footer-${
|
|
53
|
+
const a = i, E = R, c = j(), P = `pa-footer-${x()}`, V = n(() => a.backToTop !== !1), k = n(() => typeof a.backToTop == "object" && a.backToTop !== null ? a.backToTop.label ?? "Torna su" : "Torna su"), N = n(() => typeof a.backToTop == "object" && a.backToTop !== null ? a.backToTop.ariaLabel ?? k.value : k.value), I = n(
|
|
59
54
|
() => a.sitemap.length > 0 || !!c.sitemap
|
|
60
55
|
), w = n(
|
|
61
56
|
() => !!c.address || !!(a.address && (a.address.title || a.address.lines && a.address.lines.length > 0))
|
|
@@ -71,7 +66,7 @@ const me = /* @__PURE__ */ z({
|
|
|
71
66
|
() => B.value || Q.value
|
|
72
67
|
), g = C(null), y = C(!1);
|
|
73
68
|
let h = null;
|
|
74
|
-
|
|
69
|
+
D(() => {
|
|
75
70
|
g.value && (typeof ResizeObserver > "u" || (h = new ResizeObserver((s) => {
|
|
76
71
|
const r = s[0];
|
|
77
72
|
r && (y.value = r.contentRect.width <= 720);
|
|
@@ -103,40 +98,40 @@ const me = /* @__PURE__ */ z({
|
|
|
103
98
|
class: T(["pa-footer", { "pa-footer--mobile": y.value }]),
|
|
104
99
|
role: "contentinfo"
|
|
105
100
|
}, [
|
|
106
|
-
V.value ? (e(), t("div",
|
|
101
|
+
V.value ? (e(), t("div", G, [
|
|
107
102
|
d("button", {
|
|
108
103
|
type: "button",
|
|
109
104
|
class: "pa-footer__back-to-top",
|
|
110
105
|
"aria-label": N.value,
|
|
111
106
|
onClick: S
|
|
112
107
|
}, [
|
|
113
|
-
d("span",
|
|
108
|
+
d("span", J, f(k.value), 1),
|
|
114
109
|
$(M, {
|
|
115
110
|
name: "arrow-up",
|
|
116
111
|
size: "sm",
|
|
117
112
|
class: "pa-footer__back-to-top-icon"
|
|
118
113
|
})
|
|
119
|
-
], 8,
|
|
114
|
+
], 8, H),
|
|
120
115
|
r[0] || (r[0] = d("div", {
|
|
121
116
|
class: "pa-footer__divider",
|
|
122
117
|
"aria-hidden": "true"
|
|
123
118
|
}, null, -1))
|
|
124
119
|
])) : l("", !0),
|
|
125
|
-
I.value ? (e(), t("div",
|
|
120
|
+
I.value ? (e(), t("div", W, [
|
|
126
121
|
_(s.$slots, "sitemap", {}, () => [
|
|
127
|
-
d("div",
|
|
122
|
+
d("div", Y, [
|
|
128
123
|
(e(!0), t(b, null, v(i.sitemap, (o, u) => (e(), t(b, { key: u }, [
|
|
129
|
-
y.value && o.heading && o.heading.length > 0 ? (e(),
|
|
124
|
+
y.value && o.heading && o.heading.length > 0 ? (e(), K(q, {
|
|
130
125
|
key: 0,
|
|
131
126
|
title: o.heading,
|
|
132
127
|
class: "pa-footer__column pa-footer__column--heading-led pa-footer__column--accordion"
|
|
133
128
|
}, {
|
|
134
|
-
default:
|
|
129
|
+
default: X(() => [
|
|
135
130
|
(e(!0), t(b, null, v(o.links, (p, m) => (e(), t("a", {
|
|
136
131
|
key: m,
|
|
137
132
|
href: p.href,
|
|
138
133
|
class: "pa-footer__link pa-footer__link--small"
|
|
139
|
-
}, f(p.label), 9,
|
|
134
|
+
}, f(p.label), 9, ee))), 128))
|
|
140
135
|
]),
|
|
141
136
|
_: 2
|
|
142
137
|
}, 1032, ["title"])) : (e(), t("div", {
|
|
@@ -146,7 +141,7 @@ const me = /* @__PURE__ */ z({
|
|
|
146
141
|
o.heading && o.heading.length > 0 ? "pa-footer__column--heading-led" : "pa-footer__column--headingless"
|
|
147
142
|
])
|
|
148
143
|
}, [
|
|
149
|
-
o.heading && o.heading.length > 0 ? (e(), t("h3",
|
|
144
|
+
o.heading && o.heading.length > 0 ? (e(), t("h3", te, f(o.heading), 1)) : l("", !0),
|
|
150
145
|
(e(!0), t(b, null, v(o.links, (p, m) => (e(), t("a", {
|
|
151
146
|
key: m,
|
|
152
147
|
href: p.href,
|
|
@@ -154,23 +149,23 @@ const me = /* @__PURE__ */ z({
|
|
|
154
149
|
"pa-footer__link",
|
|
155
150
|
o.heading && o.heading.length > 0 ? "pa-footer__link--small" : "pa-footer__link--large"
|
|
156
151
|
])
|
|
157
|
-
}, f(p.label), 11,
|
|
152
|
+
}, f(p.label), 11, oe))), 128))
|
|
158
153
|
], 2))
|
|
159
154
|
], 64))), 128))
|
|
160
155
|
])
|
|
161
156
|
], !0)
|
|
162
157
|
])) : l("", !0),
|
|
163
|
-
O.value ? (e(), t("div",
|
|
164
|
-
d("div",
|
|
165
|
-
s.$slots.logo ? (e(), t("div",
|
|
158
|
+
O.value ? (e(), t("div", ae, [
|
|
159
|
+
d("div", se, [
|
|
160
|
+
s.$slots.logo ? (e(), t("div", re, [
|
|
166
161
|
_(s.$slots, "logo", {}, void 0, !0)
|
|
167
162
|
])) : l("", !0),
|
|
168
|
-
d("div",
|
|
169
|
-
w.value ? (e(), t("div",
|
|
163
|
+
d("div", le, [
|
|
164
|
+
w.value ? (e(), t("div", ne, [
|
|
170
165
|
_(s.$slots, "address", {}, () => {
|
|
171
166
|
var o;
|
|
172
167
|
return [
|
|
173
|
-
i.address && i.address.title ? (e(), t("p",
|
|
168
|
+
i.address && i.address.title ? (e(), t("p", ie, f(i.address.title), 1)) : l("", !0),
|
|
174
169
|
(e(!0), t(b, null, v(((o = i.address) == null ? void 0 : o.lines) ?? [], (u, p) => (e(), t("p", {
|
|
175
170
|
key: p,
|
|
176
171
|
class: "pa-footer__address-line"
|
|
@@ -178,7 +173,7 @@ const me = /* @__PURE__ */ z({
|
|
|
178
173
|
];
|
|
179
174
|
}, !0)
|
|
180
175
|
])) : l("", !0),
|
|
181
|
-
L.value ? (e(), t("div",
|
|
176
|
+
L.value ? (e(), t("div", de, [
|
|
182
177
|
_(s.$slots, "socials", {}, () => [
|
|
183
178
|
(e(!0), t(b, null, v(i.socials, (o, u) => (e(), t("a", {
|
|
184
179
|
key: u,
|
|
@@ -190,29 +185,29 @@ const me = /* @__PURE__ */ z({
|
|
|
190
185
|
name: o.icon,
|
|
191
186
|
size: "md"
|
|
192
187
|
}, null, 8, ["name"])
|
|
193
|
-
], 8,
|
|
188
|
+
], 8, ce))), 128))
|
|
194
189
|
], !0)
|
|
195
190
|
])) : l("", !0),
|
|
196
|
-
s.$slots["contact-extra"] ? (e(), t("div",
|
|
191
|
+
s.$slots["contact-extra"] ? (e(), t("div", ue, [
|
|
197
192
|
_(s.$slots, "contact-extra", {}, void 0, !0)
|
|
198
193
|
])) : l("", !0)
|
|
199
194
|
])
|
|
200
195
|
])
|
|
201
196
|
])) : l("", !0),
|
|
202
|
-
A.value ? (e(), t("div",
|
|
197
|
+
A.value ? (e(), t("div", pe, [
|
|
203
198
|
r[2] || (r[2] = d("div", {
|
|
204
199
|
class: "pa-footer__divider",
|
|
205
200
|
"aria-hidden": "true"
|
|
206
201
|
}, null, -1)),
|
|
207
|
-
d("div",
|
|
208
|
-
s.$slots["privacy-logo"] || i.showRepublicEmblem ? (e(), t("span",
|
|
202
|
+
d("div", fe, [
|
|
203
|
+
s.$slots["privacy-logo"] || i.showRepublicEmblem ? (e(), t("span", _e, [
|
|
209
204
|
_(s.$slots, "privacy-logo", {}, () => [
|
|
210
|
-
r[1] || (r[1] = U('<svg viewBox="0 0 44 50" width="44" height="50" xmlns="http://www.w3.org/2000/svg" fill="currentColor" data-v-
|
|
205
|
+
r[1] || (r[1] = U('<svg viewBox="0 0 44 50" width="44" height="50" xmlns="http://www.w3.org/2000/svg" fill="currentColor" data-v-0e4e7bbd><circle cx="22" cy="22" r="14" fill="none" stroke="currentColor" stroke-width="1.5" data-v-0e4e7bbd></circle><path d="M22 9 L24.47 16.6 L32.46 16.6 L26 21.3 L28.47 28.9 L22 24.2 L15.53 28.9 L18 21.3 L11.54 16.6 L19.53 16.6 Z" data-v-0e4e7bbd></path><path d="M6 38 Q12 32 22 38 Q32 32 38 38" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" data-v-0e4e7bbd></path><path d="M9 42 Q14 38 22 42 Q30 38 35 42" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" data-v-0e4e7bbd></path><path d="M14 46 Q18 44 22 46 Q26 44 30 46" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" data-v-0e4e7bbd></path></svg>', 1))
|
|
211
206
|
], !0)
|
|
212
207
|
])) : l("", !0),
|
|
213
|
-
B.value ? (e(), t("p",
|
|
208
|
+
B.value ? (e(), t("p", he, [
|
|
214
209
|
_(s.$slots, "copyright", {}, () => [
|
|
215
|
-
|
|
210
|
+
Z(f(i.copyright), 1)
|
|
216
211
|
], !0)
|
|
217
212
|
])) : l("", !0)
|
|
218
213
|
])
|
|
@@ -221,6 +216,6 @@ const me = /* @__PURE__ */ z({
|
|
|
221
216
|
}
|
|
222
217
|
});
|
|
223
218
|
export {
|
|
224
|
-
|
|
219
|
+
ye as default
|
|
225
220
|
};
|
|
226
221
|
//# sourceMappingURL=PaFooter.vue2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaFooter.vue2.js","sources":["../../../src/components/PaFooter/PaFooter.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PaIconName } from '../PaIcon/PaIcon.vue'\n\nlet footerUid = 0\nfunction nextFooterId() {\n return ++footerUid\n}\n\nexport interface PaFooterBackToTopConfig {\n label?: string\n ariaLabel?: string\n}\n\nexport interface PaFooterLink {\n label: string\n href: string\n}\n\nexport interface PaFooterColumn {\n heading?: string\n links: PaFooterLink[]\n}\n\nexport interface PaFooterAddress {\n title?: string\n lines: string[]\n}\n\nexport interface PaFooterSocial {\n icon: PaIconName\n href: string\n label: string\n}\n\nexport interface PaFooterBackToTopEventPayload {\n originalEvent: MouseEvent\n preventDefault: () => void\n defaultPrevented: boolean\n}\n\nexport interface PaFooterProps {\n backToTop?: boolean | PaFooterBackToTopConfig\n sitemap?: PaFooterColumn[]\n address?: PaFooterAddress\n socials?: PaFooterSocial[]\n copyright?: string\n showRepublicEmblem?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, onBeforeUnmount, onMounted, ref, useSlots } from 'vue'\nimport PaIcon from '../PaIcon/PaIcon.vue'\nimport PaAccordion from '../PaAccordion/PaAccordion.vue'\n\nconst MOBILE_BREAKPOINT_PX = 720\n\nconst props = withDefaults(defineProps<PaFooterProps>(), {\n backToTop: true,\n sitemap: () => [],\n address: undefined,\n socials: () => [],\n copyright: undefined,\n showRepublicEmblem: true,\n})\n\nconst emit = defineEmits<{\n 'back-to-top': [PaFooterBackToTopEventPayload]\n}>()\n\nconst slots = useSlots()\n\nconst footerId = `pa-footer-${nextFooterId()}`\n\nconst backToTopEnabled = computed(() => props.backToTop !== false)\n\nconst backToTopLabel = computed(() => {\n if (typeof props.backToTop === 'object' && props.backToTop !== null) {\n return props.backToTop.label ?? 'Torna su'\n }\n return 'Torna su'\n})\n\nconst backToTopAriaLabel = computed(() => {\n if (typeof props.backToTop === 'object' && props.backToTop !== null) {\n return props.backToTop.ariaLabel ?? backToTopLabel.value\n }\n return backToTopLabel.value\n})\n\nconst sitemapBandVisible = computed(\n () => props.sitemap.length > 0 || !!slots.sitemap,\n)\n\nconst hasAddress = computed(\n () =>\n !!slots.address ||\n !!(\n props.address &&\n (props.address.title ||\n (props.address.lines && props.address.lines.length > 0))\n ),\n)\n\nconst hasSocials = computed(\n () => !!slots.socials || props.socials.length > 0,\n)\n\nconst contactBandVisible = computed(\n () =>\n !!slots.logo ||\n hasAddress.value ||\n hasSocials.value ||\n !!slots['contact-extra'],\n)\n\nconst hasCopyrightText = computed(\n () => !!slots.copyright || !!(props.copyright && props.copyright.length > 0),\n)\n\nconst hasPrivacyLogo = computed(\n () => !!slots['privacy-logo'] || props.showRepublicEmblem,\n)\n\nconst privacyBandVisible = computed(\n () => hasCopyrightText.value || hasPrivacyLogo.value,\n)\n\nconst footerRoot = ref<HTMLElement | null>(null)\nconst isMobile = ref(false)\nlet resizeObserver: ResizeObserver | null = null\n\nonMounted(() => {\n if (!footerRoot.value) return\n if (typeof ResizeObserver === 'undefined') return\n resizeObserver = new ResizeObserver((entries) => {\n const entry = entries[0]\n if (!entry) return\n isMobile.value = entry.contentRect.width <= MOBILE_BREAKPOINT_PX\n })\n resizeObserver.observe(footerRoot.value)\n})\n\nonBeforeUnmount(() => {\n resizeObserver?.disconnect()\n resizeObserver = null\n})\n\nfunction onBackToTopClick(originalEvent: MouseEvent) {\n let defaultPrevented = false\n const payload: PaFooterBackToTopEventPayload = {\n originalEvent,\n get defaultPrevented() {\n return defaultPrevented\n },\n preventDefault() {\n defaultPrevented = true\n },\n }\n emit('back-to-top', payload)\n\n if (defaultPrevented) return\n if (typeof window === 'undefined') return\n\n const prefersReducedMotion =\n typeof window.matchMedia === 'function' &&\n window.matchMedia('(prefers-reduced-motion: reduce)').matches\n window.scrollTo({\n top: 0,\n behavior: prefersReducedMotion ? 'auto' : 'smooth',\n })\n}\n</script>\n\n<template>\n <footer\n :id=\"footerId\"\n ref=\"footerRoot\"\n class=\"pa-footer\"\n :class=\"{ 'pa-footer--mobile': isMobile }\"\n role=\"contentinfo\"\n >\n <div\n v-if=\"backToTopEnabled\"\n class=\"pa-footer__band pa-footer__band--back-to-top\"\n >\n <button\n type=\"button\"\n class=\"pa-footer__back-to-top\"\n :aria-label=\"backToTopAriaLabel\"\n @click=\"onBackToTopClick\"\n >\n <span class=\"pa-footer__back-to-top-label\">{{ backToTopLabel }}</span>\n <PaIcon name=\"arrow-up\" size=\"sm\" class=\"pa-footer__back-to-top-icon\" />\n </button>\n <div class=\"pa-footer__divider\" aria-hidden=\"true\" />\n </div>\n\n <div\n v-if=\"sitemapBandVisible\"\n class=\"pa-footer__band pa-footer__band--sitemap\"\n >\n <slot name=\"sitemap\">\n <div class=\"pa-footer__sitemap-grid\">\n <template v-for=\"(column, columnIndex) in sitemap\" :key=\"columnIndex\">\n <PaAccordion\n v-if=\"isMobile && column.heading && column.heading.length > 0\"\n :title=\"column.heading\"\n class=\"pa-footer__column pa-footer__column--heading-led pa-footer__column--accordion\"\n >\n <a\n v-for=\"(link, linkIndex) in column.links\"\n :key=\"linkIndex\"\n :href=\"link.href\"\n class=\"pa-footer__link pa-footer__link--small\"\n >\n {{ link.label }}\n </a>\n </PaAccordion>\n <div\n v-else\n class=\"pa-footer__column\"\n :class=\"\n column.heading && column.heading.length > 0\n ? 'pa-footer__column--heading-led'\n : 'pa-footer__column--headingless'\n \"\n >\n <h3\n v-if=\"column.heading && column.heading.length > 0\"\n class=\"pa-footer__sitemap-heading\"\n >\n {{ column.heading }}\n </h3>\n <a\n v-for=\"(link, linkIndex) in column.links\"\n :key=\"linkIndex\"\n :href=\"link.href\"\n class=\"pa-footer__link\"\n :class=\"\n column.heading && column.heading.length > 0\n ? 'pa-footer__link--small'\n : 'pa-footer__link--large'\n \"\n >\n {{ link.label }}\n </a>\n </div>\n </template>\n </div>\n </slot>\n </div>\n\n <div\n v-if=\"contactBandVisible\"\n class=\"pa-footer__band pa-footer__band--contact\"\n >\n <div class=\"pa-footer__contact-content\">\n <div v-if=\"$slots.logo\" class=\"pa-footer__logo\">\n <slot name=\"logo\" />\n </div>\n <div class=\"pa-footer__contact-stack\">\n <div v-if=\"hasAddress\" class=\"pa-footer__address\">\n <slot name=\"address\">\n <p\n v-if=\"address && address.title\"\n class=\"pa-footer__address-title\"\n >\n {{ address.title }}\n </p>\n <p\n v-for=\"(line, lineIndex) in address?.lines ?? []\"\n :key=\"lineIndex\"\n class=\"pa-footer__address-line\"\n >\n {{ line }}\n </p>\n </slot>\n </div>\n <div v-if=\"hasSocials\" class=\"pa-footer__socials\">\n <slot name=\"socials\">\n <a\n v-for=\"(social, socialIndex) in socials\"\n :key=\"socialIndex\"\n :href=\"social.href\"\n :aria-label=\"social.label\"\n class=\"pa-footer__social\"\n >\n <PaIcon :name=\"social.icon\" size=\"md\" />\n </a>\n </slot>\n </div>\n <div v-if=\"$slots['contact-extra']\" class=\"pa-footer__contact-extra\">\n <slot name=\"contact-extra\" />\n </div>\n </div>\n </div>\n </div>\n\n <div\n v-if=\"privacyBandVisible\"\n class=\"pa-footer__band pa-footer__band--privacy\"\n >\n <div class=\"pa-footer__divider\" aria-hidden=\"true\" />\n <div class=\"pa-footer__privacy-content\">\n <span\n v-if=\"$slots['privacy-logo'] || showRepublicEmblem\"\n class=\"pa-footer__republic-emblem\"\n aria-hidden=\"true\"\n >\n <slot name=\"privacy-logo\">\n <svg\n viewBox=\"0 0 44 50\"\n width=\"44\"\n height=\"50\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"currentColor\"\n >\n <circle\n cx=\"22\"\n cy=\"22\"\n r=\"14\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n />\n <path d=\"M22 9 L24.47 16.6 L32.46 16.6 L26 21.3 L28.47 28.9 L22 24.2 L15.53 28.9 L18 21.3 L11.54 16.6 L19.53 16.6 Z\" />\n <path\n d=\"M6 38 Q12 32 22 38 Q32 32 38 38\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n />\n <path\n d=\"M9 42 Q14 38 22 42 Q30 38 35 42\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n />\n <path\n d=\"M14 46 Q18 44 22 46 Q26 44 30 46\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n />\n </svg>\n </slot>\n </span>\n <p v-if=\"hasCopyrightText\" class=\"pa-footer__copyright\">\n <slot name=\"copyright\">{{ copyright }}</slot>\n </p>\n </div>\n </div>\n </footer>\n</template>\n\n<style scoped>\n/* Full-bleed: the bands' background spans the viewport even when the\n footer sits inside a max-width frame. Assumes a horizontally centered\n ancestor (`.pa-page-frame` is `margin: 0 auto`); inner content stays\n boxed to the container width below. */\n.pa-footer {\n display: block;\n container-type: inline-size;\n width: 100vw;\n margin-left: calc(50% - 50vw);\n font-family: var(--pa-font-family-base);\n color: var(--pa-color-text-white);\n}\n\n.pa-footer__band {\n width: 100%;\n}\n\n.pa-footer__divider {\n height: 1px;\n width: 100%;\n background-color: var(--pa-color-bg-primary-dark-110);\n}\n\n/* ---------- Back-to-top band ---------- */\n\n.pa-footer__band--back-to-top {\n background-color: var(--pa-color-bg-primary-dark-110);\n padding-top: var(--pa-space-md);\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--pa-space-md);\n}\n\n.pa-footer__back-to-top {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--pa-space-sm);\n width: 201px;\n height: 48px;\n padding: 13px 49px;\n background-color: transparent;\n border: var(--pa-border-xs) solid var(--pa-color-accent);\n border-radius: var(--pa-radius-smooth);\n color: var(--pa-color-accent);\n cursor: pointer;\n font-family: inherit;\n font-size: var(--pa-font-label-sm-size);\n line-height: var(--pa-font-label-sm-line-height);\n font-weight: var(--pa-font-label-sm-weight);\n}\n\n.pa-footer__back-to-top:focus-visible {\n outline: var(--pa-border-sm) solid var(--pa-color-accent);\n outline-offset: 2px;\n}\n\n.pa-footer__back-to-top-label {\n white-space: nowrap;\n}\n\n.pa-footer__back-to-top-icon {\n color: var(--pa-color-accent);\n}\n\n/* ---------- Sitemap band ---------- */\n\n.pa-footer__band--sitemap {\n background-color: var(--pa-color-bg-primary-dark-120);\n padding-top: var(--pa-space-sm);\n}\n\n.pa-footer__sitemap-grid {\n max-width: var(--pa-layout-container-max);\n width: 100%;\n margin: 0 auto;\n padding: 0 var(--pa-space-sm);\n box-sizing: border-box;\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n column-gap: 28px;\n row-gap: 0;\n}\n\n.pa-footer__column {\n display: flex;\n flex-direction: column;\n padding: var(--pa-space-2xl) 0;\n}\n\n.pa-footer__column--headingless {\n gap: var(--pa-space-xs);\n}\n\n.pa-footer__column--heading-led {\n gap: 12px;\n}\n\n.pa-footer__sitemap-grid > .pa-footer__column:nth-of-type(n + 4) {\n border-top: var(--pa-border-xs) solid var(--pa-color-bg-primary-dark-110);\n}\n\n.pa-footer__sitemap-grid > .pa-footer__column:nth-of-type(n + 4) .pa-footer__sitemap-heading {\n color: var(--pa-color-text-white);\n}\n\n.pa-footer__sitemap-heading {\n margin: 0;\n font-family: inherit;\n font-size: 18px;\n line-height: 27px;\n font-weight: 700;\n color: var(--pa-color-accent);\n}\n\n.pa-footer__link {\n color: var(--pa-color-accent);\n text-decoration: none;\n}\n\n.pa-footer__link:hover {\n text-decoration: underline;\n}\n\n.pa-footer__link:focus-visible {\n outline: var(--pa-border-sm) solid var(--pa-color-accent);\n outline-offset: 2px;\n}\n\n.pa-footer__link--large {\n font-size: 20px;\n line-height: 30px;\n font-weight: 600;\n}\n\n.pa-footer__link--small {\n font-size: 16px;\n line-height: 20px;\n font-weight: 400;\n}\n\n/* ---------- Contact band ---------- */\n\n.pa-footer__band--contact {\n background-color: var(--pa-color-bg-primary-dark-120);\n padding-top: var(--pa-space-sm);\n}\n\n.pa-footer__contact-content {\n max-width: var(--pa-layout-container-max);\n width: 100%;\n margin: 0 auto;\n padding: 0 var(--pa-space-sm);\n box-sizing: border-box;\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: var(--pa-space-md);\n padding-bottom: var(--pa-space-md);\n}\n\n.pa-footer__logo {\n display: flex;\n align-items: flex-start;\n flex-shrink: 0;\n}\n\n.pa-footer__contact-stack {\n display: flex;\n flex-direction: column;\n gap: var(--pa-space-sm);\n}\n\n.pa-footer__address {\n max-width: 270px;\n color: var(--pa-color-text-white);\n}\n\n.pa-footer__address-title {\n margin: 0;\n font-family: inherit;\n font-size: 16px;\n line-height: 20px;\n font-weight: 600;\n color: var(--pa-color-text-white);\n}\n\n.pa-footer__address-line {\n margin: 0;\n font-family: inherit;\n font-size: 16px;\n line-height: 20px;\n font-weight: 400;\n color: var(--pa-color-text-white);\n}\n\n.pa-footer__socials {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 375px;\n padding: var(--pa-space-sm) 0;\n}\n\n.pa-footer__social {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: var(--pa-color-text-white);\n text-decoration: none;\n}\n\n.pa-footer__social:focus-visible {\n outline: var(--pa-border-sm) solid var(--pa-color-accent);\n outline-offset: 2px;\n border-radius: var(--pa-radius-smooth);\n}\n\n.pa-footer__contact-extra {\n width: 100%;\n}\n\n/* ---------- Privacy band ---------- */\n\n.pa-footer__band--privacy {\n background-color: var(--pa-color-bg-primary-dark-110);\n padding-bottom: var(--pa-space-sm);\n display: flex;\n flex-direction: column;\n gap: var(--pa-space-sm);\n}\n\n.pa-footer__privacy-content {\n max-width: 600px;\n width: 100%;\n margin: 0 auto;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--pa-space-sm);\n flex-wrap: wrap;\n}\n\n.pa-footer__republic-emblem {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: var(--pa-color-text-white);\n flex-shrink: 0;\n}\n\n.pa-footer__copyright {\n margin: 0;\n flex: 1 1 auto;\n text-align: center;\n font-family: var(--pa-font-family-base);\n font-size: 14px;\n line-height: 21px;\n font-weight: 400;\n color: var(--pa-color-text-white);\n}\n\n/* ---------- Mobile @container collapse ---------- */\n\n@container (max-width: 720px) {\n .pa-footer__sitemap-grid {\n grid-template-columns: 1fr;\n padding: 0;\n }\n\n .pa-footer__column {\n padding: var(--pa-space-md) var(--pa-space-sm);\n }\n\n .pa-footer__column--headingless:not(:last-of-type) {\n border-bottom: var(--pa-border-xs) solid var(--pa-color-bg-primary-dark-110);\n }\n\n .pa-footer__column--accordion {\n padding: 0;\n border-top: var(--pa-border-xs) solid var(--pa-color-bg-primary-dark-110);\n }\n\n .pa-footer__contact-content {\n flex-direction: column;\n align-items: stretch;\n padding: 0 var(--pa-space-sm) var(--pa-space-sm);\n }\n\n .pa-footer__contact-stack {\n width: 100%;\n }\n\n .pa-footer__socials {\n width: 100%;\n }\n\n .pa-footer__privacy-content {\n padding: 0 var(--pa-space-md);\n }\n}\n\n/* PaAccordion dark recolor — scoped to PaFooter only */\n.pa-footer :deep(.pa-accordion__header) {\n background: var(--pa-color-bg-primary-dark-120);\n border-radius: 0;\n padding: 22px var(--pa-space-sm);\n color: var(--pa-color-text-white);\n font-size: 18px;\n line-height: 27px;\n font-weight: 700;\n}\n\n.pa-footer :deep(.pa-accordion:not([data-open=\"true\"]) .pa-accordion__header:hover),\n.pa-footer :deep(.pa-accordion[data-open=\"true\"] .pa-accordion__header),\n.pa-footer :deep(.pa-accordion[data-open=\"true\"] .pa-accordion__header:hover) {\n background: var(--pa-color-bg-primary-dark-120);\n}\n\n.pa-footer :deep(.pa-accordion__chevron) {\n color: var(--pa-color-text-white);\n}\n\n.pa-footer :deep(.pa-accordion__body) {\n background: var(--pa-color-bg-primary-dark-120);\n color: var(--pa-color-accent);\n padding: 12px var(--pa-space-sm) var(--pa-space-md);\n display: flex;\n flex-direction: column;\n gap: var(--pa-space-md);\n border-top: var(--pa-border-xs) solid var(--pa-color-bg-primary-dark-110);\n}\n</style>\n"],"names":["footerUid","nextFooterId","props","__props","emit","__emit","slots","useSlots","footerId","backToTopEnabled","computed","backToTopLabel","backToTopAriaLabel","sitemapBandVisible","hasAddress","hasSocials","contactBandVisible","hasCopyrightText","hasPrivacyLogo","privacyBandVisible","footerRoot","ref","isMobile","resizeObserver","onMounted","entries","entry","onBeforeUnmount","onBackToTopClick","originalEvent","defaultPrevented","prefersReducedMotion","_createElementBlock","_normalizeClass","_openBlock","_hoisted_1","_createElementVNode","_hoisted_3","_toDisplayString","_createVNode","PaIcon","_hoisted_4","_renderSlot","_ctx","_hoisted_5","_Fragment","_renderList","column","columnIndex","_createBlock","PaAccordion","link","linkIndex","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","$slots","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_a","line","lineIndex","_hoisted_15","social","socialIndex","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PaFooter.vue2.js","sources":["../../../src/components/PaFooter/PaFooter.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PaIconName } from '../PaIcon/PaIcon.vue'\n\nexport interface PaFooterBackToTopConfig {\n label?: string\n ariaLabel?: string\n}\n\nexport interface PaFooterLink {\n label: string\n href: string\n}\n\nexport interface PaFooterColumn {\n heading?: string\n links: PaFooterLink[]\n}\n\nexport interface PaFooterAddress {\n title?: string\n lines: string[]\n}\n\nexport interface PaFooterSocial {\n icon: PaIconName\n href: string\n label: string\n}\n\nexport interface PaFooterBackToTopEventPayload {\n originalEvent: MouseEvent\n preventDefault: () => void\n defaultPrevented: boolean\n}\n\nexport interface PaFooterProps {\n backToTop?: boolean | PaFooterBackToTopConfig\n sitemap?: PaFooterColumn[]\n address?: PaFooterAddress\n socials?: PaFooterSocial[]\n copyright?: string\n showRepublicEmblem?: boolean\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, onBeforeUnmount, onMounted, ref, useId, useSlots } from 'vue'\nimport PaIcon from '../PaIcon/PaIcon.vue'\nimport PaAccordion from '../PaAccordion/PaAccordion.vue'\n\nconst MOBILE_BREAKPOINT_PX = 720\n\nconst props = withDefaults(defineProps<PaFooterProps>(), {\n backToTop: true,\n sitemap: () => [],\n address: undefined,\n socials: () => [],\n copyright: undefined,\n showRepublicEmblem: true,\n})\n\nconst emit = defineEmits<{\n 'back-to-top': [PaFooterBackToTopEventPayload]\n}>()\n\nconst slots = useSlots()\n\nconst footerId = `pa-footer-${useId()}`\n\nconst backToTopEnabled = computed(() => props.backToTop !== false)\n\nconst backToTopLabel = computed(() => {\n if (typeof props.backToTop === 'object' && props.backToTop !== null) {\n return props.backToTop.label ?? 'Torna su'\n }\n return 'Torna su'\n})\n\nconst backToTopAriaLabel = computed(() => {\n if (typeof props.backToTop === 'object' && props.backToTop !== null) {\n return props.backToTop.ariaLabel ?? backToTopLabel.value\n }\n return backToTopLabel.value\n})\n\nconst sitemapBandVisible = computed(\n () => props.sitemap.length > 0 || !!slots.sitemap,\n)\n\nconst hasAddress = computed(\n () =>\n !!slots.address ||\n !!(\n props.address &&\n (props.address.title ||\n (props.address.lines && props.address.lines.length > 0))\n ),\n)\n\nconst hasSocials = computed(\n () => !!slots.socials || props.socials.length > 0,\n)\n\nconst contactBandVisible = computed(\n () =>\n !!slots.logo ||\n hasAddress.value ||\n hasSocials.value ||\n !!slots['contact-extra'],\n)\n\nconst hasCopyrightText = computed(\n () => !!slots.copyright || !!(props.copyright && props.copyright.length > 0),\n)\n\nconst hasPrivacyLogo = computed(\n () => !!slots['privacy-logo'] || props.showRepublicEmblem,\n)\n\nconst privacyBandVisible = computed(\n () => hasCopyrightText.value || hasPrivacyLogo.value,\n)\n\nconst footerRoot = ref<HTMLElement | null>(null)\nconst isMobile = ref(false)\nlet resizeObserver: ResizeObserver | null = null\n\nonMounted(() => {\n if (!footerRoot.value) return\n if (typeof ResizeObserver === 'undefined') return\n resizeObserver = new ResizeObserver((entries) => {\n const entry = entries[0]\n if (!entry) return\n isMobile.value = entry.contentRect.width <= MOBILE_BREAKPOINT_PX\n })\n resizeObserver.observe(footerRoot.value)\n})\n\nonBeforeUnmount(() => {\n resizeObserver?.disconnect()\n resizeObserver = null\n})\n\nfunction onBackToTopClick(originalEvent: MouseEvent) {\n let defaultPrevented = false\n const payload: PaFooterBackToTopEventPayload = {\n originalEvent,\n get defaultPrevented() {\n return defaultPrevented\n },\n preventDefault() {\n defaultPrevented = true\n },\n }\n emit('back-to-top', payload)\n\n if (defaultPrevented) return\n if (typeof window === 'undefined') return\n\n const prefersReducedMotion =\n typeof window.matchMedia === 'function' &&\n window.matchMedia('(prefers-reduced-motion: reduce)').matches\n window.scrollTo({\n top: 0,\n behavior: prefersReducedMotion ? 'auto' : 'smooth',\n })\n}\n</script>\n\n<template>\n <footer\n :id=\"footerId\"\n ref=\"footerRoot\"\n class=\"pa-footer\"\n :class=\"{ 'pa-footer--mobile': isMobile }\"\n role=\"contentinfo\"\n >\n <div\n v-if=\"backToTopEnabled\"\n class=\"pa-footer__band pa-footer__band--back-to-top\"\n >\n <button\n type=\"button\"\n class=\"pa-footer__back-to-top\"\n :aria-label=\"backToTopAriaLabel\"\n @click=\"onBackToTopClick\"\n >\n <span class=\"pa-footer__back-to-top-label\">{{ backToTopLabel }}</span>\n <PaIcon name=\"arrow-up\" size=\"sm\" class=\"pa-footer__back-to-top-icon\" />\n </button>\n <div class=\"pa-footer__divider\" aria-hidden=\"true\" />\n </div>\n\n <div\n v-if=\"sitemapBandVisible\"\n class=\"pa-footer__band pa-footer__band--sitemap\"\n >\n <slot name=\"sitemap\">\n <div class=\"pa-footer__sitemap-grid\">\n <template v-for=\"(column, columnIndex) in sitemap\" :key=\"columnIndex\">\n <PaAccordion\n v-if=\"isMobile && column.heading && column.heading.length > 0\"\n :title=\"column.heading\"\n class=\"pa-footer__column pa-footer__column--heading-led pa-footer__column--accordion\"\n >\n <a\n v-for=\"(link, linkIndex) in column.links\"\n :key=\"linkIndex\"\n :href=\"link.href\"\n class=\"pa-footer__link pa-footer__link--small\"\n >\n {{ link.label }}\n </a>\n </PaAccordion>\n <div\n v-else\n class=\"pa-footer__column\"\n :class=\"\n column.heading && column.heading.length > 0\n ? 'pa-footer__column--heading-led'\n : 'pa-footer__column--headingless'\n \"\n >\n <h3\n v-if=\"column.heading && column.heading.length > 0\"\n class=\"pa-footer__sitemap-heading\"\n >\n {{ column.heading }}\n </h3>\n <a\n v-for=\"(link, linkIndex) in column.links\"\n :key=\"linkIndex\"\n :href=\"link.href\"\n class=\"pa-footer__link\"\n :class=\"\n column.heading && column.heading.length > 0\n ? 'pa-footer__link--small'\n : 'pa-footer__link--large'\n \"\n >\n {{ link.label }}\n </a>\n </div>\n </template>\n </div>\n </slot>\n </div>\n\n <div\n v-if=\"contactBandVisible\"\n class=\"pa-footer__band pa-footer__band--contact\"\n >\n <div class=\"pa-footer__contact-content\">\n <div v-if=\"$slots.logo\" class=\"pa-footer__logo\">\n <slot name=\"logo\" />\n </div>\n <div class=\"pa-footer__contact-stack\">\n <div v-if=\"hasAddress\" class=\"pa-footer__address\">\n <slot name=\"address\">\n <p\n v-if=\"address && address.title\"\n class=\"pa-footer__address-title\"\n >\n {{ address.title }}\n </p>\n <p\n v-for=\"(line, lineIndex) in address?.lines ?? []\"\n :key=\"lineIndex\"\n class=\"pa-footer__address-line\"\n >\n {{ line }}\n </p>\n </slot>\n </div>\n <div v-if=\"hasSocials\" class=\"pa-footer__socials\">\n <slot name=\"socials\">\n <a\n v-for=\"(social, socialIndex) in socials\"\n :key=\"socialIndex\"\n :href=\"social.href\"\n :aria-label=\"social.label\"\n class=\"pa-footer__social\"\n >\n <PaIcon :name=\"social.icon\" size=\"md\" />\n </a>\n </slot>\n </div>\n <div v-if=\"$slots['contact-extra']\" class=\"pa-footer__contact-extra\">\n <slot name=\"contact-extra\" />\n </div>\n </div>\n </div>\n </div>\n\n <div\n v-if=\"privacyBandVisible\"\n class=\"pa-footer__band pa-footer__band--privacy\"\n >\n <div class=\"pa-footer__divider\" aria-hidden=\"true\" />\n <div class=\"pa-footer__privacy-content\">\n <span\n v-if=\"$slots['privacy-logo'] || showRepublicEmblem\"\n class=\"pa-footer__republic-emblem\"\n aria-hidden=\"true\"\n >\n <slot name=\"privacy-logo\">\n <svg\n viewBox=\"0 0 44 50\"\n width=\"44\"\n height=\"50\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"currentColor\"\n >\n <circle\n cx=\"22\"\n cy=\"22\"\n r=\"14\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n />\n <path d=\"M22 9 L24.47 16.6 L32.46 16.6 L26 21.3 L28.47 28.9 L22 24.2 L15.53 28.9 L18 21.3 L11.54 16.6 L19.53 16.6 Z\" />\n <path\n d=\"M6 38 Q12 32 22 38 Q32 32 38 38\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n />\n <path\n d=\"M9 42 Q14 38 22 42 Q30 38 35 42\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n />\n <path\n d=\"M14 46 Q18 44 22 46 Q26 44 30 46\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n />\n </svg>\n </slot>\n </span>\n <p v-if=\"hasCopyrightText\" class=\"pa-footer__copyright\">\n <slot name=\"copyright\">{{ copyright }}</slot>\n </p>\n </div>\n </div>\n </footer>\n</template>\n\n<style scoped>\n/* Full-bleed: the bands' background spans the viewport even when the\n footer sits inside a max-width frame. Assumes a horizontally centered\n ancestor (`.pa-page-frame` is `margin: 0 auto`); inner content stays\n boxed to the container width below. */\n.pa-footer {\n display: block;\n container-type: inline-size;\n width: 100vw;\n margin-left: calc(50% - 50vw);\n font-family: var(--pa-font-family-base);\n color: var(--pa-color-text-white);\n}\n\n.pa-footer__band {\n width: 100%;\n}\n\n.pa-footer__divider {\n height: 1px;\n width: 100%;\n background-color: var(--pa-color-bg-primary-dark-110);\n}\n\n/* ---------- Back-to-top band ---------- */\n\n.pa-footer__band--back-to-top {\n background-color: var(--pa-color-bg-primary-dark-110);\n padding-top: var(--pa-space-md);\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--pa-space-md);\n}\n\n.pa-footer__back-to-top {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--pa-space-sm);\n width: 201px;\n height: 48px;\n padding: 13px 49px;\n background-color: transparent;\n border: var(--pa-border-xs) solid var(--pa-color-accent);\n border-radius: var(--pa-radius-smooth);\n color: var(--pa-color-accent);\n cursor: pointer;\n font-family: inherit;\n font-size: var(--pa-font-label-sm-size);\n line-height: var(--pa-font-label-sm-line-height);\n font-weight: var(--pa-font-label-sm-weight);\n}\n\n.pa-footer__back-to-top:focus-visible {\n outline: var(--pa-border-sm) solid var(--pa-color-accent);\n outline-offset: 2px;\n}\n\n.pa-footer__back-to-top-label {\n white-space: nowrap;\n}\n\n.pa-footer__back-to-top-icon {\n color: var(--pa-color-accent);\n}\n\n/* ---------- Sitemap band ---------- */\n\n.pa-footer__band--sitemap {\n background-color: var(--pa-color-bg-primary-dark-120);\n padding-top: var(--pa-space-sm);\n}\n\n.pa-footer__sitemap-grid {\n max-width: var(--pa-layout-container-max);\n width: 100%;\n margin: 0 auto;\n padding: 0 var(--pa-space-sm);\n box-sizing: border-box;\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n column-gap: 28px;\n row-gap: 0;\n}\n\n.pa-footer__column {\n display: flex;\n flex-direction: column;\n padding: var(--pa-space-2xl) 0;\n}\n\n.pa-footer__column--headingless {\n gap: var(--pa-space-xs);\n}\n\n.pa-footer__column--heading-led {\n gap: 12px;\n}\n\n.pa-footer__sitemap-grid > .pa-footer__column:nth-of-type(n + 4) {\n border-top: var(--pa-border-xs) solid var(--pa-color-bg-primary-dark-110);\n}\n\n.pa-footer__sitemap-grid > .pa-footer__column:nth-of-type(n + 4) .pa-footer__sitemap-heading {\n color: var(--pa-color-text-white);\n}\n\n.pa-footer__sitemap-heading {\n margin: 0;\n font-family: inherit;\n font-size: 18px;\n line-height: 27px;\n font-weight: 700;\n color: var(--pa-color-accent);\n}\n\n.pa-footer__link {\n color: var(--pa-color-accent);\n text-decoration: none;\n}\n\n.pa-footer__link:hover {\n text-decoration: underline;\n}\n\n.pa-footer__link:focus-visible {\n outline: var(--pa-border-sm) solid var(--pa-color-accent);\n outline-offset: 2px;\n}\n\n.pa-footer__link--large {\n font-size: 20px;\n line-height: 30px;\n font-weight: 600;\n}\n\n.pa-footer__link--small {\n font-size: 16px;\n line-height: 20px;\n font-weight: 400;\n}\n\n/* ---------- Contact band ---------- */\n\n.pa-footer__band--contact {\n background-color: var(--pa-color-bg-primary-dark-120);\n padding-top: var(--pa-space-sm);\n}\n\n.pa-footer__contact-content {\n max-width: var(--pa-layout-container-max);\n width: 100%;\n margin: 0 auto;\n padding: 0 var(--pa-space-sm);\n box-sizing: border-box;\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: var(--pa-space-md);\n padding-bottom: var(--pa-space-md);\n}\n\n.pa-footer__logo {\n display: flex;\n align-items: flex-start;\n flex-shrink: 0;\n}\n\n.pa-footer__contact-stack {\n display: flex;\n flex-direction: column;\n gap: var(--pa-space-sm);\n}\n\n.pa-footer__address {\n max-width: 270px;\n color: var(--pa-color-text-white);\n}\n\n.pa-footer__address-title {\n margin: 0;\n font-family: inherit;\n font-size: 16px;\n line-height: 20px;\n font-weight: 600;\n color: var(--pa-color-text-white);\n}\n\n.pa-footer__address-line {\n margin: 0;\n font-family: inherit;\n font-size: 16px;\n line-height: 20px;\n font-weight: 400;\n color: var(--pa-color-text-white);\n}\n\n.pa-footer__socials {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 375px;\n padding: var(--pa-space-sm) 0;\n}\n\n.pa-footer__social {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: var(--pa-color-text-white);\n text-decoration: none;\n}\n\n.pa-footer__social:focus-visible {\n outline: var(--pa-border-sm) solid var(--pa-color-accent);\n outline-offset: 2px;\n border-radius: var(--pa-radius-smooth);\n}\n\n.pa-footer__contact-extra {\n width: 100%;\n}\n\n/* ---------- Privacy band ---------- */\n\n.pa-footer__band--privacy {\n background-color: var(--pa-color-bg-primary-dark-110);\n padding-bottom: var(--pa-space-sm);\n display: flex;\n flex-direction: column;\n gap: var(--pa-space-sm);\n}\n\n.pa-footer__privacy-content {\n max-width: 600px;\n width: 100%;\n margin: 0 auto;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--pa-space-sm);\n flex-wrap: wrap;\n}\n\n.pa-footer__republic-emblem {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: var(--pa-color-text-white);\n flex-shrink: 0;\n}\n\n.pa-footer__copyright {\n margin: 0;\n flex: 1 1 auto;\n text-align: center;\n font-family: var(--pa-font-family-base);\n font-size: 14px;\n line-height: 21px;\n font-weight: 400;\n color: var(--pa-color-text-white);\n}\n\n/* ---------- Mobile @container collapse ---------- */\n\n@container (max-width: 720px) {\n .pa-footer__sitemap-grid {\n grid-template-columns: 1fr;\n padding: 0;\n }\n\n .pa-footer__column {\n padding: var(--pa-space-md) var(--pa-space-sm);\n }\n\n .pa-footer__column--headingless:not(:last-of-type) {\n border-bottom: var(--pa-border-xs) solid var(--pa-color-bg-primary-dark-110);\n }\n\n .pa-footer__column--accordion {\n padding: 0;\n border-top: var(--pa-border-xs) solid var(--pa-color-bg-primary-dark-110);\n }\n\n .pa-footer__contact-content {\n flex-direction: column;\n align-items: stretch;\n padding: 0 var(--pa-space-sm) var(--pa-space-sm);\n }\n\n .pa-footer__contact-stack {\n width: 100%;\n }\n\n .pa-footer__socials {\n width: 100%;\n }\n\n .pa-footer__privacy-content {\n padding: 0 var(--pa-space-md);\n }\n}\n\n/* PaAccordion dark recolor — scoped to PaFooter only */\n.pa-footer :deep(.pa-accordion__header) {\n background: var(--pa-color-bg-primary-dark-120);\n border-radius: 0;\n padding: 22px var(--pa-space-sm);\n color: var(--pa-color-text-white);\n font-size: 18px;\n line-height: 27px;\n font-weight: 700;\n}\n\n.pa-footer :deep(.pa-accordion:not([data-open=\"true\"]) .pa-accordion__header:hover),\n.pa-footer :deep(.pa-accordion[data-open=\"true\"] .pa-accordion__header),\n.pa-footer :deep(.pa-accordion[data-open=\"true\"] .pa-accordion__header:hover) {\n background: var(--pa-color-bg-primary-dark-120);\n}\n\n.pa-footer :deep(.pa-accordion__chevron) {\n color: var(--pa-color-text-white);\n}\n\n.pa-footer :deep(.pa-accordion__body) {\n background: var(--pa-color-bg-primary-dark-120);\n color: var(--pa-color-accent);\n padding: 12px var(--pa-space-sm) var(--pa-space-md);\n display: flex;\n flex-direction: column;\n gap: var(--pa-space-md);\n border-top: var(--pa-border-xs) solid var(--pa-color-bg-primary-dark-110);\n}\n</style>\n"],"names":["props","__props","emit","__emit","slots","useSlots","footerId","useId","backToTopEnabled","computed","backToTopLabel","backToTopAriaLabel","sitemapBandVisible","hasAddress","hasSocials","contactBandVisible","hasCopyrightText","hasPrivacyLogo","privacyBandVisible","footerRoot","ref","isMobile","resizeObserver","onMounted","entries","entry","onBeforeUnmount","onBackToTopClick","originalEvent","defaultPrevented","prefersReducedMotion","_createElementBlock","_normalizeClass","_openBlock","_hoisted_1","_createElementVNode","_hoisted_3","_toDisplayString","_createVNode","PaIcon","_hoisted_4","_renderSlot","_ctx","_hoisted_5","_Fragment","_renderList","column","columnIndex","_createBlock","PaAccordion","link","linkIndex","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","$slots","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_a","line","lineIndex","_hoisted_15","social","socialIndex","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import o from "./PaHeaderDesktop.vue2.js";
|
|
2
2
|
/* empty css */
|
|
3
3
|
import t from "../../_virtual/_plugin-vue_export-helper.js";
|
|
4
|
-
const p = /* @__PURE__ */ t(o, [["__scopeId", "data-v-
|
|
4
|
+
const p = /* @__PURE__ */ t(o, [["__scopeId", "data-v-80c37be4"]]);
|
|
5
5
|
export {
|
|
6
6
|
p as default
|
|
7
7
|
};
|