@crowdfarming/oliva-ds 1.73.0 → 1.74.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,6 +8,7 @@ import { RouterModule, RouterLink, Router, NavigationStart } from '@angular/rout
8
8
  import * as i1$3 from '@angular/forms';
9
9
  import { NG_VALUE_ACCESSOR, ReactiveFormsModule, FormControl, FormsModule } from '@angular/forms';
10
10
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
11
+ import { map, distinctUntilChanged } from 'rxjs/operators';
11
12
  import { filter } from 'rxjs';
12
13
  import { ComponentPortal } from '@angular/cdk/portal';
13
14
  import * as i1$4 from '@angular/cdk/overlay';
@@ -4510,52 +4511,43 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.7", ngImpor
4510
4511
  type: Output
4511
4512
  }] } });
4512
4513
 
4513
- class InputNumberComponent {
4514
- initialValue = input(undefined);
4514
+ class TextInputComponent {
4515
4515
  label = '';
4516
+ name = '';
4516
4517
  placeholder = '';
4517
4518
  helperText = '';
4518
- alertText = '';
4519
- successText = '';
4520
4519
  error = false;
4521
4520
  success = false;
4521
+ successText = '';
4522
+ alertText = '';
4522
4523
  disabled = false;
4524
+ readonly = false;
4523
4525
  required = false;
4524
4526
  optionalLabel = '';
4525
- readonly = false;
4526
4527
  isLoading = false;
4528
+ type = 'text';
4529
+ inputmode;
4530
+ step;
4527
4531
  size = 'md';
4528
- variant = 'default';
4529
4532
  fullWidth = false;
4530
- minimum = 1;
4531
- maximum;
4532
- step = 1;
4533
+ autocomplete = 'off';
4534
+ regex;
4533
4535
  emitValue = new EventEmitter();
4534
- value = signal(this.minimum);
4535
- // Effective maximum value (Infinity if not set)
4536
- get maxValue() {
4537
- return this.maximum ?? Infinity;
4538
- }
4539
- // Computed signals to disable buttons at limits
4540
- isAtMinimum = computed(() => this.value() <= this.minimum);
4541
- isAtMaximum = computed(() => this.maxValue !== Infinity && this.value() >= this.maxValue);
4542
- constructor() {
4543
- this.value.set(this.minimum);
4544
- effect(() => {
4545
- const initial = this.initialValue();
4546
- if (initial !== undefined) {
4547
- let clampedValue = Math.max(this.minimum, initial);
4548
- if (this.maxValue !== Infinity) {
4549
- clampedValue = Math.min(this.maxValue, clampedValue);
4550
- }
4551
- this.value.set(clampedValue);
4552
- }
4553
- });
4554
- }
4536
+ _value = '';
4555
4537
  onChangeFn = () => { };
4556
4538
  onTouchedFn = () => { };
4539
+ isFullPattern() {
4540
+ return (!!this.regex &&
4541
+ this.regex.startsWith('^') &&
4542
+ this.regex.endsWith('$'));
4543
+ }
4544
+ testRegex(value) {
4545
+ if (!this.regex)
4546
+ return true;
4547
+ return new RegExp(this.regex).test(value);
4548
+ }
4557
4549
  writeValue(value) {
4558
- this.value.set(value ?? this.minimum);
4550
+ this._value = value ?? '';
4559
4551
  }
4560
4552
  registerOnChange(fn) {
4561
4553
  this.onChangeFn = fn;
@@ -4570,117 +4562,241 @@ class InputNumberComponent {
4570
4562
  return [
4571
4563
  'c-text-input__input',
4572
4564
  `c-text-input__input--${this.size}`,
4573
- this.error ? 'is-error' : '',
4574
- this.success ? 'is-success' : '',
4565
+ this.error ? 'is-error' : this.success ? 'is-success' : 'is-default',
4575
4566
  this.disabled ? 'is-disabled' : '',
4576
4567
  this.readonly ? 'is-readonly' : '',
4577
4568
  this.isLoading ? 'is-loading' : '',
4578
4569
  ].filter(Boolean);
4579
4570
  }
4580
4571
  get ariaDescribedBy() {
4581
- return this.helperText ? 'search-input-helper' : null;
4572
+ return this.helperText ? 'text-input-helper' : null;
4582
4573
  }
4583
- onType(event) {
4584
- const input = event.target;
4585
- let newVal = input.value === '' ? this.minimum : Number(input.value);
4586
- // Clamp value to minimum, and to maximum if defined
4587
- if (newVal < this.minimum) {
4588
- newVal = this.minimum;
4589
- }
4590
- else if (this.maxValue !== Infinity && newVal > this.maxValue) {
4591
- newVal = this.maxValue;
4592
- }
4593
- // Update the input value to reflect the clamped value
4594
- input.value = newVal.toString();
4595
- this.value.set(newVal);
4596
- this.onChangeFn(newVal);
4597
- this.emitValue.emit(newVal);
4598
- }
4599
- upNumber() {
4600
- const currentValue = this.value();
4601
- const newValue = currentValue + this.step;
4602
- if (this.maxValue === Infinity || newValue <= this.maxValue) {
4603
- this.value.set(newValue);
4604
- this.onChangeFn(newValue);
4605
- this.emitValue.emit(newValue);
4574
+ // Blocks chars (no visual feedback), input sanitizes as fallback
4575
+ onBeforeInput(event) {
4576
+ if (!this.regex || !event.data)
4577
+ return;
4578
+ // For full string patterns, validate the entire resulting value
4579
+ if (this.isFullPattern()) {
4580
+ const input = event.target;
4581
+ const start = input.selectionStart ?? 0;
4582
+ const end = input.selectionEnd ?? 0;
4583
+ const newValue = input.value.slice(0, start) + event.data + input.value.slice(end);
4584
+ if (!this.testRegex(newValue)) {
4585
+ event.preventDefault();
4586
+ }
4587
+ }
4588
+ else {
4589
+ // For char patterns, block invalid characters
4590
+ if (!this.testRegex(event.data)) {
4591
+ event.preventDefault();
4592
+ }
4606
4593
  }
4607
4594
  }
4608
- downNumber() {
4609
- const currentValue = this.value();
4610
- const newValue = currentValue - this.step;
4611
- if (newValue >= this.minimum) {
4612
- this.value.set(newValue);
4613
- this.onChangeFn(newValue);
4614
- this.emitValue.emit(newValue);
4595
+ onInput(event) {
4596
+ const input = event.target;
4597
+ // Sanitize if regex exists
4598
+ if (this.regex) {
4599
+ const sanitized = this.isFullPattern()
4600
+ ? this.testRegex(input.value)
4601
+ ? input.value
4602
+ : this._value
4603
+ : this.sanitizeValue(input.value);
4604
+ if (sanitized !== input.value) {
4605
+ input.value = sanitized;
4606
+ }
4607
+ this._value = sanitized;
4608
+ }
4609
+ else {
4610
+ this._value = input.value;
4615
4611
  }
4612
+ this.onChangeFn(this._value);
4613
+ this.emitValue.emit(this._value);
4614
+ }
4615
+ sanitizeValue(value) {
4616
+ if (!this.regex)
4617
+ return value;
4618
+ return [...value].filter((char) => this.testRegex(char)).join('');
4616
4619
  }
4617
4620
  onBlur() {
4618
4621
  this.onTouchedFn();
4619
4622
  }
4620
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.7", ngImport: i0, type: InputNumberComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4621
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.7", type: InputNumberComponent, isStandalone: true, selector: "lib-input-number", inputs: { initialValue: { classPropertyName: "initialValue", publicName: "initialValue", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: false, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: false, isRequired: false, transformFunction: null }, helperText: { classPropertyName: "helperText", publicName: "helperText", isSignal: false, isRequired: false, transformFunction: null }, alertText: { classPropertyName: "alertText", publicName: "alertText", isSignal: false, isRequired: false, transformFunction: null }, successText: { classPropertyName: "successText", publicName: "successText", isSignal: false, isRequired: false, transformFunction: null }, error: { classPropertyName: "error", publicName: "error", isSignal: false, isRequired: false, transformFunction: null }, success: { classPropertyName: "success", publicName: "success", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: false, isRequired: false, transformFunction: null }, optionalLabel: { classPropertyName: "optionalLabel", publicName: "optionalLabel", isSignal: false, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: false, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: false, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: false, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: false, isRequired: false, transformFunction: null }, fullWidth: { classPropertyName: "fullWidth", publicName: "fullWidth", isSignal: false, isRequired: false, transformFunction: null }, minimum: { classPropertyName: "minimum", publicName: "minimum", isSignal: false, isRequired: false, transformFunction: null }, maximum: { classPropertyName: "maximum", publicName: "maximum", isSignal: false, isRequired: false, transformFunction: null }, step: { classPropertyName: "step", publicName: "step", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { emitValue: "emitValue" }, providers: [
4623
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.7", ngImport: i0, type: TextInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4624
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.7", type: TextInputComponent, isStandalone: true, selector: "lib-text-input", inputs: { label: "label", name: "name", placeholder: "placeholder", helperText: "helperText", error: "error", success: "success", successText: "successText", alertText: "alertText", disabled: "disabled", readonly: "readonly", required: "required", optionalLabel: "optionalLabel", isLoading: "isLoading", type: "type", inputmode: "inputmode", step: "step", size: "size", fullWidth: "fullWidth", autocomplete: "autocomplete", regex: "regex" }, outputs: { emitValue: "emitValue" }, providers: [
4622
4625
  {
4623
4626
  provide: NG_VALUE_ACCESSOR,
4624
- useExisting: forwardRef(() => InputNumberComponent),
4627
+ useExisting: forwardRef(() => TextInputComponent),
4625
4628
  multi: true,
4626
4629
  },
4627
- ], ngImport: i0, template: "<div class=\"c-text-input\" [class.c-text-input--full-width]=\"fullWidth\">\n <lib-input-label\n *ngIf=\"label\"\n size=\"sm\"\n [required]=\"required\"\n [text]=\"label\"\n [textOptional]=\"optionalLabel\"\n [isLoading]=\"isLoading\"\n ></lib-input-label>\n\n <div\n class=\"c-text-input__wrapper\"\n [class.c-text-input__wrapper--right]=\"variant === 'right'\"\n >\n <input\n type=\"number\"\n [value]=\"isLoading ? '' : value()\"\n [placeholder]=\"isLoading ? '' : placeholder\"\n [disabled]=\"disabled || isLoading\"\n [readonly]=\"readonly\"\n [class]=\"inputClass.join(' ')\"\n [attr.aria-invalid]=\"error ? 'true' : null\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n [required]=\"required\"\n aria-label=\"number\"\n (input)=\"onType($event)\"\n (blur)=\"onBlur()\"\n />\n <lib-button-icon\n ariaLabel=\"menos\"\n [disabled]=\"disabled || readonly || isAtMinimum() || isLoading\"\n [loading]=\"false\"\n variant=\"neutral\"\n size=\"sm\"\n class=\"c-text-input__less\"\n iconName=\"minus-regular\"\n (click)=\"downNumber()\"\n >\n </lib-button-icon>\n <lib-button-icon\n ariaLabel=\"m\u00E1s\"\n [disabled]=\"disabled || readonly || isAtMaximum() || isLoading\"\n [loading]=\"false\"\n variant=\"neutral\"\n size=\"sm\"\n class=\"c-text-input__up\"\n iconName=\"plus-regular\"\n (click)=\"upNumber()\"\n >\n </lib-button-icon>\n </div>\n\n <span\n *ngIf=\"helperText && !error && !success\"\n id=\"search-input-helper\"\n class=\"c-text-input__helper\"\n >\n <lib-helper-text\n [text]=\"helperText\"\n [isLoading]=\"isLoading\"\n ></lib-helper-text>\n </span>\n\n <span *ngIf=\"alertText && error\" class=\"c-text-input__alert\">\n <lib-helper-text\n variant=\"danger\"\n [text]=\"alertText\"\n [isLoading]=\"isLoading\"\n ></lib-helper-text>\n </span>\n\n <span *ngIf=\"successText && success\" class=\"c-text-input__success\">\n <lib-helper-text\n variant=\"success\"\n [text]=\"successText\"\n [isLoading]=\"isLoading\"\n ></lib-helper-text>\n </span>\n</div>\n", styles: [".c-text-input{position:relative;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:var(--space-component-gap-sm);max-width:300px}.c-text-input--full-width{max-width:100%}.c-text-input__input{--input-padding-y: var(--space-component-padding-md);--input-padding-x: 2rem;width:100%;height:48px;box-sizing:border-box;border-radius:var(--size-textfield-border-radius);border:var(--size-textfield-border-width) solid var(--color-textfield-border-default);background:var(--color-textfield-background-default);padding:var(--input-padding-y) var(--input-padding-x);align-items:center;gap:var(--space-component-gap-sm);align-self:stretch;color:var(--color-textfield-content-default);font-family:var(--typography-label-md-default-family);font-size:var(--typography-label-md-default-size);font-style:normal;font-weight:var(--typography-label-md-default-weight);line-height:var(--typography-label-md-default-line-height);letter-spacing:var(--typography-label-md-default-letter-spacing);text-align:center}.c-text-input__input:focus-visible{border-width:2px;border-color:var(--color-textfield-border-active);padding:calc(var(--input-padding-y) - 1px) calc(var(--input-padding-x) - 1px);box-shadow:none;outline:none}.c-text-input__input--sm{height:32px;--input-padding-y: var(--space-component-padding-xs);--input-padding-x: 2rem}.c-text-input__input--md{height:40px;--input-padding-y: var(--space-component-padding-xs);--input-padding-x: 2rem}.c-text-input__input.is-error{border-color:var(--color-textfield-border-error)}.c-text-input__input.is-success{border-color:var(--color-feedback-success-strong)}.c-text-input__input.is-disabled{background-color:var(--color-textfield-background-disabled);border-color:var(--color-textfield-border-disabled);color:var(--color-textfield-content-disabled)}.c-text-input__input.is-readonly{background-color:var(--color-textfield-background-disabled);border-color:var(--color-textfield-border-disabled)}.c-text-input__input.is-loading{border-color:var(--color-effect-skeleton-soft, #e5eaea);background-color:var(--color-textfield-background-default);color:transparent}.c-text-input__alert{display:flex;gap:var(--space-component-gap-sm);color:var(--color-feedback-danger-default);font-family:var(--typography-label-sm-default-family);font-size:var(--typography-label-sm-default-size);font-style:normal;font-weight:var(--typography-label-sm-default-weight);line-height:var(--typography-label-sm-default-line-height);letter-spacing:var(--typography-label-sm-default-letter-spacing)}.c-text-input__success{display:flex;gap:var(--space-component-gap-sm);color:var(--color-feedback-success-default);font-family:var(--typography-label-sm-default-family);font-size:var(--typography-label-sm-default-size);font-style:normal;font-weight:var(--typography-label-sm-default-weight);line-height:var(--typography-label-sm-default-line-height);letter-spacing:var(--typography-label-sm-default-letter-spacing)}.c-text-input__helper{color:var(--color-core-content-soft);font-family:var(--typography-label-sm-default-family);font-size:var(--typography-label-sm-default-size);font-style:normal;font-weight:var(--typography-label-sm-default-weight);line-height:var(--typography-label-sm-default-line-height);letter-spacing:var(--typography-label-sm-default-letter-spacing)}.c-text-input__helper.is-error{color:var(--color-textfield-helper-error)}.c-text-input__helper.is-success{color:var(--color-textfield-helper-success)}.c-text-input__helper.is-default{color:var(--color-textfield-helper-default)}.c-text-input__up{position:absolute;top:50%;right:var(--space-component-padding-sm);transform:translateY(-50%);background:none;border:none;cursor:pointer;padding:0;display:flex;align-items:center}.c-text-input__less{position:absolute;top:50%;left:var(--space-component-padding-sm);transform:translateY(-50%);background:none;border:none;cursor:pointer;padding:0;display:flex;align-items:center}.c-text-input__wrapper{display:flex;position:relative;width:100%}.c-text-input__wrapper--right .c-text-input__input{text-align:left}.c-text-input__wrapper--right .c-text-input__less{position:absolute;top:50%;right:calc(2rem + var(--space-component-padding-sm));transform:translateY(-50%);background:none;border:none;cursor:pointer;padding:0;display:flex;align-items:center;left:initial}.c-text-input__wrapper--right .c-text-input__up{position:absolute;top:50%;right:var(--space-component-padding-sm);transform:translateY(-50%);background:none;border:none;cursor:pointer;padding:0;display:flex;align-items:center}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: InputLabelComponent, selector: "lib-input-label", inputs: ["text", "required", "size", "disabled", "for", "innerHTML", "isLoading", "textOptional"] }, { kind: "component", type: ButtonIconComponent, selector: "lib-button-icon", inputs: ["ariaLabel", "variant", "size", "iconName", "disabled", "loading", "skeletonActive"], outputs: ["clicked"] }, { kind: "component", type: HelperTextComponent, selector: "lib-helper-text", inputs: ["variant", "text", "extraClass", "disabled", "isLoading"] }] });
4630
+ ], ngImport: i0, template: "<div class=\"c-text-input\" [class.c-text-input--full-width]=\"fullWidth\">\n <lib-input-label\n *ngIf=\"label\"\n size=\"sm\"\n [required]=\"required\"\n [for]=\"name\"\n [text]=\"label\"\n [textOptional]=\"optionalLabel\"\n [isLoading]=\"isLoading\"\n ></lib-input-label>\n\n <input\n [attr.autocomplete]=\"autocomplete\"\n [id]=\"name\"\n [name]=\"name\"\n [type]=\"type\"\n [attr.inputmode]=\"inputmode\"\n [attr.step]=\"step\"\n [class]=\"inputClass.join(' ')\"\n [placeholder]=\"isLoading ? '' : placeholder\"\n [disabled]=\"disabled || isLoading\"\n [readonly]=\"readonly\"\n [value]=\"isLoading ? '' : _value\"\n [required]=\"required\"\n [attr.aria-invalid]=\"error ? 'true' : null\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n [attr.aria-label]=\"name\"\n [attr.aria-labelledby]=\"name\"\n (beforeinput)=\"onBeforeInput($event)\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n />\n\n <span\n *ngIf=\"helperText && !error && !success\"\n id=\"text-input-helper\"\n class=\"c-text-input__helper\"\n >\n <lib-helper-text\n [text]=\"helperText\"\n [isLoading]=\"isLoading\"\n ></lib-helper-text>\n </span>\n\n <span *ngIf=\"alertText && error\" class=\"c-text-input__alert\">\n <lib-helper-text\n variant=\"danger\"\n [text]=\"alertText\"\n [isLoading]=\"isLoading\"\n ></lib-helper-text>\n </span>\n\n <span *ngIf=\"successText && success\" class=\"c-text-input__success\">\n <lib-helper-text\n variant=\"success\"\n [text]=\"successText\"\n [isLoading]=\"isLoading\"\n ></lib-helper-text>\n </span>\n</div>\n", styles: [".c-text-input{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:var(--space-component-gap-sm);max-width:300px}.c-text-input--full-width{max-width:100%}.c-text-input__input{--input-padding-y: var(--space-component-padding-md);--input-padding-x: var(--space-component-padding-lg);height:48px;box-sizing:border-box;border-radius:var(--size-textfield-border-radius);border:var(--size-textfield-border-width) solid var(--color-textfield-border-default);background:var(--color-textfield-background-default);padding:var(--input-padding-y) var(--input-padding-x);align-items:center;gap:var(--space-component-gap-sm);align-self:stretch;color:var(--color-textfield-content-default);font-family:var(--typography-label-md-default-family);font-size:var(--typography-label-md-default-size);font-style:normal;font-weight:var(--typography-label-md-default-weight);line-height:var(--typography-label-md-default-line-height);letter-spacing:var(--typography-label-md-default-letter-spacing)}.c-text-input__input:focus-visible{border-width:2px;border-color:var(--color-textfield-border-active);padding:calc(var(--input-padding-y) - 1px) calc(var(--input-padding-x) - 1px);box-shadow:none;outline:none}.c-text-input__input--sm{height:32px;--input-padding-y: var(--space-component-padding-xs);--input-padding-x: var(--space-component-padding-sm)}.c-text-input__input--md{height:40px;--input-padding-y: var(--space-component-padding-xs);--input-padding-x: var(--space-component-padding-md)}.c-text-input__input.is-error{border-color:var(--color-textfield-border-error)}.c-text-input__input.is-success{border-color:var(--color-feedback-success-strong)}.c-text-input__input.is-disabled{background-color:var(--color-textfield-background-disabled);border-color:var(--color-textfield-border-disabled);color:var(--color-textfield-content-disabled)}.c-text-input__input.is-readonly{background-color:var(--color-textfield-background-disabled);border-color:var(--color-textfield-border-disabled)}.c-text-input__input.is-loading{border-color:var(--color-effect-skeleton-soft, #e5eaea);background-color:var(--color-textfield-background-default);color:transparent}.c-text-input__alert{display:flex;gap:var(--space-component-gap-sm);color:var(--color-feedback-danger-default);font-family:var(--typography-label-sm-default-family);font-size:var(--typography-label-sm-default-size);font-style:normal;font-weight:var(--typography-label-sm-default-weight);line-height:var(--typography-label-sm-default-line-height);letter-spacing:var(--typography-label-sm-default-letter-spacing)}.c-text-input__success{display:flex;gap:var(--space-component-gap-sm);color:var(--color-feedback-success-default);font-family:var(--typography-label-sm-default-family);font-size:var(--typography-label-sm-default-size);font-style:normal;font-weight:var(--typography-label-sm-default-weight);line-height:var(--typography-label-sm-default-line-height);letter-spacing:var(--typography-label-sm-default-letter-spacing)}.c-text-input__helper{color:var(--color-core-content-soft);font-family:var(--typography-label-sm-default-family);font-size:var(--typography-label-sm-default-size);font-style:normal;font-weight:var(--typography-label-sm-default-weight);line-height:var(--typography-label-sm-default-line-height);letter-spacing:var(--typography-label-sm-default-letter-spacing)}.c-text-input__helper.is-error{color:var(--color-textfield-helper-error)}.c-text-input__helper.is-success{color:var(--color-textfield-helper-success)}.c-text-input__helper.is-default{color:var(--color-textfield-helper-default)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: InputLabelComponent, selector: "lib-input-label", inputs: ["text", "required", "size", "disabled", "for", "innerHTML", "isLoading", "textOptional"] }, { kind: "component", type: HelperTextComponent, selector: "lib-helper-text", inputs: ["variant", "text", "extraClass", "disabled", "isLoading"] }] });
4628
4631
  }
4629
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.7", ngImport: i0, type: InputNumberComponent, decorators: [{
4632
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.7", ngImport: i0, type: TextInputComponent, decorators: [{
4630
4633
  type: Component,
4631
- args: [{ selector: 'lib-input-number', standalone: true, imports: [
4634
+ args: [{ selector: 'lib-text-input', standalone: true, imports: [
4632
4635
  CommonModule,
4633
4636
  ReactiveFormsModule,
4634
4637
  InputLabelComponent,
4635
- ButtonIconComponent,
4636
4638
  HelperTextComponent,
4637
4639
  ], providers: [
4638
4640
  {
4639
4641
  provide: NG_VALUE_ACCESSOR,
4640
- useExisting: forwardRef(() => InputNumberComponent),
4642
+ useExisting: forwardRef(() => TextInputComponent),
4641
4643
  multi: true,
4642
4644
  },
4643
- ], template: "<div class=\"c-text-input\" [class.c-text-input--full-width]=\"fullWidth\">\n <lib-input-label\n *ngIf=\"label\"\n size=\"sm\"\n [required]=\"required\"\n [text]=\"label\"\n [textOptional]=\"optionalLabel\"\n [isLoading]=\"isLoading\"\n ></lib-input-label>\n\n <div\n class=\"c-text-input__wrapper\"\n [class.c-text-input__wrapper--right]=\"variant === 'right'\"\n >\n <input\n type=\"number\"\n [value]=\"isLoading ? '' : value()\"\n [placeholder]=\"isLoading ? '' : placeholder\"\n [disabled]=\"disabled || isLoading\"\n [readonly]=\"readonly\"\n [class]=\"inputClass.join(' ')\"\n [attr.aria-invalid]=\"error ? 'true' : null\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n [required]=\"required\"\n aria-label=\"number\"\n (input)=\"onType($event)\"\n (blur)=\"onBlur()\"\n />\n <lib-button-icon\n ariaLabel=\"menos\"\n [disabled]=\"disabled || readonly || isAtMinimum() || isLoading\"\n [loading]=\"false\"\n variant=\"neutral\"\n size=\"sm\"\n class=\"c-text-input__less\"\n iconName=\"minus-regular\"\n (click)=\"downNumber()\"\n >\n </lib-button-icon>\n <lib-button-icon\n ariaLabel=\"m\u00E1s\"\n [disabled]=\"disabled || readonly || isAtMaximum() || isLoading\"\n [loading]=\"false\"\n variant=\"neutral\"\n size=\"sm\"\n class=\"c-text-input__up\"\n iconName=\"plus-regular\"\n (click)=\"upNumber()\"\n >\n </lib-button-icon>\n </div>\n\n <span\n *ngIf=\"helperText && !error && !success\"\n id=\"search-input-helper\"\n class=\"c-text-input__helper\"\n >\n <lib-helper-text\n [text]=\"helperText\"\n [isLoading]=\"isLoading\"\n ></lib-helper-text>\n </span>\n\n <span *ngIf=\"alertText && error\" class=\"c-text-input__alert\">\n <lib-helper-text\n variant=\"danger\"\n [text]=\"alertText\"\n [isLoading]=\"isLoading\"\n ></lib-helper-text>\n </span>\n\n <span *ngIf=\"successText && success\" class=\"c-text-input__success\">\n <lib-helper-text\n variant=\"success\"\n [text]=\"successText\"\n [isLoading]=\"isLoading\"\n ></lib-helper-text>\n </span>\n</div>\n", styles: [".c-text-input{position:relative;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:var(--space-component-gap-sm);max-width:300px}.c-text-input--full-width{max-width:100%}.c-text-input__input{--input-padding-y: var(--space-component-padding-md);--input-padding-x: 2rem;width:100%;height:48px;box-sizing:border-box;border-radius:var(--size-textfield-border-radius);border:var(--size-textfield-border-width) solid var(--color-textfield-border-default);background:var(--color-textfield-background-default);padding:var(--input-padding-y) var(--input-padding-x);align-items:center;gap:var(--space-component-gap-sm);align-self:stretch;color:var(--color-textfield-content-default);font-family:var(--typography-label-md-default-family);font-size:var(--typography-label-md-default-size);font-style:normal;font-weight:var(--typography-label-md-default-weight);line-height:var(--typography-label-md-default-line-height);letter-spacing:var(--typography-label-md-default-letter-spacing);text-align:center}.c-text-input__input:focus-visible{border-width:2px;border-color:var(--color-textfield-border-active);padding:calc(var(--input-padding-y) - 1px) calc(var(--input-padding-x) - 1px);box-shadow:none;outline:none}.c-text-input__input--sm{height:32px;--input-padding-y: var(--space-component-padding-xs);--input-padding-x: 2rem}.c-text-input__input--md{height:40px;--input-padding-y: var(--space-component-padding-xs);--input-padding-x: 2rem}.c-text-input__input.is-error{border-color:var(--color-textfield-border-error)}.c-text-input__input.is-success{border-color:var(--color-feedback-success-strong)}.c-text-input__input.is-disabled{background-color:var(--color-textfield-background-disabled);border-color:var(--color-textfield-border-disabled);color:var(--color-textfield-content-disabled)}.c-text-input__input.is-readonly{background-color:var(--color-textfield-background-disabled);border-color:var(--color-textfield-border-disabled)}.c-text-input__input.is-loading{border-color:var(--color-effect-skeleton-soft, #e5eaea);background-color:var(--color-textfield-background-default);color:transparent}.c-text-input__alert{display:flex;gap:var(--space-component-gap-sm);color:var(--color-feedback-danger-default);font-family:var(--typography-label-sm-default-family);font-size:var(--typography-label-sm-default-size);font-style:normal;font-weight:var(--typography-label-sm-default-weight);line-height:var(--typography-label-sm-default-line-height);letter-spacing:var(--typography-label-sm-default-letter-spacing)}.c-text-input__success{display:flex;gap:var(--space-component-gap-sm);color:var(--color-feedback-success-default);font-family:var(--typography-label-sm-default-family);font-size:var(--typography-label-sm-default-size);font-style:normal;font-weight:var(--typography-label-sm-default-weight);line-height:var(--typography-label-sm-default-line-height);letter-spacing:var(--typography-label-sm-default-letter-spacing)}.c-text-input__helper{color:var(--color-core-content-soft);font-family:var(--typography-label-sm-default-family);font-size:var(--typography-label-sm-default-size);font-style:normal;font-weight:var(--typography-label-sm-default-weight);line-height:var(--typography-label-sm-default-line-height);letter-spacing:var(--typography-label-sm-default-letter-spacing)}.c-text-input__helper.is-error{color:var(--color-textfield-helper-error)}.c-text-input__helper.is-success{color:var(--color-textfield-helper-success)}.c-text-input__helper.is-default{color:var(--color-textfield-helper-default)}.c-text-input__up{position:absolute;top:50%;right:var(--space-component-padding-sm);transform:translateY(-50%);background:none;border:none;cursor:pointer;padding:0;display:flex;align-items:center}.c-text-input__less{position:absolute;top:50%;left:var(--space-component-padding-sm);transform:translateY(-50%);background:none;border:none;cursor:pointer;padding:0;display:flex;align-items:center}.c-text-input__wrapper{display:flex;position:relative;width:100%}.c-text-input__wrapper--right .c-text-input__input{text-align:left}.c-text-input__wrapper--right .c-text-input__less{position:absolute;top:50%;right:calc(2rem + var(--space-component-padding-sm));transform:translateY(-50%);background:none;border:none;cursor:pointer;padding:0;display:flex;align-items:center;left:initial}.c-text-input__wrapper--right .c-text-input__up{position:absolute;top:50%;right:var(--space-component-padding-sm);transform:translateY(-50%);background:none;border:none;cursor:pointer;padding:0;display:flex;align-items:center}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}\n"] }]
4644
- }], ctorParameters: () => [], propDecorators: { label: [{
4645
+ ], template: "<div class=\"c-text-input\" [class.c-text-input--full-width]=\"fullWidth\">\n <lib-input-label\n *ngIf=\"label\"\n size=\"sm\"\n [required]=\"required\"\n [for]=\"name\"\n [text]=\"label\"\n [textOptional]=\"optionalLabel\"\n [isLoading]=\"isLoading\"\n ></lib-input-label>\n\n <input\n [attr.autocomplete]=\"autocomplete\"\n [id]=\"name\"\n [name]=\"name\"\n [type]=\"type\"\n [attr.inputmode]=\"inputmode\"\n [attr.step]=\"step\"\n [class]=\"inputClass.join(' ')\"\n [placeholder]=\"isLoading ? '' : placeholder\"\n [disabled]=\"disabled || isLoading\"\n [readonly]=\"readonly\"\n [value]=\"isLoading ? '' : _value\"\n [required]=\"required\"\n [attr.aria-invalid]=\"error ? 'true' : null\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n [attr.aria-label]=\"name\"\n [attr.aria-labelledby]=\"name\"\n (beforeinput)=\"onBeforeInput($event)\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n />\n\n <span\n *ngIf=\"helperText && !error && !success\"\n id=\"text-input-helper\"\n class=\"c-text-input__helper\"\n >\n <lib-helper-text\n [text]=\"helperText\"\n [isLoading]=\"isLoading\"\n ></lib-helper-text>\n </span>\n\n <span *ngIf=\"alertText && error\" class=\"c-text-input__alert\">\n <lib-helper-text\n variant=\"danger\"\n [text]=\"alertText\"\n [isLoading]=\"isLoading\"\n ></lib-helper-text>\n </span>\n\n <span *ngIf=\"successText && success\" class=\"c-text-input__success\">\n <lib-helper-text\n variant=\"success\"\n [text]=\"successText\"\n [isLoading]=\"isLoading\"\n ></lib-helper-text>\n </span>\n</div>\n", styles: [".c-text-input{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:var(--space-component-gap-sm);max-width:300px}.c-text-input--full-width{max-width:100%}.c-text-input__input{--input-padding-y: var(--space-component-padding-md);--input-padding-x: var(--space-component-padding-lg);height:48px;box-sizing:border-box;border-radius:var(--size-textfield-border-radius);border:var(--size-textfield-border-width) solid var(--color-textfield-border-default);background:var(--color-textfield-background-default);padding:var(--input-padding-y) var(--input-padding-x);align-items:center;gap:var(--space-component-gap-sm);align-self:stretch;color:var(--color-textfield-content-default);font-family:var(--typography-label-md-default-family);font-size:var(--typography-label-md-default-size);font-style:normal;font-weight:var(--typography-label-md-default-weight);line-height:var(--typography-label-md-default-line-height);letter-spacing:var(--typography-label-md-default-letter-spacing)}.c-text-input__input:focus-visible{border-width:2px;border-color:var(--color-textfield-border-active);padding:calc(var(--input-padding-y) - 1px) calc(var(--input-padding-x) - 1px);box-shadow:none;outline:none}.c-text-input__input--sm{height:32px;--input-padding-y: var(--space-component-padding-xs);--input-padding-x: var(--space-component-padding-sm)}.c-text-input__input--md{height:40px;--input-padding-y: var(--space-component-padding-xs);--input-padding-x: var(--space-component-padding-md)}.c-text-input__input.is-error{border-color:var(--color-textfield-border-error)}.c-text-input__input.is-success{border-color:var(--color-feedback-success-strong)}.c-text-input__input.is-disabled{background-color:var(--color-textfield-background-disabled);border-color:var(--color-textfield-border-disabled);color:var(--color-textfield-content-disabled)}.c-text-input__input.is-readonly{background-color:var(--color-textfield-background-disabled);border-color:var(--color-textfield-border-disabled)}.c-text-input__input.is-loading{border-color:var(--color-effect-skeleton-soft, #e5eaea);background-color:var(--color-textfield-background-default);color:transparent}.c-text-input__alert{display:flex;gap:var(--space-component-gap-sm);color:var(--color-feedback-danger-default);font-family:var(--typography-label-sm-default-family);font-size:var(--typography-label-sm-default-size);font-style:normal;font-weight:var(--typography-label-sm-default-weight);line-height:var(--typography-label-sm-default-line-height);letter-spacing:var(--typography-label-sm-default-letter-spacing)}.c-text-input__success{display:flex;gap:var(--space-component-gap-sm);color:var(--color-feedback-success-default);font-family:var(--typography-label-sm-default-family);font-size:var(--typography-label-sm-default-size);font-style:normal;font-weight:var(--typography-label-sm-default-weight);line-height:var(--typography-label-sm-default-line-height);letter-spacing:var(--typography-label-sm-default-letter-spacing)}.c-text-input__helper{color:var(--color-core-content-soft);font-family:var(--typography-label-sm-default-family);font-size:var(--typography-label-sm-default-size);font-style:normal;font-weight:var(--typography-label-sm-default-weight);line-height:var(--typography-label-sm-default-line-height);letter-spacing:var(--typography-label-sm-default-letter-spacing)}.c-text-input__helper.is-error{color:var(--color-textfield-helper-error)}.c-text-input__helper.is-success{color:var(--color-textfield-helper-success)}.c-text-input__helper.is-default{color:var(--color-textfield-helper-default)}\n"] }]
4646
+ }], propDecorators: { label: [{
4647
+ type: Input
4648
+ }], name: [{
4645
4649
  type: Input
4646
4650
  }], placeholder: [{
4647
4651
  type: Input
4648
4652
  }], helperText: [{
4649
4653
  type: Input
4650
- }], alertText: [{
4651
- type: Input
4652
- }], successText: [{
4653
- type: Input
4654
4654
  }], error: [{
4655
4655
  type: Input
4656
4656
  }], success: [{
4657
4657
  type: Input
4658
+ }], successText: [{
4659
+ type: Input
4660
+ }], alertText: [{
4661
+ type: Input
4658
4662
  }], disabled: [{
4659
4663
  type: Input
4664
+ }], readonly: [{
4665
+ type: Input
4660
4666
  }], required: [{
4661
4667
  type: Input
4662
4668
  }], optionalLabel: [{
4663
4669
  type: Input
4664
- }], readonly: [{
4665
- type: Input
4666
4670
  }], isLoading: [{
4667
4671
  type: Input
4668
- }], size: [{
4672
+ }], type: [{
4669
4673
  type: Input
4670
- }], variant: [{
4674
+ }], inputmode: [{
4671
4675
  type: Input
4672
- }], fullWidth: [{
4676
+ }], step: [{
4673
4677
  type: Input
4674
- }], minimum: [{
4678
+ }], size: [{
4675
4679
  type: Input
4676
- }], maximum: [{
4680
+ }], fullWidth: [{
4677
4681
  type: Input
4678
- }], step: [{
4682
+ }], autocomplete: [{
4683
+ type: Input
4684
+ }], regex: [{
4679
4685
  type: Input
4680
4686
  }], emitValue: [{
4681
4687
  type: Output
4682
4688
  }] } });
4683
4689
 
4690
+ /**
4691
+ * Number input component with automatic comma/dot conversion and validation
4692
+ * Wraps lib-text-input with number formatting logic
4693
+ */
4694
+ class InputNumberComponent {
4695
+ // Inputs
4696
+ label = input('');
4697
+ placeholder = input('');
4698
+ required = input(false);
4699
+ fullWidth = input(true);
4700
+ error = input(false);
4701
+ alertText = input('');
4702
+ helperText = input('');
4703
+ readonly = input(false);
4704
+ name = input('');
4705
+ size = input('md');
4706
+ autocomplete = input('off');
4707
+ success = input(false);
4708
+ successText = input('');
4709
+ isLoading = input(false);
4710
+ allowDecimals = input(true);
4711
+ allowNegative = input(false);
4712
+ inputmode = input(undefined);
4713
+ regex = input('');
4714
+ decimalSeparator = input('comma');
4715
+ maxDecimals = input(undefined);
4716
+ // Computed values
4717
+ effectiveInputmode = computed(() => this.inputmode() ?? (this.allowDecimals() ? 'decimal' : 'numeric'));
4718
+ regexPattern = computed(() => {
4719
+ if (this.regex())
4720
+ return this.regex();
4721
+ const negative = this.allowNegative() ? '-?' : '';
4722
+ const integer = '[0-9]*';
4723
+ if (!this.allowDecimals())
4724
+ return `^${negative}${integer}$`;
4725
+ const separator = this.decimalSeparator() === 'comma' ? ',' : '\\.';
4726
+ const decimal = this.maxDecimals() !== undefined
4727
+ ? `[0-9]{0,${this.maxDecimals()}}`
4728
+ : '[0-9]*';
4729
+ return `^${negative}${integer}${separator}?${decimal}$`;
4730
+ });
4731
+ // Internal control
4732
+ internalControl = new FormControl('', { nonNullable: true });
4733
+ // ControlValueAccessor callbacks
4734
+ onChange = () => { };
4735
+ onTouched = () => { };
4736
+ constructor() {
4737
+ // Parse on every change; distinctUntilChanged prevents redundant emissions
4738
+ this.internalControl.valueChanges
4739
+ .pipe(map((value) => this.parseNumber(value)), distinctUntilChanged(), takeUntilDestroyed())
4740
+ .subscribe((value) => this.onChange(value));
4741
+ }
4742
+ // Convert string to number
4743
+ parseNumber(value) {
4744
+ if (!value)
4745
+ return null;
4746
+ if (value.endsWith('.') || value.endsWith(',')) {
4747
+ return null;
4748
+ }
4749
+ const normalized = value.replace(',', '.');
4750
+ const parsed = parseFloat(normalized);
4751
+ return isNaN(parsed) ? null : parsed;
4752
+ }
4753
+ // Convert number to display string
4754
+ formatNumber(value) {
4755
+ const str = value.toString();
4756
+ return this.decimalSeparator() === 'comma' ? str.replace('.', ',') : str;
4757
+ }
4758
+ // Write value
4759
+ writeValue(value) {
4760
+ const formatted = value === null || value === undefined ? '' : this.formatNumber(value);
4761
+ this.internalControl.setValue(formatted, { emitEvent: false });
4762
+ }
4763
+ // Register change
4764
+ registerOnChange(fn) {
4765
+ this.onChange = fn;
4766
+ }
4767
+ // Register touched
4768
+ registerOnTouched(fn) {
4769
+ this.onTouched = fn;
4770
+ }
4771
+ // Disabled state
4772
+ setDisabledState(isDisabled) {
4773
+ if (isDisabled) {
4774
+ this.internalControl.disable({ emitEvent: false });
4775
+ }
4776
+ else {
4777
+ this.internalControl.enable({ emitEvent: false });
4778
+ }
4779
+ }
4780
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.7", ngImport: i0, type: InputNumberComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4781
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.7", type: InputNumberComponent, isStandalone: true, selector: "lib-input-number", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, fullWidth: { classPropertyName: "fullWidth", publicName: "fullWidth", isSignal: true, isRequired: false, transformFunction: null }, error: { classPropertyName: "error", publicName: "error", isSignal: true, isRequired: false, transformFunction: null }, alertText: { classPropertyName: "alertText", publicName: "alertText", isSignal: true, isRequired: false, transformFunction: null }, helperText: { classPropertyName: "helperText", publicName: "helperText", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, autocomplete: { classPropertyName: "autocomplete", publicName: "autocomplete", isSignal: true, isRequired: false, transformFunction: null }, success: { classPropertyName: "success", publicName: "success", isSignal: true, isRequired: false, transformFunction: null }, successText: { classPropertyName: "successText", publicName: "successText", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, allowDecimals: { classPropertyName: "allowDecimals", publicName: "allowDecimals", isSignal: true, isRequired: false, transformFunction: null }, allowNegative: { classPropertyName: "allowNegative", publicName: "allowNegative", isSignal: true, isRequired: false, transformFunction: null }, inputmode: { classPropertyName: "inputmode", publicName: "inputmode", isSignal: true, isRequired: false, transformFunction: null }, regex: { classPropertyName: "regex", publicName: "regex", isSignal: true, isRequired: false, transformFunction: null }, decimalSeparator: { classPropertyName: "decimalSeparator", publicName: "decimalSeparator", isSignal: true, isRequired: false, transformFunction: null }, maxDecimals: { classPropertyName: "maxDecimals", publicName: "maxDecimals", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
4782
+ {
4783
+ provide: NG_VALUE_ACCESSOR,
4784
+ useExisting: forwardRef(() => InputNumberComponent),
4785
+ multi: true,
4786
+ },
4787
+ ], ngImport: i0, template: "<lib-text-input\n [formControl]=\"internalControl\"\n [label]=\"label()\"\n [name]=\"name()\"\n [placeholder]=\"placeholder()\"\n [required]=\"required()\"\n [fullWidth]=\"fullWidth()\"\n [error]=\"error()\"\n [alertText]=\"alertText()\"\n [helperText]=\"helperText()\"\n [readonly]=\"readonly()\"\n [size]=\"size()\"\n [autocomplete]=\"autocomplete()\"\n [success]=\"success()\"\n [successText]=\"successText()\"\n [isLoading]=\"isLoading()\"\n type=\"text\"\n [inputmode]=\"effectiveInputmode()\"\n [regex]=\"regexPattern()\"\n>\n</lib-text-input>\n", styles: [""], dependencies: [{ kind: "component", type: TextInputComponent, selector: "lib-text-input", inputs: ["label", "name", "placeholder", "helperText", "error", "success", "successText", "alertText", "disabled", "readonly", "required", "optionalLabel", "isLoading", "type", "inputmode", "step", "size", "fullWidth", "autocomplete", "regex"], outputs: ["emitValue"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
4788
+ }
4789
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.7", ngImport: i0, type: InputNumberComponent, decorators: [{
4790
+ type: Component,
4791
+ args: [{ selector: 'lib-input-number', standalone: true, imports: [TextInputComponent, ReactiveFormsModule], providers: [
4792
+ {
4793
+ provide: NG_VALUE_ACCESSOR,
4794
+ useExisting: forwardRef(() => InputNumberComponent),
4795
+ multi: true,
4796
+ },
4797
+ ], template: "<lib-text-input\n [formControl]=\"internalControl\"\n [label]=\"label()\"\n [name]=\"name()\"\n [placeholder]=\"placeholder()\"\n [required]=\"required()\"\n [fullWidth]=\"fullWidth()\"\n [error]=\"error()\"\n [alertText]=\"alertText()\"\n [helperText]=\"helperText()\"\n [readonly]=\"readonly()\"\n [size]=\"size()\"\n [autocomplete]=\"autocomplete()\"\n [success]=\"success()\"\n [successText]=\"successText()\"\n [isLoading]=\"isLoading()\"\n type=\"text\"\n [inputmode]=\"effectiveInputmode()\"\n [regex]=\"regexPattern()\"\n>\n</lib-text-input>\n" }]
4798
+ }], ctorParameters: () => [] });
4799
+
4684
4800
  class InputPaymentComponent {
4685
4801
  label = '';
4686
4802
  placeholder = '';
@@ -5126,6 +5242,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.7", ngImpor
5126
5242
  args: [{ selector: 'lib-link', imports: [NgClass, IconComponent, RouterLink], template: "@if (!external()) {\n<a\n [ngClass]=\"[\n 'c-link',\n variantClass(),\n sizeClass(),\n weightClass(),\n underlineClass(),\n disabled() ? 'c-link--disabled' : ''\n ]\"\n [routerLink]=\"href()\"\n [queryParams]=\"queryParams()\"\n [attr.aria-disabled]=\"finalAriaDisabled()\"\n (click)=\"onClick($event)\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n (mousedown)=\"onMouseDown()\"\n (mouseup)=\"onMouseUp()\"\n>\n @if (iconBefore()) {\n <span class=\"c-link__icon\">\n <lib-icon\n [name]=\"iconBefore()!\"\n [size]=\"iconSize()\"\n [color]=\"iconColor()\"\n ></lib-icon>\n </span>\n }\n <span class=\"c-link__text\">{{ text() }}</span>\n @if (iconAfter()) {\n <span class=\"c-link__icon\">\n <lib-icon\n [name]=\"iconAfter()!\"\n [size]=\"iconSize()\"\n [color]=\"iconColor()\"\n ></lib-icon>\n </span>\n }\n</a>\n} @else {\n<a\n [ngClass]=\"[\n 'c-link',\n variantClass(),\n sizeClass(),\n weightClass(),\n underlineClass(),\n disabled() ? 'c-link--disabled' : ''\n ]\"\n [href]=\"href()\"\n [target]=\"target()\"\n [attr.rel]=\"rel()\"\n [attr.aria-disabled]=\"finalAriaDisabled()\"\n [attr.aria-label]=\"finalAriaLabel()\"\n (click)=\"onClick($event)\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n (mousedown)=\"onMouseDown()\"\n (mouseup)=\"onMouseUp()\"\n>\n @if (iconBefore()) {\n <span class=\"c-link__icon\">\n <lib-icon\n [name]=\"iconBefore()!\"\n [size]=\"iconSize()\"\n [color]=\"iconColor()\"\n ></lib-icon>\n </span>\n }\n <span class=\"c-link__text\">{{ text() }}</span>\n @if (external()) {\n <span class=\"sr-only\">(opens in a new tab)</span>\n } @if (iconAfter()) {\n <span class=\"c-link__icon\">\n <lib-icon\n [name]=\"iconAfter()!\"\n [size]=\"iconSize()\"\n [color]=\"iconColor()\"\n ></lib-icon>\n </span>\n }\n</a>\n}\n", styles: [".sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.c-link{position:relative;display:flex;align-items:center;width:fit-content;gap:var(--space-component-gap-xs);font-family:var(--typography-label-md-default-family),sans-serif;font-weight:var(--typography-label-md-default-weight);font-size:var(--typography-label-md-default-size);line-height:var(--typography-label-md-default-line-height);letter-spacing:var(--typography-label-md-default-letter-spacing);text-decoration:none;border-radius:var(--size-border-radius-sm);cursor:pointer}.c-link--sm{font-family:var(--typography-label-sm-default-family),sans-serif;font-weight:var(--typography-label-sm-default-weight);font-size:var(--typography-label-sm-default-size);line-height:var(--typography-label-sm-default-line-height);letter-spacing:var(--typography-label-sm-default-letter-spacing)}.c-link--xs{font-family:var(--typography-label-xs-default-family),sans-serif;font-weight:var(--typography-label-xs-default-weight);font-size:var(--typography-label-xs-default-size);line-height:var(--typography-label-xs-default-line-height);letter-spacing:var(--typography-label-xs-default-letter-spacing)}.c-link--bold{font-weight:var(--typography-font-weight-bold)}.c-link--underline{text-decoration:underline}.c-link__icon{display:flex;align-items:center}.c-link:hover:not(.c-link--underline){text-decoration:underline}.c-link:focus-visible{box-shadow:var(--focus-outset);outline:none}.c-link--primary{color:var(--color-action-primary-content-default)}.c-link--primary:hover{color:var(--color-action-primary-content-hover)}.c-link--primary:active{color:var(--color-action-primary-content-pressed)}.c-link--neutral{color:var(--color-action-neutral-content-default)}.c-link--neutral:hover{color:var(--color-action-neutral-content-hover)}.c-link--neutral:active{color:var(--color-action-neutral-content-pressed)}.c-link--inverse{color:var(--color-action-inverse-content-default)}.c-link--inverse:hover{color:var(--color-action-inverse-content-hover)}.c-link--inverse:active{color:var(--color-action-inverse-content-pressed)}.c-link--danger{color:var(--color-action-danger-content-default)}.c-link--danger:hover{color:var(--color-action-danger-content-hover)}.c-link--danger:active{color:var(--color-action-danger-content-pressed)}.c-link--disabled{cursor:not-allowed}.c-link--disabled:hover{text-decoration:none}.c-link--disabled.c-link--primary{color:var(--color-action-primary-content-disabled)}.c-link--disabled.c-link--neutral{color:var(--color-action-neutral-content-disabled)}.c-link--disabled.c-link--inverse{color:var(--color-action-inverse-content-disabled)}.c-link--disabled.c-link--danger{color:var(--color-action-danger-content-disabled)}\n"] }]
5127
5243
  }] });
