codexly-ui 0.10.89 → 0.10.91

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { input, computed, ChangeDetectionStrategy, ViewEncapsulation, Component, InjectionToken, inject, PLATFORM_ID, signal, effect, Injectable, ElementRef, HostAttributeToken, output, Directive, forwardRef, contentChild, ApplicationRef, EnvironmentInjector, RendererFactory2, createComponent, DestroyRef, untracked, HostListener, viewChild, ViewChild, Injector, ChangeDetectorRef, NgZone, model, contentChildren, ContentChildren, ViewChildren, numberAttribute, booleanAttribute, Input } from '@angular/core';
2
+ import { input, computed, ChangeDetectionStrategy, ViewEncapsulation, Component, InjectionToken, inject, PLATFORM_ID, signal, effect, Injectable, ElementRef, HostAttributeToken, output, Directive, forwardRef, contentChild, ApplicationRef, EnvironmentInjector, RendererFactory2, createComponent, DestroyRef, untracked, ViewChildren, HostListener, viewChild, ViewChild, Injector, ChangeDetectorRef, NgZone, model, contentChildren, ContentChildren, numberAttribute, booleanAttribute, Input } from '@angular/core';
3
3
  import { DomSanitizer } from '@angular/platform-browser';
4
4
  import { isPlatformBrowser, NgTemplateOutlet, DOCUMENT, NgStyle, CurrencyPipe, DecimalPipe } from '@angular/common';
5
5
  import * as i1$1 from '@angular/forms';
@@ -3186,6 +3186,230 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
3186
3186
  }]
3187
3187
  }], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], hint: [{ type: i0.Input, args: [{ isSignal: true, alias: "hint", required: false }] }], prefixIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "prefixIcon", required: false }] }], suffixIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "suffixIcon", required: false }] }], prefixText: [{ type: i0.Input, args: [{ isSignal: true, alias: "prefixText", required: false }] }], suffixText: [{ type: i0.Input, args: [{ isSignal: true, alias: "suffixText", required: false }] }], status: [{ type: i0.Input, args: [{ isSignal: true, alias: "status", required: false }] }], statusMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "statusMessage", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], autocomplete: [{ type: i0.Input, args: [{ isSignal: true, alias: "autocomplete", required: false }] }] } });
3188
3188
 
