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.
- package/fesm2022/codexly-ui.mjs +29 -26
- package/fesm2022/codexly-ui.mjs.map +1 -1
- package/package.json +1 -1
- package/types/codexly-ui.d.ts +11 -11
package/fesm2022/codexly-ui.mjs
CHANGED
|
@@ -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 ? '' :
|
|
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() ? '' :
|
|
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 ? '' :
|
|
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() ? '' :
|
|
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
|
|
10955
|
-
<div class="px-4 pt-
|
|
10956
|
-
<
|
|
10957
|
-
|
|
10958
|
-
|
|
10959
|
-
|
|
10960
|
-
|
|
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
|
|
11031
|
-
<div class="px-4 pt-
|
|
11032
|
-
<
|
|
11033
|
-
|
|
11034
|
-
|
|
11035
|
-
|
|
11036
|
-
|
|
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">
|