codexly-ui 0.10.110 → 0.10.112

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.
@@ -10585,6 +10585,11 @@ class ClxMenuItemComponent {
10585
10585
  return this.nested() ? NAV_ITEM_L2 : NAV_ITEM_L1;
10586
10586
  }, ...(ngDevMode ? [{ debugName: "_geom" }] : /* istanbul ignore next */ []));
10587
10587
  _iconCls = computed(() => resolveColor(this._resolved().color).textSubtle, ...(ngDevMode ? [{ debugName: "_iconCls" }] : /* istanbul ignore next */ []));
10588
+ // Idle-state label color: a neutral gray by default (matches every other sidebar item), but
10589
+ // respects an explicit [style] color override — e.g. clx-profile's "Cerrar sesión" passing
10590
+ // { color: 'red' } expects the label to actually read red, not fall back to gray like the
10591
+ // icon-only styling used to leave it.
10592
+ _idleLabelCls = computed(() => this.style()?.color ? resolveColor(this._resolved().color).textSubtle : 'text-clx-text-subtle', ...(ngDevMode ? [{ debugName: "_idleLabelCls" }] : /* istanbul ignore next */ []));
10588
10593
  _typography = computed(() => resolveNavZoneTypography(this._resolved()), ...(ngDevMode ? [{ debugName: "_typography" }] : /* istanbul ignore next */ []));
10589
10594
  // Nested items (children under a clx-menu module) stay flat — only the label/icon color
10590
10595
  // changes. Top-level items (e.g. Dashboard) get the same hover/active pill as clx-menu.
@@ -10618,7 +10623,7 @@ class ClxMenuItemComponent {
10618
10623
  <span clx-icon [name]="icon()" size="sm" [class]="_iconCls()"></span>
10619
10624
  }
10620
10625
  @if (!collapsed()) {
10621
- <span class="flex-1 text-left truncate" [class]="rla.isActive ? '' : 'text-clx-text-subtle'">{{ label() }}</span>
10626
+ <span class="flex-1 text-left truncate" [class]="rla.isActive ? '' : _idleLabelCls()">{{ label() }}</span>
10622
10627
  }
10623
10628
  </a>
10624
10629
  } @else {
@@ -10631,7 +10636,7 @@ class ClxMenuItemComponent {
10631
10636
  <span clx-icon [name]="icon()" size="sm" [class]="_iconCls()"></span>
10632
10637
  }
10633
10638
  @if (!collapsed()) {
10634
- <span class="flex-1 text-left truncate" [class]="active() ? '' : 'text-clx-text-subtle'">{{ label() }}</span>
10639
+ <span class="flex-1 text-left truncate" [class]="active() ? '' : _idleLabelCls()">{{ label() }}</span>
10635
10640
  <!-- Only rendered in button mode (no routerLink) — that's the only mode any consumer
10636
10641
  uses this slot with today; adding it to the <a> branch too would duplicate the same
10637
10642
  ng-content selector across two mutually-exclusive branches, which silently fails to
@@ -10661,7 +10666,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
10661
10666
  <span clx-icon [name]="icon()" size="sm" [class]="_iconCls()"></span>
10662
10667
  }
10663
10668
  @if (!collapsed()) {
10664
- <span class="flex-1 text-left truncate" [class]="rla.isActive ? '' : 'text-clx-text-subtle'">{{ label() }}</span>
10669
+ <span class="flex-1 text-left truncate" [class]="rla.isActive ? '' : _idleLabelCls()">{{ label() }}</span>
10665
10670
  }
10666
10671
  </a>
10667
10672
  } @else {
@@ -10674,7 +10679,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
10674
10679
  <span clx-icon [name]="icon()" size="sm" [class]="_iconCls()"></span>
10675
10680
  }
10676
10681
  @if (!collapsed()) {
10677
- <span class="flex-1 text-left truncate" [class]="active() ? '' : 'text-clx-text-subtle'">{{ label() }}</span>
10682
+ <span class="flex-1 text-left truncate" [class]="active() ? '' : _idleLabelCls()">{{ label() }}</span>
10678
10683
  <!-- Only rendered in button mode (no routerLink) — that's the only mode any consumer
10679
10684
  uses this slot with today; adding it to the <a> branch too would duplicate the same
10680
10685
  ng-content selector across two mutually-exclusive branches, which silently fails to
@@ -10902,10 +10907,6 @@ class ClxProfileComponent {
10902
10907
  const t = resolveColor(this._color());
10903
10908
  return `focus-visible:${t.ringBase}`;
10904
10909
  }, ...(ngDevMode ? [{ debugName: "_ringClass" }] : /* istanbul ignore next */ []));
