orbiq-neural-ui-kit 1.2.51 → 1.2.53

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.
@@ -4616,7 +4616,7 @@ class NeuralDropdownComponent {
4616
4616
  </button>
4617
4617
 
4618
4618
  <!-- Nested Panel -->
4619
- <div class="absolute left-full top-0 hidden group-hover:block pl-1.5 z-50">
4619
+ <div class="absolute left-full top-0 opacity-0 invisible group-hover:opacity-100 group-hover:visible transition-all duration-200 delay-100 group-hover:delay-150 pl-1.5 z-50">
4620
4620
  <neural-popover-panel class="block min-w-[180px]">
4621
4621
  <ng-container *ngTemplateOutlet="menuList; context: { $implicit: option.children, popover: popover }"></ng-container>
4622
4622
  </neural-popover-panel>
@@ -4721,7 +4721,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
4721
4721
  </button>
4722
4722
 
4723
4723
  <!-- Nested Panel -->
4724
- <div class="absolute left-full top-0 hidden group-hover:block pl-1.5 z-50">
4724
+ <div class="absolute left-full top-0 opacity-0 invisible group-hover:opacity-100 group-hover:visible transition-all duration-200 delay-100 group-hover:delay-150 pl-1.5 z-50">
4725
4725
  <neural-popover-panel class="block min-w-[180px]">
4726
4726
  <ng-container *ngTemplateOutlet="menuList; context: { $implicit: option.children, popover: popover }"></ng-container>
4727
4727
  </neural-popover-panel>
@@ -14490,7 +14490,7 @@ class NeuralSidebarItemComponent {
14490
14490
  <div
14491
14491
  data-slot="sidebar-item"
14492
14492
  [attr.data-state]="resolvedActive() ? 'active' : 'inactive'"
14493
- class="group/sidebar-item flex h-8 items-center rounded-4 transition-colors cursor-pointer"
14493
+ class="group/sidebar-item flex h-8 items-center rounded-4 transition-colors cursor-pointer mx-2"
14494
14494
  [class]="
14495
14495
  resolvedActive()
14496
14496
  ? 'bg-surface-gray-3 text-ink-gray-9 font-medium'
@@ -14504,7 +14504,7 @@ class NeuralSidebarItemComponent {
14504
14504
  #rla="routerLinkActive"
14505
14505
  [attr.aria-label]="tooltipText() || undefined"
14506
14506
  [attr.aria-current]="resolvedActive() ? 'page' : undefined"
14507
- class="flex h-full min-w-0 flex-1 items-center rounded-4 pl-2 focus-visible:ring-0 focus-visible:focus-ring"
14507
+ class="flex h-full w-full items-center rounded-4 focus-visible:ring-0 focus-visible:focus-ring overflow-hidden transition-all duration-300 ease-in-out"
14508
14508
  (click)="handleClick($event)"
14509
14509
  >
14510
14510
  <ng-container *ngTemplateOutlet="itemContent"></ng-container>
@@ -14513,7 +14513,7 @@ class NeuralSidebarItemComponent {
14513
14513
  <button
14514
14514
  type="button"
14515
14515
  [attr.aria-label]="tooltipText() || undefined"
14516
- class="flex h-full text-left min-w-0 flex-1 items-center rounded-4 pl-2 focus-visible:ring-0 focus-visible:focus-ring"
14516
+ class="flex h-full w-full text-left items-center rounded-4 focus-visible:ring-0 focus-visible:focus-ring overflow-hidden transition-all duration-300 ease-in-out"
14517
14517
  (click)="handleClick($event)"
14518
14518
  >
14519
14519
  <ng-container *ngTemplateOutlet="itemContent"></ng-container>
@@ -14539,19 +14539,18 @@ class NeuralSidebarItemComponent {
14539
14539
 
14540
14540
  <!-- Content Template to avoid duplication -->
14541
14541
  <ng-template #itemContent>
14542
- <span class="grid shrink-0 place-items-center">
14542
+ <!-- Icon Container (32px wide to center perfectly in a 32px collapsed container) -->
14543
+ <span class="flex-none w-8 flex items-center justify-center h-full">
14543
14544
  <ng-content select="[prefix]"></ng-content>
14544
14545
  @if (!hasPrefixSlot() && icon()) {
14545
14546
  <span [class]="icon() + ' size-4.5'"></span>
14546
14547
  }
14547
14548
  </span>
14549
+
14550
+ <!-- Text Container (Shrinks naturally with flex-1) -->
14548
14551
  <span
14549
- class="min-w-0 flex-1 transition-all ease-in-out"
14550
- [class]="
14551
- isCollapsed()
14552
- ? 'ml-0 w-0 overflow-hidden opacity-0'
14553
- : 'ml-2 w-auto opacity-100'
14554
- "
14552
+ class="flex-1 min-w-0 pl-1 transition-opacity duration-300 ease-in-out"
14553
+ [class.opacity-0]="isCollapsed()"
14555
14554
  >
14556
14555
  <span class="flex min-w-0 items-center">
14557
14556
  <ng-content></ng-content>
@@ -14560,17 +14559,19 @@ class NeuralSidebarItemComponent {
14560
14559
  }
14561
14560
  </span>
14562
14561
  </span>
14562
+
14563
+ <!-- Suffix Container -->
14563
14564
  <div
14564
14565
  data-slot="sidebar-item-suffix"
14565
- class="flex shrink-0 items-center transition-all ease-in-out"
14566
- [class]="isCollapsed() ? 'w-0 overflow-hidden opacity-0' : 'opacity-100'"
14566
+ class="flex-none flex items-center transition-opacity duration-300 ease-in-out pr-2"
14567
+ [class.opacity-0]="isCollapsed()"
14567
14568
  >
14568
14569
  <ng-content select="[suffix]"></ng-content>
14569
14570
  @if (!hasSuffixSlot() && suffix()) {
14570
14571
  <span class="mr-2 text-xs text-ink-gray-4">{{ suffix() }}</span>
14571
14572
  }
14572
14573
  @if (hasChildren()) {
14573
- <span class="mr-2 transition-transform duration-200" [class.rotate-90]="isExpanded()">
14574
+ <span class="transition-transform duration-200" [class.rotate-90]="isExpanded()">
14574
14575
  <span class="lucide-chevron-right size-3.5 text-ink-gray-4 group-hover/sidebar-item:text-ink-gray-6"></span>
14575
14576
  </span>
14576
14577
  }
@@ -14589,7 +14590,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
14589
14590
  <div
14590
14591
  data-slot="sidebar-item"
14591
14592
  [attr.data-state]="resolvedActive() ? 'active' : 'inactive'"
14592
- class="group/sidebar-item flex h-8 items-center rounded-4 transition-colors cursor-pointer"
14593
+ class="group/sidebar-item flex h-8 items-center rounded-4 transition-colors cursor-pointer mx-2"
14593
14594
  [class]="
14594
14595
  resolvedActive()
14595
14596
  ? 'bg-surface-gray-3 text-ink-gray-9 font-medium'
@@ -14603,7 +14604,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
14603
14604
  #rla="routerLinkActive"
14604
14605
  [attr.aria-label]="tooltipText() || undefined"
14605
14606
  [attr.aria-current]="resolvedActive() ? 'page' : undefined"
14606
- class="flex h-full min-w-0 flex-1 items-center rounded-4 pl-2 focus-visible:ring-0 focus-visible:focus-ring"
14607
+ class="flex h-full w-full items-center rounded-4 focus-visible:ring-0 focus-visible:focus-ring overflow-hidden transition-all duration-300 ease-in-out"
14607
14608
  (click)="handleClick($event)"
14608
14609
  >
14609
14610
  <ng-container *ngTemplateOutlet="itemContent"></ng-container>
@@ -14612,7 +14613,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
14612
14613
  <button
14613
14614
  type="button"
14614
14615
  [attr.aria-label]="tooltipText() || undefined"
14615
- class="flex h-full text-left min-w-0 flex-1 items-center rounded-4 pl-2 focus-visible:ring-0 focus-visible:focus-ring"
14616
+ class="flex h-full w-full text-left items-center rounded-4 focus-visible:ring-0 focus-visible:focus-ring overflow-hidden transition-all duration-300 ease-in-out"
14616
14617
  (click)="handleClick($event)"
14617
14618
  >
14618
14619
  <ng-container *ngTemplateOutlet="itemContent"></ng-container>
@@ -14638,19 +14639,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
14638
14639
 
14639
14640
  <!-- Content Template to avoid duplication -->
14640
14641
  <ng-template #itemContent>
14641
- <span class="grid shrink-0 place-items-center">
14642
+ <!-- Icon Container (32px wide to center perfectly in a 32px collapsed container) -->
14643
+ <span class="flex-none w-8 flex items-center justify-center h-full">
14642
14644
  <ng-content select="[prefix]"></ng-content>
14643
14645
  @if (!hasPrefixSlot() && icon()) {
14644
14646
  <span [class]="icon() + ' size-4.5'"></span>
14645
14647
  }
14646
14648
  </span>
14649
+
14650
+ <!-- Text Container (Shrinks naturally with flex-1) -->
14647
14651
  <span
14648
- class="min-w-0 flex-1 transition-all ease-in-out"
14649
- [class]="
14650
- isCollapsed()
14651
- ? 'ml-0 w-0 overflow-hidden opacity-0'
14652
- : 'ml-2 w-auto opacity-100'
14653
- "
14652
+ class="flex-1 min-w-0 pl-1 transition-opacity duration-300 ease-in-out"
14653
+ [class.opacity-0]="isCollapsed()"
14654
14654
  >
14655
14655
  <span class="flex min-w-0 items-center">
14656
14656
  <ng-content></ng-content>
@@ -14659,17 +14659,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
14659
14659
  }
14660
14660
  </span>
14661
14661
  </span>
14662
+
14663
+ <!-- Suffix Container -->
14662
14664
  <div
14663
14665
  data-slot="sidebar-item-suffix"
14664
- class="flex shrink-0 items-center transition-all ease-in-out"
14665
- [class]="isCollapsed() ? 'w-0 overflow-hidden opacity-0' : 'opacity-100'"
14666
+ class="flex-none flex items-center transition-opacity duration-300 ease-in-out pr-2"
14667
+ [class.opacity-0]="isCollapsed()"
14666
14668
  >
14667
14669
  <ng-content select="[suffix]"></ng-content>
14668
14670
  @if (!hasSuffixSlot() && suffix()) {
14669
14671
  <span class="mr-2 text-xs text-ink-gray-4">{{ suffix() }}</span>
14670
14672
  }
14671
14673
  @if (hasChildren()) {
14672
- <span class="mr-2 transition-transform duration-200" [class.rotate-90]="isExpanded()">
14674
+ <span class="transition-transform duration-200" [class.rotate-90]="isExpanded()">
14673
14675
  <span class="lucide-chevron-right size-3.5 text-ink-gray-4 group-hover/sidebar-item:text-ink-gray-6"></span>
14674
14676
  </span>
14675
14677
  }
@@ -14698,24 +14700,23 @@ class NeuralSidebarHeaderComponent {
14698
14700
  ...(ngDevMode ? [{ debugName: "isCollapsed" }] : /* istanbul ignore next */ []));
14699
14701
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: NeuralSidebarHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
14700
14702
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: NeuralSidebarHeaderComponent, isStandalone: true, selector: "neural-sidebar-header", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, subtitle: { classPropertyName: "subtitle", publicName: "subtitle", isSignal: true, isRequired: false, transformFunction: null }, appIcon: { classPropertyName: "appIcon", publicName: "appIcon", isSignal: true, isRequired: true, transformFunction: null }, iconClass: { classPropertyName: "iconClass", publicName: "iconClass", isSignal: true, isRequired: false, transformFunction: null }, menuOptions: { classPropertyName: "menuOptions", publicName: "menuOptions", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "block w-full" }, ngImport: i0, template: `
14701
- <neural-dropdown class="block w-full" [options]="menuOptions()" [hasTriggerSlot]="true" align="start" [offset]="4" [triggerClass]="isCollapsed() ? 'block w-10 mx-auto' : 'block mx-2'" (openChange)="isOpen = $event">
14703
+ <neural-dropdown class="block w-full" [options]="menuOptions()" [hasTriggerSlot]="true" align="start" [offset]="4" triggerClass="block mx-2" (openChange)="isOpen = $event">
14702
14704
  <div trigger
14703
- class="flex items-center gap-2 p-2 rounded-6 transition-colors cursor-pointer w-full"
14704
- [class.duration-0]="isOpen"
14705
- [class.justify-center]="isCollapsed()"
14706
- [class.h-10]="isCollapsed()"
14705
+ class="flex items-center h-10 rounded-6 transition-all duration-300 ease-in-out cursor-pointer overflow-hidden"
14707
14706
  [ngClass]="isOpen && !isCollapsed() ? 'bg-surface-elevation-2 shadow-sm ring-1 ring-black/5' : 'hover:bg-surface-gray-2'"
14708
14707
  [attr.aria-label]="title()"
14709
14708
  [title]="isCollapsed() ? title() : null"
14710
14709
  >
14711
- <!-- App Icon -->
14712
- <div class="flex items-center justify-center shrink-0 size-8 rounded-[10px]" [ngClass]="iconClass()">
14713
- <i [class]="appIcon()" class="size-4.5"></i>
14710
+ <!-- App Icon Container (32px wide, centers icon exactly) -->
14711
+ <div class="flex-none w-8 flex items-center justify-center shrink-0 h-full">
14712
+ <div class="flex items-center justify-center size-8 rounded-[10px]" [ngClass]="iconClass()">
14713
+ <i [class]="appIcon()" class="size-4.5"></i>
14714
+ </div>
14714
14715
  </div>
14715
14716
 
14716
- <!-- Texts (Hidden when collapsed) -->
14717
- <div class="flex flex-col flex-1 min-w-0 transition-all duration-200"
14718
- [class]="isCollapsed() ? 'w-0 opacity-0 hidden' : 'opacity-100'"
14717
+ <!-- Texts (Shrinks naturally with flex-1) -->
14718
+ <div class="flex flex-col flex-1 min-w-0 pl-2 transition-opacity duration-300 ease-in-out"
14719
+ [class.opacity-0]="isCollapsed()"
14719
14720
  >
14720
14721
  <span class="text-[14px] font-medium text-ink-gray-9 truncate">{{ title() }}</span>
14721
14722
  @if (subtitle()) {
@@ -14723,9 +14724,9 @@ class NeuralSidebarHeaderComponent {
14723
14724
  }
14724
14725
  </div>
14725
14726
 
14726
- <!-- Chevron (Hidden when collapsed) -->
14727
- <div class="shrink-0 transition-all duration-200"
14728
- [class]="isCollapsed() ? 'w-0 opacity-0 hidden' : 'opacity-100'"
14727
+ <!-- Chevron -->
14728
+ <div class="flex-none w-8 flex items-center justify-center transition-opacity duration-300 ease-in-out"
14729
+ [class.opacity-0]="isCollapsed()"
14729
14730
  >
14730
14731
  <i class="lucide-chevron-down size-4 text-ink-gray-5 transition-transform duration-200" [class.rotate-180]="isOpen"></i>
14731
14732
  </div>
@@ -14741,24 +14742,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
14741
14742
  imports: [CommonModule, NeuralDropdownComponent],
14742
14743
  host: { class: 'block w-full' },
14743
14744
  template: `
14744
- <neural-dropdown class="block w-full" [options]="menuOptions()" [hasTriggerSlot]="true" align="start" [offset]="4" [triggerClass]="isCollapsed() ? 'block w-10 mx-auto' : 'block mx-2'" (openChange)="isOpen = $event">
14745
+ <neural-dropdown class="block w-full" [options]="menuOptions()" [hasTriggerSlot]="true" align="start" [offset]="4" triggerClass="block mx-2" (openChange)="isOpen = $event">
14745
14746
  <div trigger
14746
- class="flex items-center gap-2 p-2 rounded-6 transition-colors cursor-pointer w-full"
14747
- [class.duration-0]="isOpen"
14748
- [class.justify-center]="isCollapsed()"
14749
- [class.h-10]="isCollapsed()"
14747
+ class="flex items-center h-10 rounded-6 transition-all duration-300 ease-in-out cursor-pointer overflow-hidden"
14750
14748
  [ngClass]="isOpen && !isCollapsed() ? 'bg-surface-elevation-2 shadow-sm ring-1 ring-black/5' : 'hover:bg-surface-gray-2'"
14751
14749
  [attr.aria-label]="title()"
14752
14750
  [title]="isCollapsed() ? title() : null"
14753
14751
  >
14754
- <!-- App Icon -->
14755
- <div class="flex items-center justify-center shrink-0 size-8 rounded-[10px]" [ngClass]="iconClass()">
14756
- <i [class]="appIcon()" class="size-4.5"></i>
14752
+ <!-- App Icon Container (32px wide, centers icon exactly) -->
14753
+ <div class="flex-none w-8 flex items-center justify-center shrink-0 h-full">
14754
+ <div class="flex items-center justify-center size-8 rounded-[10px]" [ngClass]="iconClass()">
14755
+ <i [class]="appIcon()" class="size-4.5"></i>
14756
+ </div>
14757
14757
  </div>
14758
14758
 
14759
- <!-- Texts (Hidden when collapsed) -->
14760
- <div class="flex flex-col flex-1 min-w-0 transition-all duration-200"
14761
- [class]="isCollapsed() ? 'w-0 opacity-0 hidden' : 'opacity-100'"
14759
+ <!-- Texts (Shrinks naturally with flex-1) -->
14760
+ <div class="flex flex-col flex-1 min-w-0 pl-2 transition-opacity duration-300 ease-in-out"
14761
+ [class.opacity-0]="isCollapsed()"
14762
14762
  >
14763
14763
  <span class="text-[14px] font-medium text-ink-gray-9 truncate">{{ title() }}</span>
14764
14764
  @if (subtitle()) {
@@ -14766,9 +14766,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
14766
14766
  }
14767
14767
  </div>
14768
14768
 
14769
- <!-- Chevron (Hidden when collapsed) -->
14770
- <div class="shrink-0 transition-all duration-200"
14771
- [class]="isCollapsed() ? 'w-0 opacity-0 hidden' : 'opacity-100'"
14769
+ <!-- Chevron -->
14770
+ <div class="flex-none w-8 flex items-center justify-center transition-opacity duration-300 ease-in-out"
14771
+ [class.opacity-0]="isCollapsed()"
14772
14772
  >
14773
14773
  <i class="lucide-chevron-down size-4 text-ink-gray-5 transition-transform duration-200" [class.rotate-180]="isOpen"></i>
14774
14774
  </div>