cerxos-ui 0.0.24 → 0.0.25

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.
@@ -272,9 +272,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
272
272
  args: ['window:resize']
273
273
  }] } });
274
274
 
275
- const BASE_CLASSES$c = 'relative flex w-full gap-3 rounded-[var(--cxs-radius-md)] border border-l-4 px-4 py-3 text-sm ' +
275
+ const BASE_CLASSES$d = 'relative flex w-full gap-3 rounded-[var(--cxs-radius-md)] border border-l-4 px-4 py-3 text-sm ' +
276
276
  'text-[var(--cxs-color-on-surface)]';
277
- const VARIANT_CLASSES$9 = {
277
+ const VARIANT_CLASSES$a = {
278
278
  info: 'border-[var(--cxs-color-primary)] border-l-[var(--cxs-color-primary)] ' +
279
279
  'bg-[var(--cxs-color-primary-ghost)]',
280
280
  neutral: 'border-[var(--cxs-color-border)] border-l-[var(--cxs-color-border)] ' +
@@ -299,7 +299,7 @@ class CxsAlertComponent {
299
299
  closed = new EventEmitter();
300
300
  isVisible = true;
301
301
  get alertClass() {
302
- return [BASE_CLASSES$c, VARIANT_CLASSES$9[this.variant]].join(' ');
302
+ return [BASE_CLASSES$d, VARIANT_CLASSES$a[this.variant]].join(' ');
303
303
  }
304
304
  get titleClass() {
305
305
  return [TITLE_BASE, TITLE_VARIANT[this.variant]].join(' ');
@@ -327,7 +327,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
327
327
  type: Output
328
328
  }] } });
329
329
 
330
- const BASE_CLASSES$b = 'grid';
330
+ const BASE_CLASSES$c = 'grid';
331
331
  const SPACING_CLASSES = {
332
332
  sm: 'gap-2',
333
333
  md: 'gap-3',
@@ -336,7 +336,7 @@ const SPACING_CLASSES = {
336
336
  class CxsAccordionComponent {
337
337
  spacing = 'md';
338
338
  get accordionClass() {
339
- return [BASE_CLASSES$b, SPACING_CLASSES[this.spacing]].join(' ');
339
+ return [BASE_CLASSES$c, SPACING_CLASSES[this.spacing]].join(' ');
340
340
  }
341
341
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: CxsAccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
342
342
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.10", type: CxsAccordionComponent, isStandalone: true, selector: "cxs-accordion", inputs: { spacing: "spacing" }, ngImport: i0, template: "<div [class]=\"accordionClass\">\n <ng-content></ng-content>\n</div>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
@@ -424,9 +424,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
424
424
  type: Output
425
425
  }] } });
426
426
 
427
- const BASE_CLASSES$a = 'inline-flex items-center gap-1 rounded-[var(--cxs-radius-md)] border px-2.5 py-0.5 text-xs font-medium ' +
427
+ const BASE_CLASSES$b = 'inline-flex items-center gap-1 rounded-[var(--cxs-radius-md)] border px-2.5 py-0.5 text-xs font-medium ' +
428
428
  'leading-none';
429
- const VARIANT_CLASSES$8 = {
429
+ const VARIANT_CLASSES$9 = {
430
430
  primary: 'border-[var(--cxs-color-primary)] bg-[var(--cxs-color-primary-ghost)] ' +
431
431
  'text-[var(--cxs-color-primary)]',
432
432
  neutral: 'border-[var(--cxs-color-border)] bg-[var(--cxs-color-surface)] ' +
@@ -434,7 +434,7 @@ const VARIANT_CLASSES$8 = {
434
434
  danger: 'border-[var(--cxs-color-danger)] bg-[var(--cxs-color-surface)] ' +
435
435
  'text-[var(--cxs-color-danger)]'
436
436
  };
437
- const SIZE_CLASSES$9 = {
437
+ const SIZE_CLASSES$a = {
438
438
  sm: 'text-[11px]',
439
439
  md: 'text-xs'
440
440
  };
@@ -442,7 +442,7 @@ class CxsBadgeComponent {
442
442
  variant = 'primary';
443
443
  size = 'md';
444
444
  get badgeClass() {
445
- return [BASE_CLASSES$a, VARIANT_CLASSES$8[this.variant], SIZE_CLASSES$9[this.size]].join(' ');
445
+ return [BASE_CLASSES$b, VARIANT_CLASSES$9[this.variant], SIZE_CLASSES$a[this.size]].join(' ');
446
446
  }
447
447
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: CxsBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
448
448
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.10", type: CxsBadgeComponent, isStandalone: true, selector: "cxs-badge", inputs: { variant: "variant", size: "size" }, ngImport: i0, template: "<span [class]=\"badgeClass\">\n <ng-content></ng-content>\n</span>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
@@ -456,10 +456,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
456
456
  type: Input
457
457
  }] } });
458
458
 
459
- const BASE_CLASSES$9 = 'inline-flex items-center justify-center overflow-hidden border border-[var(--cxs-color-border)] ' +
459
+ const BASE_CLASSES$a = 'inline-flex items-center justify-center overflow-hidden border border-[var(--cxs-color-border)] ' +
460
460
  'bg-[var(--cxs-color-primary-ghost)] text-[var(--cxs-color-primary)] font-semibold uppercase ' +
461
461
  'select-none';
462
- const SIZE_CLASSES$8 = {
462
+ const SIZE_CLASSES$9 = {
463
463
  sm: 'h-8 w-8 text-[11px]',
464
464
  md: 'h-10 w-10 text-xs',
465
465
  lg: 'h-14 w-14 text-sm'
@@ -490,7 +490,7 @@ class CxsAvatarComponent {
490
490
  this.hostClass = hostClass;
491
491
  }
492
492
  get avatarClass() {
493
- return [BASE_CLASSES$9, SIZE_CLASSES$8[this.size], SHAPE_CLASSES[this.shape], this.hostClass]
493
+ return [BASE_CLASSES$a, SIZE_CLASSES$9[this.size], SHAPE_CLASSES[this.shape], this.hostClass]
494
494
  .filter(Boolean)
495
495
  .join(' ');
496
496
  }
@@ -559,14 +559,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
559
559
  type: Input
560
560
  }] } });
561
561
 
562
- const BASE_CLASSES$8 = 'flex flex-wrap items-center gap-x-1 gap-y-1';
562
+ const BASE_CLASSES$9 = 'flex flex-wrap items-center gap-x-1 gap-y-1';
563
563
  const ITEM_CLASSES = 'flex items-center gap-1';
564
564
  const LINK_BASE_CLASSES = 'rounded-[var(--cxs-radius-md)] transition-colors focus-visible:outline focus-visible:outline-2 ' +
565
565
  'focus-visible:outline-offset-2 focus-visible:outline-[var(--cxs-color-focus)]';
566
566
  const NON_LINK_CLASSES = 'text-[var(--cxs-color-on-surface-muted)]';
567
567
  const SEPARATOR_CLASSES = 'text-[var(--cxs-color-on-surface-muted)] select-none';
568
568
  const DISABLED_CLASSES = 'text-[var(--cxs-color-on-surface-muted)] opacity-60';
