@iamgld/ui 1.1.3 → 1.4.3

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.
@@ -1,68 +1,11 @@
1
1
  import * as i0 from '@angular/core';
2
- import { input, booleanAttribute, output, Component, ChangeDetectionStrategy, Directive, contentChildren, signal, effect, inject, DestroyRef, ChangeDetectorRef, forwardRef, computed, numberAttribute, viewChild } from '@angular/core';
2
+ import { Directive, input, numberAttribute, booleanAttribute, output, Component, ChangeDetectionStrategy, contentChildren, signal, effect, inject, DestroyRef, ChangeDetectorRef, forwardRef, computed, viewChild } from '@angular/core';
3
+ import { NgOptimizedImage, NgTemplateOutlet } from '@angular/common';
3
4
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
5
  import * as i1 from '@angular/forms';
5
6
  import { FormControl, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';
6
- import { NgTemplateOutlet } from '@angular/common';
7
7
  import { debounceTime } from 'rxjs';
8
8
 
9
- // Angular Imports
10
- class ButtonComponent {
11
- name = input.required();
12
- disabled = input(false, { transform: booleanAttribute });
13
- // hasIcon = input<boolean, string | boolean>(false, { transform: booleanAttribute })
14
- // icon = input<Icons>(Icons.addLine)
15
- // iconSize = input<keyof typeof IconsSize>(IconsSize.small)
16
- // iconMoveTopToBottom = input<number, string | number>(0, { transform: numberAttribute })
17
- // iconMoveLeftToRight = input<number, string | number>(0, { transform: numberAttribute })
18
- color = input('pink');
19
- size = input('normal');
20
- clicked = output();
21
- emitClick() {
22
- if (!this.disabled())
23
- this.clicked.emit();
24
- }
25
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: ButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
26
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.1", type: ButtonComponent, isStandalone: true, selector: "gld-button", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clicked: "clicked" }, ngImport: i0, template: "<button\r\n id=\"{{ name() }}\"\r\n attr.aria-label=\"{{ name() }}\"\r\n class=\"Button Button--{{ color() }} Button--{{ size() }}\"\r\n [class.Button--disabled]=\"disabled()\"\r\n (click)=\"emitClick()\">\r\n <span>\r\n <ng-content />\r\n </span>\r\n</button>\r\n", styles: [".Button{--gld-color: initial;--gld-border-color: initial;--gld-border: var(--gld-border-size) solid var(--gld-border-color);--gld-background: initial;--gld-background--hover: initial;--gld-box-shadow-size: 2px;--gld-box-shadow-size--hover: 0;--gld-padding: var(--gld-spacing--xxs) var(--gld-spacing--xs);--gld-radius: var(--gld-radius--xxxs);--gld-font-size: var(--gld-font-size--normal);outline:none;border:var(--gld-border);padding:var(--gld-padding);border-radius:var(--gld-radius);font-family:var(--gld-font--poppins);font-size:var(--gld-font-size);font-weight:600;line-height:1.25;cursor:pointer;width:inherit;color:var(--gld-color);background:var(--gld-background);box-shadow:0 var(--gld-box-shadow-size) 0 0;display:inline-flex;align-items:center;justify-content:center;gap:var(--gld-spacing--xxxs);will-change:background,color;transition:background var(--gld-animation-time--150),box-shadow var(--gld-animation-time--150),color var(--gld-animation-time--150)}.Button:hover,.Button:focus{--gld-background: var(--gld-background--hover);--gld-box-shadow-size: var(--gld-box-shadow-size--hover)}.Button span{text-transform:capitalize;-webkit-user-select:none;user-select:none}.Button--pink{--gld-color: var(--gld-pink);--gld-border-color: var(--gld-pink);--gld-background: var(--gld-pink-transparent--010);--gld-background--hover: var(--gld-pink-transparent--020)}.Button--purple{--gld-color: var(--gld-purple);--gld-border-color: var(--gld-purple);--gld-background: var(--gld-purple-transparent--010);--gld-background--hover: var(--gld-purple-transparent--020)}.Button--mustard{--gld-color: var(--gld-mustard);--gld-border-color: var(--gld-mustard);--gld-background: var(--gld-mustard-transparent--010);--gld-background--hover: var(--gld-mustard-transparent--020)}.Button--orange{--gld-color: var(--gld-orange);--gld-border-color: var(--gld-orange);--gld-background: var(--gld-orange-transparent--010);--gld-background--hover: var(--gld-orange-transparent--020)}.Button--blue{--gld-color: var(--gld-blue);--gld-border-color: var(--gld-blue);--gld-background: var(--gld-blue-transparent--010);--gld-background--hover: var(--gld-blue-transparent--020)}.Button--red{--gld-color: var(--gld-red);--gld-border-color: var(--gld-red);--gld-background: var(--gld-red-transparent--010);--gld-background--hover: var(--gld-red-transparent--020)}.Button--green{--gld-color: var(--gld-green);--gld-border-color: var(--gld-green);--gld-background: var(--gld-green-transparent--010);--gld-background--hover: var(--gld-green-transparent--020)}.Button--tiny{--gld-font-size: var(--gld-font-size--small);--gld-padding: var(--gld-spacing--xxxs) var(--gld-spacing--xxs)}.Button--small{--gld-font-size: var(--gld-font-size--small);--gld-padding: var(--gld-spacing--xxs)}.Button--normal{--gld-font-size: var(--gld-font-size--normal);--gld-padding: var(--gld-spacing--xxs) var(--gld-spacing--xs)}.Button--medium{--gld-padding: var(--gld-spacing--xs) var(--gld-spacing--m)}.Button--large{--gld-font-size: var(--gld-font-size--heading-three);--gld-padding: var(--gld-spacing--xs) var(--gld-spacing--l)}.Button--disabled{--gld-color: var(--gld-gray-transparent--060);--gld-border-color: var(--gld-gray-transparent--060);--gld-background: var(--gld-gray-transparent--010);--gld-background--hover: var(--gld-gray-transparent--010);pointer-events:none;cursor:not-allowed}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
27
- }
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: ButtonComponent, decorators: [{
29
- type: Component,
30
- args: [{ selector: 'gld-button', imports: [], changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\r\n id=\"{{ name() }}\"\r\n attr.aria-label=\"{{ name() }}\"\r\n class=\"Button Button--{{ color() }} Button--{{ size() }}\"\r\n [class.Button--disabled]=\"disabled()\"\r\n (click)=\"emitClick()\">\r\n <span>\r\n <ng-content />\r\n </span>\r\n</button>\r\n", styles: [".Button{--gld-color: initial;--gld-border-color: initial;--gld-border: var(--gld-border-size) solid var(--gld-border-color);--gld-background: initial;--gld-background--hover: initial;--gld-box-shadow-size: 2px;--gld-box-shadow-size--hover: 0;--gld-padding: var(--gld-spacing--xxs) var(--gld-spacing--xs);--gld-radius: var(--gld-radius--xxxs);--gld-font-size: var(--gld-font-size--normal);outline:none;border:var(--gld-border);padding:var(--gld-padding);border-radius:var(--gld-radius);font-family:var(--gld-font--poppins);font-size:var(--gld-font-size);font-weight:600;line-height:1.25;cursor:pointer;width:inherit;color:var(--gld-color);background:var(--gld-background);box-shadow:0 var(--gld-box-shadow-size) 0 0;display:inline-flex;align-items:center;justify-content:center;gap:var(--gld-spacing--xxxs);will-change:background,color;transition:background var(--gld-animation-time--150),box-shadow var(--gld-animation-time--150),color var(--gld-animation-time--150)}.Button:hover,.Button:focus{--gld-background: var(--gld-background--hover);--gld-box-shadow-size: var(--gld-box-shadow-size--hover)}.Button span{text-transform:capitalize;-webkit-user-select:none;user-select:none}.Button--pink{--gld-color: var(--gld-pink);--gld-border-color: var(--gld-pink);--gld-background: var(--gld-pink-transparent--010);--gld-background--hover: var(--gld-pink-transparent--020)}.Button--purple{--gld-color: var(--gld-purple);--gld-border-color: var(--gld-purple);--gld-background: var(--gld-purple-transparent--010);--gld-background--hover: var(--gld-purple-transparent--020)}.Button--mustard{--gld-color: var(--gld-mustard);--gld-border-color: var(--gld-mustard);--gld-background: var(--gld-mustard-transparent--010);--gld-background--hover: var(--gld-mustard-transparent--020)}.Button--orange{--gld-color: var(--gld-orange);--gld-border-color: var(--gld-orange);--gld-background: var(--gld-orange-transparent--010);--gld-background--hover: var(--gld-orange-transparent--020)}.Button--blue{--gld-color: var(--gld-blue);--gld-border-color: var(--gld-blue);--gld-background: var(--gld-blue-transparent--010);--gld-background--hover: var(--gld-blue-transparent--020)}.Button--red{--gld-color: var(--gld-red);--gld-border-color: var(--gld-red);--gld-background: var(--gld-red-transparent--010);--gld-background--hover: var(--gld-red-transparent--020)}.Button--green{--gld-color: var(--gld-green);--gld-border-color: var(--gld-green);--gld-background: var(--gld-green-transparent--010);--gld-background--hover: var(--gld-green-transparent--020)}.Button--tiny{--gld-font-size: var(--gld-font-size--small);--gld-padding: var(--gld-spacing--xxxs) var(--gld-spacing--xxs)}.Button--small{--gld-font-size: var(--gld-font-size--small);--gld-padding: var(--gld-spacing--xxs)}.Button--normal{--gld-font-size: var(--gld-font-size--normal);--gld-padding: var(--gld-spacing--xxs) var(--gld-spacing--xs)}.Button--medium{--gld-padding: var(--gld-spacing--xs) var(--gld-spacing--m)}.Button--large{--gld-font-size: var(--gld-font-size--heading-three);--gld-padding: var(--gld-spacing--xs) var(--gld-spacing--l)}.Button--disabled{--gld-color: var(--gld-gray-transparent--060);--gld-border-color: var(--gld-gray-transparent--060);--gld-background: var(--gld-gray-transparent--010);--gld-background--hover: var(--gld-gray-transparent--010);pointer-events:none;cursor:not-allowed}\n"] }]
31
- }] });
32
-
33
- class InputErrorMessageDirective {
34
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: InputErrorMessageDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
35
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.1", type: InputErrorMessageDirective, isStandalone: true, selector: "[gldErrorMessage]", ngImport: i0 });
36
- }
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: InputErrorMessageDirective, decorators: [{
38
- type: Directive,
39
- args: [{
40
- selector: '[gldErrorMessage]',
41
- }]
42
- }] });
43
-
44
- // Angular Imports
45
- class InputErrorComponent {
46
- Boolean = Boolean;
47
- errors = input.required();
48
- border = input(false, { transform: booleanAttribute });
49
- content = contentChildren(InputErrorMessageDirective, {
50
- descendants: true,
51
- });
52
- hasContent = signal(false);
53
- constructor() {
54
- effect(() => this.hasContent.set(this.content()?.length ? true : false), {
55
- allowSignalWrites: true,
56
- });
57
- }
58
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: InputErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
59
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.1", type: InputErrorComponent, isStandalone: true, selector: "gld-input-error", inputs: { errors: { classPropertyName: "errors", publicName: "errors", isSignal: true, isRequired: true, transformFunction: null }, border: { classPropertyName: "border", publicName: "border", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "content", predicate: InputErrorMessageDirective, descendants: true, isSignal: true }], ngImport: i0, template: "<section class=\"error\" [class.error--with-border]=\"border()\">\r\n <span class=\"error__message\">\r\n @if (hasContent()) {\r\n <ng-content />\r\n } @else {\r\n <ng-container [ngTemplateOutlet]=\"errorsMessageDefault\" />\r\n }\r\n </span>\r\n</section>\r\n\r\n<ng-template #errorsMessageDefault>\r\n @switch (true) {\r\n @case (Boolean(this.errors()?.['required'])) {\r\n This field is required!\r\n }\r\n @case (Boolean(this.errors()?.['email'])) {\r\n {{ this.errors()?.['email'] }}\r\n }\r\n @case (Boolean(this.errors()?.['maxlength'])) {\r\n This field must have a maximum of\r\n {{ this.errors()?.['maxlength'].requiredLength }}\r\n characters!\r\n }\r\n @case (Boolean(this.errors()?.['minlength'])) {\r\n This field must have a minimum of\r\n {{ this.errors()?.['minlength'].requiredLength }}\r\n characters!\r\n }\r\n @case (Boolean(this.errors()?.['isDate'])) {\r\n {{ this.errors()?.['isDate'] }}\r\n }\r\n @case (Boolean(this.errors()?.['minimumAge'])) {\r\n This field must meet the minimum age requirement of\r\n {{ this.errors()?.['minimumAge'].requiredAge }} years\r\n }\r\n @case (Boolean(this.errors()?.['naturalNumber'])) {\r\n {{ this.errors()?.['naturalNumber'] }}\r\n }\r\n @case (Boolean(this.errors()?.['mustMatch'])) {\r\n {{ this.errors()?.['mustMatch'] }}\r\n }\r\n @case (Boolean(this.errors()?.['mustUnmatch'])) {\r\n {{ this.errors()?.['mustUnmatch'] }}\r\n }\r\n @default {\r\n empty error message\r\n }\r\n }\r\n</ng-template>\r\n", styles: [".error{--gld-color: var(--gld-red);--gld-background: var(--gld-red-transparent--010);--gld-radius: var(--gld-radius--xxxs);--gld-border-color: var(--gld-red);color:var(--gld-color);background:var(--gld-background);border-radius:0 0 var(--gld-radius) var(--gld-radius);padding:var(--gld-spacing--xxxs) var(--gld-spacing--xxs);display:flex;align-items:flex-start;gap:var(--gld-spacing--xxxs)}.error__icon{display:flex;align-items:center}.error__message{font-family:var(--gld-font--poppins);font-size:var(--gld-font-size--small);font-weight:400;line-height:1.25;text-transform:lowercase}.error__message:first-letter{text-transform:uppercase}.error--with-border{border-top:var(--gld-border-size) solid var(--gld-border-color)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
60
- }
61
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: InputErrorComponent, decorators: [{
62
- type: Component,
63
- args: [{ selector: 'gld-input-error', standalone: true, imports: [NgTemplateOutlet], changeDetection: ChangeDetectionStrategy.OnPush, template: "<section class=\"error\" [class.error--with-border]=\"border()\">\r\n <span class=\"error__message\">\r\n @if (hasContent()) {\r\n <ng-content />\r\n } @else {\r\n <ng-container [ngTemplateOutlet]=\"errorsMessageDefault\" />\r\n }\r\n </span>\r\n</section>\r\n\r\n<ng-template #errorsMessageDefault>\r\n @switch (true) {\r\n @case (Boolean(this.errors()?.['required'])) {\r\n This field is required!\r\n }\r\n @case (Boolean(this.errors()?.['email'])) {\r\n {{ this.errors()?.['email'] }}\r\n }\r\n @case (Boolean(this.errors()?.['maxlength'])) {\r\n This field must have a maximum of\r\n {{ this.errors()?.['maxlength'].requiredLength }}\r\n characters!\r\n }\r\n @case (Boolean(this.errors()?.['minlength'])) {\r\n This field must have a minimum of\r\n {{ this.errors()?.['minlength'].requiredLength }}\r\n characters!\r\n }\r\n @case (Boolean(this.errors()?.['isDate'])) {\r\n {{ this.errors()?.['isDate'] }}\r\n }\r\n @case (Boolean(this.errors()?.['minimumAge'])) {\r\n This field must meet the minimum age requirement of\r\n {{ this.errors()?.['minimumAge'].requiredAge }} years\r\n }\r\n @case (Boolean(this.errors()?.['naturalNumber'])) {\r\n {{ this.errors()?.['naturalNumber'] }}\r\n }\r\n @case (Boolean(this.errors()?.['mustMatch'])) {\r\n {{ this.errors()?.['mustMatch'] }}\r\n }\r\n @case (Boolean(this.errors()?.['mustUnmatch'])) {\r\n {{ this.errors()?.['mustUnmatch'] }}\r\n }\r\n @default {\r\n empty error message\r\n }\r\n }\r\n</ng-template>\r\n", styles: [".error{--gld-color: var(--gld-red);--gld-background: var(--gld-red-transparent--010);--gld-radius: var(--gld-radius--xxxs);--gld-border-color: var(--gld-red);color:var(--gld-color);background:var(--gld-background);border-radius:0 0 var(--gld-radius) var(--gld-radius);padding:var(--gld-spacing--xxxs) var(--gld-spacing--xxs);display:flex;align-items:flex-start;gap:var(--gld-spacing--xxxs)}.error__icon{display:flex;align-items:center}.error__message{font-family:var(--gld-font--poppins);font-size:var(--gld-font-size--small);font-weight:400;line-height:1.25;text-transform:lowercase}.error__message:first-letter{text-transform:uppercase}.error--with-border{border-top:var(--gld-border-size) solid var(--gld-border-color)}\n"] }]
64
- }], ctorParameters: () => [] });
65
-
66
9
  function formatDateToISO(outerDate) {
67
10
  const date = new Date(outerDate);
68
11
  if (!isNaN(date.getTime()))
@@ -96,6 +39,354 @@ function capitalizeFirstLetter(str) {
96
39
  return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();
97
40
  }
98
41
 
42
+ var RadioDirection;
43
+ (function (RadioDirection) {
44
+ RadioDirection["horizontal"] = "horizontal";
45
+ RadioDirection["vertical"] = "vertical";
46
+ })(RadioDirection || (RadioDirection = {}));
47
+
48
+ var SelectType;
49
+ (function (SelectType) {
50
+ SelectType["default"] = "default";
51
+ SelectType["inline"] = "inline";
52
+ })(SelectType || (SelectType = {}));
53
+
54
+ var Icons;
55
+ (function (Icons) {
56
+ Icons["arrowDownSLine"] = "arrow-down-s-line";
57
+ Icons["arrowUpSLine"] = "arrow-up-s-line";
58
+ Icons["checkboxCircleLine"] = "checkbox-circle-line";
59
+ Icons["checkboxBlankCircleLine"] = "checkbox-blank-circle-line";
60
+ Icons["loader4Fill"] = "loader-4-fill";
61
+ Icons["logoutCircleLine"] = " ri-logout-circle-line";
62
+ Icons["loginCircleLine"] = " ri-login-circle-line";
63
+ Icons["gitRepositoryLine"] = " ri-git-repository-line";
64
+ Icons["fileList3Line"] = " ri-file-list-3-line";
65
+ Icons["menuLine"] = " ri-menu-line";
66
+ })(Icons || (Icons = {}));
67
+ var IconsSize;
68
+ (function (IconsSize) {
69
+ IconsSize["tiny"] = "tiny";
70
+ IconsSize["small"] = "small";
71
+ IconsSize["normal"] = "normal";
72
+ IconsSize["medium"] = "medium";
73
+ IconsSize["large"] = "large";
74
+ })(IconsSize || (IconsSize = {}));
75
+ var IconsSpace;
76
+ (function (IconsSpace) {
77
+ IconsSpace["left"] = "left";
78
+ IconsSpace["right"] = "right";
79
+ IconsSpace["none"] = "none";
80
+ })(IconsSpace || (IconsSpace = {}));
81
+
82
+ // Shared Imports
83
+ // Regex to validate the ISO date format (YYYY-MM-DD)
84
+ const ISO_DATE_REGEX = /^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/;
85
+ function isDateValidator() {
86
+ return (control) => {
87
+ const value = formatDateFromISOToYYYYMMDD(control.value);
88
+ if (!value)
89
+ return null;
90
+ if (!ISO_DATE_REGEX.test(value))
91
+ return { isDate: 'This field must be a valid date in the format YYYY-MM-DD!' };
92
+ // Verify if the date is valid (additional logic)
93
+ const [year, month, day] = value.split('-').map(Number);
94
+ const date = new Date(year, month - 1, day);
95
+ // Verify if the date is logical and corresponds to the format
96
+ if (date.getFullYear() === year && date.getMonth() === month - 1 && date.getDate() === day)
97
+ return null;
98
+ return { isDate: 'This field must be a valid date!' };
99
+ };
100
+ }
101
+
102
+ function isDocumentValidator({ documentType }) {
103
+ return (control) => {
104
+ const value = control.value;
105
+ // Definir los patrones de acuerdo al tipo de vehículo
106
+ const patterns = {
107
+ DNI: [
108
+ {
109
+ regex: /^\d+$/,
110
+ message: 'Este campo debe contener solo números!',
111
+ },
112
+ {
113
+ regex: /^.{7,8}$/,
114
+ message: 'Este campo debe contener entre 7 y 8 dígitos!',
115
+ },
116
+ ],
117
+ CT: [
118
+ {
119
+ regex: /^\d+$/,
120
+ message: 'Este campo debe contener solo números!',
121
+ },
122
+ {
123
+ regex: /^.{11}$/,
124
+ message: 'Este campo debe contener 11 dígitos!',
125
+ },
126
+ ],
127
+ CL: [
128
+ {
129
+ regex: /^\d+$/,
130
+ message: 'Este campo debe contener solo números!',
131
+ },
132
+ {
133
+ regex: /^.{11}$/,
134
+ message: 'Este campo debe contener 11 dígitos!',
135
+ },
136
+ ],
137
+ };
138
+ const patternsToValid = patterns[documentType];
139
+ if (!value)
140
+ return null;
141
+ const pattern = patternsToValid.find((pattern) => !pattern.regex.test(value));
142
+ return pattern ? { isDocument: pattern.message } : null;
143
+ };
144
+ }
145
+
146
+ // Regex para validar emails
147
+ const EMAIL_REGEX = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
148
+ function isEmailValidator() {
149
+ return (control) => {
150
+ const value = control.value;
151
+ if (!value)
152
+ return null;
153
+ if (EMAIL_REGEX.test(value))
154
+ return null;
155
+ return { email: 'This field must be a valid email!' };
156
+ };
157
+ }
158
+
159
+ function isFormSelectItemValidator() {
160
+ return (control) => {
161
+ const value = control.value;
162
+ if (!value)
163
+ return null;
164
+ if (typeof value === 'string')
165
+ return { isFormSelectItem: 'Este campo debe ser una opción valida!' };
166
+ if (typeof value === 'object') {
167
+ if ('value' in value && 'label' in value)
168
+ return null;
169
+ }
170
+ return { isFormSelectItem: 'Este campo debe ser una opción valida!' };
171
+ };
172
+ }
173
+
174
+ function isLicensePlateValidator({ vehicleType, }) {
175
+ return (control) => {
176
+ const value = control.value;
177
+ // Definir los patrones de acuerdo al tipo de vehículo
178
+ const patterns = {
179
+ AUTO: [
180
+ /^[a-zA-Z]{3}[\d]{3}$/, // Auto viejo
181
+ /^[a-zA-Z]{2}[\d]{3}[a-zA-Z]{2}$/, // Auto nuevo
182
+ ],
183
+ MOTO: [
184
+ /^[\d]{3}[a-zA-Z]{3}$/, // Moto viejo
185
+ /^[a-zA-Z]{1}[\d]{3}[a-zA-Z]{3}$/, // Moto nuevo
186
+ ],
187
+ BOTH: [
188
+ /^[a-zA-Z]{3}[\d]{3}$/, // Auto viejo
189
+ /^[a-zA-Z]{2}[\d]{3}[a-zA-Z]{2}$/, // Auto nuevo
190
+ /^[\d]{3}[a-zA-Z]{3}$/, // Moto viejo
191
+ /^[a-zA-Z]{1}[\d]{3}[a-zA-Z]{3}$/, // Moto nuevo
192
+ ],
193
+ };
194
+ const patternsToValid = patterns[vehicleType];
195
+ if (!value)
196
+ return null;
197
+ const isValid = patternsToValid.some((pattern) => pattern.test(value));
198
+ return isValid ? null : { isLicensePlate: 'El campo debe ser una patente valida!' };
199
+ };
200
+ }
201
+
202
+ // Regex para validar números naturales (0, 1, 2, 3, ...)
203
+ const NATURAL_NUMBER_REGEX = /^[0-9]+$/;
204
+ function isNaturalNumberValidator() {
205
+ return (control) => {
206
+ const value = control.value;
207
+ if (!value)
208
+ return null;
209
+ if (NATURAL_NUMBER_REGEX.test(value))
210
+ return null;
211
+ return { naturalNumber: 'This field must contain only valid numbers!' };
212
+ };
213
+ }
214
+
215
+ // Shared Imports
216
+ function minimumAgeValidator({ minAge }) {
217
+ return (control) => {
218
+ const value = formatDateFromISOToYYYYMMDD(control.value);
219
+ if (!value)
220
+ return null;
221
+ // Verify if the date is valid (additional logic)
222
+ const [year, month, day] = value.split('-').map(Number);
223
+ const birthDay = new Date(year, month - 1, day);
224
+ // Get the current date and calculate the difference in years
225
+ const today = new Date();
226
+ today.setHours(0, 0, 0, 0);
227
+ const age = today.getFullYear() - birthDay.getFullYear();
228
+ const isMonthPast = today.getMonth() > birthDay.getMonth();
229
+ const isSameMonthDayPast = today.getMonth() === birthDay.getMonth() && today.getDate() >= birthDay.getDate();
230
+ const isValidAge = age > minAge || (age === minAge && (isMonthPast || isSameMonthDayPast));
231
+ // Retornar el error si la edad es menor al mínimo
232
+ return isValidAge ? null : { minimumAge: { requiredAge: minAge, actualAge: age } };
233
+ };
234
+ }
235
+
236
+ function mustMatchValidator({ controlName, mustMatchControlName, errorMessage, }) {
237
+ return (formGroup) => {
238
+ const firstControl = formGroup.get(controlName);
239
+ const mustMatchControl = formGroup.get(mustMatchControlName);
240
+ // Validar que ambos controles existan
241
+ if (!firstControl || !mustMatchControl)
242
+ return null;
243
+ // Verificar si los valores coinciden
244
+ if (firstControl.value && firstControl.value !== mustMatchControl.value) {
245
+ mustMatchControl.setErrors({ ...mustMatchControl.errors, mustMatch: errorMessage ?? true });
246
+ return { mustMatch: errorMessage ?? true };
247
+ }
248
+ return null; // Es válido si no hay errores
249
+ };
250
+ }
251
+
252
+ function mustUnmatchValidator({ controlName, mustUnmatchControlName, errorMessage, }) {
253
+ return (formGroup) => {
254
+ const firstControl = formGroup.get(controlName);
255
+ const mustUnmatchControl = formGroup.get(mustUnmatchControlName);
256
+ // Validar que ambos controles existan
257
+ if (!firstControl || !mustUnmatchControl)
258
+ return null;
259
+ // Verificar si los valores coinciden
260
+ if (firstControl.value && firstControl.value === mustUnmatchControl.value) {
261
+ mustUnmatchControl.setErrors({
262
+ ...mustUnmatchControl.errors,
263
+ mustUnmatch: errorMessage ?? true,
264
+ });
265
+ return { mustUnmatch: errorMessage ?? true };
266
+ }
267
+ return null; // Es válido si no hay errores
268
+ };
269
+ }
270
+
271
+ class InputErrorMessageDirective {
272
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: InputErrorMessageDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
273
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.1", type: InputErrorMessageDirective, isStandalone: true, selector: "[gldErrorMessage]", ngImport: i0 });
274
+ }
275
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: InputErrorMessageDirective, decorators: [{
276
+ type: Directive,
277
+ args: [{
278
+ selector: '[gldErrorMessage]',
279
+ }]
280
+ }] });
281
+
282
+ // Angular Imports
283
+ class IconComponent {
284
+ IconsSpace = IconsSpace;
285
+ Icons = Icons;
286
+ icon = input.required();
287
+ size = input(IconsSize.normal);
288
+ space = input(IconsSpace.none);
289
+ moveTopToBottom = input(0, { transform: numberAttribute });
290
+ moveLeftToRight = input(0, { transform: numberAttribute });
291
+ disabled = input(false, { transform: booleanAttribute });
292
+ clicked = output();
293
+ emitClick() {
294
+ if (!this.disabled())
295
+ this.clicked.emit();
296
+ }
297
+ keyup() {
298
+ this.emitClick();
299
+ }
300
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: IconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
301
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.1", type: IconComponent, isStandalone: true, selector: "gld-icon", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: true, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, space: { classPropertyName: "space", publicName: "space", isSignal: true, isRequired: false, transformFunction: null }, moveTopToBottom: { classPropertyName: "moveTopToBottom", publicName: "moveTopToBottom", isSignal: true, isRequired: false, transformFunction: null }, moveLeftToRight: { classPropertyName: "moveLeftToRight", publicName: "moveLeftToRight", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clicked: "clicked" }, ngImport: i0, template: "<span\r\n tabindex=\"-1\"\r\n (click)=\"emitClick()\"\r\n (keyup.enter)=\"keyup()\"\r\n class=\"Icon Icon--{{ size() }}\"\r\n [class.Icon--left]=\"space() === IconsSpace.left\"\r\n [class.Icon--right]=\"space() === IconsSpace.right\"\r\n [style.right.px]=\"moveLeftToRight()\"\r\n [style.top.px]=\"moveTopToBottom()\">\r\n @switch (icon()) {\r\n @case (Icons.arrowDownSLine) {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path\r\n d=\"M11.9999 13.1714L16.9497 8.22168L18.3639 9.63589L11.9999 15.9999L5.63599 9.63589L7.0502 8.22168L11.9999 13.1714Z\"></path>\r\n </svg>\r\n }\r\n @case (Icons.arrowUpSLine) {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path\r\n d=\"M11.9999 10.8284L7.0502 15.7782L5.63599 14.364L11.9999 8L18.3639 14.364L16.9497 15.7782L11.9999 10.8284Z\"></path>\r\n </svg>\r\n }\r\n @case (Icons.checkboxCircleLine) {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path\r\n d=\"M12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22ZM12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20ZM11.0026 16L6.75999 11.7574L8.17421 10.3431L11.0026 13.1716L16.6595 7.51472L18.0737 8.92893L11.0026 16Z\"></path>\r\n </svg>\r\n }\r\n @case (Icons.checkboxBlankCircleLine) {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path\r\n d=\"M12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22ZM12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20Z\"></path>\r\n </svg>\r\n }\r\n @case (Icons.loader4Fill) {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path\r\n d=\"M18.364 5.63604L16.9497 7.05025C15.683 5.7835 13.933 5 12 5C8.13401 5 5 8.13401 5 12C5 15.866 8.13401 19 12 19C15.866 19 19 15.866 19 12H21C21 16.9706 16.9706 21 12 21C7.02944 21 3 16.9706 3 12C3 7.02944 7.02944 3 12 3C14.4853 3 16.7353 4.00736 18.364 5.63604Z\"></path>\r\n </svg>\r\n }\r\n @case (Icons.logoutCircleLine) {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path\r\n d=\"M5 11H13V13H5V16L0 12L5 8V11ZM3.99927 18H6.70835C8.11862 19.2447 9.97111 20 12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4C9.97111 4 8.11862 4.75527 6.70835 6H3.99927C5.82368 3.57111 8.72836 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C8.72836 22 5.82368 20.4289 3.99927 18Z\"></path>\r\n </svg>\r\n }\r\n @case (Icons.loginCircleLine) {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path\r\n d=\"M10 11V8L15 12L10 16V13H1V11H10ZM2.4578 15H4.58152C5.76829 17.9318 8.64262 20 12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4C8.64262 4 5.76829 6.06817 4.58152 9H2.4578C3.73207 4.94289 7.52236 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C7.52236 22 3.73207 19.0571 2.4578 15Z\"></path>\r\n </svg>\r\n }\r\n @case (Icons.gitRepositoryLine) {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path\r\n d=\"M13 21V23.5L10 21.5L7 23.5V21H6.5C4.567 21 3 19.433 3 17.5V5C3 3.34315 4.34315 2 6 2H20C20.5523 2 21 2.44772 21 3V20C21 20.5523 20.5523 21 20 21H13ZM13 19H19V16H6.5C5.67157 16 5 16.6716 5 17.5C5 18.3284 5.67157 19 6.5 19H7V17H13V19ZM19 14V4H6V14.0354C6.1633 14.0121 6.33024 14 6.5 14H19ZM7 5H9V7H7V5ZM7 8H9V10H7V8ZM7 11H9V13H7V11Z\"></path>\r\n </svg>\r\n }\r\n @case (Icons.fileList3Line) {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path\r\n d=\"M19 22H5C3.34315 22 2 20.6569 2 19V3C2 2.44772 2.44772 2 3 2H17C17.5523 2 18 2.44772 18 3V15H22V19C22 20.6569 20.6569 22 19 22ZM18 17V19C18 19.5523 18.4477 20 19 20C19.5523 20 20 19.5523 20 19V17H18ZM16 20V4H4V19C4 19.5523 4.44772 20 5 20H16ZM6 7H14V9H6V7ZM6 11H14V13H6V11ZM6 15H11V17H6V15Z\"></path>\r\n </svg>\r\n }\r\n @case (Icons.menuLine) {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path d=\"M3 4H21V6H3V4ZM3 11H21V13H3V11ZM3 18H21V20H3V18Z\"></path>\r\n </svg>\r\n }\r\n }\r\n</span>\r\n", styles: [":host{color:inherit;display:inline-flex}:host:has(.Icon--left){margin-left:var(--gld-spacing--xxxs)}:host:has(.Icon--right){margin-right:var(--gld-spacing--xxxs)}.Icon{--gld-icon-size: var(--gld-icon-size--normal);position:relative;color:inherit;font-weight:400;width:var(--gld-icon-size);height:var(--gld-icon-size);margin:auto}.Icon--tiny{--gld-icon-size: var(--gld-icon-size--tiny)}.Icon--small{--gld-icon-size: var(--gld-icon-size--small)}.Icon--medium{--gld-icon-size: var(--gld-icon-size--medium)}.Icon--large{--gld-icon-size: var(--gld-icon-size--large)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
302
+ }
303
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: IconComponent, decorators: [{
304
+ type: Component,
305
+ args: [{ selector: 'gld-icon', standalone: true, imports: [], changeDetection: ChangeDetectionStrategy.OnPush, template: "<span\r\n tabindex=\"-1\"\r\n (click)=\"emitClick()\"\r\n (keyup.enter)=\"keyup()\"\r\n class=\"Icon Icon--{{ size() }}\"\r\n [class.Icon--left]=\"space() === IconsSpace.left\"\r\n [class.Icon--right]=\"space() === IconsSpace.right\"\r\n [style.right.px]=\"moveLeftToRight()\"\r\n [style.top.px]=\"moveTopToBottom()\">\r\n @switch (icon()) {\r\n @case (Icons.arrowDownSLine) {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path\r\n d=\"M11.9999 13.1714L16.9497 8.22168L18.3639 9.63589L11.9999 15.9999L5.63599 9.63589L7.0502 8.22168L11.9999 13.1714Z\"></path>\r\n </svg>\r\n }\r\n @case (Icons.arrowUpSLine) {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path\r\n d=\"M11.9999 10.8284L7.0502 15.7782L5.63599 14.364L11.9999 8L18.3639 14.364L16.9497 15.7782L11.9999 10.8284Z\"></path>\r\n </svg>\r\n }\r\n @case (Icons.checkboxCircleLine) {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path\r\n d=\"M12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22ZM12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20ZM11.0026 16L6.75999 11.7574L8.17421 10.3431L11.0026 13.1716L16.6595 7.51472L18.0737 8.92893L11.0026 16Z\"></path>\r\n </svg>\r\n }\r\n @case (Icons.checkboxBlankCircleLine) {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path\r\n d=\"M12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22ZM12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20Z\"></path>\r\n </svg>\r\n }\r\n @case (Icons.loader4Fill) {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path\r\n d=\"M18.364 5.63604L16.9497 7.05025C15.683 5.7835 13.933 5 12 5C8.13401 5 5 8.13401 5 12C5 15.866 8.13401 19 12 19C15.866 19 19 15.866 19 12H21C21 16.9706 16.9706 21 12 21C7.02944 21 3 16.9706 3 12C3 7.02944 7.02944 3 12 3C14.4853 3 16.7353 4.00736 18.364 5.63604Z\"></path>\r\n </svg>\r\n }\r\n @case (Icons.logoutCircleLine) {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path\r\n d=\"M5 11H13V13H5V16L0 12L5 8V11ZM3.99927 18H6.70835C8.11862 19.2447 9.97111 20 12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4C9.97111 4 8.11862 4.75527 6.70835 6H3.99927C5.82368 3.57111 8.72836 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C8.72836 22 5.82368 20.4289 3.99927 18Z\"></path>\r\n </svg>\r\n }\r\n @case (Icons.loginCircleLine) {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path\r\n d=\"M10 11V8L15 12L10 16V13H1V11H10ZM2.4578 15H4.58152C5.76829 17.9318 8.64262 20 12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4C8.64262 4 5.76829 6.06817 4.58152 9H2.4578C3.73207 4.94289 7.52236 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C7.52236 22 3.73207 19.0571 2.4578 15Z\"></path>\r\n </svg>\r\n }\r\n @case (Icons.gitRepositoryLine) {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path\r\n d=\"M13 21V23.5L10 21.5L7 23.5V21H6.5C4.567 21 3 19.433 3 17.5V5C3 3.34315 4.34315 2 6 2H20C20.5523 2 21 2.44772 21 3V20C21 20.5523 20.5523 21 20 21H13ZM13 19H19V16H6.5C5.67157 16 5 16.6716 5 17.5C5 18.3284 5.67157 19 6.5 19H7V17H13V19ZM19 14V4H6V14.0354C6.1633 14.0121 6.33024 14 6.5 14H19ZM7 5H9V7H7V5ZM7 8H9V10H7V8ZM7 11H9V13H7V11Z\"></path>\r\n </svg>\r\n }\r\n @case (Icons.fileList3Line) {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path\r\n d=\"M19 22H5C3.34315 22 2 20.6569 2 19V3C2 2.44772 2.44772 2 3 2H17C17.5523 2 18 2.44772 18 3V15H22V19C22 20.6569 20.6569 22 19 22ZM18 17V19C18 19.5523 18.4477 20 19 20C19.5523 20 20 19.5523 20 19V17H18ZM16 20V4H4V19C4 19.5523 4.44772 20 5 20H16ZM6 7H14V9H6V7ZM6 11H14V13H6V11ZM6 15H11V17H6V15Z\"></path>\r\n </svg>\r\n }\r\n @case (Icons.menuLine) {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path d=\"M3 4H21V6H3V4ZM3 11H21V13H3V11ZM3 18H21V20H3V18Z\"></path>\r\n </svg>\r\n }\r\n }\r\n</span>\r\n", styles: [":host{color:inherit;display:inline-flex}:host:has(.Icon--left){margin-left:var(--gld-spacing--xxxs)}:host:has(.Icon--right){margin-right:var(--gld-spacing--xxxs)}.Icon{--gld-icon-size: var(--gld-icon-size--normal);position:relative;color:inherit;font-weight:400;width:var(--gld-icon-size);height:var(--gld-icon-size);margin:auto}.Icon--tiny{--gld-icon-size: var(--gld-icon-size--tiny)}.Icon--small{--gld-icon-size: var(--gld-icon-size--small)}.Icon--medium{--gld-icon-size: var(--gld-icon-size--medium)}.Icon--large{--gld-icon-size: var(--gld-icon-size--large)}\n"] }]
306
+ }] });
307
+
308
+ // Angular Imports
309
+ class ImageComponent {
310
+ src = input.required();
311
+ alt = input.required();
312
+ priority = input(false, { transform: booleanAttribute });
313
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: ImageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
314
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.1", type: ImageComponent, isStandalone: true, selector: "gld-image", inputs: { src: { classPropertyName: "src", publicName: "src", isSignal: true, isRequired: true, transformFunction: null }, alt: { classPropertyName: "alt", publicName: "alt", isSignal: true, isRequired: true, transformFunction: null }, priority: { classPropertyName: "priority", publicName: "priority", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (priority()) {\r\n\t<img priority=\"true\" [ngSrc]=\"src()\" [alt]=\"alt()\" [fill]=\"true\" />\r\n} @else {\r\n\t<img loading=\"lazy\" [ngSrc]=\"src()\" [alt]=\"alt()\" [fill]=\"true\" />\r\n}\r\n", styles: [":host{position:relative;aspect-ratio:1;overflow:hidden;display:inline-block;width:inherit;height:inherit}img{width:inherit;height:inherit;max-width:100%;max-height:100%;display:inherit;aspect-ratio:inherit;z-index:inherit;object-fit:inherit;border-radius:inherit;border:inherit;background-color:inherit;-webkit-user-select:none;user-select:none;pointer-events:none}\n"], dependencies: [{ kind: "directive", type: NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "placeholder", "placeholderConfig", "src", "srcset"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
315
+ }
316
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: ImageComponent, decorators: [{
317
+ type: Component,
318
+ args: [{ selector: 'gld-image', standalone: true, imports: [NgOptimizedImage], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (priority()) {\r\n\t<img priority=\"true\" [ngSrc]=\"src()\" [alt]=\"alt()\" [fill]=\"true\" />\r\n} @else {\r\n\t<img loading=\"lazy\" [ngSrc]=\"src()\" [alt]=\"alt()\" [fill]=\"true\" />\r\n}\r\n", styles: [":host{position:relative;aspect-ratio:1;overflow:hidden;display:inline-block;width:inherit;height:inherit}img{width:inherit;height:inherit;max-width:100%;max-height:100%;display:inherit;aspect-ratio:inherit;z-index:inherit;object-fit:inherit;border-radius:inherit;border:inherit;background-color:inherit;-webkit-user-select:none;user-select:none;pointer-events:none}\n"] }]
319
+ }] });
320
+
321
+ // Angular Imports
322
+ class ButtonComponent {
323
+ name = input.required();
324
+ color = input('pink');
325
+ size = input('normal');
326
+ disabled = input(false, { transform: booleanAttribute });
327
+ clicked = output();
328
+ emitClick() {
329
+ if (!this.disabled())
330
+ this.clicked.emit();
331
+ }
332
+ keyup() {
333
+ this.emitClick();
334
+ }
335
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: ButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
336
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.1", type: ButtonComponent, isStandalone: true, selector: "gld-button", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clicked: "clicked" }, ngImport: i0, template: "<button\r\n id=\"{{ name() }}\"\r\n attr.aria-label=\"{{ name() }}\"\r\n class=\"Button Button--{{ color() }} Button--{{ size() }}\"\r\n [class.Button--disabled]=\"disabled()\"\r\n (click)=\"emitClick()\"\r\n (keyup.enter)=\"keyup()\">\r\n <span>\r\n <ng-content />\r\n </span>\r\n</button>\r\n", styles: [".Button{--gld-color: inherit;--gld-border-color: inherit;--gld-border: var(--gld-border-size) solid var(--gld-border-color);--gld-background: transparent;--gld-background--hover: transparent;--gld-box-shadow-size: 2px;--gld-box-shadow-size--hover: 0;--gld-padding: var(--gld-spacing--xxs) var(--gld-spacing--xs);--gld-radius: var(--gld-radius--xxxs);--gld-font-size: var(--gld-font-size--normal);outline:none;border:var(--gld-border);padding:var(--gld-padding);border-radius:var(--gld-radius);font-family:var(--gld-font--poppins);font-size:var(--gld-font-size);font-weight:600;line-height:1.25;cursor:pointer;width:inherit;color:var(--gld-color);background:var(--gld-background);box-shadow:0 var(--gld-box-shadow-size) 0 0;display:inline-flex;align-items:center;justify-content:center;gap:var(--gld-spacing--xxxs);will-change:background,color;transition:background var(--gld-animation-time--150),box-shadow var(--gld-animation-time--150),color var(--gld-animation-time--150)}.Button:hover,.Button:focus{--gld-background: var(--gld-background--hover);--gld-box-shadow-size: var(--gld-box-shadow-size--hover)}.Button span{text-transform:capitalize;-webkit-user-select:none;user-select:none}.Button--pink{--gld-color: var(--gld-pink);--gld-border-color: var(--gld-pink);--gld-background: var(--gld-pink-transparent--010);--gld-background--hover: var(--gld-pink-transparent--020)}.Button--purple{--gld-color: var(--gld-purple);--gld-border-color: var(--gld-purple);--gld-background: var(--gld-purple-transparent--010);--gld-background--hover: var(--gld-purple-transparent--020)}.Button--mustard{--gld-color: var(--gld-mustard);--gld-border-color: var(--gld-mustard);--gld-background: var(--gld-mustard-transparent--010);--gld-background--hover: var(--gld-mustard-transparent--020)}.Button--orange{--gld-color: var(--gld-orange);--gld-border-color: var(--gld-orange);--gld-background: var(--gld-orange-transparent--010);--gld-background--hover: var(--gld-orange-transparent--020)}.Button--blue{--gld-color: var(--gld-blue);--gld-border-color: var(--gld-blue);--gld-background: var(--gld-blue-transparent--010);--gld-background--hover: var(--gld-blue-transparent--020)}.Button--red{--gld-color: var(--gld-red);--gld-border-color: var(--gld-red);--gld-background: var(--gld-red-transparent--010);--gld-background--hover: var(--gld-red-transparent--020)}.Button--green{--gld-color: var(--gld-green);--gld-border-color: var(--gld-green);--gld-background: var(--gld-green-transparent--010);--gld-background--hover: var(--gld-green-transparent--020)}.Button--tiny{--gld-font-size: var(--gld-font-size--small);--gld-padding: var(--gld-spacing--xxxs) var(--gld-spacing--xxs)}.Button--small{--gld-font-size: var(--gld-font-size--small);--gld-padding: var(--gld-spacing--xxs)}.Button--normal{--gld-font-size: var(--gld-font-size--normal);--gld-padding: var(--gld-spacing--xxs) var(--gld-spacing--xs)}.Button--medium{--gld-padding: var(--gld-spacing--xs) var(--gld-spacing--m)}.Button--large{--gld-font-size: var(--gld-font-size--heading-three);--gld-padding: var(--gld-spacing--xs) var(--gld-spacing--l)}.Button--disabled{--gld-color: var(--gld-gray-transparent--060);--gld-border-color: var(--gld-gray-transparent--060);--gld-background: var(--gld-gray-transparent--010);--gld-background--hover: var(--gld-gray-transparent--010);pointer-events:none;cursor:not-allowed}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
337
+ }
338
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: ButtonComponent, decorators: [{
339
+ type: Component,
340
+ args: [{ selector: 'gld-button', imports: [], changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\r\n id=\"{{ name() }}\"\r\n attr.aria-label=\"{{ name() }}\"\r\n class=\"Button Button--{{ color() }} Button--{{ size() }}\"\r\n [class.Button--disabled]=\"disabled()\"\r\n (click)=\"emitClick()\"\r\n (keyup.enter)=\"keyup()\">\r\n <span>\r\n <ng-content />\r\n </span>\r\n</button>\r\n", styles: [".Button{--gld-color: inherit;--gld-border-color: inherit;--gld-border: var(--gld-border-size) solid var(--gld-border-color);--gld-background: transparent;--gld-background--hover: transparent;--gld-box-shadow-size: 2px;--gld-box-shadow-size--hover: 0;--gld-padding: var(--gld-spacing--xxs) var(--gld-spacing--xs);--gld-radius: var(--gld-radius--xxxs);--gld-font-size: var(--gld-font-size--normal);outline:none;border:var(--gld-border);padding:var(--gld-padding);border-radius:var(--gld-radius);font-family:var(--gld-font--poppins);font-size:var(--gld-font-size);font-weight:600;line-height:1.25;cursor:pointer;width:inherit;color:var(--gld-color);background:var(--gld-background);box-shadow:0 var(--gld-box-shadow-size) 0 0;display:inline-flex;align-items:center;justify-content:center;gap:var(--gld-spacing--xxxs);will-change:background,color;transition:background var(--gld-animation-time--150),box-shadow var(--gld-animation-time--150),color var(--gld-animation-time--150)}.Button:hover,.Button:focus{--gld-background: var(--gld-background--hover);--gld-box-shadow-size: var(--gld-box-shadow-size--hover)}.Button span{text-transform:capitalize;-webkit-user-select:none;user-select:none}.Button--pink{--gld-color: var(--gld-pink);--gld-border-color: var(--gld-pink);--gld-background: var(--gld-pink-transparent--010);--gld-background--hover: var(--gld-pink-transparent--020)}.Button--purple{--gld-color: var(--gld-purple);--gld-border-color: var(--gld-purple);--gld-background: var(--gld-purple-transparent--010);--gld-background--hover: var(--gld-purple-transparent--020)}.Button--mustard{--gld-color: var(--gld-mustard);--gld-border-color: var(--gld-mustard);--gld-background: var(--gld-mustard-transparent--010);--gld-background--hover: var(--gld-mustard-transparent--020)}.Button--orange{--gld-color: var(--gld-orange);--gld-border-color: var(--gld-orange);--gld-background: var(--gld-orange-transparent--010);--gld-background--hover: var(--gld-orange-transparent--020)}.Button--blue{--gld-color: var(--gld-blue);--gld-border-color: var(--gld-blue);--gld-background: var(--gld-blue-transparent--010);--gld-background--hover: var(--gld-blue-transparent--020)}.Button--red{--gld-color: var(--gld-red);--gld-border-color: var(--gld-red);--gld-background: var(--gld-red-transparent--010);--gld-background--hover: var(--gld-red-transparent--020)}.Button--green{--gld-color: var(--gld-green);--gld-border-color: var(--gld-green);--gld-background: var(--gld-green-transparent--010);--gld-background--hover: var(--gld-green-transparent--020)}.Button--tiny{--gld-font-size: var(--gld-font-size--small);--gld-padding: var(--gld-spacing--xxxs) var(--gld-spacing--xxs)}.Button--small{--gld-font-size: var(--gld-font-size--small);--gld-padding: var(--gld-spacing--xxs)}.Button--normal{--gld-font-size: var(--gld-font-size--normal);--gld-padding: var(--gld-spacing--xxs) var(--gld-spacing--xs)}.Button--medium{--gld-padding: var(--gld-spacing--xs) var(--gld-spacing--m)}.Button--large{--gld-font-size: var(--gld-font-size--heading-three);--gld-padding: var(--gld-spacing--xs) var(--gld-spacing--l)}.Button--disabled{--gld-color: var(--gld-gray-transparent--060);--gld-border-color: var(--gld-gray-transparent--060);--gld-background: var(--gld-gray-transparent--010);--gld-background--hover: var(--gld-gray-transparent--010);pointer-events:none;cursor:not-allowed}\n"] }]
341
+ }] });
342
+
343
+ // Angular Imports
344
+ class IconButtonComponent {
345
+ icon = input.required();
346
+ name = input.required();
347
+ size = input(IconsSize.normal);
348
+ space = input(IconsSpace.none);
349
+ moveTopToBottom = input(0, { transform: numberAttribute });
350
+ moveLeftToRight = input(0, { transform: numberAttribute });
351
+ background = input(false, { transform: booleanAttribute });
352
+ disabled = input(false, { transform: booleanAttribute });
353
+ color = input('pink');
354
+ clicked = output();
355
+ emitClick() {
356
+ if (!this.disabled())
357
+ this.clicked.emit();
358
+ }
359
+ keyup() {
360
+ this.emitClick();
361
+ }
362
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: IconButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
363
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.1", type: IconButtonComponent, isStandalone: true, selector: "gld-icon-button", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: true, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, space: { classPropertyName: "space", publicName: "space", isSignal: true, isRequired: false, transformFunction: null }, moveTopToBottom: { classPropertyName: "moveTopToBottom", publicName: "moveTopToBottom", isSignal: true, isRequired: false, transformFunction: null }, moveLeftToRight: { classPropertyName: "moveLeftToRight", publicName: "moveLeftToRight", isSignal: true, isRequired: false, transformFunction: null }, background: { classPropertyName: "background", publicName: "background", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clicked: "clicked" }, ngImport: i0, template: "<button\r\n id=\"{{ name() }}\"\r\n attr.aria-label=\"{{ name() }}\"\r\n class=\"Button Button--{{ color() }}\"\r\n [class.Button--disabled]=\"disabled()\"\r\n [class.Button--background]=\"background()\"\r\n (click)=\"emitClick()\"\r\n (keyup.enter)=\"keyup()\">\r\n <gld-icon\r\n [icon]=\"icon()\"\r\n [size]=\"size()\"\r\n [space]=\"space()\"\r\n [moveTopToBottom]=\"moveTopToBottom()\"\r\n [moveLeftToRight]=\"moveLeftToRight()\"\r\n [disabled]=\"disabled()\" />\r\n</button>\r\n", styles: [".Button{--gld-color: inherit;--gld-background: transparent;--gld-background--hover: transparent;--gld-radius: var(--gld-radius--xxxs);--gld-font-size: var(--gld-font-size--normal);outline:none;border:none;padding:var(--gld-spacing--xxxs);border-radius:var(--gld-radius);font-family:var(--gld-font--poppins);font-size:var(--gld-font-size);font-weight:600;line-height:1.25;cursor:pointer;width:inherit;color:var(--gld-color);background:var(--gld-background);display:inline-flex;align-items:center;justify-content:center;gap:var(--gld-spacing--xxxs);-webkit-user-select:none;user-select:none;will-change:background,color;transition:background var(--gld-animation-time--150),color var(--gld-animation-time--150)}.Button:hover,.Button:focus{background:var(--gld-background--hover)}.Button--pink{--gld-color: var(--gld-pink)}.Button--pink.Button--background{--gld-background: var(--gld-pink-transparent--010);--gld-background--hover: var(--gld-pink-transparent--020)}.Button--purple{--gld-color: var(--gld-purple)}.Button--purple.Button--background{--gld-background: var(--gld-purple-transparent--010);--gld-background--hover: var(--gld-purple-transparent--020)}.Button--mustard{--gld-color: var(--gld-mustard)}.Button--mustard.Button--background{--gld-background: var(--gld-mustard-transparent--010);--gld-background--hover: var(--gld-mustard-transparent--020)}.Button--orange{--gld-color: var(--gld-orange)}.Button--orange.Button--background{--gld-background: var(--gld-orange-transparent--010);--gld-background--hover: var(--gld-orange-transparent--020)}.Button--blue{--gld-color: var(--gld-blue)}.Button--blue.Button--background{--gld-background: var(--gld-blue-transparent--010);--gld-background--hover: var(--gld-blue-transparent--020)}.Button--red{--gld-color: var(--gld-red)}.Button--red.Button--background{--gld-background: var(--gld-red-transparent--010);--gld-background--hover: var(--gld-red-transparent--020)}.Button--green{--gld-color: var(--gld-green)}.Button--green.Button--background{--gld-background: var(--gld-green-transparent--010);--gld-background--hover: var(--gld-green-transparent--020)}.Button--disabled{--gld-color: var(--gld-gray-transparent--060);pointer-events:none;cursor:not-allowed}.Button--disabled.Button--background{--gld-background: var(--gld-gray-transparent--010);--gld-background--hover: var(--gld-gray-transparent--020)}\n"], dependencies: [{ kind: "component", type: IconComponent, selector: "gld-icon", inputs: ["icon", "size", "space", "moveTopToBottom", "moveLeftToRight", "disabled"], outputs: ["clicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
364
+ }
365
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: IconButtonComponent, decorators: [{
366
+ type: Component,
367
+ args: [{ selector: 'gld-icon-button', imports: [IconComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\r\n id=\"{{ name() }}\"\r\n attr.aria-label=\"{{ name() }}\"\r\n class=\"Button Button--{{ color() }}\"\r\n [class.Button--disabled]=\"disabled()\"\r\n [class.Button--background]=\"background()\"\r\n (click)=\"emitClick()\"\r\n (keyup.enter)=\"keyup()\">\r\n <gld-icon\r\n [icon]=\"icon()\"\r\n [size]=\"size()\"\r\n [space]=\"space()\"\r\n [moveTopToBottom]=\"moveTopToBottom()\"\r\n [moveLeftToRight]=\"moveLeftToRight()\"\r\n [disabled]=\"disabled()\" />\r\n</button>\r\n", styles: [".Button{--gld-color: inherit;--gld-background: transparent;--gld-background--hover: transparent;--gld-radius: var(--gld-radius--xxxs);--gld-font-size: var(--gld-font-size--normal);outline:none;border:none;padding:var(--gld-spacing--xxxs);border-radius:var(--gld-radius);font-family:var(--gld-font--poppins);font-size:var(--gld-font-size);font-weight:600;line-height:1.25;cursor:pointer;width:inherit;color:var(--gld-color);background:var(--gld-background);display:inline-flex;align-items:center;justify-content:center;gap:var(--gld-spacing--xxxs);-webkit-user-select:none;user-select:none;will-change:background,color;transition:background var(--gld-animation-time--150),color var(--gld-animation-time--150)}.Button:hover,.Button:focus{background:var(--gld-background--hover)}.Button--pink{--gld-color: var(--gld-pink)}.Button--pink.Button--background{--gld-background: var(--gld-pink-transparent--010);--gld-background--hover: var(--gld-pink-transparent--020)}.Button--purple{--gld-color: var(--gld-purple)}.Button--purple.Button--background{--gld-background: var(--gld-purple-transparent--010);--gld-background--hover: var(--gld-purple-transparent--020)}.Button--mustard{--gld-color: var(--gld-mustard)}.Button--mustard.Button--background{--gld-background: var(--gld-mustard-transparent--010);--gld-background--hover: var(--gld-mustard-transparent--020)}.Button--orange{--gld-color: var(--gld-orange)}.Button--orange.Button--background{--gld-background: var(--gld-orange-transparent--010);--gld-background--hover: var(--gld-orange-transparent--020)}.Button--blue{--gld-color: var(--gld-blue)}.Button--blue.Button--background{--gld-background: var(--gld-blue-transparent--010);--gld-background--hover: var(--gld-blue-transparent--020)}.Button--red{--gld-color: var(--gld-red)}.Button--red.Button--background{--gld-background: var(--gld-red-transparent--010);--gld-background--hover: var(--gld-red-transparent--020)}.Button--green{--gld-color: var(--gld-green)}.Button--green.Button--background{--gld-background: var(--gld-green-transparent--010);--gld-background--hover: var(--gld-green-transparent--020)}.Button--disabled{--gld-color: var(--gld-gray-transparent--060);pointer-events:none;cursor:not-allowed}.Button--disabled.Button--background{--gld-background: var(--gld-gray-transparent--010);--gld-background--hover: var(--gld-gray-transparent--020)}\n"] }]
368
+ }] });
369
+
370
+ // Angular Imports
371
+ class InputErrorComponent {
372
+ Boolean = Boolean;
373
+ errors = input.required();
374
+ border = input(false, { transform: booleanAttribute });
375
+ content = contentChildren(InputErrorMessageDirective, {
376
+ descendants: true,
377
+ });
378
+ hasContent = signal(false);
379
+ constructor() {
380
+ effect(() => this.hasContent.set(this.content()?.length ? true : false));
381
+ }
382
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: InputErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
383
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.1", type: InputErrorComponent, isStandalone: true, selector: "gld-input-error", inputs: { errors: { classPropertyName: "errors", publicName: "errors", isSignal: true, isRequired: true, transformFunction: null }, border: { classPropertyName: "border", publicName: "border", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "content", predicate: InputErrorMessageDirective, descendants: true, isSignal: true }], ngImport: i0, template: "<section class=\"error\" [class.error--with-border]=\"border()\">\r\n <span class=\"error__message\">\r\n @if (hasContent()) {\r\n <ng-content />\r\n } @else {\r\n <ng-container [ngTemplateOutlet]=\"errorsMessageDefault\" />\r\n }\r\n </span>\r\n</section>\r\n\r\n<ng-template #errorsMessageDefault>\r\n @switch (true) {\r\n @case (Boolean(this.errors()?.['required'])) {\r\n This field is required!\r\n }\r\n @case (Boolean(this.errors()?.['email'])) {\r\n {{ this.errors()?.['email'] }}\r\n }\r\n @case (Boolean(this.errors()?.['maxlength'])) {\r\n This field must have a maximum of\r\n {{ this.errors()?.['maxlength'].requiredLength }}\r\n characters!\r\n }\r\n @case (Boolean(this.errors()?.['minlength'])) {\r\n This field must have a minimum of\r\n {{ this.errors()?.['minlength'].requiredLength }}\r\n characters!\r\n }\r\n @case (Boolean(this.errors()?.['isDate'])) {\r\n {{ this.errors()?.['isDate'] }}\r\n }\r\n @case (Boolean(this.errors()?.['minimumAge'])) {\r\n This field must meet the minimum age requirement of\r\n {{ this.errors()?.['minimumAge'].requiredAge }} years\r\n }\r\n @case (Boolean(this.errors()?.['naturalNumber'])) {\r\n {{ this.errors()?.['naturalNumber'] }}\r\n }\r\n @case (Boolean(this.errors()?.['mustMatch'])) {\r\n {{ this.errors()?.['mustMatch'] }}\r\n }\r\n @case (Boolean(this.errors()?.['mustUnmatch'])) {\r\n {{ this.errors()?.['mustUnmatch'] }}\r\n }\r\n @default {\r\n empty error message\r\n }\r\n }\r\n</ng-template>\r\n", styles: [".error{--gld-color: var(--gld-red);--gld-background: var(--gld-red-transparent--010);--gld-radius: var(--gld-radius--xxxs);--gld-border-color: var(--gld-red);color:var(--gld-color);background:var(--gld-background);border-radius:0 0 var(--gld-radius) var(--gld-radius);padding:var(--gld-spacing--xxxs) var(--gld-spacing--xxs);display:flex;align-items:flex-start;gap:var(--gld-spacing--xxxs)}.error__icon{display:flex;align-items:center}.error__message{font-family:var(--gld-font--poppins);font-size:var(--gld-font-size--small);font-weight:400;line-height:1.25;text-transform:lowercase}.error__message:first-letter{text-transform:uppercase}.error--with-border{border-top:var(--gld-border-size) solid var(--gld-border-color)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
384
+ }
385
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: InputErrorComponent, decorators: [{
386
+ type: Component,
387
+ args: [{ selector: 'gld-input-error', standalone: true, imports: [NgTemplateOutlet], changeDetection: ChangeDetectionStrategy.OnPush, template: "<section class=\"error\" [class.error--with-border]=\"border()\">\r\n <span class=\"error__message\">\r\n @if (hasContent()) {\r\n <ng-content />\r\n } @else {\r\n <ng-container [ngTemplateOutlet]=\"errorsMessageDefault\" />\r\n }\r\n </span>\r\n</section>\r\n\r\n<ng-template #errorsMessageDefault>\r\n @switch (true) {\r\n @case (Boolean(this.errors()?.['required'])) {\r\n This field is required!\r\n }\r\n @case (Boolean(this.errors()?.['email'])) {\r\n {{ this.errors()?.['email'] }}\r\n }\r\n @case (Boolean(this.errors()?.['maxlength'])) {\r\n This field must have a maximum of\r\n {{ this.errors()?.['maxlength'].requiredLength }}\r\n characters!\r\n }\r\n @case (Boolean(this.errors()?.['minlength'])) {\r\n This field must have a minimum of\r\n {{ this.errors()?.['minlength'].requiredLength }}\r\n characters!\r\n }\r\n @case (Boolean(this.errors()?.['isDate'])) {\r\n {{ this.errors()?.['isDate'] }}\r\n }\r\n @case (Boolean(this.errors()?.['minimumAge'])) {\r\n This field must meet the minimum age requirement of\r\n {{ this.errors()?.['minimumAge'].requiredAge }} years\r\n }\r\n @case (Boolean(this.errors()?.['naturalNumber'])) {\r\n {{ this.errors()?.['naturalNumber'] }}\r\n }\r\n @case (Boolean(this.errors()?.['mustMatch'])) {\r\n {{ this.errors()?.['mustMatch'] }}\r\n }\r\n @case (Boolean(this.errors()?.['mustUnmatch'])) {\r\n {{ this.errors()?.['mustUnmatch'] }}\r\n }\r\n @default {\r\n empty error message\r\n }\r\n }\r\n</ng-template>\r\n", styles: [".error{--gld-color: var(--gld-red);--gld-background: var(--gld-red-transparent--010);--gld-radius: var(--gld-radius--xxxs);--gld-border-color: var(--gld-red);color:var(--gld-color);background:var(--gld-background);border-radius:0 0 var(--gld-radius) var(--gld-radius);padding:var(--gld-spacing--xxxs) var(--gld-spacing--xxs);display:flex;align-items:flex-start;gap:var(--gld-spacing--xxxs)}.error__icon{display:flex;align-items:center}.error__message{font-family:var(--gld-font--poppins);font-size:var(--gld-font-size--small);font-weight:400;line-height:1.25;text-transform:lowercase}.error__message:first-letter{text-transform:uppercase}.error--with-border{border-top:var(--gld-border-size) solid var(--gld-border-color)}\n"] }]
388
+ }], ctorParameters: () => [] });
389
+
99
390
  // Angular Imports
100
391
  const components$4 = [InputErrorComponent];
101
392
  class InputDateComponent {
@@ -273,35 +564,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.1", ngImpor
273
564
  args: [{ selector: 'gld-radio-button', standalone: true, imports: [], changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\r\n\t[tabindex]=\"disabled() ? '-1' : '0'\"\r\n\t(keyup.enter)=\"keyup(value())\"\r\n\t(click)=\"select(value())\"\r\n\tclass=\"radio\"\r\n\t[class.radio--selected]=\"selected()\"\r\n\t[class.radio--disabled]=\"disabled()\"\r\n\t[class.radio--error]=\"error()\"\r\n\t(focus)=\"onFocus()\"\r\n\t(blur)=\"onBlur()\"\r\n\t(keyup.escape)=\"onBlur()\">\r\n\t<span class=\"radio__icon\" [class.radio__icon--selected]=\"selected()\"></span>\r\n\r\n\t<span class=\"radio__label\">\r\n\t\t<ng-content>empty radio button</ng-content>\r\n\t</span>\r\n</button>\r\n", styles: [":host{display:inline-flex;color:inherit;width:inherit;height:inherit}.radio{--gld-height: 26px;--gld-color: var(--gld-darkblue);--gld-color--disabled: var(--gld-gray-transparent--060);--gld-dot-color: var(--gld-blue);--gld-dot-color--outer: var(--gld-gray-transparent--060);--gld-dot-color--outer-hover: var(--gld-blue);--gld-dot-color--outer-selected: var(--gld-blue);--gld-dot-color--outer-error: var(--gld-red);display:inline-flex;justify-content:center;align-items:center;border:none;background:none;gap:var(--gld-spacing--xxs);font-family:var(--gld-font--poppins);font-size:var(--gld-font-size--normal);font-weight:400;line-height:1.25;color:var(--gld-color);height:var(--gld-height);padding:var(--gld-spacing--xxxs);cursor:pointer;-webkit-user-select:none;user-select:none}.radio:hover .radio__icon,.radio:focus .radio__icon{--gld-dot-color--outer: var(--gld-dot-color--outer-hover)}.radio:focus{outline:none}.radio__icon{--gld-size: 20px;width:var(--gld-size);height:var(--gld-size);border-radius:50%;border:var(--gld-border-size) solid var(--gld-dot-color--outer);position:relative;display:flex;justify-content:center;align-items:center}.radio__icon--selected:before{content:\"\";position:absolute;width:calc(var(--gld-size) / 2);height:calc(var(--gld-size) / 2);background:var(--gld-dot-color);border-radius:inherit}.radio__label:first-letter{text-transform:uppercase}.radio--selected{--gld-dot-color--outer: var(--gld-dot-color--outer-selected)}.radio--disabled{--gld-color: var(--gld-color--disabled);--gld-dot-color--outer: var(--gld-color--disabled);pointer-events:none}.radio--error .radio__icon{--gld-dot-color--outer: var(--gld-dot-color--outer-error)}\n"] }]
274
565
  }] });