5128
5244
 
5245
+ class TagComponent {
5246
+ size = input('xs');
5247
+ variant = input('neutral');
5248
+ text = input('');
5249
+ extraClass = input('');
5250
+ showBadge = input(true);
5251
+ closeActive = input(true);
5252
+ emphasis = input(false);
5253
+ skeletonActive = input(false);
5254
+ closeEvent = output();
5255
+ onClose() {
5256
+ this.closeEvent.emit();
5257
+ }
5258
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.7", ngImport: i0, type: TagComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5259
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.7", type: TagComponent, isStandalone: true, selector: "lib-tag", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, extraClass: { classPropertyName: "extraClass", publicName: "extraClass", isSignal: true, isRequired: false, transformFunction: null }, showBadge: { classPropertyName: "showBadge", publicName: "showBadge", isSignal: true, isRequired: false, transformFunction: null }, closeActive: { classPropertyName: "closeActive", publicName: "closeActive", isSignal: true, isRequired: false, transformFunction: null }, emphasis: { classPropertyName: "emphasis", publicName: "emphasis", isSignal: true, isRequired: false, transformFunction: null }, skeletonActive: { classPropertyName: "skeletonActive", publicName: "skeletonActive", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closeEvent: "closeEvent" }, ngImport: i0, template: "@if (skeletonActive()) {\n<div class=\"skeleton\"></div>\n} @else {\n<span\n [ngClass]=\"[\n 'c-tag',\n variant() ? 'c-tag--' + variant() : '',\n extraClass() ? extraClass() : '',\n emphasis() ? 'c-tag--emphasis' : '',\n closeActive() ? 'c-tag--close-active' : '',\n size() ? 'c-tag--' + size() : '',\n emphasis() && closeActive() ? 'c-tag--emphasis-close-active' : ''\n ]\"\n>\n @if (showBadge()) {\n <span class=\"c-tag__dot\"></span>\n }\n <span class=\"c-tag__text\">{{ text() }}</span>\n @if (closeActive()) {\n <lib-button-icon\n role=\"button\"\n [ariaLabel]=\"variant()\"\n [loading]=\"false\"\n [disabled]=\"variant() === 'disabled'\"\n [variant]=\"emphasis() ? 'inverse' : 'neutral'\"\n [size]=\"size() === 'xs' ? 'xs' : 'sm'\"\n class=\"c-tag__close\"\n iconName=\"x-regular\"\n (click)=\"onClose()\"\n >\n </lib-button-icon>\n }\n</span>\n}\n", styles: [".c-tag{display:inline-flex;height:1.5rem;max-width:100%;padding:0 var(--space-component-padding-sm);align-items:center;gap:var(--space-component-gap-sm);flex-shrink:0;border-radius:var(--size-border-radius-md);text-align:center;font-family:var(--typography-label-xs-strong-family);font-size:var(--typography-label-xs-strong-size);font-weight:var(--typography-label-xs-strong-weight);line-height:var(--typography-label-xs-strong-line-height);letter-spacing:var(--typography-label-xs-strong-letter-spacing)}.c-tag--sm{height:2rem;font-family:var(--typography-label-md-strong-family);font-size:var(--typography-label-md-strong-size);font-weight:var(--typography-label-md-strong-weight);line-height:var(--typography-label-md-strong-line-height);letter-spacing:var(--typography-label-md-strong-letter-spacing)}.c-tag__dot{width:.5rem;height:.5rem;border-radius:50%;flex-shrink:0}.c-tag__text{flex:1 1 0;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.c-tag--close-active{padding-right:0}.c-tag--emphasis-close-active{border-top-right-radius:10px;border-bottom-right-radius:10px}.c-tag--danger{background:var(--color-feedback-danger-soft);color:var(--color-feedback-danger-stronger)}.c-tag--danger .c-tag__dot{background:var(--color-feedback-danger-stronger)}.c-tag--warning{color:var(--color-feedback-warning-stronger);background:var(--color-feedback-warning-soft)}.c-tag--warning .c-tag__dot{background:var(--color-feedback-warning-stronger)}.c-tag--success{color:var(--color-feedback-success-stronger);background:var(--color-feedback-success-soft)}.c-tag--success .c-tag__dot{background:var(--color-feedback-success-stronger)}.c-tag--info{background:var(--color-feedback-info-soft);color:var(--color-feedback-info-stronger)}.c-tag--info .c-tag__dot{background:var(--color-feedback-info-stronger)}.c-tag--neutral{background:var(--color-feedback-neutral-soft);color:var(--color-feedback-neutral-stronger)}.c-tag--neutral .c-tag__dot{background:var(--color-feedback-neutral-stronger)}.c-tag--primary{background:var(--color-decorative-primary-soft);color:var(--color-decorative-primary-stronger)}.c-tag--primary .c-tag__dot{background:var(--color-decorative-primary-stronger)}.c-tag--secondary{background:var(--color-decorative-secondary-soft);color:var(--color-decorative-secondary-stronger)}.c-tag--secondary .c-tag__dot{background:var(--color-decorative-secondary-stronger)}.c-tag--disabled{background:var(--color-action-neutral-background-disabled);color:var(--color-action-neutral-content-disabled)}.c-tag--disabled .c-tag__dot{background:var(--color-action-neutral-content-disabled)}.c-tag--emphasis.c-tag--danger{color:var(--color-feedback-danger-subtle);background:var(--color-feedback-danger-default)}.c-tag--emphasis.c-tag--danger .c-tag__dot{background:var(--color-feedback-danger-subtle)}.c-tag--emphasis.c-tag--warning{color:var(--color-feedback-warning-subtle);background:var(--color-feedback-warning-default)}.c-tag--emphasis.c-tag--warning .c-tag__dot{background:var(--color-feedback-warning-subtle)}.c-tag--emphasis.c-tag--success{color:var(--color-feedback-success-subtle);background:var(--color-feedback-success-default)}.c-tag--emphasis.c-tag--success .c-tag__dot{background:var(--color-feedback-success-subtle)}.c-tag--emphasis.c-tag--info{color:var(--color-feedback-info-subtle);background:var(--color-feedback-info-default)}.c-tag--emphasis.c-tag--info .c-tag__dot{background:var(--color-feedback-info-subtle)}.c-tag--emphasis.c-tag--neutral{color:var(--color-feedback-neutral-subtle);background:var(--color-feedback-neutral-default)}.c-tag--emphasis.c-tag--neutral .c-tag__dot{background:var(--color-feedback-neutral-subtle)}.c-tag--emphasis.c-tag--primary{background:var(--color-decorative-primary-default);color:var(--color-core-content-inverse)}.c-tag--emphasis.c-tag--primary .c-tag__dot{background:var(--color-core-content-inverse)}.c-tag--emphasis.c-tag--secondary{background:var(--color-decorative-secondary-default);color:var(--color-core-content-inverse)}.c-tag--emphasis.c-tag--secondary .c-tag__dot{background:var(--color-core-content-inverse)}.c-tag--emphasis.c-tag--disabled{background:var(--color-action-neutral-background-disabled);color:var(--color-action-neutral-content-disabled)}.c-tag--emphasis.c-tag--disabled .c-tag__dot{background:var(--color-action-neutral-content-disabled)}.skeleton{width:4rem;height:1.5rem;background:var(--color-effect-skeleton-soft);border-radius:var(--size-border-radius-md)}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ButtonIconComponent, selector: "lib-button-icon", inputs: ["ariaLabel", "variant", "size", "iconName", "disabled", "loading", "skeletonActive"], outputs: ["clicked"] }] });
5260
+ }
5261
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.7", ngImport: i0, type: TagComponent, decorators: [{
5262
+ type: Component,
5263
+ args: [{ selector: 'lib-tag', imports: [NgClass, ButtonIconComponent], template: "@if (skeletonActive()) {\n<div class=\"skeleton\"></div>\n} @else {\n<span\n [ngClass]=\"[\n 'c-tag',\n variant() ? 'c-tag--' + variant() : '',\n extraClass() ? extraClass() : '',\n emphasis() ? 'c-tag--emphasis' : '',\n closeActive() ? 'c-tag--close-active' : '',\n size() ? 'c-tag--' + size() : '',\n emphasis() && closeActive() ? 'c-tag--emphasis-close-active' : ''\n ]\"\n>\n @if (showBadge()) {\n <span class=\"c-tag__dot\"></span>\n }\n <span class=\"c-tag__text\">{{ text() }}</span>\n @if (closeActive()) {\n <lib-button-icon\n role=\"button\"\n [ariaLabel]=\"variant()\"\n [loading]=\"false\"\n [disabled]=\"variant() === 'disabled'\"\n [variant]=\"emphasis() ? 'inverse' : 'neutral'\"\n [size]=\"size() === 'xs' ? 'xs' : 'sm'\"\n class=\"c-tag__close\"\n iconName=\"x-regular\"\n (click)=\"onClose()\"\n >\n </lib-button-icon>\n }\n</span>\n}\n", styles: [".c-tag{display:inline-flex;height:1.5rem;max-width:100%;padding:0 var(--space-component-padding-sm);align-items:center;gap:var(--space-component-gap-sm);flex-shrink:0;border-radius:var(--size-border-radius-md);text-align:center;font-family:var(--typography-label-xs-strong-family);font-size:var(--typography-label-xs-strong-size);font-weight:var(--typography-label-xs-strong-weight);line-height:var(--typography-label-xs-strong-line-height);letter-spacing:var(--typography-label-xs-strong-letter-spacing)}.c-tag--sm{height:2rem;font-family:var(--typography-label-md-strong-family);font-size:var(--typography-label-md-strong-size);font-weight:var(--typography-label-md-strong-weight);line-height:var(--typography-label-md-strong-line-height);letter-spacing:var(--typography-label-md-strong-letter-spacing)}.c-tag__dot{width:.5rem;height:.5rem;border-radius:50%;flex-shrink:0}.c-tag__text{flex:1 1 0;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.c-tag--close-active{padding-right:0}.c-tag--emphasis-close-active{border-top-right-radius:10px;border-bottom-right-radius:10px}.c-tag--danger{background:var(--color-feedback-danger-soft);color:var(--color-feedback-danger-stronger)}.c-tag--danger .c-tag__dot{background:var(--color-feedback-danger-stronger)}.c-tag--warning{color:var(--color-feedback-warning-stronger);background:var(--color-feedback-warning-soft)}.c-tag--warning .c-tag__dot{background:var(--color-feedback-warning-stronger)}.c-tag--success{color:var(--color-feedback-success-stronger);background:var(--color-feedback-success-soft)}.c-tag--success .c-tag__dot{background:var(--color-feedback-success-stronger)}.c-tag--info{background:var(--color-feedback-info-soft);color:var(--color-feedback-info-stronger)}.c-tag--info .c-tag__dot{background:var(--color-feedback-info-stronger)}.c-tag--neutral{background:var(--color-feedback-neutral-soft);color:var(--color-feedback-neutral-stronger)}.c-tag--neutral .c-tag__dot{background:var(--color-feedback-neutral-stronger)}.c-tag--primary{background:var(--color-decorative-primary-soft);color:var(--color-decorative-primary-stronger)}.c-tag--primary .c-tag__dot{background:var(--color-decorative-primary-stronger)}.c-tag--secondary{background:var(--color-decorative-secondary-soft);color:var(--color-decorative-secondary-stronger)}.c-tag--secondary .c-tag__dot{background:var(--color-decorative-secondary-stronger)}.c-tag--disabled{background:var(--color-action-neutral-background-disabled);color:var(--color-action-neutral-content-disabled)}.c-tag--disabled .c-tag__dot{background:var(--color-action-neutral-content-disabled)}.c-tag--emphasis.c-tag--danger{color:var(--color-feedback-danger-subtle);background:var(--color-feedback-danger-default)}.c-tag--emphasis.c-tag--danger .c-tag__dot{background:var(--color-feedback-danger-subtle)}.c-tag--emphasis.c-tag--warning{color:var(--color-feedback-warning-subtle);background:var(--color-feedback-warning-default)}.c-tag--emphasis.c-tag--warning .c-tag__dot{background:var(--color-feedback-warning-subtle)}.c-tag--emphasis.c-tag--success{color:var(--color-feedback-success-subtle);background:var(--color-feedback-success-default)}.c-tag--emphasis.c-tag--success .c-tag__dot{background:var(--color-feedback-success-subtle)}.c-tag--emphasis.c-tag--info{color:var(--color-feedback-info-subtle);background:var(--color-feedback-info-default)}.c-tag--emphasis.c-tag--info .c-tag__dot{background:var(--color-feedback-info-subtle)}.c-tag--emphasis.c-tag--neutral{color:var(--color-feedback-neutral-subtle);background:var(--color-feedback-neutral-default)}.c-tag--emphasis.c-tag--neutral .c-tag__dot{background:var(--color-feedback-neutral-subtle)}.c-tag--emphasis.c-tag--primary{background:var(--color-decorative-primary-default);color:var(--color-core-content-inverse)}.c-tag--emphasis.c-tag--primary .c-tag__dot{background:var(--color-core-content-inverse)}.c-tag--emphasis.c-tag--secondary{background:var(--color-decorative-secondary-default);color:var(--color-core-content-inverse)}.c-tag--emphasis.c-tag--secondary .c-tag__dot{background:var(--color-core-content-inverse)}.c-tag--emphasis.c-tag--disabled{background:var(--color-action-neutral-background-disabled);color:var(--color-action-neutral-content-disabled)}.c-tag--emphasis.c-tag--disabled .c-tag__dot{background:var(--color-action-neutral-content-disabled)}.skeleton{width:4rem;height:1.5rem;background:var(--color-effect-skeleton-soft);border-radius:var(--size-border-radius-md)}\n"] }]
5264
+ }] });
5265
+
5129
5266
  class MenuChildItemComponent {
5130
5267
  label = input('');
5131
5268
  icon = input('');
@@ -5154,27 +5291,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.7", ngImpor
5154
5291
  args: [{ selector: 'lib-menu-child-item', imports: [NgClass], template: "<button\n [ngClass]=\"[\n 'c-menu-child-item',\n selected() ? 'c-menu-child-item--selected' : '',\n disabled() ? 'c-menu-child-item--disabled' : ''\n ]\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"label()\"\n [attr.aria-selected]=\"selected()\"\n (click)=\"handleClick()\"\n>\n @if (label()) {\n <span class=\"c-menu-child-item__label\">{{ label() }}</span>\n }\n</button>\n", styles: [".c-menu-child-item{display:flex;align-items:center;width:100%;min-height:40px;padding:var(--space-component-padding-none, 0) var(--space-component-padding-sm, 8px) var(--space-component-padding-none) var(--space-component-padding-2xl);border:none;background:var(--color-menu-item-background-default);cursor:pointer;font-family:var(--typography-label-md-default-family),sans-serif;font-weight:var(--typography-label-md-default-weight);font-size:var(--typography-label-md-default-size);line-height:var(--typography-label-md-default-line-height);letter-spacing:var(--typography-label-md-default-letter-spacing);color:var(--color-action-neutral-content-default);text-align:left;transition:all var(--transition-base-duration) var(--transition-base-easing);border-radius:var(--size-border-radius-md)}.c-menu-child-item:hover:not(:disabled){background-color:var(--color-menu-item-background-hover)}.c-menu-child-item:focus-visible{box-shadow:var(--focus-inset);outline:0}.c-menu-child-item__label{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-left:var(--space-component-padding-lg)}.c-menu-child-item--selected{background:var(--color-menu-item-child-background-active);color:var(--color-core-content-default)}.c-menu-child-item--selected:hover{background-color:var(--color-action-primary-background-selected-hover)}.c-menu-child-item--selected:focus-visible{box-shadow:var(--focus-inset);outline:0}.c-menu-child-item--disabled{cursor:not-allowed;color:var(--color-menu-item-content-disabled)}.c-menu-child-item--disabled:hover{background-color:transparent}\n"] }]
5155
5292
  }] });
