@lluc_llull/ui-lib 0.34.0 → 0.34.2

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.
@@ -25,8 +25,8 @@ var ColumnsFooterComponent = class ColumnsFooterComponent {
25
25
  },
26
26
  host: { styleAttribute: "display: contents" },
27
27
  ngImport: i0,
28
- template: "<div class=\"columns-footer-wrapper col-span-full\">\n <div class=\"columns-footer main-grid col-span-full sm:col-span-12 sm:col-start-1\">\n @if (columns?.[0]; as column1) {\n <div class=\"columns-footer__one col-span-full sm:col-span-3 sm:col-start-1\">\n @if (column1.title) {\n <h4 class=\"columns-footer__one-title\">\n {{ column1.title }}\n </h4>\n }\n @if (column1.items && column1.items.length > 0) {\n <ul class=\"columns-footer__one-list\">\n @for (item of column1.items; track $index) {\n <li class=\"columns-footer__one-item\">\n <a [href]=\"item.url\" [linkType]=\"item.linkType\">{{ item.label }}</a>\n </li>\n }\n </ul>\n }\n </div>\n }\n @if (columns?.[1]; as column2) {\n <div class=\"columns-footer__two col-span-full sm:col-span-6 sm:col-start-4\">\n @if (column2.title) {\n <h4 class=\"columns-footer__two-title\">\n {{ column2.title }}\n </h4>\n }\n @if (column2.items && column2.items.length > 0) {\n <ul class=\"columns-footer__two-list\">\n @for (item of column2.items; track $index) {\n <li class=\"columns-footer__two-item\">\n <a [href]=\"item.url\" [linkType]=\"item.linkType\">{{ item.label }}</a>\n </li>\n }\n </ul>\n }\n </div>\n }\n @if (columns?.[2]; as column3) {\n <div class=\"columns-footer__three col-span-full sm:col-span-3 sm:col-start-10\">\n @if (column3.title) {\n <h4 class=\"columns-footer__three-title\">\n {{ column3.title }}\n </h4>\n }\n @if (column3.items && column3.items.length > 0) {\n <ul class=\"columns-footer__three-list\">\n @for (item of column3.items; track $index) {\n <li class=\"columns-footer__three-item\" [class.mt-separator]=\"$index > 0 && item.linkType !== column3.items[$index - 1].linkType\">\n <a [href]=\"item.url\" [linkType]=\"item.linkType\">{{ item.label }}</a>\n </li>\n }\n </ul>\n }\n </div>\n }\n </div>\n <div class=\"columns-footer__copyright col-span-full sm:col-span-12 sm:col-start-1\">\n @if (copyright) {\n <div class=\"columns-footer__copyright-text\">\n <span>{{ copyright.year }}</span>\n <span>{{ copyright.name }}</span>\n <span>{{ copyright.rights }}</span>\n </div>\n }\n </div>\n</div>\n",
29
- styles: [".columns-footer-wrapper{background-color:var(--content-bg-dark);margin-left:calc(-50vw + 50%);margin-right:calc(-50vw + 50%);padding-left:calc(50vw - 50%);padding-right:calc(50vw - 50%)}.columns-footer-wrapper .columns-footer__one-title{color:var(--text-secondary)}.columns-footer-wrapper .columns-footer__one-item a{color:var(--text-secondary-70);text-transform:capitalize;font-size:1.1rem}.columns-footer-wrapper .columns-footer__one-item a:hover{color:var(--text-secondary)}.columns-footer-wrapper .columns-footer__two{justify-items:center}@media(max-width:480px){.columns-footer-wrapper .columns-footer__two{justify-items:start}}.columns-footer-wrapper .columns-footer__two-title{color:var(--text-secondary)}.columns-footer-wrapper .columns-footer__two-item{margin-bottom:1rem;justify-items:center;justify-self:center}@media(max-width:480px){.columns-footer-wrapper .columns-footer__two-item{justify-items:start;justify-self:start}}.columns-footer-wrapper .columns-footer__two-item a{color:var(--text-secondary-70);text-transform:uppercase;font-size:1.1rem}.columns-footer-wrapper .columns-footer__two-item a:hover,.columns-footer-wrapper .columns-footer__three-title{color:var(--text-secondary)}.columns-footer-wrapper .columns-footer__three-item.mt-separator{margin-top:1.5rem}.columns-footer-wrapper .columns-footer__three-item a{color:var(--text-secondary-70);text-decoration:none;font-size:1.1rem;display:inline-block;padding-bottom:2px;background-image:linear-gradient(var(--text-secondary-70),var(--text-secondary-70));background-size:100% 1px;background-position:0% 100%;background-repeat:no-repeat;transition:background-size .3s ease-in-out,background-position .3s ease-in-out}.columns-footer-wrapper .columns-footer__three-item a:hover{background-size:0% 1px;background-position:100% 100%;animation:linkMove .4s forwards}@keyframes linkMove{0%{background-size:100% 1px;background-position:0% 100%}50%{background-size:0% 1px;background-position:100% 100%}51%{background-size:0% 1px;background-position:0% 100%}to{background-size:100% 1px;background-position:0% 100%}}.columns-footer-wrapper .columns-footer__copyright-text{display:flex;flex-direction:column;align-items:center;margin-block:6rem 2rem;color:var(--text-secondary-70)}\n"],
28
+ template: "<div class=\"columns-footer-wrapper col-span-full\">\n <div class=\"columns-footer main-grid col-span-full sm:col-span-12 sm:col-start-1\">\n @if (columns?.[0]; as column1) {\n <div class=\"columns-footer__one col-span-full sm:col-span-3 sm:col-start-1\">\n @if (column1.title) {\n <h4 class=\"columns-footer__one-title\">\n {{ column1.title }}\n </h4>\n }\n @if (column1.items && column1.items.length > 0) {\n <ul class=\"columns-footer__one-list\">\n @for (item of column1.items; track $index) {\n <li class=\"columns-footer__one-item\">\n <a [href]=\"item.url\" [linkType]=\"item.linkType\">{{ item.label }}</a>\n </li>\n }\n </ul>\n }\n </div>\n }\n @if (columns?.[1]; as column2) {\n <div class=\"columns-footer__two col-span-full sm:col-span-6 sm:col-start-4\">\n @if (column2.title) {\n <h4 class=\"columns-footer__two-title\">\n {{ column2.title }}\n </h4>\n }\n @if (column2.items && column2.items.length > 0) {\n <ul class=\"columns-footer__two-list\">\n @for (item of column2.items; track $index) {\n <li class=\"columns-footer__two-item\">\n <a [href]=\"item.url\" [linkType]=\"item.linkType\">{{ item.label }}</a>\n </li>\n }\n </ul>\n }\n </div>\n }\n @if (columns?.[2]; as column3) {\n <div class=\"columns-footer__three col-span-full sm:col-span-3 sm:col-start-10\">\n @if (column3.title) {\n <h4 class=\"columns-footer__three-title\">\n {{ column3.title }}\n </h4>\n }\n @if (column3.items && column3.items.length > 0) {\n <ul class=\"columns-footer__three-list\">\n @for (item of column3.items; track $index) {\n <li class=\"columns-footer__three-item\" [class.mt-separator]=\"$index > 0 && item.linkType !== column3.items[$index - 1].linkType\">\n <a [href]=\"item.url\" [linkType]=\"item.linkType\">{{ item.label }}</a>\n </li>\n }\n </ul>\n }\n </div>\n }\n </div>\n <div class=\"columns-footer__copyright col-span-full sm:col-span-12 sm:col-start-1\">\n @if (copyright) {\n <div class=\"columns-footer__copyright-text\">\n <span>{{ copyright.year }}</span>\n <span>{{ copyright.name }}</span>\n <span>{{ copyright.rights }}</span>\n </div>\n }\n </div>\n @if (copyright?.name; as signature) {\n <div class=\"columns-footer__signature\" aria-label=\"{{ signature }}\">\n @let signatureParts = signature.split(' ');\n <span>\n <em>{{ signatureParts[0] }}</em>\n <strong>{{ signatureParts[1] }}</strong>\n </span>\n </div>\n }\n</div>\n",
29
+ styles: [".columns-footer-wrapper{background-color:var(--content-bg-dark);margin-left:calc(-50vw + 50%);margin-right:calc(-50vw + 50%);padding-left:calc(50vw - 50%);padding-right:calc(50vw - 50%)}.columns-footer-wrapper .columns-footer__one-title{color:var(--text-secondary)}.columns-footer-wrapper .columns-footer__one-item a{color:var(--text-secondary-70);text-transform:capitalize;font-size:1.1rem}.columns-footer-wrapper .columns-footer__one-item a:hover{color:var(--text-secondary)}.columns-footer-wrapper .columns-footer__two{justify-items:center}@media(max-width:480px){.columns-footer-wrapper .columns-footer__two{justify-items:start}}.columns-footer-wrapper .columns-footer__two-title{color:var(--text-secondary)}.columns-footer-wrapper .columns-footer__two-item{margin-bottom:1rem;justify-items:center;justify-self:center}@media(max-width:480px){.columns-footer-wrapper .columns-footer__two-item{justify-items:start;justify-self:start}}.columns-footer-wrapper .columns-footer__two-item a{color:var(--text-secondary-70);text-transform:uppercase;font-size:1.1rem}.columns-footer-wrapper .columns-footer__two-item a:hover,.columns-footer-wrapper .columns-footer__three-title{color:var(--text-secondary)}.columns-footer-wrapper .columns-footer__three-item.mt-separator{margin-top:1.5rem}.columns-footer-wrapper .columns-footer__three-item a{color:var(--text-secondary-70);text-decoration:none;font-size:1.1rem;display:inline-block;padding-bottom:2px;background-image:linear-gradient(var(--text-secondary-70),var(--text-secondary-70));background-size:100% 1px;background-position:0% 100%;background-repeat:no-repeat;transition:background-size .3s ease-in-out,background-position .3s ease-in-out}.columns-footer-wrapper .columns-footer__three-item a:hover{background-size:0% 1px;background-position:100% 100%;animation:linkMove .4s forwards}@keyframes linkMove{0%{background-size:100% 1px;background-position:0% 100%}50%{background-size:0% 1px;background-position:100% 100%}51%{background-size:0% 1px;background-position:0% 100%}to{background-size:100% 1px;background-position:0% 100%}}.columns-footer-wrapper .columns-footer__copyright-text{display:flex;flex-direction:column;align-items:center;margin-block:6rem 2rem;color:var(--text-secondary-70)}.columns-footer-wrapper .columns-footer__signature{width:100%;overflow:hidden;color:var(--text-secondary-70);line-height:.72;text-align:center;-webkit-user-select:none;user-select:none}@media(max-width:480px){.columns-footer-wrapper .columns-footer__signature{padding-bottom:4rem}}.columns-footer-wrapper .columns-footer__signature span{display:block;width:max-content;margin-inline:auto;font-size:clamp(5rem,22vw,21rem);font-weight:900;white-space:nowrap}.columns-footer-wrapper .columns-footer__signature span em{font-style:italic;margin-right:5rem}@media(max-width:480px){.columns-footer-wrapper .columns-footer__signature span em{margin-right:1rem}}.columns-footer-wrapper .columns-footer__signature span strong{font-style:normal}\n"],
30
30
  dependencies: [{
31
31
  kind: "ngmodule",
32
32
  type: CommonModule
@@ -52,8 +52,8 @@ i0.ɵɵngDeclareClassMetadata({
52
52
  imports: [CommonModule, LinkTypeDirective],
53
53
  changeDetection: ChangeDetectionStrategy.OnPush,
54
54
  host: { style: "display: contents" },
55
- template: "<div class=\"columns-footer-wrapper col-span-full\">\n <div class=\"columns-footer main-grid col-span-full sm:col-span-12 sm:col-start-1\">\n @if (columns?.[0]; as column1) {\n <div class=\"columns-footer__one col-span-full sm:col-span-3 sm:col-start-1\">\n @if (column1.title) {\n <h4 class=\"columns-footer__one-title\">\n {{ column1.title }}\n </h4>\n }\n @if (column1.items && column1.items.length > 0) {\n <ul class=\"columns-footer__one-list\">\n @for (item of column1.items; track $index) {\n <li class=\"columns-footer__one-item\">\n <a [href]=\"item.url\" [linkType]=\"item.linkType\">{{ item.label }}</a>\n </li>\n }\n </ul>\n }\n </div>\n }\n @if (columns?.[1]; as column2) {\n <div class=\"columns-footer__two col-span-full sm:col-span-6 sm:col-start-4\">\n @if (column2.title) {\n <h4 class=\"columns-footer__two-title\">\n {{ column2.title }}\n </h4>\n }\n @if (column2.items && column2.items.length > 0) {\n <ul class=\"columns-footer__two-list\">\n @for (item of column2.items; track $index) {\n <li class=\"columns-footer__two-item\">\n <a [href]=\"item.url\" [linkType]=\"item.linkType\">{{ item.label }}</a>\n </li>\n }\n </ul>\n }\n </div>\n }\n @if (columns?.[2]; as column3) {\n <div class=\"columns-footer__three col-span-full sm:col-span-3 sm:col-start-10\">\n @if (column3.title) {\n <h4 class=\"columns-footer__three-title\">\n {{ column3.title }}\n </h4>\n }\n @if (column3.items && column3.items.length > 0) {\n <ul class=\"columns-footer__three-list\">\n @for (item of column3.items; track $index) {\n <li class=\"columns-footer__three-item\" [class.mt-separator]=\"$index > 0 && item.linkType !== column3.items[$index - 1].linkType\">\n <a [href]=\"item.url\" [linkType]=\"item.linkType\">{{ item.label }}</a>\n </li>\n }\n </ul>\n }\n </div>\n }\n </div>\n <div class=\"columns-footer__copyright col-span-full sm:col-span-12 sm:col-start-1\">\n @if (copyright) {\n <div class=\"columns-footer__copyright-text\">\n <span>{{ copyright.year }}</span>\n <span>{{ copyright.name }}</span>\n <span>{{ copyright.rights }}</span>\n </div>\n }\n </div>\n</div>\n",
56
- styles: [".columns-footer-wrapper{background-color:var(--content-bg-dark);margin-left:calc(-50vw + 50%);margin-right:calc(-50vw + 50%);padding-left:calc(50vw - 50%);padding-right:calc(50vw - 50%)}.columns-footer-wrapper .columns-footer__one-title{color:var(--text-secondary)}.columns-footer-wrapper .columns-footer__one-item a{color:var(--text-secondary-70);text-transform:capitalize;font-size:1.1rem}.columns-footer-wrapper .columns-footer__one-item a:hover{color:var(--text-secondary)}.columns-footer-wrapper .columns-footer__two{justify-items:center}@media(max-width:480px){.columns-footer-wrapper .columns-footer__two{justify-items:start}}.columns-footer-wrapper .columns-footer__two-title{color:var(--text-secondary)}.columns-footer-wrapper .columns-footer__two-item{margin-bottom:1rem;justify-items:center;justify-self:center}@media(max-width:480px){.columns-footer-wrapper .columns-footer__two-item{justify-items:start;justify-self:start}}.columns-footer-wrapper .columns-footer__two-item a{color:var(--text-secondary-70);text-transform:uppercase;font-size:1.1rem}.columns-footer-wrapper .columns-footer__two-item a:hover,.columns-footer-wrapper .columns-footer__three-title{color:var(--text-secondary)}.columns-footer-wrapper .columns-footer__three-item.mt-separator{margin-top:1.5rem}.columns-footer-wrapper .columns-footer__three-item a{color:var(--text-secondary-70);text-decoration:none;font-size:1.1rem;display:inline-block;padding-bottom:2px;background-image:linear-gradient(var(--text-secondary-70),var(--text-secondary-70));background-size:100% 1px;background-position:0% 100%;background-repeat:no-repeat;transition:background-size .3s ease-in-out,background-position .3s ease-in-out}.columns-footer-wrapper .columns-footer__three-item a:hover{background-size:0% 1px;background-position:100% 100%;animation:linkMove .4s forwards}@keyframes linkMove{0%{background-size:100% 1px;background-position:0% 100%}50%{background-size:0% 1px;background-position:100% 100%}51%{background-size:0% 1px;background-position:0% 100%}to{background-size:100% 1px;background-position:0% 100%}}.columns-footer-wrapper .columns-footer__copyright-text{display:flex;flex-direction:column;align-items:center;margin-block:6rem 2rem;color:var(--text-secondary-70)}\n"]
55
+ template: "<div class=\"columns-footer-wrapper col-span-full\">\n <div class=\"columns-footer main-grid col-span-full sm:col-span-12 sm:col-start-1\">\n @if (columns?.[0]; as column1) {\n <div class=\"columns-footer__one col-span-full sm:col-span-3 sm:col-start-1\">\n @if (column1.title) {\n <h4 class=\"columns-footer__one-title\">\n {{ column1.title }}\n </h4>\n }\n @if (column1.items && column1.items.length > 0) {\n <ul class=\"columns-footer__one-list\">\n @for (item of column1.items; track $index) {\n <li class=\"columns-footer__one-item\">\n <a [href]=\"item.url\" [linkType]=\"item.linkType\">{{ item.label }}</a>\n </li>\n }\n </ul>\n }\n </div>\n }\n @if (columns?.[1]; as column2) {\n <div class=\"columns-footer__two col-span-full sm:col-span-6 sm:col-start-4\">\n @if (column2.title) {\n <h4 class=\"columns-footer__two-title\">\n {{ column2.title }}\n </h4>\n }\n @if (column2.items && column2.items.length > 0) {\n <ul class=\"columns-footer__two-list\">\n @for (item of column2.items; track $index) {\n <li class=\"columns-footer__two-item\">\n <a [href]=\"item.url\" [linkType]=\"item.linkType\">{{ item.label }}</a>\n </li>\n }\n </ul>\n }\n </div>\n }\n @if (columns?.[2]; as column3) {\n <div class=\"columns-footer__three col-span-full sm:col-span-3 sm:col-start-10\">\n @if (column3.title) {\n <h4 class=\"columns-footer__three-title\">\n {{ column3.title }}\n </h4>\n }\n @if (column3.items && column3.items.length > 0) {\n <ul class=\"columns-footer__three-list\">\n @for (item of column3.items; track $index) {\n <li class=\"columns-footer__three-item\" [class.mt-separator]=\"$index > 0 && item.linkType !== column3.items[$index - 1].linkType\">\n <a [href]=\"item.url\" [linkType]=\"item.linkType\">{{ item.label }}</a>\n </li>\n }\n </ul>\n }\n </div>\n }\n </div>\n <div class=\"columns-footer__copyright col-span-full sm:col-span-12 sm:col-start-1\">\n @if (copyright) {\n <div class=\"columns-footer__copyright-text\">\n <span>{{ copyright.year }}</span>\n <span>{{ copyright.name }}</span>\n <span>{{ copyright.rights }}</span>\n </div>\n }\n </div>\n @if (copyright?.name; as signature) {\n <div class=\"columns-footer__signature\" aria-label=\"{{ signature }}\">\n @let signatureParts = signature.split(' ');\n <span>\n <em>{{ signatureParts[0] }}</em>\n <strong>{{ signatureParts[1] }}</strong>\n </span>\n </div>\n }\n</div>\n",
56
+ styles: [".columns-footer-wrapper{background-color:var(--content-bg-dark);margin-left:calc(-50vw + 50%);margin-right:calc(-50vw + 50%);padding-left:calc(50vw - 50%);padding-right:calc(50vw - 50%)}.columns-footer-wrapper .columns-footer__one-title{color:var(--text-secondary)}.columns-footer-wrapper .columns-footer__one-item a{color:var(--text-secondary-70);text-transform:capitalize;font-size:1.1rem}.columns-footer-wrapper .columns-footer__one-item a:hover{color:var(--text-secondary)}.columns-footer-wrapper .columns-footer__two{justify-items:center}@media(max-width:480px){.columns-footer-wrapper .columns-footer__two{justify-items:start}}.columns-footer-wrapper .columns-footer__two-title{color:var(--text-secondary)}.columns-footer-wrapper .columns-footer__two-item{margin-bottom:1rem;justify-items:center;justify-self:center}@media(max-width:480px){.columns-footer-wrapper .columns-footer__two-item{justify-items:start;justify-self:start}}.columns-footer-wrapper .columns-footer__two-item a{color:var(--text-secondary-70);text-transform:uppercase;font-size:1.1rem}.columns-footer-wrapper .columns-footer__two-item a:hover,.columns-footer-wrapper .columns-footer__three-title{color:var(--text-secondary)}.columns-footer-wrapper .columns-footer__three-item.mt-separator{margin-top:1.5rem}.columns-footer-wrapper .columns-footer__three-item a{color:var(--text-secondary-70);text-decoration:none;font-size:1.1rem;display:inline-block;padding-bottom:2px;background-image:linear-gradient(var(--text-secondary-70),var(--text-secondary-70));background-size:100% 1px;background-position:0% 100%;background-repeat:no-repeat;transition:background-size .3s ease-in-out,background-position .3s ease-in-out}.columns-footer-wrapper .columns-footer__three-item a:hover{background-size:0% 1px;background-position:100% 100%;animation:linkMove .4s forwards}@keyframes linkMove{0%{background-size:100% 1px;background-position:0% 100%}50%{background-size:0% 1px;background-position:100% 100%}51%{background-size:0% 1px;background-position:0% 100%}to{background-size:100% 1px;background-position:0% 100%}}.columns-footer-wrapper .columns-footer__copyright-text{display:flex;flex-direction:column;align-items:center;margin-block:6rem 2rem;color:var(--text-secondary-70)}.columns-footer-wrapper .columns-footer__signature{width:100%;overflow:hidden;color:var(--text-secondary-70);line-height:.72;text-align:center;-webkit-user-select:none;user-select:none}@media(max-width:480px){.columns-footer-wrapper .columns-footer__signature{padding-bottom:4rem}}.columns-footer-wrapper .columns-footer__signature span{display:block;width:max-content;margin-inline:auto;font-size:clamp(5rem,22vw,21rem);font-weight:900;white-space:nowrap}.columns-footer-wrapper .columns-footer__signature span em{font-style:italic;margin-right:5rem}@media(max-width:480px){.columns-footer-wrapper .columns-footer__signature span em{margin-right:1rem}}.columns-footer-wrapper .columns-footer__signature span strong{font-style:normal}\n"]
57
57
  }]
58
58
  }],