275
566
 
276
- var Icons;
277
- (function (Icons) {
278
- Icons["arrowDownSLine"] = "arrow-down-s-line";
279
- Icons["arrowUpSLine"] = "arrow-up-s-line";
280
- Icons["checkboxCircleLine"] = "checkbox-circle-line";
281
- Icons["checkboxBlankCircleLine"] = "checkbox-blank-circle-line";
282
- Icons["loader4Fill"] = "loader-4-fill";
283
- })(Icons || (Icons = {}));
284
- var IconsSize;
285
- (function (IconsSize) {
286
- IconsSize["tiny"] = "tiny";
287
- IconsSize["small"] = "small";
288
- IconsSize["normal"] = "normal";
289
- IconsSize["medium"] = "medium";
290
- IconsSize["large"] = "large";
291
- })(IconsSize || (IconsSize = {}));
292
-
293
- var SelectType;
294
- (function (SelectType) {
295
- SelectType["default"] = "default";
296
- SelectType["inline"] = "inline";
297
- })(SelectType || (SelectType = {}));
298
-
299
- var RadioDirection;
300
- (function (RadioDirection) {
301
- RadioDirection["horizontal"] = "horizontal";
302
- RadioDirection["vertical"] = "vertical";
303
- })(RadioDirection || (RadioDirection = {}));
304
-
305
567
  // Angular Imports