3189
+ const OTP_SIZE_MAP = {
3190
+ xs: { box: 'w-8 h-8 text-sm', text: 'text-sm', gap: 'gap-1.5' },
3191
+ sm: { box: 'w-10 h-10 text-base', text: 'text-base', gap: 'gap-2' },
3192
+ md: { box: 'w-12 h-12 text-lg', text: 'text-lg', gap: 'gap-2.5' },
3193
+ lg: { box: 'w-14 h-14 text-xl', text: 'text-xl', gap: 'gap-3' },
3194
+ };
3195
+
3196
+ class ClxOtpComponent {
3197
+ _themeSvc = inject(ClxThemeService);
3198
+ // ── Inputs ─────────────────────────────────────────────────────────────────
3199
+ length = input(4, ...(ngDevMode ? [{ debugName: "length" }] : /* istanbul ignore next */ []));
3200
+ label = input('', ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
3201
+ color = input(undefined, ...(ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []));
3202
+ size = input(undefined, ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
3203
+ hint = input('', ...(ngDevMode ? [{ debugName: "hint" }] : /* istanbul ignore next */ []));
3204
+ status = input('default', ...(ngDevMode ? [{ debugName: "status" }] : /* istanbul ignore next */ []));
3205
+ errorMessage = input('Código inválido', ...(ngDevMode ? [{ debugName: "errorMessage" }] : /* istanbul ignore next */ []));
3206
+ disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
3207
+ /** Autofocus the first box on init */
3208
+ autoFocus = input(false, ...(ngDevMode ? [{ debugName: "autoFocus" }] : /* istanbul ignore next */ []));
3209
+ _color = computed(() => this.color() ?? this._themeSvc.config().primaryColor, ...(ngDevMode ? [{ debugName: "_color" }] : /* istanbul ignore next */ []));
3210
+ _size = computed(() => (this.size() ?? this._themeSvc.config().defaultSize), ...(ngDevMode ? [{ debugName: "_size" }] : /* istanbul ignore next */ []));
3211
+ _sizeConfig = computed(() => OTP_SIZE_MAP[this._size()], ...(ngDevMode ? [{ debugName: "_sizeConfig" }] : /* istanbul ignore next */ []));
3212
+ _statusCfg = computed(() => INPUT_STATUS_MAP[this.status()], ...(ngDevMode ? [{ debugName: "_statusCfg" }] : /* istanbul ignore next */ []));
3213
+ _indices = computed(() => Array.from({ length: this.length() }, (_, i) => i), ...(ngDevMode ? [{ debugName: "_indices" }] : /* istanbul ignore next */ []));
3214
+ // ── Internal state ───────────────────────────────────────────────────────────
3215
+ static _seq = 0;
3216
+ _labelId = `clx-otp-label-${++ClxOtpComponent._seq}`;
3217
+ _digits = signal([], ...(ngDevMode ? [{ debugName: "_digits" }] : /* istanbul ignore next */ []));
3218
+ _wasTouched = signal(false, ...(ngDevMode ? [{ debugName: "_wasTouched" }] : /* istanbul ignore next */ []));
3219
+ _cvaDisabled = signal(false, ...(ngDevMode ? [{ debugName: "_cvaDisabled" }] : /* istanbul ignore next */ []));
3220
+ _boxes;
3221
+ _onChange = () => { };
3222
+ _onTouched = () => { };
3223
+ ngAfterViewInit() {
3224
+ if (this.autoFocus())
3225
+ this._focusBox(0);
3226
+ }
3227
+ _isInvalid = computed(() => this._wasTouched() && this.status() === 'error', ...(ngDevMode ? [{ debugName: "_isInvalid" }] : /* istanbul ignore next */ []));
3228
+ // ── Classes ──────────────────────────────────────────────────────────────────
3229
+ _labelClass = computed(() => `text-sm font-medium ${CLX_TEXT_LABEL} leading-none`, ...(ngDevMode ? [{ debugName: "_labelClass" }] : /* istanbul ignore next */ []));
3230
+ _hintClass = computed(() => `text-xs ${CLX_TEXT_HINT}`, ...(ngDevMode ? [{ debugName: "_hintClass" }] : /* istanbul ignore next */ []));
3231
+ _groupClass = computed(() => `flex ${this._sizeConfig().gap}`, ...(ngDevMode ? [{ debugName: "_groupClass" }] : /* istanbul ignore next */ []));
3232
+ _boxClass = computed(() => {
3233
+ const s = this._sizeConfig();
3234
+ const radius = resolveRadius(this._themeSvc.config().borderRadius);
3235
+ const base = `${s.box} text-center font-semibold outline-none border transition-[border-color,box-shadow] duration-200 ${radius}`;
3236
+ if (this._cvaDisabled() || this.disabled()) {
3237
+ return `${base} ${CLX_BORDER_DISABLED} ${CLX_BG_DISABLED} ${CLX_TEXT_DISABLED} cursor-not-allowed`;
3238
+ }
3239
+ if (this.status() === 'error') {
3240
+ return `${base} ${CLX_BG_SURFACE} ${CLX_TEXT_INPUT} ${this._statusCfg().border} focus:ring-2 focus:ring-red-500/20 focus:border-red-500`;
3241
+ }
3242
+ return `${base} ${CLX_BG_SURFACE} ${CLX_TEXT_INPUT} border-clx-border ${resolveColor(this._color()).focusDirect}`;
3243
+ }, ...(ngDevMode ? [{ debugName: "_boxClass" }] : /* istanbul ignore next */ []));
3244
+ // ── Handlers ─────────────────────────────────────────────────────────────────
3245
+ _onInput(index, event) {
3246
+ const el = event.target;
3247
+ const raw = el.value.replace(/[^0-9]/g, '').slice(-1);
3248
+ el.value = raw;
3249
+ const next = [...this._digits()];
3250
+ next[index] = raw;
3251
+ this._digits.set(next);
3252
+ this._emit();
3253
+ if (raw && index < this.length() - 1) {
3254
+ this._focusBox(index + 1);
3255
+ }
3256
+ }
3257
+ _onKeydown(index, event) {
3258
+ if (event.key === 'Backspace' && !this._digits()[index] && index > 0) {
3259
+ event.preventDefault();
3260
+ const next = [...this._digits()];
3261
+ next[index - 1] = '';
3262
+ this._digits.set(next);
3263
+ this._emit();
3264
+ this._focusBox(index - 1);
3265
+ return;
3266
+ }
3267
+ if (event.key === 'ArrowLeft' && index > 0) {
3268
+ event.preventDefault();
3269
+ this._focusBox(index - 1);
3270
+ }
3271
+ if (event.key === 'ArrowRight' && index < this.length() - 1) {
3272
+ event.preventDefault();
3273
+ this._focusBox(index + 1);
3274
+ }
3275
+ }
3276
+ _onPaste(event) {
3277
+ event.preventDefault();
3278
+ const text = event.clipboardData?.getData('text') ?? '';
3279
+ const digits = text.replace(/[^0-9]/g, '').slice(0, this.length()).split('');
3280
+ if (!digits.length)
3281
+ return;
3282
+ const next = Array.from({ length: this.length() }, (_, i) => digits[i] ?? '');
3283
+ this._digits.set(next);
3284
+ this._emit();
3285
+ const lastIndex = Math.min(digits.length, this.length() - 1);
3286
+ this._focusBox(lastIndex);
3287
+ }
3288
+ _onFocus(index) {
3289
+ // Select the digit on focus so typing over it replaces instead of appending —
3290
+ // maxlength=1 already blocks a second char, but selecting avoids the visual
3291
+ // flash of the old digit before the new one lands.
3292
+ queueMicrotask(() => this._boxes?.get(index)?.nativeElement.select());
3293
+ }
3294
+ _handleBlur() {
3295
+ this._wasTouched.set(true);
3296
+ this._onTouched();
3297
+ }
3298
+ _focusBox(index) {
3299
+ this._boxes?.get(index)?.nativeElement.focus();
3300
+ }
3301
+ _emit() {
3302
+ const value = this._digits().join('');
3303
+ this._onChange(value);
3304
+ }
3305
+ // ── CVA ──────────────────────────────────────────────────────────────────────
3306
+ writeValue(val) {
3307
+ const chars = (val ?? '').replace(/[^0-9]/g, '').slice(0, this.length()).split('');
3308
+ this._digits.set(Array.from({ length: this.length() }, (_, i) => chars[i] ?? ''));
3309
+ }
3310
+ registerOnChange(fn) {
3311
+ this._onChange = fn;
3312
+ }
3313
+ registerOnTouched(fn) {
3314
+ this._onTouched = fn;
3315
+ }
3316
+ setDisabledState(disabled) {
3317
+ this._cvaDisabled.set(disabled);
3318
+ }
3319
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ClxOtpComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3320
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.15", type: ClxOtpComponent, isStandalone: true, selector: "clx-otp", inputs: { length: { classPropertyName: "length", publicName: "length", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null }, status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null }, errorMessage: { classPropertyName: "errorMessage", publicName: "errorMessage", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, autoFocus: { classPropertyName: "autoFocus", publicName: "autoFocus", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "flex flex-col gap-1.5" }, providers: [
3321
+ {
3322
+ provide: NG_VALUE_ACCESSOR,
3323
+ useExisting: forwardRef(() => ClxOtpComponent),
3324
+ multi: true,
3325
+ },
3326
+ ], viewQueries: [{ propertyName: "_boxes", predicate: ["box"], descendants: true }], ngImport: i0, template: `
3327
+ @if (label()) {
3328
+ <span [id]="_labelId" [class]="_labelClass()">{{ label() }}</span>
3329
+ }
3330
+
3331
+ <div [class]="_groupClass()" role="group" [attr.aria-labelledby]="label() ? _labelId : null">
3332
+ @for (i of _indices(); track i) {
3333
+ <input
3334
+ #box
3335
+ type="text"
3336
+ inputmode="numeric"
3337
+ autocomplete="one-time-code"
3338
+ maxlength="1"
3339
+ [attr.aria-label]="'Dígito ' + (i + 1)"
3340
+ [disabled]="disabled()"
3341
+ [class]="_boxClass()"
3342
+ [value]="_digits()[i] ?? ''"
3343
+ (input)="_onInput(i, $event)"
3344
+ (keydown)="_onKeydown(i, $event)"
3345
+ (paste)="_onPaste($event)"
3346
+ (focus)="_onFocus(i)"
3347
+ (blur)="_handleBlur()"
3348
+ />
3349
+ }
3350
+ </div>
3351
+
3352
+ @if (_isInvalid()) {
3353
+ <p [class]="_hintClass()" style="color:#ef4444">{{ errorMessage() }}</p>
3354
+ } @else if (hint()) {
3355
+ <p [class]="_hintClass()">{{ hint() }}</p>
3356
+ }
3357
+ `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
3358
+ }
3359
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ClxOtpComponent, decorators: [{
3360
+ type: Component,
3361
+ args: [{
3362
+ selector: 'clx-otp',
3363
+ standalone: true,
3364
+ imports: [],
3365
+ providers: [
3366
+ {
3367
+ provide: NG_VALUE_ACCESSOR,
3368
+ useExisting: forwardRef(() => ClxOtpComponent),
3369
+ multi: true,
3370
+ },
3371
+ ],
3372
+ template: `
3373
+ @if (label()) {
3374
+ <span [id]="_labelId" [class]="_labelClass()">{{ label() }}</span>
3375
+ }
3376
+
3377
+ <div [class]="_groupClass()" role="group" [attr.aria-labelledby]="label() ? _labelId : null">
3378
+ @for (i of _indices(); track i) {
3379
+ <input
3380
+ #box
3381
+ type="text"
3382
+ inputmode="numeric"
3383
+ autocomplete="one-time-code"
3384
+ maxlength="1"
3385
+ [attr.aria-label]="'Dígito ' + (i + 1)"
3386
+ [disabled]="disabled()"
3387
+ [class]="_boxClass()"
3388
+ [value]="_digits()[i] ?? ''"
3389
+ (input)="_onInput(i, $event)"
3390
+ (keydown)="_onKeydown(i, $event)"
3391
+ (paste)="_onPaste($event)"
3392
+ (focus)="_onFocus(i)"
3393
+ (blur)="_handleBlur()"
3394
+ />
3395
+ }
3396
+ </div>
3397
+
3398
+ @if (_isInvalid()) {
3399
+ <p [class]="_hintClass()" style="color:#ef4444">{{ errorMessage() }}</p>
3400
+ } @else if (hint()) {
3401
+ <p [class]="_hintClass()">{{ hint() }}</p>
3402
+ }
3403
+ `,
3404
+ encapsulation: ViewEncapsulation.None,
3405
+ changeDetection: ChangeDetectionStrategy.OnPush,
3406
+ host: { class: 'flex flex-col gap-1.5' },
3407
+ }]
3408
+ }], propDecorators: { length: [{ type: i0.Input, args: [{ isSignal: true, alias: "length", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], hint: [{ type: i0.Input, args: [{ isSignal: true, alias: "hint", required: false }] }], status: [{ type: i0.Input, args: [{ isSignal: true, alias: "status", required: false }] }], errorMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "errorMessage", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], autoFocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoFocus", required: false }] }], _boxes: [{
3409
+ type: ViewChildren,
3410
+ args: ['box']
3411
+ }] } });
3412
+
3189
3413
  // ── Size map ─────────────────────────────────────────────────────────────────