59
59
  propDecorators: {
@@ -1 +1 @@
1
- {"version":3,"file":"lluc_llull-ui-lib-footers-columns-footer.mjs","names":[],"sources":["../../../projects/ui-lib/footers/columns-footer/columns-footer.component.ts","../../../projects/ui-lib/footers/columns-footer/columns-footer.component.html"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { LinkTypeDirective } from '@lluc_llull/ui-lib/directives';\nimport { UiLibButtonI } from '@lluc_llull/ui-lib/interfaces';\n\n@Component({\n selector: 'lib-columns-footer',\n imports: [CommonModule, LinkTypeDirective],\n templateUrl: './columns-footer.component.html',\n styleUrl: './columns-footer.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n style: 'display: contents',\n },\n})\nexport class ColumnsFooterComponent {\n @Input() columns?: ColumnsFooterItemI[];\n @Input() copyright?: ColumnsFooterCopyRightI;\n}\n\nexport interface ColumnsFooterItemI {\n title: string;\n items: UiLibButtonI[];\n}\n\nexport interface ColumnsFooterCopyRightI {\n year: string;\n name?: string;\n rights?: string;\n}\n","<div class=\"columns-footer-wrapper col-span-full\">\n <div class=\"columns-footer main-grid col-span-full sm:col-span-12 sm:col-start-1\">\n @if (columns?.[0]; as column1) {\n <div class=\"columns-footer__one col-span-full sm:col-span-3 sm:col-start-1\">\n @if (column1.title) {\n <h4 class=\"columns-footer__one-title\">\n {{ column1.title }}\n </h4>\n }\n @if (column1.items && column1.items.length > 0) {\n <ul class=\"columns-footer__one-list\">\n @for (item of column1.items; track $index) {\n <li class=\"columns-footer__one-item\">\n <a [href]=\"item.url\" [linkType]=\"item.linkType\">{{ item.label }}</a>\n </li>\n }\n </ul>\n }\n </div>\n }\n @if (columns?.[1]; as column2) {\n <div class=\"columns-footer__two col-span-full sm:col-span-6 sm:col-start-4\">\n @if (column2.title) {\n <h4 class=\"columns-footer__two-title\">\n {{ column2.title }}\n </h4>\n }\n @if (column2.items && column2.items.length > 0) {\n <ul class=\"columns-footer__two-list\">\n @for (item of column2.items; track $index) {\n <li class=\"columns-footer__two-item\">\n <a [href]=\"item.url\" [linkType]=\"item.linkType\">{{ item.label }}</a>\n </li>\n }\n </ul>\n }\n </div>\n }\n @if (columns?.[2]; as column3) {\n <div class=\"columns-footer__three col-span-full sm:col-span-3 sm:col-start-10\">\n @if (column3.title) {\n <h4 class=\"columns-footer__three-title\">\n {{ column3.title }}\n </h4>\n }\n @if (column3.items && column3.items.length > 0) {\n <ul class=\"columns-footer__three-list\">\n @for (item of column3.items; track $index) {\n <li class=\"columns-footer__three-item\" [class.mt-separator]=\"$index > 0 && item.linkType !== column3.items[$index - 1].linkType\">\n <a [href]=\"item.url\" [linkType]=\"item.linkType\">{{ item.label }}</a>\n </li>\n }\n </ul>\n }\n </div>\n }\n </div>\n <div class=\"columns-footer__copyright col-span-full sm:col-span-12 sm:col-start-1\">\n @if (copyright) {\n <div class=\"columns-footer__copyright-text\">\n <span>{{ copyright.year }}</span>\n <span>{{ copyright.name }}</span>\n <span>{{ copyright.rights }}</span>\n </div>\n }\n </div>\n</div>\n"],"mappings":";;;;AAeA,IAAa,yBAAb,MAAa,uBAAsB;CACxB;CACA;CAFE,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAsB,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAtB,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAsB,cAAA;EAAA,UAAA;EAAA,QAAA;GAAA,SAAA;GAAA,WAAA;EAAA;EAAA,MAAA,EAAA,gBAAA,oBAAA;EAAA,UAAA;EAAA,UCfnC;EAmEA,QAAA,CAAA,wsEAAA;EAAA,cAAA,CAAA;GAAA,MAAA;GAAA,MD5Dc;EAAY,GAAA;GAAA,MAAA;GAAA,MAAE;GAAiB,UAAA;GAAA,QAAA,CAAA,YAAA,MAAA;GAAA,SAAA,CAAA,eAAA;EAAA,CAAA;EAAA,iBAAA,GAAA,wBAAA;CAAA,CAAA;;AAQhC,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAsB,YAAA,CAAA;EAVlC,MAAA;EACa,MAAA,CAAA;GAAA,UAAA;GAAoB,SACrB,CAAC,cAAc,iBAAiB;GAAC,iBAGzB,wBAAwB;GAAM,MACzC,EACF,OAAO,oBACV;GAAA,UAAA;GAAA,QAAA,CAAA,wsEAAA;EAAA,CAAA;;;E,YAGF,MAAA,M;E,cACA,MAAA,M"}
1
+ {"version":3,"file":"lluc_llull-ui-lib-footers-columns-footer.mjs","names":[],"sources":["../../../projects/ui-lib/footers/columns-footer/columns-footer.component.ts","../../../projects/ui-lib/footers/columns-footer/columns-footer.component.html"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { LinkTypeDirective } from '@lluc_llull/ui-lib/directives';\nimport { UiLibButtonI } from '@lluc_llull/ui-lib/interfaces';\n\n@Component({\n selector: 'lib-columns-footer',\n imports: [CommonModule, LinkTypeDirective],\n templateUrl: './columns-footer.component.html',\n styleUrl: './columns-footer.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n style: 'display: contents',\n },\n})\nexport class ColumnsFooterComponent {\n @Input() columns?: ColumnsFooterItemI[];\n @Input() copyright?: ColumnsFooterCopyRightI;\n}\n\nexport interface ColumnsFooterItemI {\n title: string;\n items: UiLibButtonI[];\n}\n\nexport interface ColumnsFooterCopyRightI {\n year: string;\n name?: string;\n rights?: string;\n}\n","<div class=\"columns-footer-wrapper col-span-full\">\n <div class=\"columns-footer main-grid col-span-full sm:col-span-12 sm:col-start-1\">\n @if (columns?.[0]; as column1) {\n <div class=\"columns-footer__one col-span-full sm:col-span-3 sm:col-start-1\">\n @if (column1.title) {\n <h4 class=\"columns-footer__one-title\">\n {{ column1.title }}\n </h4>\n }\n @if (column1.items && column1.items.length > 0) {\n <ul class=\"columns-footer__one-list\">\n @for (item of column1.items; track $index) {\n <li class=\"columns-footer__one-item\">\n <a [href]=\"item.url\" [linkType]=\"item.linkType\">{{ item.label }}</a>\n </li>\n }\n </ul>\n }\n </div>\n }\n @if (columns?.[1]; as column2) {\n <div class=\"columns-footer__two col-span-full sm:col-span-6 sm:col-start-4\">\n @if (column2.title) {\n <h4 class=\"columns-footer__two-title\">\n {{ column2.title }}\n </h4>\n }\n @if (column2.items && column2.items.length > 0) {\n <ul class=\"columns-footer__two-list\">\n @for (item of column2.items; track $index) {\n <li class=\"columns-footer__two-item\">\n <a [href]=\"item.url\" [linkType]=\"item.linkType\">{{ item.label }}</a>\n </li>\n }\n </ul>\n }\n </div>\n }\n @if (columns?.[2]; as column3) {\n <div class=\"columns-footer__three col-span-full sm:col-span-3 sm:col-start-10\">\n @if (column3.title) {\n <h4 class=\"columns-footer__three-title\">\n {{ column3.title }}\n </h4>\n }\n @if (column3.items && column3.items.length > 0) {\n <ul class=\"columns-footer__three-list\">\n @for (item of column3.items; track $index) {\n <li class=\"columns-footer__three-item\" [class.mt-separator]=\"$index > 0 && item.linkType !== column3.items[$index - 1].linkType\">\n <a [href]=\"item.url\" [linkType]=\"item.linkType\">{{ item.label }}</a>\n </li>\n }\n </ul>\n }\n </div>\n }\n </div>\n <div class=\"columns-footer__copyright col-span-full sm:col-span-12 sm:col-start-1\">\n @if (copyright) {\n <div class=\"columns-footer__copyright-text\">\n <span>{{ copyright.year }}</span>\n <span>{{ copyright.name }}</span>\n <span>{{ copyright.rights }}</span>\n </div>\n }\n </div>\n @if (copyright?.name; as signature) {\n <div class=\"columns-footer__signature\" aria-label=\"{{ signature }}\">\n @let signatureParts = signature.split(' ');\n <span>\n <em>{{ signatureParts[0] }}</em>\n <strong>{{ signatureParts[1] }}</strong>\n </span>\n </div>\n }\n</div>\n"],"mappings":";;;;AAeA,IAAa,yBAAb,MAAa,uBAAsB;CACxB;CACA;CAFE,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAsB,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAtB,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAsB,cAAA;EAAA,UAAA;EAAA,QAAA;GAAA,SAAA;GAAA,WAAA;EAAA;EAAA,MAAA,EAAA,gBAAA,oBAAA;EAAA,UAAA;EAAA,UCfnC;EA4EA,QAAA,CAAA,s6FAAA;EAAA,cAAA,CAAA;GAAA,MAAA;GAAA,MDrEc;EAAY,GAAA;GAAA,MAAA;GAAA,MAAE;GAAiB,UAAA;GAAA,QAAA,CAAA,YAAA,MAAA;GAAA,SAAA,CAAA,eAAA;EAAA,CAAA;EAAA,iBAAA,GAAA,wBAAA;CAAA,CAAA;;AAQhC,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAsB,YAAA,CAAA;EAVlC,MAAA;EACa,MAAA,CAAA;GAAA,UAAA;GAAoB,SACrB,CAAC,cAAc,iBAAiB;GAAC,iBAGzB,wBAAwB;GAAM,MACzC,EACF,OAAO,oBACV;GAAA,UAAA;GAAA,QAAA,CAAA,s6FAAA;EAAA,CAAA;;;E,YAGF,MAAA,M;E,cACA,MAAA,M"}
@@ -314,8 +314,8 @@ var ColumnsFooterComponent = class ColumnsFooterComponent {
314
314
  },
315
315
  host: { styleAttribute: "display: contents" },
316
316
  ngImport: i0,
317
- template: "<div class=\"columns-footer-wrapper col-span-full\">\n <div class=\"columns-footer main-grid col-span-full sm:col-span-12 sm:col-start-1\">\n @if (columns?.[0]; as column1) {\n <div class=\"columns-footer__one col-span-full sm:col-span-3 sm:col-start-1\">\n @if (column1.title) {\n <h4 class=\"columns-footer__one-title\">\n {{ column1.title }}\n </h4>\n }\n @if (column1.items && column1.items.length > 0) {\n <ul class=\"columns-footer__one-list\">\n @for (item of column1.items; track $index) {\n <li class=\"columns-footer__one-item\">\n <a [href]=\"item.url\" [linkType]=\"item.linkType\">{{ item.label }}</a>\n </li>\n }\n </ul>\n }\n </div>\n }\n @if (columns?.[1]; as column2) {\n <div class=\"columns-footer__two col-span-full sm:col-span-6 sm:col-start-4\">\n @if (column2.title) {\n <h4 class=\"columns-footer__two-title\">\n {{ column2.title }}\n </h4>\n }\n @if (column2.items && column2.items.length > 0) {\n <ul class=\"columns-footer__two-list\">\n @for (item of column2.items; track $index) {\n <li class=\"columns-footer__two-item\">\n <a [href]=\"item.url\" [linkType]=\"item.linkType\">{{ item.label }}</a>\n </li>\n }\n </ul>\n }\n </div>\n }\n @if (columns?.[2]; as column3) {\n <div class=\"columns-footer__three col-span-full sm:col-span-3 sm:col-start-10\">\n @if (column3.title) {\n <h4 class=\"columns-footer__three-title\">\n {{ column3.title }}\n </h4>\n }\n @if (column3.items && column3.items.length > 0) {\n <ul class=\"columns-footer__three-list\">\n @for (item of column3.items; track $index) {\n <li class=\"columns-footer__three-item\" [class.mt-separator]=\"$index > 0 && item.linkType !== column3.items[$index - 1].linkType\">\n <a [href]=\"item.url\" [linkType]=\"item.linkType\">{{ item.label }}</a>\n </li>\n }\n </ul>\n }\n </div>\n }\n </div>\n <div class=\"columns-footer__copyright col-span-full sm:col-span-12 sm:col-start-1\">\n @if (copyright) {\n <div class=\"columns-footer__copyright-text\">\n <span>{{ copyright.year }}</span>\n <span>{{ copyright.name }}</span>\n <span>{{ copyright.rights }}</span>\n </div>\n }\n </div>\n</div>\n",
318
- styles: [".columns-footer-wrapper{background-color:var(--content-bg-dark);margin-left:calc(-50vw + 50%);margin-right:calc(-50vw + 50%);padding-left:calc(50vw - 50%);padding-right:calc(50vw - 50%)}.columns-footer-wrapper .columns-footer__one-title{color:var(--text-secondary)}.columns-footer-wrapper .columns-footer__one-item a{color:var(--text-secondary-70);text-transform:capitalize;font-size:1.1rem}.columns-footer-wrapper .columns-footer__one-item a:hover{color:var(--text-secondary)}.columns-footer-wrapper .columns-footer__two{justify-items:center}@media(max-width:480px){.columns-footer-wrapper .columns-footer__two{justify-items:start}}.columns-footer-wrapper .columns-footer__two-title{color:var(--text-secondary)}.columns-footer-wrapper .columns-footer__two-item{margin-bottom:1rem;justify-items:center;justify-self:center}@media(max-width:480px){.columns-footer-wrapper .columns-footer__two-item{justify-items:start;justify-self:start}}.columns-footer-wrapper .columns-footer__two-item a{color:var(--text-secondary-70);text-transform:uppercase;font-size:1.1rem}.columns-footer-wrapper .columns-footer__two-item a:hover,.columns-footer-wrapper .columns-footer__three-title{color:var(--text-secondary)}.columns-footer-wrapper .columns-footer__three-item.mt-separator{margin-top:1.5rem}.columns-footer-wrapper .columns-footer__three-item a{color:var(--text-secondary-70);text-decoration:none;font-size:1.1rem;display:inline-block;padding-bottom:2px;background-image:linear-gradient(var(--text-secondary-70),var(--text-secondary-70));background-size:100% 1px;background-position:0% 100%;background-repeat:no-repeat;transition:background-size .3s ease-in-out,background-position .3s ease-in-out}.columns-footer-wrapper .columns-footer__three-item a:hover{background-size:0% 1px;background-position:100% 100%;animation:linkMove .4s forwards}@keyframes linkMove{0%{background-size:100% 1px;background-position:0% 100%}50%{background-size:0% 1px;background-position:100% 100%}51%{background-size:0% 1px;background-position:0% 100%}to{background-size:100% 1px;background-position:0% 100%}}.columns-footer-wrapper .columns-footer__copyright-text{display:flex;flex-direction:column;align-items:center;margin-block:6rem 2rem;color:var(--text-secondary-70)}\n"],
317
+ template: "<div class=\"columns-footer-wrapper col-span-full\">\n <div class=\"columns-footer main-grid col-span-full sm:col-span-12 sm:col-start-1\">\n @if (columns?.[0]; as column1) {\n <div class=\"columns-footer__one col-span-full sm:col-span-3 sm:col-start-1\">\n @if (column1.title) {\n <h4 class=\"columns-footer__one-title\">\n {{ column1.title }}\n </h4>\n }\n @if (column1.items && column1.items.length > 0) {\n <ul class=\"columns-footer__one-list\">\n @for (item of column1.items; track $index) {\n <li class=\"columns-footer__one-item\">\n <a [href]=\"item.url\" [linkType]=\"item.linkType\">{{ item.label }}</a>\n </li>\n }\n </ul>\n }\n </div>\n }\n @if (columns?.[1]; as column2) {\n <div class=\"columns-footer__two col-span-full sm:col-span-6 sm:col-start-4\">\n @if (column2.title) {\n <h4 class=\"columns-footer__two-title\">\n {{ column2.title }}\n </h4>\n }\n @if (column2.items && column2.items.length > 0) {\n <ul class=\"columns-footer__two-list\">\n @for (item of column2.items; track $index) {\n <li class=\"columns-footer__two-item\">\n <a [href]=\"item.url\" [linkType]=\"item.linkType\">{{ item.label }}</a>\n </li>\n }\n </ul>\n }\n </div>\n }\n @if (columns?.[2]; as column3) {\n <div class=\"columns-footer__three col-span-full sm:col-span-3 sm:col-start-10\">\n @if (column3.title) {\n <h4 class=\"columns-footer__three-title\">\n {{ column3.title }}\n </h4>\n }\n @if (column3.items && column3.items.length > 0) {\n <ul class=\"columns-footer__three-list\">\n @for (item of column3.items; track $index) {\n <li class=\"columns-footer__three-item\" [class.mt-separator]=\"$index > 0 && item.linkType !== column3.items[$index - 1].linkType\">\n <a [href]=\"item.url\" [linkType]=\"item.linkType\">{{ item.label }}</a>\n </li>\n }\n </ul>\n }\n </div>\n }\n </div>\n <div class=\"columns-footer__copyright col-span-full sm:col-span-12 sm:col-start-1\">\n @if (copyright) {\n <div class=\"columns-footer__copyright-text\">\n <span>{{ copyright.year }}</span>\n <span>{{ copyright.name }}</span>\n <span>{{ copyright.rights }}</span>\n </div>\n }\n </div>\n @if (copyright?.name; as signature) {\n <div class=\"columns-footer__signature\" aria-label=\"{{ signature }}\">\n @let signatureParts = signature.split(' ');\n <span>\n <em>{{ signatureParts[0] }}</em>\n <strong>{{ signatureParts[1] }}</strong>\n </span>\n </div>\n }\n</div>\n",
318
+ styles: [".columns-footer-wrapper{background-color:var(--content-bg-dark);margin-left:calc(-50vw + 50%);margin-right:calc(-50vw + 50%);padding-left:calc(50vw - 50%);padding-right:calc(50vw - 50%)}.columns-footer-wrapper .columns-footer__one-title{color:var(--text-secondary)}.columns-footer-wrapper .columns-footer__one-item a{color:var(--text-secondary-70);text-transform:capitalize;font-size:1.1rem}.columns-footer-wrapper .columns-footer__one-item a:hover{color:var(--text-secondary)}.columns-footer-wrapper .columns-footer__two{justify-items:center}@media(max-width:480px){.columns-footer-wrapper .columns-footer__two{justify-items:start}}.columns-footer-wrapper .columns-footer__two-title{color:var(--text-secondary)}.columns-footer-wrapper .columns-footer__two-item{margin-bottom:1rem;justify-items:center;justify-self:center}@media(max-width:480px){.columns-footer-wrapper .columns-footer__two-item{justify-items:start;justify-self:start}}.columns-footer-wrapper .columns-footer__two-item a{color:var(--text-secondary-70);text-transform:uppercase;font-size:1.1rem}.columns-footer-wrapper .columns-footer__two-item a:hover,.columns-footer-wrapper .columns-footer__three-title{color:var(--text-secondary)}.columns-footer-wrapper .columns-footer__three-item.mt-separator{margin-top:1.5rem}.columns-footer-wrapper .columns-footer__three-item a{color:var(--text-secondary-70);text-decoration:none;font-size:1.1rem;display:inline-block;padding-bottom:2px;background-image:linear-gradient(var(--text-secondary-70),var(--text-secondary-70));background-size:100% 1px;background-position:0% 100%;background-repeat:no-repeat;transition:background-size .3s ease-in-out,background-position .3s ease-in-out}.columns-footer-wrapper .columns-footer__three-item a:hover{background-size:0% 1px;background-position:100% 100%;animation:linkMove .4s forwards}@keyframes linkMove{0%{background-size:100% 1px;background-position:0% 100%}50%{background-size:0% 1px;background-position:100% 100%}51%{background-size:0% 1px;background-position:0% 100%}to{background-size:100% 1px;background-position:0% 100%}}.columns-footer-wrapper .columns-footer__copyright-text{display:flex;flex-direction:column;align-items:center;margin-block:6rem 2rem;color:var(--text-secondary-70)}.columns-footer-wrapper .columns-footer__signature{width:100%;overflow:hidden;color:var(--text-secondary-70);line-height:.72;text-align:center;-webkit-user-select:none;user-select:none}@media(max-width:480px){.columns-footer-wrapper .columns-footer__signature{padding-bottom:4rem}}.columns-footer-wrapper .columns-footer__signature span{display:block;width:max-content;margin-inline:auto;font-size:clamp(5rem,22vw,21rem);font-weight:900;white-space:nowrap}.columns-footer-wrapper .columns-footer__signature span em{font-style:italic;margin-right:5rem}@media(max-width:480px){.columns-footer-wrapper .columns-footer__signature span em{margin-right:1rem}}.columns-footer-wrapper .columns-footer__signature span strong{font-style:normal}\n"],
319
319
  dependencies: [{
320
320
  kind: "ngmodule",
321
321
  type: CommonModule
@@ -341,8 +341,8 @@ i0.ɵɵngDeclareClassMetadata({
341
341
  imports: [CommonModule, LinkTypeDirective],
342
342
  changeDetection: ChangeDetectionStrategy.OnPush,
343
343
  host: { style: "display: contents" },
344
- template: "<div class=\"columns-footer-wrapper col-span-full\">\n <div class=\"columns-footer main-grid col-span-full sm:col-span-12 sm:col-start-1\">\n @if (columns?.[0]; as column1) {\n <div class=\"columns-footer__one col-span-full sm:col-span-3 sm:col-start-1\">\n @if (column1.title) {\n <h4 class=\"columns-footer__one-title\">\n {{ column1.title }}\n </h4>\n }\n @if (column1.items && column1.items.length > 0) {\n <ul class=\"columns-footer__one-list\">\n @for (item of column1.items; track $index) {\n <li class=\"columns-footer__one-item\">\n <a [href]=\"item.url\" [linkType]=\"item.linkType\">{{ item.label }}</a>\n </li>\n }\n </ul>\n }\n </div>\n }\n @if (columns?.[1]; as column2) {\n <div class=\"columns-footer__two col-span-full sm:col-span-6 sm:col-start-4\">\n @if (column2.title) {\n <h4 class=\"columns-footer__two-title\">\n {{ column2.title }}\n </h4>\n }\n @if (column2.items && column2.items.length > 0) {\n <ul class=\"columns-footer__two-list\">\n @for (item of column2.items; track $index) {\n <li class=\"columns-footer__two-item\">\n <a [href]=\"item.url\" [linkType]=\"item.linkType\">{{ item.label }}</a>\n </li>\n }\n </ul>\n }\n </div>\n }\n @if (columns?.[2]; as column3) {\n <div class=\"columns-footer__three col-span-full sm:col-span-3 sm:col-start-10\">\n @if (column3.title) {\n <h4 class=\"columns-footer__three-title\">\n {{ column3.title }}\n </h4>\n }\n @if (column3.items && column3.items.length > 0) {\n <ul class=\"columns-footer__three-list\">\n @for (item of column3.items; track $index) {\n <li class=\"columns-footer__three-item\" [class.mt-separator]=\"$index > 0 && item.linkType !== column3.items[$index - 1].linkType\">\n <a [href]=\"item.url\" [linkType]=\"item.linkType\">{{ item.label }}</a>\n </li>\n }\n </ul>\n }\n </div>\n }\n </div>\n <div class=\"columns-footer__copyright col-span-full sm:col-span-12 sm:col-start-1\">\n @if (copyright) {\n <div class=\"columns-footer__copyright-text\">\n <span>{{ copyright.year }}</span>\n <span>{{ copyright.name }}</span>\n <span>{{ copyright.rights }}</span>\n </div>\n }\n </div>\n</div>\n",
345
- styles: [".columns-footer-wrapper{background-color:var(--content-bg-dark);margin-left:calc(-50vw + 50%);margin-right:calc(-50vw + 50%);padding-left:calc(50vw - 50%);padding-right:calc(50vw - 50%)}.columns-footer-wrapper .columns-footer__one-title{color:var(--text-secondary)}.columns-footer-wrapper .columns-footer__one-item a{color:var(--text-secondary-70);text-transform:capitalize;font-size:1.1rem}.columns-footer-wrapper .columns-footer__one-item a:hover{color:var(--text-secondary)}.columns-footer-wrapper .columns-footer__two{justify-items:center}@media(max-width:480px){.columns-footer-wrapper .columns-footer__two{justify-items:start}}.columns-footer-wrapper .columns-footer__two-title{color:var(--text-secondary)}.columns-footer-wrapper .columns-footer__two-item{margin-bottom:1rem;justify-items:center;justify-self:center}@media(max-width:480px){.columns-footer-wrapper .columns-footer__two-item{justify-items:start;justify-self:start}}.columns-footer-wrapper .columns-footer__two-item a{color:var(--text-secondary-70);text-transform:uppercase;font-size:1.1rem}.columns-footer-wrapper .columns-footer__two-item a:hover,.columns-footer-wrapper .columns-footer__three-title{color:var(--text-secondary)}.columns-footer-wrapper .columns-footer__three-item.mt-separator{margin-top:1.5rem}.columns-footer-wrapper .columns-footer__three-item a{color:var(--text-secondary-70);text-decoration:none;font-size:1.1rem;display:inline-block;padding-bottom:2px;background-image:linear-gradient(var(--text-secondary-70),var(--text-secondary-70));background-size:100% 1px;background-position:0% 100%;background-repeat:no-repeat;transition:background-size .3s ease-in-out,background-position .3s ease-in-out}.columns-footer-wrapper .columns-footer__three-item a:hover{background-size:0% 1px;background-position:100% 100%;animation:linkMove .4s forwards}@keyframes linkMove{0%{background-size:100% 1px;background-position:0% 100%}50%{background-size:0% 1px;background-position:100% 100%}51%{background-size:0% 1px;background-position:0% 100%}to{background-size:100% 1px;background-position:0% 100%}}.columns-footer-wrapper .columns-footer__copyright-text{display:flex;flex-direction:column;align-items:center;margin-block:6rem 2rem;color:var(--text-secondary-70)}\n"]
344
+ template: "<div class=\"columns-footer-wrapper col-span-full\">\n <div class=\"columns-footer main-grid col-span-full sm:col-span-12 sm:col-start-1\">\n @if (columns?.[0]; as column1) {\n <div class=\"columns-footer__one col-span-full sm:col-span-3 sm:col-start-1\">\n @if (column1.title) {\n <h4 class=\"columns-footer__one-title\">\n {{ column1.title }}\n </h4>\n }\n @if (column1.items && column1.items.length > 0) {\n <ul class=\"columns-footer__one-list\">\n @for (item of column1.items; track $index) {\n <li class=\"columns-footer__one-item\">\n <a [href]=\"item.url\" [linkType]=\"item.linkType\">{{ item.label }}</a>\n </li>\n }\n </ul>\n }\n </div>\n }\n @if (columns?.[1]; as column2) {\n <div class=\"columns-footer__two col-span-full sm:col-span-6 sm:col-start-4\">\n @if (column2.title) {\n <h4 class=\"columns-footer__two-title\">\n {{ column2.title }}\n </h4>\n }\n @if (column2.items && column2.items.length > 0) {\n <ul class=\"columns-footer__two-list\">\n @for (item of column2.items; track $index) {\n <li class=\"columns-footer__two-item\">\n <a [href]=\"item.url\" [linkType]=\"item.linkType\">{{ item.label }}</a>\n </li>\n }\n </ul>\n }\n </div>\n }\n @if (columns?.[2]; as column3) {\n <div class=\"columns-footer__three col-span-full sm:col-span-3 sm:col-start-10\">\n @if (column3.title) {\n <h4 class=\"columns-footer__three-title\">\n {{ column3.title }}\n </h4>\n }\n @if (column3.items && column3.items.length > 0) {\n <ul class=\"columns-footer__three-list\">\n @for (item of column3.items; track $index) {\n <li class=\"columns-footer__three-item\" [class.mt-separator]=\"$index > 0 && item.linkType !== column3.items[$index - 1].linkType\">\n <a [href]=\"item.url\" [linkType]=\"item.linkType\">{{ item.label }}</a>\n </li>\n }\n </ul>\n }\n </div>\n }\n </div>\n <div class=\"columns-footer__copyright col-span-full sm:col-span-12 sm:col-start-1\">\n @if (copyright) {\n <div class=\"columns-footer__copyright-text\">\n <span>{{ copyright.year }}</span>\n <span>{{ copyright.name }}</span>\n <span>{{ copyright.rights }}</span>\n </div>\n }\n </div>\n @if (copyright?.name; as signature) {\n <div class=\"columns-footer__signature\" aria-label=\"{{ signature }}\">\n @let signatureParts = signature.split(' ');\n <span>\n <em>{{ signatureParts[0] }}</em>\n <strong>{{ signatureParts[1] }}</strong>\n </span>\n </div>\n }\n</div>\n",
345
+ styles: [".columns-footer-wrapper{background-color:var(--content-bg-dark);margin-left:calc(-50vw + 50%);margin-right:calc(-50vw + 50%);padding-left:calc(50vw - 50%);padding-right:calc(50vw - 50%)}.columns-footer-wrapper .columns-footer__one-title{color:var(--text-secondary)}.columns-footer-wrapper .columns-footer__one-item a{color:var(--text-secondary-70);text-transform:capitalize;font-size:1.1rem}.columns-footer-wrapper .columns-footer__one-item a:hover{color:var(--text-secondary)}.columns-footer-wrapper .columns-footer__two{justify-items:center}@media(max-width:480px){.columns-footer-wrapper .columns-footer__two{justify-items:start}}.columns-footer-wrapper .columns-footer__two-title{color:var(--text-secondary)}.columns-footer-wrapper .columns-footer__two-item{margin-bottom:1rem;justify-items:center;justify-self:center}@media(max-width:480px){.columns-footer-wrapper .columns-footer__two-item{justify-items:start;justify-self:start}}.columns-footer-wrapper .columns-footer__two-item a{color:var(--text-secondary-70);text-transform:uppercase;font-size:1.1rem}.columns-footer-wrapper .columns-footer__two-item a:hover,.columns-footer-wrapper .columns-footer__three-title{color:var(--text-secondary)}.columns-footer-wrapper .columns-footer__three-item.mt-separator{margin-top:1.5rem}.columns-footer-wrapper .columns-footer__three-item a{color:var(--text-secondary-70);text-decoration:none;font-size:1.1rem;display:inline-block;padding-bottom:2px;background-image:linear-gradient(var(--text-secondary-70),var(--text-secondary-70));background-size:100% 1px;background-position:0% 100%;background-repeat:no-repeat;transition:background-size .3s ease-in-out,background-position .3s ease-in-out}.columns-footer-wrapper .columns-footer__three-item a:hover{background-size:0% 1px;background-position:100% 100%;animation:linkMove .4s forwards}@keyframes linkMove{0%{background-size:100% 1px;background-position:0% 100%}50%{background-size:0% 1px;background-position:100% 100%}51%{background-size:0% 1px;background-position:0% 100%}to{background-size:100% 1px;background-position:0% 100%}}.columns-footer-wrapper .columns-footer__copyright-text{display:flex;flex-direction:column;align-items:center;margin-block:6rem 2rem;color:var(--text-secondary-70)}.columns-footer-wrapper .columns-footer__signature{width:100%;overflow:hidden;color:var(--text-secondary-70);line-height:.72;text-align:center;-webkit-user-select:none;user-select:none}@media(max-width:480px){.columns-footer-wrapper .columns-footer__signature{padding-bottom:4rem}}.columns-footer-wrapper .columns-footer__signature span{display:block;width:max-content;margin-inline:auto;font-size:clamp(5rem,22vw,21rem);font-weight:900;white-space:nowrap}.columns-footer-wrapper .columns-footer__signature span em{font-style:italic;margin-right:5rem}@media(max-width:480px){.columns-footer-wrapper .columns-footer__signature span em{margin-right:1rem}}.columns-footer-wrapper .columns-footer__signature span strong{font-style:normal}\n"]
346
346
  }]
347
347
  }],
348
348
  propDecorators: {
@@ -1 +1 @@
1
- {"version":3,"file":"lluc_llull-ui-lib-footers.mjs","names":[],"sources":["../../../projects/ui-lib/footers/legal-footer/legal-footer.component.ts","../../../projects/ui-lib/footers/legal-footer/legal-footer.component.html","../../../projects/ui-lib/footers/links-footer/links-footer.component.ts","../../../projects/ui-lib/footers/links-footer/links-footer.component.html","../../../projects/ui-lib/footers/social-footer/social-footer.component.ts","../../../projects/ui-lib/footers/social-footer/social-footer.component.html","../../../projects/ui-lib/footers/visual-footer/visual-footer.component.ts","../../../projects/ui-lib/footers/visual-footer/visual-footer.component.html","../../../projects/ui-lib/footers/columns-footer/columns-footer.component.ts","../../../projects/ui-lib/footers/columns-footer/columns-footer.component.html"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { UiLibButtonI } from '@lluc_llull/ui-lib/interfaces';\n\nexport type LegalFooterVariant = 'simple' | 'extended';\n\n@Component({\n selector: 'lib-legal-footer',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './legal-footer.component.html',\n styleUrl: './legal-footer.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n style: 'display: contents',\n },\n})\nexport class LegalFooterComponent {\n @Input() year?: number;\n @Input() brand?: string;\n @Input() credits?: string;\n @Input() links?: UiLibButtonI[];\n @Input() variant: LegalFooterVariant = 'simple';\n}\n","<div class=\"legal-footer col-span-full sm:col-span-12 sm:col-start-1\" [ngClass]=\"variant\">\n <!-- Variante simple -->\n @if (variant === 'simple') {\n <div class=\"legal-footer__simple main-grid col-span-full\">\n <span class=\"legal-footer__simple-brand col-span-full sm:col-span-6 sm:col-start-1\">\n <b>{{ brand }} © {{ year }}</b>\n </span>\n <span class=\"legal-footer__simple-credits col-span-full sm:col-span-6 sm:col-start-7\">{{ credits }}</span>\n </div>\n }\n\n <!-- Variante extendida -->\n @if (variant === 'extended') {\n <div class=\"legal-footer__extended col-span-full\">\n <span class=\"legal-footer__year col-span-full sm:col-span-3 sm:col-start-1\">\n <b>{{ brand }} © {{ year }}</b>\n </span>\n\n <div class=\"legal-footer__right col-span-full sm:col-span-9 sm:col-start-4\">\n @if (links?.length) {\n <ul class=\"legal-footer__links\">\n @for (link of links; track $index) {\n <li>\n <a [href]=\"link.url\">{{ link.label }}</a>\n </li>\n }\n <li class=\"legal-footer__credits\">{{ credits }}</li>\n </ul>\n }\n </div>\n </div>\n }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { UiLibButtonI } from '@lluc_llull/ui-lib/interfaces';\nimport { LinkTypeDirective } from '@lluc_llull/ui-lib/directives';\n\n@Component({\n selector: 'lib-links-footer',\n standalone: true,\n imports: [CommonModule, LinkTypeDirective],\n templateUrl: './links-footer.component.html',\n styleUrl: './links-footer.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n style: 'display: contents',\n },\n})\nexport class LinksFooterComponent {\n @Input() links?: UiLibButtonI[];\n}\n","@if (links) {\n <div class=\"links-footer main-grid col-span-full\">\n <ul class=\"col-span-full\">\n @for (link of links; track $index) {\n <li>\n <a [href]=\"link.url\" [linkType]=\"link.linkType\" class=\"btn btn-link\">\n {{ link.label }}\n </a>\n </li>\n }\n </ul>\n </div>\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { UiLibButtonI, UiLibImageI } from '@lluc_llull/ui-lib/interfaces';\nimport { LinkTypeDirective } from '@lluc_llull/ui-lib/directives';\nimport { SwiperDirective } from '@lluc_llull/ui-lib/sliders';\nimport { UiIconComponent } from '@lluc_llull/ui-lib/shared';\n\n@Component({\n selector: 'lib-social-footer',\n standalone: true,\n imports: [CommonModule, LinkTypeDirective, SwiperDirective, UiIconComponent],\n templateUrl: './social-footer.component.html',\n styleUrl: './social-footer.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n style: 'display: contents',\n },\n})\nexport class SocialFooterComponent {\n @Input() images?: UiLibImageI[];\n @Input() socials?: UiLibButtonI[];\n @Input() hashtag?: string;\n}\n","<div class=\"social-footer main-grid col-span-full sm:col-span-12 sm:col-start-1\">\n <div class=\"social-footer__slider-images swiper col-span-full\" appSwiper>\n <div class=\"swiper-wrapper\">\n @for (image of images; track $index) {\n <div class=\"swiper-slide\">\n <img [src]=\"image?.url\" [alt]=\"image?.alt || ''\" />\n </div>\n }\n </div>\n <div class=\"swiper-button-prev\">\n <ui-icon name=\"arrow-left\" [size]=\"17\" color=\"#fff\"></ui-icon>\n </div>\n <div class=\"swiper-button-next\">\n <ui-icon name=\"arrow-right\" [size]=\"17\" color=\"#fff\"></ui-icon>\n </div>\n </div>\n\n <div class=\"social-footer__bottom-section main-grid col-span-full\">\n @if (hashtag) {\n <div class=\"social-footer__hashtag col-span-full sm:col-span-6 sm:col-start-1\">\n <span>{{ hashtag }}</span>\n </div>\n }\n @if (socials) {\n <div class=\"social-footer__socials col-span-full sm:col-span-6 sm:col-start-7\">\n @for (social of socials; track $index) {\n <a [href]=\"social.url\" [attr.aria-label]=\"social.label\" [linkType]=\"social.linkType\">\n @if (social.icon) {\n <ui-icon [name]=\"social.icon\" [size]=\"28\"></ui-icon>\n }\n </a>\n }\n </div>\n }\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { UiLibAddressI, UiLibButtonI, UiLibImageI } from '@lluc_llull/ui-lib/interfaces';\nimport { LinkTypeDirective } from '@lluc_llull/ui-lib/directives';\n\n@Component({\n selector: 'lib-visual-footer',\n standalone: true,\n imports: [CommonModule, LinkTypeDirective],\n templateUrl: './visual-footer.component.html',\n styleUrl: './visual-footer.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n style: 'display: contents',\n },\n})\nexport class VisualFooterComponent {\n @Input() contactTitle?: string;\n @Input() contactPhone?: UiLibButtonI;\n @Input() contactEmail?: UiLibButtonI;\n @Input() addressTitle?: string;\n @Input() address?: UiLibAddressI;\n @Input() socialsTitle?: string;\n @Input() socials?: UiLibButtonI[];\n @Input() image?: UiLibImageI;\n}\n","<div class=\"visual-footer main-grid col-span-full sm:col-span-12 sm:col-start-1\">\n <div class=\"visual-footer__texts col-span-full sm:col-span-3 sm:col-start-1\">\n <div class=\"visual-footer__contact\">\n @if (contactTitle) {\n <h2 class=\"title\">{{ contactTitle }}</h2>\n }\n @if (contactPhone) {\n <a [href]=\"contactPhone.url\" [linkType]=\"contactPhone.linkType\" class=\"btn btn-link\">\n <span>{{ contactPhone.label }}</span>\n </a>\n }\n @if (contactEmail) {\n <a [href]=\"contactEmail.url\" [linkType]=\"contactEmail.linkType\" class=\"btn btn-link\">\n <span>{{ contactEmail.label }}</span>\n </a>\n }\n </div>\n <div class=\"visual-footer__address\">\n @if (addressTitle) {\n <h2 class=\"title\">{{ addressTitle }}</h2>\n }\n <p class=\"text\">\n <span>{{ address?.address }}</span>\n <span>{{ address?.cp }} {{ address?.city }}</span>\n <span>{{ address?.province }} {{ address?.country }}</span>\n </p>\n </div>\n <div class=\"visual-footer__socials\">\n @if (socialsTitle) {\n <h2 class=\"title\">{{ socialsTitle }}</h2>\n }\n @if (socials) {\n @for (social of socials; track $index) {\n <a [href]=\"social.url\" [linkType]=\"social.linkType\" class=\"btn btn-link\">\n <span>{{ social.label }}</span>\n </a>\n }\n }\n </div>\n </div>\n <div class=\"visual-footer__image col-span-full sm:col-span-8 sm:col-start-5\">\n @if (image) {\n <img [src]=\"image.url\" [alt]=\"image.alt\" loading=\"lazy\" />\n }\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { LinkTypeDirective } from '@lluc_llull/ui-lib/directives';\nimport { UiLibButtonI } from '@lluc_llull/ui-lib/interfaces';\n\n@Component({\n selector: 'lib-columns-footer',\n imports: [CommonModule, LinkTypeDirective],\n templateUrl: './columns-footer.component.html',\n styleUrl: './columns-footer.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n style: 'display: contents',\n },\n})\nexport class ColumnsFooterComponent {\n @Input() columns?: ColumnsFooterItemI[];\n @Input() copyright?: ColumnsFooterCopyRightI;\n}\n\nexport interface ColumnsFooterItemI {\n title: string;\n items: UiLibButtonI[];\n}\n\nexport interface ColumnsFooterCopyRightI {\n year: string;\n name?: string;\n rights?: string;\n}\n","<div class=\"columns-footer-wrapper col-span-full\">\n <div class=\"columns-footer main-grid col-span-full sm:col-span-12 sm:col-start-1\">\n @if (columns?.[0]; as column1) {\n <div class=\"columns-footer__one col-span-full sm:col-span-3 sm:col-start-1\">\n @if (column1.title) {\n <h4 class=\"columns-footer__one-title\">\n {{ column1.title }}\n </h4>\n }\n @if (column1.items && column1.items.length > 0) {\n <ul class=\"columns-footer__one-list\">\n @for (item of column1.items; track $index) {\n <li class=\"columns-footer__one-item\">\n <a [href]=\"item.url\" [linkType]=\"item.linkType\">{{ item.label }}</a>\n </li>\n }\n </ul>\n }\n </div>\n }\n @if (columns?.[1]; as column2) {\n <div class=\"columns-footer__two col-span-full sm:col-span-6 sm:col-start-4\">\n @if (column2.title) {\n <h4 class=\"columns-footer__two-title\">\n {{ column2.title }}\n </h4>\n }\n @if (column2.items && column2.items.length > 0) {\n <ul class=\"columns-footer__two-list\">\n @for (item of column2.items; track $index) {\n <li class=\"columns-footer__two-item\">\n <a [href]=\"item.url\" [linkType]=\"item.linkType\">{{ item.label }}</a>\n </li>\n }\n </ul>\n }\n </div>\n }\n @if (columns?.[2]; as column3) {\n <div class=\"columns-footer__three col-span-full sm:col-span-3 sm:col-start-10\">\n @if (column3.title) {\n <h4 class=\"columns-footer__three-title\">\n {{ column3.title }}\n </h4>\n }\n @if (column3.items && column3.items.length > 0) {\n <ul class=\"columns-footer__three-list\">\n @for (item of column3.items; track $index) {\n <li class=\"columns-footer__three-item\" [class.mt-separator]=\"$index > 0 && item.linkType !== column3.items[$index - 1].linkType\">\n <a [href]=\"item.url\" [linkType]=\"item.linkType\">{{ item.label }}</a>\n </li>\n }\n </ul>\n }\n </div>\n }\n </div>\n <div class=\"columns-footer__copyright col-span-full sm:col-span-12 sm:col-start-1\">\n @if (copyright) {\n <div class=\"columns-footer__copyright-text\">\n <span>{{ copyright.year }}</span>\n <span>{{ copyright.name }}</span>\n <span>{{ copyright.rights }}</span>\n </div>\n }\n </div>\n</div>\n"],"mappings":"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"}
1
+ {"version":3,"file":"lluc_llull-ui-lib-footers.mjs","names":[],"sources":["../../../projects/ui-lib/footers/legal-footer/legal-footer.component.ts","../../../projects/ui-lib/footers/legal-footer/legal-footer.component.html","../../../projects/ui-lib/footers/links-footer/links-footer.component.ts","../../../projects/ui-lib/footers/links-footer/links-footer.component.html","../../../projects/ui-lib/footers/social-footer/social-footer.component.ts","../../../projects/ui-lib/footers/social-footer/social-footer.component.html","../../../projects/ui-lib/footers/visual-footer/visual-footer.component.ts","../../../projects/ui-lib/footers/visual-footer/visual-footer.component.html","../../../projects/ui-lib/footers/columns-footer/columns-footer.component.ts","../../../projects/ui-lib/footers/columns-footer/columns-footer.component.html"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { UiLibButtonI } from '@lluc_llull/ui-lib/interfaces';\n\nexport type LegalFooterVariant = 'simple' | 'extended';\n\n@Component({\n selector: 'lib-legal-footer',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './legal-footer.component.html',\n styleUrl: './legal-footer.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n style: 'display: contents',\n },\n})\nexport class LegalFooterComponent {\n @Input() year?: number;\n @Input() brand?: string;\n @Input() credits?: string;\n @Input() links?: UiLibButtonI[];\n @Input() variant: LegalFooterVariant = 'simple';\n}\n","<div class=\"legal-footer col-span-full sm:col-span-12 sm:col-start-1\" [ngClass]=\"variant\">\n <!-- Variante simple -->\n @if (variant === 'simple') {\n <div class=\"legal-footer__simple main-grid col-span-full\">\n <span class=\"legal-footer__simple-brand col-span-full sm:col-span-6 sm:col-start-1\">\n <b>{{ brand }} © {{ year }}</b>\n </span>\n <span class=\"legal-footer__simple-credits col-span-full sm:col-span-6 sm:col-start-7\">{{ credits }}</span>\n </div>\n }\n\n <!-- Variante extendida -->\n @if (variant === 'extended') {\n <div class=\"legal-footer__extended col-span-full\">\n <span class=\"legal-footer__year col-span-full sm:col-span-3 sm:col-start-1\">\n <b>{{ brand }} © {{ year }}</b>\n </span>\n\n <div class=\"legal-footer__right col-span-full sm:col-span-9 sm:col-start-4\">\n @if (links?.length) {\n <ul class=\"legal-footer__links\">\n @for (link of links; track $index) {\n <li>\n <a [href]=\"link.url\">{{ link.label }}</a>\n </li>\n }\n <li class=\"legal-footer__credits\">{{ credits }}</li>\n </ul>\n }\n </div>\n </div>\n }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { UiLibButtonI } from '@lluc_llull/ui-lib/interfaces';\nimport { LinkTypeDirective } from '@lluc_llull/ui-lib/directives';\n\n@Component({\n selector: 'lib-links-footer',\n standalone: true,\n imports: [CommonModule, LinkTypeDirective],\n templateUrl: './links-footer.component.html',\n styleUrl: './links-footer.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n style: 'display: contents',\n },\n})\nexport class LinksFooterComponent {\n @Input() links?: UiLibButtonI[];\n}\n","@if (links) {\n <div class=\"links-footer main-grid col-span-full\">\n <ul class=\"col-span-full\">\n @for (link of links; track $index) {\n <li>\n <a [href]=\"link.url\" [linkType]=\"link.linkType\" class=\"btn btn-link\">\n {{ link.label }}\n </a>\n </li>\n }\n </ul>\n </div>\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { UiLibButtonI, UiLibImageI } from '@lluc_llull/ui-lib/interfaces';\nimport { LinkTypeDirective } from '@lluc_llull/ui-lib/directives';\nimport { SwiperDirective } from '@lluc_llull/ui-lib/sliders';\nimport { UiIconComponent } from '@lluc_llull/ui-lib/shared';\n\n@Component({\n selector: 'lib-social-footer',\n standalone: true,\n imports: [CommonModule, LinkTypeDirective, SwiperDirective, UiIconComponent],\n templateUrl: './social-footer.component.html',\n styleUrl: './social-footer.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n style: 'display: contents',\n },\n})\nexport class SocialFooterComponent {\n @Input() images?: UiLibImageI[];\n @Input() socials?: UiLibButtonI[];\n @Input() hashtag?: string;\n}\n","<div class=\"social-footer main-grid col-span-full sm:col-span-12 sm:col-start-1\">\n <div class=\"social-footer__slider-images swiper col-span-full\" appSwiper>\n <div class=\"swiper-wrapper\">\n @for (image of images; track $index) {\n <div class=\"swiper-slide\">\n <img [src]=\"image?.url\" [alt]=\"image?.alt || ''\" />\n </div>\n }\n </div>\n <div class=\"swiper-button-prev\">\n <ui-icon name=\"arrow-left\" [size]=\"17\" color=\"#fff\"></ui-icon>\n </div>\n <div class=\"swiper-button-next\">\n <ui-icon name=\"arrow-right\" [size]=\"17\" color=\"#fff\"></ui-icon>\n </div>\n </div>\n\n <div class=\"social-footer__bottom-section main-grid col-span-full\">\n @if (hashtag) {\n <div class=\"social-footer__hashtag col-span-full sm:col-span-6 sm:col-start-1\">\n <span>{{ hashtag }}</span>\n </div>\n }\n @if (socials) {\n <div class=\"social-footer__socials col-span-full sm:col-span-6 sm:col-start-7\">\n @for (social of socials; track $index) {\n <a [href]=\"social.url\" [attr.aria-label]=\"social.label\" [linkType]=\"social.linkType\">\n @if (social.icon) {\n <ui-icon [name]=\"social.icon\" [size]=\"28\"></ui-icon>\n }\n </a>\n }\n </div>\n }\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { UiLibAddressI, UiLibButtonI, UiLibImageI } from '@lluc_llull/ui-lib/interfaces';\nimport { LinkTypeDirective } from '@lluc_llull/ui-lib/directives';\n\n@Component({\n selector: 'lib-visual-footer',\n standalone: true,\n imports: [CommonModule, LinkTypeDirective],\n templateUrl: './visual-footer.component.html',\n styleUrl: './visual-footer.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n style: 'display: contents',\n },\n})\nexport class VisualFooterComponent {\n @Input() contactTitle?: string;\n @Input() contactPhone?: UiLibButtonI;\n @Input() contactEmail?: UiLibButtonI;\n @Input() addressTitle?: string;\n @Input() address?: UiLibAddressI;\n @Input() socialsTitle?: string;\n @Input() socials?: UiLibButtonI[];\n @Input() image?: UiLibImageI;\n}\n","<div class=\"visual-footer main-grid col-span-full sm:col-span-12 sm:col-start-1\">\n <div class=\"visual-footer__texts col-span-full sm:col-span-3 sm:col-start-1\">\n <div class=\"visual-footer__contact\">\n @if (contactTitle) {\n <h2 class=\"title\">{{ contactTitle }}</h2>\n }\n @if (contactPhone) {\n <a [href]=\"contactPhone.url\" [linkType]=\"contactPhone.linkType\" class=\"btn btn-link\">\n <span>{{ contactPhone.label }}</span>\n </a>\n }\n @if (contactEmail) {\n <a [href]=\"contactEmail.url\" [linkType]=\"contactEmail.linkType\" class=\"btn btn-link\">\n <span>{{ contactEmail.label }}</span>\n </a>\n }\n </div>\n <div class=\"visual-footer__address\">\n @if (addressTitle) {\n <h2 class=\"title\">{{ addressTitle }}</h2>\n }\n <p class=\"text\">\n <span>{{ address?.address }}</span>\n <span>{{ address?.cp }} {{ address?.city }}</span>\n <span>{{ address?.province }} {{ address?.country }}</span>\n </p>\n </div>\n <div class=\"visual-footer__socials\">\n @if (socialsTitle) {\n <h2 class=\"title\">{{ socialsTitle }}</h2>\n }\n @if (socials) {\n @for (social of socials; track $index) {\n <a [href]=\"social.url\" [linkType]=\"social.linkType\" class=\"btn btn-link\">\n <span>{{ social.label }}</span>\n </a>\n }\n }\n </div>\n </div>\n <div class=\"visual-footer__image col-span-full sm:col-span-8 sm:col-start-5\">\n @if (image) {\n <img [src]=\"image.url\" [alt]=\"image.alt\" loading=\"lazy\" />\n }\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { LinkTypeDirective } from '@lluc_llull/ui-lib/directives';\nimport { UiLibButtonI } from '@lluc_llull/ui-lib/interfaces';\n\n@Component({\n selector: 'lib-columns-footer',\n imports: [CommonModule, LinkTypeDirective],\n templateUrl: './columns-footer.component.html',\n styleUrl: './columns-footer.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n style: 'display: contents',\n },\n})\nexport class ColumnsFooterComponent {\n @Input() columns?: ColumnsFooterItemI[];\n @Input() copyright?: ColumnsFooterCopyRightI;\n}\n\nexport interface ColumnsFooterItemI {\n title: string;\n items: UiLibButtonI[];\n}\n\nexport interface ColumnsFooterCopyRightI {\n year: string;\n name?: string;\n rights?: string;\n}\n","<div class=\"columns-footer-wrapper col-span-full\">\n <div class=\"columns-footer main-grid col-span-full sm:col-span-12 sm:col-start-1\">\n @if (columns?.[0]; as column1) {\n <div class=\"columns-footer__one col-span-full sm:col-span-3 sm:col-start-1\">\n @if (column1.title) {\n <h4 class=\"columns-footer__one-title\">\n {{ column1.title }}\n </h4>\n }\n @if (column1.items && column1.items.length > 0) {\n <ul class=\"columns-footer__one-list\">\n @for (item of column1.items; track $index) {\n <li class=\"columns-footer__one-item\">\n <a [href]=\"item.url\" [linkType]=\"item.linkType\">{{ item.label }}</a>\n </li>\n }\n </ul>\n }\n </div>\n }\n @if (columns?.[1]; as column2) {\n <div class=\"columns-footer__two col-span-full sm:col-span-6 sm:col-start-4\">\n @if (column2.title) {\n <h4 class=\"columns-footer__two-title\">\n {{ column2.title }}\n </h4>\n }\n @if (column2.items && column2.items.length > 0) {\n <ul class=\"columns-footer__two-list\">\n @for (item of column2.items; track $index) {\n <li class=\"columns-footer__two-item\">\n <a [href]=\"item.url\" [linkType]=\"item.linkType\">{{ item.label }}</a>\n </li>\n }\n </ul>\n }\n </div>\n }\n @if (columns?.[2]; as column3) {\n <div class=\"columns-footer__three col-span-full sm:col-span-3 sm:col-start-10\">\n @if (column3.title) {\n <h4 class=\"columns-footer__three-title\">\n {{ column3.title }}\n </h4>\n }\n @if (column3.items && column3.items.length > 0) {\n <ul class=\"columns-footer__three-list\">\n @for (item of column3.items; track $index) {\n <li class=\"columns-footer__three-item\" [class.mt-separator]=\"$index > 0 && item.linkType !== column3.items[$index - 1].linkType\">\n <a [href]=\"item.url\" [linkType]=\"item.linkType\">{{ item.label }}</a>\n </li>\n }\n </ul>\n }\n </div>\n }\n </div>\n <div class=\"columns-footer__copyright col-span-full sm:col-span-12 sm:col-start-1\">\n @if (copyright) {\n <div class=\"columns-footer__copyright-text\">\n <span>{{ copyright.year }}</span>\n <span>{{ copyright.name }}</span>\n <span>{{ copyright.rights }}</span>\n </div>\n }\n </div>\n @if (copyright?.name; as signature) {\n <div class=\"columns-footer__signature\" aria-label=\"{{ signature }}\">\n @let signatureParts = signature.split(' ');\n <span>\n <em>{{ signatureParts[0] }}</em>\n <strong>{{ signatureParts[1] }}</strong>\n </span>\n </div>\n }\n</div>\n"],"mappings":"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"}
@@ -9,6 +9,7 @@ import * as i1 from "@lluc_llull/ui-lib/theme";
9
9
  var HeaderClearComponent = class HeaderClearComponent {
10
10
  themeService;
11
11
  isMenuOpen = false;
12
+ isMenuClosing = false;
12
13
  currentTheme = "light";
13
14
  themeSubscription;
14
15
  logo;
@@ -42,7 +43,22 @@ var HeaderClearComponent = class HeaderClearComponent {
42
43
  this.theme.emit();
43
44
  }
44
45
  toggleMenu() {
45
- this.isMenuOpen = !this.isMenuOpen;
46
+ if (this.isMenuOpen) {
47
+ this.closeMenu();
48
+ return;
49
+ }
50
+ this.isMenuClosing = false;
51
+ this.isMenuOpen = true;
52
+ }
53
+ closeMenu() {
54
+ if (!this.isMenuOpen && !this.isMenuClosing) return;
55
+ this.isMenuClosing = true;
56
+ this.isMenuOpen = false;
57
+ }
58
+ finishMenuClose(event) {
59
+ if (!this.isMenuClosing || event.propertyName !== "visibility") return;
60
+ if (!(event.target instanceof HTMLElement) || !event.target.classList.contains("modal-content")) return;
61
+ this.isMenuClosing = false;
46
62
  }
47
63
  static ɵfac = i0.ɵɵngDeclareFactory({
48
64
  minVersion: "12.0.0",
@@ -73,7 +89,7 @@ var HeaderClearComponent = class HeaderClearComponent {
73
89
  },
74
90
  usesOnChanges: true,
75
91
  ngImport: i0,
76
- template: "<header class=\"header-clear main-grid col-span-full sm:col-span-12 sm:col-start-1\" headerScroll [scrollThreshold]=\"60\">\n <a [href]=\"homeLink?.url\" [linkType]=\"homeLink?.linkType\">\n <div class=\"header-logo col-span-full sm:col-span-4 sm:col-start-1\">\n <!-- Logo -->\n <img\n [src]=\"currentTheme === 'dark' ? logoDark?.url : logo?.url\"\n [alt]=\"currentTheme === 'dark' ? logoDark?.alt : logo?.alt\"\n />\n <span>LLUC LLULL</span>\n </div>\n </a>\n\n <div class=\"header-actions col-span-full sm:col-span-6 sm:col-start-7\">\n <!-- Idioma -->\n <button class=\"btn btn-header\" (click)=\"openLanguagesModal()\">\n <span class=\"lang\">{{ lang }}</span>\n </button>\n\n <!-- Icono de tema -->\n <button class=\"btn btn-header\" aria-label=\"Toggle theme\" (click)=\"toggleTheme()\">\n <ui-icon\n [name]=\"currentTheme === 'dark' ? 'sun' : 'moon'\"\n [size]=\"17\"\n [color]=\"'var(--color-primary)'\"\n ></ui-icon>\n </button>\n\n <!-- Icono de menú -->\n <button class=\"btn btn-header\" aria-label=\"Open nav\" (click)=\"toggleMenu()\">\n <span>☰</span>\n </button>\n </div>\n</header>\n\n@if (isMenuOpen && navItems && navItems.length > 0) {\n <lib-nav-modal\n [navItems]=\"navItems\"\n [socialItems]=\"socialItems\"\n (close)=\"isMenuOpen = false\"\n ></lib-nav-modal>\n}\n",
92
+ template: "<header class=\"header-clear main-grid col-span-full sm:col-span-12 sm:col-start-1\" headerScroll [scrollThreshold]=\"60\">\n <a [href]=\"homeLink?.url\" [linkType]=\"homeLink?.linkType\">\n <div class=\"header-logo col-span-full sm:col-span-4 sm:col-start-1\">\n <!-- Logo -->\n <img\n [src]=\"currentTheme === 'dark' ? logoDark?.url : logo?.url\"\n [alt]=\"currentTheme === 'dark' ? logoDark?.alt : logo?.alt\"\n />\n <span>LLUC LLULL</span>\n </div>\n </a>\n\n <div class=\"header-actions col-span-full sm:col-span-6 sm:col-start-7\">\n <!-- Idioma -->\n <button class=\"btn btn-header\" (click)=\"openLanguagesModal()\">\n <span class=\"lang\">{{ lang }}</span>\n </button>\n\n <!-- Icono de tema -->\n <button class=\"btn btn-header\" aria-label=\"Toggle theme\" (click)=\"toggleTheme()\">\n <ui-icon\n [name]=\"currentTheme === 'dark' ? 'sun' : 'moon'\"\n [size]=\"17\"\n [color]=\"'var(--color-primary)'\"\n ></ui-icon>\n </button>\n\n <!-- Icono de menú -->\n <button class=\"btn btn-header\" aria-label=\"Open nav\" (click)=\"toggleMenu()\">\n <span>☰</span>\n </button>\n </div>\n</header>\n\n@if ((isMenuOpen || isMenuClosing) && navItems && navItems.length > 0) {\n <lib-nav-modal\n [navItems]=\"navItems\"\n [socialItems]=\"socialItems\"\n [closing]=\"isMenuClosing\"\n (close)=\"closeMenu()\"\n (transitionend)=\"finishMenuClose($event)\"\n ></lib-nav-modal>\n}\n",
77
93
  styles: [".header-clear{border-radius:0;position:sticky;top:0;z-index:100;padding-block:0;margin-top:1rem;transition:background .3s ease,box-shadow .3s ease;background:var(--header-bg)}.header-clear.is-scrolled{background:var(--header-bg-fixed-dark);box-shadow:0 2px 12px #00000014}.header-clear.is-scrolled .header-logo a{padding-inline:1.5rem}.header-clear.is-scrolled .header-logo span{color:var(--header-logo-text-dark)}.header-clear.is-scrolled .header-actions{padding-inline:1.5rem}.header-clear.is-scrolled .header-actions .btn-header{background:var(--header-bg-fixed-light)}.header-logo{display:flex;align-items:center;gap:.5rem;color:var(--header-logo-text)}.header-logo img{width:80px;height:80px;object-fit:contain;object-position:left}.header-logo span{display:flex;min-width:10rem}.header-actions{display:flex;align-items:center;justify-content:flex-end;gap:1rem}.lang{text-transform:uppercase}\n"],
78
94
  dependencies: [
79
95
  {
@@ -84,7 +100,11 @@ var HeaderClearComponent = class HeaderClearComponent {
84
100
  kind: "component",
85
101
  type: NavModalComponent,
86
102
  selector: "lib-nav-modal",
87
- inputs: ["navItems", "socialItems"],
103
+ inputs: [
104
+ "navItems",
105
+ "socialItems",
106
+ "closing"
107
+ ],
88
108
  outputs: ["close"]
89
109
  },
90
110
  {
@@ -132,7 +152,7 @@ i0.ɵɵngDeclareClassMetadata({
132
152
  HeaderScrollDirective
133
153
  ],
134
154
  changeDetection: ChangeDetectionStrategy.OnPush,
135
- template: "<header class=\"header-clear main-grid col-span-full sm:col-span-12 sm:col-start-1\" headerScroll [scrollThreshold]=\"60\">\n <a [href]=\"homeLink?.url\" [linkType]=\"homeLink?.linkType\">\n <div class=\"header-logo col-span-full sm:col-span-4 sm:col-start-1\">\n <!-- Logo -->\n <img\n [src]=\"currentTheme === 'dark' ? logoDark?.url : logo?.url\"\n [alt]=\"currentTheme === 'dark' ? logoDark?.alt : logo?.alt\"\n />\n <span>LLUC LLULL</span>\n </div>\n </a>\n\n <div class=\"header-actions col-span-full sm:col-span-6 sm:col-start-7\">\n <!-- Idioma -->\n <button class=\"btn btn-header\" (click)=\"openLanguagesModal()\">\n <span class=\"lang\">{{ lang }}</span>\n </button>\n\n <!-- Icono de tema -->\n <button class=\"btn btn-header\" aria-label=\"Toggle theme\" (click)=\"toggleTheme()\">\n <ui-icon\n [name]=\"currentTheme === 'dark' ? 'sun' : 'moon'\"\n [size]=\"17\"\n [color]=\"'var(--color-primary)'\"\n ></ui-icon>\n </button>\n\n <!-- Icono de menú -->\n <button class=\"btn btn-header\" aria-label=\"Open nav\" (click)=\"toggleMenu()\">\n <span>☰</span>\n </button>\n </div>\n</header>\n\n@if (isMenuOpen && navItems && navItems.length > 0) {\n <lib-nav-modal\n [navItems]=\"navItems\"\n [socialItems]=\"socialItems\"\n (close)=\"isMenuOpen = false\"\n ></lib-nav-modal>\n}\n",
155
+ template: "<header class=\"header-clear main-grid col-span-full sm:col-span-12 sm:col-start-1\" headerScroll [scrollThreshold]=\"60\">\n <a [href]=\"homeLink?.url\" [linkType]=\"homeLink?.linkType\">\n <div class=\"header-logo col-span-full sm:col-span-4 sm:col-start-1\">\n <!-- Logo -->\n <img\n [src]=\"currentTheme === 'dark' ? logoDark?.url : logo?.url\"\n [alt]=\"currentTheme === 'dark' ? logoDark?.alt : logo?.alt\"\n />\n <span>LLUC LLULL</span>\n </div>\n </a>\n\n <div class=\"header-actions col-span-full sm:col-span-6 sm:col-start-7\">\n <!-- Idioma -->\n <button class=\"btn btn-header\" (click)=\"openLanguagesModal()\">\n <span class=\"lang\">{{ lang }}</span>\n </button>\n\n <!-- Icono de tema -->\n <button class=\"btn btn-header\" aria-label=\"Toggle theme\" (click)=\"toggleTheme()\">\n <ui-icon\n [name]=\"currentTheme === 'dark' ? 'sun' : 'moon'\"\n [size]=\"17\"\n [color]=\"'var(--color-primary)'\"\n ></ui-icon>\n </button>\n\n <!-- Icono de menú -->\n <button class=\"btn btn-header\" aria-label=\"Open nav\" (click)=\"toggleMenu()\">\n <span>☰</span>\n </button>\n </div>\n</header>\n\n@if ((isMenuOpen || isMenuClosing) && navItems && navItems.length > 0) {\n <lib-nav-modal\n [navItems]=\"navItems\"\n [socialItems]=\"socialItems\"\n [closing]=\"isMenuClosing\"\n (close)=\"closeMenu()\"\n (transitionend)=\"finishMenuClose($event)\"\n ></lib-nav-modal>\n}\n",
136
156
  styles: [".header-clear{border-radius:0;position:sticky;top:0;z-index:100;padding-block:0;margin-top:1rem;transition:background .3s ease,box-shadow .3s ease;background:var(--header-bg)}.header-clear.is-scrolled{background:var(--header-bg-fixed-dark);box-shadow:0 2px 12px #00000014}.header-clear.is-scrolled .header-logo a{padding-inline:1.5rem}.header-clear.is-scrolled .header-logo span{color:var(--header-logo-text-dark)}.header-clear.is-scrolled .header-actions{padding-inline:1.5rem}.header-clear.is-scrolled .header-actions .btn-header{background:var(--header-bg-fixed-light)}.header-logo{display:flex;align-items:center;gap:.5rem;color:var(--header-logo-text)}.header-logo img{width:80px;height:80px;object-fit:contain;object-position:left}.header-logo span{display:flex;min-width:10rem}.header-actions{display:flex;align-items:center;justify-content:flex-end;gap:1rem}.lang{text-transform:uppercase}\n"]
137
157
  }]
138
158
  }],
@@ -1 +1 @@
1
- {"version":3,"file":"lluc_llull-ui-lib-headers-header-clear.mjs","names":[],"sources":["../../../projects/ui-lib/headers/header-clear/header-clear.component.ts","../../../projects/ui-lib/headers/header-clear/header-clear.component.html"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { HeaderScrollDirective, LinkTypeDirective } from '@lluc_llull/ui-lib/directives';\nimport {\n UiLibButtonI,\n UiLibImageI,\n UiLibNavItemsI,\n UiLibSocialItemsI,\n} from '@lluc_llull/ui-lib/interfaces';\nimport { Theme, ThemeService } from '@lluc_llull/ui-lib/theme';\nimport { Subscription } from 'rxjs';\nimport { mapNavModal } from '@lluc_llull/ui-lib/mapper';\nimport { NavModalComponent } from '@lluc_llull/ui-lib/modals';\nimport { UiIconComponent } from '@lluc_llull/ui-lib/shared';\n\n@Component({\n selector: 'lib-header-clear',\n standalone: true,\n imports: [CommonModule, NavModalComponent, LinkTypeDirective, UiIconComponent, HeaderScrollDirective],\n templateUrl: './header-clear.component.html',\n styleUrl: './header-clear.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HeaderClearComponent implements OnInit, OnDestroy, OnChanges {\n isMenuOpen = false;\n currentTheme: Theme = 'light';\n private themeSubscription?: Subscription;\n\n @Input() logo?: UiLibImageI;\n @Input() logoDark?: UiLibImageI;\n @Input() navItems?: UiLibNavItemsI[];\n @Input() socialItems?: UiLibSocialItemsI[];\n @Input() homeLink?: UiLibButtonI;\n @Input() navigation: any;\n @Input() lang: string = 'es';\n\n @Output() langModal = new EventEmitter<void>();\n @Output() theme = new EventEmitter<void>();\n\n constructor(private themeService: ThemeService) {}\n\n ngOnInit(): void {\n this.themeSubscription = this.themeService.currentTheme$.subscribe((theme) => {\n this.currentTheme = theme;\n });\n }\n\n ngOnChanges() {\n this.navItems = mapNavModal(this.navigation, this.lang);\n }\n\n ngOnDestroy(): void {\n this.themeSubscription?.unsubscribe();\n }\n\n openLanguagesModal(): void {\n this.langModal.emit();\n }\n\n toggleTheme(): void {\n this.themeService.toggleTheme();\n this.theme.emit();\n }\n\n toggleMenu(): void {\n this.isMenuOpen = !this.isMenuOpen;\n }\n}\n","<header class=\"header-clear main-grid col-span-full sm:col-span-12 sm:col-start-1\" headerScroll [scrollThreshold]=\"60\">\n <a [href]=\"homeLink?.url\" [linkType]=\"homeLink?.linkType\">\n <div class=\"header-logo col-span-full sm:col-span-4 sm:col-start-1\">\n <!-- Logo -->\n <img\n [src]=\"currentTheme === 'dark' ? logoDark?.url : logo?.url\"\n [alt]=\"currentTheme === 'dark' ? logoDark?.alt : logo?.alt\"\n />\n <span>LLUC LLULL</span>\n </div>\n </a>\n\n <div class=\"header-actions col-span-full sm:col-span-6 sm:col-start-7\">\n <!-- Idioma -->\n <button class=\"btn btn-header\" (click)=\"openLanguagesModal()\">\n <span class=\"lang\">{{ lang }}</span>\n </button>\n\n <!-- Icono de tema -->\n <button class=\"btn btn-header\" aria-label=\"Toggle theme\" (click)=\"toggleTheme()\">\n <ui-icon\n [name]=\"currentTheme === 'dark' ? 'sun' : 'moon'\"\n [size]=\"17\"\n [color]=\"'var(--color-primary)'\"\n ></ui-icon>\n </button>\n\n <!-- Icono de menú -->\n <button class=\"btn btn-header\" aria-label=\"Open nav\" (click)=\"toggleMenu()\">\n <span>☰</span>\n </button>\n </div>\n</header>\n\n@if (isMenuOpen && navItems && navItems.length > 0) {\n <lib-nav-modal\n [navItems]=\"navItems\"\n [socialItems]=\"socialItems\"\n (close)=\"isMenuOpen = false\"\n ></lib-nav-modal>\n}\n"],"mappings":";;;;;;;;AAgCA,IAAa,uBAAb,MAAa,qBAAoB;CAgBT;CAfpB,aAAa;CACb,eAAsB;CACd;CAEC;CACA;CACA;CACA;CACA;CACA;CACA,OAAe;CAEd,YAAY,IAAI,aAAY;CAC5B,QAAQ,IAAI,aAAY;CAElC,YAAoB,cAA0B;EAA1B,KAAA,eAAA;CAA6B;CAEjD,WAAQ;EACJ,KAAK,oBAAoB,KAAK,aAAa,cAAc,WAAW,UAAS;GACzE,KAAK,eAAe;EACxB,CAAC;CACL;CAEA,cAAW;EACP,KAAK,WAAW,YAAY,KAAK,YAAY,KAAK,IAAI;CAC1D;CAEA,cAAW;EACP,KAAK,mBAAmB,YAAW;CACvC;CAEA,qBAAkB;EACd,KAAK,UAAU,KAAI;CACvB;CAEA,cAAW;EACP,KAAK,aAAa,YAAW;EAC7B,KAAK,MAAM,KAAI;CACnB;CAEA,aAAU;EACN,KAAK,aAAa,CAAC,KAAK;CAC5B;CA3CS,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAoB,MAAA,CAAA,EAAA,OAAA,GAAA,aAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAApB,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAoB,cAAA;EAAA,UAAA;EAAA,QAAA;GAAA,MAAA;GAAA,UAAA;GAAA,UAAA;GAAA,aAAA;GAAA,UAAA;GAAA,YAAA;GAAA,MAAA;EAAA;EAAA,SAAA;GAAA,WAAA;GAAA,OAAA;EAAA;EAAA,eAAA;EAAA,UAAA;EAAA,UChCjC;EAyCA,QAAA,CAAA,q4BAAA;EAAA,cAAA;GAAA;IAAA,MAAA;IAAA,MDdc;GAAY;GAAA;IAAA,MAAA;IAAA,MAAE;IAAiB,UAAA;IAAA,QAAA,CAAA,YAAA,aAAA;IAAA,SAAA,CAAA,OAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAE;IAAiB,UAAA;IAAA,QAAA,CAAA,YAAA,MAAA;IAAA,SAAA,CAAA,eAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAE;IAAe,UAAA;IAAA,QAAA;KAAA;KAAA;KAAA;IAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAE;IAAqB,UAAA;IAAA,QAAA,CAAA,iBAAA;GAAA;EAAA;EAAA,iBAAA,GAAA,wBAAA;CAAA,CAAA;;AAK3F,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAoB,YAAA,CAAA;EARhC,MAAA;EACa,MAAA,CAAA;GAAA,UAAA;GAAkB,YAChB;GAAI,SACP;IAAC;IAAc;IAAmB;IAAmB;IAAiB;GAAqB;GAAC,iBAGpF,wBAAwB;GAAM,UAAA;GAAA,QAAA,CAAA,q4BAAA;EAAA,CAAA;;;;E,SAO9C,MAAA,M;E,aACA,MAAA,M;E,aACA,MAAA,M;E,gBACA,MAAA,M;E,aACA,MAAA,M;E,eACA,MAAA,M;E,SACA,MAAA,M;E,cAEA,MAAA,O;E,UACA,MAAA,O"}
1
+ {"version":3,"file":"lluc_llull-ui-lib-headers-header-clear.mjs","names":[],"sources":["../../../projects/ui-lib/headers/header-clear/header-clear.component.ts","../../../projects/ui-lib/headers/header-clear/header-clear.component.html"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { HeaderScrollDirective, LinkTypeDirective } from '@lluc_llull/ui-lib/directives';\nimport {\n UiLibButtonI,\n UiLibImageI,\n UiLibNavItemsI,\n UiLibSocialItemsI,\n} from '@lluc_llull/ui-lib/interfaces';\nimport { Theme, ThemeService } from '@lluc_llull/ui-lib/theme';\nimport { Subscription } from 'rxjs';\nimport { mapNavModal } from '@lluc_llull/ui-lib/mapper';\nimport { NavModalComponent } from '@lluc_llull/ui-lib/modals';\nimport { UiIconComponent } from '@lluc_llull/ui-lib/shared';\n\n@Component({\n selector: 'lib-header-clear',\n standalone: true,\n imports: [CommonModule, NavModalComponent, LinkTypeDirective, UiIconComponent, HeaderScrollDirective],\n templateUrl: './header-clear.component.html',\n styleUrl: './header-clear.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HeaderClearComponent implements OnInit, OnDestroy, OnChanges {\n isMenuOpen = false;\n isMenuClosing = false;\n currentTheme: Theme = 'light';\n private themeSubscription?: Subscription;\n\n @Input() logo?: UiLibImageI;\n @Input() logoDark?: UiLibImageI;\n @Input() navItems?: UiLibNavItemsI[];\n @Input() socialItems?: UiLibSocialItemsI[];\n @Input() homeLink?: UiLibButtonI;\n @Input() navigation: any;\n @Input() lang: string = 'es';\n\n @Output() langModal = new EventEmitter<void>();\n @Output() theme = new EventEmitter<void>();\n\n constructor(private themeService: ThemeService) {}\n\n ngOnInit(): void {\n this.themeSubscription = this.themeService.currentTheme$.subscribe((theme) => {\n this.currentTheme = theme;\n });\n }\n\n ngOnChanges() {\n this.navItems = mapNavModal(this.navigation, this.lang);\n }\n\n ngOnDestroy(): void {\n this.themeSubscription?.unsubscribe();\n }\n\n openLanguagesModal(): void {\n this.langModal.emit();\n }\n\n toggleTheme(): void {\n this.themeService.toggleTheme();\n this.theme.emit();\n }\n\n toggleMenu(): void {\n if (this.isMenuOpen) {\n this.closeMenu();\n return;\n }\n\n this.isMenuClosing = false;\n this.isMenuOpen = true;\n }\n\n closeMenu(): void {\n if (!this.isMenuOpen && !this.isMenuClosing) return;\n\n this.isMenuClosing = true;\n this.isMenuOpen = false;\n }\n\n finishMenuClose(event: TransitionEvent): void {\n if (!this.isMenuClosing || event.propertyName !== 'visibility') return;\n if (!(event.target instanceof HTMLElement) || !event.target.classList.contains('modal-content')) return;\n\n this.isMenuClosing = false;\n }\n}\n","<header class=\"header-clear main-grid col-span-full sm:col-span-12 sm:col-start-1\" headerScroll [scrollThreshold]=\"60\">\n <a [href]=\"homeLink?.url\" [linkType]=\"homeLink?.linkType\">\n <div class=\"header-logo col-span-full sm:col-span-4 sm:col-start-1\">\n <!-- Logo -->\n <img\n [src]=\"currentTheme === 'dark' ? logoDark?.url : logo?.url\"\n [alt]=\"currentTheme === 'dark' ? logoDark?.alt : logo?.alt\"\n />\n <span>LLUC LLULL</span>\n </div>\n </a>\n\n <div class=\"header-actions col-span-full sm:col-span-6 sm:col-start-7\">\n <!-- Idioma -->\n <button class=\"btn btn-header\" (click)=\"openLanguagesModal()\">\n <span class=\"lang\">{{ lang }}</span>\n </button>\n\n <!-- Icono de tema -->\n <button class=\"btn btn-header\" aria-label=\"Toggle theme\" (click)=\"toggleTheme()\">\n <ui-icon\n [name]=\"currentTheme === 'dark' ? 'sun' : 'moon'\"\n [size]=\"17\"\n [color]=\"'var(--color-primary)'\"\n ></ui-icon>\n </button>\n\n <!-- Icono de menú -->\n <button class=\"btn btn-header\" aria-label=\"Open nav\" (click)=\"toggleMenu()\">\n <span>☰</span>\n </button>\n </div>\n</header>\n\n@if ((isMenuOpen || isMenuClosing) && navItems && navItems.length > 0) {\n <lib-nav-modal\n [navItems]=\"navItems\"\n [socialItems]=\"socialItems\"\n [closing]=\"isMenuClosing\"\n (close)=\"closeMenu()\"\n (transitionend)=\"finishMenuClose($event)\"\n ></lib-nav-modal>\n}\n"],"mappings":";;;;;;;;AAgCA,IAAa,uBAAb,MAAa,qBAAoB;CAiBT;CAhBpB,aAAa;CACb,gBAAgB;CAChB,eAAsB;CACd;CAEC;CACA;CACA;CACA;CACA;CACA;CACA,OAAe;CAEd,YAAY,IAAI,aAAY;CAC5B,QAAQ,IAAI,aAAY;CAElC,YAAoB,cAA0B;EAA1B,KAAA,eAAA;CAA6B;CAEjD,WAAQ;EACJ,KAAK,oBAAoB,KAAK,aAAa,cAAc,WAAW,UAAS;GACzE,KAAK,eAAe;EACxB,CAAC;CACL;CAEA,cAAW;EACP,KAAK,WAAW,YAAY,KAAK,YAAY,KAAK,IAAI;CAC1D;CAEA,cAAW;EACP,KAAK,mBAAmB,YAAW;CACvC;CAEA,qBAAkB;EACd,KAAK,UAAU,KAAI;CACvB;CAEA,cAAW;EACP,KAAK,aAAa,YAAW;EAC7B,KAAK,MAAM,KAAI;CACnB;CAEA,aAAU;EACN,IAAI,KAAK,YAAY;GACjB,KAAK,UAAS;GACd;EACJ;EAEA,KAAK,gBAAgB;EACrB,KAAK,aAAa;CACtB;CAEA,YAAS;EACL,IAAI,CAAC,KAAK,cAAc,CAAC,KAAK,eAAe;EAE7C,KAAK,gBAAgB;EACrB,KAAK,aAAa;CACtB;CAEA,gBAAgB,OAAsB;EAClC,IAAI,CAAC,KAAK,iBAAiB,MAAM,iBAAiB,cAAc;EAChE,IAAI,EAAE,MAAM,kBAAkB,gBAAgB,CAAC,MAAM,OAAO,UAAU,SAAS,eAAe,GAAG;EAEjG,KAAK,gBAAgB;CACzB;CAhES,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAoB,MAAA,CAAA,EAAA,OAAA,GAAA,aAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAApB,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAoB,cAAA;EAAA,UAAA;EAAA,QAAA;GAAA,MAAA;GAAA,UAAA;GAAA,UAAA;GAAA,aAAA;GAAA,UAAA;GAAA,YAAA;GAAA,MAAA;EAAA;EAAA,SAAA;GAAA,WAAA;GAAA,OAAA;EAAA;EAAA,eAAA;EAAA,UAAA;EAAA,UChCjC;EA2CA,QAAA,CAAA,q4BAAA;EAAA,cAAA;GAAA;IAAA,MAAA;IAAA,MDhBc;GAAY;GAAA;IAAA,MAAA;IAAA,MAAE;IAAiB,UAAA;IAAA,QAAA;KAAA;KAAA;KAAA;IAAA;IAAA,SAAA,CAAA,OAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAE;IAAiB,UAAA;IAAA,QAAA,CAAA,YAAA,MAAA;IAAA,SAAA,CAAA,eAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAE;IAAe,UAAA;IAAA,QAAA;KAAA;KAAA;KAAA;IAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAE;IAAqB,UAAA;IAAA,QAAA,CAAA,iBAAA;GAAA;EAAA;EAAA,iBAAA,GAAA,wBAAA;CAAA,CAAA;;AAK3F,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAoB,YAAA,CAAA;EARhC,MAAA;EACa,MAAA,CAAA;GAAA,UAAA;GAAkB,YAChB;GAAI,SACP;IAAC;IAAc;IAAmB;IAAmB;IAAiB;GAAqB;GAAC,iBAGpF,wBAAwB;GAAM,UAAA;GAAA,QAAA,CAAA,q4BAAA;EAAA,CAAA;;;;E,SAQ9C,MAAA,M;E,aACA,MAAA,M;E,aACA,MAAA,M;E,gBACA,MAAA,M;E,aACA,MAAA,M;E,eACA,MAAA,M;E,SACA,MAAA,M;E,cAEA,MAAA,O;E,UACA,MAAA,O"}
@@ -9,6 +9,7 @@ import * as i1 from "@lluc_llull/ui-lib/theme";
9
9
  var HeaderMobileComponent = class HeaderMobileComponent {
10
10
  themeService;
11
11
  isMenuOpen = false;
12
+ isMenuClosing = false;
12
13
  currentTheme = "light";
13
14
  themeSubscription;
14
15
  logo;
@@ -42,7 +43,22 @@ var HeaderMobileComponent = class HeaderMobileComponent {
42
43
  this.theme.emit();
43
44
  }
44
45
  toggleMenu() {
45
- this.isMenuOpen = !this.isMenuOpen;
46
+ if (this.isMenuOpen) {
47
+ this.closeMenu();
48
+ return;
49
+ }
50
+ this.isMenuClosing = false;
51
+ this.isMenuOpen = true;
52
+ }
53
+ closeMenu() {
54
+ if (!this.isMenuOpen && !this.isMenuClosing) return;
55
+ this.isMenuClosing = true;
56
+ this.isMenuOpen = false;
57
+ }
58
+ finishMenuClose(event) {
59
+ if (!this.isMenuClosing || event.propertyName !== "visibility") return;
60
+ if (!(event.target instanceof HTMLElement) || !event.target.classList.contains("modal-content")) return;
61
+ this.isMenuClosing = false;
46
62
  }
47
63
  static ɵfac = i0.ɵɵngDeclareFactory({
48
64
  minVersion: "12.0.0",
@@ -73,7 +89,7 @@ var HeaderMobileComponent = class HeaderMobileComponent {
73
89
  },
74
90
  usesOnChanges: true,
75
91
  ngImport: i0,
76
- template: "<header class=\"header-mobile\" headerScroll [scrollThreshold]=\"60\">\n <a [href]=\"homeLink?.url\" [linkType]=\"homeLink?.linkType\">\n <div class=\"header-logo\">\n <!-- Logo -->\n <img\n [src]=\"currentTheme === 'dark' ? logoDark?.url : logo?.url\"\n [alt]=\"currentTheme === 'dark' ? logoDark?.alt : logo?.alt\"\n />\n </div>\n </a>\n</header>\n\n<div class=\"header-actions\">\n <!-- Idioma -->\n <div class=\"left\">\n <button class=\"btn btn-header\" (click)=\"openLanguagesModal()\">\n <span class=\"lang\">{{ lang }}</span>\n </button>\n </div>\n\n <!-- Icono de tema -->\n <div class=\"center\">\n <button class=\"btn btn-header\" aria-label=\"Toggle theme\" (click)=\"toggleTheme()\">\n <ui-icon\n [name]=\"currentTheme === 'dark' ? 'moon' : 'sun'\"\n [size]=\"17\"\n [color]=\"'var(--color-primary)'\"\n ></ui-icon>\n </button>\n </div>\n\n <!-- Icono de menú -->\n <div class=\"right\">\n <button class=\"btn btn-header\" aria-label=\"Open nav\" (click)=\"toggleMenu()\">\n <span>☰</span>\n </button>\n </div>\n</div>\n\n@if (isMenuOpen && navItems && navItems.length > 0) {\n <lib-nav-modal\n [navItems]=\"navItems\"\n [socialItems]=\"socialItems\"\n (close)=\"isMenuOpen = false\"\n ></lib-nav-modal>\n}\n",
92
+ template: "<header class=\"header-mobile\" headerScroll [scrollThreshold]=\"60\">\n <a [href]=\"homeLink?.url\" [linkType]=\"homeLink?.linkType\">\n <div class=\"header-logo\">\n <!-- Logo -->\n <img\n [src]=\"currentTheme === 'dark' ? logoDark?.url : logo?.url\"\n [alt]=\"currentTheme === 'dark' ? logoDark?.alt : logo?.alt\"\n />\n </div>\n </a>\n</header>\n\n<div class=\"header-actions\">\n <!-- Idioma -->\n <div class=\"left\">\n <button class=\"btn btn-header\" (click)=\"openLanguagesModal()\">\n <span class=\"lang\">{{ lang }}</span>\n </button>\n </div>\n\n <!-- Icono de tema -->\n <div class=\"center\">\n <button class=\"btn btn-header\" aria-label=\"Toggle theme\" (click)=\"toggleTheme()\">\n <ui-icon\n [name]=\"currentTheme === 'dark' ? 'moon' : 'sun'\"\n [size]=\"17\"\n [color]=\"'var(--color-primary)'\"\n ></ui-icon>\n </button>\n </div>\n\n <!-- Icono de menú -->\n <div class=\"right\">\n <button class=\"btn btn-header\" aria-label=\"Open nav\" (click)=\"toggleMenu()\">\n <span>☰</span>\n </button>\n </div>\n</div>\n\n@if ((isMenuOpen || isMenuClosing) && navItems && navItems.length > 0) {\n <lib-nav-modal\n [navItems]=\"navItems\"\n [socialItems]=\"socialItems\"\n [closing]=\"isMenuClosing\"\n (close)=\"closeMenu()\"\n (transitionend)=\"finishMenuClose($event)\"\n ></lib-nav-modal>\n}\n",
77
93
  styles: [".header-mobile{display:flex;justify-content:center;align-items:center;padding:1rem 0;border-radius:0;position:fixed;top:0;z-index:100;width:100vw;background:var(--header-bg);transition:background .3s ease,box-shadow .3s ease}.header-mobile.is-scrolled{background:var(--header-bg-fixed-dark);box-shadow:0 2px 12px #00000014}.header-logo{display:flex;align-items:center;gap:.5rem;color:var(--header-logo-text)}.header-logo img{width:80px;height:80px;object-fit:contain;object-position:center}.header-actions{position:fixed;bottom:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;padding:.5rem 1rem;background-color:var(--header-mobile-bg);z-index:100;box-sizing:border-box}.header-actions .center{margin:0 auto}.lang{text-transform:uppercase}\n"],
78
94
  dependencies: [
79
95
  {
@@ -84,7 +100,11 @@ var HeaderMobileComponent = class HeaderMobileComponent {
84
100
  kind: "component",
85
101
  type: NavModalComponent,
86
102
  selector: "lib-nav-modal",
87
- inputs: ["navItems", "socialItems"],
103
+ inputs: [
104
+ "navItems",
105
+ "socialItems",
106
+ "closing"
107
+ ],
88
108
  outputs: ["close"]
89
109
  },
90
110
  {
@@ -132,7 +152,7 @@ i0.ɵɵngDeclareClassMetadata({
132
152
  UiIconComponent
133
153
  ],
134
154
  changeDetection: ChangeDetectionStrategy.OnPush,
135
- template: "<header class=\"header-mobile\" headerScroll [scrollThreshold]=\"60\">\n <a [href]=\"homeLink?.url\" [linkType]=\"homeLink?.linkType\">\n <div class=\"header-logo\">\n <!-- Logo -->\n <img\n [src]=\"currentTheme === 'dark' ? logoDark?.url : logo?.url\"\n [alt]=\"currentTheme === 'dark' ? logoDark?.alt : logo?.alt\"\n />\n </div>\n </a>\n</header>\n\n<div class=\"header-actions\">\n <!-- Idioma -->\n <div class=\"left\">\n <button class=\"btn btn-header\" (click)=\"openLanguagesModal()\">\n <span class=\"lang\">{{ lang }}</span>\n </button>\n </div>\n\n <!-- Icono de tema -->\n <div class=\"center\">\n <button class=\"btn btn-header\" aria-label=\"Toggle theme\" (click)=\"toggleTheme()\">\n <ui-icon\n [name]=\"currentTheme === 'dark' ? 'moon' : 'sun'\"\n [size]=\"17\"\n [color]=\"'var(--color-primary)'\"\n ></ui-icon>\n </button>\n </div>\n\n <!-- Icono de menú -->\n <div class=\"right\">\n <button class=\"btn btn-header\" aria-label=\"Open nav\" (click)=\"toggleMenu()\">\n <span>☰</span>\n </button>\n </div>\n</div>\n\n@if (isMenuOpen && navItems && navItems.length > 0) {\n <lib-nav-modal\n [navItems]=\"navItems\"\n [socialItems]=\"socialItems\"\n (close)=\"isMenuOpen = false\"\n ></lib-nav-modal>\n}\n",
155
+ template: "<header class=\"header-mobile\" headerScroll [scrollThreshold]=\"60\">\n <a [href]=\"homeLink?.url\" [linkType]=\"homeLink?.linkType\">\n <div class=\"header-logo\">\n <!-- Logo -->\n <img\n [src]=\"currentTheme === 'dark' ? logoDark?.url : logo?.url\"\n [alt]=\"currentTheme === 'dark' ? logoDark?.alt : logo?.alt\"\n />\n </div>\n </a>\n</header>\n\n<div class=\"header-actions\">\n <!-- Idioma -->\n <div class=\"left\">\n <button class=\"btn btn-header\" (click)=\"openLanguagesModal()\">\n <span class=\"lang\">{{ lang }}</span>\n </button>\n </div>\n\n <!-- Icono de tema -->\n <div class=\"center\">\n <button class=\"btn btn-header\" aria-label=\"Toggle theme\" (click)=\"toggleTheme()\">\n <ui-icon\n [name]=\"currentTheme === 'dark' ? 'moon' : 'sun'\"\n [size]=\"17\"\n [color]=\"'var(--color-primary)'\"\n ></ui-icon>\n </button>\n </div>\n\n <!-- Icono de menú -->\n <div class=\"right\">\n <button class=\"btn btn-header\" aria-label=\"Open nav\" (click)=\"toggleMenu()\">\n <span>☰</span>\n </button>\n </div>\n</div>\n\n@if ((isMenuOpen || isMenuClosing) && navItems && navItems.length > 0) {\n <lib-nav-modal\n [navItems]=\"navItems\"\n [socialItems]=\"socialItems\"\n [closing]=\"isMenuClosing\"\n (close)=\"closeMenu()\"\n (transitionend)=\"finishMenuClose($event)\"\n ></lib-nav-modal>\n}\n",
136
156
  styles: [".header-mobile{display:flex;justify-content:center;align-items:center;padding:1rem 0;border-radius:0;position:fixed;top:0;z-index:100;width:100vw;background:var(--header-bg);transition:background .3s ease,box-shadow .3s ease}.header-mobile.is-scrolled{background:var(--header-bg-fixed-dark);box-shadow:0 2px 12px #00000014}.header-logo{display:flex;align-items:center;gap:.5rem;color:var(--header-logo-text)}.header-logo img{width:80px;height:80px;object-fit:contain;object-position:center}.header-actions{position:fixed;bottom:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;padding:.5rem 1rem;background-color:var(--header-mobile-bg);z-index:100;box-sizing:border-box}.header-actions .center{margin:0 auto}.lang{text-transform:uppercase}\n"]
137
157
  }]
138
158
  }],
@@ -1 +1 @@
1
- {"version":3,"file":"lluc_llull-ui-lib-headers-header-mobile.mjs","names":[],"sources":["../../../projects/ui-lib/headers/header-mobile/header-mobile.component.ts","../../../projects/ui-lib/headers/header-mobile/header-mobile.component.html"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { HeaderScrollDirective, LinkTypeDirective } from '@lluc_llull/ui-lib/directives';\nimport {\n UiLibButtonI,\n UiLibImageI,\n UiLibNavItemsI,\n UiLibSocialItemsI,\n} from '@lluc_llull/ui-lib/interfaces';\nimport { Theme, ThemeService } from '@lluc_llull/ui-lib/theme';\nimport { Subscription } from 'rxjs';\nimport { mapNavModal } from '@lluc_llull/ui-lib/mapper';\nimport { NavModalComponent } from '@lluc_llull/ui-lib/modals';\nimport { UiIconComponent } from '@lluc_llull/ui-lib/shared';\n\n@Component({\n selector: 'lib-header-mobile',\n standalone: true,\n imports: [CommonModule, NavModalComponent, HeaderScrollDirective, LinkTypeDirective, UiIconComponent],\n templateUrl: './header-mobile.component.html',\n styleUrl: './header-mobile.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HeaderMobileComponent implements OnInit, OnChanges, OnDestroy {\n isMenuOpen = false;\n currentTheme: Theme = 'light';\n private themeSubscription?: Subscription;\n\n @Input() logo?: UiLibImageI;\n @Input() logoDark?: UiLibImageI;\n @Input() navItems?: UiLibNavItemsI[];\n @Input() socialItems?: UiLibSocialItemsI[];\n @Input() homeLink?: UiLibButtonI;\n @Input() navigation: any;\n @Input() lang: string = 'es';\n\n @Output() langModal = new EventEmitter<void>();\n @Output() theme = new EventEmitter<void>();\n\n constructor(private themeService: ThemeService) {}\n\n ngOnInit(): void {\n this.themeSubscription = this.themeService.currentTheme$.subscribe((theme) => {\n this.currentTheme = theme;\n });\n }\n\n ngOnChanges() {\n this.navItems = mapNavModal(this.navigation, this.lang);\n }\n\n ngOnDestroy(): void {\n this.themeSubscription?.unsubscribe();\n }\n\n openLanguagesModal(): void {\n this.langModal.emit();\n }\n\n toggleTheme(): void {\n this.themeService.toggleTheme();\n this.theme.emit();\n }\n\n toggleMenu(): void {\n this.isMenuOpen = !this.isMenuOpen;\n }\n}\n","<header class=\"header-mobile\" headerScroll [scrollThreshold]=\"60\">\n <a [href]=\"homeLink?.url\" [linkType]=\"homeLink?.linkType\">\n <div class=\"header-logo\">\n <!-- Logo -->\n <img\n [src]=\"currentTheme === 'dark' ? logoDark?.url : logo?.url\"\n [alt]=\"currentTheme === 'dark' ? logoDark?.alt : logo?.alt\"\n />\n </div>\n </a>\n</header>\n\n<div class=\"header-actions\">\n <!-- Idioma -->\n <div class=\"left\">\n <button class=\"btn btn-header\" (click)=\"openLanguagesModal()\">\n <span class=\"lang\">{{ lang }}</span>\n </button>\n </div>\n\n <!-- Icono de tema -->\n <div class=\"center\">\n <button class=\"btn btn-header\" aria-label=\"Toggle theme\" (click)=\"toggleTheme()\">\n <ui-icon\n [name]=\"currentTheme === 'dark' ? 'moon' : 'sun'\"\n [size]=\"17\"\n [color]=\"'var(--color-primary)'\"\n ></ui-icon>\n </button>\n </div>\n\n <!-- Icono de menú -->\n <div class=\"right\">\n <button class=\"btn btn-header\" aria-label=\"Open nav\" (click)=\"toggleMenu()\">\n <span>☰</span>\n </button>\n </div>\n</div>\n\n@if (isMenuOpen && navItems && navItems.length > 0) {\n <lib-nav-modal\n [navItems]=\"navItems\"\n [socialItems]=\"socialItems\"\n (close)=\"isMenuOpen = false\"\n ></lib-nav-modal>\n}\n"],"mappings":";;;;;;;;AAgCA,IAAa,wBAAb,MAAa,sBAAqB;CAgBV;CAfpB,aAAa;CACb,eAAsB;CACd;CAEC;CACA;CACA;CACA;CACA;CACA;CACA,OAAe;CAEd,YAAY,IAAI,aAAY;CAC5B,QAAQ,IAAI,aAAY;CAElC,YAAoB,cAA0B;EAA1B,KAAA,eAAA;CAA6B;CAEjD,WAAQ;EACJ,KAAK,oBAAoB,KAAK,aAAa,cAAc,WAAW,UAAS;GACzE,KAAK,eAAe;EACxB,CAAC;CACL;CAEA,cAAW;EACP,KAAK,WAAW,YAAY,KAAK,YAAY,KAAK,IAAI;CAC1D;CAEA,cAAW;EACP,KAAK,mBAAmB,YAAW;CACvC;CAEA,qBAAkB;EACd,KAAK,UAAU,KAAI;CACvB;CAEA,cAAW;EACP,KAAK,aAAa,YAAW;EAC7B,KAAK,MAAM,KAAI;CACnB;CAEA,aAAU;EACN,KAAK,aAAa,CAAC,KAAK;CAC5B;CA3CS,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAqB,MAAA,CAAA,EAAA,OAAA,GAAA,aAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAArB,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAqB,cAAA;EAAA,UAAA;EAAA,QAAA;GAAA,MAAA;GAAA,UAAA;GAAA,UAAA;GAAA,aAAA;GAAA,UAAA;GAAA,YAAA;GAAA,MAAA;EAAA;EAAA,SAAA;GAAA,WAAA;GAAA,OAAA;EAAA;EAAA,eAAA;EAAA,UAAA;EAAA,UChClC;EA8CA,QAAA,CAAA,swBAAA;EAAA,cAAA;GAAA;IAAA,MAAA;IAAA,MDnBc;GAAY;GAAA;IAAA,MAAA;IAAA,MAAE;IAAiB,UAAA;IAAA,QAAA,CAAA,YAAA,aAAA;IAAA,SAAA,CAAA,OAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAE;IAAqB,UAAA;IAAA,QAAA,CAAA,iBAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAE;IAAiB,UAAA;IAAA,QAAA,CAAA,YAAA,MAAA;IAAA,SAAA,CAAA,eAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAE;IAAe,UAAA;IAAA,QAAA;KAAA;KAAA;KAAA;IAAA;GAAA;EAAA;EAAA,iBAAA,GAAA,wBAAA;CAAA,CAAA;;AAK3F,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAqB,YAAA,CAAA;EARjC,MAAA;EACa,MAAA,CAAA;GAAA,UAAA;GAAmB,YACjB;GAAI,SACP;IAAC;IAAc;IAAmB;IAAuB;IAAmB;GAAe;GAAC,iBAGpF,wBAAwB;GAAM,UAAA;GAAA,QAAA,CAAA,swBAAA;EAAA,CAAA;;;;E,SAO9C,MAAA,M;E,aACA,MAAA,M;E,aACA,MAAA,M;E,gBACA,MAAA,M;E,aACA,MAAA,M;E,eACA,MAAA,M;E,SACA,MAAA,M;E,cAEA,MAAA,O;E,UACA,MAAA,O"}
1
+ {"version":3,"file":"lluc_llull-ui-lib-headers-header-mobile.mjs","names":[],"sources":["../../../projects/ui-lib/headers/header-mobile/header-mobile.component.ts","../../../projects/ui-lib/headers/header-mobile/header-mobile.component.html"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { HeaderScrollDirective, LinkTypeDirective } from '@lluc_llull/ui-lib/directives';\nimport {\n UiLibButtonI,\n UiLibImageI,\n UiLibNavItemsI,\n UiLibSocialItemsI,\n} from '@lluc_llull/ui-lib/interfaces';\nimport { Theme, ThemeService } from '@lluc_llull/ui-lib/theme';\nimport { Subscription } from 'rxjs';\nimport { mapNavModal } from '@lluc_llull/ui-lib/mapper';\nimport { NavModalComponent } from '@lluc_llull/ui-lib/modals';\nimport { UiIconComponent } from '@lluc_llull/ui-lib/shared';\n\n@Component({\n selector: 'lib-header-mobile',\n standalone: true,\n imports: [CommonModule, NavModalComponent, HeaderScrollDirective, LinkTypeDirective, UiIconComponent],\n templateUrl: './header-mobile.component.html',\n styleUrl: './header-mobile.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HeaderMobileComponent implements OnInit, OnChanges, OnDestroy {\n isMenuOpen = false;\n isMenuClosing = false;\n currentTheme: Theme = 'light';\n private themeSubscription?: Subscription;\n\n @Input() logo?: UiLibImageI;\n @Input() logoDark?: UiLibImageI;\n @Input() navItems?: UiLibNavItemsI[];\n @Input() socialItems?: UiLibSocialItemsI[];\n @Input() homeLink?: UiLibButtonI;\n @Input() navigation: any;\n @Input() lang: string = 'es';\n\n @Output() langModal = new EventEmitter<void>();\n @Output() theme = new EventEmitter<void>();\n\n constructor(private themeService: ThemeService) {}\n\n ngOnInit(): void {\n this.themeSubscription = this.themeService.currentTheme$.subscribe((theme) => {\n this.currentTheme = theme;\n });\n }\n\n ngOnChanges() {\n this.navItems = mapNavModal(this.navigation, this.lang);\n }\n\n ngOnDestroy(): void {\n this.themeSubscription?.unsubscribe();\n }\n\n openLanguagesModal(): void {\n this.langModal.emit();\n }\n\n toggleTheme(): void {\n this.themeService.toggleTheme();\n this.theme.emit();\n }\n\n toggleMenu(): void {\n if (this.isMenuOpen) {\n this.closeMenu();\n return;\n }\n\n this.isMenuClosing = false;\n this.isMenuOpen = true;\n }\n\n closeMenu(): void {\n if (!this.isMenuOpen && !this.isMenuClosing) return;\n\n this.isMenuClosing = true;\n this.isMenuOpen = false;\n }\n\n finishMenuClose(event: TransitionEvent): void {\n if (!this.isMenuClosing || event.propertyName !== 'visibility') return;\n if (!(event.target instanceof HTMLElement) || !event.target.classList.contains('modal-content')) return;\n\n this.isMenuClosing = false;\n }\n}\n","<header class=\"header-mobile\" headerScroll [scrollThreshold]=\"60\">\n <a [href]=\"homeLink?.url\" [linkType]=\"homeLink?.linkType\">\n <div class=\"header-logo\">\n <!-- Logo -->\n <img\n [src]=\"currentTheme === 'dark' ? logoDark?.url : logo?.url\"\n [alt]=\"currentTheme === 'dark' ? logoDark?.alt : logo?.alt\"\n />\n </div>\n </a>\n</header>\n\n<div class=\"header-actions\">\n <!-- Idioma -->\n <div class=\"left\">\n <button class=\"btn btn-header\" (click)=\"openLanguagesModal()\">\n <span class=\"lang\">{{ lang }}</span>\n </button>\n </div>\n\n <!-- Icono de tema -->\n <div class=\"center\">\n <button class=\"btn btn-header\" aria-label=\"Toggle theme\" (click)=\"toggleTheme()\">\n <ui-icon\n [name]=\"currentTheme === 'dark' ? 'moon' : 'sun'\"\n [size]=\"17\"\n [color]=\"'var(--color-primary)'\"\n ></ui-icon>\n </button>\n </div>\n\n <!-- Icono de menú -->\n <div class=\"right\">\n <button class=\"btn btn-header\" aria-label=\"Open nav\" (click)=\"toggleMenu()\">\n <span>☰</span>\n </button>\n </div>\n</div>\n\n@if ((isMenuOpen || isMenuClosing) && navItems && navItems.length > 0) {\n <lib-nav-modal\n [navItems]=\"navItems\"\n [socialItems]=\"socialItems\"\n [closing]=\"isMenuClosing\"\n (close)=\"closeMenu()\"\n (transitionend)=\"finishMenuClose($event)\"\n ></lib-nav-modal>\n}\n"],"mappings":";;;;;;;;AAgCA,IAAa,wBAAb,MAAa,sBAAqB;CAiBV;CAhBpB,aAAa;CACb,gBAAgB;CAChB,eAAsB;CACd;CAEC;CACA;CACA;CACA;CACA;CACA;CACA,OAAe;CAEd,YAAY,IAAI,aAAY;CAC5B,QAAQ,IAAI,aAAY;CAElC,YAAoB,cAA0B;EAA1B,KAAA,eAAA;CAA6B;CAEjD,WAAQ;EACJ,KAAK,oBAAoB,KAAK,aAAa,cAAc,WAAW,UAAS;GACzE,KAAK,eAAe;EACxB,CAAC;CACL;CAEA,cAAW;EACP,KAAK,WAAW,YAAY,KAAK,YAAY,KAAK,IAAI;CAC1D;CAEA,cAAW;EACP,KAAK,mBAAmB,YAAW;CACvC;CAEA,qBAAkB;EACd,KAAK,UAAU,KAAI;CACvB;CAEA,cAAW;EACP,KAAK,aAAa,YAAW;EAC7B,KAAK,MAAM,KAAI;CACnB;CAEA,aAAU;EACN,IAAI,KAAK,YAAY;GACjB,KAAK,UAAS;GACd;EACJ;EAEA,KAAK,gBAAgB;EACrB,KAAK,aAAa;CACtB;CAEA,YAAS;EACL,IAAI,CAAC,KAAK,cAAc,CAAC,KAAK,eAAe;EAE7C,KAAK,gBAAgB;EACrB,KAAK,aAAa;CACtB;CAEA,gBAAgB,OAAsB;EAClC,IAAI,CAAC,KAAK,iBAAiB,MAAM,iBAAiB,cAAc;EAChE,IAAI,EAAE,MAAM,kBAAkB,gBAAgB,CAAC,MAAM,OAAO,UAAU,SAAS,eAAe,GAAG;EAEjG,KAAK,gBAAgB;CACzB;CAhES,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAqB,MAAA,CAAA,EAAA,OAAA,GAAA,aAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAArB,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAqB,cAAA;EAAA,UAAA;EAAA,QAAA;GAAA,MAAA;GAAA,UAAA;GAAA,UAAA;GAAA,aAAA;GAAA,UAAA;GAAA,YAAA;GAAA,MAAA;EAAA;EAAA,SAAA;GAAA,WAAA;GAAA,OAAA;EAAA;EAAA,eAAA;EAAA,UAAA;EAAA,UChClC;EAgDA,QAAA,CAAA,swBAAA;EAAA,cAAA;GAAA;IAAA,MAAA;IAAA,MDrBc;GAAY;GAAA;IAAA,MAAA;IAAA,MAAE;IAAiB,UAAA;IAAA,QAAA;KAAA;KAAA;KAAA;IAAA;IAAA,SAAA,CAAA,OAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAE;IAAqB,UAAA;IAAA,QAAA,CAAA,iBAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAE;IAAiB,UAAA;IAAA,QAAA,CAAA,YAAA,MAAA;IAAA,SAAA,CAAA,eAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAE;IAAe,UAAA;IAAA,QAAA;KAAA;KAAA;KAAA;IAAA;GAAA;EAAA;EAAA,iBAAA,GAAA,wBAAA;CAAA,CAAA;;AAK3F,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAqB,YAAA,CAAA;EARjC,MAAA;EACa,MAAA,CAAA;GAAA,UAAA;GAAmB,YACjB;GAAI,SACP;IAAC;IAAc;IAAmB;IAAuB;IAAmB;GAAe;GAAC,iBAGpF,wBAAwB;GAAM,UAAA;GAAA,QAAA,CAAA,swBAAA;EAAA,CAAA;;;;E,SAQ9C,MAAA,M;E,aACA,MAAA,M;E,aACA,MAAA,M;E,gBACA,MAAA,M;E,aACA,MAAA,M;E,eACA,MAAA,M;E,SACA,MAAA,M;E,cAEA,MAAA,O;E,UACA,MAAA,O"}