@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,41 +1,36 @@
1
- import { defineComponent as se, ref as w, computed as h, watch as re, nextTick as ue, onBeforeUnmount as de, openBlock as t, createElementBlock as o, toDisplayString as b, createCommentVNode as d, createElementVNode as l, createVNode as _, renderSlot as C, createBlock as E, Teleport as ce, normalizeClass as z, Fragment as y, renderList as O } from "vue";
1
+ import { defineComponent as se, useId as re, ref as w, computed as h, watch as ue, nextTick as de, onBeforeUnmount as ce, openBlock as t, createElementBlock as o, toDisplayString as b, createCommentVNode as d, createElementVNode as l, createVNode as _, renderSlot as C, createBlock as E, Teleport as be, normalizeClass as z, Fragment as y, renderList as O } from "vue";
2
2
  import p from "../PaIcon/PaIcon.vue.js";
3
- const be = {
3
+ const pe = {
4
4
  class: "pa-header-mobile",
5
5
  role: "banner"
6
- }, pe = ["href"], he = { class: "pa-header-mobile__bar" }, me = ["aria-expanded", "aria-label"], fe = { class: "pa-header-mobile__logo" }, _e = { class: "pa-header-mobile__actions" }, ve = ["aria-label"], ge = ["aria-label"], ye = ["aria-label"], ke = { class: "pa-header-mobile__panel-scroll" }, Le = {
6
+ }, he = ["href"], me = { class: "pa-header-mobile__bar" }, fe = ["aria-expanded", "aria-label"], _e = { class: "pa-header-mobile__logo" }, ve = { class: "pa-header-mobile__actions" }, ge = ["aria-label"], ye = ["aria-label"], ke = ["aria-label"], Le = { class: "pa-header-mobile__panel-scroll" }, we = {
7
7
  key: 0,
8
8
  class: "pa-header-mobile__group pa-header-mobile__group--primary"
9
- }, we = ["onClick"], Ce = { class: "pa-header-mobile__tile-label" }, Ee = {
9
+ }, Ce = ["onClick"], Ee = { class: "pa-header-mobile__tile-label" }, Oe = {
10
10
  key: 1,
11
11
  class: "pa-header-mobile__group pa-header-mobile__group--secondary"
12
- }, Oe = ["onClick"], Ae = { class: "pa-header-mobile__tile-label" }, Te = ["aria-label"], $e = ["aria-pressed", "onClick"], ze = ["aria-label"], Se = { class: "pa-header-mobile__back-label" }, xe = {
12
+ }, Ae = ["onClick"], Te = { class: "pa-header-mobile__tile-label" }, $e = ["aria-label"], ze = ["aria-pressed", "onClick"], Se = ["aria-label"], xe = { class: "pa-header-mobile__back-label" }, Be = {
13
13
  key: 0,
14
14
  class: "pa-header-mobile__drill-children"
15
- }, Be = ["onClick"], Fe = { class: "pa-header-mobile__tile-label" }, Ie = {
15
+ }, Fe = ["onClick"], Ie = { class: "pa-header-mobile__tile-label" }, Me = {
16
16
  key: 1,
17
17
  class: "pa-header-mobile__tools-wrap"
18
- }, Me = { class: "pa-header-mobile__tools-header" }, De = { class: "pa-header-mobile__tools-header-left" }, Ne = { class: "pa-header-mobile__tools-heading" }, Re = ["aria-expanded", "aria-label"], Pe = {
18
+ }, De = { class: "pa-header-mobile__tools-header" }, Ne = { class: "pa-header-mobile__tools-header-left" }, Re = { class: "pa-header-mobile__tools-heading" }, Pe = ["aria-expanded", "aria-label"], Ve = {
19
19
  key: 0,
20
20
  class: "pa-header-mobile__tools-toggle-text"
21
- }, Ve = {
21
+ }, Ke = {
22
22
  key: 0,
23
23
  class: "pa-header-mobile__tools-body"
24
- }, Ke = {
24
+ }, We = {
25
25
  key: 0,
26
26
  class: "pa-header-mobile__tools-text"
27
- }, Ue = {
27
+ }, je = {
28
28
  key: 1,
29
29
  class: "pa-header-mobile__tools-links"
30
- }, We = ["href"], je = ["href"], Ge = {
30
+ }, Ue = ["href"], Ge = ["href"], qe = {
31
31
  key: 2,
32
32
  class: "pa-header-mobile__section-link-wrap"
33
- }, qe = ["href"], He = { class: "pa-header-mobile__bar pa-header-mobile__bar--in-panel" }, Je = ["aria-label"], Qe = { class: "pa-header-mobile__logo" }, Xe = { class: "pa-header-mobile__actions" }, Ye = ["aria-label"], Ze = ["aria-label"];
34
- let ea = 0;
35
- function aa() {
36
- return ++ea;
37
- }
38
- const na = /* @__PURE__ */ se({
33
+ }, He = ["href"], Je = { class: "pa-header-mobile__bar pa-header-mobile__bar--in-panel" }, Qe = ["aria-label"], Xe = { class: "pa-header-mobile__logo" }, Ye = { class: "pa-header-mobile__actions" }, Ze = ["aria-label"], ea = ["aria-label"], oa = /* @__PURE__ */ se({
39
34
  __name: "PaHeaderMobile",
40
35
  props: {
41
36
  loggedIn: { type: Boolean, default: !1 },
@@ -60,7 +55,7 @@ const na = /* @__PURE__ */ se({
60
55
  },
61
56
  emits: ["update:menuOpen", "search-click", "user-click", "navigate", "language-change"],
62
57
  setup(i, { emit: G }) {
63
- const u = i, k = G, S = `pa-header-mobile-panel-${aa()}`, B = w(!1), g = h(
58
+ const u = i, k = G, S = `pa-header-mobile-panel-${re()}`, B = w(!1), g = h(
64
59
  () => u.menuOpen !== void 0 ? u.menuOpen : B.value
65
60
  );
66
61
  function F(e) {
@@ -157,11 +152,11 @@ const na = /* @__PURE__ */ se({
157
152
  function K() {
158
153
  !$ || typeof window > "u" || (window.removeEventListener("keydown", P), $ = !1);
159
154
  }
160
- re(
155
+ ue(
161
156
  g,
162
157
  async (e) => {
163
158
  if (e) {
164
- if (typeof document < "u" && (L = document.activeElement), u.teleportTarget !== !1 && ne(), ie(), await ue(), f.value) {
159
+ if (typeof document < "u" && (L = document.activeElement), u.teleportTarget !== !1 && ne(), ie(), await de(), f.value) {
165
160
  const n = R(f.value);
166
161
  n.length > 0 ? n[0].focus({ preventScroll: !0 }) : f.value.focus({ preventScroll: !0 });
167
162
  }
@@ -169,25 +164,25 @@ const na = /* @__PURE__ */ se({
169
164
  K(), V(), v.value = [], m.value = !1, L && typeof document < "u" && document.contains(L) && L.focus({ preventScroll: !0 }), L = null;
170
165
  },
171
166
  { flush: "post", immediate: !0 }
172
- ), de(() => {
167
+ ), ce(() => {
173
168
  K(), V();
174
169
  });
175
- function U() {
170
+ function W() {
176
171
  F(!g.value);
177
172
  }
178
- function W(e) {
173
+ function j(e) {
179
174
  k("search-click", e);
180
175
  }
181
- function j(e) {
176
+ function U(e) {
182
177
  k("user-click", e);
183
178
  }
184
- return (e, n) => (t(), o("header", be, [
179
+ return (e, n) => (t(), o("header", pe, [
185
180
  q.value ? (t(), o("a", {
186
181
  key: 0,
187
182
  class: "pa-header-mobile__skip",
188
183
  href: J.value
189
- }, b(H.value), 9, pe)) : d("", !0),
190
- l("div", he, [
184
+ }, b(H.value), 9, he)) : d("", !0),
185
+ l("div", me, [
191
186
  l("button", {
192
187
  ref_key: "menuToggleRef",
193
188
  ref: le,
@@ -196,14 +191,14 @@ const na = /* @__PURE__ */ se({
196
191
  "aria-expanded": g.value,
197
192
  "aria-controls": S,
198
193
  "aria-label": Q.value,
199
- onClick: U
194
+ onClick: W
200
195
  }, [
201
196
  _(p, {
202
197
  name: g.value ? "x" : "list",
203
198
  size: "md"
204
199
  }, null, 8, ["name"])
205
- ], 8, me),
206
- l("div", fe, [
200
+ ], 8, fe),
201
+ l("div", _e, [
207
202
  C(e.$slots, "logo", {}, () => [
208
203
  n[0] || (n[0] = l("span", {
209
204
  class: "pa-header-mobile__logo-placeholder",
@@ -212,23 +207,23 @@ const na = /* @__PURE__ */ se({
212
207
  ], !0)
213
208
  ]),
214
209
  C(e.$slots, "actions", {}, () => [
215
- l("div", _e, [
210
+ l("div", ve, [
216
211
  l("button", {
217
212
  type: "button",
218
213
  class: "pa-header-mobile__action",
219
214
  "aria-label": i.searchActionLabel,
220
- onClick: W
215
+ onClick: j
221
216
  }, [
222
217
  _(p, {
223
218
  name: "magnifying-glass",
224
219
  size: "md"
225
220
  })
226
- ], 8, ve),
221
+ ], 8, ge),
227
222
  l("button", {
228
223
  type: "button",
229
224
  class: "pa-header-mobile__action pa-header-mobile__action--user",
230
225
  "aria-label": I.value,
231
- onClick: j
226
+ onClick: U
232
227
  }, [
233
228
  C(e.$slots, "user", {}, () => [
234
229
  _(p, {
@@ -236,11 +231,11 @@ const na = /* @__PURE__ */ se({
236
231
  size: "md"
237
232
  }, null, 8, ["name"])
238
233
  ], !0)
239
- ], 8, ge)
234
+ ], 8, ye)
240
235
  ])
241
236
  ], !0)
242
237
  ]),
243
- (t(), E(ce, {
238
+ (t(), E(be, {
244
239
  to: i.teleportTarget === !1 ? void 0 : i.teleportTarget,
245
240
  disabled: i.teleportTarget === !1
246
241
  }, [
@@ -256,7 +251,7 @@ const na = /* @__PURE__ */ se({
256
251
  "aria-label": i.panelLabel,
257
252
  onKeydown: oe
258
253
  }, [
259
- l("div", ke, [
254
+ l("div", Le, [
260
255
  X.value ? (t(), o("div", {
261
256
  key: 1,
262
257
  class: z(["pa-header-mobile__drill", `pa-header-mobile__drill--${s.value.tier}`])
@@ -271,9 +266,9 @@ const na = /* @__PURE__ */ se({
271
266
  name: "caret-left",
272
267
  size: "sm"
273
268
  }),
274
- l("span", Se, b(s.value.item.label), 1)
275
- ], 8, ze),
276
- s.value.item.children && s.value.item.children.length > 0 ? (t(), o("ul", xe, [
269
+ l("span", xe, b(s.value.item.label), 1)
270
+ ], 8, Se),
271
+ s.value.item.children && s.value.item.children.length > 0 ? (t(), o("ul", Be, [
277
272
  (t(!0), o(y, null, O(s.value.item.children, (a, r) => (t(), o("li", {
278
273
  key: `c-${r}-${a.label}`,
279
274
  class: "pa-header-mobile__tile-wrap"
@@ -283,26 +278,26 @@ const na = /* @__PURE__ */ se({
283
278
  class: "pa-header-mobile__tile",
284
279
  onClick: (c) => x(c, a, s.value.tier)
285
280
  }, [
286
- l("span", Fe, b(a.label), 1),
281
+ l("span", Ie, b(a.label), 1),
287
282
  A(a) ? (t(), E(p, {
288
283
  key: 0,
289
284
  name: "caret-right",
290
285
  size: "sm"
291
286
  })) : d("", !0)
292
- ], 8, Be)
287
+ ], 8, Fe)
293
288
  ]))), 128))
294
289
  ])) : d("", !0),
295
- s.value.tier === "primary" && s.value.item.tools ? (t(), o("div", Ie, [
290
+ s.value.tier === "primary" && s.value.item.tools ? (t(), o("div", Me, [
296
291
  l("div", {
297
292
  class: z(["pa-header-mobile__tools", { "pa-header-mobile__tools--open": m.value }])
298
293
  }, [
299
- l("div", Me, [
300
- l("div", De, [
294
+ l("div", De, [
295
+ l("div", Ne, [
301
296
  _(p, {
302
297
  name: s.value.item.tools.icon,
303
298
  size: "md"
304
299
  }, null, 8, ["name"]),
305
- l("h3", Ne, b(s.value.item.tools.heading), 1)
300
+ l("h3", Re, b(s.value.item.tools.heading), 1)
306
301
  ]),
307
302
  l("button", {
308
303
  type: "button",
@@ -315,12 +310,12 @@ const na = /* @__PURE__ */ se({
315
310
  key: 1,
316
311
  name: "caret-up",
317
312
  size: "sm"
318
- })) : (t(), o("span", Pe, b(i.toolsOpenLabel), 1))
319
- ], 8, Re)
313
+ })) : (t(), o("span", Ve, b(i.toolsOpenLabel), 1))
314
+ ], 8, Pe)
320
315
  ]),
321
- m.value ? (t(), o("div", Ve, [
322
- s.value.item.tools.body ? (t(), o("p", Ke, b(s.value.item.tools.body), 1)) : d("", !0),
323
- s.value.item.tools.links && s.value.item.tools.links.length > 0 ? (t(), o("ul", Ue, [
316
+ m.value ? (t(), o("div", Ke, [
317
+ s.value.item.tools.body ? (t(), o("p", We, b(s.value.item.tools.body), 1)) : d("", !0),
318
+ s.value.item.tools.links && s.value.item.tools.links.length > 0 ? (t(), o("ul", je, [
324
319
  (t(!0), o(y, null, O(s.value.item.tools.links, (a, r) => (t(), o("li", {
325
320
  key: `tl-${r}-${a.label}`,
326
321
  class: "pa-header-mobile__tools-link-item"
@@ -332,18 +327,18 @@ const na = /* @__PURE__ */ se({
332
327
  l("a", {
333
328
  class: "pa-header-mobile__tools-link",
334
329
  href: a.href
335
- }, b(a.label), 9, We)
330
+ }, b(a.label), 9, Ue)
336
331
  ]))), 128))
337
332
  ])) : d("", !0),
338
333
  s.value.item.tools.cta ? (t(), o("a", {
339
334
  key: 2,
340
335
  class: "pa-header-mobile__tools-cta",
341
336
  href: s.value.item.tools.cta.href
342
- }, b(s.value.item.tools.cta.label), 9, je)) : d("", !0)
337
+ }, b(s.value.item.tools.cta.label), 9, Ge)) : d("", !0)
343
338
  ])) : d("", !0)
344
339
  ], 2)
345
340
  ])) : d("", !0),
346
- s.value.item.href ? (t(), o("div", Ge, [
341
+ s.value.item.href ? (t(), o("div", qe, [
347
342
  l("a", {
348
343
  class: "pa-header-mobile__section-link",
349
344
  href: s.value.item.href
@@ -353,10 +348,10 @@ const na = /* @__PURE__ */ se({
353
348
  name: "arrow-right",
354
349
  size: "sm"
355
350
  })
356
- ], 8, qe)
351
+ ], 8, He)
357
352
  ])) : d("", !0)
358
353
  ], 2)) : (t(), o(y, { key: 0 }, [
359
- i.primaryNav.length > 0 ? (t(), o("ul", Le, [
354
+ i.primaryNav.length > 0 ? (t(), o("ul", we, [
360
355
  (t(!0), o(y, null, O(i.primaryNav, (a, r) => (t(), o("li", {
361
356
  key: `p-${r}-${a.label}`,
362
357
  class: "pa-header-mobile__tile-wrap"
@@ -366,16 +361,16 @@ const na = /* @__PURE__ */ se({
366
361
  class: "pa-header-mobile__tile",
367
362
  onClick: (c) => x(c, a, "primary")
368
363
  }, [
369
- l("span", Ce, b(a.label), 1),
364
+ l("span", Ee, b(a.label), 1),
370
365
  A(a) ? (t(), E(p, {
371
366
  key: 0,
372
367
  name: "caret-right",
373
368
  size: "sm"
374
369
  })) : d("", !0)
375
- ], 8, we)
370
+ ], 8, Ce)
376
371
  ]))), 128))
377
372
  ])) : d("", !0),
378
- i.secondaryNav.length > 0 ? (t(), o("ul", Ee, [
373
+ i.secondaryNav.length > 0 ? (t(), o("ul", Oe, [
379
374
  (t(!0), o(y, null, O(i.secondaryNav, (a, r) => (t(), o("li", {
380
375
  key: `s-${r}-${a.label}`,
381
376
  class: "pa-header-mobile__tile-wrap"
@@ -385,13 +380,13 @@ const na = /* @__PURE__ */ se({
385
380
  class: "pa-header-mobile__tile",
386
381
  onClick: (c) => x(c, a, "secondary")
387
382
  }, [
388
- l("span", Ae, b(a.label), 1),
383
+ l("span", Te, b(a.label), 1),
389
384
  A(a) ? (t(), E(p, {
390
385
  key: 0,
391
386
  name: "caret-right",
392
387
  size: "sm"
393
388
  })) : d("", !0)
394
- ], 8, Oe)
389
+ ], 8, Ae)
395
390
  ]))), 128))
396
391
  ])) : d("", !0),
397
392
  i.languages.length > 0 ? (t(), o("div", {
@@ -408,25 +403,25 @@ const na = /* @__PURE__ */ se({
408
403
  }]),
409
404
  "aria-pressed": a.code === i.currentLanguage,
410
405
  onClick: (r) => ee(r, a)
411
- }, b(a.label), 11, $e))), 128))
412
- ], 8, Te)) : d("", !0)
406
+ }, b(a.label), 11, ze))), 128))
407
+ ], 8, $e)) : d("", !0)
413
408
  ], 64))
414
409
  ]),
415
- l("div", He, [
410
+ l("div", Je, [
416
411
  l("button", {
417
412
  type: "button",
418
413
  class: "pa-header-mobile__menu-toggle",
419
414
  "aria-expanded": !0,
420
415
  "aria-controls": S,
421
416
  "aria-label": i.closeMenuLabel,
422
- onClick: U
417
+ onClick: W
423
418
  }, [
424
419
  _(p, {
425
420
  name: "x",
426
421
  size: "md"
427
422
  })
428
- ], 8, Je),
429
- l("div", Qe, [
423
+ ], 8, Qe),
424
+ l("div", Xe, [
430
425
  C(e.$slots, "logo", {}, () => [
431
426
  n[2] || (n[2] = l("span", {
432
427
  class: "pa-header-mobile__logo-placeholder",
@@ -434,23 +429,23 @@ const na = /* @__PURE__ */ se({
434
429
  }, null, -1))
435
430
  ], !0)
436
431
  ]),
437
- l("div", Xe, [
432
+ l("div", Ye, [
438
433
  l("button", {
439
434
  type: "button",
440
435
  class: "pa-header-mobile__action",
441
436
  "aria-label": i.searchActionLabel,
442
- onClick: W
437
+ onClick: j
443
438
  }, [
444
439
  _(p, {
445
440
  name: "magnifying-glass",
446
441
  size: "md"
447
442
  })
448
- ], 8, Ye),
443
+ ], 8, Ze),
449
444
  l("button", {
450
445
  type: "button",
451
446
  class: "pa-header-mobile__action pa-header-mobile__action--user",
452
447
  "aria-label": I.value,
453
- onClick: j
448
+ onClick: U
454
449
  }, [
455
450
  C(e.$slots, "user", {}, () => [
456
451
  _(p, {
@@ -458,15 +453,15 @@ const na = /* @__PURE__ */ se({
458
453
  size: "md"
459
454
  }, null, 8, ["name"])
460
455
  ], !0)
461
- ], 8, Ze)
456
+ ], 8, ea)
462
457
  ])
463
458
  ])
464
- ], 42, ye)) : d("", !0)
459
+ ], 42, ke)) : d("", !0)
465
460
  ], 8, ["to", "disabled"]))
466
461
  ]));
467
462
  }
468
463
  });
469
464
  export {
470
- na as default
465
+ oa as default
471
466
  };
472
467
  //# sourceMappingURL=PaHeaderMobile.vue2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PaHeaderMobile.vue2.js","sources":["../../../src/components/PaHeaderMobile/PaHeaderMobile.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type {\n PaHeaderLink,\n PaHeaderTools,\n PaHeaderNavItem,\n PaHeaderLanguage,\n PaHeaderSkipLinkConfig,\n PaHeaderNavigateEventPayload,\n PaHeaderLanguageChangeEventPayload,\n} from '../PaHeaderShared/types'\n\nexport type {\n PaHeaderLink,\n PaHeaderTools,\n PaHeaderNavItem,\n PaHeaderLanguage,\n PaHeaderSkipLinkConfig,\n PaHeaderNavigateEventPayload,\n PaHeaderLanguageChangeEventPayload,\n}\n\nlet mobileUid = 0\nfunction nextMobileId() {\n return ++mobileUid\n}\n\nexport interface PaHeaderMobileProps {\n loggedIn?: boolean\n primaryNav?: PaHeaderNavItem[]\n secondaryNav?: PaHeaderNavItem[]\n languages?: PaHeaderLanguage[]\n currentLanguage?: string\n menuOpen?: boolean\n skipLink?: boolean | PaHeaderSkipLinkConfig\n /**\n * Target for the menu panel's <Teleport>. Defaults to `'body'`.\n * Pass `false` to disable Teleport (panel renders inline as a child of the\n * <header> wrapper, useful for Histoire stories or constrained previews).\n */\n teleportTarget?: string | HTMLElement | false\n panelLabel?: string\n openMenuLabel?: string\n closeMenuLabel?: string\n searchActionLabel?: string\n userActionLabelLoggedOut?: string\n userActionLabelLoggedIn?: string\n languageGroupLabel?: string\n backLabel?: string\n toolsOpenLabel?: string\n toolsCloseLabel?: string\n exploreLabel?: string\n}\n\ninterface DrillEntry {\n item: PaHeaderNavItem\n tier: 'primary' | 'secondary'\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, nextTick, onBeforeUnmount, ref, watch } from 'vue'\nimport PaIcon from '../PaIcon/PaIcon.vue'\n\nconst props = withDefaults(defineProps<PaHeaderMobileProps>(), {\n loggedIn: false,\n primaryNav: () => [],\n secondaryNav: () => [],\n languages: () => [],\n currentLanguage: undefined,\n menuOpen: undefined,\n skipLink: true,\n teleportTarget: 'body',\n panelLabel: 'Menu principale',\n openMenuLabel: 'Apri menu',\n closeMenuLabel: 'Chiudi menu',\n searchActionLabel: 'Cerca',\n userActionLabelLoggedOut: 'Accedi',\n userActionLabelLoggedIn: 'Area personale',\n languageGroupLabel: 'Seleziona la lingua',\n backLabel: 'Indietro',\n toolsOpenLabel: 'Apri',\n toolsCloseLabel: 'Chiudi',\n exploreLabel: 'Esplora',\n})\n\nconst emit = defineEmits<{\n 'update:menuOpen': [boolean]\n 'search-click': [MouseEvent]\n 'user-click': [MouseEvent]\n navigate: [PaHeaderNavigateEventPayload]\n 'language-change': [PaHeaderLanguageChangeEventPayload]\n}>()\n\ndefineSlots<{\n logo?: () => unknown\n actions?: () => unknown\n user?: () => unknown\n}>()\n\nconst componentId = nextMobileId()\nconst panelId = `pa-header-mobile-panel-${componentId}`\n\nconst internalMenuOpen = ref(false)\nconst isMenuOpen = computed(() =>\n props.menuOpen !== undefined ? props.menuOpen : internalMenuOpen.value,\n)\n\nfunction setMenuOpen(next: boolean) {\n if (props.menuOpen === undefined) {\n internalMenuOpen.value = next\n }\n emit('update:menuOpen', next)\n}\n\nconst skipLinkEnabled = computed(() => props.skipLink !== false)\nconst skipLinkLabel = computed(() => {\n if (typeof props.skipLink === 'object' && props.skipLink !== null) {\n return props.skipLink.label ?? 'Vai al contenuto'\n }\n return 'Vai al contenuto'\n})\nconst skipLinkTarget = computed(() => {\n if (typeof props.skipLink === 'object' && props.skipLink !== null) {\n return props.skipLink.target ?? '#main'\n }\n return '#main'\n})\n\nconst menuToggleLabel = computed(() =>\n isMenuOpen.value ? props.closeMenuLabel : props.openMenuLabel,\n)\nconst userActionLabel = computed(() =>\n props.loggedIn ? props.userActionLabelLoggedIn : props.userActionLabelLoggedOut,\n)\nconst userIconName = computed(() => (props.loggedIn ? 'user-fill' : 'user'))\n\nconst drillStack = ref<DrillEntry[]>([])\nconst toolsOpen = ref(false)\n\nconst currentDrill = computed<DrillEntry | null>(() =>\n drillStack.value.length > 0\n ? drillStack.value[drillStack.value.length - 1]!\n : null,\n)\nconst currentLevel = computed<'primary' | 'secondary'>(() =>\n currentDrill.value ? 'secondary-level' as never : 'primary',\n)\nconst isSecondaryLevel = computed(() => drillStack.value.length > 0)\n\nconst secondaryBg = computed(() =>\n currentDrill.value?.tier === 'secondary' ? '#F2F6FC' : '#FFFFFF',\n)\n\nfunction hasChildren(item: PaHeaderNavItem): boolean {\n return Boolean(item.children && item.children.length > 0)\n}\n\nfunction tileIndicatesDrill(item: PaHeaderNavItem): boolean {\n return hasChildren(item) || Boolean(item.tools)\n}\n\nfunction handleTileClick(event: MouseEvent, item: PaHeaderNavItem, tier: 'primary' | 'secondary') {\n if (tileIndicatesDrill(item)) {\n drillStack.value.push({ item, tier })\n toolsOpen.value = false\n return\n }\n // Leaf: emit navigate\n let prevented = false\n const payload: PaHeaderNavigateEventPayload = {\n item,\n originalEvent: event,\n preventDefault: () => {\n prevented = true\n payload.defaultPrevented = true\n },\n defaultPrevented: false,\n }\n emit('navigate', payload)\n if (!prevented && item.href && typeof window !== 'undefined') {\n window.location.assign(item.href)\n }\n}\n\nfunction popDrill() {\n drillStack.value.pop()\n toolsOpen.value = false\n}\n\nfunction handleLanguageClick(event: MouseEvent, language: PaHeaderLanguage) {\n let prevented = false\n const payload: PaHeaderLanguageChangeEventPayload = {\n language,\n originalEvent: event,\n preventDefault: () => {\n prevented = true\n payload.defaultPrevented = true\n },\n defaultPrevented: false,\n }\n emit('language-change', payload)\n if (!prevented && language.href && typeof window !== 'undefined') {\n window.location.assign(language.href)\n }\n}\n\nfunction toggleTools() {\n toolsOpen.value = !toolsOpen.value\n}\n\n// --- Body scroll lock + Esc + focus management (panel) ---\n\nconst panelRef = ref<HTMLElement | null>(null)\nconst menuToggleRef = ref<HTMLButtonElement | null>(null)\n\nlet previouslyFocusedElement: HTMLElement | null = null\nlet originalBodyOverflow = ''\nlet originalBodyPaddingRight = ''\nlet scrollLockActive = false\nlet escListenerAttached = false\n\nconst FOCUSABLE_SELECTOR =\n 'button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])'\n\nfunction getFocusable(root: HTMLElement): HTMLElement[] {\n return Array.from(root.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR))\n}\n\nfunction onPanelKeydown(event: KeyboardEvent) {\n if (event.key !== 'Tab' || !panelRef.value) return\n const focusable = getFocusable(panelRef.value)\n if (focusable.length === 0) {\n event.preventDefault()\n panelRef.value.focus()\n return\n }\n const first = focusable[0]!\n const last = focusable[focusable.length - 1]!\n const active = document.activeElement as HTMLElement | null\n if (event.shiftKey) {\n if (active === first || !panelRef.value.contains(active)) {\n event.preventDefault()\n last.focus()\n }\n } else {\n if (active === last || !panelRef.value.contains(active)) {\n event.preventDefault()\n first.focus()\n }\n }\n}\n\nfunction onWindowKeydownEsc(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n event.preventDefault()\n setMenuOpen(false)\n }\n}\n\nfunction lockScroll() {\n if (scrollLockActive || typeof document === 'undefined') return\n originalBodyOverflow = document.body.style.overflow\n originalBodyPaddingRight = document.body.style.paddingRight\n const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth\n document.body.style.overflow = 'hidden'\n if (scrollbarWidth > 0) {\n document.body.style.paddingRight = `${scrollbarWidth}px`\n }\n scrollLockActive = true\n}\n\nfunction unlockScroll() {\n if (!scrollLockActive || typeof document === 'undefined') return\n document.body.style.overflow = originalBodyOverflow\n document.body.style.paddingRight = originalBodyPaddingRight\n scrollLockActive = false\n}\n\nfunction attachEsc() {\n if (escListenerAttached || typeof window === 'undefined') return\n window.addEventListener('keydown', onWindowKeydownEsc)\n escListenerAttached = true\n}\n\nfunction detachEsc() {\n if (!escListenerAttached || typeof window === 'undefined') return\n window.removeEventListener('keydown', onWindowKeydownEsc)\n escListenerAttached = false\n}\n\nwatch(\n isMenuOpen,\n async (next) => {\n if (next) {\n if (typeof document !== 'undefined') {\n previouslyFocusedElement = document.activeElement as HTMLElement | null\n }\n if (props.teleportTarget !== false) {\n lockScroll()\n }\n attachEsc()\n await nextTick()\n if (panelRef.value) {\n const focusable = getFocusable(panelRef.value)\n if (focusable.length > 0) {\n focusable[0]!.focus({ preventScroll: true })\n } else {\n panelRef.value.focus({ preventScroll: true })\n }\n }\n } else {\n detachEsc()\n unlockScroll()\n drillStack.value = []\n toolsOpen.value = false\n if (\n previouslyFocusedElement &&\n typeof document !== 'undefined' &&\n document.contains(previouslyFocusedElement)\n ) {\n previouslyFocusedElement.focus({ preventScroll: true })\n }\n previouslyFocusedElement = null\n }\n },\n { flush: 'post', immediate: true },\n)\n\nonBeforeUnmount(() => {\n detachEsc()\n unlockScroll()\n})\n\nfunction onMenuToggle() {\n setMenuOpen(!isMenuOpen.value)\n}\n\nfunction onSearchClick(event: MouseEvent) {\n emit('search-click', event)\n}\n\nfunction onUserClick(event: MouseEvent) {\n emit('user-click', event)\n}\n</script>\n\n<template>\n <header class=\"pa-header-mobile\" role=\"banner\">\n <a\n v-if=\"skipLinkEnabled\"\n class=\"pa-header-mobile__skip\"\n :href=\"skipLinkTarget\"\n >\n {{ skipLinkLabel }}\n </a>\n\n <div class=\"pa-header-mobile__bar\">\n <button\n ref=\"menuToggleRef\"\n type=\"button\"\n class=\"pa-header-mobile__menu-toggle\"\n :aria-expanded=\"isMenuOpen\"\n :aria-controls=\"panelId\"\n :aria-label=\"menuToggleLabel\"\n @click=\"onMenuToggle\"\n >\n <PaIcon :name=\"isMenuOpen ? 'x' : 'list'\" size=\"md\" />\n </button>\n\n <div class=\"pa-header-mobile__logo\">\n <slot name=\"logo\">\n <span\n class=\"pa-header-mobile__logo-placeholder\"\n aria-hidden=\"true\"\n />\n </slot>\n </div>\n\n <slot name=\"actions\">\n <div class=\"pa-header-mobile__actions\">\n <button\n type=\"button\"\n class=\"pa-header-mobile__action\"\n :aria-label=\"searchActionLabel\"\n @click=\"onSearchClick\"\n >\n <PaIcon name=\"magnifying-glass\" size=\"md\" />\n </button>\n <button\n type=\"button\"\n class=\"pa-header-mobile__action pa-header-mobile__action--user\"\n :aria-label=\"userActionLabel\"\n @click=\"onUserClick\"\n >\n <slot name=\"user\">\n <PaIcon :name=\"userIconName\" size=\"md\" />\n </slot>\n </button>\n </div>\n </slot>\n </div>\n\n <Teleport :to=\"teleportTarget === false ? undefined : teleportTarget\" :disabled=\"teleportTarget === false\">\n <div\n v-if=\"isMenuOpen\"\n :id=\"panelId\"\n ref=\"panelRef\"\n class=\"pa-header-mobile__panel\"\n :class=\"{ 'pa-header-mobile__panel--inline': teleportTarget === false }\"\n role=\"dialog\"\n aria-modal=\"true\"\n tabindex=\"-1\"\n :aria-label=\"panelLabel\"\n @keydown=\"onPanelKeydown\"\n >\n <div class=\"pa-header-mobile__panel-scroll\">\n <!-- Primary level -->\n <template v-if=\"!isSecondaryLevel\">\n <ul\n v-if=\"primaryNav.length > 0\"\n class=\"pa-header-mobile__group pa-header-mobile__group--primary\"\n >\n <li\n v-for=\"(item, idx) in primaryNav\"\n :key=\"`p-${idx}-${item.label}`\"\n class=\"pa-header-mobile__tile-wrap\"\n >\n <button\n type=\"button\"\n class=\"pa-header-mobile__tile\"\n @click=\"(event) => handleTileClick(event, item, 'primary')\"\n >\n <span class=\"pa-header-mobile__tile-label\">{{ item.label }}</span>\n <PaIcon\n v-if=\"tileIndicatesDrill(item)\"\n name=\"caret-right\"\n size=\"sm\"\n />\n </button>\n </li>\n </ul>\n\n <ul\n v-if=\"secondaryNav.length > 0\"\n class=\"pa-header-mobile__group pa-header-mobile__group--secondary\"\n >\n <li\n v-for=\"(item, idx) in secondaryNav\"\n :key=\"`s-${idx}-${item.label}`\"\n class=\"pa-header-mobile__tile-wrap\"\n >\n <button\n type=\"button\"\n class=\"pa-header-mobile__tile\"\n @click=\"(event) => handleTileClick(event, item, 'secondary')\"\n >\n <span class=\"pa-header-mobile__tile-label\">{{ item.label }}</span>\n <PaIcon\n v-if=\"tileIndicatesDrill(item)\"\n name=\"caret-right\"\n size=\"sm\"\n />\n </button>\n </li>\n </ul>\n\n <div\n v-if=\"languages.length > 0\"\n class=\"pa-header-mobile__language\"\n role=\"group\"\n :aria-label=\"languageGroupLabel\"\n >\n <button\n v-for=\"lang in languages\"\n :key=\"lang.code\"\n type=\"button\"\n class=\"pa-header-mobile__language-pill\"\n :class=\"{\n 'pa-header-mobile__language-pill--active':\n lang.code === currentLanguage,\n }\"\n :aria-pressed=\"lang.code === currentLanguage\"\n @click=\"(event) => handleLanguageClick(event, lang)\"\n >\n {{ lang.label }}\n </button>\n </div>\n </template>\n\n <!-- Secondary level -->\n <template v-else>\n <div\n class=\"pa-header-mobile__drill\"\n :class=\"`pa-header-mobile__drill--${currentDrill!.tier}`\"\n >\n <button\n type=\"button\"\n class=\"pa-header-mobile__back\"\n :aria-label=\"backLabel\"\n @click=\"popDrill\"\n >\n <PaIcon name=\"caret-left\" size=\"sm\" />\n <span class=\"pa-header-mobile__back-label\">{{ currentDrill!.item.label }}</span>\n </button>\n\n <ul\n v-if=\"currentDrill!.item.children && currentDrill!.item.children.length > 0\"\n class=\"pa-header-mobile__drill-children\"\n >\n <li\n v-for=\"(child, idx) in currentDrill!.item.children\"\n :key=\"`c-${idx}-${child.label}`\"\n class=\"pa-header-mobile__tile-wrap\"\n >\n <button\n type=\"button\"\n class=\"pa-header-mobile__tile\"\n @click=\"(event) => handleTileClick(event, child, currentDrill!.tier)\"\n >\n <span class=\"pa-header-mobile__tile-label\">{{ child.label }}</span>\n <PaIcon\n v-if=\"tileIndicatesDrill(child)\"\n name=\"caret-right\"\n size=\"sm\"\n />\n </button>\n </li>\n </ul>\n\n <div\n v-if=\"currentDrill!.tier === 'primary' && currentDrill!.item.tools\"\n class=\"pa-header-mobile__tools-wrap\"\n >\n <div\n class=\"pa-header-mobile__tools\"\n :class=\"{ 'pa-header-mobile__tools--open': toolsOpen }\"\n >\n <div class=\"pa-header-mobile__tools-header\">\n <div class=\"pa-header-mobile__tools-header-left\">\n <PaIcon :name=\"currentDrill!.item.tools.icon\" size=\"md\" />\n <h3 class=\"pa-header-mobile__tools-heading\">\n {{ currentDrill!.item.tools.heading }}\n </h3>\n </div>\n <button\n type=\"button\"\n class=\"pa-header-mobile__tools-toggle\"\n :aria-expanded=\"toolsOpen\"\n :aria-label=\"toolsOpen ? toolsCloseLabel : toolsOpenLabel\"\n @click=\"toggleTools\"\n >\n <span v-if=\"!toolsOpen\" class=\"pa-header-mobile__tools-toggle-text\">{{ toolsOpenLabel }}</span>\n <PaIcon v-else name=\"caret-up\" size=\"sm\" />\n </button>\n </div>\n\n <div v-if=\"toolsOpen\" class=\"pa-header-mobile__tools-body\">\n <p\n v-if=\"currentDrill!.item.tools.body\"\n class=\"pa-header-mobile__tools-text\"\n >{{ currentDrill!.item.tools.body }}</p>\n\n <ul\n v-if=\"currentDrill!.item.tools.links && currentDrill!.item.tools.links.length > 0\"\n class=\"pa-header-mobile__tools-links\"\n >\n <li\n v-for=\"(link, idx) in currentDrill!.item.tools.links\"\n :key=\"`tl-${idx}-${link.label}`\"\n class=\"pa-header-mobile__tools-link-item\"\n >\n <span class=\"pa-header-mobile__tools-bullet\" aria-hidden=\"true\" />\n <a class=\"pa-header-mobile__tools-link\" :href=\"link.href\">{{ link.label }}</a>\n </li>\n </ul>\n\n <a\n v-if=\"currentDrill!.item.tools.cta\"\n class=\"pa-header-mobile__tools-cta\"\n :href=\"currentDrill!.item.tools.cta.href\"\n >{{ currentDrill!.item.tools.cta.label }}</a>\n </div>\n </div>\n </div>\n\n <div\n v-if=\"currentDrill!.item.href\"\n class=\"pa-header-mobile__section-link-wrap\"\n >\n <a class=\"pa-header-mobile__section-link\" :href=\"currentDrill!.item.href\">\n <span>{{ exploreLabel }} {{ currentDrill!.item.label }}</span>\n <PaIcon name=\"arrow-right\" size=\"sm\" />\n </a>\n </div>\n </div>\n </template>\n </div>\n\n <!-- Bar at panel bottom (Open state) -->\n <div class=\"pa-header-mobile__bar pa-header-mobile__bar--in-panel\">\n <button\n type=\"button\"\n class=\"pa-header-mobile__menu-toggle\"\n :aria-expanded=\"true\"\n :aria-controls=\"panelId\"\n :aria-label=\"closeMenuLabel\"\n @click=\"onMenuToggle\"\n >\n <PaIcon name=\"x\" size=\"md\" />\n </button>\n\n <div class=\"pa-header-mobile__logo\">\n <slot name=\"logo\">\n <span class=\"pa-header-mobile__logo-placeholder\" aria-hidden=\"true\" />\n </slot>\n </div>\n\n <div class=\"pa-header-mobile__actions\">\n <button\n type=\"button\"\n class=\"pa-header-mobile__action\"\n :aria-label=\"searchActionLabel\"\n @click=\"onSearchClick\"\n >\n <PaIcon name=\"magnifying-glass\" size=\"md\" />\n </button>\n <button\n type=\"button\"\n class=\"pa-header-mobile__action pa-header-mobile__action--user\"\n :aria-label=\"userActionLabel\"\n @click=\"onUserClick\"\n >\n <slot name=\"user\">\n <PaIcon :name=\"userIconName\" size=\"md\" />\n </slot>\n </button>\n </div>\n </div>\n </div>\n </Teleport>\n </header>\n</template>\n\n<style scoped>\n.pa-header-mobile {\n position: relative;\n width: 100%;\n background: #ffffff;\n font-family: var(--pa-font-family-base, 'Inter', sans-serif);\n}\n\n.pa-header-mobile__skip {\n position: absolute;\n left: -9999px;\n top: auto;\n width: 1px;\n height: 1px;\n overflow: hidden;\n background: #ffffff;\n color: var(--pa-color-text-dark-blue);\n padding: var(--pa-space-xs) var(--pa-space-sm);\n border-radius: var(--pa-radius-smooth);\n text-decoration: none;\n font-size: var(--pa-font-label-sm-size);\n font-weight: var(--pa-font-label-sm-weight);\n line-height: var(--pa-font-label-sm-line-height);\n z-index: 9999;\n}\n\n.pa-header-mobile__skip:focus-visible {\n position: fixed;\n left: var(--pa-space-xs);\n top: var(--pa-space-xs);\n width: auto;\n height: auto;\n overflow: visible;\n outline: var(--pa-border-sm) solid var(--pa-color-accent);\n outline-offset: 2px;\n box-shadow: 0 0 16px 0 #e3e5e8;\n}\n\n.pa-header-mobile__bar {\n position: relative;\n height: 60px;\n width: 100%;\n background: #ffffff;\n container-type: inline-size;\n}\n\n.pa-header-mobile__bar--in-panel {\n flex-shrink: 0;\n border-top: var(--pa-border-xs) solid var(--pa-color-bg-primary-light-50);\n}\n\n.pa-header-mobile__menu-toggle,\n.pa-header-mobile__action {\n position: absolute;\n top: 0;\n bottom: 0;\n width: 56px;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n border: 0;\n background: var(--pa-color-bg-primary-light-40);\n color: var(--pa-color-neutral-gray);\n cursor: pointer;\n}\n\n.pa-header-mobile__menu-toggle {\n left: 0;\n}\n\n.pa-header-mobile__menu-toggle:focus-visible,\n.pa-header-mobile__action:focus-visible {\n outline: var(--pa-border-sm) solid var(--pa-color-accent);\n outline-offset: -2px;\n}\n\n.pa-header-mobile__logo {\n position: absolute;\n left: 68px;\n top: 10px;\n height: 40px;\n display: flex;\n align-items: center;\n max-width: calc(100% - 68px - 112px);\n}\n\n.pa-header-mobile__logo-placeholder {\n display: block;\n width: 70.133px;\n height: 40px;\n background: var(--pa-color-primary);\n}\n\n.pa-header-mobile__actions {\n position: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n display: flex;\n flex-direction: row;\n}\n\n.pa-header-mobile__action {\n position: static;\n flex-shrink: 0;\n}\n\n/* Panel */\n\n.pa-header-mobile__panel {\n position: fixed;\n inset: 0;\n z-index: 1000;\n background: #ffffff;\n display: flex;\n flex-direction: column;\n min-height: 100vh;\n font-family: var(--pa-font-family-base, 'Inter', sans-serif);\n}\n\n/* Inline variant: panel constrained to its parent (typically `.pa-header-mobile`\n * expanded by the consumer to viewport-like dimensions). Used in Histoire so the\n * panel doesn't take over the docs UI. */\n.pa-header-mobile__panel--inline {\n position: absolute;\n inset: 0;\n z-index: 1;\n min-height: 0;\n}\n\n.pa-header-mobile__panel:focus {\n outline: none;\n}\n\n.pa-header-mobile__panel-scroll {\n flex: 1 1 auto;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n}\n\n/* Groups (Primary level) */\n\n.pa-header-mobile__group {\n list-style: none;\n margin: 0;\n padding: var(--pa-space-sm) 0;\n display: flex;\n flex-direction: column;\n}\n\n.pa-header-mobile__group--primary {\n background: #ffffff;\n}\n\n.pa-header-mobile__group--secondary {\n background: var(--pa-color-bg-primary-light-40);\n}\n\n.pa-header-mobile__tile-wrap {\n list-style: none;\n}\n\n.pa-header-mobile__tile {\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--pa-space-sm);\n padding: var(--pa-space-sm) var(--pa-space-md);\n background: transparent;\n border: 0;\n border-bottom: var(--pa-border-xs) solid var(--pa-color-bg-primary-light-50);\n cursor: pointer;\n text-align: left;\n font-family: inherit;\n}\n\n.pa-header-mobile__tile-label {\n flex: 1 1 0;\n font-size: var(--pa-font-label-sm-size);\n font-weight: var(--pa-font-label-sm-weight);\n line-height: var(--pa-font-label-sm-line-height);\n color: var(--pa-color-text-dark-blue);\n}\n\n.pa-header-mobile__tile:focus-visible {\n outline: var(--pa-border-sm) solid var(--pa-color-accent);\n outline-offset: -2px;\n}\n\n/* Language switcher */\n\n.pa-header-mobile__language {\n background: var(--pa-color-bg-primary-light-40);\n display: flex;\n justify-content: center;\n gap: var(--pa-space-sm);\n padding: var(--pa-space-xs) 0;\n}\n\n.pa-header-mobile__language-pill {\n background: transparent;\n border: 0;\n padding: 4px 8px 0 8px;\n font-family: inherit;\n font-size: 16px;\n line-height: 20px;\n color: var(--pa-color-neutral-gray);\n border-bottom: 4px solid transparent;\n cursor: pointer;\n border-radius: 4px 4px 0 0;\n}\n\n.pa-header-mobile__language-pill--active {\n color: #000000;\n border-bottom-color: #000000;\n}\n\n.pa-header-mobile__language-pill:focus-visible {\n outline: var(--pa-border-sm) solid var(--pa-color-accent);\n outline-offset: 2px;\n}\n\n/* Drill (Secondary level) */\n\n.pa-header-mobile__drill {\n display: flex;\n flex-direction: column;\n flex: 1 1 auto;\n}\n\n.pa-header-mobile__drill--primary {\n background: #ffffff;\n}\n\n.pa-header-mobile__drill--secondary {\n background: var(--pa-color-bg-primary-light-40);\n}\n\n.pa-header-mobile__back {\n display: flex;\n align-items: center;\n gap: var(--pa-space-xs);\n padding: var(--pa-space-md) var(--pa-space-md) 18px;\n background: transparent;\n border: 0;\n font-family: inherit;\n cursor: pointer;\n text-align: left;\n}\n\n.pa-header-mobile__back-label {\n font-size: 20px;\n line-height: 30px;\n font-weight: 600;\n color: var(--pa-color-text-dark-blue);\n}\n\n.pa-header-mobile__back:focus-visible {\n outline: var(--pa-border-sm) solid var(--pa-color-accent);\n outline-offset: -2px;\n}\n\n.pa-header-mobile__drill-children {\n list-style: none;\n margin: 0;\n padding: 0 var(--pa-space-md) var(--pa-space-md);\n display: flex;\n flex-direction: column;\n}\n\n.pa-header-mobile__drill-children .pa-header-mobile__tile {\n padding-left: 0;\n padding-right: 0;\n}\n\n/* Tools card */\n\n.pa-header-mobile__tools-wrap {\n padding: 0 36px;\n}\n\n.pa-header-mobile__tools {\n background: var(--pa-color-bg-primary-light-40);\n border-radius: 4px;\n padding: var(--pa-space-md);\n display: flex;\n flex-direction: column;\n gap: var(--pa-space-sm);\n}\n\n.pa-header-mobile__tools-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--pa-space-sm);\n}\n\n.pa-header-mobile__tools-header-left {\n display: flex;\n align-items: center;\n gap: var(--pa-space-sm);\n}\n\n.pa-header-mobile__tools-heading {\n margin: 0;\n font-size: 24px;\n line-height: 28px;\n letter-spacing: -0.5px;\n font-weight: 700;\n color: var(--pa-color-neutral-gray);\n}\n\n.pa-header-mobile__tools-toggle {\n background: transparent;\n border: 0;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n padding: 0;\n font-family: inherit;\n}\n\n.pa-header-mobile__tools-toggle-text {\n font-size: 16px;\n line-height: 24px;\n font-weight: 700;\n color: var(--pa-color-primary);\n text-decoration: underline;\n}\n\n.pa-header-mobile__tools-toggle:focus-visible {\n outline: var(--pa-border-sm) solid var(--pa-color-accent);\n outline-offset: 2px;\n}\n\n.pa-header-mobile__tools-body {\n display: flex;\n flex-direction: column;\n gap: var(--pa-space-sm);\n padding-top: 28px;\n}\n\n.pa-header-mobile__tools-text {\n margin: 0;\n font-size: 16px;\n line-height: 20px;\n color: var(--pa-color-neutral-gray);\n}\n\n.pa-header-mobile__tools-links {\n list-style: none;\n margin: 0;\n padding: 0 var(--pa-space-xs);\n display: flex;\n flex-direction: column;\n gap: var(--pa-space-xs);\n}\n\n.pa-header-mobile__tools-link-item {\n display: flex;\n align-items: flex-start;\n gap: 10px;\n}\n\n.pa-header-mobile__tools-bullet {\n width: 8px;\n height: 8px;\n background: var(--pa-color-bg-primary-light-50);\n margin-top: 8px;\n flex-shrink: 0;\n}\n\n.pa-header-mobile__tools-link {\n flex: 1 1 0;\n font-size: 16px;\n line-height: 24px;\n font-weight: 700;\n color: var(--pa-color-text-dark-blue);\n text-decoration: underline;\n}\n\n.pa-header-mobile__tools-link:focus-visible {\n outline: var(--pa-border-sm) solid var(--pa-color-accent);\n outline-offset: 2px;\n}\n\n.pa-header-mobile__tools-cta {\n margin-top: 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 20px 48px;\n background: var(--pa-color-primary);\n color: #ffffff;\n border-radius: var(--pa-radius-smooth);\n text-decoration: none;\n font-size: 16px;\n line-height: 20px;\n font-weight: 600;\n}\n\n.pa-header-mobile__tools-cta:focus-visible {\n outline: var(--pa-border-sm) solid var(--pa-color-accent);\n outline-offset: 2px;\n}\n\n/* Section link footer */\n\n.pa-header-mobile__section-link-wrap {\n padding: 0 36px;\n margin-top: var(--pa-space-sm);\n}\n\n.pa-header-mobile__section-link {\n display: inline-flex;\n align-items: center;\n gap: var(--pa-space-xs);\n padding: var(--pa-space-sm) 4px;\n font-size: 16px;\n line-height: 20px;\n font-weight: 600;\n color: var(--pa-color-text-dark-blue);\n text-decoration: none;\n border-radius: 4px;\n}\n\n.pa-header-mobile__section-link:focus-visible {\n outline: var(--pa-border-sm) solid var(--pa-color-accent);\n outline-offset: 2px;\n}\n</style>\n"],"names":["mobileUid","nextMobileId","props","__props","emit","__emit","panelId","internalMenuOpen","ref","isMenuOpen","computed","setMenuOpen","next","skipLinkEnabled","skipLinkLabel","skipLinkTarget","menuToggleLabel","userActionLabel","userIconName","drillStack","toolsOpen","currentDrill","isSecondaryLevel","_a","hasChildren","item","tileIndicatesDrill","handleTileClick","event","tier","prevented","payload","popDrill","handleLanguageClick","language","toggleTools","panelRef","menuToggleRef","previouslyFocusedElement","originalBodyOverflow","originalBodyPaddingRight","scrollLockActive","escListenerAttached","FOCUSABLE_SELECTOR","getFocusable","root","onPanelKeydown","focusable","first","last","active","onWindowKeydownEsc","lockScroll","scrollbarWidth","unlockScroll","attachEsc","detachEsc","watch","nextTick","onBeforeUnmount","onMenuToggle","onSearchClick","onUserClick","_openBlock","_createElementBlock","_hoisted_1","_hoisted_2","_createElementVNode","_hoisted_3","_createVNode","PaIcon","_hoisted_5","_renderSlot","_ctx","_hoisted_6","_createBlock","_Teleport","_normalizeClass","_hoisted_10","_hoisted_20","_toDisplayString","_hoisted_21","_Fragment","_renderList","child","idx","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","link","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_11","_hoisted_13","_hoisted_14","_hoisted_16","lang","_hoisted_18","_hoisted_37","_hoisted_39","_hoisted_40"],"mappings":"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"}
1
+ {"version":3,"file":"PaHeaderMobile.vue2.js","sources":["../../../src/components/PaHeaderMobile/PaHeaderMobile.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type {\n PaHeaderLink,\n PaHeaderTools,\n PaHeaderNavItem,\n PaHeaderLanguage,\n PaHeaderSkipLinkConfig,\n PaHeaderNavigateEventPayload,\n PaHeaderLanguageChangeEventPayload,\n} from '../PaHeaderShared/types'\n\nexport type {\n PaHeaderLink,\n PaHeaderTools,\n PaHeaderNavItem,\n PaHeaderLanguage,\n PaHeaderSkipLinkConfig,\n PaHeaderNavigateEventPayload,\n PaHeaderLanguageChangeEventPayload,\n}\n\nexport interface PaHeaderMobileProps {\n loggedIn?: boolean\n primaryNav?: PaHeaderNavItem[]\n secondaryNav?: PaHeaderNavItem[]\n languages?: PaHeaderLanguage[]\n currentLanguage?: string\n menuOpen?: boolean\n skipLink?: boolean | PaHeaderSkipLinkConfig\n /**\n * Target for the menu panel's <Teleport>. Defaults to `'body'`.\n * Pass `false` to disable Teleport (panel renders inline as a child of the\n * <header> wrapper, useful for Histoire stories or constrained previews).\n */\n teleportTarget?: string | HTMLElement | false\n panelLabel?: string\n openMenuLabel?: string\n closeMenuLabel?: string\n searchActionLabel?: string\n userActionLabelLoggedOut?: string\n userActionLabelLoggedIn?: string\n languageGroupLabel?: string\n backLabel?: string\n toolsOpenLabel?: string\n toolsCloseLabel?: string\n exploreLabel?: string\n}\n\ninterface DrillEntry {\n item: PaHeaderNavItem\n tier: 'primary' | 'secondary'\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, nextTick, onBeforeUnmount, ref, useId, watch } from 'vue'\nimport PaIcon from '../PaIcon/PaIcon.vue'\n\nconst props = withDefaults(defineProps<PaHeaderMobileProps>(), {\n loggedIn: false,\n primaryNav: () => [],\n secondaryNav: () => [],\n languages: () => [],\n currentLanguage: undefined,\n menuOpen: undefined,\n skipLink: true,\n teleportTarget: 'body',\n panelLabel: 'Menu principale',\n openMenuLabel: 'Apri menu',\n closeMenuLabel: 'Chiudi menu',\n searchActionLabel: 'Cerca',\n userActionLabelLoggedOut: 'Accedi',\n userActionLabelLoggedIn: 'Area personale',\n languageGroupLabel: 'Seleziona la lingua',\n backLabel: 'Indietro',\n toolsOpenLabel: 'Apri',\n toolsCloseLabel: 'Chiudi',\n exploreLabel: 'Esplora',\n})\n\nconst emit = defineEmits<{\n 'update:menuOpen': [boolean]\n 'search-click': [MouseEvent]\n 'user-click': [MouseEvent]\n navigate: [PaHeaderNavigateEventPayload]\n 'language-change': [PaHeaderLanguageChangeEventPayload]\n}>()\n\ndefineSlots<{\n logo?: () => unknown\n actions?: () => unknown\n user?: () => unknown\n}>()\n\nconst componentId = useId()\nconst panelId = `pa-header-mobile-panel-${componentId}`\n\nconst internalMenuOpen = ref(false)\nconst isMenuOpen = computed(() =>\n props.menuOpen !== undefined ? props.menuOpen : internalMenuOpen.value,\n)\n\nfunction setMenuOpen(next: boolean) {\n if (props.menuOpen === undefined) {\n internalMenuOpen.value = next\n }\n emit('update:menuOpen', next)\n}\n\nconst skipLinkEnabled = computed(() => props.skipLink !== false)\nconst skipLinkLabel = computed(() => {\n if (typeof props.skipLink === 'object' && props.skipLink !== null) {\n return props.skipLink.label ?? 'Vai al contenuto'\n }\n return 'Vai al contenuto'\n})\nconst skipLinkTarget = computed(() => {\n if (typeof props.skipLink === 'object' && props.skipLink !== null) {\n return props.skipLink.target ?? '#main'\n }\n return '#main'\n})\n\nconst menuToggleLabel = computed(() =>\n isMenuOpen.value ? props.closeMenuLabel : props.openMenuLabel,\n)\nconst userActionLabel = computed(() =>\n props.loggedIn ? props.userActionLabelLoggedIn : props.userActionLabelLoggedOut,\n)\nconst userIconName = computed(() => (props.loggedIn ? 'user-fill' : 'user'))\n\nconst drillStack = ref<DrillEntry[]>([])\nconst toolsOpen = ref(false)\n\nconst currentDrill = computed<DrillEntry | null>(() =>\n drillStack.value.length > 0\n ? drillStack.value[drillStack.value.length - 1]!\n : null,\n)\nconst currentLevel = computed<'primary' | 'secondary'>(() =>\n currentDrill.value ? 'secondary-level' as never : 'primary',\n)\nconst isSecondaryLevel = computed(() => drillStack.value.length > 0)\n\nconst secondaryBg = computed(() =>\n currentDrill.value?.tier === 'secondary' ? '#F2F6FC' : '#FFFFFF',\n)\n\nfunction hasChildren(item: PaHeaderNavItem): boolean {\n return Boolean(item.children && item.children.length > 0)\n}\n\nfunction tileIndicatesDrill(item: PaHeaderNavItem): boolean {\n return hasChildren(item) || Boolean(item.tools)\n}\n\nfunction handleTileClick(event: MouseEvent, item: PaHeaderNavItem, tier: 'primary' | 'secondary') {\n if (tileIndicatesDrill(item)) {\n drillStack.value.push({ item, tier })\n toolsOpen.value = false\n return\n }\n // Leaf: emit navigate\n let prevented = false\n const payload: PaHeaderNavigateEventPayload = {\n item,\n originalEvent: event,\n preventDefault: () => {\n prevented = true\n payload.defaultPrevented = true\n },\n defaultPrevented: false,\n }\n emit('navigate', payload)\n if (!prevented && item.href && typeof window !== 'undefined') {\n window.location.assign(item.href)\n }\n}\n\nfunction popDrill() {\n drillStack.value.pop()\n toolsOpen.value = false\n}\n\nfunction handleLanguageClick(event: MouseEvent, language: PaHeaderLanguage) {\n let prevented = false\n const payload: PaHeaderLanguageChangeEventPayload = {\n language,\n originalEvent: event,\n preventDefault: () => {\n prevented = true\n payload.defaultPrevented = true\n },\n defaultPrevented: false,\n }\n emit('language-change', payload)\n if (!prevented && language.href && typeof window !== 'undefined') {\n window.location.assign(language.href)\n }\n}\n\nfunction toggleTools() {\n toolsOpen.value = !toolsOpen.value\n}\n\n// --- Body scroll lock + Esc + focus management (panel) ---\n\nconst panelRef = ref<HTMLElement | null>(null)\nconst menuToggleRef = ref<HTMLButtonElement | null>(null)\n\nlet previouslyFocusedElement: HTMLElement | null = null\nlet originalBodyOverflow = ''\nlet originalBodyPaddingRight = ''\nlet scrollLockActive = false\nlet escListenerAttached = false\n\nconst FOCUSABLE_SELECTOR =\n 'button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])'\n\nfunction getFocusable(root: HTMLElement): HTMLElement[] {\n return Array.from(root.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR))\n}\n\nfunction onPanelKeydown(event: KeyboardEvent) {\n if (event.key !== 'Tab' || !panelRef.value) return\n const focusable = getFocusable(panelRef.value)\n if (focusable.length === 0) {\n event.preventDefault()\n panelRef.value.focus()\n return\n }\n const first = focusable[0]!\n const last = focusable[focusable.length - 1]!\n const active = document.activeElement as HTMLElement | null\n if (event.shiftKey) {\n if (active === first || !panelRef.value.contains(active)) {\n event.preventDefault()\n last.focus()\n }\n } else {\n if (active === last || !panelRef.value.contains(active)) {\n event.preventDefault()\n first.focus()\n }\n }\n}\n\nfunction onWindowKeydownEsc(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n event.preventDefault()\n setMenuOpen(false)\n }\n}\n\nfunction lockScroll() {\n if (scrollLockActive || typeof document === 'undefined') return\n originalBodyOverflow = document.body.style.overflow\n originalBodyPaddingRight = document.body.style.paddingRight\n const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth\n document.body.style.overflow = 'hidden'\n if (scrollbarWidth > 0) {\n document.body.style.paddingRight = `${scrollbarWidth}px`\n }\n scrollLockActive = true\n}\n\nfunction unlockScroll() {\n if (!scrollLockActive || typeof document === 'undefined') return\n document.body.style.overflow = originalBodyOverflow\n document.body.style.paddingRight = originalBodyPaddingRight\n scrollLockActive = false\n}\n\nfunction attachEsc() {\n if (escListenerAttached || typeof window === 'undefined') return\n window.addEventListener('keydown', onWindowKeydownEsc)\n escListenerAttached = true\n}\n\nfunction detachEsc() {\n if (!escListenerAttached || typeof window === 'undefined') return\n window.removeEventListener('keydown', onWindowKeydownEsc)\n escListenerAttached = false\n}\n\nwatch(\n isMenuOpen,\n async (next) => {\n if (next) {\n if (typeof document !== 'undefined') {\n previouslyFocusedElement = document.activeElement as HTMLElement | null\n }\n if (props.teleportTarget !== false) {\n lockScroll()\n }\n attachEsc()\n await nextTick()\n if (panelRef.value) {\n const focusable = getFocusable(panelRef.value)\n if (focusable.length > 0) {\n focusable[0]!.focus({ preventScroll: true })\n } else {\n panelRef.value.focus({ preventScroll: true })\n }\n }\n } else {\n detachEsc()\n unlockScroll()\n drillStack.value = []\n toolsOpen.value = false\n if (\n previouslyFocusedElement &&\n typeof document !== 'undefined' &&\n document.contains(previouslyFocusedElement)\n ) {\n previouslyFocusedElement.focus({ preventScroll: true })\n }\n previouslyFocusedElement = null\n }\n },\n { flush: 'post', immediate: true },\n)\n\nonBeforeUnmount(() => {\n detachEsc()\n unlockScroll()\n})\n\nfunction onMenuToggle() {\n setMenuOpen(!isMenuOpen.value)\n}\n\nfunction onSearchClick(event: MouseEvent) {\n emit('search-click', event)\n}\n\nfunction onUserClick(event: MouseEvent) {\n emit('user-click', event)\n}\n</script>\n\n<template>\n <header class=\"pa-header-mobile\" role=\"banner\">\n <a\n v-if=\"skipLinkEnabled\"\n class=\"pa-header-mobile__skip\"\n :href=\"skipLinkTarget\"\n >\n {{ skipLinkLabel }}\n </a>\n\n <div class=\"pa-header-mobile__bar\">\n <button\n ref=\"menuToggleRef\"\n type=\"button\"\n class=\"pa-header-mobile__menu-toggle\"\n :aria-expanded=\"isMenuOpen\"\n :aria-controls=\"panelId\"\n :aria-label=\"menuToggleLabel\"\n @click=\"onMenuToggle\"\n >\n <PaIcon :name=\"isMenuOpen ? 'x' : 'list'\" size=\"md\" />\n </button>\n\n <div class=\"pa-header-mobile__logo\">\n <slot name=\"logo\">\n <span\n class=\"pa-header-mobile__logo-placeholder\"\n aria-hidden=\"true\"\n />\n </slot>\n </div>\n\n <slot name=\"actions\">\n <div class=\"pa-header-mobile__actions\">\n <button\n type=\"button\"\n class=\"pa-header-mobile__action\"\n :aria-label=\"searchActionLabel\"\n @click=\"onSearchClick\"\n >\n <PaIcon name=\"magnifying-glass\" size=\"md\" />\n </button>\n <button\n type=\"button\"\n class=\"pa-header-mobile__action pa-header-mobile__action--user\"\n :aria-label=\"userActionLabel\"\n @click=\"onUserClick\"\n >\n <slot name=\"user\">\n <PaIcon :name=\"userIconName\" size=\"md\" />\n </slot>\n </button>\n </div>\n </slot>\n </div>\n\n <Teleport :to=\"teleportTarget === false ? undefined : teleportTarget\" :disabled=\"teleportTarget === false\">\n <div\n v-if=\"isMenuOpen\"\n :id=\"panelId\"\n ref=\"panelRef\"\n class=\"pa-header-mobile__panel\"\n :class=\"{ 'pa-header-mobile__panel--inline': teleportTarget === false }\"\n role=\"dialog\"\n aria-modal=\"true\"\n tabindex=\"-1\"\n :aria-label=\"panelLabel\"\n @keydown=\"onPanelKeydown\"\n >\n <div class=\"pa-header-mobile__panel-scroll\">\n <!-- Primary level -->\n <template v-if=\"!isSecondaryLevel\">\n <ul\n v-if=\"primaryNav.length > 0\"\n class=\"pa-header-mobile__group pa-header-mobile__group--primary\"\n >\n <li\n v-for=\"(item, idx) in primaryNav\"\n :key=\"`p-${idx}-${item.label}`\"\n class=\"pa-header-mobile__tile-wrap\"\n >\n <button\n type=\"button\"\n class=\"pa-header-mobile__tile\"\n @click=\"(event) => handleTileClick(event, item, 'primary')\"\n >\n <span class=\"pa-header-mobile__tile-label\">{{ item.label }}</span>\n <PaIcon\n v-if=\"tileIndicatesDrill(item)\"\n name=\"caret-right\"\n size=\"sm\"\n />\n </button>\n </li>\n </ul>\n\n <ul\n v-if=\"secondaryNav.length > 0\"\n class=\"pa-header-mobile__group pa-header-mobile__group--secondary\"\n >\n <li\n v-for=\"(item, idx) in secondaryNav\"\n :key=\"`s-${idx}-${item.label}`\"\n class=\"pa-header-mobile__tile-wrap\"\n >\n <button\n type=\"button\"\n class=\"pa-header-mobile__tile\"\n @click=\"(event) => handleTileClick(event, item, 'secondary')\"\n >\n <span class=\"pa-header-mobile__tile-label\">{{ item.label }}</span>\n <PaIcon\n v-if=\"tileIndicatesDrill(item)\"\n name=\"caret-right\"\n size=\"sm\"\n />\n </button>\n </li>\n </ul>\n\n <div\n v-if=\"languages.length > 0\"\n class=\"pa-header-mobile__language\"\n role=\"group\"\n :aria-label=\"languageGroupLabel\"\n >\n <button\n v-for=\"lang in languages\"\n :key=\"lang.code\"\n type=\"button\"\n class=\"pa-header-mobile__language-pill\"\n :class=\"{\n 'pa-header-mobile__language-pill--active':\n lang.code === currentLanguage,\n }\"\n :aria-pressed=\"lang.code === currentLanguage\"\n @click=\"(event) => handleLanguageClick(event, lang)\"\n >\n {{ lang.label }}\n </button>\n </div>\n </template>\n\n <!-- Secondary level -->\n <template v-else>\n <div\n class=\"pa-header-mobile__drill\"\n :class=\"`pa-header-mobile__drill--${currentDrill!.tier}`\"\n >\n <button\n type=\"button\"\n class=\"pa-header-mobile__back\"\n :aria-label=\"backLabel\"\n @click=\"popDrill\"\n >\n <PaIcon name=\"caret-left\" size=\"sm\" />\n <span class=\"pa-header-mobile__back-label\">{{ currentDrill!.item.label }}</span>\n </button>\n\n <ul\n v-if=\"currentDrill!.item.children && currentDrill!.item.children.length > 0\"\n class=\"pa-header-mobile__drill-children\"\n >\n <li\n v-for=\"(child, idx) in currentDrill!.item.children\"\n :key=\"`c-${idx}-${child.label}`\"\n class=\"pa-header-mobile__tile-wrap\"\n >\n <button\n type=\"button\"\n class=\"pa-header-mobile__tile\"\n @click=\"(event) => handleTileClick(event, child, currentDrill!.tier)\"\n >\n <span class=\"pa-header-mobile__tile-label\">{{ child.label }}</span>\n <PaIcon\n v-if=\"tileIndicatesDrill(child)\"\n name=\"caret-right\"\n size=\"sm\"\n />\n </button>\n </li>\n </ul>\n\n <div\n v-if=\"currentDrill!.tier === 'primary' && currentDrill!.item.tools\"\n class=\"pa-header-mobile__tools-wrap\"\n >\n <div\n class=\"pa-header-mobile__tools\"\n :class=\"{ 'pa-header-mobile__tools--open': toolsOpen }\"\n >\n <div class=\"pa-header-mobile__tools-header\">\n <div class=\"pa-header-mobile__tools-header-left\">\n <PaIcon :name=\"currentDrill!.item.tools.icon\" size=\"md\" />\n <h3 class=\"pa-header-mobile__tools-heading\">\n {{ currentDrill!.item.tools.heading }}\n </h3>\n </div>\n <button\n type=\"button\"\n class=\"pa-header-mobile__tools-toggle\"\n :aria-expanded=\"toolsOpen\"\n :aria-label=\"toolsOpen ? toolsCloseLabel : toolsOpenLabel\"\n @click=\"toggleTools\"\n >\n <span v-if=\"!toolsOpen\" class=\"pa-header-mobile__tools-toggle-text\">{{ toolsOpenLabel }}</span>\n <PaIcon v-else name=\"caret-up\" size=\"sm\" />\n </button>\n </div>\n\n <div v-if=\"toolsOpen\" class=\"pa-header-mobile__tools-body\">\n <p\n v-if=\"currentDrill!.item.tools.body\"\n class=\"pa-header-mobile__tools-text\"\n >{{ currentDrill!.item.tools.body }}</p>\n\n <ul\n v-if=\"currentDrill!.item.tools.links && currentDrill!.item.tools.links.length > 0\"\n class=\"pa-header-mobile__tools-links\"\n >\n <li\n v-for=\"(link, idx) in currentDrill!.item.tools.links\"\n :key=\"`tl-${idx}-${link.label}`\"\n class=\"pa-header-mobile__tools-link-item\"\n >\n <span class=\"pa-header-mobile__tools-bullet\" aria-hidden=\"true\" />\n <a class=\"pa-header-mobile__tools-link\" :href=\"link.href\">{{ link.label }}</a>\n </li>\n </ul>\n\n <a\n v-if=\"currentDrill!.item.tools.cta\"\n class=\"pa-header-mobile__tools-cta\"\n :href=\"currentDrill!.item.tools.cta.href\"\n >{{ currentDrill!.item.tools.cta.label }}</a>\n </div>\n </div>\n </div>\n\n <div\n v-if=\"currentDrill!.item.href\"\n class=\"pa-header-mobile__section-link-wrap\"\n >\n <a class=\"pa-header-mobile__section-link\" :href=\"currentDrill!.item.href\">\n <span>{{ exploreLabel }} {{ currentDrill!.item.label }}</span>\n <PaIcon name=\"arrow-right\" size=\"sm\" />\n </a>\n </div>\n </div>\n </template>\n </div>\n\n <!-- Bar at panel bottom (Open state) -->\n <div class=\"pa-header-mobile__bar pa-header-mobile__bar--in-panel\">\n <button\n type=\"button\"\n class=\"pa-header-mobile__menu-toggle\"\n :aria-expanded=\"true\"\n :aria-controls=\"panelId\"\n :aria-label=\"closeMenuLabel\"\n @click=\"onMenuToggle\"\n >\n <PaIcon name=\"x\" size=\"md\" />\n </button>\n\n <div class=\"pa-header-mobile__logo\">\n <slot name=\"logo\">\n <span class=\"pa-header-mobile__logo-placeholder\" aria-hidden=\"true\" />\n </slot>\n </div>\n\n <div class=\"pa-header-mobile__actions\">\n <button\n type=\"button\"\n class=\"pa-header-mobile__action\"\n :aria-label=\"searchActionLabel\"\n @click=\"onSearchClick\"\n >\n <PaIcon name=\"magnifying-glass\" size=\"md\" />\n </button>\n <button\n type=\"button\"\n class=\"pa-header-mobile__action pa-header-mobile__action--user\"\n :aria-label=\"userActionLabel\"\n @click=\"onUserClick\"\n >\n <slot name=\"user\">\n <PaIcon :name=\"userIconName\" size=\"md\" />\n </slot>\n </button>\n </div>\n </div>\n </div>\n </Teleport>\n </header>\n</template>\n\n<style scoped>\n.pa-header-mobile {\n position: relative;\n width: 100%;\n background: #ffffff;\n font-family: var(--pa-font-family-base, 'Inter', sans-serif);\n}\n\n.pa-header-mobile__skip {\n position: absolute;\n left: -9999px;\n top: auto;\n width: 1px;\n height: 1px;\n overflow: hidden;\n background: #ffffff;\n color: var(--pa-color-text-dark-blue);\n padding: var(--pa-space-xs) var(--pa-space-sm);\n border-radius: var(--pa-radius-smooth);\n text-decoration: none;\n font-size: var(--pa-font-label-sm-size);\n font-weight: var(--pa-font-label-sm-weight);\n line-height: var(--pa-font-label-sm-line-height);\n z-index: 9999;\n}\n\n.pa-header-mobile__skip:focus-visible {\n position: fixed;\n left: var(--pa-space-xs);\n top: var(--pa-space-xs);\n width: auto;\n height: auto;\n overflow: visible;\n outline: var(--pa-border-sm) solid var(--pa-color-accent);\n outline-offset: 2px;\n box-shadow: 0 0 16px 0 #e3e5e8;\n}\n\n.pa-header-mobile__bar {\n position: relative;\n height: 60px;\n width: 100%;\n background: #ffffff;\n container-type: inline-size;\n}\n\n.pa-header-mobile__bar--in-panel {\n flex-shrink: 0;\n border-top: var(--pa-border-xs) solid var(--pa-color-bg-primary-light-50);\n}\n\n.pa-header-mobile__menu-toggle,\n.pa-header-mobile__action {\n position: absolute;\n top: 0;\n bottom: 0;\n width: 56px;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n border: 0;\n background: var(--pa-color-bg-primary-light-40);\n color: var(--pa-color-neutral-gray);\n cursor: pointer;\n}\n\n.pa-header-mobile__menu-toggle {\n left: 0;\n}\n\n.pa-header-mobile__menu-toggle:focus-visible,\n.pa-header-mobile__action:focus-visible {\n outline: var(--pa-border-sm) solid var(--pa-color-accent);\n outline-offset: -2px;\n}\n\n.pa-header-mobile__logo {\n position: absolute;\n left: 68px;\n top: 10px;\n height: 40px;\n display: flex;\n align-items: center;\n max-width: calc(100% - 68px - 112px);\n}\n\n.pa-header-mobile__logo-placeholder {\n display: block;\n width: 70.133px;\n height: 40px;\n background: var(--pa-color-primary);\n}\n\n.pa-header-mobile__actions {\n position: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n display: flex;\n flex-direction: row;\n}\n\n.pa-header-mobile__action {\n position: static;\n flex-shrink: 0;\n}\n\n/* Panel */\n\n.pa-header-mobile__panel {\n position: fixed;\n inset: 0;\n z-index: 1000;\n background: #ffffff;\n display: flex;\n flex-direction: column;\n min-height: 100vh;\n font-family: var(--pa-font-family-base, 'Inter', sans-serif);\n}\n\n/* Inline variant: panel constrained to its parent (typically `.pa-header-mobile`\n * expanded by the consumer to viewport-like dimensions). Used in Histoire so the\n * panel doesn't take over the docs UI. */\n.pa-header-mobile__panel--inline {\n position: absolute;\n inset: 0;\n z-index: 1;\n min-height: 0;\n}\n\n.pa-header-mobile__panel:focus {\n outline: none;\n}\n\n.pa-header-mobile__panel-scroll {\n flex: 1 1 auto;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n}\n\n/* Groups (Primary level) */\n\n.pa-header-mobile__group {\n list-style: none;\n margin: 0;\n padding: var(--pa-space-sm) 0;\n display: flex;\n flex-direction: column;\n}\n\n.pa-header-mobile__group--primary {\n background: #ffffff;\n}\n\n.pa-header-mobile__group--secondary {\n background: var(--pa-color-bg-primary-light-40);\n}\n\n.pa-header-mobile__tile-wrap {\n list-style: none;\n}\n\n.pa-header-mobile__tile {\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--pa-space-sm);\n padding: var(--pa-space-sm) var(--pa-space-md);\n background: transparent;\n border: 0;\n border-bottom: var(--pa-border-xs) solid var(--pa-color-bg-primary-light-50);\n cursor: pointer;\n text-align: left;\n font-family: inherit;\n}\n\n.pa-header-mobile__tile-label {\n flex: 1 1 0;\n font-size: var(--pa-font-label-sm-size);\n font-weight: var(--pa-font-label-sm-weight);\n line-height: var(--pa-font-label-sm-line-height);\n color: var(--pa-color-text-dark-blue);\n}\n\n.pa-header-mobile__tile:focus-visible {\n outline: var(--pa-border-sm) solid var(--pa-color-accent);\n outline-offset: -2px;\n}\n\n/* Language switcher */\n\n.pa-header-mobile__language {\n background: var(--pa-color-bg-primary-light-40);\n display: flex;\n justify-content: center;\n gap: var(--pa-space-sm);\n padding: var(--pa-space-xs) 0;\n}\n\n.pa-header-mobile__language-pill {\n background: transparent;\n border: 0;\n padding: 4px 8px 0 8px;\n font-family: inherit;\n font-size: 16px;\n line-height: 20px;\n color: var(--pa-color-neutral-gray);\n border-bottom: 4px solid transparent;\n cursor: pointer;\n border-radius: 4px 4px 0 0;\n}\n\n.pa-header-mobile__language-pill--active {\n color: #000000;\n border-bottom-color: #000000;\n}\n\n.pa-header-mobile__language-pill:focus-visible {\n outline: var(--pa-border-sm) solid var(--pa-color-accent);\n outline-offset: 2px;\n}\n\n/* Drill (Secondary level) */\n\n.pa-header-mobile__drill {\n display: flex;\n flex-direction: column;\n flex: 1 1 auto;\n}\n\n.pa-header-mobile__drill--primary {\n background: #ffffff;\n}\n\n.pa-header-mobile__drill--secondary {\n background: var(--pa-color-bg-primary-light-40);\n}\n\n.pa-header-mobile__back {\n display: flex;\n align-items: center;\n gap: var(--pa-space-xs);\n padding: var(--pa-space-md) var(--pa-space-md) 18px;\n background: transparent;\n border: 0;\n font-family: inherit;\n cursor: pointer;\n text-align: left;\n}\n\n.pa-header-mobile__back-label {\n font-size: 20px;\n line-height: 30px;\n font-weight: 600;\n color: var(--pa-color-text-dark-blue);\n}\n\n.pa-header-mobile__back:focus-visible {\n outline: var(--pa-border-sm) solid var(--pa-color-accent);\n outline-offset: -2px;\n}\n\n.pa-header-mobile__drill-children {\n list-style: none;\n margin: 0;\n padding: 0 var(--pa-space-md) var(--pa-space-md);\n display: flex;\n flex-direction: column;\n}\n\n.pa-header-mobile__drill-children .pa-header-mobile__tile {\n padding-left: 0;\n padding-right: 0;\n}\n\n/* Tools card */\n\n.pa-header-mobile__tools-wrap {\n padding: 0 36px;\n}\n\n.pa-header-mobile__tools {\n background: var(--pa-color-bg-primary-light-40);\n border-radius: 4px;\n padding: var(--pa-space-md);\n display: flex;\n flex-direction: column;\n gap: var(--pa-space-sm);\n}\n\n.pa-header-mobile__tools-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--pa-space-sm);\n}\n\n.pa-header-mobile__tools-header-left {\n display: flex;\n align-items: center;\n gap: var(--pa-space-sm);\n}\n\n.pa-header-mobile__tools-heading {\n margin: 0;\n font-size: 24px;\n line-height: 28px;\n letter-spacing: -0.5px;\n font-weight: 700;\n color: var(--pa-color-neutral-gray);\n}\n\n.pa-header-mobile__tools-toggle {\n background: transparent;\n border: 0;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n padding: 0;\n font-family: inherit;\n}\n\n.pa-header-mobile__tools-toggle-text {\n font-size: 16px;\n line-height: 24px;\n font-weight: 700;\n color: var(--pa-color-primary);\n text-decoration: underline;\n}\n\n.pa-header-mobile__tools-toggle:focus-visible {\n outline: var(--pa-border-sm) solid var(--pa-color-accent);\n outline-offset: 2px;\n}\n\n.pa-header-mobile__tools-body {\n display: flex;\n flex-direction: column;\n gap: var(--pa-space-sm);\n padding-top: 28px;\n}\n\n.pa-header-mobile__tools-text {\n margin: 0;\n font-size: 16px;\n line-height: 20px;\n color: var(--pa-color-neutral-gray);\n}\n\n.pa-header-mobile__tools-links {\n list-style: none;\n margin: 0;\n padding: 0 var(--pa-space-xs);\n display: flex;\n flex-direction: column;\n gap: var(--pa-space-xs);\n}\n\n.pa-header-mobile__tools-link-item {\n display: flex;\n align-items: flex-start;\n gap: 10px;\n}\n\n.pa-header-mobile__tools-bullet {\n width: 8px;\n height: 8px;\n background: var(--pa-color-bg-primary-light-50);\n margin-top: 8px;\n flex-shrink: 0;\n}\n\n.pa-header-mobile__tools-link {\n flex: 1 1 0;\n font-size: 16px;\n line-height: 24px;\n font-weight: 700;\n color: var(--pa-color-text-dark-blue);\n text-decoration: underline;\n}\n\n.pa-header-mobile__tools-link:focus-visible {\n outline: var(--pa-border-sm) solid var(--pa-color-accent);\n outline-offset: 2px;\n}\n\n.pa-header-mobile__tools-cta {\n margin-top: 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 20px 48px;\n background: var(--pa-color-primary);\n color: #ffffff;\n border-radius: var(--pa-radius-smooth);\n text-decoration: none;\n font-size: 16px;\n line-height: 20px;\n font-weight: 600;\n}\n\n.pa-header-mobile__tools-cta:focus-visible {\n outline: var(--pa-border-sm) solid var(--pa-color-accent);\n outline-offset: 2px;\n}\n\n/* Section link footer */\n\n.pa-header-mobile__section-link-wrap {\n padding: 0 36px;\n margin-top: var(--pa-space-sm);\n}\n\n.pa-header-mobile__section-link {\n display: inline-flex;\n align-items: center;\n gap: var(--pa-space-xs);\n padding: var(--pa-space-sm) 4px;\n font-size: 16px;\n line-height: 20px;\n font-weight: 600;\n color: var(--pa-color-text-dark-blue);\n text-decoration: none;\n border-radius: 4px;\n}\n\n.pa-header-mobile__section-link:focus-visible {\n outline: var(--pa-border-sm) solid var(--pa-color-accent);\n outline-offset: 2px;\n}\n</style>\n"],"names":["props","__props","emit","__emit","panelId","useId","internalMenuOpen","ref","isMenuOpen","computed","setMenuOpen","next","skipLinkEnabled","skipLinkLabel","skipLinkTarget","menuToggleLabel","userActionLabel","userIconName","drillStack","toolsOpen","currentDrill","isSecondaryLevel","_a","hasChildren","item","tileIndicatesDrill","handleTileClick","event","tier","prevented","payload","popDrill","handleLanguageClick","language","toggleTools","panelRef","menuToggleRef","previouslyFocusedElement","originalBodyOverflow","originalBodyPaddingRight","scrollLockActive","escListenerAttached","FOCUSABLE_SELECTOR","getFocusable","root","onPanelKeydown","focusable","first","last","active","onWindowKeydownEsc","lockScroll","scrollbarWidth","unlockScroll","attachEsc","detachEsc","watch","nextTick","onBeforeUnmount","onMenuToggle","onSearchClick","onUserClick","_openBlock","_createElementBlock","_hoisted_1","_hoisted_2","_createElementVNode","_hoisted_3","_createVNode","PaIcon","_hoisted_5","_renderSlot","_ctx","_hoisted_6","_createBlock","_Teleport","_normalizeClass","_hoisted_10","_hoisted_20","_toDisplayString","_hoisted_21","_Fragment","_renderList","child","idx","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","link","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_11","_hoisted_13","_hoisted_14","_hoisted_16","lang","_hoisted_18","_hoisted_37","_hoisted_39","_hoisted_40"],"mappings":"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"}