306
568
  const components$2 = [InputErrorComponent];
307
569
  class RadioGroupComponent {
@@ -422,38 +684,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.1", ngImpor
422
684
  args: [{ selector: 'gld-select-option', standalone: true, imports: [], changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\r\n [tabindex]=\"disabled() ? '-1' : '0'\"\r\n (keyup.enter)=\"keyup()\"\r\n (click)=\"select()\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\"\r\n (keyup.escape)=\"onBlur()\">\r\n <span><ng-content> an option </ng-content></span>\r\n</button>\r\n", styles: [":host{height:var(--gld-height)}button{--gld-background: transparent;--gld-background--hover: var(--gld-blue-transparent--010);--gld-color: var(--gld-darkblue);--gld-color--hover: var(--gld-blue);padding:var(--gld-spacing--xs) var(--gld-spacing--s);width:100%;height:100%;max-width:100%;background:var(--gld-background);color:var(--gld-color);font-family:var(--gld-font--poppins);font-size:var(--gld-font-size--normal);font-weight:400;line-height:1.25;display:flex;align-items:center;-webkit-user-select:none;user-select:none;outline:none;border:none;cursor:pointer}button:hover,button:focus{--gld-background: var(--gld-background--hover);--gld-color: var(--gld-color--hover)}button span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}\n"] }]
423
685
  }] });
