codexly-ui 0.12.12 → 0.12.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codexly-ui",
3
- "version": "0.12.12",
3
+ "version": "0.12.14",
4
4
  "description": "Standalone, signal-based Angular UI component library for Codexly, styled with Tailwind CSS.",
5
5
  "keywords": [
6
6
  "angular",
@@ -2928,6 +2928,11 @@ declare class ClxFilterPanelComponent {
2928
2928
  * host keep a saturated brand color on checkboxes/slider (small accents) while giving the CTA
2929
2929
  * button its own color and a bigger size if the sidebar's width calls for it. */
2930
2930
  readonly applyButtonColor: _angular_core.InputSignal<ClxColorInput | undefined>;
2931
+ /** Text color for the same "Aplicar filtros" button — independent of applyButtonColor, same
2932
+ * rationale as clx-button's own [textColor]: a saturated applyButtonColor can leave the
2933
+ * auto-resolved contrast text illegible. Undefined leaves clx-button's own automatic
2934
+ * resolution untouched. */
2935
+ readonly applyButtonTextColor: _angular_core.InputSignal<ClxColorInput | undefined>;
2931
2936
  readonly applyButtonSize: _angular_core.InputSignal<ClxButtonSize>;
2932
2937
  protected readonly _color: _angular_core.Signal<ClxColorInput>;
2933
2938
  protected readonly _applyButtonColor: _angular_core.Signal<ClxColorInput>;
@@ -2954,7 +2959,7 @@ declare class ClxFilterPanelComponent {
2954
2959
  protected _badgeCls(): string;
2955
2960
  protected _fieldBadgeCls(): string;
2956
2961
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxFilterPanelComponent, never>;
2957
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxFilterPanelComponent, "clx-filter-panel", never, { "fields": { "alias": "fields"; "required": true; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "showApply": { "alias": "showApply"; "required": false; "isSignal": true; }; "applyButtonColor": { "alias": "applyButtonColor"; "required": false; "isSignal": true; }; "applyButtonSize": { "alias": "applyButtonSize"; "required": false; "isSignal": true; }; "values": { "alias": "values"; "required": false; "isSignal": true; }; }, { "values": "valuesChange"; "filterChange": "filterChange"; "applyChange": "applyChange"; }, never, never, true, never>;
2962
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxFilterPanelComponent, "clx-filter-panel", never, { "fields": { "alias": "fields"; "required": true; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "showApply": { "alias": "showApply"; "required": false; "isSignal": true; }; "applyButtonColor": { "alias": "applyButtonColor"; "required": false; "isSignal": true; }; "applyButtonTextColor": { "alias": "applyButtonTextColor"; "required": false; "isSignal": true; }; "applyButtonSize": { "alias": "applyButtonSize"; "required": false; "isSignal": true; }; "values": { "alias": "values"; "required": false; "isSignal": true; }; }, { "values": "valuesChange"; "filterChange": "filterChange"; "applyChange": "applyChange"; }, never, never, true, never>;
2958
2963
  }
2959
2964
 
2960
2965
  declare class ClxCarouselDirective {
@@ -3306,6 +3311,11 @@ declare class ClxProductComponent {
3306
3311
  readonly layout: _angular_core.InputSignal<ClxProductLayout>;
3307
3312
  readonly size: _angular_core.InputSignal<ClxProductSize>;
3308
3313
  readonly clxColor: _angular_core.InputSignal<ClxColorInput>;
3314
+ /** Text color for the wishlist (heart) and "Añadir al carrito"/"Ver opciones" buttons —
3315
+ * independent of clxColor, same rationale as clx-button's own [textColor]. Both buttons are
3316
+ * variant="ghost" (text tinted at textSubtle strength, not a solid fill), so contrast risk is
3317
+ * low, but this is still exposed for full parity with clx-product-detail/clx-wishlist. */
3318
+ readonly actionTextColor: _angular_core.InputSignal<ClxColorInput | undefined>;
3309
3319
  readonly imageFit: _angular_core.InputSignal<"contain" | "cover">;
3310
3320
  readonly addToCart: _angular_core.OutputEmitterRef<ClxProduct>;
3311
3321
  readonly addToWishlist: _angular_core.OutputEmitterRef<ClxProduct>;
@@ -3338,7 +3348,7 @@ declare class ClxProductComponent {
3338
3348
  protected readonly _descClass: _angular_core.Signal<string>;
3339
3349
  protected readonly _priceClass: _angular_core.Signal<string>;
3340
3350
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxProductComponent, never>;
3341
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxProductComponent, "clx-product", never, { "product": { "alias": "product"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "priority": { "alias": "priority"; "required": false; "isSignal": true; }; "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "clxColor": { "alias": "clxColor"; "required": false; "isSignal": true; }; "imageFit": { "alias": "imageFit"; "required": false; "isSignal": true; }; }, { "addToCart": "addToCart"; "addToWishlist": "addToWishlist"; "viewOptions": "viewOptions"; }, never, never, true, never>;
3351
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxProductComponent, "clx-product", never, { "product": { "alias": "product"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "priority": { "alias": "priority"; "required": false; "isSignal": true; }; "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "clxColor": { "alias": "clxColor"; "required": false; "isSignal": true; }; "actionTextColor": { "alias": "actionTextColor"; "required": false; "isSignal": true; }; "imageFit": { "alias": "imageFit"; "required": false; "isSignal": true; }; }, { "addToCart": "addToCart"; "addToWishlist": "addToWishlist"; "viewOptions": "viewOptions"; }, never, never, true, never>;
3342
3352
  }
3343
3353
 
3344
3354
  /** st_spec_options */
@@ -3428,24 +3438,25 @@ interface ClxProductDetailData {
3428
3438
  declare class ClxProductDetailComponent {
3429
3439
  readonly product: _angular_core.InputSignal<ClxProductDetailData | null>;
3430
3440
  readonly initialVariationId: _angular_core.InputSignal<string | null>;
3441
+ /** Fallback accent for every zone below that doesn't get its own explicit override — same "one
3442
+ * shared default, every zone can opt out independently" convention as the rest of this library
3443
+ * (see ClxThemeConfig/formControls). Each {zone}Color/{zone}TextColor pair below is fully
3444
+ * independent: setting one never affects any other, so a host can, say, pin addToCartColor to
3445
+ * the theme's secondaryColor while leaving buyNowColor/specButtonColor on the shared clxColor. */
3431
3446
  readonly clxColor: _angular_core.InputSignal<ClxColorInput>;
3432
- /** Optional override for just the two CTA buttons (Comprar ahora / Agrega al carrito) — some
3433
- * brand colors (e.g. a saturated yellow) read fine as small accents (badges, tags, selected
3434
- * spec chips) via clxColor but look garish filling a large solid button; this lets a host swap
3435
- * only the CTAs to a calmer color without losing the accent everywhere else. Falls back to
3436
- * clxColor() when not set, so existing consumers are unaffected. */
3437
- readonly actionColor: _angular_core.InputSignal<ClxColorInput | undefined>;
3438
- protected readonly _actionColor: _angular_core.Signal<ClxColorInput>;
3439
- /** Text color for the same three CTAs (Comprar ahora / Agrega al carrito / Dejar una reseña) —
3440
- * independent of actionColor, same rationale as clx-button's own [textColor]: a saturated
3441
- * actionColor (e.g. brand yellow) can force a background where the auto-resolved white/dark-800
3442
- * contrast text still reads poorly, and this lets a host pin the exact text tone instead.
3443
- * Undefined (the default) leaves each button's own automatic contrast resolution untouched. */
3444
- readonly actionTextColor: _angular_core.InputSignal<ClxColorInput | undefined>;
3447
+ readonly buyNowColor: _angular_core.InputSignal<ClxColorInput | undefined>;
3448
+ readonly buyNowTextColor: _angular_core.InputSignal<ClxColorInput | undefined>;
3449
+ protected readonly _buyNowColor: _angular_core.Signal<ClxColorInput>;
3450
+ readonly addToCartColor: _angular_core.InputSignal<ClxColorInput | undefined>;
3451
+ readonly addToCartTextColor: _angular_core.InputSignal<ClxColorInput | undefined>;
3452
+ readonly leaveReviewColor: _angular_core.InputSignal<ClxColorInput | undefined>;
3453
+ readonly leaveReviewTextColor: _angular_core.InputSignal<ClxColorInput | undefined>;
3454
+ protected readonly _leaveReviewColor: _angular_core.Signal<ClxColorInput>;
3445
3455
  /** Optional override for the floating wishlist (heart) button on the gallery — same rationale
3446
- * as actionColor: a saturated brand color that works as a small accent elsewhere can look wrong
3456
+ * as buyNowColor: a saturated brand color that works as a small accent elsewhere can look wrong
3447
3457
  * as a solid filled circle. Falls back to clxColor()/'solid' when not set. */
3448
3458
  readonly wishlistColor: _angular_core.InputSignal<ClxColorInput | undefined>;
3459
+ readonly wishlistTextColor: _angular_core.InputSignal<ClxColorInput | undefined>;
3449
3460
  readonly wishlistVariant: _angular_core.InputSignal<ClxButtonVariant>;
3450
3461
  protected readonly _wishlistColor: _angular_core.Signal<ClxColorInput>;
3451
3462
  /** Overrides for individual accent spots that a saturated clxColor can make too loud at their
@@ -3453,17 +3464,20 @@ declare class ClxProductDetailComponent {
3453
3464
  * rating stars, thumbnail active border, etc). All fall back to clxColor() when unset. */
3454
3465
  readonly stockBadgeColor: _angular_core.InputSignal<ClxColorInput | undefined>;
3455
3466
  readonly discountBadgeColor: _angular_core.InputSignal<ClxColorInput | undefined>;
3456
- readonly specButtonColor: _angular_core.InputSignal<ClxColorInput | undefined>;
3457
3467
  readonly quantityColor: _angular_core.InputSignal<ClxColorInput | undefined>;
3458
3468
  protected readonly _stockBadgeColor: _angular_core.Signal<ClxColorInput>;
3459
3469
  protected readonly _discountBadgeColor: _angular_core.Signal<ClxColorInput>;
3460
- protected readonly _specButtonColor: _angular_core.Signal<ClxColorInput>;
3461
3470
  protected readonly _quantityColor: _angular_core.Signal<ClxColorInput>;
3462
- /** Text color for the spec option buttons (Talla/Material/etc — not the color-swatch spec type,
3463
- * which uses opt.value as an inline background and has no clx-button text to color). Same
3464
- * rationale as actionTextColor: independent of specButtonColor, undefined leaves clx-button's
3465
- * own automatic contrast resolution untouched. */
3471
+ /** Spec option buttons (Talla/Material/etc — not the color-swatch spec type, which uses
3472
+ * opt.value as an inline background and has no clx-button text to color). specButtonTextColor
3473
+ * only ever applies to the SELECTED (variant="solid") option — an unselected option is
3474
+ * variant="outline", where the text IS specButtonColor itself (the variant's own literal
3475
+ * text-{color} class), so forcing a text override there would fight its own border/text color
3476
+ * and can go illegible against outline's light background (confirmed: neutral-50 became
3477
+ * invisible on unselected chips). */
3478
+ readonly specButtonColor: _angular_core.InputSignal<ClxColorInput | undefined>;
3466
3479
  readonly specButtonTextColor: _angular_core.InputSignal<ClxColorInput | undefined>;
3480
+ protected readonly _specButtonColor: _angular_core.Signal<ClxColorInput>;
3467
3481
  readonly loading: _angular_core.InputSignal<boolean>;
3468
3482
  readonly currency: _angular_core.InputSignal<string>;
3469
3483
  /** Hides the tabs (Características/Especificaciones/Descripción) and the Reviews section —
@@ -3555,7 +3569,7 @@ declare class ClxProductDetailComponent {
3555
3569
  specsLeft<T>(specs: T[]): T[];
3556
3570
  specsRight<T>(specs: T[]): T[];
3557
3571
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxProductDetailComponent, never>;
3558
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxProductDetailComponent, "clx-product-detail", never, { "product": { "alias": "product"; "required": false; "isSignal": true; }; "initialVariationId": { "alias": "initialVariationId"; "required": false; "isSignal": true; }; "clxColor": { "alias": "clxColor"; "required": false; "isSignal": true; }; "actionColor": { "alias": "actionColor"; "required": false; "isSignal": true; }; "actionTextColor": { "alias": "actionTextColor"; "required": false; "isSignal": true; }; "wishlistColor": { "alias": "wishlistColor"; "required": false; "isSignal": true; }; "wishlistVariant": { "alias": "wishlistVariant"; "required": false; "isSignal": true; }; "stockBadgeColor": { "alias": "stockBadgeColor"; "required": false; "isSignal": true; }; "discountBadgeColor": { "alias": "discountBadgeColor"; "required": false; "isSignal": true; }; "specButtonColor": { "alias": "specButtonColor"; "required": false; "isSignal": true; }; "quantityColor": { "alias": "quantityColor"; "required": false; "isSignal": true; }; "specButtonTextColor": { "alias": "specButtonTextColor"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "currency": { "alias": "currency"; "required": false; "isSignal": true; }; "compact": { "alias": "compact"; "required": false; "isSignal": true; }; }, { "addToCart": "addToCart"; "buyNow": "buyNow"; "wishlist": "wishlist"; "variationChange": "variationChange"; "leaveReview": "leaveReview"; }, never, never, true, never>;
3572
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxProductDetailComponent, "clx-product-detail", never, { "product": { "alias": "product"; "required": false; "isSignal": true; }; "initialVariationId": { "alias": "initialVariationId"; "required": false; "isSignal": true; }; "clxColor": { "alias": "clxColor"; "required": false; "isSignal": true; }; "buyNowColor": { "alias": "buyNowColor"; "required": false; "isSignal": true; }; "buyNowTextColor": { "alias": "buyNowTextColor"; "required": false; "isSignal": true; }; "addToCartColor": { "alias": "addToCartColor"; "required": false; "isSignal": true; }; "addToCartTextColor": { "alias": "addToCartTextColor"; "required": false; "isSignal": true; }; "leaveReviewColor": { "alias": "leaveReviewColor"; "required": false; "isSignal": true; }; "leaveReviewTextColor": { "alias": "leaveReviewTextColor"; "required": false; "isSignal": true; }; "wishlistColor": { "alias": "wishlistColor"; "required": false; "isSignal": true; }; "wishlistTextColor": { "alias": "wishlistTextColor"; "required": false; "isSignal": true; }; "wishlistVariant": { "alias": "wishlistVariant"; "required": false; "isSignal": true; }; "stockBadgeColor": { "alias": "stockBadgeColor"; "required": false; "isSignal": true; }; "discountBadgeColor": { "alias": "discountBadgeColor"; "required": false; "isSignal": true; }; "quantityColor": { "alias": "quantityColor"; "required": false; "isSignal": true; }; "specButtonColor": { "alias": "specButtonColor"; "required": false; "isSignal": true; }; "specButtonTextColor": { "alias": "specButtonTextColor"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "currency": { "alias": "currency"; "required": false; "isSignal": true; }; "compact": { "alias": "compact"; "required": false; "isSignal": true; }; }, { "addToCart": "addToCart"; "buyNow": "buyNow"; "wishlist": "wishlist"; "variationChange": "variationChange"; "leaveReview": "leaveReview"; }, never, never, true, never>;
3559
3573
  }
3560
3574
 
3561
3575
  interface ClxProductQuickViewData {
@@ -3614,6 +3628,14 @@ declare class ClxWishlistComponent {
3614
3628
  * clx-input/clx-select/clx-pagination themselves. Previously this was a required-looking input
3615
3629
  * defaulting to a hardcoded 'indigo' that every zone read directly, bypassing theme entirely. */
3616
3630
  readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
3631
+ /** Text color for "Agregar todo al carrito" (variant="light") — independent of `color`, same
3632
+ * rationale as clx-button's own [textColor]: a saturated `color` can leave the auto-resolved
3633
+ * text illegible against a light-tinted background. Undefined leaves clx-button's own
3634
+ * automatic resolution untouched. */
3635
+ readonly checkoutAllTextColor: _angular_core.InputSignal<ClxColorInput | undefined>;
3636
+ /** Text color for each item's own "Añadir al carrito" (variant="solid") — independent of
3637
+ * `color`, same rationale as checkoutAllTextColor. */
3638
+ readonly addToCartTextColor: _angular_core.InputSignal<ClxColorInput | undefined>;
3617
3639
  readonly sortOptions: _angular_core.InputSignal<ClxSelectOption[]>;
3618
3640
  readonly currentPage: _angular_core.ModelSignal<number>;
3619
3641
  readonly pageSize: _angular_core.ModelSignal<number>;
@@ -3660,7 +3682,7 @@ declare class ClxWishlistComponent {
3660
3682
  handleRemove(item: ClxWishlistItem): void;
3661
3683
  handleCheckoutAll(): void;
3662
3684
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxWishlistComponent, never>;
3663
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxWishlistComponent, "clx-wishlist", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "sortOptions": { "alias": "sortOptions"; "required": false; "isSignal": true; }; "currentPage": { "alias": "currentPage"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "sortValue": { "alias": "sortValue"; "required": false; "isSignal": true; }; "searchValue": { "alias": "searchValue"; "required": false; "isSignal": true; }; }, { "currentPage": "currentPageChange"; "pageSize": "pageSizeChange"; "sortValue": "sortValueChange"; "searchValue": "searchValueChange"; "onRemove": "onRemove"; "onAddToCart": "onAddToCart"; "onSearchChange": "onSearchChange"; "onSortChange": "onSortChange"; "onPageChange": "onPageChange"; "onCheckoutAll": "onCheckoutAll"; "onBrowseCatalog": "onBrowseCatalog"; }, never, never, true, never>;
3685
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxWishlistComponent, "clx-wishlist", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "checkoutAllTextColor": { "alias": "checkoutAllTextColor"; "required": false; "isSignal": true; }; "addToCartTextColor": { "alias": "addToCartTextColor"; "required": false; "isSignal": true; }; "sortOptions": { "alias": "sortOptions"; "required": false; "isSignal": true; }; "currentPage": { "alias": "currentPage"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "sortValue": { "alias": "sortValue"; "required": false; "isSignal": true; }; "searchValue": { "alias": "searchValue"; "required": false; "isSignal": true; }; }, { "currentPage": "currentPageChange"; "pageSize": "pageSizeChange"; "sortValue": "sortValueChange"; "searchValue": "searchValueChange"; "onRemove": "onRemove"; "onAddToCart": "onAddToCart"; "onSearchChange": "onSearchChange"; "onSortChange": "onSortChange"; "onPageChange": "onPageChange"; "onCheckoutAll": "onCheckoutAll"; "onBrowseCatalog": "onBrowseCatalog"; }, never, never, true, never>;
3664
3686
  }
3665
3687
 
3666
3688
  /** Refleja sa_cart_items + ca_variants + ca_products */