@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.
Files changed (119) hide show
  1. package/README.md +85 -128
  2. package/dist/components/PaAccordion/PaAccordion.vue.d.ts +0 -1
  3. package/dist/components/PaAccordion/PaAccordion.vue.js +3 -5
  4. package/dist/components/PaAccordion/PaAccordion.vue.js.map +1 -1
  5. package/dist/components/PaAccordion/PaAccordion.vue2.js +24 -30
  6. package/dist/components/PaAccordion/PaAccordion.vue2.js.map +1 -1
  7. package/dist/components/PaBanner/PaBanner.vue.js +6 -6
  8. package/dist/components/PaBanner/PaBanner.vue2.js +26 -28
  9. package/dist/components/PaBanner/PaBanner.vue2.js.map +1 -1
  10. package/dist/components/PaCard/PaCard.vue.d.ts +17 -14
  11. package/dist/components/PaCard/PaCard.vue.js +2 -2
  12. package/dist/components/PaCard/PaCard.vue2.js +37 -42
  13. package/dist/components/PaCard/PaCard.vue2.js.map +1 -1
  14. package/dist/components/PaCheckbox/PaCheckbox.vue.d.ts +5 -6
  15. package/dist/components/PaCheckbox/PaCheckbox.vue.js +2 -4
  16. package/dist/components/PaCheckbox/PaCheckbox.vue.js.map +1 -1
  17. package/dist/components/PaCheckbox/PaCheckbox.vue2.js +20 -26
  18. package/dist/components/PaCheckbox/PaCheckbox.vue2.js.map +1 -1
  19. package/dist/components/PaCheckboxGroup/PaCheckboxGroup.vue.d.ts +5 -6
  20. package/dist/components/PaCheckboxGroup/PaCheckboxGroup.vue.js +2 -4
  21. package/dist/components/PaCheckboxGroup/PaCheckboxGroup.vue.js.map +1 -1
  22. package/dist/components/PaCheckboxGroup/PaCheckboxGroup.vue2.js +25 -31
  23. package/dist/components/PaCheckboxGroup/PaCheckboxGroup.vue2.js.map +1 -1
  24. package/dist/components/PaDatePicker/PaDatePicker.vue.d.ts +13 -26
  25. package/dist/components/PaDatePicker/PaDatePicker.vue.js +4 -6
  26. package/dist/components/PaDatePicker/PaDatePicker.vue.js.map +1 -1
  27. package/dist/components/PaDatePicker/PaDatePicker.vue2.js +53 -59
  28. package/dist/components/PaDatePicker/PaDatePicker.vue2.js.map +1 -1
  29. package/dist/components/PaDrawer/PaDrawer.vue.js +2 -2
  30. package/dist/components/PaDrawer/PaDrawer.vue2.js +37 -41
  31. package/dist/components/PaDrawer/PaDrawer.vue2.js.map +1 -1
  32. package/dist/components/PaFileUpload/PaFileUpload.vue.d.ts +0 -1
  33. package/dist/components/PaFileUpload/PaFileUpload.vue.js +3 -5
  34. package/dist/components/PaFileUpload/PaFileUpload.vue.js.map +1 -1
  35. package/dist/components/PaFileUpload/PaFileUpload.vue2.js +22 -28
  36. package/dist/components/PaFileUpload/PaFileUpload.vue2.js.map +1 -1
  37. package/dist/components/PaFooter/PaFooter.vue.js +1 -1
  38. package/dist/components/PaFooter/PaFooter.vue2.js +43 -48
  39. package/dist/components/PaFooter/PaFooter.vue2.js.map +1 -1
  40. package/dist/components/PaHeaderDesktop/PaHeaderDesktop.vue.js +1 -1
  41. package/dist/components/PaHeaderDesktop/PaHeaderDesktop.vue2.js +61 -66
  42. package/dist/components/PaHeaderDesktop/PaHeaderDesktop.vue2.js.map +1 -1
  43. package/dist/components/PaHeaderMobile/PaHeaderMobile.vue.js +2 -2
  44. package/dist/components/PaHeaderMobile/PaHeaderMobile.vue2.js +69 -74
  45. package/dist/components/PaHeaderMobile/PaHeaderMobile.vue2.js.map +1 -1
  46. package/dist/components/PaHero/PaHero.vue.d.ts +15 -12
  47. package/dist/components/PaHero/PaHero.vue.js +2 -2
  48. package/dist/components/PaHero/PaHero.vue2.js +36 -41
  49. package/dist/components/PaHero/PaHero.vue2.js.map +1 -1
  50. package/dist/components/PaInput/PaInput.vue.d.ts +15 -13
  51. package/dist/components/PaInput/PaInput.vue.js +4 -6
  52. package/dist/components/PaInput/PaInput.vue.js.map +1 -1
  53. package/dist/components/PaInput/PaInput.vue2.js +27 -33
  54. package/dist/components/PaInput/PaInput.vue2.js.map +1 -1
  55. package/dist/components/PaModal/PaModal.vue.d.ts +14 -11
  56. package/dist/components/PaModal/PaModal.vue.js +3 -3
  57. package/dist/components/PaModal/PaModal.vue2.js +41 -46
  58. package/dist/components/PaModal/PaModal.vue2.js.map +1 -1
  59. package/dist/components/PaMonthPicker/PaMonthPicker.vue.d.ts +13 -26
  60. package/dist/components/PaMonthPicker/PaMonthPicker.vue.js +2 -4
  61. package/dist/components/PaMonthPicker/PaMonthPicker.vue.js.map +1 -1
  62. package/dist/components/PaMonthPicker/PaMonthPicker.vue2.js +64 -70
  63. package/dist/components/PaMonthPicker/PaMonthPicker.vue2.js.map +1 -1
  64. package/dist/components/PaPagination/PaPagination.vue.js +2 -2
  65. package/dist/components/PaPagination/PaPagination.vue2.js +41 -46
  66. package/dist/components/PaPagination/PaPagination.vue2.js.map +1 -1
  67. package/dist/components/PaRadioGroup/PaRadioGroup.vue.d.ts +5 -6
  68. package/dist/components/PaRadioGroup/PaRadioGroup.vue.js +2 -4
  69. package/dist/components/PaRadioGroup/PaRadioGroup.vue.js.map +1 -1
  70. package/dist/components/PaRadioGroup/PaRadioGroup.vue2.js +22 -28
  71. package/dist/components/PaRadioGroup/PaRadioGroup.vue2.js.map +1 -1
  72. package/dist/components/PaRangePicker/PaRangePicker.vue.d.ts +0 -1
  73. package/dist/components/PaRangePicker/PaRangePicker.vue.js +4 -6
  74. package/dist/components/PaRangePicker/PaRangePicker.vue.js.map +1 -1
  75. package/dist/components/PaRangePicker/PaRangePicker.vue2.js +76 -82
  76. package/dist/components/PaRangePicker/PaRangePicker.vue2.js.map +1 -1
  77. package/dist/components/PaSearchBar/PaSearchBar.vue.d.ts +0 -1
  78. package/dist/components/PaSearchBar/PaSearchBar.vue.js +3 -5
  79. package/dist/components/PaSearchBar/PaSearchBar.vue.js.map +1 -1
  80. package/dist/components/PaSearchBar/PaSearchBar.vue2.js +55 -61
  81. package/dist/components/PaSearchBar/PaSearchBar.vue2.js.map +1 -1
  82. package/dist/components/PaSelect/PaSelect.vue.d.ts +5 -6
  83. package/dist/components/PaSelect/PaSelect.vue.js +4 -6
  84. package/dist/components/PaSelect/PaSelect.vue.js.map +1 -1
  85. package/dist/components/PaSelect/PaSelect.vue2.js +25 -31
  86. package/dist/components/PaSelect/PaSelect.vue2.js.map +1 -1
  87. package/dist/components/PaTabs/PaTabs.vue.js +1 -1
  88. package/dist/components/PaTabs/PaTabs.vue2.js +17 -19
  89. package/dist/components/PaTabs/PaTabs.vue2.js.map +1 -1
  90. package/dist/components/PaTextarea/PaTextarea.vue.d.ts +5 -6
  91. package/dist/components/PaTextarea/PaTextarea.vue.js +4 -6
  92. package/dist/components/PaTextarea/PaTextarea.vue.js.map +1 -1
  93. package/dist/components/PaTextarea/PaTextarea.vue2.js +16 -22
  94. package/dist/components/PaTextarea/PaTextarea.vue2.js.map +1 -1
  95. package/dist/components/PaTimePicker/PaTimePicker.vue.d.ts +0 -1
  96. package/dist/components/PaTimePicker/PaTimePicker.vue.js +2 -4
  97. package/dist/components/PaTimePicker/PaTimePicker.vue.js.map +1 -1
  98. package/dist/components/PaTimePicker/PaTimePicker.vue2.js +44 -50
  99. package/dist/components/PaTimePicker/PaTimePicker.vue2.js.map +1 -1
  100. package/dist/components/PaTitleBar/PaTitleBar.vue.d.ts +12 -9
  101. package/dist/components/PaTitleBar/PaTitleBar.vue.js +2 -2
  102. package/dist/components/PaTitleBar/PaTitleBar.vue2.js +34 -39
  103. package/dist/components/PaTitleBar/PaTitleBar.vue2.js.map +1 -1
  104. package/dist/components/PaToggle/PaToggle.vue.d.ts +0 -1
  105. package/dist/components/PaToggle/PaToggle.vue.js +2 -4
  106. package/dist/components/PaToggle/PaToggle.vue.js.map +1 -1
  107. package/dist/components/PaToggle/PaToggle.vue2.js +20 -26
  108. package/dist/components/PaToggle/PaToggle.vue2.js.map +1 -1
  109. package/dist/components/PaYearPicker/PaYearPicker.vue.d.ts +13 -26
  110. package/dist/components/PaYearPicker/PaYearPicker.vue.js +4 -6
  111. package/dist/components/PaYearPicker/PaYearPicker.vue.js.map +1 -1
  112. package/dist/components/PaYearPicker/PaYearPicker.vue2.js +70 -76
  113. package/dist/components/PaYearPicker/PaYearPicker.vue2.js.map +1 -1
  114. package/dist/style.css +1 -1
  115. package/docs/design-system.md +590 -0
  116. package/docs/layouts.md +297 -0
  117. package/docs/page-composition-examples.md +286 -0
  118. package/docs/public-surface.md +68 -0
  119. 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 x, 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 D, withCtx as K, createStaticVNode as U, createTextVNode as X } from "vue";
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 Z from "../PaAccordion/PaAccordion.vue.js";
4
- const q = {
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
- }, G = ["aria-label"], H = { class: "pa-footer__back-to-top-label" }, J = {
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
- }, W = { class: "pa-footer__sitemap-grid" }, Y = ["href"], ee = {
10
+ }, Y = { class: "pa-footer__sitemap-grid" }, ee = ["href"], te = {
11
11
  key: 0,
12
12
  class: "pa-footer__sitemap-heading"
13
- }, te = ["href"], oe = {
13
+ }, oe = ["href"], ae = {
14
14
  key: 2,
15
15
  class: "pa-footer__band pa-footer__band--contact"
16
- }, ae = { class: "pa-footer__contact-content" }, se = {
16
+ }, se = { class: "pa-footer__contact-content" }, re = {
17
17
  key: 0,
18
18
  class: "pa-footer__logo"
19
- }, re = { class: "pa-footer__contact-stack" }, le = {
19
+ }, le = { class: "pa-footer__contact-stack" }, ne = {
20
20
  key: 0,
21
21
  class: "pa-footer__address"
22
- }, ne = {
22
+ }, ie = {
23
23
  key: 0,
24
24
  class: "pa-footer__address-title"
25
- }, ie = {
25
+ }, de = {
26
26
  key: 1,
27
27
  class: "pa-footer__socials"
28
- }, de = ["href", "aria-label"], ce = {
28
+ }, ce = ["href", "aria-label"], ue = {
29
29
  key: 2,
30
30
  class: "pa-footer__contact-extra"
31
- }, ue = {
31
+ }, pe = {
32
32
  key: 3,
33
33
  class: "pa-footer__band pa-footer__band--privacy"
34
- }, pe = { class: "pa-footer__privacy-content" }, fe = {
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
- }, _e = {
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-${be()}`, 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(
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
- x(() => {
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", q, [
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", H, f(k.value), 1),
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, G),
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", J, [
120
+ I.value ? (e(), t("div", W, [
126
121
  _(s.$slots, "sitemap", {}, () => [
127
- d("div", W, [
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(), D(Z, {
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: K(() => [
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, Y))), 128))
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", ee, f(o.heading), 1)) : l("", !0),
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, te))), 128))
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", oe, [
164
- d("div", ae, [
165
- s.$slots.logo ? (e(), t("div", se, [
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", re, [
169
- w.value ? (e(), t("div", le, [
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", ne, f(i.address.title), 1)) : l("", !0),
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", ie, [
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, de))), 128))
188
+ ], 8, ce))), 128))
194
189
  ], !0)
195
190
  ])) : l("", !0),
196
- s.$slots["contact-extra"] ? (e(), t("div", ce, [
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", ue, [
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", pe, [
208
- s.$slots["privacy-logo"] || i.showRepublicEmblem ? (e(), t("span", fe, [
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-920bddf5><circle cx="22" cy="22" r="14" fill="none" stroke="currentColor" stroke-width="1.5" data-v-920bddf5></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-920bddf5></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-920bddf5></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-920bddf5></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-920bddf5></path></svg>', 1))
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", _e, [
208
+ B.value ? (e(), t("p", he, [
214
209
  _(s.$slots, "copyright", {}, () => [
215
- X(f(i.copyright), 1)
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
- me as default
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-089f6d82"]]);
4
+ const p = /* @__PURE__ */ t(o, [["__scopeId", "data-v-80c37be4"]]);
5
5
  export {
6
6
  p as default
7
7
  };