424
686
 
425
- // Angular Imports
426
- class IconComponent {
427
- IconsSpace = IconsSpace;
428
- Icons = Icons;
429
- icon = input(Icons.arrowDownSLine);
430
- size = input(IconsSize.normal);
431
- space = input(IconsSpace.none);
432
- moveTopToBottom = input(0, { transform: numberAttribute });
433
- moveLeftToRight = input(0, { transform: numberAttribute });
434
- disabled = input(false, { transform: booleanAttribute });
435
- clicked = output();
436
- emitClick() {
437
- if (!this.disabled())
438
- this.clicked.emit();
439
- }
440
- keyup() {
441
- this.emitClick();
442
- }
443
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: IconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
444
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.1", type: IconComponent, isStandalone: true, selector: "gld-icon", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, space: { classPropertyName: "space", publicName: "space", isSignal: true, isRequired: false, transformFunction: null }, moveTopToBottom: { classPropertyName: "moveTopToBottom", publicName: "moveTopToBottom", isSignal: true, isRequired: false, transformFunction: null }, moveLeftToRight: { classPropertyName: "moveLeftToRight", publicName: "moveLeftToRight", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clicked: "clicked" }, ngImport: i0, template: "<span\r\n tabindex=\"-1\"\r\n (click)=\"emitClick()\"\r\n (keyup.enter)=\"keyup()\"\r\n class=\"Icon Icon--{{ size() }}\"\r\n [class.Icon--left]=\"space() === IconsSpace.left\"\r\n [class.Icon--right]=\"space() === IconsSpace.right\"\r\n [style.right.px]=\"moveLeftToRight()\"\r\n [style.top.px]=\"moveTopToBottom()\">\r\n @switch (icon()) {\r\n @case (Icons.arrowDownSLine) {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path\r\n d=\"M11.9999 13.1714L16.9497 8.22168L18.3639 9.63589L11.9999 15.9999L5.63599 9.63589L7.0502 8.22168L11.9999 13.1714Z\"></path>\r\n </svg>\r\n }\r\n @case (Icons.arrowUpSLine) {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path\r\n d=\"M11.9999 10.8284L7.0502 15.7782L5.63599 14.364L11.9999 8L18.3639 14.364L16.9497 15.7782L11.9999 10.8284Z\"></path>\r\n </svg>\r\n }\r\n @case (Icons.checkboxCircleLine) {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path\r\n d=\"M12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22ZM12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20ZM11.0026 16L6.75999 11.7574L8.17421 10.3431L11.0026 13.1716L16.6595 7.51472L18.0737 8.92893L11.0026 16Z\"></path>\r\n </svg>\r\n }\r\n @case (Icons.checkboxBlankCircleLine) {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path\r\n d=\"M12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22ZM12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20Z\"></path>\r\n </svg>\r\n }\r\n @case (Icons.loader4Fill) {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path\r\n d=\"M18.364 5.63604L16.9497 7.05025C15.683 5.7835 13.933 5 12 5C8.13401 5 5 8.13401 5 12C5 15.866 8.13401 19 12 19C15.866 19 19 15.866 19 12H21C21 16.9706 16.9706 21 12 21C7.02944 21 3 16.9706 3 12C3 7.02944 7.02944 3 12 3C14.4853 3 16.7353 4.00736 18.364 5.63604Z\"></path>\r\n </svg>\r\n }\r\n }\r\n</span>\r\n", styles: [":host{color:inherit;display:inline-flex}:host:has(.Icon--left){margin-left:var(--gld-spacing--xxxs)}:host:has(.Icon--right){margin-right:var(--gld-spacing--xxxs)}.Icon{--gld-icon-size: var(--gld-icon-size--normal);position:relative;color:inherit;font-weight:400;width:var(--gld-icon-size);height:var(--gld-icon-size);margin:auto}.Icon--tiny{--gld-icon-size: var(--gld-icon-size--tiny)}.Icon--small{--gld-icon-size: var(--gld-icon-size--small)}.Icon--medium{--gld-icon-size: var(--gld-icon-size--medium)}.Icon--large{--gld-icon-size: var(--gld-icon-size--large)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
445
- }
446
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: IconComponent, decorators: [{
447
- type: Component,
448
- args: [{ selector: 'gld-icon', standalone: true, imports: [], changeDetection: ChangeDetectionStrategy.OnPush, template: "<span\r\n tabindex=\"-1\"\r\n (click)=\"emitClick()\"\r\n (keyup.enter)=\"keyup()\"\r\n class=\"Icon Icon--{{ size() }}\"\r\n [class.Icon--left]=\"space() === IconsSpace.left\"\r\n [class.Icon--right]=\"space() === IconsSpace.right\"\r\n [style.right.px]=\"moveLeftToRight()\"\r\n [style.top.px]=\"moveTopToBottom()\">\r\n @switch (icon()) {\r\n @case (Icons.arrowDownSLine) {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path\r\n d=\"M11.9999 13.1714L16.9497 8.22168L18.3639 9.63589L11.9999 15.9999L5.63599 9.63589L7.0502 8.22168L11.9999 13.1714Z\"></path>\r\n </svg>\r\n }\r\n @case (Icons.arrowUpSLine) {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path\r\n d=\"M11.9999 10.8284L7.0502 15.7782L5.63599 14.364L11.9999 8L18.3639 14.364L16.9497 15.7782L11.9999 10.8284Z\"></path>\r\n </svg>\r\n }\r\n @case (Icons.checkboxCircleLine) {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path\r\n d=\"M12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22ZM12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20ZM11.0026 16L6.75999 11.7574L8.17421 10.3431L11.0026 13.1716L16.6595 7.51472L18.0737 8.92893L11.0026 16Z\"></path>\r\n </svg>\r\n }\r\n @case (Icons.checkboxBlankCircleLine) {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path\r\n d=\"M12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22ZM12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20Z\"></path>\r\n </svg>\r\n }\r\n @case (Icons.loader4Fill) {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path\r\n d=\"M18.364 5.63604L16.9497 7.05025C15.683 5.7835 13.933 5 12 5C8.13401 5 5 8.13401 5 12C5 15.866 8.13401 19 12 19C15.866 19 19 15.866 19 12H21C21 16.9706 16.9706 21 12 21C7.02944 21 3 16.9706 3 12C3 7.02944 7.02944 3 12 3C14.4853 3 16.7353 4.00736 18.364 5.63604Z\"></path>\r\n </svg>\r\n }\r\n }\r\n</span>\r\n", styles: [":host{color:inherit;display:inline-flex}:host:has(.Icon--left){margin-left:var(--gld-spacing--xxxs)}:host:has(.Icon--right){margin-right:var(--gld-spacing--xxxs)}.Icon{--gld-icon-size: var(--gld-icon-size--normal);position:relative;color:inherit;font-weight:400;width:var(--gld-icon-size);height:var(--gld-icon-size);margin:auto}.Icon--tiny{--gld-icon-size: var(--gld-icon-size--tiny)}.Icon--small{--gld-icon-size: var(--gld-icon-size--small)}.Icon--medium{--gld-icon-size: var(--gld-icon-size--medium)}.Icon--large{--gld-icon-size: var(--gld-icon-size--large)}\n"] }]
449
- }] });
450
- var IconsSpace;
451
- (function (IconsSpace) {
452
- IconsSpace["left"] = "left";
453
- IconsSpace["right"] = "right";
454
- IconsSpace["none"] = "none";
455
- })(IconsSpace || (IconsSpace = {}));
456
-
457
687
  // Angular Imports