569
- const SIZE_CLASSES$7 = {
569
+ const SIZE_CLASSES$8 = {
570
570
  sm: 'text-xs',
571
571
  md: 'text-sm',
572
572
  lg: 'text-base'
@@ -587,7 +587,7 @@ class CxsBreadcrumbComponent {
587
587
  variant = 'default';
588
588
  disabled = false;
589
589
  get listClass() {
590
- return [BASE_CLASSES$8, SIZE_CLASSES$7[this.size], this.disabled ? 'opacity-60' : '']
590
+ return [BASE_CLASSES$9, SIZE_CLASSES$8[this.size], this.disabled ? 'opacity-60' : '']
591
591
  .filter(Boolean)
592
592
  .join(' ');
593
593
  }
@@ -648,8 +648,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
648
648
  type: Input
649
649
  }] } });
650
650
 
651
- const BASE_CLASSES$7 = 'inline-block shrink-0';
652
- const SIZE_CLASSES$6 = {
651
+ const BASE_CLASSES$8 = 'inline-block shrink-0';
652
+ const SIZE_CLASSES$7 = {
653
653
  sm: 'h-4 w-4',
654
654
  md: 'h-5 w-5',
655
655
  lg: 'h-6 w-6'
@@ -770,7 +770,7 @@ class CxsIconComponent {
770
770
  return icon;
771
771
  }
772
772
  get iconClass() {
773
- return [BASE_CLASSES$7, SIZE_CLASSES$6[this.size], this.hostClass].filter(Boolean).join(' ');
773
+ return [BASE_CLASSES$8, SIZE_CLASSES$7[this.size], this.hostClass].filter(Boolean).join(' ');
774
774
  }
775
775
  get titleId() {
776
776
  return this.label ? `cxs-icon-title-${this.instanceId}` : null;
@@ -795,10 +795,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
795
795
  type: Input
796
796
  }] } });
797
797
 
798
- const BASE_CLASSES$6 = 'relative inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium transition-colors ' +
798
+ const BASE_CLASSES$7 = 'relative inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium transition-colors ' +
799
799
  'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 ' +
800
800
  'focus-visible:outline-[var(--cxs-color-focus)] disabled:pointer-events-none disabled:opacity-50';
801
- const VARIANT_CLASSES$7 = {
801
+ const VARIANT_CLASSES$8 = {
802
802
  primary: 'bg-[var(--cxs-color-primary)] text-[var(--cxs-color-on-primary)] ' +
803
803
  'hover:bg-[var(--cxs-color-primary-hover)] shadow-[var(--cxs-shadow-sm)]',
804
804
  danger: 'bg-[var(--cxs-color-danger-surface)] text-[var(--cxs-color-danger)] ' +
@@ -809,7 +809,7 @@ const VARIANT_CLASSES$7 = {
809
809
  'hover:bg-[var(--cxs-color-primary-ghost)]',
810
810
  ghost: 'bg-transparent text-[var(--cxs-color-primary)] hover:bg-[var(--cxs-color-primary-ghost)]'
811
811
  };
812
- const SIZE_CLASSES$5 = {
812
+ const SIZE_CLASSES$6 = {
813
813
  sm: 'h-8 px-3 text-sm rounded-[var(--cxs-radius-md)]',
814
814
  md: 'h-10 px-4 text-sm rounded-[var(--cxs-radius-md)]',
815
815
  lg: 'h-12 px-5 text-base rounded-[var(--cxs-radius-md)]'
@@ -859,9 +859,9 @@ class CxsButtonComponent {
859
859
  }
860
860
  get buttonClass() {
861
861
  return [
862
- BASE_CLASSES$6,
863
- this.iconOnly ? ICON_ONLY_SIZE_CLASSES[this.size] : SIZE_CLASSES$5[this.size],
864
- VARIANT_CLASSES$7[this.variant],
862
+ BASE_CLASSES$7,
863
+ this.iconOnly ? ICON_ONLY_SIZE_CLASSES[this.size] : SIZE_CLASSES$6[this.size],
864
+ VARIANT_CLASSES$8[this.variant],
865
865
  this.iconOnly ? 'gap-0' : '',
866
866
  this.hostClass
867
867
  ]
@@ -897,14 +897,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
897
897
  type: Input
898
898
  }] } });
899
899
 
900
- const BASE_CLASSES$5 = 'rounded-[var(--cxs-radius-md)] border border-[var(--cxs-color-border)] ' +
900
+ const BASE_CLASSES$6 = 'rounded-[var(--cxs-radius-md)] border border-[var(--cxs-color-border)] ' +
901
901
  'bg-[var(--cxs-color-surface)] text-[var(--cxs-color-on-surface)]';
