@lluc_llull/ui-lib 0.28.3 → 0.28.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/lluc_llull-ui-lib-content-category-progress.mjs +31 -0
- package/fesm2022/lluc_llull-ui-lib-content-category-progress.mjs.map +1 -0
- package/fesm2022/lluc_llull-ui-lib-content-contact-minimal.mjs +38 -0
- package/fesm2022/lluc_llull-ui-lib-content-contact-minimal.mjs.map +1 -0
- package/fesm2022/lluc_llull-ui-lib-content-content-document.mjs +27 -0
- package/fesm2022/lluc_llull-ui-lib-content-content-document.mjs.map +1 -0
- package/fesm2022/lluc_llull-ui-lib-content-hero-section.mjs +112 -0
- package/fesm2022/lluc_llull-ui-lib-content-hero-section.mjs.map +1 -0
- package/fesm2022/lluc_llull-ui-lib-content-media-split.mjs +77 -0
- package/fesm2022/lluc_llull-ui-lib-content-media-split.mjs.map +1 -0
- package/fesm2022/lluc_llull-ui-lib-content-mosaic-parallax.mjs +58 -0
- package/fesm2022/lluc_llull-ui-lib-content-mosaic-parallax.mjs.map +1 -0
- package/fesm2022/lluc_llull-ui-lib-content-section-intro.mjs +38 -0
- package/fesm2022/lluc_llull-ui-lib-content-section-intro.mjs.map +1 -0
- package/fesm2022/lluc_llull-ui-lib-content-split-previewer.mjs +62 -0
- package/fesm2022/lluc_llull-ui-lib-content-split-previewer.mjs.map +1 -0
- package/fesm2022/lluc_llull-ui-lib-content-stacked-rows.mjs +30 -0
- package/fesm2022/lluc_llull-ui-lib-content-stacked-rows.mjs.map +1 -0
- package/fesm2022/lluc_llull-ui-lib-feedback-404.mjs +35 -0
- package/fesm2022/lluc_llull-ui-lib-feedback-404.mjs.map +1 -0
- package/fesm2022/lluc_llull-ui-lib-footers-columns-footer.mjs +28 -0
- package/fesm2022/lluc_llull-ui-lib-footers-columns-footer.mjs.map +1 -0
- package/fesm2022/lluc_llull-ui-lib-footers-legal-footer.mjs +38 -0
- package/fesm2022/lluc_llull-ui-lib-footers-legal-footer.mjs.map +1 -0
- package/fesm2022/lluc_llull-ui-lib-footers-links-footer.mjs +25 -0
- package/fesm2022/lluc_llull-ui-lib-footers-links-footer.mjs.map +1 -0
- package/fesm2022/lluc_llull-ui-lib-footers-social-footer.mjs +33 -0
- package/fesm2022/lluc_llull-ui-lib-footers-social-footer.mjs.map +1 -0
- package/fesm2022/lluc_llull-ui-lib-footers-visual-footer.mjs +46 -0
- package/fesm2022/lluc_llull-ui-lib-footers-visual-footer.mjs.map +1 -0
- package/fesm2022/lluc_llull-ui-lib-headers-header-clear.mjs +79 -0
- package/fesm2022/lluc_llull-ui-lib-headers-header-clear.mjs.map +1 -0
- package/fesm2022/lluc_llull-ui-lib-headers-header-mobile.mjs +79 -0
- package/fesm2022/lluc_llull-ui-lib-headers-header-mobile.mjs.map +1 -0
- package/package.json +69 -1
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import * as i0 from '@angular/core';
|
|
3
|
+
import { Input, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
4
|
+
import { LinkTypeDirective } from '@lluc_llull/ui-lib/directives';
|
|
5
|
+
|
|
6
|
+
class VisualFooterComponent {
|
|
7
|
+
contactTitle;
|
|
8
|
+
contactPhone;
|
|
9
|
+
contactEmail;
|
|
10
|
+
addressTitle;
|
|
11
|
+
address;
|
|
12
|
+
socialsTitle;
|
|
13
|
+
socials;
|
|
14
|
+
image;
|
|
15
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: VisualFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
16
|
+
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: #e2e8f0;--color-secondary-raw: 226, 232, 240;--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);--header-bg: transparent;--header-bg-fixed-dark: #1a1d21;--header-bg-fixed-light: #e2e8f0;--header-mobile-bg: #1a1d21;--header-logo-text: #e2e8f0;--header-logo-text-dark: #e2e8f0;--header-logo-text-light: #1a1d21;--header-link: #e2e8f0;--header-link-hover: #60a5fa;--footer-bg: #0f1117;--footer-text: #e2e8f0;--footer-text-hover: #60a5fa;--footer-links: #e2e8f0;--footer-links-hover: #60a5fa;--footer-arrows: #e2e8f0;--footer-arrows-hover: #0f1117;--footer-arrows-bg: #2a2d35;--footer-arrows-bg-hover: #3a3d45;--content-bg: #0f1117;--content-bg-light: #0f1117;--content-bg-dark: #f5f5f5;--content-overlay: rgba(0, 0, 0, .6);--text-primary: #e2e8f0;--text-primary-raw: 30, 37, 48;--text-primary-10: rgba(var(--text-primary-raw), .1);--text-primary-20: rgba(var(--text-primary-raw), .2);--text-primary-30: rgba(var(--text-primary-raw), .3);--text-primary-40: rgba(var(--text-primary-raw), .4);--text-primary-50: rgba(var(--text-primary-raw), .5);--text-primary-60: rgba(var(--text-primary-raw), .6);--text-primary-70: rgba(var(--text-primary-raw), .7);--text-primary-80: rgba(var(--text-primary-raw), .8);--text-primary-90: rgba(var(--text-primary-raw), .9);--text-secondary: rgba(30, 37, 48, .6);--text-secondary-raw: 30, 37, 48;--text-secondary-10: rgba(var(--text-secondary-raw), .1);--text-secondary-20: rgba(var(--text-secondary-raw), .2);--text-secondary-30: rgba(var(--text-secondary-raw), .3);--text-secondary-40: rgba(var(--text-secondary-raw), .4);--text-secondary-50: rgba(var(--text-secondary-raw), .5);--text-secondary-60: rgba(var(--text-secondary-raw), .6);--text-secondary-70: rgba(var(--text-secondary-raw), .7);--text-secondary-80: rgba(var(--text-secondary-raw), .8);--text-secondary-90: rgba(var(--text-secondary-raw), .9);--text-disabled: rgba(226, 232, 240, .3);--text-inverse: #0f1117;--surface-primary: #1a1d21;--surface-secondary: #22262d;--surface-tertiary: #2a2e36;--modal-bg: var(--surface-primary);--close-btn: var(--text-primary);--item-text: var(--text-primary);--border-primary: #2a2e36;--border-secondary: #343840;--border-focus: #60a5fa;--divider: rgba(226, 232, 240, .08);--progress-color: var(--text-primary);--progress-bg: #60a5fa;--tag-color: var(--text-primary);--tag-bg: #1e3a5f;--button-primary-bg: #007bff;--button-primary-text: #ffffff;--button-primary-bg-hover: #1a6fd4;--button-primary-text-hover: #ffffff;--button-primary-outline-border: #60a5fa;--button-primary-outline-text: #60a5fa;--button-primary-outline-bg-hover: #007bff;--button-primary-outline-text-hover: #ffffff;--button-secondary-bg: var(--surface-secondary);--button-secondary-text: var(--text-primary);--button-secondary-bg-hover: var(--surface-tertiary);--button-secondary-text-hover: var(--text-primary);--button-link-text: var(--text-primary);--button-link-text-hover: #60a5fa;--button-header-bg: transparent;--button-header-text: var(--text-primary);--button-header-bg-hover: rgba(226, 232, 240, .06);--button-header-text-hover: var(--text-primary)}:root[data-theme=light]{color-scheme:light;--color-primary: #0066dd;--color-primary-raw: 0, 102, 221;--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: #334155;--color-secondary-raw: 51, 65, 85;--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);--header-bg: transparent;--header-bg-fixed-dark: #0a0a0a;--header-bg-fixed-light: #f5f3ef;--header-mobile-bg: #f5f3ef;--header-logo-text: #1e2530;--header-logo-text-dark: #f5f3ef;--header-logo-text-light: #0a0a0a;--header-link: #1e2530;--header-link-hover: #0066dd;--footer-bg: #1e2530;--footer-text: #e2e8f0;--footer-text-hover: #60a5fa;--footer-links: #e2e8f0;--footer-links-hover: #60a5fa;--footer-arrows: #1e2530;--footer-arrows-hover: #f5f3ef;--footer-arrows-bg: #e2e8f0;--footer-arrows-bg-hover: #cbd5e1;--content-bg: #f5f3ef;--content-bg-light: #f5f5f5;--content-bg-dark: #0f1117;--content-overlay: rgba(0, 0, 0, .35);--text-primary: #1e2530;--text-primary-raw: 30, 37, 48;--text-primary-10: rgba(var(--text-primary-raw), .1);--text-primary-20: rgba(var(--text-primary-raw), .2);--text-primary-30: rgba(var(--text-primary-raw), .3);--text-primary-40: rgba(var(--text-primary-raw), .4);--text-primary-50: rgba(var(--text-primary-raw), .5);--text-primary-60: rgba(var(--text-primary-raw), .6);--text-primary-70: rgba(var(--text-primary-raw), .7);--text-primary-80: rgba(var(--text-primary-raw), .8);--text-primary-90: rgba(var(--text-primary-raw), .9);--text-secondary: rgba(30, 37, 48, .6);--text-secondary-raw: 30, 37, 48;--text-secondary-10: rgba(var(--text-secondary-raw), .1);--text-secondary-20: rgba(var(--text-secondary-raw), .2);--text-secondary-30: rgba(var(--text-secondary-raw), .3);--text-secondary-40: rgba(var(--text-secondary-raw), .4);--text-secondary-50: rgba(var(--text-secondary-raw), .5);--text-secondary-60: rgba(var(--text-secondary-raw), .6);--text-secondary-70: rgba(var(--text-secondary-raw), .7);--text-secondary-80: rgba(var(--text-secondary-raw), .8);--text-secondary-90: rgba(var(--text-secondary-raw), .9);--text-disabled: rgba(30, 37, 48, .3);--text-inverse: #f5f3ef;--surface-primary: #edeae4;--surface-secondary: #e4e0d8;--surface-tertiary: #d8d3c9;--modal-bg: var(--surface-primary);--close-btn: var(--text-primary);--item-text: var(--text-primary);--border-primary: #d8d3c9;--border-secondary: #c8c2b6;--border-focus: #0066dd;--divider: rgba(30, 37, 48, .1);--progress-color: var(--text-primary);--progress-bg: #0066dd;--tag-color: #f5f3ef;--tag-bg: #0066dd;--button-primary-bg: #0066dd;--button-primary-text: #ffffff;--button-primary-bg-hover: #0052b3;--button-primary-text-hover: #ffffff;--button-primary-outline-border: #0066dd;--button-primary-outline-text: #0066dd;--button-primary-outline-bg-hover: #0066dd;--button-primary-outline-text-hover: #ffffff;--button-secondary-bg: var(--surface-secondary);--button-secondary-text: var(--text-primary);--button-secondary-bg-hover: var(--surface-tertiary);--button-secondary-text-hover: var(--text-primary);--button-link-text: var(--text-primary);--button-link-text-hover: #0066dd;--button-header-bg: transparent;--button-header-text: var(--text-primary);--button-header-bg-hover: rgba(30, 37, 48, .06);--button-header-text-hover: var(--text-primary)}.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 });
|
|
17
|
+
}
|
|
18
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: VisualFooterComponent, decorators: [{
|
|
19
|
+
type: Component,
|
|
20
|
+
args: [{ selector: 'lib-visual-footer', standalone: true, imports: [CommonModule, LinkTypeDirective], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
21
|
+
style: 'display: contents',
|
|
22
|
+
}, 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: #e2e8f0;--color-secondary-raw: 226, 232, 240;--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);--header-bg: transparent;--header-bg-fixed-dark: #1a1d21;--header-bg-fixed-light: #e2e8f0;--header-mobile-bg: #1a1d21;--header-logo-text: #e2e8f0;--header-logo-text-dark: #e2e8f0;--header-logo-text-light: #1a1d21;--header-link: #e2e8f0;--header-link-hover: #60a5fa;--footer-bg: #0f1117;--footer-text: #e2e8f0;--footer-text-hover: #60a5fa;--footer-links: #e2e8f0;--footer-links-hover: #60a5fa;--footer-arrows: #e2e8f0;--footer-arrows-hover: #0f1117;--footer-arrows-bg: #2a2d35;--footer-arrows-bg-hover: #3a3d45;--content-bg: #0f1117;--content-bg-light: #0f1117;--content-bg-dark: #f5f5f5;--content-overlay: rgba(0, 0, 0, .6);--text-primary: #e2e8f0;--text-primary-raw: 30, 37, 48;--text-primary-10: rgba(var(--text-primary-raw), .1);--text-primary-20: rgba(var(--text-primary-raw), .2);--text-primary-30: rgba(var(--text-primary-raw), .3);--text-primary-40: rgba(var(--text-primary-raw), .4);--text-primary-50: rgba(var(--text-primary-raw), .5);--text-primary-60: rgba(var(--text-primary-raw), .6);--text-primary-70: rgba(var(--text-primary-raw), .7);--text-primary-80: rgba(var(--text-primary-raw), .8);--text-primary-90: rgba(var(--text-primary-raw), .9);--text-secondary: rgba(30, 37, 48, .6);--text-secondary-raw: 30, 37, 48;--text-secondary-10: rgba(var(--text-secondary-raw), .1);--text-secondary-20: rgba(var(--text-secondary-raw), .2);--text-secondary-30: rgba(var(--text-secondary-raw), .3);--text-secondary-40: rgba(var(--text-secondary-raw), .4);--text-secondary-50: rgba(var(--text-secondary-raw), .5);--text-secondary-60: rgba(var(--text-secondary-raw), .6);--text-secondary-70: rgba(var(--text-secondary-raw), .7);--text-secondary-80: rgba(var(--text-secondary-raw), .8);--text-secondary-90: rgba(var(--text-secondary-raw), .9);--text-disabled: rgba(226, 232, 240, .3);--text-inverse: #0f1117;--surface-primary: #1a1d21;--surface-secondary: #22262d;--surface-tertiary: #2a2e36;--modal-bg: var(--surface-primary);--close-btn: var(--text-primary);--item-text: var(--text-primary);--border-primary: #2a2e36;--border-secondary: #343840;--border-focus: #60a5fa;--divider: rgba(226, 232, 240, .08);--progress-color: var(--text-primary);--progress-bg: #60a5fa;--tag-color: var(--text-primary);--tag-bg: #1e3a5f;--button-primary-bg: #007bff;--button-primary-text: #ffffff;--button-primary-bg-hover: #1a6fd4;--button-primary-text-hover: #ffffff;--button-primary-outline-border: #60a5fa;--button-primary-outline-text: #60a5fa;--button-primary-outline-bg-hover: #007bff;--button-primary-outline-text-hover: #ffffff;--button-secondary-bg: var(--surface-secondary);--button-secondary-text: var(--text-primary);--button-secondary-bg-hover: var(--surface-tertiary);--button-secondary-text-hover: var(--text-primary);--button-link-text: var(--text-primary);--button-link-text-hover: #60a5fa;--button-header-bg: transparent;--button-header-text: var(--text-primary);--button-header-bg-hover: rgba(226, 232, 240, .06);--button-header-text-hover: var(--text-primary)}:root[data-theme=light]{color-scheme:light;--color-primary: #0066dd;--color-primary-raw: 0, 102, 221;--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: #334155;--color-secondary-raw: 51, 65, 85;--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);--header-bg: transparent;--header-bg-fixed-dark: #0a0a0a;--header-bg-fixed-light: #f5f3ef;--header-mobile-bg: #f5f3ef;--header-logo-text: #1e2530;--header-logo-text-dark: #f5f3ef;--header-logo-text-light: #0a0a0a;--header-link: #1e2530;--header-link-hover: #0066dd;--footer-bg: #1e2530;--footer-text: #e2e8f0;--footer-text-hover: #60a5fa;--footer-links: #e2e8f0;--footer-links-hover: #60a5fa;--footer-arrows: #1e2530;--footer-arrows-hover: #f5f3ef;--footer-arrows-bg: #e2e8f0;--footer-arrows-bg-hover: #cbd5e1;--content-bg: #f5f3ef;--content-bg-light: #f5f5f5;--content-bg-dark: #0f1117;--content-overlay: rgba(0, 0, 0, .35);--text-primary: #1e2530;--text-primary-raw: 30, 37, 48;--text-primary-10: rgba(var(--text-primary-raw), .1);--text-primary-20: rgba(var(--text-primary-raw), .2);--text-primary-30: rgba(var(--text-primary-raw), .3);--text-primary-40: rgba(var(--text-primary-raw), .4);--text-primary-50: rgba(var(--text-primary-raw), .5);--text-primary-60: rgba(var(--text-primary-raw), .6);--text-primary-70: rgba(var(--text-primary-raw), .7);--text-primary-80: rgba(var(--text-primary-raw), .8);--text-primary-90: rgba(var(--text-primary-raw), .9);--text-secondary: rgba(30, 37, 48, .6);--text-secondary-raw: 30, 37, 48;--text-secondary-10: rgba(var(--text-secondary-raw), .1);--text-secondary-20: rgba(var(--text-secondary-raw), .2);--text-secondary-30: rgba(var(--text-secondary-raw), .3);--text-secondary-40: rgba(var(--text-secondary-raw), .4);--text-secondary-50: rgba(var(--text-secondary-raw), .5);--text-secondary-60: rgba(var(--text-secondary-raw), .6);--text-secondary-70: rgba(var(--text-secondary-raw), .7);--text-secondary-80: rgba(var(--text-secondary-raw), .8);--text-secondary-90: rgba(var(--text-secondary-raw), .9);--text-disabled: rgba(30, 37, 48, .3);--text-inverse: #f5f3ef;--surface-primary: #edeae4;--surface-secondary: #e4e0d8;--surface-tertiary: #d8d3c9;--modal-bg: var(--surface-primary);--close-btn: var(--text-primary);--item-text: var(--text-primary);--border-primary: #d8d3c9;--border-secondary: #c8c2b6;--border-focus: #0066dd;--divider: rgba(30, 37, 48, .1);--progress-color: var(--text-primary);--progress-bg: #0066dd;--tag-color: #f5f3ef;--tag-bg: #0066dd;--button-primary-bg: #0066dd;--button-primary-text: #ffffff;--button-primary-bg-hover: #0052b3;--button-primary-text-hover: #ffffff;--button-primary-outline-border: #0066dd;--button-primary-outline-text: #0066dd;--button-primary-outline-bg-hover: #0066dd;--button-primary-outline-text-hover: #ffffff;--button-secondary-bg: var(--surface-secondary);--button-secondary-text: var(--text-primary);--button-secondary-bg-hover: var(--surface-tertiary);--button-secondary-text-hover: var(--text-primary);--button-link-text: var(--text-primary);--button-link-text-hover: #0066dd;--button-header-bg: transparent;--button-header-text: var(--text-primary);--button-header-bg-hover: rgba(30, 37, 48, .06);--button-header-text-hover: var(--text-primary)}.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"] }]
|
|
23
|
+
}], propDecorators: { contactTitle: [{
|
|
24
|
+
type: Input
|
|
25
|
+
}], contactPhone: [{
|
|
26
|
+
type: Input
|
|
27
|
+
}], contactEmail: [{
|
|
28
|
+
type: Input
|
|
29
|
+
}], addressTitle: [{
|
|
30
|
+
type: Input
|
|
31
|
+
}], address: [{
|
|
32
|
+
type: Input
|
|
33
|
+
}], socialsTitle: [{
|
|
34
|
+
type: Input
|
|
35
|
+
}], socials: [{
|
|
36
|
+
type: Input
|
|
37
|
+
}], image: [{
|
|
38
|
+
type: Input
|
|
39
|
+
}] } });
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Generated bundle index. Do not edit.
|
|
43
|
+
*/
|
|
44
|
+
|
|
45
|
+
export { VisualFooterComponent };
|
|
46
|
+
//# sourceMappingURL=lluc_llull-ui-lib-footers-visual-footer.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lluc_llull-ui-lib-footers-visual-footer.mjs","sources":["../../../projects/ui-lib/footers/visual-footer/visual-footer.component.ts","../../../projects/ui-lib/footers/visual-footer/visual-footer.component.html","../../../projects/ui-lib/footers/visual-footer/lluc_llull-ui-lib-footers-visual-footer.ts"],"sourcesContent":["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":";;;;;MAgBa,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,+wRAAA,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,+wRAAA,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;;;;"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import * as i0 from '@angular/core';
|
|
3
|
+
import { EventEmitter, Output, Input, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
4
|
+
import { LinkTypeDirective, HeaderScrollDirective } from '@lluc_llull/ui-lib/directives';
|
|
5
|
+
import { mapNavModal } from '@lluc_llull/ui-lib/mapper';
|
|
6
|
+
import { NavModalComponent, LangModalComponent } from '@lluc_llull/ui-lib/modals';
|
|
7
|
+
import { UiIconComponent } from '@lluc_llull/ui-lib/shared';
|
|
8
|
+
import * as i1 from '@lluc_llull/ui-lib/theme';
|
|
9
|
+
|
|
10
|
+
class HeaderClearComponent {
|
|
11
|
+
themeService;
|
|
12
|
+
isMenuOpen = false;
|
|
13
|
+
currentTheme = 'light';
|
|
14
|
+
themeSubscription;
|
|
15
|
+
logo;
|
|
16
|
+
logoDark;
|
|
17
|
+
navItems;
|
|
18
|
+
socialItems;
|
|
19
|
+
homeLink;
|
|
20
|
+
navigation;
|
|
21
|
+
lang = 'es';
|
|
22
|
+
langModal = new EventEmitter();
|
|
23
|
+
theme = new EventEmitter();
|
|
24
|
+
constructor(themeService) {
|
|
25
|
+
this.themeService = themeService;
|
|
26
|
+
}
|
|
27
|
+
ngOnInit() {
|
|
28
|
+
this.themeSubscription = this.themeService.currentTheme$.subscribe((theme) => {
|
|
29
|
+
this.currentTheme = theme;
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
ngOnChanges() {
|
|
33
|
+
this.navItems = mapNavModal(this.navigation, this.lang);
|
|
34
|
+
}
|
|
35
|
+
ngOnDestroy() {
|
|
36
|
+
this.themeSubscription?.unsubscribe();
|
|
37
|
+
}
|
|
38
|
+
openLanguagesModal() {
|
|
39
|
+
this.langModal.emit();
|
|
40
|
+
}
|
|
41
|
+
toggleTheme() {
|
|
42
|
+
this.themeService.toggleTheme();
|
|
43
|
+
this.theme.emit();
|
|
44
|
+
}
|
|
45
|
+
toggleMenu() {
|
|
46
|
+
this.isMenuOpen = !this.isMenuOpen;
|
|
47
|
+
}
|
|
48
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: HeaderClearComponent, deps: [{ token: i1.ThemeService }], target: i0.ɵɵFactoryTarget.Component });
|
|
49
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.19", type: HeaderClearComponent, isStandalone: true, selector: "lib-header-clear", inputs: { logo: "logo", logoDark: "logoDark", navItems: "navItems", socialItems: "socialItems", homeLink: "homeLink", navigation: "navigation", lang: "lang" }, outputs: { langModal: "langModal", theme: "theme" }, usesOnChanges: true, ngImport: i0, template: "<header class=\"header-clear main-grid col-span-full sm:col-span-12 sm:col-start-1\" headerScroll [scrollThreshold]=\"60\">\n <a [href]=\"homeLink?.url\" [linkType]=\"homeLink?.linkType\">\n <div class=\"header-logo col-span-full sm:col-span-4 sm:col-start-1\">\n <!-- Logo -->\n <img\n [src]=\"currentTheme === 'dark' ? logoDark?.url : logo?.url\"\n [alt]=\"currentTheme === 'dark' ? logoDark?.alt : logo?.alt\"\n />\n <span>LLUC LLULL</span>\n </div>\n </a>\n\n <div class=\"header-actions col-span-full sm:col-span-6 sm:col-start-7\">\n <!-- Idioma -->\n <button class=\"btn btn-header\" (click)=\"openLanguagesModal()\">\n <span class=\"lang\">{{ lang }}</span>\n </button>\n\n <!-- Icono de tema -->\n <button class=\"btn btn-header\" aria-label=\"Toggle theme\" (click)=\"toggleTheme()\">\n <ui-icon\n [name]=\"currentTheme === 'dark' ? 'sun' : 'moon'\"\n [size]=\"17\"\n [color]=\"'var(--color-primary)'\"\n ></ui-icon>\n </button>\n\n <!-- Icono de men\u00FA -->\n <button class=\"btn btn-header\" aria-label=\"Open nav\" (click)=\"toggleMenu()\">\n <span>\u2630</span>\n </button>\n </div>\n</header>\n\n@if (isMenuOpen && navItems && navItems.length > 0) {\n <lib-nav-modal\n [navItems]=\"navItems\"\n [socialItems]=\"socialItems\"\n (close)=\"isMenuOpen = false\"\n ></lib-nav-modal>\n}\n", styles: [".header-clear{border-radius:0;position:sticky;top:0;z-index:100;padding-block:0;margin-top:1rem;transition:background .3s ease,box-shadow .3s ease;background:var(--header-bg)}.header-clear.is-scrolled{background:var(--header-bg-fixed-dark);box-shadow:0 2px 12px #00000014}.header-clear.is-scrolled .header-logo a{padding-inline:1.5rem}.header-clear.is-scrolled .header-logo span{color:var(--header-logo-text-dark)}.header-clear.is-scrolled .header-actions{padding-inline:1.5rem}.header-clear.is-scrolled .header-actions .btn-header{background:var(--header-bg-fixed-light)}.header-logo{display:flex;align-items:center;gap:.5rem;color:var(--header-logo-text)}.header-logo img{width:80px;height:80px;object-fit:contain;object-position:left}.header-logo span{display:flex}.header-actions{display:flex;align-items:center;justify-content:flex-end;gap:1rem}.lang{text-transform:uppercase}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: NavModalComponent, selector: "lib-nav-modal", inputs: ["navItems", "socialItems"], outputs: ["close"] }, { kind: "directive", type: LinkTypeDirective, selector: "[linkType]", inputs: ["linkType", "href"], outputs: ["anchorClicked"] }, { kind: "component", type: UiIconComponent, selector: "ui-icon", inputs: ["name", "size", "color"] }, { kind: "directive", type: HeaderScrollDirective, selector: "[headerScroll]", inputs: ["scrollThreshold"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
50
|
+
}
|
|
51
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: HeaderClearComponent, decorators: [{
|
|
52
|
+
type: Component,
|
|
53
|
+
args: [{ selector: 'lib-header-clear', standalone: true, imports: [CommonModule, LangModalComponent, NavModalComponent, LinkTypeDirective, UiIconComponent, HeaderScrollDirective], changeDetection: ChangeDetectionStrategy.OnPush, template: "<header class=\"header-clear main-grid col-span-full sm:col-span-12 sm:col-start-1\" headerScroll [scrollThreshold]=\"60\">\n <a [href]=\"homeLink?.url\" [linkType]=\"homeLink?.linkType\">\n <div class=\"header-logo col-span-full sm:col-span-4 sm:col-start-1\">\n <!-- Logo -->\n <img\n [src]=\"currentTheme === 'dark' ? logoDark?.url : logo?.url\"\n [alt]=\"currentTheme === 'dark' ? logoDark?.alt : logo?.alt\"\n />\n <span>LLUC LLULL</span>\n </div>\n </a>\n\n <div class=\"header-actions col-span-full sm:col-span-6 sm:col-start-7\">\n <!-- Idioma -->\n <button class=\"btn btn-header\" (click)=\"openLanguagesModal()\">\n <span class=\"lang\">{{ lang }}</span>\n </button>\n\n <!-- Icono de tema -->\n <button class=\"btn btn-header\" aria-label=\"Toggle theme\" (click)=\"toggleTheme()\">\n <ui-icon\n [name]=\"currentTheme === 'dark' ? 'sun' : 'moon'\"\n [size]=\"17\"\n [color]=\"'var(--color-primary)'\"\n ></ui-icon>\n </button>\n\n <!-- Icono de men\u00FA -->\n <button class=\"btn btn-header\" aria-label=\"Open nav\" (click)=\"toggleMenu()\">\n <span>\u2630</span>\n </button>\n </div>\n</header>\n\n@if (isMenuOpen && navItems && navItems.length > 0) {\n <lib-nav-modal\n [navItems]=\"navItems\"\n [socialItems]=\"socialItems\"\n (close)=\"isMenuOpen = false\"\n ></lib-nav-modal>\n}\n", styles: [".header-clear{border-radius:0;position:sticky;top:0;z-index:100;padding-block:0;margin-top:1rem;transition:background .3s ease,box-shadow .3s ease;background:var(--header-bg)}.header-clear.is-scrolled{background:var(--header-bg-fixed-dark);box-shadow:0 2px 12px #00000014}.header-clear.is-scrolled .header-logo a{padding-inline:1.5rem}.header-clear.is-scrolled .header-logo span{color:var(--header-logo-text-dark)}.header-clear.is-scrolled .header-actions{padding-inline:1.5rem}.header-clear.is-scrolled .header-actions .btn-header{background:var(--header-bg-fixed-light)}.header-logo{display:flex;align-items:center;gap:.5rem;color:var(--header-logo-text)}.header-logo img{width:80px;height:80px;object-fit:contain;object-position:left}.header-logo span{display:flex}.header-actions{display:flex;align-items:center;justify-content:flex-end;gap:1rem}.lang{text-transform:uppercase}\n"] }]
|
|
54
|
+
}], ctorParameters: () => [{ type: i1.ThemeService }], propDecorators: { logo: [{
|
|
55
|
+
type: Input
|
|
56
|
+
}], logoDark: [{
|
|
57
|
+
type: Input
|
|
58
|
+
}], navItems: [{
|
|
59
|
+
type: Input
|
|
60
|
+
}], socialItems: [{
|
|
61
|
+
type: Input
|
|
62
|
+
}], homeLink: [{
|
|
63
|
+
type: Input
|
|
64
|
+
}], navigation: [{
|
|
65
|
+
type: Input
|
|
66
|
+
}], lang: [{
|
|
67
|
+
type: Input
|
|
68
|
+
}], langModal: [{
|
|
69
|
+
type: Output
|
|
70
|
+
}], theme: [{
|
|
71
|
+
type: Output
|
|
72
|
+
}] } });
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Generated bundle index. Do not edit.
|
|
76
|
+
*/
|
|
77
|
+
|
|
78
|
+
export { HeaderClearComponent };
|
|
79
|
+
//# sourceMappingURL=lluc_llull-ui-lib-headers-header-clear.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lluc_llull-ui-lib-headers-header-clear.mjs","sources":["../../../projects/ui-lib/headers/header-clear/header-clear.component.ts","../../../projects/ui-lib/headers/header-clear/header-clear.component.html","../../../projects/ui-lib/headers/header-clear/lluc_llull-ui-lib-headers-header-clear.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { HeaderScrollDirective, LinkTypeDirective } from '@lluc_llull/ui-lib/directives';\nimport {\n UiLibButtonI,\n UiLibImageI,\n UiLibNavItemsI,\n UiLibSocialItemsI,\n} from '@lluc_llull/ui-lib/interfaces';\nimport { Theme, ThemeService } from '@lluc_llull/ui-lib/theme';\nimport { Subscription } from 'rxjs';\nimport { mapNavModal } from '@lluc_llull/ui-lib/mapper';\nimport { LangModalComponent, NavModalComponent } from '@lluc_llull/ui-lib/modals';\nimport { UiIconComponent } from '@lluc_llull/ui-lib/shared';\n\n@Component({\n selector: 'lib-header-clear',\n standalone: true,\n imports: [CommonModule, LangModalComponent, NavModalComponent, LinkTypeDirective, UiIconComponent, HeaderScrollDirective],\n templateUrl: './header-clear.component.html',\n styleUrl: './header-clear.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HeaderClearComponent implements OnInit, OnDestroy, OnChanges {\n isMenuOpen = false;\n currentTheme: Theme = 'light';\n private themeSubscription?: Subscription;\n\n @Input() logo?: UiLibImageI;\n @Input() logoDark?: UiLibImageI;\n @Input() navItems?: UiLibNavItemsI[];\n @Input() socialItems?: UiLibSocialItemsI[];\n @Input() homeLink?: UiLibButtonI;\n @Input() navigation: any;\n @Input() lang: string = 'es';\n\n @Output() langModal = new EventEmitter<void>();\n @Output() theme = new EventEmitter<void>();\n\n constructor(private themeService: ThemeService) {}\n\n ngOnInit(): void {\n this.themeSubscription = this.themeService.currentTheme$.subscribe((theme) => {\n this.currentTheme = theme;\n });\n }\n\n ngOnChanges() {\n this.navItems = mapNavModal(this.navigation, this.lang);\n }\n\n ngOnDestroy(): void {\n this.themeSubscription?.unsubscribe();\n }\n\n openLanguagesModal(): void {\n this.langModal.emit();\n }\n\n toggleTheme(): void {\n this.themeService.toggleTheme();\n this.theme.emit();\n }\n\n toggleMenu(): void {\n this.isMenuOpen = !this.isMenuOpen;\n }\n}\n","<header class=\"header-clear main-grid col-span-full sm:col-span-12 sm:col-start-1\" headerScroll [scrollThreshold]=\"60\">\n <a [href]=\"homeLink?.url\" [linkType]=\"homeLink?.linkType\">\n <div class=\"header-logo col-span-full sm:col-span-4 sm:col-start-1\">\n <!-- Logo -->\n <img\n [src]=\"currentTheme === 'dark' ? logoDark?.url : logo?.url\"\n [alt]=\"currentTheme === 'dark' ? logoDark?.alt : logo?.alt\"\n />\n <span>LLUC LLULL</span>\n </div>\n </a>\n\n <div class=\"header-actions col-span-full sm:col-span-6 sm:col-start-7\">\n <!-- Idioma -->\n <button class=\"btn btn-header\" (click)=\"openLanguagesModal()\">\n <span class=\"lang\">{{ lang }}</span>\n </button>\n\n <!-- Icono de tema -->\n <button class=\"btn btn-header\" aria-label=\"Toggle theme\" (click)=\"toggleTheme()\">\n <ui-icon\n [name]=\"currentTheme === 'dark' ? 'sun' : 'moon'\"\n [size]=\"17\"\n [color]=\"'var(--color-primary)'\"\n ></ui-icon>\n </button>\n\n <!-- Icono de menú -->\n <button class=\"btn btn-header\" aria-label=\"Open nav\" (click)=\"toggleMenu()\">\n <span>☰</span>\n </button>\n </div>\n</header>\n\n@if (isMenuOpen && navItems && navItems.length > 0) {\n <lib-nav-modal\n [navItems]=\"navItems\"\n [socialItems]=\"socialItems\"\n (close)=\"isMenuOpen = false\"\n ></lib-nav-modal>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import * as i0 from '@angular/core';
|
|
3
|
+
import { EventEmitter, Output, Input, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
4
|
+
import { LinkTypeDirective } from '@lluc_llull/ui-lib/directives';
|
|
5
|
+
import { mapNavModal } from '@lluc_llull/ui-lib/mapper';
|
|
6
|
+
import { NavModalComponent, LangModalComponent } from '@lluc_llull/ui-lib/modals';
|
|
7
|
+
import { UiIconComponent } from '@lluc_llull/ui-lib/shared';
|
|
8
|
+
import * as i1 from '@lluc_llull/ui-lib/theme';
|
|
9
|
+
|
|
10
|
+
class HeaderMobileComponent {
|
|
11
|
+
themeService;
|
|
12
|
+
isMenuOpen = false;
|
|
13
|
+
currentTheme = 'light';
|
|
14
|
+
themeSubscription;
|
|
15
|
+
logo;
|
|
16
|
+
logoDark;
|
|
17
|
+
navItems;
|
|
18
|
+
socialItems;
|
|
19
|
+
homeLink;
|
|
20
|
+
navigation;
|
|
21
|
+
lang = 'es';
|
|
22
|
+
langModal = new EventEmitter();
|
|
23
|
+
theme = new EventEmitter();
|
|
24
|
+
constructor(themeService) {
|
|
25
|
+
this.themeService = themeService;
|
|
26
|
+
}
|
|
27
|
+
ngOnInit() {
|
|
28
|
+
this.themeSubscription = this.themeService.currentTheme$.subscribe((theme) => {
|
|
29
|
+
this.currentTheme = theme;
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
ngOnChanges() {
|
|
33
|
+
this.navItems = mapNavModal(this.navigation, this.lang);
|
|
34
|
+
}
|
|
35
|
+
ngOnDestroy() {
|
|
36
|
+
this.themeSubscription?.unsubscribe();
|
|
37
|
+
}
|
|
38
|
+
openLanguagesModal() {
|
|
39
|
+
this.langModal.emit();
|
|
40
|
+
}
|
|
41
|
+
toggleTheme() {
|
|
42
|
+
this.themeService.toggleTheme();
|
|
43
|
+
this.theme.emit();
|
|
44
|
+
}
|
|
45
|
+
toggleMenu() {
|
|
46
|
+
this.isMenuOpen = !this.isMenuOpen;
|
|
47
|
+
}
|
|
48
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: HeaderMobileComponent, deps: [{ token: i1.ThemeService }], target: i0.ɵɵFactoryTarget.Component });
|
|
49
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.19", type: HeaderMobileComponent, isStandalone: true, selector: "lib-header-mobile", inputs: { logo: "logo", logoDark: "logoDark", navItems: "navItems", socialItems: "socialItems", homeLink: "homeLink", navigation: "navigation", lang: "lang" }, outputs: { langModal: "langModal", theme: "theme" }, usesOnChanges: true, ngImport: i0, template: "<header class=\"header-mobile\">\n <a [href]=\"homeLink?.url\" [linkType]=\"homeLink?.linkType\">\n <div class=\"header-logo\">\n <!-- Logo -->\n <img\n [src]=\"currentTheme === 'dark' ? logoDark?.url : logo?.url\"\n [alt]=\"currentTheme === 'dark' ? logoDark?.alt : logo?.alt\"\n />\n </div>\n </a>\n</header>\n\n<div class=\"header-actions\">\n <!-- Idioma -->\n <div class=\"left\">\n <button class=\"btn btn-header\" (click)=\"openLanguagesModal()\">\n <span class=\"lang\">{{ lang }}</span>\n </button>\n </div>\n\n <!-- Icono de tema -->\n <div class=\"center\">\n <button class=\"btn btn-header\" aria-label=\"Toggle theme\" (click)=\"toggleTheme()\">\n <ui-icon\n [name]=\"currentTheme === 'dark' ? 'moon' : 'sun'\"\n [size]=\"17\"\n [color]=\"'var(--color-primary)'\"\n ></ui-icon>\n </button>\n </div>\n\n <!-- Icono de men\u00FA -->\n <div class=\"right\">\n <button class=\"btn btn-header\" aria-label=\"Open nav\" (click)=\"toggleMenu()\">\n <span>\u2630</span>\n </button>\n </div>\n</div>\n\n@if (isMenuOpen && navItems && navItems.length > 0) {\n <lib-nav-modal\n [navItems]=\"navItems\"\n [socialItems]=\"socialItems\"\n (close)=\"isMenuOpen = false\"\n ></lib-nav-modal>\n}\n", styles: [".header-mobile{display:flex;justify-content:center;align-items:center;padding:1rem 0;border-radius:0;position:fixed;top:0;z-index:100;width:100vw}.header-logo{display:flex;align-items:center;gap:.5rem;color:var(--header-logo-text)}.header-logo img{width:80px;height:80px;object-fit:contain;object-position:center}.header-actions{position:fixed;bottom:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;padding:.5rem 1rem;background-color:var(--header-mobile-bg);z-index:100;box-sizing:border-box}.header-actions .center{margin:0 auto}.lang{text-transform:uppercase}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: NavModalComponent, selector: "lib-nav-modal", inputs: ["navItems", "socialItems"], outputs: ["close"] }, { kind: "directive", type: LinkTypeDirective, selector: "[linkType]", inputs: ["linkType", "href"], outputs: ["anchorClicked"] }, { kind: "component", type: UiIconComponent, selector: "ui-icon", inputs: ["name", "size", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
50
|
+
}
|
|
51
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: HeaderMobileComponent, decorators: [{
|
|
52
|
+
type: Component,
|
|
53
|
+
args: [{ selector: 'lib-header-mobile', standalone: true, imports: [CommonModule, LangModalComponent, NavModalComponent, LinkTypeDirective, UiIconComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<header class=\"header-mobile\">\n <a [href]=\"homeLink?.url\" [linkType]=\"homeLink?.linkType\">\n <div class=\"header-logo\">\n <!-- Logo -->\n <img\n [src]=\"currentTheme === 'dark' ? logoDark?.url : logo?.url\"\n [alt]=\"currentTheme === 'dark' ? logoDark?.alt : logo?.alt\"\n />\n </div>\n </a>\n</header>\n\n<div class=\"header-actions\">\n <!-- Idioma -->\n <div class=\"left\">\n <button class=\"btn btn-header\" (click)=\"openLanguagesModal()\">\n <span class=\"lang\">{{ lang }}</span>\n </button>\n </div>\n\n <!-- Icono de tema -->\n <div class=\"center\">\n <button class=\"btn btn-header\" aria-label=\"Toggle theme\" (click)=\"toggleTheme()\">\n <ui-icon\n [name]=\"currentTheme === 'dark' ? 'moon' : 'sun'\"\n [size]=\"17\"\n [color]=\"'var(--color-primary)'\"\n ></ui-icon>\n </button>\n </div>\n\n <!-- Icono de men\u00FA -->\n <div class=\"right\">\n <button class=\"btn btn-header\" aria-label=\"Open nav\" (click)=\"toggleMenu()\">\n <span>\u2630</span>\n </button>\n </div>\n</div>\n\n@if (isMenuOpen && navItems && navItems.length > 0) {\n <lib-nav-modal\n [navItems]=\"navItems\"\n [socialItems]=\"socialItems\"\n (close)=\"isMenuOpen = false\"\n ></lib-nav-modal>\n}\n", styles: [".header-mobile{display:flex;justify-content:center;align-items:center;padding:1rem 0;border-radius:0;position:fixed;top:0;z-index:100;width:100vw}.header-logo{display:flex;align-items:center;gap:.5rem;color:var(--header-logo-text)}.header-logo img{width:80px;height:80px;object-fit:contain;object-position:center}.header-actions{position:fixed;bottom:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;padding:.5rem 1rem;background-color:var(--header-mobile-bg);z-index:100;box-sizing:border-box}.header-actions .center{margin:0 auto}.lang{text-transform:uppercase}\n"] }]
|
|
54
|
+
}], ctorParameters: () => [{ type: i1.ThemeService }], propDecorators: { logo: [{
|
|
55
|
+
type: Input
|
|
56
|
+
}], logoDark: [{
|
|
57
|
+
type: Input
|
|
58
|
+
}], navItems: [{
|
|
59
|
+
type: Input
|
|
60
|
+
}], socialItems: [{
|
|
61
|
+
type: Input
|
|
62
|
+
}], homeLink: [{
|
|
63
|
+
type: Input
|
|
64
|
+
}], navigation: [{
|
|
65
|
+
type: Input
|
|
66
|
+
}], lang: [{
|
|
67
|
+
type: Input
|
|
68
|
+
}], langModal: [{
|
|
69
|
+
type: Output
|
|
70
|
+
}], theme: [{
|
|
71
|
+
type: Output
|
|
72
|
+
}] } });
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Generated bundle index. Do not edit.
|
|
76
|
+
*/
|
|
77
|
+
|
|
78
|
+
export { HeaderMobileComponent };
|
|
79
|
+
//# sourceMappingURL=lluc_llull-ui-lib-headers-header-mobile.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lluc_llull-ui-lib-headers-header-mobile.mjs","sources":["../../../projects/ui-lib/headers/header-mobile/header-mobile.component.ts","../../../projects/ui-lib/headers/header-mobile/header-mobile.component.html","../../../projects/ui-lib/headers/header-mobile/lluc_llull-ui-lib-headers-header-mobile.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { LinkTypeDirective } from '@lluc_llull/ui-lib/directives';\nimport {\n UiLibButtonI,\n UiLibImageI,\n UiLibNavItemsI,\n UiLibSocialItemsI,\n} from '@lluc_llull/ui-lib/interfaces';\nimport { Theme, ThemeService } from '@lluc_llull/ui-lib/theme';\nimport { Subscription } from 'rxjs';\nimport { mapNavModal } from '@lluc_llull/ui-lib/mapper';\nimport { LangModalComponent, NavModalComponent } from '@lluc_llull/ui-lib/modals';\nimport { UiIconComponent } from '@lluc_llull/ui-lib/shared';\n\n@Component({\n selector: 'lib-header-mobile',\n standalone: true,\n imports: [CommonModule, LangModalComponent, NavModalComponent, LinkTypeDirective, UiIconComponent],\n templateUrl: './header-mobile.component.html',\n styleUrl: './header-mobile.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HeaderMobileComponent implements OnInit, OnChanges, OnDestroy {\n isMenuOpen = false;\n currentTheme: Theme = 'light';\n private themeSubscription?: Subscription;\n\n @Input() logo?: UiLibImageI;\n @Input() logoDark?: UiLibImageI;\n @Input() navItems?: UiLibNavItemsI[];\n @Input() socialItems?: UiLibSocialItemsI[];\n @Input() homeLink?: UiLibButtonI;\n @Input() navigation: any;\n @Input() lang: string = 'es';\n\n @Output() langModal = new EventEmitter<void>();\n @Output() theme = new EventEmitter<void>();\n\n constructor(private themeService: ThemeService) {}\n\n ngOnInit(): void {\n this.themeSubscription = this.themeService.currentTheme$.subscribe((theme) => {\n this.currentTheme = theme;\n });\n }\n\n ngOnChanges() {\n this.navItems = mapNavModal(this.navigation, this.lang);\n }\n\n ngOnDestroy(): void {\n this.themeSubscription?.unsubscribe();\n }\n\n openLanguagesModal(): void {\n this.langModal.emit();\n }\n\n toggleTheme(): void {\n this.themeService.toggleTheme();\n this.theme.emit();\n }\n\n toggleMenu(): void {\n this.isMenuOpen = !this.isMenuOpen;\n }\n}\n","<header class=\"header-mobile\">\n <a [href]=\"homeLink?.url\" [linkType]=\"homeLink?.linkType\">\n <div class=\"header-logo\">\n <!-- Logo -->\n <img\n [src]=\"currentTheme === 'dark' ? logoDark?.url : logo?.url\"\n [alt]=\"currentTheme === 'dark' ? logoDark?.alt : logo?.alt\"\n />\n </div>\n </a>\n</header>\n\n<div class=\"header-actions\">\n <!-- Idioma -->\n <div class=\"left\">\n <button class=\"btn btn-header\" (click)=\"openLanguagesModal()\">\n <span class=\"lang\">{{ lang }}</span>\n </button>\n </div>\n\n <!-- Icono de tema -->\n <div class=\"center\">\n <button class=\"btn btn-header\" aria-label=\"Toggle theme\" (click)=\"toggleTheme()\">\n <ui-icon\n [name]=\"currentTheme === 'dark' ? 'moon' : 'sun'\"\n [size]=\"17\"\n [color]=\"'var(--color-primary)'\"\n ></ui-icon>\n </button>\n </div>\n\n <!-- Icono de menú -->\n <div class=\"right\">\n <button class=\"btn btn-header\" aria-label=\"Open nav\" (click)=\"toggleMenu()\">\n <span>☰</span>\n </button>\n </div>\n</div>\n\n@if (isMenuOpen && navItems && navItems.length > 0) {\n <lib-nav-modal\n [navItems]=\"navItems\"\n [socialItems]=\"socialItems\"\n (close)=\"isMenuOpen = false\"\n ></lib-nav-modal>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lluc_llull/ui-lib",
|
|
3
|
-
"version": "0.28.
|
|
3
|
+
"version": "0.28.4",
|
|
4
4
|
"description": "Angular UI component library",
|
|
5
5
|
"author": "lluc_llull",
|
|
6
6
|
"license": "MIT",
|
|
@@ -102,6 +102,74 @@
|
|
|
102
102
|
"./utils": {
|
|
103
103
|
"types": "./utils/index.d.ts",
|
|
104
104
|
"default": "./fesm2022/lluc_llull-ui-lib-utils.mjs"
|
|
105
|
+
},
|
|
106
|
+
"./content/category-progress": {
|
|
107
|
+
"types": "./content/category-progress/index.d.ts",
|
|
108
|
+
"default": "./fesm2022/lluc_llull-ui-lib-content-category-progress.mjs"
|
|
109
|
+
},
|
|
110
|
+
"./content/contact-minimal": {
|
|
111
|
+
"types": "./content/contact-minimal/index.d.ts",
|
|
112
|
+
"default": "./fesm2022/lluc_llull-ui-lib-content-contact-minimal.mjs"
|
|
113
|
+
},
|
|
114
|
+
"./content/content-document": {
|
|
115
|
+
"types": "./content/content-document/index.d.ts",
|
|
116
|
+
"default": "./fesm2022/lluc_llull-ui-lib-content-content-document.mjs"
|
|
117
|
+
},
|
|
118
|
+
"./content/hero-section": {
|
|
119
|
+
"types": "./content/hero-section/index.d.ts",
|
|
120
|
+
"default": "./fesm2022/lluc_llull-ui-lib-content-hero-section.mjs"
|
|
121
|
+
},
|
|
122
|
+
"./content/media-split": {
|
|
123
|
+
"types": "./content/media-split/index.d.ts",
|
|
124
|
+
"default": "./fesm2022/lluc_llull-ui-lib-content-media-split.mjs"
|
|
125
|
+
},
|
|
126
|
+
"./content/mosaic-parallax": {
|
|
127
|
+
"types": "./content/mosaic-parallax/index.d.ts",
|
|
128
|
+
"default": "./fesm2022/lluc_llull-ui-lib-content-mosaic-parallax.mjs"
|
|
129
|
+
},
|
|
130
|
+
"./content/section-intro": {
|
|
131
|
+
"types": "./content/section-intro/index.d.ts",
|
|
132
|
+
"default": "./fesm2022/lluc_llull-ui-lib-content-section-intro.mjs"
|
|
133
|
+
},
|
|
134
|
+
"./content/split-previewer": {
|
|
135
|
+
"types": "./content/split-previewer/index.d.ts",
|
|
136
|
+
"default": "./fesm2022/lluc_llull-ui-lib-content-split-previewer.mjs"
|
|
137
|
+
},
|
|
138
|
+
"./content/stacked-rows": {
|
|
139
|
+
"types": "./content/stacked-rows/index.d.ts",
|
|
140
|
+
"default": "./fesm2022/lluc_llull-ui-lib-content-stacked-rows.mjs"
|
|
141
|
+
},
|
|
142
|
+
"./feedback/404": {
|
|
143
|
+
"types": "./feedback/404/index.d.ts",
|
|
144
|
+
"default": "./fesm2022/lluc_llull-ui-lib-feedback-404.mjs"
|
|
145
|
+
},
|
|
146
|
+
"./footers/columns-footer": {
|
|
147
|
+
"types": "./footers/columns-footer/index.d.ts",
|
|
148
|
+
"default": "./fesm2022/lluc_llull-ui-lib-footers-columns-footer.mjs"
|
|
149
|
+
},
|
|
150
|
+
"./footers/legal-footer": {
|
|
151
|
+
"types": "./footers/legal-footer/index.d.ts",
|
|
152
|
+
"default": "./fesm2022/lluc_llull-ui-lib-footers-legal-footer.mjs"
|
|
153
|
+
},
|
|
154
|
+
"./footers/links-footer": {
|
|
155
|
+
"types": "./footers/links-footer/index.d.ts",
|
|
156
|
+
"default": "./fesm2022/lluc_llull-ui-lib-footers-links-footer.mjs"
|
|
157
|
+
},
|
|
158
|
+
"./footers/social-footer": {
|
|
159
|
+
"types": "./footers/social-footer/index.d.ts",
|
|
160
|
+
"default": "./fesm2022/lluc_llull-ui-lib-footers-social-footer.mjs"
|
|
161
|
+
},
|
|
162
|
+
"./footers/visual-footer": {
|
|
163
|
+
"types": "./footers/visual-footer/index.d.ts",
|
|
164
|
+
"default": "./fesm2022/lluc_llull-ui-lib-footers-visual-footer.mjs"
|
|
165
|
+
},
|
|
166
|
+
"./headers/header-clear": {
|
|
167
|
+
"types": "./headers/header-clear/index.d.ts",
|
|
168
|
+
"default": "./fesm2022/lluc_llull-ui-lib-headers-header-clear.mjs"
|
|
169
|
+
},
|
|
170
|
+
"./headers/header-mobile": {
|
|
171
|
+
"types": "./headers/header-mobile/index.d.ts",
|
|
172
|
+
"default": "./fesm2022/lluc_llull-ui-lib-headers-header-mobile.mjs"
|
|
105
173
|
}
|
|
106
174
|
}
|
|
107
175
|
}
|