@semplice-studio/pa-design-system 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/PaAccordion/PaAccordion.vue.d.ts +0 -1
- package/dist/components/PaAccordion/PaAccordion.vue.js +3 -5
- package/dist/components/PaAccordion/PaAccordion.vue.js.map +1 -1
- package/dist/components/PaAccordion/PaAccordion.vue2.js +24 -30
- package/dist/components/PaAccordion/PaAccordion.vue2.js.map +1 -1
- package/dist/components/PaBanner/PaBanner.vue.js +6 -6
- package/dist/components/PaBanner/PaBanner.vue2.js +26 -28
- package/dist/components/PaBanner/PaBanner.vue2.js.map +1 -1
- package/dist/components/PaCard/PaCard.vue.d.ts +17 -14
- package/dist/components/PaCard/PaCard.vue.js +2 -2
- package/dist/components/PaCard/PaCard.vue2.js +37 -42
- package/dist/components/PaCard/PaCard.vue2.js.map +1 -1
- package/dist/components/PaCheckbox/PaCheckbox.vue.d.ts +5 -6
- package/dist/components/PaCheckbox/PaCheckbox.vue.js +2 -4
- package/dist/components/PaCheckbox/PaCheckbox.vue.js.map +1 -1
- package/dist/components/PaCheckbox/PaCheckbox.vue2.js +20 -26
- package/dist/components/PaCheckbox/PaCheckbox.vue2.js.map +1 -1
- package/dist/components/PaCheckboxGroup/PaCheckboxGroup.vue.d.ts +5 -6
- package/dist/components/PaCheckboxGroup/PaCheckboxGroup.vue.js +2 -4
- package/dist/components/PaCheckboxGroup/PaCheckboxGroup.vue.js.map +1 -1
- package/dist/components/PaCheckboxGroup/PaCheckboxGroup.vue2.js +25 -31
- package/dist/components/PaCheckboxGroup/PaCheckboxGroup.vue2.js.map +1 -1
- package/dist/components/PaDatePicker/PaDatePicker.vue.d.ts +13 -26
- package/dist/components/PaDatePicker/PaDatePicker.vue.js +4 -6
- package/dist/components/PaDatePicker/PaDatePicker.vue.js.map +1 -1
- package/dist/components/PaDatePicker/PaDatePicker.vue2.js +52 -58
- package/dist/components/PaDatePicker/PaDatePicker.vue2.js.map +1 -1
- package/dist/components/PaDrawer/PaDrawer.vue.js +2 -2
- package/dist/components/PaDrawer/PaDrawer.vue2.js +37 -41
- package/dist/components/PaDrawer/PaDrawer.vue2.js.map +1 -1
- package/dist/components/PaFileUpload/PaFileUpload.vue.d.ts +0 -1
- package/dist/components/PaFileUpload/PaFileUpload.vue.js +3 -5
- package/dist/components/PaFileUpload/PaFileUpload.vue.js.map +1 -1
- package/dist/components/PaFileUpload/PaFileUpload.vue2.js +22 -28
- package/dist/components/PaFileUpload/PaFileUpload.vue2.js.map +1 -1
- package/dist/components/PaFooter/PaFooter.vue.js +1 -1
- package/dist/components/PaFooter/PaFooter.vue2.js +43 -48
- package/dist/components/PaFooter/PaFooter.vue2.js.map +1 -1
- package/dist/components/PaHeaderDesktop/PaHeaderDesktop.vue.js +1 -1
- package/dist/components/PaHeaderDesktop/PaHeaderDesktop.vue2.js +61 -66
- package/dist/components/PaHeaderDesktop/PaHeaderDesktop.vue2.js.map +1 -1
- package/dist/components/PaHeaderMobile/PaHeaderMobile.vue.js +2 -2
- package/dist/components/PaHeaderMobile/PaHeaderMobile.vue2.js +69 -74
- package/dist/components/PaHeaderMobile/PaHeaderMobile.vue2.js.map +1 -1
- package/dist/components/PaHero/PaHero.vue.d.ts +15 -12
- package/dist/components/PaHero/PaHero.vue.js +2 -2
- package/dist/components/PaHero/PaHero.vue2.js +36 -41
- package/dist/components/PaHero/PaHero.vue2.js.map +1 -1
- package/dist/components/PaInput/PaInput.vue.d.ts +15 -13
- package/dist/components/PaInput/PaInput.vue.js +4 -6
- package/dist/components/PaInput/PaInput.vue.js.map +1 -1
- package/dist/components/PaInput/PaInput.vue2.js +27 -33
- package/dist/components/PaInput/PaInput.vue2.js.map +1 -1
- package/dist/components/PaModal/PaModal.vue.d.ts +14 -11
- package/dist/components/PaModal/PaModal.vue.js +3 -3
- package/dist/components/PaModal/PaModal.vue2.js +41 -46
- package/dist/components/PaModal/PaModal.vue2.js.map +1 -1
- package/dist/components/PaMonthPicker/PaMonthPicker.vue.d.ts +13 -26
- package/dist/components/PaMonthPicker/PaMonthPicker.vue.js +2 -4
- package/dist/components/PaMonthPicker/PaMonthPicker.vue.js.map +1 -1
- package/dist/components/PaMonthPicker/PaMonthPicker.vue2.js +64 -70
- package/dist/components/PaMonthPicker/PaMonthPicker.vue2.js.map +1 -1
- package/dist/components/PaPagination/PaPagination.vue.js +2 -2
- package/dist/components/PaPagination/PaPagination.vue2.js +41 -46
- package/dist/components/PaPagination/PaPagination.vue2.js.map +1 -1
- package/dist/components/PaRadioGroup/PaRadioGroup.vue.d.ts +5 -6
- package/dist/components/PaRadioGroup/PaRadioGroup.vue.js +2 -4
- package/dist/components/PaRadioGroup/PaRadioGroup.vue.js.map +1 -1
- package/dist/components/PaRadioGroup/PaRadioGroup.vue2.js +22 -28
- package/dist/components/PaRadioGroup/PaRadioGroup.vue2.js.map +1 -1
- package/dist/components/PaRangePicker/PaRangePicker.vue.d.ts +0 -1
- package/dist/components/PaRangePicker/PaRangePicker.vue.js +4 -6
- package/dist/components/PaRangePicker/PaRangePicker.vue.js.map +1 -1
- package/dist/components/PaRangePicker/PaRangePicker.vue2.js +75 -81
- package/dist/components/PaRangePicker/PaRangePicker.vue2.js.map +1 -1
- package/dist/components/PaSearchBar/PaSearchBar.vue.d.ts +0 -1
- package/dist/components/PaSearchBar/PaSearchBar.vue.js +3 -5
- package/dist/components/PaSearchBar/PaSearchBar.vue.js.map +1 -1
- package/dist/components/PaSearchBar/PaSearchBar.vue2.js +55 -61
- package/dist/components/PaSearchBar/PaSearchBar.vue2.js.map +1 -1
- package/dist/components/PaSelect/PaSelect.vue.d.ts +5 -6
- package/dist/components/PaSelect/PaSelect.vue.js +4 -6
- package/dist/components/PaSelect/PaSelect.vue.js.map +1 -1
- package/dist/components/PaSelect/PaSelect.vue2.js +25 -31
- package/dist/components/PaSelect/PaSelect.vue2.js.map +1 -1
- package/dist/components/PaTabs/PaTabs.vue.js +1 -1
- package/dist/components/PaTabs/PaTabs.vue2.js +17 -19
- package/dist/components/PaTabs/PaTabs.vue2.js.map +1 -1
- package/dist/components/PaTextarea/PaTextarea.vue.d.ts +5 -6
- package/dist/components/PaTextarea/PaTextarea.vue.js +4 -6
- package/dist/components/PaTextarea/PaTextarea.vue.js.map +1 -1
- package/dist/components/PaTextarea/PaTextarea.vue2.js +16 -22
- package/dist/components/PaTextarea/PaTextarea.vue2.js.map +1 -1
- package/dist/components/PaTimePicker/PaTimePicker.vue.d.ts +0 -1
- package/dist/components/PaTimePicker/PaTimePicker.vue.js +2 -4
- package/dist/components/PaTimePicker/PaTimePicker.vue.js.map +1 -1
- package/dist/components/PaTimePicker/PaTimePicker.vue2.js +44 -50
- package/dist/components/PaTimePicker/PaTimePicker.vue2.js.map +1 -1
- package/dist/components/PaTitleBar/PaTitleBar.vue.d.ts +12 -9
- package/dist/components/PaTitleBar/PaTitleBar.vue.js +2 -2
- package/dist/components/PaTitleBar/PaTitleBar.vue2.js +34 -39
- package/dist/components/PaTitleBar/PaTitleBar.vue2.js.map +1 -1
- package/dist/components/PaToggle/PaToggle.vue.d.ts +0 -1
- package/dist/components/PaToggle/PaToggle.vue.js +2 -4
- package/dist/components/PaToggle/PaToggle.vue.js.map +1 -1
- package/dist/components/PaToggle/PaToggle.vue2.js +20 -26
- package/dist/components/PaToggle/PaToggle.vue2.js.map +1 -1
- package/dist/components/PaYearPicker/PaYearPicker.vue.d.ts +13 -26
- package/dist/components/PaYearPicker/PaYearPicker.vue.js +4 -6
- package/dist/components/PaYearPicker/PaYearPicker.vue.js.map +1 -1
- package/dist/components/PaYearPicker/PaYearPicker.vue2.js +70 -76
- package/dist/components/PaYearPicker/PaYearPicker.vue2.js.map +1 -1
- package/dist/style.css +1 -1
- package/package.json +3 -3
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import o from "./PaAccordion.vue2.js";
|
|
2
|
-
import { nextPaAccordionId as p } from "./PaAccordion.vue2.js";
|
|
3
2
|
/* empty css */
|
|
4
|
-
import
|
|
5
|
-
const
|
|
3
|
+
import a from "../../_virtual/_plugin-vue_export-helper.js";
|
|
4
|
+
const f = /* @__PURE__ */ a(o, [["__scopeId", "data-v-83f7afca"]]);
|
|
6
5
|
export {
|
|
7
|
-
|
|
8
|
-
p as nextPaAccordionId
|
|
6
|
+
f as default
|
|
9
7
|
};
|
|
10
8
|
//# sourceMappingURL=PaAccordion.vue.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaAccordion.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PaAccordion.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -1,12 +1,7 @@
|
|
|
1
|
-
import { defineComponent as B, getCurrentInstance as
|
|
1
|
+
import { defineComponent as B, getCurrentInstance as C, useId as I, computed as c, inject as $, ref as k, onMounted as x, onBeforeUnmount as w, openBlock as v, createElementBlock as N, createElementVNode as r, createBlock as O, createCommentVNode as P, renderSlot as f, createTextVNode as S, toDisplayString as z, createVNode as _, Transition as A, withCtx as D, withDirectives as E, vShow as T } from "vue";
|
|
2
2
|
import g from "../PaIcon/PaIcon.vue.js";
|
|
3
|
-
import { PaAccordionGroupKey as
|
|
4
|
-
const
|
|
5
|
-
let U = 0;
|
|
6
|
-
function q() {
|
|
7
|
-
return `pa-accordion-${++U}`;
|
|
8
|
-
}
|
|
9
|
-
const R = /* @__PURE__ */ B({
|
|
3
|
+
import { PaAccordionGroupKey as j } from "./groupKey.js";
|
|
4
|
+
const G = ["data-open"], K = ["id", "aria-expanded", "aria-controls"], M = { class: "pa-accordion__title" }, U = ["id", "aria-labelledby"], Q = /* @__PURE__ */ B({
|
|
10
5
|
__name: "PaAccordion",
|
|
11
6
|
props: {
|
|
12
7
|
modelValue: { type: Boolean },
|
|
@@ -17,16 +12,16 @@ const R = /* @__PURE__ */ B({
|
|
|
17
12
|
},
|
|
18
13
|
emits: ["update:modelValue"],
|
|
19
14
|
setup(t, { emit: h }) {
|
|
20
|
-
const l = t, y = h, d =
|
|
15
|
+
const l = t, y = h, d = C().vnode.props ?? {}, s = "modelValue" in d || "model-value" in d, V = `pa-accordion-${I()}`, o = c(() => l.id ?? V), u = c(() => `${o.value}-header`), p = c(() => `${o.value}-panel`), e = $(j, null), a = e ? e.isOpen(o.value) : null, m = k(l.defaultOpen), i = c(() => a ? a.value : s ? !!l.modelValue : m.value);
|
|
21
16
|
function b() {
|
|
22
|
-
const
|
|
23
|
-
e ? e.toggle(o.value) : s || (m.value =
|
|
17
|
+
const n = !i.value;
|
|
18
|
+
e ? e.toggle(o.value) : s || (m.value = n), y("update:modelValue", n);
|
|
24
19
|
}
|
|
25
|
-
return
|
|
26
|
-
e && (e.register(o.value), l.defaultOpen && !(
|
|
27
|
-
}),
|
|
20
|
+
return x(() => {
|
|
21
|
+
e && (e.register(o.value), l.defaultOpen && !(a != null && a.value) && e.toggle(o.value));
|
|
22
|
+
}), w(() => {
|
|
28
23
|
e && e.unregister(o.value);
|
|
29
|
-
}), (
|
|
24
|
+
}), (n, F) => (v(), N("div", {
|
|
30
25
|
class: "pa-accordion",
|
|
31
26
|
"data-open": i.value
|
|
32
27
|
}, [
|
|
@@ -38,15 +33,15 @@ const R = /* @__PURE__ */ B({
|
|
|
38
33
|
"aria-controls": p.value,
|
|
39
34
|
onClick: b
|
|
40
35
|
}, [
|
|
41
|
-
t.icon ? (v(),
|
|
36
|
+
t.icon ? (v(), O(g, {
|
|
42
37
|
key: 0,
|
|
43
38
|
name: t.icon,
|
|
44
39
|
size: "sm",
|
|
45
40
|
class: "pa-accordion__icon"
|
|
46
|
-
}, null, 8, ["name"])) :
|
|
47
|
-
r("span",
|
|
48
|
-
f(
|
|
49
|
-
|
|
41
|
+
}, null, 8, ["name"])) : P("", !0),
|
|
42
|
+
r("span", M, [
|
|
43
|
+
f(n.$slots, "title", {}, () => [
|
|
44
|
+
S(z(t.title), 1)
|
|
50
45
|
], !0)
|
|
51
46
|
]),
|
|
52
47
|
_(g, {
|
|
@@ -54,27 +49,26 @@ const R = /* @__PURE__ */ B({
|
|
|
54
49
|
size: "sm",
|
|
55
50
|
class: "pa-accordion__chevron"
|
|
56
51
|
})
|
|
57
|
-
], 8,
|
|
58
|
-
_(
|
|
59
|
-
default:
|
|
60
|
-
|
|
52
|
+
], 8, K),
|
|
53
|
+
_(A, { name: "pa-accordion-body" }, {
|
|
54
|
+
default: D(() => [
|
|
55
|
+
E(r("div", {
|
|
61
56
|
class: "pa-accordion__body",
|
|
62
57
|
id: p.value,
|
|
63
58
|
role: "region",
|
|
64
59
|
"aria-labelledby": u.value
|
|
65
60
|
}, [
|
|
66
|
-
f(
|
|
67
|
-
], 8,
|
|
68
|
-
[
|
|
61
|
+
f(n.$slots, "default", {}, void 0, !0)
|
|
62
|
+
], 8, U), [
|
|
63
|
+
[T, i.value]
|
|
69
64
|
])
|
|
70
65
|
]),
|
|
71
66
|
_: 3
|
|
72
67
|
})
|
|
73
|
-
], 8,
|
|
68
|
+
], 8, G));
|
|
74
69
|
}
|
|
75
70
|
});
|
|
76
71
|
export {
|
|
77
|
-
|
|
78
|
-
q as nextPaAccordionId
|
|
72
|
+
Q as default
|
|
79
73
|
};
|
|
80
74
|
//# sourceMappingURL=PaAccordion.vue2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaAccordion.vue2.js","sources":["../../../src/components/PaAccordion/PaAccordion.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PaIconName } from '../PaIcon'\n\
|
|
1
|
+
{"version":3,"file":"PaAccordion.vue2.js","sources":["../../../src/components/PaAccordion/PaAccordion.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PaIconName } from '../PaIcon'\n\nexport interface PaAccordionProps {\n modelValue?: boolean\n title?: string\n icon?: PaIconName\n defaultOpen?: boolean\n id?: string\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { useId } from 'vue'\nimport {\n computed,\n getCurrentInstance,\n inject,\n onBeforeUnmount,\n onMounted,\n ref,\n} from 'vue'\nimport PaIcon from '../PaIcon/PaIcon.vue'\nimport { PaAccordionGroupKey } from './groupKey'\n\nconst props = withDefaults(defineProps<PaAccordionProps>(), {\n defaultOpen: false,\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n}>()\n\nconst instance = getCurrentInstance()!\nconst initialVnodeProps = instance.vnode.props ?? {}\nconst isControlled =\n 'modelValue' in initialVnodeProps || 'model-value' in initialVnodeProps\n\nconst generatedId = `pa-accordion-${useId()}`\nconst resolvedId = computed(() => props.id ?? generatedId)\nconst headerId = computed(() => `${resolvedId.value}-header`)\nconst panelId = computed(() => `${resolvedId.value}-panel`)\n\nconst group = inject(PaAccordionGroupKey, null)\nconst groupOpen = group ? group.isOpen(resolvedId.value) : null\n\nconst internalOpen = ref(props.defaultOpen)\nconst open = computed(() => {\n if (groupOpen) return groupOpen.value\n if (isControlled) return Boolean(props.modelValue)\n return internalOpen.value\n})\n\nfunction toggle() {\n const next = !open.value\n if (group) {\n group.toggle(resolvedId.value)\n } else if (!isControlled) {\n internalOpen.value = next\n }\n emit('update:modelValue', next)\n}\n\nonMounted(() => {\n if (!group) return\n group.register(resolvedId.value)\n if (props.defaultOpen && !groupOpen?.value) {\n group.toggle(resolvedId.value)\n }\n})\n\nonBeforeUnmount(() => {\n if (group) group.unregister(resolvedId.value)\n})\n</script>\n\n<template>\n <div class=\"pa-accordion\" :data-open=\"open\">\n <button\n class=\"pa-accordion__header\"\n type=\"button\"\n :id=\"headerId\"\n :aria-expanded=\"open\"\n :aria-controls=\"panelId\"\n @click=\"toggle\"\n >\n <PaIcon\n v-if=\"icon\"\n :name=\"icon\"\n size=\"sm\"\n class=\"pa-accordion__icon\"\n />\n <span class=\"pa-accordion__title\">\n <slot name=\"title\">{{ title }}</slot>\n </span>\n <PaIcon\n name=\"caret-down\"\n size=\"sm\"\n class=\"pa-accordion__chevron\"\n />\n </button>\n <Transition name=\"pa-accordion-body\">\n <div\n v-show=\"open\"\n class=\"pa-accordion__body\"\n :id=\"panelId\"\n role=\"region\"\n :aria-labelledby=\"headerId\"\n >\n <slot />\n </div>\n </Transition>\n </div>\n</template>\n\n<style scoped>\n.pa-accordion {\n display: block;\n width: 100%;\n font-family: var(--pa-font-family-base);\n}\n\n.pa-accordion__header {\n display: flex;\n align-items: center;\n gap: var(--pa-space-xs);\n width: 100%;\n padding: var(--pa-space-sm) var(--pa-space-md);\n margin: 0;\n border: none;\n border-radius: var(--pa-radius-smooth);\n background: var(--pa-color-primary);\n color: var(--pa-color-text-white);\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 text-align: left;\n cursor: pointer;\n}\n\n.pa-accordion__header:focus { outline: none; }\n\n.pa-accordion__header:focus-visible {\n outline: var(--pa-border-sm) solid var(--pa-color-primary-focus-border);\n outline-offset: 2px;\n}\n\n.pa-accordion:not([data-open=\"true\"]) .pa-accordion__header:hover {\n background: var(--pa-color-primary-hover);\n}\n\n.pa-accordion[data-open=\"true\"] .pa-accordion__header {\n background: var(--pa-color-primary-pressed);\n}\n\n.pa-accordion__title {\n flex: 1 1 auto;\n min-width: 0;\n}\n\n.pa-accordion__icon {\n flex-shrink: 0;\n}\n\n.pa-accordion__chevron {\n flex-shrink: 0;\n margin-left: auto;\n transition: transform 150ms ease;\n}\n\n.pa-accordion[data-open=\"true\"] .pa-accordion__chevron {\n transform: rotate(180deg);\n}\n\n.pa-accordion[data-open=\"true\"] .pa-accordion__header:hover {\n background: var(--pa-color-primary-hover);\n}\n\n.pa-accordion__body {\n padding: var(--pa-space-md);\n background: var(--pa-color-bg-white);\n color: var(--pa-color-text-black);\n font-family: inherit;\n font-size: var(--pa-font-body-size);\n line-height: var(--pa-font-body-line-height);\n font-weight: var(--pa-font-body-weight);\n}\n\n.pa-accordion-body-enter-active,\n.pa-accordion-body-leave-active {\n transition: opacity 150ms ease, transform 150ms ease;\n}\n\n.pa-accordion-body-enter-from,\n.pa-accordion-body-leave-to {\n opacity: 0;\n transform: translateY(-4px);\n}\n\n@media (prefers-reduced-motion: reduce) {\n .pa-accordion__chevron,\n .pa-accordion-body-enter-active,\n .pa-accordion-body-leave-active {\n transition-duration: 0ms;\n }\n}\n</style>\n"],"names":["props","__props","emit","__emit","initialVnodeProps","getCurrentInstance","isControlled","generatedId","useId","resolvedId","computed","headerId","panelId","group","inject","PaAccordionGroupKey","groupOpen","internalOpen","ref","open","toggle","next","onMounted","onBeforeUnmount","_createElementBlock","_createElementVNode","_createBlock","PaIcon","_hoisted_3","_renderSlot","_ctx","_createVNode","_Transition"],"mappings":";;;;;;;;;;;;;;AAyBA,UAAMA,IAAQC,GAIRC,IAAOC,GAKPC,IADWC,EAAA,EACkB,MAAM,SAAS,CAAA,GAC5CC,IACJ,gBAAgBF,KAAqB,iBAAiBA,GAElDG,IAAc,gBAAgBC,EAAA,CAAO,IACrCC,IAAaC,EAAS,MAAMV,EAAM,MAAMO,CAAW,GACnDI,IAAWD,EAAS,MAAM,GAAGD,EAAW,KAAK,SAAS,GACtDG,IAAUF,EAAS,MAAM,GAAGD,EAAW,KAAK,QAAQ,GAEpDI,IAAQC,EAAOC,GAAqB,IAAI,GACxCC,IAAYH,IAAQA,EAAM,OAAOJ,EAAW,KAAK,IAAI,MAErDQ,IAAeC,EAAIlB,EAAM,WAAW,GACpCmB,IAAOT,EAAS,MAChBM,IAAkBA,EAAU,QAC5BV,IAAqB,EAAQN,EAAM,aAChCiB,EAAa,KACrB;AAED,aAASG,IAAS;AAChB,YAAMC,IAAO,CAACF,EAAK;AACnB,MAAIN,IACFA,EAAM,OAAOJ,EAAW,KAAK,IACnBH,MACVW,EAAa,QAAQI,IAEvBnB,EAAK,qBAAqBmB,CAAI;AAAA,IAChC;AAEA,WAAAC,EAAU,MAAM;AACd,MAAKT,MACLA,EAAM,SAASJ,EAAW,KAAK,GAC3BT,EAAM,eAAe,EAACgB,KAAA,QAAAA,EAAW,UACnCH,EAAM,OAAOJ,EAAW,KAAK;AAAA,IAEjC,CAAC,GAEDc,EAAgB,MAAM;AACpB,MAAIV,KAAOA,EAAM,WAAWJ,EAAW,KAAK;AAAA,IAC9C,CAAC,mBAICe,EAmCM,OAAA;AAAA,MAnCD,OAAM;AAAA,MAAgB,aAAWL,EAAA;AAAA,IAAA;MACpCM,EAsBS,UAAA;AAAA,QArBP,OAAM;AAAA,QACN,MAAK;AAAA,QACJ,IAAId,EAAA;AAAA,QACJ,iBAAeQ,EAAA;AAAA,QACf,iBAAeP,EAAA;AAAA,QACf,SAAOQ;AAAA,MAAA;QAGAnB,EAAA,aADRyB,EAKEC,GAAA;AAAA;UAHC,MAAM1B,EAAA;AAAA,UACP,MAAK;AAAA,UACL,OAAM;AAAA,QAAA;QAERwB,EAEO,QAFPG,GAEO;AAAA,UADLC,EAAqCC,uBAArC,MAAqC;AAAA,gBAAf7B,EAAA,KAAK,GAAA,CAAA;AAAA,UAAA;;QAE7B8B,EAIEJ,GAAA;AAAA,UAHA,MAAK;AAAA,UACL,MAAK;AAAA,UACL,OAAM;AAAA,QAAA;;MAGVI,EAUaC,GAAA,EAVD,MAAK,uBAAmB;AAAA,mBAClC,MAQM;AAAA,YARNP,EAQM,OAAA;AAAA,YANJ,OAAM;AAAA,YACL,IAAIb,EAAA;AAAA,YACL,MAAK;AAAA,YACJ,mBAAiBD,EAAA;AAAA,UAAA;YAElBkB,EAAQC,EAAA,QAAA,WAAA,CAAA,GAAA,QAAA,EAAA;AAAA,UAAA;gBANAX,EAAA,KAAI;AAAA,UAAA;;;;;;;"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import o from "./PaBanner.vue2.js";
|
|
2
|
-
import { VARIANT_A11Y as
|
|
2
|
+
import { VARIANT_A11Y as e, VARIANT_ICONS as f, VARIANT_LABELS as s } from "./PaBanner.vue2.js";
|
|
3
3
|
/* empty css */
|
|
4
4
|
import r from "../../_virtual/_plugin-vue_export-helper.js";
|
|
5
|
-
const
|
|
5
|
+
const a = /* @__PURE__ */ r(o, [["__scopeId", "data-v-17237900"]]);
|
|
6
6
|
export {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
e as VARIANT_A11Y,
|
|
8
|
+
f as VARIANT_ICONS,
|
|
9
|
+
s as VARIANT_LABELS,
|
|
10
|
+
a as default
|
|
11
11
|
};
|
|
12
12
|
//# sourceMappingURL=PaBanner.vue.js.map
|
|
@@ -1,29 +1,27 @@
|
|
|
1
|
-
import { defineComponent as p, computed as o, openBlock as l, createElementBlock as c, normalizeClass as
|
|
1
|
+
import { defineComponent as p, useId as b, computed as o, openBlock as l, createElementBlock as c, normalizeClass as f, createElementVNode as e, createVNode as d, toDisplayString as m, renderSlot as _, createCommentVNode as A } from "vue";
|
|
2
2
|
import v from "../PaIcon/PaIcon.vue.js";
|
|
3
|
-
const
|
|
3
|
+
const h = ["role", "aria-live", "aria-label"], g = { class: "pa-banner__container" }, L = { class: "pa-banner__icon pa-banner__icon--leading" }, N = { class: "pa-banner__content" }, k = { class: "pa-banner__title-row" }, I = { class: "pa-banner__icon pa-banner__icon--inline" }, w = { class: "pa-banner__body" }, V = {
|
|
4
4
|
key: 0,
|
|
5
5
|
class: "pa-banner__action"
|
|
6
|
-
},
|
|
6
|
+
}, $ = {
|
|
7
7
|
info: "info",
|
|
8
8
|
"info-dark": "info",
|
|
9
9
|
success: "check-circle",
|
|
10
10
|
warning: "warning-circle",
|
|
11
11
|
error: "warning"
|
|
12
|
-
},
|
|
12
|
+
}, y = {
|
|
13
13
|
info: { role: "status", ariaLive: "polite" },
|
|
14
14
|
"info-dark": { role: "status", ariaLive: "polite" },
|
|
15
15
|
success: { role: "status", ariaLive: "polite" },
|
|
16
16
|
warning: { role: "alert", ariaLive: "assertive" },
|
|
17
17
|
error: { role: "alert", ariaLive: "assertive" }
|
|
18
|
-
},
|
|
18
|
+
}, z = {
|
|
19
19
|
info: "Avviso",
|
|
20
20
|
"info-dark": "Avviso scuro",
|
|
21
21
|
success: "Notifica di successo",
|
|
22
22
|
warning: "Attenzione",
|
|
23
23
|
error: "Errore"
|
|
24
|
-
}
|
|
25
|
-
let S = 0;
|
|
26
|
-
const E = /* @__PURE__ */ p({
|
|
24
|
+
}, S = /* @__PURE__ */ p({
|
|
27
25
|
__name: "PaBanner",
|
|
28
26
|
props: {
|
|
29
27
|
variant: { default: "info" },
|
|
@@ -31,25 +29,25 @@ const E = /* @__PURE__ */ p({
|
|
|
31
29
|
label: { default: void 0 }
|
|
32
30
|
},
|
|
33
31
|
setup(n) {
|
|
34
|
-
const a = n, r = `pa-banner-${
|
|
35
|
-
return (i,
|
|
36
|
-
class:
|
|
32
|
+
const a = n, r = `pa-banner-${b()}__title`, u = o(() => a.label ?? z[a.variant]), t = o(() => y[a.variant]), s = o(() => $[a.variant]);
|
|
33
|
+
return (i, B) => (l(), c("aside", {
|
|
34
|
+
class: f(["pa-banner", `pa-banner--${n.variant}`]),
|
|
37
35
|
role: t.value.role,
|
|
38
36
|
"aria-live": t.value.ariaLive,
|
|
39
37
|
"aria-labelledby": r,
|
|
40
38
|
"aria-label": u.value
|
|
41
39
|
}, [
|
|
42
|
-
e("div",
|
|
43
|
-
e("div",
|
|
44
|
-
|
|
40
|
+
e("div", g, [
|
|
41
|
+
e("div", L, [
|
|
42
|
+
d(v, {
|
|
45
43
|
name: s.value,
|
|
46
44
|
size: "lg"
|
|
47
45
|
}, null, 8, ["name"])
|
|
48
46
|
]),
|
|
49
|
-
e("div",
|
|
50
|
-
e("div",
|
|
51
|
-
e("div",
|
|
52
|
-
|
|
47
|
+
e("div", N, [
|
|
48
|
+
e("div", k, [
|
|
49
|
+
e("div", I, [
|
|
50
|
+
d(v, {
|
|
53
51
|
name: s.value,
|
|
54
52
|
size: "lg"
|
|
55
53
|
}, null, 8, ["name"])
|
|
@@ -57,23 +55,23 @@ const E = /* @__PURE__ */ p({
|
|
|
57
55
|
e("h3", {
|
|
58
56
|
id: r,
|
|
59
57
|
class: "pa-banner__title"
|
|
60
|
-
},
|
|
58
|
+
}, m(n.title), 1)
|
|
61
59
|
]),
|
|
62
60
|
e("div", w, [
|
|
63
|
-
|
|
61
|
+
_(i.$slots, "default", {}, void 0, !0)
|
|
64
62
|
])
|
|
65
63
|
]),
|
|
66
|
-
i.$slots.action ? (l(), c("div",
|
|
67
|
-
|
|
68
|
-
])) :
|
|
64
|
+
i.$slots.action ? (l(), c("div", V, [
|
|
65
|
+
_(i.$slots, "action", {}, void 0, !0)
|
|
66
|
+
])) : A("", !0)
|
|
69
67
|
])
|
|
70
|
-
], 10,
|
|
68
|
+
], 10, h));
|
|
71
69
|
}
|
|
72
70
|
});
|
|
73
71
|
export {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
72
|
+
y as VARIANT_A11Y,
|
|
73
|
+
$ as VARIANT_ICONS,
|
|
74
|
+
z as VARIANT_LABELS,
|
|
75
|
+
S as default
|
|
78
76
|
};
|
|
79
77
|
//# sourceMappingURL=PaBanner.vue2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaBanner.vue2.js","sources":["../../../src/components/PaBanner/PaBanner.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PaIconName } from '../PaIcon/PaIcon.vue'\n\nexport type PaBannerVariant =\n | 'info'\n | 'info-dark'\n | 'success'\n | 'warning'\n | 'error'\n\nexport interface PaBannerProps {\n variant?: PaBannerVariant\n title: string\n label?: string\n}\n\nexport const VARIANT_ICONS: Record<PaBannerVariant, PaIconName> = {\n 'info': 'info',\n 'info-dark': 'info',\n 'success': 'check-circle',\n 'warning': 'warning-circle',\n 'error': 'warning',\n}\n\nexport const VARIANT_A11Y: Record<\n PaBannerVariant,\n { role: 'status' | 'alert'; ariaLive: 'polite' | 'assertive' }\n> = {\n 'info': { role: 'status', ariaLive: 'polite' },\n 'info-dark': { role: 'status', ariaLive: 'polite' },\n 'success': { role: 'status', ariaLive: 'polite' },\n 'warning': { role: 'alert', ariaLive: 'assertive' },\n 'error': { role: 'alert', ariaLive: 'assertive' },\n}\n\nexport const VARIANT_LABELS: Record<PaBannerVariant, string> = {\n 'info': 'Avviso',\n 'info-dark': 'Avviso scuro',\n 'success': 'Notifica di successo',\n 'warning': 'Attenzione',\n 'error': 'Errore',\n}\n
|
|
1
|
+
{"version":3,"file":"PaBanner.vue2.js","sources":["../../../src/components/PaBanner/PaBanner.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PaIconName } from '../PaIcon/PaIcon.vue'\n\nexport type PaBannerVariant =\n | 'info'\n | 'info-dark'\n | 'success'\n | 'warning'\n | 'error'\n\nexport interface PaBannerProps {\n variant?: PaBannerVariant\n title: string\n label?: string\n}\n\nexport const VARIANT_ICONS: Record<PaBannerVariant, PaIconName> = {\n 'info': 'info',\n 'info-dark': 'info',\n 'success': 'check-circle',\n 'warning': 'warning-circle',\n 'error': 'warning',\n}\n\nexport const VARIANT_A11Y: Record<\n PaBannerVariant,\n { role: 'status' | 'alert'; ariaLive: 'polite' | 'assertive' }\n> = {\n 'info': { role: 'status', ariaLive: 'polite' },\n 'info-dark': { role: 'status', ariaLive: 'polite' },\n 'success': { role: 'status', ariaLive: 'polite' },\n 'warning': { role: 'alert', ariaLive: 'assertive' },\n 'error': { role: 'alert', ariaLive: 'assertive' },\n}\n\nexport const VARIANT_LABELS: Record<PaBannerVariant, string> = {\n 'info': 'Avviso',\n 'info-dark': 'Avviso scuro',\n 'success': 'Notifica di successo',\n 'warning': 'Attenzione',\n 'error': 'Errore',\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useId } from 'vue'\nimport PaIcon from '../PaIcon/PaIcon.vue'\n\nconst props = withDefaults(defineProps<PaBannerProps>(), {\n variant: 'info',\n label: undefined,\n})\n\nconst titleId = `pa-banner-${useId()}__title`\n\nconst resolvedLabel = computed(() => props.label ?? VARIANT_LABELS[props.variant])\nconst resolvedA11y = computed(() => VARIANT_A11Y[props.variant])\nconst resolvedIcon = computed(() => VARIANT_ICONS[props.variant])\n</script>\n\n<template>\n <aside :class=\"['pa-banner', `pa-banner--${variant}`]\"\n :role=\"resolvedA11y.role\"\n :aria-live=\"resolvedA11y.ariaLive\"\n :aria-labelledby=\"titleId\"\n :aria-label=\"resolvedLabel\">\n <div class=\"pa-banner__container\">\n <div class=\"pa-banner__icon pa-banner__icon--leading\">\n <PaIcon :name=\"resolvedIcon\"\n size=\"lg\" />\n </div>\n <div class=\"pa-banner__content\">\n <div class=\"pa-banner__title-row\">\n <div class=\"pa-banner__icon pa-banner__icon--inline\">\n <PaIcon :name=\"resolvedIcon\"\n size=\"lg\" />\n </div>\n <h3 :id=\"titleId\"\n class=\"pa-banner__title\">{{ title }}</h3>\n </div>\n <div class=\"pa-banner__body\">\n <slot />\n </div>\n </div>\n <div v-if=\"$slots.action\"\n class=\"pa-banner__action\">\n <slot name=\"action\" />\n </div>\n </div>\n </aside>\n</template>\n\n<style scoped>\n.pa-banner {\n container-type: inline-size;\n font-family: var(--pa-font-family-base);\n border-radius: var(--pa-radius-smooth);\n background: var(--pa-banner-bg);\n color: var(--pa-banner-text);\n\n --pa-banner-bg: var(--pa-color-bg-primary-light-40);\n --pa-banner-text: var(--pa-color-text-secondary-gray);\n --pa-banner-body: var(--pa-color-text-black);\n --pa-banner-link: var(--pa-color-primary);\n --pa-banner-icon-color: var(--pa-color-text-secondary-gray);\n}\n\n.pa-banner__container {\n max-width: 1172px;\n margin: 0 auto;\n padding: var(--pa-space-md) var(--pa-space-2xl);\n display: flex;\n align-items: center;\n box-sizing: border-box;\n}\n\n.pa-banner__icon {\n color: var(--pa-banner-icon-color);\n display: flex;\n align-items: center;\n}\n\n.pa-banner__icon--leading {\n padding-right: var(--pa-space-md);\n}\n\n.pa-banner__icon--inline {\n display: none;\n}\n\n.pa-banner__content {\n flex: 1 1 0;\n min-width: 0;\n}\n\n.pa-banner__action {\n display: flex;\n align-items: center;\n justify-content: center;\n padding-left: var(--pa-space-2xl);\n}\n\n.pa-banner__title {\n margin: 0;\n font-size: var(--pa-font-h4-size);\n line-height: var(--pa-font-h4-line-height);\n font-weight: var(--pa-font-h4-weight);\n letter-spacing: var(--pa-font-h4-letter-spacing);\n color: var(--pa-banner-text);\n}\n\n.pa-banner__body {\n margin-top: var(--pa-space-xs);\n font-size: var(--pa-font-body-size);\n line-height: var(--pa-font-body-line-height);\n font-weight: var(--pa-font-body-weight);\n color: var(--pa-banner-body);\n}\n\n.pa-banner__body :deep(a) {\n color: var(--pa-banner-link);\n text-decoration: underline;\n}\n\n.pa-banner--info-dark {\n --pa-banner-bg: var(--pa-color-bg-primary-dark-115);\n --pa-banner-text: var(--pa-color-text-white);\n --pa-banner-body: var(--pa-color-text-white);\n --pa-banner-link: var(--pa-color-accent);\n --pa-banner-icon-color: var(--pa-color-text-white);\n}\n\n.pa-banner--success {\n --pa-banner-icon-color: var(--pa-color-success);\n}\n\n.pa-banner--warning {\n --pa-banner-icon-color: var(--pa-color-warning);\n}\n\n.pa-banner--error {\n --pa-banner-icon-color: var(--pa-color-error);\n}\n\n@container (max-width: 600px) {\n .pa-banner {\n border-radius: 0;\n }\n\n .pa-banner__container {\n flex-direction: column;\n align-items: stretch;\n gap: 0;\n padding: var(--pa-space-md);\n }\n\n .pa-banner__icon--leading {\n display: none;\n }\n\n .pa-banner__icon--inline {\n display: flex;\n }\n\n .pa-banner__title-row {\n display: flex;\n align-items: center;\n gap: var(--pa-space-md);\n }\n\n .pa-banner__body {\n margin-top: var(--pa-space-md);\n }\n\n .pa-banner__action {\n display: block;\n width: 100%;\n padding-left: 0;\n margin-top: var(--pa-space-md);\n }\n\n .pa-banner__action :deep(.pa-button) {\n width: 100%;\n }\n}\n</style>\n"],"names":["VARIANT_ICONS","VARIANT_A11Y","VARIANT_LABELS","props","__props","titleId","useId","resolvedLabel","computed","resolvedA11y","resolvedIcon","_createElementBlock","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","PaIcon","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_renderSlot","_ctx","$slots","_openBlock","_hoisted_8"],"mappings":";;;;;GAgBaA,IAAqD;AAAA,EAChE,MAAQ;AAAA,EACR,aAAa;AAAA,EACb,SAAW;AAAA,EACX,SAAW;AAAA,EACX,OAAS;AACX,GAEaC,IAGT;AAAA,EACF,MAAQ,EAAE,MAAM,UAAU,UAAU,SAAA;AAAA,EACpC,aAAa,EAAE,MAAM,UAAU,UAAU,SAAA;AAAA,EACzC,SAAW,EAAE,MAAM,UAAU,UAAU,SAAA;AAAA,EACvC,SAAW,EAAE,MAAM,SAAS,UAAU,YAAA;AAAA,EACtC,OAAS,EAAE,MAAM,SAAS,UAAU,YAAA;AACtC,GAEaC,IAAkD;AAAA,EAC7D,MAAQ;AAAA,EACR,aAAa;AAAA,EACb,SAAW;AAAA,EACX,SAAW;AAAA,EACX,OAAS;AACX;;;;;;;;AAOA,UAAMC,IAAQC,GAKRC,IAAU,aAAaC,EAAA,CAAO,WAE9BC,IAAgBC,EAAS,MAAML,EAAM,SAASD,EAAeC,EAAM,OAAO,CAAC,GAC3EM,IAAeD,EAAS,MAAMP,EAAaE,EAAM,OAAO,CAAC,GACzDO,IAAeF,EAAS,MAAMR,EAAcG,EAAM,OAAO,CAAC;2BAI9DQ,EA4BQ,SAAA;AAAA,MA5BA,qCAAmCP,EAAA,OAAO,EAAA,CAAA;AAAA,MAC1C,MAAMK,EAAA,MAAa;AAAA,MACnB,aAAWA,EAAA,MAAa;AAAA,MACxB,mBAAiBJ;AAAA,MACjB,cAAYE,EAAA;AAAA,IAAA;MAClBK,EAsBM,OAtBNC,GAsBM;AAAA,QArBJD,EAGM,OAHNE,GAGM;AAAA,UAFJC,EACoBC,GAAA;AAAA,YADX,MAAMN,EAAA;AAAA,YACP,MAAK;AAAA,UAAA;;QAEfE,EAYM,OAZNK,GAYM;AAAA,UAXJL,EAOM,OAPNM,GAOM;AAAA,YANJN,EAGM,OAHNO,GAGM;AAAA,cAFJJ,EACoBC,GAAA;AAAA,gBADX,MAAMN,EAAA;AAAA,gBACP,MAAK;AAAA,cAAA;;YAEfE,EAC6C,MAAA;AAAA,cADxC,IAAIP;AAAA,cACL,OAAM;AAAA,YAAA,KAAsBD,EAAA,KAAK,GAAA,CAAA;AAAA,UAAA;UAEvCQ,EAEM,OAFNQ,GAEM;AAAA,YADJC,EAAQC,EAAA,QAAA,WAAA,CAAA,GAAA,QAAA,EAAA;AAAA,UAAA;;QAGDC,EAAAA,OAAO,UAAlBC,KAAAb,EAGM,OAHNc,GAGM;AAAA,UADJJ,EAAsBC,EAAA,QAAA,UAAA,CAAA,GAAA,QAAA,EAAA;AAAA,QAAA;;;;;"}
|
|
@@ -17,26 +17,29 @@ export interface PaCardProps {
|
|
|
17
17
|
imageAlt?: string;
|
|
18
18
|
imageRatio?: PaImageRatio;
|
|
19
19
|
}
|
|
20
|
-
declare
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
imageAlt: string;
|
|
24
|
-
typology: PaCardTypology;
|
|
25
|
-
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
|
|
26
|
-
'header-leading'?: (props: {}) => any;
|
|
20
|
+
declare var __VLS_4: {}, __VLS_12: {}, __VLS_18: {}, __VLS_20: {}, __VLS_22: {}, __VLS_24: {}, __VLS_26: {};
|
|
21
|
+
type __VLS_Slots = {} & {
|
|
22
|
+
'header-leading'?: (props: typeof __VLS_4) => any;
|
|
27
23
|
} & {
|
|
28
|
-
'header-trailing'?: (props:
|
|
24
|
+
'header-trailing'?: (props: typeof __VLS_12) => any;
|
|
29
25
|
} & {
|
|
30
|
-
title?: (props:
|
|
26
|
+
title?: (props: typeof __VLS_18) => any;
|
|
31
27
|
} & {
|
|
32
|
-
subtitle?: (props:
|
|
28
|
+
subtitle?: (props: typeof __VLS_20) => any;
|
|
33
29
|
} & {
|
|
34
|
-
body?: (props:
|
|
30
|
+
body?: (props: typeof __VLS_22) => any;
|
|
35
31
|
} & {
|
|
36
|
-
signature?: (props:
|
|
32
|
+
signature?: (props: typeof __VLS_24) => any;
|
|
37
33
|
} & {
|
|
38
|
-
footer?: (props:
|
|
39
|
-
}
|
|
34
|
+
footer?: (props: typeof __VLS_26) => any;
|
|
35
|
+
};
|
|
36
|
+
declare const __VLS_component: import("vue").DefineComponent<PaCardProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<PaCardProps> & Readonly<{}>, {
|
|
37
|
+
variant: PaCardVariant;
|
|
38
|
+
titleLevel: 1 | 2 | 3 | 4 | 5 | 6;
|
|
39
|
+
imageAlt: string;
|
|
40
|
+
typology: PaCardTypology;
|
|
41
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
42
|
+
declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
|
|
40
43
|
export default _default;
|
|
41
44
|
type __VLS_WithSlots<T, S> = T & {
|
|
42
45
|
new (): {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import o from "./PaCard.vue2.js";
|
|
2
2
|
/* empty css */
|
|
3
3
|
import r from "../../_virtual/_plugin-vue_export-helper.js";
|
|
4
|
-
const
|
|
4
|
+
const f = /* @__PURE__ */ r(o, [["__scopeId", "data-v-830dccf3"]]);
|
|
5
5
|
export {
|
|
6
|
-
|
|
6
|
+
f as default
|
|
7
7
|
};
|
|
8
8
|
//# sourceMappingURL=PaCard.vue.js.map
|
|
@@ -1,40 +1,35 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
const
|
|
1
|
+
import { defineComponent as B, computed as a, useSlots as C, useId as T, openBlock as t, createElementBlock as s, normalizeClass as N, createElementVNode as y, createVNode as V, createCommentVNode as l, renderSlot as r, createBlock as g, createTextVNode as n, toDisplayString as d, resolveDynamicComponent as H, withCtx as L } from "vue";
|
|
2
|
+
import P from "../PaIcon/PaIcon.vue.js";
|
|
3
|
+
import R from "../PaImage/PaImage.vue.js";
|
|
4
|
+
import z from "../PaTag/PaTag.vue.js";
|
|
5
|
+
const A = ["aria-labelledby"], D = { class: "pa-card__layout" }, E = {
|
|
6
6
|
key: 0,
|
|
7
7
|
class: "pa-card__image-cell"
|
|
8
|
-
},
|
|
8
|
+
}, w = { class: "pa-card__content" }, j = {
|
|
9
9
|
key: 0,
|
|
10
10
|
class: "pa-card__header"
|
|
11
|
-
},
|
|
11
|
+
}, q = {
|
|
12
12
|
key: 0,
|
|
13
13
|
class: "pa-card__header-leading"
|
|
14
|
-
},
|
|
14
|
+
}, F = {
|
|
15
15
|
key: 1,
|
|
16
16
|
class: "pa-card__header-trailing"
|
|
17
|
-
},
|
|
17
|
+
}, G = {
|
|
18
18
|
key: 1,
|
|
19
19
|
class: "pa-card__title-block"
|
|
20
|
-
},
|
|
20
|
+
}, J = {
|
|
21
21
|
key: 1,
|
|
22
22
|
class: "pa-card__subtitle"
|
|
23
|
-
},
|
|
23
|
+
}, K = {
|
|
24
24
|
key: 2,
|
|
25
25
|
class: "pa-card__body"
|
|
26
|
-
},
|
|
26
|
+
}, M = { class: "pa-card__body-text" }, O = {
|
|
27
27
|
key: 3,
|
|
28
28
|
class: "pa-card__signature"
|
|
29
|
-
},
|
|
29
|
+
}, Q = {
|
|
30
30
|
key: 4,
|
|
31
31
|
class: "pa-card__footer"
|
|
32
|
-
}
|
|
33
|
-
let O = 0;
|
|
34
|
-
function Q() {
|
|
35
|
-
return ++O;
|
|
36
|
-
}
|
|
37
|
-
const ee = /* @__PURE__ */ I({
|
|
32
|
+
}, x = /* @__PURE__ */ B({
|
|
38
33
|
__name: "PaCard",
|
|
39
34
|
props: {
|
|
40
35
|
typology: { default: "portrait" },
|
|
@@ -54,82 +49,82 @@ const ee = /* @__PURE__ */ I({
|
|
|
54
49
|
setup(e) {
|
|
55
50
|
const o = e, b = a(
|
|
56
51
|
() => o.imageRatio ?? (o.typology === "landscape" ? "1:1" : "3:2")
|
|
57
|
-
), c =
|
|
52
|
+
), c = C(), v = `pa-card-${T()}__title`, u = a(() => !!c.title || !!o.title), h = a(() => !!c.subtitle || !!o.subtitle), f = a(() => !!c.body || !!o.body), k = a(() => !!c.signature || !!o.signature), m = a(
|
|
58
53
|
() => !!c["header-leading"] || !!o.category || !!o.categoryIcon
|
|
59
54
|
), _ = a(
|
|
60
55
|
() => !!c["header-trailing"] || !!o.date
|
|
61
|
-
), $ = a(() => m.value || _.value), p = a(() => u.value || h.value), S = a(() => u.value ? v : void 0),
|
|
62
|
-
return (i,
|
|
63
|
-
class:
|
|
56
|
+
), $ = a(() => m.value || _.value), p = a(() => u.value || h.value), S = a(() => u.value ? v : void 0), I = a(() => `h${o.titleLevel}`);
|
|
57
|
+
return (i, U) => (t(), s("article", {
|
|
58
|
+
class: N(["pa-card", [`pa-card--${e.typology}`, `pa-card--${e.variant}`]]),
|
|
64
59
|
"aria-labelledby": S.value
|
|
65
60
|
}, [
|
|
66
|
-
y("div",
|
|
67
|
-
e.imageSrc && e.typology !== "process" ? (t(), s("div",
|
|
68
|
-
|
|
61
|
+
y("div", D, [
|
|
62
|
+
e.imageSrc && e.typology !== "process" ? (t(), s("div", E, [
|
|
63
|
+
V(R, {
|
|
69
64
|
src: e.imageSrc,
|
|
70
65
|
alt: e.imageAlt,
|
|
71
66
|
ratio: b.value
|
|
72
67
|
}, null, 8, ["src", "alt", "ratio"])
|
|
73
68
|
])) : l("", !0),
|
|
74
|
-
y("div",
|
|
75
|
-
$.value ? (t(), s("div",
|
|
76
|
-
m.value ? (t(), s("div",
|
|
69
|
+
y("div", w, [
|
|
70
|
+
$.value ? (t(), s("div", j, [
|
|
71
|
+
m.value ? (t(), s("div", q, [
|
|
77
72
|
r(i.$slots, "header-leading", {}, () => [
|
|
78
|
-
e.categoryIcon ? (t(), g(
|
|
73
|
+
e.categoryIcon ? (t(), g(P, {
|
|
79
74
|
key: 0,
|
|
80
75
|
name: e.categoryIcon,
|
|
81
76
|
size: "lg"
|
|
82
|
-
}, null, 8, ["name"])) : e.category ? (t(), g(
|
|
77
|
+
}, null, 8, ["name"])) : e.category ? (t(), g(z, {
|
|
83
78
|
key: 1,
|
|
84
79
|
variant: "info",
|
|
85
80
|
label: e.category
|
|
86
81
|
}, null, 8, ["label"])) : l("", !0)
|
|
87
82
|
], !0)
|
|
88
83
|
])) : l("", !0),
|
|
89
|
-
_.value ? (t(), s("div",
|
|
84
|
+
_.value ? (t(), s("div", F, [
|
|
90
85
|
r(i.$slots, "header-trailing", {}, () => [
|
|
91
86
|
n(d(e.date), 1)
|
|
92
87
|
], !0)
|
|
93
88
|
])) : l("", !0)
|
|
94
89
|
])) : l("", !0),
|
|
95
|
-
p.value ? (t(), s("div",
|
|
96
|
-
u.value ? (t(), g(
|
|
90
|
+
p.value ? (t(), s("div", G, [
|
|
91
|
+
u.value ? (t(), g(H(I.value), {
|
|
97
92
|
key: 0,
|
|
98
93
|
id: v,
|
|
99
94
|
class: "pa-card__title"
|
|
100
95
|
}, {
|
|
101
|
-
default:
|
|
96
|
+
default: L(() => [
|
|
102
97
|
r(i.$slots, "title", {}, () => [
|
|
103
98
|
n(d(e.title), 1)
|
|
104
99
|
], !0)
|
|
105
100
|
]),
|
|
106
101
|
_: 3
|
|
107
102
|
})) : l("", !0),
|
|
108
|
-
h.value ? (t(), s("p",
|
|
103
|
+
h.value ? (t(), s("p", J, [
|
|
109
104
|
r(i.$slots, "subtitle", {}, () => [
|
|
110
105
|
n(d(e.subtitle), 1)
|
|
111
106
|
], !0)
|
|
112
107
|
])) : l("", !0)
|
|
113
108
|
])) : l("", !0),
|
|
114
|
-
f.value ? (t(), s("div",
|
|
109
|
+
f.value ? (t(), s("div", K, [
|
|
115
110
|
r(i.$slots, "body", {}, () => [
|
|
116
|
-
y("p",
|
|
111
|
+
y("p", M, d(e.body), 1)
|
|
117
112
|
], !0)
|
|
118
113
|
])) : l("", !0),
|
|
119
|
-
k.value ? (t(), s("p",
|
|
114
|
+
k.value ? (t(), s("p", O, [
|
|
120
115
|
r(i.$slots, "signature", {}, () => [
|
|
121
116
|
n(d(e.signature), 1)
|
|
122
117
|
], !0)
|
|
123
118
|
])) : l("", !0),
|
|
124
|
-
i.$slots.footer ? (t(), s("div",
|
|
119
|
+
i.$slots.footer ? (t(), s("div", Q, [
|
|
125
120
|
r(i.$slots, "footer", {}, void 0, !0)
|
|
126
121
|
])) : l("", !0)
|
|
127
122
|
])
|
|
128
123
|
])
|
|
129
|
-
], 10,
|
|
124
|
+
], 10, A));
|
|
130
125
|
}
|
|
131
126
|
});
|
|
132
127
|
export {
|
|
133
|
-
|
|
128
|
+
x as default
|
|
134
129
|
};
|
|
135
130
|
//# sourceMappingURL=PaCard.vue2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaCard.vue2.js","sources":["../../../src/components/PaCard/PaCard.vue"],"sourcesContent":["<script lang=\"ts\">\nlet cardUid = 0\nfunction nextCardId() {\n return ++cardUid\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useSlots } from 'vue'\nimport PaIcon from '../PaIcon/PaIcon.vue'\nimport PaImage from '../PaImage/PaImage.vue'\nimport PaTag from '../PaTag/PaTag.vue'\nimport type { PaImageRatio } from '../PaImage/PaImage.vue'\nimport type { PaIconName } from '../PaIcon/PaIcon.vue'\n\nexport type PaCardTypology = 'landscape' | 'portrait' | 'process'\nexport type PaCardVariant = 'light' | 'dark'\n\nexport interface PaCardProps {\n typology?: PaCardTypology\n variant?: PaCardVariant\n title?: string\n titleLevel?: 1 | 2 | 3 | 4 | 5 | 6\n subtitle?: string\n body?: string\n signature?: string\n date?: string\n category?: string\n categoryIcon?: PaIconName\n imageSrc?: string\n imageAlt?: string\n imageRatio?: PaImageRatio\n}\n\nconst props = withDefaults(defineProps<PaCardProps>(), {\n typology: 'portrait',\n variant: 'light',\n titleLevel: 3,\n imageAlt: '',\n})\n\nconst resolvedRatio = computed<PaImageRatio>(\n () => props.imageRatio ?? (props.typology === 'landscape' ? '1:1' : '3:2'),\n)\n\nconst slots = useSlots()\n\nconst titleId = `pa-card-${nextCardId()}__title`\n\nconst hasTitle = computed(() => !!slots.title || !!props.title)\nconst hasSubtitle = computed(() => !!slots.subtitle || !!props.subtitle)\nconst hasBody = computed(() => !!slots.body || !!props.body)\nconst hasSignature = computed(() => !!slots.signature || !!props.signature)\nconst hasHeaderLeading = computed(\n () => !!slots['header-leading'] || !!props.category || !!props.categoryIcon,\n)\nconst hasHeaderTrailing = computed(\n () => !!slots['header-trailing'] || !!props.date,\n)\nconst hasHeader = computed(() => hasHeaderLeading.value || hasHeaderTrailing.value)\nconst hasTitleBlock = computed(() => hasTitle.value || hasSubtitle.value)\nconst labelledBy = computed(() => (hasTitle.value ? titleId : undefined))\nconst titleTag = computed(() => `h${props.titleLevel}` as const)\n</script>\n\n<template>\n <article class=\"pa-card\"\n :class=\"[`pa-card--${typology}`, `pa-card--${variant}`]\"\n :aria-labelledby=\"labelledBy\">\n <div class=\"pa-card__layout\">\n <div v-if=\"imageSrc && typology !== 'process'\"\n class=\"pa-card__image-cell\">\n <PaImage :src=\"imageSrc\"\n :alt=\"imageAlt\"\n :ratio=\"resolvedRatio\" />\n </div>\n\n <div class=\"pa-card__content\">\n <div v-if=\"hasHeader\"\n class=\"pa-card__header\">\n <div v-if=\"hasHeaderLeading\"\n class=\"pa-card__header-leading\">\n <slot name=\"header-leading\">\n <PaIcon v-if=\"categoryIcon\"\n :name=\"categoryIcon\"\n size=\"lg\" />\n <PaTag v-else-if=\"category\"\n variant=\"info\"\n :label=\"category\" />\n </slot>\n </div>\n <div v-if=\"hasHeaderTrailing\"\n class=\"pa-card__header-trailing\">\n <slot name=\"header-trailing\">{{ date }}</slot>\n </div>\n </div>\n\n <div v-if=\"hasTitleBlock\"\n class=\"pa-card__title-block\">\n <component :is=\"titleTag\"\n v-if=\"hasTitle\"\n :id=\"titleId\"\n class=\"pa-card__title\">\n <slot name=\"title\">{{ title }}</slot>\n </component>\n <p v-if=\"hasSubtitle\"\n class=\"pa-card__subtitle\">\n <slot name=\"subtitle\">{{ subtitle }}</slot>\n </p>\n </div>\n\n <div v-if=\"hasBody\"\n class=\"pa-card__body\">\n <slot name=\"body\">\n <p class=\"pa-card__body-text\">{{ body }}</p>\n </slot>\n </div>\n\n <p v-if=\"hasSignature\"\n class=\"pa-card__signature\">\n <slot name=\"signature\">{{ signature }}</slot>\n </p>\n\n <div v-if=\"$slots.footer\"\n class=\"pa-card__footer\">\n <slot name=\"footer\" />\n </div>\n </div>\n </div>\n </article>\n</template>\n\n<style scoped>\n.pa-card {\n display: block;\n background-color: var(--pa-card-bg);\n border-radius: var(--pa-radius-smooth);\n box-shadow: var(--pa-shadow-elevation-01);\n overflow: hidden;\n container-type: inline-size;\n}\n\n.pa-card__layout {\n display: flex;\n flex-direction: column;\n}\n\n.pa-card--light {\n --pa-card-bg: var(--pa-color-bg-white);\n --pa-card-title-color: var(--pa-color-primary);\n --pa-card-body-color: var(--pa-color-text-secondary-gray);\n --pa-card-date-color: var(--pa-color-text-secondary-gray);\n --pa-card-signature-color: var(--pa-color-text-secondary-gray);\n --pa-card-subtitle-color: var(--pa-color-text-secondary-gray);\n --pa-card-action-color: var(--pa-color-primary);\n}\n\n.pa-card--dark {\n --pa-card-bg: var(--pa-color-bg-primary-dark-115);\n --pa-card-title-color: var(--pa-color-bg-white);\n --pa-card-body-color: var(--pa-color-bg-white);\n --pa-card-date-color: var(--pa-color-bg-white);\n --pa-card-signature-color: var(--pa-color-bg-white);\n --pa-card-subtitle-color: var(--pa-color-bg-white);\n --pa-card-action-color: var(--pa-color-accent);\n}\n\n.pa-card--process.pa-card--dark {\n --pa-card-title-color: var(--pa-color-bg-white);\n}\n\n.pa-card--portrait .pa-card__image-cell {\n width: 100%;\n}\n\n.pa-card--portrait .pa-card__content {\n display: flex;\n flex-direction: column;\n gap: 24px;\n padding: 32px;\n min-width: 0;\n}\n\n.pa-card__header {\n display: flex;\n align-items: center;\n gap: 16px;\n width: 100%;\n}\n\n.pa-card__header-leading {\n flex: 1 0 0;\n min-width: 0;\n}\n\n.pa-card__header-trailing {\n flex: 0 0 auto;\n font-family: var(--pa-font-family-mono);\n font-weight: 400;\n font-size: 16px;\n line-height: 18px;\n color: var(--pa-card-date-color);\n}\n\n.pa-card__title-block {\n display: flex;\n flex-direction: column;\n gap: 8px;\n width: 100%;\n}\n\n.pa-card__title {\n margin: 0;\n font-family: var(--pa-font-family-base);\n font-weight: 700;\n font-size: 24px;\n line-height: 28px;\n letter-spacing: -0.5px;\n color: var(--pa-card-title-color);\n}\n\n.pa-card--portrait .pa-card__subtitle {\n margin: 0;\n font-family: var(--pa-font-family-base);\n font-weight: 600;\n font-size: 18px;\n line-height: 22px;\n letter-spacing: -0.5px;\n color: var(--pa-card-subtitle-color);\n}\n\n.pa-card__body,\n.pa-card__body-text {\n margin: 0;\n font-family: var(--pa-font-family-base);\n font-weight: 400;\n font-size: 16px;\n line-height: 20px;\n color: var(--pa-card-body-color);\n}\n\n.pa-card__signature {\n margin: 0;\n font-family: var(--pa-font-family-mono);\n font-weight: 400;\n font-size: 16px;\n line-height: 18px;\n color: var(--pa-card-signature-color);\n}\n\n.pa-card__footer {\n display: flex;\n align-items: center;\n gap: 12px;\n width: 100%;\n}\n\n/* Landscape */\n.pa-card--landscape .pa-card__layout {\n display: grid;\n grid-template-columns: 370px 1fr;\n align-items: stretch;\n}\n\n.pa-card--landscape .pa-card__image-cell {\n width: auto;\n height: 100%;\n}\n\n.pa-card--landscape .pa-card__content {\n display: flex;\n flex-direction: column;\n min-width: 0;\n gap: 24px;\n padding: 32px 48px;\n}\n\n.pa-card--landscape .pa-card__title {\n font-size: 32px;\n line-height: 36px;\n letter-spacing: -1px;\n}\n\n.pa-card--landscape .pa-card__subtitle {\n margin: 0;\n font-family: var(--pa-font-family-base);\n font-weight: 600;\n font-size: 20px;\n line-height: 24px;\n letter-spacing: -0.5px;\n color: var(--pa-card-subtitle-color);\n}\n\n/* Process */\n.pa-card--process .pa-card__content {\n display: flex;\n flex-direction: column;\n gap: 24px;\n padding: 32px;\n min-width: 0;\n}\n\n.pa-card--process.pa-card--light {\n --pa-card-title-color: var(--pa-color-text-secondary-gray);\n}\n\n.pa-card--process .pa-card__subtitle,\n.pa-card--process .pa-card__signature {\n display: none;\n}\n\n.pa-card--process .pa-card__footer {\n padding-top: 24px;\n}\n\n.pa-card--process .pa-card__header-leading :deep(svg) {\n width: 32px;\n height: 32px;\n}\n\n@container (max-width: 720px) {\n .pa-card--landscape .pa-card__layout {\n grid-template-columns: 1fr;\n }\n\n .pa-card--landscape .pa-card__image-cell {\n width: 100%;\n height: auto;\n }\n\n .pa-card--landscape .pa-card__image-cell :deep(.pa-image) {\n aspect-ratio: 3 / 2 !important;\n }\n\n .pa-card--landscape .pa-card__content {\n padding: 24px;\n }\n\n .pa-card--landscape .pa-card__title {\n font-size: 24px;\n line-height: 28px;\n letter-spacing: -0.5px;\n }\n}\n</style>\n"],"names":["cardUid","nextCardId","props","__props","resolvedRatio","computed","slots","useSlots","titleId","hasTitle","hasSubtitle","hasBody","hasSignature","hasHeaderLeading","hasHeaderTrailing","hasHeader","hasTitleBlock","labelledBy","titleTag","_createElementBlock","_normalizeClass","_createElementVNode","_hoisted_2","_openBlock","_hoisted_3","_createVNode","PaImage","_hoisted_4","_hoisted_5","_hoisted_6","_renderSlot","_ctx","_createBlock","PaIcon","PaTag","_hoisted_7","_hoisted_8","_resolveDynamicComponent","_hoisted_9","_hoisted_10","_hoisted_11","_toDisplayString","_hoisted_12","$slots","_hoisted_13"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PaCard.vue2.js","sources":["../../../src/components/PaCard/PaCard.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, useId, useSlots } from 'vue'\nimport PaIcon from '../PaIcon/PaIcon.vue'\nimport PaImage from '../PaImage/PaImage.vue'\nimport PaTag from '../PaTag/PaTag.vue'\nimport type { PaImageRatio } from '../PaImage/PaImage.vue'\nimport type { PaIconName } from '../PaIcon/PaIcon.vue'\n\nexport type PaCardTypology = 'landscape' | 'portrait' | 'process'\nexport type PaCardVariant = 'light' | 'dark'\n\nexport interface PaCardProps {\n typology?: PaCardTypology\n variant?: PaCardVariant\n title?: string\n titleLevel?: 1 | 2 | 3 | 4 | 5 | 6\n subtitle?: string\n body?: string\n signature?: string\n date?: string\n category?: string\n categoryIcon?: PaIconName\n imageSrc?: string\n imageAlt?: string\n imageRatio?: PaImageRatio\n}\n\nconst props = withDefaults(defineProps<PaCardProps>(), {\n typology: 'portrait',\n variant: 'light',\n titleLevel: 3,\n imageAlt: '',\n})\n\nconst resolvedRatio = computed<PaImageRatio>(\n () => props.imageRatio ?? (props.typology === 'landscape' ? '1:1' : '3:2'),\n)\n\nconst slots = useSlots()\n\nconst titleId = `pa-card-${useId()}__title`\n\nconst hasTitle = computed(() => !!slots.title || !!props.title)\nconst hasSubtitle = computed(() => !!slots.subtitle || !!props.subtitle)\nconst hasBody = computed(() => !!slots.body || !!props.body)\nconst hasSignature = computed(() => !!slots.signature || !!props.signature)\nconst hasHeaderLeading = computed(\n () => !!slots['header-leading'] || !!props.category || !!props.categoryIcon,\n)\nconst hasHeaderTrailing = computed(\n () => !!slots['header-trailing'] || !!props.date,\n)\nconst hasHeader = computed(() => hasHeaderLeading.value || hasHeaderTrailing.value)\nconst hasTitleBlock = computed(() => hasTitle.value || hasSubtitle.value)\nconst labelledBy = computed(() => (hasTitle.value ? titleId : undefined))\nconst titleTag = computed(() => `h${props.titleLevel}` as const)\n</script>\n\n<template>\n <article class=\"pa-card\"\n :class=\"[`pa-card--${typology}`, `pa-card--${variant}`]\"\n :aria-labelledby=\"labelledBy\">\n <div class=\"pa-card__layout\">\n <div v-if=\"imageSrc && typology !== 'process'\"\n class=\"pa-card__image-cell\">\n <PaImage :src=\"imageSrc\"\n :alt=\"imageAlt\"\n :ratio=\"resolvedRatio\" />\n </div>\n\n <div class=\"pa-card__content\">\n <div v-if=\"hasHeader\"\n class=\"pa-card__header\">\n <div v-if=\"hasHeaderLeading\"\n class=\"pa-card__header-leading\">\n <slot name=\"header-leading\">\n <PaIcon v-if=\"categoryIcon\"\n :name=\"categoryIcon\"\n size=\"lg\" />\n <PaTag v-else-if=\"category\"\n variant=\"info\"\n :label=\"category\" />\n </slot>\n </div>\n <div v-if=\"hasHeaderTrailing\"\n class=\"pa-card__header-trailing\">\n <slot name=\"header-trailing\">{{ date }}</slot>\n </div>\n </div>\n\n <div v-if=\"hasTitleBlock\"\n class=\"pa-card__title-block\">\n <component :is=\"titleTag\"\n v-if=\"hasTitle\"\n :id=\"titleId\"\n class=\"pa-card__title\">\n <slot name=\"title\">{{ title }}</slot>\n </component>\n <p v-if=\"hasSubtitle\"\n class=\"pa-card__subtitle\">\n <slot name=\"subtitle\">{{ subtitle }}</slot>\n </p>\n </div>\n\n <div v-if=\"hasBody\"\n class=\"pa-card__body\">\n <slot name=\"body\">\n <p class=\"pa-card__body-text\">{{ body }}</p>\n </slot>\n </div>\n\n <p v-if=\"hasSignature\"\n class=\"pa-card__signature\">\n <slot name=\"signature\">{{ signature }}</slot>\n </p>\n\n <div v-if=\"$slots.footer\"\n class=\"pa-card__footer\">\n <slot name=\"footer\" />\n </div>\n </div>\n </div>\n </article>\n</template>\n\n<style scoped>\n.pa-card {\n display: block;\n background-color: var(--pa-card-bg);\n border-radius: var(--pa-radius-smooth);\n box-shadow: var(--pa-shadow-elevation-01);\n overflow: hidden;\n container-type: inline-size;\n}\n\n.pa-card__layout {\n display: flex;\n flex-direction: column;\n}\n\n.pa-card--light {\n --pa-card-bg: var(--pa-color-bg-white);\n --pa-card-title-color: var(--pa-color-primary);\n --pa-card-body-color: var(--pa-color-text-secondary-gray);\n --pa-card-date-color: var(--pa-color-text-secondary-gray);\n --pa-card-signature-color: var(--pa-color-text-secondary-gray);\n --pa-card-subtitle-color: var(--pa-color-text-secondary-gray);\n --pa-card-action-color: var(--pa-color-primary);\n}\n\n.pa-card--dark {\n --pa-card-bg: var(--pa-color-bg-primary-dark-115);\n --pa-card-title-color: var(--pa-color-bg-white);\n --pa-card-body-color: var(--pa-color-bg-white);\n --pa-card-date-color: var(--pa-color-bg-white);\n --pa-card-signature-color: var(--pa-color-bg-white);\n --pa-card-subtitle-color: var(--pa-color-bg-white);\n --pa-card-action-color: var(--pa-color-accent);\n}\n\n.pa-card--process.pa-card--dark {\n --pa-card-title-color: var(--pa-color-bg-white);\n}\n\n.pa-card--portrait .pa-card__image-cell {\n width: 100%;\n}\n\n.pa-card--portrait .pa-card__content {\n display: flex;\n flex-direction: column;\n gap: 24px;\n padding: 32px;\n min-width: 0;\n}\n\n.pa-card__header {\n display: flex;\n align-items: center;\n gap: 16px;\n width: 100%;\n}\n\n.pa-card__header-leading {\n flex: 1 0 0;\n min-width: 0;\n}\n\n.pa-card__header-trailing {\n flex: 0 0 auto;\n font-family: var(--pa-font-family-mono);\n font-weight: 400;\n font-size: 16px;\n line-height: 18px;\n color: var(--pa-card-date-color);\n}\n\n.pa-card__title-block {\n display: flex;\n flex-direction: column;\n gap: 8px;\n width: 100%;\n}\n\n.pa-card__title {\n margin: 0;\n font-family: var(--pa-font-family-base);\n font-weight: 700;\n font-size: 24px;\n line-height: 28px;\n letter-spacing: -0.5px;\n color: var(--pa-card-title-color);\n}\n\n.pa-card--portrait .pa-card__subtitle {\n margin: 0;\n font-family: var(--pa-font-family-base);\n font-weight: 600;\n font-size: 18px;\n line-height: 22px;\n letter-spacing: -0.5px;\n color: var(--pa-card-subtitle-color);\n}\n\n.pa-card__body,\n.pa-card__body-text {\n margin: 0;\n font-family: var(--pa-font-family-base);\n font-weight: 400;\n font-size: 16px;\n line-height: 20px;\n color: var(--pa-card-body-color);\n}\n\n.pa-card__signature {\n margin: 0;\n font-family: var(--pa-font-family-mono);\n font-weight: 400;\n font-size: 16px;\n line-height: 18px;\n color: var(--pa-card-signature-color);\n}\n\n.pa-card__footer {\n display: flex;\n align-items: center;\n gap: 12px;\n width: 100%;\n}\n\n/* Landscape */\n.pa-card--landscape .pa-card__layout {\n display: grid;\n grid-template-columns: 370px 1fr;\n align-items: stretch;\n}\n\n.pa-card--landscape .pa-card__image-cell {\n width: auto;\n height: 100%;\n}\n\n.pa-card--landscape .pa-card__content {\n display: flex;\n flex-direction: column;\n min-width: 0;\n gap: 24px;\n padding: 32px 48px;\n}\n\n.pa-card--landscape .pa-card__title {\n font-size: 32px;\n line-height: 36px;\n letter-spacing: -1px;\n}\n\n.pa-card--landscape .pa-card__subtitle {\n margin: 0;\n font-family: var(--pa-font-family-base);\n font-weight: 600;\n font-size: 20px;\n line-height: 24px;\n letter-spacing: -0.5px;\n color: var(--pa-card-subtitle-color);\n}\n\n/* Process */\n.pa-card--process .pa-card__content {\n display: flex;\n flex-direction: column;\n gap: 24px;\n padding: 32px;\n min-width: 0;\n}\n\n.pa-card--process.pa-card--light {\n --pa-card-title-color: var(--pa-color-text-secondary-gray);\n}\n\n.pa-card--process .pa-card__subtitle,\n.pa-card--process .pa-card__signature {\n display: none;\n}\n\n.pa-card--process .pa-card__footer {\n padding-top: 24px;\n}\n\n.pa-card--process .pa-card__header-leading :deep(svg) {\n width: 32px;\n height: 32px;\n}\n\n@container (max-width: 720px) {\n .pa-card--landscape .pa-card__layout {\n grid-template-columns: 1fr;\n }\n\n .pa-card--landscape .pa-card__image-cell {\n width: 100%;\n height: auto;\n }\n\n .pa-card--landscape .pa-card__image-cell :deep(.pa-image) {\n aspect-ratio: 3 / 2 !important;\n }\n\n .pa-card--landscape .pa-card__content {\n padding: 24px;\n }\n\n .pa-card--landscape .pa-card__title {\n font-size: 24px;\n line-height: 28px;\n letter-spacing: -0.5px;\n }\n}\n</style>\n"],"names":["props","__props","resolvedRatio","computed","slots","useSlots","titleId","useId","hasTitle","hasSubtitle","hasBody","hasSignature","hasHeaderLeading","hasHeaderTrailing","hasHeader","hasTitleBlock","labelledBy","titleTag","_createElementBlock","_normalizeClass","_createElementVNode","_hoisted_2","_openBlock","_hoisted_3","_createVNode","PaImage","_hoisted_4","_hoisted_5","_hoisted_6","_renderSlot","_ctx","_createBlock","PaIcon","PaTag","_hoisted_7","_hoisted_8","_resolveDynamicComponent","_hoisted_9","_hoisted_10","_hoisted_11","_toDisplayString","_hoisted_12","$slots","_hoisted_13"],"mappings":"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"}
|