458
688
  const components$1 = [IconComponent, InputErrorComponent];
459
689
  class SelectComponent {
@@ -650,194 +880,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.1", ngImpor
650
880
  ], template: "@let errors = control().invalid && (control().dirty || control().touched);\r\n@let disabled = control().disabled || (control().pending && control().disabled);\r\n\r\n<section class=\"input\" [class.input--disabled]=\"disabled\" [class.input--error]=\"errors\">\r\n <!-- Label -->\r\n @if (label()) {\r\n <label [for]=\"name()\">\r\n {{ label() }}\r\n </label>\r\n }\r\n\r\n <!-- Input -->\r\n <textarea\r\n id=\"input-textarea-{{ name() }}\"\r\n [name]=\"name()\"\r\n [placeholder]=\"placeholder()\"\r\n [formControl]=\"innerControl()\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onTouched()\"\r\n (keyup.escape)=\"onBlur()\"></textarea>\r\n\r\n <!-- Suffix -->\r\n @if (suffix()) {\r\n <ng-container [ngTemplateOutlet]=\"suffixTemplate\" />\r\n }\r\n</section>\r\n<!-- Errors -->\r\n@if (errors) {\r\n <ng-content select=\"gld-input-error\">\r\n <gld-input-error [errors]=\"control().errors\" />\r\n </ng-content>\r\n} @else {\r\n <!-- Hint -->\r\n <ng-content select=\"gld-input-hint\" />\r\n}\r\n\r\n<!-- Suffix emplate -->\r\n<ng-template #suffixTemplate>\r\n <span tabindex=\"-1\" class=\"input-icon\" [class.input-icon--error]=\"errors\">\r\n <ng-content select=\"[inputSuffix]\" />\r\n </span>\r\n</ng-template>\r\n\r\n<!-- <h3>Debugging</h3>\r\n<section>errors: {{ errors }}</section>\r\n<section>invalid: {{ control().invalid }}</section>\r\n<section>dirty: {{ control().dirty }}</section>\r\n<section>touched: {{ control().touched }}</section>\r\n<section>disable: {{ control().disabled }}</section> -->\r\n", styles: [".input{--gld-color: var(--gld-darkblue);--gld-color--disabled: var(--gld-gray-transparent--060);--gld-color--error: var(--gld-red);--gld-placeholder-color: var(--gld-gray-transparent--060);--gld-border-color: var(--gld-gray-transparent--060);--gld-label-color: var(--gld-darkblue);--gld-min-height: 120px;--gld-max-height: 240px;--gld-min-with: 50px;--gld-animation-time: var(--gld-animation-time--150);position:relative;background:transparent}.input label{padding:0;font-family:var(--gld-font--poppins);font-size:var(--gld-font-size--normal);font-weight:400;line-height:1.25;color:var(--gld-label-color);will-change:color;transition:color var(--gld-animation-time) ease;cursor:text}.input textarea{display:flex;width:100%;min-width:var(--gld-min-with);min-height:var(--gld-min-height);max-height:var(--gld-max-height);padding:var(--gld-spacing--xxs);font-family:var(--gld-font--poppins);font-size:var(--gld-font-size--normal);font-weight:400;line-height:1.25;border:none;outline:none;border-bottom:var(--gld-border-size) solid var(--gld-border-color);color:var(--gld-color);background:transparent;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;resize:vertical;form-sizing:content;will-change:color;transition:color var(--gld-animation-time) ease-in-out}.input textarea:focus{--gld-border-color: var(--gld-blue)}.input textarea::placeholder{color:var(--gld-placeholder-color)}.input--error{--gld-color: var(--gld-color--error);--gld-label-color: var(--gld-color--error);--gld-border-color: var(--gld-color--error);--gld-placeholder-color: var(--gld-color--error)}.input--disabled{--gld-color: var(--gld-color--disabled);--gld-border-color: var(--gld-color--disabled);--gld-label-color: var(--gld-color--disabled);--gld-placeholder-color: var(--gld-color--disabled);pointer-events:none;cursor:not-allowed}.input-icon{position:absolute;right:var(--gld-spacing--xxs);bottom:0;display:inline-block;color:var(--gld-color);will-change:transform,color;transition:color var(--gld-animation-time) ease;cursor:pointer}\n"] }]