902
- const VARIANT_CLASSES$6 = {
902
+ const VARIANT_CLASSES$7 = {
903
903
  surface: 'bg-[var(--cxs-color-surface)]',
904
904
  muted: 'bg-[var(--cxs-color-surface-hover)]',
905
905
  outline: 'bg-transparent'
906
906
  };
907
- const SIZE_CLASSES$4 = {
907
+ const SIZE_CLASSES$5 = {
908
908
  sm: 'p-3',
909
909
  md: 'p-5',
910
910
  lg: 'p-7'
@@ -917,9 +917,9 @@ class CxsCardComponent {
917
917
  ariaLabelledby;
918
918
  get cardClass() {
919
919
  return [
920
- BASE_CLASSES$5,
921
- VARIANT_CLASSES$6[this.variant],
922
- SIZE_CLASSES$4[this.size],
920
+ BASE_CLASSES$6,
921
+ VARIANT_CLASSES$7[this.variant],
922
+ SIZE_CLASSES$5[this.size],
923
923
  this.elevated ? 'shadow-[var(--cxs-shadow-sm)]' : ''
924
924
  ]
925
925
  .filter(Boolean)
@@ -948,7 +948,7 @@ const WRAPPER_ENABLED$1 = 'cursor-pointer';
948
948
  const WRAPPER_DISABLED$1 = 'cursor-not-allowed opacity-60';
949
949
  const LABEL_BASE$1 = 'text-[var(--cxs-color-on-surface)]';
950
950
  const LABEL_DISABLED$1 = 'text-[var(--cxs-color-on-surface-muted)]';
951
- const LABEL_SIZE_CLASSES$6 = {
951
+ const LABEL_SIZE_CLASSES$7 = {
952
952
  sm: 'text-sm',
953
953
  md: 'text-sm',
954
954
  lg: 'text-base'
@@ -1003,7 +1003,7 @@ class CxsCheckboxComponent {
1003
1003
  get labelClass() {
1004
1004
  return [
1005
1005
  LABEL_BASE$1,
1006
- LABEL_SIZE_CLASSES$6[this.size],
1006
+ LABEL_SIZE_CLASSES$7[this.size],
1007
1007
  this.isDisabled ? LABEL_DISABLED$1 : ''
1008
1008
  ]
1009
1009
  .filter(Boolean)
@@ -2128,30 +2128,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
2128
2128
  args: ['dialogPanel']
2129
2129
  }] } });
2130
2130
 
2131
- const BASE_CLASSES$4 = 'w-full rounded-[var(--cxs-radius-md)] border border-[var(--cxs-color-border)] ' +
2131
+ const BASE_CLASSES$5 = 'w-full rounded-[var(--cxs-radius-md)] border border-[var(--cxs-color-border)] ' +
2132
2132
  'bg-[var(--cxs-color-surface)] text-[var(--cxs-color-on-surface)] ' +
2133
2133
  'placeholder:text-[var(--cxs-color-on-surface-muted)] transition-colors ' +
2134
2134
  'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 ' +
2135
2135
  'focus-visible:outline-[var(--cxs-color-focus)] focus-visible:border-[var(--cxs-color-focus)] ' +
2136
2136
  'disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-60';
2137
- const WRAPPER_CLASSES$8 = 'flex w-full flex-col gap-1';
2138
- const LABEL_BASE_CLASSES$5 = 'font-medium text-(--cxs-color-on-surface)';
2139
- const LABEL_DISABLED_CLASSES$5 = 'text-[var(--cxs-color-on-surface-muted)]';
2140
- const VARIANT_CLASSES$5 = {
2137
+ const WRAPPER_CLASSES$9 = 'flex w-full flex-col gap-1';
2138
+ const LABEL_BASE_CLASSES$6 = 'font-medium text-(--cxs-color-on-surface)';
2139
+ const LABEL_DISABLED_CLASSES$6 = 'text-[var(--cxs-color-on-surface-muted)]';
2140
+ const VARIANT_CLASSES$6 = {
2141
2141
  outline: 'bg-[var(--cxs-color-surface)]',
2142
2142
  filled: 'bg-[var(--cxs-color-surface-hover)]'
2143
2143
  };
2144
- const SIZE_CLASSES$3 = {
2144
+ const SIZE_CLASSES$4 = {
2145
2145
  sm: 'h-8 px-3 text-sm',
2146
2146
  md: 'h-10 px-3 text-sm',
2147
2147
  lg: 'h-12 px-4 text-base'
2148
2148
  };
2149
- const LABEL_SIZE_CLASSES$5 = {
2149
+ const LABEL_SIZE_CLASSES$6 = {
2150
2150
  sm: 'text-sm',
2151
2151
  md: 'text-sm',
2152
2152
  lg: 'text-base'
2153
2153
  };
2154
- const INVALID_CLASSES$4 = 'border-[var(--cxs-color-danger)] focus-visible:border-[var(--cxs-color-danger)] ' +
2154
+ const INVALID_CLASSES$5 = 'border-[var(--cxs-color-danger)] focus-visible:border-[var(--cxs-color-danger)] ' +
2155
2155
  'focus-visible:outline-[var(--cxs-color-danger)]';
2156
2156
  const POPOVER_CLASSES = 'absolute left-0 top-full z-10 mt-2 w-full rounded-[var(--cxs-radius-md)] border ' +
2157
2157
  'border-[var(--cxs-color-border)] bg-[var(--cxs-color-surface)] p-3 shadow-[var(--cxs-shadow-sm)]';
@@ -2211,22 +2211,22 @@ class CxsDatepickerComponent {
2211
2211
  }
2212
2212
  get inputClass() {
2213
2213
  return [
2214
- BASE_CLASSES$4,
2215
- SIZE_CLASSES$3[this.size],
2216
- VARIANT_CLASSES$5[this.variant],
2217
- this.invalid ? INVALID_CLASSES$4 : ''
2214
+ BASE_CLASSES$5,
2215
+ SIZE_CLASSES$4[this.size],
2216
+ VARIANT_CLASSES$6[this.variant],
2217
+ this.invalid ? INVALID_CLASSES$5 : ''
2218
2218
  ]
2219
2219
  .filter(Boolean)
2220
2220
  .join(' ');
2221
2221
  }
2222
2222
  get wrapperClass() {
2223
- return WRAPPER_CLASSES$8;
2223
+ return WRAPPER_CLASSES$9;
2224
2224
  }
2225
2225
  get labelClass() {
2226
2226
  return [
2227
- LABEL_BASE_CLASSES$5,
2228
- LABEL_SIZE_CLASSES$5[this.size],
2229
- this.isDisabled ? LABEL_DISABLED_CLASSES$5 : ''
2227
+ LABEL_BASE_CLASSES$6,
2228
+ LABEL_SIZE_CLASSES$6[this.size],
2229
+ this.isDisabled ? LABEL_DISABLED_CLASSES$6 : ''
2230
2230
  ]
2231
2231
  .filter(Boolean)
2232
2232
  .join(' ');
@@ -2929,36 +2929,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
2929
2929
  type: Input
2930
2930
  }] } });
2931
2931
 
2932
- const BASE_CLASSES$3 = 'w-full rounded-[var(--cxs-radius-md)] border border-[var(--cxs-color-border)] ' +
2932
+ const BASE_CLASSES$4 = 'w-full rounded-[var(--cxs-radius-md)] border border-[var(--cxs-color-border)] ' +
2933
2933
  'bg-[var(--cxs-color-surface)] text-[var(--cxs-color-on-surface)] ' +
2934
2934
  'placeholder:text-[var(--cxs-color-on-surface-muted)] transition-colors ' +
2935
2935
  'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 ' +
2936
2936
  'focus-visible:outline-[var(--cxs-color-focus)] focus-visible:border-[var(--cxs-color-focus)] ' +
2937
2937
  'disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-60';
2938
- const WRAPPER_CLASSES$7 = 'flex w-full flex-col gap-1';
2939
- const LABEL_BASE_CLASSES$4 = 'font-medium text-(--cxs-color-on-surface)';
2940
- const LABEL_DISABLED_CLASSES$4 = 'text-[var(--cxs-color-on-surface-muted)]';
2941
- const ERROR_BASE_CLASSES = 'text-[var(--cxs-color-danger)]';
2942
- const VARIANT_CLASSES$4 = {
2938
+ const WRAPPER_CLASSES$8 = 'flex w-full flex-col gap-1';
2939
+ const LABEL_BASE_CLASSES$5 = 'font-medium text-(--cxs-color-on-surface)';
2940
+ const LABEL_DISABLED_CLASSES$5 = 'text-[var(--cxs-color-on-surface-muted)]';
2941
+ const ERROR_BASE_CLASSES$1 = 'text-[var(--cxs-color-danger)]';
2942
+ const VARIANT_CLASSES$5 = {
2943
2943
  outline: 'bg-[var(--cxs-color-surface)]',
2944
2944
  filled: 'bg-[var(--cxs-color-surface-hover)]'
2945
2945
  };
2946
- const SIZE_CLASSES$2 = {
2946
+ const SIZE_CLASSES$3 = {
2947
2947
  sm: 'h-8 px-3 text-sm',
2948
2948
  md: 'h-10 px-3 text-sm',
2949
2949
  lg: 'h-12 px-4 text-base'
2950
2950
  };
2951
- const LABEL_SIZE_CLASSES$4 = {
2951
+ const LABEL_SIZE_CLASSES$5 = {
2952
2952
  sm: 'text-sm',
2953
2953
  md: 'text-sm',
2954
2954
  lg: 'text-base'
2955
2955
  };
2956
- const ERROR_SIZE_CLASSES = {
2956
+ const ERROR_SIZE_CLASSES$1 = {
2957
2957
  sm: 'text-xs',
2958
2958
  md: 'text-xs',
2959
2959
  lg: 'text-sm'
2960
2960
  };
2961
- const INVALID_CLASSES$3 = 'border-[var(--cxs-color-danger)] focus-visible:border-[var(--cxs-color-danger)] ' +
2961
+ const INVALID_CLASSES$4 = 'border-[var(--cxs-color-danger)] focus-visible:border-[var(--cxs-color-danger)] ' +
2962
2962
  'focus-visible:outline-[var(--cxs-color-danger)]';
2963
2963
  class CxsInputComponent {
2964
2964
  changeDetector = inject(ChangeDetectorRef);
@@ -2991,22 +2991,22 @@ class CxsInputComponent {
2991
2991
  }
2992
2992
  get inputClass() {
2993
2993
  return [
2994
- BASE_CLASSES$3,
2995
- SIZE_CLASSES$2[this.size],
2996
- VARIANT_CLASSES$4[this.variant],
2997
- this.invalid ? INVALID_CLASSES$3 : ''
2994
+ BASE_CLASSES$4,
2995
+ SIZE_CLASSES$3[this.size],
2996
+ VARIANT_CLASSES$5[this.variant],
2997
+ this.invalid ? INVALID_CLASSES$4 : ''
2998
2998
  ]
2999
2999
  .filter(Boolean)
3000
3000
  .join(' ');
3001
3001
  }
3002
3002
  get wrapperClass() {
3003
- return WRAPPER_CLASSES$7;
3003
+ return WRAPPER_CLASSES$8;
3004
3004
  }
3005
3005
  get labelClass() {
3006
3006
  return [
3007
- LABEL_BASE_CLASSES$4,
3008
- LABEL_SIZE_CLASSES$4[this.size],
3009
- this.isDisabled ? LABEL_DISABLED_CLASSES$4 : ''
3007
+ LABEL_BASE_CLASSES$5,
3008
+ LABEL_SIZE_CLASSES$5[this.size],
3009
+ this.isDisabled ? LABEL_DISABLED_CLASSES$5 : ''
3010
3010
  ]
3011
3011
  .filter(Boolean)
3012
3012
  .join(' ');
@@ -3040,7 +3040,7 @@ class CxsInputComponent {
3040
3040
  return tokens.length > 0 ? tokens.join(' ') : null;
3041
3041
  }
3042
3042
  get errorClass() {
3043
- return [ERROR_BASE_CLASSES, ERROR_SIZE_CLASSES[this.size]].join(' ');
3043
+ return [ERROR_BASE_CLASSES$1, ERROR_SIZE_CLASSES$1[this.size]].join(' ');
3044
3044
  }
3045
3045
  writeValue(value) {
3046
3046
  this.value = value ?? '';
@@ -3265,15 +3265,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
3265
3265
  args: ['menuItem', { read: ElementRef }]
3266
3266
  }] } });
3267
3267
 
3268
- const WRAPPER_CLASSES$6 = 'flex w-full flex-col gap-1';
3269
- const LABEL_BASE_CLASSES$3 = 'font-medium text-(--cxs-color-on-surface)';
3270
- const LABEL_DISABLED_CLASSES$3 = 'text-[var(--cxs-color-on-surface-muted)]';
3268
+ const WRAPPER_CLASSES$7 = 'flex w-full flex-col gap-1';
3269
+ const LABEL_BASE_CLASSES$4 = 'font-medium text-(--cxs-color-on-surface)';
3270
+ const LABEL_DISABLED_CLASSES$4 = 'text-[var(--cxs-color-on-surface-muted)]';
3271
3271
  const CONTROL_BASE_CLASSES = 'flex w-full flex-wrap items-center gap-2 rounded-[var(--cxs-radius-md)] border ' +
3272
3272
  'border-[var(--cxs-color-border)] transition-colors ' +
3273
3273
  'focus-within:outline focus-within:outline-2 focus-within:outline-offset-2 ' +
3274
3274
  'focus-within:outline-[var(--cxs-color-focus)] focus-within:border-[var(--cxs-color-focus)]';
3275
3275
  const CONTROL_DISABLED_CLASSES = 'pointer-events-none cursor-not-allowed opacity-60';
3276
- const VARIANT_CLASSES$3 = {
3276
+ const VARIANT_CLASSES$4 = {
3277
3277
  outline: 'bg-[var(--cxs-color-surface)]',
3278
3278
  filled: 'bg-[var(--cxs-color-surface-hover)]'
3279
3279
  };
@@ -3282,7 +3282,7 @@ const CONTROL_SIZE_CLASSES$1 = {
3282
3282
  md: 'min-h-10 px-3 py-1.5 text-sm',
3283
3283
  lg: 'min-h-12 px-4 py-2 text-base'
3284
3284
  };
3285
- const LABEL_SIZE_CLASSES$3 = {
3285
+ const LABEL_SIZE_CLASSES$4 = {
3286
3286
  sm: 'text-sm',
3287
3287
  md: 'text-sm',
3288
3288
  lg: 'text-base'
@@ -3303,7 +3303,7 @@ const OPTION_BASE_CLASSES = 'flex w-full items-center justify-between rounded-[v
3303
3303
  'text-sm text-[var(--cxs-color-on-surface)] transition-colors hover:bg-[var(--cxs-color-surface-hover)]';
3304
3304
  const OPTION_DISABLED_CLASSES = 'cursor-not-allowed opacity-50 hover:bg-transparent';
3305
3305
  const EMPTY_STATE_CLASSES = 'px-3 py-2 text-sm text-[var(--cxs-color-on-surface-muted)]';
3306
- const INVALID_CLASSES$2 = 'border-[var(--cxs-color-danger)] focus-within:border-[var(--cxs-color-danger)] ' +
3306
+ const INVALID_CLASSES$3 = 'border-[var(--cxs-color-danger)] focus-within:border-[var(--cxs-color-danger)] ' +
3307
3307
  'focus-within:outline-[var(--cxs-color-danger)]';
3308
3308
  class CxsMultiSelectComponent {
3309
3309
  elementRef;
@@ -3344,13 +3344,13 @@ class CxsMultiSelectComponent {
3344
3344
  this.value.length >= this.maxSelections;
3345
3345
  }
3346
3346
  get wrapperClass() {
3347
- return WRAPPER_CLASSES$6;
3347
+ return WRAPPER_CLASSES$7;
3348
3348
  }
3349
3349
  get labelClass() {
3350
3350
  return [
3351
- LABEL_BASE_CLASSES$3,
3352
- LABEL_SIZE_CLASSES$3[this.size],
3353
- this.isDisabled ? LABEL_DISABLED_CLASSES$3 : ''
3351
+ LABEL_BASE_CLASSES$4,
3352
+ LABEL_SIZE_CLASSES$4[this.size],
3353
+ this.isDisabled ? LABEL_DISABLED_CLASSES$4 : ''
3354
3354
  ]
3355
3355
  .filter(Boolean)
3356
3356
  .join(' ');
@@ -3359,8 +3359,8 @@ class CxsMultiSelectComponent {
3359
3359
  return [
3360
3360
  CONTROL_BASE_CLASSES,
3361
3361
  CONTROL_SIZE_CLASSES$1[this.size],
3362
- VARIANT_CLASSES$3[this.variant],
3363
- this.invalid ? INVALID_CLASSES$2 : '',
3362
+ VARIANT_CLASSES$4[this.variant],
3363
+ this.invalid ? INVALID_CLASSES$3 : '',
3364
3364
  this.isDisabled ? CONTROL_DISABLED_CLASSES : ''
3365
3365
  ]
3366
3366
  .filter(Boolean)
@@ -3560,7 +3560,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
3560
3560
  args: ['document:click', ['$event']]
3561
3561
  }] } });
3562
3562
 
3563
- const WRAPPER_CLASSES$5 = 'flex w-full flex-col gap-1.5';
3563
+ const WRAPPER_CLASSES$6 = 'flex w-full flex-col gap-1.5';
3564
3564
  const HEADER_CLASSES$1 = 'flex items-center justify-between gap-3';
3565
3565
  const LABEL_CLASSES = 'text-sm font-medium text-[var(--cxs-color-on-surface)]';
3566
3566
  const VALUE_CLASSES$1 = 'text-sm text-[var(--cxs-color-on-surface-muted)]';
@@ -3589,7 +3589,7 @@ class CxsProgressBarComponent {
3589
3589
  ariaLabel = 'Progress';
3590
3590
  labelId = `cxs-progress-bar-label-${++CxsProgressBarComponent.nextId}`;
3591
3591
  get wrapperClass() {
3592
- return WRAPPER_CLASSES$5;
3592
+ return WRAPPER_CLASSES$6;
3593
3593
  }
3594
3594
  get headerClass() {
3595
3595
  return HEADER_CLASSES$1;
@@ -3713,7 +3713,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
3713
3713
  args: ['content', { static: true }]
3714
3714
  }] } });
3715
3715
 
3716
- const WRAPPER_CLASSES$4 = 'w-full';
3716
+ const WRAPPER_CLASSES$5 = 'w-full';
3717
3717
  const TAB_LIST_CLASSES = 'flex flex-wrap items-center gap-6 border-b border-[var(--cxs-color-border)]';
3718
3718
  const TAB_BUTTON_BASE_CLASSES = 'inline-flex items-center gap-2 border-b-2 pb-3 text-sm font-medium transition-colors';
3719
3719
  const TAB_BUTTON_INACTIVE_CLASSES = 'border-transparent text-[var(--cxs-color-on-surface-muted)] hover:text-[var(--cxs-color-on-surface)]';
@@ -3728,7 +3728,7 @@ class CxsTabsComponent {
3728
3728
  activeIdChange = new EventEmitter();
3729
3729
  panels;
3730
3730
  get wrapperClass() {
3731
- return WRAPPER_CLASSES$4;
3731
+ return WRAPPER_CLASSES$5;
3732
3732
  }
3733
3733
  get tabListClass() {
3734
3734
  return TAB_LIST_CLASSES;
@@ -3828,7 +3828,7 @@ const WRAPPER_ENABLED = 'cursor-pointer';
3828
3828
  const WRAPPER_DISABLED = 'cursor-not-allowed opacity-60';
3829
3829
  const LABEL_BASE = 'text-[var(--cxs-color-on-surface)]';
3830
3830
  const LABEL_DISABLED = 'text-[var(--cxs-color-on-surface-muted)]';
3831
- const LABEL_SIZE_CLASSES$2 = {
3831
+ const LABEL_SIZE_CLASSES$3 = {
3832
3832
  sm: 'text-sm',
3833
3833
  md: 'text-sm',
3834
3834
  lg: 'text-base'
@@ -3853,7 +3853,7 @@ const DOT_SIZE_CLASSES = {
3853
3853
  md: 'after:h-2.5 after:w-2.5',
3854
3854
  lg: 'after:h-3 after:w-3'
3855
3855
  };
3856
- const INVALID_CLASSES$1 = 'border-[var(--cxs-color-danger)] peer-checked:border-[var(--cxs-color-danger)] ' +
3856
+ const INVALID_CLASSES$2 = 'border-[var(--cxs-color-danger)] peer-checked:border-[var(--cxs-color-danger)] ' +
3857
3857
  'after:bg-[var(--cxs-color-danger)]';
3858
3858
  class CxsRadioComponent {
3859
3859
  changeDetector = inject(ChangeDetectorRef);
@@ -3888,7 +3888,7 @@ class CxsRadioComponent {
3888
3888
  get labelClass() {
3889
3889
  return [
3890
3890
  LABEL_BASE,
3891
- LABEL_SIZE_CLASSES$2[this.size],
3891
+ LABEL_SIZE_CLASSES$3[this.size],
3892
3892
  this.isDisabled ? LABEL_DISABLED : ''
3893
3893
  ]
3894
3894
  .filter(Boolean)
@@ -3900,7 +3900,7 @@ class CxsRadioComponent {
3900
3900
  CONTROL_SIZE_CLASSES[this.size],
3901
3901
  DOT_SIZE_CLASSES[this.size],
3902
3902
  CONTROL_VARIANT_CLASSES[this.variant],
3903
- this.invalid ? INVALID_CLASSES$1 : ''
3903
+ this.invalid ? INVALID_CLASSES$2 : ''
3904
3904
  ]
3905
3905
  .filter(Boolean)
3906
3906
  .join(' ');
@@ -3988,7 +3988,7 @@ const TONE_CLASSES = {
3988
3988
  'text-[var(--cxs-color-on-surface)]'
3989
3989
  };
3990
3990
  const SELECTED_CLASSES = 'ring-2 ring-offset-2 ring-current';
3991
- const SIZE_CLASSES$1 = {
3991
+ const SIZE_CLASSES$2 = {
3992
3992
  sm: 'min-h-8 px-3 py-1 text-xs',
3993
3993
  md: 'min-h-10 px-4 py-2 text-sm',
3994
3994
  lg: 'min-h-12 px-5 py-2.5 text-base'
@@ -4017,7 +4017,7 @@ class CxsRadioChipGroupComponent {
4017
4017
  chipClass(option) {
4018
4018
  return [
4019
4019
  CHIP_BASE,
4020
- SIZE_CLASSES$1[this.size],
4020
+ SIZE_CLASSES$2[this.size],
4021
4021
  TONE_CLASSES[option.tone],
4022
4022
  this.value === option.value ? SELECTED_CLASSES : '',
4023
4023
  this.invalid ? 'outline outline-1 outline-[var(--cxs-color-danger)]' : '',
@@ -4084,30 +4084,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
4084
4084
  type: Output
4085
4085
  }] } });
4086
4086
 
4087
- const BASE_CLASSES$2 = 'w-full appearance-none rounded-[var(--cxs-radius-md)] border border-[var(--cxs-color-border)] ' +
4087
+ const BASE_CLASSES$3 = 'w-full appearance-none rounded-[var(--cxs-radius-md)] border border-[var(--cxs-color-border)] ' +
4088
4088
  'bg-[var(--cxs-color-surface)] text-[var(--cxs-color-on-surface)] ' +
4089
4089
  'placeholder:text-[var(--cxs-color-on-surface-muted)] transition-colors ' +
4090
4090
  'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 ' +
4091
4091
  'focus-visible:outline-[var(--cxs-color-focus)] focus-visible:border-[var(--cxs-color-focus)] ' +
4092
4092
  'disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-60';
4093
- const WRAPPER_CLASSES$3 = 'flex w-full flex-col gap-1';
4094
- const LABEL_BASE_CLASSES$2 = 'font-medium text-(--cxs-color-on-surface)';
4095
- const LABEL_DISABLED_CLASSES$2 = 'text-[var(--cxs-color-on-surface-muted)]';
4096
- const VARIANT_CLASSES$2 = {
4093
+ const WRAPPER_CLASSES$4 = 'flex w-full flex-col gap-1';
4094
+ const LABEL_BASE_CLASSES$3 = 'font-medium text-(--cxs-color-on-surface)';
4095
+ const LABEL_DISABLED_CLASSES$3 = 'text-[var(--cxs-color-on-surface-muted)]';
4096
+ const VARIANT_CLASSES$3 = {
4097
4097
  outline: 'bg-[var(--cxs-color-surface)]',
4098
4098
  filled: 'bg-[var(--cxs-color-surface-hover)]'
4099
4099
  };
4100
- const SIZE_CLASSES = {
4100
+ const SIZE_CLASSES$1 = {
4101
4101
  sm: 'h-8 pl-3 pr-9 text-sm',
4102
4102
  md: 'h-10 pl-3 pr-9 text-sm',
4103
4103
  lg: 'h-12 pl-4 pr-10 text-base'
4104
4104
  };
4105
- const LABEL_SIZE_CLASSES$1 = {
4105
+ const LABEL_SIZE_CLASSES$2 = {
4106
4106
  sm: 'text-sm',
4107
4107
  md: 'text-sm',
4108
4108
  lg: 'text-base'
4109
4109
  };
4110
- const INVALID_CLASSES = 'border-[var(--cxs-color-danger)] focus-visible:border-[var(--cxs-color-danger)] ' +
4110
+ const INVALID_CLASSES$1 = 'border-[var(--cxs-color-danger)] focus-visible:border-[var(--cxs-color-danger)] ' +
4111
4111
  'focus-visible:outline-[var(--cxs-color-danger)]';
4112
4112
  class CxsSelectComponent {
4113
4113
  changeDetector = inject(ChangeDetectorRef);
@@ -4135,22 +4135,22 @@ class CxsSelectComponent {
4135
4135
  }
4136
4136
  get selectClass() {
4137
4137
  return [
4138
- BASE_CLASSES$2,
4139
- SIZE_CLASSES[this.size],
4140
- VARIANT_CLASSES$2[this.variant],
4141
- this.invalid ? INVALID_CLASSES : ''
4138
+ BASE_CLASSES$3,
4139
+ SIZE_CLASSES$1[this.size],
4140
+ VARIANT_CLASSES$3[this.variant],
4141
+ this.invalid ? INVALID_CLASSES$1 : ''
4142
4142
  ]
4143
4143
  .filter(Boolean)
4144
4144
  .join(' ');
4145
4145
  }
4146
4146
  get wrapperClass() {
4147
- return WRAPPER_CLASSES$3;
4147
+ return WRAPPER_CLASSES$4;
4148
4148
  }
4149
4149
  get labelClass() {
4150
4150
  return [
4151
- LABEL_BASE_CLASSES$2,
4152
- LABEL_SIZE_CLASSES$1[this.size],
4153
- this.isDisabled ? LABEL_DISABLED_CLASSES$2 : ''
4151
+ LABEL_BASE_CLASSES$3,
4152
+ LABEL_SIZE_CLASSES$2[this.size],
4153
+ this.isDisabled ? LABEL_DISABLED_CLASSES$3 : ''
4154
4154
  ]
4155
4155
  .filter(Boolean)
4156
4156
  .join(' ');
@@ -4251,8 +4251,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
4251
4251
  type: Output
4252
4252
  }] } });
4253
4253
 
4254
- const BASE_CLASSES$1 = 'cxs-skeleton block overflow-hidden bg-[var(--cxs-color-skeleton-base)]';
4255
- const VARIANT_CLASSES$1 = {
4254
+ const BASE_CLASSES$2 = 'cxs-skeleton block overflow-hidden bg-[var(--cxs-color-skeleton-base)]';
4255
+ const VARIANT_CLASSES$2 = {
4256
4256
  line: 'rounded-[var(--cxs-radius-md)]',
4257
4257
  block: 'rounded-[var(--cxs-radius-md)]',
4258
4258
  circle: 'rounded-full'
@@ -4287,8 +4287,8 @@ class CxsSkeletonComponent {
4287
4287
  }
4288
4288
  get skeletonClass() {
4289
4289
  return [
4290
- BASE_CLASSES$1,
4291
- VARIANT_CLASSES$1[this.variant],
4290
+ BASE_CLASSES$2,
4291
+ VARIANT_CLASSES$2[this.variant],
4292
4292
  this.animated ? 'cxs-skeleton--animated' : '',
4293
4293
  this.hostClass
4294
4294
  ]
@@ -4330,12 +4330,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
4330
4330
  type: Input
4331
4331
  }] } });
4332
4332
 
4333
- const WRAPPER_CLASSES$2 = 'flex w-full flex-col gap-1.5';
4333
+ const WRAPPER_CLASSES$3 = 'flex w-full flex-col gap-1.5';
4334
4334
  const HEADER_CLASSES = 'flex items-center justify-between gap-3';
4335
- const LABEL_BASE_CLASSES$1 = 'font-medium text-[var(--cxs-color-on-surface)]';
4336
- const LABEL_DISABLED_CLASSES$1 = 'text-[var(--cxs-color-on-surface-muted)]';
4335
+ const LABEL_BASE_CLASSES$2 = 'font-medium text-[var(--cxs-color-on-surface)]';
4336
+ const LABEL_DISABLED_CLASSES$2 = 'text-[var(--cxs-color-on-surface-muted)]';
4337
4337
  const VALUE_CLASSES = 'text-sm text-[var(--cxs-color-on-surface-muted)]';
4338
- const LABEL_SIZE_CLASSES = {
4338
+ const LABEL_SIZE_CLASSES$1 = {
4339
4339
  sm: 'text-sm',
4340
4340
  md: 'text-sm',
4341
4341
  lg: 'text-base'
@@ -4406,16 +4406,16 @@ class CxsSliderComponent {
4406
4406
  ].join(' ');
4407
4407
  }
4408
4408
  get wrapperClass() {
4409
- return WRAPPER_CLASSES$2;
4409
+ return WRAPPER_CLASSES$3;
4410
4410
  }
4411
4411
  get headerClass() {
4412
4412
  return HEADER_CLASSES;
4413
4413
  }
4414
4414
  get labelClass() {
4415
4415
  return [
4416
- LABEL_BASE_CLASSES$1,
4417
- LABEL_SIZE_CLASSES[this.size],
4418
- this.isDisabled ? LABEL_DISABLED_CLASSES$1 : ''
4416
+ LABEL_BASE_CLASSES$2,
4417
+ LABEL_SIZE_CLASSES$1[this.size],
4418
+ this.isDisabled ? LABEL_DISABLED_CLASSES$2 : ''
4419
4419
  ]
4420
4420
  .filter(Boolean)
4421
4421
  .join(' ');
@@ -4639,6 +4639,203 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
4639
4639
  type: Input
4640
4640
  }] } });
4641
4641
 
4642
+ const BASE_CLASSES$1 = 'w-full rounded-[var(--cxs-radius-md)] border border-[var(--cxs-color-border)] ' +
4643
+ 'bg-[var(--cxs-color-surface)] text-[var(--cxs-color-on-surface)] ' +
4644
+ 'placeholder:text-[var(--cxs-color-on-surface-muted)] transition-colors ' +
4645
+ 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 ' +
4646
+ 'focus-visible:outline-[var(--cxs-color-focus)] focus-visible:border-[var(--cxs-color-focus)] ' +
4647
+ 'disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-60';
4648
+ const WRAPPER_CLASSES$2 = 'flex w-full flex-col gap-1';
4649
+ const LABEL_BASE_CLASSES$1 = 'font-medium text-(--cxs-color-on-surface)';
4650
+ const LABEL_DISABLED_CLASSES$1 = 'text-[var(--cxs-color-on-surface-muted)]';
4651
+ const ERROR_BASE_CLASSES = 'text-[var(--cxs-color-danger)]';
4652
+ const VARIANT_CLASSES$1 = {
4653
+ outline: 'bg-[var(--cxs-color-surface)]',
4654
+ filled: 'bg-[var(--cxs-color-surface-hover)]'
4655
+ };
4656
+ const SIZE_CLASSES = {
4657
+ sm: 'px-3 py-1.5 text-sm',
4658
+ md: 'px-3 py-2 text-sm',
4659
+ lg: 'px-4 py-3 text-base'
4660
+ };
4661
+ const RESIZE_CLASSES = {
4662
+ vertical: 'resize-y',
4663
+ none: 'resize-none'
4664
+ };
4665
+ const LABEL_SIZE_CLASSES = {
4666
+ sm: 'text-sm',
4667
+ md: 'text-sm',
4668
+ lg: 'text-base'
4669
+ };
4670
+ const ERROR_SIZE_CLASSES = {
4671
+ sm: 'text-xs',
4672
+ md: 'text-xs',
4673
+ lg: 'text-sm'
4674
+ };
4675
+ const INVALID_CLASSES = 'border-[var(--cxs-color-danger)] focus-visible:border-[var(--cxs-color-danger)] ' +
4676
+ 'focus-visible:outline-[var(--cxs-color-danger)]';
4677
+ class CxsTextareaComponent {
4678
+ changeDetector = inject(ChangeDetectorRef);
4679
+ static nextId = 0;
4680
+ value = '';
4681
+ variant = 'outline';
4682
+ size = 'md';
4683
+ rows = 3;
4684
+ resize = 'vertical';
4685
+ disabled = false;
4686
+ readonly = false;
4687
+ required = false;
4688
+ invalid = false;
4689
+ label;
4690
+ id;
4691
+ name;
4692
+ placeholder;
4693
+ maxlength;
4694
+ spellcheck = null;
4695
+ ariaLabel;
4696
+ ariaDescribedby;
4697
+ valueChange = new EventEmitter();
4698
+ instanceId = `cxs-textarea-${CxsTextareaComponent.nextId++}`;
4699
+ disabledFromControl = false;
4700
+ onChange = () => { };
4701
+ onTouched = () => { };
4702
+ get isDisabled() {
4703
+ return this.disabled || this.disabledFromControl;
4704
+ }
4705
+ get textareaClass() {
4706
+ return [
4707
+ BASE_CLASSES$1,
4708
+ SIZE_CLASSES[this.size],
4709
+ VARIANT_CLASSES$1[this.variant],
4710
+ RESIZE_CLASSES[this.resize],
4711
+ this.invalid ? INVALID_CLASSES : ''
4712
+ ]
4713
+ .filter(Boolean)
4714
+ .join(' ');
4715
+ }
4716
+ get wrapperClass() {
4717
+ return WRAPPER_CLASSES$2;
4718
+ }
4719
+ get labelClass() {
4720
+ return [
4721
+ LABEL_BASE_CLASSES$1,
4722
+ LABEL_SIZE_CLASSES[this.size],
4723
+ this.isDisabled ? LABEL_DISABLED_CLASSES$1 : ''
4724
+ ]
4725
+ .filter(Boolean)
4726
+ .join(' ');
4727
+ }
4728
+ get textareaId() {
4729
+ if (this.id) {
4730
+ return this.id;
4731
+ }
4732
+ return this.label ? this.instanceId : null;
4733
+ }
4734
+ get labelId() {
4735
+ if (!this.label) {
4736
+ return null;
4737
+ }
4738
+ return `${this.textareaId}-label`;
4739
+ }
4740
+ get errorId() {
4741
+ return `${this.instanceId}-error`;
4742
+ }
4743
+ get ariaLabelValue() {
4744
+ if (this.label) {
4745
+ return null;
4746
+ }
4747
+ return this.ariaLabel ?? null;
4748
+ }
4749
+ get ariaDescribedbyValue() {
4750
+ const tokens = [this.ariaDescribedby].filter(Boolean);
4751
+ if (this.invalid) {
4752
+ tokens.push(this.errorId);
4753
+ }
4754
+ return tokens.length > 0 ? tokens.join(' ') : null;
4755
+ }
4756
+ get errorClass() {
4757
+ return [ERROR_BASE_CLASSES, ERROR_SIZE_CLASSES[this.size]].join(' ');
4758
+ }
4759
+ writeValue(value) {
4760
+ this.value = value ?? '';
4761
+ this.changeDetector.markForCheck();
4762
+ }
4763
+ registerOnChange(fn) {
4764
+ this.onChange = fn;
4765
+ }
4766
+ registerOnTouched(fn) {
4767
+ this.onTouched = fn;
4768
+ }
4769
+ setDisabledState(isDisabled) {
4770
+ this.disabledFromControl = isDisabled;
4771
+ this.changeDetector.markForCheck();
4772
+ }
4773
+ onInput(event) {
4774
+ const target = event.target;
4775
+ const nextValue = target.value;
4776
+ this.value = nextValue;
4777
+ this.onChange(nextValue);
4778
+ this.valueChange.emit(nextValue);
4779
+ }
4780
+ onBlur() {
4781
+ this.onTouched();
4782
+ }
4783
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: CxsTextareaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4784
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.10", type: CxsTextareaComponent, isStandalone: true, selector: "cxs-textarea", inputs: { value: "value", variant: "variant", size: "size", rows: "rows", resize: "resize", disabled: "disabled", readonly: "readonly", required: "required", invalid: "invalid", label: "label", id: "id", name: "name", placeholder: "placeholder", maxlength: "maxlength", spellcheck: "spellcheck", ariaLabel: "ariaLabel", ariaDescribedby: "ariaDescribedby" }, outputs: { valueChange: "valueChange" }, providers: [
4785
+ {
4786
+ provide: NG_VALUE_ACCESSOR,
4787
+ useExisting: forwardRef(() => CxsTextareaComponent),
4788
+ multi: true
4789
+ }
4790
+ ], ngImport: i0, template: "<div [class]=\"wrapperClass\">\n @if (label) {\n <label [class]=\"labelClass\" [attr.id]=\"labelId\" [attr.for]=\"textareaId\">\n {{ label }}\n </label>\n }\n <textarea\n [class]=\"textareaClass\"\n [attr.id]=\"textareaId\"\n [attr.name]=\"name\"\n [attr.placeholder]=\"placeholder\"\n [attr.maxlength]=\"maxlength ?? null\"\n [attr.spellcheck]=\"spellcheck === null ? null : spellcheck\"\n [attr.aria-label]=\"ariaLabelValue\"\n [attr.aria-labelledby]=\"labelId\"\n [attr.aria-describedby]=\"ariaDescribedbyValue\"\n [attr.aria-invalid]=\"invalid ? 'true' : null\"\n [rows]=\"rows\"\n [disabled]=\"isDisabled\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n ></textarea>\n @if (invalid) {\n <div [class]=\"errorClass\" [attr.id]=\"errorId\" aria-live=\"polite\">\n <ng-content select=\"[cxsTextareaError]\"></ng-content>\n </div>\n }\n</div>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
4791
+ }
4792
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: CxsTextareaComponent, decorators: [{
4793
+ type: Component,
4794
+ args: [{ selector: 'cxs-textarea', standalone: true, imports: [], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
4795
+ {
4796
+ provide: NG_VALUE_ACCESSOR,
4797
+ useExisting: forwardRef(() => CxsTextareaComponent),
4798
+ multi: true
4799
+ }
4800
+ ], template: "<div [class]=\"wrapperClass\">\n @if (label) {\n <label [class]=\"labelClass\" [attr.id]=\"labelId\" [attr.for]=\"textareaId\">\n {{ label }}\n </label>\n }\n <textarea\n [class]=\"textareaClass\"\n [attr.id]=\"textareaId\"\n [attr.name]=\"name\"\n [attr.placeholder]=\"placeholder\"\n [attr.maxlength]=\"maxlength ?? null\"\n [attr.spellcheck]=\"spellcheck === null ? null : spellcheck\"\n [attr.aria-label]=\"ariaLabelValue\"\n [attr.aria-labelledby]=\"labelId\"\n [attr.aria-describedby]=\"ariaDescribedbyValue\"\n [attr.aria-invalid]=\"invalid ? 'true' : null\"\n [rows]=\"rows\"\n [disabled]=\"isDisabled\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n ></textarea>\n @if (invalid) {\n <div [class]=\"errorClass\" [attr.id]=\"errorId\" aria-live=\"polite\">\n <ng-content select=\"[cxsTextareaError]\"></ng-content>\n </div>\n }\n</div>\n" }]
4801
+ }], propDecorators: { value: [{
4802
+ type: Input
4803
+ }], variant: [{
4804
+ type: Input
4805
+ }], size: [{
4806
+ type: Input
4807
+ }], rows: [{
4808
+ type: Input
4809
+ }], resize: [{
4810
+ type: Input
4811
+ }], disabled: [{
4812
+ type: Input
4813
+ }], readonly: [{
4814
+ type: Input
4815
+ }], required: [{
4816
+ type: Input
4817
+ }], invalid: [{
4818
+ type: Input
4819
+ }], label: [{
4820
+ type: Input
4821
+ }], id: [{
4822
+ type: Input
4823
+ }], name: [{
4824
+ type: Input
4825
+ }], placeholder: [{
4826
+ type: Input
4827
+ }], maxlength: [{
4828
+ type: Input
4829
+ }], spellcheck: [{
4830
+ type: Input
4831
+ }], ariaLabel: [{
4832
+ type: Input
4833
+ }], ariaDescribedby: [{
4834
+ type: Input
4835
+ }], valueChange: [{
4836
+ type: Output
4837
+ }] } });
4838
+
4642
4839
  const WRAPPER_CLASSES$1 = 'inline-flex items-center gap-2';
4643
4840
  const LABEL_BASE_CLASSES = 'text-sm text-[var(--cxs-color-on-surface)] select-none';
4644
4841
  const LABEL_DISABLED_CLASSES = 'text-[var(--cxs-color-on-surface-muted)]';
@@ -5293,5 +5490,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
5293
5490
  * Generated bundle index. Do not edit.
5294
5491
  */
5295
5492
 
5296
- export { CXS_DATA_TABLE_PAGE_SIZE_STORAGE_PREFIX, CXS_USER_PREFERENCE_CHANGED_EVENT, CXS_USER_SESSION_STORAGE_KEY, CerxosUi, CxsAccordionComponent, CxsAccordionItemComponent, CxsActionMenuComponent, CxsAlertComponent, CxsAvatarComponent, CxsBadgeComponent, CxsBreadcrumbComponent, CxsButtonComponent, CxsCardComponent, CxsCarouselComponent, CxsCheckboxComponent, CxsCurrencyPipe, CxsDataTableCellDirective, CxsDataTableComponent, CxsDatePipe, CxsDatepickerComponent, CxsDialogComponent, CxsHabitGridComponent, CxsHoverCardComponent, CxsHoverCardContentDirective, CxsHoverCardTriggerDirective, CxsIconComponent, CxsInputComponent, CxsMenubarComponent, CxsMultiSelectComponent, CxsPreferenceFormattingService, CxsProgressBarComponent, CxsRadioChipGroupComponent, CxsRadioComponent, CxsSelectComponent, CxsSkeletonComponent, CxsSliderComponent, CxsTabLabelDirective, CxsTabPanelComponent, CxsTableComponent, CxsTabsComponent, CxsThemeDirective, CxsToastComponent, CxsToggleComponent, CxsTooltipComponent, readCxsDataTablePageSize, writeCxsDataTablePageSize };
5493
+ export { CXS_DATA_TABLE_PAGE_SIZE_STORAGE_PREFIX, CXS_USER_PREFERENCE_CHANGED_EVENT, CXS_USER_SESSION_STORAGE_KEY, CerxosUi, CxsAccordionComponent, CxsAccordionItemComponent, CxsActionMenuComponent, CxsAlertComponent, CxsAvatarComponent, CxsBadgeComponent, CxsBreadcrumbComponent, CxsButtonComponent, CxsCardComponent, CxsCarouselComponent, CxsCheckboxComponent, CxsCurrencyPipe, CxsDataTableCellDirective, CxsDataTableComponent, CxsDatePipe, CxsDatepickerComponent, CxsDialogComponent, CxsHabitGridComponent, CxsHoverCardComponent, CxsHoverCardContentDirective, CxsHoverCardTriggerDirective, CxsIconComponent, CxsInputComponent, CxsMenubarComponent, CxsMultiSelectComponent, CxsPreferenceFormattingService, CxsProgressBarComponent, CxsRadioChipGroupComponent, CxsRadioComponent, CxsSelectComponent, CxsSkeletonComponent, CxsSliderComponent, CxsTabLabelDirective, CxsTabPanelComponent, CxsTableComponent, CxsTabsComponent, CxsTextareaComponent, CxsThemeDirective, CxsToastComponent, CxsToggleComponent, CxsTooltipComponent, readCxsDataTablePageSize, writeCxsDataTablePageSize };
5297
5494
  //# sourceMappingURL=cerxos-ui.mjs.map