valtech-components 2.0.305 → 2.0.307
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/esm2022/lib/components/atoms/image/image.component.mjs +134 -64
- package/esm2022/lib/components/atoms/image/types.mjs +1 -1
- package/esm2022/lib/components/organisms/article/article.component.mjs +469 -0
- package/esm2022/lib/components/organisms/article/types.mjs +157 -0
- package/esm2022/public-api.mjs +5 -1
- package/fesm2022/valtech-components.mjs +753 -65
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/atoms/image/types.d.ts +8 -0
- package/lib/components/organisms/article/article.component.d.ts +84 -0
- package/lib/components/organisms/article/types.d.ts +293 -0
- package/package.json +1 -1
- package/public-api.d.ts +4 -0
|
@@ -1921,17 +1921,37 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
1921
1921
|
* val-image
|
|
1922
1922
|
*
|
|
1923
1923
|
* Displays an image with various display options (bordered, shaded, dark, etc).
|
|
1924
|
+
* Now includes a container wrapper for better flexbox support and alignment options.
|
|
1924
1925
|
*
|
|
1925
1926
|
* @example
|
|
1926
|
-
* <val-image [props]="{
|
|
1927
|
-
*
|
|
1928
|
-
*
|
|
1927
|
+
* <val-image [props]="{
|
|
1928
|
+
* src: 'url',
|
|
1929
|
+
* alt: 'desc',
|
|
1930
|
+
* width: 100,
|
|
1931
|
+
* height: 100,
|
|
1932
|
+
* bordered: true,
|
|
1933
|
+
* alignment: 'center',
|
|
1934
|
+
* caption: 'Image description'
|
|
1935
|
+
* }"></val-image>
|
|
1936
|
+
*
|
|
1937
|
+
* @input props: ImageMetadata - Configuration for the image (src, alt, size, mode, alignment, caption, etc.)
|
|
1929
1938
|
*/
|
|
1930
1939
|
class ImageComponent {
|
|
1931
1940
|
constructor() {
|
|
1932
1941
|
this.available = true;
|
|
1933
1942
|
}
|
|
1934
|
-
ngOnInit() {
|
|
1943
|
+
ngOnInit() {
|
|
1944
|
+
// Set default values
|
|
1945
|
+
if (!this.props.alignment) {
|
|
1946
|
+
this.props.alignment = 'center';
|
|
1947
|
+
}
|
|
1948
|
+
if (!this.props.captionSize) {
|
|
1949
|
+
this.props.captionSize = 'medium';
|
|
1950
|
+
}
|
|
1951
|
+
if (!this.props.mode) {
|
|
1952
|
+
this.props.mode = 'box';
|
|
1953
|
+
}
|
|
1954
|
+
}
|
|
1935
1955
|
changeToVisible() {
|
|
1936
1956
|
setInterval(() => {
|
|
1937
1957
|
this.available = true;
|
|
@@ -1939,70 +1959,120 @@ class ImageComponent {
|
|
|
1939
1959
|
}
|
|
1940
1960
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ImageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1941
1961
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ImageComponent, isStandalone: true, selector: "val-image", inputs: { props: "props" }, ngImport: i0, template: `
|
|
1942
|
-
|
|
1943
|
-
|
|
1944
|
-
|
|
1945
|
-
|
|
1946
|
-
|
|
1947
|
-
|
|
1948
|
-
|
|
1949
|
-
|
|
1950
|
-
|
|
1951
|
-
|
|
1952
|
-
|
|
1953
|
-
|
|
1954
|
-
|
|
1955
|
-
|
|
1956
|
-
|
|
1957
|
-
|
|
1958
|
-
|
|
1959
|
-
|
|
1960
|
-
|
|
1961
|
-
|
|
1962
|
-
|
|
1963
|
-
|
|
1964
|
-
|
|
1965
|
-
|
|
1966
|
-
|
|
1967
|
-
|
|
1968
|
-
|
|
1969
|
-
|
|
1970
|
-
|
|
1971
|
-
|
|
1962
|
+
<figure
|
|
1963
|
+
class="val-image-container"
|
|
1964
|
+
[class]="props.containerClass"
|
|
1965
|
+
[ngClass]="{
|
|
1966
|
+
'val-image-container--left': props.alignment === 'left',
|
|
1967
|
+
'val-image-container--center': props.alignment === 'center' || !props.alignment,
|
|
1968
|
+
'val-image-container--right': props.alignment === 'right',
|
|
1969
|
+
}"
|
|
1970
|
+
>
|
|
1971
|
+
<div class="val-image-wrapper" [ngClass]="[props.size]">
|
|
1972
|
+
@if (props.src.includes('--')) {
|
|
1973
|
+
<img
|
|
1974
|
+
class="val-image"
|
|
1975
|
+
[ngClass]="[props.mode]"
|
|
1976
|
+
[ngStyle]="{
|
|
1977
|
+
content: 'var(' + props.src + ')',
|
|
1978
|
+
}"
|
|
1979
|
+
[class.bordered]="props.bordered"
|
|
1980
|
+
[class.shaded]="props.shaded"
|
|
1981
|
+
[class.dark]="props.dark"
|
|
1982
|
+
[class.limited]="props.limited"
|
|
1983
|
+
[alt]="props.alt"
|
|
1984
|
+
[style.width.px]="props.width"
|
|
1985
|
+
[style.height.px]="props.height"
|
|
1986
|
+
/>
|
|
1987
|
+
} @else {
|
|
1988
|
+
<img
|
|
1989
|
+
class="val-image"
|
|
1990
|
+
[ngClass]="[props.mode]"
|
|
1991
|
+
[class.bordered]="props.bordered"
|
|
1992
|
+
[class.shaded]="props.shaded"
|
|
1993
|
+
[class.dark]="props.dark"
|
|
1994
|
+
[class.limited]="props.limited"
|
|
1995
|
+
[src]="props.src"
|
|
1996
|
+
[alt]="props.alt"
|
|
1997
|
+
[style.width.px]="props.width"
|
|
1998
|
+
[style.height.px]="props.height"
|
|
1999
|
+
/>
|
|
2000
|
+
}
|
|
2001
|
+
</div>
|
|
2002
|
+
|
|
2003
|
+
@if (props.caption) {
|
|
2004
|
+
<figcaption
|
|
2005
|
+
class="val-image-caption"
|
|
2006
|
+
[ngClass]="{
|
|
2007
|
+
'val-image-caption--small': props.captionSize === 'small',
|
|
2008
|
+
'val-image-caption--medium': props.captionSize === 'medium' || !props.captionSize,
|
|
2009
|
+
'val-image-caption--large': props.captionSize === 'large',
|
|
2010
|
+
}"
|
|
2011
|
+
>
|
|
2012
|
+
{{ props.caption }}
|
|
2013
|
+
</figcaption>
|
|
2014
|
+
}
|
|
2015
|
+
</figure>
|
|
2016
|
+
`, isInline: true, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.val-image-container{margin:0;padding:0;display:inline-block;max-width:100%}.val-image-container--left{margin-right:auto;text-align:left}.val-image-container--center{margin-left:auto;margin-right:auto;text-align:center}.val-image-container--right{margin-left:auto;text-align:right}.val-image-wrapper{display:inline-block;position:relative}.val-image-wrapper.small{width:30%;min-width:5rem;max-width:9.375rem}.val-image-wrapper.medium{width:50%;min-width:7.5rem;max-width:18.75rem}.val-image-wrapper.large{width:70%;min-width:12.5rem;max-width:31.25rem}.val-image-wrapper.xlarge{width:100%;min-width:15.625rem;max-width:none}.val-image{width:100%;height:auto;display:block;opacity:1;max-width:100%}.val-image.rounded{border-radius:.5rem}.val-image.circular{border-radius:50%;aspect-ratio:1;object-fit:cover}.val-image.box{border-radius:0}.val-image.bordered{border:.0625rem solid var(--ion-color-medium)}.val-image.shaded{box-shadow:.1875rem .625rem .5rem #1219541a}@media (prefers-color-scheme: dark){.val-image.dark{filter:invert(1)}}.val-image.limited{max-width:100%}.val-image-caption{margin-top:.5rem;color:var(--ion-color-medium-shade, #666);font-style:italic;line-height:1.4}.val-image-caption--small{font-size:.75rem}.val-image-caption--medium{font-size:.875rem}.val-image-caption--large{font-size:1rem}.val-image.visible{animation:appearance ease-in 1s forwards}@keyframes appearance{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@media (max-width: 768px){.val-image-wrapper.small{width:40%;max-width:7.5rem}.val-image-wrapper.medium{width:60%;max-width:15.625rem}.val-image-wrapper.large{width:80%;max-width:25rem}.val-image-wrapper.xlarge{width:100%}}.val-image-container{flex-shrink:0;align-self:flex-start}.flexbox-container .val-image-container--left{align-self:flex-start}.flexbox-container .val-image-container--center{align-self:center}.flexbox-container .val-image-container--right{align-self:flex-end}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
|
|
1972
2017
|
}
|
|
1973
2018
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ImageComponent, decorators: [{
|
|
1974
2019
|
type: Component,
|
|
1975
2020
|
args: [{ selector: 'val-image', standalone: true, imports: [CommonModule], template: `
|
|
1976
|
-
|
|
1977
|
-
|
|
1978
|
-
|
|
1979
|
-
|
|
1980
|
-
|
|
1981
|
-
|
|
1982
|
-
|
|
1983
|
-
|
|
1984
|
-
|
|
1985
|
-
|
|
1986
|
-
|
|
1987
|
-
|
|
1988
|
-
|
|
1989
|
-
|
|
1990
|
-
|
|
1991
|
-
|
|
1992
|
-
|
|
1993
|
-
|
|
1994
|
-
|
|
1995
|
-
|
|
1996
|
-
|
|
1997
|
-
|
|
1998
|
-
|
|
1999
|
-
|
|
2000
|
-
|
|
2001
|
-
|
|
2002
|
-
|
|
2003
|
-
|
|
2004
|
-
|
|
2005
|
-
|
|
2021
|
+
<figure
|
|
2022
|
+
class="val-image-container"
|
|
2023
|
+
[class]="props.containerClass"
|
|
2024
|
+
[ngClass]="{
|
|
2025
|
+
'val-image-container--left': props.alignment === 'left',
|
|
2026
|
+
'val-image-container--center': props.alignment === 'center' || !props.alignment,
|
|
2027
|
+
'val-image-container--right': props.alignment === 'right',
|
|
2028
|
+
}"
|
|
2029
|
+
>
|
|
2030
|
+
<div class="val-image-wrapper" [ngClass]="[props.size]">
|
|
2031
|
+
@if (props.src.includes('--')) {
|
|
2032
|
+
<img
|
|
2033
|
+
class="val-image"
|
|
2034
|
+
[ngClass]="[props.mode]"
|
|
2035
|
+
[ngStyle]="{
|
|
2036
|
+
content: 'var(' + props.src + ')',
|
|
2037
|
+
}"
|
|
2038
|
+
[class.bordered]="props.bordered"
|
|
2039
|
+
[class.shaded]="props.shaded"
|
|
2040
|
+
[class.dark]="props.dark"
|
|
2041
|
+
[class.limited]="props.limited"
|
|
2042
|
+
[alt]="props.alt"
|
|
2043
|
+
[style.width.px]="props.width"
|
|
2044
|
+
[style.height.px]="props.height"
|
|
2045
|
+
/>
|
|
2046
|
+
} @else {
|
|
2047
|
+
<img
|
|
2048
|
+
class="val-image"
|
|
2049
|
+
[ngClass]="[props.mode]"
|
|
2050
|
+
[class.bordered]="props.bordered"
|
|
2051
|
+
[class.shaded]="props.shaded"
|
|
2052
|
+
[class.dark]="props.dark"
|
|
2053
|
+
[class.limited]="props.limited"
|
|
2054
|
+
[src]="props.src"
|
|
2055
|
+
[alt]="props.alt"
|
|
2056
|
+
[style.width.px]="props.width"
|
|
2057
|
+
[style.height.px]="props.height"
|
|
2058
|
+
/>
|
|
2059
|
+
}
|
|
2060
|
+
</div>
|
|
2061
|
+
|
|
2062
|
+
@if (props.caption) {
|
|
2063
|
+
<figcaption
|
|
2064
|
+
class="val-image-caption"
|
|
2065
|
+
[ngClass]="{
|
|
2066
|
+
'val-image-caption--small': props.captionSize === 'small',
|
|
2067
|
+
'val-image-caption--medium': props.captionSize === 'medium' || !props.captionSize,
|
|
2068
|
+
'val-image-caption--large': props.captionSize === 'large',
|
|
2069
|
+
}"
|
|
2070
|
+
>
|
|
2071
|
+
{{ props.caption }}
|
|
2072
|
+
</figcaption>
|
|
2073
|
+
}
|
|
2074
|
+
</figure>
|
|
2075
|
+
`, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.val-image-container{margin:0;padding:0;display:inline-block;max-width:100%}.val-image-container--left{margin-right:auto;text-align:left}.val-image-container--center{margin-left:auto;margin-right:auto;text-align:center}.val-image-container--right{margin-left:auto;text-align:right}.val-image-wrapper{display:inline-block;position:relative}.val-image-wrapper.small{width:30%;min-width:5rem;max-width:9.375rem}.val-image-wrapper.medium{width:50%;min-width:7.5rem;max-width:18.75rem}.val-image-wrapper.large{width:70%;min-width:12.5rem;max-width:31.25rem}.val-image-wrapper.xlarge{width:100%;min-width:15.625rem;max-width:none}.val-image{width:100%;height:auto;display:block;opacity:1;max-width:100%}.val-image.rounded{border-radius:.5rem}.val-image.circular{border-radius:50%;aspect-ratio:1;object-fit:cover}.val-image.box{border-radius:0}.val-image.bordered{border:.0625rem solid var(--ion-color-medium)}.val-image.shaded{box-shadow:.1875rem .625rem .5rem #1219541a}@media (prefers-color-scheme: dark){.val-image.dark{filter:invert(1)}}.val-image.limited{max-width:100%}.val-image-caption{margin-top:.5rem;color:var(--ion-color-medium-shade, #666);font-style:italic;line-height:1.4}.val-image-caption--small{font-size:.75rem}.val-image-caption--medium{font-size:.875rem}.val-image-caption--large{font-size:1rem}.val-image.visible{animation:appearance ease-in 1s forwards}@keyframes appearance{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@media (max-width: 768px){.val-image-wrapper.small{width:40%;max-width:7.5rem}.val-image-wrapper.medium{width:60%;max-width:15.625rem}.val-image-wrapper.large{width:80%;max-width:25rem}.val-image-wrapper.xlarge{width:100%}}.val-image-container{flex-shrink:0;align-self:flex-start}.flexbox-container .val-image-container--left{align-self:flex-start}.flexbox-container .val-image-container--center{align-self:center}.flexbox-container .val-image-container--right{align-self:flex-end}\n"] }]
|
|
2006
2076
|
}], ctorParameters: () => [], propDecorators: { props: [{
|
|
2007
2077
|
type: Input
|
|
2008
2078
|
}] } });
|
|
@@ -5633,6 +5703,624 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
5633
5703
|
type: Input
|
|
5634
5704
|
}] } });
|
|
5635
5705
|
|
|
5706
|
+
/**
|
|
5707
|
+
* val-article
|
|
5708
|
+
*
|
|
5709
|
+
* Componente para crear artículos, blogs y documentación de forma declarativa.
|
|
5710
|
+
* Permite combinar múltiples elementos (títulos, texto, imágenes, código, etc.)
|
|
5711
|
+
* con espaciado automático y soporte multi-idioma.
|
|
5712
|
+
*
|
|
5713
|
+
* @example Uso básico:
|
|
5714
|
+
* ```html
|
|
5715
|
+
* <val-article [props]="articleConfig"></val-article>
|
|
5716
|
+
* ```
|
|
5717
|
+
*
|
|
5718
|
+
* @example Con ArticleBuilder:
|
|
5719
|
+
* ```typescript
|
|
5720
|
+
* articleConfig = new ArticleBuilder()
|
|
5721
|
+
* .title(titleProps)
|
|
5722
|
+
* .paragraph(textProps)
|
|
5723
|
+
* .code('console.log("Hello World")', 'javascript')
|
|
5724
|
+
* .build();
|
|
5725
|
+
* ```
|
|
5726
|
+
*
|
|
5727
|
+
* @input props: ArticleMetadata - Configuración completa del artículo
|
|
5728
|
+
*/
|
|
5729
|
+
class ArticleComponent {
|
|
5730
|
+
constructor() { }
|
|
5731
|
+
ngOnInit() {
|
|
5732
|
+
// Validación básica
|
|
5733
|
+
if (!this.props || !this.props.elements) {
|
|
5734
|
+
console.warn('val-article: props.elements is required');
|
|
5735
|
+
}
|
|
5736
|
+
}
|
|
5737
|
+
/**
|
|
5738
|
+
* Función de trackBy para optimizar el rendering de elementos
|
|
5739
|
+
*/
|
|
5740
|
+
trackByFn(index, element) {
|
|
5741
|
+
return element.id || index;
|
|
5742
|
+
}
|
|
5743
|
+
/**
|
|
5744
|
+
* Obtiene las clases CSS para el espaciado del elemento
|
|
5745
|
+
*/
|
|
5746
|
+
getElementSpacingClass(element) {
|
|
5747
|
+
const spacing = element.spacing || this.props.defaultSpacing;
|
|
5748
|
+
const classes = [];
|
|
5749
|
+
if (spacing?.top) {
|
|
5750
|
+
classes.push(`val-article__spacing-top--${spacing.top}`);
|
|
5751
|
+
}
|
|
5752
|
+
if (spacing?.bottom) {
|
|
5753
|
+
classes.push(`val-article__spacing-bottom--${spacing.bottom}`);
|
|
5754
|
+
}
|
|
5755
|
+
if (spacing?.horizontal) {
|
|
5756
|
+
classes.push(`val-article__spacing-horizontal--${spacing.horizontal}`);
|
|
5757
|
+
}
|
|
5758
|
+
return classes.join(' ');
|
|
5759
|
+
}
|
|
5760
|
+
// === FUNCIONES DE TIPO PARA TYPESCRIPT ===
|
|
5761
|
+
getTitleElement(element) {
|
|
5762
|
+
return element;
|
|
5763
|
+
}
|
|
5764
|
+
getSubtitleElement(element) {
|
|
5765
|
+
return element;
|
|
5766
|
+
}
|
|
5767
|
+
getTextElement(element) {
|
|
5768
|
+
return element;
|
|
5769
|
+
}
|
|
5770
|
+
getQuoteElement(element) {
|
|
5771
|
+
return element;
|
|
5772
|
+
}
|
|
5773
|
+
getHighlightElement(element) {
|
|
5774
|
+
return element;
|
|
5775
|
+
}
|
|
5776
|
+
getCodeElement(element) {
|
|
5777
|
+
return element;
|
|
5778
|
+
}
|
|
5779
|
+
getListElement(element) {
|
|
5780
|
+
return element;
|
|
5781
|
+
}
|
|
5782
|
+
getButtonElement(element) {
|
|
5783
|
+
return element;
|
|
5784
|
+
}
|
|
5785
|
+
getSeparatorElement(element) {
|
|
5786
|
+
return element;
|
|
5787
|
+
}
|
|
5788
|
+
getImageElement(element) {
|
|
5789
|
+
return element;
|
|
5790
|
+
}
|
|
5791
|
+
getVideoElement(element) {
|
|
5792
|
+
return element;
|
|
5793
|
+
}
|
|
5794
|
+
getCustomElement(element) {
|
|
5795
|
+
return element;
|
|
5796
|
+
}
|
|
5797
|
+
// === FUNCIONES AUXILIARES PARA PROPS ===
|
|
5798
|
+
getQuoteTextProps(element) {
|
|
5799
|
+
const quoteElement = this.getQuoteElement(element);
|
|
5800
|
+
const { author, source, ...textProps } = quoteElement.props;
|
|
5801
|
+
return textProps;
|
|
5802
|
+
}
|
|
5803
|
+
getHighlightTextProps(element) {
|
|
5804
|
+
const highlightElement = this.getHighlightElement(element);
|
|
5805
|
+
const { backgroundColor, rounded, ...textProps } = highlightElement.props;
|
|
5806
|
+
return textProps;
|
|
5807
|
+
}
|
|
5808
|
+
getHighlightColor(element) {
|
|
5809
|
+
const highlightElement = this.getHighlightElement(element);
|
|
5810
|
+
return highlightElement.props.backgroundColor || 'var(--ion-color-light)';
|
|
5811
|
+
}
|
|
5812
|
+
getButtonProps(element) {
|
|
5813
|
+
const buttonElement = this.getButtonElement(element);
|
|
5814
|
+
const { alignment, ...buttonProps } = buttonElement.props;
|
|
5815
|
+
return buttonProps;
|
|
5816
|
+
}
|
|
5817
|
+
getImageMetadata(element) {
|
|
5818
|
+
const imageElement = this.getImageElement(element);
|
|
5819
|
+
const props = imageElement.props;
|
|
5820
|
+
return {
|
|
5821
|
+
src: props.src,
|
|
5822
|
+
alt: props.alt,
|
|
5823
|
+
mode: props.rounded ? 'rounded' : 'box',
|
|
5824
|
+
size: 'medium',
|
|
5825
|
+
shaded: false,
|
|
5826
|
+
bordered: false,
|
|
5827
|
+
alignment: props.alignment || 'center',
|
|
5828
|
+
caption: props.caption,
|
|
5829
|
+
captionSize: 'medium',
|
|
5830
|
+
width: props.maxWidth ? parseInt(props.maxWidth.replace('px', '')) : undefined,
|
|
5831
|
+
};
|
|
5832
|
+
}
|
|
5833
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ArticleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5834
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ArticleComponent, isStandalone: true, selector: "val-article", inputs: { props: "props" }, ngImport: i0, template: `
|
|
5835
|
+
<article
|
|
5836
|
+
class="val-article"
|
|
5837
|
+
[class]="props.cssClass"
|
|
5838
|
+
[ngClass]="{
|
|
5839
|
+
'val-article--centered': props.centered,
|
|
5840
|
+
'val-article--light': props.theme === 'light',
|
|
5841
|
+
'val-article--dark': props.theme === 'dark',
|
|
5842
|
+
}"
|
|
5843
|
+
[style.max-width]="props.maxWidth"
|
|
5844
|
+
>
|
|
5845
|
+
<div
|
|
5846
|
+
*ngFor="let element of props.elements; trackBy: trackByFn"
|
|
5847
|
+
class="val-article__element"
|
|
5848
|
+
[class]="element.cssClass"
|
|
5849
|
+
[ngClass]="getElementSpacingClass(element)"
|
|
5850
|
+
[style.display]="element.visible === false ? 'none' : 'block'"
|
|
5851
|
+
>
|
|
5852
|
+
<!-- Título -->
|
|
5853
|
+
<ng-container *ngIf="element.type === 'title'">
|
|
5854
|
+
<val-title [props]="getTitleElement(element).props"></val-title>
|
|
5855
|
+
</ng-container>
|
|
5856
|
+
|
|
5857
|
+
<!-- Subtítulo -->
|
|
5858
|
+
<ng-container *ngIf="element.type === 'subtitle'">
|
|
5859
|
+
<val-title [props]="getSubtitleElement(element).props"></val-title>
|
|
5860
|
+
</ng-container>
|
|
5861
|
+
|
|
5862
|
+
<!-- Texto/Párrafo -->
|
|
5863
|
+
<ng-container *ngIf="element.type === 'text' || element.type === 'paragraph'">
|
|
5864
|
+
<val-text [props]="getTextElement(element).props"></val-text>
|
|
5865
|
+
</ng-container>
|
|
5866
|
+
|
|
5867
|
+
<!-- Cita -->
|
|
5868
|
+
<ng-container *ngIf="element.type === 'quote'">
|
|
5869
|
+
<div class="val-article__quote">
|
|
5870
|
+
<div class="val-article__quote-content">
|
|
5871
|
+
<val-text [props]="getQuoteTextProps(element)"></val-text>
|
|
5872
|
+
</div>
|
|
5873
|
+
<div *ngIf="getQuoteElement(element).props.author" class="val-article__quote-author">
|
|
5874
|
+
— {{ getQuoteElement(element).props.author }}
|
|
5875
|
+
<span *ngIf="getQuoteElement(element).props.source" class="val-article__quote-source">
|
|
5876
|
+
, {{ getQuoteElement(element).props.source }}
|
|
5877
|
+
</span>
|
|
5878
|
+
</div>
|
|
5879
|
+
</div>
|
|
5880
|
+
</ng-container>
|
|
5881
|
+
|
|
5882
|
+
<!-- Texto destacado -->
|
|
5883
|
+
<ng-container *ngIf="element.type === 'highlight'">
|
|
5884
|
+
<div
|
|
5885
|
+
class="val-article__highlight"
|
|
5886
|
+
[ngClass]="{
|
|
5887
|
+
'val-article__highlight--rounded': getHighlightElement(element).props.rounded,
|
|
5888
|
+
}"
|
|
5889
|
+
[style.background-color]="getHighlightColor(element)"
|
|
5890
|
+
>
|
|
5891
|
+
<val-text [props]="getHighlightTextProps(element)"></val-text>
|
|
5892
|
+
</div>
|
|
5893
|
+
</ng-container>
|
|
5894
|
+
|
|
5895
|
+
<!-- Código -->
|
|
5896
|
+
<ng-container *ngIf="element.type === 'code'">
|
|
5897
|
+
<div class="val-article__code">
|
|
5898
|
+
<div *ngIf="getCodeElement(element).props.language" class="val-article__code-language">
|
|
5899
|
+
{{ getCodeElement(element).props.language }}
|
|
5900
|
+
</div>
|
|
5901
|
+
<pre
|
|
5902
|
+
class="val-article__code-content"
|
|
5903
|
+
[ngClass]="{
|
|
5904
|
+
'val-article__code-content--dark': getCodeElement(element).props.theme === 'dark',
|
|
5905
|
+
}"
|
|
5906
|
+
><code>{{ getCodeElement(element).props.code }}</code></pre>
|
|
5907
|
+
</div>
|
|
5908
|
+
</ng-container>
|
|
5909
|
+
|
|
5910
|
+
<!-- Lista -->
|
|
5911
|
+
<ng-container *ngIf="element.type === 'list'">
|
|
5912
|
+
<ul *ngIf="getListElement(element).props.listType !== 'ordered'" class="val-article__list">
|
|
5913
|
+
<li *ngFor="let item of getListElement(element).props.items" class="val-article__list-item">
|
|
5914
|
+
<span *ngIf="getListElement(element).props.listType === 'checklist'" class="val-article__list-check"
|
|
5915
|
+
>✓</span
|
|
5916
|
+
>
|
|
5917
|
+
{{ item.text }}
|
|
5918
|
+
</li>
|
|
5919
|
+
</ul>
|
|
5920
|
+
<ol
|
|
5921
|
+
*ngIf="getListElement(element).props.listType === 'ordered'"
|
|
5922
|
+
class="val-article__list val-article__list--ordered"
|
|
5923
|
+
>
|
|
5924
|
+
<li *ngFor="let item of getListElement(element).props.items" class="val-article__list-item">
|
|
5925
|
+
{{ item.text }}
|
|
5926
|
+
</li>
|
|
5927
|
+
</ol>
|
|
5928
|
+
</ng-container>
|
|
5929
|
+
|
|
5930
|
+
<!-- Botón -->
|
|
5931
|
+
<ng-container *ngIf="element.type === 'button'">
|
|
5932
|
+
<div
|
|
5933
|
+
class="val-article__button-container"
|
|
5934
|
+
[ngClass]="{
|
|
5935
|
+
'val-article__button-container--left': getButtonElement(element).props.alignment === 'left',
|
|
5936
|
+
'val-article__button-container--center': getButtonElement(element).props.alignment === 'center',
|
|
5937
|
+
'val-article__button-container--right': getButtonElement(element).props.alignment === 'right',
|
|
5938
|
+
}"
|
|
5939
|
+
>
|
|
5940
|
+
<val-button [props]="getButtonProps(element)"></val-button>
|
|
5941
|
+
</div>
|
|
5942
|
+
</ng-container>
|
|
5943
|
+
|
|
5944
|
+
<!-- Separador -->
|
|
5945
|
+
<ng-container *ngIf="element.type === 'separator'">
|
|
5946
|
+
<div class="val-article__separator">
|
|
5947
|
+
<hr
|
|
5948
|
+
*ngIf="getSeparatorElement(element).props.style === 'line'"
|
|
5949
|
+
class="val-article__separator-line"
|
|
5950
|
+
[ngClass]="{
|
|
5951
|
+
'val-article__separator-line--thin': getSeparatorElement(element).props.thickness === 'thin',
|
|
5952
|
+
'val-article__separator-line--thick': getSeparatorElement(element).props.thickness === 'thick',
|
|
5953
|
+
}"
|
|
5954
|
+
/>
|
|
5955
|
+
<div *ngIf="getSeparatorElement(element).props.style === 'dots'" class="val-article__separator-dots">
|
|
5956
|
+
• • •
|
|
5957
|
+
</div>
|
|
5958
|
+
<div
|
|
5959
|
+
*ngIf="getSeparatorElement(element).props.style === 'space'"
|
|
5960
|
+
class="val-article__separator-space"
|
|
5961
|
+
></div>
|
|
5962
|
+
</div>
|
|
5963
|
+
</ng-container>
|
|
5964
|
+
|
|
5965
|
+
<!-- Imagen -->
|
|
5966
|
+
<ng-container *ngIf="element.type === 'image'">
|
|
5967
|
+
<val-image [props]="getImageMetadata(element)"></val-image>
|
|
5968
|
+
</ng-container>
|
|
5969
|
+
|
|
5970
|
+
<!-- Video -->
|
|
5971
|
+
<ng-container *ngIf="element.type === 'video'">
|
|
5972
|
+
<div class="val-article__video">
|
|
5973
|
+
<video
|
|
5974
|
+
[src]="getVideoElement(element).props.src"
|
|
5975
|
+
[poster]="getVideoElement(element).props.poster"
|
|
5976
|
+
[controls]="getVideoElement(element).props.controls !== false"
|
|
5977
|
+
[autoplay]="getVideoElement(element).props.autoplay"
|
|
5978
|
+
[muted]="getVideoElement(element).props.muted"
|
|
5979
|
+
[style.max-width]="getVideoElement(element).props.maxWidth"
|
|
5980
|
+
class="val-article__video-content"
|
|
5981
|
+
>
|
|
5982
|
+
Tu navegador no soporta el elemento video.
|
|
5983
|
+
</video>
|
|
5984
|
+
<div *ngIf="getVideoElement(element).props.title" class="val-article__video-title">
|
|
5985
|
+
{{ getVideoElement(element).props.title }}
|
|
5986
|
+
</div>
|
|
5987
|
+
</div>
|
|
5988
|
+
</ng-container>
|
|
5989
|
+
|
|
5990
|
+
<!-- Contenido personalizado -->
|
|
5991
|
+
<ng-container *ngIf="element.type === 'custom'">
|
|
5992
|
+
<div class="val-article__custom" [innerHTML]="getCustomElement(element).props.htmlContent"></div>
|
|
5993
|
+
</ng-container>
|
|
5994
|
+
</div>
|
|
5995
|
+
</article>
|
|
5996
|
+
`, isInline: true, styles: [".val-article{width:100%;margin:0 auto;line-height:1.6;color:var(--ion-color-dark, #1f2937);display:block;position:static}.val-article--centered{margin:0 auto}.val-article--light{background-color:var(--ion-color-light, #ffffff);color:var(--ion-color-dark, #1f2937)}.val-article--dark{background-color:var(--ion-color-dark, #1f2937);color:var(--ion-color-light, #ffffff)}.val-article__element{position:relative}.val-article__element:last-child{margin-bottom:0!important}.val-article__spacing-top--none{margin-top:0!important}.val-article__spacing-top--small{margin-top:.5rem!important}.val-article__spacing-top--medium{margin-top:1rem!important}.val-article__spacing-top--large{margin-top:1.5rem!important}.val-article__spacing-top--xlarge{margin-top:2.5rem!important}.val-article__spacing-bottom--none{margin-bottom:0!important}.val-article__spacing-bottom--small{margin-bottom:.5rem!important}.val-article__spacing-bottom--medium{margin-bottom:1rem!important}.val-article__spacing-bottom--large{margin-bottom:1.5rem!important}.val-article__spacing-bottom--xlarge{margin-bottom:2.5rem!important}.val-article__spacing-horizontal--none{margin-left:0!important;margin-right:0!important}.val-article__spacing-horizontal--small{margin-left:.5rem!important;margin-right:.5rem!important}.val-article__spacing-horizontal--medium{margin-left:1rem!important;margin-right:1rem!important}.val-article__spacing-horizontal--large{margin-left:1.5rem!important;margin-right:1.5rem!important}.val-article__spacing-horizontal--xlarge{margin-left:2.5rem!important;margin-right:2.5rem!important}.val-article__quote{border-left:4px solid #0969da;padding:1rem;margin:1rem 0;background-color:var(--ion-color-light-shade, #f8f9fa);border-radius:0 8px 8px 0;font-style:italic}.val-article__quote-content{margin-bottom:.5rem;font-size:1.1em}.val-article__quote-author{font-size:.9em;color:var(--ion-color-medium, #6c757d);font-style:normal;font-weight:500;text-align:right}.val-article__quote-source{font-weight:400;opacity:.8}.val-article__highlight{padding:1rem;margin:.5rem 0;background-color:var(--ion-color-warning-tint, #fff3cd);border:1px solid var(--ion-color-warning, #ffc107);border-radius:4px}.val-article__highlight--rounded{border-radius:12px}.val-article__code{margin:1rem 0;border-radius:8px;overflow:hidden;border:1px solid #e1e5e9}.val-article__code-language{background-color:var(--ion-color-medium-tint, #f8f9fa);padding:.5rem 1rem;font-size:.875em;font-weight:500;color:var(--ion-color-dark, #495057);border-bottom:1px solid #e1e5e9;text-transform:uppercase;letter-spacing:.5px}.val-article__code-content{background-color:#f6f8fa;color:#24292e;padding:1rem;margin:0;overflow-x:auto;font-family:SFMono-Regular,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.875em;line-height:1.5}.val-article__code-content code{background:none;padding:0;font-size:inherit;color:inherit}.val-article__code-content--dark{background-color:#161b22;color:#f0f6fc}.val-article__list{margin:1rem 0;padding-left:1.5rem}.val-article__list--ordered{list-style-type:decimal}.val-article__list-item{margin-bottom:.5rem;line-height:1.6;position:relative}.val-article__list-item:last-child{margin-bottom:0}.val-article__list-check{color:var(--ion-color-success, #28a745);font-weight:700;margin-right:.5rem;position:absolute;left:-1.5rem}.val-article .val-article__list:has(.val-article__list-check){list-style:none;padding-left:1rem}.val-article__button-container{margin:1rem 0}.val-article__button-container--left{text-align:left}.val-article__button-container--center{text-align:center}.val-article__button-container--right{text-align:right}.val-article__separator{margin:1.5rem 0;text-align:center}.val-article__separator-line{border:none;height:1px;background-color:#d0d7de;margin:0}.val-article__separator-line--thin{height:1px}.val-article__separator-line--thick{height:3px}.val-article__separator-dots{color:#d0d7de;font-size:1.5em;letter-spacing:.5em;-webkit-user-select:none;user-select:none}.val-article__separator-space{height:1.5rem}.val-article__image{margin:1.5rem 0;text-align:center}.val-article__image--left{text-align:left}.val-article__image--center{text-align:center}.val-article__image--right{text-align:right}.val-article__image-content{max-width:100%;height:auto;border-radius:4px;box-shadow:0 2px 8px #0000001a;transition:transform .2s ease}.val-article__image-content:hover{transform:scale(1.02)}.val-article__image-content--rounded{border-radius:12px}.val-article__image-caption{margin-top:.5rem;font-size:.875em;color:var(--ion-color-medium, #6c757d);font-style:italic;text-align:center}.val-article__video{margin:1.5rem 0;text-align:center}.val-article__video-content{max-width:100%;height:auto;border-radius:8px;box-shadow:0 4px 12px #00000026}.val-article__video-title{margin-top:.5rem;font-size:.9em;color:var(--ion-color-medium, #6c757d);font-weight:500}.val-article__custom{margin:1rem 0}.val-article__custom *{max-width:100%}@media (max-width: 768px){.val-article__code-content{font-size:.8em;padding:.5rem}.val-article__image-content:hover{transform:none}.val-article__quote{padding:.5rem;margin:.5rem 0}.val-article__highlight{padding:.5rem}}@media (prefers-color-scheme: dark){.val-article--auto{background-color:var(--ion-color-dark, #1f2937);color:var(--ion-color-light, #ffffff)}.val-article--auto .val-article__quote{background-color:#ffffff0d}.val-article--auto .val-article__highlight{background-color:#ffc1071a;border-color:var(--ion-color-warning-shade, #e0a800)}.val-article--auto .val-article__code-content{background-color:#161b22;color:#f0f6fc}}.val-article__element{animation:fadeInUp .3s ease-out}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media (prefers-contrast: high){.val-article__separator-line{background-color:currentColor;opacity:.5}.val-article__quote{border-left-width:6px}}@media (prefers-reduced-motion: reduce){.val-article .val-article__element{animation:none}.val-article__image-content{transition:none}.val-article__image-content:hover{transform:none}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }, { kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: ImageComponent, selector: "val-image", inputs: ["props"] }] }); }
|
|
5997
|
+
}
|
|
5998
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ArticleComponent, decorators: [{
|
|
5999
|
+
type: Component,
|
|
6000
|
+
args: [{ selector: 'val-article', standalone: true, imports: [CommonModule, TitleComponent, TextComponent, ButtonComponent, ImageComponent], template: `
|
|
6001
|
+
<article
|
|
6002
|
+
class="val-article"
|
|
6003
|
+
[class]="props.cssClass"
|
|
6004
|
+
[ngClass]="{
|
|
6005
|
+
'val-article--centered': props.centered,
|
|
6006
|
+
'val-article--light': props.theme === 'light',
|
|
6007
|
+
'val-article--dark': props.theme === 'dark',
|
|
6008
|
+
}"
|
|
6009
|
+
[style.max-width]="props.maxWidth"
|
|
6010
|
+
>
|
|
6011
|
+
<div
|
|
6012
|
+
*ngFor="let element of props.elements; trackBy: trackByFn"
|
|
6013
|
+
class="val-article__element"
|
|
6014
|
+
[class]="element.cssClass"
|
|
6015
|
+
[ngClass]="getElementSpacingClass(element)"
|
|
6016
|
+
[style.display]="element.visible === false ? 'none' : 'block'"
|
|
6017
|
+
>
|
|
6018
|
+
<!-- Título -->
|
|
6019
|
+
<ng-container *ngIf="element.type === 'title'">
|
|
6020
|
+
<val-title [props]="getTitleElement(element).props"></val-title>
|
|
6021
|
+
</ng-container>
|
|
6022
|
+
|
|
6023
|
+
<!-- Subtítulo -->
|
|
6024
|
+
<ng-container *ngIf="element.type === 'subtitle'">
|
|
6025
|
+
<val-title [props]="getSubtitleElement(element).props"></val-title>
|
|
6026
|
+
</ng-container>
|
|
6027
|
+
|
|
6028
|
+
<!-- Texto/Párrafo -->
|
|
6029
|
+
<ng-container *ngIf="element.type === 'text' || element.type === 'paragraph'">
|
|
6030
|
+
<val-text [props]="getTextElement(element).props"></val-text>
|
|
6031
|
+
</ng-container>
|
|
6032
|
+
|
|
6033
|
+
<!-- Cita -->
|
|
6034
|
+
<ng-container *ngIf="element.type === 'quote'">
|
|
6035
|
+
<div class="val-article__quote">
|
|
6036
|
+
<div class="val-article__quote-content">
|
|
6037
|
+
<val-text [props]="getQuoteTextProps(element)"></val-text>
|
|
6038
|
+
</div>
|
|
6039
|
+
<div *ngIf="getQuoteElement(element).props.author" class="val-article__quote-author">
|
|
6040
|
+
— {{ getQuoteElement(element).props.author }}
|
|
6041
|
+
<span *ngIf="getQuoteElement(element).props.source" class="val-article__quote-source">
|
|
6042
|
+
, {{ getQuoteElement(element).props.source }}
|
|
6043
|
+
</span>
|
|
6044
|
+
</div>
|
|
6045
|
+
</div>
|
|
6046
|
+
</ng-container>
|
|
6047
|
+
|
|
6048
|
+
<!-- Texto destacado -->
|
|
6049
|
+
<ng-container *ngIf="element.type === 'highlight'">
|
|
6050
|
+
<div
|
|
6051
|
+
class="val-article__highlight"
|
|
6052
|
+
[ngClass]="{
|
|
6053
|
+
'val-article__highlight--rounded': getHighlightElement(element).props.rounded,
|
|
6054
|
+
}"
|
|
6055
|
+
[style.background-color]="getHighlightColor(element)"
|
|
6056
|
+
>
|
|
6057
|
+
<val-text [props]="getHighlightTextProps(element)"></val-text>
|
|
6058
|
+
</div>
|
|
6059
|
+
</ng-container>
|
|
6060
|
+
|
|
6061
|
+
<!-- Código -->
|
|
6062
|
+
<ng-container *ngIf="element.type === 'code'">
|
|
6063
|
+
<div class="val-article__code">
|
|
6064
|
+
<div *ngIf="getCodeElement(element).props.language" class="val-article__code-language">
|
|
6065
|
+
{{ getCodeElement(element).props.language }}
|
|
6066
|
+
</div>
|
|
6067
|
+
<pre
|
|
6068
|
+
class="val-article__code-content"
|
|
6069
|
+
[ngClass]="{
|
|
6070
|
+
'val-article__code-content--dark': getCodeElement(element).props.theme === 'dark',
|
|
6071
|
+
}"
|
|
6072
|
+
><code>{{ getCodeElement(element).props.code }}</code></pre>
|
|
6073
|
+
</div>
|
|
6074
|
+
</ng-container>
|
|
6075
|
+
|
|
6076
|
+
<!-- Lista -->
|
|
6077
|
+
<ng-container *ngIf="element.type === 'list'">
|
|
6078
|
+
<ul *ngIf="getListElement(element).props.listType !== 'ordered'" class="val-article__list">
|
|
6079
|
+
<li *ngFor="let item of getListElement(element).props.items" class="val-article__list-item">
|
|
6080
|
+
<span *ngIf="getListElement(element).props.listType === 'checklist'" class="val-article__list-check"
|
|
6081
|
+
>✓</span
|
|
6082
|
+
>
|
|
6083
|
+
{{ item.text }}
|
|
6084
|
+
</li>
|
|
6085
|
+
</ul>
|
|
6086
|
+
<ol
|
|
6087
|
+
*ngIf="getListElement(element).props.listType === 'ordered'"
|
|
6088
|
+
class="val-article__list val-article__list--ordered"
|
|
6089
|
+
>
|
|
6090
|
+
<li *ngFor="let item of getListElement(element).props.items" class="val-article__list-item">
|
|
6091
|
+
{{ item.text }}
|
|
6092
|
+
</li>
|
|
6093
|
+
</ol>
|
|
6094
|
+
</ng-container>
|
|
6095
|
+
|
|
6096
|
+
<!-- Botón -->
|
|
6097
|
+
<ng-container *ngIf="element.type === 'button'">
|
|
6098
|
+
<div
|
|
6099
|
+
class="val-article__button-container"
|
|
6100
|
+
[ngClass]="{
|
|
6101
|
+
'val-article__button-container--left': getButtonElement(element).props.alignment === 'left',
|
|
6102
|
+
'val-article__button-container--center': getButtonElement(element).props.alignment === 'center',
|
|
6103
|
+
'val-article__button-container--right': getButtonElement(element).props.alignment === 'right',
|
|
6104
|
+
}"
|
|
6105
|
+
>
|
|
6106
|
+
<val-button [props]="getButtonProps(element)"></val-button>
|
|
6107
|
+
</div>
|
|
6108
|
+
</ng-container>
|
|
6109
|
+
|
|
6110
|
+
<!-- Separador -->
|
|
6111
|
+
<ng-container *ngIf="element.type === 'separator'">
|
|
6112
|
+
<div class="val-article__separator">
|
|
6113
|
+
<hr
|
|
6114
|
+
*ngIf="getSeparatorElement(element).props.style === 'line'"
|
|
6115
|
+
class="val-article__separator-line"
|
|
6116
|
+
[ngClass]="{
|
|
6117
|
+
'val-article__separator-line--thin': getSeparatorElement(element).props.thickness === 'thin',
|
|
6118
|
+
'val-article__separator-line--thick': getSeparatorElement(element).props.thickness === 'thick',
|
|
6119
|
+
}"
|
|
6120
|
+
/>
|
|
6121
|
+
<div *ngIf="getSeparatorElement(element).props.style === 'dots'" class="val-article__separator-dots">
|
|
6122
|
+
• • •
|
|
6123
|
+
</div>
|
|
6124
|
+
<div
|
|
6125
|
+
*ngIf="getSeparatorElement(element).props.style === 'space'"
|
|
6126
|
+
class="val-article__separator-space"
|
|
6127
|
+
></div>
|
|
6128
|
+
</div>
|
|
6129
|
+
</ng-container>
|
|
6130
|
+
|
|
6131
|
+
<!-- Imagen -->
|
|
6132
|
+
<ng-container *ngIf="element.type === 'image'">
|
|
6133
|
+
<val-image [props]="getImageMetadata(element)"></val-image>
|
|
6134
|
+
</ng-container>
|
|
6135
|
+
|
|
6136
|
+
<!-- Video -->
|
|
6137
|
+
<ng-container *ngIf="element.type === 'video'">
|
|
6138
|
+
<div class="val-article__video">
|
|
6139
|
+
<video
|
|
6140
|
+
[src]="getVideoElement(element).props.src"
|
|
6141
|
+
[poster]="getVideoElement(element).props.poster"
|
|
6142
|
+
[controls]="getVideoElement(element).props.controls !== false"
|
|
6143
|
+
[autoplay]="getVideoElement(element).props.autoplay"
|
|
6144
|
+
[muted]="getVideoElement(element).props.muted"
|
|
6145
|
+
[style.max-width]="getVideoElement(element).props.maxWidth"
|
|
6146
|
+
class="val-article__video-content"
|
|
6147
|
+
>
|
|
6148
|
+
Tu navegador no soporta el elemento video.
|
|
6149
|
+
</video>
|
|
6150
|
+
<div *ngIf="getVideoElement(element).props.title" class="val-article__video-title">
|
|
6151
|
+
{{ getVideoElement(element).props.title }}
|
|
6152
|
+
</div>
|
|
6153
|
+
</div>
|
|
6154
|
+
</ng-container>
|
|
6155
|
+
|
|
6156
|
+
<!-- Contenido personalizado -->
|
|
6157
|
+
<ng-container *ngIf="element.type === 'custom'">
|
|
6158
|
+
<div class="val-article__custom" [innerHTML]="getCustomElement(element).props.htmlContent"></div>
|
|
6159
|
+
</ng-container>
|
|
6160
|
+
</div>
|
|
6161
|
+
</article>
|
|
6162
|
+
`, styles: [".val-article{width:100%;margin:0 auto;line-height:1.6;color:var(--ion-color-dark, #1f2937);display:block;position:static}.val-article--centered{margin:0 auto}.val-article--light{background-color:var(--ion-color-light, #ffffff);color:var(--ion-color-dark, #1f2937)}.val-article--dark{background-color:var(--ion-color-dark, #1f2937);color:var(--ion-color-light, #ffffff)}.val-article__element{position:relative}.val-article__element:last-child{margin-bottom:0!important}.val-article__spacing-top--none{margin-top:0!important}.val-article__spacing-top--small{margin-top:.5rem!important}.val-article__spacing-top--medium{margin-top:1rem!important}.val-article__spacing-top--large{margin-top:1.5rem!important}.val-article__spacing-top--xlarge{margin-top:2.5rem!important}.val-article__spacing-bottom--none{margin-bottom:0!important}.val-article__spacing-bottom--small{margin-bottom:.5rem!important}.val-article__spacing-bottom--medium{margin-bottom:1rem!important}.val-article__spacing-bottom--large{margin-bottom:1.5rem!important}.val-article__spacing-bottom--xlarge{margin-bottom:2.5rem!important}.val-article__spacing-horizontal--none{margin-left:0!important;margin-right:0!important}.val-article__spacing-horizontal--small{margin-left:.5rem!important;margin-right:.5rem!important}.val-article__spacing-horizontal--medium{margin-left:1rem!important;margin-right:1rem!important}.val-article__spacing-horizontal--large{margin-left:1.5rem!important;margin-right:1.5rem!important}.val-article__spacing-horizontal--xlarge{margin-left:2.5rem!important;margin-right:2.5rem!important}.val-article__quote{border-left:4px solid #0969da;padding:1rem;margin:1rem 0;background-color:var(--ion-color-light-shade, #f8f9fa);border-radius:0 8px 8px 0;font-style:italic}.val-article__quote-content{margin-bottom:.5rem;font-size:1.1em}.val-article__quote-author{font-size:.9em;color:var(--ion-color-medium, #6c757d);font-style:normal;font-weight:500;text-align:right}.val-article__quote-source{font-weight:400;opacity:.8}.val-article__highlight{padding:1rem;margin:.5rem 0;background-color:var(--ion-color-warning-tint, #fff3cd);border:1px solid var(--ion-color-warning, #ffc107);border-radius:4px}.val-article__highlight--rounded{border-radius:12px}.val-article__code{margin:1rem 0;border-radius:8px;overflow:hidden;border:1px solid #e1e5e9}.val-article__code-language{background-color:var(--ion-color-medium-tint, #f8f9fa);padding:.5rem 1rem;font-size:.875em;font-weight:500;color:var(--ion-color-dark, #495057);border-bottom:1px solid #e1e5e9;text-transform:uppercase;letter-spacing:.5px}.val-article__code-content{background-color:#f6f8fa;color:#24292e;padding:1rem;margin:0;overflow-x:auto;font-family:SFMono-Regular,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.875em;line-height:1.5}.val-article__code-content code{background:none;padding:0;font-size:inherit;color:inherit}.val-article__code-content--dark{background-color:#161b22;color:#f0f6fc}.val-article__list{margin:1rem 0;padding-left:1.5rem}.val-article__list--ordered{list-style-type:decimal}.val-article__list-item{margin-bottom:.5rem;line-height:1.6;position:relative}.val-article__list-item:last-child{margin-bottom:0}.val-article__list-check{color:var(--ion-color-success, #28a745);font-weight:700;margin-right:.5rem;position:absolute;left:-1.5rem}.val-article .val-article__list:has(.val-article__list-check){list-style:none;padding-left:1rem}.val-article__button-container{margin:1rem 0}.val-article__button-container--left{text-align:left}.val-article__button-container--center{text-align:center}.val-article__button-container--right{text-align:right}.val-article__separator{margin:1.5rem 0;text-align:center}.val-article__separator-line{border:none;height:1px;background-color:#d0d7de;margin:0}.val-article__separator-line--thin{height:1px}.val-article__separator-line--thick{height:3px}.val-article__separator-dots{color:#d0d7de;font-size:1.5em;letter-spacing:.5em;-webkit-user-select:none;user-select:none}.val-article__separator-space{height:1.5rem}.val-article__image{margin:1.5rem 0;text-align:center}.val-article__image--left{text-align:left}.val-article__image--center{text-align:center}.val-article__image--right{text-align:right}.val-article__image-content{max-width:100%;height:auto;border-radius:4px;box-shadow:0 2px 8px #0000001a;transition:transform .2s ease}.val-article__image-content:hover{transform:scale(1.02)}.val-article__image-content--rounded{border-radius:12px}.val-article__image-caption{margin-top:.5rem;font-size:.875em;color:var(--ion-color-medium, #6c757d);font-style:italic;text-align:center}.val-article__video{margin:1.5rem 0;text-align:center}.val-article__video-content{max-width:100%;height:auto;border-radius:8px;box-shadow:0 4px 12px #00000026}.val-article__video-title{margin-top:.5rem;font-size:.9em;color:var(--ion-color-medium, #6c757d);font-weight:500}.val-article__custom{margin:1rem 0}.val-article__custom *{max-width:100%}@media (max-width: 768px){.val-article__code-content{font-size:.8em;padding:.5rem}.val-article__image-content:hover{transform:none}.val-article__quote{padding:.5rem;margin:.5rem 0}.val-article__highlight{padding:.5rem}}@media (prefers-color-scheme: dark){.val-article--auto{background-color:var(--ion-color-dark, #1f2937);color:var(--ion-color-light, #ffffff)}.val-article--auto .val-article__quote{background-color:#ffffff0d}.val-article--auto .val-article__highlight{background-color:#ffc1071a;border-color:var(--ion-color-warning-shade, #e0a800)}.val-article--auto .val-article__code-content{background-color:#161b22;color:#f0f6fc}}.val-article__element{animation:fadeInUp .3s ease-out}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media (prefers-contrast: high){.val-article__separator-line{background-color:currentColor;opacity:.5}.val-article__quote{border-left-width:6px}}@media (prefers-reduced-motion: reduce){.val-article .val-article__element{animation:none}.val-article__image-content{transition:none}.val-article__image-content:hover{transform:none}}\n"] }]
|
|
6163
|
+
}], ctorParameters: () => [], propDecorators: { props: [{
|
|
6164
|
+
type: Input
|
|
6165
|
+
}] } });
|
|
6166
|
+
|
|
6167
|
+
/**
|
|
6168
|
+
* Configuración de espaciado predefinida
|
|
6169
|
+
*/
|
|
6170
|
+
const ARTICLE_SPACING = {
|
|
6171
|
+
NONE: { top: 'none', bottom: 'none' },
|
|
6172
|
+
SMALL: { top: 'small', bottom: 'small' },
|
|
6173
|
+
MEDIUM: { top: 'medium', bottom: 'medium' },
|
|
6174
|
+
LARGE: { top: 'large', bottom: 'large' },
|
|
6175
|
+
XLARGE: { top: 'xlarge', bottom: 'xlarge' },
|
|
6176
|
+
// Espaciados específicos para elementos
|
|
6177
|
+
TITLE: { top: 'large', bottom: 'medium' },
|
|
6178
|
+
SUBTITLE: { top: 'medium', bottom: 'small' },
|
|
6179
|
+
PARAGRAPH: { top: 'small', bottom: 'medium' },
|
|
6180
|
+
QUOTE: { top: 'medium', bottom: 'medium' },
|
|
6181
|
+
CODE: { top: 'medium', bottom: 'medium' },
|
|
6182
|
+
LIST: { top: 'small', bottom: 'medium' },
|
|
6183
|
+
BUTTON: { top: 'medium', bottom: 'medium' },
|
|
6184
|
+
IMAGE: { top: 'large', bottom: 'large' },
|
|
6185
|
+
SEPARATOR: { top: 'large', bottom: 'large' },
|
|
6186
|
+
};
|
|
6187
|
+
/**
|
|
6188
|
+
* Función helper para crear elementos de artículo de forma fácil
|
|
6189
|
+
*/
|
|
6190
|
+
class ArticleBuilder {
|
|
6191
|
+
constructor() {
|
|
6192
|
+
this.elements = [];
|
|
6193
|
+
}
|
|
6194
|
+
/**
|
|
6195
|
+
* Añade un título al artículo
|
|
6196
|
+
*/
|
|
6197
|
+
title(props, options) {
|
|
6198
|
+
this.elements.push({
|
|
6199
|
+
type: 'title',
|
|
6200
|
+
props,
|
|
6201
|
+
spacing: ARTICLE_SPACING.TITLE,
|
|
6202
|
+
...options,
|
|
6203
|
+
});
|
|
6204
|
+
return this;
|
|
6205
|
+
}
|
|
6206
|
+
/**
|
|
6207
|
+
* Añade un subtítulo al artículo
|
|
6208
|
+
*/
|
|
6209
|
+
subtitle(props, options) {
|
|
6210
|
+
this.elements.push({
|
|
6211
|
+
type: 'subtitle',
|
|
6212
|
+
props,
|
|
6213
|
+
spacing: ARTICLE_SPACING.SUBTITLE,
|
|
6214
|
+
...options,
|
|
6215
|
+
});
|
|
6216
|
+
return this;
|
|
6217
|
+
}
|
|
6218
|
+
/**
|
|
6219
|
+
* Añade un párrafo al artículo
|
|
6220
|
+
*/
|
|
6221
|
+
paragraph(props, options) {
|
|
6222
|
+
this.elements.push({
|
|
6223
|
+
type: 'paragraph',
|
|
6224
|
+
props,
|
|
6225
|
+
spacing: ARTICLE_SPACING.PARAGRAPH,
|
|
6226
|
+
...options,
|
|
6227
|
+
});
|
|
6228
|
+
return this;
|
|
6229
|
+
}
|
|
6230
|
+
/**
|
|
6231
|
+
* Añade una cita al artículo
|
|
6232
|
+
*/
|
|
6233
|
+
quote(props, options) {
|
|
6234
|
+
this.elements.push({
|
|
6235
|
+
type: 'quote',
|
|
6236
|
+
props,
|
|
6237
|
+
spacing: ARTICLE_SPACING.QUOTE,
|
|
6238
|
+
...options,
|
|
6239
|
+
});
|
|
6240
|
+
return this;
|
|
6241
|
+
}
|
|
6242
|
+
/**
|
|
6243
|
+
* Añade código al artículo
|
|
6244
|
+
*/
|
|
6245
|
+
code(code, language, options) {
|
|
6246
|
+
this.elements.push({
|
|
6247
|
+
type: 'code',
|
|
6248
|
+
props: { code, language },
|
|
6249
|
+
spacing: ARTICLE_SPACING.CODE,
|
|
6250
|
+
...options,
|
|
6251
|
+
});
|
|
6252
|
+
return this;
|
|
6253
|
+
}
|
|
6254
|
+
/**
|
|
6255
|
+
* Añade una lista al artículo
|
|
6256
|
+
*/
|
|
6257
|
+
list(items, listType, options) {
|
|
6258
|
+
this.elements.push({
|
|
6259
|
+
type: 'list',
|
|
6260
|
+
props: { items, listType },
|
|
6261
|
+
spacing: ARTICLE_SPACING.LIST,
|
|
6262
|
+
...options,
|
|
6263
|
+
});
|
|
6264
|
+
return this;
|
|
6265
|
+
}
|
|
6266
|
+
/**
|
|
6267
|
+
* Añade un botón al artículo
|
|
6268
|
+
*/
|
|
6269
|
+
button(props, alignment, options) {
|
|
6270
|
+
this.elements.push({
|
|
6271
|
+
type: 'button',
|
|
6272
|
+
props: { ...props, alignment },
|
|
6273
|
+
spacing: ARTICLE_SPACING.BUTTON,
|
|
6274
|
+
...options,
|
|
6275
|
+
});
|
|
6276
|
+
return this;
|
|
6277
|
+
}
|
|
6278
|
+
/**
|
|
6279
|
+
* Añade un separador al artículo
|
|
6280
|
+
*/
|
|
6281
|
+
separator(style, options) {
|
|
6282
|
+
this.elements.push({
|
|
6283
|
+
type: 'separator',
|
|
6284
|
+
props: { style },
|
|
6285
|
+
spacing: ARTICLE_SPACING.SEPARATOR,
|
|
6286
|
+
...options,
|
|
6287
|
+
});
|
|
6288
|
+
return this;
|
|
6289
|
+
}
|
|
6290
|
+
/**
|
|
6291
|
+
* Añade una imagen al artículo
|
|
6292
|
+
*/
|
|
6293
|
+
image(src, alt, caption, options) {
|
|
6294
|
+
this.elements.push({
|
|
6295
|
+
type: 'image',
|
|
6296
|
+
props: { src, alt, caption },
|
|
6297
|
+
spacing: ARTICLE_SPACING.IMAGE,
|
|
6298
|
+
...options,
|
|
6299
|
+
});
|
|
6300
|
+
return this;
|
|
6301
|
+
}
|
|
6302
|
+
/**
|
|
6303
|
+
* Construye el artículo final
|
|
6304
|
+
*/
|
|
6305
|
+
build(config) {
|
|
6306
|
+
return {
|
|
6307
|
+
elements: this.elements,
|
|
6308
|
+
defaultSpacing: ARTICLE_SPACING.MEDIUM,
|
|
6309
|
+
maxWidth: '800px',
|
|
6310
|
+
centered: true,
|
|
6311
|
+
theme: 'auto',
|
|
6312
|
+
...config,
|
|
6313
|
+
};
|
|
6314
|
+
}
|
|
6315
|
+
/**
|
|
6316
|
+
* Resetea el builder para crear un nuevo artículo
|
|
6317
|
+
*/
|
|
6318
|
+
clear() {
|
|
6319
|
+
this.elements = [];
|
|
6320
|
+
return this;
|
|
6321
|
+
}
|
|
6322
|
+
}
|
|
6323
|
+
|
|
5636
6324
|
/**
|
|
5637
6325
|
* val-banner
|
|
5638
6326
|
*
|
|
@@ -7454,5 +8142,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
7454
8142
|
* Generated bundle index. Do not edit.
|
|
7455
8143
|
*/
|
|
7456
8144
|
|
|
7457
|
-
export { ActionType, AlertBoxComponent, AvatarComponent, BannerComponent, BaseDefault, BoxComponent, ButtonComponent, ButtonGroupComponent, CardComponent, CardSection, CardType, CheckInputComponent, ClearDefault, ClearDefaultBlock, ClearDefaultFull, ClearDefaultRound, ClearDefaultRoundBlock, ClearDefaultRoundFull, CommentInputComponent, ComponentContentHelper, ComponentStates, ContentLoaderComponent, ContentService, DateInputComponent, DisplayComponent, DividerComponent, DownloadService, EmailInputComponent, ExpandableTextComponent, FileInputComponent, FooterComponent, FormComponent, FormFooterComponent, GlobalContent, HeaderComponent, HintComponent, HourInputComponent, HrefComponent, Icon, IconComponent, IconService, ImageComponent, InAppBrowserService, InputType, ItemListComponent, LANGUAGES, LangService, LanguageSelectorComponent, LayeredCardComponent, LayoutComponent, LinkComponent, LinkProcessorService, LinksCakeComponent, ListContentHelper, LocalStorageService, MOTION, NavigationService, NoContentComponent, NotesBoxComponent, NumberInputComponent, OutlineDefault, OutlineDefaultBlock, OutlineDefaultFull, OutlineDefaultRound, OutlineDefaultRoundBlock, OutlineDefaultRoundFull, PasswordInputComponent, PinInputComponent, PopoverSelectorComponent, PrimarySolidBlockButton, PrimarySolidBlockHrefButton, PrimarySolidBlockIconButton, PrimarySolidBlockIconHrefButton, PrimarySolidDefaultRoundButton, PrimarySolidDefaultRoundHrefButton, PrimarySolidDefaultRoundIconButton, PrimarySolidDefaultRoundIconHrefButton, PrimarySolidFullButton, PrimarySolidFullHrefButton, PrimarySolidFullIconButton, PrimarySolidFullIconHrefButton, PrimarySolidLargeRoundButton, PrimarySolidLargeRoundHrefButton, PrimarySolidLargeRoundIconButton, PrimarySolidLargeRoundIconHrefButton, PrimarySolidSmallRoundButton, PrimarySolidSmallRoundHrefButton, PrimarySolidSmallRoundIconButton, PrimarySolidSmallRoundIconHrefButton, ProcessLinksPipe, ProgressBarComponent, ProgressStatusComponent, PrompterComponent, RadioInputComponent, SearchSelectorComponent, SearchbarComponent, SecondarySolidBlockButton, SecondarySolidBlockHrefButton, SecondarySolidBlockIconButton, SecondarySolidBlockIconHrefButton, SecondarySolidDefaultRoundButton, SecondarySolidDefaultRoundHrefButton, SecondarySolidDefaultRoundIconButton, SecondarySolidDefaultRoundIconHrefButton, SecondarySolidFullButton, SecondarySolidFullHrefButton, SecondarySolidFullIconButton, SecondarySolidFullIconHrefButton, SecondarySolidLargeRoundButton, SecondarySolidLargeRoundHrefButton, SecondarySolidLargeRoundIconButton, SecondarySolidLargeRoundIconHrefButton, SecondarySolidSmallRoundButton, SecondarySolidSmallRoundHrefButton, SecondarySolidSmallRoundIconButton, SecondarySolidSmallRoundIconHrefButton, SelectSearchComponent, SimpleComponent, SolidBlockButton, SolidDefault, SolidDefaultBlock, SolidDefaultButton, SolidDefaultFull, SolidDefaultRound, SolidDefaultRoundBlock, SolidDefaultRoundButton, SolidDefaultRoundFull, SolidFullButton, SolidLargeButton, SolidLargeRoundButton, SolidSmallButton, SolidSmallRoundButton, TextComponent, TextContent, TextInputComponent, ThemeOption, ThemeService, TitleBlockComponent, TitleComponent, ToastService, ToolbarActionType, ToolbarComponent, ValtechConfigService, WizardComponent, WizardFooterComponent, applyDefaultValueToControl, content, createButtonProps, createComponentContentHelper, createContentHelper, createReactiveProps, createTextProps, createTitleProps, fromContent, fromContentWithInterpolation, fromMultipleContent, globalContentData, goToTop, interpolateContent, isAtEnd, maxLength, replaceSpecialChars, resolveColor, resolveInputDefaultValue, shouldUseReactiveContent };
|
|
8145
|
+
export { ARTICLE_SPACING, ActionType, AlertBoxComponent, ArticleBuilder, ArticleComponent, AvatarComponent, BannerComponent, BaseDefault, BoxComponent, ButtonComponent, ButtonGroupComponent, CardComponent, CardSection, CardType, CheckInputComponent, ClearDefault, ClearDefaultBlock, ClearDefaultFull, ClearDefaultRound, ClearDefaultRoundBlock, ClearDefaultRoundFull, CommentInputComponent, ComponentContentHelper, ComponentStates, ContentLoaderComponent, ContentService, DateInputComponent, DisplayComponent, DividerComponent, DownloadService, EmailInputComponent, ExpandableTextComponent, FileInputComponent, FooterComponent, FormComponent, FormFooterComponent, GlobalContent, HeaderComponent, HintComponent, HourInputComponent, HrefComponent, Icon, IconComponent, IconService, ImageComponent, InAppBrowserService, InputType, ItemListComponent, LANGUAGES, LangService, LanguageSelectorComponent, LayeredCardComponent, LayoutComponent, LinkComponent, LinkProcessorService, LinksCakeComponent, ListContentHelper, LocalStorageService, MOTION, NavigationService, NoContentComponent, NotesBoxComponent, NumberInputComponent, OutlineDefault, OutlineDefaultBlock, OutlineDefaultFull, OutlineDefaultRound, OutlineDefaultRoundBlock, OutlineDefaultRoundFull, PasswordInputComponent, PinInputComponent, PopoverSelectorComponent, PrimarySolidBlockButton, PrimarySolidBlockHrefButton, PrimarySolidBlockIconButton, PrimarySolidBlockIconHrefButton, PrimarySolidDefaultRoundButton, PrimarySolidDefaultRoundHrefButton, PrimarySolidDefaultRoundIconButton, PrimarySolidDefaultRoundIconHrefButton, PrimarySolidFullButton, PrimarySolidFullHrefButton, PrimarySolidFullIconButton, PrimarySolidFullIconHrefButton, PrimarySolidLargeRoundButton, PrimarySolidLargeRoundHrefButton, PrimarySolidLargeRoundIconButton, PrimarySolidLargeRoundIconHrefButton, PrimarySolidSmallRoundButton, PrimarySolidSmallRoundHrefButton, PrimarySolidSmallRoundIconButton, PrimarySolidSmallRoundIconHrefButton, ProcessLinksPipe, ProgressBarComponent, ProgressStatusComponent, PrompterComponent, RadioInputComponent, SearchSelectorComponent, SearchbarComponent, SecondarySolidBlockButton, SecondarySolidBlockHrefButton, SecondarySolidBlockIconButton, SecondarySolidBlockIconHrefButton, SecondarySolidDefaultRoundButton, SecondarySolidDefaultRoundHrefButton, SecondarySolidDefaultRoundIconButton, SecondarySolidDefaultRoundIconHrefButton, SecondarySolidFullButton, SecondarySolidFullHrefButton, SecondarySolidFullIconButton, SecondarySolidFullIconHrefButton, SecondarySolidLargeRoundButton, SecondarySolidLargeRoundHrefButton, SecondarySolidLargeRoundIconButton, SecondarySolidLargeRoundIconHrefButton, SecondarySolidSmallRoundButton, SecondarySolidSmallRoundHrefButton, SecondarySolidSmallRoundIconButton, SecondarySolidSmallRoundIconHrefButton, SelectSearchComponent, SimpleComponent, SolidBlockButton, SolidDefault, SolidDefaultBlock, SolidDefaultButton, SolidDefaultFull, SolidDefaultRound, SolidDefaultRoundBlock, SolidDefaultRoundButton, SolidDefaultRoundFull, SolidFullButton, SolidLargeButton, SolidLargeRoundButton, SolidSmallButton, SolidSmallRoundButton, TextComponent, TextContent, TextInputComponent, ThemeOption, ThemeService, TitleBlockComponent, TitleComponent, ToastService, ToolbarActionType, ToolbarComponent, ValtechConfigService, WizardComponent, WizardFooterComponent, applyDefaultValueToControl, content, createButtonProps, createComponentContentHelper, createContentHelper, createReactiveProps, createTextProps, createTitleProps, fromContent, fromContentWithInterpolation, fromMultipleContent, globalContentData, goToTop, interpolateContent, isAtEnd, maxLength, replaceSpecialChars, resolveColor, resolveInputDefaultValue, shouldUseReactiveContent };
|
|
7458
8146
|
//# sourceMappingURL=valtech-components.mjs.map
|