@mihcm/ui 0.14.1 → 0.15.1
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/dist/CheckboxGrid.native.d.ts.map +1 -1
- package/dist/CheckboxGrid.native.js +2 -1
- package/dist/CheckboxGrid.native.js.map +1 -1
- package/dist/Combobox.native.d.ts.map +1 -1
- package/dist/Combobox.native.js +2 -1
- package/dist/Combobox.native.js.map +1 -1
- package/dist/DataTable/column-filter.d.ts +8 -0
- package/dist/DataTable/column-filter.d.ts.map +1 -0
- package/dist/DataTable/column-filter.js +67 -0
- package/dist/DataTable/column-filter.js.map +1 -0
- package/dist/DataTable/column-header.d.ts +16 -0
- package/dist/DataTable/column-header.d.ts.map +1 -0
- package/dist/DataTable/column-header.js +11 -0
- package/dist/DataTable/column-header.js.map +1 -0
- package/dist/DataTable/column-visibility.d.ts +7 -0
- package/dist/DataTable/column-visibility.d.ts.map +1 -0
- package/dist/DataTable/column-visibility.js +35 -0
- package/dist/DataTable/column-visibility.js.map +1 -0
- package/dist/DataTable/index.d.ts +5 -0
- package/dist/DataTable/index.d.ts.map +1 -0
- package/dist/DataTable/index.js +5 -0
- package/dist/DataTable/index.js.map +1 -0
- package/dist/DataTable/pinning.d.ts +13 -0
- package/dist/DataTable/pinning.d.ts.map +1 -0
- package/dist/DataTable/pinning.js +29 -0
- package/dist/DataTable/pinning.js.map +1 -0
- package/dist/DataTable.d.ts +3 -7
- package/dist/DataTable.d.ts.map +1 -1
- package/dist/DataTable.js +7 -126
- package/dist/DataTable.js.map +1 -1
- package/dist/Dialog.native.d.ts +3 -1
- package/dist/Dialog.native.d.ts.map +1 -1
- package/dist/Dialog.native.js +2 -2
- package/dist/Dialog.native.js.map +1 -1
- package/dist/Form/building-blocks.d.ts +26 -0
- package/dist/Form/building-blocks.d.ts.map +1 -0
- package/dist/Form/building-blocks.js +29 -0
- package/dist/Form/building-blocks.js.map +1 -0
- package/dist/Form/fields-choice.d.ts +72 -0
- package/dist/Form/fields-choice.d.ts.map +1 -0
- package/dist/Form/fields-choice.js +69 -0
- package/dist/Form/fields-choice.js.map +1 -0
- package/dist/Form/fields-complex.d.ts +28 -0
- package/dist/Form/fields-complex.d.ts.map +1 -0
- package/dist/Form/fields-complex.js +38 -0
- package/dist/Form/fields-complex.js.map +1 -0
- package/dist/Form/fields-date.d.ts +46 -0
- package/dist/Form/fields-date.d.ts.map +1 -0
- package/dist/Form/fields-date.js +41 -0
- package/dist/Form/fields-date.js.map +1 -0
- package/dist/Form/fields-text.d.ts +47 -0
- package/dist/Form/fields-text.d.ts.map +1 -0
- package/dist/Form/fields-text.js +46 -0
- package/dist/Form/fields-text.js.map +1 -0
- package/dist/Form/fields-toggle.d.ts +24 -0
- package/dist/Form/fields-toggle.d.ts.map +1 -0
- package/dist/Form/fields-toggle.js +32 -0
- package/dist/Form/fields-toggle.js.map +1 -0
- package/dist/Form/helpers.d.ts +66 -0
- package/dist/Form/helpers.d.ts.map +1 -0
- package/dist/Form/helpers.js +44 -0
- package/dist/Form/helpers.js.map +1 -0
- package/dist/Form/types.d.ts +25 -0
- package/dist/Form/types.d.ts.map +1 -0
- package/dist/Form/types.js +8 -0
- package/dist/Form/types.js.map +1 -0
- package/dist/Form.d.ts +24 -298
- package/dist/Form.d.ts.map +1 -1
- package/dist/Form.js +30 -246
- package/dist/Form.js.map +1 -1
- package/dist/IconSidebar.d.ts +6 -46
- package/dist/IconSidebar.d.ts.map +1 -1
- package/dist/IconSidebar.js +6 -116
- package/dist/IconSidebar.js.map +1 -1
- package/dist/MainSidebar/back-button.d.ts +14 -0
- package/dist/MainSidebar/back-button.d.ts.map +1 -0
- package/dist/MainSidebar/back-button.js +14 -0
- package/dist/MainSidebar/back-button.js.map +1 -0
- package/dist/MainSidebar/breadcrumb.d.ts +10 -0
- package/dist/MainSidebar/breadcrumb.d.ts.map +1 -0
- package/dist/MainSidebar/breadcrumb.js +24 -0
- package/dist/MainSidebar/breadcrumb.js.map +1 -0
- package/dist/MainSidebar/columns.d.ts +3 -0
- package/dist/MainSidebar/columns.d.ts.map +1 -0
- package/dist/MainSidebar/columns.js +198 -0
- package/dist/MainSidebar/columns.js.map +1 -0
- package/dist/MainSidebar/command.d.ts +3 -0
- package/dist/MainSidebar/command.d.ts.map +1 -0
- package/dist/MainSidebar/command.js +193 -0
- package/dist/MainSidebar/command.js.map +1 -0
- package/dist/MainSidebar/drilldown.d.ts +3 -0
- package/dist/MainSidebar/drilldown.d.ts.map +1 -0
- package/dist/MainSidebar/drilldown.js +154 -0
- package/dist/MainSidebar/drilldown.js.map +1 -0
- package/dist/MainSidebar/expanded.d.ts +7 -0
- package/dist/MainSidebar/expanded.d.ts.map +1 -0
- package/dist/MainSidebar/expanded.js +102 -0
- package/dist/MainSidebar/expanded.js.map +1 -0
- package/dist/MainSidebar/floating.d.ts +3 -0
- package/dist/MainSidebar/floating.d.ts.map +1 -0
- package/dist/MainSidebar/floating.js +116 -0
- package/dist/MainSidebar/floating.js.map +1 -0
- package/dist/MainSidebar/helpers.d.ts +50 -0
- package/dist/MainSidebar/helpers.d.ts.map +1 -0
- package/dist/MainSidebar/helpers.js +150 -0
- package/dist/MainSidebar/helpers.js.map +1 -0
- package/dist/MainSidebar/hover.d.ts +3 -0
- package/dist/MainSidebar/hover.d.ts.map +1 -0
- package/dist/MainSidebar/hover.js +177 -0
- package/dist/MainSidebar/hover.js.map +1 -0
- package/dist/MainSidebar/index.d.ts +6 -0
- package/dist/MainSidebar/index.d.ts.map +1 -0
- package/dist/MainSidebar/index.js +108 -0
- package/dist/MainSidebar/index.js.map +1 -0
- package/dist/MainSidebar/mobile.d.ts +29 -0
- package/dist/MainSidebar/mobile.d.ts.map +1 -0
- package/dist/MainSidebar/mobile.js +38 -0
- package/dist/MainSidebar/mobile.js.map +1 -0
- package/dist/MainSidebar/motion.d.ts +23 -0
- package/dist/MainSidebar/motion.d.ts.map +1 -0
- package/dist/MainSidebar/motion.js +40 -0
- package/dist/MainSidebar/motion.js.map +1 -0
- package/dist/MainSidebar/rail.d.ts +24 -0
- package/dist/MainSidebar/rail.d.ts.map +1 -0
- package/dist/MainSidebar/rail.js +29 -0
- package/dist/MainSidebar/rail.js.map +1 -0
- package/dist/MainSidebar/search.d.ts +19 -0
- package/dist/MainSidebar/search.d.ts.map +1 -0
- package/dist/MainSidebar/search.js +33 -0
- package/dist/MainSidebar/search.js.map +1 -0
- package/dist/MainSidebar/types.d.ts +161 -0
- package/dist/MainSidebar/types.d.ts.map +1 -0
- package/dist/MainSidebar/types.js +2 -0
- package/dist/MainSidebar/types.js.map +1 -0
- package/dist/MainSidebar.d.ts +6 -1
- package/dist/MainSidebar.d.ts.map +1 -1
- package/dist/MainSidebar.js +6 -1
- package/dist/MainSidebar.js.map +1 -1
- package/dist/NavigationMenu.js +1 -1
- package/dist/NavigationMenu.js.map +1 -1
- package/dist/RichTextEditor/theme.d.ts +44 -0
- package/dist/RichTextEditor/theme.d.ts.map +1 -0
- package/dist/RichTextEditor/theme.js +41 -0
- package/dist/RichTextEditor/theme.js.map +1 -0
- package/dist/RichTextEditor/toolbar-icons.d.ts +21 -0
- package/dist/RichTextEditor/toolbar-icons.d.ts.map +1 -0
- package/dist/RichTextEditor/toolbar-icons.js +21 -0
- package/dist/RichTextEditor/toolbar-icons.js.map +1 -0
- package/dist/RichTextEditor/toolbar.d.ts +5 -0
- package/dist/RichTextEditor/toolbar.d.ts.map +1 -0
- package/dist/RichTextEditor/toolbar.js +116 -0
- package/dist/RichTextEditor/toolbar.js.map +1 -0
- package/dist/RichTextEditor.d.ts +16 -9
- package/dist/RichTextEditor.d.ts.map +1 -1
- package/dist/RichTextEditor.js +18 -164
- package/dist/RichTextEditor.js.map +1 -1
- package/dist/Select/content.d.ts +9 -0
- package/dist/Select/content.d.ts.map +1 -0
- package/dist/Select/content.js +80 -0
- package/dist/Select/content.js.map +1 -0
- package/dist/Select/context.d.ts +27 -0
- package/dist/Select/context.d.ts.map +1 -0
- package/dist/Select/context.js +35 -0
- package/dist/Select/context.js.map +1 -0
- package/dist/Select/item.d.ts +13 -0
- package/dist/Select/item.d.ts.map +1 -0
- package/dist/Select/item.js +39 -0
- package/dist/Select/item.js.map +1 -0
- package/dist/Select/parts.d.ts +14 -0
- package/dist/Select/parts.d.ts.map +1 -0
- package/dist/Select/parts.js +17 -0
- package/dist/Select/parts.js.map +1 -0
- package/dist/Select/react-select.d.ts +25 -0
- package/dist/Select/react-select.d.ts.map +1 -0
- package/dist/Select/react-select.js +66 -0
- package/dist/Select/react-select.js.map +1 -0
- package/dist/Select/root.d.ts +15 -0
- package/dist/Select/root.d.ts.map +1 -0
- package/dist/Select/root.js +41 -0
- package/dist/Select/root.js.map +1 -0
- package/dist/Select/trigger.d.ts +15 -0
- package/dist/Select/trigger.d.ts.map +1 -0
- package/dist/Select/trigger.js +61 -0
- package/dist/Select/trigger.js.map +1 -0
- package/dist/Select.d.ts +14 -62
- package/dist/Select.d.ts.map +1 -1
- package/dist/Select.js +14 -293
- package/dist/Select.js.map +1 -1
- package/dist/Sidebar/context.d.ts +28 -0
- package/dist/Sidebar/context.d.ts.map +1 -0
- package/dist/Sidebar/context.js +37 -0
- package/dist/Sidebar/context.js.map +1 -0
- package/dist/Sidebar/group.d.ts +13 -0
- package/dist/Sidebar/group.d.ts.map +1 -0
- package/dist/Sidebar/group.js +20 -0
- package/dist/Sidebar/group.js.map +1 -0
- package/dist/Sidebar/icons.d.ts +7 -0
- package/dist/Sidebar/icons.d.ts.map +1 -0
- package/dist/Sidebar/icons.js +12 -0
- package/dist/Sidebar/icons.js.map +1 -0
- package/dist/Sidebar/layout.d.ts +9 -0
- package/dist/Sidebar/layout.d.ts.map +1 -0
- package/dist/Sidebar/layout.js +21 -0
- package/dist/Sidebar/layout.js.map +1 -0
- package/dist/Sidebar/menu.d.ts +29 -0
- package/dist/Sidebar/menu.d.ts.map +1 -0
- package/dist/Sidebar/menu.js +55 -0
- package/dist/Sidebar/menu.js.map +1 -0
- package/dist/Sidebar/provider.d.ts +33 -0
- package/dist/Sidebar/provider.d.ts.map +1 -0
- package/dist/Sidebar/provider.js +110 -0
- package/dist/Sidebar/provider.js.map +1 -0
- package/dist/Sidebar/sidebar.d.ts +17 -0
- package/dist/Sidebar/sidebar.d.ts.map +1 -0
- package/dist/Sidebar/sidebar.js +51 -0
- package/dist/Sidebar/sidebar.js.map +1 -0
- package/dist/Sidebar/submenu.d.ts +13 -0
- package/dist/Sidebar/submenu.d.ts.map +1 -0
- package/dist/Sidebar/submenu.js +17 -0
- package/dist/Sidebar/submenu.js.map +1 -0
- package/dist/Sidebar/trigger.d.ts +9 -0
- package/dist/Sidebar/trigger.d.ts.map +1 -0
- package/dist/Sidebar/trigger.js +33 -0
- package/dist/Sidebar/trigger.js.map +1 -0
- package/dist/Sidebar.d.ts +14 -104
- package/dist/Sidebar.d.ts.map +1 -1
- package/dist/Sidebar.js +14 -300
- package/dist/Sidebar.js.map +1 -1
- package/dist/StatCard.d.ts +67 -9
- package/dist/StatCard.d.ts.map +1 -1
- package/dist/StatCard.js +111 -9
- package/dist/StatCard.js.map +1 -1
- package/dist/TransferList.native.d.ts.map +1 -1
- package/dist/TransferList.native.js +2 -1
- package/dist/TransferList.native.js.map +1 -1
- package/package.json +2 -2
- package/src/CheckboxGrid.native.tsx +2 -1
- package/src/Combobox.native.tsx +2 -1
- package/src/DataTable/column-filter.tsx +134 -0
- package/src/DataTable/column-header.tsx +67 -0
- package/src/DataTable/column-visibility.tsx +87 -0
- package/src/DataTable/index.ts +4 -0
- package/src/DataTable/pinning.ts +40 -0
- package/src/DataTable.tsx +14 -297
- package/src/Dialog.native.tsx +4 -2
- package/src/Form/building-blocks.tsx +97 -0
- package/src/Form/fields-choice.tsx +312 -0
- package/src/Form/fields-complex.tsx +195 -0
- package/src/Form/fields-date.tsx +195 -0
- package/src/Form/fields-text.tsx +218 -0
- package/src/Form/fields-toggle.tsx +123 -0
- package/src/Form/helpers.tsx +189 -0
- package/src/Form/types.ts +26 -0
- package/src/Form.tsx +91 -1308
- package/src/IconSidebar.tsx +20 -442
- package/src/MainSidebar/back-button.tsx +58 -0
- package/src/MainSidebar/breadcrumb.tsx +53 -0
- package/src/MainSidebar/columns.tsx +350 -0
- package/src/MainSidebar/command.tsx +404 -0
- package/src/MainSidebar/drilldown.tsx +373 -0
- package/src/MainSidebar/expanded.tsx +414 -0
- package/src/MainSidebar/floating.tsx +268 -0
- package/src/MainSidebar/helpers.ts +166 -0
- package/src/MainSidebar/hover.tsx +334 -0
- package/src/MainSidebar/index.tsx +191 -0
- package/src/MainSidebar/mobile.tsx +117 -0
- package/src/MainSidebar/motion.ts +64 -0
- package/src/MainSidebar/rail.tsx +137 -0
- package/src/MainSidebar/search.tsx +99 -0
- package/src/MainSidebar/types.ts +208 -0
- package/src/MainSidebar.tsx +15 -4
- package/src/NavigationMenu.tsx +1 -1
- package/src/RichTextEditor/theme.ts +43 -0
- package/src/RichTextEditor/toolbar-icons.tsx +40 -0
- package/src/RichTextEditor/toolbar.tsx +271 -0
- package/src/RichTextEditor.tsx +23 -371
- package/src/Select/content.tsx +111 -0
- package/src/Select/context.tsx +66 -0
- package/src/Select/item.tsx +97 -0
- package/src/Select/parts.tsx +43 -0
- package/src/Select/react-select.tsx +216 -0
- package/src/Select/root.tsx +75 -0
- package/src/Select/trigger.tsx +122 -0
- package/src/Select.tsx +34 -692
- package/src/Sidebar/context.tsx +72 -0
- package/src/Sidebar/group.tsx +69 -0
- package/src/Sidebar/icons.tsx +42 -0
- package/src/Sidebar/layout.tsx +64 -0
- package/src/Sidebar/menu.tsx +171 -0
- package/src/Sidebar/provider.tsx +224 -0
- package/src/Sidebar/sidebar.tsx +178 -0
- package/src/Sidebar/submenu.tsx +58 -0
- package/src/Sidebar/trigger.tsx +104 -0
- package/src/Sidebar.tsx +44 -927
- package/src/StatCard.tsx +365 -20
- package/src/TransferList.native.tsx +2 -1
- package/dist/TiptapEditor.d.ts +0 -24
- package/dist/TiptapEditor.d.ts.map +0 -1
- package/dist/TiptapEditor.js +0 -84
- package/dist/TiptapEditor.js.map +0 -1
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
interface BackButtonProps {
|
|
2
|
+
onClick: () => void;
|
|
3
|
+
label: string;
|
|
4
|
+
className?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function BackButton({ onClick, label, className }: BackButtonProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
interface CloseButtonProps {
|
|
8
|
+
onClick: () => void;
|
|
9
|
+
label: string;
|
|
10
|
+
className?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare function CloseButton({ onClick, label, className }: CloseButtonProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=back-button.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"back-button.d.ts","sourceRoot":"","sources":["../../src/MainSidebar/back-button.tsx"],"names":[],"mappings":"AAQA,UAAU,eAAe;IACvB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,eAAe,2CAkBxE;AAED,UAAU,gBAAgB;IACxB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,gBAAgB,2CAiB1E"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* Shared back / chevron button. Used by drilldown + columns + floating
|
|
5
|
+
* panel headers.
|
|
6
|
+
*/
|
|
7
|
+
import { cn } from '../internal/cn.js';
|
|
8
|
+
export function BackButton({ onClick, label, className }) {
|
|
9
|
+
return (_jsxs("button", { type: "button", onClick: onClick, className: cn('inline-flex items-center gap-1 rounded-md px-1.5 py-1 text-xs font-medium text-card-foreground/70 transition-colors', 'hover:bg-card-foreground/10 hover:text-card-foreground', 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-card-foreground/40', className), children: [_jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", className: "size-3.5", "aria-hidden": "true", children: _jsx("path", { d: "m15 18-6-6 6-6", strokeLinecap: "round", strokeLinejoin: "round" }) }), label] }));
|
|
10
|
+
}
|
|
11
|
+
export function CloseButton({ onClick, label, className }) {
|
|
12
|
+
return (_jsx("button", { type: "button", onClick: onClick, "aria-label": label, className: cn('grid size-8 shrink-0 place-items-center rounded-md text-card-foreground/70 transition hover:bg-card-foreground/10 hover:text-card-foreground', 'focus:outline-none focus-visible:ring-2 focus-visible:ring-card-foreground/40', className), children: _jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", className: "size-4", "aria-hidden": "true", children: _jsx("path", { d: "M6 6l12 12M18 6 6 18", strokeLinecap: "round" }) }) }));
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=back-button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"back-button.js","sourceRoot":"","sources":["../../src/MainSidebar/back-button.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb;;;GAGG;AACH,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAQvC,MAAM,UAAU,UAAU,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAmB;IACvE,OAAO,CACL,kBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,EAAE,CACX,qHAAqH,EACrH,wDAAwD,EACxD,uFAAuF,EACvF,SAAS,CACV,aAED,cAAK,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,GAAG,EAAC,SAAS,EAAC,UAAU,iBAAa,MAAM,YAChH,eAAM,CAAC,EAAC,gBAAgB,EAAC,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,GAAG,GACpE,EACL,KAAK,IACC,CACV,CAAC;AACJ,CAAC;AAQD,MAAM,UAAU,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAoB;IACzE,OAAO,CACL,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,OAAO,gBACJ,KAAK,EACjB,SAAS,EAAE,EAAE,CACX,8IAA8I,EAC9I,+EAA+E,EAC/E,SAAS,CACV,YAED,cAAK,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,GAAG,EAAC,SAAS,EAAC,QAAQ,iBAAa,MAAM,YAC9G,eAAM,CAAC,EAAC,sBAAsB,EAAC,aAAa,EAAC,OAAO,GAAG,GACnD,GACC,CACV,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { MainSidebarItem } from './types.js';
|
|
2
|
+
interface PathBreadcrumbProps {
|
|
3
|
+
path: MainSidebarItem[];
|
|
4
|
+
/** Click handler — receives the depth index to jump to. */
|
|
5
|
+
onJump: (depth: number) => void;
|
|
6
|
+
className?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function PathBreadcrumb({ path, onJump, className }: PathBreadcrumbProps): import("react/jsx-runtime").JSX.Element | null;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=breadcrumb.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"breadcrumb.d.ts","sourceRoot":"","sources":["../../src/MainSidebar/breadcrumb.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,UAAU,mBAAmB;IAC3B,IAAI,EAAE,eAAe,EAAE,CAAC;IACxB,2DAA2D;IAC3D,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,cAAc,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,mBAAmB,kDA0B9E"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* Path breadcrumb shared by drilldown / floating / columns / command / hover.
|
|
5
|
+
*
|
|
6
|
+
* Renders the drilled-into ancestors as clickable text crumbs so the user can
|
|
7
|
+
* jump back to any level in one click. Used in the panel header when the
|
|
8
|
+
* `path` is deeper than the root.
|
|
9
|
+
*
|
|
10
|
+
* <PathBreadcrumb path={[people, onboarding]} onJump={(idx) => ...} />
|
|
11
|
+
* ⇒ People › Onboarding
|
|
12
|
+
*
|
|
13
|
+
* `path` is the full ancestor list (including the current leaf). The leaf
|
|
14
|
+
* itself renders as the panel title, so the breadcrumb stops at
|
|
15
|
+
* `path.length - 1`.
|
|
16
|
+
*/
|
|
17
|
+
import { cn } from '../internal/cn.js';
|
|
18
|
+
export function PathBreadcrumb({ path, onJump, className }) {
|
|
19
|
+
if (path.length <= 1)
|
|
20
|
+
return null;
|
|
21
|
+
const ancestors = path.slice(0, -1);
|
|
22
|
+
return (_jsx("nav", { "aria-label": "Breadcrumb", className: cn('flex flex-wrap items-center gap-1 text-xs text-card-foreground/70', className), children: _jsx("ol", { className: "flex flex-wrap items-center gap-1", children: ancestors.map((node, idx) => (_jsxs("li", { className: "flex items-center gap-1", children: [_jsx("button", { type: "button", onClick: () => onJump(idx), className: "rounded px-1 py-0.5 text-xs font-medium text-card-foreground/70 transition-colors hover:bg-card-foreground/10 hover:text-card-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-card-foreground/40", children: node.label }), _jsx("span", { "aria-hidden": "true", className: "text-card-foreground/50", children: "\u203A" })] }, node.key))) }) }));
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=breadcrumb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"breadcrumb.js","sourceRoot":"","sources":["../../src/MainSidebar/breadcrumb.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAUvC,MAAM,UAAU,cAAc,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAuB;IAC7E,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAClC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACpC,OAAO,CACL,4BACa,YAAY,EACvB,SAAS,EAAE,EAAE,CAAC,mEAAmE,EAAE,SAAS,CAAC,YAE7F,aAAI,SAAS,EAAC,mCAAmC,YAC9C,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAC5B,cAAmB,SAAS,EAAC,yBAAyB,aACpD,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAC1B,SAAS,EAAC,gOAAgO,YAEzO,IAAI,CAAC,KAAK,GACJ,EACT,8BAAkB,MAAM,EAAC,SAAS,EAAC,yBAAyB,uBAErD,KAVA,IAAI,CAAC,GAAG,CAWZ,CACN,CAAC,GACC,GACD,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"columns.d.ts","sourceRoot":"","sources":["../../src/MainSidebar/columns.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAmB,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEpE,eAAO,MAAM,cAAc,0GAyUzB,CAAC"}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* MainSidebar — `columns` variant.
|
|
5
|
+
*
|
|
6
|
+
* Miller columns (Finder-style). Each drill keeps the previous column
|
|
7
|
+
* visible; horizontally scrolling stacked columns. Each column has its
|
|
8
|
+
* own per-level search.
|
|
9
|
+
*/
|
|
10
|
+
import { forwardRef, useEffect, useMemo, useRef, useState } from 'react';
|
|
11
|
+
import { flushSync } from 'react-dom';
|
|
12
|
+
import { AnimatePresence, motion, useReducedMotion } from 'motion/react';
|
|
13
|
+
import { cn } from '../internal/cn.js';
|
|
14
|
+
import { Rail } from './rail.js';
|
|
15
|
+
import { MenuSearch } from './search.js';
|
|
16
|
+
import { CloseButton } from './back-button.js';
|
|
17
|
+
import { defaultMatcher, filterLevel, isOnPath, opensPanel, resolvePath } from './helpers.js';
|
|
18
|
+
import { slideVariants } from './motion.js';
|
|
19
|
+
export const ColumnsSidebar = forwardRef(function ColumnsSidebar({ items, activeKey, expanded, defaultExpanded = false, onExpandedChange, onItemSelect, header, footer, search = false, searchPlaceholder, onSearchChange, side = 'left', density = 'comfortable', panelWidth = 240, motionPreset = 'expressive', closeOnOutsideClick = true, columnsMaxVisible = 3, railClassName, panelClassName, itemClassName, activeItemClassName, expandedLabel = 'Close menu', className, ...rest }, ref) {
|
|
20
|
+
const reduceMotion = useReducedMotion();
|
|
21
|
+
const effectivePreset = reduceMotion ? 'subtle' : motionPreset;
|
|
22
|
+
const [internalExpanded, setInternalExpanded] = useState(defaultExpanded);
|
|
23
|
+
const isExpanded = expanded ?? internalExpanded;
|
|
24
|
+
const [pathKeys, setPathKeys] = useState([]);
|
|
25
|
+
const path = useMemo(() => resolvePath(items, pathKeys), [items, pathKeys]);
|
|
26
|
+
const searchEnabled = search !== false;
|
|
27
|
+
const searchCfg = typeof search === 'object' ? search : undefined;
|
|
28
|
+
const matcher = searchCfg?.matcher ?? defaultMatcher;
|
|
29
|
+
/* One search query per column index. */
|
|
30
|
+
const [queries, setQueries] = useState({});
|
|
31
|
+
/*
|
|
32
|
+
* Columns map one-to-one with the path nodes. Each column displays the
|
|
33
|
+
* CHILDREN of the corresponding path node:
|
|
34
|
+
*
|
|
35
|
+
* path = [payroll] → columns = [payroll.children]
|
|
36
|
+
* path = [people, onboarding] → columns = [people.children, onboarding.children]
|
|
37
|
+
*
|
|
38
|
+
* The rail itself surfaces the root-level items, so we don't repeat them
|
|
39
|
+
* as a column — clicking a rail icon jumps straight to its children.
|
|
40
|
+
*/
|
|
41
|
+
const columns = useMemo(() => {
|
|
42
|
+
const cols = [];
|
|
43
|
+
for (const node of path) {
|
|
44
|
+
if (node.children?.length)
|
|
45
|
+
cols.push(node.children);
|
|
46
|
+
}
|
|
47
|
+
return cols;
|
|
48
|
+
}, [path]);
|
|
49
|
+
/**
|
|
50
|
+
* Reset all deep state synchronously. Called from close handlers so the
|
|
51
|
+
* panel reopens with a fresh stack instead of remembering the previous
|
|
52
|
+
* drill-down path.
|
|
53
|
+
*/
|
|
54
|
+
function resetDeepState() {
|
|
55
|
+
setPathKeys([]);
|
|
56
|
+
setQueries({});
|
|
57
|
+
}
|
|
58
|
+
function setExpanded(next) {
|
|
59
|
+
if (expanded === undefined)
|
|
60
|
+
setInternalExpanded(next);
|
|
61
|
+
if (!next)
|
|
62
|
+
resetDeepState();
|
|
63
|
+
onExpandedChange?.(next);
|
|
64
|
+
}
|
|
65
|
+
function closePanel() {
|
|
66
|
+
/*
|
|
67
|
+
* `flushSync` commits the column-stack reset BEFORE we flip
|
|
68
|
+
* `isExpanded`, so AnimatePresence captures the panel with just the
|
|
69
|
+
* root column (or none) for its slide-out exit — instead of all the
|
|
70
|
+
* deeply-drilled columns being frozen in the exit frame.
|
|
71
|
+
*/
|
|
72
|
+
// eslint-disable-next-line @eslint-react/dom-no-flush-sync -- We need the column-stack reset to commit to the DOM BEFORE the panel slide-out is captured by AnimatePresence, otherwise stale deep columns linger in the exit frame.
|
|
73
|
+
flushSync(() => {
|
|
74
|
+
resetDeepState();
|
|
75
|
+
});
|
|
76
|
+
setExpanded(false);
|
|
77
|
+
}
|
|
78
|
+
const panelRef = useRef(null);
|
|
79
|
+
const railRef = useRef(null);
|
|
80
|
+
/* Esc + outside-click close the panel from anywhere. */
|
|
81
|
+
useEffect(() => {
|
|
82
|
+
if (!isExpanded)
|
|
83
|
+
return;
|
|
84
|
+
function onKey(e) {
|
|
85
|
+
if (e.key === 'Escape')
|
|
86
|
+
closePanel();
|
|
87
|
+
}
|
|
88
|
+
function onPointerDown(e) {
|
|
89
|
+
if (!closeOnOutsideClick)
|
|
90
|
+
return;
|
|
91
|
+
const target = e.target;
|
|
92
|
+
if (panelRef.current?.contains(target) || railRef.current?.contains(target))
|
|
93
|
+
return;
|
|
94
|
+
closePanel();
|
|
95
|
+
}
|
|
96
|
+
document.addEventListener('keydown', onKey);
|
|
97
|
+
document.addEventListener('pointerdown', onPointerDown);
|
|
98
|
+
return () => {
|
|
99
|
+
document.removeEventListener('keydown', onKey);
|
|
100
|
+
document.removeEventListener('pointerdown', onPointerDown);
|
|
101
|
+
};
|
|
102
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
103
|
+
}, [isExpanded, closeOnOutsideClick]);
|
|
104
|
+
/*
|
|
105
|
+
* Move focus into the panel when it opens — but skip the initial
|
|
106
|
+
* mount (covers `defaultExpanded` and SSR hydration), and pass
|
|
107
|
+
* `preventScroll: true` so the browser never yanks the page scroll
|
|
108
|
+
* to the just-focused element.
|
|
109
|
+
*/
|
|
110
|
+
const focusInitialisedRef = useRef(false);
|
|
111
|
+
useEffect(() => {
|
|
112
|
+
if (!isExpanded) {
|
|
113
|
+
focusInitialisedRef.current = true;
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
if (!focusInitialisedRef.current) {
|
|
117
|
+
focusInitialisedRef.current = true;
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
const id = window.setTimeout(() => {
|
|
121
|
+
const focusable = panelRef.current?.querySelector('input, [role="searchbox"], button:not([disabled])');
|
|
122
|
+
focusable?.focus({ preventScroll: true });
|
|
123
|
+
}, 0);
|
|
124
|
+
return () => window.clearTimeout(id);
|
|
125
|
+
}, [isExpanded]);
|
|
126
|
+
function selectRailItem(item) {
|
|
127
|
+
if (item.disabled)
|
|
128
|
+
return;
|
|
129
|
+
onItemSelect?.(item.key, item);
|
|
130
|
+
if (opensPanel(item)) {
|
|
131
|
+
/* Toggle close when clicking the rail icon for the panel that's
|
|
132
|
+
already open. Reuse `closePanel` so the deep-column reset is
|
|
133
|
+
flushed BEFORE the exit animation, otherwise the user sees stale
|
|
134
|
+
sub-columns slide out. */
|
|
135
|
+
if (isExpanded && pathKeys[0] === item.key) {
|
|
136
|
+
closePanel();
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
setPathKeys([item.key]);
|
|
140
|
+
setExpanded(true);
|
|
141
|
+
setQueries({});
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
closePanel();
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
function selectColumnItem(colIndex, item) {
|
|
148
|
+
if (item.disabled)
|
|
149
|
+
return;
|
|
150
|
+
onItemSelect?.(item.key, item);
|
|
151
|
+
/*
|
|
152
|
+
* Column N shows path[N].children, so a click in column N adds a child
|
|
153
|
+
* AFTER path[N]. Truncate any deeper drilling and push the new key
|
|
154
|
+
* when the clicked item itself opens deeper panels.
|
|
155
|
+
*/
|
|
156
|
+
const keepAncestors = path.slice(0, colIndex + 1).map((p) => p.key);
|
|
157
|
+
if (opensPanel(item)) {
|
|
158
|
+
setPathKeys([...keepAncestors, item.key]);
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
setPathKeys(keepAncestors);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
function updateColumnQuery(colIndex, next) {
|
|
165
|
+
setQueries((prev) => ({ ...prev, [colIndex]: next }));
|
|
166
|
+
onSearchChange?.(next);
|
|
167
|
+
}
|
|
168
|
+
/*
|
|
169
|
+
* Column N shows path[N].children. The breadcrumb-active item in column N
|
|
170
|
+
* is the path node one step deeper (path[N + 1]), if the user drilled
|
|
171
|
+
* further. On the leaf column, fall back to the externally-controlled
|
|
172
|
+
* `activeKey` so the selected leaf stays highlighted.
|
|
173
|
+
*/
|
|
174
|
+
function activeInColumn(colIndex) {
|
|
175
|
+
return path[colIndex + 1]?.key ?? (colIndex === path.length - 1 ? activeKey : undefined);
|
|
176
|
+
}
|
|
177
|
+
const widthPx = typeof panelWidth === 'number' ? `${panelWidth}px` : panelWidth;
|
|
178
|
+
const maxWidth = `calc(${columnsMaxVisible} * ${widthPx})`;
|
|
179
|
+
const railOffset = density === 'compact' ? '3rem' : '3.5rem';
|
|
180
|
+
return (_jsxs("div", { ref: ref, className: cn('relative h-full', className), ...rest, children: [_jsx(Rail, { ref: railRef, items: items, activeKey: activeKey, density: density, side: side, header: header, footer: footer, itemClassName: itemClassName, activeItemClassName: activeItemClassName, className: railClassName, onItemSelect: selectRailItem, openPanelKey: isExpanded ? path[0]?.key : undefined }), _jsx(AnimatePresence, { initial: false, mode: "wait", children: isExpanded ? (_jsx(motion.div, { ref: panelRef, variants: slideVariants(effectivePreset, side === 'right' ? 'right' : 'left'), initial: "initial", animate: "animate", exit: "exit", role: "menu", "aria-label": path[0]?.label ?? 'Navigation', style: {
|
|
181
|
+
maxWidth,
|
|
182
|
+
[side === 'right' ? 'right' : 'left']: railOffset,
|
|
183
|
+
}, className: cn('absolute top-0 z-10 flex h-full min-w-0 overflow-x-auto bg-card shadow-xl', side === 'right' ? 'border-l border-border' : 'border-r border-border', panelClassName), children: columns.map((col, colIndex) => {
|
|
184
|
+
const q = queries[colIndex] ?? '';
|
|
185
|
+
const filtered = filterLevel(col, q, matcher);
|
|
186
|
+
/* Column N displays path[N]'s children, so path[N] is the parent header. */
|
|
187
|
+
const parent = path[colIndex];
|
|
188
|
+
const columnKey = parent?.key ?? `col-${colIndex}`;
|
|
189
|
+
return (_jsxs("div", { style: { width: widthPx, minWidth: widthPx }, className: cn('flex h-full shrink-0 flex-col', colIndex < columns.length - 1 && 'border-r border-border'), children: [_jsxs("div", { className: "border-b border-border px-4 py-3", children: [_jsxs("div", { className: "flex items-start justify-between gap-3", children: [_jsxs("div", { className: "min-w-0", children: [_jsx("div", { className: "truncate text-base font-semibold text-card-foreground", children: parent?.label ?? 'Menu' }), parent?.description ? (_jsx("p", { className: "mt-0.5 text-xs text-card-foreground/70", children: parent.description })) : null] }), colIndex === 0 ? (_jsx(CloseButton, { onClick: closePanel, label: expandedLabel })) : null] }), searchEnabled ? (_jsx("div", { className: "mt-3", children: _jsx(MenuSearch, { value: q, onValueChange: (v) => updateColumnQuery(colIndex, v), placeholder: searchCfg?.placeholder ?? searchPlaceholder ?? `Search ${parent?.label ?? 'menu'}…`, tone: "onBrand" }) })) : null] }), _jsx("div", { className: "flex-1 overflow-y-auto p-1.5", children: filtered.length === 0 && q ? (_jsx("div", { className: "px-3 py-6 text-center text-xs text-card-foreground/70", children: searchCfg?.noResultsLabel ?? `No items match "${q}".` })) : (filtered.map((item) => {
|
|
190
|
+
/* Highlight if it's the live activeKey leaf, or if it's the column-level breadcrumb, or if its subtree contains the active key. */
|
|
191
|
+
const isOnBreadcrumb = item.key === activeInColumn(colIndex);
|
|
192
|
+
const containsActive = isOnPath(item, activeKey);
|
|
193
|
+
const isActive = isOnBreadcrumb || containsActive;
|
|
194
|
+
return (_jsxs("button", { type: "button", onClick: () => selectColumnItem(colIndex, item), disabled: item.disabled, className: cn('group flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-sm text-card-foreground transition-colors', 'hover:bg-card-foreground/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring', 'disabled:cursor-not-allowed disabled:opacity-50', isActive && 'bg-primary text-primary-foreground hover:bg-primary', itemClassName, isActive && activeItemClassName), children: [item.icon ? (_jsx("span", { className: cn('grid size-4 shrink-0 place-items-center [&_svg]:size-full', !isActive && 'text-card-foreground/70'), "aria-hidden": "true", children: item.icon })) : null, _jsx("span", { className: "min-w-0 flex-1 truncate", children: item.label }), opensPanel(item) ? (_jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", className: "size-3 shrink-0", "aria-hidden": "true", children: _jsx("path", { d: "m9 18 6-6-6-6", strokeLinecap: "round", strokeLinejoin: "round" }) })) : null] }, item.key));
|
|
195
|
+
})) })] }, columnKey));
|
|
196
|
+
}) }, "cols")) : null })] }));
|
|
197
|
+
});
|
|
198
|
+
//# sourceMappingURL=columns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"columns.js","sourceRoot":"","sources":["../../src/MainSidebar/columns.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/MainSidebar/command.tsx"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAmB,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEpE,eAAO,MAAM,cAAc,0GA0XzB,CAAC"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* MainSidebar — `command` variant.
|
|
5
|
+
*
|
|
6
|
+
* Two modes in one panel:
|
|
7
|
+
*
|
|
8
|
+
* - **Drilldown** when the search input is empty — rows with chevrons for
|
|
9
|
+
* items that have children; click to drill, back via chevron.
|
|
10
|
+
* - **Flat search** when the user types — recursive tree filter with
|
|
11
|
+
* breadcrumb paths on each match. Arrow keys + Enter pick by keyboard.
|
|
12
|
+
*
|
|
13
|
+
* The panel overlays the page rather than pushing layout.
|
|
14
|
+
*/
|
|
15
|
+
import { forwardRef, useEffect, useMemo, useRef, useState } from 'react';
|
|
16
|
+
import { AnimatePresence, motion, useReducedMotion } from 'motion/react';
|
|
17
|
+
import { cn } from '../internal/cn.js';
|
|
18
|
+
import { Rail } from './rail.js';
|
|
19
|
+
import { MenuSearch } from './search.js';
|
|
20
|
+
import { BackButton, CloseButton } from './back-button.js';
|
|
21
|
+
import { PathBreadcrumb } from './breadcrumb.js';
|
|
22
|
+
import { defaultMatcher, filterLevel, flatMatchTree, firstPanelItem, isOnPath, opensPanel, resolvePath, shouldWrapBadge } from './helpers.js';
|
|
23
|
+
import { slideVariants } from './motion.js';
|
|
24
|
+
export const CommandSidebar = forwardRef(function CommandSidebar({ items, activeKey, expanded, defaultExpanded = false, onExpandedChange, onItemSelect, header, footer, panelHeader, panelFooter, search = true, searchPlaceholder, onSearchChange, side = 'left', density = 'comfortable', panelWidth = 360, motionPreset = 'expressive', closeOnOutsideClick = true, railClassName, panelClassName, itemClassName, activeItemClassName, backLabel = 'Back', expandedLabel = 'Close menu', className, ...rest }, ref) {
|
|
25
|
+
const reduceMotion = useReducedMotion();
|
|
26
|
+
const effectivePreset = reduceMotion ? 'subtle' : motionPreset;
|
|
27
|
+
const [internalExpanded, setInternalExpanded] = useState(defaultExpanded);
|
|
28
|
+
const isExpanded = expanded ?? internalExpanded;
|
|
29
|
+
const [query, setQuery] = useState('');
|
|
30
|
+
const [focusIndex, setFocusIndex] = useState(0);
|
|
31
|
+
const inputRef = useRef(null);
|
|
32
|
+
const panelRef = useRef(null);
|
|
33
|
+
const railRef = useRef(null);
|
|
34
|
+
const searchCfg = typeof search === 'object' ? search : undefined;
|
|
35
|
+
const matcher = searchCfg?.matcher ?? defaultMatcher;
|
|
36
|
+
/* Drilldown state (active when query is empty). */
|
|
37
|
+
const rootItem = useMemo(() => firstPanelItem(items, activeKey), [activeKey, items]);
|
|
38
|
+
const [pathKeys, setPathKeys] = useState([]);
|
|
39
|
+
const path = useMemo(() => {
|
|
40
|
+
const resolved = resolvePath(items, pathKeys);
|
|
41
|
+
return resolved.length ? resolved : rootItem ? [rootItem] : [];
|
|
42
|
+
}, [items, pathKeys, rootItem]);
|
|
43
|
+
const current = path.at(-1);
|
|
44
|
+
const drilldownItems = current?.children ?? items;
|
|
45
|
+
const searchActive = query.trim().length > 0;
|
|
46
|
+
const matches = useMemo(() => (searchActive ? flatMatchTree(items, query, matcher) : []), [items, query, matcher, searchActive]);
|
|
47
|
+
const railOffset = density === 'compact' ? '3rem' : '3.5rem';
|
|
48
|
+
/*
|
|
49
|
+
* Skip auto-focus on initial mount so a `defaultExpanded` command
|
|
50
|
+
* sidebar doesn't yank the page scroll to its search input on page
|
|
51
|
+
* load. Pass `preventScroll: true` as belt-and-braces.
|
|
52
|
+
*/
|
|
53
|
+
const focusInitialisedRef = useRef(false);
|
|
54
|
+
useEffect(() => {
|
|
55
|
+
if (!isExpanded) {
|
|
56
|
+
focusInitialisedRef.current = true;
|
|
57
|
+
return undefined;
|
|
58
|
+
}
|
|
59
|
+
setFocusIndex(0);
|
|
60
|
+
if (!focusInitialisedRef.current) {
|
|
61
|
+
focusInitialisedRef.current = true;
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
const id = window.setTimeout(() => inputRef.current?.focus({ preventScroll: true }), 0);
|
|
65
|
+
return () => window.clearTimeout(id);
|
|
66
|
+
}, [isExpanded]);
|
|
67
|
+
useEffect(() => {
|
|
68
|
+
setFocusIndex(0);
|
|
69
|
+
}, [query]);
|
|
70
|
+
function resetDeepState() {
|
|
71
|
+
setQuery('');
|
|
72
|
+
setPathKeys([]);
|
|
73
|
+
}
|
|
74
|
+
function setExpanded(next) {
|
|
75
|
+
if (expanded === undefined)
|
|
76
|
+
setInternalExpanded(next);
|
|
77
|
+
if (!next)
|
|
78
|
+
resetDeepState();
|
|
79
|
+
onExpandedChange?.(next);
|
|
80
|
+
}
|
|
81
|
+
function closePanel() {
|
|
82
|
+
resetDeepState();
|
|
83
|
+
setExpanded(false);
|
|
84
|
+
}
|
|
85
|
+
/* Outside-click closes the panel. */
|
|
86
|
+
useEffect(() => {
|
|
87
|
+
if (!isExpanded)
|
|
88
|
+
return;
|
|
89
|
+
function onPointerDown(e) {
|
|
90
|
+
if (!closeOnOutsideClick)
|
|
91
|
+
return;
|
|
92
|
+
const target = e.target;
|
|
93
|
+
if (panelRef.current?.contains(target) || railRef.current?.contains(target))
|
|
94
|
+
return;
|
|
95
|
+
closePanel();
|
|
96
|
+
}
|
|
97
|
+
document.addEventListener('pointerdown', onPointerDown);
|
|
98
|
+
return () => document.removeEventListener('pointerdown', onPointerDown);
|
|
99
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
100
|
+
}, [isExpanded, closeOnOutsideClick]);
|
|
101
|
+
function selectRailItem(item) {
|
|
102
|
+
if (item.disabled)
|
|
103
|
+
return;
|
|
104
|
+
onItemSelect?.(item.key, item);
|
|
105
|
+
if (opensPanel(item)) {
|
|
106
|
+
if (isExpanded && pathKeys[0] === item.key && !searchActive) {
|
|
107
|
+
setExpanded(false);
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
setPathKeys([item.key]);
|
|
111
|
+
setQuery('');
|
|
112
|
+
setExpanded(true);
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
setExpanded(false);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
function selectDrilldownItem(item) {
|
|
119
|
+
if (item.disabled)
|
|
120
|
+
return;
|
|
121
|
+
onItemSelect?.(item.key, item);
|
|
122
|
+
if (opensPanel(item)) {
|
|
123
|
+
setPathKeys((prev) => (prev.at(-1) === item.key ? prev : [...prev, item.key]));
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
function findStackTo(target, list = items, acc = []) {
|
|
127
|
+
for (const it of list) {
|
|
128
|
+
if (it.key === target)
|
|
129
|
+
return [...acc, it.key];
|
|
130
|
+
if (it.children) {
|
|
131
|
+
const found = findStackTo(target, it.children, [...acc, it.key]);
|
|
132
|
+
if (found)
|
|
133
|
+
return found;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return null;
|
|
137
|
+
}
|
|
138
|
+
function pickMatch(idx) {
|
|
139
|
+
const m = matches[idx];
|
|
140
|
+
if (!m || m.item.disabled)
|
|
141
|
+
return;
|
|
142
|
+
onItemSelect?.(m.item.key, m.item);
|
|
143
|
+
if (opensPanel(m.item)) {
|
|
144
|
+
const stack = findStackTo(m.item.key) ?? [m.item.key];
|
|
145
|
+
setPathKeys(stack);
|
|
146
|
+
setQuery('');
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
setExpanded(false);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
function goBack() {
|
|
153
|
+
setPathKeys((prev) => prev.slice(0, -1));
|
|
154
|
+
}
|
|
155
|
+
function onKey(e) {
|
|
156
|
+
if (!searchActive) {
|
|
157
|
+
if (e.key === 'Escape')
|
|
158
|
+
closePanel();
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
if (e.key === 'ArrowDown') {
|
|
162
|
+
e.preventDefault();
|
|
163
|
+
setFocusIndex((i) => Math.min(matches.length - 1, i + 1));
|
|
164
|
+
}
|
|
165
|
+
else if (e.key === 'ArrowUp') {
|
|
166
|
+
e.preventDefault();
|
|
167
|
+
setFocusIndex((i) => Math.max(0, i - 1));
|
|
168
|
+
}
|
|
169
|
+
else if (e.key === 'Enter') {
|
|
170
|
+
e.preventDefault();
|
|
171
|
+
pickMatch(focusIndex);
|
|
172
|
+
}
|
|
173
|
+
else if (e.key === 'Escape') {
|
|
174
|
+
e.preventDefault();
|
|
175
|
+
if (query)
|
|
176
|
+
setQuery('');
|
|
177
|
+
else
|
|
178
|
+
closePanel();
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
function updateQuery(next) {
|
|
182
|
+
setQuery(next);
|
|
183
|
+
onSearchChange?.(next);
|
|
184
|
+
}
|
|
185
|
+
return (_jsxs("div", { ref: ref, className: cn('relative h-full', className), ...rest, children: [_jsx(Rail, { ref: railRef, items: items, activeKey: activeKey, density: density, side: side, header: header, footer: footer, itemClassName: itemClassName, activeItemClassName: activeItemClassName, className: railClassName, onItemSelect: selectRailItem, openPanelKey: isExpanded ? current?.key : undefined }), _jsx(AnimatePresence, { initial: false, mode: "wait", children: isExpanded ? (_jsxs(motion.aside, { ref: panelRef, variants: slideVariants(effectivePreset, side === 'right' ? 'right' : 'left'), initial: "initial", animate: "animate", exit: "exit", style: {
|
|
186
|
+
width: typeof panelWidth === 'number' ? `${panelWidth}px` : panelWidth,
|
|
187
|
+
[side === 'right' ? 'right' : 'left']: railOffset,
|
|
188
|
+
}, className: cn('absolute top-0 z-10 flex h-full min-w-0 flex-col bg-card shadow-xl', side === 'right' ? 'border-l border-border' : 'border-r border-border', panelClassName), onKeyDown: onKey, children: [_jsxs("div", { className: "border-b border-border px-4 py-3", children: [panelHeader ?? (_jsxs("div", { className: "flex items-start justify-between gap-3 pb-3", children: [_jsxs("div", { className: "min-w-0", children: [!searchActive && path.length > 1 ? (_jsxs(_Fragment, { children: [_jsx(PathBreadcrumb, { path: path, onJump: (depth) => setPathKeys((prev) => prev.slice(0, depth + 1)), className: "mb-1" }), _jsx(BackButton, { onClick: goBack, label: backLabel, className: "mb-1 -ml-1.5" })] })) : null, _jsx("div", { className: "truncate text-base font-semibold text-card-foreground", children: searchActive ? 'Quick navigation' : current?.label ?? 'Menu' }), !searchActive && current?.description ? (_jsx("p", { className: "mt-0.5 truncate text-xs text-card-foreground/70", children: current.description })) : null] }), _jsx(CloseButton, { onClick: closePanel, label: expandedLabel })] })), _jsx(MenuSearch, { ref: inputRef, value: query, onValueChange: updateQuery, placeholder: searchCfg?.placeholder ?? searchPlaceholder ?? 'Search all menus…', tone: "onBrand" }), searchActive ? (_jsxs("div", { className: "mt-2 flex items-center justify-between text-[11px] text-card-foreground/70", children: [_jsxs("span", { children: [matches.length, " ", matches.length === 1 ? 'match' : 'matches'] }), _jsxs("span", { className: "inline-flex items-center gap-1", children: [_jsx("kbd", { className: "rounded border border-border bg-card-foreground/10 px-1.5 py-0.5 text-[10px] font-mono", children: "\u2191\u2193" }), _jsx("kbd", { className: "rounded border border-border bg-card-foreground/10 px-1.5 py-0.5 text-[10px] font-mono", children: "\u21B5" })] })] })) : null] }), searchActive ? (_jsx("div", { role: "listbox", "aria-label": "Menu search results", className: "flex-1 overflow-y-auto p-2", children: matches.length === 0 ? (_jsx("div", { className: "px-4 py-8 text-center text-sm text-card-foreground/70", children: searchCfg?.noResultsLabel ?? `No items match "${query}".` })) : (matches.map((m, idx) => (_jsxs("div", { role: "option", "aria-selected": idx === focusIndex, onMouseEnter: () => setFocusIndex(idx), onClick: () => pickMatch(idx), className: cn('group flex cursor-pointer items-center gap-3 rounded-md px-2.5 py-2 text-sm text-card-foreground transition-colors', idx === focusIndex && 'bg-card-foreground/10', m.item.disabled && 'cursor-not-allowed opacity-50', itemClassName, m.item.key === activeKey && 'text-card-foreground font-semibold', m.item.key === activeKey && activeItemClassName), children: [m.item.icon ? (_jsx("span", { className: "grid size-5 shrink-0 place-items-center text-card-foreground/70 [&_svg]:size-full", "aria-hidden": "true", children: m.item.icon })) : null, _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("div", { className: "truncate font-medium", children: m.item.label }), m.breadcrumbs.length ? (_jsx("div", { className: "truncate text-[11px] text-card-foreground/70", children: m.breadcrumbs.join(' › ') })) : null] }), m.item.badge != null && m.item.badge !== false ? (shouldWrapBadge(m.item.badge) ? (_jsx("span", { className: "ml-auto inline-flex h-5 min-w-5 items-center justify-center rounded-full bg-current/15 px-1.5 text-xs font-medium text-current", children: m.item.badge })) : (_jsx("span", { className: "ml-auto inline-flex shrink-0 items-center", children: m.item.badge }))) : null] }, m.item.key + idx)))) })) : (_jsx("div", { className: "flex-1 overflow-y-auto p-2", children: filterLevel(drilldownItems, '').map((item) => {
|
|
189
|
+
const onActivePath = isOnPath(item, activeKey) || pathKeys.includes(item.key);
|
|
190
|
+
return (_jsxs("button", { type: "button", onClick: () => selectDrilldownItem(item), disabled: item.disabled, className: cn('group flex w-full items-center gap-2.5 rounded-md px-2.5 py-2 text-left text-sm text-card-foreground transition-colors', 'hover:bg-card-foreground/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring', 'disabled:cursor-not-allowed disabled:opacity-50', onActivePath && 'bg-accent text-accent-foreground font-medium hover:bg-accent hover:text-accent-foreground', itemClassName, onActivePath && activeItemClassName), children: [item.icon ? (_jsx("span", { className: "grid size-5 shrink-0 place-items-center text-card-foreground/70 group-hover:text-card-foreground [&_svg]:size-full", "aria-hidden": "true", children: item.icon })) : null, _jsx("span", { className: "min-w-0 flex-1 truncate", children: item.label }), item.badge != null && item.badge !== false ? (shouldWrapBadge(item.badge) ? (_jsx("span", { className: "ml-auto inline-flex h-5 min-w-5 items-center justify-center rounded-full bg-current/15 px-1.5 text-xs font-medium text-current", children: item.badge })) : (_jsx("span", { className: "ml-auto inline-flex shrink-0 items-center", children: item.badge }))) : null, opensPanel(item) ? (_jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", className: "size-3.5 shrink-0 text-card-foreground/70", "aria-hidden": "true", children: _jsx("path", { d: "m9 18 6-6-6-6", strokeLinecap: "round", strokeLinejoin: "round" }) })) : null] }, item.key));
|
|
191
|
+
}) })), panelFooter ? (_jsx("div", { className: "border-t border-border px-4 py-3", children: panelFooter })) : null] }, "command")) : null })] }));
|
|
192
|
+
});
|
|
193
|
+
//# sourceMappingURL=command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/MainSidebar/command.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drilldown.d.ts","sourceRoot":"","sources":["../../src/MainSidebar/drilldown.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAmB,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAoDpE,eAAO,MAAM,gBAAgB,0GA8P3B,CAAC"}
|