@lluc_llull/ui-lib 0.26.4 → 0.27.1

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.
@@ -207,13 +207,13 @@ class ContactMinimalComponent {
207
207
  socials;
208
208
  img;
209
209
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: ContactMinimalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
210
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.19", type: ContactMinimalComponent, isStandalone: true, selector: "lib-contact-minimal", inputs: { contactsTitle: "contactsTitle", socialsTitle: "socialsTitle", contacts: "contacts", socials: "socials", img: "img" }, host: { styleAttribute: "display: contents" }, ngImport: i0, template: "<div class=\"contact-minimal col-span-full md:col-span-12 md:col-start-1\" scrollReveal>\n <div class=\"contact-minimal__content\">\n <div class=\"contact-minimal__content--left\">\n @if (contactsTitle) {\n <h2 class=\"subtitle\" [highlight]=\"'#FFFFFF'\">{{ contactsTitle }}</h2>\n }\n @if (contacts && contacts.length > 0) {\n <div class=\"btn-group\">\n @for (contact of contacts; track $index) {\n <a [href]=\"contact?.url\" [linkType]=\"contact?.linkType\" class=\"btn btn-link\">\n {{ contact?.label }}\n </a>\n }\n </div>\n }\n </div>\n <div class=\"contact-minimal__content--right\">\n @if (socialsTitle) {\n <h2 class=\"subtitle\" [highlight]=\"'#FFFFFF'\">{{ socialsTitle }}</h2>\n }\n @if (socials && socials.length > 0) {\n <div class=\"btn-group\">\n @for (social of socials; track $index) {\n <a [href]=\"social?.url\" [linkType]=\"social?.linkType\" class=\"btn btn-link\">\n {{ social?.label }}\n </a>\n }\n </div>\n }\n </div>\n @if (img) {\n <div class=\"contact-minimal__content--media\">\n <img\n [src]=\"img.url\"\n [alt]=\"img.alt\"\n loading=\"eager\"\n fetchpriority=\"high\"\n [attr.width]=\"img.width || 800\"\n [attr.height]=\"img.height || 600\"\n />\n </div>\n }\n </div>\n</div>\n", styles: [".contact-minimal__content{display:grid;grid-auto-flow:column;justify-content:space-between}.contact-minimal__content--media{display:flex;position:absolute;top:25rem;left:50%;transform:translate(-50%,-50%)}.contact-minimal__content--media img{transform:rotate(45deg);width:50rem}@media (max-width: 768px){.contact-minimal__content--media{top:16rem}.contact-minimal__content--media img{width:15rem;height:auto}}.contact-minimal .btn-group{display:flex;flex-direction:column;margin-top:0;gap:0}.contact-minimal .btn{justify-content:start}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: HighlightDirective, selector: "[highlight]", inputs: ["highlight", "highlightThickness"] }, { kind: "directive", type: LinkTypeDirective, selector: "[linkType]", inputs: ["linkType", "href"], outputs: ["anchorClicked"] }, { kind: "directive", type: ScrollRevealDirective, selector: "[scrollReveal]", inputs: ["distance", "duration"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
210
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.19", type: ContactMinimalComponent, isStandalone: true, selector: "lib-contact-minimal", inputs: { contactsTitle: "contactsTitle", socialsTitle: "socialsTitle", contacts: "contacts", socials: "socials", img: "img" }, host: { styleAttribute: "display: contents" }, ngImport: i0, template: "<div class=\"contact-minimal main-grid col-span-full md:col-span-12 md:col-start-1\" scrollReveal>\n <div class=\"contact-minimal__content col-span-full md:col-span-12 md:col-start-1\">\n <div class=\"contact-minimal__content--left col-span-6 col-start-1\">\n @if (contactsTitle) {\n <h2 class=\"subtitle\" [highlight]=\"'#FFFFFF'\">{{ contactsTitle }}</h2>\n }\n @if (contacts && contacts.length > 0) {\n <div class=\"btn-group\">\n @for (contact of contacts; track $index) {\n <a [href]=\"contact?.url\" [linkType]=\"contact?.linkType\" class=\"btn btn-link\">\n {{ contact?.label }}\n </a>\n }\n </div>\n }\n </div>\n <div class=\"contact-minimal__content--right col-span-6 col-start-7\">\n @if (socialsTitle) {\n <h2 class=\"subtitle\" [highlight]=\"'#FFFFFF'\">{{ socialsTitle }}</h2>\n }\n @if (socials && socials.length > 0) {\n <div class=\"btn-group\">\n @for (social of socials; track $index) {\n <a [href]=\"social?.url\" [linkType]=\"social?.linkType\" class=\"btn btn-link\">\n {{ social?.label }}\n </a>\n }\n </div>\n }\n </div>\n </div>\n @if (img) {\n <div class=\"contact-minimal__content--media col-span-full md:col-span-12 md:col-start-1\">\n <img\n [src]=\"img.url\"\n [alt]=\"img.alt\"\n loading=\"eager\"\n fetchpriority=\"high\"\n [attr.width]=\"img.width || 800\"\n [attr.height]=\"img.height || 600\"\n />\n </div>\n }\n</div>\n", styles: [".contact-minimal__content{display:grid;grid-auto-flow:column}.contact-minimal__content--left .btn{justify-content:start;font-size:1.1rem}.contact-minimal__content--right{justify-self:end}.contact-minimal__content--right .btn-group{align-items:end}.contact-minimal__content--right .btn{justify-content:end;font-size:1.1rem}.contact-minimal__content--media{justify-self:center}.contact-minimal__content--media img{transform:rotate(45deg);width:50rem}@media (max-width: 768px){.contact-minimal__content--media{top:16rem}.contact-minimal__content--media img{width:15rem;height:auto}}.contact-minimal .btn-group{display:flex;flex-direction:column;margin-top:1rem;gap:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: HighlightDirective, selector: "[highlight]", inputs: ["highlight", "highlightThickness"] }, { kind: "directive", type: LinkTypeDirective, selector: "[linkType]", inputs: ["linkType", "href"], outputs: ["anchorClicked"] }, { kind: "directive", type: ScrollRevealDirective, selector: "[scrollReveal]", inputs: ["distance", "duration"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
211
211
  }
212
212
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: ContactMinimalComponent, decorators: [{
213
213
  type: Component,
214
214
  args: [{ selector: 'lib-contact-minimal', imports: [CommonModule, HighlightDirective, LinkTypeDirective, ScrollRevealDirective], changeDetection: ChangeDetectionStrategy.OnPush, host: {
215
215
  style: 'display: contents',
216
- }, template: "<div class=\"contact-minimal col-span-full md:col-span-12 md:col-start-1\" scrollReveal>\n <div class=\"contact-minimal__content\">\n <div class=\"contact-minimal__content--left\">\n @if (contactsTitle) {\n <h2 class=\"subtitle\" [highlight]=\"'#FFFFFF'\">{{ contactsTitle }}</h2>\n }\n @if (contacts && contacts.length > 0) {\n <div class=\"btn-group\">\n @for (contact of contacts; track $index) {\n <a [href]=\"contact?.url\" [linkType]=\"contact?.linkType\" class=\"btn btn-link\">\n {{ contact?.label }}\n </a>\n }\n </div>\n }\n </div>\n <div class=\"contact-minimal__content--right\">\n @if (socialsTitle) {\n <h2 class=\"subtitle\" [highlight]=\"'#FFFFFF'\">{{ socialsTitle }}</h2>\n }\n @if (socials && socials.length > 0) {\n <div class=\"btn-group\">\n @for (social of socials; track $index) {\n <a [href]=\"social?.url\" [linkType]=\"social?.linkType\" class=\"btn btn-link\">\n {{ social?.label }}\n </a>\n }\n </div>\n }\n </div>\n @if (img) {\n <div class=\"contact-minimal__content--media\">\n <img\n [src]=\"img.url\"\n [alt]=\"img.alt\"\n loading=\"eager\"\n fetchpriority=\"high\"\n [attr.width]=\"img.width || 800\"\n [attr.height]=\"img.height || 600\"\n />\n </div>\n }\n </div>\n</div>\n", styles: [".contact-minimal__content{display:grid;grid-auto-flow:column;justify-content:space-between}.contact-minimal__content--media{display:flex;position:absolute;top:25rem;left:50%;transform:translate(-50%,-50%)}.contact-minimal__content--media img{transform:rotate(45deg);width:50rem}@media (max-width: 768px){.contact-minimal__content--media{top:16rem}.contact-minimal__content--media img{width:15rem;height:auto}}.contact-minimal .btn-group{display:flex;flex-direction:column;margin-top:0;gap:0}.contact-minimal .btn{justify-content:start}\n"] }]
216
+ }, template: "<div class=\"contact-minimal main-grid col-span-full md:col-span-12 md:col-start-1\" scrollReveal>\n <div class=\"contact-minimal__content col-span-full md:col-span-12 md:col-start-1\">\n <div class=\"contact-minimal__content--left col-span-6 col-start-1\">\n @if (contactsTitle) {\n <h2 class=\"subtitle\" [highlight]=\"'#FFFFFF'\">{{ contactsTitle }}</h2>\n }\n @if (contacts && contacts.length > 0) {\n <div class=\"btn-group\">\n @for (contact of contacts; track $index) {\n <a [href]=\"contact?.url\" [linkType]=\"contact?.linkType\" class=\"btn btn-link\">\n {{ contact?.label }}\n </a>\n }\n </div>\n }\n </div>\n <div class=\"contact-minimal__content--right col-span-6 col-start-7\">\n @if (socialsTitle) {\n <h2 class=\"subtitle\" [highlight]=\"'#FFFFFF'\">{{ socialsTitle }}</h2>\n }\n @if (socials && socials.length > 0) {\n <div class=\"btn-group\">\n @for (social of socials; track $index) {\n <a [href]=\"social?.url\" [linkType]=\"social?.linkType\" class=\"btn btn-link\">\n {{ social?.label }}\n </a>\n }\n </div>\n }\n </div>\n </div>\n @if (img) {\n <div class=\"contact-minimal__content--media col-span-full md:col-span-12 md:col-start-1\">\n <img\n [src]=\"img.url\"\n [alt]=\"img.alt\"\n loading=\"eager\"\n fetchpriority=\"high\"\n [attr.width]=\"img.width || 800\"\n [attr.height]=\"img.height || 600\"\n />\n </div>\n }\n</div>\n", styles: [".contact-minimal__content{display:grid;grid-auto-flow:column}.contact-minimal__content--left .btn{justify-content:start;font-size:1.1rem}.contact-minimal__content--right{justify-self:end}.contact-minimal__content--right .btn-group{align-items:end}.contact-minimal__content--right .btn{justify-content:end;font-size:1.1rem}.contact-minimal__content--media{justify-self:center}.contact-minimal__content--media img{transform:rotate(45deg);width:50rem}@media (max-width: 768px){.contact-minimal__content--media{top:16rem}.contact-minimal__content--media img{width:15rem;height:auto}}.contact-minimal .btn-group{display:flex;flex-direction:column;margin-top:1rem;gap:0}\n"] }]
217
217
  }], propDecorators: { contactsTitle: [{
218
218
  type: Input
219
219
  }], socialsTitle: [{
@@ -1 +1 @@
1
- {"version":3,"file":"lluc_llull-ui-lib-content.mjs","sources":["../../../projects/ui-lib/content/category-progress/category-progress.component.ts","../../../projects/ui-lib/content/category-progress/category-progress.component.html","../../../projects/ui-lib/content/hero-section/hero-section.component.ts","../../../projects/ui-lib/content/hero-section/hero-section.component.html","../../../projects/ui-lib/content/hero-section/hero-section.stories.ts","../../../projects/ui-lib/content/section-intro/section-intro.component.ts","../../../projects/ui-lib/content/section-intro/section-intro.component.html","../../../projects/ui-lib/content/split-previewer/split-previewer.component.ts","../../../projects/ui-lib/content/split-previewer/split-previewer.component.html","../../../projects/ui-lib/content/contact-minimal/contact-minimal.component.ts","../../../projects/ui-lib/content/contact-minimal/contact-minimal.component.html","../../../projects/ui-lib/content/media-split/media-split.component.ts","../../../projects/ui-lib/content/media-split/media-split.component.html","../../../projects/ui-lib/content/stacked-rows/stacked-rows.component.ts","../../../projects/ui-lib/content/stacked-rows/stacked-rows.component.html","../../../projects/ui-lib/content/mosaic-parallax/mosaic-parallax.component.ts","../../../projects/ui-lib/content/mosaic-parallax/mosaic-parallax.component.html","../../../projects/ui-lib/content/content-document/content-document.component.ts","../../../projects/ui-lib/content/content-document/content-document.component.html","../../../projects/ui-lib/content/lluc_llull-ui-lib-content.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { HighlightDirective, ScrollRevealDirective } from '@lluc_llull/ui-lib/directives';\n\n@Component({\n selector: 'lib-category-progress',\n standalone: true,\n imports: [CommonModule, HighlightDirective, ScrollRevealDirective],\n templateUrl: './category-progress.component.html',\n styleUrl: './category-progress.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n style: 'display: contents',\n },\n})\nexport class CategoryProgressComponent {\n @Input() pretitle?: string;\n @Input() title?: string;\n @Input() categories?: ProgressCategoryI[];\n}\n\nexport interface ProgressItemI {\n label: string;\n value: number;\n}\n\nexport interface ProgressCategoryI {\n title: string;\n items: ProgressItemI[];\n}\n","<div class=\"category-progress col-span-full md:col-span-12 md:col-start-1\" scrollReveal>\n @if (pretitle) {\n <h3 class=\"pretitle\">{{ pretitle }}</h3>\n }\n @if (title) {\n <h2 class=\"title\">{{ title }}</h2>\n }\n <div class=\"progress-grid\">\n @for (category of categories; track $index) {\n <div class=\"category\">\n <h3 class=\"subtitle\" [highlight]=\"'#FFFFFF'\">{{ category.title }}</h3>\n\n @for (item of category.items; track $index) {\n <div class=\"item\">\n <div class=\"item-info\">\n <span class=\"label\">{{ item.label }}</span>\n <span class=\"value\">{{ item.value }}%</span>\n </div>\n\n <div class=\"bar\">\n <div class=\"fill\" [style.width.%]=\"item.value\"></div>\n </div>\n </div>\n }\n </div>\n }\n </div>\n</div>\n","import { CommonModule, DOCUMENT } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { LinkTypeDirective, ScrollRevealDirective } from '@lluc_llull/ui-lib/directives';\nimport { UiLibButtonI, UiLibImageI } from '@lluc_llull/ui-lib/interfaces';\nimport { UiIconComponent } from '@lluc_llull/ui-lib/shared';\n\n@Component({\n selector: 'lib-hero-section',\n standalone: true,\n imports: [CommonModule, LinkTypeDirective, UiIconComponent, ScrollRevealDirective],\n templateUrl: './hero-section.component.html',\n styleUrl: './hero-section.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n style: 'display: contents',\n },\n})\nexport class HeroSectionComponent implements OnInit, OnDestroy {\n @Input() variant: 'text' | 'image' = 'text';\n @Input() pretitle?: string;\n @Input() title?: string;\n @Input() subtitle?: string;\n @Input() text?: string;\n @Input() buttons?: UiLibButtonI[];\n @Input() highlight?: string;\n @Input() image?: UiLibImageI;\n\n constructor(@Inject(DOCUMENT) private document: Document) {}\n\n ngOnInit(): void {\n if (this.variant === 'image') {\n this.document.body.classList.add('has-hero-image');\n }\n }\n\n ngOnDestroy(): void {\n this.document.body.classList.remove('has-hero-image');\n }\n}\n","<div\n class=\"hero-section col-span-full\"\n [class.hero-section--text]=\"variant === 'text'\"\n [class.hero-section--image]=\"variant === 'image'\"\n scrollReveal\n>\n @if (variant === 'image' && image) {\n <div class=\"hero-section__bg\">\n <img\n [src]=\"image.url\"\n [alt]=\"image.alt\"\n class=\"hero-img\"\n loading=\"eager\"\n fetchpriority=\"high\"\n decoding=\"async\"\n />\n </div>\n }\n\n <div class=\"hero-section__content col-span-full\">\n @if (pretitle) {\n <h2 class=\"pretitle\">{{ pretitle }}</h2>\n }\n @if (title) {\n <h1 class=\"title\">\n @if (highlight && title.includes(highlight)) {\n {{ title.replace(highlight, '') }}\n <span class=\"highlight-text\">\n {{ highlight }}\n <div class=\"wave-wrapper\">\n <div class=\"wave\"></div>\n </div>\n </span>\n } @else {\n {{ title }}\n }\n </h1>\n }\n @if (subtitle) {\n <h2 class=\"subtitle\">{{ subtitle }}</h2>\n }\n @if (text) {\n <p class=\"text\">{{ text }}</p>\n }\n @if (buttons && buttons.length > 0) {\n <div class=\"btn-group--center\">\n @for (button of buttons; track $index) {\n <a class=\"btn btn-link\" [href]=\"button.url\" [linkType]=\"button.linkType\">\n <ui-icon [name]=\"button.icon!\" [size]=\"17\" [color]=\"'var(--color-primary)'\"></ui-icon>\n {{ button.label }}\n </a>\n }\n </div>\n }\n </div>\n</div>\n","import { LinkType } from '@lluc_llull/ui-lib/enums';\nimport { Meta, StoryObj } from '@storybook/angular';\nimport { HeroSectionComponent } from './hero-section.component';\n\nexport default {\n title: 'Content/HeroSection',\n component: HeroSectionComponent,\n tags: ['autodocs'],\n argTypes: {\n variant: { control: 'radio', options: ['text', 'image'] },\n pretitle: { control: 'text' },\n title: { control: 'text' },\n subtitle: { control: 'text' },\n text: { control: 'text' },\n highlight: { control: 'text' },\n image: { control: 'object' },\n buttons: { control: 'object' },\n },\n} as Meta<HeroSectionComponent>;\n\ntype Story = StoryObj<HeroSectionComponent>;\n\nexport const Default: Story = {\n args: {\n variant: 'text',\n pretitle: 'Bienvenido a',\n title: 'Nuestra Plataforma',\n subtitle: 'Descubre el futuro del desarrollo web',\n text: 'Texto descriptivo de ejemplo para el Hero Section.',\n highlight: 'Innovación',\n buttons: [\n { label: 'Comenzar', url: 'https://www.google.com', linkType: LinkType.External },\n {\n label: 'Más información',\n url: 'https://www.google.com',\n linkType: LinkType.External,\n },\n ],\n },\n};\n\nexport const ImageVariant: Story = {\n args: {\n variant: 'image',\n title: 'Proyecto Destacado',\n subtitle: 'Un ejemplo impresionante',\n text: 'Explora este increíble proyecto con diseño moderno y funcionalidades avanzadas.',\n image: {\n url: 'https://picsum.photos/seed/hero/1920/1080.jpg',\n alt: 'Hero background image',\n },\n buttons: [\n { label: 'Ver proyecto', url: 'https://www.google.com', linkType: LinkType.External },\n ],\n },\n};\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { LinkTypeDirective, ScrollRevealDirective } from '@lluc_llull/ui-lib/directives';\nimport { UiLibButtonI } from '@lluc_llull/ui-lib/interfaces';\nimport { UiIconComponent } from '@lluc_llull/ui-lib/shared';\n\n@Component({\n selector: 'lib-section-intro',\n standalone: true,\n imports: [CommonModule, LinkTypeDirective, UiIconComponent, ScrollRevealDirective],\n templateUrl: './section-intro.component.html',\n styleUrl: './section-intro.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n style: 'display: contents',\n },\n})\nexport class SectionIntroComponent {\n @Input() pretitle?: string;\n @Input() title?: string;\n @Input() subtitle?: string;\n @Input() text?: string;\n @Input() button?: UiLibButtonI;\n}\n","<div class=\"section-intro col-span-full md:col-span-12 md:col-start-1\" scrollReveal>\n @if (pretitle) {\n <h2 class=\"pretitle\">{{ pretitle }}</h2>\n }\n @if (title) {\n <h1 class=\"title\">{{ title }}</h1>\n }\n @if (subtitle) {\n <h2 class=\"subtitle\">{{ subtitle }}</h2>\n }\n @if (text) {\n <p class=\"text\">{{ text }}</p>\n }\n @if (button) {\n <div class=\"btn-group\">\n <a [href]=\"button.url\" [linkType]=\"button.linkType\" class=\"btn btn-link\">\n <ui-icon [name]=\"button.icon!\" [size]=\"17\" [color]=\"'var(--color-primary)'\"></ui-icon>\n {{ button.label }}\n </a>\n </div>\n }\n</div>\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Inject, Input, OnInit, PLATFORM_ID, signal } from '@angular/core';\nimport {\n HighlightDirective,\n LinkTypeDirective,\n ScrollRevealDirective,\n} from '@lluc_llull/ui-lib/directives';\nimport { UiLibButtonI, UiLibImageI } from '@lluc_llull/ui-lib/interfaces';\n\n@Component({\n selector: 'lib-split-previewer',\n imports: [CommonModule, LinkTypeDirective, HighlightDirective, ScrollRevealDirective],\n templateUrl: './split-previewer.component.html',\n styleUrl: './split-previewer.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n style: 'display: contents',\n },\n})\nexport class SplitPreviewerComponent implements OnInit {\n @Input() title?: string;\n @Input() items?: SplitPreviewerItemI[];\n @Input() imageDefault?: UiLibImageI;\n @Input() direction: 'left' | 'right' = 'right';\n\n activeImage = signal<string | undefined>(undefined);\n\n get count(): number {\n return this.items?.length || 0;\n }\n\n constructor(@Inject(PLATFORM_ID) private readonly platformId: Object) {}\n\n ngOnInit() {\n if (!this.items) return;\n if (!isPlatformBrowser(this.platformId)) return;\n if ('requestIdleCallback' in window) {\n (window as any).requestIdleCallback(() => {\n this.items?.forEach((item) => {\n if (item.image?.url) {\n const img = new Image();\n img.src = item.image.url;\n }\n });\n });\n }\n }\n}\n\nexport interface SplitPreviewerItemI {\n title?: string;\n type?: string;\n description?: string;\n tags?: string[];\n link?: UiLibButtonI;\n image?: UiLibImageI;\n}\n","<div\n class=\"split-previewer col-span-full md:col-span-12 md:col-start-1\"\n [class]=\"'split-previewer--' + direction\"\n scrollReveal\n>\n <div class=\"split-previewer__text-column\">\n <div class=\"split-previewer__header\">\n @if (title) {\n <h1 class=\"title\">{{ title }}</h1>\n }\n @if (count) {\n <span class=\"count\">{{ count }}</span>\n }\n </div>\n\n <div class=\"split-previewer__items\" (mouseleave)=\"activeImage.set(undefined)\">\n @for (item of items; track item.title) {\n <a\n [href]=\"item.link?.url\"\n (mouseenter)=\"activeImage.set(item.image?.url)\"\n class=\"split-previewer__item-link\"\n >\n <div class=\"split-previewer__item\">\n <h2 class=\"split-previewer__item-title\" [highlight]=\"'#FFFFFF'\">{{ item.title }}</h2>\n <p class=\"split-previewer__item-text\">{{ item.description }}</p>\n @if (item.tags?.length) {\n <div class=\"split-previewer__item-tags\">\n @for (tag of item.tags; track tag) {\n <span class=\"split-previewer__item-tag\">{{ tag }}</span>\n }\n </div>\n }\n </div>\n </a>\n }\n </div>\n </div>\n\n <div class=\"split-previewer__media\">\n <div class=\"split-previewer__media-inner\">\n <img\n [src]=\"activeImage() || imageDefault?.url\"\n [alt]=\"imageDefault?.alt\"\n class=\"preview-img\"\n loading=\"eager\"\n fetchpriority=\"high\"\n decoding=\"async\"\n />\n </div>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport {\n HighlightDirective,\n LinkTypeDirective,\n ScrollRevealDirective,\n} from '@lluc_llull/ui-lib/directives';\nimport { UiLibButtonI, UiLibImageI } from '@lluc_llull/ui-lib/interfaces';\n\n@Component({\n selector: 'lib-contact-minimal',\n imports: [CommonModule, HighlightDirective, LinkTypeDirective, ScrollRevealDirective],\n templateUrl: './contact-minimal.component.html',\n styleUrl: './contact-minimal.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n style: 'display: contents',\n },\n})\nexport class ContactMinimalComponent {\n @Input() contactsTitle?: string;\n @Input() socialsTitle?: string;\n @Input() contacts?: UiLibButtonI[];\n @Input() socials?: UiLibButtonI[];\n @Input() img?: UiLibImageI;\n}\n","<div class=\"contact-minimal col-span-full md:col-span-12 md:col-start-1\" scrollReveal>\n <div class=\"contact-minimal__content\">\n <div class=\"contact-minimal__content--left\">\n @if (contactsTitle) {\n <h2 class=\"subtitle\" [highlight]=\"'#FFFFFF'\">{{ contactsTitle }}</h2>\n }\n @if (contacts && contacts.length > 0) {\n <div class=\"btn-group\">\n @for (contact of contacts; track $index) {\n <a [href]=\"contact?.url\" [linkType]=\"contact?.linkType\" class=\"btn btn-link\">\n {{ contact?.label }}\n </a>\n }\n </div>\n }\n </div>\n <div class=\"contact-minimal__content--right\">\n @if (socialsTitle) {\n <h2 class=\"subtitle\" [highlight]=\"'#FFFFFF'\">{{ socialsTitle }}</h2>\n }\n @if (socials && socials.length > 0) {\n <div class=\"btn-group\">\n @for (social of socials; track $index) {\n <a [href]=\"social?.url\" [linkType]=\"social?.linkType\" class=\"btn btn-link\">\n {{ social?.label }}\n </a>\n }\n </div>\n }\n </div>\n @if (img) {\n <div class=\"contact-minimal__content--media\">\n <img\n [src]=\"img.url\"\n [alt]=\"img.alt\"\n loading=\"eager\"\n fetchpriority=\"high\"\n [attr.width]=\"img.width || 800\"\n [attr.height]=\"img.height || 600\"\n />\n </div>\n }\n </div>\n</div>\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n Inject,\n Input,\n PLATFORM_ID,\n signal,\n} from '@angular/core';\nimport { UiLibImageI } from '@lluc_llull/ui-lib/interfaces';\n\n@Component({\n selector: 'lib-media-split',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './media-split.component.html',\n styleUrl: './media-split.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n style: 'display: contents',\n },\n})\nexport class MediaSplitComponent {\n @Input() title?: string;\n @Input() text?: string;\n @Input() images?: UiLibImageI[];\n\n activeImageIndex = signal(0);\n imageLoaded = signal(false);\n\n constructor(@Inject(PLATFORM_ID) private readonly platformId: Object) {\n effect(() => {\n this.activeImageIndex();\n\n if (!isPlatformBrowser(this.platformId)) return;\n\n this.imageLoaded.set(false);\n\n requestAnimationFrame(() => {\n this.imageLoaded.set(true);\n });\n });\n }\n\n currentImage = computed(() => {\n const imgs = this.images ?? [];\n return imgs[this.activeImageIndex()] ?? null;\n });\n\n updateActiveImage(index: number) {\n this.activeImageIndex.set(index);\n }\n\n resetImage() {\n this.activeImageIndex.set(0);\n }\n\n ngOnInit() {\n if (!isPlatformBrowser(this.platformId)) return;\n\n if ('requestIdleCallback' in window) {\n (window as any).requestIdleCallback(() => {\n this.preloadImages();\n });\n } else {\n setTimeout(() => this.preloadImages(), 2000);\n }\n }\n\n private preloadImages() {\n this.images?.slice(1).forEach((img) => {\n const i = new Image();\n i.src = img.url;\n });\n }\n}\n","<div class=\"media-split main-grid col-span-full md:col-span-12 md:col-start-1\" scrollReveal>\n <div class=\"media-split__visual col-span-full md:col-span-7 md:col-start-1\">\n @if (title) {\n <h1 class=\"title\">{{ title }}</h1>\n }\n\n @if (images?.length) {\n <div class=\"image-stack\" (mouseleave)=\"resetImage()\">\n <img\n [src]=\"currentImage().url\"\n [alt]=\"currentImage().alt\"\n class=\"img-responsive active-image\"\n [class.loaded]=\"imageLoaded()\"\n loading=\"eager\"\n fetchpriority=\"high\"\n />\n\n <div class=\"hover-grid\">\n @for (image of images; track $index) {\n <div class=\"hover-zone\" (mouseenter)=\"updateActiveImage($index)\"></div>\n }\n </div>\n </div>\n }\n </div>\n\n <div class=\"media-split__info col-span-full md:col-span-5 md:col-start-8\">\n @if (text) {\n <p class=\"text\" [innerHTML]=\"text\"></p>\n }\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'lib-stacked-rows',\n imports: [CommonModule],\n templateUrl: './stacked-rows.component.html',\n styleUrl: './stacked-rows.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n style: 'display: contents',\n },\n})\nexport class StackedRowsComponent {\n @Input() title?: string;\n @Input() text?: string;\n @Input() items?: StackedRowItemI[];\n}\n\nexport interface StackedRowItemI {\n title: string;\n text: string;\n}\n","<div class=\"stacked-rows main-grid col-span-full md:col-span-12 md:col-start-1\" scrollReveal>\n <!-- INTRO -->\n <div class=\"stacked-rows__intro main-grid col-span-full\">\n @if (title) {\n <h1 class=\"subtitle col-span-full md:col-span-3 md:col-start-1\">\n {{ title }}\n </h1>\n }\n\n @if (text) {\n <p class=\"text col-span-full md:col-span-9 md:col-start-4\">\n {{ text }}\n </p>\n }\n </div>\n\n <!-- ITEMS -->\n @if (items) {\n <div class=\"stacked-rows__items col-span-full\">\n @for (item of items; track $index) {\n <div class=\"stacked-rows__items--item main-grid\">\n <h2 class=\"stacked-rows__items--item_title col-span-full md:col-span-3 md:col-start-1\">\n {{ item.title }}\n </h2>\n\n <p class=\"stacked-rows__items--item_text col-span-full md:col-span-7 md:col-start-6\">\n {{ item.text }}\n </p>\n </div>\n }\n </div>\n }\n</div>\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n Inject,\n Input,\n OnDestroy,\n PLATFORM_ID,\n signal,\n ViewChild,\n} from '@angular/core';\nimport { UiLibImageI } from '@lluc_llull/ui-lib/interfaces';\n\n@Component({\n selector: 'app-mosaic-parallax',\n templateUrl: './mosaic-parallax.component.html',\n styleUrls: ['./mosaic-parallax.component.scss'],\n host: {\n style: 'display: contents',\n },\n})\nexport class MosaicParallaxComponent implements AfterViewInit, OnDestroy {\n @Input() title?: string;\n @Input() text?: string;\n @Input() images?: UiLibImageI[];\n\n @ViewChild('mosaicSection') mosaicSection!: ElementRef<HTMLElement>;\n\n isVisible = signal(false);\n private observer?: IntersectionObserver;\n private isBrowser: boolean;\n\n constructor(@Inject(PLATFORM_ID) platformId: object) {\n this.isBrowser = isPlatformBrowser(platformId);\n }\n\n ngAfterViewInit() {\n if (!this.isBrowser) return;\n\n this.observer = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting && !this.isVisible()) {\n this.isVisible.set(true);\n this.observer?.disconnect();\n }\n },\n { threshold: 0.1 },\n );\n\n this.observer.observe(this.mosaicSection.nativeElement);\n }\n\n ngOnDestroy() {\n this.observer?.disconnect();\n }\n}\n","<div class=\"mosaic-parallax main-grid col-span-full\" #mosaicSection>\n\n @if (title) {\n <h2 class=\"subtitle md:col-span-3 md:col-start-1\">{{ title }}</h2>\n }\n\n @if (text) {\n <p class=\"text col-span-full md:col-span-5 md:col-start-1\">\n {{ text }}\n </p>\n }\n\n @if (images && images.length > 0) {\n <div class=\"mosaic-parallax__track col-span-full md:col-span-10 md:col-start-2\">\n @for (item of images; track $index) {\n <article\n class=\"mosaic-item\"\n [class.mosaic-item--visible]=\"isVisible()\"\n [style.--item-index]=\"images.length - 1 - $index\"\n [style.--anim-delay]=\"(images.length - 1 - $index) * 250 + 'ms'\"\n >\n <div class=\"mosaic-item__media\">\n <img [src]=\"item.url\" [alt]=\"item.alt\" loading=\"lazy\" />\n </div>\n @if (item.texts; as texts) {\n <div class=\"mosaic-item__content\">\n <p class=\"mosaic-item__description\">{{ texts.text }}</p>\n <div class=\"mosaic-item__meta\">\n <span class=\"mosaic-item__date\">{{ texts.title }}</span>\n <span class=\"mosaic-item__index\">\n {{ ($index + 1).toString().padStart(2, '0') }}\n </span>\n </div>\n </div>\n }\n </article>\n }\n </div>\n }\n\n</div>","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'lib-content-document',\n imports: [CommonModule],\n templateUrl: './content-document.component.html',\n styleUrl: './content-document.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n style: 'display: contents',\n },\n})\nexport class ContentDocumentComponent {\n @Input() title?: string;\n @Input() items?: ContentDocumentItemI[];\n}\n\nexport interface ContentDocumentItemI {\n title: string;\n text: string;\n}\n","<div class=\"content-document main-grid col-span-full sm:col-span-12 sm:col-start-1\" scrollReveal>\n @if (title) {\n <div class=\"content-document__title main-grid col-span-full\">\n <h1 class=\"title col-span-full\">{{ title }}</h1>\n </div>\n }\n @if (items) {\n <div class=\"content-document__items col-span-full\">\n @for (item of items; track $index) {\n <div class=\"content-document__items--item main-grid\">\n <h2 class=\"content-document__items--item_title col-span-full sm:col-span-12 sm:col-start-1\">\n {{ item.title }}\n </h2>\n <p class=\"content-document__items--item_text col-span-full sm:col-span-4 sm:col-start-5\" [innerHTML]=\"item.text\"></p>\n </div>\n }\n </div>\n }\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lluc_llull-ui-lib-content.mjs","sources":["../../../projects/ui-lib/content/category-progress/category-progress.component.ts","../../../projects/ui-lib/content/category-progress/category-progress.component.html","../../../projects/ui-lib/content/hero-section/hero-section.component.ts","../../../projects/ui-lib/content/hero-section/hero-section.component.html","../../../projects/ui-lib/content/hero-section/hero-section.stories.ts","../../../projects/ui-lib/content/section-intro/section-intro.component.ts","../../../projects/ui-lib/content/section-intro/section-intro.component.html","../../../projects/ui-lib/content/split-previewer/split-previewer.component.ts","../../../projects/ui-lib/content/split-previewer/split-previewer.component.html","../../../projects/ui-lib/content/contact-minimal/contact-minimal.component.ts","../../../projects/ui-lib/content/contact-minimal/contact-minimal.component.html","../../../projects/ui-lib/content/media-split/media-split.component.ts","../../../projects/ui-lib/content/media-split/media-split.component.html","../../../projects/ui-lib/content/stacked-rows/stacked-rows.component.ts","../../../projects/ui-lib/content/stacked-rows/stacked-rows.component.html","../../../projects/ui-lib/content/mosaic-parallax/mosaic-parallax.component.ts","../../../projects/ui-lib/content/mosaic-parallax/mosaic-parallax.component.html","../../../projects/ui-lib/content/content-document/content-document.component.ts","../../../projects/ui-lib/content/content-document/content-document.component.html","../../../projects/ui-lib/content/lluc_llull-ui-lib-content.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { HighlightDirective, ScrollRevealDirective } from '@lluc_llull/ui-lib/directives';\n\n@Component({\n selector: 'lib-category-progress',\n standalone: true,\n imports: [CommonModule, HighlightDirective, ScrollRevealDirective],\n templateUrl: './category-progress.component.html',\n styleUrl: './category-progress.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n style: 'display: contents',\n },\n})\nexport class CategoryProgressComponent {\n @Input() pretitle?: string;\n @Input() title?: string;\n @Input() categories?: ProgressCategoryI[];\n}\n\nexport interface ProgressItemI {\n label: string;\n value: number;\n}\n\nexport interface ProgressCategoryI {\n title: string;\n items: ProgressItemI[];\n}\n","<div class=\"category-progress col-span-full md:col-span-12 md:col-start-1\" scrollReveal>\n @if (pretitle) {\n <h3 class=\"pretitle\">{{ pretitle }}</h3>\n }\n @if (title) {\n <h2 class=\"title\">{{ title }}</h2>\n }\n <div class=\"progress-grid\">\n @for (category of categories; track $index) {\n <div class=\"category\">\n <h3 class=\"subtitle\" [highlight]=\"'#FFFFFF'\">{{ category.title }}</h3>\n\n @for (item of category.items; track $index) {\n <div class=\"item\">\n <div class=\"item-info\">\n <span class=\"label\">{{ item.label }}</span>\n <span class=\"value\">{{ item.value }}%</span>\n </div>\n\n <div class=\"bar\">\n <div class=\"fill\" [style.width.%]=\"item.value\"></div>\n </div>\n </div>\n }\n </div>\n }\n </div>\n</div>\n","import { CommonModule, DOCUMENT } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { LinkTypeDirective, ScrollRevealDirective } from '@lluc_llull/ui-lib/directives';\nimport { UiLibButtonI, UiLibImageI } from '@lluc_llull/ui-lib/interfaces';\nimport { UiIconComponent } from '@lluc_llull/ui-lib/shared';\n\n@Component({\n selector: 'lib-hero-section',\n standalone: true,\n imports: [CommonModule, LinkTypeDirective, UiIconComponent, ScrollRevealDirective],\n templateUrl: './hero-section.component.html',\n styleUrl: './hero-section.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n style: 'display: contents',\n },\n})\nexport class HeroSectionComponent implements OnInit, OnDestroy {\n @Input() variant: 'text' | 'image' = 'text';\n @Input() pretitle?: string;\n @Input() title?: string;\n @Input() subtitle?: string;\n @Input() text?: string;\n @Input() buttons?: UiLibButtonI[];\n @Input() highlight?: string;\n @Input() image?: UiLibImageI;\n\n constructor(@Inject(DOCUMENT) private document: Document) {}\n\n ngOnInit(): void {\n if (this.variant === 'image') {\n this.document.body.classList.add('has-hero-image');\n }\n }\n\n ngOnDestroy(): void {\n this.document.body.classList.remove('has-hero-image');\n }\n}\n","<div\n class=\"hero-section col-span-full\"\n [class.hero-section--text]=\"variant === 'text'\"\n [class.hero-section--image]=\"variant === 'image'\"\n scrollReveal\n>\n @if (variant === 'image' && image) {\n <div class=\"hero-section__bg\">\n <img\n [src]=\"image.url\"\n [alt]=\"image.alt\"\n class=\"hero-img\"\n loading=\"eager\"\n fetchpriority=\"high\"\n decoding=\"async\"\n />\n </div>\n }\n\n <div class=\"hero-section__content col-span-full\">\n @if (pretitle) {\n <h2 class=\"pretitle\">{{ pretitle }}</h2>\n }\n @if (title) {\n <h1 class=\"title\">\n @if (highlight && title.includes(highlight)) {\n {{ title.replace(highlight, '') }}\n <span class=\"highlight-text\">\n {{ highlight }}\n <div class=\"wave-wrapper\">\n <div class=\"wave\"></div>\n </div>\n </span>\n } @else {\n {{ title }}\n }\n </h1>\n }\n @if (subtitle) {\n <h2 class=\"subtitle\">{{ subtitle }}</h2>\n }\n @if (text) {\n <p class=\"text\">{{ text }}</p>\n }\n @if (buttons && buttons.length > 0) {\n <div class=\"btn-group--center\">\n @for (button of buttons; track $index) {\n <a class=\"btn btn-link\" [href]=\"button.url\" [linkType]=\"button.linkType\">\n <ui-icon [name]=\"button.icon!\" [size]=\"17\" [color]=\"'var(--color-primary)'\"></ui-icon>\n {{ button.label }}\n </a>\n }\n </div>\n }\n </div>\n</div>\n","import { LinkType } from '@lluc_llull/ui-lib/enums';\nimport { Meta, StoryObj } from '@storybook/angular';\nimport { HeroSectionComponent } from './hero-section.component';\n\nexport default {\n title: 'Content/HeroSection',\n component: HeroSectionComponent,\n tags: ['autodocs'],\n argTypes: {\n variant: { control: 'radio', options: ['text', 'image'] },\n pretitle: { control: 'text' },\n title: { control: 'text' },\n subtitle: { control: 'text' },\n text: { control: 'text' },\n highlight: { control: 'text' },\n image: { control: 'object' },\n buttons: { control: 'object' },\n },\n} as Meta<HeroSectionComponent>;\n\ntype Story = StoryObj<HeroSectionComponent>;\n\nexport const Default: Story = {\n args: {\n variant: 'text',\n pretitle: 'Bienvenido a',\n title: 'Nuestra Plataforma',\n subtitle: 'Descubre el futuro del desarrollo web',\n text: 'Texto descriptivo de ejemplo para el Hero Section.',\n highlight: 'Innovación',\n buttons: [\n { label: 'Comenzar', url: 'https://www.google.com', linkType: LinkType.External },\n {\n label: 'Más información',\n url: 'https://www.google.com',\n linkType: LinkType.External,\n },\n ],\n },\n};\n\nexport const ImageVariant: Story = {\n args: {\n variant: 'image',\n title: 'Proyecto Destacado',\n subtitle: 'Un ejemplo impresionante',\n text: 'Explora este increíble proyecto con diseño moderno y funcionalidades avanzadas.',\n image: {\n url: 'https://picsum.photos/seed/hero/1920/1080.jpg',\n alt: 'Hero background image',\n },\n buttons: [\n { label: 'Ver proyecto', url: 'https://www.google.com', linkType: LinkType.External },\n ],\n },\n};\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { LinkTypeDirective, ScrollRevealDirective } from '@lluc_llull/ui-lib/directives';\nimport { UiLibButtonI } from '@lluc_llull/ui-lib/interfaces';\nimport { UiIconComponent } from '@lluc_llull/ui-lib/shared';\n\n@Component({\n selector: 'lib-section-intro',\n standalone: true,\n imports: [CommonModule, LinkTypeDirective, UiIconComponent, ScrollRevealDirective],\n templateUrl: './section-intro.component.html',\n styleUrl: './section-intro.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n style: 'display: contents',\n },\n})\nexport class SectionIntroComponent {\n @Input() pretitle?: string;\n @Input() title?: string;\n @Input() subtitle?: string;\n @Input() text?: string;\n @Input() button?: UiLibButtonI;\n}\n","<div class=\"section-intro col-span-full md:col-span-12 md:col-start-1\" scrollReveal>\n @if (pretitle) {\n <h2 class=\"pretitle\">{{ pretitle }}</h2>\n }\n @if (title) {\n <h1 class=\"title\">{{ title }}</h1>\n }\n @if (subtitle) {\n <h2 class=\"subtitle\">{{ subtitle }}</h2>\n }\n @if (text) {\n <p class=\"text\">{{ text }}</p>\n }\n @if (button) {\n <div class=\"btn-group\">\n <a [href]=\"button.url\" [linkType]=\"button.linkType\" class=\"btn btn-link\">\n <ui-icon [name]=\"button.icon!\" [size]=\"17\" [color]=\"'var(--color-primary)'\"></ui-icon>\n {{ button.label }}\n </a>\n </div>\n }\n</div>\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Inject, Input, OnInit, PLATFORM_ID, signal } from '@angular/core';\nimport {\n HighlightDirective,\n LinkTypeDirective,\n ScrollRevealDirective,\n} from '@lluc_llull/ui-lib/directives';\nimport { UiLibButtonI, UiLibImageI } from '@lluc_llull/ui-lib/interfaces';\n\n@Component({\n selector: 'lib-split-previewer',\n imports: [CommonModule, LinkTypeDirective, HighlightDirective, ScrollRevealDirective],\n templateUrl: './split-previewer.component.html',\n styleUrl: './split-previewer.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n style: 'display: contents',\n },\n})\nexport class SplitPreviewerComponent implements OnInit {\n @Input() title?: string;\n @Input() items?: SplitPreviewerItemI[];\n @Input() imageDefault?: UiLibImageI;\n @Input() direction: 'left' | 'right' = 'right';\n\n activeImage = signal<string | undefined>(undefined);\n\n get count(): number {\n return this.items?.length || 0;\n }\n\n constructor(@Inject(PLATFORM_ID) private readonly platformId: Object) {}\n\n ngOnInit() {\n if (!this.items) return;\n if (!isPlatformBrowser(this.platformId)) return;\n if ('requestIdleCallback' in window) {\n (window as any).requestIdleCallback(() => {\n this.items?.forEach((item) => {\n if (item.image?.url) {\n const img = new Image();\n img.src = item.image.url;\n }\n });\n });\n }\n }\n}\n\nexport interface SplitPreviewerItemI {\n title?: string;\n type?: string;\n description?: string;\n tags?: string[];\n link?: UiLibButtonI;\n image?: UiLibImageI;\n}\n","<div\n class=\"split-previewer col-span-full md:col-span-12 md:col-start-1\"\n [class]=\"'split-previewer--' + direction\"\n scrollReveal\n>\n <div class=\"split-previewer__text-column\">\n <div class=\"split-previewer__header\">\n @if (title) {\n <h1 class=\"title\">{{ title }}</h1>\n }\n @if (count) {\n <span class=\"count\">{{ count }}</span>\n }\n </div>\n\n <div class=\"split-previewer__items\" (mouseleave)=\"activeImage.set(undefined)\">\n @for (item of items; track item.title) {\n <a\n [href]=\"item.link?.url\"\n (mouseenter)=\"activeImage.set(item.image?.url)\"\n class=\"split-previewer__item-link\"\n >\n <div class=\"split-previewer__item\">\n <h2 class=\"split-previewer__item-title\" [highlight]=\"'#FFFFFF'\">{{ item.title }}</h2>\n <p class=\"split-previewer__item-text\">{{ item.description }}</p>\n @if (item.tags?.length) {\n <div class=\"split-previewer__item-tags\">\n @for (tag of item.tags; track tag) {\n <span class=\"split-previewer__item-tag\">{{ tag }}</span>\n }\n </div>\n }\n </div>\n </a>\n }\n </div>\n </div>\n\n <div class=\"split-previewer__media\">\n <div class=\"split-previewer__media-inner\">\n <img\n [src]=\"activeImage() || imageDefault?.url\"\n [alt]=\"imageDefault?.alt\"\n class=\"preview-img\"\n loading=\"eager\"\n fetchpriority=\"high\"\n decoding=\"async\"\n />\n </div>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport {\n HighlightDirective,\n LinkTypeDirective,\n ScrollRevealDirective,\n} from '@lluc_llull/ui-lib/directives';\nimport { UiLibButtonI, UiLibImageI } from '@lluc_llull/ui-lib/interfaces';\n\n@Component({\n selector: 'lib-contact-minimal',\n imports: [CommonModule, HighlightDirective, LinkTypeDirective, ScrollRevealDirective],\n templateUrl: './contact-minimal.component.html',\n styleUrl: './contact-minimal.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n style: 'display: contents',\n },\n})\nexport class ContactMinimalComponent {\n @Input() contactsTitle?: string;\n @Input() socialsTitle?: string;\n @Input() contacts?: UiLibButtonI[];\n @Input() socials?: UiLibButtonI[];\n @Input() img?: UiLibImageI;\n}\n","<div class=\"contact-minimal main-grid col-span-full md:col-span-12 md:col-start-1\" scrollReveal>\n <div class=\"contact-minimal__content col-span-full md:col-span-12 md:col-start-1\">\n <div class=\"contact-minimal__content--left col-span-6 col-start-1\">\n @if (contactsTitle) {\n <h2 class=\"subtitle\" [highlight]=\"'#FFFFFF'\">{{ contactsTitle }}</h2>\n }\n @if (contacts && contacts.length > 0) {\n <div class=\"btn-group\">\n @for (contact of contacts; track $index) {\n <a [href]=\"contact?.url\" [linkType]=\"contact?.linkType\" class=\"btn btn-link\">\n {{ contact?.label }}\n </a>\n }\n </div>\n }\n </div>\n <div class=\"contact-minimal__content--right col-span-6 col-start-7\">\n @if (socialsTitle) {\n <h2 class=\"subtitle\" [highlight]=\"'#FFFFFF'\">{{ socialsTitle }}</h2>\n }\n @if (socials && socials.length > 0) {\n <div class=\"btn-group\">\n @for (social of socials; track $index) {\n <a [href]=\"social?.url\" [linkType]=\"social?.linkType\" class=\"btn btn-link\">\n {{ social?.label }}\n </a>\n }\n </div>\n }\n </div>\n </div>\n @if (img) {\n <div class=\"contact-minimal__content--media col-span-full md:col-span-12 md:col-start-1\">\n <img\n [src]=\"img.url\"\n [alt]=\"img.alt\"\n loading=\"eager\"\n fetchpriority=\"high\"\n [attr.width]=\"img.width || 800\"\n [attr.height]=\"img.height || 600\"\n />\n </div>\n }\n</div>\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n Inject,\n Input,\n PLATFORM_ID,\n signal,\n} from '@angular/core';\nimport { UiLibImageI } from '@lluc_llull/ui-lib/interfaces';\n\n@Component({\n selector: 'lib-media-split',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './media-split.component.html',\n styleUrl: './media-split.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n style: 'display: contents',\n },\n})\nexport class MediaSplitComponent {\n @Input() title?: string;\n @Input() text?: string;\n @Input() images?: UiLibImageI[];\n\n activeImageIndex = signal(0);\n imageLoaded = signal(false);\n\n constructor(@Inject(PLATFORM_ID) private readonly platformId: Object) {\n effect(() => {\n this.activeImageIndex();\n\n if (!isPlatformBrowser(this.platformId)) return;\n\n this.imageLoaded.set(false);\n\n requestAnimationFrame(() => {\n this.imageLoaded.set(true);\n });\n });\n }\n\n currentImage = computed(() => {\n const imgs = this.images ?? [];\n return imgs[this.activeImageIndex()] ?? null;\n });\n\n updateActiveImage(index: number) {\n this.activeImageIndex.set(index);\n }\n\n resetImage() {\n this.activeImageIndex.set(0);\n }\n\n ngOnInit() {\n if (!isPlatformBrowser(this.platformId)) return;\n\n if ('requestIdleCallback' in window) {\n (window as any).requestIdleCallback(() => {\n this.preloadImages();\n });\n } else {\n setTimeout(() => this.preloadImages(), 2000);\n }\n }\n\n private preloadImages() {\n this.images?.slice(1).forEach((img) => {\n const i = new Image();\n i.src = img.url;\n });\n }\n}\n","<div class=\"media-split main-grid col-span-full md:col-span-12 md:col-start-1\" scrollReveal>\n <div class=\"media-split__visual col-span-full md:col-span-7 md:col-start-1\">\n @if (title) {\n <h1 class=\"title\">{{ title }}</h1>\n }\n\n @if (images?.length) {\n <div class=\"image-stack\" (mouseleave)=\"resetImage()\">\n <img\n [src]=\"currentImage().url\"\n [alt]=\"currentImage().alt\"\n class=\"img-responsive active-image\"\n [class.loaded]=\"imageLoaded()\"\n loading=\"eager\"\n fetchpriority=\"high\"\n />\n\n <div class=\"hover-grid\">\n @for (image of images; track $index) {\n <div class=\"hover-zone\" (mouseenter)=\"updateActiveImage($index)\"></div>\n }\n </div>\n </div>\n }\n </div>\n\n <div class=\"media-split__info col-span-full md:col-span-5 md:col-start-8\">\n @if (text) {\n <p class=\"text\" [innerHTML]=\"text\"></p>\n }\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'lib-stacked-rows',\n imports: [CommonModule],\n templateUrl: './stacked-rows.component.html',\n styleUrl: './stacked-rows.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n style: 'display: contents',\n },\n})\nexport class StackedRowsComponent {\n @Input() title?: string;\n @Input() text?: string;\n @Input() items?: StackedRowItemI[];\n}\n\nexport interface StackedRowItemI {\n title: string;\n text: string;\n}\n","<div class=\"stacked-rows main-grid col-span-full md:col-span-12 md:col-start-1\" scrollReveal>\n <!-- INTRO -->\n <div class=\"stacked-rows__intro main-grid col-span-full\">\n @if (title) {\n <h1 class=\"subtitle col-span-full md:col-span-3 md:col-start-1\">\n {{ title }}\n </h1>\n }\n\n @if (text) {\n <p class=\"text col-span-full md:col-span-9 md:col-start-4\">\n {{ text }}\n </p>\n }\n </div>\n\n <!-- ITEMS -->\n @if (items) {\n <div class=\"stacked-rows__items col-span-full\">\n @for (item of items; track $index) {\n <div class=\"stacked-rows__items--item main-grid\">\n <h2 class=\"stacked-rows__items--item_title col-span-full md:col-span-3 md:col-start-1\">\n {{ item.title }}\n </h2>\n\n <p class=\"stacked-rows__items--item_text col-span-full md:col-span-7 md:col-start-6\">\n {{ item.text }}\n </p>\n </div>\n }\n </div>\n }\n</div>\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n Inject,\n Input,\n OnDestroy,\n PLATFORM_ID,\n signal,\n ViewChild,\n} from '@angular/core';\nimport { UiLibImageI } from '@lluc_llull/ui-lib/interfaces';\n\n@Component({\n selector: 'app-mosaic-parallax',\n templateUrl: './mosaic-parallax.component.html',\n styleUrls: ['./mosaic-parallax.component.scss'],\n host: {\n style: 'display: contents',\n },\n})\nexport class MosaicParallaxComponent implements AfterViewInit, OnDestroy {\n @Input() title?: string;\n @Input() text?: string;\n @Input() images?: UiLibImageI[];\n\n @ViewChild('mosaicSection') mosaicSection!: ElementRef<HTMLElement>;\n\n isVisible = signal(false);\n private observer?: IntersectionObserver;\n private isBrowser: boolean;\n\n constructor(@Inject(PLATFORM_ID) platformId: object) {\n this.isBrowser = isPlatformBrowser(platformId);\n }\n\n ngAfterViewInit() {\n if (!this.isBrowser) return;\n\n this.observer = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting && !this.isVisible()) {\n this.isVisible.set(true);\n this.observer?.disconnect();\n }\n },\n { threshold: 0.1 },\n );\n\n this.observer.observe(this.mosaicSection.nativeElement);\n }\n\n ngOnDestroy() {\n this.observer?.disconnect();\n }\n}\n","<div class=\"mosaic-parallax main-grid col-span-full\" #mosaicSection>\n\n @if (title) {\n <h2 class=\"subtitle md:col-span-3 md:col-start-1\">{{ title }}</h2>\n }\n\n @if (text) {\n <p class=\"text col-span-full md:col-span-5 md:col-start-1\">\n {{ text }}\n </p>\n }\n\n @if (images && images.length > 0) {\n <div class=\"mosaic-parallax__track col-span-full md:col-span-10 md:col-start-2\">\n @for (item of images; track $index) {\n <article\n class=\"mosaic-item\"\n [class.mosaic-item--visible]=\"isVisible()\"\n [style.--item-index]=\"images.length - 1 - $index\"\n [style.--anim-delay]=\"(images.length - 1 - $index) * 250 + 'ms'\"\n >\n <div class=\"mosaic-item__media\">\n <img [src]=\"item.url\" [alt]=\"item.alt\" loading=\"lazy\" />\n </div>\n @if (item.texts; as texts) {\n <div class=\"mosaic-item__content\">\n <p class=\"mosaic-item__description\">{{ texts.text }}</p>\n <div class=\"mosaic-item__meta\">\n <span class=\"mosaic-item__date\">{{ texts.title }}</span>\n <span class=\"mosaic-item__index\">\n {{ ($index + 1).toString().padStart(2, '0') }}\n </span>\n </div>\n </div>\n }\n </article>\n }\n </div>\n }\n\n</div>","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'lib-content-document',\n imports: [CommonModule],\n templateUrl: './content-document.component.html',\n styleUrl: './content-document.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n style: 'display: contents',\n },\n})\nexport class ContentDocumentComponent {\n @Input() title?: string;\n @Input() items?: ContentDocumentItemI[];\n}\n\nexport interface ContentDocumentItemI {\n title: string;\n text: string;\n}\n","<div class=\"content-document main-grid col-span-full sm:col-span-12 sm:col-start-1\" scrollReveal>\n @if (title) {\n <div class=\"content-document__title main-grid col-span-full\">\n <h1 class=\"title col-span-full\">{{ title }}</h1>\n </div>\n }\n @if (items) {\n <div class=\"content-document__items col-span-full\">\n @for (item of items; track $index) {\n <div class=\"content-document__items--item main-grid\">\n <h2 class=\"content-document__items--item_title col-span-full sm:col-span-12 sm:col-start-1\">\n {{ item.title }}\n </h2>\n <p class=\"content-document__items--item_text col-span-full sm:col-span-4 sm:col-start-5\" [innerHTML]=\"item.text\"></p>\n </div>\n }\n </div>\n }\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -13,13 +13,13 @@ class LegalFooterComponent {
13
13
  links;
14
14
  variant = 'simple';
15
15
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: LegalFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
16
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.19", type: LegalFooterComponent, isStandalone: true, selector: "lib-legal-footer", inputs: { year: "year", brand: "brand", credits: "credits", links: "links", variant: "variant" }, host: { styleAttribute: "display: contents" }, ngImport: i0, template: "<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 }} \u00A9 {{ 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 }} \u00A9 {{ 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", styles: [":root[data-theme=dark]{color-scheme:dark;--color-primary: #007bff;--color-secondary: #f3f4f6;--color-text: #f3f4f6;--color-bg: #0f0f10;--button-primary-bg: #007bff;--button-primary-text: #f9f9f9;--button-primary-bg-hover: #033468;--button-primary-text-hover: #f9f9f9;--button-primary-outline-border: #020202;--button-primary-outline-text: #020202;--button-primary-outline-bg-hover: #007bff;--button-primary-outline-text-hover: #f9f9f9;--button-secondary-bg: #2b3035;--button-secondary-text: #f9f9f9;--button-secondary-bg-hover: #1c1e20;--button-secondary-text-hover: #f9f9f9;--button-link-text: #f3f4f6;--button-link-text-hover: #79b6ff;--button-header-bg: #007bff;--button-header-text: #f9f9f9;--button-header-bg-hover: rgba(230, 230, 230, .062);--button-header-text-hover: #f9f9f9;--header-clear-bg: #0f0f10;--header-mobile-bg: #0f0f10;--header-logo-text: #0f0f10;--modal-bg: #17181a;--close-btn: #f3f4f6;--item-text: #f3f4f6;--progress-color: #f9f9f9;--progress-bg: #79b6ff;--tag-color: #f9f9f9;--tag-bg: #79b6ff;--footer-bg: #0f0f10;--footer-text: #f3f4f6;--footer-text-hover: #79b6ff;--footer-links: #f3f4f6;--footer-links-hover: #79b6ff;--footer-arrows: #fff;--footer-arrows-hover: #0f0f10;--footer-arrows-bg: #dddddd;--footer-arrows-bg-hover: #f3f3f3}:root,:root[data-theme=light]{color-scheme:light;--color-primary: #007bff;--color-secondary: #f3f4f6;--color-text: #111111;--color-bg: #f9f9f9;--button-primary-bg: #007bff;--button-primary-text: #f9f9f9;--button-primary-bg-hover: #033468;--button-primary-text-hover: #f9f9f9;--button-primary-outline-border: #020202;--button-primary-outline-text: #020202;--button-primary-outline-bg-hover: #007bff;--button-primary-outline-text-hover: #f9f9f9;--button-secondary-bg: #6c757d;--button-secondary-text: #f9f9f9;--button-secondary-bg-hover: #1c1e20;--button-secondary-text-hover: #f9f9f9;--button-link-text: #111111;--button-link-text-hover: #007bff;--button-header-bg: #007bff;--button-header-text: #f9f9f9;--button-header-bg-hover: rgba(0, 0, 0, .05);--button-header-text-hover: #f9f9f9;--header-clear-bg: #007bff;--header-mobile-bg: #007bff;--header-logo-text: #0f0f10;--modal-bg: #f9f9f9;--close-btn: #111111;--item-text: #111111;--progress-color: #79b6ff;--progress-bg: #dde8f5;--tag-color: #79b6ff;--tag-bg: #dde8f5;--footer-bg: #dadada;--footer-text: #000;--footer-text-hover: #79b6ff;--footer-links: #000;--footer-links-hover: #79b6ff;--footer-arrows: #fff;--footer-arrows-hover: #fff;--footer-arrows-bg: #b6b6b6;--footer-arrows-bg-hover: #8b8a8a}.legal-footer{margin-left:calc(-50vw + 50%);margin-right:calc(-50vw + 50%);padding-left:calc(50vw - 50%);padding-right:calc(50vw - 50%);font-size:var(--font-size-base);background-color:var(--footer-bg);color:var(--footer-text)}.legal-footer__simple{color:var(--footer-text)}.legal-footer__simple-credits{text-align:right}@media (max-width: 768px){.legal-footer__simple,.legal-footer__simple-credits{text-align:center}}.legal-footer .legal-footer__links{list-style:none;margin:0;padding:0}.legal-footer .legal-footer__links a{text-decoration:none;color:var(--footer-links)}.legal-footer .legal-footer__links a:hover{color:var(--footer-links-hover);text-decoration:underline;text-underline-offset:2px;text-decoration-thickness:1px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
16
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.19", type: LegalFooterComponent, isStandalone: true, selector: "lib-legal-footer", inputs: { year: "year", brand: "brand", credits: "credits", links: "links", variant: "variant" }, host: { styleAttribute: "display: contents" }, ngImport: i0, template: "<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 }} \u00A9 {{ 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 }} \u00A9 {{ 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", styles: [":root[data-theme=dark]{color-scheme:dark;--color-primary: #007bff;--color-primary-raw: 0, 123, 255;--color-primary-10: rgba(var(--color-primary-raw), .1);--color-primary-20: rgba(var(--color-primary-raw), .2);--color-primary-30: rgba(var(--color-primary-raw), .3);--color-primary-40: rgba(var(--color-primary-raw), .4);--color-primary-50: rgba(var(--color-primary-raw), .5);--color-primary-60: rgba(var(--color-primary-raw), .6);--color-primary-70: rgba(var(--color-primary-raw), .7);--color-primary-80: rgba(var(--color-primary-raw), .8);--color-primary-90: rgba(var(--color-primary-raw), .9);--color-secondary: #f3f4f6;--color-secondary-raw: 243, 244, 246;--color-secondary-10: rgba(var(--color-secondary-raw), .1);--color-secondary-20: rgba(var(--color-secondary-raw), .2);--color-secondary-30: rgba(var(--color-secondary-raw), .3);--color-secondary-40: rgba(var(--color-secondary-raw), .4);--color-secondary-50: rgba(var(--color-secondary-raw), .5);--color-secondary-60: rgba(var(--color-secondary-raw), .6);--color-secondary-70: rgba(var(--color-secondary-raw), .7);--color-secondary-80: rgba(var(--color-secondary-raw), .8);--color-secondary-90: rgba(var(--color-secondary-raw), .9);--color-text: #f3f4f6;--color-bg: #0f0f10;--button-primary-bg: #007bff;--button-primary-text: #f9f9f9;--button-primary-bg-hover: #033468;--button-primary-text-hover: #f9f9f9;--button-primary-outline-border: #020202;--button-primary-outline-text: #020202;--button-primary-outline-bg-hover: #007bff;--button-primary-outline-text-hover: #f9f9f9;--button-secondary-bg: #2b3035;--button-secondary-text: #f9f9f9;--button-secondary-bg-hover: #1c1e20;--button-secondary-text-hover: #f9f9f9;--button-link-text: #f3f4f6;--button-link-text-hover: #79b6ff;--button-header-bg: #007bff;--button-header-text: #f9f9f9;--button-header-bg-hover: rgba(230, 230, 230, .062);--button-header-text-hover: #f9f9f9;--header-clear-bg: #0f0f10;--header-mobile-bg: #0f0f10;--header-logo-text: #0f0f10;--modal-bg: #17181a;--close-btn: #f3f4f6;--item-text: #f3f4f6;--progress-color: #f9f9f9;--progress-bg: #79b6ff;--tag-color: #f9f9f9;--tag-bg: #79b6ff;--footer-bg: #0f0f10;--footer-text: #f3f4f6;--footer-text-hover: #79b6ff;--footer-links: #f3f4f6;--footer-links-hover: #79b6ff;--footer-arrows: #fff;--footer-arrows-hover: #0f0f10;--footer-arrows-bg: #dddddd;--footer-arrows-bg-hover: #f3f3f3}:root,:root[data-theme=light]{color-scheme:light;--color-primary: #007bff;--color-primary-raw: 0, 123, 255;--color-primary-10: rgba(var(--color-primary-raw), .1);--color-primary-20: rgba(var(--color-primary-raw), .2);--color-primary-30: rgba(var(--color-primary-raw), .3);--color-primary-40: rgba(var(--color-primary-raw), .4);--color-primary-50: rgba(var(--color-primary-raw), .5);--color-primary-60: rgba(var(--color-primary-raw), .6);--color-primary-70: rgba(var(--color-primary-raw), .7);--color-primary-80: rgba(var(--color-primary-raw), .8);--color-primary-90: rgba(var(--color-primary-raw), .9);--color-secondary: #f3f4f6;--color-secondary-raw: 243, 244, 246;--color-secondary-10: rgba(var(--color-secondary-raw), .1);--color-secondary-20: rgba(var(--color-secondary-raw), .2);--color-secondary-30: rgba(var(--color-secondary-raw), .3);--color-secondary-40: rgba(var(--color-secondary-raw), .4);--color-secondary-50: rgba(var(--color-secondary-raw), .5);--color-secondary-60: rgba(var(--color-secondary-raw), .6);--color-secondary-70: rgba(var(--color-secondary-raw), .7);--color-secondary-80: rgba(var(--color-secondary-raw), .8);--color-secondary-90: rgba(var(--color-secondary-raw), .9);--color-text: #111111;--color-bg: #f9f9f9;--button-primary-bg: #007bff;--button-primary-text: #f9f9f9;--button-primary-bg-hover: #033468;--button-primary-text-hover: #f9f9f9;--button-primary-outline-border: #020202;--button-primary-outline-text: #020202;--button-primary-outline-bg-hover: #007bff;--button-primary-outline-text-hover: #f9f9f9;--button-secondary-bg: #6c757d;--button-secondary-text: #f9f9f9;--button-secondary-bg-hover: #1c1e20;--button-secondary-text-hover: #f9f9f9;--button-link-text: #111111;--button-link-text-hover: #007bff;--button-header-bg: #007bff;--button-header-text: #f9f9f9;--button-header-bg-hover: rgba(0, 0, 0, .05);--button-header-text-hover: #f9f9f9;--header-clear-bg: #007bff;--header-mobile-bg: #007bff;--header-logo-text: #0f0f10;--modal-bg: #f9f9f9;--close-btn: #111111;--item-text: #111111;--progress-color: #79b6ff;--progress-bg: #dde8f5;--tag-color: #79b6ff;--tag-bg: #dde8f5;--footer-bg: #dadada;--footer-text: #000;--footer-text-hover: #79b6ff;--footer-links: #000;--footer-links-hover: #79b6ff;--footer-arrows: #fff;--footer-arrows-hover: #fff;--footer-arrows-bg: #b6b6b6;--footer-arrows-bg-hover: #8b8a8a}.legal-footer{margin-left:calc(-50vw + 50%);margin-right:calc(-50vw + 50%);padding-left:calc(50vw - 50%);padding-right:calc(50vw - 50%);font-size:var(--font-size-base);background-color:var(--footer-bg);color:var(--footer-text)}.legal-footer__simple{color:var(--footer-text)}.legal-footer__simple-credits{text-align:right}@media (max-width: 768px){.legal-footer__simple,.legal-footer__simple-credits{text-align:center}}.legal-footer .legal-footer__links{list-style:none;margin:0;padding:0}.legal-footer .legal-footer__links a{text-decoration:none;color:var(--footer-links)}.legal-footer .legal-footer__links a:hover{color:var(--footer-links-hover);text-decoration:underline;text-underline-offset:2px;text-decoration-thickness:1px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
17
17
  }
18
18
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: LegalFooterComponent, decorators: [{
19
19
  type: Component,
20
20
  args: [{ selector: 'lib-legal-footer', standalone: true, imports: [CommonModule, LinkTypeDirective], host: {
21
21
  style: 'display: contents',
22
- }, template: "<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 }} \u00A9 {{ 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 }} \u00A9 {{ 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", styles: [":root[data-theme=dark]{color-scheme:dark;--color-primary: #007bff;--color-secondary: #f3f4f6;--color-text: #f3f4f6;--color-bg: #0f0f10;--button-primary-bg: #007bff;--button-primary-text: #f9f9f9;--button-primary-bg-hover: #033468;--button-primary-text-hover: #f9f9f9;--button-primary-outline-border: #020202;--button-primary-outline-text: #020202;--button-primary-outline-bg-hover: #007bff;--button-primary-outline-text-hover: #f9f9f9;--button-secondary-bg: #2b3035;--button-secondary-text: #f9f9f9;--button-secondary-bg-hover: #1c1e20;--button-secondary-text-hover: #f9f9f9;--button-link-text: #f3f4f6;--button-link-text-hover: #79b6ff;--button-header-bg: #007bff;--button-header-text: #f9f9f9;--button-header-bg-hover: rgba(230, 230, 230, .062);--button-header-text-hover: #f9f9f9;--header-clear-bg: #0f0f10;--header-mobile-bg: #0f0f10;--header-logo-text: #0f0f10;--modal-bg: #17181a;--close-btn: #f3f4f6;--item-text: #f3f4f6;--progress-color: #f9f9f9;--progress-bg: #79b6ff;--tag-color: #f9f9f9;--tag-bg: #79b6ff;--footer-bg: #0f0f10;--footer-text: #f3f4f6;--footer-text-hover: #79b6ff;--footer-links: #f3f4f6;--footer-links-hover: #79b6ff;--footer-arrows: #fff;--footer-arrows-hover: #0f0f10;--footer-arrows-bg: #dddddd;--footer-arrows-bg-hover: #f3f3f3}:root,:root[data-theme=light]{color-scheme:light;--color-primary: #007bff;--color-secondary: #f3f4f6;--color-text: #111111;--color-bg: #f9f9f9;--button-primary-bg: #007bff;--button-primary-text: #f9f9f9;--button-primary-bg-hover: #033468;--button-primary-text-hover: #f9f9f9;--button-primary-outline-border: #020202;--button-primary-outline-text: #020202;--button-primary-outline-bg-hover: #007bff;--button-primary-outline-text-hover: #f9f9f9;--button-secondary-bg: #6c757d;--button-secondary-text: #f9f9f9;--button-secondary-bg-hover: #1c1e20;--button-secondary-text-hover: #f9f9f9;--button-link-text: #111111;--button-link-text-hover: #007bff;--button-header-bg: #007bff;--button-header-text: #f9f9f9;--button-header-bg-hover: rgba(0, 0, 0, .05);--button-header-text-hover: #f9f9f9;--header-clear-bg: #007bff;--header-mobile-bg: #007bff;--header-logo-text: #0f0f10;--modal-bg: #f9f9f9;--close-btn: #111111;--item-text: #111111;--progress-color: #79b6ff;--progress-bg: #dde8f5;--tag-color: #79b6ff;--tag-bg: #dde8f5;--footer-bg: #dadada;--footer-text: #000;--footer-text-hover: #79b6ff;--footer-links: #000;--footer-links-hover: #79b6ff;--footer-arrows: #fff;--footer-arrows-hover: #fff;--footer-arrows-bg: #b6b6b6;--footer-arrows-bg-hover: #8b8a8a}.legal-footer{margin-left:calc(-50vw + 50%);margin-right:calc(-50vw + 50%);padding-left:calc(50vw - 50%);padding-right:calc(50vw - 50%);font-size:var(--font-size-base);background-color:var(--footer-bg);color:var(--footer-text)}.legal-footer__simple{color:var(--footer-text)}.legal-footer__simple-credits{text-align:right}@media (max-width: 768px){.legal-footer__simple,.legal-footer__simple-credits{text-align:center}}.legal-footer .legal-footer__links{list-style:none;margin:0;padding:0}.legal-footer .legal-footer__links a{text-decoration:none;color:var(--footer-links)}.legal-footer .legal-footer__links a:hover{color:var(--footer-links-hover);text-decoration:underline;text-underline-offset:2px;text-decoration-thickness:1px}\n"] }]
22
+ }, template: "<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 }} \u00A9 {{ 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 }} \u00A9 {{ 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", styles: [":root[data-theme=dark]{color-scheme:dark;--color-primary: #007bff;--color-primary-raw: 0, 123, 255;--color-primary-10: rgba(var(--color-primary-raw), .1);--color-primary-20: rgba(var(--color-primary-raw), .2);--color-primary-30: rgba(var(--color-primary-raw), .3);--color-primary-40: rgba(var(--color-primary-raw), .4);--color-primary-50: rgba(var(--color-primary-raw), .5);--color-primary-60: rgba(var(--color-primary-raw), .6);--color-primary-70: rgba(var(--color-primary-raw), .7);--color-primary-80: rgba(var(--color-primary-raw), .8);--color-primary-90: rgba(var(--color-primary-raw), .9);--color-secondary: #f3f4f6;--color-secondary-raw: 243, 244, 246;--color-secondary-10: rgba(var(--color-secondary-raw), .1);--color-secondary-20: rgba(var(--color-secondary-raw), .2);--color-secondary-30: rgba(var(--color-secondary-raw), .3);--color-secondary-40: rgba(var(--color-secondary-raw), .4);--color-secondary-50: rgba(var(--color-secondary-raw), .5);--color-secondary-60: rgba(var(--color-secondary-raw), .6);--color-secondary-70: rgba(var(--color-secondary-raw), .7);--color-secondary-80: rgba(var(--color-secondary-raw), .8);--color-secondary-90: rgba(var(--color-secondary-raw), .9);--color-text: #f3f4f6;--color-bg: #0f0f10;--button-primary-bg: #007bff;--button-primary-text: #f9f9f9;--button-primary-bg-hover: #033468;--button-primary-text-hover: #f9f9f9;--button-primary-outline-border: #020202;--button-primary-outline-text: #020202;--button-primary-outline-bg-hover: #007bff;--button-primary-outline-text-hover: #f9f9f9;--button-secondary-bg: #2b3035;--button-secondary-text: #f9f9f9;--button-secondary-bg-hover: #1c1e20;--button-secondary-text-hover: #f9f9f9;--button-link-text: #f3f4f6;--button-link-text-hover: #79b6ff;--button-header-bg: #007bff;--button-header-text: #f9f9f9;--button-header-bg-hover: rgba(230, 230, 230, .062);--button-header-text-hover: #f9f9f9;--header-clear-bg: #0f0f10;--header-mobile-bg: #0f0f10;--header-logo-text: #0f0f10;--modal-bg: #17181a;--close-btn: #f3f4f6;--item-text: #f3f4f6;--progress-color: #f9f9f9;--progress-bg: #79b6ff;--tag-color: #f9f9f9;--tag-bg: #79b6ff;--footer-bg: #0f0f10;--footer-text: #f3f4f6;--footer-text-hover: #79b6ff;--footer-links: #f3f4f6;--footer-links-hover: #79b6ff;--footer-arrows: #fff;--footer-arrows-hover: #0f0f10;--footer-arrows-bg: #dddddd;--footer-arrows-bg-hover: #f3f3f3}:root,:root[data-theme=light]{color-scheme:light;--color-primary: #007bff;--color-primary-raw: 0, 123, 255;--color-primary-10: rgba(var(--color-primary-raw), .1);--color-primary-20: rgba(var(--color-primary-raw), .2);--color-primary-30: rgba(var(--color-primary-raw), .3);--color-primary-40: rgba(var(--color-primary-raw), .4);--color-primary-50: rgba(var(--color-primary-raw), .5);--color-primary-60: rgba(var(--color-primary-raw), .6);--color-primary-70: rgba(var(--color-primary-raw), .7);--color-primary-80: rgba(var(--color-primary-raw), .8);--color-primary-90: rgba(var(--color-primary-raw), .9);--color-secondary: #f3f4f6;--color-secondary-raw: 243, 244, 246;--color-secondary-10: rgba(var(--color-secondary-raw), .1);--color-secondary-20: rgba(var(--color-secondary-raw), .2);--color-secondary-30: rgba(var(--color-secondary-raw), .3);--color-secondary-40: rgba(var(--color-secondary-raw), .4);--color-secondary-50: rgba(var(--color-secondary-raw), .5);--color-secondary-60: rgba(var(--color-secondary-raw), .6);--color-secondary-70: rgba(var(--color-secondary-raw), .7);--color-secondary-80: rgba(var(--color-secondary-raw), .8);--color-secondary-90: rgba(var(--color-secondary-raw), .9);--color-text: #111111;--color-bg: #f9f9f9;--button-primary-bg: #007bff;--button-primary-text: #f9f9f9;--button-primary-bg-hover: #033468;--button-primary-text-hover: #f9f9f9;--button-primary-outline-border: #020202;--button-primary-outline-text: #020202;--button-primary-outline-bg-hover: #007bff;--button-primary-outline-text-hover: #f9f9f9;--button-secondary-bg: #6c757d;--button-secondary-text: #f9f9f9;--button-secondary-bg-hover: #1c1e20;--button-secondary-text-hover: #f9f9f9;--button-link-text: #111111;--button-link-text-hover: #007bff;--button-header-bg: #007bff;--button-header-text: #f9f9f9;--button-header-bg-hover: rgba(0, 0, 0, .05);--button-header-text-hover: #f9f9f9;--header-clear-bg: #007bff;--header-mobile-bg: #007bff;--header-logo-text: #0f0f10;--modal-bg: #f9f9f9;--close-btn: #111111;--item-text: #111111;--progress-color: #79b6ff;--progress-bg: #dde8f5;--tag-color: #79b6ff;--tag-bg: #dde8f5;--footer-bg: #dadada;--footer-text: #000;--footer-text-hover: #79b6ff;--footer-links: #000;--footer-links-hover: #79b6ff;--footer-arrows: #fff;--footer-arrows-hover: #fff;--footer-arrows-bg: #b6b6b6;--footer-arrows-bg-hover: #8b8a8a}.legal-footer{margin-left:calc(-50vw + 50%);margin-right:calc(-50vw + 50%);padding-left:calc(50vw - 50%);padding-right:calc(50vw - 50%);font-size:var(--font-size-base);background-color:var(--footer-bg);color:var(--footer-text)}.legal-footer__simple{color:var(--footer-text)}.legal-footer__simple-credits{text-align:right}@media (max-width: 768px){.legal-footer__simple,.legal-footer__simple-credits{text-align:center}}.legal-footer .legal-footer__links{list-style:none;margin:0;padding:0}.legal-footer .legal-footer__links a{text-decoration:none;color:var(--footer-links)}.legal-footer .legal-footer__links a:hover{color:var(--footer-links-hover);text-decoration:underline;text-underline-offset:2px;text-decoration-thickness:1px}\n"] }]
23
23
  }], propDecorators: { year: [{
24
24
  type: Input
25
25
  }], brand: [{
@@ -51,13 +51,13 @@ class SocialFooterComponent {
51
51
  socials;
52
52
  hashtag;
53
53
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: SocialFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
54
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.19", type: SocialFooterComponent, isStandalone: true, selector: "lib-social-footer", inputs: { images: "images", socials: "socials", hashtag: "hashtag" }, host: { styleAttribute: "display: contents" }, ngImport: i0, template: "<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", styles: [":root[data-theme=dark]{color-scheme:dark;--color-primary: #007bff;--color-secondary: #f3f4f6;--color-text: #f3f4f6;--color-bg: #0f0f10;--button-primary-bg: #007bff;--button-primary-text: #f9f9f9;--button-primary-bg-hover: #033468;--button-primary-text-hover: #f9f9f9;--button-primary-outline-border: #020202;--button-primary-outline-text: #020202;--button-primary-outline-bg-hover: #007bff;--button-primary-outline-text-hover: #f9f9f9;--button-secondary-bg: #2b3035;--button-secondary-text: #f9f9f9;--button-secondary-bg-hover: #1c1e20;--button-secondary-text-hover: #f9f9f9;--button-link-text: #f3f4f6;--button-link-text-hover: #79b6ff;--button-header-bg: #007bff;--button-header-text: #f9f9f9;--button-header-bg-hover: rgba(230, 230, 230, .062);--button-header-text-hover: #f9f9f9;--header-clear-bg: #0f0f10;--header-mobile-bg: #0f0f10;--header-logo-text: #0f0f10;--modal-bg: #17181a;--close-btn: #f3f4f6;--item-text: #f3f4f6;--progress-color: #f9f9f9;--progress-bg: #79b6ff;--tag-color: #f9f9f9;--tag-bg: #79b6ff;--footer-bg: #0f0f10;--footer-text: #f3f4f6;--footer-text-hover: #79b6ff;--footer-links: #f3f4f6;--footer-links-hover: #79b6ff;--footer-arrows: #fff;--footer-arrows-hover: #0f0f10;--footer-arrows-bg: #dddddd;--footer-arrows-bg-hover: #f3f3f3}:root,:root[data-theme=light]{color-scheme:light;--color-primary: #007bff;--color-secondary: #f3f4f6;--color-text: #111111;--color-bg: #f9f9f9;--button-primary-bg: #007bff;--button-primary-text: #f9f9f9;--button-primary-bg-hover: #033468;--button-primary-text-hover: #f9f9f9;--button-primary-outline-border: #020202;--button-primary-outline-text: #020202;--button-primary-outline-bg-hover: #007bff;--button-primary-outline-text-hover: #f9f9f9;--button-secondary-bg: #6c757d;--button-secondary-text: #f9f9f9;--button-secondary-bg-hover: #1c1e20;--button-secondary-text-hover: #f9f9f9;--button-link-text: #111111;--button-link-text-hover: #007bff;--button-header-bg: #007bff;--button-header-text: #f9f9f9;--button-header-bg-hover: rgba(0, 0, 0, .05);--button-header-text-hover: #f9f9f9;--header-clear-bg: #007bff;--header-mobile-bg: #007bff;--header-logo-text: #0f0f10;--modal-bg: #f9f9f9;--close-btn: #111111;--item-text: #111111;--progress-color: #79b6ff;--progress-bg: #dde8f5;--tag-color: #79b6ff;--tag-bg: #dde8f5;--footer-bg: #dadada;--footer-text: #000;--footer-text-hover: #79b6ff;--footer-links: #000;--footer-links-hover: #79b6ff;--footer-arrows: #fff;--footer-arrows-hover: #fff;--footer-arrows-bg: #b6b6b6;--footer-arrows-bg-hover: #8b8a8a}.social-footer{text-align:center}.social-footer__slider-images{position:relative}.social-footer__slider-images .swiper-wrapper{display:flex;align-items:center}.social-footer__slider-images .swiper-slide{flex:0 0 auto;width:auto}.social-footer__slider-images .swiper-slide img{display:block;border-radius:.75rem;width:160px;height:auto;object-fit:cover}.social-footer__slider-images .swiper-button-prev,.social-footer__slider-images .swiper-button-next{display:flex;align-items:center;justify-content:center;position:absolute;top:50%;transform:translateY(-50%);z-index:10;width:32px;height:32px;border-radius:50%;background:var(--footer-arrows-bg);color:var(--footer-arrows)}.social-footer__slider-images .swiper-button-prev ui-icon,.social-footer__slider-images .swiper-button-prev lucide-icon,.social-footer__slider-images .swiper-button-prev svg,.social-footer__slider-images .swiper-button-next ui-icon,.social-footer__slider-images .swiper-button-next lucide-icon,.social-footer__slider-images .swiper-button-next svg{display:block;width:18px;height:18px}.social-footer__slider-images .swiper-button-prev:hover,.social-footer__slider-images .swiper-button-next:hover{background:var(--footer-arrows-bg-hover);color:var(--footer-arrows-hover)}.social-footer__slider-images .swiper-button-prev{left:1rem}.social-footer__slider-images .swiper-button-next{right:1rem}.social-footer__slider-images .swiper-button-prev:after,.social-footer__slider-images .swiper-button-next:after{content:none!important}.social-footer__bottom-section{gap:1rem}.social-footer__hashtag{font-size:2rem;font-weight:700;text-align:left}.social-footer__socials{justify-content:right;display:flex;gap:1.5rem}.social-footer__socials a{font-size:1.25rem;color:var(--footer-text, #999);transition:color .3s ease}.social-footer__socials a:hover{color:var(--footer-link-hover, #000)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: LinkTypeDirective, selector: "[linkType]", inputs: ["linkType", "href"], outputs: ["anchorClicked"] }, { kind: "directive", type: SwiperDirective, selector: "[appSwiper]", inputs: ["swiperConfig"] }, { kind: "component", type: UiIconComponent, selector: "ui-icon", inputs: ["name", "size", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
54
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.19", type: SocialFooterComponent, isStandalone: true, selector: "lib-social-footer", inputs: { images: "images", socials: "socials", hashtag: "hashtag" }, host: { styleAttribute: "display: contents" }, ngImport: i0, template: "<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", styles: [":root[data-theme=dark]{color-scheme:dark;--color-primary: #007bff;--color-primary-raw: 0, 123, 255;--color-primary-10: rgba(var(--color-primary-raw), .1);--color-primary-20: rgba(var(--color-primary-raw), .2);--color-primary-30: rgba(var(--color-primary-raw), .3);--color-primary-40: rgba(var(--color-primary-raw), .4);--color-primary-50: rgba(var(--color-primary-raw), .5);--color-primary-60: rgba(var(--color-primary-raw), .6);--color-primary-70: rgba(var(--color-primary-raw), .7);--color-primary-80: rgba(var(--color-primary-raw), .8);--color-primary-90: rgba(var(--color-primary-raw), .9);--color-secondary: #f3f4f6;--color-secondary-raw: 243, 244, 246;--color-secondary-10: rgba(var(--color-secondary-raw), .1);--color-secondary-20: rgba(var(--color-secondary-raw), .2);--color-secondary-30: rgba(var(--color-secondary-raw), .3);--color-secondary-40: rgba(var(--color-secondary-raw), .4);--color-secondary-50: rgba(var(--color-secondary-raw), .5);--color-secondary-60: rgba(var(--color-secondary-raw), .6);--color-secondary-70: rgba(var(--color-secondary-raw), .7);--color-secondary-80: rgba(var(--color-secondary-raw), .8);--color-secondary-90: rgba(var(--color-secondary-raw), .9);--color-text: #f3f4f6;--color-bg: #0f0f10;--button-primary-bg: #007bff;--button-primary-text: #f9f9f9;--button-primary-bg-hover: #033468;--button-primary-text-hover: #f9f9f9;--button-primary-outline-border: #020202;--button-primary-outline-text: #020202;--button-primary-outline-bg-hover: #007bff;--button-primary-outline-text-hover: #f9f9f9;--button-secondary-bg: #2b3035;--button-secondary-text: #f9f9f9;--button-secondary-bg-hover: #1c1e20;--button-secondary-text-hover: #f9f9f9;--button-link-text: #f3f4f6;--button-link-text-hover: #79b6ff;--button-header-bg: #007bff;--button-header-text: #f9f9f9;--button-header-bg-hover: rgba(230, 230, 230, .062);--button-header-text-hover: #f9f9f9;--header-clear-bg: #0f0f10;--header-mobile-bg: #0f0f10;--header-logo-text: #0f0f10;--modal-bg: #17181a;--close-btn: #f3f4f6;--item-text: #f3f4f6;--progress-color: #f9f9f9;--progress-bg: #79b6ff;--tag-color: #f9f9f9;--tag-bg: #79b6ff;--footer-bg: #0f0f10;--footer-text: #f3f4f6;--footer-text-hover: #79b6ff;--footer-links: #f3f4f6;--footer-links-hover: #79b6ff;--footer-arrows: #fff;--footer-arrows-hover: #0f0f10;--footer-arrows-bg: #dddddd;--footer-arrows-bg-hover: #f3f3f3}:root,:root[data-theme=light]{color-scheme:light;--color-primary: #007bff;--color-primary-raw: 0, 123, 255;--color-primary-10: rgba(var(--color-primary-raw), .1);--color-primary-20: rgba(var(--color-primary-raw), .2);--color-primary-30: rgba(var(--color-primary-raw), .3);--color-primary-40: rgba(var(--color-primary-raw), .4);--color-primary-50: rgba(var(--color-primary-raw), .5);--color-primary-60: rgba(var(--color-primary-raw), .6);--color-primary-70: rgba(var(--color-primary-raw), .7);--color-primary-80: rgba(var(--color-primary-raw), .8);--color-primary-90: rgba(var(--color-primary-raw), .9);--color-secondary: #f3f4f6;--color-secondary-raw: 243, 244, 246;--color-secondary-10: rgba(var(--color-secondary-raw), .1);--color-secondary-20: rgba(var(--color-secondary-raw), .2);--color-secondary-30: rgba(var(--color-secondary-raw), .3);--color-secondary-40: rgba(var(--color-secondary-raw), .4);--color-secondary-50: rgba(var(--color-secondary-raw), .5);--color-secondary-60: rgba(var(--color-secondary-raw), .6);--color-secondary-70: rgba(var(--color-secondary-raw), .7);--color-secondary-80: rgba(var(--color-secondary-raw), .8);--color-secondary-90: rgba(var(--color-secondary-raw), .9);--color-text: #111111;--color-bg: #f9f9f9;--button-primary-bg: #007bff;--button-primary-text: #f9f9f9;--button-primary-bg-hover: #033468;--button-primary-text-hover: #f9f9f9;--button-primary-outline-border: #020202;--button-primary-outline-text: #020202;--button-primary-outline-bg-hover: #007bff;--button-primary-outline-text-hover: #f9f9f9;--button-secondary-bg: #6c757d;--button-secondary-text: #f9f9f9;--button-secondary-bg-hover: #1c1e20;--button-secondary-text-hover: #f9f9f9;--button-link-text: #111111;--button-link-text-hover: #007bff;--button-header-bg: #007bff;--button-header-text: #f9f9f9;--button-header-bg-hover: rgba(0, 0, 0, .05);--button-header-text-hover: #f9f9f9;--header-clear-bg: #007bff;--header-mobile-bg: #007bff;--header-logo-text: #0f0f10;--modal-bg: #f9f9f9;--close-btn: #111111;--item-text: #111111;--progress-color: #79b6ff;--progress-bg: #dde8f5;--tag-color: #79b6ff;--tag-bg: #dde8f5;--footer-bg: #dadada;--footer-text: #000;--footer-text-hover: #79b6ff;--footer-links: #000;--footer-links-hover: #79b6ff;--footer-arrows: #fff;--footer-arrows-hover: #fff;--footer-arrows-bg: #b6b6b6;--footer-arrows-bg-hover: #8b8a8a}.social-footer{text-align:center}.social-footer__slider-images{position:relative}.social-footer__slider-images .swiper-wrapper{display:flex;align-items:center}.social-footer__slider-images .swiper-slide{flex:0 0 auto;width:auto}.social-footer__slider-images .swiper-slide img{display:block;border-radius:.75rem;width:160px;height:auto;object-fit:cover}.social-footer__slider-images .swiper-button-prev,.social-footer__slider-images .swiper-button-next{display:flex;align-items:center;justify-content:center;position:absolute;top:50%;transform:translateY(-50%);z-index:10;width:32px;height:32px;border-radius:50%;background:var(--footer-arrows-bg);color:var(--footer-arrows)}.social-footer__slider-images .swiper-button-prev ui-icon,.social-footer__slider-images .swiper-button-prev lucide-icon,.social-footer__slider-images .swiper-button-prev svg,.social-footer__slider-images .swiper-button-next ui-icon,.social-footer__slider-images .swiper-button-next lucide-icon,.social-footer__slider-images .swiper-button-next svg{display:block;width:18px;height:18px}.social-footer__slider-images .swiper-button-prev:hover,.social-footer__slider-images .swiper-button-next:hover{background:var(--footer-arrows-bg-hover);color:var(--footer-arrows-hover)}.social-footer__slider-images .swiper-button-prev{left:1rem}.social-footer__slider-images .swiper-button-next{right:1rem}.social-footer__slider-images .swiper-button-prev:after,.social-footer__slider-images .swiper-button-next:after{content:none!important}.social-footer__bottom-section{gap:1rem}.social-footer__hashtag{font-size:2rem;font-weight:700;text-align:left}.social-footer__socials{justify-content:right;display:flex;gap:1.5rem}.social-footer__socials a{font-size:1.25rem;color:var(--footer-text, #999);transition:color .3s ease}.social-footer__socials a:hover{color:var(--footer-link-hover, #000)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: LinkTypeDirective, selector: "[linkType]", inputs: ["linkType", "href"], outputs: ["anchorClicked"] }, { kind: "directive", type: SwiperDirective, selector: "[appSwiper]", inputs: ["swiperConfig"] }, { kind: "component", type: UiIconComponent, selector: "ui-icon", inputs: ["name", "size", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
55
55
  }
56
56
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: SocialFooterComponent, decorators: [{
57
57
  type: Component,
58
58
  args: [{ selector: 'lib-social-footer', standalone: true, imports: [CommonModule, LinkTypeDirective, SwiperDirective, UiIconComponent], changeDetection: ChangeDetectionStrategy.OnPush, host: {
59
59
  style: 'display: contents',
60
- }, template: "<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", styles: [":root[data-theme=dark]{color-scheme:dark;--color-primary: #007bff;--color-secondary: #f3f4f6;--color-text: #f3f4f6;--color-bg: #0f0f10;--button-primary-bg: #007bff;--button-primary-text: #f9f9f9;--button-primary-bg-hover: #033468;--button-primary-text-hover: #f9f9f9;--button-primary-outline-border: #020202;--button-primary-outline-text: #020202;--button-primary-outline-bg-hover: #007bff;--button-primary-outline-text-hover: #f9f9f9;--button-secondary-bg: #2b3035;--button-secondary-text: #f9f9f9;--button-secondary-bg-hover: #1c1e20;--button-secondary-text-hover: #f9f9f9;--button-link-text: #f3f4f6;--button-link-text-hover: #79b6ff;--button-header-bg: #007bff;--button-header-text: #f9f9f9;--button-header-bg-hover: rgba(230, 230, 230, .062);--button-header-text-hover: #f9f9f9;--header-clear-bg: #0f0f10;--header-mobile-bg: #0f0f10;--header-logo-text: #0f0f10;--modal-bg: #17181a;--close-btn: #f3f4f6;--item-text: #f3f4f6;--progress-color: #f9f9f9;--progress-bg: #79b6ff;--tag-color: #f9f9f9;--tag-bg: #79b6ff;--footer-bg: #0f0f10;--footer-text: #f3f4f6;--footer-text-hover: #79b6ff;--footer-links: #f3f4f6;--footer-links-hover: #79b6ff;--footer-arrows: #fff;--footer-arrows-hover: #0f0f10;--footer-arrows-bg: #dddddd;--footer-arrows-bg-hover: #f3f3f3}:root,:root[data-theme=light]{color-scheme:light;--color-primary: #007bff;--color-secondary: #f3f4f6;--color-text: #111111;--color-bg: #f9f9f9;--button-primary-bg: #007bff;--button-primary-text: #f9f9f9;--button-primary-bg-hover: #033468;--button-primary-text-hover: #f9f9f9;--button-primary-outline-border: #020202;--button-primary-outline-text: #020202;--button-primary-outline-bg-hover: #007bff;--button-primary-outline-text-hover: #f9f9f9;--button-secondary-bg: #6c757d;--button-secondary-text: #f9f9f9;--button-secondary-bg-hover: #1c1e20;--button-secondary-text-hover: #f9f9f9;--button-link-text: #111111;--button-link-text-hover: #007bff;--button-header-bg: #007bff;--button-header-text: #f9f9f9;--button-header-bg-hover: rgba(0, 0, 0, .05);--button-header-text-hover: #f9f9f9;--header-clear-bg: #007bff;--header-mobile-bg: #007bff;--header-logo-text: #0f0f10;--modal-bg: #f9f9f9;--close-btn: #111111;--item-text: #111111;--progress-color: #79b6ff;--progress-bg: #dde8f5;--tag-color: #79b6ff;--tag-bg: #dde8f5;--footer-bg: #dadada;--footer-text: #000;--footer-text-hover: #79b6ff;--footer-links: #000;--footer-links-hover: #79b6ff;--footer-arrows: #fff;--footer-arrows-hover: #fff;--footer-arrows-bg: #b6b6b6;--footer-arrows-bg-hover: #8b8a8a}.social-footer{text-align:center}.social-footer__slider-images{position:relative}.social-footer__slider-images .swiper-wrapper{display:flex;align-items:center}.social-footer__slider-images .swiper-slide{flex:0 0 auto;width:auto}.social-footer__slider-images .swiper-slide img{display:block;border-radius:.75rem;width:160px;height:auto;object-fit:cover}.social-footer__slider-images .swiper-button-prev,.social-footer__slider-images .swiper-button-next{display:flex;align-items:center;justify-content:center;position:absolute;top:50%;transform:translateY(-50%);z-index:10;width:32px;height:32px;border-radius:50%;background:var(--footer-arrows-bg);color:var(--footer-arrows)}.social-footer__slider-images .swiper-button-prev ui-icon,.social-footer__slider-images .swiper-button-prev lucide-icon,.social-footer__slider-images .swiper-button-prev svg,.social-footer__slider-images .swiper-button-next ui-icon,.social-footer__slider-images .swiper-button-next lucide-icon,.social-footer__slider-images .swiper-button-next svg{display:block;width:18px;height:18px}.social-footer__slider-images .swiper-button-prev:hover,.social-footer__slider-images .swiper-button-next:hover{background:var(--footer-arrows-bg-hover);color:var(--footer-arrows-hover)}.social-footer__slider-images .swiper-button-prev{left:1rem}.social-footer__slider-images .swiper-button-next{right:1rem}.social-footer__slider-images .swiper-button-prev:after,.social-footer__slider-images .swiper-button-next:after{content:none!important}.social-footer__bottom-section{gap:1rem}.social-footer__hashtag{font-size:2rem;font-weight:700;text-align:left}.social-footer__socials{justify-content:right;display:flex;gap:1.5rem}.social-footer__socials a{font-size:1.25rem;color:var(--footer-text, #999);transition:color .3s ease}.social-footer__socials a:hover{color:var(--footer-link-hover, #000)}\n"] }]
60
+ }, template: "<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", styles: [":root[data-theme=dark]{color-scheme:dark;--color-primary: #007bff;--color-primary-raw: 0, 123, 255;--color-primary-10: rgba(var(--color-primary-raw), .1);--color-primary-20: rgba(var(--color-primary-raw), .2);--color-primary-30: rgba(var(--color-primary-raw), .3);--color-primary-40: rgba(var(--color-primary-raw), .4);--color-primary-50: rgba(var(--color-primary-raw), .5);--color-primary-60: rgba(var(--color-primary-raw), .6);--color-primary-70: rgba(var(--color-primary-raw), .7);--color-primary-80: rgba(var(--color-primary-raw), .8);--color-primary-90: rgba(var(--color-primary-raw), .9);--color-secondary: #f3f4f6;--color-secondary-raw: 243, 244, 246;--color-secondary-10: rgba(var(--color-secondary-raw), .1);--color-secondary-20: rgba(var(--color-secondary-raw), .2);--color-secondary-30: rgba(var(--color-secondary-raw), .3);--color-secondary-40: rgba(var(--color-secondary-raw), .4);--color-secondary-50: rgba(var(--color-secondary-raw), .5);--color-secondary-60: rgba(var(--color-secondary-raw), .6);--color-secondary-70: rgba(var(--color-secondary-raw), .7);--color-secondary-80: rgba(var(--color-secondary-raw), .8);--color-secondary-90: rgba(var(--color-secondary-raw), .9);--color-text: #f3f4f6;--color-bg: #0f0f10;--button-primary-bg: #007bff;--button-primary-text: #f9f9f9;--button-primary-bg-hover: #033468;--button-primary-text-hover: #f9f9f9;--button-primary-outline-border: #020202;--button-primary-outline-text: #020202;--button-primary-outline-bg-hover: #007bff;--button-primary-outline-text-hover: #f9f9f9;--button-secondary-bg: #2b3035;--button-secondary-text: #f9f9f9;--button-secondary-bg-hover: #1c1e20;--button-secondary-text-hover: #f9f9f9;--button-link-text: #f3f4f6;--button-link-text-hover: #79b6ff;--button-header-bg: #007bff;--button-header-text: #f9f9f9;--button-header-bg-hover: rgba(230, 230, 230, .062);--button-header-text-hover: #f9f9f9;--header-clear-bg: #0f0f10;--header-mobile-bg: #0f0f10;--header-logo-text: #0f0f10;--modal-bg: #17181a;--close-btn: #f3f4f6;--item-text: #f3f4f6;--progress-color: #f9f9f9;--progress-bg: #79b6ff;--tag-color: #f9f9f9;--tag-bg: #79b6ff;--footer-bg: #0f0f10;--footer-text: #f3f4f6;--footer-text-hover: #79b6ff;--footer-links: #f3f4f6;--footer-links-hover: #79b6ff;--footer-arrows: #fff;--footer-arrows-hover: #0f0f10;--footer-arrows-bg: #dddddd;--footer-arrows-bg-hover: #f3f3f3}:root,:root[data-theme=light]{color-scheme:light;--color-primary: #007bff;--color-primary-raw: 0, 123, 255;--color-primary-10: rgba(var(--color-primary-raw), .1);--color-primary-20: rgba(var(--color-primary-raw), .2);--color-primary-30: rgba(var(--color-primary-raw), .3);--color-primary-40: rgba(var(--color-primary-raw), .4);--color-primary-50: rgba(var(--color-primary-raw), .5);--color-primary-60: rgba(var(--color-primary-raw), .6);--color-primary-70: rgba(var(--color-primary-raw), .7);--color-primary-80: rgba(var(--color-primary-raw), .8);--color-primary-90: rgba(var(--color-primary-raw), .9);--color-secondary: #f3f4f6;--color-secondary-raw: 243, 244, 246;--color-secondary-10: rgba(var(--color-secondary-raw), .1);--color-secondary-20: rgba(var(--color-secondary-raw), .2);--color-secondary-30: rgba(var(--color-secondary-raw), .3);--color-secondary-40: rgba(var(--color-secondary-raw), .4);--color-secondary-50: rgba(var(--color-secondary-raw), .5);--color-secondary-60: rgba(var(--color-secondary-raw), .6);--color-secondary-70: rgba(var(--color-secondary-raw), .7);--color-secondary-80: rgba(var(--color-secondary-raw), .8);--color-secondary-90: rgba(var(--color-secondary-raw), .9);--color-text: #111111;--color-bg: #f9f9f9;--button-primary-bg: #007bff;--button-primary-text: #f9f9f9;--button-primary-bg-hover: #033468;--button-primary-text-hover: #f9f9f9;--button-primary-outline-border: #020202;--button-primary-outline-text: #020202;--button-primary-outline-bg-hover: #007bff;--button-primary-outline-text-hover: #f9f9f9;--button-secondary-bg: #6c757d;--button-secondary-text: #f9f9f9;--button-secondary-bg-hover: #1c1e20;--button-secondary-text-hover: #f9f9f9;--button-link-text: #111111;--button-link-text-hover: #007bff;--button-header-bg: #007bff;--button-header-text: #f9f9f9;--button-header-bg-hover: rgba(0, 0, 0, .05);--button-header-text-hover: #f9f9f9;--header-clear-bg: #007bff;--header-mobile-bg: #007bff;--header-logo-text: #0f0f10;--modal-bg: #f9f9f9;--close-btn: #111111;--item-text: #111111;--progress-color: #79b6ff;--progress-bg: #dde8f5;--tag-color: #79b6ff;--tag-bg: #dde8f5;--footer-bg: #dadada;--footer-text: #000;--footer-text-hover: #79b6ff;--footer-links: #000;--footer-links-hover: #79b6ff;--footer-arrows: #fff;--footer-arrows-hover: #fff;--footer-arrows-bg: #b6b6b6;--footer-arrows-bg-hover: #8b8a8a}.social-footer{text-align:center}.social-footer__slider-images{position:relative}.social-footer__slider-images .swiper-wrapper{display:flex;align-items:center}.social-footer__slider-images .swiper-slide{flex:0 0 auto;width:auto}.social-footer__slider-images .swiper-slide img{display:block;border-radius:.75rem;width:160px;height:auto;object-fit:cover}.social-footer__slider-images .swiper-button-prev,.social-footer__slider-images .swiper-button-next{display:flex;align-items:center;justify-content:center;position:absolute;top:50%;transform:translateY(-50%);z-index:10;width:32px;height:32px;border-radius:50%;background:var(--footer-arrows-bg);color:var(--footer-arrows)}.social-footer__slider-images .swiper-button-prev ui-icon,.social-footer__slider-images .swiper-button-prev lucide-icon,.social-footer__slider-images .swiper-button-prev svg,.social-footer__slider-images .swiper-button-next ui-icon,.social-footer__slider-images .swiper-button-next lucide-icon,.social-footer__slider-images .swiper-button-next svg{display:block;width:18px;height:18px}.social-footer__slider-images .swiper-button-prev:hover,.social-footer__slider-images .swiper-button-next:hover{background:var(--footer-arrows-bg-hover);color:var(--footer-arrows-hover)}.social-footer__slider-images .swiper-button-prev{left:1rem}.social-footer__slider-images .swiper-button-next{right:1rem}.social-footer__slider-images .swiper-button-prev:after,.social-footer__slider-images .swiper-button-next:after{content:none!important}.social-footer__bottom-section{gap:1rem}.social-footer__hashtag{font-size:2rem;font-weight:700;text-align:left}.social-footer__socials{justify-content:right;display:flex;gap:1.5rem}.social-footer__socials a{font-size:1.25rem;color:var(--footer-text, #999);transition:color .3s ease}.social-footer__socials a:hover{color:var(--footer-link-hover, #000)}\n"] }]
61
61
  }], propDecorators: { images: [{
62
62
  type: Input
63
63
  }], socials: [{
@@ -76,13 +76,13 @@ class VisualFooterComponent {
76
76
  socials;
77
77
  image;
78
78
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: VisualFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
79
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.19", type: VisualFooterComponent, isStandalone: true, selector: "lib-visual-footer", inputs: { contactTitle: "contactTitle", contactPhone: "contactPhone", contactEmail: "contactEmail", addressTitle: "addressTitle", address: "address", socialsTitle: "socialsTitle", socials: "socials", image: "image" }, host: { styleAttribute: "display: contents" }, ngImport: i0, template: "<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", styles: [":root[data-theme=dark]{color-scheme:dark;--color-primary: #007bff;--color-secondary: #f3f4f6;--color-text: #f3f4f6;--color-bg: #0f0f10;--button-primary-bg: #007bff;--button-primary-text: #f9f9f9;--button-primary-bg-hover: #033468;--button-primary-text-hover: #f9f9f9;--button-primary-outline-border: #020202;--button-primary-outline-text: #020202;--button-primary-outline-bg-hover: #007bff;--button-primary-outline-text-hover: #f9f9f9;--button-secondary-bg: #2b3035;--button-secondary-text: #f9f9f9;--button-secondary-bg-hover: #1c1e20;--button-secondary-text-hover: #f9f9f9;--button-link-text: #f3f4f6;--button-link-text-hover: #79b6ff;--button-header-bg: #007bff;--button-header-text: #f9f9f9;--button-header-bg-hover: rgba(230, 230, 230, .062);--button-header-text-hover: #f9f9f9;--header-clear-bg: #0f0f10;--header-mobile-bg: #0f0f10;--header-logo-text: #0f0f10;--modal-bg: #17181a;--close-btn: #f3f4f6;--item-text: #f3f4f6;--progress-color: #f9f9f9;--progress-bg: #79b6ff;--tag-color: #f9f9f9;--tag-bg: #79b6ff;--footer-bg: #0f0f10;--footer-text: #f3f4f6;--footer-text-hover: #79b6ff;--footer-links: #f3f4f6;--footer-links-hover: #79b6ff;--footer-arrows: #fff;--footer-arrows-hover: #0f0f10;--footer-arrows-bg: #dddddd;--footer-arrows-bg-hover: #f3f3f3}:root,:root[data-theme=light]{color-scheme:light;--color-primary: #007bff;--color-secondary: #f3f4f6;--color-text: #111111;--color-bg: #f9f9f9;--button-primary-bg: #007bff;--button-primary-text: #f9f9f9;--button-primary-bg-hover: #033468;--button-primary-text-hover: #f9f9f9;--button-primary-outline-border: #020202;--button-primary-outline-text: #020202;--button-primary-outline-bg-hover: #007bff;--button-primary-outline-text-hover: #f9f9f9;--button-secondary-bg: #6c757d;--button-secondary-text: #f9f9f9;--button-secondary-bg-hover: #1c1e20;--button-secondary-text-hover: #f9f9f9;--button-link-text: #111111;--button-link-text-hover: #007bff;--button-header-bg: #007bff;--button-header-text: #f9f9f9;--button-header-bg-hover: rgba(0, 0, 0, .05);--button-header-text-hover: #f9f9f9;--header-clear-bg: #007bff;--header-mobile-bg: #007bff;--header-logo-text: #0f0f10;--modal-bg: #f9f9f9;--close-btn: #111111;--item-text: #111111;--progress-color: #79b6ff;--progress-bg: #dde8f5;--tag-color: #79b6ff;--tag-bg: #dde8f5;--footer-bg: #dadada;--footer-text: #000;--footer-text-hover: #79b6ff;--footer-links: #000;--footer-links-hover: #79b6ff;--footer-arrows: #fff;--footer-arrows-hover: #fff;--footer-arrows-bg: #b6b6b6;--footer-arrows-bg-hover: #8b8a8a}.visual-footer{margin-left:calc(-50vw + 50%);margin-right:calc(-50vw + 50%);padding-left:calc(50vw - 50%);padding-right:calc(50vw - 50%);gap:2rem;background:var(--footer-bg)}.visual-footer__texts{gap:2rem}.visual-footer__texts .btn{padding:var(--spacing-sm) 0}.visual-footer__texts .btn-link{display:inline;width:fit-content}.visual-footer__texts .title{font-size:1.5rem}.visual-footer__texts .text{font-weight:300;margin:0;display:flex;flex-direction:column;gap:.25rem}.visual-footer__image img{width:100%;height:auto;border-radius:.5rem;object-fit:cover}.visual-footer__contact,.visual-footer__address,.visual-footer__socials{gap:.25rem;display:flex;flex-direction:column;margin-bottom:1rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: LinkTypeDirective, selector: "[linkType]", inputs: ["linkType", "href"], outputs: ["anchorClicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
79
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.19", type: VisualFooterComponent, isStandalone: true, selector: "lib-visual-footer", inputs: { contactTitle: "contactTitle", contactPhone: "contactPhone", contactEmail: "contactEmail", addressTitle: "addressTitle", address: "address", socialsTitle: "socialsTitle", socials: "socials", image: "image" }, host: { styleAttribute: "display: contents" }, ngImport: i0, template: "<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", styles: [":root[data-theme=dark]{color-scheme:dark;--color-primary: #007bff;--color-primary-raw: 0, 123, 255;--color-primary-10: rgba(var(--color-primary-raw), .1);--color-primary-20: rgba(var(--color-primary-raw), .2);--color-primary-30: rgba(var(--color-primary-raw), .3);--color-primary-40: rgba(var(--color-primary-raw), .4);--color-primary-50: rgba(var(--color-primary-raw), .5);--color-primary-60: rgba(var(--color-primary-raw), .6);--color-primary-70: rgba(var(--color-primary-raw), .7);--color-primary-80: rgba(var(--color-primary-raw), .8);--color-primary-90: rgba(var(--color-primary-raw), .9);--color-secondary: #f3f4f6;--color-secondary-raw: 243, 244, 246;--color-secondary-10: rgba(var(--color-secondary-raw), .1);--color-secondary-20: rgba(var(--color-secondary-raw), .2);--color-secondary-30: rgba(var(--color-secondary-raw), .3);--color-secondary-40: rgba(var(--color-secondary-raw), .4);--color-secondary-50: rgba(var(--color-secondary-raw), .5);--color-secondary-60: rgba(var(--color-secondary-raw), .6);--color-secondary-70: rgba(var(--color-secondary-raw), .7);--color-secondary-80: rgba(var(--color-secondary-raw), .8);--color-secondary-90: rgba(var(--color-secondary-raw), .9);--color-text: #f3f4f6;--color-bg: #0f0f10;--button-primary-bg: #007bff;--button-primary-text: #f9f9f9;--button-primary-bg-hover: #033468;--button-primary-text-hover: #f9f9f9;--button-primary-outline-border: #020202;--button-primary-outline-text: #020202;--button-primary-outline-bg-hover: #007bff;--button-primary-outline-text-hover: #f9f9f9;--button-secondary-bg: #2b3035;--button-secondary-text: #f9f9f9;--button-secondary-bg-hover: #1c1e20;--button-secondary-text-hover: #f9f9f9;--button-link-text: #f3f4f6;--button-link-text-hover: #79b6ff;--button-header-bg: #007bff;--button-header-text: #f9f9f9;--button-header-bg-hover: rgba(230, 230, 230, .062);--button-header-text-hover: #f9f9f9;--header-clear-bg: #0f0f10;--header-mobile-bg: #0f0f10;--header-logo-text: #0f0f10;--modal-bg: #17181a;--close-btn: #f3f4f6;--item-text: #f3f4f6;--progress-color: #f9f9f9;--progress-bg: #79b6ff;--tag-color: #f9f9f9;--tag-bg: #79b6ff;--footer-bg: #0f0f10;--footer-text: #f3f4f6;--footer-text-hover: #79b6ff;--footer-links: #f3f4f6;--footer-links-hover: #79b6ff;--footer-arrows: #fff;--footer-arrows-hover: #0f0f10;--footer-arrows-bg: #dddddd;--footer-arrows-bg-hover: #f3f3f3}:root,:root[data-theme=light]{color-scheme:light;--color-primary: #007bff;--color-primary-raw: 0, 123, 255;--color-primary-10: rgba(var(--color-primary-raw), .1);--color-primary-20: rgba(var(--color-primary-raw), .2);--color-primary-30: rgba(var(--color-primary-raw), .3);--color-primary-40: rgba(var(--color-primary-raw), .4);--color-primary-50: rgba(var(--color-primary-raw), .5);--color-primary-60: rgba(var(--color-primary-raw), .6);--color-primary-70: rgba(var(--color-primary-raw), .7);--color-primary-80: rgba(var(--color-primary-raw), .8);--color-primary-90: rgba(var(--color-primary-raw), .9);--color-secondary: #f3f4f6;--color-secondary-raw: 243, 244, 246;--color-secondary-10: rgba(var(--color-secondary-raw), .1);--color-secondary-20: rgba(var(--color-secondary-raw), .2);--color-secondary-30: rgba(var(--color-secondary-raw), .3);--color-secondary-40: rgba(var(--color-secondary-raw), .4);--color-secondary-50: rgba(var(--color-secondary-raw), .5);--color-secondary-60: rgba(var(--color-secondary-raw), .6);--color-secondary-70: rgba(var(--color-secondary-raw), .7);--color-secondary-80: rgba(var(--color-secondary-raw), .8);--color-secondary-90: rgba(var(--color-secondary-raw), .9);--color-text: #111111;--color-bg: #f9f9f9;--button-primary-bg: #007bff;--button-primary-text: #f9f9f9;--button-primary-bg-hover: #033468;--button-primary-text-hover: #f9f9f9;--button-primary-outline-border: #020202;--button-primary-outline-text: #020202;--button-primary-outline-bg-hover: #007bff;--button-primary-outline-text-hover: #f9f9f9;--button-secondary-bg: #6c757d;--button-secondary-text: #f9f9f9;--button-secondary-bg-hover: #1c1e20;--button-secondary-text-hover: #f9f9f9;--button-link-text: #111111;--button-link-text-hover: #007bff;--button-header-bg: #007bff;--button-header-text: #f9f9f9;--button-header-bg-hover: rgba(0, 0, 0, .05);--button-header-text-hover: #f9f9f9;--header-clear-bg: #007bff;--header-mobile-bg: #007bff;--header-logo-text: #0f0f10;--modal-bg: #f9f9f9;--close-btn: #111111;--item-text: #111111;--progress-color: #79b6ff;--progress-bg: #dde8f5;--tag-color: #79b6ff;--tag-bg: #dde8f5;--footer-bg: #dadada;--footer-text: #000;--footer-text-hover: #79b6ff;--footer-links: #000;--footer-links-hover: #79b6ff;--footer-arrows: #fff;--footer-arrows-hover: #fff;--footer-arrows-bg: #b6b6b6;--footer-arrows-bg-hover: #8b8a8a}.visual-footer{margin-left:calc(-50vw + 50%);margin-right:calc(-50vw + 50%);padding-left:calc(50vw - 50%);padding-right:calc(50vw - 50%);gap:2rem;background:var(--footer-bg)}.visual-footer__texts{gap:2rem}.visual-footer__texts .btn{padding:var(--spacing-sm) 0}.visual-footer__texts .btn-link{display:inline;width:fit-content}.visual-footer__texts .title{font-size:1.5rem}.visual-footer__texts .text{font-weight:300;margin:0;display:flex;flex-direction:column;gap:.25rem}.visual-footer__image img{width:100%;height:auto;border-radius:.5rem;object-fit:cover}.visual-footer__contact,.visual-footer__address,.visual-footer__socials{gap:.25rem;display:flex;flex-direction:column;margin-bottom:1rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: LinkTypeDirective, selector: "[linkType]", inputs: ["linkType", "href"], outputs: ["anchorClicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
80
80
  }
81
81
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: VisualFooterComponent, decorators: [{
82
82
  type: Component,
83
83
  args: [{ selector: 'lib-visual-footer', standalone: true, imports: [CommonModule, LinkTypeDirective], changeDetection: ChangeDetectionStrategy.OnPush, host: {
84
84
  style: 'display: contents',
85
- }, template: "<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", styles: [":root[data-theme=dark]{color-scheme:dark;--color-primary: #007bff;--color-secondary: #f3f4f6;--color-text: #f3f4f6;--color-bg: #0f0f10;--button-primary-bg: #007bff;--button-primary-text: #f9f9f9;--button-primary-bg-hover: #033468;--button-primary-text-hover: #f9f9f9;--button-primary-outline-border: #020202;--button-primary-outline-text: #020202;--button-primary-outline-bg-hover: #007bff;--button-primary-outline-text-hover: #f9f9f9;--button-secondary-bg: #2b3035;--button-secondary-text: #f9f9f9;--button-secondary-bg-hover: #1c1e20;--button-secondary-text-hover: #f9f9f9;--button-link-text: #f3f4f6;--button-link-text-hover: #79b6ff;--button-header-bg: #007bff;--button-header-text: #f9f9f9;--button-header-bg-hover: rgba(230, 230, 230, .062);--button-header-text-hover: #f9f9f9;--header-clear-bg: #0f0f10;--header-mobile-bg: #0f0f10;--header-logo-text: #0f0f10;--modal-bg: #17181a;--close-btn: #f3f4f6;--item-text: #f3f4f6;--progress-color: #f9f9f9;--progress-bg: #79b6ff;--tag-color: #f9f9f9;--tag-bg: #79b6ff;--footer-bg: #0f0f10;--footer-text: #f3f4f6;--footer-text-hover: #79b6ff;--footer-links: #f3f4f6;--footer-links-hover: #79b6ff;--footer-arrows: #fff;--footer-arrows-hover: #0f0f10;--footer-arrows-bg: #dddddd;--footer-arrows-bg-hover: #f3f3f3}:root,:root[data-theme=light]{color-scheme:light;--color-primary: #007bff;--color-secondary: #f3f4f6;--color-text: #111111;--color-bg: #f9f9f9;--button-primary-bg: #007bff;--button-primary-text: #f9f9f9;--button-primary-bg-hover: #033468;--button-primary-text-hover: #f9f9f9;--button-primary-outline-border: #020202;--button-primary-outline-text: #020202;--button-primary-outline-bg-hover: #007bff;--button-primary-outline-text-hover: #f9f9f9;--button-secondary-bg: #6c757d;--button-secondary-text: #f9f9f9;--button-secondary-bg-hover: #1c1e20;--button-secondary-text-hover: #f9f9f9;--button-link-text: #111111;--button-link-text-hover: #007bff;--button-header-bg: #007bff;--button-header-text: #f9f9f9;--button-header-bg-hover: rgba(0, 0, 0, .05);--button-header-text-hover: #f9f9f9;--header-clear-bg: #007bff;--header-mobile-bg: #007bff;--header-logo-text: #0f0f10;--modal-bg: #f9f9f9;--close-btn: #111111;--item-text: #111111;--progress-color: #79b6ff;--progress-bg: #dde8f5;--tag-color: #79b6ff;--tag-bg: #dde8f5;--footer-bg: #dadada;--footer-text: #000;--footer-text-hover: #79b6ff;--footer-links: #000;--footer-links-hover: #79b6ff;--footer-arrows: #fff;--footer-arrows-hover: #fff;--footer-arrows-bg: #b6b6b6;--footer-arrows-bg-hover: #8b8a8a}.visual-footer{margin-left:calc(-50vw + 50%);margin-right:calc(-50vw + 50%);padding-left:calc(50vw - 50%);padding-right:calc(50vw - 50%);gap:2rem;background:var(--footer-bg)}.visual-footer__texts{gap:2rem}.visual-footer__texts .btn{padding:var(--spacing-sm) 0}.visual-footer__texts .btn-link{display:inline;width:fit-content}.visual-footer__texts .title{font-size:1.5rem}.visual-footer__texts .text{font-weight:300;margin:0;display:flex;flex-direction:column;gap:.25rem}.visual-footer__image img{width:100%;height:auto;border-radius:.5rem;object-fit:cover}.visual-footer__contact,.visual-footer__address,.visual-footer__socials{gap:.25rem;display:flex;flex-direction:column;margin-bottom:1rem}\n"] }]
85
+ }, template: "<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", styles: [":root[data-theme=dark]{color-scheme:dark;--color-primary: #007bff;--color-primary-raw: 0, 123, 255;--color-primary-10: rgba(var(--color-primary-raw), .1);--color-primary-20: rgba(var(--color-primary-raw), .2);--color-primary-30: rgba(var(--color-primary-raw), .3);--color-primary-40: rgba(var(--color-primary-raw), .4);--color-primary-50: rgba(var(--color-primary-raw), .5);--color-primary-60: rgba(var(--color-primary-raw), .6);--color-primary-70: rgba(var(--color-primary-raw), .7);--color-primary-80: rgba(var(--color-primary-raw), .8);--color-primary-90: rgba(var(--color-primary-raw), .9);--color-secondary: #f3f4f6;--color-secondary-raw: 243, 244, 246;--color-secondary-10: rgba(var(--color-secondary-raw), .1);--color-secondary-20: rgba(var(--color-secondary-raw), .2);--color-secondary-30: rgba(var(--color-secondary-raw), .3);--color-secondary-40: rgba(var(--color-secondary-raw), .4);--color-secondary-50: rgba(var(--color-secondary-raw), .5);--color-secondary-60: rgba(var(--color-secondary-raw), .6);--color-secondary-70: rgba(var(--color-secondary-raw), .7);--color-secondary-80: rgba(var(--color-secondary-raw), .8);--color-secondary-90: rgba(var(--color-secondary-raw), .9);--color-text: #f3f4f6;--color-bg: #0f0f10;--button-primary-bg: #007bff;--button-primary-text: #f9f9f9;--button-primary-bg-hover: #033468;--button-primary-text-hover: #f9f9f9;--button-primary-outline-border: #020202;--button-primary-outline-text: #020202;--button-primary-outline-bg-hover: #007bff;--button-primary-outline-text-hover: #f9f9f9;--button-secondary-bg: #2b3035;--button-secondary-text: #f9f9f9;--button-secondary-bg-hover: #1c1e20;--button-secondary-text-hover: #f9f9f9;--button-link-text: #f3f4f6;--button-link-text-hover: #79b6ff;--button-header-bg: #007bff;--button-header-text: #f9f9f9;--button-header-bg-hover: rgba(230, 230, 230, .062);--button-header-text-hover: #f9f9f9;--header-clear-bg: #0f0f10;--header-mobile-bg: #0f0f10;--header-logo-text: #0f0f10;--modal-bg: #17181a;--close-btn: #f3f4f6;--item-text: #f3f4f6;--progress-color: #f9f9f9;--progress-bg: #79b6ff;--tag-color: #f9f9f9;--tag-bg: #79b6ff;--footer-bg: #0f0f10;--footer-text: #f3f4f6;--footer-text-hover: #79b6ff;--footer-links: #f3f4f6;--footer-links-hover: #79b6ff;--footer-arrows: #fff;--footer-arrows-hover: #0f0f10;--footer-arrows-bg: #dddddd;--footer-arrows-bg-hover: #f3f3f3}:root,:root[data-theme=light]{color-scheme:light;--color-primary: #007bff;--color-primary-raw: 0, 123, 255;--color-primary-10: rgba(var(--color-primary-raw), .1);--color-primary-20: rgba(var(--color-primary-raw), .2);--color-primary-30: rgba(var(--color-primary-raw), .3);--color-primary-40: rgba(var(--color-primary-raw), .4);--color-primary-50: rgba(var(--color-primary-raw), .5);--color-primary-60: rgba(var(--color-primary-raw), .6);--color-primary-70: rgba(var(--color-primary-raw), .7);--color-primary-80: rgba(var(--color-primary-raw), .8);--color-primary-90: rgba(var(--color-primary-raw), .9);--color-secondary: #f3f4f6;--color-secondary-raw: 243, 244, 246;--color-secondary-10: rgba(var(--color-secondary-raw), .1);--color-secondary-20: rgba(var(--color-secondary-raw), .2);--color-secondary-30: rgba(var(--color-secondary-raw), .3);--color-secondary-40: rgba(var(--color-secondary-raw), .4);--color-secondary-50: rgba(var(--color-secondary-raw), .5);--color-secondary-60: rgba(var(--color-secondary-raw), .6);--color-secondary-70: rgba(var(--color-secondary-raw), .7);--color-secondary-80: rgba(var(--color-secondary-raw), .8);--color-secondary-90: rgba(var(--color-secondary-raw), .9);--color-text: #111111;--color-bg: #f9f9f9;--button-primary-bg: #007bff;--button-primary-text: #f9f9f9;--button-primary-bg-hover: #033468;--button-primary-text-hover: #f9f9f9;--button-primary-outline-border: #020202;--button-primary-outline-text: #020202;--button-primary-outline-bg-hover: #007bff;--button-primary-outline-text-hover: #f9f9f9;--button-secondary-bg: #6c757d;--button-secondary-text: #f9f9f9;--button-secondary-bg-hover: #1c1e20;--button-secondary-text-hover: #f9f9f9;--button-link-text: #111111;--button-link-text-hover: #007bff;--button-header-bg: #007bff;--button-header-text: #f9f9f9;--button-header-bg-hover: rgba(0, 0, 0, .05);--button-header-text-hover: #f9f9f9;--header-clear-bg: #007bff;--header-mobile-bg: #007bff;--header-logo-text: #0f0f10;--modal-bg: #f9f9f9;--close-btn: #111111;--item-text: #111111;--progress-color: #79b6ff;--progress-bg: #dde8f5;--tag-color: #79b6ff;--tag-bg: #dde8f5;--footer-bg: #dadada;--footer-text: #000;--footer-text-hover: #79b6ff;--footer-links: #000;--footer-links-hover: #79b6ff;--footer-arrows: #fff;--footer-arrows-hover: #fff;--footer-arrows-bg: #b6b6b6;--footer-arrows-bg-hover: #8b8a8a}.visual-footer{margin-left:calc(-50vw + 50%);margin-right:calc(-50vw + 50%);padding-left:calc(50vw - 50%);padding-right:calc(50vw - 50%);gap:2rem;background:var(--footer-bg)}.visual-footer__texts{gap:2rem}.visual-footer__texts .btn{padding:var(--spacing-sm) 0}.visual-footer__texts .btn-link{display:inline;width:fit-content}.visual-footer__texts .title{font-size:1.5rem}.visual-footer__texts .text{font-weight:300;margin:0;display:flex;flex-direction:column;gap:.25rem}.visual-footer__image img{width:100%;height:auto;border-radius:.5rem;object-fit:cover}.visual-footer__contact,.visual-footer__address,.visual-footer__socials{gap:.25rem;display:flex;flex-direction:column;margin-bottom:1rem}\n"] }]
86
86
  }], propDecorators: { contactTitle: [{
87
87
  type: Input
88
88
  }], contactPhone: [{
@@ -101,9 +101,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImpo
101
101
  type: Input
102
102
  }] } });
103
103
 
104
+ class ColumnsFooterComponent {
105
+ columns;
106
+ copyright;
107
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: ColumnsFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
108
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.19", type: ColumnsFooterComponent, isStandalone: true, selector: "lib-columns-footer", inputs: { columns: "columns", copyright: "copyright" }, host: { styleAttribute: "display: contents" }, ngImport: i0, 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", styles: [".columns-footer-wrapper{background-color:var(--color-primary);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(--color-secondary)}.columns-footer-wrapper .columns-footer__one-item a{color:var(--color-secondary-60);text-transform:capitalize;font-size:1.1rem}.columns-footer-wrapper .columns-footer__one-item a:hover{color:var(--color-secondary)}.columns-footer-wrapper .columns-footer__two{justify-items:center}.columns-footer-wrapper .columns-footer__two-title{color:var(--color-secondary)}.columns-footer-wrapper .columns-footer__two-item{margin-bottom:1rem;justify-items:center;justify-self:center}.columns-footer-wrapper .columns-footer__two-item a{color:var(--color-secondary-60);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(--color-secondary)}.columns-footer-wrapper .columns-footer__three-item.mt-separator{margin-top:1.5rem}.columns-footer-wrapper .columns-footer__three-item a{color:var(--color-secondary-60);text-decoration:none;font-size:1.1rem;display:inline-block;padding-bottom:2px;background-image:linear-gradient(var(--color-secondary-60),var(--color-secondary-60));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(--color-secondary-60)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: LinkTypeDirective, selector: "[linkType]", inputs: ["linkType", "href"], outputs: ["anchorClicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
109
+ }
110
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: ColumnsFooterComponent, decorators: [{
111
+ type: Component,
112
+ args: [{ selector: 'lib-columns-footer', imports: [CommonModule, LinkTypeDirective], changeDetection: ChangeDetectionStrategy.OnPush, host: {
113
+ style: 'display: contents',
114
+ }, 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", styles: [".columns-footer-wrapper{background-color:var(--color-primary);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(--color-secondary)}.columns-footer-wrapper .columns-footer__one-item a{color:var(--color-secondary-60);text-transform:capitalize;font-size:1.1rem}.columns-footer-wrapper .columns-footer__one-item a:hover{color:var(--color-secondary)}.columns-footer-wrapper .columns-footer__two{justify-items:center}.columns-footer-wrapper .columns-footer__two-title{color:var(--color-secondary)}.columns-footer-wrapper .columns-footer__two-item{margin-bottom:1rem;justify-items:center;justify-self:center}.columns-footer-wrapper .columns-footer__two-item a{color:var(--color-secondary-60);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(--color-secondary)}.columns-footer-wrapper .columns-footer__three-item.mt-separator{margin-top:1.5rem}.columns-footer-wrapper .columns-footer__three-item a{color:var(--color-secondary-60);text-decoration:none;font-size:1.1rem;display:inline-block;padding-bottom:2px;background-image:linear-gradient(var(--color-secondary-60),var(--color-secondary-60));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(--color-secondary-60)}\n"] }]
115
+ }], propDecorators: { columns: [{
116
+ type: Input
117
+ }], copyright: [{
118
+ type: Input
119
+ }] } });
120
+
104
121
  /**
105
122
  * Generated bundle index. Do not edit.
106
123
  */
107
124
 
108
- export { LegalFooterComponent, LinksFooterComponent, SocialFooterComponent, VisualFooterComponent };
125
+ export { ColumnsFooterComponent, LegalFooterComponent, LinksFooterComponent, SocialFooterComponent, VisualFooterComponent };
109
126
  //# sourceMappingURL=lluc_llull-ui-lib-footers.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"lluc_llull-ui-lib-footers.mjs","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/lluc_llull-ui-lib-footers.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { UiLibButtonI } from '@lluc_llull/ui-lib/interfaces';\nimport { LinkTypeDirective } from '@lluc_llull/ui-lib/directives';\n\nexport type LegalFooterVariant = 'simple' | 'extended';\n\n@Component({\n selector: 'lib-legal-footer',\n standalone: true,\n imports: [CommonModule, LinkTypeDirective],\n templateUrl: './legal-footer.component.html',\n styleUrl: './legal-footer.component.scss',\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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;MAiBa,oBAAoB,CAAA;AACpB,IAAA,IAAI;AACJ,IAAA,KAAK;AACL,IAAA,OAAO;AACP,IAAA,KAAK;IACL,OAAO,GAAuB,QAAQ;wGALtC,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjBjC,muCAiCA,EAAA,MAAA,EAAA,CAAA,yqGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDvBc,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAOb,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAVhC,SAAS;+BACI,kBAAkB,EAAA,UAAA,EAChB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,iBAAiB,CAAC,EAAA,IAAA,EAGpC;AACF,wBAAA,KAAK,EAAE,mBAAmB;AAC7B,qBAAA,EAAA,QAAA,EAAA,muCAAA,EAAA,MAAA,EAAA,CAAA,yqGAAA,CAAA,EAAA;8BAGQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,OAAO,EAAA,CAAA;sBAAf;;;MENQ,oBAAoB,CAAA;AACpB,IAAA,KAAK;wGADL,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChBjC,0VAaA,EAAA,MAAA,EAAA,CAAA,8xBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDLc,YAAY,+BAAE,iBAAiB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAQhC,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAXhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAAA,UAAA,EAChB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,iBAAiB,CAAC,EAAA,eAAA,EAGzB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACF,wBAAA,KAAK,EAAE,mBAAmB;AAC7B,qBAAA,EAAA,QAAA,EAAA,0VAAA,EAAA,MAAA,EAAA,CAAA,8xBAAA,CAAA,EAAA;8BAGQ,KAAK,EAAA,CAAA;sBAAb;;;MECQ,qBAAqB,CAAA;AACrB,IAAA,MAAM;AACN,IAAA,OAAO;AACP,IAAA,OAAO;wGAHP,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClBlC,q0CAoCA,EAAA,MAAA,EAAA,CAAA,4wIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED1Bc,YAAY,+BAAE,iBAAiB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,eAAe,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,eAAe,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAQlE,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAXjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,cACjB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,eAAe,CAAC,EAAA,eAAA,EAG3D,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACF,wBAAA,KAAK,EAAE,mBAAmB;AAC7B,qBAAA,EAAA,QAAA,EAAA,q0CAAA,EAAA,MAAA,EAAA,CAAA,4wIAAA,CAAA,EAAA;8BAGQ,MAAM,EAAA,CAAA;sBAAd;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,OAAO,EAAA,CAAA;sBAAf;;;MELQ,qBAAqB,CAAA;AACrB,IAAA,YAAY;AACZ,IAAA,YAAY;AACZ,IAAA,YAAY;AACZ,IAAA,YAAY;AACZ,IAAA,OAAO;AACP,IAAA,YAAY;AACZ,IAAA,OAAO;AACP,IAAA,KAAK;wGARL,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,OAAA,EAAA,SAAA,EAAA,YAAA,EAAA,cAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChBlC,4oDA8CA,EAAA,MAAA,EAAA,CAAA,qoGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDtCc,YAAY,+BAAE,iBAAiB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAQhC,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAXjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAAA,UAAA,EACjB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,iBAAiB,CAAC,EAAA,eAAA,EAGzB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACF,wBAAA,KAAK,EAAE,mBAAmB;AAC7B,qBAAA,EAAA,QAAA,EAAA,4oDAAA,EAAA,MAAA,EAAA,CAAA,qoGAAA,CAAA,EAAA;8BAGQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,KAAK,EAAA,CAAA;sBAAb;;;AExBL;;AAEG;;;;"}
1
+ {"version":3,"file":"lluc_llull-ui-lib-footers.mjs","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","../../../projects/ui-lib/footers/lluc_llull-ui-lib-footers.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { UiLibButtonI } from '@lluc_llull/ui-lib/interfaces';\nimport { LinkTypeDirective } from '@lluc_llull/ui-lib/directives';\n\nexport type LegalFooterVariant = 'simple' | 'extended';\n\n@Component({\n selector: 'lib-legal-footer',\n standalone: true,\n imports: [CommonModule, LinkTypeDirective],\n templateUrl: './legal-footer.component.html',\n styleUrl: './legal-footer.component.scss',\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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;MAiBa,oBAAoB,CAAA;AACpB,IAAA,IAAI;AACJ,IAAA,KAAK;AACL,IAAA,OAAO;AACP,IAAA,KAAK;IACL,OAAO,GAAuB,QAAQ;wGALtC,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjBjC,muCAiCA,EAAA,MAAA,EAAA,CAAA,yzKAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDvBc,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAOb,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAVhC,SAAS;+BACI,kBAAkB,EAAA,UAAA,EAChB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,iBAAiB,CAAC,EAAA,IAAA,EAGpC;AACF,wBAAA,KAAK,EAAE,mBAAmB;AAC7B,qBAAA,EAAA,QAAA,EAAA,muCAAA,EAAA,MAAA,EAAA,CAAA,yzKAAA,CAAA,EAAA;8BAGQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,OAAO,EAAA,CAAA;sBAAf;;;MENQ,oBAAoB,CAAA;AACpB,IAAA,KAAK;wGADL,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChBjC,0VAaA,EAAA,MAAA,EAAA,CAAA,8xBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDLc,YAAY,+BAAE,iBAAiB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAQhC,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAXhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAAA,UAAA,EAChB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,iBAAiB,CAAC,EAAA,eAAA,EAGzB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACF,wBAAA,KAAK,EAAE,mBAAmB;AAC7B,qBAAA,EAAA,QAAA,EAAA,0VAAA,EAAA,MAAA,EAAA,CAAA,8xBAAA,CAAA,EAAA;8BAGQ,KAAK,EAAA,CAAA;sBAAb;;;MECQ,qBAAqB,CAAA;AACrB,IAAA,MAAM;AACN,IAAA,OAAO;AACP,IAAA,OAAO;wGAHP,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClBlC,q0CAoCA,EAAA,MAAA,EAAA,CAAA,45MAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED1Bc,YAAY,+BAAE,iBAAiB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,eAAe,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,eAAe,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAQlE,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAXjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,cACjB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,eAAe,CAAC,EAAA,eAAA,EAG3D,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACF,wBAAA,KAAK,EAAE,mBAAmB;AAC7B,qBAAA,EAAA,QAAA,EAAA,q0CAAA,EAAA,MAAA,EAAA,CAAA,45MAAA,CAAA,EAAA;8BAGQ,MAAM,EAAA,CAAA;sBAAd;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,OAAO,EAAA,CAAA;sBAAf;;;MELQ,qBAAqB,CAAA;AACrB,IAAA,YAAY;AACZ,IAAA,YAAY;AACZ,IAAA,YAAY;AACZ,IAAA,YAAY;AACZ,IAAA,OAAO;AACP,IAAA,YAAY;AACZ,IAAA,OAAO;AACP,IAAA,KAAK;wGARL,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,OAAA,EAAA,SAAA,EAAA,YAAA,EAAA,cAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChBlC,4oDA8CA,EAAA,MAAA,EAAA,CAAA,qxKAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDtCc,YAAY,+BAAE,iBAAiB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAQhC,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAXjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAAA,UAAA,EACjB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,iBAAiB,CAAC,EAAA,eAAA,EAGzB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACF,wBAAA,KAAK,EAAE,mBAAmB;AAC7B,qBAAA,EAAA,QAAA,EAAA,4oDAAA,EAAA,MAAA,EAAA,CAAA,qxKAAA,CAAA,EAAA;8BAGQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,KAAK,EAAA,CAAA;sBAAb;;;METQ,sBAAsB,CAAA;AACxB,IAAA,OAAO;AACP,IAAA,SAAS;wGAFP,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECfnC,6hFAmEA,EAAA,MAAA,EAAA,CAAA,ogEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED5Dc,YAAY,+BAAE,iBAAiB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAQhC,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAVlC,SAAS;+BACI,oBAAoB,EAAA,OAAA,EACrB,CAAC,YAAY,EAAE,iBAAiB,CAAC,EAAA,eAAA,EAGzB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACF,wBAAA,KAAK,EAAE,mBAAmB;AAC7B,qBAAA,EAAA,QAAA,EAAA,6hFAAA,EAAA,MAAA,EAAA,CAAA,ogEAAA,CAAA,EAAA;8BAGM,OAAO,EAAA,CAAA;sBAAf;gBACQ,SAAS,EAAA,CAAA;sBAAjB;;;AEjBH;;AAEG;;;;"}
@@ -177,6 +177,18 @@ const mapContentDocument = (props) => ({
177
177
  })),
178
178
  });
179
179
 
180
+ const mapColumnsFooter = (props) => ({
181
+ columns: props?.columns?.map((col) => ({
182
+ title: col?.texts?.title,
183
+ items: mapButtons(col?.buttons),
184
+ })),
185
+ copyright: {
186
+ year: props?.copyright?.texts?.year,
187
+ name: props?.copyright?.texts?.name,
188
+ rights: props?.copyright?.texts?.rights,
189
+ },
190
+ });
191
+
180
192
  const componentMappers = {
181
193
  'hero-section': mapHeroSection,
182
194
  'header-clear': mapHeaderClear,
@@ -194,6 +206,7 @@ const componentMappers = {
194
206
  'stacked-rows': mapStackedRows,
195
207
  'mosaic-parallax': mapMosaicParallax,
196
208
  'content-document': mapContentDocument,
209
+ 'columns-footer': mapColumnsFooter,
197
210
  };
198
211
 
199
212
  const CDN_BASE_URL = new InjectionToken('CDN_BASE_URL');
@@ -253,5 +266,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImpo
253
266
  * Generated bundle index. Do not edit.
254
267
  */
255
268
 
256
- export { CDN_BASE_URL, MapperService, componentMappers, map404, mapCategoryProgress, mapContactMinimal, mapContentDocument, mapHeaderClear, mapHeroSection, mapLangModal, mapLegalFooter, mapLinksFooter, mapMediaSplit, mapMosaicParallax, mapNavModal, mapSectionIntro, mapSocialFooter, mapSocialLinks, mapSplitPreviewer, mapStackedRows, mapVisualFooter };
269
+ export { CDN_BASE_URL, MapperService, componentMappers, map404, mapCategoryProgress, mapColumnsFooter, mapContactMinimal, mapContentDocument, mapHeaderClear, mapHeroSection, mapLangModal, mapLegalFooter, mapLinksFooter, mapMediaSplit, mapMosaicParallax, mapNavModal, mapSectionIntro, mapSocialFooter, mapSocialLinks, mapSplitPreviewer, mapStackedRows, mapVisualFooter };
257
270
  //# sourceMappingURL=lluc_llull-ui-lib-mapper.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"lluc_llull-ui-lib-mapper.mjs","sources":["../../../projects/ui-lib/mapper/component-mappers/404.mapper.ts","../../../projects/ui-lib/mapper/component-mappers/category-progress.mapper.ts","../../../projects/ui-lib/mapper/component-mappers/contact-minimal.mapper.ts","../../../projects/ui-lib/mapper/component-mappers/nav-modal.mapper.ts","../../../projects/ui-lib/mapper/component-mappers/header-clear.mapper.ts","../../../projects/ui-lib/mapper/component-mappers/hero-section.mapper.ts","../../../projects/ui-lib/mapper/component-mappers/lang-modal.mapper.ts","../../../projects/ui-lib/mapper/component-mappers/legal-footer.mapper.ts","../../../projects/ui-lib/mapper/component-mappers/links-footer.mapper.ts","../../../projects/ui-lib/mapper/component-mappers/section-intro.mapper.ts","../../../projects/ui-lib/mapper/component-mappers/social-footer.mapper.ts","../../../projects/ui-lib/mapper/component-mappers/split-previewer.mapper.ts","../../../projects/ui-lib/mapper/component-mappers/visual-footer.mapper.ts","../../../projects/ui-lib/mapper/component-mappers/media-split.mapper.ts","../../../projects/ui-lib/mapper/component-mappers/stacked-rows.mapper.ts","../../../projects/ui-lib/mapper/component-mappers/mosaic-parallax.mapper.ts","../../../projects/ui-lib/mapper/component-mappers/content-document.mapper.ts","../../../projects/ui-lib/mapper/component-mappers/index.ts","../../../projects/ui-lib/mapper/cdn.token.ts","../../../projects/ui-lib/mapper/mapper.service.ts","../../../projects/ui-lib/mapper/lluc_llull-ui-lib-mapper.ts"],"sourcesContent":["import { mapButtons } from '@lluc_llull/ui-lib/utils';\nimport { ComponentMapperFn } from './types';\n\nexport const map404: ComponentMapperFn = (props) => ({\n title: props?.texts?.title,\n subtitle: props?.texts?.subtitle,\n highlight: props?.texts?.highlight,\n button: mapButtons(props?.buttons)[0],\n});\n","import { ComponentMapperFn } from './types';\n\nexport const mapCategoryProgress: ComponentMapperFn = (props) => ({\n pretitle: props?.texts?.pretitle,\n title: props?.texts?.title,\n categories: props?.items?.map((item: any) => ({\n title: item.title,\n items: item.items?.map((subItem: any) => ({\n label: subItem.name,\n value: subItem.progress,\n })),\n })),\n});\n","import { mapButtons, mapImage } from '@lluc_llull/ui-lib/utils';\nimport { ComponentMapperFn } from './types';\n\nexport const mapContactMinimal: ComponentMapperFn = (props, cdn) => ({\n contactsTitle: props?.texts?.contactsTitle,\n socialsTitle: props?.texts?.socialsTitle,\n contacts: mapButtons(props?.items?.[0]?.buttons),\n socials: mapButtons(props?.items?.[1]?.buttons),\n img: mapImage(props?.multimedia?.image, cdn),\n});\n","import { UiLibNavItemsI, UiLibSocialItemsI } from '@lluc_llull/ui-lib/interfaces';\n\nexport const mapNavModal = (navigation: any, lang: string): UiLibNavItemsI[] => {\n if (!navigation?.items || !Array.isArray(navigation.items)) return [];\n\n return navigation.items.map((item: any) => {\n const slug = item.slug;\n\n const url = slug === 'home' || slug === '' ? `/${lang}` : `/${lang}/${slug}`;\n\n return {\n label: item.label?.[lang] ?? item.label?.['es'] ?? slug,\n url,\n linkType: 'internal',\n name: slug,\n active: true,\n children: [],\n };\n });\n};\n\nexport const mapSocialLinks = (navigation: any): UiLibSocialItemsI[] => {\n if (!navigation?.social || !Array.isArray(navigation.social)) return [];\n\n return navigation.social.map((item: any, index: number) => ({\n label: item.label ?? '',\n url: item.url ?? '',\n linkType: item.linkType ?? 'external',\n icon: item.icon ?? '',\n order: item.order ?? index,\n }));\n};\n","import { mapImage, mapButtons } from '@lluc_llull/ui-lib/utils';\nimport { mapSocialLinks } from './nav-modal.mapper';\nimport { ComponentMapperFn } from './types';\n\nexport const mapHeaderClear: ComponentMapperFn = (props, cdn) => {\n return {\n logo: mapImage(props?.logo, cdn),\n logoDark: mapImage(props?.logoDark, cdn),\n lang: props?.lang || 'es',\n navigation: props?.navigation,\n socialItems: mapSocialLinks(props?.navigation),\n homeLink: mapButtons(props?.buttons)[0],\n };\n};\n","import { mapButtons, mapImage } from '@lluc_llull/ui-lib/utils';\nimport { ComponentMapperFn } from './types';\n\nexport const mapHeroSection: ComponentMapperFn = (props, cdn) => ({\n pretitle: props?.texts?.pretitle,\n title: props?.texts?.title,\n subtitle: props?.texts?.subtitle,\n text: props?.texts?.text,\n buttons: mapButtons(props?.buttons),\n highlight: props?.texts?.highlight,\n variant: props?.variant,\n image: mapImage(props?.multimedia?.image, cdn),\n});\n","import { UiLibLangItemI } from '@lluc_llull/ui-lib/interfaces';\n\nexport const mapLangModal = (langs: any[], currentLang: string = 'es'): UiLibLangItemI[] => {\n if (!Array.isArray(langs)) return [];\n\n return langs.map((lang, index) => {\n const label = lang.labels?.[currentLang] || lang.labels?.[lang.code] || lang.code;\n\n return {\n id: lang.id ?? index,\n code: lang.code,\n label,\n };\n });\n};\n","import { mapButtons } from '@lluc_llull/ui-lib/utils';\nimport { ComponentMapperFn } from './types';\n\nexport const mapLegalFooter: ComponentMapperFn = (props) => ({\n year: props?.texts?.year,\n brand: props?.texts?.brand,\n credits: props?.texts?.credits,\n links: mapButtons(props?.footer_links),\n //variant\n});\n","import { mapButtons } from '@lluc_llull/ui-lib/utils';\nimport { ComponentMapperFn } from './types';\n\nexport const mapLinksFooter: ComponentMapperFn = (props) => ({\n links: mapButtons(props?.footer_links),\n});\n","import { mapButtons } from '@lluc_llull/ui-lib/utils';\nimport { ComponentMapperFn } from './types';\n\nexport const mapSectionIntro: ComponentMapperFn = (props) => ({\n pretitle: props?.texts?.pretitle,\n title: props?.texts?.title,\n subtitle: props?.texts?.subtitle,\n text: props?.texts?.text,\n button: mapButtons(props?.buttons)[0],\n});\n","import { mapButtons, mapImage } from '@lluc_llull/ui-lib/utils';\nimport { ComponentMapperFn } from './types';\n\nexport const mapSocialFooter: ComponentMapperFn = (props) => ({\n images: mapImage(props?.multimedia),\n socials: mapButtons(props?.social_links),\n hashtag: props?.texts?.hashtag,\n});\n","import { mapButtons, mapImage } from '@lluc_llull/ui-lib/utils';\nimport { ComponentMapperFn } from './types';\n\nexport const mapSplitPreviewer: ComponentMapperFn = (props, cdn) => ({\n title: props?.texts?.title,\n items: props?.items?.map((item: any) => ({\n title: item.title,\n description: item.description,\n tags: item.tags,\n link: mapButtons(item?.buttons)[0],\n image: mapImage(item?.multimedia?.image, cdn),\n })),\n imageDefault: mapImage(props?.multimedia?.image, cdn),\n direction: props?.direction || 'right',\n});\n","import { UiLibAddressI } from '@lluc_llull/ui-lib/interfaces';\nimport { mapButtons, mapImage } from '@lluc_llull/ui-lib/utils';\nimport { ComponentMapperFn } from './types';\n\nexport const mapVisualFooter: ComponentMapperFn = (props) => ({\n contactTitle: props?.texts?.contactTitle,\n contactPhone: mapButtons(props?.contactPhone),\n contactEmail: mapButtons(props?.contactEmail),\n addressTitle: props?.texts?.addressTitle,\n address: {\n address: props?.address?.address,\n city: props?.address?.city,\n country: props?.address?.country,\n cp: props?.address?.cp,\n province: props?.address?.province,\n } as UiLibAddressI,\n socialsTitle: props?.texts?.socialsTitle,\n socials: mapButtons(props?.social_links),\n image: mapImage(props?.multimedia),\n});\n","import { mapImageOrGallery } from '@lluc_llull/ui-lib/utils';\nimport { ComponentMapperFn } from './types';\n\nexport const mapMediaSplit: ComponentMapperFn = (props, cdn) => ({\n title: props?.texts?.title,\n text: props?.texts?.text,\n images: mapImageOrGallery(props?.multimedia?.images, cdn),\n});\n","import { ComponentMapperFn } from './types';\n\nexport const mapStackedRows: ComponentMapperFn = (props) => ({\n title: props?.texts?.title,\n text: props?.texts?.text,\n items: props?.items?.map((item: any) => ({\n title: item?.title,\n text: item?.text,\n })),\n});\n","import { mapImageOrGallery } from '@lluc_llull/ui-lib/utils';\nimport { ComponentMapperFn } from './types';\n\nexport const mapMosaicParallax: ComponentMapperFn = (props, cdn) => ({\n title: props?.texts?.title,\n text: props?.texts?.text,\n images: mapImageOrGallery(props?.multimedia?.images, cdn),\n});\n","import { ComponentMapperFn } from './types';\n\nexport const mapContentDocument: ComponentMapperFn = (props) => ({\n title: props?.texts?.title,\n items: props?.items?.map((item: any) => ({\n title: item?.title,\n text: item?.text,\n })),\n});\n","export * from './404.mapper';\nexport * from './category-progress.mapper';\nexport * from './contact-minimal.mapper';\nexport * from './header-clear.mapper';\nexport * from './hero-section.mapper';\nexport * from './lang-modal.mapper';\nexport * from './legal-footer.mapper';\nexport * from './links-footer.mapper';\nexport * from './nav-modal.mapper';\nexport * from './section-intro.mapper';\nexport * from './social-footer.mapper';\nexport * from './split-previewer.mapper';\nexport * from './visual-footer.mapper';\nexport * from './media-split.mapper';\nexport * from './stacked-rows.mapper';\nexport * from './mosaic-parallax.mapper';\nexport * from './content-document.mapper';\n\nimport { map404 } from './404.mapper';\nimport { mapCategoryProgress } from './category-progress.mapper';\nimport { mapContactMinimal } from './contact-minimal.mapper';\nimport { mapHeaderClear } from './header-clear.mapper';\nimport { mapHeroSection } from './hero-section.mapper';\nimport { mapLangModal } from './lang-modal.mapper';\nimport { mapLegalFooter } from './legal-footer.mapper';\nimport { mapLinksFooter } from './links-footer.mapper';\nimport { mapMediaSplit } from './media-split.mapper';\nimport { mapSectionIntro } from './section-intro.mapper';\nimport { mapSocialFooter } from './social-footer.mapper';\nimport { mapSplitPreviewer } from './split-previewer.mapper';\nimport { mapStackedRows } from './stacked-rows.mapper';\nimport { mapVisualFooter } from './visual-footer.mapper';\nimport { mapMosaicParallax } from './mosaic-parallax.mapper';\nimport { mapContentDocument } from './content-document.mapper';\n\nexport const componentMappers: Record<string, (props: any, cdn?: string) => any> = {\n 'hero-section': mapHeroSection,\n 'header-clear': mapHeaderClear,\n 'lang-modal': mapLangModal,\n 'section-intro': mapSectionIntro,\n 'category-progress': mapCategoryProgress,\n 'links-footer': mapLinksFooter,\n 'legal-footer': mapLegalFooter,\n 'social-footer': mapSocialFooter,\n 'visual-footer': mapVisualFooter,\n 'not-found': map404,\n 'split-previewer': mapSplitPreviewer,\n 'contact-minimal': mapContactMinimal,\n 'media-split': mapMediaSplit,\n 'stacked-rows': mapStackedRows,\n 'mosaic-parallax': mapMosaicParallax,\n 'content-document': mapContentDocument,\n};\n","import { InjectionToken } from '@angular/core';\n\nexport const CDN_BASE_URL = new InjectionToken<string>('CDN_BASE_URL');","import { Inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { BodyComponent } from '@lluc_llull/ui-lib/interfaces';\nimport { CDN_BASE_URL } from './cdn.token';\nimport { componentMappers } from './component-mappers';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MapperService {\n\n constructor(@Inject(PLATFORM_ID) private readonly platformId: Object, @Inject(CDN_BASE_URL) private readonly cdn: string) {}\n\n mapComponents<T>(body: any[]): BodyComponent<T>[] {\n if (!body || body.length === 0) {\n return [];\n }\n\n return body\n .filter((component) => component && component.name && component.props)\n .map((component) => {\n const name = component.name.toLowerCase();\n const mapper = componentMappers[name];\n\n const mapped: BodyComponent<T> = {\n name,\n order: component.order,\n props: {} as T,\n };\n\n if (mapper) {\n try {\n mapped.props = mapper(component.props, this.cdn) as T;\n } catch (e) {\n console.error(`Error mapping props for component \"${name}\"`, e);\n }\n } else {\n console.warn(`No mapper found for component \"${name}\"`);\n }\n\n return mapped;\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lluc_llull-ui-lib-mapper.mjs","sources":["../../../projects/ui-lib/mapper/component-mappers/404.mapper.ts","../../../projects/ui-lib/mapper/component-mappers/category-progress.mapper.ts","../../../projects/ui-lib/mapper/component-mappers/contact-minimal.mapper.ts","../../../projects/ui-lib/mapper/component-mappers/nav-modal.mapper.ts","../../../projects/ui-lib/mapper/component-mappers/header-clear.mapper.ts","../../../projects/ui-lib/mapper/component-mappers/hero-section.mapper.ts","../../../projects/ui-lib/mapper/component-mappers/lang-modal.mapper.ts","../../../projects/ui-lib/mapper/component-mappers/legal-footer.mapper.ts","../../../projects/ui-lib/mapper/component-mappers/links-footer.mapper.ts","../../../projects/ui-lib/mapper/component-mappers/section-intro.mapper.ts","../../../projects/ui-lib/mapper/component-mappers/social-footer.mapper.ts","../../../projects/ui-lib/mapper/component-mappers/split-previewer.mapper.ts","../../../projects/ui-lib/mapper/component-mappers/visual-footer.mapper.ts","../../../projects/ui-lib/mapper/component-mappers/media-split.mapper.ts","../../../projects/ui-lib/mapper/component-mappers/stacked-rows.mapper.ts","../../../projects/ui-lib/mapper/component-mappers/mosaic-parallax.mapper.ts","../../../projects/ui-lib/mapper/component-mappers/content-document.mapper.ts","../../../projects/ui-lib/mapper/component-mappers/columns-footer.mapper.ts","../../../projects/ui-lib/mapper/component-mappers/index.ts","../../../projects/ui-lib/mapper/cdn.token.ts","../../../projects/ui-lib/mapper/mapper.service.ts","../../../projects/ui-lib/mapper/lluc_llull-ui-lib-mapper.ts"],"sourcesContent":["import { mapButtons } from '@lluc_llull/ui-lib/utils';\nimport { ComponentMapperFn } from './types';\n\nexport const map404: ComponentMapperFn = (props) => ({\n title: props?.texts?.title,\n subtitle: props?.texts?.subtitle,\n highlight: props?.texts?.highlight,\n button: mapButtons(props?.buttons)[0],\n});\n","import { ComponentMapperFn } from './types';\n\nexport const mapCategoryProgress: ComponentMapperFn = (props) => ({\n pretitle: props?.texts?.pretitle,\n title: props?.texts?.title,\n categories: props?.items?.map((item: any) => ({\n title: item.title,\n items: item.items?.map((subItem: any) => ({\n label: subItem.name,\n value: subItem.progress,\n })),\n })),\n});\n","import { mapButtons, mapImage } from '@lluc_llull/ui-lib/utils';\nimport { ComponentMapperFn } from './types';\n\nexport const mapContactMinimal: ComponentMapperFn = (props, cdn) => ({\n contactsTitle: props?.texts?.contactsTitle,\n socialsTitle: props?.texts?.socialsTitle,\n contacts: mapButtons(props?.items?.[0]?.buttons),\n socials: mapButtons(props?.items?.[1]?.buttons),\n img: mapImage(props?.multimedia?.image, cdn),\n});\n","import { UiLibNavItemsI, UiLibSocialItemsI } from '@lluc_llull/ui-lib/interfaces';\n\nexport const mapNavModal = (navigation: any, lang: string): UiLibNavItemsI[] => {\n if (!navigation?.items || !Array.isArray(navigation.items)) return [];\n\n return navigation.items.map((item: any) => {\n const slug = item.slug;\n\n const url = slug === 'home' || slug === '' ? `/${lang}` : `/${lang}/${slug}`;\n\n return {\n label: item.label?.[lang] ?? item.label?.['es'] ?? slug,\n url,\n linkType: 'internal',\n name: slug,\n active: true,\n children: [],\n };\n });\n};\n\nexport const mapSocialLinks = (navigation: any): UiLibSocialItemsI[] => {\n if (!navigation?.social || !Array.isArray(navigation.social)) return [];\n\n return navigation.social.map((item: any, index: number) => ({\n label: item.label ?? '',\n url: item.url ?? '',\n linkType: item.linkType ?? 'external',\n icon: item.icon ?? '',\n order: item.order ?? index,\n }));\n};\n","import { mapImage, mapButtons } from '@lluc_llull/ui-lib/utils';\nimport { mapSocialLinks } from './nav-modal.mapper';\nimport { ComponentMapperFn } from './types';\n\nexport const mapHeaderClear: ComponentMapperFn = (props, cdn) => {\n return {\n logo: mapImage(props?.logo, cdn),\n logoDark: mapImage(props?.logoDark, cdn),\n lang: props?.lang || 'es',\n navigation: props?.navigation,\n socialItems: mapSocialLinks(props?.navigation),\n homeLink: mapButtons(props?.buttons)[0],\n };\n};\n","import { mapButtons, mapImage } from '@lluc_llull/ui-lib/utils';\nimport { ComponentMapperFn } from './types';\n\nexport const mapHeroSection: ComponentMapperFn = (props, cdn) => ({\n pretitle: props?.texts?.pretitle,\n title: props?.texts?.title,\n subtitle: props?.texts?.subtitle,\n text: props?.texts?.text,\n buttons: mapButtons(props?.buttons),\n highlight: props?.texts?.highlight,\n variant: props?.variant,\n image: mapImage(props?.multimedia?.image, cdn),\n});\n","import { UiLibLangItemI } from '@lluc_llull/ui-lib/interfaces';\n\nexport const mapLangModal = (langs: any[], currentLang: string = 'es'): UiLibLangItemI[] => {\n if (!Array.isArray(langs)) return [];\n\n return langs.map((lang, index) => {\n const label = lang.labels?.[currentLang] || lang.labels?.[lang.code] || lang.code;\n\n return {\n id: lang.id ?? index,\n code: lang.code,\n label,\n };\n });\n};\n","import { mapButtons } from '@lluc_llull/ui-lib/utils';\nimport { ComponentMapperFn } from './types';\n\nexport const mapLegalFooter: ComponentMapperFn = (props) => ({\n year: props?.texts?.year,\n brand: props?.texts?.brand,\n credits: props?.texts?.credits,\n links: mapButtons(props?.footer_links),\n //variant\n});\n","import { mapButtons } from '@lluc_llull/ui-lib/utils';\nimport { ComponentMapperFn } from './types';\n\nexport const mapLinksFooter: ComponentMapperFn = (props) => ({\n links: mapButtons(props?.footer_links),\n});\n","import { mapButtons } from '@lluc_llull/ui-lib/utils';\nimport { ComponentMapperFn } from './types';\n\nexport const mapSectionIntro: ComponentMapperFn = (props) => ({\n pretitle: props?.texts?.pretitle,\n title: props?.texts?.title,\n subtitle: props?.texts?.subtitle,\n text: props?.texts?.text,\n button: mapButtons(props?.buttons)[0],\n});\n","import { mapButtons, mapImage } from '@lluc_llull/ui-lib/utils';\nimport { ComponentMapperFn } from './types';\n\nexport const mapSocialFooter: ComponentMapperFn = (props) => ({\n images: mapImage(props?.multimedia),\n socials: mapButtons(props?.social_links),\n hashtag: props?.texts?.hashtag,\n});\n","import { mapButtons, mapImage } from '@lluc_llull/ui-lib/utils';\nimport { ComponentMapperFn } from './types';\n\nexport const mapSplitPreviewer: ComponentMapperFn = (props, cdn) => ({\n title: props?.texts?.title,\n items: props?.items?.map((item: any) => ({\n title: item.title,\n description: item.description,\n tags: item.tags,\n link: mapButtons(item?.buttons)[0],\n image: mapImage(item?.multimedia?.image, cdn),\n })),\n imageDefault: mapImage(props?.multimedia?.image, cdn),\n direction: props?.direction || 'right',\n});\n","import { UiLibAddressI } from '@lluc_llull/ui-lib/interfaces';\nimport { mapButtons, mapImage } from '@lluc_llull/ui-lib/utils';\nimport { ComponentMapperFn } from './types';\n\nexport const mapVisualFooter: ComponentMapperFn = (props) => ({\n contactTitle: props?.texts?.contactTitle,\n contactPhone: mapButtons(props?.contactPhone),\n contactEmail: mapButtons(props?.contactEmail),\n addressTitle: props?.texts?.addressTitle,\n address: {\n address: props?.address?.address,\n city: props?.address?.city,\n country: props?.address?.country,\n cp: props?.address?.cp,\n province: props?.address?.province,\n } as UiLibAddressI,\n socialsTitle: props?.texts?.socialsTitle,\n socials: mapButtons(props?.social_links),\n image: mapImage(props?.multimedia),\n});\n","import { mapImageOrGallery } from '@lluc_llull/ui-lib/utils';\nimport { ComponentMapperFn } from './types';\n\nexport const mapMediaSplit: ComponentMapperFn = (props, cdn) => ({\n title: props?.texts?.title,\n text: props?.texts?.text,\n images: mapImageOrGallery(props?.multimedia?.images, cdn),\n});\n","import { ComponentMapperFn } from './types';\n\nexport const mapStackedRows: ComponentMapperFn = (props) => ({\n title: props?.texts?.title,\n text: props?.texts?.text,\n items: props?.items?.map((item: any) => ({\n title: item?.title,\n text: item?.text,\n })),\n});\n","import { mapImageOrGallery } from '@lluc_llull/ui-lib/utils';\nimport { ComponentMapperFn } from './types';\n\nexport const mapMosaicParallax: ComponentMapperFn = (props, cdn) => ({\n title: props?.texts?.title,\n text: props?.texts?.text,\n images: mapImageOrGallery(props?.multimedia?.images, cdn),\n});\n","import { ComponentMapperFn } from './types';\n\nexport const mapContentDocument: ComponentMapperFn = (props) => ({\n title: props?.texts?.title,\n items: props?.items?.map((item: any) => ({\n title: item?.title,\n text: item?.text,\n })),\n});\n","import { mapButtons } from '@lluc_llull/ui-lib/utils';\nimport { ComponentMapperFn } from './types';\n\nexport const mapColumnsFooter: ComponentMapperFn = (props) => ({\n columns: props?.columns?.map((col: any) => ({\n title: col?.texts?.title,\n items: mapButtons(col?.buttons),\n })),\n copyright: {\n year: props?.copyright?.texts?.year,\n name: props?.copyright?.texts?.name,\n rights: props?.copyright?.texts?.rights,\n },\n});\n","export * from './404.mapper';\nexport * from './category-progress.mapper';\nexport * from './contact-minimal.mapper';\nexport * from './header-clear.mapper';\nexport * from './hero-section.mapper';\nexport * from './lang-modal.mapper';\nexport * from './legal-footer.mapper';\nexport * from './links-footer.mapper';\nexport * from './nav-modal.mapper';\nexport * from './section-intro.mapper';\nexport * from './social-footer.mapper';\nexport * from './split-previewer.mapper';\nexport * from './visual-footer.mapper';\nexport * from './media-split.mapper';\nexport * from './stacked-rows.mapper';\nexport * from './mosaic-parallax.mapper';\nexport * from './content-document.mapper';\nexport * from './columns-footer.mapper';\n\nimport { map404 } from './404.mapper';\nimport { mapCategoryProgress } from './category-progress.mapper';\nimport { mapContactMinimal } from './contact-minimal.mapper';\nimport { mapHeaderClear } from './header-clear.mapper';\nimport { mapHeroSection } from './hero-section.mapper';\nimport { mapLangModal } from './lang-modal.mapper';\nimport { mapLegalFooter } from './legal-footer.mapper';\nimport { mapLinksFooter } from './links-footer.mapper';\nimport { mapMediaSplit } from './media-split.mapper';\nimport { mapSectionIntro } from './section-intro.mapper';\nimport { mapSocialFooter } from './social-footer.mapper';\nimport { mapSplitPreviewer } from './split-previewer.mapper';\nimport { mapStackedRows } from './stacked-rows.mapper';\nimport { mapVisualFooter } from './visual-footer.mapper';\nimport { mapMosaicParallax } from './mosaic-parallax.mapper';\nimport { mapContentDocument } from './content-document.mapper';\nimport { mapColumnsFooter } from './columns-footer.mapper';\n\nexport const componentMappers: Record<string, (props: any, cdn?: string) => any> = {\n 'hero-section': mapHeroSection,\n 'header-clear': mapHeaderClear,\n 'lang-modal': mapLangModal,\n 'section-intro': mapSectionIntro,\n 'category-progress': mapCategoryProgress,\n 'links-footer': mapLinksFooter,\n 'legal-footer': mapLegalFooter,\n 'social-footer': mapSocialFooter,\n 'visual-footer': mapVisualFooter,\n 'not-found': map404,\n 'split-previewer': mapSplitPreviewer,\n 'contact-minimal': mapContactMinimal,\n 'media-split': mapMediaSplit,\n 'stacked-rows': mapStackedRows,\n 'mosaic-parallax': mapMosaicParallax,\n 'content-document': mapContentDocument,\n 'columns-footer': mapColumnsFooter,\n};\n","import { InjectionToken } from '@angular/core';\n\nexport const CDN_BASE_URL = new InjectionToken<string>('CDN_BASE_URL');","import { Inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { BodyComponent } from '@lluc_llull/ui-lib/interfaces';\nimport { CDN_BASE_URL } from './cdn.token';\nimport { componentMappers } from './component-mappers';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MapperService {\n\n constructor(@Inject(PLATFORM_ID) private readonly platformId: Object, @Inject(CDN_BASE_URL) private readonly cdn: string) {}\n\n mapComponents<T>(body: any[]): BodyComponent<T>[] {\n if (!body || body.length === 0) {\n return [];\n }\n\n return body\n .filter((component) => component && component.name && component.props)\n .map((component) => {\n const name = component.name.toLowerCase();\n const mapper = componentMappers[name];\n\n const mapped: BodyComponent<T> = {\n name,\n order: component.order,\n props: {} as T,\n };\n\n if (mapper) {\n try {\n mapped.props = mapper(component.props, this.cdn) as T;\n } catch (e) {\n console.error(`Error mapping props for component \"${name}\"`, e);\n }\n } else {\n console.warn(`No mapper found for component \"${name}\"`);\n }\n\n return mapped;\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { UiLibButtonI } from '@lluc_llull/ui-lib/interfaces';
2
+ import * as i0 from "@angular/core";
3
+ export declare class ColumnsFooterComponent {
4
+ columns?: ColumnsFooterItemI[];
5
+ copyright?: ColumnsFooterCopyRightI;
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<ColumnsFooterComponent, never>;
7
+ static ɵcmp: i0.ɵɵComponentDeclaration<ColumnsFooterComponent, "lib-columns-footer", never, { "columns": { "alias": "columns"; "required": false; }; "copyright": { "alias": "copyright"; "required": false; }; }, {}, never, never, true, never>;
8
+ }
9
+ export interface ColumnsFooterItemI {
10
+ title: string;
11
+ items: UiLibButtonI[];
12
+ }
13
+ export interface ColumnsFooterCopyRightI {
14
+ year: string;
15
+ name?: string;
16
+ rights?: string;
17
+ }
@@ -0,0 +1,5 @@
1
+ import { ColumnsFooterCopyRightI, ColumnsFooterItemI } from "./columns-footer.component";
2
+ export interface ColumnsFooterI {
3
+ columns?: ColumnsFooterItemI[];
4
+ copyright?: ColumnsFooterCopyRightI;
5
+ }
@@ -0,0 +1,2 @@
1
+ export * from './columns-footer.component';
2
+ export * from './columns-footer.interface';
@@ -2,3 +2,4 @@ export * from './legal-footer';
2
2
  export * from './links-footer';
3
3
  export * from './social-footer';
4
4
  export * from './visual-footer';
5
+ export * from './columns-footer';
@@ -0,0 +1,2 @@
1
+ import { ComponentMapperFn } from './types';
2
+ export declare const mapColumnsFooter: ComponentMapperFn;
@@ -15,4 +15,5 @@ export * from './media-split.mapper';
15
15
  export * from './stacked-rows.mapper';
16
16
  export * from './mosaic-parallax.mapper';
17
17
  export * from './content-document.mapper';
18
+ export * from './columns-footer.mapper';
18
19
  export declare const componentMappers: Record<string, (props: any, cdn?: string) => any>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lluc_llull/ui-lib",
3
- "version": "0.26.4",
3
+ "version": "0.27.1",
4
4
  "description": "Angular UI component library",
5
5
  "author": "lluc_llull",
6
6
  "license": "MIT",
@@ -57,6 +57,7 @@
57
57
  font-size: 1rem;
58
58
  position: relative;
59
59
  padding: 4px 0;
60
+ width: fit-content;
60
61
  }
61
62
  .btn-link:hover ui-icon {
62
63
  transform: translateX(0.3rem);
@@ -134,6 +135,13 @@ a {
134
135
  text-decoration: none;
135
136
  }
136
137
 
138
+ li,
139
+ ul {
140
+ list-style: none;
141
+ margin: 0;
142
+ padding: 0;
143
+ }
144
+
137
145
  .layout-padding {
138
146
  padding-block: 2rem;
139
147
  }
@@ -517,7 +525,27 @@ body.show-grid .debug-grid-overlay {
517
525
  :root[data-theme=dark] {
518
526
  color-scheme: dark;
519
527
  --color-primary: #007bff;
528
+ --color-primary-raw: 0, 123, 255;
529
+ --color-primary-10: rgba(var(--color-primary-raw), 0.1);
530
+ --color-primary-20: rgba(var(--color-primary-raw), 0.2);
531
+ --color-primary-30: rgba(var(--color-primary-raw), 0.3);
532
+ --color-primary-40: rgba(var(--color-primary-raw), 0.4);
533
+ --color-primary-50: rgba(var(--color-primary-raw), 0.5);
534
+ --color-primary-60: rgba(var(--color-primary-raw), 0.6);
535
+ --color-primary-70: rgba(var(--color-primary-raw), 0.7);
536
+ --color-primary-80: rgba(var(--color-primary-raw), 0.8);
537
+ --color-primary-90: rgba(var(--color-primary-raw), 0.9);
520
538
  --color-secondary: #f3f4f6;
539
+ --color-secondary-raw: 243, 244, 246;
540
+ --color-secondary-10: rgba(var(--color-secondary-raw), 0.1);
541
+ --color-secondary-20: rgba(var(--color-secondary-raw), 0.2);
542
+ --color-secondary-30: rgba(var(--color-secondary-raw), 0.3);
543
+ --color-secondary-40: rgba(var(--color-secondary-raw), 0.4);
544
+ --color-secondary-50: rgba(var(--color-secondary-raw), 0.5);
545
+ --color-secondary-60: rgba(var(--color-secondary-raw), 0.6);
546
+ --color-secondary-70: rgba(var(--color-secondary-raw), 0.7);
547
+ --color-secondary-80: rgba(var(--color-secondary-raw), 0.8);
548
+ --color-secondary-90: rgba(var(--color-secondary-raw), 0.9);
521
549
  --color-text: #f3f4f6;
522
550
  --color-bg: #0f0f10;
523
551
  --button-primary-bg: #007bff;
@@ -563,7 +591,27 @@ body.show-grid .debug-grid-overlay {
563
591
  :root[data-theme=light] {
564
592
  color-scheme: light;
565
593
  --color-primary: #007bff;
594
+ --color-primary-raw: 0, 123, 255;
595
+ --color-primary-10: rgba(var(--color-primary-raw), 0.1);
596
+ --color-primary-20: rgba(var(--color-primary-raw), 0.2);
597
+ --color-primary-30: rgba(var(--color-primary-raw), 0.3);
598
+ --color-primary-40: rgba(var(--color-primary-raw), 0.4);
599
+ --color-primary-50: rgba(var(--color-primary-raw), 0.5);
600
+ --color-primary-60: rgba(var(--color-primary-raw), 0.6);
601
+ --color-primary-70: rgba(var(--color-primary-raw), 0.7);
602
+ --color-primary-80: rgba(var(--color-primary-raw), 0.8);
603
+ --color-primary-90: rgba(var(--color-primary-raw), 0.9);
566
604
  --color-secondary: #f3f4f6;
605
+ --color-secondary-raw: 243, 244, 246;
606
+ --color-secondary-10: rgba(var(--color-secondary-raw), 0.1);
607
+ --color-secondary-20: rgba(var(--color-secondary-raw), 0.2);
608
+ --color-secondary-30: rgba(var(--color-secondary-raw), 0.3);
609
+ --color-secondary-40: rgba(var(--color-secondary-raw), 0.4);
610
+ --color-secondary-50: rgba(var(--color-secondary-raw), 0.5);
611
+ --color-secondary-60: rgba(var(--color-secondary-raw), 0.6);
612
+ --color-secondary-70: rgba(var(--color-secondary-raw), 0.7);
613
+ --color-secondary-80: rgba(var(--color-secondary-raw), 0.8);
614
+ --color-secondary-90: rgba(var(--color-secondary-raw), 0.9);
567
615
  --color-text: #111111;
568
616
  --color-bg: #f9f9f9;
569
617
  --button-primary-bg: #007bff;
package/styles/main.css CHANGED
@@ -57,6 +57,7 @@
57
57
  font-size: 1rem;
58
58
  position: relative;
59
59
  padding: 4px 0;
60
+ width: fit-content;
60
61
  }
61
62
  .btn-link:hover ui-icon {
62
63
  transform: translateX(0.3rem);
@@ -134,6 +135,13 @@ a {
134
135
  text-decoration: none;
135
136
  }
136
137
 
138
+ li,
139
+ ul {
140
+ list-style: none;
141
+ margin: 0;
142
+ padding: 0;
143
+ }
144
+
137
145
  .layout-padding {
138
146
  padding-block: 2rem;
139
147
  }
@@ -517,7 +525,27 @@ body.show-grid .debug-grid-overlay {
517
525
  :root[data-theme=dark] {
518
526
  color-scheme: dark;
519
527
  --color-primary: #007bff;
528
+ --color-primary-raw: 0, 123, 255;
529
+ --color-primary-10: rgba(var(--color-primary-raw), 0.1);
530
+ --color-primary-20: rgba(var(--color-primary-raw), 0.2);
531
+ --color-primary-30: rgba(var(--color-primary-raw), 0.3);
532
+ --color-primary-40: rgba(var(--color-primary-raw), 0.4);
533
+ --color-primary-50: rgba(var(--color-primary-raw), 0.5);
534
+ --color-primary-60: rgba(var(--color-primary-raw), 0.6);
535
+ --color-primary-70: rgba(var(--color-primary-raw), 0.7);
536
+ --color-primary-80: rgba(var(--color-primary-raw), 0.8);
537
+ --color-primary-90: rgba(var(--color-primary-raw), 0.9);
520
538
  --color-secondary: #f3f4f6;
539
+ --color-secondary-raw: 243, 244, 246;
540
+ --color-secondary-10: rgba(var(--color-secondary-raw), 0.1);
541
+ --color-secondary-20: rgba(var(--color-secondary-raw), 0.2);
542
+ --color-secondary-30: rgba(var(--color-secondary-raw), 0.3);
543
+ --color-secondary-40: rgba(var(--color-secondary-raw), 0.4);
544
+ --color-secondary-50: rgba(var(--color-secondary-raw), 0.5);
545
+ --color-secondary-60: rgba(var(--color-secondary-raw), 0.6);
546
+ --color-secondary-70: rgba(var(--color-secondary-raw), 0.7);
547
+ --color-secondary-80: rgba(var(--color-secondary-raw), 0.8);
548
+ --color-secondary-90: rgba(var(--color-secondary-raw), 0.9);
521
549
  --color-text: #f3f4f6;
522
550
  --color-bg: #0f0f10;
523
551
  --button-primary-bg: #007bff;
@@ -563,7 +591,27 @@ body.show-grid .debug-grid-overlay {
563
591
  :root[data-theme=light] {
564
592
  color-scheme: light;
565
593
  --color-primary: #007bff;
594
+ --color-primary-raw: 0, 123, 255;
595
+ --color-primary-10: rgba(var(--color-primary-raw), 0.1);
596
+ --color-primary-20: rgba(var(--color-primary-raw), 0.2);
597
+ --color-primary-30: rgba(var(--color-primary-raw), 0.3);
598
+ --color-primary-40: rgba(var(--color-primary-raw), 0.4);
599
+ --color-primary-50: rgba(var(--color-primary-raw), 0.5);
600
+ --color-primary-60: rgba(var(--color-primary-raw), 0.6);
601
+ --color-primary-70: rgba(var(--color-primary-raw), 0.7);
602
+ --color-primary-80: rgba(var(--color-primary-raw), 0.8);
603
+ --color-primary-90: rgba(var(--color-primary-raw), 0.9);
566
604
  --color-secondary: #f3f4f6;
605
+ --color-secondary-raw: 243, 244, 246;
606
+ --color-secondary-10: rgba(var(--color-secondary-raw), 0.1);
607
+ --color-secondary-20: rgba(var(--color-secondary-raw), 0.2);
608
+ --color-secondary-30: rgba(var(--color-secondary-raw), 0.3);
609
+ --color-secondary-40: rgba(var(--color-secondary-raw), 0.4);
610
+ --color-secondary-50: rgba(var(--color-secondary-raw), 0.5);
611
+ --color-secondary-60: rgba(var(--color-secondary-raw), 0.6);
612
+ --color-secondary-70: rgba(var(--color-secondary-raw), 0.7);
613
+ --color-secondary-80: rgba(var(--color-secondary-raw), 0.8);
614
+ --color-secondary-90: rgba(var(--color-secondary-raw), 0.9);
567
615
  --color-text: #111111;
568
616
  --color-bg: #f9f9f9;
569
617
  --button-primary-bg: #007bff;