codexly-ui 0.12.11 → 0.12.13

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.11",
3
+ "version": "0.12.13",
4
4
  "description": "Standalone, signal-based Angular UI component library for Codexly, styled with Tailwind CSS.",
5
5
  "keywords": [
6
6
  "angular",
@@ -3306,6 +3306,11 @@ declare class ClxProductComponent {
3306
3306
  readonly layout: _angular_core.InputSignal<ClxProductLayout>;
3307
3307
  readonly size: _angular_core.InputSignal<ClxProductSize>;
3308
3308
  readonly clxColor: _angular_core.InputSignal<ClxColorInput>;
3309
+ /** Text color for the wishlist (heart) and "Añadir al carrito"/"Ver opciones" buttons —
3310
+ * independent of clxColor, same rationale as clx-button's own [textColor]. Both buttons are
3311
+ * variant="ghost" (text tinted at textSubtle strength, not a solid fill), so contrast risk is
3312
+ * low, but this is still exposed for full parity with clx-product-detail/clx-wishlist. */
3313
+ readonly actionTextColor: _angular_core.InputSignal<ClxColorInput | undefined>;
3309
3314
  readonly imageFit: _angular_core.InputSignal<"contain" | "cover">;
3310
3315
  readonly addToCart: _angular_core.OutputEmitterRef<ClxProduct>;
3311
3316
  readonly addToWishlist: _angular_core.OutputEmitterRef<ClxProduct>;
@@ -3338,7 +3343,7 @@ declare class ClxProductComponent {
3338
3343
  protected readonly _descClass: _angular_core.Signal<string>;
3339
3344
  protected readonly _priceClass: _angular_core.Signal<string>;
3340
3345
  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>;
3346
+ 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
3347
  }
3343
3348
 
3344
3349
  /** st_spec_options */
@@ -3428,24 +3433,25 @@ interface ClxProductDetailData {
3428
3433
  declare class ClxProductDetailComponent {
3429
3434
  readonly product: _angular_core.InputSignal<ClxProductDetailData | null>;
3430
3435
  readonly initialVariationId: _angular_core.InputSignal<string | null>;
3436
+ /** Fallback accent for every zone below that doesn't get its own explicit override — same "one
3437
+ * shared default, every zone can opt out independently" convention as the rest of this library
3438
+ * (see ClxThemeConfig/formControls). Each {zone}Color/{zone}TextColor pair below is fully
3439
+ * independent: setting one never affects any other, so a host can, say, pin addToCartColor to
3440
+ * the theme's secondaryColor while leaving buyNowColor/specButtonColor on the shared clxColor. */
3431
3441
  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>;
3442
+ readonly buyNowColor: _angular_core.InputSignal<ClxColorInput | undefined>;
3443
+ readonly buyNowTextColor: _angular_core.InputSignal<ClxColorInput | undefined>;
3444
+ protected readonly _buyNowColor: _angular_core.Signal<ClxColorInput>;
3445
+ readonly addToCartColor: _angular_core.InputSignal<ClxColorInput | undefined>;
3446
+ readonly addToCartTextColor: _angular_core.InputSignal<ClxColorInput | undefined>;
3447
+ readonly leaveReviewColor: _angular_core.InputSignal<ClxColorInput | undefined>;
3448
+ readonly leaveReviewTextColor: _angular_core.InputSignal<ClxColorInput | undefined>;
3449
+ protected readonly _leaveReviewColor: _angular_core.Signal<ClxColorInput>;
3445
3450
  /** 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
3451
+ * as buyNowColor: a saturated brand color that works as a small accent elsewhere can look wrong
3447
3452
  * as a solid filled circle. Falls back to clxColor()/'solid' when not set. */
3448
3453
  readonly wishlistColor: _angular_core.InputSignal<ClxColorInput | undefined>;
3454
+ readonly wishlistTextColor: _angular_core.InputSignal<ClxColorInput | undefined>;
3449
3455
  readonly wishlistVariant: _angular_core.InputSignal<ClxButtonVariant>;
3450
3456
  protected readonly _wishlistColor: _angular_core.Signal<ClxColorInput>;
3451
3457
  /** Overrides for individual accent spots that a saturated clxColor can make too loud at their
@@ -3453,17 +3459,20 @@ declare class ClxProductDetailComponent {
3453
3459
  * rating stars, thumbnail active border, etc). All fall back to clxColor() when unset. */
3454
3460
  readonly stockBadgeColor: _angular_core.InputSignal<ClxColorInput | undefined>;
3455
3461
  readonly discountBadgeColor: _angular_core.InputSignal<ClxColorInput | undefined>;
3456
- readonly specButtonColor: _angular_core.InputSignal<ClxColorInput | undefined>;
3457
3462
  readonly quantityColor: _angular_core.InputSignal<ClxColorInput | undefined>;
3458
3463
  protected readonly _stockBadgeColor: _angular_core.Signal<ClxColorInput>;
3459
3464
  protected readonly _discountBadgeColor: _angular_core.Signal<ClxColorInput>;
3460
- protected readonly _specButtonColor: _angular_core.Signal<ClxColorInput>;
3461
3465
  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. */
3466
+ /** Spec option buttons (Talla/Material/etc — not the color-swatch spec type, which uses
3467
+ * opt.value as an inline background and has no clx-button text to color). specButtonTextColor
3468
+ * only ever applies to the SELECTED (variant="solid") option — an unselected option is
3469
+ * variant="outline", where the text IS specButtonColor itself (the variant's own literal
3470
+ * text-{color} class), so forcing a text override there would fight its own border/text color
3471
+ * and can go illegible against outline's light background (confirmed: neutral-50 became
3472
+ * invisible on unselected chips). */
3473
+ readonly specButtonColor: _angular_core.InputSignal<ClxColorInput | undefined>;
3466
3474
  readonly specButtonTextColor: _angular_core.InputSignal<ClxColorInput | undefined>;
3475
+ protected readonly _specButtonColor: _angular_core.Signal<ClxColorInput>;
3467
3476
  readonly loading: _angular_core.InputSignal<boolean>;
3468
3477
  readonly currency: _angular_core.InputSignal<string>;
3469
3478
  /** Hides the tabs (Características/Especificaciones/Descripción) and the Reviews section —
@@ -3555,7 +3564,7 @@ declare class ClxProductDetailComponent {
3555
3564
  specsLeft<T>(specs: T[]): T[];
3556
3565
  specsRight<T>(specs: T[]): T[];
3557
3566
  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>;
3567
+ 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
3568
  }
3560
3569
 
3561
3570
  interface ClxProductQuickViewData {
@@ -3614,6 +3623,14 @@ declare class ClxWishlistComponent {
3614
3623
  * clx-input/clx-select/clx-pagination themselves. Previously this was a required-looking input
3615
3624
  * defaulting to a hardcoded 'indigo' that every zone read directly, bypassing theme entirely. */
3616
3625
  readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
3626
+ /** Text color for "Agregar todo al carrito" (variant="light") — independent of `color`, same
3627
+ * rationale as clx-button's own [textColor]: a saturated `color` can leave the auto-resolved
3628
+ * text illegible against a light-tinted background. Undefined leaves clx-button's own
3629
+ * automatic resolution untouched. */
3630
+ readonly checkoutAllTextColor: _angular_core.InputSignal<ClxColorInput | undefined>;
3631
+ /** Text color for each item's own "Añadir al carrito" (variant="solid") — independent of
3632
+ * `color`, same rationale as checkoutAllTextColor. */
3633
+ readonly addToCartTextColor: _angular_core.InputSignal<ClxColorInput | undefined>;
3617
3634
  readonly sortOptions: _angular_core.InputSignal<ClxSelectOption[]>;
3618
3635
  readonly currentPage: _angular_core.ModelSignal<number>;
3619
3636
  readonly pageSize: _angular_core.ModelSignal<number>;
@@ -3660,7 +3677,7 @@ declare class ClxWishlistComponent {
3660
3677
  handleRemove(item: ClxWishlistItem): void;
3661
3678
  handleCheckoutAll(): void;
3662
3679
  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>;
3680
+ 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
3681
  }
3665
3682
 
3666
3683
  /** Refleja sa_cart_items + ca_variants + ca_products */