5156
5293
 
5157
- class TagComponent {
5158
- size = input('xs');
5159
- variant = input('neutral');
5160
- text = input('');
5161
- extraClass = input('');
5162
- showBadge = input(true);
5163
- closeActive = input(true);
5164
- emphasis = input(false);
5165
- skeletonActive = input(false);
5166
- closeEvent = output();
5167
- onClose() {
5168
- this.closeEvent.emit();
5169
- }
5170
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.7", ngImport: i0, type: TagComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5171
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.7", type: TagComponent, isStandalone: true, selector: "lib-tag", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, extraClass: { classPropertyName: "extraClass", publicName: "extraClass", isSignal: true, isRequired: false, transformFunction: null }, showBadge: { classPropertyName: "showBadge", publicName: "showBadge", isSignal: true, isRequired: false, transformFunction: null }, closeActive: { classPropertyName: "closeActive", publicName: "closeActive", isSignal: true, isRequired: false, transformFunction: null }, emphasis: { classPropertyName: "emphasis", publicName: "emphasis", isSignal: true, isRequired: false, transformFunction: null }, skeletonActive: { classPropertyName: "skeletonActive", publicName: "skeletonActive", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closeEvent: "closeEvent" }, ngImport: i0, template: "@if (skeletonActive()) {\n<div class=\"skeleton\"></div>\n} @else {\n<span\n [ngClass]=\"[\n 'c-tag',\n variant() ? 'c-tag--' + variant() : '',\n extraClass() ? extraClass() : '',\n emphasis() ? 'c-tag--emphasis' : '',\n closeActive() ? 'c-tag--close-active' : '',\n size() ? 'c-tag--' + size() : '',\n emphasis() && closeActive() ? 'c-tag--emphasis-close-active' : ''\n ]\"\n>\n @if (showBadge()) {\n <span class=\"c-tag__dot\"></span>\n }\n <span class=\"c-tag__text\">{{ text() }}</span>\n @if (closeActive()) {\n <lib-button-icon\n role=\"button\"\n [ariaLabel]=\"variant()\"\n [loading]=\"false\"\n [disabled]=\"variant() === 'disabled'\"\n [variant]=\"emphasis() ? 'inverse' : 'neutral'\"\n [size]=\"size() === 'xs' ? 'xs' : 'sm'\"\n class=\"c-tag__close\"\n iconName=\"x-regular\"\n (click)=\"onClose()\"\n >\n </lib-button-icon>\n }\n</span>\n}\n", styles: [".c-tag{display:inline-flex;height:1.5rem;max-width:100%;padding:0 var(--space-component-padding-sm);align-items:center;gap:var(--space-component-gap-sm);flex-shrink:0;border-radius:var(--size-border-radius-md);text-align:center;font-family:var(--typography-label-xs-strong-family);font-size:var(--typography-label-xs-strong-size);font-weight:var(--typography-label-xs-strong-weight);line-height:var(--typography-label-xs-strong-line-height);letter-spacing:var(--typography-label-xs-strong-letter-spacing)}.c-tag--sm{height:2rem;font-family:var(--typography-label-md-strong-family);font-size:var(--typography-label-md-strong-size);font-weight:var(--typography-label-md-strong-weight);line-height:var(--typography-label-md-strong-line-height);letter-spacing:var(--typography-label-md-strong-letter-spacing)}.c-tag__dot{width:.5rem;height:.5rem;border-radius:50%;flex-shrink:0}.c-tag__text{flex:1 1 0;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.c-tag--close-active{padding-right:0}.c-tag--emphasis-close-active{border-top-right-radius:10px;border-bottom-right-radius:10px}.c-tag--danger{background:var(--color-feedback-danger-soft);color:var(--color-feedback-danger-stronger)}.c-tag--danger .c-tag__dot{background:var(--color-feedback-danger-stronger)}.c-tag--warning{color:var(--color-feedback-warning-stronger);background:var(--color-feedback-warning-soft)}.c-tag--warning .c-tag__dot{background:var(--color-feedback-warning-stronger)}.c-tag--success{color:var(--color-feedback-success-stronger);background:var(--color-feedback-success-soft)}.c-tag--success .c-tag__dot{background:var(--color-feedback-success-stronger)}.c-tag--info{background:var(--color-feedback-info-soft);color:var(--color-feedback-info-stronger)}.c-tag--info .c-tag__dot{background:var(--color-feedback-info-stronger)}.c-tag--neutral{background:var(--color-feedback-neutral-soft);color:var(--color-feedback-neutral-stronger)}.c-tag--neutral .c-tag__dot{background:var(--color-feedback-neutral-stronger)}.c-tag--primary{background:var(--color-decorative-primary-soft);color:var(--color-decorative-primary-stronger)}.c-tag--primary .c-tag__dot{background:var(--color-decorative-primary-stronger)}.c-tag--secondary{background:var(--color-decorative-secondary-soft);color:var(--color-decorative-secondary-stronger)}.c-tag--secondary .c-tag__dot{background:var(--color-decorative-secondary-stronger)}.c-tag--disabled{background:var(--color-action-neutral-background-disabled);color:var(--color-action-neutral-content-disabled)}.c-tag--disabled .c-tag__dot{background:var(--color-action-neutral-content-disabled)}.c-tag--emphasis.c-tag--danger{color:var(--color-feedback-danger-subtle);background:var(--color-feedback-danger-default)}.c-tag--emphasis.c-tag--danger .c-tag__dot{background:var(--color-feedback-danger-subtle)}.c-tag--emphasis.c-tag--warning{color:var(--color-feedback-warning-subtle);background:var(--color-feedback-warning-default)}.c-tag--emphasis.c-tag--warning .c-tag__dot{background:var(--color-feedback-warning-subtle)}.c-tag--emphasis.c-tag--success{color:var(--color-feedback-success-subtle);background:var(--color-feedback-success-default)}.c-tag--emphasis.c-tag--success .c-tag__dot{background:var(--color-feedback-success-subtle)}.c-tag--emphasis.c-tag--info{color:var(--color-feedback-info-subtle);background:var(--color-feedback-info-default)}.c-tag--emphasis.c-tag--info .c-tag__dot{background:var(--color-feedback-info-subtle)}.c-tag--emphasis.c-tag--neutral{color:var(--color-feedback-neutral-subtle);background:var(--color-feedback-neutral-default)}.c-tag--emphasis.c-tag--neutral .c-tag__dot{background:var(--color-feedback-neutral-subtle)}.c-tag--emphasis.c-tag--primary{background:var(--color-decorative-primary-default);color:var(--color-core-content-inverse)}.c-tag--emphasis.c-tag--primary .c-tag__dot{background:var(--color-core-content-inverse)}.c-tag--emphasis.c-tag--secondary{background:var(--color-decorative-secondary-default);color:var(--color-core-content-inverse)}.c-tag--emphasis.c-tag--secondary .c-tag__dot{background:var(--color-core-content-inverse)}.c-tag--emphasis.c-tag--disabled{background:var(--color-action-neutral-background-disabled);color:var(--color-action-neutral-content-disabled)}.c-tag--emphasis.c-tag--disabled .c-tag__dot{background:var(--color-action-neutral-content-disabled)}.skeleton{width:4rem;height:1.5rem;background:var(--color-effect-skeleton-soft);border-radius:var(--size-border-radius-md)}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ButtonIconComponent, selector: "lib-button-icon", inputs: ["ariaLabel", "variant", "size", "iconName", "disabled", "loading", "skeletonActive"], outputs: ["clicked"] }] });
5172
- }
5173
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.7", ngImport: i0, type: TagComponent, decorators: [{
5174
- type: Component,
5175
- args: [{ selector: 'lib-tag', imports: [NgClass, ButtonIconComponent], template: "@if (skeletonActive()) {\n<div class=\"skeleton\"></div>\n} @else {\n<span\n [ngClass]=\"[\n 'c-tag',\n variant() ? 'c-tag--' + variant() : '',\n extraClass() ? extraClass() : '',\n emphasis() ? 'c-tag--emphasis' : '',\n closeActive() ? 'c-tag--close-active' : '',\n size() ? 'c-tag--' + size() : '',\n emphasis() && closeActive() ? 'c-tag--emphasis-close-active' : ''\n ]\"\n>\n @if (showBadge()) {\n <span class=\"c-tag__dot\"></span>\n }\n <span class=\"c-tag__text\">{{ text() }}</span>\n @if (closeActive()) {\n <lib-button-icon\n role=\"button\"\n [ariaLabel]=\"variant()\"\n [loading]=\"false\"\n [disabled]=\"variant() === 'disabled'\"\n [variant]=\"emphasis() ? 'inverse' : 'neutral'\"\n [size]=\"size() === 'xs' ? 'xs' : 'sm'\"\n class=\"c-tag__close\"\n iconName=\"x-regular\"\n (click)=\"onClose()\"\n >\n </lib-button-icon>\n }\n</span>\n}\n", styles: [".c-tag{display:inline-flex;height:1.5rem;max-width:100%;padding:0 var(--space-component-padding-sm);align-items:center;gap:var(--space-component-gap-sm);flex-shrink:0;border-radius:var(--size-border-radius-md);text-align:center;font-family:var(--typography-label-xs-strong-family);font-size:var(--typography-label-xs-strong-size);font-weight:var(--typography-label-xs-strong-weight);line-height:var(--typography-label-xs-strong-line-height);letter-spacing:var(--typography-label-xs-strong-letter-spacing)}.c-tag--sm{height:2rem;font-family:var(--typography-label-md-strong-family);font-size:var(--typography-label-md-strong-size);font-weight:var(--typography-label-md-strong-weight);line-height:var(--typography-label-md-strong-line-height);letter-spacing:var(--typography-label-md-strong-letter-spacing)}.c-tag__dot{width:.5rem;height:.5rem;border-radius:50%;flex-shrink:0}.c-tag__text{flex:1 1 0;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.c-tag--close-active{padding-right:0}.c-tag--emphasis-close-active{border-top-right-radius:10px;border-bottom-right-radius:10px}.c-tag--danger{background:var(--color-feedback-danger-soft);color:var(--color-feedback-danger-stronger)}.c-tag--danger .c-tag__dot{background:var(--color-feedback-danger-stronger)}.c-tag--warning{color:var(--color-feedback-warning-stronger);background:var(--color-feedback-warning-soft)}.c-tag--warning .c-tag__dot{background:var(--color-feedback-warning-stronger)}.c-tag--success{color:var(--color-feedback-success-stronger);background:var(--color-feedback-success-soft)}.c-tag--success .c-tag__dot{background:var(--color-feedback-success-stronger)}.c-tag--info{background:var(--color-feedback-info-soft);color:var(--color-feedback-info-stronger)}.c-tag--info .c-tag__dot{background:var(--color-feedback-info-stronger)}.c-tag--neutral{background:var(--color-feedback-neutral-soft);color:var(--color-feedback-neutral-stronger)}.c-tag--neutral .c-tag__dot{background:var(--color-feedback-neutral-stronger)}.c-tag--primary{background:var(--color-decorative-primary-soft);color:var(--color-decorative-primary-stronger)}.c-tag--primary .c-tag__dot{background:var(--color-decorative-primary-stronger)}.c-tag--secondary{background:var(--color-decorative-secondary-soft);color:var(--color-decorative-secondary-stronger)}.c-tag--secondary .c-tag__dot{background:var(--color-decorative-secondary-stronger)}.c-tag--disabled{background:var(--color-action-neutral-background-disabled);color:var(--color-action-neutral-content-disabled)}.c-tag--disabled .c-tag__dot{background:var(--color-action-neutral-content-disabled)}.c-tag--emphasis.c-tag--danger{color:var(--color-feedback-danger-subtle);background:var(--color-feedback-danger-default)}.c-tag--emphasis.c-tag--danger .c-tag__dot{background:var(--color-feedback-danger-subtle)}.c-tag--emphasis.c-tag--warning{color:var(--color-feedback-warning-subtle);background:var(--color-feedback-warning-default)}.c-tag--emphasis.c-tag--warning .c-tag__dot{background:var(--color-feedback-warning-subtle)}.c-tag--emphasis.c-tag--success{color:var(--color-feedback-success-subtle);background:var(--color-feedback-success-default)}.c-tag--emphasis.c-tag--success .c-tag__dot{background:var(--color-feedback-success-subtle)}.c-tag--emphasis.c-tag--info{color:var(--color-feedback-info-subtle);background:var(--color-feedback-info-default)}.c-tag--emphasis.c-tag--info .c-tag__dot{background:var(--color-feedback-info-subtle)}.c-tag--emphasis.c-tag--neutral{color:var(--color-feedback-neutral-subtle);background:var(--color-feedback-neutral-default)}.c-tag--emphasis.c-tag--neutral .c-tag__dot{background:var(--color-feedback-neutral-subtle)}.c-tag--emphasis.c-tag--primary{background:var(--color-decorative-primary-default);color:var(--color-core-content-inverse)}.c-tag--emphasis.c-tag--primary .c-tag__dot{background:var(--color-core-content-inverse)}.c-tag--emphasis.c-tag--secondary{background:var(--color-decorative-secondary-default);color:var(--color-core-content-inverse)}.c-tag--emphasis.c-tag--secondary .c-tag__dot{background:var(--color-core-content-inverse)}.c-tag--emphasis.c-tag--disabled{background:var(--color-action-neutral-background-disabled);color:var(--color-action-neutral-content-disabled)}.c-tag--emphasis.c-tag--disabled .c-tag__dot{background:var(--color-action-neutral-content-disabled)}.skeleton{width:4rem;height:1.5rem;background:var(--color-effect-skeleton-soft);border-radius:var(--size-border-radius-md)}\n"] }]
5176
- }] });
5177
-
5178
5294
  class MenuItemComponent {
5179
5295
  label = input('');
5180
5296
  icon = input('');
@@ -5183,6 +5299,8 @@ class MenuItemComponent {
5183
5299
  showArrowIcon = input(true);
5184
5300
  tagLabel = input('');
5185
5301
  children = input([]);
5302
+ rightIcon = input('');
5303
+ rightText = input('');
5186
5304
  hasChildren = computed(() => this.children().length > 0);
5187
5305
  hasTag = computed(() => this.tagLabel().trim().length > 0);
5188
5306
  clicked = output();
@@ -5207,11 +5325,11 @@ class MenuItemComponent {
5207
5325
  return 'action-neutral-content-default';
5208
5326
  });
5209
5327
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.7", ngImport: i0, type: MenuItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5210
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.7", type: MenuItemComponent, isStandalone: true, selector: "lib-menu-item", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, showArrowIcon: { classPropertyName: "showArrowIcon", publicName: "showArrowIcon", isSignal: true, isRequired: false, transformFunction: null }, tagLabel: { classPropertyName: "tagLabel", publicName: "tagLabel", isSignal: true, isRequired: false, transformFunction: null }, children: { classPropertyName: "children", publicName: "children", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clicked: "clicked" }, ngImport: i0, template: "<div class=\"c-menu-item__container\">\n <button\n [ngClass]=\"[\n 'c-menu-item',\n selected() ? 'c-menu-item--selected' : '',\n disabled() ? 'c-menu-item--disabled' : '',\n hasChildren() ? 'c-menu-item--has-children' : '',\n hasChildren() ? 'c-menu-item--expanded' : ''\n ]\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"label()\"\n [attr.aria-selected]=\"selected()\"\n [attr.aria-expanded]=\"hasChildren() ? true : null\"\n (click)=\"handleClick()\"\n >\n @if (icon()) {\n <span class=\"c-menu-item__icon\">\n <lib-icon\n [name]=\"computedIcon()\"\n [size]=\"'md'\"\n [color]=\"iconColor()\"\n ></lib-icon>\n </span>\n }\n @if (label()) {\n <span class=\"c-menu-item__label\">{{ label() }}</span>\n }\n @if (hasTag()) {\n <span class=\"c-menu-item__tag-container\">\n <lib-tag\n [text]=\"tagLabel()\"\n [closeActive]=\"false\"\n [showBadge]=\"false\"\n class=\"c-menu-item__tag\"\n ></lib-tag>\n </span>\n }\n @if (showArrowIcon()) {\n <span class=\"c-menu-item__expand-icon\">\n <lib-icon\n name=\"caretright-regular\"\n [size]=\"'md'\"\n [color]=\"iconColor()\"\n ></lib-icon>\n </span>\n }\n </button>\n\n @if (hasChildren()) {\n <div class=\"c-menu-item__children\">\n <div class=\"c-menu-item__children-items\">\n @for (child of children(); track child.label) {\n <lib-menu-child-item\n [label]=\"child.label\"\n [disabled]=\"child.disabled || false\"\n [selected]=\"child.selected || false\"\n (clicked)=\"handleChildClick(child)\"\n >\n </lib-menu-child-item>\n }\n </div>\n </div>\n }\n</div>\n", styles: [".c-menu-item{display:flex;align-items:center;gap:var(--space-component-gap-md, .5rem);width:100%;min-height:40px;padding:var(--space-component-padding-none) var(--space-component-padding-sm);border:none;border-radius:var(--size-border-radius-md);background:var(--color-menu-item-background-default);cursor:pointer;font-family:var(--typography-label-md-strong-family),sans-serif;font-weight:var(--typography-label-md-strong-weight);font-size:var(--typography-label-md-strong-size);line-height:var(--typography-label-md-strong-line-height);letter-spacing:var(--typography-label-md-strong-letter-spacing);text-align:left;color:var(--color-action-neutral-content-default)}.c-menu-item__container,.c-menu-item__children{display:flex;flex-direction:column;width:100%}.c-menu-item:focus-visible{box-shadow:var(--focus-inset);outline:0}.c-menu-item:disabled{cursor:not-allowed}.c-menu-item:hover:not(.c-menu-item--disabled){background-color:var(--color-action-neutral-background-hover);color:var(--color-action-neutral-content-hover)}.c-menu-item:active:not(.c-menu-item--disabled){background-color:var(--color-action-neutral-background-pressed);color:var(--color-action-neutral-content-pressed)}.c-menu-item.c-menu-item--selected{background-color:var(--color-menu-item-parent-background-active);color:var(--color-action-primary-selected-content-default)}.c-menu-item.c-menu-item--selected:hover:not(.c-menu-item--disabled){background-color:var(--color-action-primary-selected-background-hover);color:var(--color-action-primary-selected-content-hover)}.c-menu-item.c-menu-item--selected:active:not(.c-menu-item--disabled){background-color:var(--color-action-primary-selected-background-pressed);color:var(--color-action-primary-selected-content-pressed)}.c-menu-item.c-menu-item--disabled{color:var(--color-action-neutral-content-disabled);background-color:var(--color-action-neutral-background-disabled)}.c-menu-item__icon{display:flex;align-items:center;justify-content:center;flex-shrink:0}.c-menu-item__label{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.c-menu-item__expand-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;gap:var(--space-component-gap-sm);transition:transform var(--transition-base-duration) var(--transition-base-easing)}.c-menu-item__tag-container{display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-left:var(--space-component-gap-sm)}.c-menu-item__tag{flex-shrink:0}.c-menu-item__children{padding-left:var(--size-spacing-4);margin-top:var(--size-spacing-1)}.c-menu-item__children-label{font-size:var(--size-font-sm);font-weight:var(--size-font-weight-medium);color:var(--color-action-neutral-content-default);padding:var(--size-spacing-2) var(--size-spacing-3);margin-bottom:var(--size-spacing-1)}.c-menu-item__children-items{display:flex;flex-direction:column;gap:var(--size-spacing-1)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: IconComponent, selector: "lib-icon", inputs: ["size", "icon", "disabled", "name", "color"] }, { kind: "component", type: MenuChildItemComponent, selector: "lib-menu-child-item", inputs: ["label", "icon", "disabled", "selected"], outputs: ["clicked"] }, { kind: "component", type: TagComponent, selector: "lib-tag", inputs: ["size", "variant", "text", "extraClass", "showBadge", "closeActive", "emphasis", "skeletonActive"], outputs: ["closeEvent"] }] });
5328
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.7", type: MenuItemComponent, isStandalone: true, selector: "lib-menu-item", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, showArrowIcon: { classPropertyName: "showArrowIcon", publicName: "showArrowIcon", isSignal: true, isRequired: false, transformFunction: null }, tagLabel: { classPropertyName: "tagLabel", publicName: "tagLabel", isSignal: true, isRequired: false, transformFunction: null }, children: { classPropertyName: "children", publicName: "children", isSignal: true, isRequired: false, transformFunction: null }, rightIcon: { classPropertyName: "rightIcon", publicName: "rightIcon", isSignal: true, isRequired: false, transformFunction: null }, rightText: { classPropertyName: "rightText", publicName: "rightText", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clicked: "clicked" }, ngImport: i0, template: "<div class=\"c-menu-item__container\">\n <button\n [ngClass]=\"[\n 'c-menu-item',\n selected() ? 'c-menu-item--selected' : '',\n disabled() ? 'c-menu-item--disabled' : '',\n hasChildren() ? 'c-menu-item--has-children' : '',\n hasChildren() ? 'c-menu-item--expanded' : ''\n ]\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"label()\"\n [attr.aria-selected]=\"selected()\"\n [attr.aria-expanded]=\"hasChildren() ? true : null\"\n (click)=\"handleClick()\"\n >\n @if (icon()) {\n <span class=\"c-menu-item__icon\">\n <lib-icon\n [name]=\"computedIcon()\"\n [size]=\"'md'\"\n [color]=\"iconColor()\"\n ></lib-icon>\n </span>\n } @if (label()) {\n <span class=\"c-menu-item__label\">{{ label() }}</span>\n } @if (hasTag()) {\n <span class=\"c-menu-item__tag-container\">\n <lib-tag\n [text]=\"tagLabel()\"\n [closeActive]=\"false\"\n [showBadge]=\"false\"\n class=\"c-menu-item__tag\"\n ></lib-tag>\n </span>\n } @if (rightIcon()) {\n <span class=\"c-menu-item__right-icon\">\n <lib-icon [name]=\"rightIcon()\" [size]=\"'md'\"></lib-icon>\n </span>\n } @if (rightText()) {\n <span class=\"c-menu-item__right-text\"> {{ rightText() }} </span>\n } @if (showArrowIcon()) {\n <span class=\"c-menu-item__expand-icon\">\n <lib-icon\n name=\"caretright-regular\"\n [size]=\"'md'\"\n [color]=\"iconColor()\"\n ></lib-icon>\n </span>\n }\n </button>\n\n @if (hasChildren()) {\n <div class=\"c-menu-item__children\">\n <div class=\"c-menu-item__children-items\">\n @for (child of children(); track child.label) {\n <lib-menu-child-item\n [label]=\"child.label\"\n [disabled]=\"child.disabled || false\"\n [selected]=\"child.selected || false\"\n (clicked)=\"handleChildClick(child)\"\n >\n </lib-menu-child-item>\n }\n </div>\n </div>\n }\n</div>\n", styles: [".c-menu-item{display:flex;align-items:center;gap:var(--space-component-gap-md, .5rem);width:100%;min-height:40px;padding:var(--space-component-padding-none) var(--space-component-padding-sm);border:none;border-radius:var(--size-border-radius-md);background:var(--color-menu-item-background-default);cursor:pointer;font-family:var(--typography-label-md-strong-family),sans-serif;font-weight:var(--typography-label-md-strong-weight);font-size:var(--typography-label-md-strong-size);line-height:var(--typography-label-md-strong-line-height);letter-spacing:var(--typography-label-md-strong-letter-spacing);text-align:left;color:var(--color-action-neutral-content-default)}.c-menu-item__container,.c-menu-item__children{display:flex;flex-direction:column;width:100%}.c-menu-item:focus-visible{box-shadow:var(--focus-inset);outline:0}.c-menu-item:disabled{cursor:not-allowed}.c-menu-item:hover:not(.c-menu-item--disabled){background-color:var(--color-action-neutral-background-hover);color:var(--color-action-neutral-content-hover)}.c-menu-item:active:not(.c-menu-item--disabled){background-color:var(--color-action-neutral-background-pressed);color:var(--color-action-neutral-content-pressed)}.c-menu-item.c-menu-item--selected{background-color:var(--color-menu-item-parent-background-active);color:var(--color-action-primary-selected-content-default)}.c-menu-item.c-menu-item--selected:hover:not(.c-menu-item--disabled){background-color:var(--color-action-primary-selected-background-hover);color:var(--color-action-primary-selected-content-hover)}.c-menu-item.c-menu-item--selected:active:not(.c-menu-item--disabled){background-color:var(--color-action-primary-selected-background-pressed);color:var(--color-action-primary-selected-content-pressed)}.c-menu-item.c-menu-item--disabled{color:var(--color-action-neutral-content-disabled);background-color:var(--color-action-neutral-background-disabled)}.c-menu-item__icon{display:flex;align-items:center;justify-content:center;flex-shrink:0}.c-menu-item__label{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.c-menu-item__expand-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;gap:var(--space-component-gap-sm);transition:transform var(--transition-base-duration) var(--transition-base-easing)}.c-menu-item__tag-container,.c-menu-item__right-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-left:var(--space-component-gap-sm)}.c-menu-item__tag{flex-shrink:0}.c-menu-item__right-text{margin-left:var(--space-component-gap-sm);font-size:var(--typography-label-sm-default-size);font-weight:var(--typography-label-sm-default-weight);line-height:var(--typography-label-sm-default-line-height);letter-spacing:var(--typography-label-sm-default-letter-spacing);color:var(--color-content-default)}.c-menu-item__children{padding-left:var(--size-spacing-4);margin-top:var(--size-spacing-1)}.c-menu-item__children-label{font-size:var(--size-font-sm);font-weight:var(--size-font-weight-medium);color:var(--color-action-neutral-content-default);padding:var(--size-spacing-2) var(--size-spacing-3);margin-bottom:var(--size-spacing-1)}.c-menu-item__children-items{display:flex;flex-direction:column;gap:var(--size-spacing-1)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: IconComponent, selector: "lib-icon", inputs: ["size", "icon", "disabled", "name", "color"] }, { kind: "component", type: MenuChildItemComponent, selector: "lib-menu-child-item", inputs: ["label", "icon", "disabled", "selected"], outputs: ["clicked"] }, { kind: "component", type: TagComponent, selector: "lib-tag", inputs: ["size", "variant", "text", "extraClass", "showBadge", "closeActive", "emphasis", "skeletonActive"], outputs: ["closeEvent"] }] });
5211
5329
  }
5212
5330
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.7", ngImport: i0, type: MenuItemComponent, decorators: [{
5213
5331
  type: Component,
5214
- args: [{ selector: 'lib-menu-item', imports: [NgClass, IconComponent, MenuChildItemComponent, TagComponent], template: "<div class=\"c-menu-item__container\">\n <button\n [ngClass]=\"[\n 'c-menu-item',\n selected() ? 'c-menu-item--selected' : '',\n disabled() ? 'c-menu-item--disabled' : '',\n hasChildren() ? 'c-menu-item--has-children' : '',\n hasChildren() ? 'c-menu-item--expanded' : ''\n ]\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"label()\"\n [attr.aria-selected]=\"selected()\"\n [attr.aria-expanded]=\"hasChildren() ? true : null\"\n (click)=\"handleClick()\"\n >\n @if (icon()) {\n <span class=\"c-menu-item__icon\">\n <lib-icon\n [name]=\"computedIcon()\"\n [size]=\"'md'\"\n [color]=\"iconColor()\"\n ></lib-icon>\n </span>\n }\n @if (label()) {\n <span class=\"c-menu-item__label\">{{ label() }}</span>\n }\n @if (hasTag()) {\n <span class=\"c-menu-item__tag-container\">\n <lib-tag\n [text]=\"tagLabel()\"\n [closeActive]=\"false\"\n [showBadge]=\"false\"\n class=\"c-menu-item__tag\"\n ></lib-tag>\n </span>\n }\n @if (showArrowIcon()) {\n <span class=\"c-menu-item__expand-icon\">\n <lib-icon\n name=\"caretright-regular\"\n [size]=\"'md'\"\n [color]=\"iconColor()\"\n ></lib-icon>\n </span>\n }\n </button>\n\n @if (hasChildren()) {\n <div class=\"c-menu-item__children\">\n <div class=\"c-menu-item__children-items\">\n @for (child of children(); track child.label) {\n <lib-menu-child-item\n [label]=\"child.label\"\n [disabled]=\"child.disabled || false\"\n [selected]=\"child.selected || false\"\n (clicked)=\"handleChildClick(child)\"\n >\n </lib-menu-child-item>\n }\n </div>\n </div>\n }\n</div>\n", styles: [".c-menu-item{display:flex;align-items:center;gap:var(--space-component-gap-md, .5rem);width:100%;min-height:40px;padding:var(--space-component-padding-none) var(--space-component-padding-sm);border:none;border-radius:var(--size-border-radius-md);background:var(--color-menu-item-background-default);cursor:pointer;font-family:var(--typography-label-md-strong-family),sans-serif;font-weight:var(--typography-label-md-strong-weight);font-size:var(--typography-label-md-strong-size);line-height:var(--typography-label-md-strong-line-height);letter-spacing:var(--typography-label-md-strong-letter-spacing);text-align:left;color:var(--color-action-neutral-content-default)}.c-menu-item__container,.c-menu-item__children{display:flex;flex-direction:column;width:100%}.c-menu-item:focus-visible{box-shadow:var(--focus-inset);outline:0}.c-menu-item:disabled{cursor:not-allowed}.c-menu-item:hover:not(.c-menu-item--disabled){background-color:var(--color-action-neutral-background-hover);color:var(--color-action-neutral-content-hover)}.c-menu-item:active:not(.c-menu-item--disabled){background-color:var(--color-action-neutral-background-pressed);color:var(--color-action-neutral-content-pressed)}.c-menu-item.c-menu-item--selected{background-color:var(--color-menu-item-parent-background-active);color:var(--color-action-primary-selected-content-default)}.c-menu-item.c-menu-item--selected:hover:not(.c-menu-item--disabled){background-color:var(--color-action-primary-selected-background-hover);color:var(--color-action-primary-selected-content-hover)}.c-menu-item.c-menu-item--selected:active:not(.c-menu-item--disabled){background-color:var(--color-action-primary-selected-background-pressed);color:var(--color-action-primary-selected-content-pressed)}.c-menu-item.c-menu-item--disabled{color:var(--color-action-neutral-content-disabled);background-color:var(--color-action-neutral-background-disabled)}.c-menu-item__icon{display:flex;align-items:center;justify-content:center;flex-shrink:0}.c-menu-item__label{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.c-menu-item__expand-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;gap:var(--space-component-gap-sm);transition:transform var(--transition-base-duration) var(--transition-base-easing)}.c-menu-item__tag-container{display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-left:var(--space-component-gap-sm)}.c-menu-item__tag{flex-shrink:0}.c-menu-item__children{padding-left:var(--size-spacing-4);margin-top:var(--size-spacing-1)}.c-menu-item__children-label{font-size:var(--size-font-sm);font-weight:var(--size-font-weight-medium);color:var(--color-action-neutral-content-default);padding:var(--size-spacing-2) var(--size-spacing-3);margin-bottom:var(--size-spacing-1)}.c-menu-item__children-items{display:flex;flex-direction:column;gap:var(--size-spacing-1)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}\n"] }]
5332
+ args: [{ selector: 'lib-menu-item', imports: [NgClass, IconComponent, MenuChildItemComponent, TagComponent], template: "<div class=\"c-menu-item__container\">\n <button\n [ngClass]=\"[\n 'c-menu-item',\n selected() ? 'c-menu-item--selected' : '',\n disabled() ? 'c-menu-item--disabled' : '',\n hasChildren() ? 'c-menu-item--has-children' : '',\n hasChildren() ? 'c-menu-item--expanded' : ''\n ]\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"label()\"\n [attr.aria-selected]=\"selected()\"\n [attr.aria-expanded]=\"hasChildren() ? true : null\"\n (click)=\"handleClick()\"\n >\n @if (icon()) {\n <span class=\"c-menu-item__icon\">\n <lib-icon\n [name]=\"computedIcon()\"\n [size]=\"'md'\"\n [color]=\"iconColor()\"\n ></lib-icon>\n </span>\n } @if (label()) {\n <span class=\"c-menu-item__label\">{{ label() }}</span>\n } @if (hasTag()) {\n <span class=\"c-menu-item__tag-container\">\n <lib-tag\n [text]=\"tagLabel()\"\n [closeActive]=\"false\"\n [showBadge]=\"false\"\n class=\"c-menu-item__tag\"\n ></lib-tag>\n </span>\n } @if (rightIcon()) {\n <span class=\"c-menu-item__right-icon\">\n <lib-icon [name]=\"rightIcon()\" [size]=\"'md'\"></lib-icon>\n </span>\n } @if (rightText()) {\n <span class=\"c-menu-item__right-text\"> {{ rightText() }} </span>\n } @if (showArrowIcon()) {\n <span class=\"c-menu-item__expand-icon\">\n <lib-icon\n name=\"caretright-regular\"\n [size]=\"'md'\"\n [color]=\"iconColor()\"\n ></lib-icon>\n </span>\n }\n </button>\n\n @if (hasChildren()) {\n <div class=\"c-menu-item__children\">\n <div class=\"c-menu-item__children-items\">\n @for (child of children(); track child.label) {\n <lib-menu-child-item\n [label]=\"child.label\"\n [disabled]=\"child.disabled || false\"\n [selected]=\"child.selected || false\"\n (clicked)=\"handleChildClick(child)\"\n >\n </lib-menu-child-item>\n }\n </div>\n </div>\n }\n</div>\n", styles: [".c-menu-item{display:flex;align-items:center;gap:var(--space-component-gap-md, .5rem);width:100%;min-height:40px;padding:var(--space-component-padding-none) var(--space-component-padding-sm);border:none;border-radius:var(--size-border-radius-md);background:var(--color-menu-item-background-default);cursor:pointer;font-family:var(--typography-label-md-strong-family),sans-serif;font-weight:var(--typography-label-md-strong-weight);font-size:var(--typography-label-md-strong-size);line-height:var(--typography-label-md-strong-line-height);letter-spacing:var(--typography-label-md-strong-letter-spacing);text-align:left;color:var(--color-action-neutral-content-default)}.c-menu-item__container,.c-menu-item__children{display:flex;flex-direction:column;width:100%}.c-menu-item:focus-visible{box-shadow:var(--focus-inset);outline:0}.c-menu-item:disabled{cursor:not-allowed}.c-menu-item:hover:not(.c-menu-item--disabled){background-color:var(--color-action-neutral-background-hover);color:var(--color-action-neutral-content-hover)}.c-menu-item:active:not(.c-menu-item--disabled){background-color:var(--color-action-neutral-background-pressed);color:var(--color-action-neutral-content-pressed)}.c-menu-item.c-menu-item--selected{background-color:var(--color-menu-item-parent-background-active);color:var(--color-action-primary-selected-content-default)}.c-menu-item.c-menu-item--selected:hover:not(.c-menu-item--disabled){background-color:var(--color-action-primary-selected-background-hover);color:var(--color-action-primary-selected-content-hover)}.c-menu-item.c-menu-item--selected:active:not(.c-menu-item--disabled){background-color:var(--color-action-primary-selected-background-pressed);color:var(--color-action-primary-selected-content-pressed)}.c-menu-item.c-menu-item--disabled{color:var(--color-action-neutral-content-disabled);background-color:var(--color-action-neutral-background-disabled)}.c-menu-item__icon{display:flex;align-items:center;justify-content:center;flex-shrink:0}.c-menu-item__label{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.c-menu-item__expand-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;gap:var(--space-component-gap-sm);transition:transform var(--transition-base-duration) var(--transition-base-easing)}.c-menu-item__tag-container,.c-menu-item__right-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-left:var(--space-component-gap-sm)}.c-menu-item__tag{flex-shrink:0}.c-menu-item__right-text{margin-left:var(--space-component-gap-sm);font-size:var(--typography-label-sm-default-size);font-weight:var(--typography-label-sm-default-weight);line-height:var(--typography-label-sm-default-line-height);letter-spacing:var(--typography-label-sm-default-letter-spacing);color:var(--color-content-default)}.c-menu-item__children{padding-left:var(--size-spacing-4);margin-top:var(--size-spacing-1)}.c-menu-item__children-label{font-size:var(--size-font-sm);font-weight:var(--size-font-weight-medium);color:var(--color-action-neutral-content-default);padding:var(--size-spacing-2) var(--size-spacing-3);margin-bottom:var(--size-spacing-1)}.c-menu-item__children-items{display:flex;flex-direction:column;gap:var(--size-spacing-1)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}\n"] }]
5215
5333
  }] });