651
881
  }], ctorParameters: () => [] });
652
882
 
653
- // Shared Imports
654
- // Regex to validate the ISO date format (YYYY-MM-DD)
655
- const ISO_DATE_REGEX = /^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/;
656
- function isDateValidator() {
657
- return (control) => {
658
- const value = formatDateFromISOToYYYYMMDD(control.value);
659
- if (!value)
660
- return null;
661
- if (!ISO_DATE_REGEX.test(value))
662
- return { isDate: 'This field must be a valid date in the format YYYY-MM-DD!' };
663
- // Verify if the date is valid (additional logic)
664
- const [year, month, day] = value.split('-').map(Number);
665
- const date = new Date(year, month - 1, day);
666
- // Verify if the date is logical and corresponds to the format
667
- if (date.getFullYear() === year && date.getMonth() === month - 1 && date.getDate() === day)
668
- return null;
669
- return { isDate: 'This field must be a valid date!' };
670
- };
671
- }
672
-
673
- function isDocumentValidator({ documentType }) {
674
- return (control) => {
675
- const value = control.value;
676
- // Definir los patrones de acuerdo al tipo de vehículo
677
- const patterns = {
678
- DNI: [
679
- {
680
- regex: /^\d+$/,
681
- message: 'Este campo debe contener solo números!',
682
- },
683
- {
684
- regex: /^.{7,8}$/,
685
- message: 'Este campo debe contener entre 7 y 8 dígitos!',
686
- },
687
- ],
688
- CT: [
689
- {
690
- regex: /^\d+$/,
691
- message: 'Este campo debe contener solo números!',
692
- },
693
- {
694
- regex: /^.{11}$/,
695
- message: 'Este campo debe contener 11 dígitos!',
696
- },
697
- ],
698
- CL: [
699
- {
700
- regex: /^\d+$/,
701
- message: 'Este campo debe contener solo números!',
702
- },
703
- {
704
- regex: /^.{11}$/,
705
- message: 'Este campo debe contener 11 dígitos!',
706
- },
707
- ],
708
- };
709
- const patternsToValid = patterns[documentType];
710
- if (!value)
711
- return null;
712
- const pattern = patternsToValid.find((pattern) => !pattern.regex.test(value));
713
- return pattern ? { isDocument: pattern.message } : null;
714
- };
715
- }
716
-
717
- // Regex para validar emails
718
- const EMAIL_REGEX = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
719
- function isEmailValidator() {
720
- return (control) => {
721
- const value = control.value;
722
- if (!value)
723
- return null;
724
- if (EMAIL_REGEX.test(value))
725
- return null;
726
- return { email: 'This field must be a valid email!' };
727
- };
728
- }
729
-
730
- function isFormSelectItemValidator() {
731
- return (control) => {
732
- const value = control.value;
733
- if (!value)
734
- return null;
735
- if (typeof value === 'string')
736
- return { isFormSelectItem: 'Este campo debe ser una opción valida!' };
737
- if (typeof value === 'object') {
738
- if ('value' in value && 'label' in value)
739
- return null;
740
- }
741
- return { isFormSelectItem: 'Este campo debe ser una opción valida!' };
742
- };
743
- }
744
-
745
- function isLicensePlateValidator({ vehicleType, }) {
746
- return (control) => {
747
- const value = control.value;
748
- // Definir los patrones de acuerdo al tipo de vehículo
749
- const patterns = {
750
- AUTO: [
751
- /^[a-zA-Z]{3}[\d]{3}$/, // Auto viejo
752
- /^[a-zA-Z]{2}[\d]{3}[a-zA-Z]{2}$/, // Auto nuevo
753
- ],
754
- MOTO: [
755
- /^[\d]{3}[a-zA-Z]{3}$/, // Moto viejo
756
- /^[a-zA-Z]{1}[\d]{3}[a-zA-Z]{3}$/, // Moto nuevo
757
- ],
758
- BOTH: [
759
- /^[a-zA-Z]{3}[\d]{3}$/, // Auto viejo
760
- /^[a-zA-Z]{2}[\d]{3}[a-zA-Z]{2}$/, // Auto nuevo
761
- /^[\d]{3}[a-zA-Z]{3}$/, // Moto viejo
762
- /^[a-zA-Z]{1}[\d]{3}[a-zA-Z]{3}$/, // Moto nuevo
763
- ],
764
- };
765
- const patternsToValid = patterns[vehicleType];
766
- if (!value)
767
- return null;
768
- const isValid = patternsToValid.some((pattern) => pattern.test(value));
769
- return isValid ? null : { isLicensePlate: 'El campo debe ser una patente valida!' };
770
- };
771
- }
772
-
773
- // Regex para validar números naturales (0, 1, 2, 3, ...)
774
- const NATURAL_NUMBER_REGEX = /^[0-9]+$/;
775
- function isNaturalNumberValidator() {
776
- return (control) => {
777
- const value = control.value;
778
- if (!value)
779
- return null;
780
- if (NATURAL_NUMBER_REGEX.test(value))
781
- return null;
782
- return { naturalNumber: 'This field must contain only valid numbers!' };
783
- };
784
- }
785
-
786
- // Shared Imports
787
- function minimumAgeValidator({ minAge }) {
788
- return (control) => {
789
- const value = formatDateFromISOToYYYYMMDD(control.value);
790
- if (!value)
791
- return null;
792
- // Verify if the date is valid (additional logic)
793
- const [year, month, day] = value.split('-').map(Number);
794
- const birthDay = new Date(year, month - 1, day);
795
- // Get the current date and calculate the difference in years
796
- const today = new Date();
797
- today.setHours(0, 0, 0, 0);
798
- const age = today.getFullYear() - birthDay.getFullYear();
799
- const isMonthPast = today.getMonth() > birthDay.getMonth();
800
- const isSameMonthDayPast = today.getMonth() === birthDay.getMonth() && today.getDate() >= birthDay.getDate();
801
- const isValidAge = age > minAge || (age === minAge && (isMonthPast || isSameMonthDayPast));
802
- // Retornar el error si la edad es menor al mínimo
803
- return isValidAge ? null : { minimumAge: { requiredAge: minAge, actualAge: age } };
804
- };
805
- }
806
-
807
- function mustMatchValidator({ controlName, mustMatchControlName, errorMessage, }) {
808
- return (formGroup) => {
809
- const firstControl = formGroup.get(controlName);
810
- const mustMatchControl = formGroup.get(mustMatchControlName);
811
- // Validar que ambos controles existan
812
- if (!firstControl || !mustMatchControl)
813
- return null;
814
- // Verificar si los valores coinciden
815
- if (firstControl.value && firstControl.value !== mustMatchControl.value) {
816
- mustMatchControl.setErrors({ ...mustMatchControl.errors, mustMatch: errorMessage ?? true });
817
- return { mustMatch: errorMessage ?? true };
818
- }
819
- return null; // Es válido si no hay errores
820
- };
821
- }
822
-
823
- function mustUnmatchValidator({ controlName, mustUnmatchControlName, errorMessage, }) {
824
- return (formGroup) => {
825
- const firstControl = formGroup.get(controlName);
826
- const mustUnmatchControl = formGroup.get(mustUnmatchControlName);
827
- // Validar que ambos controles existan
828
- if (!firstControl || !mustUnmatchControl)
829
- return null;
830
- // Verificar si los valores coinciden
831
- if (firstControl.value && firstControl.value === mustUnmatchControl.value) {
832
- mustUnmatchControl.setErrors({
833
- ...mustUnmatchControl.errors,
834
- mustUnmatch: errorMessage ?? true,
835
- });
836
- return { mustUnmatch: errorMessage ?? true };
837
- }
838
- return null; // Es válido si no hay errores
839
- };
883
+ // Angular Imports
884
+ class TileComponent {
885
+ color = input('blue');
886
+ background = input(false, { transform: booleanAttribute });
887
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: TileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
888
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.1", type: TileComponent, isStandalone: true, selector: "gld-tile", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, background: { classPropertyName: "background", publicName: "background", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<article class=\"Tile Tile--{{ color() }} \" [class.Tile--background]=\"background()\">\r\n <section class=\"Tile-content\">\r\n <ng-content />\r\n </section>\r\n</article>\r\n", styles: [":host{width:100%;height:auto;position:relative;z-index:1}.Tile{--gld-border-radius-inner: var(--gld-radius--xxs);--gld-border-radius-outer: calc(var(--gld-radius--xxs) + var(--gld-border-size));--gld-background: initial;--gld-background--hover: initial;--gld-border-color: transparent;--gld-padding-size: var(--gld-spacing--s);--gld-radius: var(--gld-radius--xxxs);width:inherit;height:inherit;position:relative;padding:var(--gld-padding-size);background:var(--gld-background);border:var(--gld-border-size) solid var(--gld-border-color);border-radius:var(--gld-radius);will-change:background;transition:background var(--gld-animation-time--150)}.Tile:hover,.Tile:focus{background:var(--gld-background--hover)}.Tile--blue{--gld-border-color: var(--gld-blue)}.Tile--blue.Tile--background{--gld-background: var(--gld-blue-transparent--010);--gld-background--hover: var(--gld-blue-transparent--020)}.Tile--green{--gld-border-color: var(--gld-green)}.Tile--green.Tile--background{--gld-background: var(--gld-green-transparent--010);--gld-background--hover: var(--gld-green-transparent--020)}.Tile--purple{--gld-border-color: var(--gld-purple)}.Tile--purple.Tile--background{--gld-background: var(--gld-purple-transparent--010);--gld-background--hover: var(--gld-purple-transparent--020)}.Tile--mustard{--gld-border-color: var(--gld-mustard)}.Tile--mustard.Tile--background{--gld-background: var(--gld-mustard-transparent--010);--gld-background--hover: var(--gld-mustard-transparent--020)}.Tile--orange{--gld-border-color: var(--gld-orange)}.Tile--orange.Tile--background{--gld-background: var(--gld-orange-transparent--010);--gld-background--hover: var(--gld-orange-transparent--020)}.Tile--pink{--gld-border-color: var(--gld-pink)}.Tile--pink.Tile--background{--gld-background: var(--gld-pink-transparent--010);--gld-background--hover: var(--gld-pink-transparent--020)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
840
889
  }
890
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: TileComponent, decorators: [{
891
+ type: Component,
892
+ args: [{ selector: 'gld-tile', standalone: true, imports: [], changeDetection: ChangeDetectionStrategy.OnPush, template: "<article class=\"Tile Tile--{{ color() }} \" [class.Tile--background]=\"background()\">\r\n <section class=\"Tile-content\">\r\n <ng-content />\r\n </section>\r\n</article>\r\n", styles: [":host{width:100%;height:auto;position:relative;z-index:1}.Tile{--gld-border-radius-inner: var(--gld-radius--xxs);--gld-border-radius-outer: calc(var(--gld-radius--xxs) + var(--gld-border-size));--gld-background: initial;--gld-background--hover: initial;--gld-border-color: transparent;--gld-padding-size: var(--gld-spacing--s);--gld-radius: var(--gld-radius--xxxs);width:inherit;height:inherit;position:relative;padding:var(--gld-padding-size);background:var(--gld-background);border:var(--gld-border-size) solid var(--gld-border-color);border-radius:var(--gld-radius);will-change:background;transition:background var(--gld-animation-time--150)}.Tile:hover,.Tile:focus{background:var(--gld-background--hover)}.Tile--blue{--gld-border-color: var(--gld-blue)}.Tile--blue.Tile--background{--gld-background: var(--gld-blue-transparent--010);--gld-background--hover: var(--gld-blue-transparent--020)}.Tile--green{--gld-border-color: var(--gld-green)}.Tile--green.Tile--background{--gld-background: var(--gld-green-transparent--010);--gld-background--hover: var(--gld-green-transparent--020)}.Tile--purple{--gld-border-color: var(--gld-purple)}.Tile--purple.Tile--background{--gld-background: var(--gld-purple-transparent--010);--gld-background--hover: var(--gld-purple-transparent--020)}.Tile--mustard{--gld-border-color: var(--gld-mustard)}.Tile--mustard.Tile--background{--gld-background: var(--gld-mustard-transparent--010);--gld-background--hover: var(--gld-mustard-transparent--020)}.Tile--orange{--gld-border-color: var(--gld-orange)}.Tile--orange.Tile--background{--gld-background: var(--gld-orange-transparent--010);--gld-background--hover: var(--gld-orange-transparent--020)}.Tile--pink{--gld-border-color: var(--gld-pink)}.Tile--pink.Tile--background{--gld-background: var(--gld-pink-transparent--010);--gld-background--hover: var(--gld-pink-transparent--020)}\n"] }]
893
+ }] });
841
894
 
