yukit-web 0.0.6 → 0.0.7

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.7",
5
5
  "author": {
6
6
  "name": "Yurest Solutions",
7
7
  "email": "develop@yurest.com"
@@ -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. */
@@ -2612,6 +2624,11 @@ interface YuwSidebarSubItemDto extends YuwSidebarNavigationDto {
2612
2624
  * Renders an anchor when it carries a `route` or `href`, and a `<button>` otherwise — the data says
2613
2625
  * which it is, so there is no `kind` field to keep in sync with it.
2614
2626
  *
2627
+ * An entry with `children` and no target of its own is a pure accordion header: it renders as a
2628
+ * `<button>` that only toggles its submenu and never reports through `itemClicked`, because a click
2629
+ * on it means "open this", not "run an action". Give it a `route` or `href` too and it both
2630
+ * navigates and toggles.
2631
+ *
2615
2632
  * - `label`: text of the entry, supplied already translated — the sidebar owns no user-facing copy.
2616
2633
  * - `icon`: name of a registered `@ng-icons` icon. Because the *consumer* chooses this name, the
2617
2634
  * consuming app is responsible for `provideIcons()`-ing it; `provideIcons` is a component-level
@@ -2619,7 +2636,12 @@ interface YuwSidebarSubItemDto extends YuwSidebarNavigationDto {
2619
2636
  * injector chain. Same contract as `<yuw-spinner icon="…">`.
2620
2637
  * - `badge`: short trailing count or status, hidden automatically while collapsed to icons.
2621
2638
  * - `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.
2639
+ * `label` when absent, so the common case needs no second field. Ignored on an entry with
2640
+ * `children`, which shows its flyout on hover instead — the two would fire on the same gesture at
2641
+ * the same screen position.
2642
+ * - `expanded`: whether the submenu starts open, for an entry with `children`. A seed for the
2643
+ * initial state only, not live state: the user's own toggling lives in the sidebar and survives
2644
+ * the consumer replacing this object. An entry holding the active route opens regardless.
2623
2645
  */
2624
2646
  interface YuwSidebarItemDto extends YuwSidebarNavigationDto {
2625
2647
  id: string;
@@ -2629,6 +2651,7 @@ interface YuwSidebarItemDto extends YuwSidebarNavigationDto {
2629
2651
  tooltip?: string;
2630
2652
  disabled?: boolean;
2631
2653
  children?: YuwSidebarSubItemDto[];
2654
+ expanded?: boolean;
2632
2655
  }
2633
2656
  /**
2634
2657
  * A titled section of the sidebar.
@@ -2656,17 +2679,18 @@ interface YuwSidebarContentDto {
2656
2679
  * What `<yuw-sidebar>` emits from `itemClicked`.
2657
2680
  *
2658
2681
  * 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
2682
+ * the browser's to handle. An entry whose only job is to hold `children` does not emit either its
2683
+ * click toggles the submenu. Carries the `id` rather than the whole entry, matching
2660
2684
  * `YuwButtonGroupClickDto`.
2661
2685
  */
2662
2686
  interface YuwSidebarItemClickDto {
2663
2687
  id: string;
2664
2688
  event: MouseEvent;
2665
2689
  }
2666
-
2667
2690
  type YuwSidebarSideDto = 'left' | 'right';
2668
2691
  type YuwSidebarVariantDto = 'sidebar' | 'floating' | 'inset';
2669
2692
  type YuwSidebarCollapsibleDto = 'offcanvas' | 'icon' | 'none';
2693
+
2670
2694
  /**
2671
2695
  * Collapsible navigation sidebar. Renders as a fixed panel on desktop and as a slide-in sheet on
2672
2696
  * mobile, and reads its colors from the `--sidebar-*` theme tokens.
@@ -2685,7 +2709,10 @@ type YuwSidebarCollapsibleDto = 'offcanvas' | 'icon' | 'none';
2685
2709
  * markup. Groups → items → optional one level of children. An item with a `route` becomes a
2686
2710
  * `[routerLink]` anchor whose active state, `aria-current` and pointer-lock resolve automatically
2687
2711
  * from `routerLinkActive`; one with an `href` becomes a plain anchor; one with neither becomes a
2688
- * button that reports through `itemClicked`.
2712
+ * button that reports through `itemClicked`. An item with `children` gets a submenu that follows
2713
+ * the sidebar's own state: an accordion while the panel is open, and a hover flyout to the side
2714
+ * once it is collapsed to icons, so nested entries stay reachable from the rail. Its `expanded`
2715
+ * field seeds the accordion; the item holding the active route opens on its own.
2689
2716
  * - `footer`: The same, rendered into the footer region.
2690
2717
  *
2691
2718
  * Outputs:
@@ -2731,7 +2758,7 @@ type YuwSidebarCollapsibleDto = 'offcanvas' | 'icon' | 'none';
2731
2758
  * label: 'Gestión',
2732
2759
  * items: [
2733
2760
  * {id: 'orders', label: 'Pedidos', icon: 'lucideReceipt', route: '/orders', badge: '12'},
2734
- * {id: 'reports', label: 'Informes', icon: 'lucideChartLine', children: [
2761
+ * {id: 'reports', label: 'Informes', icon: 'lucideChartLine', expanded: true, children: [
2735
2762
  * {id: 'sales', label: 'Ventas', route: '/reports/sales'},
2736
2763
  * ]},
2737
2764
  * {id: 'sync', label: 'Sincronizar'},
@@ -2876,8 +2903,29 @@ declare class YuwSidebarMenuItemDirective {
2876
2903
  * from an expression.
2877
2904
  *
2878
2905
  * 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`.
2906
+ * The `classes()` registration below runs after the composed `HlmSidebarMenuButton`'s own, and
2907
+ * `classes()` merges its sources in registration order through `twMerge`, so each of our classes
2908
+ * displaces the helm class of the same Tailwind group and modifier stack without `!important`.
2909
+ *
2910
+ * Those classes sit on the button rather than on `li[yuwSidebarMenuItem]` because every selector in
2911
+ * them resolves against the button's own box or subtree: the `<li>` is not the hovered control, never
2912
+ * carries `aria-expanded`, and its `> span:last-child` is the badge, not the label.
2913
+ *
2914
+ * Three details of the collapsed-to-icon block are load-bearing:
2915
+ *
2916
+ * - `size-auto!`, `w-full!` and `justify-center!` keep their `!` because the helm declarations they
2917
+ * replace (`size-8!`, `p-2!`) are themselves `!important`, which `twMerge` cannot outrank on
2918
+ * specificity alone. The helm pins the button to a square; ours fills the rail width and centres
2919
+ * the icon.
2920
+ * - `[&>span]:hidden` drops the label while collapsed, leaving the icon alone — the tooltip carries
2921
+ * the name in that state, or the flyout does for an entry with children. Matched by element rather
2922
+ * than by `:last-child` (which is what the helm's own `truncate` uses): an expandable entry ends
2923
+ * with a trailing chevron, so the label is no longer the last child and a positional selector
2924
+ * would skip exactly those entries. `span` is unambiguous here — the label is the only one a menu
2925
+ * button has, with the badge living outside the button on the `<li>`.
2926
+ * - `text-[length:--spacing(6)]` bumps the icon from the helm's 4 units to 6. The `length:` hint is
2927
+ * not optional: `text-[…]` is ambiguous between colour and size, and Tailwind resolves the bare
2928
+ * form as a colour, so the icon would never resize.
2881
2929
  */
2882
2930
  declare class YuwSidebarMenuButtonDirective {
2883
2931
  constructor();
@@ -2904,6 +2952,122 @@ declare class YuwSidebarMenuSubButtonDirective {
2904
2952
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarMenuSubButtonDirective, never>;
2905
2953
  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
2954
  }
2955
+ /**
2956
+ * Host of a collapsed-state flyout: the element that scopes the overlay for one entry. Apply
2957
+ * alongside `[yuwSidebarMenuItem]` on the `<li>` holding the entry and its panel.
2958
+ *
2959
+ * Provides `BrnHoverCardContentService` itself instead of composing `HlmHoverCard`. The service has
2960
+ * to be scoped per `<li>` — it holds the single overlay and its content, so a shared one would have
2961
+ * every entry in the sidebar fighting over the same panel — and providing it here is all that is
2962
+ * needed for that. What `HlmHoverCard` adds on top is a `contentChild` pairing that assigns the
2963
+ * trigger's content in `ngAfterContentInit`, and that pairing is actively harmful here: it writes
2964
+ * into the same writable signal the trigger's own input feeds, so its one-time value outlives and
2965
+ * overrides the binding that is supposed to turn the flyout off while the sidebar is expanded.
2966
+ */
2967
+ declare class YuwSidebarFlyoutHostDirective {
2968
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarFlyoutHostDirective, never>;
2969
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarFlyoutHostDirective, "[yuwSidebarFlyoutHost]", never, {}, {}, never, never, true, never>;
2970
+ }
2971
+ /**
2972
+ * The entry whose hover opens a flyout. Apply to the same element as `[yuwSidebarMenuButton]`, bound
2973
+ * to the panel's `<ng-template>` reference — or to `undefined` to switch the flyout off entirely,
2974
+ * which is how an expanded sidebar keeps its submenus inline.
2975
+ *
2976
+ * Drives `BrnHoverCardContentService` directly instead of composing `BrnHoverCardTrigger`. The brain
2977
+ * trigger has no way to be turned off once it has run: it feeds the panel to the service through an
2978
+ * effect that ignores falsy values, and the service's `show()` consults only its stored content, so
2979
+ * a trigger that was ever enabled keeps opening its overlay forever. Rebinding to `undefined` cannot
2980
+ * undo it, and neither can `hide()`, which detaches the overlay but leaves the content in place.
2981
+ * Owning the wiring here is what makes an unbound panel mean "inert".
2982
+ *
2983
+ * The `effect` is the whole lifecycle: it runs when a panel arrives, and its `onCleanup` closes the
2984
+ * overlay and drops the subscription when the panel goes away or the entry is destroyed. Nothing
2985
+ * else tracks teardown, which is why there is no `DestroyRef` or `takeUntilDestroyed` here — a second
2986
+ * mechanism would only be able to disagree with this one.
2987
+ *
2988
+ * Delays are read inside `switchMap` rather than captured when the effect runs, so retuning them
2989
+ * does not tear down and rebuild the subscription.
2990
+ *
2991
+ * `distinctUntilChanged` before the timer is load-bearing, and not as an optimisation: the five
2992
+ * merged sources overlap, so crossing from the entry to the panel emits a `mouseleave` and the
2993
+ * panel's own hover almost together, and `mouseenter` and `focusin` both fire on the same pointer
2994
+ * arriving. Each duplicate would restart `switchMap` and cancel the timer already in flight, so a
2995
+ * repeat during the show delay could keep the panel from ever opening.
2996
+ *
2997
+ * It cannot dedupe the crossing itself, though — that genuinely alternates `false` then `true`, so
2998
+ * both values are distinct and both survive. `toggle` is therefore guarded against the state it is
2999
+ * already in, because `show()` is not idempotent: it calls `detach()` then `attach()`, tearing the
3000
+ * panel down and rebuilding it. Re-showing an open panel replays its enter animation, which is the
3001
+ * flicker you get when the pointer moves from the rail into the flyout.
3002
+ *
3003
+ * Note there is no click handling. `BrnHoverCardTrigger` maps a click to `false`, which is right for
3004
+ * a hover card — clicking the trigger dismisses it — and wrong for a nav rail, where the entry's own
3005
+ * click has nothing to collapse while collapsed and closing the panel would take away the links the
3006
+ * pointer is travelling to. Activating a child closes the flyout anyway, since the pointer leaves
3007
+ * the panel as the page changes.
3008
+ *
3009
+ * `align` is `'right'` for a sidebar flyout rather than the hover card's own `'bottom'`. It is set as
3010
+ * an input rather than through `provideBrnHoverCardDefaultOptions` because that provider types its
3011
+ * `align` as `'top' | 'bottom'`, even though the position map handles all four sides.
3012
+ */
3013
+ declare class YuwSidebarFlyoutTriggerDirective {
3014
+ private readonly element;
3015
+ private readonly viewContainerRef;
3016
+ private readonly service;
3017
+ readonly panel: _angular_core.InputSignal<TemplateRef<unknown> | undefined>;
3018
+ readonly align: _angular_core.InputSignal<"left" | "right" | "top" | "bottom">;
3019
+ readonly sideOffset: _angular_core.InputSignalWithTransform<number, unknown>;
3020
+ readonly showDelay: _angular_core.InputSignalWithTransform<number, unknown>;
3021
+ readonly hideDelay: _angular_core.InputSignalWithTransform<number, unknown>;
3022
+ private readonly pointerOver;
3023
+ constructor();
3024
+ private toggle;
3025
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarFlyoutTriggerDirective, never>;
3026
+ 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>;
3027
+ }
3028
+ /**
3029
+ * Marks the `<ng-template>` holding a flyout's markup, and is what `[yuwSidebarFlyoutTrigger]` is
3030
+ * bound to. Exported as `yuwSidebarFlyoutPanel` so the template can name it.
3031
+ *
3032
+ * Structural — the composed primitive injects the `TemplateRef`, which is what lets the panel be
3033
+ * portalled into a CDK overlay instead of rendering inside the rail.
3034
+ *
3035
+ * The trigger is bound to the template's own `#ref` (a `TemplateRef`, which its input accepts), so
3036
+ * this directive is never referenced by name — but it cannot be dropped: it is the sole provider of
3037
+ * the exposed state and side tokens that `[yuwSidebarFlyout]` injects from its host, and without it
3038
+ * the panel throws NG0201 the moment the overlay instantiates it.
3039
+ */
3040
+ declare class YuwSidebarFlyoutPanelDirective {
3041
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarFlyoutPanelDirective, never>;
3042
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarFlyoutPanelDirective, "ng-template[yuwSidebarFlyoutPanel]", never, {}, {}, never, never, true, [{ directive: typeof i2$1.HlmHoverCardPortal; inputs: {}; outputs: {}; }]>;
3043
+ }
3044
+ /**
3045
+ * The flyout's visible surface. Apply to the single root element inside a `[yuwSidebarFlyoutPanel]`
3046
+ * template.
3047
+ *
3048
+ * Separate from the panel marker because the two sit on different nodes: the marker is the
3049
+ * `<ng-template>`, this is the element the overlay renders. Carries the popover surface of the
3050
+ * composed helm content plus `yuwSidebarFlyoutClass`.
3051
+ *
3052
+ * That class layer exists because the panel lives in the overlay, outside the sidebar's DOM subtree,
3053
+ * and so is no longer a descendant of the `group/sidebar-wrapper` element. Every
3054
+ * `group-data-[collapsible=…]` selector therefore resolves against nothing and stays inert —
3055
+ * including the `hidden` that `HlmSidebarMenuSub` and `HlmSidebarMenuSubButton` apply to themselves
3056
+ * in exactly this state, which is why the submenu markup renders visible in here with no override.
3057
+ * What the layer undoes instead is the indentation and vertical rule those primitives carry for the
3058
+ * inline case, which make no sense in a panel.
3059
+ *
3060
+ * The gap between rail and panel is that layer's `ms-2`, not the trigger's `sideOffset`, which is
3061
+ * deliberately `0`. An offset moves the overlay away from the trigger and leaves dead space between
3062
+ * them: crossing it slowly means the pointer is over neither element, and the hover card closes
3063
+ * mid-journey. A margin keeps the same visual gap inside the overlay's own box, so the pointer never
3064
+ * leaves the hover target on its way in.
3065
+ */
3066
+ declare class YuwSidebarFlyoutDirective {
3067
+ constructor();
3068
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarFlyoutDirective, never>;
3069
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarFlyoutDirective, "[yuwSidebarFlyout]", never, {}, {}, never, never, true, [{ directive: typeof i2$1.HlmHoverCardContent; inputs: {}; outputs: {}; }]>;
3070
+ }
2907
3071
  /** Divider between sidebar sections. */
2908
3072
  declare class YuwSidebarSeparatorDirective {
2909
3073
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarSeparatorDirective, never>;
@@ -2925,5 +3089,5 @@ declare class YuwSidebarInsetDirective {
2925
3089
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarInsetDirective, "main[yuwSidebarInset]", never, {}, {}, never, never, true, [{ directive: typeof i1$d.HlmSidebarInset; inputs: {}; outputs: {}; }]>;
2926
3090
  }
2927
3091
 
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 };
3092
+ 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, 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
3093
  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 };