3190
3414
  const TEXTAREA_SIZE_MAP = {
3191
3415
  sm: {
@@ -15298,10 +15522,14 @@ class ClxCartComponent {
15298
15522
  items = input([], ...(ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []));
15299
15523
  loading = input(false, ...(ngDevMode ? [{ debugName: "loading" }] : /* istanbul ignore next */ []));
15300
15524
  color = input('indigo', ...(ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []));
15525
+ /** Overrides only the quantity stepper's color, independent of `color` — same override pattern
15526
+ * as clx-product-detail's per-element color inputs. Falls back to `color()` when unset. */
15527
+ quantityColor = input(undefined, ...(ngDevMode ? [{ debugName: "quantityColor" }] : /* istanbul ignore next */ []));
15301
15528
  /** Hide the coupon block entirely when the host app has no coupon backend to back it —
15302
15529
  * showing a code input that always fails would read as broken, not "not built yet". */
15303
15530
  showCoupon = input(true, ...(ngDevMode ? [{ debugName: "showCoupon" }] : /* istanbul ignore next */ []));
15304
15531
  coupon = model(null, ...(ngDevMode ? [{ debugName: "coupon" }] : /* istanbul ignore next */ []));
15532
+ _quantityColor = computed(() => this.quantityColor() ?? this.color(), ...(ngDevMode ? [{ debugName: "_quantityColor" }] : /* istanbul ignore next */ []));
15305
15533
  onRemove = output();
15306
15534
  onQuantityChange = output();
15307
15535
  onClearCart = output();
@@ -15337,7 +15565,7 @@ class ClxCartComponent {
15337
15565
  this.coupon.set(null);
15338
15566
  }
15339
15567
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ClxCartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
15340
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.15", type: ClxCartComponent, isStandalone: true, selector: "clx-cart", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, showCoupon: { classPropertyName: "showCoupon", publicName: "showCoupon", isSignal: true, isRequired: false, transformFunction: null }, coupon: { classPropertyName: "coupon", publicName: "coupon", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { coupon: "couponChange", onRemove: "onRemove", onQuantityChange: "onQuantityChange", onClearCart: "onClearCart", onApplyCoupon: "onApplyCoupon", onCheckout: "onCheckout", onBrowseCatalog: "onBrowseCatalog" }, ngImport: i0, template: `
15568
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.15", type: ClxCartComponent, isStandalone: true, selector: "clx-cart", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, quantityColor: { classPropertyName: "quantityColor", publicName: "quantityColor", isSignal: true, isRequired: false, transformFunction: null }, showCoupon: { classPropertyName: "showCoupon", publicName: "showCoupon", isSignal: true, isRequired: false, transformFunction: null }, coupon: { classPropertyName: "coupon", publicName: "coupon", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { coupon: "couponChange", onRemove: "onRemove", onQuantityChange: "onQuantityChange", onClearCart: "onClearCart", onApplyCoupon: "onApplyCoupon", onCheckout: "onCheckout", onBrowseCatalog: "onBrowseCatalog" }, ngImport: i0, template: `
15341
15569
  <!-- ── Loading ─────────────────────────────────────────────────────────────── -->
15342
15570
  @if (loading()) {
15343
15571
 
@@ -15477,7 +15705,7 @@ class ClxCartComponent {
15477
15705
  <!-- Quantity control + Total -->
15478
15706
  <div class="flex items-end gap-3">
15479
15707
  <clx-number
15480
- variant="stepper" size="sm" [color]="color()"
15708
+ variant="stepper" size="sm" [color]="_quantityColor()"
15481
15709
  [min]="1" [max]="item.max_quantity ?? null"
15482
15710
  [disabled]="!item.in_stock"
15483
15711
  [ngModel]="item.quantity"
@@ -15758,7 +15986,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
15758
15986
  <!-- Quantity control + Total -->
15759
15987
  <div class="flex items-end gap-3">
15760
15988
  <clx-number
15761
- variant="stepper" size="sm" [color]="color()"
15989
+ variant="stepper" size="sm" [color]="_quantityColor()"
15762
15990
  [min]="1" [max]="item.max_quantity ?? null"
15763
15991
  [disabled]="!item.in_stock"
15764
15992
  [ngModel]="item.quantity"
@@ -15881,7 +16109,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
15881
16109
  }
15882
16110
  `,
15883
16111
  }]
15884
- }], propDecorators: { items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], showCoupon: [{ type: i0.Input, args: [{ isSignal: true, alias: "showCoupon", required: false }] }], coupon: [{ type: i0.Input, args: [{ isSignal: true, alias: "coupon", required: false }] }, { type: i0.Output, args: ["couponChange"] }], onRemove: [{ type: i0.Output, args: ["onRemove"] }], onQuantityChange: [{ type: i0.Output, args: ["onQuantityChange"] }], onClearCart: [{ type: i0.Output, args: ["onClearCart"] }], onApplyCoupon: [{ type: i0.Output, args: ["onApplyCoupon"] }], onCheckout: [{ type: i0.Output, args: ["onCheckout"] }], onBrowseCatalog: [{ type: i0.Output, args: ["onBrowseCatalog"] }] } });
16112
+ }], propDecorators: { items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], quantityColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "quantityColor", required: false }] }], showCoupon: [{ type: i0.Input, args: [{ isSignal: true, alias: "showCoupon", required: false }] }], coupon: [{ type: i0.Input, args: [{ isSignal: true, alias: "coupon", required: false }] }, { type: i0.Output, args: ["couponChange"] }], onRemove: [{ type: i0.Output, args: ["onRemove"] }], onQuantityChange: [{ type: i0.Output, args: ["onQuantityChange"] }], onClearCart: [{ type: i0.Output, args: ["onClearCart"] }], onApplyCoupon: [{ type: i0.Output, args: ["onApplyCoupon"] }], onCheckout: [{ type: i0.Output, args: ["onCheckout"] }], onBrowseCatalog: [{ type: i0.Output, args: ["onBrowseCatalog"] }] } });
15885
16113
 
15886
16114
  class ClxCartSummaryDrawer {
15887
16115
  data = inject(CLX_MODAL_DATA);
@@ -16497,5 +16725,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
16497
16725
  * Generated bundle index. Do not edit.
16498
16726
  */
16499
16727
 
16500
- export { CLX_ADDON_BORDER, CLX_ADDON_TEXT, CLX_ALERT_OPTIONS, CLX_ALERT_RESOLVE, CLX_BG_ADDON, CLX_BG_DISABLED, CLX_BG_ICON_WRAP, CLX_BG_SECTION, CLX_BG_SURFACE, CLX_BORDER_DEFAULT, CLX_BORDER_DISABLED, CLX_BORDER_MEDIUM, CLX_COLOR_HEX, CLX_COLOR_HEX_100, CLX_COLOR_MAP, CLX_FONT_CATALOG, CLX_MODAL_ANIM_CONFIG, CLX_MODAL_DATA, CLX_MODAL_REF, CLX_OPTION_DISABLED, CLX_PLACEHOLDER, CLX_RADIO_GROUP, CLX_RADIUS_MAP, CLX_TEXT_BODY, CLX_TEXT_DISABLED, CLX_TEXT_HEADING, CLX_TEXT_HINT, CLX_TEXT_IDLE, CLX_TEXT_INPUT, CLX_TEXT_LABEL, CLX_TEXT_OPTION, CLX_TEXT_SUBTITLE, CLX_TEXT_TITLE, CLX_THEME_CONFIG, CLX_THEME_DEFAULTS, CLX_TOAST_DEFAULTS, ClxAlertComponent, ClxAlertService, ClxAnimateDirective, ClxAnimateGroupDirective, ClxAnimateService, ClxAppLayoutComponent, ClxAvatarComponent, ClxBadgeComponent, ClxBrandComponent, ClxButtonComponent, ClxButtonGroupComponent, ClxCardBodyDirective, ClxCardComponent, ClxCardFooterDirective, ClxCardHeaderActionsDirective, ClxCardHeaderDirective, ClxCarouselComponent, ClxCarouselDirective, ClxCartComponent, ClxCartSummaryDrawer, ClxCellDirective, ClxCheckboxComponent, ClxColorPickerComponent, ClxColumnDefDirective, ClxDateRangePickerComponent, ClxDatepickerComponent, ClxDrawerComponent, ClxDrawerService, ClxEditorComponent, ClxEditorLinkModalComponent, ClxFabComponent, ClxFilterPanelComponent, ClxHeaderCellDirective, ClxIconComponent, ClxInputComponent, ClxListComponent, ClxListItemComponent, ClxMenuComponent, ClxMenuItemComponent, ClxMenuItemTrailingDirective, ClxModalComponent, ClxModalService, ClxNativeOverlayService, ClxNavGroupComponent, ClxNumberComponent, ClxPageEmptyComponent, ClxPageHeaderComponent, ClxPageHeaderTitleDirective, ClxPageNotFoundComponent, ClxPageServerErrorComponent, ClxPageUnauthorizedComponent, ClxPaginationComponent, ClxProductComponent, ClxProductDetailComponent, ClxProductQuickViewComponent, ClxProfileComponent, ClxProgressBarComponent, ClxRadioComponent, ClxRadioGroupComponent, ClxRatingComponent, ClxSearchComponent, ClxSelectComponent, ClxSkeletonComponent, ClxSliderComponent, ClxSocialIconComponent, ClxSpinnerComponent, ClxStatCardComponent, ClxStepComponent, ClxStepperComponent, ClxSwitchComponent, ClxTabDirective, ClxTableComponent, ClxTabsComponent, ClxTagComponent, ClxTextareaComponent, ClxThemeService, ClxTimelineComponent, ClxTimelineItemComponent, ClxTimepickerComponent, ClxToastComponent, ClxToastContainerComponent, ClxToastService, ClxTooltipComponent, ClxTooltipDirective, ClxTreeComponent, ClxUploadComponent, ClxWishlistComponent, ClxWizardComponent, TIMEPICKER_SIZE_MAP, parseColorInput, provideCodexlyTheme, resolveColor, resolveContainerRadius, resolveRadius };
16728
+ export { CLX_ADDON_BORDER, CLX_ADDON_TEXT, CLX_ALERT_OPTIONS, CLX_ALERT_RESOLVE, CLX_BG_ADDON, CLX_BG_DISABLED, CLX_BG_ICON_WRAP, CLX_BG_SECTION, CLX_BG_SURFACE, CLX_BORDER_DEFAULT, CLX_BORDER_DISABLED, CLX_BORDER_MEDIUM, CLX_COLOR_HEX, CLX_COLOR_HEX_100, CLX_COLOR_MAP, CLX_FONT_CATALOG, CLX_MODAL_ANIM_CONFIG, CLX_MODAL_DATA, CLX_MODAL_REF, CLX_OPTION_DISABLED, CLX_PLACEHOLDER, CLX_RADIO_GROUP, CLX_RADIUS_MAP, CLX_TEXT_BODY, CLX_TEXT_DISABLED, CLX_TEXT_HEADING, CLX_TEXT_HINT, CLX_TEXT_IDLE, CLX_TEXT_INPUT, CLX_TEXT_LABEL, CLX_TEXT_OPTION, CLX_TEXT_SUBTITLE, CLX_TEXT_TITLE, CLX_THEME_CONFIG, CLX_THEME_DEFAULTS, CLX_TOAST_DEFAULTS, ClxAlertComponent, ClxAlertService, ClxAnimateDirective, ClxAnimateGroupDirective, ClxAnimateService, ClxAppLayoutComponent, ClxAvatarComponent, ClxBadgeComponent, ClxBrandComponent, ClxButtonComponent, ClxButtonGroupComponent, ClxCardBodyDirective, ClxCardComponent, ClxCardFooterDirective, ClxCardHeaderActionsDirective, ClxCardHeaderDirective, ClxCarouselComponent, ClxCarouselDirective, ClxCartComponent, ClxCartSummaryDrawer, ClxCellDirective, ClxCheckboxComponent, ClxColorPickerComponent, ClxColumnDefDirective, ClxDateRangePickerComponent, ClxDatepickerComponent, ClxDrawerComponent, ClxDrawerService, ClxEditorComponent, ClxEditorLinkModalComponent, ClxFabComponent, ClxFilterPanelComponent, ClxHeaderCellDirective, ClxIconComponent, ClxInputComponent, ClxListComponent, ClxListItemComponent, ClxMenuComponent, ClxMenuItemComponent, ClxMenuItemTrailingDirective, ClxModalComponent, ClxModalService, ClxNativeOverlayService, ClxNavGroupComponent, ClxNumberComponent, ClxOtpComponent, ClxPageEmptyComponent, ClxPageHeaderComponent, ClxPageHeaderTitleDirective, ClxPageNotFoundComponent, ClxPageServerErrorComponent, ClxPageUnauthorizedComponent, ClxPaginationComponent, ClxProductComponent, ClxProductDetailComponent, ClxProductQuickViewComponent, ClxProfileComponent, ClxProgressBarComponent, ClxRadioComponent, ClxRadioGroupComponent, ClxRatingComponent, ClxSearchComponent, ClxSelectComponent, ClxSkeletonComponent, ClxSliderComponent, ClxSocialIconComponent, ClxSpinnerComponent, ClxStatCardComponent, ClxStepComponent, ClxStepperComponent, ClxSwitchComponent, ClxTabDirective, ClxTableComponent, ClxTabsComponent, ClxTagComponent, ClxTextareaComponent, ClxThemeService, ClxTimelineComponent, ClxTimelineItemComponent, ClxTimepickerComponent, ClxToastComponent, ClxToastContainerComponent, ClxToastService, ClxTooltipComponent, ClxTooltipDirective, ClxTreeComponent, ClxUploadComponent, ClxWishlistComponent, ClxWizardComponent, TIMEPICKER_SIZE_MAP, parseColorInput, provideCodexlyTheme, resolveColor, resolveContainerRadius, resolveRadius };
16501
16729
  //# sourceMappingURL=codexly-ui.mjs.map