5216
5334
 
5217
5335
  class MenuItemSectionComponent {
@@ -6792,7 +6910,7 @@ class SidebarWithFooterComponent extends BasicSidebarMenuComponent {
6792
6910
  (clicked)="onSubItemClick(securitySettingsItem)">
6793
6911
  </lib-menu-item>
6794
6912
  }
6795
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: MenuItemComponent, selector: "lib-menu-item", inputs: ["label", "icon", "disabled", "selected", "showArrowIcon", "tagLabel", "children"], outputs: ["clicked"] }] });
6913
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: MenuItemComponent, selector: "lib-menu-item", inputs: ["label", "icon", "disabled", "selected", "showArrowIcon", "tagLabel", "children", "rightIcon", "rightText"], outputs: ["clicked"] }] });
6796
6914
  }
6797
6915
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.7", ngImport: i0, type: SidebarWithFooterComponent, decorators: [{
6798
6916
  type: Component,
@@ -7149,152 +7267,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.7", ngImpor
7149
7267
  args: [{ selector: 'lib-tabs', standalone: true, imports: [IconComponent, BadgeComponent], template: "<div class=\"c-tabs\">\n <div class=\"c-tabs__scroll-container\" #tabsRef>\n <ul\n class=\"c-tabs__list\"\n [class.c-tabs__list--center]=\"alignment() === 'center'\"\n role=\"tablist\"\n >\n @for (option of options(); track option.value) {\n <li\n class=\"c-tabs__tab\"\n [class.c-tabs__tab--selected]=\"option.value === selectedValue()\"\n role=\"tab\"\n [attr.aria-selected]=\"option.value === selectedValue()\"\n tabindex=\"0\"\n (click)=\"onClick($event, option.value)\"\n (keydown)=\"onKeydown($event, option.value)\"\n >\n @if (option.iconName) {\n <lib-icon\n [name]=\"option.iconName\"\n size=\"lg\"\n color=\"core-content-default\"\n />\n }\n {{ option.label }}\n @if (option.showBadge) {\n <lib-badge />\n }\n </li>\n }\n </ul>\n </div>\n</div>\n", styles: [".c-tabs{width:100%}.c-tabs__scroll-container{width:100%;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none;scroll-behavior:smooth}.c-tabs__scroll-container::-webkit-scrollbar{display:none}.c-tabs__list{width:100%;height:40px;display:flex;align-items:flex-start;border-bottom:var(--size-border-width-sm) solid var(--color-core-border-soft);margin:0;padding:0;list-style:none;box-sizing:border-box;min-width:max-content}.c-tabs__list--center{justify-content:center}.c-tabs__tab{cursor:pointer;display:flex;align-items:center;justify-content:center;min-width:72px;flex-shrink:0;white-space:nowrap;box-sizing:border-box;color:var(--color-action-neutral-content-default);text-align:center;font-family:var(--typography-label-md-default-family);font-size:var(--typography-label-md-default-size);font-style:normal;font-weight:var(--typography-label-md-default-weight);line-height:var(--typography-label-md-default-line-height);letter-spacing:var(--typography-label-md-default-letter-spacing);padding:var(--space-component-padding-sm) var(--space-component-padding-md);background:var(--color-action-primary-background-default);gap:var(--space-component-gap-sm);margin:0;list-style:none}.c-tabs__tab:hover{color:var(--color-action-neutral-content-hover);background:var(--color-action-neutral-background-hover)}.c-tabs__tab:active{color:var(--color-action-neutral-content-pressed);background-color:var(--color-action-neutral-background-pressed)}.c-tabs__tab:focus-visible{box-shadow:var(--focus-inset);outline:none}.c-tabs__tab--selected{position:relative;color:var(--color-core-content-default);font-family:var(--typography-label-md-strong-family);font-size:var(--typography-label-md-strong-size);font-style:normal;font-weight:var(--typography-label-md-strong-weight);line-height:var(--typography-label-md-strong-line-height);letter-spacing:var(--typography-label-md-strong-letter-spacing)}.c-tabs__tab--selected:before{content:\"\";position:absolute;bottom:0;left:0;width:100%;height:.125rem;background:var(--color-action-primary-selected-background-default)}\n"] }]
