yukit-web 0.0.6 → 0.0.8

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,7 +1,7 @@
1
1
  {
2
2
  "name": "yukit-web",
3
3
  "description": "Angular UI component library for Yurest web applications.",
4
- "version": "0.0.6",
4
+ "version": "0.0.8",
5
5
  "author": {
6
6
  "name": "Yurest Solutions",
7
7
  "email": "develop@yurest.com"
@@ -1,6 +1,6 @@
1
1
  import { ClassValue } from 'clsx';
2
2
  import * as _angular_core from '@angular/core';
3
- import { ModelSignal, Type, Provider, InputSignal, InputSignalWithTransform, TemplateRef, OnInit } from '@angular/core';
3
+ import { ModelSignal, Type, Provider, InputSignal, InputSignalWithTransform, TemplateRef, OnInit, Signal } from '@angular/core';
4
4
  import { ControlValueAccessor } from '@angular/forms';
5
5
  import { ButtonVariants } from 'yukit-web/helm/button';
6
6
  import * as i1 from 'yukit-web/helm/badge';
@@ -30,6 +30,7 @@ import { HlmAttachmentAction } from 'yukit-web/helm/attachment';
30
30
  import { RouterLink } from '@angular/router';
31
31
  import * as i1$d from 'yukit-web/helm/sidebar';
32
32
  export { HlmSidebarConfig as YuwSidebarConfigDto, HlmSidebarService as YuwSidebarService, SidebarVariant as YuwSidebarServiceVariantDto, provideHlmSidebarConfig as provideYuwSidebarConfig } from 'yukit-web/helm/sidebar';
33
+ import * as i2$1 from 'yukit-web/helm/hover-card';
33
34
 
34
35
  /**
35
36
  * Merges class lists the shadcn/Spartan way: `clsx` resolves conditionals/arrays, `twMerge`
@@ -1786,9 +1787,21 @@ declare class YuwDatatableComponent<TData extends RowData> implements OnInit {
1786
1787
  readonly columnVisibility: _angular_core.ModelSignal<ColumnVisibilityState>;
1787
1788
  readonly rowSelection: _angular_core.ModelSignal<RowSelectionState>;
1788
1789
  readonly pagination: _angular_core.ModelSignal<PaginationState>;
1790
+ protected rowClicked: _angular_core.OutputEmitterRef<TData>;
1791
+ protected readonly _ariaSort: Record<'asc' | 'desc', 'ascending' | 'descending'>;
1792
+ protected readonly _sortIcon: Record<'asc' | 'desc' | 'none', string>;
1789
1793
  protected readonly currentPage: _angular_core.WritableSignal<number>;
1790
- /** Translates a 1-based page from `<yuw-pagination>` back into TanStack's zero-based state. */
1791
- protected onPageChange(page: number): void;
1794
+ protected readonly _isEmpty: _angular_core.Signal<boolean>;
1795
+ protected readonly _columnCount: _angular_core.Signal<number>;
1796
+ protected readonly _skeletonRows: _angular_core.Signal<number[]>;
1797
+ protected readonly _tableClass: _angular_core.Signal<string>;
1798
+ protected readonly _containerClass: _angular_core.Signal<string>;
1799
+ protected readonly _headClass: _angular_core.Signal<string>;
1800
+ protected readonly _rowClass: _angular_core.Signal<string>;
1801
+ protected readonly _cellClasses: _angular_core.Signal<Map<string, {
1802
+ readonly header: string;
1803
+ readonly cell: string;
1804
+ }>>;
1792
1805
  private readonly _options;
1793
1806
  protected readonly table: _tanstack_angular_table.AngularTable<YuwDatatableFeatures, TData>;
1794
1807
  private readonly _selectedRows;
@@ -1808,21 +1821,20 @@ declare class YuwDatatableComponent<TData extends RowData> implements OnInit {
1808
1821
  * which by then is past its mount guard.
1809
1822
  */
1810
1823
  ngOnInit(): void;
1811
- protected readonly _isEmpty: _angular_core.Signal<boolean>;
1812
- protected readonly _columnCount: _angular_core.Signal<number>;
1813
- protected readonly _skeletonRows: _angular_core.Signal<number[]>;
1814
- protected readonly _tableClass: _angular_core.Signal<string>;
1815
- protected readonly _containerClass: _angular_core.Signal<string>;
1816
- protected readonly _headClass: _angular_core.Signal<string>;
1817
- protected readonly _rowClass: _angular_core.Signal<string>;
1818
- protected readonly _cellClasses: _angular_core.Signal<Map<string, {
1819
- readonly header: string;
1820
- readonly cell: string;
1821
- }>>;
1822
- protected readonly _ariaSort: Record<'asc' | 'desc', 'ascending' | 'descending'>;
1823
- protected readonly _sortIcon: Record<'asc' | 'desc' | 'none', string>;
1824
+ protected onPageChange(page: number): void;
1825
+ protected onRowClick(row: TData): void;
1824
1826
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwDatatableComponent<any>, never>;
1825
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwDatatableComponent<any>, "yuw-datatable", never, { "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "sortable": { "alias": "sortable"; "required": false; "isSignal": true; }; "paginated": { "alias": "paginated"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "loadingRows": { "alias": "loadingRows"; "required": false; "isSignal": true; }; "previousPageLabel": { "alias": "previousPageLabel"; "required": true; "isSignal": true; }; "nextPageLabel": { "alias": "nextPageLabel"; "required": true; "isSignal": true; }; "paginationEllipsisSrText": { "alias": "paginationEllipsisSrText"; "required": true; "isSignal": true; }; "paginationAriaLabel": { "alias": "paginationAriaLabel"; "required": true; "isSignal": true; }; "caption": { "alias": "caption"; "required": false; "isSignal": true; }; "tableClass": { "alias": "tableClass"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "sorting": { "alias": "sorting"; "required": false; "isSignal": true; }; "columnFilters": { "alias": "columnFilters"; "required": false; "isSignal": true; }; "columnVisibility": { "alias": "columnVisibility"; "required": false; "isSignal": true; }; "rowSelection": { "alias": "rowSelection"; "required": false; "isSignal": true; }; "pagination": { "alias": "pagination"; "required": false; "isSignal": true; }; }, { "sorting": "sortingChange"; "columnFilters": "columnFiltersChange"; "columnVisibility": "columnVisibilityChange"; "rowSelection": "rowSelectionChange"; "pagination": "paginationChange"; "selectedRowsChange": "selectedRowsChange"; }, never, never, true, never>;
1827
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwDatatableComponent<any>, "yuw-datatable", never, { "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "sortable": { "alias": "sortable"; "required": false; "isSignal": true; }; "paginated": { "alias": "paginated"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "loadingRows": { "alias": "loadingRows"; "required": false; "isSignal": true; }; "previousPageLabel": { "alias": "previousPageLabel"; "required": true; "isSignal": true; }; "nextPageLabel": { "alias": "nextPageLabel"; "required": true; "isSignal": true; }; "paginationEllipsisSrText": { "alias": "paginationEllipsisSrText"; "required": true; "isSignal": true; }; "paginationAriaLabel": { "alias": "paginationAriaLabel"; "required": true; "isSignal": true; }; "caption": { "alias": "caption"; "required": false; "isSignal": true; }; "tableClass": { "alias": "tableClass"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "sorting": { "alias": "sorting"; "required": false; "isSignal": true; }; "columnFilters": { "alias": "columnFilters"; "required": false; "isSignal": true; }; "columnVisibility": { "alias": "columnVisibility"; "required": false; "isSignal": true; }; "rowSelection": { "alias": "rowSelection"; "required": false; "isSignal": true; }; "pagination": { "alias": "pagination"; "required": false; "isSignal": true; }; }, { "sorting": "sortingChange"; "columnFilters": "columnFiltersChange"; "columnVisibility": "columnVisibilityChange"; "rowSelection": "rowSelectionChange"; "pagination": "paginationChange"; "rowClicked": "rowClicked"; "selectedRowsChange": "selectedRowsChange"; }, never, never, true, never>;
1828
+ }
1829
+
1830
+ declare class YuwDatatableRowSelect {
1831
+ readonly checked: _angular_core.InputSignal<boolean>;
1832
+ readonly indeterminate: _angular_core.InputSignal<boolean>;
1833
+ readonly label: _angular_core.InputSignal<string>;
1834
+ readonly onToggle: _angular_core.InputSignal<() => void>;
1835
+ protected toggle(): void;
1836
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwDatatableRowSelect, never>;
1837
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwDatatableRowSelect, "yuw-datatable-row-select", never, { "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "onToggle": { "alias": "onToggle"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1826
1838
  }
1827
1839
 
1828
1840
  /** A single entry in `<yuw-avatar>`'s `group` input, which turns it into a stack of overlapping avatars. */
@@ -2567,6 +2579,39 @@ declare class YuwAttachmentTriggerDirective {
2567
2579
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwAttachmentTriggerDirective, "button[yuwAttachmentTrigger], a[yuwAttachmentTrigger]", never, {}, {}, never, never, true, [{ directive: typeof i1$c.HlmAttachmentTrigger; inputs: { "type": "type"; }; outputs: {}; }]>;
2568
2580
  }
2569
2581
 
2582
+ /**
2583
+ * Tracks the sidebar's collapsed state, and a second copy of it that lags behind the width animation.
2584
+ *
2585
+ * The helm flips `data-collapsible` the instant the state changes, while the panel takes
2586
+ * `--sidebar-transition-duration` to reach its new width. Anything keyed off that attribute therefore
2587
+ * restyles against a panel that is still the old size — labels vanish and icons jump to rail geometry
2588
+ * while there is still 16rem of sidebar around them.
2589
+ *
2590
+ * `railSettled` fixes that asymmetrically, because the two directions want opposite timing:
2591
+ *
2592
+ * - Collapsing, the rail look has to wait for the panel to actually be narrow. Applying it up front is
2593
+ * what produces the jump.
2594
+ * - Expanding, the rail look has to go immediately. The labels need the whole animation to fade and
2595
+ * ellipsis into place, so waiting would replace one jump with another at the far end.
2596
+ *
2597
+ * The delay runs through `timer` rather than a `setTimeout` inside an `effect`, and that is not a
2598
+ * stylistic choice: this app is zoneless, so a signal written from a bare timer callback notifies
2599
+ * nobody. Components reading `railSettled` in a template binding are `OnPush`, so they would keep
2600
+ * their stale view until something else happened to schedule a check — the signal flips, the DOM does
2601
+ * not. Going through `toSignal` puts the write back under Angular's own scheduling.
2602
+ *
2603
+ * Provided at the root so `<yuw-sidebar>` and the nav share one instance — the component stamps the
2604
+ * attribute the class layers select on, and the nav reads the same signal to decide between accordion
2605
+ * and flyout, so the two must agree on the exact frame.
2606
+ */
2607
+ declare class YuwSidebarRailService {
2608
+ private readonly sidebar;
2609
+ readonly collapsed: Signal<boolean>;
2610
+ readonly railSettled: Signal<boolean>;
2611
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarRailService, never>;
2612
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<YuwSidebarRailService>;
2613
+ }
2614
+
2570
2615
  /**
2571
2616
  * Where a sidebar entry points.
2572
2617
  *
@@ -2612,6 +2657,11 @@ interface YuwSidebarSubItemDto extends YuwSidebarNavigationDto {
2612
2657
  * Renders an anchor when it carries a `route` or `href`, and a `<button>` otherwise — the data says
2613
2658
  * which it is, so there is no `kind` field to keep in sync with it.
2614
2659
  *
2660
+ * An entry with `children` and no target of its own is a pure accordion header: it renders as a
2661
+ * `<button>` that only toggles its submenu and never reports through `itemClicked`, because a click
2662
+ * on it means "open this", not "run an action". Give it a `route` or `href` too and it both
2663
+ * navigates and toggles.
2664
+ *
2615
2665
  * - `label`: text of the entry, supplied already translated — the sidebar owns no user-facing copy.
2616
2666
  * - `icon`: name of a registered `@ng-icons` icon. Because the *consumer* chooses this name, the
2617
2667
  * consuming app is responsible for `provideIcons()`-ing it; `provideIcons` is a component-level
@@ -2619,7 +2669,12 @@ interface YuwSidebarSubItemDto extends YuwSidebarNavigationDto {
2619
2669
  * injector chain. Same contract as `<yuw-spinner icon="…">`.
2620
2670
  * - `badge`: short trailing count or status, hidden automatically while collapsed to icons.
2621
2671
  * - `tooltip`: label shown while collapsed to icons, where `label` is not visible. Falls back to
2622
- * `label` when absent, so the common case needs no second field.
2672
+ * `label` when absent, so the common case needs no second field. Ignored on an entry with
2673
+ * `children`, which shows its flyout on hover instead — the two would fire on the same gesture at
2674
+ * the same screen position.
2675
+ * - `expanded`: whether the submenu starts open, for an entry with `children`. A seed for the
2676
+ * initial state only, not live state: the user's own toggling lives in the sidebar and survives
2677
+ * the consumer replacing this object. An entry holding the active route opens regardless.
2623
2678
  */
2624
2679
  interface YuwSidebarItemDto extends YuwSidebarNavigationDto {
2625
2680
  id: string;
@@ -2629,6 +2684,7 @@ interface YuwSidebarItemDto extends YuwSidebarNavigationDto {
2629
2684
  tooltip?: string;
2630
2685
  disabled?: boolean;
2631
2686
  children?: YuwSidebarSubItemDto[];
2687
+ expanded?: boolean;
2632
2688
  }
2633
2689
  /**
2634
2690
  * A titled section of the sidebar.
@@ -2656,17 +2712,18 @@ interface YuwSidebarContentDto {
2656
2712
  * What `<yuw-sidebar>` emits from `itemClicked`.
2657
2713
  *
2658
2714
  * Only entries with neither `route` nor `href` emit: a navigating entry's click is the router's or
2659
- * the browser's to handle. Carries the `id` rather than the whole entry, matching
2715
+ * the browser's to handle. An entry whose only job is to hold `children` does not emit either its
2716
+ * click toggles the submenu. Carries the `id` rather than the whole entry, matching
2660
2717
  * `YuwButtonGroupClickDto`.
2661
2718
  */
2662
2719
  interface YuwSidebarItemClickDto {
2663
2720
  id: string;
2664
2721
  event: MouseEvent;
2665
2722
  }
2666
-
2667
2723
  type YuwSidebarSideDto = 'left' | 'right';
2668
2724
  type YuwSidebarVariantDto = 'sidebar' | 'floating' | 'inset';
2669
2725
  type YuwSidebarCollapsibleDto = 'offcanvas' | 'icon' | 'none';
2726
+
2670
2727
  /**
2671
2728
  * Collapsible navigation sidebar. Renders as a fixed panel on desktop and as a slide-in sheet on
2672
2729
  * mobile, and reads its colors from the `--sidebar-*` theme tokens.
@@ -2685,12 +2742,22 @@ type YuwSidebarCollapsibleDto = 'offcanvas' | 'icon' | 'none';
2685
2742
  * markup. Groups → items → optional one level of children. An item with a `route` becomes a
2686
2743
  * `[routerLink]` anchor whose active state, `aria-current` and pointer-lock resolve automatically
2687
2744
  * from `routerLinkActive`; one with an `href` becomes a plain anchor; one with neither becomes a
2688
- * button that reports through `itemClicked`.
2745
+ * button that reports through `itemClicked`. An item with `children` gets a submenu that follows
2746
+ * the sidebar's own state: an accordion while the panel is open, and a hover flyout to the side
2747
+ * once it is collapsed to icons, so nested entries stay reachable from the rail. Its `expanded`
2748
+ * field seeds the accordion; the item holding the active route opens on its own.
2689
2749
  * - `footer`: The same, rendered into the footer region.
2690
2750
  *
2691
2751
  * Outputs:
2692
2752
  * - `itemClicked`: Emits `{id, event}` when a non-navigating entry (no `route`, no `href`) is
2693
2753
  * activated, in either `content` or `footer`.
2754
+ * - `collapsedChange`: Emits `true` when the sidebar collapses and `false` when it expands, reading
2755
+ * the mobile sheet or the desktop panel as appropriate. Fires the moment the state flips, so it is
2756
+ * the one to drive a caller's own layout, which should start moving with the panel.
2757
+ * - `railSettledChange`: The same transition, but `true` only once the collapse has finished
2758
+ * animating, and `false` immediately on expand. Use it for anything that should not restyle against
2759
+ * a panel still mid-width — swapping a logo for a mark, say. The sidebar's own rail geometry is
2760
+ * keyed off this, which is why the labels stay put until the panel is actually narrow.
2694
2761
  *
2695
2762
  * The two forms compose rather than exclude each other, unlike `<yuw-button>`'s `buttons` input
2696
2763
  * which drops projected content when set. `content`/`footer` render their own region; anything
@@ -2731,7 +2798,7 @@ type YuwSidebarCollapsibleDto = 'offcanvas' | 'icon' | 'none';
2731
2798
  * label: 'Gestión',
2732
2799
  * items: [
2733
2800
  * {id: 'orders', label: 'Pedidos', icon: 'lucideReceipt', route: '/orders', badge: '12'},
2734
- * {id: 'reports', label: 'Informes', icon: 'lucideChartLine', children: [
2801
+ * {id: 'reports', label: 'Informes', icon: 'lucideChartLine', expanded: true, children: [
2735
2802
  * {id: 'sales', label: 'Ventas', route: '/reports/sales'},
2736
2803
  * ]},
2737
2804
  * {id: 'sync', label: 'Sincronizar'},
@@ -2742,6 +2809,7 @@ type YuwSidebarCollapsibleDto = 'offcanvas' | 'icon' | 'none';
2742
2809
  */
2743
2810
  declare class YuwSidebarComponent {
2744
2811
  private readonly config;
2812
+ protected readonly _rail: YuwSidebarRailService;
2745
2813
  readonly side: _angular_core.InputSignal<YuwSidebarSideDto>;
2746
2814
  readonly variant: _angular_core.InputSignal<YuwSidebarVariantDto>;
2747
2815
  readonly collapsible: _angular_core.InputSignal<YuwSidebarCollapsibleDto>;
@@ -2750,8 +2818,12 @@ declare class YuwSidebarComponent {
2750
2818
  readonly content: _angular_core.InputSignal<YuwSidebarContentDto | undefined>;
2751
2819
  readonly footer: _angular_core.InputSignal<YuwSidebarContentDto | undefined>;
2752
2820
  readonly itemClicked: _angular_core.OutputEmitterRef<YuwSidebarItemClickDto>;
2821
+ protected readonly _containerClass: _angular_core.Signal<string>;
2822
+ protected readonly _isRail: _angular_core.Signal<boolean>;
2823
+ readonly collapsedChange: _angular_core.OutputRef<boolean>;
2824
+ readonly railSettledChange: _angular_core.OutputRef<boolean>;
2753
2825
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarComponent, never>;
2754
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwSidebarComponent, "yuw-sidebar", never, { "side": { "alias": "side"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "sidebarWidthMobile": { "alias": "sidebarWidthMobile"; "required": false; "isSignal": true; }; "sidebarContainerClass": { "alias": "sidebarContainerClass"; "required": false; "isSignal": true; }; "content": { "alias": "content"; "required": false; "isSignal": true; }; "footer": { "alias": "footer"; "required": false; "isSignal": true; }; }, { "itemClicked": "itemClicked"; }, never, ["[yuwSidebarHeader], yuw-sidebar-header", "[yuwSidebarContentExtra]", "*", "[yuwSidebarFooterExtra]"], true, never>;
2826
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwSidebarComponent, "yuw-sidebar", never, { "side": { "alias": "side"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "sidebarWidthMobile": { "alias": "sidebarWidthMobile"; "required": false; "isSignal": true; }; "sidebarContainerClass": { "alias": "sidebarContainerClass"; "required": false; "isSignal": true; }; "content": { "alias": "content"; "required": false; "isSignal": true; }; "footer": { "alias": "footer"; "required": false; "isSignal": true; }; }, { "itemClicked": "itemClicked"; "collapsedChange": "collapsedChange"; "railSettledChange": "railSettledChange"; }, never, ["[yuwSidebarHeader], yuw-sidebar-header", "[yuwSidebarContentExtra]", "*", "[yuwSidebarFooterExtra]"], true, never>;
2755
2827
  }
2756
2828
 
2757
2829
  /**
@@ -2812,8 +2884,31 @@ declare class YuwSidebarHeaderDirective {
2812
2884
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarHeaderDirective, never>;
2813
2885
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarHeaderDirective, "[yuwSidebarHeader], yuw-sidebar-header", never, {}, {}, never, never, true, [{ directive: typeof i1$d.HlmSidebarHeader; inputs: {}; outputs: {}; }]>;
2814
2886
  }
2815
- /** Scrollable middle area of the sidebar that holds the navigation groups. */
2887
+ /**
2888
+ * Scrollable middle area of the sidebar that holds the navigation groups.
2889
+ *
2890
+ * Restores vertical scrolling in the collapsed state, which the composed primitive switches off with
2891
+ * `group-data-[collapsible=icon]:overflow-hidden`. That is a fair default for a rail of icons alone,
2892
+ * but ours keeps expandable entries reachable there, so a tall nav has to be able to scroll rather
2893
+ * than have its last icons clipped. Horizontal overflow stays hidden: nothing should scroll sideways
2894
+ * in a rail that narrow.
2895
+ *
2896
+ * The `!` is needed because the helm's own declaration sits in the same Tailwind group at the same
2897
+ * modifier, and `twMerge` resolves that by keeping the last one — which would be ours already, except
2898
+ * `overflow-hidden` and `overflow-y-auto` are different properties to it, so both survive and the
2899
+ * shorthand wins on order.
2900
+ *
2901
+ * The scrollbar itself stays hidden, which the primitive's own `no-scrollbar` already handles: a
2902
+ * gutter that only appears once the nav happens to overflow shifts the icons sideways, and the rail is
2903
+ * too narrow to spend 11px on it. Wheel, trackpad and keyboard still scroll; only the thumb is gone.
2904
+ *
2905
+ * Also spaces the groups it stacks while collapsed. Each group's own menu spaces its items, so with
2906
+ * the groups' vertical padding dropped there was nothing left between the last icon of one and the
2907
+ * first of the next; matching that spacing here is what makes the rail read as one evenly spaced
2908
+ * column rather than blocks butted together.
2909
+ */
2816
2910
  declare class YuwSidebarContentDirective {
2911
+ constructor();
2817
2912
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarContentDirective, never>;
2818
2913
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarContentDirective, "[yuwSidebarContent], yuw-sidebar-content", never, {}, {}, never, never, true, [{ directive: typeof i1$d.HlmSidebarContent; inputs: {}; outputs: {}; }]>;
2819
2914
  }
@@ -2822,13 +2917,31 @@ declare class YuwSidebarFooterDirective {
2822
2917
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarFooterDirective, never>;
2823
2918
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarFooterDirective, "[yuwSidebarFooter], yuw-sidebar-footer", never, {}, {}, never, never, true, [{ directive: typeof i1$d.HlmSidebarFooter; inputs: {}; outputs: {}; }]>;
2824
2919
  }
2825
- /** A titled section of the sidebar. */
2920
+ /**
2921
+ * A titled section of the sidebar.
2922
+ *
2923
+ * Drops its vertical padding once collapsed to icons. The composed primitive pads every side with
2924
+ * `p-2`, which is right while headings are visible and separating one group from the next, but on the
2925
+ * rail those headings are gone and two adjacent groups contribute 8px each — a gap in the middle of
2926
+ * what reads as one column of icons. Horizontal padding stays: it is what keeps the icons off the
2927
+ * rail's edges.
2928
+ */
2826
2929
  declare class YuwSidebarGroupDirective {
2930
+ constructor();
2827
2931
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarGroupDirective, never>;
2828
2932
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarGroupDirective, "[yuwSidebarGroup], yuw-sidebar-group", never, {}, {}, never, never, true, [{ directive: typeof i1$d.HlmSidebarGroup; inputs: {}; outputs: {}; }]>;
2829
2933
  }
2830
- /** Heading of a sidebar group. Fades out when the sidebar collapses to icons. */
2934
+ /**
2935
+ * Heading of a sidebar group. Removed from the layout when the sidebar collapses to icons.
2936
+ *
2937
+ * The composed primitive hides it with `-mt-8` plus `opacity-0`, which leaves the heading in the flow
2938
+ * still occupying its `h-8` box and cancels that box with a negative margin. The two only net to zero
2939
+ * while the heading is exactly one line at exactly that height, so a group heading left a visible gap
2940
+ * between the icons of one group and the next. `hidden` takes it out of the flow instead, and the
2941
+ * margin is zeroed so the collapsed rail is not pulled upwards by a box that no longer exists.
2942
+ */
2831
2943
  declare class YuwSidebarGroupLabelDirective {
2944
+ constructor();
2832
2945
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarGroupLabelDirective, never>;
2833
2946
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarGroupLabelDirective, "div[yuwSidebarGroupLabel], button[yuwSidebarGroupLabel]", never, {}, {}, never, never, true, [{ directive: typeof i1$d.HlmSidebarGroupLabel; inputs: {}; outputs: {}; }]>;
2834
2947
  }
@@ -2868,16 +2981,56 @@ declare class YuwSidebarMenuItemDirective {
2868
2981
  * Interactive control of a sidebar menu item. Accepts `variant` (`'default'`, `'outline'`), `size`
2869
2982
  * (`'default'`, `'sm'`, `'lg'`) and `isActive`.
2870
2983
  *
2871
- * To label the item while the sidebar is collapsed to icons, add Spartan's `tooltip` input
2872
- * alongside this directive it comes from the underlying menu-button primitive and is only shown
2873
- * in the collapsed state. It cannot be re-forwarded through this wrapper's `hostDirectives`
2874
- * (`tooltip` is the alias `HlmSidebarMenuButton` gives its own composed `BrnTooltip`, not a public
2875
- * input of its own), so bind it with `[attr.tooltip]` rather than `[tooltip]` when the value comes
2876
- * from an expression.
2984
+ * `tooltip` labels the item while the sidebar is collapsed to icons, where the label itself is
2985
+ * hidden; the composed primitive shows it only in that state, and only for entries with no flyout of
2986
+ * their own an entry with children opens its submenu on the same hover instead.
2987
+ *
2988
+ * Reaching that input takes composing `BrnTooltip` here under the same `tooltip` alias the helm uses,
2989
+ * rather than forwarding it. `HlmSidebarMenuButton` publishes the alias on its own `hostDirectives`
2990
+ * entry, which does not make it an input of the helm directive — a forward cannot be re-forwarded, the
2991
+ * same limit `[yuwSidebarFlyoutTrigger]` runs into. Angular resolves both entries to the one
2992
+ * `BrnTooltip` instance on the element, so the helm keeps driving `mutableTooltipDisabled` (which is
2993
+ * what confines the tooltip to the collapsed state) while this binding supplies its content.
2994
+ *
2995
+ * `[attr.tooltip]` is not a substitute, and was the bug: it writes an HTML attribute, which never
2996
+ * reaches a signal input, so the tooltip stayed enabled with `null` content and silently showed
2997
+ * nothing.
2877
2998
  *
2878
2999
  * Carries `yuwSidebarMenuButtonClass`, our hover/expanded colouring and collapsed-to-icon geometry.
2879
- * The `classes()` registration below runs after the composed `HlmSidebarMenuButton`'s own, so our
2880
- * classes merge last and win see `sidebar.variants.ts`.
3000
+ * The `classes()` registration below runs after the composed `HlmSidebarMenuButton`'s own, and
3001
+ * `classes()` merges its sources in registration order through `twMerge`, so each of our classes
3002
+ * displaces the helm class of the same Tailwind group and modifier stack without `!important`.
3003
+ *
3004
+ * Those classes sit on the button rather than on `li[yuwSidebarMenuItem]` because every selector in
3005
+ * them resolves against the button's own box or subtree: the `<li>` is not the hovered control, never
3006
+ * carries `aria-expanded`, and its `> span:last-child` is the badge, not the label.
3007
+ *
3008
+ * Three details of the collapsed-to-icon block are load-bearing:
3009
+ *
3010
+ * - `h-auto!`, `w-full!` and `justify-center!` keep their `!` because the helm declarations they
3011
+ * replace (`size-8!`, `p-2!`) are themselves `!important`, which `twMerge` cannot outrank on
3012
+ * specificity alone. The helm pins the button to a square; ours fills the rail width and centres
3013
+ * the icon. Both halves of `size-8!` have to be named separately: a single `size-auto!` occupies
3014
+ * the same `twMerge` group as the base `w-full`, dropping it, so the button would fall back to
3015
+ * shrink-to-fit for the whole width animation — long enough for the label to stop ellipsing and
3016
+ * the trailing chevron to sit against it.
3017
+ * - `[&>span]:hidden` drops the label while collapsed, leaving the icon alone — the tooltip carries
3018
+ * the name in that state, or the flyout does for an entry with children. Matched by element rather
3019
+ * than by `:last-child` (which is what the helm's own `truncate` uses): an expandable entry ends
3020
+ * with a trailing chevron, so the label is no longer the last child and a positional selector
3021
+ * would skip exactly those entries. `span` is unambiguous here — the label is the only one a menu
3022
+ * button has, with the badge living outside the button on the `<li>`.
3023
+ * - The icon grows through `scale-150` rather than a font-size bump, so it can be transitioned: only
3024
+ * `transform`-family properties animate on the compositor, and a `font-size` change would relayout
3025
+ * the row on every frame.
3026
+ *
3027
+ * Which state each class hangs off is load-bearing, because the two attributes fire at different
3028
+ * times. `data-collapsible` flips the instant the toggle is pressed; `data-yuw-rail` waits for the
3029
+ * width animation to finish. Anything that should hold its expanded look *through* the animation
3030
+ * therefore keys off the rail attribute — the label's `hidden`, the centring, the icon's scale — while
3031
+ * the width and height overrides key off `collapsible`, to displace the helm's `size-8!` before it can
3032
+ * snap the row to 32px and truncate the label away in the first frame. That snap is what made the text vanish
3033
+ * on click instead of ellipsing gradually as the panel narrows.
2881
3034
  */
2882
3035
  declare class YuwSidebarMenuButtonDirective {
2883
3036
  constructor();
@@ -2899,11 +3052,136 @@ declare class YuwSidebarMenuSubItemDirective {
2899
3052
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarMenuSubItemDirective, never>;
2900
3053
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarMenuSubItemDirective, "li[yuwSidebarMenuSubItem]", never, {}, {}, never, never, true, [{ directive: typeof i1$d.HlmSidebarMenuSubItem; inputs: {}; outputs: {}; }]>;
2901
3054
  }
2902
- /** Interactive control of a sidebar submenu item. Accepts `size` (`'sm'`, `'md'`) and `isActive`. */
3055
+ /**
3056
+ * Interactive control of a sidebar submenu item. Accepts `size` (`'sm'`, `'md'`) and `isActive`.
3057
+ *
3058
+ * Carries the same label clamp as `[yuwSidebarMenuButton]`. The composed primitive already truncates
3059
+ * its `span:last-child`, but truncation cannot fire while the span is a flex item at its default
3060
+ * `min-width: auto`: that floor keeps it at content width, so the panel widens the row instead of the
3061
+ * text ellipsing. `min-w-0` is what lets it shrink, and the `[&>span]` selector covers a label that is
3062
+ * no longer the last child.
3063
+ */
2903
3064
  declare class YuwSidebarMenuSubButtonDirective {
3065
+ constructor();
2904
3066
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarMenuSubButtonDirective, never>;
2905
3067
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarMenuSubButtonDirective, "a[yuwSidebarMenuSubButton], button[yuwSidebarMenuSubButton]", never, {}, {}, never, never, true, [{ directive: typeof i1$d.HlmSidebarMenuSubButton; inputs: { "size": "size"; "isActive": "isActive"; "closeMobileSidebarOnClick": "closeMobileSidebarOnClick"; }; outputs: {}; }]>;
2906
3068
  }
3069
+ /**
3070
+ * Host of a collapsed-state flyout: the element that scopes the overlay for one entry. Apply
3071
+ * alongside `[yuwSidebarMenuItem]` on the `<li>` holding the entry and its panel.
3072
+ *
3073
+ * Provides `BrnHoverCardContentService` itself instead of composing `HlmHoverCard`. The service has
3074
+ * to be scoped per `<li>` — it holds the single overlay and its content, so a shared one would have
3075
+ * every entry in the sidebar fighting over the same panel — and providing it here is all that is
3076
+ * needed for that. What `HlmHoverCard` adds on top is a `contentChild` pairing that assigns the
3077
+ * trigger's content in `ngAfterContentInit`, and that pairing is actively harmful here: it writes
3078
+ * into the same writable signal the trigger's own input feeds, so its one-time value outlives and
3079
+ * overrides the binding that is supposed to turn the flyout off while the sidebar is expanded.
3080
+ */
3081
+ declare class YuwSidebarFlyoutHostDirective {
3082
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarFlyoutHostDirective, never>;
3083
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarFlyoutHostDirective, "[yuwSidebarFlyoutHost]", never, {}, {}, never, never, true, never>;
3084
+ }
3085
+ /**
3086
+ * The entry whose hover opens a flyout. Apply to the same element as `[yuwSidebarMenuButton]`, bound
3087
+ * to the panel's `<ng-template>` reference — or to `undefined` to switch the flyout off entirely,
3088
+ * which is how an expanded sidebar keeps its submenus inline.
3089
+ *
3090
+ * Drives `BrnHoverCardContentService` directly instead of composing `BrnHoverCardTrigger`. The brain
3091
+ * trigger has no way to be turned off once it has run: it feeds the panel to the service through an
3092
+ * effect that ignores falsy values, and the service's `show()` consults only its stored content, so
3093
+ * a trigger that was ever enabled keeps opening its overlay forever. Rebinding to `undefined` cannot
3094
+ * undo it, and neither can `hide()`, which detaches the overlay but leaves the content in place.
3095
+ * Owning the wiring here is what makes an unbound panel mean "inert".
3096
+ *
3097
+ * The `effect` is the whole lifecycle: it runs when a panel arrives, and its `onCleanup` closes the
3098
+ * overlay and drops the subscription when the panel goes away or the entry is destroyed. Nothing
3099
+ * else tracks teardown, which is why there is no `DestroyRef` or `takeUntilDestroyed` here — a second
3100
+ * mechanism would only be able to disagree with this one.
3101
+ *
3102
+ * Delays are read inside `switchMap` rather than captured when the effect runs, so retuning them
3103
+ * does not tear down and rebuild the subscription.
3104
+ *
3105
+ * `distinctUntilChanged` before the timer is load-bearing, and not as an optimisation: the five
3106
+ * merged sources overlap, so crossing from the entry to the panel emits a `mouseleave` and the
3107
+ * panel's own hover almost together, and `mouseenter` and `focusin` both fire on the same pointer
3108
+ * arriving. Each duplicate would restart `switchMap` and cancel the timer already in flight, so a
3109
+ * repeat during the show delay could keep the panel from ever opening.
3110
+ *
3111
+ * It cannot dedupe the crossing itself, though — that genuinely alternates `false` then `true`, so
3112
+ * both values are distinct and both survive. `toggle` is therefore guarded against the state it is
3113
+ * already in, because `show()` is not idempotent: it calls `detach()` then `attach()`, tearing the
3114
+ * panel down and rebuilding it. Re-showing an open panel replays its enter animation, which is the
3115
+ * flicker you get when the pointer moves from the rail into the flyout.
3116
+ *
3117
+ * Note there is no click handling. `BrnHoverCardTrigger` maps a click to `false`, which is right for
3118
+ * a hover card — clicking the trigger dismisses it — and wrong for a nav rail, where the entry's own
3119
+ * click has nothing to collapse while collapsed and closing the panel would take away the links the
3120
+ * pointer is travelling to. Activating a child closes the flyout anyway, since the pointer leaves
3121
+ * the panel as the page changes.
3122
+ *
3123
+ * `align` is `'right'` for a sidebar flyout rather than the hover card's own `'bottom'`. It is set as
3124
+ * an input rather than through `provideBrnHoverCardDefaultOptions` because that provider types its
3125
+ * `align` as `'top' | 'bottom'`, even though the position map handles all four sides.
3126
+ */
3127
+ declare class YuwSidebarFlyoutTriggerDirective {
3128
+ private readonly element;
3129
+ private readonly viewContainerRef;
3130
+ private readonly service;
3131
+ readonly panel: _angular_core.InputSignal<TemplateRef<unknown> | undefined>;
3132
+ readonly align: _angular_core.InputSignal<"left" | "right" | "top" | "bottom">;
3133
+ readonly sideOffset: _angular_core.InputSignalWithTransform<number, unknown>;
3134
+ readonly showDelay: _angular_core.InputSignalWithTransform<number, unknown>;
3135
+ readonly hideDelay: _angular_core.InputSignalWithTransform<number, unknown>;
3136
+ private readonly pointerOver;
3137
+ constructor();
3138
+ private toggle;
3139
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarFlyoutTriggerDirective, never>;
3140
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarFlyoutTriggerDirective, "[yuwSidebarFlyoutTrigger]", never, { "panel": { "alias": "yuwSidebarFlyoutTrigger"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "sideOffset": { "alias": "sideOffset"; "required": false; "isSignal": true; }; "showDelay": { "alias": "showDelay"; "required": false; "isSignal": true; }; "hideDelay": { "alias": "hideDelay"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3141
+ }
3142
+ /**
3143
+ * Marks the `<ng-template>` holding a flyout's markup, and is what `[yuwSidebarFlyoutTrigger]` is
3144
+ * bound to. Exported as `yuwSidebarFlyoutPanel` so the template can name it.
3145
+ *
3146
+ * Structural — the composed primitive injects the `TemplateRef`, which is what lets the panel be
3147
+ * portalled into a CDK overlay instead of rendering inside the rail.
3148
+ *
3149
+ * The trigger is bound to the template's own `#ref` (a `TemplateRef`, which its input accepts), so
3150
+ * this directive is never referenced by name — but it cannot be dropped: it is the sole provider of
3151
+ * the exposed state and side tokens that `[yuwSidebarFlyout]` injects from its host, and without it
3152
+ * the panel throws NG0201 the moment the overlay instantiates it.
3153
+ */
3154
+ declare class YuwSidebarFlyoutPanelDirective {
3155
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarFlyoutPanelDirective, never>;
3156
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarFlyoutPanelDirective, "ng-template[yuwSidebarFlyoutPanel]", never, {}, {}, never, never, true, [{ directive: typeof i2$1.HlmHoverCardPortal; inputs: {}; outputs: {}; }]>;
3157
+ }
3158
+ /**
3159
+ * The flyout's visible surface. Apply to the single root element inside a `[yuwSidebarFlyoutPanel]`
3160
+ * template.
3161
+ *
3162
+ * Separate from the panel marker because the two sit on different nodes: the marker is the
3163
+ * `<ng-template>`, this is the element the overlay renders. Carries the popover surface of the
3164
+ * composed helm content plus `yuwSidebarFlyoutClass`.
3165
+ *
3166
+ * That class layer exists because the panel lives in the overlay, outside the sidebar's DOM subtree,
3167
+ * and so is no longer a descendant of the `group/sidebar-wrapper` element. Every
3168
+ * `group-data-[collapsible=…]` selector therefore resolves against nothing and stays inert —
3169
+ * including the `hidden` that `HlmSidebarMenuSub` and `HlmSidebarMenuSubButton` apply to themselves
3170
+ * in exactly this state, which is why the submenu markup renders visible in here with no override.
3171
+ * What the layer undoes instead is the indentation and vertical rule those primitives carry for the
3172
+ * inline case, which make no sense in a panel.
3173
+ *
3174
+ * The gap between rail and panel is that layer's `ms-2`, not the trigger's `sideOffset`, which is
3175
+ * deliberately `0`. An offset moves the overlay away from the trigger and leaves dead space between
3176
+ * them: crossing it slowly means the pointer is over neither element, and the hover card closes
3177
+ * mid-journey. A margin keeps the same visual gap inside the overlay's own box, so the pointer never
3178
+ * leaves the hover target on its way in.
3179
+ */
3180
+ declare class YuwSidebarFlyoutDirective {
3181
+ constructor();
3182
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarFlyoutDirective, never>;
3183
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarFlyoutDirective, "[yuwSidebarFlyout]", never, {}, {}, never, never, true, [{ directive: typeof i2$1.HlmHoverCardContent; inputs: {}; outputs: {}; }]>;
3184
+ }
2907
3185
  /** Divider between sidebar sections. */
2908
3186
  declare class YuwSidebarSeparatorDirective {
2909
3187
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarSeparatorDirective, never>;
@@ -2925,5 +3203,5 @@ declare class YuwSidebarInsetDirective {
2925
3203
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarInsetDirective, "main[yuwSidebarInset]", never, {}, {}, never, never, true, [{ directive: typeof i1$d.HlmSidebarInset; inputs: {}; outputs: {}; }]>;
2926
3204
  }
2927
3205
 
2928
- export { DATATABLE_ALIGN_CLASS, YUW_DATATABLE_FEATURES, YUW_PASSWORD_REVEAL_STATES, YuwAccordion, YuwAccordionContentComponent, YuwAccordionImports, YuwAccordionItem, YuwAccordionTriggerComponent, YuwAlertActionDirective, YuwAlertComponent, YuwAlertDescriptionDirective, YuwAlertDialogComponent, YuwAlertDialogMediaDirective, YuwAlertDialogTriggerDirective, YuwAlertImports, YuwAlertTitleDirective, YuwAttachmentActionDirective, YuwAttachmentActionsDirective, YuwAttachmentContentDirective, YuwAttachmentDescriptionDirective, YuwAttachmentDirective, YuwAttachmentGroupDirective, YuwAttachmentMediaDirective, YuwAttachmentTitleDirective, YuwAttachmentTriggerDirective, YuwAvatarComponent, YuwBadgeComponent, YuwBreadcrumbComponent, YuwButtonComponent, YuwButtonGroupTextDirective, YuwCaptionDirective, YuwCardActionDirective, YuwCardContentDirective, YuwCardDescriptionDirective, YuwCardDirective, YuwCardFooterDirective, YuwCardHeaderDirective, YuwCardImports, YuwCardTitleDirective, YuwCheckboxComponent, YuwComboboxComponent, YuwComboboxItemDirective, YuwContextMenuCheckboxDirective, YuwContextMenuCheckboxIndicatorComponent, YuwContextMenuDirective, YuwContextMenuGroupDirective, YuwContextMenuImports, YuwContextMenuItemDirective, YuwContextMenuLabelDirective, YuwContextMenuRadioDirective, YuwContextMenuRadioIndicatorComponent, YuwContextMenuSeparatorDirective, YuwContextMenuShortcutDirective, YuwContextMenuSubDirective, YuwContextMenuSubIndicatorComponent, YuwContextMenuSubTriggerDirective, YuwContextMenuTriggerDirective, YuwDatatableComponent, YuwDatepickerComponent, YuwDialogCloseDirective, YuwDialogComponent, YuwDialogFooterDirective, YuwDialogImports, YuwDialogTriggerDirective, YuwEmptyContentDirective, YuwEmptyDescriptionDirective, YuwEmptyDirective, YuwEmptyHeaderDirective, YuwEmptyImports, YuwEmptyMediaDirective, YuwEmptyTitleDirective, YuwInputAddonImports, YuwInputComponent, YuwInputOtpComponent, YuwItemActionsDirective, YuwItemContentDirective, YuwItemDescriptionDirective, YuwItemDirective, YuwItemFooterDirective, YuwItemGroupDirective, YuwItemHeaderDirective, YuwItemImports, YuwItemMediaDirective, YuwItemSeparatorDirective, YuwItemTitleDirective, YuwLabel, YuwLeftAddonDirective, YuwPaginationComponent, YuwPasswordInputComponent, YuwPopoverComponent, YuwPopoverTriggerDirective, YuwRadioGroupComponent, YuwRightAddonDirective, YuwSearchInputComponent, YuwSheetCloseDirective, YuwSheetComponent, YuwSheetFooterDirective, YuwSheetImports, YuwSheetTriggerDirective, YuwSidebarComponent, YuwSidebarContentDirective, YuwSidebarContentExtraDirective, YuwSidebarFooterDirective, YuwSidebarFooterExtraDirective, YuwSidebarGroupContentDirective, YuwSidebarGroupDirective, YuwSidebarGroupLabelDirective, YuwSidebarHeaderDirective, YuwSidebarInsetDirective, YuwSidebarMenuBadgeDirective, YuwSidebarMenuButtonDirective, YuwSidebarMenuDirective, YuwSidebarMenuItemDirective, YuwSidebarMenuSubButtonDirective, YuwSidebarMenuSubDirective, YuwSidebarMenuSubItemDirective, YuwSidebarRailDirective, YuwSidebarSeparatorDirective, YuwSidebarTriggerComponent, YuwSidebarWrapperDirective, YuwSkeletonDirective, YuwSpinnerComponent, YuwSwitchComponent, YuwTBodyDirective, YuwTFootDirective, YuwTHeadDirective, YuwTabPanelDirective, YuwTableContainerDirective, YuwTableDirective, YuwTableImports, YuwTabsComponent, YuwTdDirective, YuwTextareaComponent, YuwThDirective, YuwToasterComponent, YuwTooltipDirective, YuwTrDirective, YuwValueAccessorBase, buildInputOtpGroups, cn, datatableCellVariants, datatableContainerVariants, datatableHeadVariants, datatableHeaderCellVariants, datatableRowVariants, getPaginationRange, provideValueAccessor, totalInputOtpLength };
3206
+ export { DATATABLE_ALIGN_CLASS, YUW_DATATABLE_FEATURES, YUW_PASSWORD_REVEAL_STATES, YuwAccordion, YuwAccordionContentComponent, YuwAccordionImports, YuwAccordionItem, YuwAccordionTriggerComponent, YuwAlertActionDirective, YuwAlertComponent, YuwAlertDescriptionDirective, YuwAlertDialogComponent, YuwAlertDialogMediaDirective, YuwAlertDialogTriggerDirective, YuwAlertImports, YuwAlertTitleDirective, YuwAttachmentActionDirective, YuwAttachmentActionsDirective, YuwAttachmentContentDirective, YuwAttachmentDescriptionDirective, YuwAttachmentDirective, YuwAttachmentGroupDirective, YuwAttachmentMediaDirective, YuwAttachmentTitleDirective, YuwAttachmentTriggerDirective, YuwAvatarComponent, YuwBadgeComponent, YuwBreadcrumbComponent, YuwButtonComponent, YuwButtonGroupTextDirective, YuwCaptionDirective, YuwCardActionDirective, YuwCardContentDirective, YuwCardDescriptionDirective, YuwCardDirective, YuwCardFooterDirective, YuwCardHeaderDirective, YuwCardImports, YuwCardTitleDirective, YuwCheckboxComponent, YuwComboboxComponent, YuwComboboxItemDirective, YuwContextMenuCheckboxDirective, YuwContextMenuCheckboxIndicatorComponent, YuwContextMenuDirective, YuwContextMenuGroupDirective, YuwContextMenuImports, YuwContextMenuItemDirective, YuwContextMenuLabelDirective, YuwContextMenuRadioDirective, YuwContextMenuRadioIndicatorComponent, YuwContextMenuSeparatorDirective, YuwContextMenuShortcutDirective, YuwContextMenuSubDirective, YuwContextMenuSubIndicatorComponent, YuwContextMenuSubTriggerDirective, YuwContextMenuTriggerDirective, YuwDatatableComponent, YuwDatatableRowSelect, YuwDatepickerComponent, YuwDialogCloseDirective, YuwDialogComponent, YuwDialogFooterDirective, YuwDialogImports, YuwDialogTriggerDirective, YuwEmptyContentDirective, YuwEmptyDescriptionDirective, YuwEmptyDirective, YuwEmptyHeaderDirective, YuwEmptyImports, YuwEmptyMediaDirective, YuwEmptyTitleDirective, YuwInputAddonImports, YuwInputComponent, YuwInputOtpComponent, YuwItemActionsDirective, YuwItemContentDirective, YuwItemDescriptionDirective, YuwItemDirective, YuwItemFooterDirective, YuwItemGroupDirective, YuwItemHeaderDirective, YuwItemImports, YuwItemMediaDirective, YuwItemSeparatorDirective, YuwItemTitleDirective, YuwLabel, YuwLeftAddonDirective, YuwPaginationComponent, YuwPasswordInputComponent, YuwPopoverComponent, YuwPopoverTriggerDirective, YuwRadioGroupComponent, YuwRightAddonDirective, YuwSearchInputComponent, YuwSheetCloseDirective, YuwSheetComponent, YuwSheetFooterDirective, YuwSheetImports, YuwSheetTriggerDirective, YuwSidebarComponent, YuwSidebarContentDirective, YuwSidebarContentExtraDirective, YuwSidebarFlyoutDirective, YuwSidebarFlyoutHostDirective, YuwSidebarFlyoutPanelDirective, YuwSidebarFlyoutTriggerDirective, YuwSidebarFooterDirective, YuwSidebarFooterExtraDirective, YuwSidebarGroupContentDirective, YuwSidebarGroupDirective, YuwSidebarGroupLabelDirective, YuwSidebarHeaderDirective, YuwSidebarInsetDirective, YuwSidebarMenuBadgeDirective, YuwSidebarMenuButtonDirective, YuwSidebarMenuDirective, YuwSidebarMenuItemDirective, YuwSidebarMenuSubButtonDirective, YuwSidebarMenuSubDirective, YuwSidebarMenuSubItemDirective, YuwSidebarRailDirective, YuwSidebarRailService, YuwSidebarSeparatorDirective, YuwSidebarTriggerComponent, YuwSidebarWrapperDirective, YuwSkeletonDirective, YuwSpinnerComponent, YuwSwitchComponent, YuwTBodyDirective, YuwTFootDirective, YuwTHeadDirective, YuwTabPanelDirective, YuwTableContainerDirective, YuwTableDirective, YuwTableImports, YuwTabsComponent, YuwTdDirective, YuwTextareaComponent, YuwThDirective, YuwToasterComponent, YuwTooltipDirective, YuwTrDirective, YuwValueAccessorBase, buildInputOtpGroups, cn, datatableCellVariants, datatableContainerVariants, datatableHeadVariants, datatableHeaderCellVariants, datatableRowVariants, getPaginationRange, provideValueAccessor, totalInputOtpLength };
2929
3207
  export type { YuwAlertDialogSizeDto, YuwAlertVariantDto, YuwAvatarGroupItemDto, YuwAvatarSizeDto, YuwBreadcrumbItemDto, YuwButtonGroupClickDto, YuwButtonGroupEntryDto, YuwButtonGroupItemDto, YuwButtonGroupTextDto, YuwColorDto, YuwComboboxItemContext, YuwComboboxOptionDto, YuwComboboxValue, YuwDatatableAlign, YuwDatatableAppearanceDto, YuwDatatableColumnDef, YuwDatatableColumnMeta, YuwDatatableFeatures, YuwDatepickerModeDto, YuwDatepickerValue, YuwFieldSizeDto, YuwInputModeDto, YuwInputOtpGroupDto, YuwInputOtpModeDto, YuwInputTypeDto, YuwPaginationRangeItem, YuwPaginationSizeDto, YuwPasswordRevealStateDto, YuwPopoverAlignDto, YuwRadioOptionDto, YuwSearchInputCollapseFromDto, YuwSheetSideDto, YuwSidebarCollapsibleDto, YuwSidebarContentDto, YuwSidebarGroupDto, YuwSidebarItemClickDto, YuwSidebarItemDto, YuwSidebarSideDto, YuwSidebarSubItemDto, YuwSidebarVariantDto, YuwSwitchSizeDto, YuwTabItemDto, YuwTabsActivationModeDto, YuwTabsOrientationDto, YuwTabsVariantDto, YuwTextFieldContract, YuwToasterPositionDto, YuwToasterThemeDto, YuwTooltipPositionDto };