10905
- _avatarRingClass = computed(() => {
10906
- const t = resolveColor(this._color());
10907
- return `border-2 ${t.borderLight}`;
10908
- }, ...(ngDevMode ? [{ debugName: "_avatarRingClass" }] : /* istanbul ignore next */ []));
10909
10910
  // ── Methods ──────────────────────────────────────────────────────────────────
10910
10911
  _toggle() { this._isOpen.update(v => !v); }
10911
10912
  _close() { this._isOpen.set(false); }
@@ -10951,15 +10952,13 @@ class ClxProfileComponent {
10951
10952
 
10952
10953
  <div class="w-72 bg-clx-surface rounded-2xl shadow-xl border border-clx-border-soft overflow-hidden mt-2">
10953
10954
 
10954
- <!-- Header: avatar ring + name + role badge, subtle surface (not a solid color block) -->
10955
- <div class="px-4 pt-5 pb-4 flex items-center gap-3 bg-clx-surface-2">
10956
- <div class="rounded-full p-0.5" [class]="_avatarRingClass()">
10957
- <clx-avatar
10958
- [initials]="_initials()"
10959
- [src]="avatarSrc()"
10960
- [color]="_color()"
10961
- size="md" />
10962
- </div>
10955
+ <!-- Header: avatar + name + role badge -->
10956
+ <div class="px-4 pt-4 pb-3 flex items-center gap-3">
10957
+ <clx-avatar
10958
+ [initials]="_initials()"
10959
+ [src]="avatarSrc()"
10960
+ [color]="_color()"
10961
+ size="md" />
10963
10962
  <div class="flex-1 min-w-0">
10964
10963
  <p class="text-sm font-semibold text-clx-text-label truncate">{{ fullName() }}</p>
10965
10964
  <p class="text-xs text-clx-text-muted truncate">{{ username() }}</p>
@@ -10969,6 +10968,9 @@ class ClxProfileComponent {
10969
10968
  </div>
10970
10969
  </div>
10971
10970
 
10971
+ <!-- Divider -->
10972
+ <div class="border-t border-clx-border-soft"></div>
10973
+
10972
10974
  <!-- Menu items -->
10973
10975
  @if (menuItems().length) {
10974
10976
  <div class="py-1.5">
@@ -11027,15 +11029,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
11027
11029
 
11028
11030
  <div class="w-72 bg-clx-surface rounded-2xl shadow-xl border border-clx-border-soft overflow-hidden mt-2">
11029
11031
 
11030
- <!-- Header: avatar ring + name + role badge, subtle surface (not a solid color block) -->
11031
- <div class="px-4 pt-5 pb-4 flex items-center gap-3 bg-clx-surface-2">
11032
- <div class="rounded-full p-0.5" [class]="_avatarRingClass()">
11033
- <clx-avatar
11034
- [initials]="_initials()"
11035
- [src]="avatarSrc()"
11036
- [color]="_color()"
11037
- size="md" />
11038
- </div>
11032
+ <!-- Header: avatar + name + role badge -->
11033
+ <div class="px-4 pt-4 pb-3 flex items-center gap-3">
11034
+ <clx-avatar
11035
+ [initials]="_initials()"
11036
+ [src]="avatarSrc()"
11037
+ [color]="_color()"
11038
+ size="md" />
11039
11039
  <div class="flex-1 min-w-0">
11040
11040
  <p class="text-sm font-semibold text-clx-text-label truncate">{{ fullName() }}</p>
11041
11041
  <p class="text-xs text-clx-text-muted truncate">{{ username() }}</p>
@@ -11045,6 +11045,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
11045
11045
  </div>
11046
11046
  </div>
11047
11047
 
11048
+ <!-- Divider -->
11049
+ <div class="border-t border-clx-border-soft"></div>
11050
+
11048
11051
  <!-- Menu items -->
11049
11052
  @if (menuItems().length) {
11050
11053
  <div class="py-1.5">