7150
7268
  }] });
7151
7269
 
7152
- class TextInputComponent {
7153
- label = '';
7154
- name = '';
7155
- placeholder = '';
7156
- helperText = '';
7157
- error = false;
7158
- success = false;
7159
- successText = '';
7160
- alertText = '';
7161
- disabled = false;
7162
- readonly = false;
7163
- required = false;
7164
- optionalLabel = '';
7165
- isLoading = false;
7166
- type = 'text';
7167
- size = 'md';
7168
- fullWidth = false;
7169
- autocomplete = 'off';
7170
- regex;
7171
- emitValue = new EventEmitter();
7172
- _value = '';
7173
- onChangeFn = () => { };
7174
- onTouchedFn = () => { };
7175
- writeValue(value) {
7176
- this._value = value ?? '';
7177
- }
7178
- registerOnChange(fn) {
7179
- this.onChangeFn = fn;
7180
- }
7181
- registerOnTouched(fn) {
7182
- this.onTouchedFn = fn;
7183
- }
7184
- setDisabledState(isDisabled) {
7185
- this.disabled = isDisabled;
7186
- }
7187
- get inputClass() {
7188
- return [
7189
- 'c-text-input__input',
7190
- `c-text-input__input--${this.size}`,
7191
- this.error ? 'is-error' : this.success ? 'is-success' : 'is-default',
7192
- this.disabled ? 'is-disabled' : '',
7193
- this.readonly ? 'is-readonly' : '',
7194
- this.isLoading ? 'is-loading' : '',
7195
- ].filter(Boolean);
7196
- }
7197
- get ariaDescribedBy() {
7198
- return this.helperText ? 'text-input-helper' : null;
7199
- }
7200
- onInput(event) {
7201
- const input = event.target;
7202
- let newValue = input.value;
7203
- if (this.regex) {
7204
- try {
7205
- const charPattern = (() => {
7206
- if (this.regex.startsWith('^') && this.regex.endsWith('$')) {
7207
- const charClassMatch = this.regex.match(/\[([^\]]+)\]/);
7208
- if (charClassMatch) {
7209
- return `[${charClassMatch[1]}]`;
7210
- }
7211
- }
7212
- return this.regex;
7213
- })();
7214
- const regex = new RegExp(charPattern);
7215
- const filteredValue = newValue
7216
- .split('')
7217
- .filter((char) => regex.test(char))
7218
- .join('');
7219
- if (filteredValue !== newValue) {
7220
- input.value = filteredValue;
7221
- newValue = filteredValue;
7222
- }
7223
- }
7224
- catch (error) {
7225
- console.warn('Invalid regex:', this.regex, error);
7226
- }
7227
- }
7228
- this._value = newValue;
7229
- this.onChangeFn(this._value);
7230
- this.emitValue.emit(this._value);
7231
- }
7232
- onBlur() {
7233
- this.onTouchedFn();
7234
- }
7235
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.7", ngImport: i0, type: TextInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7236
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.7", type: TextInputComponent, isStandalone: true, selector: "lib-text-input", inputs: { label: "label", name: "name", placeholder: "placeholder", helperText: "helperText", error: "error", success: "success", successText: "successText", alertText: "alertText", disabled: "disabled", readonly: "readonly", required: "required", optionalLabel: "optionalLabel", isLoading: "isLoading", type: "type", size: "size", fullWidth: "fullWidth", autocomplete: "autocomplete", regex: "regex" }, outputs: { emitValue: "emitValue" }, providers: [
7237
- {
7238
- provide: NG_VALUE_ACCESSOR,
7239
- useExisting: forwardRef(() => TextInputComponent),
7240
- multi: true,
7241
- },
7242
- ], ngImport: i0, template: "<div class=\"c-text-input\" [class.c-text-input--full-width]=\"fullWidth\">\n <lib-input-label\n *ngIf=\"label\"\n size=\"sm\"\n [required]=\"required\"\n [for]=\"name\"\n [text]=\"label\"\n [textOptional]=\"optionalLabel\"\n [isLoading]=\"isLoading\"\n ></lib-input-label>\n\n <input\n [attr.autocomplete]=\"autocomplete\"\n [id]=\"name\"\n [name]=\"name\"\n [type]=\"type\"\n [class]=\"inputClass.join(' ')\"\n [placeholder]=\"isLoading ? '' : placeholder\"\n [disabled]=\"disabled || isLoading\"\n [readonly]=\"readonly\"\n [value]=\"isLoading ? '' : _value\"\n [required]=\"required\"\n [attr.aria-invalid]=\"error ? 'true' : null\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n [attr.aria-label]=\"name\"\n [attr.aria-labelledby]=\"name\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n />\n\n <span\n *ngIf=\"helperText && !error && !success\"\n id=\"text-input-helper\"\n class=\"c-text-input__helper\"\n >\n <lib-helper-text\n [text]=\"helperText\"\n [isLoading]=\"isLoading\"\n ></lib-helper-text>\n </span>\n\n <span *ngIf=\"alertText && error\" class=\"c-text-input__alert\">\n <lib-helper-text\n variant=\"danger\"\n [text]=\"alertText\"\n [isLoading]=\"isLoading\"\n ></lib-helper-text>\n </span>\n\n <span *ngIf=\"successText && success\" class=\"c-text-input__success\">\n <lib-helper-text\n variant=\"success\"\n [text]=\"successText\"\n [isLoading]=\"isLoading\"\n ></lib-helper-text>\n </span>\n</div>\n", styles: [".c-text-input{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:var(--space-component-gap-sm);max-width:300px}.c-text-input--full-width{max-width:100%}.c-text-input__input{--input-padding-y: var(--space-component-padding-md);--input-padding-x: var(--space-component-padding-lg);height:48px;box-sizing:border-box;border-radius:var(--size-textfield-border-radius);border:var(--size-textfield-border-width) solid var(--color-textfield-border-default);background:var(--color-textfield-background-default);padding:var(--input-padding-y) var(--input-padding-x);align-items:center;gap:var(--space-component-gap-sm);align-self:stretch;color:var(--color-textfield-content-default);font-family:var(--typography-label-md-default-family);font-size:var(--typography-label-md-default-size);font-style:normal;font-weight:var(--typography-label-md-default-weight);line-height:var(--typography-label-md-default-line-height);letter-spacing:var(--typography-label-md-default-letter-spacing)}.c-text-input__input:focus-visible{border-width:2px;border-color:var(--color-textfield-border-active);padding:calc(var(--input-padding-y) - 1px) calc(var(--input-padding-x) - 1px);box-shadow:none;outline:none}.c-text-input__input--sm{height:32px;--input-padding-y: var(--space-component-padding-xs);--input-padding-x: var(--space-component-padding-sm)}.c-text-input__input--md{height:40px;--input-padding-y: var(--space-component-padding-xs);--input-padding-x: var(--space-component-padding-md)}.c-text-input__input.is-error{border-color:var(--color-textfield-border-error)}.c-text-input__input.is-success{border-color:var(--color-feedback-success-strong)}.c-text-input__input.is-disabled{background-color:var(--color-textfield-background-disabled);border-color:var(--color-textfield-border-disabled);color:var(--color-textfield-content-disabled)}.c-text-input__input.is-readonly{background-color:var(--color-textfield-background-disabled);border-color:var(--color-textfield-border-disabled)}.c-text-input__input.is-loading{border-color:var(--color-effect-skeleton-soft, #e5eaea);background-color:var(--color-textfield-background-default);color:transparent}.c-text-input__alert{display:flex;gap:var(--space-component-gap-sm);color:var(--color-feedback-danger-default);font-family:var(--typography-label-sm-default-family);font-size:var(--typography-label-sm-default-size);font-style:normal;font-weight:var(--typography-label-sm-default-weight);line-height:var(--typography-label-sm-default-line-height);letter-spacing:var(--typography-label-sm-default-letter-spacing)}.c-text-input__success{display:flex;gap:var(--space-component-gap-sm);color:var(--color-feedback-success-default);font-family:var(--typography-label-sm-default-family);font-size:var(--typography-label-sm-default-size);font-style:normal;font-weight:var(--typography-label-sm-default-weight);line-height:var(--typography-label-sm-default-line-height);letter-spacing:var(--typography-label-sm-default-letter-spacing)}.c-text-input__helper{color:var(--color-core-content-soft);font-family:var(--typography-label-sm-default-family);font-size:var(--typography-label-sm-default-size);font-style:normal;font-weight:var(--typography-label-sm-default-weight);line-height:var(--typography-label-sm-default-line-height);letter-spacing:var(--typography-label-sm-default-letter-spacing)}.c-text-input__helper.is-error{color:var(--color-textfield-helper-error)}.c-text-input__helper.is-success{color:var(--color-textfield-helper-success)}.c-text-input__helper.is-default{color:var(--color-textfield-helper-default)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: InputLabelComponent, selector: "lib-input-label", inputs: ["text", "required", "size", "disabled", "for", "innerHTML", "isLoading", "textOptional"] }, { kind: "component", type: HelperTextComponent, selector: "lib-helper-text", inputs: ["variant", "text", "extraClass", "disabled", "isLoading"] }] });
7243
- }
7244
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.7", ngImport: i0, type: TextInputComponent, decorators: [{
7245
- type: Component,
7246
- args: [{ selector: 'lib-text-input', standalone: true, imports: [
7247
- CommonModule,
7248
- ReactiveFormsModule,
7249
- InputLabelComponent,
7250
- HelperTextComponent,
7251
- ], providers: [
7252
- {
7253
- provide: NG_VALUE_ACCESSOR,
7254
- useExisting: forwardRef(() => TextInputComponent),
7255
- multi: true,
7256
- },
7257
- ], template: "<div class=\"c-text-input\" [class.c-text-input--full-width]=\"fullWidth\">\n <lib-input-label\n *ngIf=\"label\"\n size=\"sm\"\n [required]=\"required\"\n [for]=\"name\"\n [text]=\"label\"\n [textOptional]=\"optionalLabel\"\n [isLoading]=\"isLoading\"\n ></lib-input-label>\n\n <input\n [attr.autocomplete]=\"autocomplete\"\n [id]=\"name\"\n [name]=\"name\"\n [type]=\"type\"\n [class]=\"inputClass.join(' ')\"\n [placeholder]=\"isLoading ? '' : placeholder\"\n [disabled]=\"disabled || isLoading\"\n [readonly]=\"readonly\"\n [value]=\"isLoading ? '' : _value\"\n [required]=\"required\"\n [attr.aria-invalid]=\"error ? 'true' : null\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n [attr.aria-label]=\"name\"\n [attr.aria-labelledby]=\"name\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n />\n\n <span\n *ngIf=\"helperText && !error && !success\"\n id=\"text-input-helper\"\n class=\"c-text-input__helper\"\n >\n <lib-helper-text\n [text]=\"helperText\"\n [isLoading]=\"isLoading\"\n ></lib-helper-text>\n </span>\n\n <span *ngIf=\"alertText && error\" class=\"c-text-input__alert\">\n <lib-helper-text\n variant=\"danger\"\n [text]=\"alertText\"\n [isLoading]=\"isLoading\"\n ></lib-helper-text>\n </span>\n\n <span *ngIf=\"successText && success\" class=\"c-text-input__success\">\n <lib-helper-text\n variant=\"success\"\n [text]=\"successText\"\n [isLoading]=\"isLoading\"\n ></lib-helper-text>\n </span>\n</div>\n", styles: [".c-text-input{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:var(--space-component-gap-sm);max-width:300px}.c-text-input--full-width{max-width:100%}.c-text-input__input{--input-padding-y: var(--space-component-padding-md);--input-padding-x: var(--space-component-padding-lg);height:48px;box-sizing:border-box;border-radius:var(--size-textfield-border-radius);border:var(--size-textfield-border-width) solid var(--color-textfield-border-default);background:var(--color-textfield-background-default);padding:var(--input-padding-y) var(--input-padding-x);align-items:center;gap:var(--space-component-gap-sm);align-self:stretch;color:var(--color-textfield-content-default);font-family:var(--typography-label-md-default-family);font-size:var(--typography-label-md-default-size);font-style:normal;font-weight:var(--typography-label-md-default-weight);line-height:var(--typography-label-md-default-line-height);letter-spacing:var(--typography-label-md-default-letter-spacing)}.c-text-input__input:focus-visible{border-width:2px;border-color:var(--color-textfield-border-active);padding:calc(var(--input-padding-y) - 1px) calc(var(--input-padding-x) - 1px);box-shadow:none;outline:none}.c-text-input__input--sm{height:32px;--input-padding-y: var(--space-component-padding-xs);--input-padding-x: var(--space-component-padding-sm)}.c-text-input__input--md{height:40px;--input-padding-y: var(--space-component-padding-xs);--input-padding-x: var(--space-component-padding-md)}.c-text-input__input.is-error{border-color:var(--color-textfield-border-error)}.c-text-input__input.is-success{border-color:var(--color-feedback-success-strong)}.c-text-input__input.is-disabled{background-color:var(--color-textfield-background-disabled);border-color:var(--color-textfield-border-disabled);color:var(--color-textfield-content-disabled)}.c-text-input__input.is-readonly{background-color:var(--color-textfield-background-disabled);border-color:var(--color-textfield-border-disabled)}.c-text-input__input.is-loading{border-color:var(--color-effect-skeleton-soft, #e5eaea);background-color:var(--color-textfield-background-default);color:transparent}.c-text-input__alert{display:flex;gap:var(--space-component-gap-sm);color:var(--color-feedback-danger-default);font-family:var(--typography-label-sm-default-family);font-size:var(--typography-label-sm-default-size);font-style:normal;font-weight:var(--typography-label-sm-default-weight);line-height:var(--typography-label-sm-default-line-height);letter-spacing:var(--typography-label-sm-default-letter-spacing)}.c-text-input__success{display:flex;gap:var(--space-component-gap-sm);color:var(--color-feedback-success-default);font-family:var(--typography-label-sm-default-family);font-size:var(--typography-label-sm-default-size);font-style:normal;font-weight:var(--typography-label-sm-default-weight);line-height:var(--typography-label-sm-default-line-height);letter-spacing:var(--typography-label-sm-default-letter-spacing)}.c-text-input__helper{color:var(--color-core-content-soft);font-family:var(--typography-label-sm-default-family);font-size:var(--typography-label-sm-default-size);font-style:normal;font-weight:var(--typography-label-sm-default-weight);line-height:var(--typography-label-sm-default-line-height);letter-spacing:var(--typography-label-sm-default-letter-spacing)}.c-text-input__helper.is-error{color:var(--color-textfield-helper-error)}.c-text-input__helper.is-success{color:var(--color-textfield-helper-success)}.c-text-input__helper.is-default{color:var(--color-textfield-helper-default)}\n"] }]
7258
- }], propDecorators: { label: [{
7259
- type: Input
7260
- }], name: [{
7261
- type: Input
7262
- }], placeholder: [{
7263
- type: Input
7264
- }], helperText: [{
7265
- type: Input
7266
- }], error: [{
7267
- type: Input
7268
- }], success: [{
7269
- type: Input
7270
- }], successText: [{
7271
- type: Input
7272
- }], alertText: [{
7273
- type: Input
7274
- }], disabled: [{
7275
- type: Input
7276
- }], readonly: [{
7277
- type: Input
7278
- }], required: [{
7279
- type: Input
7280
- }], optionalLabel: [{
7281
- type: Input
7282
- }], isLoading: [{
7283
- type: Input
7284
- }], type: [{
7285
- type: Input
7286
- }], size: [{
7287
- type: Input
7288
- }], fullWidth: [{
7289
- type: Input
7290
- }], autocomplete: [{
7291
- type: Input
7292
- }], regex: [{
7293
- type: Input
7294
- }], emitValue: [{
7295
- type: Output
7296
- }] } });
7297
-
7298
7270
  class TextareaComponent {
7299
7271
  label = '';
7300
7272
  placeholder = '';