@qoretechnologies/reqore 0.70.19 → 0.71.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"item.d.ts","sourceRoot":"","sources":["../../../src/components/Menu/item.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6D,MAAM,OAAO,CAAC;AAElF,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C,MAAM,MAAM,2BAA2B,GAAG,CACxC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,EACpC,MAAM,CAAC,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,MAAM,IAAI,KACtB,IAAI,CAAC;AAEV,MAAM,MAAM,iCAAiC,CAC3C,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IACxD,CACF,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,EACpC,MAAM,CAAC,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,MAAM,IAAI,EACzB,QAAQ,CAAC,EAAE,QAAQ,KAChB,IAAI,CAAC;AAEV,MAAM,MAAM,qBAAqB,CAAC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAC1F,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAC,GAAG;IACpC,OAAO,CAAC,EAAE,iCAAiC,CAAC,QAAQ,CAAC,CAAC;CACvD,CAAC;AAEJ,MAAM,WAAW,oBAAoB,CAAC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAC9F,SAAQ,gBAAgB,EACtB,kBAAkB;IACpB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAC7C,WAAW,CAAC,EAAE,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAC9C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,OAAO,CAAC,EAAE,2BAA2B,CAAC;IACtC,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED,MAAM,WAAW,6BAA6B;IAC5C,KAAK,EAAE,YAAY,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED,QAAA,MAAM,cAAc,qJA4HnB,CAAC;AAEF,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"item.d.ts","sourceRoot":"","sources":["../../../src/components/Menu/item.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsE,MAAM,OAAO,CAAC;AAE3F,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAGpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C,MAAM,MAAM,2BAA2B,GAAG,CACxC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,EACpC,MAAM,CAAC,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,MAAM,IAAI,KACtB,IAAI,CAAC;AAEV,MAAM,MAAM,iCAAiC,CAC3C,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IACxD,CACF,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,EACpC,MAAM,CAAC,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,MAAM,IAAI,EACzB,QAAQ,CAAC,EAAE,QAAQ,KAChB,IAAI,CAAC;AAEV,MAAM,MAAM,qBAAqB,CAAC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAC1F,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAC,GAAG;IACpC,OAAO,CAAC,EAAE,iCAAiC,CAAC,QAAQ,CAAC,CAAC;CACvD,CAAC;AAEJ,MAAM,WAAW,oBAAoB,CAAC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAC9F,SAAQ,gBAAgB,EACtB,kBAAkB;IACpB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAC7C,WAAW,CAAC,EAAE,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAC9C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,OAAO,CAAC,EAAE,2BAA2B,CAAC;IACtC,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED,MAAM,WAAW,6BAA6B;IAC5C,KAAK,EAAE,YAAY,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED,QAAA,MAAM,cAAc,qJAoJnB,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -26,10 +26,20 @@ var jsx_runtime_1 = require("react/jsx-runtime");
26
26
  var react_1 = require("react");
27
27
  var __1 = require("../..");
28
28
  var useCombinedRefs_1 = require("../../hooks/useCombinedRefs");
29
+ var useReqoreContext_1 = require("../../hooks/useReqoreContext");
29
30
  var ReqoreMenuItem = (0, react_1.memo)((0, react_1.forwardRef)(function (_a, ref) {
30
31
  var children = _a.children, label = _a.label, icon = _a.icon, rightIcon = _a.rightIcon, as = _a.as, selected = _a.selected, onClick = _a.onClick, rightAction = _a.rightAction, leftAction = _a.leftAction, disabled = _a.disabled, itemId = _a.itemId, tooltip = _a.tooltip, intent = _a.intent, _b = _a.flat, flat = _b === void 0 ? true : _b, _c = _a.stackWithActions, stackWithActions = _c === void 0 ? true : _c, scrollIntoView = _a.scrollIntoView, closePopover = _a.closePopover, rest = __rest(_a, ["children", "label", "icon", "rightIcon", "as", "selected", "onClick", "rightAction", "leftAction", "disabled", "itemId", "tooltip", "intent", "flat", "stackWithActions", "scrollIntoView", "closePopover"]);
31
32
  var targetRef = (0, useCombinedRefs_1.useCombinedRefs)(ref).targetRef;
32
33
  var _d = (0, react_1.useState)(null), itemRef = _d[0], setItemRef = _d[1];
34
+ // Respect the global animations toggle from `ReqoreUIProvider` (popovers — menus are
35
+ // rendered inside them) and the OS reduced-motion preference.
36
+ var animations = (0, useReqoreContext_1.useReqoreProperty)('animations');
37
+ var prefersReducedMotion = (0, react_1.useMemo)(function () {
38
+ return typeof window !== 'undefined' &&
39
+ typeof window.matchMedia === 'function' &&
40
+ window.matchMedia('(prefers-reduced-motion: reduce)').matches;
41
+ }, []);
42
+ var scrollBehavior = (animations === null || animations === void 0 ? void 0 : animations.popovers) === false || prefersReducedMotion ? 'auto' : 'smooth';
33
43
  var handleClick = (0, react_1.useCallback)(function (event) {
34
44
  event.persist();
35
45
  onClick === null || onClick === void 0 ? void 0 : onClick(event, itemId, closePopover);
@@ -49,9 +59,20 @@ var ReqoreMenuItem = (0, react_1.memo)((0, react_1.forwardRef)(function (_a, ref
49
59
  (0, react_1.useEffect)(function () {
50
60
  var _a;
51
61
  if (scrollIntoView && itemRef) {
52
- (_a = itemRef.scrollIntoView) === null || _a === void 0 ? void 0 : _a.call(itemRef, { behavior: 'smooth', block: 'center', inline: 'center' });
62
+ (_a = itemRef.scrollIntoView) === null || _a === void 0 ? void 0 : _a.call(itemRef, {
63
+ // A smooth scroll is an animation, so the final offset depends on when the caller
64
+ // looks. Honour the global toggle and the OS reduced-motion preference (same
65
+ // pattern as CollapsibleContent) so consumers that turn animations off — snapshot
66
+ // suites included — land on the settled position immediately and deterministically.
67
+ behavior: scrollBehavior,
68
+ block: 'center',
69
+ // `nearest`, not `center`: this is a vertical list, and horizontally centring the
70
+ // item scrolls the container sideways whenever any sibling is wider than the
71
+ // viewport, which surfaces a horizontal scrollbar and shifts every row.
72
+ inline: 'nearest',
73
+ });
53
74
  }
54
- }, [itemRef, scrollIntoView]);
75
+ }, [itemRef, scrollIntoView, scrollBehavior]);
55
76
  return ((0, jsx_runtime_1.jsxs)(__1.ReqoreControlGroup, { stack: stackWithActions, fluid: true, fill: true, responsive: false, children: [leftAction ? ((0, jsx_runtime_1.jsx)(__1.ReqoreButton, __assign({ flat: flat, verticalPadding: 'small', fixed: true, compact: true, transparent: rest.transparent === false ? false : !rest.effect, minimal: rest.minimal, customTheme: rest.customTheme, className: 'reqore-menu-item-left-action', intent: intent, active: selected }, leftAction, { onClick: handleLeftActionClick }))) : null, (0, jsx_runtime_1.jsx)(__1.ReqoreButton, __assign({ as: as, transparent: !rest.effect, verticalPadding: 'small', compact: true }, rest, { flat: flat, className: "".concat(rest.className || '', " reqore-menu-item"), fluid: true, onClick: handleClick, active: selected, ref: function (ref) {
56
77
  targetRef.current = ref || undefined;
57
78
  setItemRef(ref);
@@ -1 +1 @@
1
- {"version":3,"file":"item.js","sourceRoot":"","sources":["../../../src/components/Menu/item.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"item.js","sourceRoot":"","sources":["../../../src/components/Menu/item.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ import { CSSProperties, ReactNode, RefObject } from 'react';
2
+ import { TSizes } from '../../constants/sizes';
3
+ import { TReqoreIntent } from '../../constants/theme';
4
+ import { IReqoreComponent, IReqoreIntent, IWithReqoreCustomTheme, IWithReqoreEffect, IWithReqoreFlat, IWithReqoreMinimal, IWithReqoreSize, IWithReqoreTransparent } from '../../types/global';
5
+ import { IReqoreIconName } from '../../types/icons';
6
+ import { IReqoreEffect } from '../Effect';
7
+ export interface IReqoreNavRailItem {
8
+ /** Stable id used for active-state matching and callbacks. */
9
+ id: string;
10
+ /** Human label — the tooltip on the mark and the text in the overflow menu. */
11
+ label: string;
12
+ icon?: IReqoreIconName;
13
+ /** Tints this mark when active (falls back to the rail's `intent`, then `info`). */
14
+ intent?: TReqoreIntent;
15
+ disabled?: boolean;
16
+ /** Sub-items shown nested directly beneath this item while it is active. */
17
+ items?: IReqoreNavRailSubItem[];
18
+ onClick?: () => void;
19
+ }
20
+ export interface IReqoreNavRailSubItem {
21
+ id: string;
22
+ label: string;
23
+ icon?: IReqoreIconName;
24
+ intent?: TReqoreIntent;
25
+ disabled?: boolean;
26
+ /** DOM id of the element this sub-item scrolls to / is tracked against.
27
+ * With `scrollSpy` the active sub-item follows the scroll position. */
28
+ scrollTargetId?: string;
29
+ onClick?: () => void;
30
+ }
31
+ export type TReqoreNavRailPosition = 'left' | 'right' | 'static';
32
+ export interface IReqoreNavRailProps extends IReqoreComponent, IWithReqoreSize, IWithReqoreCustomTheme, IWithReqoreEffect, IWithReqoreFlat, IWithReqoreMinimal, IWithReqoreTransparent, IReqoreIntent {
33
+ /** Primary destinations (the "master" rail). */
34
+ items: IReqoreNavRailItem[];
35
+ /** Controlled active primary item. Omit to run uncontrolled. */
36
+ activeId?: string;
37
+ /** Controlled active sub-item. Omit to run uncontrolled / scroll-spy driven. */
38
+ activeSubId?: string;
39
+ /** Uncontrolled initial values. */
40
+ defaultActiveId?: string;
41
+ defaultActiveSubId?: string;
42
+ onItemClick?: (id: string, item: IReqoreNavRailItem) => void;
43
+ onSubClick?: (id: string, item: IReqoreNavRailSubItem) => void;
44
+ /** Gutter to pin to (with `floating`) or `static` to render inline. */
45
+ position?: TReqoreNavRailPosition;
46
+ /** Absolutely pin to the chosen gutter of the nearest positioned ancestor. */
47
+ floating?: boolean;
48
+ /** Rest at `idleOpacity` and fade fully in on approach (or while a menu is open). */
49
+ idleReveal?: boolean;
50
+ idleOpacity?: number;
51
+ /** Mobile pattern: stay hidden, appear while the user scrolls, hide when they
52
+ * stop (after `scrollHideDelay`). Takes precedence over `idleReveal`. */
53
+ revealOnScroll?: boolean;
54
+ scrollHideDelay?: number;
55
+ /** Distance from the gutter edge when floating. */
56
+ offset?: number;
57
+ /** Scroll container the sub-items scroll within / are observed against. */
58
+ scrollContainer?: RefObject<HTMLElement | null>;
59
+ /** Track the active sub-item from scroll position (needs `scrollTargetId`s). */
60
+ scrollSpy?: boolean;
61
+ /** Cap used to fold overflow into the `⋮` menu. A number is taken as px; when
62
+ * omitted and `floating`, the positioned ancestor's height is measured. */
63
+ maxHeight?: number;
64
+ /** Surface radius. Round (pill, matching the circular marks) by default;
65
+ * `radiusSize` overrides with a fixed size; `rounded={false}` squares it. */
66
+ rounded?: boolean;
67
+ radiusSize?: TSizes;
68
+ /** Inner padding. */
69
+ padded?: boolean | TSizes;
70
+ /** Subtle 3D "raised" surface (paired with `flat`). */
71
+ raised?: boolean;
72
+ opacity?: number;
73
+ blur?: number;
74
+ /** Effect applied to the active page's group container AND its active marks
75
+ * (e.g. a coordinated gradient to pair with the rail's own `effect`). Falls
76
+ * back to the intent tint when omitted. */
77
+ activeEffect?: IReqoreEffect;
78
+ /** Rendered above the items (e.g. an open-sidebar control or a logo). */
79
+ header?: ReactNode;
80
+ /** Rendered below the items. */
81
+ footer?: ReactNode;
82
+ className?: string;
83
+ style?: CSSProperties;
84
+ }
85
+ /**
86
+ * A compact navigation rail: a thin column of circular marks for primary
87
+ * destinations, with the active destination's sub-items nested directly beneath
88
+ * it in a distinct sub-capsule. Overflow folds into a `⋮` flyout; it can pin to
89
+ * a gutter and rest dimmed until approached (or, for mobile, stay hidden and
90
+ * appear only while scrolling); and its sub-items can drive and follow page
91
+ * scroll via `scrollSpy` + `scrollTargetId`.
92
+ */
93
+ export declare const ReqoreNavRail: import("react").MemoExoticComponent<({ items, activeId, activeSubId, defaultActiveId, defaultActiveSubId, onItemClick, onSubClick, position, floating, idleReveal, idleOpacity, revealOnScroll, scrollHideDelay, offset, scrollContainer, scrollSpy, maxHeight, size, intent, effect, activeEffect, flat, minimal, transparent, rounded, radiusSize, padded, raised, opacity, blur, customTheme, inheritCustomTheme, header, footer, className, style, }: IReqoreNavRailProps) => import("react/jsx-runtime").JSX.Element>;
94
+ export default ReqoreNavRail;
95
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/NavRail/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,389 @@
1
+ "use strict";
2
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
3
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
4
+ return cooked;
5
+ };
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ var __importDefault = (this && this.__importDefault) || function (mod) {
40
+ return (mod && mod.__esModule) ? mod : { "default": mod };
41
+ };
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.ReqoreNavRail = void 0;
44
+ var jsx_runtime_1 = require("react/jsx-runtime");
45
+ var polished_1 = require("polished");
46
+ var react_1 = require("react");
47
+ var styled_components_1 = __importStar(require("styled-components"));
48
+ var sizes_1 = require("../../constants/sizes");
49
+ var colors_1 = require("../../helpers/colors");
50
+ var utils_1 = require("../../helpers/utils");
51
+ var useTheme_1 = require("../../hooks/useTheme");
52
+ var styles_1 = require("../../styles");
53
+ var Button_1 = __importDefault(require("../Button"));
54
+ var ControlGroup_1 = __importDefault(require("../ControlGroup"));
55
+ var Effect_1 = require("../Effect");
56
+ var Menu_1 = __importDefault(require("../Menu"));
57
+ var item_1 = __importDefault(require("../Menu/item"));
58
+ var Popover_1 = require("../Popover");
59
+ var Spacer_1 = require("../Spacer");
60
+ var ThemeProvider_1 = __importDefault(require("../../containers/ThemeProvider"));
61
+ var NavRailSurface = (0, styled_components_1.default)(Effect_1.StyledEffect)(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n display: inline-flex;\n flex-flow: column nowrap;\n align-items: center;\n width: fit-content;\n gap: ", "px;\n padding: ", "px;\n border-radius: ", ";\n\n background-color: ", ";\n border: ", ";\n ", "\n ", "\n\n ", "\n\n ", "\n"], ["\n display: inline-flex;\n flex-flow: column nowrap;\n align-items: center;\n width: fit-content;\n gap: ", "px;\n padding: ", "px;\n border-radius: ", ";\n\n background-color: ", ";\n border: ", ";\n ", "\n ", "\n\n ", "\n\n ", "\n"])), function (_a) {
62
+ var $gap = _a.$gap;
63
+ return $gap;
64
+ }, function (_a) {
65
+ var $padding = _a.$padding;
66
+ return $padding;
67
+ }, function (_a) {
68
+ var $pill = _a.$pill, $radius = _a.$radius;
69
+ return ($pill ? '9999px' : "".concat($radius, "px"));
70
+ }, function (_a) {
71
+ var theme = _a.theme, $transparent = _a.$transparent, $opacity = _a.$opacity, $bgLightness = _a.$bgLightness;
72
+ return $transparent
73
+ ? 'transparent'
74
+ : (0, polished_1.rgba)((0, colors_1.changeLightness)((0, colors_1.getMainBackgroundColor)(theme), $bgLightness), $opacity);
75
+ }, function (_a) {
76
+ var $flat = _a.$flat, theme = _a.theme, $borderLightness = _a.$borderLightness;
77
+ return $flat
78
+ ? 'none'
79
+ : "1px solid ".concat((0, polished_1.rgba)((0, colors_1.changeLightness)((0, colors_1.getMainBackgroundColor)(theme), $borderLightness), 0.7));
80
+ }, function (_a) {
81
+ var $blur = _a.$blur, $opacity = _a.$opacity;
82
+ return $blur && $opacity < 1 && (0, styled_components_1.css)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n backdrop-filter: blur(", "px);\n "], ["\n backdrop-filter: blur(", "px);\n "])), $blur);
83
+ }, function (_a) {
84
+ var $raised = _a.$raised, $flat = _a.$flat;
85
+ return $raised && $flat && styles_1.RaisedElement;
86
+ }, function (_a) {
87
+ var $floating = _a.$floating, $position = _a.$position, $offset = _a.$offset;
88
+ return $floating &&
89
+ $position !== 'static' && (0, styled_components_1.css)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n position: absolute;\n top: 50%;\n ", ": ", "px;\n transform: translateY(-50%);\n z-index: 8;\n max-height: calc(100% - 8px);\n "], ["\n position: absolute;\n top: 50%;\n ", ": ", "px;\n transform: translateY(-50%);\n z-index: 8;\n max-height: calc(100% - 8px);\n "])), $position, $offset);
90
+ }, function (_a) {
91
+ var $revealMode = _a.$revealMode, $shown = _a.$shown, $restOpacity = _a.$restOpacity;
92
+ return $revealMode && (0, styled_components_1.css)(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n opacity: ", ";\n /* Only truly-hidden (revealOnScroll, restOpacity 0) blocks pointer events;\n a dimmed idle rail must stay hoverable so it can reveal itself. */\n pointer-events: ", ";\n transition: opacity 220ms ease;\n "], ["\n opacity: ", ";\n /* Only truly-hidden (revealOnScroll, restOpacity 0) blocks pointer events;\n a dimmed idle rail must stay hoverable so it can reveal itself. */\n pointer-events: ", ";\n transition: opacity 220ms ease;\n "])), $shown ? 1 : $restOpacity, $shown || $restOpacity > 0 ? 'auto' : 'none');
93
+ });
94
+ // The active page's "expanded" container. Built on StyledEffect so an
95
+ // `activeEffect` gradient paints it (like the outer rail); the intent tint is
96
+ // the fallback when no gradient is given.
97
+ var ActiveGroupSurface = (0, styled_components_1.default)(Effect_1.StyledEffect)(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n display: flex;\n flex-flow: column nowrap;\n align-items: center;\n gap: ", "px;\n padding: 0 0 ", "px;\n /* Top cap hugs the (larger) page mark, bottom cap hugs the (smaller) section\n mark \u2014 so both ends sit flush instead of the bottom bulging. */\n border-radius: ", ";\n ", "\n box-shadow: inset 0 0 0 1px ", ";\n"], ["\n display: flex;\n flex-flow: column nowrap;\n align-items: center;\n gap: ", "px;\n padding: 0 0 ", "px;\n /* Top cap hugs the (larger) page mark, bottom cap hugs the (smaller) section\n mark \u2014 so both ends sit flush instead of the bottom bulging. */\n border-radius: ", ";\n ", "\n box-shadow: inset 0 0 0 1px ", ";\n"])), function (_a) {
98
+ var $gap = _a.$gap;
99
+ return $gap;
100
+ }, function (_a) {
101
+ var $padBottom = _a.$padBottom;
102
+ return $padBottom;
103
+ }, function (_a) {
104
+ var $radiusTop = _a.$radiusTop, $radiusBottom = _a.$radiusBottom;
105
+ return "".concat($radiusTop, "px ").concat($radiusTop, "px ").concat($radiusBottom, "px ").concat($radiusBottom, "px");
106
+ }, function (_a) {
107
+ var $tint = _a.$tint;
108
+ return $tint && (0, styled_components_1.css)(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n background-color: ", ";\n "], ["\n background-color: ", ";\n "])), $tint);
109
+ }, function (_a) {
110
+ var $ring = _a.$ring;
111
+ return $ring;
112
+ });
113
+ // ── Helpers ─────────────────────────────────────────────────────────────────
114
+ /** Keep the active item inside the shown window, folding the rest to overflow. */
115
+ function splitAroundActive(list, activeId, max) {
116
+ if (max >= list.length || max <= 0)
117
+ return { shown: list, hidden: [] };
118
+ var activeIdx = Math.max(0, list.findIndex(function (x) { return x.id === activeId; }));
119
+ var start = activeIdx >= max ? activeIdx - max + 1 : 0;
120
+ var shown = list.slice(start, start + max);
121
+ var ids = new Set(shown.map(function (x) { return x.id; }));
122
+ return { shown: shown, hidden: list.filter(function (x) { return !ids.has(x.id); }) };
123
+ }
124
+ /** Measure the positioned ancestor's height (for overflow budgeting). */
125
+ function useAncestorHeight(enabled, maxHeight, ref) {
126
+ var _a = (0, react_1.useState)(maxHeight), height = _a[0], setHeight = _a[1];
127
+ (0, react_1.useEffect)(function () {
128
+ if (typeof maxHeight === 'number') {
129
+ setHeight(maxHeight);
130
+ return undefined;
131
+ }
132
+ if (!enabled || !ref.current)
133
+ return undefined;
134
+ var parent = ref.current.offsetParent;
135
+ if (!parent)
136
+ return undefined;
137
+ var update = function () { return setHeight(parent.clientHeight); };
138
+ var ro = new ResizeObserver(update);
139
+ ro.observe(parent);
140
+ update();
141
+ return function () { return ro.disconnect(); };
142
+ }, [enabled, maxHeight, ref]);
143
+ return height;
144
+ }
145
+ var resolvePadding = function (padded, size) {
146
+ if (padded === false)
147
+ return 0;
148
+ if (padded === undefined || padded === true)
149
+ return sizes_1.HALF_PADDING_FROM_SIZE[size];
150
+ return sizes_1.HALF_PADDING_FROM_SIZE[padded];
151
+ };
152
+ var NavRailOverflow = (0, react_1.memo)(function (_a) {
153
+ var items = _a.items, size = _a.size, placement = _a.placement, ariaLabel = _a.ariaLabel, onSelect = _a.onSelect, onOpenChange = _a.onOpenChange;
154
+ // Memoised so the memo'd ReqorePopover/ReqoreMenuItem children get stable
155
+ // props (no new object/closure per render).
156
+ var componentProps = (0, react_1.useMemo)(function () { return ({
157
+ icon: 'More2Line',
158
+ size: size,
159
+ flat: true,
160
+ minimal: true,
161
+ circle: true,
162
+ raised: true,
163
+ 'aria-label': ariaLabel,
164
+ className: 'reqore-nav-rail-overflow',
165
+ tooltip: { content: "".concat(items.length, " more"), placement: placement },
166
+ }); }, [size, ariaLabel, placement, items.length]);
167
+ var handleItemClick = (0, react_1.useCallback)(function (_event, itemId) {
168
+ if (itemId)
169
+ onSelect(itemId);
170
+ }, [onSelect]);
171
+ var content = (0, react_1.useMemo)(function () { return ((0, jsx_runtime_1.jsx)(Menu_1.default, { rounded: true, padded: true, width: '210px', children: items.map(function (it) { return ((0, jsx_runtime_1.jsx)(item_1.default, { itemId: it.id, icon: it.icon, selected: it.active, intent: it.active ? 'info' : undefined, onClick: handleItemClick, children: it.label }, it.id)); }) })); }, [items, handleItemClick]);
172
+ return ((0, jsx_runtime_1.jsx)(Popover_1.ReqorePopover, { component: Button_1.default, componentProps: componentProps, handler: 'click', placement: placement, closeOnInsideClick: true, noArrow: true, noWrapper: true, onToggleChange: onOpenChange, content: content }));
173
+ });
174
+ // One circular mark. Kept as its own memo'd component so its `tooltip` object
175
+ // and `onClick` closure are stabilised (useMemo/useCallback) rather than created
176
+ // inline in a `.map()` and passed to the memo'd ReqoreButton every render.
177
+ var NavRailMark = (0, react_1.memo)(function (_a) {
178
+ var id = _a.id, label = _a.label, icon = _a.icon, size = _a.size, intent = _a.intent, effect = _a.effect, disabled = _a.disabled, tipSide = _a.tipSide, className = _a.className, ariaCurrent = _a.ariaCurrent, onSelect = _a.onSelect;
179
+ var tooltip = (0, react_1.useMemo)(function () { return ({ content: label, placement: tipSide }); }, [label, tipSide]);
180
+ var handleClick = (0, react_1.useCallback)(function () { return onSelect(id); }, [onSelect, id]);
181
+ return ((0, jsx_runtime_1.jsx)(Button_1.default, { circle: true, size: size, icon: icon, flat: true, minimal: true, raised: true, disabled: disabled, intent: intent, effect: effect, className: className, "aria-label": label, "aria-current": ariaCurrent, tooltip: tooltip, onClick: handleClick }));
182
+ });
183
+ // ── Component ─────────────────────────────────────────────────────────────────
184
+ /**
185
+ * A compact navigation rail: a thin column of circular marks for primary
186
+ * destinations, with the active destination's sub-items nested directly beneath
187
+ * it in a distinct sub-capsule. Overflow folds into a `⋮` flyout; it can pin to
188
+ * a gutter and rest dimmed until approached (or, for mobile, stay hidden and
189
+ * appear only while scrolling); and its sub-items can drive and follow page
190
+ * scroll via `scrollSpy` + `scrollTargetId`.
191
+ */
192
+ exports.ReqoreNavRail = (0, react_1.memo)(function (_a) {
193
+ var _b, _c, _d;
194
+ var items = _a.items, activeId = _a.activeId, activeSubId = _a.activeSubId, defaultActiveId = _a.defaultActiveId, defaultActiveSubId = _a.defaultActiveSubId, onItemClick = _a.onItemClick, onSubClick = _a.onSubClick, _e = _a.position, position = _e === void 0 ? 'left' : _e, floating = _a.floating, idleReveal = _a.idleReveal, _f = _a.idleOpacity, idleOpacity = _f === void 0 ? 0.34 : _f, revealOnScroll = _a.revealOnScroll, _g = _a.scrollHideDelay, scrollHideDelay = _g === void 0 ? 1100 : _g, _h = _a.offset, offset = _h === void 0 ? 14 : _h, scrollContainer = _a.scrollContainer, scrollSpy = _a.scrollSpy, maxHeight = _a.maxHeight, _j = _a.size, size = _j === void 0 ? 'small' : _j, intent = _a.intent, effect = _a.effect, activeEffect = _a.activeEffect, _k = _a.flat, flat = _k === void 0 ? false : _k, minimal = _a.minimal, transparent = _a.transparent, _l = _a.rounded, rounded = _l === void 0 ? true : _l, radiusSize = _a.radiusSize, _m = _a.padded, padded = _m === void 0 ? true : _m, raised = _a.raised, _o = _a.opacity, opacity = _o === void 0 ? 1 : _o, _p = _a.blur, blur = _p === void 0 ? 4 : _p, customTheme = _a.customTheme, inheritCustomTheme = _a.inheritCustomTheme, header = _a.header, footer = _a.footer, className = _a.className, style = _a.style;
195
+ // NB: `intent` is deliberately NOT fed to the theme here — it must not
196
+ // recolour the whole rail surface; it only drives the active accent + the
197
+ // active group's tint (see `activeIntent` / `renderActiveGroup`).
198
+ var theme = (0, useTheme_1.useReqoreTheme)('main', customTheme, undefined, undefined, inheritCustomTheme);
199
+ var subSize = (0, utils_1.getOneLessSize)(size);
200
+ var tipSide = position === 'right' ? 'left' : 'right';
201
+ var activeIntent = intent !== null && intent !== void 0 ? intent : 'info';
202
+ var isTransparent = !!(transparent || minimal);
203
+ var isFlat = !!(flat || minimal);
204
+ var _q = (0, react_1.useState)(defaultActiveId !== null && defaultActiveId !== void 0 ? defaultActiveId : (_b = items[0]) === null || _b === void 0 ? void 0 : _b.id), internalId = _q[0], setInternalId = _q[1];
205
+ var activeItemId = activeId !== null && activeId !== void 0 ? activeId : internalId;
206
+ var activeItem = (0, react_1.useMemo)(function () { return items.find(function (i) { return i.id === activeItemId; }); }, [items, activeItemId]);
207
+ var subItems = (0, react_1.useMemo)(function () { var _a; return (_a = activeItem === null || activeItem === void 0 ? void 0 : activeItem.items) !== null && _a !== void 0 ? _a : []; }, [activeItem]);
208
+ var _r = (0, react_1.useState)(defaultActiveSubId), internalSubId = _r[0], setInternalSubId = _r[1];
209
+ var activeSubItemId = (_c = activeSubId !== null && activeSubId !== void 0 ? activeSubId : internalSubId) !== null && _c !== void 0 ? _c : (_d = subItems[0]) === null || _d === void 0 ? void 0 : _d.id;
210
+ var _s = (0, react_1.useState)(false), hovered = _s[0], setHovered = _s[1];
211
+ var _t = (0, react_1.useState)(false), scrolling = _t[0], setScrolling = _t[1];
212
+ var _u = (0, react_1.useState)(0), openMenus = _u[0], setOpenMenus = _u[1];
213
+ var onMenuToggle = (0, react_1.useCallback)(function (open) { return setOpenMenus(function (c) { return Math.max(0, c + (open ? 1 : -1)); }); }, []);
214
+ var railRef = (0, react_1.useRef)(null);
215
+ var budgetOn = !!floating || typeof maxHeight === 'number';
216
+ var availHeight = useAncestorHeight(budgetOn, maxHeight, railRef);
217
+ // Idle-reveal hover uses NATIVE mouseenter/leave on the rail element, not
218
+ // React's — React routes enter/leave through the React tree, so a portalled
219
+ // child (a mark's tooltip) counts as "inside" and the leave never fires when
220
+ // a tooltip is up. Native DOM events use real subtree containment instead.
221
+ (0, react_1.useEffect)(function () {
222
+ if (!idleReveal)
223
+ return undefined;
224
+ var el = railRef.current;
225
+ if (!el)
226
+ return undefined;
227
+ var enter = function () { return setHovered(true); };
228
+ var leave = function () { return setHovered(false); };
229
+ el.addEventListener('mouseenter', enter);
230
+ el.addEventListener('mouseleave', leave);
231
+ return function () {
232
+ el.removeEventListener('mouseenter', enter);
233
+ el.removeEventListener('mouseleave', leave);
234
+ };
235
+ }, [idleReveal]);
236
+ // Budget marks to the height; sections get ~40% (min 2), pages the rest.
237
+ var markH = sizes_1.SIZE_TO_PX[size] + sizes_1.GAP_FROM_SIZE[size];
238
+ var reserve = markH * 2 + 44; // header/footer/sub-capsule chrome
239
+ var slots = availHeight === undefined
240
+ ? Number.POSITIVE_INFINITY
241
+ : Math.max(4, Math.floor((availHeight - reserve) / markH));
242
+ var subMax = Number.isFinite(slots)
243
+ ? Math.min(subItems.length, Math.max(2, Math.round(slots * 0.4)))
244
+ : subItems.length;
245
+ var itemMax = Number.isFinite(slots) ? Math.max(2, slots - subMax) : items.length;
246
+ if (itemMax > items.length) {
247
+ itemMax = items.length;
248
+ subMax = Number.isFinite(slots)
249
+ ? Math.min(subItems.length, Math.max(2, slots - itemMax))
250
+ : subItems.length;
251
+ }
252
+ var _v = splitAroundActive(items, activeItemId, itemMax), itemsShown = _v.shown, itemsHidden = _v.hidden;
253
+ var _w = splitAroundActive(subItems, activeSubItemId, subMax), subsShown = _w.shown, subsHidden = _w.hidden;
254
+ var activeAt = itemsShown.findIndex(function (i) { return i.id === activeItemId; });
255
+ var before = activeAt >= 0 ? itemsShown.slice(0, activeAt) : itemsShown; // before active
256
+ var after = activeAt >= 0 ? itemsShown.slice(activeAt + 1) : []; // after active
257
+ var selectItem = (0, react_1.useCallback)(function (item) {
258
+ var _a;
259
+ if (item.disabled)
260
+ return;
261
+ if (activeId === undefined) {
262
+ setInternalId(item.id);
263
+ setInternalSubId(undefined);
264
+ }
265
+ (_a = item.onClick) === null || _a === void 0 ? void 0 : _a.call(item);
266
+ onItemClick === null || onItemClick === void 0 ? void 0 : onItemClick(item.id, item);
267
+ }, [activeId, onItemClick]);
268
+ var selectSub = (0, react_1.useCallback)(function (sub) {
269
+ var _a, _b;
270
+ if (sub.disabled)
271
+ return;
272
+ if (sub.scrollTargetId) {
273
+ (_a = document
274
+ .getElementById(sub.scrollTargetId)) === null || _a === void 0 ? void 0 : _a.scrollIntoView({ behavior: 'smooth', block: 'start' });
275
+ }
276
+ if (activeSubId === undefined)
277
+ setInternalSubId(sub.id);
278
+ (_b = sub.onClick) === null || _b === void 0 ? void 0 : _b.call(sub);
279
+ onSubClick === null || onSubClick === void 0 ? void 0 : onSubClick(sub.id, sub);
280
+ }, [activeSubId, onSubClick]);
281
+ // Stable id-based select callbacks so the memo'd mark / overflow children
282
+ // don't receive a fresh closure each render.
283
+ var onItemSelect = (0, react_1.useCallback)(function (id) {
284
+ var item = items.find(function (i) { return i.id === id; });
285
+ if (item)
286
+ selectItem(item);
287
+ }, [items, selectItem]);
288
+ var onSubSelect = (0, react_1.useCallback)(function (id) {
289
+ var sub = subItems.find(function (s) { return s.id === id; });
290
+ if (sub)
291
+ selectSub(sub);
292
+ }, [subItems, selectSub]);
293
+ // Scroll-spy: as the user scrolls, highlight the last section whose top has
294
+ // passed a threshold below the container's top (when the sub-item isn't
295
+ // controlled). A plain scroll listener + getBoundingClientRect is used
296
+ // rather than IntersectionObserver, whose callback only reports the entries
297
+ // that *changed* — unreliable for "which section is current right now".
298
+ (0, react_1.useEffect)(function () {
299
+ var _a;
300
+ if (!scrollSpy || activeSubId !== undefined)
301
+ return undefined;
302
+ var targeted = subItems.filter(function (s) { return s.scrollTargetId; });
303
+ if (!targeted.length)
304
+ return undefined;
305
+ var container = (_a = scrollContainer === null || scrollContainer === void 0 ? void 0 : scrollContainer.current) !== null && _a !== void 0 ? _a : null;
306
+ var scrollTarget = container !== null && container !== void 0 ? container : window;
307
+ var compute = function () {
308
+ var containerTop = container ? container.getBoundingClientRect().top : 0;
309
+ var viewport = container ? container.clientHeight : window.innerHeight;
310
+ var threshold = containerTop + Math.min(viewport * 0.3, 140);
311
+ var current = targeted[0].id;
312
+ for (var _i = 0, targeted_1 = targeted; _i < targeted_1.length; _i++) {
313
+ var s = targeted_1[_i];
314
+ var el = document.getElementById(s.scrollTargetId);
315
+ if (!el)
316
+ continue;
317
+ if (el.getBoundingClientRect().top <= threshold)
318
+ current = s.id;
319
+ else
320
+ break;
321
+ }
322
+ setInternalSubId(current);
323
+ };
324
+ compute();
325
+ scrollTarget.addEventListener('scroll', compute, { passive: true });
326
+ return function () { return scrollTarget.removeEventListener('scroll', compute); };
327
+ }, [scrollSpy, activeSubId, subItems, scrollContainer]);
328
+ // Reveal-on-scroll (mobile): show while scrolling, hide after a quiet delay.
329
+ (0, react_1.useEffect)(function () {
330
+ var _a;
331
+ if (!revealOnScroll)
332
+ return undefined;
333
+ var target = (_a = scrollContainer === null || scrollContainer === void 0 ? void 0 : scrollContainer.current) !== null && _a !== void 0 ? _a : window;
334
+ var timer;
335
+ var onScroll = function () {
336
+ setScrolling(true);
337
+ clearTimeout(timer);
338
+ timer = setTimeout(function () { return setScrolling(false); }, scrollHideDelay);
339
+ };
340
+ target.addEventListener('scroll', onScroll, { passive: true });
341
+ return function () {
342
+ target.removeEventListener('scroll', onScroll);
343
+ clearTimeout(timer);
344
+ };
345
+ }, [revealOnScroll, scrollContainer, scrollHideDelay]);
346
+ var revealMode = !!idleReveal || !!revealOnScroll;
347
+ var shown = revealOnScroll
348
+ ? scrolling || openMenus > 0
349
+ : idleReveal
350
+ ? hovered || openMenus > 0
351
+ : true;
352
+ var restOpacity = revealOnScroll ? 0 : idleOpacity;
353
+ var pill = rounded && !radiusSize;
354
+ var radius = (0, sizes_1.resolveRadius)(size, radiusSize);
355
+ var pad = resolvePadding(padded, size);
356
+ var renderItem = function (item) {
357
+ var _a;
358
+ var active = item.id === activeItemId;
359
+ return ((0, jsx_runtime_1.jsx)(NavRailMark, { id: item.id, label: item.label, icon: item.icon, size: size, disabled: item.disabled, effect: active ? activeEffect : undefined, intent: active ? (_a = item.intent) !== null && _a !== void 0 ? _a : activeIntent : item.intent, className: 'reqore-nav-rail-item', ariaCurrent: active ? 'page' : undefined, tipSide: tipSide, onSelect: onItemSelect }, item.id));
360
+ };
361
+ var renderSub = function (sub) {
362
+ var _a;
363
+ var active = sub.id === activeSubItemId;
364
+ return ((0, jsx_runtime_1.jsx)(NavRailMark, { id: sub.id, label: sub.label, icon: sub.icon, size: subSize, disabled: sub.disabled, effect: active ? activeEffect : undefined, intent: active ? (_a = sub.intent) !== null && _a !== void 0 ? _a : activeIntent : sub.intent, className: 'reqore-nav-rail-subitem', ariaCurrent: active ? 'location' : undefined, tipSide: tipSide, onSelect: onSubSelect }, sub.id));
365
+ };
366
+ // The active page's mark "expands" into the sub-rail: its own icon, a line
367
+ // separator, then its section marks — all inside one grouped container.
368
+ var renderActiveGroup = function (item) {
369
+ var _a, _b;
370
+ if (!subsShown.length)
371
+ return renderItem(item);
372
+ // Tint the wrapping container with the active mark's own intent colour so
373
+ // the sub-rail reads as one coloured "you are here" unit.
374
+ var groupColor = (0, colors_1.getColorFromMaybeString)(theme, (_a = item.intent) !== null && _a !== void 0 ? _a : activeIntent);
375
+ // One mark wide (inset-shadow "border", no horizontal padding) so the rail
376
+ // never changes width; the top mark sits flush in the pill cap and a little
377
+ // bottom padding keeps the last section off the edge.
378
+ return ((0, jsx_runtime_1.jsxs)(ActiveGroupSurface, { as: 'div', effect: activeEffect, role: 'group', "aria-label": "".concat(item.label, " sections"), className: 'reqore-nav-rail-active', theme: theme, "$gap": sizes_1.GAP_FROM_SIZE[subSize], "$padBottom": 2, "$radiusTop": pill ? Math.round(sizes_1.SIZE_TO_PX[size] / 2) : radius, "$radiusBottom": pill ? Math.round(sizes_1.SIZE_TO_PX[subSize] / 2) : radius, "$ring": (0, polished_1.rgba)(groupColor, 0.42), "$tint": (activeEffect === null || activeEffect === void 0 ? void 0 : activeEffect.gradient) ? undefined : (0, polished_1.rgba)(groupColor, 0.16), children: [renderItem(item), (0, jsx_runtime_1.jsx)(Spacer_1.ReqoreVerticalSpacer, { height: sizes_1.GAP_FROM_SIZE[size], width: "".concat(Math.round(sizes_1.SIZE_TO_PX[subSize] * 0.5), "px"), lineSize: 'tiny', intent: (_b = item.intent) !== null && _b !== void 0 ? _b : activeIntent }), subsShown.map(renderSub), subsHidden.length ? ((0, jsx_runtime_1.jsx)(NavRailOverflow, { items: subsHidden.map(function (s) { return ({
379
+ id: s.id,
380
+ label: s.label,
381
+ icon: s.icon,
382
+ active: s.id === activeSubItemId,
383
+ }); }), size: subSize, placement: tipSide, ariaLabel: 'More sections', onSelect: onSubSelect, onOpenChange: onMenuToggle })) : null] }, item.id));
384
+ };
385
+ return ((0, jsx_runtime_1.jsx)(ThemeProvider_1.default, { theme: theme, customTheme: customTheme, children: (0, jsx_runtime_1.jsx)(NavRailSurface, { as: 'nav', ref: railRef, effect: effect, role: 'navigation', className: "".concat(className !== null && className !== void 0 ? className : '', " reqore-nav-rail").trim(), style: style, theme: theme, "$gap": sizes_1.GAP_FROM_SIZE[size], "$padding": pad, "$radius": radius, "$pill": pill, "$flat": isFlat, "$raised": !!raised, "$transparent": isTransparent, "$opacity": opacity, "$blur": blur, "$bgLightness": 0.02, "$borderLightness": 0.14, "$position": position, "$floating": floating, "$offset": offset, "$revealMode": revealMode, "$shown": shown, "$restOpacity": restOpacity, children: (0, jsx_runtime_1.jsxs)(ControlGroup_1.default, { vertical: true, gapSize: size, horizontalAlign: 'center', children: [header, before.map(renderItem), activeAt >= 0 && activeItem ? renderActiveGroup(activeItem) : null, after.map(renderItem), itemsHidden.length ? ((0, jsx_runtime_1.jsx)(NavRailOverflow, { items: itemsHidden.map(function (i) { return ({ id: i.id, label: i.label, icon: i.icon }); }), size: size, placement: tipSide, ariaLabel: 'More items', onSelect: onItemSelect, onOpenChange: onMenuToggle })) : null, footer] }) }) }));
386
+ });
387
+ exports.default = exports.ReqoreNavRail;
388
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6;
389
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/NavRail/index.tsx"],"names":[],"mappings":"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"}