842
895
  /*
843
896
  * Public API Surface of iamgld-ui
@@ -847,5 +900,5 @@ function mustUnmatchValidator({ controlName, mustUnmatchControlName, errorMessag
847
900
  * Generated bundle index. Do not edit.
848
901
  */
849
902
 
850
- export { ButtonComponent, InputComponent, InputDateComponent, InputErrorComponent, InputErrorMessageDirective, InputHintComponent, RadioButtonComponent, RadioGroupComponent, SelectComponent, SelectOptionComponent, TextareaComponent, capitalizeFirstLetter, formatDateFromISOToYYYYMMDD, formatDateToISO, getDateWithOffsetInYears, isDateValidator, isDocumentValidator, isEmailValidator, isFormSelectItemValidator, isLicensePlateValidator, isNaturalNumberValidator, minimumAgeValidator, mustMatchValidator, mustUnmatchValidator };
903
+ export { ButtonComponent, IconButtonComponent, IconComponent, Icons, IconsSize, IconsSpace, ImageComponent, InputComponent, InputDateComponent, InputErrorComponent, InputErrorMessageDirective, InputHintComponent, RadioButtonComponent, RadioDirection, RadioGroupComponent, SelectComponent, SelectOptionComponent, SelectType, TextareaComponent, TileComponent, capitalizeFirstLetter, formatDateFromISOToYYYYMMDD, formatDateToISO, getDateWithOffsetInYears, isDateValidator, isDocumentValidator, isEmailValidator, isFormSelectItemValidator, isLicensePlateValidator, isNaturalNumberValidator, minimumAgeValidator, mustMatchValidator, mustUnmatchValidator };
851
904
  //# sourceMappingURL=iamgld-ui.mjs.map